iw6-scripts/maps/mp/alien/_pillage.gsc
2024-02-13 13:20:49 +01:00

2283 lines
79 KiB
Plaintext

// IW6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
build_pillageitem_arrays( var_0 )
{
if ( !isdefined( level.pillageitems ) )
level.pillageitems = [];
if ( !isdefined( level.pillageitems[var_0] ) )
level.pillageitems[var_0] = [];
switch ( var_0 )
{
case "easy":
build_pillageitem_array( var_0, "attachment", level.pillageinfo.easy_attachment );
build_pillageitem_array( var_0, "soflam", level.pillageinfo.easy_soflam );
build_pillageitem_array( var_0, "explosive", level.pillageinfo.easy_explosive );
build_pillageitem_array( var_0, "clip", level.pillageinfo.easy_clip );
build_pillageitem_array( var_0, "money", level.pillageinfo.easy_money );
build_pillageitem_array( var_0, "pet_leash", level.pillageinfo.easy_leash );
build_pillageitem_array( var_0, "specialammo", level.pillageinfo.easy_specialammo );
break;
case "medium":
build_pillageitem_array( var_0, "attachment", level.pillageinfo.medium_attachment );
build_pillageitem_array( var_0, "explosive", level.pillageinfo.medium_explosive );
build_pillageitem_array( var_0, "soflam", level.pillageinfo.medium_soflam );
build_pillageitem_array( var_0, "clip", level.pillageinfo.medium_clip );
build_pillageitem_array( var_0, "money", level.pillageinfo.medium_money );
build_pillageitem_array( var_0, "pet_leash", level.pillageinfo.medium_leash );
build_pillageitem_array( var_0, "trophy", level.pillageinfo.medium_trophy );
build_pillageitem_array( var_0, "specialammo", level.pillageinfo.medium_specialammo );
break;
case "hard":
build_pillageitem_array( var_0, "attachment", level.pillageinfo.hard_attachment );
build_pillageitem_array( var_0, "soflam", level.pillageinfo.hard_soflam );
build_pillageitem_array( var_0, "explosive", level.pillageinfo.hard_explosive );
build_pillageitem_array( var_0, "maxammo", level.pillageinfo.hard_maxammo );
build_pillageitem_array( var_0, "money", level.pillageinfo.hard_money );
build_pillageitem_array( var_0, "pet_leash", level.pillageinfo.hard_leash );
build_pillageitem_array( var_0, "trophy", level.pillageinfo.hard_trophy );
build_pillageitem_array( var_0, "specialammo", level.pillageinfo.hard_specialammo );
break;
}
if ( isdefined( level.custom_build_pillageitem_array_func ) )
[[ level.custom_build_pillageitem_array_func ]]( var_0 );
if ( isdefined( level.locker_build_pillageitem_array_func ) )
[[ level.locker_build_pillageitem_array_func ]]( var_0 );
}
build_pillageitem_array( var_0, var_1, var_2 )
{
if ( !isdefined( var_2 ) )
return;
var_3 = spawnstruct();
var_3.ref = var_1;
var_3.chance = var_2;
level.pillageitems[var_0][level.pillageitems[var_0].size] = var_3;
}
pillage_init()
{
level.pillage_areas = [];
level.pillageable_explosives = [ "alienclaymore_mp", "alienbetty_mp", "alienmortar_shell_mp" ];
level.pillageable_attachments = [ "reflex", "eotech", "rof", "grip", "barrelrange", "acog", "firetypeburst", "xmags", "alienmuzzlebrake" ];
level.pillageable_attachments_dmr = [ "eotech", "reflex", "firetypeburst", "barrelrange", "acog", "xmags", "alienmuzzlebrake" ];
level.pillageable_attachments_sg = [ "reflex", "grip", "eotech", "barrelrange", "xmags", "alienmuzzlebrake" ];
level.pillageable_attachments_sg_fp6 = [ "reflex", "grip", "eotech", "barrelrange", "alienmuzzlebrake" ];
level.pillageable_attachments_ar = [ "reflex", "eotech", "grip", "rof", "barrelrange", "acog", "firetypeburst", "xmags", "alienmuzzlebrake" ];
level.pillageable_attachments_ar_sc2010 = [ "reflex", "eotech", "grip", "firetypeburst", "acog", "xmags", "alienmuzzlebrake" ];
level.pillageable_attachments_ar_honeybadger = [ "reflex", "eotech", "grip", "rof", "acog", "firetypeburst", "xmags" ];
level.pillageable_attachments_smg_k7 = [ "reflex", "eotech", "rof", "grip", "acog", "barrelrange", "xmags", "alienmuzzlebrake" ];
level.pillageable_attachments_smg = [ "reflex", "eotech", "rof", "grip", "barrelrange", "acog", "xmags", "alienmuzzlebrake" ];
level.pillageable_attachments_aliendlc23 = [ "rof", "grip", "barrelrange", "xmags", "alienmuzzlebrake" ];
level.pillageable_attachments_sr = [ "xmags", "alienmuzzlebrake" ];
level.pillageable_attachments_lmg = [ "rof", "grip", "reflex", "eotech", "acog", "barrelrange", "xmags", "alienmuzzlebrake" ];
level.pillageable_attachments_lmg_kac = [ "rof", "barrelrange", "xmags", "alienmuzzlebrake" ];
level.offhand_explosives = [ "alienclaymore_mp", "alienbetty_mp", "alienmortar_shell_mp", "aliensemtex_mp" ];
level.offhand_secondaries = [ "alienflare_mp", "alienthrowingknife_mp", "alientrophy_mp" ];
if ( isdefined( level.custom_pillageinitfunc ) )
[[ level.custom_pillageinitfunc ]]();
if ( isdefined( level.custom_lockerpillageinitfunc ) )
[[ level.custom_lockerpillageinitfunc ]]();
level.alien_crafting_items = undefined;
if ( isdefined( level.crafting_item_table ) )
level.alien_crafting_items = level.crafting_item_table;
var_0 = common_scripts\utility::getstructarray( "pillage_area", "targetname" );
foreach ( var_8, var_2 in var_0 )
{
if ( !isdefined( level.pillage_areas[var_8] ) )
level.pillage_areas[var_8] = [];
level.pillage_areas[var_8]["easy"] = [];
level.pillage_areas[var_8]["medium"] = [];
level.pillage_areas[var_8]["hard"] = [];
var_3 = common_scripts\utility::getstructarray( var_2.target, "targetname" );
foreach ( var_5 in var_3 )
{
if ( isdefined( var_5.script_noteworthy ) )
{
var_6 = strtok( var_5.script_noteworthy, "," );
var_5.pillage_type = var_6[0];
if ( isdefined( var_6[1] ) )
var_5.script_model = var_6[1];
if ( isdefined( var_6[2] ) )
var_5.default_item_type = var_6[2];
switch ( var_5.pillage_type )
{
case "easy":
level.pillage_areas[var_8]["easy"][level.pillage_areas[var_8]["easy"].size] = var_5;
break;
case "medium":
level.pillage_areas[var_8]["medium"][level.pillage_areas[var_8]["medium"].size] = var_5;
break;
case "hard":
level.pillage_areas[var_8]["hard"][level.pillage_areas[var_8]["hard"].size] = var_5;
break;
}
}
}
}
foreach ( var_8, var_2 in level.pillage_areas )
{
if ( getdvar( "scr_debug_pillage" ) != "1" )
{
level.pillage_areas[var_8]["easy"] = remove_random_pillage_spots( level.pillage_areas[var_8]["easy"] );
level.pillage_areas[var_8]["medium"] = remove_random_pillage_spots( level.pillage_areas[var_8]["medium"] );
level.pillage_areas[var_8]["hard"] = remove_random_pillage_spots( level.pillage_areas[var_8]["hard"] );
}
level thread create_pillage_spots( level.pillage_areas[var_8]["easy"] );
level thread create_pillage_spots( level.pillage_areas[var_8]["medium"] );
level thread create_pillage_spots( level.pillage_areas[var_8]["hard"] );
}
build_pillageitem_arrays( "easy" );
build_pillageitem_arrays( "medium" );
build_pillageitem_arrays( "hard" );
level.use_alternate_specialammo_pillage_amounts = 0;
}
get_hintstring_for_pillaged_item( var_0 )
{
var_0 = "" + var_0;
switch ( var_0 )
{
case "50":
return &"ALIEN_COLLECTIBLES_FOUND_50";
case "100":
return &"ALIEN_COLLECTIBLES_FOUND_100";
case "200":
return &"ALIEN_COLLECTIBLES_FOUND_200";
case "250":
return &"ALIEN_COLLECTIBLES_FOUND_250";
case "500":
return &"ALIEN_COLLECTIBLES_FOUND_500";
case "alienclaymore_mp":
return &"ALIEN_COLLECTIBLES_FOUND_CLAYMORE";
case "alienbetty_mp":
return &"ALIEN_COLLECTIBLES_FOUND_BETTY";
case "alienmortar_shell_mp":
return &"ALIEN_COLLECTIBLES_FOUND_MORTARSHELL";
case "flare":
return &"ALIEN_COLLECTIBLES_FOUND_FLARE";
case "maxammo":
return &"ALIEN_COLLECTIBLES_FOUND_AMMO";
case "grenade":
return &"ALIEN_COLLECTIBLES_FOUND_GRENADE";
case "attachment_noGL":
case "attachment":
return &"ALIEN_COLLECTIBLES_FOUND_ATTACHMENT";
case "clip":
return &"ALIEN_COLLECTIBLES_FOUND_CLIP";
case "soflam":
return &"ALIEN_COLLECTIBLES_FOUND_SOFLAM";
case "pet_leash":
return &"ALIEN_COLLECTIBLES_FOUND_PET_LEASH";
case "trophy":
return &"ALIEN_COLLECTIBLES_FOUND_TROPHY";
case "combined_ammo":
case "specialammo":
case "explosive_ammo":
case "incendiary_ammo":
case "ap_ammo":
case "stun_ammo":
return &"ALIEN_COLLECTIBLES_FOUND_SPECIALAMMO";
}
if ( isdefined( level.get_hintstring_for_pillaged_item_func ) )
return [[ level.get_hintstring_for_pillaged_item_func ]]( var_0 );
}
get_hintstring_for_item_pickup( var_0 )
{
var_0 = "" + var_0;
switch ( var_0 )
{
case "alienclaymore_mp":
return &"ALIEN_COLLECTIBLES_PICKUP_CLAYMORE";
case "alienbetty_mp":
return &"ALIEN_COLLECTIBLES_PICKUP_BOUNCING_BETTY";
case "alienmortar_shell_mp":
return &"ALIEN_COLLECTIBLES_PICKUP_MORTARSHELL";
case "aliensemtex_mp":
return &"ALIEN_COLLECTIBLES_PICKUP_GRENADE";
case "viewmodel_flare":
case "flare":
case "alienflare_mp":
return &"ALIEN_COLLECTIBLES_PICKUP_FLARE";
case "maxammo":
return &"ALIEN_COLLECTIBLES_PICKUP_AMMO";
case "money":
return &"ALIEN_COLLECTIBLES_PICKUP_MONEY";
case "reflex":
return &"ALIEN_COLLECTIBLES_FOUND_REFLEX";
case "reflexsmg":
return &"ALIEN_COLLECTIBLES_FOUND_REFLEX";
case "eotech":
return &"ALIEN_COLLECTIBLES_FOUND_EOTECH";
case "thermal":
return &"ALIEN_COLLECTIBLES_FOUND_THERMAL";
case "firetypeburst":
return &"ALIEN_COLLECTIBLES_FOUND_FIRETYPEBURST";
case "firetypeburstdmr":
return &"ALIEN_COLLECTIBLES_FOUND_FIRETYPEBURST";
case "barrelrange":
return &"ALIEN_COLLECTIBLES_FOUND_BARRELRANGE";
case "barrelrange03":
return &"ALIEN_COLLECTIBLES_FOUND_BARRELRANGE";
case "rof":
return &"ALIEN_COLLECTIBLES_FOUND_ROF";
case "acog":
return &"ALIEN_COLLECTIBLES_FOUND_ACOG";
case "clip":
return &"ALIEN_COLLECTIBLES_PICKUP_CLIP";
case "soflam":
return &"ALIEN_COLLECTIBLES_PICKUP_SOFLAM";
case "grip":
return &"ALIEN_COLLECTIBLES_FOUND_GRIP";
case "griphide":
return &"ALIEN_COLLECTIBLES_FOUND_GRIP";
case "alienmuzzlebrakesn":
case "alienmuzzlebrakesg":
case "alienmuzzlebrake":
return &"ALIENS_PATCH_FOUND_ARK";
case "pet_leash":
case "alienthrowingknife_mp":
return &"ALIEN_COLLECTIBLES_PICKUP_PET_LEASH";
case "alientrophy_mp":
case "trophy":
return &"ALIEN_COLLECTIBLES_PICKUP_TROPHY";
case "ap_ammo":
return &"ALIEN_COLLECTIBLES_PICKUP_AP_AMMO";
case "incendiary_ammo":
return &"ALIEN_COLLECTIBLES_PICKUP_IN_AMMO";
case "explosive_ammo":
return &"ALIEN_COLLECTIBLES_PICKUP_EXP_AMMO";
case "stun_ammo":
return &"ALIEN_COLLECTIBLES_PICKUP_STUN_AMMO";
case "combined_ammo":
return &"ALIENS_PATCH_PICKUP_COMBINED_AMMO";
case "xmags":
return &"ALIENS_PATCH_FOUND_XMAGS";
}
if ( isdefined( level.get_hintstring_for_item_pickup_func ) )
return [[ level.get_hintstring_for_item_pickup_func ]]( var_0 );
}
remove_random_pillage_spots( var_0 )
{
var_1 = int( var_0.size * 0.5 );
var_0 = common_scripts\utility::array_randomize( var_0 );
var_2 = [];
for ( var_3 = 0; var_3 < var_0.size; var_3++ )
{
if ( var_3 < var_1 )
{
var_0[var_3].not_used = 1;
continue;
}
var_2[var_2.size] = var_0[var_3];
}
return var_2;
}
create_pillage_spots( var_0 )
{
var_1 = 22500;
var_2 = 90000;
var_3 = cos( 75 );
foreach ( var_11, var_5 in var_0 )
{
if ( !isdefined( var_5.is_locker ) )
{
var_6 = 0;
var_7 = 0;
foreach ( var_9 in level.players )
{
if ( distance2dsquared( var_9.origin, var_5.origin ) < var_1 )
var_6 = 1;
if ( !var_6 && distance2dsquared( var_9.origin, var_5.origin ) < var_2 )
var_6 = common_scripts\utility::within_fov( var_9 geteye(), var_9.angles, var_5.origin + ( 0, 0, 5 ), var_3 );
}
if ( var_6 )
{
var_7 = 1;
continue;
}
}
var_5.pillage_trigger = spawn( "script_model", var_5.origin );
if ( isdefined( var_5.script_model ) )
{
var_5.pillage_trigger setmodel( var_5.script_model );
var_5.pillage_trigger.angles = var_5.angles;
}
else
var_5.pillage_trigger setmodel( "tag_origin" );
var_5.pillage_trigger setcursorhint( "HINT_NOICON" );
var_5.pillage_trigger makeusable();
var_5.pillage_trigger sethintstring( &"ALIEN_COLLECTIBLES_OPEN" );
if ( isdefined( var_5.is_locker ) && var_5.is_locker )
{
var_5.pillage_trigger.angles = var_5.angles;
var_5.pillage_trigger.is_locker = 1;
}
if ( maps\mp\alien\_utility::alien_mode_has( "outline" ) )
maps\mp\alien\_outline_proto::add_to_outline_pillage_watch_list( var_5.pillage_trigger, 0 );
var_5 thread pillage_spot_think();
var_5.enabled = 1;
if ( var_11 % 2 == 0 )
wait 0.05;
}
}
pillage_spot_think()
{
self notify( "stop_pillage_spot_think" );
self endon( "stop_pillage_spot_think" );
for (;;)
{
self.pillage_trigger waittill( "trigger", var_0 );
if ( !isplayer( var_0 ) )
continue;
if ( var_0 maps\mp\alien\_utility::is_holding_deployable() || var_0 maps\mp\alien\_utility::has_special_weapon() )
{
var_0 maps\mp\_utility::setlowermessage( "cant_buy", &"ALIEN_COLLECTIBLES_PLAYER_HOLDING", 3 );
continue;
}
if ( var_0 maps\mp\alien\_prestige::prestige_getnodeployables() == 1.0 )
{
var_0 maps\mp\_utility::setlowermessage( "cant_buy", &"ALIENS_PRESTIGE_NO_DEPLOYABLES_PICKUP", 3 );
continue;
}
if ( !isdefined( var_0.current_crafting_recipe ) && isdefined( self.default_item_type ) && self.default_item_type == "crafting" )
{
var_0 maps\mp\_utility::setlowermessage( "cant_buy", &"ALIEN_CRAFTING_NO_RECIPE", 3 );
continue;
}
if ( !isdefined( self.searched ) )
{
if ( isdefined( level.locker_key_check_func ) )
{
if ( [[ level.locker_key_check_func ]]( var_0 ) )
continue;
}
self.pillage_trigger makeunusable();
self.enabled = 0;
if ( self.pillage_trigger useholdthink( var_0, level.pillageinfo.default_use_time ) )
{
self.searched = 1;
var_1 = get_pillaged_item( self, var_0 );
self.pillage_trigger setmodel( "tag_origin" );
self.pillageinfo = spawnstruct();
var_0 maps\mp\alien\_achievement::update_scavenge_achievement();
switch ( var_1.type )
{
case "money":
if ( var_0 maps\mp\alien\_persistence::get_player_currency() < var_0.maxcurrency )
{
var_0 maps\mp\alien\_persistence::give_player_currency( var_1.count, undefined, undefined, 1 );
delete_pillage_trigger();
}
else
{
self.pillage_trigger setmodel( level.pillageinfo.money_stack );
var_2 = get_hintstring_for_item_pickup( var_1.type );
self.pillage_trigger sethintstring( var_2 );
self.pillage_trigger makeusable();
self.pillageinfo.type = "money";
self.pillageinfo.amount = var_1.count;
}
var_2 = get_hintstring_for_pillaged_item( var_1.count );
var_0 thread show_pillage_text( var_2 );
if ( var_1.count == 500 )
level thread maps\mp\alien\_music_and_dialog::playvoforpillage( var_0 );
break;
case "pet_leash":
var_2 = get_hintstring_for_pillaged_item( var_1.type );
var_0 thread show_pillage_text( var_2 );
self.pillage_trigger setmodel( level.pillageinfo.leash_model );
var_2 = get_hintstring_for_item_pickup( var_1.type );
self.pillage_trigger sethintstring( var_2 );
self.pillage_trigger makeusable();
self.pillageinfo.type = "pet_leash";
self.pillageinfo.item = "alienthrowingknife_mp";
self.pillageinfo.ammo = 1;
level thread maps\mp\alien\_music_and_dialog::playvoforpillage( var_0 );
break;
case "explosive":
var_2 = get_hintstring_for_pillaged_item( var_1.explosive_type );
var_0 thread show_pillage_text( var_2 );
self.pillage_trigger setmodel( getweaponmodel( var_1.explosive_type ) );
var_2 = get_hintstring_for_item_pickup( var_1.explosive_type );
self.pillage_trigger sethintstring( var_2 );
self.pillage_trigger makeusable();
self.pillageinfo.type = "explosive";
self.pillageinfo.item = var_1.explosive_type;
self.pillageinfo.ammo = 2;
break;
case "grenade":
var_2 = get_hintstring_for_pillaged_item( var_1.type );
var_0 thread show_pillage_text( var_2 );
self.pillage_trigger setmodel( getweaponmodel( "aliensemtex_mp" ) );
var_2 = get_hintstring_for_item_pickup( "aliensemtex_mp" );
self.pillage_trigger sethintstring( var_2 );
self.pillage_trigger makeusable();
self.pillageinfo.type = "explosive";
self.pillageinfo.item = "aliensemtex_mp";
self.pillageinfo.ammo = 2;
break;
case "flare":
var_2 = get_hintstring_for_pillaged_item( var_1.type );
var_0 thread show_pillage_text( var_2 );
self.pillage_trigger setmodel( level.pillageinfo.flare_model );
var_2 = get_hintstring_for_item_pickup( var_1.type );
self.pillage_trigger sethintstring( var_2 );
self.pillage_trigger makeusable();
self.pillageinfo.type = "flare";
self.pillageinfo.item = "alienflare_mp";
self.pillageinfo.ammo = 1;
level thread maps\mp\alien\_music_and_dialog::playvoforpillage( var_0 );
break;
case "attachment_noGL":
case "attachment":
var_2 = get_hintstring_for_pillaged_item( var_1.type );
var_0 thread show_pillage_text( var_2 );
var_3 = var_0 get_attachment_for_weapon();
if ( var_3 == "alienmuzzlebrake" )
self.pillage_trigger setmodel( level.pillageinfo.alienattachment_model );
else
self.pillage_trigger setmodel( level.pillageinfo.attachment_model );
var_2 = get_hintstring_for_item_pickup( var_3 );
self.pillage_trigger sethintstring( var_2 );
self.pillage_trigger makeusable();
self.pillageinfo.type = "attachment";
self.pillageinfo.attachment = var_3;
break;
case "maxammo":
var_2 = get_hintstring_for_pillaged_item( var_1.type );
var_0 thread show_pillage_text( var_2 );
self.pillage_trigger setmodel( level.pillageinfo.maxammo_model );
var_2 = get_hintstring_for_item_pickup( "maxammo" );
self.pillage_trigger sethintstring( var_2 );
self.pillage_trigger makeusable();
self.pillageinfo.type = "maxammo";
level thread maps\mp\alien\_music_and_dialog::playvoforpillage( var_0 );
break;
case "clip":
var_2 = get_hintstring_for_pillaged_item( var_1.type );
var_0 thread show_pillage_text( var_2 );
self.pillage_trigger setmodel( level.pillageinfo.clip_model );
var_2 = get_hintstring_for_item_pickup( var_1.type );
self.pillage_trigger sethintstring( var_2 );
self.pillage_trigger makeusable();
self.pillageinfo.type = "clip";
break;
case "specialammo":
var_2 = get_hintstring_for_pillaged_item( var_1.type );
var_0 thread show_pillage_text( var_2 );
self.pillage_trigger setmodel( level.pillageinfo.clip_model );
self.pillage_trigger makeusable();
if ( var_0 maps\mp\alien\_utility::has_stun_ammo() && var_0 maps\mp\alien\_utility::has_incendiary_ammo() && var_0 maps\mp\alien\_utility::has_explosive_ammo() && var_0 maps\mp\alien\_utility::has_ap_ammo() )
self.pillageinfo.type = "combined_ammo";
else if ( var_0 maps\mp\alien\_utility::has_stun_ammo() )
self.pillageinfo.type = "stun_ammo";
else if ( var_0 maps\mp\alien\_utility::has_incendiary_ammo() )
self.pillageinfo.type = "incendiary_ammo";
else if ( var_0 maps\mp\alien\_utility::has_explosive_ammo() )
self.pillageinfo.type = "explosive_ammo";
else if ( var_0 maps\mp\alien\_utility::has_ap_ammo() )
self.pillageinfo.type = "ap_ammo";
else
self.pillageinfo.type = common_scripts\utility::random( [ "ap_ammo", "explosive_ammo", "incendiary_ammo", "stun_ammo" ] );
var_2 = get_hintstring_for_item_pickup( self.pillageinfo.type );
self.pillage_trigger sethintstring( var_2 );
break;
case "soflam":
var_2 = get_hintstring_for_pillaged_item( var_1.type );
var_0 thread show_pillage_text( var_2 );
self.pillage_trigger setmodel( level.pillageinfo.soflam_model );
var_2 = get_hintstring_for_item_pickup( var_1.type );
self.pillage_trigger sethintstring( var_2 );
self.pillage_trigger makeusable();
self.pillageinfo.type = "soflam";
level thread maps\mp\alien\_music_and_dialog::playvoforpillage( var_0 );
break;
case "trophy":
var_2 = get_hintstring_for_pillaged_item( var_1.type );
var_0 thread show_pillage_text( var_2 );
self.pillage_trigger setmodel( level.pillageinfo.trophy_model );
var_2 = get_hintstring_for_item_pickup( var_1.type );
self.pillage_trigger sethintstring( var_2 );
self.pillage_trigger makeusable();
self.pillageinfo.type = "trophy";
self.pillageinfo.item = "alientrophy_mp";
self.pillageinfo.ammo = 1;
break;
case "crafting":
var_2 = get_hintstring_for_pillaged_item( var_1.type );
var_0 thread show_pillage_text( var_2 );
var_4 = var_0 get_crafting_ingredient();
self.pillage_trigger setmodel( get_crafting_model( var_4 ) );
var_2 = get_hintstring_for_item_pickup( var_4 );
self.pillage_trigger sethintstring( var_2 );
self.pillage_trigger makeusable();
self.pillageinfo.type = "crafting";
self.pillageinfo.craftingitem = var_4;
break;
case "intel":
if ( isdefined( level.intel_pillage_show_func ) )
self [[ level.intel_pillage_show_func ]]();
break;
default:
if ( isdefined( level.level_specific_pillage_show_func ) )
self [[ level.level_specific_pillage_show_func ]]( var_0, "searched", var_1 );
break;
}
if ( isdefined( self.drop_override_func ) )
self [[ self.drop_override_func ]]( var_0 );
else if ( isdefined( self.pillage_trigger ) )
self.pillage_trigger drop_pillage_item_on_ground();
}
else
{
self.pillage_trigger makeusable();
self.enabled = 1;
}
continue;
}
if ( isdefined( self.pillageinfo ) )
{
switch ( self.pillageinfo.type )
{
case "explosive":
var_0 try_to_give_player_explosives( self );
break;
case "maxammo":
if ( var_0 cangive_maxammo() )
{
var_0 give_maxammo();
delete_pillage_trigger();
}
else
{
self.pillage_trigger makeusable();
var_0 maps\mp\_utility::setlowermessage( "max_ammo", &"ALIEN_COLLECTIBLES_AMMO_MAX", 3 );
}
break;
case "money":
if ( var_0 maps\mp\alien\_persistence::get_player_currency() < var_0.maxcurrency )
{
var_0 maps\mp\alien\_persistence::give_player_currency( self.pillageinfo.amount, undefined, undefined, 1 );
var_2 = get_hintstring_for_pillaged_item( self.pillageinfo.amount );
var_0 thread show_pillage_text( var_2 );
delete_pillage_trigger();
}
else
var_0 maps\mp\_utility::setlowermessage( "max_money", &"ALIEN_COLLECTIBLES_MONEY_MAX", 3 );
break;
case "attachment":
if ( var_0 add_attachment_to_weapon( self.pillageinfo.attachment, self ) )
delete_pillage_trigger();
break;
case "flare":
var_0 try_to_give_player_flares( self );
break;
case "clip":
if ( var_0 cangive_ammo_clip() )
{
var_0 give_ammo_clip();
delete_pillage_trigger();
}
else
{
self.pillage_trigger makeusable();
var_0 maps\mp\_utility::setlowermessage( "max_ammo", &"ALIEN_COLLECTIBLES_AMMO_MAX", 3 );
}
break;
case "soflam":
if ( var_0 cangive_soflam() )
{
var_0 give_soflam();
delete_pillage_trigger();
}
else
{
self.pillage_trigger makeusable();
if ( var_0 hasweapon( "aliensoflam_mp" ) )
var_0 maps\mp\_utility::setlowermessage( "have_soflam", &"ALIEN_COLLECTIBLES_SOFLAM_HAD", 3 );
else
var_0 maps\mp\_utility::setlowermessage( "too_many", &"ALIEN_COLLECTIBLES_SOFLAM_HAD", 3 );
}
break;
case "pet_leash":
var_0 try_to_give_player_the_leash( self );
break;
case "trophy":
var_0 try_to_give_player_trophy( self );
break;
case "stun_ammo":
var_0 maps\mp\alien\_deployablebox_functions::default_specialammo_onusedeployable( undefined, 0, 1, "deployable_specialammo" );
delete_pillage_trigger();
break;
case "incendiary_ammo":
var_0 maps\mp\alien\_deployablebox_functions::default_specialammo_onusedeployable( undefined, 0, 1, "deployable_specialammo_in" );
delete_pillage_trigger();
break;
case "ap_ammo":
var_0 maps\mp\alien\_deployablebox_functions::default_specialammo_onusedeployable( undefined, 0, 1, "deployable_specialammo_ap" );
delete_pillage_trigger();
break;
case "explosive_ammo":
var_0 maps\mp\alien\_deployablebox_functions::default_specialammo_onusedeployable( undefined, 0, 1, "deployable_specialammo_explo" );
delete_pillage_trigger();
break;
case "combined_ammo":
var_0 maps\mp\alien\_deployablebox_functions::default_specialammo_onusedeployable( undefined, 0, 1, "deployable_specialammo_comb" );
delete_pillage_trigger();
break;
case "crafting":
if ( var_0 cangive_crafting_item( self.pillageinfo.craftingitem ) )
{
var_0 give_crafting_item( self.pillageinfo.craftingitem );
var_0 playlocalsound( "extinction_item_pickup" );
delete_pillage_trigger();
}
else
self.pillage_trigger makeusable();
break;
default:
if ( isdefined( level.level_specific_pillage_show_func ) )
self [[ level.level_specific_pillage_show_func ]]( var_0, "pick_up" );
break;
}
}
}
}
drop_pillage_item_on_ground()
{
if ( self.model != "tag_origin" )
{
var_0 = ( 0, 0, 20 );
var_1 = ( 0, 0, 2 );
var_2 = ( 0, 0, 0 );
var_3 = getgroundposition( self.origin + var_0, 2 );
switch ( self.model )
{
case "weapon_baseweapon_clip":
var_2 = ( 0, 0, 4 );
break;
case "mp_trophy_system_folded_iw6":
var_2 = ( 0, 0, 12 );
break;
case "weapon_scavenger_grenadebag":
var_2 = ( 0, 0, 6 );
break;
case "weapon_soflam":
var_2 = ( 0, 0, 6 );
break;
case "vehicle_pickup_keys":
var_2 = ( 0, 0, 6 );
self.angles = ( 0, 0, 83 );
break;
case "weapon_alien_muzzlebreak":
var_2 = ( 0, 0, 4 );
break;
case "weapon_alien_cortex_container":
var_2 = ( 0, 0, 7 );
break;
case "weapon_knife_iw6":
case "weapon_canister_bomb":
case "weapon_concussion_grenade":
case "mil_emergency_flare_mp":
var_2 = var_1;
break;
}
self.origin = var_3 + var_2;
}
}
delete_pillage_trigger()
{
if ( maps\mp\alien\_utility::alien_mode_has( "outline" ) )
maps\mp\alien\_outline_proto::remove_from_outline_pillage_watch_list( self.pillage_trigger );
self.pillage_trigger delete();
self.pillageinfo.type = undefined;
}
get_pillaged_item( var_0, var_1 )
{
var_5 = [];
if ( check_for_existing_pet_bombs() > 1 )
var_5[var_5.size] = "pet_leash";
if ( !var_1 can_use_attachment() )
var_5[var_5.size] = "attachment";
if ( isdefined( level.intel_pillage_allowed_func ) && !var_1 [[ level.intel_pillage_allowed_func ]]() )
var_5[var_5.size] = "intel";
if ( !var_1 should_find_crafting_items() )
var_5[var_5.size] = "crafting";
var_2 = get_random_pillage_item( level.pillageitems[var_0.pillage_type], var_5 );
var_6 = 0;
while ( isdefined( var_1.last_item ) && var_1.last_item == var_2 )
{
var_2 = get_random_pillage_item( level.pillageitems[var_0.pillage_type], var_5 );
var_6++;
if ( var_6 % 10 == 0 )
break;
}
var_1.last_item = var_2;
if ( isdefined( var_0.default_item_type ) )
var_2 = var_0.default_item_type;
var_3 = spawnstruct();
switch ( var_2 )
{
case "attachment":
var_3.type = "attachment";
break;
case "soflam":
var_3.type = "soflam";
break;
case "explosive":
switch ( randomint( 3 ) )
{
case 0:
var_3.type = "grenade";
var_3.count = 2;
break;
case 1:
if ( var_0.pillage_type != "easy" )
{
var_3.explosive_type = choose_random_explosive_type();
var_3.type = "explosive";
var_3.count = 2;
}
else
{
var_3.type = "flare";
var_3.count = 1;
}
break;
case 2:
var_3.type = "flare";
var_3.count = 1;
break;
}
break;
case "clip":
var_3.type = "clip";
var_3.count = 1;
break;
case "maxammo":
var_3.type = "maxammo";
var_3.count = 1;
break;
case "money":
var_4 = 50 + randomint( 2 ) * 50;
if ( var_0.pillage_type == "medium" )
var_4 = 200 + randomint( 2 ) * 50;
if ( var_0.pillage_type == "hard" )
var_4 = 500;
var_3.type = "money";
var_3.count = var_4;
break;
case "pet_leash":
var_3.type = "pet_leash";
var_3.count = 1;
break;
case "trophy":
var_3.type = "trophy";
var_3.count = 1;
break;
case "specialammo":
var_3.type = "specialammo";
break;
case "crafting":
var_3.type = "crafting";
break;
case "locker_weapon":
var_3.type = "locker_weapon";
var_3.count = 1;
break;
case "locker_key":
var_3.type = "locker_key";
var_3.count = 1;
break;
case "intel":
var_3.type = "intel";
var_3.count = 1;
break;
}
var_1 playlocalsound( "extinction_item_pickup" );
return var_3;
}
get_random_pillage_item( var_0, var_1 )
{
var_2 = [];
var_3 = 0;
foreach ( var_5 in var_0 )
{
if ( common_scripts\utility::array_contains( var_1, var_5.ref ) )
continue;
if ( var_5.chance == 0 )
continue;
var_2[var_2.size] = var_5;
var_3 = var_3 + var_5.chance;
}
var_7 = randomintrange( 0, var_3 + 1 );
var_8 = 0;
foreach ( var_5 in var_2 )
{
var_8 = var_8 + var_5.chance;
if ( var_7 <= var_8 )
return var_5.ref;
}
}
show_pillage_text( var_0 )
{
self endon( "death" );
self endon( "disconnect" );
if ( isdefined( self.usebartext ) )
return;
var_1 = level.primaryprogressbarfontsize;
var_2 = "objective";
if ( level.splitscreen )
var_1 = 1.3;
self.usebartext = maps\mp\gametypes\_hud_util::createprimaryprogressbartext( 0, 25, var_1, var_2 );
self.usebartext settext( var_0 );
self.usebartext setpulsefx( 50, 2000, 800 );
wait 3;
self.usebartext maps\mp\gametypes\_hud_util::destroyelem();
self.usebartext = undefined;
}
choose_random_explosive_type()
{
return common_scripts\utility::random( level.pillageable_explosives );
}
try_to_give_player_explosives( var_0 )
{
var_1 = var_0.pillageinfo.item;
var_2 = var_0.pillageinfo.ammo;
if ( isdefined( level.try_to_give_player_explosive_override ) )
{
if ( ![[ level.try_to_give_player_explosive_override ]]() )
return;
}
if ( self hasweapon( var_1 ) && self getammocount( var_1 ) > 0 )
{
var_3 = self getfractionmaxammo( var_1 );
if ( var_3 < 1 )
{
var_4 = self getweaponammoclip( var_1 );
self setweaponammoclip( var_1, var_4 + var_2 );
self playlocalsound( "grenade_pickup" );
var_0 delete_pillage_trigger();
return;
}
maps\mp\_utility::setlowermessage( "max_explosvies", &"ALIEN_COLLECTIBLES_EXPLO_MAX", 3 );
return;
}
else
{
var_5 = should_swap_weapon( level.offhand_explosives );
self setoffhandprimaryclass( "other" );
if ( !isdefined( var_5 ) )
{
self giveweapon( var_1 );
self setweaponammoclip( var_1, var_2 );
self playlocalsound( "grenade_pickup" );
var_0 delete_pillage_trigger();
}
else
{
self takeweapon( var_5 );
self giveweapon( var_1 );
self setweaponammoclip( var_1, var_2 );
self playlocalsound( "grenade_pickup" );
var_0.pillage_trigger setmodel( getweaponmodel( var_5 ) );
var_6 = get_hintstring_for_item_pickup( var_5 );
var_0.pillage_trigger sethintstring( var_6 );
var_0.pillage_trigger makeusable();
var_0.pillageinfo = spawnstruct();
var_0.pillageinfo.type = "explosive";
var_0.pillageinfo.item = var_5;
var_0.pillageinfo.ammo = self.swapped_weapon_ammocount;
var_0.pillage_trigger drop_pillage_item_on_ground();
}
}
}
try_to_give_player_flares( var_0 )
{
self endon( "disconnect" );
wait 1;
var_1 = var_0.pillageinfo.item;
var_2 = var_0.pillageinfo.ammo;
if ( isdefined( level.try_to_give_player_flare_override ) )
{
if ( ![[ level.try_to_give_player_flare_override ]]() )
return;
}
if ( self hasweapon( var_1 ) && self getammocount( var_1 ) > 0 )
{
var_3 = self getfractionmaxammo( var_1 );
if ( var_3 < 1 )
{
var_4 = self getweaponammoclip( var_1 );
var_5 = self getweaponammostock( var_1 );
self setweaponammoclip( var_1, var_4 + var_5 + 1 );
var_0 delete_pillage_trigger();
return;
}
maps\mp\_utility::setlowermessage( "max_flares", &"ALIEN_COLLECTIBLES_FLARE_MAX", 3 );
return;
}
else
{
var_6 = should_swap_weapon( level.offhand_secondaries );
if ( !isdefined( var_6 ) )
{
self setoffhandsecondaryclass( "flash" );
self giveweapon( var_1 );
self setweaponammoclip( var_1, var_2 );
var_0 delete_pillage_trigger();
}
else
{
self setoffhandsecondaryclass( "flash" );
self takeweapon( var_6 );
self giveweapon( var_1 );
self setweaponammoclip( var_1, var_2 );
var_7 = get_hintstring_for_item_pickup( var_6 );
var_0.pillage_trigger sethintstring( var_7 );
var_0.pillage_trigger makeusable();
var_0.pillageinfo = spawnstruct();
if ( var_6 == "alienflare_mp" || var_6 == "iw6_aliendlc21_mp" )
{
var_0.pillage_trigger setmodel( level.pillageinfo.flare_model );
var_0.pillageinfo.type = "flare";
}
else if ( var_6 == "alienthrowingknife_mp" )
{
var_0.pillage_trigger setmodel( level.pillageinfo.leash_model );
var_0.pillageinfo.type = "pet_leash";
}
else if ( var_6 == "alientrophy_mp" )
{
var_0.pillage_trigger setmodel( level.pillageinfo.trophy_model );
var_0.pillageinfo.type = "trophy";
}
var_0.pillageinfo.item = var_6;
var_0.pillageinfo.ammo = self.swapped_weapon_ammocount;
if ( isdefined( var_0.is_locker ) && isdefined( level.locker_drop_item_on_ground_func ) )
var_0 [[ level.locker_drop_item_on_ground_func ]]( self );
else
var_0.pillage_trigger drop_pillage_item_on_ground();
}
}
}
try_to_give_player_trophy( var_0 )
{
var_1 = var_0.pillageinfo.item;
var_2 = var_0.pillageinfo.ammo;
if ( isdefined( level.try_to_give_player_trophy_override ) )
{
if ( ![[ level.try_to_give_player_trophy_override ]]() )
return;
}
if ( self hasweapon( var_1 ) && self getammocount( var_1 ) > 0 )
maps\mp\_utility::setlowermessage( "max_flares", &"ALIEN_COLLECTIBLES_TROPHY_MAX", 3 );
else
{
var_3 = should_swap_weapon( level.offhand_secondaries );
if ( !isdefined( var_3 ) )
{
self setoffhandsecondaryclass( "flash" );
self giveweapon( var_1 );
self setweaponammoclip( var_1, 1 );
var_0 delete_pillage_trigger();
}
else
{
self setoffhandsecondaryclass( "flash" );
self takeweapon( var_3 );
self giveweapon( var_1 );
self setweaponammoclip( var_1, 1 );
var_4 = get_hintstring_for_item_pickup( var_3 );
var_0.pillage_trigger sethintstring( var_4 );
var_0.pillage_trigger makeusable();
var_0.pillageinfo = spawnstruct();
if ( var_3 == "alienflare_mp" || var_3 == "iw6_aliendlc21_mp" )
{
var_0.pillage_trigger setmodel( level.pillageinfo.flare_model );
var_0.pillageinfo.type = "flare";
}
else if ( var_3 == "alienthrowingknife_mp" )
{
var_0.pillage_trigger setmodel( level.pillageinfo.leash_model );
var_0.pillageinfo.type = "pet_leash";
}
else if ( var_3 == "alientrophy_mp" )
var_0.pillage_trigger setmodel( level.pillageinfo.trophy_model );
var_0.pillageinfo.item = var_3;
var_0.pillageinfo.ammo = self.swapped_weapon_ammocount;
if ( isdefined( var_0.is_locker ) && isdefined( level.locker_drop_item_on_ground_func ) )
var_0 [[ level.locker_drop_item_on_ground_func ]]( self );
else
var_0.pillage_trigger drop_pillage_item_on_ground();
}
}
}
try_to_give_player_the_leash( var_0 )
{
var_1 = var_0.pillageinfo.item;
var_2 = var_0.pillageinfo.ammo;
if ( isdefined( level.try_to_give_player_leash_override ) )
{
if ( ![[ level.try_to_give_player_leash_override ]]() )
return;
}
if ( self hasweapon( var_1 ) && self getammocount( var_1 ) > 0 )
{
var_3 = self getfractionmaxammo( var_1 );
if ( var_3 < 1 )
{
var_4 = self getweaponammoclip( var_1 );
var_5 = self getweaponammostock( var_1 );
self setweaponammoclip( var_1, var_4 + var_5 + 1 );
var_0 delete_pillage_trigger();
return;
}
maps\mp\_utility::setlowermessage( "max_leash", &"ALIENS_PATCH_LEASH_MAX", 3 );
return;
}
else
{
var_6 = should_swap_weapon( level.offhand_secondaries );
if ( !isdefined( var_6 ) )
{
self setoffhandsecondaryclass( "throwingknife" );
self giveweapon( var_1 );
self setweaponammoclip( var_1, var_2 );
var_0 delete_pillage_trigger();
}
else
{
self setoffhandsecondaryclass( "throwingknife" );
self takeweapon( var_6 );
self giveweapon( var_1 );
self setweaponammoclip( var_1, var_2 );
var_7 = get_hintstring_for_item_pickup( var_6 );
var_0.pillage_trigger sethintstring( var_7 );
var_0.pillage_trigger makeusable();
var_0.pillageinfo = spawnstruct();
if ( var_6 == "alienflare_mp" || var_6 == "iw6_aliendlc21_mp" )
{
var_0.pillage_trigger setmodel( level.pillageinfo.flare_model );
var_0.pillageinfo.type = "flare";
}
else if ( var_6 == "alienthrowingknife_mp" )
var_0.pillage_trigger setmodel( level.pillageinfo.leash_model );
else if ( var_6 == "alientrophy_mp" )
{
var_0.pillageinfo.type = "trophy";
var_0.pillage_trigger setmodel( level.pillageinfo.trophy_model );
}
var_0.pillageinfo.item = var_6;
var_0.pillageinfo.ammo = self.swapped_weapon_ammocount;
if ( isdefined( var_0.is_locker ) && isdefined( level.locker_drop_item_on_ground_func ) )
var_0 [[ level.locker_drop_item_on_ground_func ]]( self );
else
var_0.pillage_trigger drop_pillage_item_on_ground();
}
}
}
should_swap_weapon( var_0 )
{
var_1 = 0;
var_2 = undefined;
var_3 = 0;
var_4 = self getweaponslistoffhands();
foreach ( var_6 in var_4 )
{
foreach ( var_8 in var_0 )
{
if ( var_6 != var_8 )
continue;
if ( isdefined( var_6 ) && var_6 != "none" && self getammocount( var_6 ) > 0 )
{
var_2 = var_6;
var_3 = self getweaponammoclip( var_6 );
var_1 = 1;
break;
}
if ( var_1 )
break;
}
}
if ( isdefined( var_2 ) )
self.swapped_weapon_ammocount = var_3;
return var_2;
}
is_frag_grenade( var_0 )
{
return var_0 == "aliensemtex_mp" || var_0 == "alienmortar_shell_mp";
}
get_attachment_for_weapon()
{
var_0 = self getcurrentweapon();
var_1 = getweaponbasename( var_0 );
var_2 = maps\mp\_utility::getweaponclass( var_0 );
var_3 = common_scripts\utility::random( level.pillageable_attachments );
switch ( var_2 )
{
case "weapon_sniper":
var_3 = check_upgrade_return_attchment( level.pillageable_attachments, var_1 );
break;
case "weapon_assault":
if ( issubstr( var_1, "sc2010" ) )
var_3 = check_upgrade_return_attchment( level.pillageable_attachments_ar_sc2010, var_1 );
else if ( issubstr( var_1, "honeybadger" ) )
var_3 = check_upgrade_return_attchment( level.pillageable_attachments_ar_honeybadger, var_1 );
else
var_3 = check_upgrade_return_attchment( level.pillageable_attachments_ar, var_1 );
break;
case "weapon_lmg":
if ( issubstr( var_1, "kac" ) )
var_3 = check_upgrade_return_attchment( level.pillageable_attachments_lmg_kac, var_1 );
else
var_3 = check_upgrade_return_attchment( level.pillageable_attachments_lmg, var_1 );
break;
case "weapon_shotgun":
if ( issubstr( var_1, "fp6" ) )
var_3 = check_upgrade_return_attchment( level.pillageable_attachments_sg_fp6, var_1 );
else
var_3 = check_upgrade_return_attchment( level.pillageable_attachments_sg, var_1 );
break;
case "weapon_dmr":
var_3 = check_upgrade_return_attchment( level.pillageable_attachments_dmr, var_1 );
break;
case "weapon_smg":
if ( issubstr( var_1, "aliendlc23" ) )
var_3 = check_upgrade_return_attchment( level.pillageable_attachments_aliendlc23, var_1 );
else if ( issubstr( var_1, "arkalienk7" ) )
var_3 = check_upgrade_return_attchment( level.pillageable_attachments_smg_k7, var_1 );
else
var_3 = check_upgrade_return_attchment( level.pillageable_attachments_smg, var_1 );
break;
default:
var_3 = check_upgrade_return_attchment( level.pillageable_attachments, var_1 );
break;
}
return var_3;
}
check_upgrade_return_attchment( var_0, var_1 )
{
var_2 = getdvar( "ui_mapname" );
var_3 = common_scripts\utility::random( var_0 );
while ( var_3 == "alienmuzzlebrake" || var_3 == "xmags" )
{
if ( var_3 == "alienmuzzlebrake" )
{
if ( maps\mp\alien\_persistence::is_upgrade_enabled( "master_scavenger_upgrade" ) )
return var_3;
else
var_3 = common_scripts\utility::random( var_0 );
}
else if ( var_3 == "xmags" )
{
if ( maps\mp\alien\_persistence::is_upgrade_enabled( "master_scavenger_upgrade" ) )
return var_3;
else
var_3 = common_scripts\utility::random( var_0 );
}
wait 0.05;
}
return var_3;
}
add_attachment_to_weapon( var_0, var_1 )
{
var_2 = self getcurrentweapon();
var_3 = getweaponbasename( var_2 );
var_4 = getweaponbasename( var_2 );
var_5 = 0;
var_6 = "none";
var_7 = "none";
var_8 = "none";
var_9 = "none";
var_10 = 0;
var_11 = 0;
var_12 = 0;
var_13 = maps\mp\_utility::getweaponclass( var_3 );
if ( maps\mp\_utility::weaponhasattachment( var_2, "xmags" ) )
var_10 = 1;
var_14 = get_possible_attachments_by_weaponclass( var_13, var_3 );
var_15 = 0;
foreach ( var_17 in var_14 )
{
if ( var_0 == var_17 )
var_15 = 1;
}
if ( !var_15 )
{
maps\mp\_utility::setlowermessage( "cant_attach", &"ALIEN_COLLECTIBLES_CANT_USE", 3 );
return 0;
}
var_19 = getweaponattachments( var_2 );
if ( var_19.size > 0 && var_19.size < 5 )
{
for ( var_20 = 0; var_20 < var_19.size; var_20++ )
{
if ( var_20 == 0 )
var_6 = var_19[var_20];
if ( var_20 == 1 )
var_7 = var_19[var_20];
if ( var_20 == 2 )
var_8 = var_19[var_20];
if ( var_20 == 3 )
var_9 = var_19[var_20];
}
if ( var_6 != "none" && maps\mp\_utility::getattachmenttype( var_6 ) == maps\mp\_utility::getattachmenttype( var_0 ) )
{
swap_attachment( var_6, var_1 );
var_6 = var_0;
var_5 = 1;
}
if ( var_7 != "none" && maps\mp\_utility::getattachmenttype( var_7 ) == maps\mp\_utility::getattachmenttype( var_0 ) )
{
swap_attachment( var_7, var_1 );
var_7 = var_0;
var_5 = 1;
}
if ( var_8 != "none" && maps\mp\_utility::getattachmenttype( var_8 ) == maps\mp\_utility::getattachmenttype( var_0 ) )
{
swap_attachment( var_8, var_1 );
var_8 = var_0;
var_5 = 1;
}
if ( var_9 != "none" && maps\mp\_utility::getattachmenttype( var_9 ) == maps\mp\_utility::getattachmenttype( var_0 ) )
{
swap_attachment( var_9, var_1 );
var_9 = var_0;
var_5 = 1;
}
if ( var_5 == 0 )
{
if ( var_6 == "none" )
var_6 = var_0;
else if ( var_7 == "none" && var_0 != var_6 )
var_7 = var_0;
else if ( var_8 == "none" && var_0 != var_6 && var_0 != var_7 )
var_8 = var_0;
else if ( var_9 == "none" && var_0 != var_6 && var_0 != var_7 && var_0 != var_8 )
var_9 = var_0;
else
{
maps\mp\_utility::setlowermessage( "cant_attach", &"ALIEN_COLLECTIBLES_CANT_USE", 3 );
return 0;
}
}
}
else
var_6 = var_0;
var_21 = maps\mp\_utility::strip_suffix( var_4, "_mp" );
var_11 = get_weapon_camo( var_3 );
var_12 = randomintrange( 1, 7 );
if ( issubstr( var_3, "aliendlc23" ) )
var_12 = 0;
if ( var_6 != "thermal" && var_6 != "thermalsmg" && var_7 != "thermal" && var_7 != "thermalsmg" && var_8 != "thermal" && var_8 != "thermalsmg" && var_9 != "thermal" && var_9 != "thermalsmg" )
var_22 = maps\mp\alien\_utility::buildalienweaponname( var_21, var_6, var_7, var_8, var_9, var_11, var_12 );
else
var_22 = maps\mp\alien\_utility::buildalienweaponname( var_21, var_6, var_7, var_8, var_9, var_11 );
var_23 = self getweaponammoclip( var_2 );
var_24 = self getweaponammostock( var_2 );
self takeweapon( var_2 );
self giveweapon( var_22 );
if ( maps\mp\_utility::weaponhasattachment( var_22, "xmags" ) && !var_10 )
var_23 = weaponclipsize( var_22 );
self setweaponammoclip( var_22, var_23 );
self setweaponammostock( var_22, var_24 );
self playlocalsound( "weap_raise_large_plr" );
self switchtoweapon( var_22 );
if ( var_5 == 0 )
return 1;
else
return 0;
}
get_weapon_camo( var_0 )
{
if ( issubstr( var_0, "alienfp6" ) || issubstr( var_0, "alienmts255" ) || issubstr( var_0, "aliendlc12" ) || issubstr( var_0, "aliendlc13" ) || issubstr( var_0, "aliendlc14" ) || issubstr( var_0, "aliendlc15" ) || issubstr( var_0, "alienameli" ) || issubstr( var_0, "alienk7" ) || issubstr( var_0, "alienmk14" ) || issubstr( var_0, "alienr5rgp" ) || issubstr( var_0, "alienusr" ) || issubstr( var_0, "alienuts15" ) || issubstr( var_0, "arkalienameli" ) || issubstr( var_0, "arkaliendlc15" ) || issubstr( var_0, "arkaliendlc23" ) || issubstr( var_0, "arkalienimbel" ) || issubstr( var_0, "arkalienk7" ) || issubstr( var_0, "arkalienkac" ) || issubstr( var_0, "arkalienmaul" ) || issubstr( var_0, "arkalienmk14" ) || issubstr( var_0, "arkalienr5rgp" ) || issubstr( var_0, "arkalienusr" ) || issubstr( var_0, "arkalienuts15" ) || issubstr( var_0, "arkalienvks" ) || issubstr( var_0, "aliendlc23" ) )
return 0;
else
return randomintrange( 1, 10 );
}
swap_attachment( var_0, var_1 )
{
var_2 = var_1.origin;
var_1.pillageinfo.type = "attachment";
var_1.pillageinfo.attachment = var_0;
switch ( var_0 )
{
case "griphide":
var_0 = "grip";
break;
case "barrelrange03":
var_0 = "barrelrange";
break;
case "alienfiretypeburstdmr":
var_0 = "firetypeburst";
break;
case "alienfiretypeburstg28":
var_0 = "firetypeburst";
break;
case "alienfiretypeburstlight":
var_0 = "firetypeburst";
break;
case "alienfiretypeburst":
var_0 = "firetypeburst";
break;
case "reflexsmg":
var_0 = "reflex";
break;
case "reflexlmg":
var_0 = "reflex";
break;
case "reflexshotgun":
var_0 = "reflex";
break;
case "eotechsmg":
var_0 = "eotech";
break;
case "eotechlmg":
var_0 = "eotech";
break;
case "eotechshotgun":
var_0 = "eotech";
break;
case "acogsmg":
var_0 = "acog";
break;
case "thermalsmg":
var_0 = "thermal";
break;
case "alienmuzzlebrakesn":
case "alienmuzzlebrakesg":
case "alienmuzzlebrake":
var_0 = "alienmuzzlebrake";
break;
default:
break;
}
var_1.pillage_trigger.origin = var_2;
var_3 = get_hintstring_for_pillaged_item( "attachment" );
var_4 = get_hintstring_for_item_pickup( var_0 );
var_1.pillage_trigger sethintstring( var_4 );
var_1.pillage_trigger makeusable();
thread show_pillage_text( var_3 );
var_5 = level.pillageinfo.attachment_model;
if ( var_0 == "alienmuzzlebrake" )
var_5 = level.pillageinfo.alienattachment_model;
var_1.pillage_trigger setmodel( var_5 );
var_1.pillageinfo.type = "attachment";
var_1.pillageinfo.attachment = var_0;
var_1.pillage_trigger drop_pillage_item_on_ground();
}
useholdthink( var_0, var_1 )
{
var_0 endon( "disconnect" );
var_0.pillage_spot = spawnstruct();
var_0.pillage_spot.curprogress = 0;
var_0.pillage_spot.inuse = 1;
var_0.pillage_spot.userate = 1;
if ( isdefined( var_1 ) )
var_0.pillage_spot.usetime = var_1;
else
var_0.pillage_spot.usetime = level.pillageinfo.default_use_time;
if ( isplayer( var_0 ) )
var_0 thread personalusebar( self );
var_0.hasprogressbar = 1;
var_2 = useholdthinkloop( var_0, self, 40000 );
var_0.hasprogressbar = 0;
if ( !isdefined( self ) )
return 0;
var_0.pillage_spot.inuse = 0;
var_0.pillage_spot.curprogress = 0;
return var_2;
}
personalusebar( var_0 )
{
self endon( "disconnect" );
self setclientomnvar( "ui_securing", 1 );
var_1 = -1;
while ( maps\mp\_utility::isreallyalive( self ) && isdefined( var_0 ) && self.pillage_spot.inuse && !level.gameended )
{
var_1 = self.pillage_spot.userate;
self setclientomnvar( "ui_securing_progress", self.pillage_spot.curprogress / self.pillage_spot.usetime );
wait 0.05;
}
self setclientomnvar( "ui_securing", 0 );
self setclientomnvar( "ui_securing_progress", 0 );
}
useholdthinkloop( var_0, var_1, var_2 )
{
while ( !level.gameended && isdefined( self ) && maps\mp\_utility::isreallyalive( var_0 ) && var_0 usebuttonpressed() && var_0.pillage_spot.curprogress < var_0.pillage_spot.usetime )
{
if ( isdefined( var_1 ) && isdefined( var_2 ) )
{
if ( distancesquared( var_0.origin, var_1.origin ) > var_2 )
return 0;
}
var_0.pillage_spot.curprogress = var_0.pillage_spot.curprogress + 50 * var_0.pillage_spot.userate;
var_0.pillage_spot.userate = 1;
if ( var_0.pillage_spot.curprogress >= var_0.pillage_spot.usetime )
return maps\mp\_utility::isreallyalive( var_0 );
wait 0.05;
}
return 0;
}
get_possible_attachments_by_weaponclass( var_0, var_1 )
{
switch ( var_0 )
{
case "weapon_smg":
if ( issubstr( var_1, "aliendlc23" ) )
{
var_2 = level.pillageable_attachments_aliendlc23;
return var_2;
}
if ( issubstr( var_1, "arkalienk7" ) )
{
var_2 = level.pillageable_attachments_smg_k7;
return var_2;
}
var_2 = level.pillageable_attachments_smg;
return var_2;
case "weapon_assault":
if ( issubstr( var_1, "sc2010" ) )
{
var_2 = level.pillageable_attachments_ar_sc2010;
return var_2;
}
if ( issubstr( var_1, "honeybadger" ) )
{
var_2 = level.pillageable_attachments_ar_honeybadger;
return var_2;
}
var_2 = level.pillageable_attachments_ar;
return var_2;
case "weapon_lmg":
if ( issubstr( var_1, "kac" ) )
{
var_2 = level.pillageable_attachments_lmg_kac;
return var_2;
}
var_2 = level.pillageable_attachments_lmg;
return var_2;
case "weapon_shotgun":
if ( issubstr( var_1, "fp6" ) )
{
var_2 = level.pillageable_attachments_sg_fp6;
return var_2;
}
var_2 = level.pillageable_attachments_sg;
return var_2;
case "weapon_pistol":
var_2 = [];
return var_2;
case "weapon_dmr":
var_2 = level.pillageable_attachments_dmr;
return var_2;
case "weapon_sniper":
var_2 = level.pillageable_attachments_sr;
return var_2;
default:
var_2 = [];
return var_2;
}
}
cangive_ammo_clip()
{
var_0 = self getcurrentweapon();
var_1 = weaponmaxammo( var_0 );
var_2 = weaponclipsize( var_0 );
var_3 = maps\mp\alien\_utility::getrawbaseweaponname( var_0 );
if ( maps\mp\alien\_utility::player_has_specialized_ammo( var_3 ) )
{
if ( isdefined( self.stored_ammo[var_3] ) )
{
if ( self.stored_ammo[var_3].ammostock < weaponmaxammo( var_0 ) )
return 1;
}
}
else if ( self getweaponammostock( var_0 ) < var_1 )
return 1;
if ( var_0 == "aliensoflam_mp" || weapontype( var_0 ) == "riotshield" || maps\mp\alien\_utility::is_incompatible_weapon( var_0 ) )
{
var_4 = self getweaponslistprimaries();
foreach ( var_6 in var_4 )
{
if ( var_6 == var_0 )
continue;
var_1 = weaponmaxammo( var_6 );
var_2 = weaponclipsize( var_6 );
var_3 = maps\mp\alien\_utility::getrawbaseweaponname( var_6 );
if ( maps\mp\alien\_utility::player_has_specialized_ammo( var_3 ) )
{
if ( isdefined( self.stored_ammo[var_3] ) )
{
if ( self.stored_ammo[var_3].ammostock < weaponmaxammo( var_6 ) )
return 1;
}
}
else if ( self getweaponammostock( var_6 ) < var_1 )
return 1;
}
}
return 0;
}
give_ammo_clip()
{
var_0 = self getcurrentweapon();
var_1 = maps\mp\alien\_utility::getrawbaseweaponname( var_0 );
var_2 = weaponclipsize( var_0 );
if ( maps\mp\alien\_utility::player_has_specialized_ammo( var_1 ) )
{
if ( isdefined( self.stored_ammo[var_1] ) )
{
if ( self.stored_ammo[var_1].ammostock < weaponmaxammo( var_0 ) )
self.stored_ammo[var_1].ammostock = self.stored_ammo[var_1].ammostock + var_2;
}
}
else if ( var_0 == "aliensoflam_mp" || weapontype( var_0 ) == "riotshield" || maps\mp\alien\_utility::is_incompatible_weapon( var_0 ) )
{
var_3 = self getweaponslistprimaries();
foreach ( var_5 in var_3 )
{
if ( var_5 == var_0 )
continue;
if ( !maps\mp\gametypes\_weapons::isbulletweapon( var_0 ) )
continue;
var_2 = weaponclipsize( var_5 );
var_1 = maps\mp\alien\_utility::getrawbaseweaponname( var_5 );
if ( maps\mp\alien\_utility::player_has_specialized_ammo( var_1 ) )
{
if ( isdefined( self.stored_ammo[var_1] ) )
{
if ( self.stored_ammo[var_1].ammostock < weaponmaxammo( var_5 ) )
self.stored_ammo[var_1].ammostock = self.stored_ammo[var_1].ammostock + var_2;
}
}
else if ( self getweaponammostock( var_5 ) < weaponmaxammo( var_5 ) )
{
var_6 = self getweaponammostock( var_5 );
self setweaponammostock( var_5, var_2 + var_6 );
}
return;
}
}
else
{
var_6 = self getweaponammostock( var_0 );
self setweaponammostock( var_0, var_2 + var_6 );
}
self playlocalsound( "weap_ammo_pickup" );
}
give_maxammo()
{
var_0 = self getweaponslistprimaries();
foreach ( var_2 in var_0 )
{
if ( var_2 == "aliensoflam_mp" || weapontype( var_2 ) == "riotshield" )
continue;
if ( maps\mp\alien\_utility::is_incompatible_weapon( var_2 ) )
continue;
var_3 = maps\mp\alien\_utility::getrawbaseweaponname( var_2 );
if ( maps\mp\alien\_utility::player_has_specialized_ammo( var_3 ) )
{
if ( isdefined( self.stored_ammo[var_3] ) )
{
if ( self.stored_ammo[var_3].ammostock < weaponmaxammo( var_2 ) )
self.stored_ammo[var_3].ammostock = maps\mp\alien\_utility::return_nerf_scaled_ammo( var_2 );
}
continue;
}
var_4 = weaponmaxammo( var_2 );
var_5 = int( var_4 * maps\mp\alien\_prestige::prestige_getminammo() );
self setweaponammostock( var_2, var_5 );
}
self playlocalsound( "weap_ammo_pickup" );
}
cangive_maxammo()
{
var_0 = self getweaponslistprimaries();
foreach ( var_2 in var_0 )
{
if ( var_2 == "aliensoflam_mp" || weapontype( var_2 ) == "riotshield" )
continue;
if ( maps\mp\alien\_utility::is_incompatible_weapon( var_2 ) )
continue;
var_3 = maps\mp\alien\_utility::getrawbaseweaponname( var_2 );
if ( maps\mp\alien\_utility::player_has_specialized_ammo( var_3 ) )
{
if ( isdefined( self.stored_ammo[var_3] ) )
{
var_4 = weaponmaxammo( var_2 );
if ( maps\mp\alien\_prestige::prestige_getminammo() != 1 )
var_4 = maps\mp\alien\_prestige::prestige_getminammo() * weaponmaxammo( var_2 );
if ( self.stored_ammo[var_3].ammostock < var_4 )
return 1;
}
continue;
}
var_4 = weaponmaxammo( var_2 );
if ( maps\mp\alien\_prestige::prestige_getminammo() != 1 )
var_4 = maps\mp\alien\_prestige::prestige_getminammo() * weaponmaxammo( var_2 );
var_5 = var_4;
var_6 = self getweaponammostock( var_2 );
if ( var_6 < var_5 )
return 1;
}
return 0;
}
cangive_soflam()
{
var_0 = "aliensoflam_mp";
var_1 = self getcurrentweapon();
var_2 = self getweaponslistprimaries();
if ( self.hasriotshieldequipped && var_2.size > 2 )
return 0;
if ( maps\mp\alien\_utility::is_holding_deployable() || self hasweapon( var_0 ) )
return 0;
return 1;
}
give_soflam()
{
self giveweapon( "aliensoflam_mp" );
self switchtoweapon( "aliensoflam_mp" );
}
cangive_crafting_item( var_0 )
{
if ( !isdefined( self.current_crafting_recipe ) )
{
maps\mp\_utility::setlowermessage( "cant_pickup", &"ALIEN_CRAFTING_NO_RECIPE", 3 );
self playlocalsound( "ui_craft_deny" );
return 0;
}
if ( self.craftingitems.size == level.max_crafting_items )
{
maps\mp\_utility::setlowermessage( "cant_pickup", &"ALIEN_CRAFTING_MAX_CRAFTING_ITEMS", 3 );
return 0;
}
foreach ( var_2 in self.craftingitems )
{
if ( var_2 == var_0 )
{
maps\mp\_utility::setlowermessage( "cant_pickup", &"ALIEN_CRAFTING_ALREADY_HAVE", 3 );
return 0;
}
}
if ( common_scripts\utility::array_contains( self.swappable_crafting_ingredient_list, var_0 ) )
return 1;
else if ( common_scripts\utility::array_contains( self.crafting_ingredient_list, var_0 ) )
return 1;
maps\mp\_utility::setlowermessage( "cant_pickup", &"ALIEN_CRAFTING_NO_RECIPE", 3 );
return 0;
}
re_distribute_pillage_spots()
{
level endon( "game_ended" );
for (;;)
{
level waittill( "drill_detonated" );
var_0 = common_scripts\utility::getstructarray( "pillage_area", "targetname" );
foreach ( var_8, var_2 in var_0 )
{
level.pillage_areas[var_8] = [];
level.pillage_areas[var_8]["easy"] = [];
level.pillage_areas[var_8]["medium"] = [];
level.pillage_areas[var_8]["hard"] = [];
var_3 = common_scripts\utility::getstructarray( var_2.target, "targetname" );
foreach ( var_5 in var_3 )
{
if ( isdefined( var_5.script_noteworthy ) )
{
var_6 = strtok( var_5.script_noteworthy, "," );
var_5.pillage_type = var_6[0];
if ( isdefined( var_6[1] ) )
var_5.script_model = var_6[1];
switch ( var_5.pillage_type )
{
case "easy":
level.pillage_areas[var_8]["easy"][level.pillage_areas[var_8]["easy"].size] = var_5;
break;
case "medium":
level.pillage_areas[var_8]["medium"][level.pillage_areas[var_8]["medium"].size] = var_5;
break;
case "hard":
level.pillage_areas[var_8]["hard"][level.pillage_areas[var_8]["hard"].size] = var_5;
break;
}
}
}
}
foreach ( var_8, var_2 in level.pillage_areas )
{
level.pillage_areas[var_8]["easy"] = remove_used_pillage_spots( level.pillage_areas[var_8]["easy"] );
level.pillage_areas[var_8]["medium"] = remove_used_pillage_spots( level.pillage_areas[var_8]["medium"] );
level.pillage_areas[var_8]["hard"] = remove_used_pillage_spots( level.pillage_areas[var_8]["hard"] );
level thread create_pillage_spots( level.pillage_areas[var_8]["easy"] );
level thread create_pillage_spots( level.pillage_areas[var_8]["medium"] );
level thread create_pillage_spots( level.pillage_areas[var_8]["hard"] );
}
}
}
remove_used_pillage_spots( var_0 )
{
var_1 = [];
var_2 = 22500;
var_3 = 90000;
var_4 = cos( 75 );
for ( var_5 = 0; var_5 < var_0.size; var_5++ )
{
var_6 = 0;
if ( isdefined( var_0[var_5].not_used ) )
{
var_1[var_1.size] = var_0[var_5];
var_0[var_5].not_used = undefined;
var_0[var_5].searched = undefined;
}
else if ( isdefined( var_0[var_5].searched ) )
{
if ( !isdefined( var_0[var_5].pillage_trigger ) )
{
var_0[var_5].searched = undefined;
var_1[var_1.size] = var_0[var_5];
continue;
}
else
continue;
}
else if ( isdefined( var_0[var_5].pillage_trigger ) )
{
var_7 = 0;
foreach ( var_9 in level.players )
{
var_6 = 0;
if ( !isalive( var_9 ) )
continue;
if ( distance2dsquared( var_9.origin, var_0[var_5].origin ) < var_2 )
var_6 = 1;
if ( !var_6 && distance2dsquared( var_9.origin, var_0[var_5].origin ) < var_3 )
var_6 = common_scripts\utility::within_fov( var_9 geteye(), var_9.angles, var_0[var_5].origin + ( 0, 0, 5 ), var_4 );
if ( var_6 )
var_7 = 1;
}
if ( var_7 )
continue;
maps\mp\alien\_outline_proto::remove_from_outline_pillage_watch_list( var_0[var_5].pillage_trigger );
var_0[var_5].pillage_trigger delete();
var_0[var_5].not_used = 1;
var_0[var_5].searched = undefined;
var_0[var_5].enabled = undefined;
}
if ( var_5 % 2 == 0 )
wait 0.05;
}
return var_1;
}
can_use_attachment()
{
var_0 = self getweaponslistprimaries();
foreach ( var_2 in var_0 )
{
var_3 = maps\mp\_utility::getweaponclass( var_2 );
if ( var_3 == "weapon_pistol" )
continue;
if ( maps\mp\gametypes\_weapons::isbulletweapon( var_2 ) )
return 1;
}
return 0;
}
check_for_existing_pet_bombs()
{
var_0 = 0;
foreach ( var_2 in level.players )
{
var_3 = var_2 getweaponslistall();
foreach ( var_5 in var_3 )
{
if ( var_5 == "alienthrowingknife_mp" && ( var_2 getweaponammoclip( "alienthrowingknife_mp" ) > 0 || var_2 getweaponammostock( "alienthrowingknife_mp" ) > 0 ) )
var_0++;
}
}
foreach ( var_17, var_9 in level.pillage_areas )
{
foreach ( var_11 in level.pillage_areas[var_17]["easy"] )
{
if ( pillage_area_has_petbomb( var_11 ) )
var_0++;
}
foreach ( var_11 in level.pillage_areas[var_17]["medium"] )
{
if ( pillage_area_has_petbomb( var_11 ) )
var_0++;
}
foreach ( var_11 in level.pillage_areas[var_17]["hard"] )
{
if ( pillage_area_has_petbomb( var_11 ) )
var_0++;
}
}
var_18 = maps\mp\agents\_agent_utility::getactiveagentsoftype( "alien" );
foreach ( var_20 in var_18 )
{
if ( isdefined( var_20.pet ) && var_20.pet )
var_0++;
}
if ( isdefined( level.custom_pet_bomb_check ) )
var_0 = var_0 + [[ level.custom_pet_bomb_check ]]();
return var_0;
}
pillage_area_has_petbomb( var_0 )
{
return isdefined( var_0.pillageinfo ) && isdefined( var_0.pillageinfo.type ) && var_0.pillageinfo.type == "pet_leash";
}
get_crafting_ingredient()
{
var_0 = [];
if ( self.craftingitems.size < 1 || self.crafting_ingredient_list.size > 0 )
return common_scripts\utility::random( self.crafting_ingredient_list );
else if ( self.craftingitems.size < 3 )
return common_scripts\utility::random( self.swappable_crafting_ingredient_list );
else
{
foreach ( var_2 in level.players )
{
if ( !isdefined( var_2.current_crafting_recipe ) )
continue;
if ( var_2.craftingitems.size == 3 )
continue;
if ( var_2.craftingitems.size < 1 || var_2.crafting_ingredient_list.size > 0 )
{
var_0 = common_scripts\utility::array_combine( var_2.crafting_ingredient_list, var_0 );
continue;
}
var_0 = common_scripts\utility::array_combine( var_2.swappable_crafting_ingredient_list, var_0 );
}
}
if ( var_0.size > 0 )
return common_scripts\utility::random( var_0 );
else if ( isdefined( level.random_crafting_list ) )
return common_scripts\utility::random( level.random_crafting_list );
else
return common_scripts\utility::random( [ "venomx", "nucleicbattery", "bluebiolum", "biolum", "orangebiolum", "amethystbiolum", "fuse", "tnt", "pipe", "resin", "biolum", "cellbattery" ] );
}
get_crafting_model( var_0 )
{
var_1 = 2;
var_2 = 1;
var_3 = tablelookup( level.alien_crafting_items, var_2, var_0, var_1 );
if ( isdefined( var_3 ) )
return var_3;
else
return level.crafting_model;
}
give_crafting_item( var_0 )
{
if ( isdefined( self.current_crafting_recipe ) )
self notify( "dlc_vo_notify", self.current_crafting_recipe, self );
var_1 = get_crafting_item_slot( var_0 );
self.crafting_ingredient_list = common_scripts\utility::array_remove( self.crafting_ingredient_list, var_0 );
switch ( var_1 )
{
case 1:
self setclientomnvar( "ui_alien_craft_slot_1", 1 );
break;
case 2:
self setclientomnvar( "ui_alien_craft_slot_2", 1 );
break;
case 3:
self setclientomnvar( "ui_alien_craft_slot_3", 1 );
break;
}
if ( common_scripts\utility::array_contains( self.swappable_crafting_ingredient_list, var_0 ) )
{
var_2 = undefined;
foreach ( var_4 in self.craftingitems )
{
if ( common_scripts\utility::array_contains( self.swappable_crafting_ingredient_list, var_4 ) )
var_2 = var_4;
}
if ( isdefined( var_2 ) )
self.craftingitems = common_scripts\utility::array_remove( self.craftingitems, var_2 );
}
else
self.crafting_ingredient_list = common_scripts\utility::array_remove( self.crafting_ingredient_list, var_0 );
self.craftingitems[self.craftingitems.size] = var_0;
if ( self.craftingitems.size == 3 )
{
var_6 = get_crafting_item_table_index();
self setclientomnvar( "ui_alien_hudcraftinginfo", var_6 );
if ( isalive( self ) && !maps\mp\alien\_utility::is_in_laststand() )
self iprintlnbold( &"ALIEN_CRAFTING_OPEN_MENU" );
}
}
get_crafting_item_slot( var_0 )
{
var_1 = 4;
var_2 = 5;
var_3 = 6;
var_4 = 7;
var_5 = 8;
var_6 = 9;
var_7 = undefined;
var_8 = int( tablelookup( level.crafting_item_table, 1, var_0, 0 ) );
var_9 = tablelookupbyrow( level.crafting_item_table, var_8, var_1 );
if ( self.current_crafting_recipe == var_9 )
var_7 = int( tablelookupbyrow( level.crafting_item_table, var_8, var_2 ) );
else
{
var_9 = tablelookupbyrow( level.crafting_item_table, var_8, var_3 );
if ( self.current_crafting_recipe != var_9 )
{
var_9 = tablelookupbyrow( level.crafting_item_table, var_8, var_5 );
var_7 = int( tablelookupbyrow( level.crafting_item_table, var_8, var_6 ) );
if ( self.current_crafting_recipe != var_9 )
{
}
}
else
var_7 = int( tablelookupbyrow( level.crafting_item_table, var_8, var_4 ) );
}
return var_7;
}
get_crafting_item_table_index()
{
var_0 = self.craftingitems.size;
var_1 = [];
var_2 = getarraykeys( level.crafting_ingredient_lists );
foreach ( var_4 in var_2 )
{
var_5 = var_4;
var_6 = 0;
foreach ( var_8 in self.craftingitems )
{
if ( common_scripts\utility::array_contains( level.crafting_ingredient_lists[var_5], var_8 ) )
var_6++;
}
if ( var_6 == var_0 )
{
var_10 = int( tablelookup( level.alien_crafting_table, 1, var_5, 0 ) );
return var_10;
}
}
}
should_find_crafting_items()
{
if ( isdefined( self.craftingitems ) && isdefined( level.max_crafting_items ) && self.craftingitems.size >= level.max_crafting_items )
return 0;
else if ( !isdefined( self.current_crafting_recipe ) )
return 0;
return 1;
}