This commit is contained in:
mv 2024-08-30 02:58:34 +03:00
parent 58942549ae
commit af074008ce
7 changed files with 218 additions and 108 deletions

View File

@ -1279,7 +1279,7 @@ CON_COMMAND_F( openserverbrowser, "Opens server browser", 0 )
#ifdef INFESTED_DLL
KeyValues *pSchemeKV = new KeyValues( "SetCustomScheme" );
pSchemeKV->SetString( "SchemeName", "SwarmFrameScheme" );
pSchemeKV->SetString( "SchemeName", "SwarmServerBrowserScheme" );
g_VModuleLoader.PostMessageToAllModules( pSchemeKV );
#endif
}

View File

@ -388,6 +388,52 @@ void ClientPrecache( void )
// Game Instructor lessons - don't want people making simple scripted wall hacks
engine->ForceExactFile( "scripts/instructor_lessons.txt" );
engine->ForceExactFile( "scripts/mod_lessons.txt" );
// weapon scripts
engine->ForceExactFile( "scripts/asw_weapon_ammo_bag.txt" );
engine->ForceExactFile( "scripts/asw_weapon_ammo_satchel.txt" );
engine->ForceExactFile( "scripts/asw_weapon_autogun.txt" );
engine->ForceExactFile( "scripts/asw_weapon_blink.txt" );
engine->ForceExactFile( "scripts/asw_weapon_buff_grenade.txt" );
engine->ForceExactFile( "scripts/asw_weapon_chainsaw.txt" );
engine->ForceExactFile( "scripts/asw_weapon_electrified_armor.txt" );
engine->ForceExactFile( "scripts/asw_weapon_fire_extinguisher.txt" );
engine->ForceExactFile( "scripts/asw_weapon_fist.txt" );
engine->ForceExactFile( "scripts/asw_weapon_flamer.txt" );
engine->ForceExactFile( "scripts/asw_weapon_flares.txt" );
engine->ForceExactFile( "scripts/asw_weapon_flashlight.txt" );
engine->ForceExactFile( "scripts/asw_weapon_freeze_grenades.txt" );
engine->ForceExactFile( "scripts/asw_weapon_grenades.txt" );
engine->ForceExactFile( "scripts/asw_weapon_grenade_launcher.txt" );
engine->ForceExactFile( "scripts/asw_weapon_heal_grenade.txt" );
engine->ForceExactFile( "scripts/asw_weapon_heal_gun.txt" );
engine->ForceExactFile( "scripts/asw_weapon_hornet_barrage.txt" );
engine->ForceExactFile( "scripts/asw_weapon_jump_jet.txt" );
engine->ForceExactFile( "scripts/asw_weapon_laser_mines.txt" );
engine->ForceExactFile( "scripts/asw_weapon_medical_satchel.txt" );
engine->ForceExactFile( "scripts/asw_weapon_medkit.txt" );
engine->ForceExactFile( "scripts/asw_weapon_mines.txt" );
engine->ForceExactFile( "scripts/asw_weapon_minigun.txt" );
engine->ForceExactFile( "scripts/asw_weapon_mining_laser.txt" );
engine->ForceExactFile( "scripts/asw_weapon_night_vision.txt" );
engine->ForceExactFile( "scripts/asw_weapon_normal_armor.txt" );
engine->ForceExactFile( "scripts/asw_weapon_pdw.txt" );
engine->ForceExactFile( "scripts/asw_weapon_pistol.txt" );
engine->ForceExactFile( "scripts/asw_weapon_prifle.txt" );
engine->ForceExactFile( "scripts/asw_weapon_railgun.txt" );
engine->ForceExactFile( "scripts/asw_weapon_rifle.txt" );
engine->ForceExactFile( "scripts/asw_weapon_sentry.txt" );
engine->ForceExactFile( "scripts/asw_weapon_sentry_cannon.txt" );
engine->ForceExactFile( "scripts/asw_weapon_sentry_flamer.txt" );
engine->ForceExactFile( "scripts/asw_weapon_sentry_freeze.txt" );
engine->ForceExactFile( "scripts/asw_weapon_shotgun.txt" );
engine->ForceExactFile( "scripts/asw_weapon_smart_bomb.txt" );
engine->ForceExactFile( "scripts/asw_weapon_sniper_rifle.txt" );
engine->ForceExactFile( "scripts/asw_weapon_stim.txt" );
engine->ForceExactFile( "scripts/asw_weapon_tesla_gun.txt" );
engine->ForceExactFile( "scripts/asw_weapon_tesla_trap.txt" );
engine->ForceExactFile( "scripts/asw_weapon_vindicator.txt" );
engine->ForceExactFile( "scripts/asw_weapon_welder.txt" );
}
CON_COMMAND_F( cast_ray, "Tests collision detection", FCVAR_CHEAT )

View File

@ -1896,6 +1896,49 @@ void CServerGameDLL::GetMatchmakingTags( char *buf, size_t bufSize )
Q_strncpy( buf, mp_gamemode.GetString(), bufSize );
#endif
#ifdef INFESTED_DLL
extern ConVar asw_marine_ff_absorption;
extern ConVar asw_sentry_friendly_fire_scale;
extern ConVar asw_skill;
char * const bufBase = buf;
int len = 0;
// hardcore friendly fire
if ( asw_marine_ff_absorption.GetInt() != 1 || asw_sentry_friendly_fire_scale.GetFloat() != 0.0f )
{
Q_strncpy( buf, "HardcoreFF,", bufSize );
len = strlen( buf );
buf += len;
bufSize -= len;
}
// difficulty level
const char *szSkill = "Normal,";
switch( asw_skill.GetInt() )
{
case 1: szSkill = "Easy,"; break;
case 3: szSkill = "Hard,"; break;
case 4: szSkill = "Insane,"; break;
}
Q_strncpy( buf, szSkill, bufSize );
len = strlen( buf );
buf += len;
bufSize -= len;
if ( ASWGameRules() && ASWGameRules()->GetGameState() == ASW_GS_BRIEFING )
{
Q_strncpy( buf, "Briefing,", bufSize );
len = strlen( buf );
buf += len;
bufSize -= len;
}
// Trim the last comma if anything was written
if ( buf > bufBase )
buf[ -1 ] = 0;
#endif
}
void CServerGameDLL::GetMatchmakingGameData( char *buf, size_t bufSize )

View File

@ -345,6 +345,13 @@ BEGIN_DATADESC( CASW_Marine )
DEFINE_FIELD( m_bPowerupExpires, FIELD_BOOLEAN ),
END_DATADESC()
void UpdateMatchmakingTags();
static void FriendlyFireCallback( IConVar *pConVar, const char *pOldValue, float flOldValue )
{
UpdateMatchmakingTags();
}
extern ConVar weapon_showproficiency;
extern ConVar asw_leadership_radius;
extern ConVar asw_buzzer_poison_duration;
@ -374,7 +381,7 @@ ConVar asw_marine_ff("asw_marine_ff", "1", FCVAR_CHEAT, "Marine friendly fire se
ConVar asw_marine_ff_guard_time("asw_marine_ff_guard_time", "5.0", FCVAR_CHEAT, "Amount of time firing is disabled for when activating friendly fire guard");
ConVar asw_marine_ff_dmg_base("asw_marine_ff_dmg_base", "1.0", FCVAR_CHEAT, "Amount of friendly fire damage on mission difficulty 5");
ConVar asw_marine_ff_dmg_step("asw_marine_ff_dmg_step", "0.2", FCVAR_CHEAT, "Amount friendly fire damage is modified per mission difficuly level away from 5");
ConVar asw_marine_ff_absorption("asw_marine_ff_absorption", "1", FCVAR_NONE, "Friendly fire absorption style (0=none 1=ramp up 2=ramp down)");
ConVar asw_marine_ff_absorption("asw_marine_ff_absorption", "1", FCVAR_NONE, "Friendly fire absorption style (0=none 1=ramp up 2=ramp down)", FriendlyFireCallback );
ConVar asw_marine_ff_absorption_decay_rate("asw_marine_ff_absorption_decay_rate", "0.33f", FCVAR_CHEAT, "Rate of FF absorption decay");
ConVar asw_marine_ff_absorption_build_rate("asw_marine_ff_absorption_build_rate", "0.25f", FCVAR_CHEAT, "Rate of FF absorption decay build up when being shot by friendlies");
ConVar asw_marine_burn_time_easy("asw_marine_burn_time_easy", "6", FCVAR_CHEAT, "Amount of time marine burns for when ignited on easy difficulty");
@ -388,6 +395,7 @@ ConVar asw_marine_special_idle_chatter_chance("asw_marine_special_idle_chatter_c
ConVar asw_force_ai_fire("asw_force_ai_fire", "0", FCVAR_CHEAT, "Forces all AI marines to fire constantly");
ConVar asw_realistic_death_chatter("asw_realistic_death_chatter", "0", FCVAR_NONE, "If true, only 1 nearby marine will shout about marine deaths");
ConVar asw_god( "asw_god", "0", FCVAR_CHEAT, "Set to 1 to make marines invulnerable" );
ConVar asw_sentry_friendly_fire_scale( "asw_sentry_friendly_fire_scale", "0", FCVAR_NONE, "Damage scale for sentry gun friendly fire", FriendlyFireCallback );
ConVar asw_movement_direction_tolerance( "asw_movement_direction_tolerance", "30.0", FCVAR_CHEAT );
ConVar asw_movement_direction_interval( "asw_movement_direction_interval", "0.5", FCVAR_CHEAT );
@ -997,8 +1005,6 @@ void CASW_Marine::DoMuzzleFlash()
}
}
extern ConVar asw_sentry_friendly_fire_scale;
int CASW_Marine::OnTakeDamage_Alive( const CTakeDamageInfo &info )
{
// make marines immune to crush damage

View File

@ -28,7 +28,7 @@ IMPLEMENT_SERVERCLASS_ST(CASW_Sentry_Top, DT_ASW_Sentry_Top)
END_SEND_TABLE()
ConVar asw_sentry_friendly_target("asw_sentry_friendly_target", "0", FCVAR_CHEAT, "Whether the sentry targets friendlies or not");
ConVar asw_sentry_friendly_fire_scale( "asw_sentry_friendly_fire_scale", "0", FCVAR_CHEAT, "Damage scale for sentry gun friendly fire" );
extern ConVar asw_sentry_friendly_fire_scale;
//---------------------------------------------------------

View File

@ -627,6 +627,19 @@ const char * GenerateNewSaveGameName()
return NULL;
}
void UpdateMatchmakingTags()
{
// update sv_tags to force an update of the matchmaking tags
static ConVarRef sv_tags( "sv_tags" );
if ( sv_tags.IsValid() )
{
char buffer[ 1024 ];
Q_snprintf( buffer, sizeof( buffer ), "%s", sv_tags.GetString() );
sv_tags.SetValue( buffer );
}
}
CAlienSwarm::CAlienSwarm()
{
Msg("CAlienSwarm created\n");
@ -5186,6 +5199,8 @@ void CAlienSwarm::OnSkillLevelChanged( int iNewLevel )
gameeventmanager->FireEvent( event );
}
}
UpdateMatchmakingTags();
m_iSkillLevel = iNewLevel;
}

View File

@ -19,124 +19,124 @@
#include "tier0/memdbgon.h"
// base convars
ConVar asw_skill_leadership_accuracy_chance_base("asw_skill_leadership_accuracy_chance_base", "0", FCVAR_REPLICATED );
ConVar asw_skill_leadership_damage_resist_base("asw_skill_leadership_damage_resist_base", "0", FCVAR_REPLICATED );
ConVar asw_skill_vindicator_dmg_base("asw_skill_vindicator_dmg_base", "0", FCVAR_REPLICATED );
ConVar asw_skill_vindicator_pellets_base("asw_skill_vindicator_pellets_base", "0", FCVAR_REPLICATED );
ConVar asw_skill_leadership_accuracy_chance_base("asw_skill_leadership_accuracy_chance_base", "0", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_leadership_damage_resist_base("asw_skill_leadership_damage_resist_base", "0", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_vindicator_dmg_base("asw_skill_vindicator_dmg_base", "0", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_vindicator_pellets_base("asw_skill_vindicator_pellets_base", "7", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_autogun_base("asw_skill_autogun_base", "0", FCVAR_REPLICATED );
ConVar asw_skill_piercing_base("asw_skill_piercing_base", "0", FCVAR_REPLICATED );
ConVar asw_skill_autogun_base("asw_skill_autogun_base", "0", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_piercing_base("asw_skill_piercing_base", "0", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_healing_charges_base("asw_skill_healing_charges_base", "0", FCVAR_REPLICATED );
ConVar asw_skill_self_healing_charges_base("asw_skill_self_healing_charges_base", "0", FCVAR_REPLICATED );
ConVar asw_skill_healing_medkit_hps_base("asw_skill_healing_medkit_hps_base", "0", FCVAR_REPLICATED );
ConVar asw_skill_healing_hps_base("asw_skill_healing_hps_base", "0", FCVAR_REPLICATED );
ConVar asw_skill_healing_grenade_base("asw_skill_healing_grenade_base", "0", FCVAR_REPLICATED );
ConVar asw_skill_healing_gun_charges_base("asw_skill_healing_gun_charges_base", "0", FCVAR_REPLICATED );
ConVar asw_skill_healing_gun_base("asw_skill_healing_gun_base", "0", FCVAR_REPLICATED );
ConVar asw_skill_xenowounds_base("asw_skill_xenowounds_base", "0", FCVAR_REPLICATED );
ConVar asw_skill_drugs_base("asw_skill_drugs_base", "0", FCVAR_REPLICATED );
ConVar asw_skill_healing_charges_base("asw_skill_healing_charges_base", "4", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_self_healing_charges_base("asw_skill_self_healing_charges_base", "2", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_healing_medkit_hps_base("asw_skill_healing_medkit_hps_base", "50", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_healing_hps_base("asw_skill_healing_hps_base", "25", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_healing_grenade_base("asw_skill_healing_grenade_base", "50", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_healing_gun_charges_base("asw_skill_healing_gun_charges_base", "40", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_healing_gun_base("asw_skill_healing_gun_base", "5", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_xenowounds_base("asw_skill_xenowounds_base", "100", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_drugs_base("asw_skill_drugs_base", "5", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_hacking_speed_base("asw_skill_hacking_speed_base", "0", FCVAR_REPLICATED );
ConVar asw_skill_scanner_base("asw_skill_scanner_base", "0", FCVAR_REPLICATED );
ConVar asw_skill_engineering_welding_base("asw_skill_engineering_welding_base", "0", FCVAR_REPLICATED );
ConVar asw_skill_engineering_sentry_base("asw_skill_engineering_sentry_base", "0", FCVAR_REPLICATED );
ConVar asw_skill_hacking_speed_base("asw_skill_hacking_speed_base", "2.0", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_scanner_base("asw_skill_scanner_base", "600", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_engineering_welding_base("asw_skill_engineering_welding_base", "0.8", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_engineering_sentry_base("asw_skill_engineering_sentry_base", "1.0", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_grenades_radius_base("asw_skill_grenades_radius_base", "0", FCVAR_REPLICATED );
ConVar asw_skill_grenades_dmg_base("asw_skill_grenades_dmg_base", "0", FCVAR_REPLICATED );
ConVar asw_skill_grenades_incendiary_dmg_base("asw_skill_grenades_incendiary_dmg_base", "0", FCVAR_REPLICATED );
ConVar asw_skill_grenades_cluster_dmg_base("asw_skill_grenades_cluster_dmg_base", "0", FCVAR_REPLICATED );
ConVar asw_skill_grenades_clusters_base("asw_skill_grenades_clusters_base", "0", FCVAR_REPLICATED );
ConVar asw_skill_grenades_flechette_dmg_base("asw_skill_grenades_flechette_dmg_base", "0", FCVAR_REPLICATED );
ConVar asw_skill_grenades_hornet_dmg_base("asw_skill_grenades_hornet_dmg_base", "0", FCVAR_REPLICATED );
ConVar asw_skill_grenades_hornet_count_base("asw_skill_grenades_hornet_count_base", "0", FCVAR_REPLICATED );
ConVar asw_skill_grenades_hornet_interval_base("asw_skill_grenades_hornet_interval_base", "0", FCVAR_REPLICATED );
ConVar asw_skill_grenades_freeze_radius_base("asw_skill_grenades_freeze_radius_base", "0", FCVAR_REPLICATED );
ConVar asw_skill_grenades_freeze_duration_base("asw_skill_grenades_freeze_duration_base", "0", FCVAR_REPLICATED );
ConVar asw_skill_grenades_smart_count_base("asw_skill_grenades_smart_count_base", "0", FCVAR_REPLICATED );
ConVar asw_skill_grenades_smart_interval_base("asw_skill_grenades_smart_interval_base", "0", FCVAR_REPLICATED );
ConVar asw_skill_grenades_radius_base("asw_skill_grenades_radius_base", "280", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_grenades_dmg_base("asw_skill_grenades_dmg_base", "80", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_grenades_incendiary_dmg_base("asw_skill_grenades_incendiary_dmg_base", "80", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_grenades_cluster_dmg_base("asw_skill_grenades_cluster_dmg_base", "80", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_grenades_clusters_base("asw_skill_grenades_clusters_base", "0", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_grenades_flechette_dmg_base("asw_skill_grenades_flechette_dmg_base", "10", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_grenades_hornet_dmg_base("asw_skill_grenades_hornet_dmg_base", "50", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_grenades_hornet_count_base("asw_skill_grenades_hornet_count_base", "8", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_grenades_hornet_interval_base("asw_skill_grenades_hornet_interval_base", "0.09", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_grenades_freeze_radius_base("asw_skill_grenades_freeze_radius_base", "210", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_grenades_freeze_duration_base("asw_skill_grenades_freeze_duration_base", "3.0", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_grenades_smart_count_base("asw_skill_grenades_smart_count_base", "32", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_grenades_smart_interval_base("asw_skill_grenades_smart_interval_base", "0.09", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_health_base("asw_skill_health_base", "0", FCVAR_REPLICATED );
ConVar asw_skill_melee_dmg_base("asw_skill_melee_dmg_base", "0", FCVAR_REPLICATED );
ConVar asw_skill_melee_force_base("asw_skill_melee_force_base", "0", FCVAR_REPLICATED );
ConVar asw_skill_melee_speed_base("asw_skill_melee_speed_base", "0", FCVAR_REPLICATED );
ConVar asw_skill_reloading_base("asw_skill_reloading_base", "0", FCVAR_REPLICATED );
ConVar asw_skill_reloading_fast_base( "asw_skill_reloading_fast_base", "0", FCVAR_REPLICATED );
ConVar asw_skill_agility_movespeed_base("asw_skill_agility_movespeed_base", "0", FCVAR_REPLICATED );
ConVar asw_skill_health_base("asw_skill_health_base", "80", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_melee_dmg_base("asw_skill_melee_dmg_base", "30", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_melee_force_base("asw_skill_melee_force_base", "10", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_melee_speed_base("asw_skill_melee_speed_base", "1.0", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_reloading_base("asw_skill_reloading_base", "1.4", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_reloading_fast_base( "asw_skill_reloading_fast_base", "1.0", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_agility_movespeed_base("asw_skill_agility_movespeed_base", "290", FCVAR_REPLICATED | FCVAR_CHEAT );
// step convars
ConVar asw_skill_leadership_accuracy_chance_step("asw_skill_leadership_accuracy_chance_step", "0", FCVAR_REPLICATED );
ConVar asw_skill_leadership_damage_resist_step("asw_skill_leadership_damage_resist_step", "0", FCVAR_REPLICATED );
ConVar asw_skill_vindicator_dmg_step("asw_skill_vindicator_dmg_step", "0", FCVAR_REPLICATED );
ConVar asw_skill_vindicator_pellets_step("asw_skill_vindicator_pellets_step", "0", FCVAR_REPLICATED );
ConVar asw_skill_leadership_accuracy_chance_step("asw_skill_leadership_accuracy_chance_step", "0.03", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_leadership_damage_resist_step("asw_skill_leadership_damage_resist_step", "0.06", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_vindicator_dmg_step("asw_skill_vindicator_dmg_step", "2.0", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_vindicator_pellets_step("asw_skill_vindicator_pellets_step", "0", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_autogun_step("asw_skill_autogun_step", "0", FCVAR_REPLICATED );
ConVar asw_skill_piercing_step("asw_skill_piercing_step", "0", FCVAR_REPLICATED );
ConVar asw_skill_autogun_step("asw_skill_autogun_step", "1", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_piercing_step("asw_skill_piercing_step", "0.20", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_healing_charges_step("asw_skill_healing_charges_step", "0", FCVAR_REPLICATED );
ConVar asw_skill_self_healing_charges_step("asw_skill_self_healing_charges_step", "0", FCVAR_REPLICATED );
ConVar asw_skill_healing_hps_step("asw_skill_healing_hps_step", "0", FCVAR_REPLICATED );
ConVar asw_skill_healing_grenade_step("asw_skill_healing_grenade_step", "0", FCVAR_REPLICATED );
ConVar asw_skill_healing_gun_charges_step("asw_skill_healing_gun_charges_step", "0", FCVAR_REPLICATED );
ConVar asw_skill_healing_gun_step("asw_skill_healing_gun_step", "0", FCVAR_REPLICATED );
ConVar asw_skill_healing_medkit_hps_step("asw_skill_healing_medkit_hps_step", "0", FCVAR_REPLICATED );
ConVar asw_skill_xenowounds_step("asw_skill_xenowounds_step", "0", FCVAR_REPLICATED );
ConVar asw_skill_drugs_step("asw_skill_drugs_step", "0", FCVAR_REPLICATED );
ConVar asw_skill_healing_charges_step("asw_skill_healing_charges_step", "1", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_self_healing_charges_step("asw_skill_self_healing_charges_step", "0.5", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_healing_hps_step("asw_skill_healing_hps_step", "8", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_healing_grenade_step("asw_skill_healing_grenade_step", "10", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_healing_gun_charges_step("asw_skill_healing_gun_charges_step", "10", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_healing_gun_step("asw_skill_healing_gun_step", "1", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_healing_medkit_hps_step("asw_skill_healing_medkit_hps_step", "5", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_xenowounds_step("asw_skill_xenowounds_step", "-25", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_drugs_step("asw_skill_drugs_step", "0.8", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_hacking_speed_step("asw_skill_hacking_speed_step", "0", FCVAR_REPLICATED );
ConVar asw_skill_scanner_step("asw_skill_scanner_step", "0", FCVAR_REPLICATED );
ConVar asw_skill_engineering_welding_step("asw_skill_engineering_welding_step", "0", FCVAR_REPLICATED );
ConVar asw_skill_engineering_sentry_step("asw_skill_engineering_sentry_step", "0", FCVAR_REPLICATED );
ConVar asw_skill_hacking_speed_step("asw_skill_hacking_speed_step", "0.1", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_scanner_step("asw_skill_scanner_step", "150", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_engineering_welding_step("asw_skill_engineering_welding_step", "0.5", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_engineering_sentry_step("asw_skill_engineering_sentry_step", "0.25", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_grenades_radius_step("asw_skill_grenades_radius_step", "0", FCVAR_REPLICATED );
ConVar asw_skill_grenades_dmg_step("asw_skill_grenades_dmg_step", "0", FCVAR_REPLICATED );
ConVar asw_skill_grenades_incendiary_dmg_step("asw_skill_grenades_incendiary_dmg_step", "0", FCVAR_REPLICATED );
ConVar asw_skill_grenades_cluster_dmg_step("asw_skill_grenades_cluster_dmg_step", "0", FCVAR_REPLICATED );
ConVar asw_skill_grenades_clusters_step("asw_skill_grenades_clusters_step", "0", FCVAR_REPLICATED );
ConVar asw_skill_grenades_flechette_dmg_step("asw_skill_grenades_flechette_dmg_step", "0", FCVAR_REPLICATED );
ConVar asw_skill_grenades_hornet_dmg_step("asw_skill_grenades_hornet_dmg_step", "0", FCVAR_REPLICATED );
ConVar asw_skill_grenades_hornet_count_step("asw_skill_grenades_hornet_count_step", "0", FCVAR_REPLICATED );
ConVar asw_skill_grenades_hornet_interval_step("asw_skill_grenades_hornet_interval_step", "0", FCVAR_REPLICATED );
ConVar asw_skill_grenades_freeze_radius_step("asw_skill_grenades_freeze_radius_step", "0", FCVAR_REPLICATED );
ConVar asw_skill_grenades_freeze_duration_step("asw_skill_grenades_freeze_duration_step", "0", FCVAR_REPLICATED );
ConVar asw_skill_grenades_smart_count_step("asw_skill_grenades_smart_count_step", "0", FCVAR_REPLICATED );
ConVar asw_skill_grenades_smart_interval_step("asw_skill_grenades_smart_interval_step", "0", FCVAR_REPLICATED );
ConVar asw_skill_grenades_radius_step("asw_skill_grenades_radius_step", "20", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_grenades_dmg_step("asw_skill_grenades_dmg_step", "10", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_grenades_incendiary_dmg_step("asw_skill_grenades_incendiary_dmg_step", "10", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_grenades_cluster_dmg_step("asw_skill_grenades_cluster_dmg_step", "10", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_grenades_clusters_step("asw_skill_grenades_clusters_step", "1", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_grenades_flechette_dmg_step("asw_skill_grenades_flechette_dmg_step", "1", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_grenades_hornet_dmg_step("asw_skill_grenades_hornet_dmg_step", "1", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_grenades_hornet_count_step("asw_skill_grenades_hornet_count_step", "0", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_grenades_hornet_interval_step("asw_skill_grenades_hornet_interval_step", "0", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_grenades_freeze_radius_step("asw_skill_grenades_freeze_radius_step", "0", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_grenades_freeze_duration_step("asw_skill_grenades_freeze_duration_step", "0.3", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_grenades_smart_count_step("asw_skill_grenades_smart_count_step", "0", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_grenades_smart_interval_step("asw_skill_grenades_smart_interval_step", "0", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_health_step("asw_skill_health_step", "0", FCVAR_REPLICATED );
ConVar asw_skill_melee_dmg_step("asw_skill_melee_dmg_step", "0", FCVAR_REPLICATED );
ConVar asw_skill_melee_force_step("asw_skill_melee_force_step", "0", FCVAR_REPLICATED );
ConVar asw_skill_melee_speed_step("asw_skill_melee_speed_step", "0", FCVAR_REPLICATED );
ConVar asw_skill_reloading_step("asw_skill_reloading_step", "0", FCVAR_REPLICATED );
ConVar asw_skill_reloading_fast_step( "asw_skill_reloading_fast_step", "0", FCVAR_REPLICATED );
ConVar asw_skill_agility_movespeed_step("asw_skill_agility_movespeed_step", "0", FCVAR_REPLICATED );
ConVar asw_skill_agility_reload_step("asw_skill_agility_reload_step", "0", FCVAR_REPLICATED );
ConVar asw_skill_health_step("asw_skill_health_step", "15", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_melee_dmg_step("asw_skill_melee_dmg_step", "6", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_melee_force_step("asw_skill_melee_force_step", "1.0", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_melee_speed_step("asw_skill_melee_speed_step", "0.1", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_reloading_step("asw_skill_reloading_step", "-0.14", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_reloading_fast_step( "asw_skill_reloading_fast_step", "0.05", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_agility_movespeed_step("asw_skill_agility_movespeed_step", "10", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_agility_reload_step("asw_skill_agility_reload_step", "0", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_mines_fires_base("asw_skill_mines_fires_base", "0", FCVAR_REPLICATED );
ConVar asw_skill_mines_fires_step("asw_skill_mines_fires_step", "0", FCVAR_REPLICATED );
ConVar asw_skill_mines_duration_base("asw_skill_mines_duration_base", "0", FCVAR_REPLICATED );
ConVar asw_skill_mines_duration_step("asw_skill_mines_duration_step", "0", FCVAR_REPLICATED );
ConVar asw_skill_mines_fires_base("asw_skill_mines_fires_base", "1", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_mines_fires_step("asw_skill_mines_fires_step", "0.5", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_mines_duration_base("asw_skill_mines_duration_base", "10.0", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_mines_duration_step("asw_skill_mines_duration_step", "5.0", FCVAR_REPLICATED | FCVAR_CHEAT );
// accuracy convars
ConVar asw_skill_accuracy_rifle_dmg_base("asw_skill_accuracy_rifle_dmg_base", "0", FCVAR_REPLICATED );
ConVar asw_skill_accuracy_rifle_dmg_step("asw_skill_accuracy_rifle_dmg_step", "0", FCVAR_REPLICATED );
ConVar asw_skill_accuracy_prifle_dmg_base("asw_skill_accuracy_prifle_dmg_base", "0", FCVAR_REPLICATED );
ConVar asw_skill_accuracy_prifle_dmg_step("asw_skill_accuracy_prifle_dmg_step", "0", FCVAR_REPLICATED );
ConVar asw_skill_accuracy_shotgun_dmg_base("asw_skill_accuracy_shotgun_dmg_base", "0", FCVAR_REPLICATED );
ConVar asw_skill_accuracy_shotgun_dmg_step("asw_skill_accuracy_shotgun_dmg_step", "0", FCVAR_REPLICATED );
ConVar asw_skill_accuracy_railgun_dmg_base("asw_skill_accuracy_railgun_dmg_base", "0", FCVAR_REPLICATED );
ConVar asw_skill_accuracy_railgun_dmg_step("asw_skill_accuracy_railgun_dmg_step", "0", FCVAR_REPLICATED );
ConVar asw_skill_accuracy_flamer_dmg_base("asw_skill_accuracy_flamer_dmg_base", "0", FCVAR_REPLICATED );
ConVar asw_skill_accuracy_flamer_dmg_step("asw_skill_accuracy_flamer_dmg_step", "0", FCVAR_REPLICATED );
ConVar asw_skill_accuracy_pistol_dmg_base("asw_skill_accuracy_pistol_dmg_base", "0", FCVAR_REPLICATED );
ConVar asw_skill_accuracy_pistol_dmg_step("asw_skill_accuracy_pistol_dmg_step", "0", FCVAR_REPLICATED );
ConVar asw_skill_accuracy_pdw_dmg_base("asw_skill_accuracy_pdw_dmg_base", "0", FCVAR_REPLICATED );
ConVar asw_skill_accuracy_pdw_dmg_step("asw_skill_accuracy_pdw_dmg_step", "0", FCVAR_REPLICATED );
ConVar asw_skill_muzzle_flash_base("asw_skill_muzzle_flash_base", "1.0", FCVAR_REPLICATED );
ConVar asw_skill_muzzle_flash_step("asw_skill_muzzle_flash_step", "0.2", FCVAR_REPLICATED );
ConVar asw_skill_accuracy_sniper_rifle_dmg_base("asw_skill_accuracy_sniper_rifle_dmg_base", "0", FCVAR_REPLICATED );
ConVar asw_skill_accuracy_sniper_rifle_dmg_step("asw_skill_accuracy_sniper_rifle_dmg_step", "0", FCVAR_REPLICATED );
ConVar asw_skill_accuracy_tesla_cannon_dmg_base("asw_skill_accuracy_tesla_cannon_dmg_base", "0", FCVAR_REPLICATED );
ConVar asw_skill_accuracy_tesla_cannon_dmg_step("asw_skill_accuracy_tesla_cannon_dmg_step", "0", FCVAR_REPLICATED );
ConVar asw_skill_accuracy_rifle_dmg_base("asw_skill_accuracy_rifle_dmg_base", "0", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_accuracy_rifle_dmg_step("asw_skill_accuracy_rifle_dmg_step", "1", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_accuracy_prifle_dmg_base("asw_skill_accuracy_prifle_dmg_base", "0", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_accuracy_prifle_dmg_step("asw_skill_accuracy_prifle_dmg_step", "1", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_accuracy_shotgun_dmg_base("asw_skill_accuracy_shotgun_dmg_base", "0", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_accuracy_shotgun_dmg_step("asw_skill_accuracy_shotgun_dmg_step", "2", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_accuracy_railgun_dmg_base("asw_skill_accuracy_railgun_dmg_base", "0", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_accuracy_railgun_dmg_step("asw_skill_accuracy_railgun_dmg_step", "10", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_accuracy_flamer_dmg_base("asw_skill_accuracy_flamer_dmg_base", "0", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_accuracy_flamer_dmg_step("asw_skill_accuracy_flamer_dmg_step", "0.5", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_accuracy_pistol_dmg_base("asw_skill_accuracy_pistol_dmg_base", "0", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_accuracy_pistol_dmg_step("asw_skill_accuracy_pistol_dmg_step", "2", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_accuracy_pdw_dmg_base("asw_skill_accuracy_pdw_dmg_base", "0", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_accuracy_pdw_dmg_step("asw_skill_accuracy_pdw_dmg_step", "1.0", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_muzzle_flash_base("asw_skill_muzzle_flash_base", "1.0", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_muzzle_flash_step("asw_skill_muzzle_flash_step", "0.2", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_accuracy_sniper_rifle_dmg_base("asw_skill_accuracy_sniper_rifle_dmg_base", "0", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_accuracy_sniper_rifle_dmg_step("asw_skill_accuracy_sniper_rifle_dmg_step", "10", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_accuracy_tesla_cannon_dmg_base("asw_skill_accuracy_tesla_cannon_dmg_base", "0", FCVAR_REPLICATED | FCVAR_CHEAT );
ConVar asw_skill_accuracy_tesla_cannon_dmg_step("asw_skill_accuracy_tesla_cannon_dmg_step", "025", FCVAR_REPLICATED | FCVAR_CHEAT );
namespace
{