mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-06-24 08:27:55 -05:00
925 lines
22 KiB
Plaintext
925 lines
22 KiB
Plaintext
/*******************************************************************
|
|
* Decompiled By: Bog
|
|
* Decompiled File: maps\_sp_killstreaks.gsc
|
|
* Game: Call of Duty: Modern Warfare 3
|
|
* Platform: PC
|
|
* Function Count: 35
|
|
* Decompile Time: 568 ms
|
|
* Timestamp: 10/27/2023 2:20:50 AM
|
|
*******************************************************************/
|
|
|
|
//Function Number: 1
|
|
sp_killstreaks_global_preload()
|
|
{
|
|
precachestring(&"SP_KILLSTREAKS_CAPTURING_CRATE");
|
|
precacheshader("progress_bar_fill");
|
|
precacheshader("progress_bar_bg");
|
|
precacheshader("dpad_killstreak_carepackage");
|
|
precacheshader("specialty_carepackage");
|
|
precachestring(&"SP_KILLSTREAKS_SHAREPACKAGE_TITLE");
|
|
precachestring(&"SP_KILLSTREAKS_SHAREPACKAGE_DESC");
|
|
precachestring(&"SP_KILLSTREAKS_CRATE_HIJACK_TITLE");
|
|
precachestring(&"SP_KILLSTREAKS_CRATE_HIJACK_DESC");
|
|
precachestring(&"SP_KILLSTREAKS_EARNED_AIRDROP");
|
|
precachestring(&"SP_KILLSTREAKS_NAME_AIRDROP");
|
|
precacheitem("killstreak_sentry_sp");
|
|
precacheshader("specialty_sentry_gun_crate");
|
|
precacheshader("specialty_airdrop_sentry_minigun");
|
|
precachestring(&"SP_KILLSTREAKS_EARNED_AIRDROP_SENTRY");
|
|
precachestring(&"SP_KILLSTREAKS_SENTRY_PICKUP");
|
|
precachestring(&"SP_KILLSTREAKS_REWARDNAME_AIRDROP_SENTRY");
|
|
precachestring(&"SP_KILLSTREAKS_REWARDNAME_SENTRY");
|
|
precacheshader("specialty_stalker");
|
|
precacheshader("specialty_longersprint");
|
|
precacheshader("specialty_fastreload");
|
|
precacheshader("specialty_quickdraw");
|
|
precacheshader("specialty_steadyaim");
|
|
precachestring(&"SP_KILLSTREAKS_SPECIALTY_LONGERSPRINT_PICKUP");
|
|
precachestring(&"SP_KILLSTREAKS_SPECIALTY_FASTRELOAD_PICKUP");
|
|
precachestring(&"SP_KILLSTREAKS_SPECIALTY_QUICKDRAW_PICKUP");
|
|
precachestring(&"SP_KILLSTREAKS_SPECIALTY_BULLETACCURACY_PICKUP");
|
|
precachestring(&"SP_KILLSTREAKS_SPECIALTY_STALKER_PICKUP");
|
|
precacheitem("c4");
|
|
precacheshader("hud_icon_c4");
|
|
precachestring(&"SP_KILLSTREAKS_EARNED_AIRDROP_C4");
|
|
precachestring(&"SP_KILLSTREAKS_C4_PICKUP");
|
|
precachestring(&"SP_KILLSTREAKS_REWARDNAME_AIRDROP_C4");
|
|
precacheshader("waypoint_ammo_friendly");
|
|
precachestring(&"PLATFORM_RESUPPLY");
|
|
precachestring(&"SP_KILLSTREAKS_REWARDNAME_AIRDROP_AMMO");
|
|
precacheitem("remote_missile_detonator");
|
|
precacheitem("remote_missile");
|
|
precacheshader("dpad_killstreak_hellfire_missile");
|
|
precacheshader("specialty_predator_missile");
|
|
precachestring(&"SP_KILLSTREAKS_EARNED_PREDATOR_MISSILE");
|
|
precachestring(&"SP_KILLSTREAKS_REMOTEMISSILE_PICKUP");
|
|
precachestring(&"SP_KILLSTREAKS_REWARDNAME_AIRDROP_REMOTEMISSILE");
|
|
precachestring(&"SP_KILLSTREAKS_REWARDNAME_REMOTEMISSILE");
|
|
precacheshader("specialty_nuke");
|
|
}
|
|
|
|
//Function Number: 2
|
|
sp_killstreaks_init()
|
|
{
|
|
level.ks = spawnstruct();
|
|
level.ks.killstreaktypes = [];
|
|
var_00 = common_scripts\utility::getstruct("map_center","targetname");
|
|
level.mapcenter = var_00.origin;
|
|
common_scripts\utility::array_thread(level.players,::sp_killstreaks_player_init);
|
|
if(!maps\_sp_airdrop::sp_airdrop_init_done())
|
|
{
|
|
maps\_sp_airdrop::sp_airdrop_init();
|
|
}
|
|
|
|
sp_killstreaks_hud_init();
|
|
level.ks.globalinitdone = 1;
|
|
}
|
|
|
|
//Function Number: 3
|
|
sp_killstreaks_hud_init()
|
|
{
|
|
level.uiparent = spawnstruct();
|
|
level.uiparent.horzalign = "left";
|
|
level.uiparent.vertalign = "top";
|
|
level.uiparent.alignx = "left";
|
|
level.uiparent.aligny = "top";
|
|
level.uiparent.x = 0;
|
|
level.uiparent.y = 0;
|
|
level.uiparent.width = 0;
|
|
level.uiparent.height = 0;
|
|
level.uiparent.children = [];
|
|
level.fontheight = 12;
|
|
level.hud["allies"] = spawnstruct();
|
|
level.hud["axis"] = spawnstruct();
|
|
level.primaryprogressbary = -61;
|
|
level.primaryprogressbarx = 0;
|
|
level.primaryprogressbarheight = 9;
|
|
level.primaryprogressbarwidth = 120;
|
|
level.primaryprogressbartexty = -75;
|
|
level.primaryprogressbartextx = 0;
|
|
level.primaryprogressbarfontsize = 0.6;
|
|
level.teamprogressbary = 32;
|
|
level.teamprogressbarheight = 14;
|
|
level.teamprogressbarwidth = 192;
|
|
level.teamprogressbartexty = 8;
|
|
level.teamprogressbarfontsize = 1.65;
|
|
if(issplitscreen())
|
|
{
|
|
level.lowertextyalign = "BOTTOM";
|
|
level.lowertexty = -76;
|
|
level.lowertextfontsize = 1.14;
|
|
return;
|
|
}
|
|
|
|
level.lowertextyalign = "CENTER";
|
|
level.lowertexty = 70;
|
|
level.lowertextfontsize = 1.6;
|
|
}
|
|
|
|
//Function Number: 4
|
|
sp_killstreaks_init_done()
|
|
{
|
|
return isdefined(level.ks) && isdefined(level.ks.globalinitdone);
|
|
}
|
|
|
|
//Function Number: 5
|
|
sp_killstreaks_player_init()
|
|
{
|
|
self.ks = spawnstruct();
|
|
self.ks.killstreaks = [];
|
|
thread sp_killstreak_use_waiter();
|
|
if(!isdefined(self.remotemissile_actionslot))
|
|
{
|
|
self.remotemissile_actionslot = 4;
|
|
}
|
|
|
|
thread maps\_remotemissile_utility::remotemissile_no_autoreload();
|
|
}
|
|
|
|
//Function Number: 6
|
|
add_sp_killstreak(param_00)
|
|
{
|
|
var_01 = undefined;
|
|
var_02 = undefined;
|
|
var_03 = undefined;
|
|
var_04 = undefined;
|
|
var_05 = undefined;
|
|
var_06 = undefined;
|
|
var_07 = undefined;
|
|
var_08 = undefined;
|
|
var_09 = undefined;
|
|
if(issubstr(param_00,"specialty_"))
|
|
{
|
|
var_01 = "airdrop_marker_mp";
|
|
var_02 = ::sp_killstreak_carepackage_main;
|
|
var_0A = "SP_KILLSTREAKS_REWARDNAME_AIRDROP";
|
|
var_03 = "UK_1mc_achieve_carepackage";
|
|
var_04 = "UK_1mc_use_carepackage";
|
|
var_05 = "specialty_carepackage";
|
|
var_06 = &"SP_KILLSTREAKS_EARNED_AIRDROP";
|
|
var_09 = ::sp_killstreak_perk_crateopen;
|
|
switch(param_00)
|
|
{
|
|
case "specialty_longersprint":
|
|
var_07 = "specialty_longersprint";
|
|
var_08 = &"SP_KILLSTREAKS_SPECIALTY_LONGERSPRINT_PICKUP";
|
|
break;
|
|
|
|
case "specialty_fastreload":
|
|
var_07 = "specialty_fastreload";
|
|
var_08 = &"SP_KILLSTREAKS_SPECIALTY_FASTRELOAD_PICKUP";
|
|
break;
|
|
|
|
case "specialty_quickdraw":
|
|
var_07 = "specialty_quickdraw";
|
|
var_08 = &"SP_KILLSTREAKS_SPECIALTY_QUICKDRAW_PICKUP";
|
|
break;
|
|
|
|
case "specialty_detectexplosive":
|
|
var_07 = "specialty_bombsquad";
|
|
var_08 = &"SP_KILLSTREAKS_SPECIALTY_DETECTEXPLOSIVE_PICKUP";
|
|
break;
|
|
|
|
case "specialty_bulletaccuracy":
|
|
var_07 = "specialty_steadyaim";
|
|
var_08 = &"SP_KILLSTREAKS_SPECIALTY_BULLETACCURACY_PICKUP";
|
|
break;
|
|
|
|
case "specialty_stalker":
|
|
var_07 = "specialty_stalker";
|
|
var_08 = &"SP_KILLSTREAKS_SPECIALTY_STALKER_PICKUP";
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch(var_01)
|
|
{
|
|
case "carepackage":
|
|
var_02 = "airdrop_marker_mp";
|
|
var_03 = ::sp_killstreak_carepackage_main;
|
|
var_0A = "SP_KILLSTREAKS_REWARDNAME_AIRDROP";
|
|
var_03 = "UK_1mc_achieve_carepackage";
|
|
var_04 = "UK_1mc_use_carepackage";
|
|
var_05 = "specialty_carepackage";
|
|
var_06 = &"SP_KILLSTREAKS_EARNED_AIRDROP";
|
|
var_07 = "dpad_killstreak_carepackage";
|
|
var_08 = &"SP_KILLSTREAKS_NAME_AIRDROP";
|
|
var_09 = undefined;
|
|
break;
|
|
|
|
case "carepackage_sentry":
|
|
var_02 = "airdrop_marker_mp";
|
|
var_03 = ::sp_killstreak_carepackage_main;
|
|
var_0A = "SP_KILLSTREAKS_REWARDNAME_AIRDROP_SENTRY";
|
|
var_03 = "UK_1mc_deploy_sentry";
|
|
var_04 = undefined;
|
|
var_05 = "specialty_airdrop_sentry_minigun";
|
|
var_06 = &"SP_KILLSTREAKS_EARNED_AIRDROP_SENTRY";
|
|
var_07 = "specialty_sentry_gun_crate";
|
|
var_08 = &"SP_KILLSTREAKS_SENTRY_PICKUP";
|
|
var_09 = undefined;
|
|
break;
|
|
|
|
case "sentry":
|
|
var_02 = "killstreak_sentry_sp";
|
|
var_03 = ::sp_killstreak_autosentry_main;
|
|
var_0A = "SP_KILLSTREAKS_REWARDNAME_SENTRY";
|
|
if(getdvarint("survival_chaos") == 1)
|
|
{
|
|
var_03 = "cm_bp_cp_sentrygun";
|
|
}
|
|
else
|
|
{
|
|
var_03 = "UK_1mc_deploy_sentry";
|
|
}
|
|
|
|
var_04 = undefined;
|
|
var_05 = "specialty_airdrop_sentry_minigun";
|
|
var_06 = &"SP_KILLSTREAKS_EARNED_AIRDROP_SENTRY";
|
|
var_07 = "specialty_sentry_gun_crate";
|
|
var_08 = &"SP_KILLSTREAKS_SENTRY_PICKUP";
|
|
var_09 = undefined;
|
|
break;
|
|
|
|
case "sentry_gl":
|
|
var_02 = "killstreak_sentry_sp";
|
|
var_03 = ::sp_killstreak_autosentry_gl_main;
|
|
var_0A = "SP_KILLSTREAKS_REWARDNAME_SENTRY";
|
|
var_03 = "UK_1mc_deploy_sentry";
|
|
var_04 = undefined;
|
|
var_05 = "specialty_airdrop_sentry_minigun";
|
|
var_06 = &"SP_KILLSTREAKS_EARNED_AIRDROP_SENTRY";
|
|
var_07 = "specialty_sentry_gun_crate";
|
|
var_08 = &"SP_KILLSTREAKS_SENTRY_PICKUP";
|
|
var_09 = undefined;
|
|
break;
|
|
|
|
case "carepackage_remote_missile":
|
|
var_02 = "airdrop_marker_mp";
|
|
var_03 = ::sp_killstreak_carepackage_main;
|
|
var_0A = "SP_KILLSTREAKS_REWARDNAME_AIRDROP_REMOTEMISSILE";
|
|
var_03 = "UK_1mc_achieve_carepackage";
|
|
var_04 = "UK_1mc_use_carepackage";
|
|
var_05 = "specialty_predator_missile";
|
|
var_06 = &"SP_KILLSTREAKS_";
|
|
var_07 = "dpad_killstreak_carepackage";
|
|
var_08 = &"SP_KILLSTREAKS_NAME_AIRDROP";
|
|
var_09 = undefined;
|
|
break;
|
|
|
|
case "remote_missile":
|
|
var_02 = "remote_missile_detonator";
|
|
var_03 = ::sp_killstreak_remotemissile_main;
|
|
var_0A = "SP_KILLSTREAKS_REWARDNAME_REMOTEMISSILE";
|
|
var_03 = "UK_1mc_achieve_hellfire";
|
|
var_04 = "UK_1mc_use_hellfire";
|
|
var_05 = "specialty_predator_missile";
|
|
var_06 = &"SP_KILLSTREAKS_EARNED_PREDATOR_MISSILE";
|
|
var_07 = "dpad_killstreak_hellfire_missile";
|
|
var_08 = &"SP_KILLSTREAKS_REMOTEMISSILE_PICKUP";
|
|
var_09 = undefined;
|
|
break;
|
|
|
|
case "carepackage_c4":
|
|
var_02 = "airdrop_marker_mp";
|
|
var_03 = ::sp_killstreak_carepackage_main;
|
|
var_0A = "SP_KILLSTREAKS_REWARDNAME_AIRDROP_C4";
|
|
var_03 = "UK_1mc_achieve_carepackage";
|
|
var_04 = "UK_1mc_use_carepackage";
|
|
var_05 = "hud_icon_c4";
|
|
var_06 = &"SP_KILLSTREAKS_EARNED_AIRDROP_C4";
|
|
var_07 = "hud_icon_c4";
|
|
var_08 = &"SP_KILLSTREAKS_C4_PICKUP";
|
|
var_09 = ::sp_killstreak_c4_crateopen;
|
|
break;
|
|
|
|
case "carepackage_ammo":
|
|
var_02 = "airdrop_marker_mp";
|
|
var_03 = ::sp_killstreak_carepackage_main;
|
|
var_0A = "SP_KILLSTREAKS_REWARDNAME_AIRDROP_AMMO";
|
|
var_03 = "UK_1mc_achieve_carepackage";
|
|
var_04 = "UK_1mc_use_carepackage";
|
|
var_05 = "specialty_carepackage";
|
|
var_06 = &"SP_KILLSTREAKS_EARNED_AIRDROP";
|
|
var_07 = "waypoint_ammo_friendly";
|
|
var_08 = &"PLATFORM_RESUPPLY";
|
|
var_09 = ::sp_killstreak_ammo_crateopen;
|
|
break;
|
|
|
|
case "carepackage_precision_airstrike":
|
|
var_02 = "airdrop_marker_mp";
|
|
var_03 = ::sp_killstreak_carepackage_main;
|
|
var_0A = "SP_KILLSTREAKS_REWARDNAME_PRECISION_AIRSTRIKE";
|
|
var_03 = "UK_1mc_achieve_carepackage";
|
|
var_04 = "UK_1mc_use_carepackage";
|
|
var_05 = "specialty_precision_airstrike";
|
|
var_06 = &"SP_KILLSTREAKS_EARNED_PRECISION_AIRSTRIKE";
|
|
var_07 = "dpad_killstreak_carepackage";
|
|
var_08 = &"SP_KILLSTREAKS_PRECISION_AIRSTRIKE_PICKUP";
|
|
var_09 = undefined;
|
|
break;
|
|
|
|
case "precision_airstrike":
|
|
var_02 = "killstreak_precision_airstrike_sp";
|
|
var_03 = ::sp_killstreak_airstrike_main;
|
|
var_0A = "SP_KILLSTREAKS_REWARDNAME_PRECISION_AIRSTRIKE";
|
|
var_03 = "UK_1mc_achieve_airstrike";
|
|
var_04 = "UK_1mc_use_airstrike";
|
|
var_05 = "specialty_precision_airstrike";
|
|
var_06 = &"SP_KILLSTREAKS_EARNED_PRECISION_AIRSTRIKE";
|
|
var_07 = "dpad_killstreak_precision_airstrike";
|
|
var_08 = &"SP_KILLSTREAKS_PRECISION_AIRSTRIKE_PICKUP";
|
|
var_09 = undefined;
|
|
break;
|
|
|
|
case "carepackage_stealth_airstrike":
|
|
var_02 = "airdrop_marker_mp";
|
|
var_03 = ::sp_killstreak_carepackage_main;
|
|
var_0A = "SP_KILLSTREAKS_REWARDNAME_STEALTH_AIRSTRIKE";
|
|
var_03 = "UK_1mc_achieve_carepackage";
|
|
var_04 = "UK_1mc_use_carepackage";
|
|
var_05 = "specialty_stealth_bomber";
|
|
var_06 = &"SP_KILLSTREAKS_EARNED_STEALTH_AIRSTRIKE";
|
|
var_07 = "dpad_killstreak_carepackage";
|
|
var_08 = &"SP_KILLSTREAKS_STEALTH_AIRSTRIKE_PICKUP";
|
|
var_09 = undefined;
|
|
break;
|
|
|
|
case "stealth_airstrike":
|
|
var_02 = "killstreak_stealth_airstrike_sp";
|
|
var_03 = ::sp_killstreak_airstrike_main;
|
|
var_0A = "SP_KILLSTREAKS_REWARDNAME_STEALTH_AIRSTRIKE";
|
|
var_03 = "UK_1mc_achieve_airstrike";
|
|
var_04 = "UK_1mc_use_airstrike";
|
|
var_05 = "specialty_stealth_bomber";
|
|
var_06 = &"SP_KILLSTREAKS_EARNED_STEALTH_AIRSTRIKE";
|
|
var_07 = "dpad_killstreak_stealth_bomber";
|
|
var_08 = &"SP_KILLSTREAKS_STEALTH_AIRSTRIKE_PICKUP";
|
|
var_09 = undefined;
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
var_0B = spawnstruct();
|
|
var_0B.streaktype = param_00;
|
|
var_0B.weaponname = var_01;
|
|
var_0B.streakfunc = var_02;
|
|
var_0B.menurewarddesc = var_0A;
|
|
var_0B.achievevo = var_03;
|
|
var_0B.usevo = var_04;
|
|
var_0B.splashicon = var_05;
|
|
var_0B.splashhint = var_06;
|
|
var_0B.crateicon = var_07;
|
|
var_0B.cratehint = var_08;
|
|
var_0B.crateopenfunc = var_09;
|
|
level.ks.killstreaktypes[param_00] = var_0B;
|
|
add_killstreak_radio_dialogue(var_03,var_04);
|
|
}
|
|
|
|
//Function Number: 7
|
|
add_killstreak_radio_dialogue(param_00,param_01)
|
|
{
|
|
if(!isdefined(level.scr_radio))
|
|
{
|
|
level.scr_radio = [];
|
|
}
|
|
|
|
var_02[0] = param_00;
|
|
foreach(var_04 in var_7B)
|
|
{
|
|
if(!maps\_utility::array_contains(level.scr_radio,var_04) && isdefined(var_04))
|
|
{
|
|
level.scr_radio[var_04] = var_04;
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 8
|
|
sp_killstreak_exists(param_00)
|
|
{
|
|
foreach(var_03, var_02 in level.ks.killstreaktypes)
|
|
{
|
|
if(var_03 == param_00)
|
|
{
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 9
|
|
get_sp_killstreak_info(param_00)
|
|
{
|
|
var_01 = level.ks.killstreaktypes[param_00];
|
|
return var_01;
|
|
}
|
|
|
|
//Function Number: 10
|
|
give_sp_killstreak(param_00,param_01)
|
|
{
|
|
if(!isdefined(self.ks.killstreaks[0]))
|
|
{
|
|
self.ks.killstreaks[0] = param_00;
|
|
}
|
|
else
|
|
{
|
|
var_02 = [];
|
|
foreach(var_04 in self.ks.killstreaks)
|
|
{
|
|
var_7B[var_7B.size] = var_04;
|
|
}
|
|
|
|
self.ks.killstreaks = var_7B;
|
|
}
|
|
|
|
activate_current_sp_killstreak(var_02);
|
|
}
|
|
|
|
//Function Number: 11
|
|
activate_current_sp_killstreak(param_00)
|
|
{
|
|
var_01 = self.ks.killstreaks[0];
|
|
var_02 = get_sp_killstreak_info(var_01);
|
|
self giveweapon(var_02.weaponname);
|
|
self setactionslot(4,"weapon",var_02.weaponname);
|
|
if(var_01 == "remote_missile")
|
|
{
|
|
maps\_remotemissile::enable_uav(1,var_02.weaponname);
|
|
}
|
|
|
|
if(!isdefined(param_00) || !param_00)
|
|
{
|
|
thread maps\_utility::radio_dialogue(var_02.achievevo);
|
|
}
|
|
}
|
|
|
|
//Function Number: 12
|
|
take_sp_killstreak(param_00)
|
|
{
|
|
var_01 = 0;
|
|
foreach(var_05, var_03 in self.ks.killstreaks)
|
|
{
|
|
if(var_03 == param_00)
|
|
{
|
|
self.ks.killstreaks = common_scripts\utility::array_remove(self.ks.killstreaks,param_00);
|
|
if(var_05 == 0)
|
|
{
|
|
var_04 = get_sp_killstreak_info(param_00);
|
|
self takeweapon(var_04.weaponname);
|
|
}
|
|
|
|
var_01 = 1;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if(has_any_killstreak())
|
|
{
|
|
activate_current_sp_killstreak();
|
|
}
|
|
}
|
|
|
|
//Function Number: 13
|
|
has_any_killstreak()
|
|
{
|
|
return self.ks.killstreaks.size;
|
|
}
|
|
|
|
//Function Number: 14
|
|
has_killstreak(param_00)
|
|
{
|
|
if(has_any_killstreak())
|
|
{
|
|
foreach(var_02 in self.ks.killstreaks)
|
|
{
|
|
if(param_00 == var_02)
|
|
{
|
|
return 1;
|
|
}
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 15
|
|
sp_killstreak_use_waiter()
|
|
{
|
|
self endon("death");
|
|
for(;;)
|
|
{
|
|
self.ks.lastweaponused = self getcurrentweapon();
|
|
self waittill("weapon_change",var_00);
|
|
if(!isalive(self))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_01 = self.ks.killstreaks[0];
|
|
if(!isdefined(var_01))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_02 = get_sp_killstreak_info(var_01);
|
|
if(isdefined(var_02.weaponname))
|
|
{
|
|
if(var_00 != var_02.weaponname)
|
|
{
|
|
continue;
|
|
}
|
|
}
|
|
|
|
waittillframeend;
|
|
var_03 = sp_killstreak_use_pressed(var_02);
|
|
if(var_03)
|
|
{
|
|
used_sp_killstreak(var_02);
|
|
take_sp_killstreak(var_01);
|
|
}
|
|
else if(!isdefined(self.carrying_pickedup_sentry) || !self.carrying_pickedup_sentry)
|
|
{
|
|
post_killstreak_weapon_switchback();
|
|
}
|
|
|
|
if(maps\_utility::is_survival())
|
|
{
|
|
wait 0.05;
|
|
if(isdefined(self.sentry_placement_failed) && self.sentry_placement_failed)
|
|
{
|
|
give_sp_killstreak(var_01,1);
|
|
}
|
|
}
|
|
|
|
if(self getcurrentweapon() == "none")
|
|
{
|
|
while(self getcurrentweapon() == "none")
|
|
{
|
|
wait 0.05;
|
|
}
|
|
|
|
waittillframeend;
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 16
|
|
sp_killstreak_use_pressed(param_00)
|
|
{
|
|
var_01 = param_00.streaktype;
|
|
if(!self isonground() && iscarrykillstreak(var_01))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(isusingremote())
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(isdefined(self.selectinglocation))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(self isusingturret() && isridekillstreak(var_01) || iscarrykillstreak(var_01))
|
|
{
|
|
iprintlnbold(&"MP_UNAVAILABLE_USING_TURRET");
|
|
return 0;
|
|
}
|
|
|
|
if(maps\_utility::ent_flag_exist("laststand_downed") && maps\_utility::ent_flag("laststand_downed") && isridekillstreak(var_01))
|
|
{
|
|
iprintlnbold(&"MP_UNAVILABLE_IN_LASTSTAND");
|
|
return 0;
|
|
}
|
|
|
|
if(!common_scripts\utility::isweaponenabled())
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(!self [[ param_00.streakfunc ]](param_00))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
//Function Number: 17
|
|
used_sp_killstreak(param_00)
|
|
{
|
|
self playlocalsound("weap_c4detpack_trigger_plr");
|
|
if(isdefined(param_00.usevo) && param_00.streaktype != "remote_missile")
|
|
{
|
|
thread maps\_utility::radio_dialogue(param_00.usevo);
|
|
}
|
|
}
|
|
|
|
//Function Number: 18
|
|
post_killstreak_weapon_switchback()
|
|
{
|
|
if(maps\_utility::is_player_down(self))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(isdefined(self.ks.lastweaponused))
|
|
{
|
|
if(self.ks.lastweaponused == "none")
|
|
{
|
|
var_00 = self getweaponslistprimaries();
|
|
self switchtoweapon(var_00[0]);
|
|
return;
|
|
}
|
|
|
|
self switchtoweapon(self.ks.lastweaponused);
|
|
}
|
|
}
|
|
|
|
//Function Number: 19
|
|
sp_killstreak_remotemissile_main(param_00)
|
|
{
|
|
var_01 = param_00.weaponname;
|
|
self.remotemissilefired = 0;
|
|
thread sp_killstreak_remotemissile_waitforfire(param_00.usevo);
|
|
while(self.using_uav)
|
|
{
|
|
wait 0.05;
|
|
}
|
|
|
|
self notify("stopped_using_uav");
|
|
return self.remotemissilefired;
|
|
}
|
|
|
|
//Function Number: 20
|
|
sp_killstreak_remotemissile_waitforfire(param_00)
|
|
{
|
|
self endon("stopped_using_uav");
|
|
self waittill("player_fired_remote_missile");
|
|
self.remotemissilefired = 1;
|
|
thread maps\_utility::radio_dialogue(param_00);
|
|
}
|
|
|
|
//Function Number: 21
|
|
sp_killstreak_carepackage_main(param_00)
|
|
{
|
|
var_01 = sp_carepackage_select_reward(param_00);
|
|
var_02 = maps\_sp_airdrop::sp_try_use_airdrop(var_01);
|
|
if(!var_02)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
//Function Number: 22
|
|
sp_carepackage_select_reward(param_00)
|
|
{
|
|
if(issubstr(param_00.streaktype,"specialty_"))
|
|
{
|
|
return param_00.streaktype;
|
|
}
|
|
|
|
if(param_00.streaktype == "carepackage_c4")
|
|
{
|
|
return "carepackage_c4";
|
|
}
|
|
else if(param_00.streaktype == "carepackage_remote_missile")
|
|
{
|
|
return "remote_missile";
|
|
}
|
|
else if(param_00.streaktype == "carepackage_sentry")
|
|
{
|
|
return "sentry";
|
|
}
|
|
else if(param_00.streaktype == "carepackage_ammo")
|
|
{
|
|
return "carepackage_ammo";
|
|
}
|
|
else if(param_00.streaktype == "carepackage_precision_airstrike")
|
|
{
|
|
return "precision_airstrike";
|
|
}
|
|
else if(param_00.streaktype == "carepackage_stealth_airstrike")
|
|
{
|
|
return "stealth_airstrike";
|
|
}
|
|
|
|
var_01 = [];
|
|
var_02 = [];
|
|
var_01[var_01.size] = "sentry";
|
|
var_02[var_02.size] = "remote_missile";
|
|
var_02[var_02.size] = "precision_airstrike";
|
|
var_02[var_02.size] = "stealth_airstrike";
|
|
var_02[var_02.size] = "carepackage_c4";
|
|
var_02[var_02.size] = "carepackage_ammo";
|
|
return getweightedchanceroll(var_02,var_7B);
|
|
}
|
|
|
|
//Function Number: 23
|
|
sp_killstreak_ammo_crateopen()
|
|
{
|
|
self playlocalsound("ammo_crate_use");
|
|
refillammo();
|
|
}
|
|
|
|
//Function Number: 24
|
|
refillammo()
|
|
{
|
|
var_00 = self getweaponslistall();
|
|
foreach(var_02 in var_00)
|
|
{
|
|
if(issubstr(var_02,"grenade"))
|
|
{
|
|
if(self getammocount(var_02) >= 1)
|
|
{
|
|
continue;
|
|
}
|
|
}
|
|
|
|
self givemaxammo(var_02);
|
|
}
|
|
}
|
|
|
|
//Function Number: 25
|
|
sp_killstreak_perk_crateopen(param_00)
|
|
{
|
|
thread maps\_so_survival_perks::give_perk(param_00);
|
|
}
|
|
|
|
//Function Number: 26
|
|
sp_killstreak_c4_crateopen()
|
|
{
|
|
if(!self hasweapon("c4"))
|
|
{
|
|
self giveweapon("c4");
|
|
self setactionslot(2,"weapon","c4");
|
|
return;
|
|
}
|
|
|
|
if(self getfractionmaxammo("c4") == 1)
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_00 = self getweaponammostock("c4");
|
|
self setweaponammostock("c4",var_00 + 4);
|
|
}
|
|
|
|
//Function Number: 27
|
|
sp_killstreak_autosentry_main(param_00)
|
|
{
|
|
lib_0616::givesentry("sentry_minigun");
|
|
thread sentry_cancel_notify();
|
|
self notifyonplayercommand("controller_sentry_cancel","+actionslot 4");
|
|
self notifyonplayercommand("controller_sentry_cancel","weapnext");
|
|
common_scripts\utility::waittill_any("sentry_placement_finished","sentry_placement_canceled");
|
|
post_killstreak_weapon_switchback();
|
|
return 1;
|
|
}
|
|
|
|
//Function Number: 28
|
|
sp_killstreak_autosentry_gl_main(param_00)
|
|
{
|
|
lib_0616::givesentry("sentry_gun");
|
|
thread sentry_cancel_notify();
|
|
self notifyonplayercommand("controller_sentry_cancel","+actionslot 4");
|
|
self notifyonplayercommand("controller_sentry_cancel","weapnext");
|
|
common_scripts\utility::waittill_any("sentry_placement_finished","sentry_placement_canceled");
|
|
post_killstreak_weapon_switchback();
|
|
return 1;
|
|
}
|
|
|
|
//Function Number: 29
|
|
sentry_cancel_notify()
|
|
{
|
|
self endon("sentry_placement_canceled");
|
|
self endon("sentry_placement_finished");
|
|
self waittill("controller_sentry_cancel");
|
|
if(!isdefined(self.carrying_pickedup_sentry) || !self.carrying_pickedup_sentry)
|
|
{
|
|
self notify("sentry_placement_canceled");
|
|
}
|
|
}
|
|
|
|
//Function Number: 30
|
|
sp_killstreak_airstrike_main(param_00)
|
|
{
|
|
var_01 = param_00.streaktype;
|
|
var_02 = "default";
|
|
if(var_01 == "precision_airstrike")
|
|
{
|
|
var_02 = "precision";
|
|
}
|
|
else if(var_01 == "stealth_airstrike")
|
|
{
|
|
var_02 = "stealth";
|
|
}
|
|
|
|
var_03 = maps\_sp_airstrike::try_use_airstrike(var_02);
|
|
post_killstreak_weapon_switchback();
|
|
return var_03;
|
|
}
|
|
|
|
//Function Number: 31
|
|
isusingremote()
|
|
{
|
|
return isdefined(self.usingremote);
|
|
}
|
|
|
|
//Function Number: 32
|
|
isridekillstreak(param_00)
|
|
{
|
|
switch(param_00)
|
|
{
|
|
case "predator_missile":
|
|
case "helicopter_mk19":
|
|
case "helicopter_minigun":
|
|
case "ac130":
|
|
return 1;
|
|
|
|
default:
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
//Function Number: 33
|
|
iscarrykillstreak(param_00)
|
|
{
|
|
switch(param_00)
|
|
{
|
|
case "sentry_gl":
|
|
case "sentry":
|
|
return 1;
|
|
|
|
default:
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
//Function Number: 34
|
|
deadlykillstreak(param_00)
|
|
{
|
|
switch(param_00)
|
|
{
|
|
case "harrier_airstrike":
|
|
case "predator_missile":
|
|
case "stealth_airstrike":
|
|
case "precision_airstrike":
|
|
case "ac130":
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 35
|
|
getweightedchanceroll(param_00,param_01)
|
|
{
|
|
var_02 = undefined;
|
|
var_03 = -1;
|
|
foreach(var_05 in param_00)
|
|
{
|
|
if(param_01[var_05] <= 0)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_06 = randomint(param_01[var_05]);
|
|
if(isdefined(var_02) && param_01[var_02] >= 100)
|
|
{
|
|
if(param_01[var_05] < 100)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
continue;
|
|
}
|
|
|
|
if(param_01[var_05] >= 100)
|
|
{
|
|
var_02 = var_05;
|
|
var_03 = var_06;
|
|
continue;
|
|
}
|
|
|
|
if(var_06 > var_03)
|
|
{
|
|
var_02 = var_05;
|
|
var_03 = var_06;
|
|
}
|
|
}
|
|
|
|
return var_02;
|
|
} |