IL-GSC/AW/PC/MP/maps/mp/perks/_perks.gsc
2023-10-27 03:49:01 -04:00

491 lines
20 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps/mp/perks/_perks.gsc
* Game: Call of Duty: Advanced Warfare
* Platform: PC
* Function Count: 10
* Decompile Time: 173 ms
* Timestamp: 10/27/2023 1:52:36 AM
*******************************************************************/
//Function Number: 1
init()
{
level.perkfuncs = [];
level.specialty_finalstand_icon = "specialty_s1_temp";
level.specialty_c4_death_icon = "specialty_s1_temp";
level.specialty_compassping_revenge_icon = "specialty_s1_temp";
level.specialty_juiced_icon = "specialty_s1_temp";
if(!isdefined(level.iszombiegame) || !level.iszombiegame)
{
level.spawnglowmodel["enemy"] = "static_tactical_insertion_device";
level.spawnglowmodel["friendly"] = "static_tactical_insertion_device";
level.spawnglow["enemy"] = loadfx("vfx/props/tac_insert_enemy");
level.spawnglow["friendly"] = loadfx("vfx/props/tac_insert_friendly");
level.spawnfire = loadfx("vfx/explosion/mp_tac_explosion");
}
level._effect["ricochet"] = loadfx("fx/impacts/large_metalhit_1");
level.scriptperks = [];
level.perksetfuncs = [];
level.perkunsetfuncs = [];
level.scriptperks["specialty_blastshield"] = 1;
level.scriptperks["_specialty_blastshield"] = 1;
level.scriptperks["specialty_akimbo"] = 1;
level.scriptperks["specialty_falldamage"] = 1;
level.scriptperks["specialty_shield"] = 1;
level.scriptperks["specialty_feigndeath"] = 1;
level.scriptperks["specialty_shellshock"] = 1;
level.scriptperks["specialty_delaymine"] = 1;
level.scriptperks["specialty_localjammer"] = 1;
level.scriptperks["specialty_thermal"] = 1;
level.scriptperks["specialty_blackbox"] = 1;
level.scriptperks["specialty_steelnerves"] = 1;
level.scriptperks["specialty_flashgrenade"] = 1;
level.scriptperks["specialty_smokegrenade"] = 1;
level.scriptperks["specialty_concussiongrenade"] = 1;
level.scriptperks["specialty_saboteur"] = 1;
level.scriptperks["specialty_endgame"] = 1;
level.scriptperks["specialty_rearview"] = 1;
level.scriptperks["specialty_hardline"] = 1;
level.scriptperks["specialty_onemanarmy"] = 1;
level.scriptperks["specialty_primarydeath"] = 1;
level.scriptperks["specialty_secondarybling"] = 1;
level.scriptperks["specialty_explosivedamage"] = 1;
level.scriptperks["specialty_laststandoffhand"] = 1;
level.scriptperks["specialty_dangerclose"] = 1;
level.scriptperks["specialty_hardjack"] = 1;
level.scriptperks["specialty_extraspecialduration"] = 1;
level.scriptperks["specialty_rollover"] = 1;
level.scriptperks["specialty_armorpiercing"] = 1;
level.scriptperks["specialty_omaquickchange"] = 1;
level.scriptperks["_specialty_rearview"] = 1;
level.scriptperks["_specialty_onemanarmy"] = 1;
level.scriptperks["specialty_steadyaimpro"] = 1;
level.scriptperks["specialty_stun_resistance"] = 1;
level.scriptperks["specialty_double_load"] = 1;
level.scriptperks["specialty_regenspeed"] = 1;
level.scriptperks["specialty_twoprimaries"] = 1;
level.scriptperks["specialty_autospot"] = 1;
level.scriptperks["specialty_overkillpro"] = 1;
level.scriptperks["specialty_anytwo"] = 1;
level.scriptperks["specialty_fasterlockon"] = 1;
level.scriptperks["specialty_paint"] = 1;
level.scriptperks["specialty_paint_pro"] = 1;
level.scriptperks["specialty_silentkill"] = 1;
level.scriptperks["specialty_crouchmovement"] = 1;
level.scriptperks["specialty_personaluav"] = 1;
level.scriptperks["specialty_unwrapper"] = 1;
level.scriptperks["specialty_class_blindeye"] = 1;
level.scriptperks["specialty_class_lowprofile"] = 1;
level.scriptperks["specialty_class_coldblooded"] = 1;
level.scriptperks["specialty_class_hardwired"] = 1;
level.scriptperks["specialty_class_scavenger"] = 1;
level.scriptperks["specialty_class_hoarder"] = 1;
level.scriptperks["specialty_class_gungho"] = 1;
level.scriptperks["specialty_class_steadyhands"] = 1;
level.scriptperks["specialty_class_hardline"] = 1;
level.scriptperks["specialty_class_peripherals"] = 1;
level.scriptperks["specialty_class_quickdraw"] = 1;
level.scriptperks["specialty_class_toughness"] = 1;
level.scriptperks["specialty_class_lightweight"] = 1;
level.scriptperks["specialty_class_engineer"] = 1;
level.scriptperks["specialty_class_dangerclose"] = 1;
level.scriptperks["specialty_horde_weaponsfree"] = 1;
level.scriptperks["specialty_horde_dualprimary"] = 1;
level.scriptperks["specialty_marksman"] = 1;
level.scriptperks["specialty_sharp_focus"] = 1;
level.scriptperks["specialty_moredamage"] = 1;
level.scriptperks["specialty_copycat"] = 1;
level.scriptperks["specialty_finalstand"] = 1;
level.scriptperks["specialty_juiced"] = 1;
level.scriptperks["specialty_light_armor"] = 1;
level.scriptperks["specialty_carepackage"] = 1;
level.scriptperks["specialty_stopping_power"] = 1;
level.scriptperks["specialty_uav"] = 1;
level.scriptperks["bouncingbetty_mp"] = 1;
level.scriptperks["c4_mp"] = 1;
level.scriptperks["claymore_mp"] = 1;
level.scriptperks["frag_grenade_mp"] = 1;
level.scriptperks["semtex_mp"] = 1;
level.scriptperks["tracking_drone_mp"] = 1;
level.scriptperks["throwingknife_mp"] = 1;
level.scriptperks["exoknife_mp"] = 1;
level.scriptperks["exoknife_jug_mp"] = 1;
level.scriptperks["paint_grenade_mp"] = 1;
level.scriptperks["tri_drone_mp"] = 1;
level.scriptperks["explosive_gel_mp"] = 1;
level.scriptperks["frag_grenade_var_mp"] = 1;
level.scriptperks["contact_grenade_var_mp"] = 1;
level.scriptperks["semtex_grenade_var_mp"] = 1;
level.scriptperks["stun_grenade_var_mp"] = 1;
level.scriptperks["emp_grenade_var_mp"] = 1;
level.scriptperks["paint_grenade_var_mp"] = 1;
level.scriptperks["smoke_grenade_var_mp"] = 1;
level.scriptperks["explosive_drone_mp"] = 1;
level.scriptperks["concussion_grenade_mp"] = 1;
level.scriptperks["flash_grenade_mp"] = 1;
level.scriptperks["stun_grenade_mp"] = 1;
level.scriptperks["smoke_grenade_mp"] = 1;
level.scriptperks["emp_grenade_mp"] = 1;
level.scriptperks["portable_radar_mp"] = 1;
level.scriptperks["scrambler_mp"] = 1;
level.scriptperks["trophy_mp"] = 1;
level.scriptperks["s1_tactical_insertion_device_mp"] = 1;
level.scriptperks["specialty_wildcard_perkslot1"] = 1;
level.scriptperks["specialty_wildcard_perkslot2"] = 1;
level.scriptperks["specialty_wildcard_perkslot3"] = 1;
level.scriptperks["specialty_wildcard_primaryattachment"] = 1;
level.scriptperks["specialty_wildcard_secondaryattachment"] = 1;
level.scriptperks["specialty_wildcard_extrastreak"] = 1;
level.scriptperks["specialty_null"] = 1;
level.perksetfuncs["specialty_blastshield"] = ::maps\mp\perks\_perkfunctions::setblastshield;
level.perkunsetfuncs["specialty_blastshield"] = ::maps\mp\perks\_perkfunctions::unsetblastshield;
level.perksetfuncs["specialty_falldamage"] = ::maps\mp\perks\_perkfunctions::setfreefall;
level.perkunsetfuncs["specialty_falldamage"] = ::maps\mp\perks\_perkfunctions::unsetfreefall;
level.perksetfuncs["specialty_localjammer"] = ::maps\mp\perks\_perkfunctions::setlocaljammer;
level.perkunsetfuncs["specialty_localjammer"] = ::maps\mp\perks\_perkfunctions::unsetlocaljammer;
level.perksetfuncs["specialty_thermal"] = ::maps\mp\perks\_perkfunctions::setthermal;
level.perkunsetfuncs["specialty_thermal"] = ::maps\mp\perks\_perkfunctions::unsetthermal;
level.perksetfuncs["specialty_blackbox"] = ::maps\mp\perks\_perkfunctions::setblackbox;
level.perkunsetfuncs["specialty_blackbox"] = ::maps\mp\perks\_perkfunctions::unsetblackbox;
level.perksetfuncs["specialty_lightweight"] = ::maps\mp\perks\_perkfunctions::setlightweight;
level.perkunsetfuncs["specialty_lightweight"] = ::maps\mp\perks\_perkfunctions::unsetlightweight;
level.perksetfuncs["specialty_steelnerves"] = ::maps\mp\perks\_perkfunctions::setsteelnerves;
level.perkunsetfuncs["specialty_steelnerves"] = ::maps\mp\perks\_perkfunctions::unsetsteelnerves;
level.perksetfuncs["specialty_delaymine"] = ::maps\mp\perks\_perkfunctions::setdelaymine;
level.perkunsetfuncs["specialty_delaymine"] = ::maps\mp\perks\_perkfunctions::unsetdelaymine;
level.perksetfuncs["specialty_saboteur"] = ::maps\mp\perks\_perkfunctions::setsaboteur;
level.perkunsetfuncs["specialty_saboteur"] = ::maps\mp\perks\_perkfunctions::unsetsaboteur;
level.perksetfuncs["specialty_endgame"] = ::maps\mp\perks\_perkfunctions::setendgame;
level.perkunsetfuncs["specialty_endgame"] = ::maps\mp\perks\_perkfunctions::unsetendgame;
level.perksetfuncs["specialty_rearview"] = ::maps\mp\perks\_perkfunctions::setrearview;
level.perkunsetfuncs["specialty_rearview"] = ::maps\mp\perks\_perkfunctions::unsetrearview;
level.perksetfuncs["specialty_onemanarmy"] = ::maps\mp\perks\_perkfunctions::setonemanarmy;
level.perkunsetfuncs["specialty_onemanarmy"] = ::maps\mp\perks\_perkfunctions::unsetonemanarmy;
level.perksetfuncs["specialty_steadyaimpro"] = ::maps\mp\perks\_perkfunctions::setsteadyaimpro;
level.perkunsetfuncs["specialty_steadyaimpro"] = ::maps\mp\perks\_perkfunctions::unsetsteadyaimpro;
level.perksetfuncs["specialty_stun_resistance"] = ::maps\mp\perks\_perkfunctions::setstunresistance;
level.perkunsetfuncs["specialty_stun_resistance"] = ::maps\mp\perks\_perkfunctions::unsetstunresistance;
level.perksetfuncs["specialty_marksman"] = ::maps\mp\perks\_perkfunctions::setmarksman;
level.perkunsetfuncs["specialty_marksman"] = ::maps\mp\perks\_perkfunctions::unsetmarksman;
level.perksetfuncs["specialty_double_load"] = ::maps\mp\perks\_perkfunctions::setdoubleload;
level.perkunsetfuncs["specialty_double_load"] = ::maps\mp\perks\_perkfunctions::unsetdoubleload;
level.perksetfuncs["specialty_sharp_focus"] = ::maps\mp\perks\_perkfunctions::setsharpfocus;
level.perkunsetfuncs["specialty_sharp_focus"] = ::maps\mp\perks\_perkfunctions::unsetsharpfocus;
level.perksetfuncs["specialty_regenspeed"] = ::maps\mp\perks\_perkfunctions::setregenspeed;
level.perkunsetfuncs["specialty_regenspeed"] = ::maps\mp\perks\_perkfunctions::unsetregenspeed;
level.perksetfuncs["specialty_autospot"] = ::maps\mp\perks\_perkfunctions::setautospot;
level.perkunsetfuncs["specialty_autospot"] = ::maps\mp\perks\_perkfunctions::unsetautospot;
level.perksetfuncs["specialty_empimmune"] = ::maps\mp\perks\_perkfunctions::setempimmune;
level.perkunsetfuncs["specialty_empimmune"] = ::maps\mp\perks\_perkfunctions::unsetempimmune;
level.perksetfuncs["specialty_overkill_pro"] = ::maps\mp\perks\_perkfunctions::setoverkillpro;
level.perkunsetfuncs["specialty_overkill_pro"] = ::maps\mp\perks\_perkfunctions::unsetoverkillpro;
level.perksetfuncs["specialty_personaluav"] = ::maps\mp\perks\_perkfunctions::setpersonaluav;
level.perkunsetfuncs["specialty_personaluav"] = ::maps\mp\perks\_perkfunctions::unsetpersonaluav;
level.perksetfuncs["specialty_crouchmovement"] = ::maps\mp\perks\_perkfunctions::setcrouchmovement;
level.perkunsetfuncs["specialty_crouchmovement"] = ::maps\mp\perks\_perkfunctions::unsetcrouchmovement;
level.perksetfuncs["specialty_light_armor"] = ::maps\mp\perks\_perkfunctions::setlightarmor;
level.perkunsetfuncs["specialty_light_armor"] = ::maps\mp\perks\_perkfunctions::unsetlightarmor;
level.perksetfuncs["specialty_finalstand"] = ::maps\mp\perks\_perkfunctions::setfinalstand;
level.perkunsetfuncs["specialty_finalstand"] = ::maps\mp\perks\_perkfunctions::unsetfinalstand;
level.perksetfuncs["specialty_juiced"] = ::maps\mp\perks\_perkfunctions::setjuiced;
level.perkunsetfuncs["specialty_juiced"] = ::maps\mp\perks\_perkfunctions::unsetjuiced;
level.perksetfuncs["specialty_carepackage"] = ::maps\mp\perks\_perkfunctions::setcarepackage;
level.perkunsetfuncs["specialty_carepackage"] = ::maps\mp\perks\_perkfunctions::unsetcarepackage;
level.perksetfuncs["specialty_stopping_power"] = ::maps\mp\perks\_perkfunctions::setstoppingpower;
level.perkunsetfuncs["specialty_stopping_power"] = ::maps\mp\perks\_perkfunctions::unsetstoppingpower;
level.perksetfuncs["specialty_uav"] = ::maps\mp\perks\_perkfunctions::setuav;
level.perkunsetfuncs["specialty_uav"] = ::maps\mp\perks\_perkfunctions::unsetuav;
initperkdvars();
level thread onplayerconnect();
}
//Function Number: 2
validateperk(param_00,param_01)
{
if(getdvarint("scr_game_perks") == 0)
{
return "specialty_null";
}
if(param_00 == 0 || param_00 == 1)
{
switch(param_01)
{
case "specialty_class_flakjacket":
case "specialty_extended_battery":
case "specialty_class_dangerclose":
case "specialty_class_lightweight":
case "specialty_class_lowprofile":
break;
default:
break;
}
}
}
//Function Number: 3
getemptyperks()
{
var_00 = [];
for(var_01 = 0;var_01 < 6;var_01++)
{
var_00[var_01] = "specialty_null";
}
return var_00;
}
//Function Number: 4
onplayerconnect()
{
for(;;)
{
level waittill("connected",var_00);
var_00 thread onplayerspawned();
}
}
//Function Number: 5
onplayerspawned()
{
self endon("disconnect");
self.perks = [];
self.weaponlist = [];
self.omaclasschanged = 0;
for(;;)
{
self waittill("spawned_player");
self.omaclasschanged = 0;
thread maps\mp\gametypes\_scrambler::scramblerproximitytracker();
}
}
//Function Number: 6
cac_modified_damage(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08)
{
var_09 = 0;
var_0A = maps\mp\_utility::strip_suffix(param_04,"_lefthand");
if(maps\mp\_utility::isbulletdamage(param_03))
{
if(isplayer(param_01) && param_01 maps\mp\_utility::_hasperk("specialty_paint_pro") && !maps\mp\_utility::iskillstreakweapon(param_04) && isplayer(param_00) && !param_00 maps\mp\_utility::_hasperk("specialty_class_lowprofile"))
{
if(!param_00 maps\mp\perks\_perkfunctions::ispainted())
{
param_01 maps\mp\gametypes\_missions::processchallenge("ch_bulletpaint");
}
if(param_01.trackrounds.has_trackrounds)
{
param_00 thread maps\mp\_trackrounds::set_painted_trackrounds(param_01);
}
param_00 thread maps\mp\perks\_perkfunctions::setpainted(param_01);
}
if(isplayer(param_01) && isdefined(param_04) && maps\mp\_utility::getweaponclass(param_04) == "weapon_sniper" && issubstr(param_04,"silencer"))
{
param_02 = param_02 * 0.75;
}
if(isplayer(param_01) && param_01 maps\mp\_utility::_hasperk("specialty_bulletdamage") && param_00 maps\mp\_utility::_hasperk("specialty_armorvest"))
{
var_09 = var_09 + 0;
}
else if(isplayer(param_01) && param_01 maps\mp\_utility::_hasperk("specialty_bulletdamage") || param_01 maps\mp\_utility::_hasperk("specialty_moredamage"))
{
var_09 = var_09 + param_02 * level.bulletdamagemod;
}
else if(param_00 maps\mp\_utility::_hasperk("specialty_armorvest"))
{
var_09 = var_09 - param_02 * level.armorvestmod;
}
if(param_00 maps\mp\_utility::isjuggernaut())
{
var_0B = isdefined(param_00.juggernautweak) && param_00.juggernautweak && param_07 == "head" || param_07 == "helmet";
if(!var_0B)
{
param_02 = param_02 * level.juggernautmod;
}
}
}
else if(isexplosivedamagemod(param_03))
{
if(isplayer(param_01) && param_01 != param_00 && param_01 isitemunlocked("specialty_paint") && param_01 maps\mp\_utility::_hasperk("specialty_paint") && !maps\mp\_utility::iskillstreakweapon(param_04))
{
if(!param_00 maps\mp\perks\_perkfunctions::ispainted())
{
param_01 maps\mp\gametypes\_missions::processchallenge("ch_paint_pro");
}
param_00 thread maps\mp\perks\_perkfunctions::setpainted(param_01);
}
if(isplayer(param_01) && weaponinheritsperks(param_04) && param_01 maps\mp\_utility::_hasperk("specialty_explosivedamage") && param_00 maps\mp\_utility::_hasperk("_specialty_blastshield"))
{
var_09 = var_09 + 0;
}
else if(isplayer(param_01) && weaponinheritsperks(param_04) && param_01 maps\mp\_utility::_hasperk("specialty_explosivedamage"))
{
var_09 = var_09 + param_02 * level.explosivedamagemod;
}
else if(param_00 maps\mp\_utility::_hasperk("_specialty_blastshield") && isdefined(param_00.specialty_blastshield_bonus) && var_0A != "semtex_mp" || param_02 < 125)
{
var_09 = var_09 - int(param_02 * param_00.specialty_blastshield_bonus);
}
if(maps\mp\_utility::iskillstreakweapon(param_04) && isplayer(param_01) && param_01 maps\mp\_utility::_hasperk("specialty_explosivedamage"))
{
var_09 = var_09 + param_02 * level.explosivedamagemod;
}
if(param_00 maps\mp\_utility::isjuggernaut())
{
switch(param_04)
{
case "ac130_25mm_mp":
break;
case "remotemissile_projectile_gas_mp":
case "remotemissile_projectile_cluster_parent_mp":
case "remotemissile_projectile_mp":
break;
default:
break;
}
}
}
}
//Function Number: 7
initperkdvars()
{
level.juggernautmod = 0.08;
level.juggernatudefmod = 0.08;
level.armorpiercingmod = 1.5;
level.regenhealthmod = 0.25;
level.bulletdamagemod = maps\mp\_utility::getintproperty("perk_bulletDamage",12) / 100;
level.explosivedamagemod = maps\mp\_utility::getintproperty("perk_explosiveDamage",10) / 100;
level.riotshieldmod = maps\mp\_utility::getintproperty("perk_riotShield",100) / 100;
level.armorvestmod = maps\mp\_utility::getintproperty("perk_armorVest",20) / 100;
}
//Function Number: 8
cac_selector()
{
}
//Function Number: 9
giveblindeyeafterspawn()
{
self endon("death");
self endon("disconnect");
maps\mp\_utility::giveperk("specialty_blindeye",0);
self.spawnperk = 1;
while(self.avoidkillstreakonspawntimer > 0)
{
self.avoidkillstreakonspawntimer = self.avoidkillstreakonspawntimer - 0.05;
wait(0.05);
}
maps\mp\_utility::_unsetperk("specialty_blindeye");
self.spawnperk = 0;
}
//Function Number: 10
applyperks()
{
self setviewkickscale(0.5);
if(maps\mp\_utility::_hasperk("specialty_extended_battery"))
{
maps\mp\_utility::giveperk("specialty_exo_slamboots",0);
}
if(maps\mp\_utility::_hasperk("specialty_class_lowprofile"))
{
maps\mp\_utility::giveperk("specialty_radarimmune",0);
maps\mp\_utility::giveperk("specialty_exoping_immune",0);
}
if(maps\mp\_utility::_hasperk("specialty_class_flakjacket"))
{
maps\mp\_utility::giveperk("specialty_hard_shell",0);
maps\mp\_utility::giveperk("specialty_throwback",0);
maps\mp\_utility::giveperk("_specialty_blastshield",0);
self.specialty_blastshield_bonus = maps\mp\_utility::getintproperty("perk_blastShieldScale",45) / 100;
if(isdefined(level.hardcoremode) && level.hardcoremode)
{
self.specialty_blastshield_bonus = maps\mp\_utility::getintproperty("perk_blastShieldScale_HC",50) / 100;
}
}
if(maps\mp\_utility::_hasperk("specialty_class_lightweight"))
{
maps\mp\_utility::giveperk("specialty_lightweight",0);
}
if(maps\mp\_utility::_hasperk("specialty_class_dangerclose"))
{
maps\mp\_utility::giveperk("specialty_explosivedamage",0);
}
if(maps\mp\_utility::_hasperk("specialty_class_blindeye"))
{
maps\mp\_utility::giveperk("specialty_blindeye",0);
maps\mp\_utility::giveperk("specialty_plainsight",0);
}
if(maps\mp\_utility::_hasperk("specialty_class_coldblooded"))
{
maps\mp\_utility::giveperk("specialty_coldblooded",0);
maps\mp\_utility::giveperk("specialty_spygame",0);
maps\mp\_utility::giveperk("specialty_heartbreaker",0);
}
if(maps\mp\_utility::_hasperk("specialty_class_peripherals") || maps\mp\_utility::practiceroundgame())
{
maps\mp\_utility::giveperk("specialty_moreminimap",0);
maps\mp\_utility::giveperk("specialty_silentkill",0);
}
if(maps\mp\_utility::_hasperk("specialty_class_fasthands"))
{
maps\mp\_utility::giveperk("specialty_quickswap",0);
maps\mp\_utility::giveperk("specialty_fastoffhand",0);
maps\mp\_utility::giveperk("specialty_sprintreload",0);
}
if(maps\mp\_utility::_hasperk("specialty_class_dexterity"))
{
maps\mp\_utility::giveperk("specialty_sprintfire",0);
}
if(maps\mp\_utility::_hasperk("specialty_class_hardwired"))
{
maps\mp\_utility::giveperk("specialty_empimmune",0);
maps\mp\_utility::giveperk("specialty_stun_resistance",0);
self.stunscaler = 0.1;
}
if(maps\mp\_utility::_hasperk("specialty_class_toughness"))
{
self setviewkickscale(0.2);
}
if(maps\mp\_utility::_hasperk("specialty_class_scavenger"))
{
self.ammopickup_scalar = 0.2;
maps\mp\_utility::giveperk("specialty_scavenger",0);
maps\mp\_utility::giveperk("specialty_bulletresupply",0);
maps\mp\_utility::giveperk("specialty_extraammo",0);
}
if(maps\mp\_utility::_hasperk("specialty_class_hardline"))
{
maps\mp\_utility::giveperk("specialty_hardline",0);
}
}