From e79a58640e1ef1ea1c3c954aefccd36c3cb55286 Mon Sep 17 00:00:00 2001 From: BobTheBob <32057864+BobTheBob9@users.noreply.github.com> Date: Wed, 20 Oct 2021 20:11:43 +0100 Subject: automatic mod enable/disable, refactors and item registration callbacks --- .../mod/scripts/vscripts/_bleedout_damage.gnut | 137 ----- .../mod/scripts/vscripts/_custom_air_accel.gnut | 25 - .../mod/scripts/vscripts/_custom_oob_timer.gnut | 7 - .../mod/scripts/vscripts/_promode.gnut | 25 - .../scripts/vscripts/gamemodes/_gamemode_gg.gnut | 4 + .../scripts/vscripts/gamemodes/_gamemode_sbox.gnut | 49 -- .../scripts/vscripts/gamemodes/_riff_instagib.gnut | 65 --- .../vscripts/gamemodes/sh_gamemode_sbox.gnut | 20 - .../vscripts/gamemodes/sh_riff_instagib.gnut | 73 +++ .../vscripts/northstar_custom_autoprecache.gnut | 14 - .../scripts/vscripts/rodeo/sh_classic_rodeo.gnut | 13 +- .../mod/scripts/vscripts/sh_bleedout_damage.gnut | 137 +++++ .../mod/scripts/vscripts/sh_custom_air_accel.gnut | 25 + .../mod/scripts/vscripts/sh_custom_oob_timer.gnut | 7 + .../vscripts/sh_northstar_custom_precache.gnut | 11 + .../mod/scripts/vscripts/sh_promode.gnut | 25 + .../scripts/vscripts/weapons/mp_weapon_toolgun.nut | 39 -- .../weapons/toolgun/sh_toolgun_tool_explode.nut | 30 -- .../weapons/toolgun/sh_toolgun_tool_throw.nut | 24 - .../vscripts/weapons/toolgun/sh_toolgun_tools.gnut | 196 ------- .../scripts/weapons/melee_pilot_emptyhanded.txt | 149 ------ .../mod/scripts/weapons/mp_weapon_toolgun.txt | 587 --------------------- 22 files changed, 290 insertions(+), 1372 deletions(-) delete mode 100644 Northstar.Custom/mod/scripts/vscripts/_bleedout_damage.gnut delete mode 100644 Northstar.Custom/mod/scripts/vscripts/_custom_air_accel.gnut delete mode 100644 Northstar.Custom/mod/scripts/vscripts/_custom_oob_timer.gnut delete mode 100644 Northstar.Custom/mod/scripts/vscripts/_promode.gnut delete mode 100644 Northstar.Custom/mod/scripts/vscripts/gamemodes/_gamemode_sbox.gnut delete mode 100644 Northstar.Custom/mod/scripts/vscripts/gamemodes/_riff_instagib.gnut delete mode 100644 Northstar.Custom/mod/scripts/vscripts/gamemodes/sh_gamemode_sbox.gnut create mode 100644 Northstar.Custom/mod/scripts/vscripts/gamemodes/sh_riff_instagib.gnut delete mode 100644 Northstar.Custom/mod/scripts/vscripts/northstar_custom_autoprecache.gnut create mode 100644 Northstar.Custom/mod/scripts/vscripts/sh_bleedout_damage.gnut create mode 100644 Northstar.Custom/mod/scripts/vscripts/sh_custom_air_accel.gnut create mode 100644 Northstar.Custom/mod/scripts/vscripts/sh_custom_oob_timer.gnut create mode 100644 Northstar.Custom/mod/scripts/vscripts/sh_northstar_custom_precache.gnut create mode 100644 Northstar.Custom/mod/scripts/vscripts/sh_promode.gnut delete mode 100644 Northstar.Custom/mod/scripts/vscripts/weapons/mp_weapon_toolgun.nut delete mode 100644 Northstar.Custom/mod/scripts/vscripts/weapons/toolgun/sh_toolgun_tool_explode.nut delete mode 100644 Northstar.Custom/mod/scripts/vscripts/weapons/toolgun/sh_toolgun_tool_throw.nut delete mode 100644 Northstar.Custom/mod/scripts/vscripts/weapons/toolgun/sh_toolgun_tools.gnut delete mode 100644 Northstar.Custom/mod/scripts/weapons/melee_pilot_emptyhanded.txt delete mode 100644 Northstar.Custom/mod/scripts/weapons/mp_weapon_toolgun.txt (limited to 'Northstar.Custom/mod') diff --git a/Northstar.Custom/mod/scripts/vscripts/_bleedout_damage.gnut b/Northstar.Custom/mod/scripts/vscripts/_bleedout_damage.gnut deleted file mode 100644 index 8b21184ad..000000000 --- a/Northstar.Custom/mod/scripts/vscripts/_bleedout_damage.gnut +++ /dev/null @@ -1,137 +0,0 @@ -// note: this is technically vanilla content, since bleedout was shipped with retail, but it needs custom remote functions which would break vanilla compatiblity, so it's not in Northstar.CustomServers -// idk why bleedout was even shipped in retail lmao -global function BleedoutDamage_PreInit -global function BleedoutDamage_Init -global function SetShouldPlayerStartBleedoutFunc - -struct { - array bleedingPlayers // this is in _bleedout already, but it doesn't expose a way to track it, so we have to track it ourselves - bool functionref( entity, var ) shouldPlayerStartBleedoutFunc = null -} file - -void function BleedoutDamage_PreInit() -{ - AddCallback_OnRegisteringCustomNetworkVars( Bleedout_RegisterRemoteFunctions ) -} - -void function Bleedout_RegisterRemoteFunctions() -{ - Remote_RegisterFunction( "ServerCallback_BLEEDOUT_StartFirstAidProgressBar" ) - Remote_RegisterFunction( "ServerCallback_BLEEDOUT_StopFirstAidProgressBar" ) - Remote_RegisterFunction( "ServerCallback_BLEEDOUT_ShowWoundedMarker" ) - Remote_RegisterFunction( "ServerCallback_BLEEDOUT_HideWoundedMarker" ) -} - -// copied from sh_bleedout -const float DEFAULT_BLEEDOUT_TIME = 30.0 -const float DEFAULT_FIRSTAID_TIME = 3.0 -const float DEFAULT_FIRSTAID_TIME_SELF = -1.0 -const float DEFAULT_FIRSTAID_HEAL_PERCENT = 1.0 -const float DEFAULT_AI_BLEEDING_PLAYER_MISS_CHANCE = 0.0 -const bool DEFAULT_FORCE_WEAPON_HOLSTER = false -const bool DEFAULT_DEATH_ON_TEAM_BLEEDOUT = false - -void function BleedoutDamage_Init() -{ - AddPrivateMatchModeSettingEnum( "#MODE_SETTING_CATEGORY_BLEEDOUT", "riff_player_bleedout", [ "Default", "Disabled", "Enabled" ], "0" ) - AddPrivateMatchModeSettingEnum( "#MODE_SETTING_CATEGORY_BLEEDOUT", "player_bleedout_forceHolster", [ "Disabled", "Enabled" ], DEFAULT_FORCE_WEAPON_HOLSTER.tostring() ) - AddPrivateMatchModeSettingEnum( "#MODE_SETTING_CATEGORY_BLEEDOUT", "player_bleedout_forceDeathOnTeamBleedout", [ "Disabled", "Enabled" ], DEFAULT_DEATH_ON_TEAM_BLEEDOUT.tostring() ) - AddPrivateMatchModeSettingArbitrary( "#MODE_SETTING_CATEGORY_BLEEDOUT", "player_bleedout_bleedoutTime", DEFAULT_BLEEDOUT_TIME.tostring() ) - AddPrivateMatchModeSettingArbitrary( "#MODE_SETTING_CATEGORY_BLEEDOUT", "player_bleedout_firstAidTime", DEFAULT_FIRSTAID_TIME.tostring() ) - AddPrivateMatchModeSettingArbitrary( "#MODE_SETTING_CATEGORY_BLEEDOUT", "player_bleedout_firstAidTimeSelf", DEFAULT_FIRSTAID_TIME_SELF.tostring() ) - AddPrivateMatchModeSettingArbitrary( "#MODE_SETTING_CATEGORY_BLEEDOUT", "player_bleedout_firstAidHealPercent", DEFAULT_FIRSTAID_HEAL_PERCENT.tostring() ) - AddPrivateMatchModeSettingArbitrary( "#MODE_SETTING_CATEGORY_BLEEDOUT", "player_bleedout_aiBleedingPlayerMissChance", DEFAULT_AI_BLEEDING_PLAYER_MISS_CHANCE.tostring() ) - - #if CLIENT - // because playlist var overrides fucking suck, they aren't actually updated by this point - // client bleedout can be inited late enough that we can just init it on local player spawn - AddCallback_LocalClientPlayerSpawned( InitClientBleedoutForLocalPlayer ) - #elseif SERVER - // sh_riff_settings should set this correctly on server - if ( !Riff_PlayerBleedout() ) - return - - AddDamageCallback( "player", HandleDamageForBleedout ) // do this irregardless of whether scripts inited, given it should always be used for bleedout - Bleedout_SetCallback_OnPlayerStartBleedout( OnPlayerBleedoutBegin ) // kinda sucks we have to use this callback since game scripts could be using it - - // dont init if scripts already inited it manually - if ( !Bleedout_IsBleedoutLogicActive() ) - { - InitSharedBleedoutWithPlaylistVars() - Bleedout_Init() - } - #endif -} - -void function SetShouldPlayerStartBleedoutFunc( bool functionref( entity, var ) func ) -{ - file.shouldPlayerStartBleedoutFunc = func -} - -void function InitSharedBleedoutWithPlaylistVars() -{ - BleedoutShared_Init( - GetCurrentPlaylistVarFloat( "player_bleedout_bleedoutTime", DEFAULT_BLEEDOUT_TIME ), - GetCurrentPlaylistVarFloat( "player_bleedout_firstAidTime", DEFAULT_FIRSTAID_TIME ), - GetCurrentPlaylistVarFloat( "player_bleedout_firstAidTimeSelf", DEFAULT_FIRSTAID_TIME_SELF ), - GetCurrentPlaylistVarFloat( "player_bleedout_firstAidHealPercent", DEFAULT_FIRSTAID_HEAL_PERCENT ), - GetCurrentPlaylistVarFloat( "player_bleedout_aiBleedingPlayerMissChance", DEFAULT_AI_BLEEDING_PLAYER_MISS_CHANCE ), - GetCurrentPlaylistVarInt( "player_bleedout_forceHolster", int( DEFAULT_FORCE_WEAPON_HOLSTER ) ) == 1, - GetCurrentPlaylistVarInt( "player_bleedout_forceDeathOnTeamBleedout", int( DEFAULT_DEATH_ON_TEAM_BLEEDOUT ) ) == 1 - ) -} - -#if CLIENT -void function InitClientBleedoutForLocalPlayer( entity player ) -{ - // dont init if bleedout is disabled or scripts already inited it - if ( !Riff_PlayerBleedout() || Bleedout_IsBleedoutLogicActive() ) - return - - InitSharedBleedoutWithPlaylistVars() - BleedoutClient_Init() -} -#endif - -#if SERVER -void function HandleDamageForBleedout( entity player, var damageInfo ) -{ - if ( IsInstantDeath( damageInfo ) || DamageInfo_GetForceKill( damageInfo ) || player.IsTitan() || file.bleedingPlayers.contains( player ) ) - return - - if ( file.shouldPlayerStartBleedoutFunc != null ) - if ( !file.shouldPlayerStartBleedoutFunc( player, damageInfo ) ) - return - - // check if damage would kill player - if ( player.GetHealth() - DamageInfo_GetDamage( damageInfo ) <= 0 ) - { - Bleedout_StartPlayerBleedout( player, DamageInfo_GetAttacker( damageInfo ) ) - DamageInfo_SetDamage( damageInfo, 1 ) // prevent player from dying, but if we set it to 0, player won't receive any knockback from damage source - } -} - -void function OnPlayerBleedoutBegin( entity player ) -{ - file.bleedingPlayers.append( player ) - - // would prefer to use Bleedout_SetCallback_OnPlayerGiveFirstAid for this, but it doesn't expose the player that's receiving first aid for some reason - thread TrackPlayerBleedout( player ) -} - -void function TrackPlayerBleedout( entity player ) -{ - player.EndSignal( "OnDeath" ) - player.EndSignal( "OnDestroy" ) - - OnThreadEnd( function() : ( player ) - { - file.bleedingPlayers.remove( file.bleedingPlayers.find( player ) ) - }) - - WaitFrame() // wait a frame, since this gets called before this status effect is added - - while ( StatusEffect_Get( player, eStatusEffect.bleedoutDOF ) != 0 ) - WaitFrame() -} -#endif \ No newline at end of file diff --git a/Northstar.Custom/mod/scripts/vscripts/_custom_air_accel.gnut b/Northstar.Custom/mod/scripts/vscripts/_custom_air_accel.gnut deleted file mode 100644 index faa924804..000000000 --- a/Northstar.Custom/mod/scripts/vscripts/_custom_air_accel.gnut +++ /dev/null @@ -1,25 +0,0 @@ -global function CustomAirAccelVars_Init - -void function CustomAirAccelVars_Init() -{ - #if MP - AddPrivateMatchModeSettingArbitrary( "#MODE_SETTING_CATEGORY_PILOT", "custom_air_accel_pilot", "500" ) // 500 is the default airaccel - #endif - - #if SERVER - AddCallback_OnPlayerRespawned( ApplyCustomPlayerAirAccel ) - AddCallback_OnPilotBecomesTitan( ApplyCustomPlayerAirAccelFromTitan ) // not sure if necessary but assuming it is - #endif -} - -#if SERVER -void function ApplyCustomPlayerAirAccel( entity player ) -{ - player.kv.airAcceleration = GetCurrentPlaylistVarInt( "custom_air_accel_pilot", int( player.GetPlayerSettingsField( "airAcceleration" ) ) ) -} - -void function ApplyCustomPlayerAirAccelFromTitan( entity player, entity titan ) -{ - player.kv.airAcceleration = GetCurrentPlaylistVarInt( "custom_air_accel_pilot", int( player.GetPlayerSettingsField( "airAcceleration" ) ) ) -} -#endif \ No newline at end of file diff --git a/Northstar.Custom/mod/scripts/vscripts/_custom_oob_timer.gnut b/Northstar.Custom/mod/scripts/vscripts/_custom_oob_timer.gnut deleted file mode 100644 index 9689302c1..000000000 --- a/Northstar.Custom/mod/scripts/vscripts/_custom_oob_timer.gnut +++ /dev/null @@ -1,7 +0,0 @@ -global function CustomOOBTimer_Init - -void function CustomOOBTimer_Init() -{ - AddPrivateMatchModeSettingEnum( "#MODE_SETTING_CATEGORY_MATCH", "oob_timer_enabled", [ "Disabled", "Enabled" ], "1" ) - level.disableOutOfBounds <- GetCurrentPlaylistVarInt( "oob_timer_enabled", 1 ) == 0 -} \ No newline at end of file diff --git a/Northstar.Custom/mod/scripts/vscripts/_promode.gnut b/Northstar.Custom/mod/scripts/vscripts/_promode.gnut deleted file mode 100644 index f390fed60..000000000 --- a/Northstar.Custom/mod/scripts/vscripts/_promode.gnut +++ /dev/null @@ -1,25 +0,0 @@ -untyped -global function Promode_Init -global function PromodeEnabled - -void function Promode_Init() -{ - AddPrivateMatchModeSettingEnum( "#MODE_SETTING_CATEGORY_PROMODE", "promode_enable", [ "Disabled", "Enabled" ], "0" ) - - #if SERVER - AddCallback_OnPlayerRespawned( GivePromodeWeaponMod ) - #endif -} - -bool function PromodeEnabled() -{ - return GetCurrentPlaylistVarInt( "promode_enable", 0 ) == 1 -} - -#if SERVER -void function GivePromodeWeaponMod( entity player ) -{ - if ( PromodeEnabled() ) - player.GiveExtraWeaponMod( "promode" ) -} -#endif \ No newline at end of file diff --git a/Northstar.Custom/mod/scripts/vscripts/gamemodes/_gamemode_gg.gnut b/Northstar.Custom/mod/scripts/vscripts/gamemodes/_gamemode_gg.gnut index e01780347..8c68f5543 100644 --- a/Northstar.Custom/mod/scripts/vscripts/gamemodes/_gamemode_gg.gnut +++ b/Northstar.Custom/mod/scripts/vscripts/gamemodes/_gamemode_gg.gnut @@ -15,6 +15,10 @@ void function GamemodeGG_Init() AddCallback_OnPlayerKilled( OnPlayerKilled ) AddCallback_GameStateEnter( eGameState.WinnerDetermined, OnWinnerDetermined ) + + // set scorelimit if it's wrongm sort of a jank way to do it but best i've got rn + if ( GetCurrentPlaylistVarInt( "scorelimit", GetGunGameWeapons().len() ) != GetGunGameWeapons().len() ) + SetPlaylistVarOverride( "scorelimit", GetGunGameWeapons().len().tostring() ) } void function OnPlayerRespawned( entity player ) diff --git a/Northstar.Custom/mod/scripts/vscripts/gamemodes/_gamemode_sbox.gnut b/Northstar.Custom/mod/scripts/vscripts/gamemodes/_gamemode_sbox.gnut deleted file mode 100644 index 27581aeac..000000000 --- a/Northstar.Custom/mod/scripts/vscripts/gamemodes/_gamemode_sbox.gnut +++ /dev/null @@ -1,49 +0,0 @@ -untyped -global function GamemodeSbox_Init - -struct { - array spawnpoints -} file - -void function GamemodeSbox_Init() -{ - SetConVarInt( "sv_cheats", 1 ) // cheats on by default - - // cache spawnpoints - //file.spawnpoints = GetEntArrayByClass_Expensive( "info_spawnpoint_human" ) - // todo just use a spawn callback for this rather than weird late cache in spawn - - AddCallback_OnClientConnected( SboxSpawnPlayer ) - AddDeathCallback( "player", SboxRespawnPlayer ) -} - -void function SboxSpawnPlayer( entity player ) -{ - if ( player.GetPlayerSettings() == "spectator" ) // if they haven't spawned yet - player.SetPlayerSettings( "pilot_grapple_male" ) - - if ( file.spawnpoints.len() == 0 ) // have to cache late rather than on init due to spawnpoints not existing in init - file.spawnpoints = GetEntArrayByClass_Expensive( "info_spawnpoint_human" ) - - if ( GetGameState() != eGameState.Playing ) // hacky but can't set this in init either - SetGameState( eGameState.Playing ) - - entity spawnpoint = file.spawnpoints[ RandomInt( file.spawnpoints.len() ) ] - - ScreenFadeFromBlack( player, 0.0, 0.0 ) // HACK before non-classicmp intros are ready, remove the blackscreen we get from waitingforplayers - player.RespawnPlayer( spawnpoint ) - player.GiveWeapon( "mp_weapon_toolgun" ) -} - -void function SboxRespawnPlayer( entity player, var damageInfo ) -{ - thread SboxRespawnPlayerThreaded( player ) -} - -void function SboxRespawnPlayerThreaded( entity player ) -{ - // todo: replace this with real respawn logic when that's ready - - wait 2.5 - SboxSpawnPlayer( player ) -} \ No newline at end of file diff --git a/Northstar.Custom/mod/scripts/vscripts/gamemodes/_riff_instagib.gnut b/Northstar.Custom/mod/scripts/vscripts/gamemodes/_riff_instagib.gnut deleted file mode 100644 index b3868359e..000000000 --- a/Northstar.Custom/mod/scripts/vscripts/gamemodes/_riff_instagib.gnut +++ /dev/null @@ -1,65 +0,0 @@ -global function RiffInstagib_Init - -struct { - table playerWeapons - array instagibWeapons -} file - -void function RiffInstagib_Init() -{ - if ( GetCurrentPlaylistVarInt( "riff_instagib", 0 ) == 0 ) - return - - SetLoadoutGracePeriodEnabled( false ) - SetWeaponDropsEnabled( false ) - - file.instagibWeapons = [ - "mp_weapon_sniper", - "mp_weapon_wingman", - "mp_weapon_defender", - "mp_weapon_arena3", - "mp_weapon_wingman_n", - "mp_weapon_doubletake", - ] - file.instagibWeapons.randomize() - - AddCallback_OnPlayerRespawned( InstagibSetWeapons ) - AddCallback_OnPlayerKilled( InstagibCycleWeaponsForKill ) - AddCallback_OnClientDisconnected( InstagibCleanupClient ) -} - -void function InstagibSetWeapons( entity player ) -{ - if ( !( player in file.playerWeapons ) ) - file.playerWeapons[ player ] <- 0 - - player.SetMaxHealth( 1 ) - InstagibUpdateWeapons( player ) -} - -void function InstagibUpdateWeapons( entity player ) -{ - foreach( entity weapon in player.GetMainWeapons() ) - player.TakeWeaponNow( weapon.GetWeaponClassName() ) - - player.TakeWeaponNow( player.GetOffhandWeapon( OFFHAND_RIGHT ).GetWeaponClassName() ) - if ( !HasOffhandWeapon( player, "mp_weapon_grenade_sonar" ) ) - player.GiveOffhandWeapon( "mp_weapon_grenade_sonar", OFFHAND_RIGHT ) - - player.GiveWeapon( file.instagibWeapons[ file.playerWeapons[ player ] ] ) -} - -void function InstagibCycleWeaponsForKill( entity victim, entity attacker, var damageInfo ) -{ - if ( !victim.IsPlayer() || !attacker.IsPlayer() || victim == attacker ) - return - - file.playerWeapons[ attacker ] = ( file.playerWeapons[ attacker ] + 1 ) % file.instagibWeapons.len() - InstagibUpdateWeapons( attacker ) -} - -void function InstagibCleanupClient( entity player ) -{ - if ( player in file.playerWeapons ) - delete file.playerWeapons[ player ] -} \ No newline at end of file diff --git a/Northstar.Custom/mod/scripts/vscripts/gamemodes/sh_gamemode_sbox.gnut b/Northstar.Custom/mod/scripts/vscripts/gamemodes/sh_gamemode_sbox.gnut deleted file mode 100644 index 893d94108..000000000 --- a/Northstar.Custom/mod/scripts/vscripts/gamemodes/sh_gamemode_sbox.gnut +++ /dev/null @@ -1,20 +0,0 @@ -global function Sh_GamemodeSbox_Init - -global const string GAMEMODE_SBOX = "sbox" - -void function Sh_GamemodeSbox_Init() -{ - // create custom gametype - AddCallback_OnCustomGamemodesInit( CreateGamemodeSbox ) -} - -void function CreateGamemodeSbox() -{ - GameMode_Create( GAMEMODE_SBOX ) - GameMode_SetName( GAMEMODE_SBOX, "#PL_sbox" ) - GameMode_SetDesc( GAMEMODE_SBOX, "#PL_sbox_desc" ) - - #if SERVER - GameMode_AddServerInit( GAMEMODE_SBOX, GamemodeSbox_Init ) - #endif -} \ No newline at end of file diff --git a/Northstar.Custom/mod/scripts/vscripts/gamemodes/sh_riff_instagib.gnut b/Northstar.Custom/mod/scripts/vscripts/gamemodes/sh_riff_instagib.gnut new file mode 100644 index 000000000..316893bb4 --- /dev/null +++ b/Northstar.Custom/mod/scripts/vscripts/gamemodes/sh_riff_instagib.gnut @@ -0,0 +1,73 @@ +global function RiffInstagib_Init + +#if SERVER +struct { + table playerWeapons + array instagibWeapons +} file +#endif + +void function RiffInstagib_Init() +{ + AddPrivateMatchModeSettingEnum( "#MODE_SETTING_CATEGORY_RIFF", "riff_instagib", [ "Disabled", "Enabled" ], "0" ) + + #if SERVER + if ( GetCurrentPlaylistVarInt( "riff_instagib", 0 ) == 0 ) + return + + SetLoadoutGracePeriodEnabled( false ) + SetWeaponDropsEnabled( false ) + + file.instagibWeapons = [ + "mp_weapon_sniper", + "mp_weapon_wingman", + "mp_weapon_defender", + "mp_weapon_arena3", + "mp_weapon_wingman_n", + "mp_weapon_doubletake", + ] + file.instagibWeapons.randomize() + + AddCallback_OnPlayerRespawned( InstagibSetWeapons ) + AddCallback_OnPlayerKilled( InstagibCycleWeaponsForKill ) + AddCallback_OnClientDisconnected( InstagibCleanupClient ) + #endif +} + +#if SERVER +void function InstagibSetWeapons( entity player ) +{ + if ( !( player in file.playerWeapons ) ) + file.playerWeapons[ player ] <- 0 + + player.SetMaxHealth( 1 ) + InstagibUpdateWeapons( player ) +} + +void function InstagibUpdateWeapons( entity player ) +{ + foreach( entity weapon in player.GetMainWeapons() ) + player.TakeWeaponNow( weapon.GetWeaponClassName() ) + + player.TakeWeaponNow( player.GetOffhandWeapon( OFFHAND_RIGHT ).GetWeaponClassName() ) + if ( !HasOffhandWeapon( player, "mp_weapon_grenade_sonar" ) ) + player.GiveOffhandWeapon( "mp_weapon_grenade_sonar", OFFHAND_RIGHT ) + + player.GiveWeapon( file.instagibWeapons[ file.playerWeapons[ player ] ] ) +} + +void function InstagibCycleWeaponsForKill( entity victim, entity attacker, var damageInfo ) +{ + if ( !victim.IsPlayer() || !attacker.IsPlayer() || victim == attacker ) + return + + file.playerWeapons[ attacker ] = ( file.playerWeapons[ attacker ] + 1 ) % file.instagibWeapons.len() + InstagibUpdateWeapons( attacker ) +} + +void function InstagibCleanupClient( entity player ) +{ + if ( player in file.playerWeapons ) + delete file.playerWeapons[ player ] +} +#endif \ No newline at end of file diff --git a/Northstar.Custom/mod/scripts/vscripts/northstar_custom_autoprecache.gnut b/Northstar.Custom/mod/scripts/vscripts/northstar_custom_autoprecache.gnut deleted file mode 100644 index 1d5b7ba9f..000000000 --- a/Northstar.Custom/mod/scripts/vscripts/northstar_custom_autoprecache.gnut +++ /dev/null @@ -1,14 +0,0 @@ -untyped -global function NorthstarCustomAutoprecache - -void function NorthstarCustomAutoprecache() -{ - PrecacheWeapon( "mp_weapon_peacekraber" ) - PrecacheWeapon( "melee_pilot_kunai" ) - - if ( GAMETYPE == GAMEMODE_SBOX ) - PrecacheWeapon( "mp_weapon_toolgun" ) - - // will include this as a custom asset when mod v2 is written - PrecacheModel( $"models/SPOILER_w_titan_particle_accelerator.mdl" ) -} \ No newline at end of file diff --git a/Northstar.Custom/mod/scripts/vscripts/rodeo/sh_classic_rodeo.gnut b/Northstar.Custom/mod/scripts/vscripts/rodeo/sh_classic_rodeo.gnut index 6e2f02598..038305c0a 100644 --- a/Northstar.Custom/mod/scripts/vscripts/rodeo/sh_classic_rodeo.gnut +++ b/Northstar.Custom/mod/scripts/vscripts/rodeo/sh_classic_rodeo.gnut @@ -50,12 +50,15 @@ void function OnRodeoWeakpointDamaged( entity weakpoint, var damageInfo ) attacker.NotifyDidDamage( weakpoint, DamageInfo_GetHitBox( damageInfo ), DamageInfo_GetDamagePosition( damageInfo ), DamageInfo_GetCustomDamageType( damageInfo ) | DF_CRITICAL, damageAmount, DamageInfo_GetDamageFlags( damageInfo ), DamageInfo_GetHitGroup( damageInfo ), DamageInfo_GetWeapon( damageInfo ), DamageInfo_GetDistFromAttackOrigin( damageInfo ) ) // figure out damage to deal to titan - entity attackerWeapon = attacker.GetActiveWeapon() + entity attackerWeapon = DamageInfo_GetWeapon( damageInfo ) + if ( !IsValid( attackerWeapon ) ) + attackerWeapon = attacker.GetActiveWeapon() + int rodeoDamage = attackerWeapon.GetWeaponSettingInt( eWeaponVar.damage_rodeo ) // only really on weapons that were in tf1, unfortunately - if ( rodeoDamage == 0 ) - rodeoDamage = int( attackerWeapon.GetWeaponSettingInt( eWeaponVar.damage_near_value_titanarmor ) * ( attackerWeapon.GetWeaponSettingFloat( eWeaponVar.damage_headshot_scale ) * 1.5 ) ) // would use headshot scale, but it's a bit low in most cases to be competitive + if ( rodeoDamage == 0 ) // would use headshot scale, but it's a bit low in most cases to be competitive with weapons with a valid damage_rodeo + rodeoDamage = int( attackerWeapon.GetWeaponSettingInt( eWeaponVar.damage_near_value_titanarmor ) * ( attackerWeapon.GetWeaponSettingFloat( eWeaponVar.damage_headshot_scale ) * 1.5 ) ) - // damage titan - titan.TakeDamage( rodeoDamage, attacker, attackerWeapon, { damageSourceId = eDamageSourceId.rodeo } ) + // damage titan, make sure DF_BYPASS_SHIELD is a thing for proper behaviour + titan.TakeDamage( rodeoDamage, attacker, attackerWeapon, { damageSourceId = eDamageSourceId.rodeo, scriptType = DamageInfo_GetCustomDamageType( damageInfo ) | DF_BYPASS_SHIELD } ) } #endif \ No newline at end of file diff --git a/Northstar.Custom/mod/scripts/vscripts/sh_bleedout_damage.gnut b/Northstar.Custom/mod/scripts/vscripts/sh_bleedout_damage.gnut new file mode 100644 index 000000000..8b21184ad --- /dev/null +++ b/Northstar.Custom/mod/scripts/vscripts/sh_bleedout_damage.gnut @@ -0,0 +1,137 @@ +// note: this is technically vanilla content, since bleedout was shipped with retail, but it needs custom remote functions which would break vanilla compatiblity, so it's not in Northstar.CustomServers +// idk why bleedout was even shipped in retail lmao +global function BleedoutDamage_PreInit +global function BleedoutDamage_Init +global function SetShouldPlayerStartBleedoutFunc + +struct { + array bleedingPlayers // this is in _bleedout already, but it doesn't expose a way to track it, so we have to track it ourselves + bool functionref( entity, var ) shouldPlayerStartBleedoutFunc = null +} file + +void function BleedoutDamage_PreInit() +{ + AddCallback_OnRegisteringCustomNetworkVars( Bleedout_RegisterRemoteFunctions ) +} + +void function Bleedout_RegisterRemoteFunctions() +{ + Remote_RegisterFunction( "ServerCallback_BLEEDOUT_StartFirstAidProgressBar" ) + Remote_RegisterFunction( "ServerCallback_BLEEDOUT_StopFirstAidProgressBar" ) + Remote_RegisterFunction( "ServerCallback_BLEEDOUT_ShowWoundedMarker" ) + Remote_RegisterFunction( "ServerCallback_BLEEDOUT_HideWoundedMarker" ) +} + +// copied from sh_bleedout +const float DEFAULT_BLEEDOUT_TIME = 30.0 +const float DEFAULT_FIRSTAID_TIME = 3.0 +const float DEFAULT_FIRSTAID_TIME_SELF = -1.0 +const float DEFAULT_FIRSTAID_HEAL_PERCENT = 1.0 +const float DEFAULT_AI_BLEEDING_PLAYER_MISS_CHANCE = 0.0 +const bool DEFAULT_FORCE_WEAPON_HOLSTER = false +const bool DEFAULT_DEATH_ON_TEAM_BLEEDOUT = false + +void function BleedoutDamage_Init() +{ + AddPrivateMatchModeSettingEnum( "#MODE_SETTING_CATEGORY_BLEEDOUT", "riff_player_bleedout", [ "Default", "Disabled", "Enabled" ], "0" ) + AddPrivateMatchModeSettingEnum( "#MODE_SETTING_CATEGORY_BLEEDOUT", "player_bleedout_forceHolster", [ "Disabled", "Enabled" ], DEFAULT_FORCE_WEAPON_HOLSTER.tostring() ) + AddPrivateMatchModeSettingEnum( "#MODE_SETTING_CATEGORY_BLEEDOUT", "player_bleedout_forceDeathOnTeamBleedout", [ "Disabled", "Enabled" ], DEFAULT_DEATH_ON_TEAM_BLEEDOUT.tostring() ) + AddPrivateMatchModeSettingArbitrary( "#MODE_SETTING_CATEGORY_BLEEDOUT", "player_bleedout_bleedoutTime", DEFAULT_BLEEDOUT_TIME.tostring() ) + AddPrivateMatchModeSettingArbitrary( "#MODE_SETTING_CATEGORY_BLEEDOUT", "player_bleedout_firstAidTime", DEFAULT_FIRSTAID_TIME.tostring() ) + AddPrivateMatchModeSettingArbitrary( "#MODE_SETTING_CATEGORY_BLEEDOUT", "player_bleedout_firstAidTimeSelf", DEFAULT_FIRSTAID_TIME_SELF.tostring() ) + AddPrivateMatchModeSettingArbitrary( "#MODE_SETTING_CATEGORY_BLEEDOUT", "player_bleedout_firstAidHealPercent", DEFAULT_FIRSTAID_HEAL_PERCENT.tostring() ) + AddPrivateMatchModeSettingArbitrary( "#MODE_SETTING_CATEGORY_BLEEDOUT", "player_bleedout_aiBleedingPlayerMissChance", DEFAULT_AI_BLEEDING_PLAYER_MISS_CHANCE.tostring() ) + + #if CLIENT + // because playlist var overrides fucking suck, they aren't actually updated by this point + // client bleedout can be inited late enough that we can just init it on local player spawn + AddCallback_LocalClientPlayerSpawned( InitClientBleedoutForLocalPlayer ) + #elseif SERVER + // sh_riff_settings should set this correctly on server + if ( !Riff_PlayerBleedout() ) + return + + AddDamageCallback( "player", HandleDamageForBleedout ) // do this irregardless of whether scripts inited, given it should always be used for bleedout + Bleedout_SetCallback_OnPlayerStartBleedout( OnPlayerBleedoutBegin ) // kinda sucks we have to use this callback since game scripts could be using it + + // dont init if scripts already inited it manually + if ( !Bleedout_IsBleedoutLogicActive() ) + { + InitSharedBleedoutWithPlaylistVars() + Bleedout_Init() + } + #endif +} + +void function SetShouldPlayerStartBleedoutFunc( bool functionref( entity, var ) func ) +{ + file.shouldPlayerStartBleedoutFunc = func +} + +void function InitSharedBleedoutWithPlaylistVars() +{ + BleedoutShared_Init( + GetCurrentPlaylistVarFloat( "player_bleedout_bleedoutTime", DEFAULT_BLEEDOUT_TIME ), + GetCurrentPlaylistVarFloat( "player_bleedout_firstAidTime", DEFAULT_FIRSTAID_TIME ), + GetCurrentPlaylistVarFloat( "player_bleedout_firstAidTimeSelf", DEFAULT_FIRSTAID_TIME_SELF ), + GetCurrentPlaylistVarFloat( "player_bleedout_firstAidHealPercent", DEFAULT_FIRSTAID_HEAL_PERCENT ), + GetCurrentPlaylistVarFloat( "player_bleedout_aiBleedingPlayerMissChance", DEFAULT_AI_BLEEDING_PLAYER_MISS_CHANCE ), + GetCurrentPlaylistVarInt( "player_bleedout_forceHolster", int( DEFAULT_FORCE_WEAPON_HOLSTER ) ) == 1, + GetCurrentPlaylistVarInt( "player_bleedout_forceDeathOnTeamBleedout", int( DEFAULT_DEATH_ON_TEAM_BLEEDOUT ) ) == 1 + ) +} + +#if CLIENT +void function InitClientBleedoutForLocalPlayer( entity player ) +{ + // dont init if bleedout is disabled or scripts already inited it + if ( !Riff_PlayerBleedout() || Bleedout_IsBleedoutLogicActive() ) + return + + InitSharedBleedoutWithPlaylistVars() + BleedoutClient_Init() +} +#endif + +#if SERVER +void function HandleDamageForBleedout( entity player, var damageInfo ) +{ + if ( IsInstantDeath( damageInfo ) || DamageInfo_GetForceKill( damageInfo ) || player.IsTitan() || file.bleedingPlayers.contains( player ) ) + return + + if ( file.shouldPlayerStartBleedoutFunc != null ) + if ( !file.shouldPlayerStartBleedoutFunc( player, damageInfo ) ) + return + + // check if damage would kill player + if ( player.GetHealth() - DamageInfo_GetDamage( damageInfo ) <= 0 ) + { + Bleedout_StartPlayerBleedout( player, DamageInfo_GetAttacker( damageInfo ) ) + DamageInfo_SetDamage( damageInfo, 1 ) // prevent player from dying, but if we set it to 0, player won't receive any knockback from damage source + } +} + +void function OnPlayerBleedoutBegin( entity player ) +{ + file.bleedingPlayers.append( player ) + + // would prefer to use Bleedout_SetCallback_OnPlayerGiveFirstAid for this, but it doesn't expose the player that's receiving first aid for some reason + thread TrackPlayerBleedout( player ) +} + +void function TrackPlayerBleedout( entity player ) +{ + player.EndSignal( "OnDeath" ) + player.EndSignal( "OnDestroy" ) + + OnThreadEnd( function() : ( player ) + { + file.bleedingPlayers.remove( file.bleedingPlayers.find( player ) ) + }) + + WaitFrame() // wait a frame, since this gets called before this status effect is added + + while ( StatusEffect_Get( player, eStatusEffect.bleedoutDOF ) != 0 ) + WaitFrame() +} +#endif \ No newline at end of file diff --git a/Northstar.Custom/mod/scripts/vscripts/sh_custom_air_accel.gnut b/Northstar.Custom/mod/scripts/vscripts/sh_custom_air_accel.gnut new file mode 100644 index 000000000..faa924804 --- /dev/null +++ b/Northstar.Custom/mod/scripts/vscripts/sh_custom_air_accel.gnut @@ -0,0 +1,25 @@ +global function CustomAirAccelVars_Init + +void function CustomAirAccelVars_Init() +{ + #if MP + AddPrivateMatchModeSettingArbitrary( "#MODE_SETTING_CATEGORY_PILOT", "custom_air_accel_pilot", "500" ) // 500 is the default airaccel + #endif + + #if SERVER + AddCallback_OnPlayerRespawned( ApplyCustomPlayerAirAccel ) + AddCallback_OnPilotBecomesTitan( ApplyCustomPlayerAirAccelFromTitan ) // not sure if necessary but assuming it is + #endif +} + +#if SERVER +void function ApplyCustomPlayerAirAccel( entity player ) +{ + player.kv.airAcceleration = GetCurrentPlaylistVarInt( "custom_air_accel_pilot", int( player.GetPlayerSettingsField( "airAcceleration" ) ) ) +} + +void function ApplyCustomPlayerAirAccelFromTitan( entity player, entity titan ) +{ + player.kv.airAcceleration = GetCurrentPlaylistVarInt( "custom_air_accel_pilot", int( player.GetPlayerSettingsField( "airAcceleration" ) ) ) +} +#endif \ No newline at end of file diff --git a/Northstar.Custom/mod/scripts/vscripts/sh_custom_oob_timer.gnut b/Northstar.Custom/mod/scripts/vscripts/sh_custom_oob_timer.gnut new file mode 100644 index 000000000..9689302c1 --- /dev/null +++ b/Northstar.Custom/mod/scripts/vscripts/sh_custom_oob_timer.gnut @@ -0,0 +1,7 @@ +global function CustomOOBTimer_Init + +void function CustomOOBTimer_Init() +{ + AddPrivateMatchModeSettingEnum( "#MODE_SETTING_CATEGORY_MATCH", "oob_timer_enabled", [ "Disabled", "Enabled" ], "1" ) + level.disableOutOfBounds <- GetCurrentPlaylistVarInt( "oob_timer_enabled", 1 ) == 0 +} \ No newline at end of file diff --git a/Northstar.Custom/mod/scripts/vscripts/sh_northstar_custom_precache.gnut b/Northstar.Custom/mod/scripts/vscripts/sh_northstar_custom_precache.gnut new file mode 100644 index 000000000..3e66b5cae --- /dev/null +++ b/Northstar.Custom/mod/scripts/vscripts/sh_northstar_custom_precache.gnut @@ -0,0 +1,11 @@ +untyped +global function NorthstarCustomPrecache + +void function NorthstarCustomPrecache() +{ + PrecacheWeapon( "mp_weapon_peacekraber" ) + PrecacheWeapon( "melee_pilot_kunai" ) + + // create kunai damage source so game won't crash when we hit smth with it + getconsttable()[ "eDamageSourceId" ][ "melee_pilot_kunai" ] <- eDamageSourceId.melee_pilot_emptyhanded +} \ No newline at end of file diff --git a/Northstar.Custom/mod/scripts/vscripts/sh_promode.gnut b/Northstar.Custom/mod/scripts/vscripts/sh_promode.gnut new file mode 100644 index 000000000..f390fed60 --- /dev/null +++ b/Northstar.Custom/mod/scripts/vscripts/sh_promode.gnut @@ -0,0 +1,25 @@ +untyped +global function Promode_Init +global function PromodeEnabled + +void function Promode_Init() +{ + AddPrivateMatchModeSettingEnum( "#MODE_SETTING_CATEGORY_PROMODE", "promode_enable", [ "Disabled", "Enabled" ], "0" ) + + #if SERVER + AddCallback_OnPlayerRespawned( GivePromodeWeaponMod ) + #endif +} + +bool function PromodeEnabled() +{ + return GetCurrentPlaylistVarInt( "promode_enable", 0 ) == 1 +} + +#if SERVER +void function GivePromodeWeaponMod( entity player ) +{ + if ( PromodeEnabled() ) + player.GiveExtraWeaponMod( "promode" ) +} +#endif \ No newline at end of file diff --git a/Northstar.Custom/mod/scripts/vscripts/weapons/mp_weapon_toolgun.nut b/Northstar.Custom/mod/scripts/vscripts/weapons/mp_weapon_toolgun.nut deleted file mode 100644 index 94bd7429b..000000000 --- a/Northstar.Custom/mod/scripts/vscripts/weapons/mp_weapon_toolgun.nut +++ /dev/null @@ -1,39 +0,0 @@ -untyped -global function OnWeaponActivate_weapon_toolgun -global function OnWeaponDeactivate_weapon_toolgun -global function OnWeaponPrimaryAttack_weapon_toolgun -global function OnWeaponStartZoomIn_weapon_toolgun -global function OnWeaponStartZoomOut_weapon_toolgun -#if SERVER -global function OnWeaponNpcPrimaryAttack_weapon_toolgun -#endif - -void function OnWeaponActivate_weapon_toolgun( entity weapon ) -{ - CallToolOnEquipped( weapon.GetOwner(), weapon ) -} - -void function OnWeaponDeactivate_weapon_toolgun( entity weapon ) -{ - CallToolOnUnequipped( weapon.GetOwner(), weapon ) -} - -var function OnWeaponPrimaryAttack_weapon_toolgun( entity weapon, WeaponPrimaryAttackParams attackParams ) -{ - CallToolOnFired( weapon.GetOwner(), weapon, attackParams ) -} - -void function OnWeaponStartZoomIn_weapon_toolgun( entity weapon ) -{ - CallToolOnAds( weapon.GetOwner(), weapon ) -} - -void function OnWeaponStartZoomOut_weapon_toolgun( entity weapon ) -{ - CallToolOnUnAds( weapon.GetOwner(), weapon ) -} - -var function OnWeaponNpcPrimaryAttack_weapon_toolgun( entity weapon, WeaponPrimaryAttackParams attackParams ) -{ - // do nothing for now, maybe make it launch nukes or something later that could be funny -} \ No newline at end of file diff --git a/Northstar.Custom/mod/scripts/vscripts/weapons/toolgun/sh_toolgun_tool_explode.nut b/Northstar.Custom/mod/scripts/vscripts/weapons/toolgun/sh_toolgun_tool_explode.nut deleted file mode 100644 index 512c538c9..000000000 --- a/Northstar.Custom/mod/scripts/vscripts/weapons/toolgun/sh_toolgun_tool_explode.nut +++ /dev/null @@ -1,30 +0,0 @@ -global function ToolgunToolCreateExplosion_Init - -void function ToolgunToolCreateExplosion_Init() -{ - AddCallback_OnToolgunToolsInit( CreateToolgunToolCreateExplosion ) -} - -void function CreateToolgunToolCreateExplosion() -{ - ToolgunTool createExplosionTool - createExplosionTool.toolName = "Create explosion" - createExplosionTool.toolDescription = "Creates an explosion" - - createExplosionTool.onFired = ToolgunToolCreateExplosion_Fire - - RegisterTool( createExplosionTool ) -} - -void function ToolgunToolCreateExplosion_Fire( entity player, entity weapon, WeaponPrimaryAttackParams attackParams ) -{ - #if SERVER - int dist = 55555 // should hit edge of map at all times ideally - vector forward = AnglesToForward( player.EyeAngles() ) - - // raycast to explosion position - TraceResults trace = TraceLine( player.EyePosition(), player.EyePosition() + ( dist * forward ), null, TRACE_MASK_NPCSOLID ) - // make explosion - Explosion( trace.endPos, player, player, 90, 90, 100, 100, 0, trace.endPos, 5000, damageTypes.explosive, eDamageSourceId.burn, "exp_small" ) - #endif -} \ No newline at end of file diff --git a/Northstar.Custom/mod/scripts/vscripts/weapons/toolgun/sh_toolgun_tool_throw.nut b/Northstar.Custom/mod/scripts/vscripts/weapons/toolgun/sh_toolgun_tool_throw.nut deleted file mode 100644 index d6975c6de..000000000 --- a/Northstar.Custom/mod/scripts/vscripts/weapons/toolgun/sh_toolgun_tool_throw.nut +++ /dev/null @@ -1,24 +0,0 @@ -global function ToolgunToolThrowEntity_Init - -void function ToolgunToolThrowEntity_Init() -{ - AddCallback_OnToolgunToolsInit( CreateToolgunToolThrow ) -} - -void function CreateToolgunToolThrow() -{ - ToolgunTool throwTool - throwTool.toolName = "Throw entity" - throwTool.toolDescription = "Spawns and throws the currently selected entity type" - - throwTool.onFired = ToolgunToolThrow_OnFired - - RegisterTool( throwTool ) -} - -void function ToolgunToolThrow_OnFired( entity player, entity weapon, WeaponPrimaryAttackParams attackParams ) -{ - #if SERVER - ClientCommand( player, "ent_throw npc_frag_drone" ) - #endif -} \ No newline at end of file diff --git a/Northstar.Custom/mod/scripts/vscripts/weapons/toolgun/sh_toolgun_tools.gnut b/Northstar.Custom/mod/scripts/vscripts/weapons/toolgun/sh_toolgun_tools.gnut deleted file mode 100644 index 4d7e9d899..000000000 --- a/Northstar.Custom/mod/scripts/vscripts/weapons/toolgun/sh_toolgun_tools.gnut +++ /dev/null @@ -1,196 +0,0 @@ -untyped -global function ToolgunTools_Init -global function AddCallback_OnToolgunToolsInit - -global function RegisterTool -global function CallToolOnEquipped -global function CallToolOnUnequipped -global function CallToolOnFired -global function CallToolOnAds -global function CallToolOnUnAds - -#if SERVER -global function SetToolgunAmmoCount -global function SetToolgunProscreen -#endif // #if SERVER - -global struct ToolgunTool -{ - string toolName = "" - string toolDescription = "" - - void functionref( entity, entity ) onEquipped - void functionref( entity, entity ) onUnequipped - void functionref( entity, entity, WeaponPrimaryAttackParams ) onFired - void functionref( entity, entity ) onAds - void functionref( entity, entity ) onUnAds -} - -struct ToolgunPlayerSettings -{ - int selectedToolIndex - int ammoCount - int proscreenNumber -} - -// doing preprocessor defs inside the struct seemed to cause compiler errors so we define them separately -#if CLIENT -struct { - array onToolgunToolsInitCallbacks - - array tools - ToolgunPlayerSettings clientPlayerSettings -} file -#endif // #if CLIENT - -#if SERVER -struct { - array onToolgunToolsInitCallbacks - - array tools - // serverside playersettings - table playerSettings -} file -#endif // #if SERVER - -void function AddCallback_OnToolgunToolsInit( void functionref() callback ) -{ - file.onToolgunToolsInitCallbacks.append( callback ) -} - -void function ToolgunTools_Init() -{ - //#if SERVER - //AddCallback_OnClientConnecting( InitialiseToolgunSettings ) - //AddCallback_OnClientDisconnected( DestroyToolgunSettings ) - //#endif // #if SERVER - // - //// need this threaded so we can wait a frame - //thread ToolgunTools_InitThreaded() -} - -void function ToolgunTools_InitThreaded() -{ - // wait a frame for tools to all init and add their callbacks - WaitFrame() - - // call callbacks - foreach ( void functionref() callback in file.onToolgunToolsInitCallbacks ) - callback() -} - -void function RegisterTool( ToolgunTool toolStruct ) -{ - file.tools.append( toolStruct ) -} - -void function CallToolOnEquipped( entity player, entity weapon ) -{ - #if CLIENT - if ( file.tools[ file.clientPlayerSettings.selectedToolIndex ].onEquipped != null ) - file.tools[ file.clientPlayerSettings.selectedToolIndex ].onEquipped( player, weapon ) - #endif // #if CLIENT - - #if SERVER - // set ammo and proscreen numbers when equipped - weapon.SetProScreenIntValForIndex( PRO_SCREEN_INT_LIFETIME_KILLS, file.playerSettings[ player.GetPlayerIndex() ].proscreenNumber ) - weapon.SetWeaponPrimaryClipCount( file.playerSettings[ player.GetPlayerIndex() ].ammoCount ) - - if ( file.tools[ file.playerSettings[ player.GetPlayerIndex() ].selectedToolIndex ].onEquipped != null ) - file.tools[ file.playerSettings[ player.GetPlayerIndex() ].selectedToolIndex ].onEquipped( player, weapon ) - #endif // #if SERVER -} - -void function CallToolOnUnequipped( entity player, entity weapon ) -{ - #if CLIENT - if ( file.tools[ file.clientPlayerSettings.selectedToolIndex ].onUnequipped != null ) - file.tools[ file.clientPlayerSettings.selectedToolIndex ].onUnequipped( player, weapon ) - #endif // #if CLIENT - - #if SERVER - if ( file.tools[ file.playerSettings[ player.GetPlayerIndex() ].selectedToolIndex ].onUnequipped != null ) - file.tools[ file.playerSettings[ player.GetPlayerIndex() ].selectedToolIndex ].onUnequipped( player, weapon ) - #endif // #if SERVER -} - -void function CallToolOnFired( entity player, entity weapon, WeaponPrimaryAttackParams attackParams ) -{ - #if CLIENT - if ( file.tools[ file.clientPlayerSettings.selectedToolIndex ].onFired != null ) - file.tools[ file.clientPlayerSettings.selectedToolIndex ].onFired( player, weapon, attackParams ) - #endif // #if CLIENT - - #if SERVER - // ammocount needs to be +1 because we lose 1 ammo immediately after this function is run - weapon.SetWeaponPrimaryClipCount( file.playerSettings[ player.GetPlayerIndex() ].ammoCount + 1 ) - - if ( file.tools[ file.playerSettings[ player.GetPlayerIndex() ].selectedToolIndex ].onFired != null ) - file.tools[ file.playerSettings[ player.GetPlayerIndex() ].selectedToolIndex ].onFired( player, weapon, attackParams ) - #endif // #if SERVER -} - -void function CallToolOnAds( entity player, entity weapon ) -{ - #if CLIENT - if ( file.tools[ file.clientPlayerSettings.selectedToolIndex ].onAds != null ) - file.tools[ file.clientPlayerSettings.selectedToolIndex ].onAds( player, weapon ) - #endif // #if CLIENT - - #if SERVER - if ( file.tools[ file.playerSettings[ player.GetPlayerIndex() ].selectedToolIndex ].onUnequipped != null ) - file.tools[ file.playerSettings[ player.GetPlayerIndex() ].selectedToolIndex ].onUnequipped( player, weapon ) - #endif // #if SERVER -} - -void function CallToolOnUnAds( entity player, entity weapon ) -{ - #if CLIENT - if ( file.tools[ file.clientPlayerSettings.selectedToolIndex ].onUnAds != null ) - file.tools[ file.clientPlayerSettings.selectedToolIndex ].onUnAds( player, weapon ) - #endif // #if CLIENT - - #if SERVER - if ( file.tools[ file.playerSettings[ player.GetPlayerIndex() ].selectedToolIndex ].onUnequipped != null ) - file.tools[ file.playerSettings[ player.GetPlayerIndex() ].selectedToolIndex ].onUnequipped( player, weapon ) - #endif // #if SERVER -} - -#if SERVER -void function InitialiseToolgunSettings( entity player ) -{ - print( "initialising toolgun settings for player " + player ) - - ToolgunPlayerSettings playerSettings - playerSettings.selectedToolIndex = 0 - - file.playerSettings[ player.GetPlayerIndex() ] <- playerSettings -} - -void function DestroyToolgunSettings( entity player ) -{ - delete file.playerSettings[ player.GetPlayerIndex() ] -} - -void function SetToolgunAmmoCount( entity player, int ammoCount ) -{ - entity currentWeapon = player.GetActiveWeapon() - if ( ammoCount > currentWeapon.GetWeaponPrimaryClipCountMax() ) // setting clipcount to over max clipcount crashes so we need to prevent that - return - - ToolgunPlayerSettings playerSettings = file.playerSettings[ player.GetPlayerIndex() ] - playerSettings.ammoCount = ammoCount - - if ( currentWeapon.GetWeaponClassName() == "mp_weapon_toolgun" ) // set ammocount immediately if we've got toolgun equipped already - currentWeapon.SetWeaponPrimaryClipCount( ammoCount ) -} - -void function SetToolgunProscreen( entity player, int proscreenNumber ) -{ - ToolgunPlayerSettings playerSettings = file.playerSettings[ player.GetPlayerIndex() ] - playerSettings.proscreenNumber = proscreenNumber - - if ( player.GetActiveWeapon().GetWeaponClassName() == "mp_weapon_toolgun" ) // set proscreen number immediately if we've got toolgun equipped already - player.GetActiveWeapon().SetProScreenIntValForIndex( PRO_SCREEN_INT_LIFETIME_KILLS, proscreenNumber ) -} -#endif // #if SERVER \ No newline at end of file diff --git a/Northstar.Custom/mod/scripts/weapons/melee_pilot_emptyhanded.txt b/Northstar.Custom/mod/scripts/weapons/melee_pilot_emptyhanded.txt deleted file mode 100644 index 032867af8..000000000 --- a/Northstar.Custom/mod/scripts/weapons/melee_pilot_emptyhanded.txt +++ /dev/null @@ -1,149 +0,0 @@ -WeaponData -{ - // General - "printname" "Melee" - "shortprintname" "Melee" - "description" "Description needed" - "longdesc" "Description needed" - - "menu_icon" "rui/hud/common/melee_icon" - "hud_icon" "rui/hud/common/melee_icon" - - "weaponClass" "human" - "weaponType" "melee" - "body_type" "battle_rifle" - "fire_mode" "offhand_melee" - "never_drop" "1" - - // Models - "viewmodel" "models/weapons/empty_handed/ptpov_emptyhand.mdl" - "playermodel" "models/weapons/empty_handed/w_empty_handed_human.mdl" - - // Melee - "melee_can_hit_humansized" "1" - "melee_can_hit_titans" "0" - "melee_raise_recovery_animtime_normal" "0.75" - "melee_raise_recovery_animtime_quick" "0.4" - "melee_range" "60" - "melee_rumble_on_hit" "pilot_melee_hit" - "melee_rumble_on_hit_partial" "pilot_melee_hit_partial" - "melee_freezelook_on_hit" "0.25" - //"melee_sound_attack_1p" "Player_Melee_Backhand_1P" - "melee_sound_attack_3p" "player_melee_kick_3p" - "melee_anim_3p" "ACT_MP_MELEE_KNIFE_FIRST" - "damage_flags" "DF_MELEE | DF_KNOCK_BACK" - "impact_effect_table" "melee_human" - "impulse_force" "35000" - "offhand_keep_primary_in_hand" "1" - - "zoom_effects" "0" - - MP_BASE - { - "melee_lunge_target_range" "110" - "melee_lunge_target_angle" "30" - "melee_damage" "100" - "melee_damage_heavyarmor" "0" - "melee_attack_animtime" "0" - "melee_lunge_time" "0.3" - "melee_anim_1p_number" "2" - } - - SP_BASE - { - "melee_lunge_target_range" "130" - "melee_lunge_target_angle" "40" - "melee_damage" "125" - "melee_damage_heavyarmor" "125" - "melee_attack_animtime" "0.0" - "melee_lunge_time" "0.2" - "melee_anim_1p_number" "1" // ACT_VM_MELEE_ATTACK1, 2, or 3 - } - - // - - "ammo_suck_behavior" "melee_weapons" - "viewkick_spring" "melee" - - "viewkick_pitch_base" "-1.75" - "viewkick_pitch_random" "0.75" - "viewkick_pitch_softScale" "0.3" - "viewkick_pitch_hardScale" "5.5" - - "viewkick_yaw_base" "1.0" - "viewkick_yaw_random" "0.38" - "viewkick_yaw_softScale" "0.38" - "viewkick_yaw_hardScale" "15.5" - - "viewkick_roll_base" "0" - "viewkick_roll_randomMin" "0.6" - "viewkick_roll_randomMax" "0.8" - "viewkick_roll_softScale" "0.2" - "viewkick_roll_hardScale" "20.75" - - // - "damage_rodeo" "100" - "aimassist_disable_hipfire" "1" - "aimassist_disable_ads" "1" - - // Bob - //"bob_cycle_time" "0.45" - //"bob_vert_dist" "0.075" - //"bob_horz_dist" "0.05" - //"bob_max_speed" "150" - //"bob_pitch" "0.75" - //"bob_yaw" "1" - //"bob_roll" "-0.75" - - // Sway - //"sway_rotate_attach" "SWAY_ROTATE" - //"sway_min_x" "-0.3" - //"sway_min_y" "-0.5" - //"sway_min_z" "-0.5" - //"sway_max_x" "0.3" - //"sway_max_y" "0.5" - //"sway_max_z" "0.1" - //"sway_min_pitch" "-3" - //"sway_min_yaw" "-3.5" - //"sway_min_roll" "-2" - //"sway_max_pitch" "3" - //"sway_max_yaw" "3.5" - //"sway_max_roll" "3" - //"sway_translate_gain" "10" - //"sway_rotate_gain" "12" - //"sway_move_forward_translate_x" "0" - //"sway_move_forward_translate_z" "-0.5" - //"sway_move_back_translate_x" "-2" - //"sway_move_back_translate_z" "-1" - //"sway_move_left_translate_y" "-1" - //"sway_move_left_translate_z" "-0.5" - //"sway_move_left_rotate_roll" "-2" - //"sway_move_right_translate_y" "1" - //"sway_move_right_translate_z" "-0.5" - //"sway_move_right_rotate_roll" "4" - //"sway_move_up_translate_z" "-1" - //"sway_move_down_translate_z" "1" - //"sway_turn_left_rotate_yaw" "-1" - //"sway_turn_right_rotate_yaw" "1" - //"sway_turn_up_rotate_pitch" "1" - //"sway_turn_down_rotate_pitch" "-1" - - // WeaponED Unhandled Key/Values and custom script Key/Values - "deployfirst_time" "1.25" - "sprintcycle_time" ".55" - - Mods - { - rocket_arena - { - "melee_damage" "33" - } - - // mod for testing low damage, high knockback "shove" melee rebalance - test_push - { - "melee_damage" "5" - "impulse_force" "150000" - } - } -} diff --git a/Northstar.Custom/mod/scripts/weapons/mp_weapon_toolgun.txt b/Northstar.Custom/mod/scripts/weapons/mp_weapon_toolgun.txt deleted file mode 100644 index 37e9bc256..000000000 --- a/Northstar.Custom/mod/scripts/weapons/mp_weapon_toolgun.txt +++ /dev/null @@ -1,587 +0,0 @@ -WeaponData -{ - // General - "printname" "#WPN_TOOLGUN" - "shortprintname" "#WPN_TOOLGUN_SHORT" - "description" "#WPN_TOOLGUN_DESC" - "longdesc" "#WPN_TOOLGUN_LONGDESC" - - "fast_swap_to" "1" - - "menu_icon" "r2_ui/menus/loadout_icons/secondary_weapon/secondary_mozambique" - "hud_icon" "r2_ui/menus/loadout_icons/secondary_weapon/secondary_mozambique" - - "weaponClass" "human" - "weaponSubClass" "projectile_shotgun" - "body_type" "close_quarters" - "fire_mode" "auto" - "pickup_hold_prompt" "Hold [USE] [WEAPONNAME]" - "pickup_press_prompt" "[USE] [WEAPONNAME]" - "minimap_reveal_distance" "32000" - "leveled_pickup" "1" - - "OnWeaponActivate" "OnWeaponActivate_weapon_toolgun" - "OnWeaponDeactivate" "OnWeaponDeactivate_weapon_toolgun" - "OnWeaponPrimaryAttack" "OnWeaponPrimaryAttack_weapon_toolgun" - "OnWeaponStartZoomIn" "OnWeaponStartZoomIn_weapon_toolgun" - "OnWeaponStartZoomOut" "OnWeaponStartZoomOut_weapon_toolgun" - "OnWeaponNpcPrimaryAttack" "OnWeaponNpcPrimaryAttack_weapon_toolgun" - - // Menu - "menu_category" "handgun" - "menu_anim_class" "small" - "stat_damage" "57" - "stat_range" "40" - "stat_accuracy" "44" - "stat_rof" "27" - - // Models - "viewmodel" "models/weapons/pstl_sa3/ptpov_pstl_sa3.mdl" - "playermodel" "models/weapons/pstl_sa3/w_pstl_sa3.mdl" - "activitymodifier" "pistol" - "holster_type" "pistol" - - // Effects - "tracer_effect" "weapon_tracers_shotgun" - "impact_effect_table" "bullet_mastiff" - "vortex_impact_effect" "P_impact_xo_shield_cp" - "vortex_absorb_effect" "wpn_vortex_projectile_shotgun_FP" - "vortex_absorb_effect_third_person" "wpn_vortex_projectile_shotgun" - "vortex_absorb_sound" "Vortex_Shield_AbsorbBulletSmall" - "vortex_absorb_sound_1P_VS_3P" "Vortex_Shield_AbsorbBulletSmall_1P_VS_3P" - "projectile_adjust_to_gun_barrel" "1" - - "projectilemodel" "models/dev/empty_model.mdl" - //"projectile_trail_effect_0" "P_dragonsbreath_trail" - "projectile_trail_effect_0" "P_mastiff_proj" - - "sound_dryfire" "shotgun_dryfire" - "sound_pickup" "wpn_pickup_Pistol_1P" - "fire_sound_1_player_1p" "weapon_shotgunpistol_fire_suppressed_1p" - "fire_sound_1_player_3p" "weapon_shotgunpistol_fire_suppressed_3p" - "fire_sound_1_npc" "Weapon_ShotgunPistol_Fire_NPC" - "sound_zoom_in" "Weapon_EVA8_ADS_In" - "sound_zoom_out" "Weapon_EVA8_ADS_Out" - - "low_ammo_sound_name_1" "ShotgunPistol_LowAmmo_Shot1" - "low_ammo_sound_name_2" "ShotgunPistol_LowAmmo_Shot2" - - //"fx_shell_eject_view" "wpn_shelleject_shotshell_FP" - //"fx_shell_eject_world" "wpn_shelleject_shotshell" - //"fx_shell_eject_attach" "shell" - - "fx_muzzle_flash_view" "P_wpn_muz_mastiff_FP" - "fx_muzzle_flash_world" "P_wpn_muz_mastiff" - "fx_muzzle_flash_attach" "muzzle_flash" - - "damage_flags" "DF_SHOTGUN | DF_BULLET | DF_KNOCK_BACK | DF_DISMEMBERMENT" - "damage_type" "bullet" - "damage_headshot_scale" "1.5" - - "explosion_inner_radius" "16" - "explosionradius" "32" - "impulse_force" "0" - - - "critical_hit_damage_scale" "1" - - "projectile_inherit_owner_velocity_scale" "0.0" - - "ammo_clip_size" "6" // arbitrarily large number - "titanarmor_critical_hit_required" "1" - - - - MP_BASE - { - "ammo_default_total" "6" - "ammo_stockpile_max" "6" - "ammo_no_remove_from_stockpile" "1" - "ammo_min_to_fire" "0" - - "aimassist_adspull_weaponclass" "broad" - - "critical_hit" "1" - - // Damage - When Used by Players - "damage_near_value" "30" - "damage_far_value" "25" - "damage_near_value_titanarmor" "30" - "damage_far_value_titanarmor" "20" - // "explosion_damage" "50" // 150 - // "explosion_damage_heavy_armor" "50" // 150 - "damage_near_distance" "750" - "damage_far_distance" "1000" - - "red_crosshair_range" "750" - - // Damage - When Used by NPCs - "npc_damage_near_value" "11" - "npc_damage_far_value" "5" - "npc_damage_near_value_titanarmor" "" - "npc_damage_far_value_titanarmor" "" - "npc_damage_near_distance" "500" - "npc_damage_far_distance" "1000" - - // NPC - "npc_min_engage_range" "0" - "npc_max_engage_range" "1000" - "npc_min_engage_range_heavy_armor" "100" - "npc_max_engage_range_heavy_armor" "2000" - "npc_min_range" "0" - "npc_max_range" "8000" - - "npc_min_burst" "1" - "npc_max_burst" "1" - "npc_rest_time_between_bursts_min" "0.5" - "npc_rest_time_between_bursts_max" "0.5" - - "enable_highlight_networking_on_creation" "" - - "damage_heavyarmor_nontitan_scale" "0.35" - } - - SP_BASE - { - "ammo_default_total" "20" - "ammo_stockpile_max" "32" - "ammo_no_remove_from_stockpile" "0" - "ammo_min_to_fire" "1" - - "aimassist_adspull_weaponclass" "broad_sp" - - "critical_hit" "0" - - // Damage - When Used by Players - "damage_near_value" "30" - "damage_far_value" "20" - "damage_near_value_titanarmor" "30" - "damage_far_value_titanarmor" "20" - // "explosion_damage" "50" - // "explosion_damage_heavy_armor" "50" - "damage_near_distance" "750" - "damage_far_distance" "850" - - "red_crosshair_range" "750" - - // Damage - When Used by NPCs - "npc_damage_near_value" "11" - "npc_damage_far_value" "5" - "npc_damage_near_value_titanarmor" "10" - "npc_damage_far_value_titanarmor" "8" - "npc_damage_near_distance" "500" - "npc_damage_far_distance" "1000" - - // NPC - "npc_min_engage_range" "0" - "npc_max_engage_range" "1000" - "npc_min_engage_range_heavy_armor" "100" - "npc_max_engage_range_heavy_armor" "2000" - "npc_min_range" "0" - "npc_max_range" "8000" - - "npc_min_burst" "1" - "npc_max_burst" "1" - "npc_rest_time_between_bursts_min" "0.7" - "npc_rest_time_between_bursts_max" "1.0" - - "enable_highlight_networking_on_creation" "1" - - "damage_heavyarmor_nontitan_scale" "1" - } - - "proficiency_poor_spreadscale" "5.0" - "proficiency_average_spreadscale" "5.0" - "proficiency_good_spreadscale" "3.66667" - "proficiency_very_good_spreadscale" "3.66667" - - "viewmodel_offset_ads" "0 0 0" - "dof_zoom_nearDepthStart" "4.750" - "dof_zoom_nearDepthEnd" "11.00" - "dof_nearDepthStart" "0" - "dof_nearDepthEnd" "0" - - //"bolt_hitsize" "20" - - "bolt_hitsize" "0.5" - "bolt_hitsize_grow1_time" "0.055" - "bolt_hitsize_grow1_size" "5.0" - "bolt_hitsize_grow2_time" "0.18" - "bolt_hitsize_grow2_size" "7.5" - "bolt_hitsize_growfinal_lerptime" "0.18" - "bolt_hitsize_growfinal_size" "7.5" - - "bolt_gravity_enabled" "1" - - // Behavior - "fire_rate" "3.0" - "zoom_time_in" "0.2" - "zoom_time_out" "0.15" - "zoom_fov" "55" - "reload_time" "2.1" - "reload_time_late1" "1.05" - "reloadempty_time" "2.1" - "reloadempty_time_late1" "1.05" - "holster_time" "0.3" - "deploy_time" "0.4" - "lower_time" "0.2" - "raise_time" "0.2" - "vortex_refire_behavior" "bullet" - "allow_empty_fire" "0" - "reload_enabled" "0" - "allow_empty_click" "1" - "empty_reload_only" "0" - "trigger_snipercam" "0" - "allow_headshots" "1" - "headshot_distance" "1400" - "primary_fire_does_not_block_sprint" "0" - "ads_move_speed_scale" "0.5" - "aimassist_disable_hipfire" "1" - "aimassist_disable_ads" "1" - "aimassist_disable_hipfire_titansonly" "0" - "aimassist_disable_ads_titansonly" "0" - - "sprint_fractional_anims" "0" - - // Spread - "spread_stand_hip" "0" - "spread_stand_hip_run" "0" - "spread_stand_hip_sprint" "0" - "spread_stand_ads" "0" - "spread_crouch_hip" "0" - "spread_crouch_ads" "0" - "spread_air_hip" "0" - "spread_air_ads" "0" - - // Spread on NPCs affects their initial shooting direction - // Don't make this a large number or the damage/tracers won't be even remotely parallel to their barrel - - "ammo_suck_behavior" "primary_weapons" - - // View Kick - "viewkick_spring" "shotgun" - - "viewkick_pitch_base" "-2.25" - "viewkick_pitch_random" "1" - "viewkick_pitch_softScale" "1.4" - "viewkick_pitch_hardScale" "0.5" - - "viewkick_yaw_base" "-0.95" - "viewkick_yaw_random" "0.5" - "viewkick_yaw_softScale" "1.5" - "viewkick_yaw_hardScale" "0.5" - - "viewkick_roll_base" "0" - "viewkick_roll_randomMin" "0.6" - "viewkick_roll_randomMax" "0.8" - "viewkick_roll_softScale" "0.2" - "viewkick_roll_hardScale" "2.75" - - "viewkick_hipfire_weaponFraction" "0.1" - "viewkick_hipfire_weaponFraction_vmScale" "0.0" - "viewkick_ads_weaponFraction" "1.0" - "viewkick_ads_weaponFraction_vmScale" "0.15" - - "viewkick_perm_pitch_base" "0" - "viewkick_perm_pitch_random" "0.0" - - // - "viewmodel_shake_forward" "0.5" - "viewmodel_shake_up" "0.2" - "viewmodel_shake_right" "0.0" - - // Bob - "bob_cycle_time" "0.4" - "bob_vert_dist" "0.19" - "bob_horz_dist" "0.1" - "bob_max_speed" "150" - "bob_pitch" "0.75" - "bob_yaw" "-1.7" - "bob_roll" "1.2" - - // Bob_Zoomed - "bob_cycle_time_zoomed" "0.4" - "bob_vert_dist_zoomed" "0.01" - "bob_horz_dist_zoomed" "0.01" - "bob_max_speed_zoomed" "150" - //"bob_pitch_zoomed" "0.002" - //"bob_yaw_zoomed" "-.002" - //"bob_roll_zoomed" ".002" - - // Rumble - "fire_rumble" "rumble_pistol_heavy" - - // Sway - "sway_rotate_attach" "SWAY_ROTATE" - "sway_min_x" "-0.5" - "sway_min_y" "-0.5" - "sway_min_z" "-0.6" - "sway_max_x" "0.5" - "sway_max_y" "0.5" - "sway_max_z" "0.6" - "sway_min_pitch" "-3" - "sway_min_yaw" "-2.5" - "sway_min_roll" "-4" - "sway_max_pitch" "3" - "sway_max_yaw" "2.5" - "sway_max_roll" "4" - "sway_translate_gain" "2.5" - "sway_rotate_gain" "7" - "sway_move_forward_translate_x" "-0.1" - "sway_move_forward_translate_z" "-0.5" - "sway_move_back_translate_x" "0.2" - "sway_move_back_translate_z" "-0.2" - "sway_move_left_translate_y" "-1" - "sway_move_left_translate_z" "-0.5" - "sway_move_left_rotate_roll" "-4" - "sway_move_right_translate_y" "1" - "sway_move_right_translate_z" "-0.5" - "sway_move_right_rotate_roll" "4" - "sway_move_up_translate_z" "-1" - "sway_move_down_translate_z" "1" - "sway_turn_left_rotate_yaw" "-2.5" - "sway_turn_right_rotate_yaw" "2.5" - - "sway_turn_left_translate_y" ".5" - "sway_turn_right_translate_y" "-.5" - "sway_turn_up_translate_z" ".2" - "sway_turn_down_translate_z" "-.2" - "sway_turn_up_translate_x" ".1" - "sway_turn_down_translate_x" "-.1" - - "sway_turn_left_rotate_roll" "4" - "sway_turn_right_rotate_roll" "-4" - "sway_turn_up_rotate_pitch" "3" - "sway_turn_down_rotate_pitch" "-3" - "sway_turn_up_rotate_roll" "-0.8" - "sway_turn_down_rotate_roll" "0.8" - - // Zoomed Sway - "sway_rotate_attach_zoomed" "SWAY_ROTATE_ZOOMED" - "sway_rotate_attach_blend_time_zoomed" "0.2" - "sway_rotate_gain_zoomed" "5" - - "sway_min_yaw_zoomed" "-0.073" - "sway_max_yaw_zoomed" "0.073" - "sway_turn_left_rotate_yaw_zoomed" "-0.085" - "sway_turn_right_rotate_yaw_zoomed" "0.085" - - "sway_min_roll_zoomed" "-4" - "sway_max_roll_zoomed" "4" - "sway_turn_left_rotate_roll_zoomed" "0" - "sway_turn_right_rotate_roll_zoomed" "0" - - "sway_move_right_rotate_roll_zoomed" "0.2" - "sway_move_left_rotate_roll_zoomed" "-0.2" - - "sway_min_pitch_zoomed" "-0.03" - "sway_max_pitch_zoomed" "0.03" - "sway_turn_up_rotate_pitch_zoomed" "0.07" - "sway_turn_down_rotate_pitch_zoomed" "-0.07" - - // WeaponED Unhandled Key/Values and custom script Key/Values - "bob_tilt_angle" "0.5" - "sway_turn_angle_factor" "-0.5" - "sway_turn_origin_factor" "0" - "sway_turn_angle_factor_zoomed" "0" - "sway_turn_origin_factor_zoomed" "0.05" - "sway_move_angle_factor" "0.15" - "sway_move_origin_factor" "0.15" - "sway_move_angle_factor_zoomed" "0" - "sway_move_origin_factor_zoomed" "0.03" - "sway_gain" "10.0" - "deployfirst_time" "1.0" - "deploycatch_time" "1.33" - "sprintcycle_time" ".55" - - // Bodygroups: - "bodygroup1_name" "suppressor_cyl_med" - "bodygroup1_set" "0" - "bodygroup2_name" "suppressor_sq_med" - "bodygroup2_set" "1" // enable suppressor bodygroup by default - "bodygroup3_name" "sight_cqh" - "bodygroup3_set" "0" - "bodygroup4_name" "sight_acgs" - "bodygroup4_set" "0" - "bodygroup5_name" "sight_cro" - "bodygroup5_set" "0" - "bodygroup6_name" "proscreen" - "bodygroup6_set" "1" // enable proscreen bodygroup by default - - "clip_bodygroup" "pstl_sa3_shell" - "clip_bodygroup_index_shown" "0" - "clip_bodygroup_index_hidden" "1" - "clip_bodygroup_show_for_milestone_0" "1" - "clip_bodygroup_show_for_milestone_1" "0" - "clip_bodygroup_show_for_milestone_2" "0" - "clip_bodygroup_show_for_milestone_3" "0" - - Mods - { - iron_sights - { - } - extended_ammo - { - "ammo_stockpile_max" "160" - "ammo_clip_size" "8" - "ammo_default_total" "160" - } - silencer //HACK JFS: Doesn't get applied on amped weapons. See bug 170460 - { - "bodygroup2_set" "1" - "silenced" "1" - "fire_sound_1_player_1p" "weapon_shotgunpistol_fire_suppressed_1p" - "fire_sound_1_player_3p" "weapon_shotgunpistol_fire_suppressed_3p" - "damage_near_value" "--10" - "damage_far_value" "--4" - //"bodygroup2_set" "1" - - //"rumble" "4" - //"tracer_effect" "P_wpn_tracer_pistol" - "minimap_reveal_distance" "1" - - "fx_muzzle_flash_view" "wpn_muzzleflash_pistol_sup_FP" - "fx_muzzle_flash_world" "wpn_muzzleflash_pistol_sup" - //"fx_muzzle_flash_attach" "muzzle_flash_suppressor_sq" - } - pas_run_and_gun - { - "primary_fire_does_not_block_sprint" "1" - "crosshair_force_sprint_fade_disabled" "1" - } - alt_spread - { - } - hcog - { - "bodygroup3_set" "1" - "bodygroup4_set" "0" - "bodygroup5_set" "0" - "viewmodel_offset_ads" "0 -6 -0.79" - "dof_zoom_nearDepthStart" "0.750" - "dof_zoom_nearDepthEnd" "8.000" - } - threat_scope - { - "bodygroup3_set" "0" - "bodygroup4_set" "0" - "bodygroup5_set" "1" - "threat_scope_enabled" "1" - "threat_scope_bounds_tagname1" "SCR_TR_CRO" - "threat_scope_bounds_tagname2" "SCR_BL_CRO" - "viewmodel_offset_ads" "0 -10 -0.83" - "dof_zoom_nearDepthStart" "5.040" - "dof_zoom_nearDepthEnd" "5.737" - } - pro_screen - { - "ui8_enable" "1" - "bodygroup6_set" "1" - } - pas_fast_reload - { - "reload_time" "*0.7" - "reload_time_late1" "*0.7" - "reloadempty_time" "*0.7" - "reloadempty_time_late1" "*0.7" - } - pas_fast_ads - { - //Fast ADS - "zoom_time_in" "*0.5" - "zoom_time_out" "*0.6" - } - pas_fast_swap - { - //Fast Swap - "fast_swap_to" "1" - } - tactical_cdr_on_kill - { - - } - burn_mod_shotgun_pistol - { - "damage_near_value" "++5" - "damage_far_value" "++10" - "damage_near_value_titanarmor" "++30" - "damage_far_value_titanarmor" "++30" - "is_burn_mod" "1" - - //Effects - "fx_muzzle_flash_view" "P_wpn_muz_SGPistol_amp_FP" - "fx_muzzle_flash_world" "P_wpn_muz_mastiff_amp" - "projectile_trail_effect_0" "P_mastiff_proj_amp" - "impact_effect_table" "titan_bullet_elec" - } - - } - - - "ui1_enable" "1" - "ui1_draw_cloaked" "1" - UiData1 - { - "ui" "ui/sa3_crosshair" - "mesh" "models/weapons/attachments/sa3_rui_upper" - Args - { - vis player_zoomfrac - } - } - - "ui2_enable" "1" - UiData2 - { - "ui" "ui/sa3_ammo_counter" - "mesh" "models/weapons/attachments/sa3_rui_lower" - Args - { - vis player_zoomfrac - ammo weapon_ammo - clipSize weapon_clipSize - clipCount weapon_stockpileClipCount - } - } - - "ui8_enable" "1" - UiData8 - { - "ui" "ui/pro_screen_panel" - "mesh" "models/weapons/attachments/pro_screen_rui_upper" - Args - { - proValue proscreen_int0 - proOwnedByPlayer proscreen_owner_is_player - } - } - - active_crosshair_count "1" - rui_crosshair_index "0" - - RUI_CrosshairData - { - DefaultArgs - { - adjustedSpread weapon_spread - adsFrac player_zoomFrac - isSprinting player_is_sprinting - isReloading weapon_is_reloading - teamColor crosshair_team_color - isAmped weapon_is_amped - crosshairMovementX crosshair_movement_x - crosshairMovementY crosshair_movement_y - } - - Crosshair_1 - { - "ui" "ui/crosshair_mozambique" - "base_spread" "0.0" - Args - { - isFiring weapon_is_firing - } - } - } -} -- cgit v1.2.3