4U\nutscripts/vscriptsscriptedmodeɹ& weapon_controller1h@txtscriptsweapon_hunting_rifleE, weapon_grenade_launcherrfp/weapon_rifle_desert_c>Wweapon_rifle_ak47y MSweapon_pumpshotgunDWx9]weapon_pistol_magnumH!nweapon_sniper_military}weapon_smg_mp5B^weapon_rifleB`3+weapon_shotgun_chrome@wZ3^Gweapon_shotgun_spas@weapon_sniper_scout vLweapon_rifle_sg552uL:dweapon_sniper_awpzN"weapon_autoshotgunNho3weapon_pistol?mxBjweapon_smgweR weapon_smg_silenced`fO` addoninfo mKmbakscripts/vscriptsweapon_controller.nut]dRsmDebug <- 0 function smDbgPrint( string ) { if ( smDebug ) printl( "scriptedmode: " + string ) } function smDbgLoud( string ) { if ( smDebug == 2 ) printl( "scriptedmode: " + string ) } BaseScriptedDOTable <- { ScriptedStageType = STAGE_NONE ScriptedStageValue = 1000 SpawnSetRule = SPAWN_SURVIVORS PreferredMobDirection = SPAWN_NO_PREFERENCE SpawnDirectionCount = 0 SpawnDirectionMask = 0 cm_AggressiveSpecials = 1 } ScriptedDamageInfo <- { Attacker = null Victim = null DamageDone = 0 DamageType = -1 Location = Vector(0,0,0) Weapon = null } function ScriptMode_Init( modename, mapname ) { ClearGameEventCallbacks() ::g_RoundState <- {} ::g_MapScript <- getroottable().DirectorScript.MapScript ::g_ModeScript <- getroottable().DirectorScript.MapScript.ChallengeScript if ( !("MapState" in g_MapScript) ) { g_MapScript.MapState <- {} } IncludeScript( "sm_utilities", g_MapScript ) IncludeScript( "sm_spawn", g_MapScript ) ::g_WeaponController <- ::G_WeaponController <- {} IncludeScript("weapon_controller"); local bScriptedModeValid = false if ( IncludeScript( modename, g_ModeScript ) ) { printl( "ScriptMode loaded " + modename + " and now Initializing" ) IncludeScript( mapname + "_" + modename, g_MapScript ) MergeSessionSpawnTables() MergeSessionStateTables() SessionState.MapName <- mapname SessionState.ModeName <- modename if ( !( "StartActive" in SessionState ) ) { SessionState.StartActive <- true } if ( SessionState.StartActive ) { MergeSessionOptionTables() } if ( "SanitizeTable" in this ) { SanitizeMap( SanitizeTable ) } bScriptedModeValid = true; } if ( !bScriptedModeValid ) return false if ( "SessionSpawns" in getroottable() ) { EntSpawn_DoIncludes( ::SessionSpawns ) } IncludeScript( "sm_stages", g_MapScript ) AddToScriptHelp( getroottable() ) AddToScriptHelp( g_MapScript ) AddToScriptHelp( g_ModeScript ) ScriptedPrecache() ScriptMode_SystemCall("Precache") return true } scripthelp_ScriptMode_SystemCall <- "Makes the passed in call to g_MapScript and g_ModeScript, but it must have Zero args" function ScriptMode_SystemCall( callname ) { local calls = 0 if ( callname in g_MapScript ) { g_MapScript[callname]() calls++ } if ( callname in g_ModeScript ) { g_ModeScript[callname]() calls++ } return calls > 0 } function ScriptMode_OnGameplayStart( modename, mapname ) { if ( "SessionSpawns" in getroottable() ) EntSpawn_DoTheSpawns( ::SessionSpawns ) ScriptMode_SystemCall("OnGameplayStart") return SessionState.StartActive } function ScriptMode_OnActivate( modename, mapname ) { if ( g_ModeScript == null ) { g_ModeScript = getroottable().DirectorScript.MapScript.ChallengeScript if ( IncludeScript( modename, g_ModeScript ) ) { printl( "ScriptMode loaded " + modename + " and now Initializing" ) } } if ( !SessionState.StartActive ) { MergeSessionOptionTables() } if ( "SetupModeHUD" in g_ModeScript ) { g_ModeScript.SetupModeHUD() } ScriptMode_SystemCall("OnActivate") } function ScriptMode_OnShutdown( reason, nextmap ) { SessionState.ShutdownReason <- reason SessionState.NextMap <- nextmap ScriptMode_SystemCall( "OnShutdown" ) g_ModeScript = null } function ScriptMode_AddCriteria( ) { local criteria = {} if ( "AddCriteria" in g_ModeScript) g_ModeScript.AddCriteria( criteria ) if ( "AddCriteria" in g_MapScript) g_MapScript.AddCriteria( criteria ) return criteria } function FireEvent( eventname ) { ScriptMode_SystemCall(eventname) } function MergeSessionSpawnTables() { AddDefaultsToArray( "ModeSpawns", g_ModeScript, "MapSpawns", g_MapScript ) ::SessionSpawns <- g_MapScript.MapSpawns } function MergeSessionStateTables() { AddDefaultsToTable( "MapState", g_MapScript, "MutationState", g_ModeScript ) ::SessionState <- g_ModeScript.MutationState } function MergeSessionOptionTables() { AddDefaultsToTable( "BaseScriptedDOTable", this, "DirectorOptions", g_ModeScript ) AddDefaultsToTable( "MutationOptions", g_ModeScript, "DirectorOptions", g_ModeScript ) AddDefaultsToTable( "MapOptions", g_MapScript, "DirectorOptions", g_ModeScript ) ::SessionOptions <- g_ModeScript.DirectorOptions } scriptedModeLastSlowPoll <- 0 scriptedModeUpdateFuncs <- [] scriptedModeSlowPollFuncs <- [] scriptedModeSlowPollInterval <- 3 scriptedNextUpdateCalls <- [] function Update() { local frame = GetFrameCount() local defer = [] foreach (idx, val in scriptedNextUpdateCalls) { if (val.frame < frame ) val.func() else defer.append(val) } scriptedNextUpdateCalls = defer foreach (idx, val in scriptedModeUpdateFuncs) val() if ( Time() - scriptedModeLastSlowPoll > scriptedModeSlowPollInterval ) { foreach (idx, val in scriptedModeSlowPollFuncs) val() scriptedModeLastSlowPoll += scriptedModeSlowPollInterval } } scripthelp_ScriptedMode_CallNextUpdate <- "Pass a lambda to this, it will get called once as part of next Update, for doing something 'soon but not now'" function ScriptedMode_CallNextUpdate( callnext ) { scriptedNextUpdateCalls.append( { frame = GetFrameCount(), func = callnext } ) } function ScriptedMode_AddUpdate( updateFunc ) { scriptedModeUpdateFuncs.append( updateFunc ) } function ScriptedMode_AddSlowPoll( updateFunc ) { if (!scriptedModeSlowPollFuncs.find(updateFunc)) scriptedModeSlowPollFuncs.append( updateFunc ) else printl("You already have a SlowPoll for " + updateFunc.tostring()) } function ScriptedMode_RemoveUpdate( updateFunc ) { local idx = scriptedModeUpdateFuncs.find( updateFunc ) if (idx == null) return false scriptedModeUpdateFuncs.remove( idx ) return true } function ScriptedMode_RemoveSlowPoll( updateFunc ) { local idx = scriptedModeSlowPollFuncs.find( updateFunc ) if (idx == null) return false scriptedModeSlowPollFuncs.remove( idx ) return true } function UpdateHUDTable( hudTable ) { if ("PreCallback" in hudTable) hudTable.PreCallback() foreach (key, val in hudTable.Fields) if ("datafunc" in val) val.dataval <- val.datafunc(); if ("PostCallback" in hudTable) hudTable.PostCallback() } _entHelper <- function ( ent, funcname ) { if (ent == null) printl("No entity!") else { if (typeof(funcname) == "function") { funcname(ent) } else if (typeof(funcname) == "string") { if (funcname in ent) ent[funcname]() else if (funcname in g_ModeScript) g_ModeScript[funcname](ent) else if (funcname in g_MapScript) g_MapScript[funcname](ent) else printl("No " + funcname + " in " + ent.GetName() + " or in map/mode script either") } else printl("Need to pass a string of a function name or a lambda function, not a " + typeof(funcname)) } } scripthelp_Ent <- "Takes an entity index name or classname, calls the passed function name on all that match" ::EntCall <- function ( idxorname, funcname ) { local hEnt = null if ( typeof(idxorname) == "string" ) { local foundany = false while ( hEnt = Entities.FindByName( hEnt, idxorname ) ) { foundany = true g_ModeScript._entHelper( hEnt, funcname ) } if (!foundany) { while ( hEnt = Entities.FindByClassname( hEnt, idxorname ) ) { foundany = true g_ModeScript._entHelper( hEnt, funcname ) } } if (!foundany) printl("Never saw anything that matched " + idxorname ) } else if ( typeof(idxorname) == "integer" ) { hEnt = EntIndexToHScript( idxorname ) g_ModeScript._entHelper( hEnt, funcname ) } } scripthelp_Ent <- "Takes an entity index or name, returns the entity" ::Ent <- function( idxorname ) { local hEnt = null if ( typeof(idxorname) == "string" ) hEnt = Entities.FindByName( null, idxorname ) else if ( typeof(idxorname) == "integer" ) hEnt = EntIndexToHScript( idxorname ) if (hEnt) return hEnt printl( "Hey! no entity for " + idxorname ) }WeaponData { // Terror-specific Data -------------------- "VerticalPunch" "4" "SpreadPerShot" "7" "MaxSpread" "15" "SpreadDecay" "7" "MinDuckingSpread" "0" "MinStandingSpread" "0.1" "MinInAirSpread" "10" "MaxMovementSpread" "10" "AddonAttachment" "primary" "Team" "Survivor" "Tier" "1" // valid entries are 0, 1, 2 "ResponseRulesName" "HuntingRifle" // particle muzzle flash effect to play when fired "MuzzleFlashEffect_1stPerson" "weapon_muzzle_flash_huntingrifle_FP" "MuzzleFlashEffect_3rdPerson" "weapon_muzzle_flash_huntingrifle" // model for the shell casing to eject when we fire bullets "EjectBrassEffect" "weapon_shell_casing_rifle" // Used in the music system when this weapon fires "MusicDynamicSpeed" "3.5" "DisplayName" "#L4D_Weapon_HuntingRifle" "DisplayNameAllCaps" "#L4D_Weapon_HuntingRifle_CAPS" // 360 Terror Data "MaxAutoAimDeflection1" "6.0" "MaxAutoAimRange1" "0" //This value determins how "big" a target is for auto aim. If a target is 10.0 units big then it is considered 10.0*scale. //You can think about this value controlling a falloff value on distant targets, the smaller the value the harder it is to hit at a distance. "WeaponAutoAimScale" "1.0" // End Terror-specific Data ---------------- "MaxPlayerSpeed" "250" "WeaponType" "sniper_rifle" "WeaponPrice" "4200" "WeaponArmorRatio" "1.45" "CrosshairMinDistance" "5" "CrosshairDeltaDistance" "3" "BuiltRightHanded" "1" "PlayerAnimationExtension" "sg550" "CanEquipWithShield" "0" "Rumble" "2" // Weapon characteristics: "PenetrationNumLayers" "3" "PenetrationPower" "50" "PenetrationMaxDistance" "0" // none "CharacterPenetrationMaxDistance" "8192" // Shooting through infected is doesn't count against penetration count out to this range "Damage" "125" "Range" "8192" "RangeModifier" "0.99" "Bullets" "1" "CycleTime" "0.1" "AccuracyDivisor" "-1" "AccuracyOffset" "0" "MaxInaccuracy" "0" "TimeToIdle" "1.8" "IdleInterval" "60" // Weapon data is loaded by both the Game and Client DLLs. "printname" "Hunting Rifle" "playermodel" "models/w_models/weapons/w_sniper_mini14.mdl" "viewmodel" "models/v_models/v_huntingrifle.mdl" "CharacterViewmodelAddon" { "Coach" "models/weapons/arms/v_arms_coach_new.mdl" "Mechanic" "models/weapons/arms/v_arms_mechanic_new.mdl" "Producer" "models/weapons/arms/v_arms_producer_new.mdl" "Gambler" "models/weapons/arms/v_arms_gambler_new.mdl" "Manager" "models/weapons/arms/v_arms_louis.mdl" "Biker" "models/weapons/arms/v_arms_francis.mdl" "TeenGirl" "models/weapons/arms/v_arms_zoey.mdl" "NamVet" "models/weapons/arms/v_arms_bill.mdl" } "anim_prefix" "anim" "bucket" "0" "bucket_position" "0" "clip_size" "15" "primary_ammo" "AMMO_TYPE_SNIPERRIFLE" "secondary_ammo" "None" "weight" "20" "item_flags" "0" "LoadoutSlots" "2" // Sounds for the weapon. There is a max of 16 sounds per category (i.e. max 16 "single_shot" sounds) SoundData { "single_shot" "HuntingRifle.Fire" "special3" "HuntingRifle.Zoom" "shoot_incendiary" "HuntingRifle.FireIncendiary" } // Weapon Sprite data is loaded by the Client DLL. TextureData { "weapon" { "file" "vgui/hud/iconsheet" "x" "320" "y" "384" "width" "192" "height" "64" } "ammo" { "file" "vgui/hud/iconsheet" "x" "384" "y" "448" "width" "64" "height" "64" } "crosshair" { "file" "sprites/crosshairs" "x" "0" "y" "48" "width" "24" "height" "24" } "autoaim" { "file" "sprites/crosshairs" "x" "0" "y" "48" "width" "24" "height" "24" } } ModelBounds { Viewmodel { Mins "-3 -3 -12" Maxs "40 14 -1" } World { Mins "-7 -8 -3" Maxs "32 9 9" } } } WeaponData { // Terror-specific Data -------------------- "VerticalPunch" "1.2" "SpreadPerShot" "0.75" "MaxSpread" "30" "SpreadDecay" "5" "MinDuckingSpread" "0.05" "MinStandingSpread" "0.4" "MinInAirSpread" "1.5" "MaxMovementSpread" "5" "ReloadDuration" "-1" "AddonAttachment" "primary" "Team" "Survivor" "Tier" "0" // valid entries are 0, 1, 2 "ResponseRulesName" "GrenadeLauncher" // model for the shell casing to eject when we fire bullets "EjectBrassEffect" "weapon_shell_casing_rifle" // Used in the music system when this weapon fires "MusicDynamicSpeed" "2.5" "DisplayName" "#L4D_Weapon_GrenadeLauncher" "DisplayNameAllCaps" "#L4D_Weapon_GrenadeLauncher_CAPS" "NewInL4D2" "1" // 360 Terror Data "MaxAutoAimDeflection1" "10.0" "MaxAutoAimRange1" "0" //This value determins how "big" a target is for auto aim. If a target is 10.0 units big then it is considered 10.0*scale. //You can think about this value controlling a falloff value on distant targets, the smaller the value the harder it is to hit at a distance. "WeaponAutoAimScale" "1.0" // End Terror-specific Data ---------------- "Rumble" "5" "MaxPlayerSpeed" "230" "WeaponType" "grenade_launcher" "WeaponPrice" "3100" "WeaponArmorRatio" "1.4" "CrosshairMinDistance" "4" "CrosshairDeltaDistance" "3" "BuiltRightHanded" "1" "PlayerAnimationExtension" "m4" "CanEquipWithShield" "0" // Weapon characteristics: "PenetrationNumLayers" "2" "PenetrationPower" "50" "PenetrationMaxDistance" "0" // none "Damage" "100" "Range" "3000" "RangeModifier" "0.97" "GainRange" "1500" // range at which to use a gain curve to fall off to zero "Bullets" "1" "CycleTime" "0.5" "TimeToIdle" "1.5" "IdleInterval" "60" // Weapon data is loaded by both the Game and Client DLLs. "printname" "_Grenade Launcher_" "playermodel" "models/w_models/weapons/w_grenade_launcher.mdl" "viewmodel" "models/v_models/v_grenade_launcher.mdl" "CharacterViewmodelAddon" { "Coach" "models/weapons/arms/v_arms_coach_new.mdl" "Mechanic" "models/weapons/arms/v_arms_mechanic_new.mdl" "Producer" "models/weapons/arms/v_arms_producer_new.mdl" "Gambler" "models/weapons/arms/v_arms_gambler_new.mdl" "Manager" "models/weapons/arms/v_arms_louis.mdl" "Biker" "models/weapons/arms/v_arms_francis.mdl" "TeenGirl" "models/weapons/arms/v_arms_zoey.mdl" "NamVet" "models/weapons/arms/v_arms_bill.mdl" } "anim_prefix" "anim" "bucket" "1" "bucket_position" "1" "clip_size" "1" "primary_ammo" "AMMO_TYPE_PISTOL_MAGNUM" "secondary_ammo" "None" "weight" "25" "item_flags" "0" "LoadoutSlots" "2" // Sounds for the weapon. There is a max of 16 sounds per category (i.e. max 16 "single_shot" sounds) SoundData { "single_shot" "GrenadeLauncher.Fire" } // Weapon Sprite data is loaded by the Client DLL. TextureData { "weapon" { "file" "vgui/hud/iconsheet2" "x" "0" "y" "256" "width" "148" "height" "64" } "ammo" { "file" "vgui/hud/iconsheet2" "x" "384" "y" "128" "width" "64" "height" "64" } "crosshair" { "file" "sprites/crosshairs" "x" "0" "y" "48" "width" "24" "height" "24" } "autoaim" { "file" "sprites/crosshairs" "x" "0" "y" "48" "width" "24" "height" "24" } } ModelBounds { Viewmodel { Mins "-10 -2 -13" Maxs "30 10 0" } World { Mins "-8 -9 -6" Maxs "29 9 8" } } } WeaponData { // Terror-specific Data -------------------- "VerticalPunch" "2" "SpreadPerShot" "1" "MaxSpread" "15" "SpreadDecay" "15" "MinDuckingSpread" "0.01" "MinStandingSpread" "0.35" "MinInAirSpread" "7" "MaxMovementSpread" "10" "AddonAttachment" "primary" "Team" "Survivor" "Tier" "2" // valid entries are 0, 1, 2 "ResponseRulesName" "Rifle" // particle muzzle flash effect to play when fired "MuzzleFlashEffect_1stPerson" "weapon_muzzle_flash_assaultrifle_FP" "MuzzleFlashEffect_3rdPerson" "weapon_muzzle_flash_assaultrifle" // model for the shell casing to eject when we fire bullets "EjectBrassEffect" "weapon_shell_casing_rifle" // Used in the music system when this weapon fires "MusicDynamicSpeed" "0.35" "DisplayName" "#L4D_Weapon_DesertRifle" "DisplayNameAllCaps" "#L4D_Weapon_DesertRifle_CAPS" "NewInL4D2" "1" // 360 Terror Data "MaxAutoAimDeflection1" "10.0" "MaxAutoAimRange1" "0" //This value determins how "big" a target is for auto aim. If a target is 10.0 units big then it is considered 10.0*scale. //You can think about this value controlling a falloff value on distant targets, the smaller the value the harder it is to hit at a distance. "WeaponAutoAimScale" "1.0" // End Terror-specific Data ---------------- "Rumble" "4" "MaxPlayerSpeed" "230" "WeaponType" "rifle" "WeaponPrice" "3100" "WeaponArmorRatio" "1.4" "CrosshairMinDistance" "4" "CrosshairDeltaDistance" "3" "BuiltRightHanded" "1" "PlayerAnimationExtension" "m4" "CanEquipWithShield" "0" // Weapon characteristics: "PenetrationNumLayers" "4" "PenetrationPower" "90" "PenetrationMaxDistance" "0" // none "Damage" "60" "Range" "3000" "RangeModifier" "0.9" "GainRange" "1500" // range at which to use a gain curve to fall off to zero "Bullets" "1" "CycleTime" "0.06" "TimeToIdle" "1.5" "IdleInterval" "60" // Weapon data is loaded by both the Game and Client DLLs. "printname" "Assault Rifle" "playermodel" "models/w_models/weapons/w_desert_rifle.mdl" "viewmodel" "models/v_models/v_desert_rifle.mdl" "CharacterViewmodelAddon" { "Coach" "models/weapons/arms/v_arms_coach_new.mdl" "Mechanic" "models/weapons/arms/v_arms_mechanic_new.mdl" "Producer" "models/weapons/arms/v_arms_producer_new.mdl" "Gambler" "models/weapons/arms/v_arms_gambler_new.mdl" "Manager" "models/weapons/arms/v_arms_louis.mdl" "Biker" "models/weapons/arms/v_arms_francis.mdl" "TeenGirl" "models/weapons/arms/v_arms_zoey.mdl" "NamVet" "models/weapons/arms/v_arms_bill.mdl" } "anim_prefix" "anim" "bucket" "0" "bucket_position" "0" "clip_size" "40" "primary_ammo" "AMMO_TYPE_ASSAULTRIFLE" "secondary_ammo" "None" "weight" "30" "item_flags" "0" "LoadoutSlots" "2" // Sounds for the weapon. There is a max of 16 sounds per category (i.e. max 16 "single_shot" sounds) SoundData { "single_shot" "Rifle_Desert.Fire" "shoot_incendiary" "Rifle_Desert.FireIncendiary" } // Weapon Sprite data is loaded by the Client DLL. TextureData { "weapon" { "file" "vgui/hud/iconsheet2" "x" "224" "y" "128" "width" "160" "height" "64" } "ammo" { "file" "vgui/hud/iconsheet" "x" "384" "y" "448" "width" "64" "height" "64" } "crosshair" { "file" "sprites/crosshairs" "x" "0" "y" "48" "width" "24" "height" "24" } "autoaim" { "file" "sprites/crosshairs" "x" "0" "y" "48" "width" "24" "height" "24" } } ModelBounds { Viewmodel { Mins "-10 -2 -13" Maxs "30 10 0" } World { Mins "-8 -9 -6" Maxs "29 9 8" } } } WeaponData { // Terror-specific Data -------------------- "VerticalPunch" "2" "SpreadPerShot" "1.5" "MaxSpread" "30" "SpreadDecay" "7" "MinDuckingSpread" "0.1" "MinStandingSpread" "0.5" "MinInAirSpread" "10" "MaxMovementSpread" "10" "AddonAttachment" "primary" "Team" "Survivor" "Tier" "2" // valid entries are 0, 1, 2 "ResponseRulesName" "Rifle_AK47" // particle muzzle flash effect to play when fired "MuzzleFlashEffect_1stPerson" "weapon_muzzle_flash_smg_FP" "MuzzleFlashEffect_3rdPerson" "weapon_muzzle_flash_smg" // model for the shell casing to eject when we fire bullets "EjectBrassEffect" "weapon_shell_casing_rifle" // Used in the music system when this weapon fires "MusicDynamicSpeed" "0.35" "DisplayName" "#L4D_Weapon_Rifle_AK47" "DisplayNameAllCaps" "#L4D_Weapon_Rifle_AK47_CAPS" "NewInL4D2" "1" // 360 Terror Data "MaxAutoAimDeflection1" "10.0" "MaxAutoAimRange1" "0" //This value determins how "big" a target is for auto aim. If a target is 10.0 units big then it is considered 10.0*scale. //You can think about this value controlling a falloff value on distant targets, the smaller the value the harder it is to hit at a distance. "WeaponAutoAimScale" "1.0" // End Terror-specific Data ---------------- "Rumble" "4" "MaxPlayerSpeed" "230" "WeaponType" "rifle" "WeaponPrice" "3100" "WeaponArmorRatio" "1.4" "CrosshairMinDistance" "4" "CrosshairDeltaDistance" "3" "BuiltRightHanded" "1" "PlayerAnimationExtension" "m4" "CanEquipWithShield" "0" // Weapon characteristics: "PenetrationNumLayers" "10" "PenetrationPower" "90" "PenetrationMaxDistance" "1500" // none "Damage" "70" //was 33 "Range" "3000" "RangeModifier" "0.95" "GainRange" "1500" // range at which to use a gain curve to fall off to zero "Bullets" "1" "CycleTime" "0.1" "TimeToIdle" "1.5" "IdleInterval" "60" // Weapon data is loaded by both the Game and Client DLLs. "printname" "Assault Rifle" "playermodel" "models/w_models/weapons/w_rifle_ak47.mdl" "viewmodel" "models/v_models/v_rifle_AK47.mdl" "CharacterViewmodelAddon" { "Coach" "models/weapons/arms/v_arms_coach_new.mdl" "Mechanic" "models/weapons/arms/v_arms_mechanic_new.mdl" "Producer" "models/weapons/arms/v_arms_producer_new.mdl" "Gambler" "models/weapons/arms/v_arms_gambler_new.mdl" "Manager" "models/weapons/arms/v_arms_louis.mdl" "Biker" "models/weapons/arms/v_arms_francis.mdl" "TeenGirl" "models/weapons/arms/v_arms_zoey.mdl" "NamVet" "models/weapons/arms/v_arms_bill.mdl" } "anim_prefix" "anim" "bucket" "0" "bucket_position" "0" "clip_size" "30" //was 50 "primary_ammo" "AMMO_TYPE_ASSAULTRIFLE" "secondary_ammo" "None" "weight" "25" "item_flags" "0" "LoadoutSlots" "2" // Sounds for the weapon. There is a max of 16 sounds per category (i.e. max 16 "single_shot" sounds) SoundData { "single_shot" "AK47.Fire" "shoot_incendiary" "AK47.FireIncendiary" } // Weapon Sprite data is loaded by the Client DLL. TextureData { "weapon" { "file" "vgui/hud/iconsheet2" "x" "128" "y" "384" "width" "192" "height" "64" } "ammo" { "file" "vgui/hud/iconsheet" "x" "384" "y" "448" "width" "64" "height" "64" } "crosshair" { "file" "sprites/crosshairs" "x" "0" "y" "48" "width" "24" "height" "24" } "autoaim" { "file" "sprites/crosshairs" "x" "0" "y" "48" "width" "24" "height" "24" } } ModelBounds { Viewmodel { Mins "-10 -2 -13" Maxs "30 10 0" } World { Mins "-8 -9 -6" Maxs "29 9 8" } } } WeaponData { // Terror-specific Data -------------------- "VerticalPunch" "10" "SpreadPerShot" "20" "MaxSpread" "20" "SpreadDecay" "5" "MinDuckingSpread" "0" "MinStandingSpread" "0.8" "MinInAirSpread" "7" //increased accuracy "MaxMovementSpread" "4" //increased accuracy "PelletScatterPitch" "2" //increased accuracy "PelletScatterYaw" "4" "ReloadDuration" "0.473" "AddonAttachment" "primary" "Team" "Survivor" "Tier" "1" // valid entries are 0, 1, 2 "ResponseRulesName" "PumpShotgun" // particle muzzle flash effect to play when fired "MuzzleFlashEffect_1stPerson" "weapon_muzzle_flash_shotgun_FP" "MuzzleFlashEffect_3rdPerson" "weapon_muzzle_flash_autoshotgun" // model for the shell casing to eject when we fire bullets "EjectBrassEffect" "weapon_shell_casing_shotgun" // Used in the music system when this weapon fires "MusicDynamicSpeed" "2.5" "DisplayName" "#L4D_Weapon_PumpShotgun" "DisplayNameAllCaps" "#L4D_Weapon_PumpShotgun_CAPS" // 360 Terror Data "MaxAutoAimDeflection1" "10.0" "MaxAutoAimRange1" "0" //This value determins how "big" a target is for auto aim. If a target is 10.0 units big then it is considered 10.0*scale. //You can think about this value controlling a falloff value on distant targets, the smaller the value the harder it is to hit at a distance. "WeaponAutoAimScale" "1.0" // End Terror-specific Data ---------------- "Rumble" "5" "MaxPlayerSpeed" "250" "WeaponType" "shotgun" "WeaponPrice" "1700" "WeaponArmorRatio" "1.0" "CrosshairMinDistance" "8" "CrosshairDeltaDistance" "6" "BuiltRightHanded" "1" "PlayerAnimationExtension" "m3s90" "MuzzleFlashScale" "1.3" "CanEquipWithShield" "0" // Weapon characteristics: "PenetrationNumLayers" "1" "PenetrationPower" "10" "PenetrationMaxDistance" "500" "CharacterPenetrationMaxDistance" "500" // Shooting through infected is doesn't count against penetration count out to this range "Damage" "25" // 22 "Range" "3000" "RangeModifier" "0.2" "Bullets" "30" "CycleTime" "0.5" // Weapon data is loaded by both the Game and Client DLLs. "printname" "Pump Shotgun" "playermodel" "models/w_models/weapons/w_shotgun.mdl" "viewmodel" "models/v_models/v_pumpshotgun.mdl" "CharacterViewmodelAddon" { "Coach" "models/weapons/arms/v_arms_coach_new.mdl" "Mechanic" "models/weapons/arms/v_arms_mechanic_new.mdl" "Producer" "models/weapons/arms/v_arms_producer_new.mdl" "Gambler" "models/weapons/arms/v_arms_gambler_new.mdl" "Manager" "models/weapons/arms/v_arms_louis.mdl" "Biker" "models/weapons/arms/v_arms_francis.mdl" "TeenGirl" "models/weapons/arms/v_arms_zoey.mdl" "NamVet" "models/weapons/arms/v_arms_bill.mdl" } "anim_prefix" "anim" "bucket" "0" "bucket_position" "0" "clip_size" "6" "primary_ammo" "AMMO_TYPE_AUTOSHOTGUN" "secondary_ammo" "None" "weight" "20" "item_flags" "0" // Sounds for the weapon. There is a max of 16 sounds per category (i.e. max 16 "single_shot" sounds) SoundData { "single_shot" "Shotgun.Fire" //"reload" "Shotgun.WorldReloadShell" //"reload_pump" "Shotgun.WorldReloadPump" "shoot_incendiary" "Shotgun.FireIncendiary" } // Weapon Sprite data is loaded by the Client DLL. TextureData { "weapon" { "file" "vgui/hud/iconsheet" "x" "320" "y" "320" "width" "192" "height" "64" } "ammo" { "file" "vgui/hud/iconsheet2" "x" "0" "y" "128" "width" "64" "height" "64" } "crosshair" { "file" "sprites/crosshairs" "x" "0" "y" "48" "width" "24" "height" "24" } "autoaim" { "file" "sprites/crosshairs" "x" "0" "y" "48" "width" "24" "height" "24" } } ModelBounds { Viewmodel { Mins "-13 -3 -13" Maxs "26 10 -3" } World { Mins "-9 -8 -5" Maxs "28 9 9" } } } "AddonInfo" { addonSteamAppID 550 addontitle "REAL GUNSZ" addonversion "6.9" addonauthor "ARISU" addonDescription "REAL GUNS" 800 reserve ammo (def. 0) Same damage (50) Same rate of fire (545)" }WeaponData { // Terror-specific Data -------------------- "VerticalPunch" "5" "SpreadPerShot" "7" "MaxSpread" "15" "SpreadDecay" "7" "MinDuckingSpread" "0.5" "MinStandingSpread" "1" "MinInAirSpread" "10" "MaxMovementSpread" "7" "DeployDuration" "0.5" "DualDeployDuration" "0.65" "AddonAttachment" "pistol" "addon_offset" "2 0 -2" "addon_angles" "0 0 0" "Team" "Survivor" "Tier" "0" // valid entries are 0, 1, 2 "ResponseRulesName" "magnum" // particle muzzle flash effect to play when fired "MuzzleFlashEffect_1stPerson" "weapon_muzzle_flash_shotgun_FP" "MuzzleFlashEffect_3rdPerson" "weapon_muzzle_flash_autoshotgun" // model for the shell casing to eject when we fire bullets "EjectBrassEffect" "weapon_shell_casing_9mm" // Used in the music system when this weapon fires "MusicDynamicSpeed" "0.8" "DisplayName" "#L4D_Weapon_magnum" "DisplayNameAllCaps" "#L4D_Weapon_magnum_CAPS" // 360 Terror Data "MaxAutoAimDeflection1" "10.0" "MaxAutoAimRange1" "0" //This value determins how "big" a target is for auto aim. If a target is 10.0 units big then it is considered 10.0*scale. //You can think about this value controlling a falloff value on distant targets, the smaller the value the harder it is to hit at a distance. "WeaponAutoAimScale" "1.0" // End Terror-specific Data ---------------- "MaxPlayerSpeed" "250" "WeaponType" "pistol" "WeaponPrice" "500" "WeaponArmorRatio" "1.0" "CrosshairMinDistance" "8" "CrosshairDeltaDistance" "3" "BuiltRightHanded" "1" "PlayerAnimationExtension" "pistol" "MuzzleFlashScale" "1" "CanEquipWithShield" "1" "NoiseFactor" "350" "Rumble" "1" // Weapon characteristics: "PenetrationNumLayers" "5" "PenetrationPower" "90" "PenetrationMaxDistance" "1500" // none "Damage" "125" "Range" "3500" "RangeModifier" "0.75" "Bullets" "1" //"CycleTime" "0.3" "CycleTime" "0.3" // Weapon data is loaded by both the Game and Client DLLs. "printname" "Magnum" "playermodel" "models/w_models/weapons/w_desert_eagle.mdl" "viewmodel" "models/v_models/v_desert_eagle.mdl" "CharacterViewmodelAddon" { "Coach" "models/weapons/arms/v_arms_coach_new.mdl" "Mechanic" "models/weapons/arms/v_arms_mechanic_new.mdl" "Producer" "models/weapons/arms/v_arms_producer_new.mdl" "Gambler" "models/weapons/arms/v_arms_gambler_new.mdl" "Manager" "models/weapons/arms/v_arms_louis.mdl" "Biker" "models/weapons/arms/v_arms_francis.mdl" "TeenGirl" "models/weapons/arms/v_arms_zoey.mdl" "NamVet" "models/weapons/arms/v_arms_bill.mdl" } "anim_prefix" "anim" "bucket" "1" "bucket_position" "0" "clip_size" "7" // custom ammo - adds dismemberment, and full damage on expert to kill infected "primary_ammo" "AMMO_TYPE_PISTOL_MAGNUM" "secondary_ammo" "None" "weight" "5" "item_flags" "0" // Sounds for the weapon. There is a max of 16 sounds per category (i.e. max 16 "single_shot" sounds) SoundData { "single_shot" "Magnum.Fire" } // Weapon Sprite data is loaded by the Client DLL. TextureData { "weapon" { "file" "vgui/hud/iconsheet" "x" "320" "y" "256" "width" "64" "height" "64" } "weapon_dual" { "file" "vgui/hud/iconsheet" "x" "192" "y" "320" "width" "64" "height" "64" } "ammo" { "font" "DebugFixed" "character" "A" } "crosshair" { "file" "sprites/crosshairs" "x" "0" "y" "48" "width" "24" "height" "24" } "autoaim" { "file" "sprites/crosshairs" "x" "0" "y" "48" "width" "24" "height" "24" } } ModelBounds { Viewmodel { Mins "-7 -4 -14" Maxs "24 9 -2" } World { Mins "-1 -4 -3" Maxs "17 5 6" } } } WeaponData { // Terror-specific Data -------------------- "VerticalPunch" "5" "SpreadPerShot" "10" "MaxSpread" "20" "SpreadDecay" "6" "MinDuckingSpread" "0.05" "MinStandingSpread" "0.5" "MinInAirSpread" "10" "MaxMovementSpread" "10" "AddonAttachment" "primary" "Team" "Survivor" "Tier" "2" // valid entries are 0, 1, 2 "ResponseRulesName" "Sniper_Military" // particle muzzle flash effect to play when fired "MuzzleFlashEffect" "weapon_muzzle_flash_huntingrifle_FP" "MuzzleFlashEffect_1stPerson" "weapon_muzzle_flash_huntingrifle_FP" "MuzzleFlashEffect_3rdPerson" "weapon_muzzle_flash_huntingrifle" // model for the shell casing to eject when we fire bullets "EjectBrassEffect" "weapon_shell_casing_rifle" // Used in the music system when this weapon fires "MusicDynamicSpeed" "3.5" "DisplayName" "#L4D_Weapon_Sniper_Military" "DisplayNameAllCaps" "#L4D_Weapon_Sniper_Military_CAPS" "NewInL4D2" "1" // 360 Terror Data "MaxAutoAimDeflection1" "6.0" "MaxAutoAimRange1" "0" //This value determins how "big" a target is for auto aim. If a target is 10.0 units big then it is considered 10.0*scale. //You can think about this value controlling a falloff value on distant targets, the smaller the value the harder it is to hit at a distance. "WeaponAutoAimScale" "1.0" // End Terror-specific Data ---------------- "MaxPlayerSpeed" "250" "WeaponType" "sniper_rifle" "WeaponPrice" "4200" "WeaponArmorRatio" "1.45" "CrosshairMinDistance" "5" "CrosshairDeltaDistance" "3" "BuiltRightHanded" "1" "PlayerAnimationExtension" "sg550" "MuzzleFlashScale" "1.6" "MuzzleFlashStyle" "CS_MUZZLEFLASH_X" "CanEquipWithShield" "0" "Rumble" "2" // Weapon characteristics: "PenetrationNumLayers" "10" "PenetrationPower" "100" "PenetrationMaxDistance" "0" // none "CharacterPenetrationMaxDistance" "8192" // Shooting through infected is doesn't count against penetration count out to this range "Damage" "150" "Range" "8192" "RangeModifier" "0.99" "Bullets" "1" "CycleTime" "0.1" "AccuracyDivisor" "-1" "AccuracyOffset" "0" "MaxInaccuracy" "0" "TimeToIdle" "1.8" "IdleInterval" "60" // Weapon data is loaded by both the Game and Client DLLs. "printname" "Sniper Military" "playermodel" "models/w_models/weapons/w_sniper_military.mdl" "viewmodel" "models/v_models/v_sniper_military.mdl" "CharacterViewmodelAddon" { "Coach" "models/weapons/arms/v_arms_coach_new.mdl" "Mechanic" "models/weapons/arms/v_arms_mechanic_new.mdl" "Producer" "models/weapons/arms/v_arms_producer_new.mdl" "Gambler" "models/weapons/arms/v_arms_gambler_new.mdl" "Manager" "models/weapons/arms/v_arms_louis.mdl" "Biker" "models/weapons/arms/v_arms_francis.mdl" "TeenGirl" "models/weapons/arms/v_arms_zoey.mdl" "NamVet" "models/weapons/arms/v_arms_bill.mdl" } "anim_prefix" "anim" "bucket" "0" "bucket_position" "0" "clip_size" "20" "primary_ammo" "AMMO_TYPE_HUNTINGRIFLE" "secondary_ammo" "None" "weight" "20" "item_flags" "0" "LoadoutSlots" "2" // Sounds for the weapon. There is a max of 16 sounds per category (i.e. max 16 "single_shot" sounds) SoundData { "single_shot" "Sniper_Military.Fire" "special3" "HuntingRifle.Zoom" "shoot_incendiary" "Sniper_Military.FireIncendiary" } // Weapon Sprite data is loaded by the Client DLL. TextureData { "weapon" { "file" "vgui/hud/iconsheet2" "x" "0" "y" "192" "width" "192" "height" "64" } "ammo" { "file" "vgui/hud/iconsheet" "x" "384" "y" "448" "width" "64" "height" "64" } "crosshair" { "file" "sprites/crosshairs" "x" "0" "y" "48" "width" "24" "height" "24" } "autoaim" { "file" "sprites/crosshairs" "x" "0" "y" "48" "width" "24" "height" "24" } } ModelBounds { Viewmodel { Mins "-3 -3 -12" Maxs "40 14 -1" } World { Mins "-7 -8 -3" Maxs "32 9 9" } } } WeaponData { // Terror-specific Data -------------------- "VerticalPunch" "1" "SpreadPerShot" "0.7" "MaxSpread" "20" "SpreadDecay" "10" "MinDuckingSpread" "0.1" "MinStandingSpread" "0.5" "MinInAirSpread" "5" "MaxMovementSpread" "5" "AddonAttachment" "primary" "Team" "Survivor" "Tier" "1" // valid entries are 0, 1, 2 "ResponseRulesName" "SMG_MP5" "NewInL4D2" "1" "CSWeapon" "1" // particle muzzle flash effect to play when fired "MuzzleFlashEffect_1stPerson" "weapon_muzzle_flash_smg_FP" "MuzzleFlashEffect_3rdPerson" "weapon_muzzle_flash_smg" // model for the shell casing to eject when we fire bullets "EjectBrassEffect" "weapon_shell_casing_9mm" // Used in the music system when this weapon fires "MusicDynamicSpeed" "0.3" "DisplayName" "#L4D_Weapon_MP5" "DisplayNameAllCaps" "#L4D_Weapon_MP5" // 360 Terror Data "MaxAutoAimDeflection1" "10.0" "MaxAutoAimRange1" "0" //This value determins how "big" a target is for auto aim. If a target is 10.0 units big then it is considered 10.0*scale. //You can think about this value controlling a falloff value on distant targets, the smaller the value the harder it is to hit at a distance. "WeaponAutoAimScale" "1.0" // End Terror-specific Data ---------------- "Rumble" "3" "MaxPlayerSpeed" "250" "WeaponType" "smg" "WeaponPrice" "1500" "WeaponArmorRatio" "1.0" "CrosshairMinDistance" "6" "CrosshairDeltaDistance" "2" "BuiltRightHanded" "1" "PlayerAnimationExtension" "mp5" "MuzzleFlashScale" "1.1" "CanEquipWithShield" "0" // Weapon characteristics: "PenetrationNumLayers" "2" "PenetrationPower" "50" "PenetrationMaxDistance" "0" // none "Damage" "50" "Range" "2500" "RangeModifier" "0.75" "Bullets" "1" "CycleTime" "0.0705" "TimeToIdle" "2" "IdleInterval" "20" // Weapon data is loaded by both the Game and Client DLLs. "printname" "_ MP5 _" "playermodel" "models/w_models/weapons/w_smg_mp5.mdl" "viewmodel" "models/v_models/v_smg_mp5.mdl" "CharacterViewmodelAddon" { "Coach" "models/weapons/arms/v_arms_coach_new.mdl" "Mechanic" "models/weapons/arms/v_arms_mechanic_new.mdl" "Producer" "models/weapons/arms/v_arms_producer_new.mdl" "Gambler" "models/weapons/arms/v_arms_gambler_new.mdl" "Manager" "models/weapons/arms/v_arms_louis.mdl" "Biker" "models/weapons/arms/v_arms_francis.mdl" "TeenGirl" "models/weapons/arms/v_arms_zoey.mdl" "NamVet" "models/weapons/arms/v_arms_bill.mdl" } "anim_prefix" "anim" "bucket" "0" "bucket_position" "0" "clip_size" "30" "primary_ammo" "AMMO_TYPE_SMG" "secondary_ammo" "None" "weight" "25" "item_flags" "0" // Sounds for the weapon. There is a max of 16 sounds per category (i.e. max 16 "single_shot" sounds) SoundData { "single_shot" "Weapon_MP5Navy.Single" "shoot_incendiary" "SMG_Silenced.FireIncendiary" } // Weapon Sprite data is loaded by the Client DLL. TextureData { "weapon" { "file" "vgui/hud/iconsheet3" "x" "192" "y" "0" "width" "192" "height" "64" } "ammo" { "file" "vgui/hud/iconsheet" "x" "384" "y" "448" "width" "64" "height" "64" } "crosshair" { "file" "sprites/crosshairs" "x" "0" "y" "48" "width" "24" "height" "24" } "autoaim" { "file" "sprites/crosshairs" "x" "0" "y" "48" "width" "24" "height" "24" } } ModelBounds { Viewmodel { Mins "-10 -4 -13" Maxs "21 9 -1" } World { Mins "-10 -7 -6" Maxs "22 8 9" } } } WeaponData { // Terror-specific Data -------------------- "VerticalPunch" "1.2" "SpreadPerShot" "1" "MaxSpread" "20" "SpreadDecay" "9" "MinDuckingSpread" "0.05" "MinStandingSpread" "0.4" "MinInAirSpread" "10" "MaxMovementSpread" "10" "AddonAttachment" "primary" "Team" "Survivor" "Tier" "2" // valid entries are 0, 1, 2 "ResponseRulesName" "Rifle" // particle muzzle flash effect to play when fired "MuzzleFlashEffect_1stPerson" "weapon_muzzle_flash_assaultrifle_FP" "MuzzleFlashEffect_3rdPerson" "weapon_muzzle_flash_assaultrifle" // model for the shell casing to eject when we fire bullets "EjectBrassEffect" "weapon_shell_casing_rifle" // Used in the music system when this weapon fires "MusicDynamicSpeed" "0.35" "DisplayName" "#L4D_Weapon_AssaultRifle" "DisplayNameAllCaps" "#L4D_Weapon_AssaultRifle_CAPS" // 360 Terror Data "MaxAutoAimDeflection1" "10.0" "MaxAutoAimRange1" "0" //This value determins how "big" a target is for auto aim. If a target is 10.0 units big then it is considered 10.0*scale. //You can think about this value controlling a falloff value on distant targets, the smaller the value the harder it is to hit at a distance. "WeaponAutoAimScale" "1.0" // End Terror-specific Data ---------------- "Rumble" "4" "MaxPlayerSpeed" "240" "WeaponType" "rifle" "WeaponPrice" "3100" "WeaponArmorRatio" "1.4" "CrosshairMinDistance" "4" "CrosshairDeltaDistance" "3" "BuiltRightHanded" "1" "PlayerAnimationExtension" "m4" "CanEquipWithShield" "0" // Weapon characteristics: "PenetrationNumLayers" "4" "PenetrationPower" "60" "PenetrationMaxDistance" "0" // none "Damage" "52" "Range" "3000" "RangeModifier" "0.9" "GainRange" "1500" // range at which to use a gain curve to fall off to zero "Bullets" "1" "CycleTime" "0.075" "TimeToIdle" "1.5" "IdleInterval" "60" // Weapon data is loaded by both the Game and Client DLLs. "printname" "Assault Rifle" "playermodel" "models/w_models/weapons/w_rifle_m16a2.mdl" "viewmodel" "models/v_models/v_rifle.mdl" "CharacterViewmodelAddon" { "Coach" "models/weapons/arms/v_arms_coach_new.mdl" "Mechanic" "models/weapons/arms/v_arms_mechanic_new.mdl" "Producer" "models/weapons/arms/v_arms_producer_new.mdl" "Gambler" "models/weapons/arms/v_arms_gambler_new.mdl" "Manager" "models/weapons/arms/v_arms_louis.mdl" "Biker" "models/weapons/arms/v_arms_francis.mdl" "TeenGirl" "models/weapons/arms/v_arms_zoey.mdl" "NamVet" "models/weapons/arms/v_arms_bill.mdl" } "anim_prefix" "anim" "bucket" "0" "bucket_position" "0" "clip_size" "30" "primary_ammo" "AMMO_TYPE_ASSAULTRIFLE" "secondary_ammo" "None" "weight" "25" "item_flags" "0" "LoadoutSlots" "2" // Sounds for the weapon. There is a max of 16 sounds per category (i.e. max 16 "single_shot" sounds) SoundData { "single_shot" "Rifle.Fire" "shoot_incendiary" "Rifle.FireIncendiary" } // Weapon Sprite data is loaded by the Client DLL. TextureData { "weapon" { "file" "vgui/hud/iconsheet" "x" "128" "y" "384" "width" "192" "height" "64" } "ammo" { "file" "vgui/hud/iconsheet" "x" "384" "y" "448" "width" "64" "height" "64" } "crosshair" { "file" "sprites/crosshairs" "x" "0" "y" "48" "width" "24" "height" "24" } "autoaim" { "file" "sprites/crosshairs" "x" "0" "y" "48" "width" "24" "height" "24" } } ModelBounds { Viewmodel { Mins "-10 -2 -13" Maxs "30 10 0" } World { Mins "-8 -9 -6" Maxs "29 9 8" } } } WeaponData { // Terror-specific Data -------------------- "VerticalPunch" "10" "SpreadPerShot" "10" "MaxSpread" "10" "SpreadDecay" "5" "MinDuckingSpread" "0" "MinStandingSpread" "0.8" "MinInAirSpread" "6" //increased accuracy "MaxMovementSpread" "4" //increased accuracy "PelletScatterPitch" "1.5" //increased accuracy "PelletScatterYaw" "1.5" "ReloadDuration" "0.473" "AddonAttachment" "primary" "Team" "Survivor" "Tier" "1" // valid entries are 0, 1, 2 "ResponseRulesName" "Shotgun_Chrome" // particle muzzle flash effect to play when fired "MuzzleFlashEffect_1stPerson" "weapon_muzzle_flash_shotgun_FP" "MuzzleFlashEffect_3rdPerson" "weapon_muzzle_flash_autoshotgun" // model for the shell casing to eject when we fire bullets "EjectBrassEffect" "weapon_shell_casing_shotgun" // Used in the music system when this weapon fires "MusicDynamicSpeed" "2.5" "DisplayName" "#L4D_Weapon_PumpShotgun" "DisplayNameAllCaps" "#L4D_Weapon_PumpShotgun_CAPS" "NewInL4D2" "1" // 360 Terror Data "MaxAutoAimDeflection1" "10.0" "MaxAutoAimRange1" "0" //This value determins how "big" a target is for auto aim. If a target is 10.0 units big then it is considered 10.0*scale. //You can think about this value controlling a falloff value on distant targets, the smaller the value the harder it is to hit at a distance. "WeaponAutoAimScale" "1.0" // End Terror-specific Data ---------------- "Rumble" "5" "MaxPlayerSpeed" "250" "WeaponType" "shotgun" "WeaponPrice" "1700" "WeaponArmorRatio" "1.0" "CrosshairMinDistance" "8" "CrosshairDeltaDistance" "6" "BuiltRightHanded" "1" "PlayerAnimationExtension" "m3s90" "MuzzleFlashScale" "1.3" "CanEquipWithShield" "0" // Weapon characteristics: "PenetrationNumLayers" "1" "PenetrationPower" "30" "PenetrationMaxDistance" "1500" "CharacterPenetrationMaxDistance" "300" // Shooting through infected is doesn't count against penetration count out to this range "Damage" "75" // 22 "Range" "3000" "RangeModifier" "0.3" "Bullets" "8" "CycleTime" "0.5" // Weapon data is loaded by both the Game and Client DLLs. "printname" "Pump Shotgun" "playermodel" "models/w_models/weapons/w_pumpshotgun_A.mdl" "viewmodel" "models/v_models/v_shotgun_chrome.mdl" "CharacterViewmodelAddon" { "Coach" "models/weapons/arms/v_arms_coach_new.mdl" "Mechanic" "models/weapons/arms/v_arms_mechanic_new.mdl" "Producer" "models/weapons/arms/v_arms_producer_new.mdl" "Gambler" "models/weapons/arms/v_arms_gambler_new.mdl" "Manager" "models/weapons/arms/v_arms_louis.mdl" "Biker" "models/weapons/arms/v_arms_francis.mdl" "TeenGirl" "models/weapons/arms/v_arms_zoey.mdl" "NamVet" "models/weapons/arms/v_arms_bill.mdl" } "anim_prefix" "anim" "bucket" "0" "bucket_position" "0" "clip_size" "6" "primary_ammo" "AMMO_TYPE_AUTOSHOTGUN" "secondary_ammo" "None" "weight" "20" "item_flags" "0" // Sounds for the weapon. There is a max of 16 sounds per category (i.e. max 16 "single_shot" sounds) SoundData { "single_shot" "Shotgun_Chrome.Fire" //"reload" "Shotgun.WorldReloadShell" //"reload_pump" "Shotgun.WorldReloadPump" "shoot_incendiary" "Shotgun_Chrome.FireIncendiary" } // Weapon Sprite data is loaded by the Client DLL. TextureData { "weapon" { "file" "vgui/hud/iconsheet2" "x" "192" "y" "192" "width" "192" "height" "64" } "ammo" { "file" "vgui/hud/iconsheet2" "x" "0" "y" "128" "width" "64" "height" "64" } "crosshair" { "file" "sprites/crosshairs" "x" "0" "y" "48" "width" "24" "height" "24" } "autoaim" { "file" "sprites/crosshairs" "x" "0" "y" "48" "width" "24" "height" "24" } } ModelBounds { Viewmodel { Mins "-13 -3 -13" Maxs "26 10 -3" } World { Mins "-9 -8 -5" Maxs "28 9 9" } } } WeaponData { // Terror-specific Data -------------------- "VerticalPunch" "7" "SpreadPerShot" "15" "MaxSpread" "15" "SpreadDecay" "7" "MinDuckingSpread" "0" "MinStandingSpread" "0.75" "MinInAirSpread" "6" "MaxMovementSpread" "2" "PelletScatterPitch" "2" "PelletScatterYaw" "2" "ReloadDuration" "0.396" "AddonAttachment" "primary" "team" "survivor" "Tier" "2" // valid entries are 0, 1, 2 "ResponseRulesName" "Shotgun_SPAS" // particle muzzle flash effect to play when fired "MuzzleFlashEffect_1stPerson" "weapon_muzzle_flash_shotgun_FP" "MuzzleFlashEffect_3rdPerson" "weapon_muzzle_flash_autoshotgun" // model for the shell casing to eject when we fire bullets "EjectBrassEffect" "weapon_shell_casing_shotgun" // Used in the music system when this weapon fires "MusicDynamicSpeed" "1.5" "DisplayName" "#L4D_Weapon_Shotgun_SPAS" "DisplayNameAllCaps" "#L4D_Weapon_Shotgun_SPAS_CAPS" "NewInL4D2" "1" // 360 Terror Data "MaxAutoAimDeflection1" "10.0" "MaxAutoAimRange1" "0" //This value determins how "big" a target is for auto aim. If a target is 10.0 units big then it is considered 10.0*scale. //You can think about this value controlling a falloff value on distant targets, the smaller the value the harder it is to hit at a distance. "WeaponAutoAimScale" "1.0" // End Terror-specific Data ---------------- "Rumble" "5" "MaxPlayerSpeed" "220" "WeaponType" "shotgun" "WeaponPrice" "3000" "WeaponArmorRatio" "1.0" "CrosshairMinDistance" "9" "CrosshairDeltaDistance" "4" "Team" "ANY" "BuiltRightHanded" "1" "PlayerAnimationExtension" "xm1014" "MuzzleFlashScale" "1.3" "CanEquipWithShield" "0" // Weapon characteristics: "PenetrationNumLayers" "1" "PenetrationPower" "30" "PenetrationMaxDistance" "500" "CharacterPenetrationMaxDistance" "300" // Shooting through infected is doesn't count against penetration count out to this range "Damage" "75" "Range" "3000" "RangeModifier" "0.3" "Bullets" "8" "CycleTime" "0.01" // Weapon data is loaded by both the Game and Client DLLs. "printname" "Auto Shotgun" "playermodel" "models/w_models/weapons/w_shotgun_spas.mdl" "viewmodel" "models/v_models/v_shotgun_spas.mdl" "CharacterViewmodelAddon" { "Coach" "models/weapons/arms/v_arms_coach_new.mdl" "Mechanic" "models/weapons/arms/v_arms_mechanic_new.mdl" "Producer" "models/weapons/arms/v_arms_producer_new.mdl" "Gambler" "models/weapons/arms/v_arms_gambler_new.mdl" "Manager" "models/weapons/arms/v_arms_louis.mdl" "Biker" "models/weapons/arms/v_arms_francis.mdl" "TeenGirl" "models/weapons/arms/v_arms_zoey.mdl" "NamVet" "models/weapons/arms/v_arms_bill.mdl" } "anim_prefix" "anim" "bucket" "0" "bucket_position" "0" "clip_size" "8" //increased from 9 "primary_ammo" "AMMO_TYPE_AUTOSHOTGUN" "secondary_ammo" "None" "weight" "20" "item_flags" "0" "LoadoutSlots" "2" // Sounds for the weapon. There is a max of 16 sounds per category (i.e. max 16 "single_shot" sounds) SoundData { "single_shot" "AutoShotgun_Spas.Fire" "shoot_incendiary" "AutoShotgun_Spas.FireIncendiary" } // Weapon Sprite data is loaded by the Client DLL. TextureData { "weapon" { "file" "vgui/hud/iconsheet2" "x" "256" "y" "64" "width" "128" "height" "64" } "ammo" { "file" "vgui/hud/iconsheet2" "x" "0" "y" "128" "width" "64" "height" "64" } "crosshair" { "file" "sprites/crosshairs" "x" "0" "y" "48" "width" "24" "height" "24" } "autoaim" { "file" "sprites/crosshairs" "x" "0" "y" "48" "width" "24" "height" "24" } } ModelBounds { Viewmodel { Mins "-13 -3 -11" Maxs "29 10 0" } World { Mins "-4 -8 -4" Maxs "30 8 6" } } } Convars.SetValue("sv_consistency", "0"); local weps = ["weapon_rifle_sg552", "weapon_smg_mp5", "weapon_sniper_awp", "weapon_sniper_scout"]; foreach(wep in weps) { local css = {} css.classname <- wep; css.origin <- Vector(0,-10000,0); css.angles <- QAngle(0,0,0); local ent = g_ModeScript.CreateSingleSimpleEntityFromTable(css); ent.ValidateScriptScope(); } local smgs = ["weapon_smg_spawn","weapon_smg_mp5_spawn","weapon_smg_silenced_spawn"]; local rifs = ["weapon_rifle_spawn","weapon_rifle_ak47_spawn","weapon_rifle_sg552_spawn","weapon_rifle_desert_spawn"]; local snips = ["weapon_military_spawn", "weapon_hunting_rifle_spawn", "weapon_sniper_awp_spawn", "weapon_sniper_scout_spawn"]; function OnGameEvent_weapon_fire(event) { local NEO = GetPlayerFromUserID(event.userid); local weapon = NEO.GetActiveWeapon().GetClassname(); if(NEO.GetZombieType() == 9) { if(weapon == "weapon_sniper_awp") { if(RandomInt(0, 100) <= 100 ) { FireBullet(NEO); Explosion(NEO) } } if(weapon == "weapon_sniper_scout") { if(RandomInt(0, 100) <= 100 ) { FireBullet(NEO); } } } } MaxDistance <- 8192 BulletDamage <- 1 PROJECTILE <- Vector(RandomInt(10,30),RandomInt(10,30), 0); ExplosiveEntity <- null EXPLOSIVE_ENTITY <- { classname = "env_explosion" targetname = "fireball" iRadiusOverride = 0 fireballsprite = "null" ignoredClass = 0 iMagnitude = 50 rendermode = 0 spawnflags = 2 | 64 // Repeatable | No Sound origin = Vector(0, 0, 0) } function VectorFromQAngle(angles, radius = 1.0) { local function ToRad(angle) { return (angle * PI) / 180; } local yaw = ToRad(angles.Yaw()); local pitch = ToRad(-angles.Pitch()); local x = radius * cos(yaw) * cos(pitch); local y = radius * sin(yaw) * cos(pitch); local z = radius * sin(pitch); return Vector(x, y, z); } ExplosiveEntity <- g_ModeScript.CreateSingleSimpleEntityFromTable(EXPLOSIVE_ENTITY); function Explosion(NEO) { local traceStartPoint = NEO.EyePosition(); local traceEndpoint = NEO.EyePosition() + VectorFromQAngle(NEO.EyeAngles(), MaxDistance); local traceTable = { start = NEO.EyePosition() end = traceEndpoint ignore = NEO } TraceLine(traceTable) if("enthit" in traceTable) { local ExplosionPoint = traceTable.enthit.GetOrigin(); local UserOrigin = NEO.GetOrigin(); if((UserOrigin - ExplosionPoint).Length() > 3.0 && traceTable.enthit.GetClassname().tolower() == "infected") { DoEntFire("!self", "" 0, NEO, ExplosiveEntity); EmitSoundOn("BaseGrenade.Explode", ExplosiveEntity); } if((UserOrigin - ExplosionPoint).Length() > 3 && traceTable.enthit.GetClassname().tolower() == "witch") { DoEntFire("!self", "" 0, NEO, ExplosiveEntity); EmitSoundOn("BaseGrenade.Explode", ExplosiveEntity); } if((UserOrigin - ExplosionPoint).Length() > 3.0 && traceTable.enthit.GetClassname().tolower() == "player") { if(!traceTable.enthit.IsSurvivor()) { DoEntFire("!self", "" 0, NEO, ExplosiveEntity); EmitSoundOn("BaseGrenade.Explode", ExplosiveEntity); traceTable.enthit.Stagger(PROJECTILE); } } } if(traceTable.hit) { ExplosiveEntity.SetOrigin(traceTable.pos); if((NEO.GetOrigin() - ExplosiveEntity.GetOrigin()).Length() > 3.0) { DoEntFire("!self", "" 0, NEO, ExplosiveEntity); } } else { ExplosiveEntity.SetOrigin(traceEndpoint); DoEntFire("!self", "" 0, NEO, ExplosiveEntity); } } function FireBullet(NEO) { local entDamage = {} local traceStartPoint = NEO.EyePosition(); local traceEndpoint = NEO.EyePosition() + VectorFromQAngle(NEO.EyeAngles(), MaxDistance); local traceTable = { start = NEO.EyePosition() end = traceEndpoint ignore = NEO } TraceLine(traceTable) if("enthit" in traceTable) { local ExplosionPoint = traceTable.enthit.GetOrigin(); local UserOrigin = NEO.GetOrigin(); local ComZombie = traceTable.enthit; local damage = BulletDamage; if((UserOrigin - ExplosionPoint).LengthSqr() > 3 && traceTable.enthit.GetClassname().tolower() == "infected") { damage = BulletDamage ComZombie.TakeDamage(damage.tointeger(), DirectorScript.DMG_BURN, NEO); } if((UserOrigin - ExplosionPoint).LengthSqr() > 3 && traceTable.enthit.GetClassname().tolower() == "witch") { damage = BulletDamage ComZombie.TakeDamage(damage.tointeger(), DirectorScript.DMG_BURN, ComZombie); } if((UserOrigin - ExplosionPoint).LengthSqr() > 3 && traceTable.enthit.GetClassname().tolower() == "player") { if(ComZombie.GetZombieType() < 6) { damage = BulletDamage ComZombie.TakeDamage(damage.tointeger(), DirectorScript.DMG_BURN, NEO); } if(ComZombie.GetZombieType() == 6) { damage = BulletDamage ComZombie.TakeDamage(damage.tointeger(), DirectorScript.DMG_BURN, NEO); } if(ComZombie.GetZombieType() == 8) { damage = BulletDamage ComZombie.TakeDamage(damage.tointeger(), DirectorScript.DMG_BURN, NEO); } } } if(traceTable.hit) { ExplosiveEntity.SetOrigin(traceTable.pos); } else { ExplosiveEntity.SetOrigin(traceEndpoint); } } function SpecialKiller(NEO) { local entDamage = {} local traceStartPoint = NEO.EyePosition(); local traceEndpoint = NEO.EyePosition() + VectorFromQAngle(NEO.EyeAngles(), MaxDistance); local traceTable = { start = NEO.EyePosition() end = traceEndpoint ignore = NEO } TraceLine(traceTable) if("enthit" in traceTable) { local ExplosionPoint = traceTable.enthit.GetOrigin(); local UserOrigin = NEO.GetOrigin(); local ComZombie = traceTable.enthit; local damage = BulletDamage; if((UserOrigin - ExplosionPoint).LengthSqr() > 3 && traceTable.enthit.GetClassname().tolower() == "infected") { damage = BulletDamage + (ComZombie.GetHealth() * 1) ComZombie.TakeDamage(damage.tointeger(), DirectorScript.DMG_BLAST, NEO); } if((UserOrigin - ExplosionPoint).LengthSqr() > 3 && traceTable.enthit.GetClassname().tolower() == "witch") { damage = BulletDamage + (ComZombie.GetHealth() * 0.5) ComZombie.TakeDamage(damage.tointeger(), DirectorScript.DMG_BLAST, NEO); } if((UserOrigin - ExplosionPoint).LengthSqr() > 3 && traceTable.enthit.GetClassname().tolower() == "player") { if(ComZombie.GetZombieType() < 7) { damage = BulletDamage + (ComZombie.GetHealth() * 1) ComZombie.TakeDamage(damage.tointeger(), DirectorScript.DMG_BLAST, NEO); ComZombie.Stagger(PROJECTILE) } if(ComZombie.GetZombieType() == 8) { damage = BulletDamage + 900 ComZombie.TakeDamage(damage.tointeger(), DirectorScript.DMG_BLAST, NEO); ComZombie.Stagger(PROJECTILE) } } } if(traceTable.hit) { ExplosiveEntity.SetOrigin(traceTable.pos); } else { ExplosiveEntity.SetOrigin(traceEndpoint); } }WeaponData { // Terror-specific Data -------------------- "VerticalPunch" "5" "SpreadPerShot" "12" "MaxSpread" "10" "SpreadDecay" "5" "MinDuckingSpread" "0.1" "MinStandingSpread" "0.1" "MinInAirSpread" "10" "MaxMovementSpread" "5" "AddonAttachment" "primary" "Team" "Survivor" "Tier" "2" // valid entries are 0, 1, 2 "ResponseRulesName" "Sniper_Scout" "NewInL4D2" "1" "CSWeapon" "1" // particle muzzle flash effect to play when fired "MuzzleFlashEffect" "weapon_muzzle_flash_huntingrifle_FP" "MuzzleFlashEffect_1stPerson" "weapon_muzzle_flash_huntingrifle_FP" "MuzzleFlashEffect_3rdPerson" "weapon_muzzle_flash_huntingrifle" // model for the shell casing to eject when we fire bullets "EjectBrassEffect" "weapon_shell_casing_rifle" // Used in the music system when this weapon fires "MusicDynamicSpeed" "3.5" "DisplayName" "#L4D_Weapon_Sniper_Scout" "DisplayNameAllCaps" "#L4D_Weapon_Sniper_Scout_CAPS" // 360 Terror Data "MaxAutoAimDeflection1" "6.0" "MaxAutoAimRange1" "0" //This value determins how "big" a target is for auto aim. If a target is 10.0 units big then it is considered 10.0*scale. //You can think about this value controlling a falloff value on distant targets, the smaller the value the harder it is to hit at a distance. "WeaponAutoAimScale" "1.0" // End Terror-specific Data ---------------- "MaxPlayerSpeed" "200" "WeaponType" "sniper_rifle" "WeaponPrice" "4200" "WeaponArmorRatio" "1.45" "CrosshairMinDistance" "5" "CrosshairDeltaDistance" "3" "BuiltRightHanded" "1" "PlayerAnimationExtension" "scout" "CanEquipWithShield" "0" "Rumble" "2" // Weapon characteristics: "PenetrationNumLayers" "10" "PenetrationPower" "90" "PenetrationMaxDistance" "1500" // none "CharacterPenetrationMaxDistance" "8192" // Shooting through infected is doesn't count against penetration count out to this range "Damage" "250" "Range" "8192" "RangeModifier" "0.99" "Bullets" "1" "CycleTime" "0.8" "AccuracyDivisor" "-1" "AccuracyOffset" "0" "MaxInaccuracy" "0" "TimeToIdle" "1.8" "IdleInterval" "60" // Weapon data is loaded by both the Game and Client DLLs. "printname" "Sniper Scout" "playermodel" "models/w_models/weapons/w_sniper_scout.mdl" "viewmodel" "models/v_models/v_snip_scout.mdl" "CharacterViewmodelAddon" { "Coach" "models/weapons/arms/v_arms_coach_new.mdl" "Mechanic" "models/weapons/arms/v_arms_mechanic_new.mdl" "Producer" "models/weapons/arms/v_arms_producer_new.mdl" "Gambler" "models/weapons/arms/v_arms_gambler_new.mdl" "Manager" "models/weapons/arms/v_arms_louis.mdl" "Biker" "models/weapons/arms/v_arms_francis.mdl" "TeenGirl" "models/weapons/arms/v_arms_zoey.mdl" "NamVet" "models/weapons/arms/v_arms_bill.mdl" } "anim_prefix" "anim" "bucket" "0" "bucket_position" "0" "clip_size" "10" "primary_ammo" "AMMO_TYPE_HUNTINGRIFLE" "secondary_ammo" "None" "weight" "20" "item_flags" "0" "LoadoutSlots" "2" // Sounds for the weapon. There is a max of 16 sounds per category (i.e. max 16 "single_shot" sounds) SoundData { "single_shot" "Weapon_Scout.Single" "special3" "CS_Default.Zoom" "shoot_incendiary" "Sniper_Military.FireIncendiary" } // Weapon Sprite data is loaded by the Client DLL. TextureData { "weapon" { "file" "vgui/hud/iconsheet3" "x" "0" "y" "64" "width" "192" "height" "64" } "ammo" { "file" "vgui/hud/iconsheet" "x" "384" "y" "448" "width" "64" "height" "64" } "crosshair" { "file" "sprites/crosshairs" "x" "0" "y" "48" "width" "24" "height" "24" } "autoaim" { "file" "sprites/crosshairs" "x" "0" "y" "48" "width" "24" "height" "24" } } ModelBounds { Viewmodel { Mins "-3 -3 -12" Maxs "40 14 -1" } World { Mins "-7 -8 -3" Maxs "32 9 9" } } } Convars.SetValue("sv_consistency", "0"); local weps = ["weapon_rifle_sg552", "weapon_smg_mp5", "weapon_sniper_awp", "weapon_sniper_scout"]; foreach(wep in weps) { local css = {} css.classname <- wep; css.origin <- Vector(0,-10000,0); css.angles <- QAngle(0,0,0); local ent = g_ModeScript.CreateSingleSimpleEntityFromTable(css); ent.ValidateScriptScope(); } local smgs = ["weapon_smg_spawn","weapon_smg_mp5_spawn","weapon_smg_silenced_spawn"]; local rifs = ["weapon_rifle_spawn","weapon_rifle_ak47_spawn","weapon_rifle_sg552_spawn","weapon_rifle_desert_spawn"]; local snips = ["weapon_military_spawn", "weapon_hunting_rifle_spawn", "weapon_sniper_awp_spawn", "weapon_sniper_scout_spawn"]; function OnGameEvent_weapon_fire(event) { local NEO = GetPlayerFromUserID(event.userid); local weapon = NEO.GetActiveWeapon().GetClassname(); if(NEO.GetZombieType() == 9) { if(weapon == "weapon_sniper_awp") { if(RandomInt(0, 100) <= 100 ) { FireBullet(NEO); Explosion(NEO) } } if(weapon == "weapon_sniper_scout") { if(RandomInt(0, 100) <= 100 ) { FireBullet(NEO); } } } } MaxDistance <- 8192 BulletDamage <- 1 PROJECTILE <- Vector(RandomInt(10,30),RandomInt(10,30), 0); ExplosiveEntity <- null EXPLOSIVE_ENTITY <- { classname = "env_explosion" targetname = "null" iRadiusOverride = 0 fireballsprite = "null" ignoredClass = 0 iMagnitude = 30 rendermode = 0 spawnflags = 2 | 64 // Repeatable | No Sound origin = Vector(0, 0, 0) } function VectorFromQAngle(angles, radius = 1.0) { local function ToRad(angle) { return (angle * PI) / 180; } local yaw = ToRad(angles.Yaw()); local pitch = ToRad(-angles.Pitch()); local x = radius * cos(yaw) * cos(pitch); local y = radius * sin(yaw) * cos(pitch); local z = radius * sin(pitch); return Vector(x, y, z); } ExplosiveEntity <- g_ModeScript.CreateSingleSimpleEntityFromTable(EXPLOSIVE_ENTITY); function Explosion(NEO) { local traceStartPoint = NEO.EyePosition(); local traceEndpoint = NEO.EyePosition() + VectorFromQAngle(NEO.EyeAngles(), MaxDistance); local traceTable = { start = NEO.EyePosition() end = traceEndpoint ignore = NEO } TraceLine(traceTable) if("enthit" in traceTable) { local ExplosionPoint = traceTable.enthit.GetOrigin(); local UserOrigin = NEO.GetOrigin(); if((UserOrigin - ExplosionPoint).Length() > 3.0 && traceTable.enthit.GetClassname().tolower() == "infected") { DoEntFire("!self", "" 0, NEO, ExplosiveEntity); EmitSoundOn("BaseGrenade.Explode", ExplosiveEntity); } if((UserOrigin - ExplosionPoint).Length() > 3 && traceTable.enthit.GetClassname().tolower() == "witch") { DoEntFire("!self", "" 0, NEO, ExplosiveEntity); EmitSoundOn("BaseGrenade.Explode", ExplosiveEntity); } if((UserOrigin - ExplosionPoint).Length() > 3.0 && traceTable.enthit.GetClassname().tolower() == "player") { if(!traceTable.enthit.IsSurvivor()) { DoEntFire("!self", "" 0, NEO, ExplosiveEntity); EmitSoundOn("BaseGrenade.Explode", ExplosiveEntity); traceTable.enthit.Stagger(PROJECTILE); } } } if(traceTable.hit) { ExplosiveEntity.SetOrigin(traceTable.pos); if((NEO.GetOrigin() - ExplosiveEntity.GetOrigin()).Length() > 3.0) { DoEntFire("!self", "Explode", "" 0, NEO, ExplosiveEntity); } } else { ExplosiveEntity.SetOrigin(traceEndpoint); DoEntFire("!self", "Explode", "" 0, NEO, ExplosiveEntity); } } function FireBullet(NEO) { local entDamage = {} local traceStartPoint = NEO.EyePosition(); local traceEndpoint = NEO.EyePosition() + VectorFromQAngle(NEO.EyeAngles(), MaxDistance); local traceTable = { start = NEO.EyePosition() end = traceEndpoint ignore = NEO } TraceLine(traceTable) if("enthit" in traceTable) { local ExplosionPoint = traceTable.enthit.GetOrigin(); local UserOrigin = NEO.GetOrigin(); local ComZombie = traceTable.enthit; local damage = BulletDamage; if((UserOrigin - ExplosionPoint).LengthSqr() > 3 && traceTable.enthit.GetClassname().tolower() == "infected") { damage = BulletDamage ComZombie.TakeDamage(damage.tointeger(), DirectorScript.DMG_BURN, NEO); } if((UserOrigin - ExplosionPoint).LengthSqr() > 3 && traceTable.enthit.GetClassname().tolower() == "witch") { damage = BulletDamage ComZombie.TakeDamage(damage.tointeger(), DirectorScript.DMG_BURN, ComZombie); } if((UserOrigin - ExplosionPoint).LengthSqr() > 3 && traceTable.enthit.GetClassname().tolower() == "player") { if(ComZombie.GetZombieType() < 6) { damage = BulletDamage ComZombie.TakeDamage(damage.tointeger(), DirectorScript.DMG_BURN, NEO); } if(ComZombie.GetZombieType() == 6) { damage = BulletDamage ComZombie.TakeDamage(damage.tointeger(), DirectorScript.DMG_BURN, NEO); } if(ComZombie.GetZombieType() == 8) { damage = BulletDamage ComZombie.TakeDamage(damage.tointeger(), DirectorScript.DMG_BURN, NEO); } } } if(traceTable.hit) { ExplosiveEntity.SetOrigin(traceTable.pos); } else { ExplosiveEntity.SetOrigin(traceEndpoint); } } function SpecialKiller(NEO) { local entDamage = {} local traceStartPoint = NEO.EyePosition(); local traceEndpoint = NEO.EyePosition() + VectorFromQAngle(NEO.EyeAngles(), MaxDistance); local traceTable = { start = NEO.EyePosition() end = traceEndpoint ignore = NEO } TraceLine(traceTable) if("enthit" in traceTable) { local ExplosionPoint = traceTable.enthit.GetOrigin(); local UserOrigin = NEO.GetOrigin(); local ComZombie = traceTable.enthit; local damage = BulletDamage; if((UserOrigin - ExplosionPoint).LengthSqr() > 3 && traceTable.enthit.GetClassname().tolower() == "infected") { damage = BulletDamage + (ComZombie.GetHealth() * 1) ComZombie.TakeDamage(damage.tointeger(), DirectorScript.DMG_BLAST, NEO); } if((UserOrigin - ExplosionPoint).LengthSqr() > 3 && traceTable.enthit.GetClassname().tolower() == "witch") { damage = BulletDamage + (ComZombie.GetHealth() * 0.5) ComZombie.TakeDamage(damage.tointeger(), DirectorScript.DMG_BLAST, NEO); } if((UserOrigin - ExplosionPoint).LengthSqr() > 3 && traceTable.enthit.GetClassname().tolower() == "player") { if(ComZombie.GetZombieType() < 7) { damage = BulletDamage + (ComZombie.GetHealth() * 1) ComZombie.TakeDamage(damage.tointeger(), DirectorScript.DMG_BLAST, NEO); ComZombie.Stagger(PROJECTILE) } if(ComZombie.GetZombieType() == 8) { damage = BulletDamage + 900 ComZombie.TakeDamage(damage.tointeger(), DirectorScript.DMG_BLAST, NEO); ComZombie.Stagger(PROJECTILE) } } } if(traceTable.hit) { ExplosiveEntity.SetOrigin(traceTable.pos); } else { ExplosiveEntity.SetOrigin(traceEndpoint); } }WeaponData { // Terror-specific Data -------------------- "VerticalPunch" "1.2" "SpreadPerShot" "1" "MaxSpread" "20" "SpreadDecay" "8" "MinDuckingSpread" "0.05" "MinStandingSpread" "0.5" "MinInAirSpread" "5" "MaxMovementSpread" "10" "AddonAttachment" "primary" "Team" "Survivor" "Tier" "2" // valid entries are 0, 1, 2 "ResponseRulesName" "Rifle" "NewInL4D2" "1" "CSWeapon" "1" // particle muzzle flash effect to play when fired "MuzzleFlashEffect_1stPerson" "weapon_muzzle_flash_assaultrifle_FP" "MuzzleFlashEffect_3rdPerson" "weapon_muzzle_flash_assaultrifle" // model for the shell casing to eject when we fire bullets "EjectBrassEffect" "weapon_shell_casing_rifle" // Used in the music system when this weapon fires "MusicDynamicSpeed" "0.35" "DisplayName" "#L4D_Weapon_AssaultRifle" "DisplayNameAllCaps" "#L4D_Weapon_AssaultRifle_CAPS" // 360 Terror Data "MaxAutoAimDeflection1" "10.0" "MaxAutoAimRange1" "0" //This value determins how "big" a target is for auto aim. If a target is 10.0 units big then it is considered 10.0*scale. //You can think about this value controlling a falloff value on distant targets, the smaller the value the harder it is to hit at a distance. "WeaponAutoAimScale" "1.0" // End Terror-specific Data ---------------- "Rumble" "4" "MaxPlayerSpeed" "230" "WeaponType" "sniper_rifle" "WeaponPrice" "3100" "WeaponArmorRatio" "1.4" "CrosshairMinDistance" "4" "CrosshairDeltaDistance" "3" "BuiltRightHanded" "1" "PlayerAnimationExtension" "sg552" "CanEquipWithShield" "0" // Weapon characteristics: "PenetrationNumLayers" "4" "PenetrationPower" "80" "PenetrationMaxDistance" "0" // none "Damage" "60" "Range" "3000" "RangeModifier" "0.95" "GainRange" "1500" // range at which to use a gain curve to fall off to zero "Bullets" "1" "CycleTime" "0.0857" "TimeToIdle" "2" "IdleInterval" "20" // Weapon data is loaded by both the Game and Client DLLs. "printname" "Assault Rifle" "playermodel" "models/w_models/weapons/w_rifle_sg552.mdl" "viewmodel" "models/v_models/v_rif_sg552.mdl" "CharacterViewmodelAddon" { "Coach" "models/weapons/arms/v_arms_coach_new.mdl" "Mechanic" "models/weapons/arms/v_arms_mechanic_new.mdl" "Producer" "models/weapons/arms/v_arms_producer_new.mdl" "Gambler" "models/weapons/arms/v_arms_gambler_new.mdl" "Manager" "models/weapons/arms/v_arms_louis.mdl" "Biker" "models/weapons/arms/v_arms_francis.mdl" "TeenGirl" "models/weapons/arms/v_arms_zoey.mdl" "NamVet" "models/weapons/arms/v_arms_bill.mdl" } "anim_prefix" "anim" "bucket" "0" "bucket_position" "0" "clip_size" "30" "primary_ammo" "AMMO_TYPE_ASSAULTRIFLE" "secondary_ammo" "None" "weight" "25" "item_flags" "0" "LoadoutSlots" "2" // Sounds for the weapon. There is a max of 16 sounds per category (i.e. max 16 "single_shot" sounds) SoundData { "single_shot" "Weapon_SG552.Single" "special3" "CS_Default.Zoom" "shoot_incendiary" "Rifle.FireIncendiary" } // Weapon Sprite data is loaded by the Client DLL. TextureData { "weapon" { "file" "vgui/hud/iconsheet3" "x" "0" "y" "0" "width" "192" "height" "64" } "ammo" { "file" "vgui/hud/iconsheet" "x" "384" "y" "448" "width" "64" "height" "64" } "crosshair" { "file" "sprites/crosshairs" "x" "0" "y" "48" "width" "24" "height" "24" } "autoaim" { "file" "sprites/crosshairs" "x" "0" "y" "48" "width" "24" "height" "24" } } ModelBounds { Viewmodel { Mins "-10 -2 -13" Maxs "30 10 0" } World { Mins "-8 -9 -6" Maxs "29 9 8" } } } WeaponData { // Terror-specific Data -------------------- "VerticalPunch" "12" "SpreadPerShot" "20" "MaxSpread" "30" "SpreadDecay" "5" "MinDuckingSpread" "0" "MinStandingSpread" "0.1" "MinInAirSpread" "1.5" "MaxMovementSpread" "15" "AddonAttachment" "primary" "Team" "Survivor" "Tier" "2" // valid entries are 0, 1, 2 "ResponseRulesName" "Sniper_AWP" "NewInL4D2" "1" "CSWeapon" "1" // particle muzzle flash effect to play when fired "MuzzleFlashEffect" "weapon_muzzle_flash_huntingrifle_FP" "MuzzleFlashEffect_1stPerson" "weapon_muzzle_flash_huntingrifle_FP" "MuzzleFlashEffect_3rdPerson" "weapon_muzzle_flash_huntingrifle" // model for the shell casing to eject when we fire bullets "EjectBrassEffect" "weapon_shell_casing_rifle" // Used in the music system when this weapon fires "MusicDynamicSpeed" "3.5" "DisplayName" "#L4D_Weapon_Sniper_AWP" "DisplayNameAllCaps" "#L4D_Weapon_Sniper_AWP_CAPS" // 360 Terror Data "MaxAutoAimDeflection1" "6.0" "MaxAutoAimRange1" "0" //This value determins how "big" a target is for auto aim. If a target is 10.0 units big then it is considered 10.0*scale. //You can think about this value controlling a falloff value on distant targets, the smaller the value the harder it is to hit at a distance. "WeaponAutoAimScale" "1.0" // End Terror-specific Data ---------------- "MaxPlayerSpeed" "210" "WeaponType" "sniper_rifle" "WeaponPrice" "4200" "WeaponArmorRatio" "1.45" "CrosshairMinDistance" "8" "CrosshairDeltaDistance" "3" "BuiltRightHanded" "1" "PlayerAnimationExtension" "awp" "MuzzleFlashScale" "1.6" "MuzzleFlashStyle" "CS_MUZZLEFLASH_X" "CanEquipWithShield" "0" "Rumble" "2" // Weapon characteristics: "PenetrationNumLayers" "20" "PenetrationPower" "100" "PenetrationMaxDistance" "1750" // none "CharacterPenetrationMaxDistance" "8192" // Shooting through infected is doesn't count against penetration count out to this range "Damage" "400" "Range" "8192" "RangeModifier" "0.99" "Bullets" "1" "CycleTime" "1" "AccuracyDivisor" "-1" "AccuracyOffset" "0" "MaxInaccuracy" "0" "TimeToIdle" "2" "IdleInterval" "60" // Weapon data is loaded by both the Game and Client DLLs. "printname" "Sniper AWP" "playermodel" "models/w_models/weapons/w_sniper_awp.mdl" "viewmodel" "models/v_models/v_snip_awp.mdl" "CharacterViewmodelAddon" { "Coach" "models/weapons/arms/v_arms_coach_new.mdl" "Mechanic" "models/weapons/arms/v_arms_mechanic_new.mdl" "Producer" "models/weapons/arms/v_arms_producer_new.mdl" "Gambler" "models/weapons/arms/v_arms_gambler_new.mdl" "Manager" "models/weapons/arms/v_arms_louis.mdl" "Biker" "models/weapons/arms/v_arms_francis.mdl" "TeenGirl" "models/weapons/arms/v_arms_zoey.mdl" "NamVet" "models/weapons/arms/v_arms_bill.mdl" } "anim_prefix" "anim" "bucket" "0" "bucket_position" "0" "clip_size" "10" "primary_ammo" "AMMO_TYPE_AUTOSHOTGUN" "secondary_ammo" "None" "weight" "20" "item_flags" "0" "LoadoutSlots" "2" // Sounds for the weapon. There is a max of 16 sounds per category (i.e. max 16 "single_shot" sounds) SoundData { "single_shot" "Weapon_AWP.Single" "special3" "CS_Default.Zoom" "shoot_incendiary" "Sniper_Military.FireIncendiary" } // Weapon Sprite data is loaded by the Client DLL. TextureData { "weapon" { "file" "vgui/hud/iconsheet3" "x" "192" "y" "64" "width" "192" "height" "64" } "ammo" { "file" "vgui/hud/iconsheet" "x" "384" "y" "448" "width" "64" "height" "64" } "crosshair" { "file" "sprites/crosshairs" "x" "0" "y" "48" "width" "24" "height" "24" } "autoaim" { "file" "sprites/crosshairs" "x" "0" "y" "48" "width" "24" "height" "24" } } ModelBounds { Viewmodel { Mins "-3 -3 -12" Maxs "40 14 -1" } World { Mins "-7 -8 -3" Maxs "32 9 9" } } } WeaponData { // Terror-specific Data -------------------- "VerticalPunch" "7" "SpreadPerShot" "15" //reduced from 30 "MaxSpread" "15" "SpreadDecay" "7" "MinDuckingSpread" "0" "MinStandingSpread" "0.8" "MinInAirSpread" "6" //increased accuracy "MaxMovementSpread" "3" //increased accuracy "PelletScatterPitch" "2" //increased accuracy "PelletScatterYaw" "3.5" //decreased accuracy "ReloadDuration" "0.396" "AddonAttachment" "primary" "team" "survivor" "Tier" "2" // valid entries are 0, 1, 2 "ResponseRulesName" "AutoShotgun" // particle muzzle flash effect to play when fired "MuzzleFlashEffect_1stPerson" "weapon_muzzle_flash_shotgun_FP" "MuzzleFlashEffect_3rdPerson" "weapon_muzzle_flash_autoshotgun" // model for the shell casing to eject when we fire bullets "EjectBrassEffect" "weapon_shell_casing_shotgun" // Used in the music system when this weapon fires "MusicDynamicSpeed" "1.5" "DisplayName" "#L4D_Weapon_AutoShotgun" "DisplayNameAllCaps" "#L4D_Weapon_AutoShotgun_CAPS" // 360 Terror Data "MaxAutoAimDeflection1" "10.0" "MaxAutoAimRange1" "0" //This value determins how "big" a target is for auto aim. If a target is 10.0 units big then it is considered 10.0*scale. //You can think about this value controlling a falloff value on distant targets, the smaller the value the harder it is to hit at a distance. "WeaponAutoAimScale" "1.0" // End Terror-specific Data ---------------- "Rumble" "5" "MaxPlayerSpeed" "220" "WeaponType" "shotgun" "WeaponPrice" "3000" "WeaponArmorRatio" "1.0" "CrosshairMinDistance" "9" "CrosshairDeltaDistance" "4" "Team" "ANY" "BuiltRightHanded" "1" "PlayerAnimationExtension" "xm1014" "MuzzleFlashScale" "1.3" "CanEquipWithShield" "0" // Weapon characteristics: "PenetrationNumLayers" "1" "PenetrationPower" "30" "PenetrationMaxDistance" "500" "CharacterPenetrationMaxDistance" "300" // Shooting through infected is doesn't count against penetration count out to this range "Damage" "70" "Range" "3000" "RangeModifier" "0.3" "Bullets" "9" "CycleTime" "0.01" // Weapon data is loaded by both the Game and Client DLLs. "printname" "Auto Shotgun" "playermodel" "models/w_models/weapons/w_autoshot_m4super.mdl" "viewmodel" "models/v_models/v_autoshotgun.mdl" "CharacterViewmodelAddon" { "Coach" "models/weapons/arms/v_arms_coach_new.mdl" "Mechanic" "models/weapons/arms/v_arms_mechanic_new.mdl" "Producer" "models/weapons/arms/v_arms_producer_new.mdl" "Gambler" "models/weapons/arms/v_arms_gambler_new.mdl" "Manager" "models/weapons/arms/v_arms_louis.mdl" "Biker" "models/weapons/arms/v_arms_francis.mdl" "TeenGirl" "models/weapons/arms/v_arms_zoey.mdl" "NamVet" "models/weapons/arms/v_arms_bill.mdl" } "anim_prefix" "anim" "bucket" "0" "bucket_position" "0" "clip_size" "8" //increased from 9 "primary_ammo" "AMMO_TYPE_AUTOSHOTGUN" "secondary_ammo" "None" "weight" "20" "item_flags" "0" "LoadoutSlots" "2" // Sounds for the weapon. There is a max of 16 sounds per category (i.e. max 16 "single_shot" sounds) SoundData { "single_shot" "AutoShotgun.Fire" "shoot_incendiary" "AutoShotgun.FireIncendiary" } // Weapon Sprite data is loaded by the Client DLL. TextureData { "weapon" { "file" "vgui/hud/iconsheet" "x" "0" "y" "448" "width" "192" "height" "64" } "ammo" { "file" "vgui/hud/iconsheet2" "x" "0" "y" "128" "width" "64" "height" "64" } "crosshair" { "file" "sprites/crosshairs" "x" "0" "y" "48" "width" "24" "height" "24" } "autoaim" { "file" "sprites/crosshairs" "x" "0" "y" "48" "width" "24" "height" "24" } } ModelBounds { Viewmodel { Mins "-13 -3 -11" Maxs "29 10 0" } World { Mins "-4 -8 -4" Maxs "30 8 6" } } } WeaponData { // Terror-specific Data -------------------- "VerticalPunch" "2.0" "SpreadPerShot" "1" "MaxSpread" "15" "SpreadDecay" "15" "MinDuckingSpread" "0.4" "MinStandingSpread" "1" "MinInAirSpread" "10" "MaxMovementSpread" "3" "DeployDuration" "0.5" "DualDeployDuration" "0.5" "AddonAttachment" "pistol" "Team" "Survivor" "addon_offset" "0 0 0" "addon_angles" "0 0 0" "Tier" "0" // valid entries are 0, 1, 2 "ResponseRulesName" "SecondPistol" // particle muzzle flash effect to play when fired "MuzzleFlashEffect_1stPerson" "weapon_muzzle_flash_pistol_FP" "MuzzleFlashEffect_3rdPerson" "weapon_muzzle_flash_pistol" // model for the shell casing to eject when we fire bullets "EjectBrassEffect" "weapon_shell_casing_9mm" // Used in the music system when this weapon fires "MusicDynamicSpeed" "0.8" "DisplayName" "#L4D_Weapon_Pistol" "DisplayNameAllCaps" "#L4D_Weapon_Pistol_CAPS" // 360 Terror Data "MaxAutoAimDeflection1" "10.0" "MaxAutoAimRange1" "0" //This value determins how "big" a target is for auto aim. If a target is 10.0 units big then it is considered 10.0*scale. //You can think about this value controlling a falloff value on distant targets, the smaller the value the harder it is to hit at a distance. "WeaponAutoAimScale" "1.0" // End Terror-specific Data ---------------- "MaxPlayerSpeed" "250" "WeaponType" "pistol" "WeaponPrice" "500" "WeaponArmorRatio" "1.0" "CrosshairMinDistance" "8" "CrosshairDeltaDistance" "3" "BuiltRightHanded" "1" "PlayerAnimationExtension" "pistol" "MuzzleFlashScale" "1" "CanEquipWithShield" "1" "Rumble" "1" // Weapon characteristics: "PenetrationNumLayers" "1" "PenetrationPower" "50" "PenetrationMaxDistance" "600" // none "Damage" "70" "Range" "3000" "RangeModifier" "0.45" "Bullets" "1" "CycleTime" "0.0875" "CycleTime" "0.0875" // Weapon data is loaded by both the Game and Client DLLs. "printname" "Pistol" "playermodel" "models/w_models/weapons/w_pistol_A.mdl" "playermodel_dual" "models/w_models/weapons/w_pistol_A_dual.mdl" "worldmodel" "models/w_models/weapons/w_pistol_B.mdl" "viewmodel" "models/v_models/v_pistolA.mdl" "viewmodel_dual" "models/v_models/v_dual_pistolA.mdl" "CharacterViewmodelAddon" { "Coach" "models/weapons/arms/v_arms_coach_new.mdl" "Mechanic" "models/weapons/arms/v_arms_mechanic_new.mdl" "Producer" "models/weapons/arms/v_arms_producer_new.mdl" "Gambler" "models/weapons/arms/v_arms_gambler_new.mdl" "Manager" "models/weapons/arms/v_arms_louis.mdl" "Biker" "models/weapons/arms/v_arms_francis.mdl" "TeenGirl" "models/weapons/arms/v_arms_zoey.mdl" "NamVet" "models/weapons/arms/v_arms_bill.mdl" } "anim_prefix" "anim" "bucket" "1" "bucket_position" "0" "clip_size" "20" "primary_ammo" "AMMO_TYPE_PISTOL" "secondary_ammo" "None" "weight" "5" "item_flags" "0" // Sounds for the weapon. There is a max of 16 sounds per category (i.e. max 16 "single_shot" sounds) SoundData { "single_shot" "Pistol.Fire" "double_shot" "Pistol.DualFire" } // Weapon Sprite data is loaded by the Client DLL. TextureData { "weapon" { "file" "vgui/hud/iconsheet" "x" "256" "y" "320" "width" "64" "height" "64" } "weapon_dual" { "file" "vgui/hud/iconsheet" "x" "192" "y" "320" "width" "64" "height" "64" } "ammo" { "font" "DebugFixed" "character" "A" } "crosshair" { "file" "sprites/crosshairs" "x" "0" "y" "48" "width" "24" "height" "24" } "autoaim" { "file" "sprites/crosshairs" "x" "0" "y" "48" "width" "24" "height" "24" } } ModelBounds { Viewmodel { Mins "-7 -4 -14" Maxs "24 9 -2" } World { Mins "-1 -4 -3" Maxs "17 5 6" } } } WeaponData { // Terror-specific Data -------------------- "VerticalPunch" "1" "SpreadPerShot" "0.8" "MaxSpread" "20" "SpreadDecay" "10" "MinDuckingSpread" "0.5" "MinStandingSpread" "1" "MinInAirSpread" "5" "MaxMovementSpread" "5" "AddonAttachment" "primary" "Team" "Survivor" "Tier" "1" // valid entries are 0, 1, 2 "ResponseRulesName" "SMG" // particle muzzle flash effect to play when fired "MuzzleFlashEffect_1stPerson" "weapon_muzzle_flash_smg_FP" "MuzzleFlashEffect_3rdPerson" "weapon_muzzle_flash_smg" // model for the shell casing to eject when we fire bullets "EjectBrassEffect" "weapon_shell_casing_9mm" // Used in the music system when this weapon fires "MusicDynamicSpeed" "0.3" "DisplayName" "#L4D_Weapon_SMG" "DisplayNameAllCaps" "#L4D_Weapon_SMG_CAPS" // 360 Terror Data "MaxAutoAimDeflection1" "10.0" "MaxAutoAimRange1" "0" //This value determins how "big" a target is for auto aim. If a target is 10.0 units big then it is considered 10.0*scale. //You can think about this value controlling a falloff value on distant targets, the smaller the value the harder it is to hit at a distance. "WeaponAutoAimScale" "1.0" // End Terror-specific Data ---------------- "Rumble" "3" "MaxPlayerSpeed" "250" "WeaponType" "smg" "WeaponPrice" "1500" "WeaponArmorRatio" "1.0" "CrosshairMinDistance" "6" "CrosshairDeltaDistance" "2" "BuiltRightHanded" "1" "PlayerAnimationExtension" "mp5" "MuzzleFlashScale" "1.1" "CanEquipWithShield" "0" // Weapon characteristics: "PenetrationNumLayers" "2" "PenetrationPower" "50" "PenetrationMaxDistance" "0" // none "Damage" "70" "Range" "2500" "RangeModifier" "0.5" "Bullets" "1" "CycleTime" "0.1" "TimeToIdle" "2" "IdleInterval" "20" // Weapon data is loaded by both the Game and Client DLLs. "printname" "SMG" "playermodel" "models/w_models/weapons/w_smg_uzi.mdl" "viewmodel" "models/v_models/v_smg.mdl" "CharacterViewmodelAddon" { "Coach" "models/weapons/arms/v_arms_coach_new.mdl" "Mechanic" "models/weapons/arms/v_arms_mechanic_new.mdl" "Producer" "models/weapons/arms/v_arms_producer_new.mdl" "Gambler" "models/weapons/arms/v_arms_gambler_new.mdl" "Manager" "models/weapons/arms/v_arms_louis.mdl" "Biker" "models/weapons/arms/v_arms_francis.mdl" "TeenGirl" "models/weapons/arms/v_arms_zoey.mdl" "NamVet" "models/weapons/arms/v_arms_bill.mdl" } "anim_prefix" "anim" "bucket" "0" "bucket_position" "0" "clip_size" "32" "primary_ammo" "AMMO_TYPE_SMG" "secondary_ammo" "None" "weight" "25" "item_flags" "0" // Sounds for the weapon. There is a max of 16 sounds per category (i.e. max 16 "single_shot" sounds) SoundData { "single_shot" "SMG.Fire" "shoot_incendiary" "SMG.FireIncendiary" } // Weapon Sprite data is loaded by the Client DLL. TextureData { "weapon" { "file" "vgui/hud/iconsheet" "x" "0" "y" "384" "width" "128" "height" "64" } "ammo" { "file" "vgui/hud/iconsheet" "x" "384" "y" "448" "width" "64" "height" "64" } "crosshair" { "file" "sprites/crosshairs" "x" "0" "y" "48" "width" "24" "height" "24" } "autoaim" { "file" "sprites/crosshairs" "x" "0" "y" "48" "width" "24" "height" "24" } } ModelBounds { Viewmodel { Mins "-10 -4 -13" Maxs "21 9 -1" } World { Mins "-10 -7 -6" Maxs "22 8 9" } } } WeaponData { // Terror-specific Data -------------------- "VerticalPunch" "1" "SpreadPerShot" "0.9" "MaxSpread" "20" "SpreadDecay" "9" "MinDuckingSpread" "0.5" "MinStandingSpread" "1" "MinInAirSpread" "5" "MaxMovementSpread" "5" "AddonAttachment" "primary" "Team" "Survivor" "NoiseFactor" "20" // 1 second glow after firing "Tier" "1" // valid entries are 0, 1, 2 "ResponseRulesName" "SMG_Silenced" // particle muzzle flash effect to play when fired "MuzzleFlashEffect_1stPerson" "weapon_muzzle_flash_smg_silenced_FP" "MuzzleFlashEffect_3rdPerson" "weapon_muzzle_flash_smg" // model for the shell casing to eject when we fire bullets "EjectBrassEffect" "weapon_shell_casing_9mm" // Used in the music system when this weapon fires "MusicDynamicSpeed" "0.3" "DisplayName" "#L4D_Weapon_MicroUZI" "DisplayNameAllCaps" "#L4D_Weapon_MicroUZI_CAPS" "NewInL4D2" "1" // 360 Terror Data "MaxAutoAimDeflection1" "10.0" "MaxAutoAimRange1" "0" //This value determins how "big" a target is for auto aim. If a target is 10.0 units big then it is considered 10.0*scale. //You can think about this value controlling a falloff value on distant targets, the smaller the value the harder it is to hit at a distance. "WeaponAutoAimScale" "1.0" // End Terror-specific Data ---------------- "Rumble" "3" "MaxPlayerSpeed" "250" "WeaponType" "smg" "WeaponPrice" "1500" "WeaponArmorRatio" "1.0" "CrosshairMinDistance" "6" "CrosshairDeltaDistance" "2" "BuiltRightHanded" "1" "PlayerAnimationExtension" "mp5" "MuzzleFlashScale" "1.1" "CanEquipWithShield" "0" // Weapon characteristics: "PenetrationNumLayers" "3" "PenetrationPower" "60" "PenetrationMaxDistance" "0" // none "Damage" "50" "GainRange" "900" "Range" "2200" "RangeModifier" "0.5" "Bullets" "1" "CycleTime" "0.055" "TimeToIdle" "2" "IdleInterval" "20" // Weapon data is loaded by both the Game and Client DLLs. "printname" "SMG" "playermodel" "models/w_models/weapons/w_smg_a.mdl" "viewmodel" "models/v_models/v_silenced_smg.mdl" "CharacterViewmodelAddon" { "Coach" "models/weapons/arms/v_arms_coach_new.mdl" "Mechanic" "models/weapons/arms/v_arms_mechanic_new.mdl" "Producer" "models/weapons/arms/v_arms_producer_new.mdl" "Gambler" "models/weapons/arms/v_arms_gambler_new.mdl" "Manager" "models/weapons/arms/v_arms_louis.mdl" "Biker" "models/weapons/arms/v_arms_francis.mdl" "TeenGirl" "models/weapons/arms/v_arms_zoey.mdl" "NamVet" "models/weapons/arms/v_arms_bill.mdl" } "anim_prefix" "anim" "bucket" "0" "bucket_position" "0" "clip_size" "50" "primary_ammo" "AMMO_TYPE_SMG" "secondary_ammo" "None" "weight" "25" "item_flags" "0" // Sounds for the weapon. There is a max of 16 sounds per category (i.e. max 16 "single_shot" sounds) SoundData { "single_shot" "SMG_Silenced.Fire" "shoot_incendiary" "SMG_Silenced.FireIncendiary" } // Weapon Sprite data is loaded by the Client DLL. TextureData { "weapon" { "file" "vgui/hud/iconsheet2" "x" "256" "y" "0" "width" "128" "height" "64" } "ammo" { "file" "vgui/hud/iconsheet" "x" "384" "y" "448" "width" "64" "height" "64" } "crosshair" { "file" "sprites/crosshairs" "x" "0" "y" "48" "width" "24" "height" "24" } "autoaim" { "file" "sprites/crosshairs" "x" "0" "y" "48" "width" "24" "height" "24" } } ModelBounds { Viewmodel { Mins "-10 -4 -13" Maxs "21 9 -1" } World { Mins "-10 -7 -6" Maxs "22 8 9" } } }