mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-06-23 16:27:50 -05:00
Added MW3 Scripts
This commit is contained in:
647
MW3/PC/SP/maps/_air_support_strobe.gsc
Normal file
647
MW3/PC/SP/maps/_air_support_strobe.gsc
Normal file
@ -0,0 +1,647 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_air_support_strobe.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 32
|
||||
* Decompile Time: 515 ms
|
||||
* Timestamp: 10/27/2023 2:21:19 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
if(isdefined(level.cheap_air_strobe_fx))
|
||||
{
|
||||
level._effect["air_support_marker"] = loadfx("smoke/signal_smoke_air_support_paris_ac130");
|
||||
}
|
||||
else
|
||||
{
|
||||
level._effect["air_support_marker"] = loadfx("smoke/signal_smoke_air_support");
|
||||
}
|
||||
|
||||
level._effect["air_support_trail"] = loadfx("smoke/smoke_geotrail_air_support");
|
||||
if(isdefined(level.air_support_sticky_marker_fx))
|
||||
{
|
||||
level._effect["air_support_sticky_marker"] = level.air_support_sticky_marker_fx;
|
||||
}
|
||||
|
||||
if(isdefined(level.enemy_air_support_marker_fx))
|
||||
{
|
||||
level._effect["air_support_marker_enemy"] = level.enemy_air_support_marker_fx;
|
||||
}
|
||||
|
||||
if(isdefined(level.enemy_air_support_trail_fx))
|
||||
{
|
||||
level._effect["air_support_trail_enemy"] = level.enemy_air_support_trail_fx;
|
||||
}
|
||||
|
||||
level.air_support_weapon = "ac130_40mm_air_support_strobe";
|
||||
precacheitem(level.air_support_weapon);
|
||||
precacheitem("air_support_strobe");
|
||||
precacherumble("ac130_artillery_rumble");
|
||||
common_scripts\utility::flag_init("flag_strobes_in_use");
|
||||
level.air_support_strobes = [];
|
||||
level.air_support_strobe_count = 0;
|
||||
thread air_support_loop();
|
||||
foreach(var_01 in level.players)
|
||||
{
|
||||
var_01 maps\_utility::ent_flag_init("flag_strobe_ready");
|
||||
var_01 thread monitor_last_weapon();
|
||||
}
|
||||
|
||||
maps\_utility::add_extra_autosave_check("autosave_check_air_support_strobe_not_in_use",::autosave_check_air_support_strobe_not_in_use,"Can\'t save because an air support strobe is in use");
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
autosave_check_air_support_strobe_not_in_use()
|
||||
{
|
||||
return level.air_support_strobe_count == 0;
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
fake_strobe(param_00)
|
||||
{
|
||||
var_01 = common_scripts\utility::spawn_tag_origin();
|
||||
var_01.origin = param_00;
|
||||
thread notify_strobe_thrown(var_01);
|
||||
air_support_enqueue(var_01);
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
strobe_tracking()
|
||||
{
|
||||
self notify("stop_strobe_tracking");
|
||||
self endon("stop_strobe_tracking");
|
||||
self giveweapon("air_support_strobe");
|
||||
self setweaponammoclip("air_support_strobe",99);
|
||||
self setactionslot(4,"weapon","air_support_strobe");
|
||||
maps\_utility::ent_flag_set("flag_strobe_ready");
|
||||
var_00 = 18;
|
||||
if(isdefined(level.strobe_cooldown_override))
|
||||
{
|
||||
var_00 = level.strobe_cooldown_override;
|
||||
}
|
||||
|
||||
var_01 = weaponfiretime("air_support_strobe") - 0.05;
|
||||
for(;;)
|
||||
{
|
||||
self waittill("grenade_fire",var_02,var_03);
|
||||
var_02.owner = self;
|
||||
if(var_03 == "air_support_strobe")
|
||||
{
|
||||
var_02 thread strobe_think();
|
||||
wait var_01;
|
||||
maps\_utility::ent_flag_clear("flag_strobe_ready");
|
||||
self takeweapon("air_support_strobe");
|
||||
ensure_player_has_weapon_selected();
|
||||
wait var_00 - var_01;
|
||||
self giveweapon("air_support_strobe");
|
||||
self setweaponammoclip("air_support_strobe",99);
|
||||
self setactionslot(4,"weapon","air_support_strobe");
|
||||
refreshhudammocounter();
|
||||
maps\_utility::ent_flag_set("flag_strobe_ready");
|
||||
level notify("air_support_strobe_ready");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
disable_strobes_for_player()
|
||||
{
|
||||
self takeweapon("air_support_strobe");
|
||||
ensure_player_has_weapon_selected();
|
||||
self notify("stop_strobe_tracking");
|
||||
maps\_utility::ent_flag_clear("flag_strobe_ready");
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
enable_strobes_for_player()
|
||||
{
|
||||
thread strobe_tracking();
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
air_support_loop()
|
||||
{
|
||||
var_00 = 2.5;
|
||||
if(isdefined(level.strobe_firedelay_override))
|
||||
{
|
||||
var_00 = level.strobe_firedelay_override;
|
||||
}
|
||||
|
||||
for(;;)
|
||||
{
|
||||
var_01 = air_support_dequeue();
|
||||
if(var_01 strobe_can_see_targets() || isdefined(level.strobe_no_vis_check) && level.strobe_no_vis_check)
|
||||
{
|
||||
level notify("air_suport_strobe_fired_upon",var_01);
|
||||
thread count_strobe_kills(8);
|
||||
if(!isdefined(level.strobe_no_badplace) || !level.strobe_no_badplace)
|
||||
{
|
||||
var_01 thread strobe_enemy_badplace();
|
||||
}
|
||||
|
||||
wait var_00;
|
||||
var_01 strobe_fire();
|
||||
continue;
|
||||
}
|
||||
|
||||
level notify("air_support_strobe_no_targets");
|
||||
wait 1;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
notify_strobe_thrown(param_00)
|
||||
{
|
||||
level notify("air_support_strobe_thrown",param_00);
|
||||
level endon("air_support_strobe_thrown");
|
||||
common_scripts\utility::flag_set("flag_strobes_in_use");
|
||||
wait 5;
|
||||
for(;;)
|
||||
{
|
||||
while(!air_support_queue_empty())
|
||||
{
|
||||
wait 1;
|
||||
}
|
||||
|
||||
wait 10;
|
||||
if(air_support_queue_empty())
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
common_scripts\utility::flag_clear("flag_strobes_in_use");
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
strobe_enemy_badplace()
|
||||
{
|
||||
self endon("death");
|
||||
var_00 = 5.8;
|
||||
if(isdefined(level.strobe_used_once))
|
||||
{
|
||||
var_00 = 3;
|
||||
}
|
||||
|
||||
wait var_00;
|
||||
var_01 = 512;
|
||||
var_02 = 400;
|
||||
var_03 = 11 - var_00;
|
||||
badplace_cylinder("",var_03,self.origin - (0,0,var_01 / 2),var_02,var_01,"axis");
|
||||
level.strobe_used_once = 1;
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
strobe_think(param_00)
|
||||
{
|
||||
self endon("death");
|
||||
thread monitor_strobe_count();
|
||||
thread notify_strobe_thrown(self);
|
||||
self.fx_origin = common_scripts\utility::spawn_tag_origin();
|
||||
self.fx_origin linkto(self);
|
||||
wait 0.1;
|
||||
if(isdefined(param_00) && param_00)
|
||||
{
|
||||
playfxontag(common_scripts\utility::getfx("air_support_trail_enemy"),self.fx_origin,"tag_origin");
|
||||
self.isenemystrobe = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
playfxontag(common_scripts\utility::getfx("air_support_trail"),self.fx_origin,"tag_origin");
|
||||
}
|
||||
|
||||
wait 2.35;
|
||||
var_01 = 0.5;
|
||||
var_02 = gettime() + var_01 * 1000;
|
||||
var_03 = self.origin;
|
||||
while(gettime() < var_02)
|
||||
{
|
||||
common_scripts\utility::waitframe();
|
||||
var_04 = self.origin - var_03 * 20;
|
||||
var_03 = self.origin;
|
||||
if(var_04[2] >= 0)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
var_05 = bullettrace(self.origin,self.origin + (0,0,-1024),1,undefined,1);
|
||||
if(isdefined(var_05["position"]))
|
||||
{
|
||||
self.origin = var_05["position"];
|
||||
}
|
||||
|
||||
if(isdefined(self.sticky) && self.sticky)
|
||||
{
|
||||
thread marker_pulse();
|
||||
}
|
||||
else if(isdefined(param_00) && param_00)
|
||||
{
|
||||
playfx(common_scripts\utility::getfx("air_support_marker_enemy"),self.origin);
|
||||
}
|
||||
else
|
||||
{
|
||||
playfx(common_scripts\utility::getfx("air_support_marker"),self.origin);
|
||||
}
|
||||
|
||||
air_support_enqueue(self);
|
||||
var_06 = 512;
|
||||
var_07 = 650;
|
||||
badplace_cylinder("",9.5,self.origin - (0,0,var_06 / 2),var_07,var_06,"allies");
|
||||
wait 15;
|
||||
if(isdefined(self.fx_origin))
|
||||
{
|
||||
if(isdefined(param_00) && param_00)
|
||||
{
|
||||
stopfxontag(common_scripts\utility::getfx("air_support_marker_enemy"),self.fx_origin,"tag_origin");
|
||||
}
|
||||
else
|
||||
{
|
||||
stopfxontag(common_scripts\utility::getfx("air_support_marker"),self.fx_origin,"tag_origin");
|
||||
}
|
||||
|
||||
self.fx_origin delete();
|
||||
}
|
||||
|
||||
self delete();
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
monitor_strobe_count()
|
||||
{
|
||||
if(!isdefined(self))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
level.air_support_strobe_count++;
|
||||
self waittill("death");
|
||||
wait 4;
|
||||
level.air_support_strobe_count--;
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
marker_pulse()
|
||||
{
|
||||
self endon("death");
|
||||
var_00 = 5;
|
||||
var_01 = 0.3;
|
||||
for(var_02 = 0;var_02 <= var_00 / var_01;var_02++)
|
||||
{
|
||||
if(isdefined(self.fx_origin))
|
||||
{
|
||||
playfxontag(common_scripts\utility::getfx("air_support_sticky_marker"),self.fx_origin,"tag_origin");
|
||||
wait var_01;
|
||||
continue;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
wait 1;
|
||||
stopfxontag(common_scripts\utility::getfx("air_support_sticky_marker"),self.fx_origin,"tag_origin");
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
linkto_without_angles(param_00)
|
||||
{
|
||||
self endon("death");
|
||||
self unlink();
|
||||
self rotateto((0,0,90),0.05);
|
||||
while(isdefined(param_00) && isdefined(param_00.origin))
|
||||
{
|
||||
self moveto(param_00.origin,0.05);
|
||||
common_scripts\utility::waitframe();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
air_support_enqueue(param_00)
|
||||
{
|
||||
level.air_support_strobes[level.air_support_strobes.size] = param_00;
|
||||
level notify("air_support_strobe_popped",param_00);
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
air_support_dequeue()
|
||||
{
|
||||
level.air_support_strobes = common_scripts\utility::array_removeundefined(level.air_support_strobes);
|
||||
while(level.air_support_strobes.size == 0)
|
||||
{
|
||||
level waittill("air_support_strobe_popped",var_00);
|
||||
level.air_support_strobes = common_scripts\utility::array_removeundefined(level.air_support_strobes);
|
||||
}
|
||||
|
||||
return level.air_support_strobes[0];
|
||||
}
|
||||
|
||||
//Function Number: 16
|
||||
air_support_queue_empty()
|
||||
{
|
||||
return level.air_support_strobes.size == 0;
|
||||
}
|
||||
|
||||
//Function Number: 17
|
||||
set_aircraft(param_00,param_01,param_02)
|
||||
{
|
||||
if(isdefined(param_01))
|
||||
{
|
||||
level.air_support_fake_altitude_inches = param_01;
|
||||
}
|
||||
|
||||
if(isdefined(param_02))
|
||||
{
|
||||
level.air_support_aircraft_guntag = param_02;
|
||||
}
|
||||
|
||||
level.air_support_aircraft = param_00;
|
||||
}
|
||||
|
||||
//Function Number: 18
|
||||
get_gun_pos()
|
||||
{
|
||||
if(isdefined(level.air_support_aircraft) && isalive(level.air_support_aircraft))
|
||||
{
|
||||
var_00 = level.air_support_aircraft.origin;
|
||||
if(isdefined(level.air_support_aircraft_guntag))
|
||||
{
|
||||
var_00 = level.air_support_aircraft gettagorigin(level.air_support_aircraft_guntag);
|
||||
}
|
||||
|
||||
if(isdefined(level.air_support_fake_altitude_inches))
|
||||
{
|
||||
var_01 = level.player geteye();
|
||||
if(var_00[2] > level.air_support_fake_altitude_inches && var_01[2] < level.air_support_fake_altitude_inches)
|
||||
{
|
||||
var_02 = level.air_support_fake_altitude_inches - var_01[2] / var_00[2] - var_01[2];
|
||||
var_00 = maps\_utility::linear_interpolate(var_02,level.player.origin,var_00);
|
||||
}
|
||||
}
|
||||
|
||||
return var_00;
|
||||
}
|
||||
|
||||
return self.origin + (30,15,12000);
|
||||
}
|
||||
|
||||
//Function Number: 19
|
||||
get_gun_test_pos()
|
||||
{
|
||||
return get_gun_pos();
|
||||
}
|
||||
|
||||
//Function Number: 20
|
||||
strobe_can_see_targets()
|
||||
{
|
||||
var_00 = compute_targets(self.origin,get_gun_pos());
|
||||
var_00 = filter_visible_targets(var_00,get_gun_test_pos());
|
||||
return var_00.size > 0;
|
||||
}
|
||||
|
||||
//Function Number: 21
|
||||
strobe_fire()
|
||||
{
|
||||
self endon("death");
|
||||
if(!isdefined(self))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var_00 = 10;
|
||||
var_01 = 200;
|
||||
var_02 = 60 / var_01;
|
||||
maps\_audio::aud_send_msg("ac130_prepare_inc");
|
||||
for(var_03 = 0;var_03 < var_00;var_03++)
|
||||
{
|
||||
var_04 = get_gun_pos();
|
||||
var_05 = get_gun_test_pos();
|
||||
var_06 = compute_targets(self.origin,var_04);
|
||||
var_06 = filter_visible_targets(var_06,var_05);
|
||||
var_07 = get_best_target(var_06,var_03,var_00);
|
||||
if(!isdefined(var_07))
|
||||
{
|
||||
var_07 = self.origin + noise_vector(32);
|
||||
}
|
||||
|
||||
if(isdefined(self.isenemystrobe))
|
||||
{
|
||||
var_08 = magicbullet(level.air_support_weapon,var_04,var_07);
|
||||
}
|
||||
else
|
||||
{
|
||||
var_08 = magicbullet(level.air_support_weapon,var_04,var_07,self.owner);
|
||||
}
|
||||
|
||||
var_08 thread projectile_impact_earthquake(0.3,0.5,1200);
|
||||
var_09 = spawnstruct();
|
||||
var_09.target_pos = var_07;
|
||||
var_09.fire_delay = var_02;
|
||||
var_09.bullet = var_08;
|
||||
maps\_audio::aud_send_msg("aud_ac130_bullet",var_09);
|
||||
wait var_02;
|
||||
}
|
||||
|
||||
if(isdefined(self.fx_origin))
|
||||
{
|
||||
stopfxontag(common_scripts\utility::getfx("air_support_marker"),self.fx_origin,"tag_origin");
|
||||
self.fx_origin delete();
|
||||
}
|
||||
|
||||
self delete();
|
||||
}
|
||||
|
||||
//Function Number: 22
|
||||
projectile_impact_earthquake(param_00,param_01,param_02)
|
||||
{
|
||||
var_03 = self.origin;
|
||||
while(isdefined(self))
|
||||
{
|
||||
var_03 = self.origin;
|
||||
wait 0.1;
|
||||
}
|
||||
|
||||
earthquake(param_00,param_01,var_03,param_02);
|
||||
playrumbleonposition("ac130_artillery_rumble",var_03);
|
||||
}
|
||||
|
||||
//Function Number: 23
|
||||
compute_targets(param_00,param_01)
|
||||
{
|
||||
var_02 = 512;
|
||||
var_03 = 32;
|
||||
var_04 = 64;
|
||||
var_05 = 7500;
|
||||
var_06 = 1.1;
|
||||
var_07 = distance(param_00,param_01) / var_05 * var_06;
|
||||
var_08 = [];
|
||||
foreach(var_0A in vehicle_getarray())
|
||||
{
|
||||
if(!isdefined(var_0A.air_support_strobe_ignore) && distance2d(var_0A.origin,param_01) < var_03)
|
||||
{
|
||||
var_7B[var_7B.size] = var_0A.origin + var_0A vehicle_getvelocity() * var_08 + noise_vector(var_04);
|
||||
}
|
||||
}
|
||||
|
||||
foreach(var_0D in getaiarray("axis","neutral"))
|
||||
{
|
||||
if(isalive(var_0D) && !isdefined(var_0D.air_support_strobe_ignore) && distance(var_0D.origin,param_01) < var_03)
|
||||
{
|
||||
var_7B[var_7B.size] = var_0D.origin + noise_vector(var_04);
|
||||
}
|
||||
}
|
||||
|
||||
return var_7B;
|
||||
}
|
||||
|
||||
//Function Number: 24
|
||||
get_best_target(param_00,param_01,param_02)
|
||||
{
|
||||
var_03 = 512;
|
||||
var_04 = self.origin + vectornormalize(self.origin - level.player.origin) * var_03;
|
||||
var_05 = self.origin + vectornormalize(level.player.origin - self.origin) * var_03;
|
||||
var_06 = vectorlerp(var_04,var_05,param_01 / param_02);
|
||||
var_07 = 9999999;
|
||||
var_08 = undefined;
|
||||
foreach(var_0A in param_00)
|
||||
{
|
||||
var_0B = distance2d(var_06,var_0A);
|
||||
if(var_0B < var_07)
|
||||
{
|
||||
var_07 = var_0B;
|
||||
var_08 = var_0A;
|
||||
}
|
||||
}
|
||||
|
||||
return var_08;
|
||||
}
|
||||
|
||||
//Function Number: 25
|
||||
filter_visible_targets(param_00,param_01)
|
||||
{
|
||||
var_02 = [];
|
||||
foreach(var_04 in param_00)
|
||||
{
|
||||
if(visibility_check(param_01,var_04))
|
||||
{
|
||||
var_02[var_02.size] = var_04;
|
||||
}
|
||||
}
|
||||
|
||||
return var_02;
|
||||
}
|
||||
|
||||
//Function Number: 26
|
||||
noise_vector(param_00)
|
||||
{
|
||||
return common_scripts\utility::randomvectorrange(0,param_00) * (1,1,0);
|
||||
}
|
||||
|
||||
//Function Number: 27
|
||||
visibility_check(param_00,param_01)
|
||||
{
|
||||
return bullettracepassed(param_00,param_01 + (0,0,128),0,undefined);
|
||||
}
|
||||
|
||||
//Function Number: 28
|
||||
count_strobe_kills(param_00)
|
||||
{
|
||||
level notify("air_support_strobe_stop_damage_watcher");
|
||||
level.air_support_strobe_num_killed = 0;
|
||||
level.air_support_strobe_btr_killed = 0;
|
||||
foreach(var_02 in getaiarray("axis"))
|
||||
{
|
||||
var_02 thread damage_watcher();
|
||||
}
|
||||
|
||||
foreach(var_05 in vehicle_getarray())
|
||||
{
|
||||
if(isdefined(var_05.script_team) && var_05.script_team == "axis")
|
||||
{
|
||||
var_05 thread damage_watcher();
|
||||
}
|
||||
}
|
||||
|
||||
wait param_00;
|
||||
level notify("air_support_strobe_stop_damage_watcher");
|
||||
level notify("air_support_strobe_killed",level.air_support_strobe_num_killed);
|
||||
}
|
||||
|
||||
//Function Number: 29
|
||||
get_num_kills()
|
||||
{
|
||||
return level.air_support_strobe_num_killed;
|
||||
}
|
||||
|
||||
//Function Number: 30
|
||||
damage_watcher()
|
||||
{
|
||||
level endon("air_support_strobe_stop_damage_watcher");
|
||||
if(self.health <= 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
while(isdefined(self))
|
||||
{
|
||||
self waittill("damage",var_00,var_01,var_02,var_03,var_04,var_05,var_06,var_07,var_08,var_09);
|
||||
var_0A = 0;
|
||||
if(isdefined(self.healthbuffer))
|
||||
{
|
||||
var_0A = self.healthbuffer;
|
||||
}
|
||||
|
||||
if(isdefined(var_09) && var_09 == level.air_support_weapon && isdefined(self) && isdefined(self.health) && self.health <= var_0A && self.health + var_00 > var_0A && !maps\_vehicle::is_godmode())
|
||||
{
|
||||
level.air_support_strobe_num_killed++;
|
||||
if(isdefined(level.btr_courtyard) && self == level.btr_courtyard)
|
||||
{
|
||||
level.air_support_strobe_btr_killed = 1;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
else if(!isdefined(self) || !isdefined(self.health) || self.health <= var_0A)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 31
|
||||
monitor_last_weapon()
|
||||
{
|
||||
self endon("death");
|
||||
var_00 = self getcurrentweapon();
|
||||
self.last_weapon = var_00;
|
||||
for(;;)
|
||||
{
|
||||
var_00 = self getcurrentweapon();
|
||||
self waittill("weapon_change",var_01);
|
||||
self.last_weapon = var_00;
|
||||
var_00 = var_01;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 32
|
||||
ensure_player_has_weapon_selected()
|
||||
{
|
||||
if(self getcurrentweapon() == "none")
|
||||
{
|
||||
var_00 = 0;
|
||||
if(isdefined(self.last_weapon) && self.last_weapon != "none" && self hasweapon(self.last_weapon))
|
||||
{
|
||||
var_00 = self switchtoweapon(self.last_weapon);
|
||||
}
|
||||
else
|
||||
{
|
||||
var_01 = self getweaponslistprimaries();
|
||||
if(var_01.size > 0)
|
||||
{
|
||||
var_00 = self switchtoweapon(var_01[0]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
116
MW3/PC/SP/maps/_ambient.gsc
Normal file
116
MW3/PC/SP/maps/_ambient.gsc
Normal file
@ -0,0 +1,116 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_ambient.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 11
|
||||
* Decompile Time: 174 ms
|
||||
* Timestamp: 10/27/2023 2:22:00 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
setup_new_eq_settings(param_00,param_01)
|
||||
{
|
||||
if(!isdefined(param_00) || !isdefined(level.ambient_eq[param_00]))
|
||||
{
|
||||
deactivate_index(param_01);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(level.eq_track[param_01] == param_00)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
level.eq_track[param_01] = param_00;
|
||||
use_eq_settings(param_00,param_01);
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
use_eq_settings(param_00,param_01)
|
||||
{
|
||||
if(level.player maps\_utility::ent_flag("player_has_red_flashing_overlay"))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
maps\_audio::aud_set_filter(param_00,param_01);
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
deactivate_index(param_00)
|
||||
{
|
||||
level.eq_track[param_00] = "";
|
||||
level.player deactivateeq(param_00);
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
blend_to_eq_track(param_00,param_01)
|
||||
{
|
||||
var_02 = 1;
|
||||
if(isdefined(param_01))
|
||||
{
|
||||
var_02 = param_01;
|
||||
}
|
||||
|
||||
var_03 = 0.05;
|
||||
var_04 = var_02 / var_03;
|
||||
var_05 = 1 / var_04;
|
||||
for(var_06 = 0;var_06 <= 1;var_06 = var_06 + var_05)
|
||||
{
|
||||
level.player seteqlerp(var_06,param_00);
|
||||
wait var_03;
|
||||
}
|
||||
|
||||
level.player seteqlerp(1,param_00);
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
use_reverb_settings(param_00)
|
||||
{
|
||||
if(level.player maps\_utility::ent_flag("player_has_red_flashing_overlay"))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
lib_0086::func_1465(param_00);
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
deactivate_reverb()
|
||||
{
|
||||
lib_0086::func_146B();
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
ambientdelay(param_00,param_01,param_02)
|
||||
{
|
||||
maps\_audio::aud_print_warning("ambientDelay called, this is deprecated! Use new preset string tables.");
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
ambientevent(param_00,param_01,param_02,param_03,param_04,param_05,param_06)
|
||||
{
|
||||
maps\_audio::aud_print_warning("ambientEvent called, this is deprecated! Use new preset string tables.");
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
ambienteventstart(param_00)
|
||||
{
|
||||
maps\_audio::aud_print_warning("ambientEventStart called, this is deprecated! Use maps_utility::set_ambient( track, fade_ ).");
|
||||
maps\_utility::set_ambient(param_00);
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
start_ambient_event(param_00)
|
||||
{
|
||||
maps\_audio::aud_print_warning("start_ambient_event called, this is deprecated! Use maps_utility::set_ambient( track, fade_ ).");
|
||||
maps\_utility::set_ambient(param_00);
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
get_progess(param_00,param_01,param_02,param_03)
|
||||
{
|
||||
maps\_utility::get_progress(param_00,param_01,param_03,param_02);
|
||||
}
|
2409
MW3/PC/SP/maps/_anim.gsc
Normal file
2409
MW3/PC/SP/maps/_anim.gsc
Normal file
File diff suppressed because it is too large
Load Diff
1
MW3/PC/SP/maps/_animatedmodels.gsc
Normal file
1
MW3/PC/SP/maps/_animatedmodels.gsc
Normal file
@ -0,0 +1 @@
|
||||
Failed to decompile this file, open a ticket if you need this fixed.
|
1998
MW3/PC/SP/maps/_arcademode.gsc
Normal file
1998
MW3/PC/SP/maps/_arcademode.gsc
Normal file
File diff suppressed because it is too large
Load Diff
1267
MW3/PC/SP/maps/_art.gsc
Normal file
1267
MW3/PC/SP/maps/_art.gsc
Normal file
File diff suppressed because it is too large
Load Diff
3235
MW3/PC/SP/maps/_audio.gsc
Normal file
3235
MW3/PC/SP/maps/_audio.gsc
Normal file
File diff suppressed because it is too large
Load Diff
1793
MW3/PC/SP/maps/_audio_dynamic_ambi.gsc
Normal file
1793
MW3/PC/SP/maps/_audio_dynamic_ambi.gsc
Normal file
File diff suppressed because it is too large
Load Diff
184
MW3/PC/SP/maps/_audio_music.gsc
Normal file
184
MW3/PC/SP/maps/_audio_music.gsc
Normal file
@ -0,0 +1,184 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_audio_music.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 12
|
||||
* Decompile Time: 183 ms
|
||||
* Timestamp: 10/27/2023 2:21:29 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
mus_init()
|
||||
{
|
||||
if(!isdefined(level._audio))
|
||||
{
|
||||
level._audio = spawnstruct();
|
||||
}
|
||||
|
||||
level._audio.music = spawnstruct();
|
||||
level._audio.music.cue_cash = [];
|
||||
level._audio.music.curr_cue_name = "";
|
||||
level._audio.music.prev_cue_name = "";
|
||||
level._audio.music.enable_auto_mix = 0;
|
||||
level._audio.music.env_threat_to_vol = [[0,0.5],[0.9,1],[1,1]];
|
||||
thread musx_monitor_game_vars();
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
mus_play(param_00,param_01,param_02,param_03,param_04)
|
||||
{
|
||||
var_05 = undefined;
|
||||
var_06 = mus_get_playing_cue_preset();
|
||||
var_07 = musx_construct_cue(param_00);
|
||||
var_08 = var_07["fade_in_time"];
|
||||
if(isdefined(param_01))
|
||||
{
|
||||
var_08 = param_01;
|
||||
}
|
||||
|
||||
var_09 = 2;
|
||||
if(isdefined(var_06))
|
||||
{
|
||||
if(isdefined(param_02))
|
||||
{
|
||||
var_09 = param_02;
|
||||
}
|
||||
else if(isdefined(param_01))
|
||||
{
|
||||
var_09 = param_01;
|
||||
}
|
||||
else if(isdefined(var_06["fade_out_time"]))
|
||||
{
|
||||
var_09 = var_06["fade_out_time"];
|
||||
}
|
||||
}
|
||||
|
||||
var_0A = var_07["volume"];
|
||||
if(isdefined(param_03))
|
||||
{
|
||||
var_0A = param_03;
|
||||
}
|
||||
|
||||
musx_start_cue(var_07["name"],var_08,var_09,var_0A,param_04);
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
mus_stop(param_00)
|
||||
{
|
||||
var_01 = 3;
|
||||
if(mus_is_playing())
|
||||
{
|
||||
var_02 = musx_get_cashed_cue(level._audio.music.curr_cue_name);
|
||||
var_01 = var_02["fade_out_time"];
|
||||
}
|
||||
|
||||
if(isdefined(param_00))
|
||||
{
|
||||
var_01 = param_00;
|
||||
}
|
||||
|
||||
musx_stop_all_music(var_01);
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
mus_is_playing()
|
||||
{
|
||||
return isdefined(level._audio.music.curr_cue_name) && level._audio.music.curr_cue_name != "";
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
mus_get_playing_cue_preset()
|
||||
{
|
||||
var_00 = undefined;
|
||||
if(mus_is_playing())
|
||||
{
|
||||
var_00 = musx_get_cashed_cue(level._audio.music.curr_cue_name);
|
||||
}
|
||||
|
||||
return var_00;
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
musx_construct_cue(param_00)
|
||||
{
|
||||
var_01 = musx_get_cashed_cue(param_00);
|
||||
if(!isdefined(var_01))
|
||||
{
|
||||
var_01 = [];
|
||||
musx_cash_cue(var_7B);
|
||||
}
|
||||
|
||||
return var_7B;
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
musx_start_cue(param_00,param_01,param_02,param_03,param_04)
|
||||
{
|
||||
var_05 = 0;
|
||||
if(isdefined(param_04))
|
||||
{
|
||||
var_05 = param_04;
|
||||
}
|
||||
|
||||
if(param_00 == level._audio.music.curr_cue_name && !var_05)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var_06 = level._audio.music.prev_cue_name;
|
||||
var_07 = level._audio.music.curr_cue_name;
|
||||
level._audio.music.prev_cue_name = level._audio.music.curr_cue_name;
|
||||
level._audio.music.curr_cue_name = param_00;
|
||||
var_08 = musx_get_cashed_cue(level._audio.music.curr_cue_name);
|
||||
var_09 = musx_get_cashed_cue(level._audio.music.prev_cue_name);
|
||||
var_0A = undefined;
|
||||
if(isdefined(var_09))
|
||||
{
|
||||
var_0A = var_09["alias"];
|
||||
}
|
||||
|
||||
lib_0068::func_1480(var_08["alias"],param_01,param_02,param_03,var_0A);
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
musx_stop_all_music(param_00)
|
||||
{
|
||||
lib_0068::func_1484(param_00);
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
musx_get_auto_mix()
|
||||
{
|
||||
return level._audio.music.enable_auto_mix;
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
musx_get_cashed_cue(param_00)
|
||||
{
|
||||
return level._audio.music.cue_cash[param_00];
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
musx_cash_cue(param_00)
|
||||
{
|
||||
level._audio.music.cue_cash[param_00["name"]] = param_00;
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
musx_monitor_game_vars()
|
||||
{
|
||||
if(musx_get_auto_mix())
|
||||
{
|
||||
var_00 = 1;
|
||||
for(;;)
|
||||
{
|
||||
wait var_00;
|
||||
if(musx_get_auto_mix())
|
||||
{
|
||||
var_01 = maps\_audio::aud_get_threat_level();
|
||||
var_02 = maps\_audio::aud_map(var_01,level._audio.music.env_threat_to_vol);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
27
MW3/PC/SP/maps/_audio_presets_music.gsc
Normal file
27
MW3/PC/SP/maps/_audio_presets_music.gsc
Normal file
@ -0,0 +1,27 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_audio_presets_music.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 3
|
||||
* Decompile Time: 34 ms
|
||||
* Timestamp: 10/27/2023 2:20:31 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
audio_presets_music_moods(param_00,param_01)
|
||||
{
|
||||
maps\_audio::aud_print_warning("CALLING MUSIC_MOODS PRESET USING OLD METHOD!");
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
audio_presets_music_cue_groups(param_00,param_01)
|
||||
{
|
||||
maps\_audio::aud_print_warning("CALLING MUSIC_CUE_GROUPS PRESET USING OLD METHOD!");
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
audio_presets_music_cues(param_00,param_01)
|
||||
{
|
||||
maps\_audio::aud_print_warning("CALLING MUSIC_CUES PRESET USING OLD METHOD!");
|
||||
}
|
339
MW3/PC/SP/maps/_audio_presets_vehicles.gsc
Normal file
339
MW3/PC/SP/maps/_audio_presets_vehicles.gsc
Normal file
@ -0,0 +1,339 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_audio_presets_vehicles.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 2
|
||||
* Decompile Time: 27 ms
|
||||
* Timestamp: 10/27/2023 2:20:08 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
audio_presets_vehicles(param_00,param_01)
|
||||
{
|
||||
switch(param_00)
|
||||
{
|
||||
case "nymn_player_hind":
|
||||
break;
|
||||
var_7B["speed"]
|
||||
[["hind_move",["pitch","player_hind_move_pitch"],["volume","player_hind_move_volume"]],["hind_hover",["pitch","player_hind_hover_pitch"],["volume","player_hind_hover_volume"]],["updaterate",0.2],["smooth_up",0.3],["smooth_down",0.03],["range",1,40]]
|
||||
break;
|
||||
|
||||
case "nymn_broad_hind":
|
||||
break;
|
||||
var_7B["speed"]
|
||||
[["broad_hind_move",["pitch","player_hind_move_pitch"],["volume","enemy_hind_move_volume"]],["updaterate",0.2],["smooth_up",0.3],["smooth_down",0.03],["range",1,30]]
|
||||
break;
|
||||
|
||||
case "paris_a_mi17":
|
||||
break;
|
||||
var_7B["speed"]
|
||||
[["mi17_engine_high",["pitch","mi17_move_pitch"],["volume","mi17_move_volume"]],["mi17_idle_high",["pitch","mi17_hover_pitch"],["volume","mi17_hover_volume"]],["updaterate",0.2],["smooth_up",0.3],["smooth_down",0.01],["range",1,30]]
|
||||
break;
|
||||
|
||||
case "dubai_littlebird":
|
||||
break;
|
||||
var_7B["speed"]
|
||||
[["dubai_littlebird_engine_high",["pitch","dubai_littlebird_move_pitch"],["volume","dubai_littlebird_move_volume"]],["dubai_littlebird_idle_high",["pitch","dubai_littlebird_hover_pitch"],["volume","dubai_littlebird_hover_volume"]],["updaterate",0.2],["smooth_up",0.3],["smooth_down",0.01],["range",1,30]]
|
||||
break;
|
||||
|
||||
case "paris_chase_hind":
|
||||
break;
|
||||
var_7B["speed"]
|
||||
[["chase_hind_move",["pitch","player_hind_move_pitch"],["volume","enemy_hind_move_volume"]],["updaterate",0.2],["smooth_up",0.3],["smooth_down",0.01],["range",1,30]]
|
||||
break;
|
||||
|
||||
case "escape_zodiac":
|
||||
break;
|
||||
var_7B["start_stop"]
|
||||
[["start","shg_zodiac_plr_rampup",["pitch","zodiac_player_rampup_pitch"],["volume","zodiac_player_rampup_volume"],1],["stop","shg_zodiac_plr_rampdown",["pitch","zodiac_player_rampdown_pitch"],["volume","zodiac_player_rampdown_volume"]],["updaterate",0.1],["offset",-50],["throttle_input","throttle"],["on_threshold",0.3],["off_threshold",-0.3],["smooth_up",0.5],["smooth_down",0.5]]
|
||||
var_7B["speed"]
|
||||
[["shg_zodiac_plr_motor_slow",["pitch","zodiac_player_slow_pitch"],["volume","zodiac_player_slow_volume"]],["shg_zodiac_plr_motor_med",["pitch","zodiac_player_medium_pitch"],["volume","zodiac_player_medium_volume"]],["shg_zodiac_plr_motor_fast",["pitch","zodiac_player_fast_pitch"],["volume","zodiac_player_fast_volume"]],["offset",-50],["updaterate",0.2],["multiply_by_throttle",1],["smooth_up",0.15],["smooth_down",0.25],["oneshot_duck",0.5],["oneshot_duck_time",1.5],["range",0,45]]
|
||||
break;
|
||||
|
||||
case "escape_zodiac_water":
|
||||
break;
|
||||
var_7B["speed"]
|
||||
[["shg_zodiac_plr_water_idle",["pitch","zodiac_plr_water_idle_pitch"],["volume","zodiac_plr_water_idle_volume"]],["shg_zodiac_plr_water_slow",["pitch","zodiac_plr_water_slow_pitch"],["volume","zodiac_plr_water_slow_volume"]],["shg_zodiac_plr_water_med",["pitch","zodiac_plr_water_med_pitch"],["volume","zodiac_plr_water_med_volume"]],["shg_zodiac_plr_water_fast",["pitch","zodiac_plr_water_fast_pitch"],["volume","zodiac_plr_water_fast_volume"]],["updaterate",0.2],["smooth_up",0.3],["smooth_down",0.3],["range",1,30],["heightmax",25]]
|
||||
break;
|
||||
|
||||
case "sdv_motor_player":
|
||||
break;
|
||||
var_7B["start_stop"]
|
||||
[["start","shg_sdv_plr_startup",["pitch","sdv_plr_rampup_pitch"],["volume","sdv_plr_rampup_volume"]],["stop","shg_sdv_plr_shutdown",["pitch","sdv_plr_rampdown_pitch"],["volume","sdv_plr_rampdown_volume"]],["updaterate",0.1],["throttle_input","throttle"],["on_threshold",0.3],["off_threshold",-0.3],["smooth_up",0.5],["smooth_down",0.5]]
|
||||
var_7B["speed"]
|
||||
[["shg_sdv_plr_motor_slow",["pitch","sdv_plr_motor_slow_pitch"],["volume","sdv_plr_motor_slow_volume"]],["shg_sdv_plr_motor_med",["pitch","sdv_plr_motor_med_pitch"],["volume","sdv_plr_motor_med_volume"]],["shg_sdv_plr_motor_fast",["pitch","sdv_plr_motor_fast_pitch"],["volume","sdv_plr_motor_fast_volume"]],["updaterate",0.2],["multiply_by_throttle",1],["throttle_input","throttle"],["smooth_up",0.1],["smooth_down",0.3],["range",1,12]]
|
||||
break;
|
||||
|
||||
case "ugv_motor_player":
|
||||
break;
|
||||
var_7B["start_stop"]
|
||||
[["start","null",["pitch","sdv_plr_rampup_pitch"],["volume","sdv_plr_rampup_volume"]],["stop","null",["pitch","sdv_plr_rampdown_pitch"],["volume","sdv_plr_rampdown_volume"]],["updaterate",0.3],["throttle_input","leftstick_abs"],["on_threshold",0.3],["off_threshold",-0.3],["smooth_up",0.2],["smooth_down",0.2]]
|
||||
var_7B["speed"]
|
||||
[["ugv_plr_motor_slow",["pitch","sdv_plr_motor_slow_pitch"],["volume","sdv_plr_motor_slow_volume"]],["ugv_plr_motor_slow",["pitch","sdv_plr_motor_med_pitch"],["volume","sdv_plr_motor_med_volume"]],["ugv_plr_motor_fast",["pitch","sdv_plr_motor_fast_pitch"],["volume","sdv_plr_motor_fast_volume"]],["updaterate",0.1],["multiply_by_throttle",1],["throttle_input","leftstick_abs"],["smooth_up",0.2],["smooth_down",0.2],["range",1,8]]
|
||||
break;
|
||||
|
||||
case "ugv_treads_player":
|
||||
break;
|
||||
var_7B["speed"]
|
||||
[["ugv_plr_treads_slow",["pitch","sdv_plr_motor_slow_pitch"],["volume","sdv_plr_motor_slow_volume"]],["ugv_plr_treads_slow",["pitch","sdv_plr_motor_med_pitch"],["volume","sdv_plr_motor_med_volume"]],["ugv_plr_treads_fast",["pitch","sdv_plr_motor_fast_pitch"],["volume","sdv_plr_motor_fast_volume"]],["updaterate",0.1],["multiply_by_throttle",1],["throttle_input","leftstick_abs"],["smooth_up",0.1],["smooth_down",0.1],["range",0.5,8]]
|
||||
break;
|
||||
|
||||
case "ugv_idle_player":
|
||||
break;
|
||||
var_7B["speed"]
|
||||
[["ugv_plr_idle",["pitch","so_jeep_idle_pitch"],["volume","so_jeep_idle_volume"]],["updaterate",0.1],["smooth_up",0.2],["smooth_down",0.2],["range",0,25]]
|
||||
break;
|
||||
|
||||
case "sdv_water_player":
|
||||
break;
|
||||
var_7B["speed"]
|
||||
[["shg_sdv_plr_water_slow",["pitch","sdv_plr_water_slow_pitch"],["volume","sdv_plr_water_slow_volume"]],["shg_sdv_plr_water_med",["pitch","sdv_plr_water_med_pitch"],["volume","sdv_plr_water_med_volume"]],["updaterate",0.2],["smooth_up",0.3],["smooth_down",0.1],["range",1,8]]
|
||||
break;
|
||||
|
||||
case "so_paris_jeep":
|
||||
break;
|
||||
var_7B["speed"]
|
||||
[["so_jeep_slow",["pitch","so_jeep_slow_pitch"],["volume","so_jeep_slow_volume"]],["so_jeep_fast",["pitch","so_jeep_medium_pitch"],["volume","so_jeep_medium_volume"]],["so_jeep_idle",["pitch","so_jeep_idle_pitch"],["volume","so_jeep_idle_volume"]],["updaterate",0.1],["smooth_up",0.3],["smooth_down",0.1],["range",0,25]]
|
||||
break;
|
||||
}
|
||||
|
||||
return var_7B;
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
audio_presets_vehicle_maps(param_00,param_01)
|
||||
{
|
||||
switch(param_00)
|
||||
{
|
||||
case "so_jeep_idle_pitch":
|
||||
param_01 = [[0,0.5],[0.02,0.65],[0.1,0.75],[0.2,0.85],[1,1]];
|
||||
break;
|
||||
|
||||
case "so_jeep_idle_volume":
|
||||
param_01 = [[0,1],[0.05,0.9],[0.1,0.85],[0.25,0.45],[0.3,0.15],[0.35,0],[1,0]];
|
||||
break;
|
||||
|
||||
case "so_jeep_slow_pitch":
|
||||
param_01 = [[0,0.38],[0.1,0.4],[0.4,0.45],[0.45,0.5],[0.55,0.55],[0.7,0.6],[1,0.8]];
|
||||
break;
|
||||
|
||||
case "so_jeep_slow_volume":
|
||||
param_01 = [[0,0.01],[0.1,0.5],[0.35,0.75],[0.55,1],[0.7,0.6],[0.8,0.45],[1,0.01]];
|
||||
break;
|
||||
|
||||
case "so_jeep_medium_pitch":
|
||||
param_01 = [[0,0.25],[0.5,0.3],[0.65,0.35],[0.75,0.4],[0.85,0.45],[1,0.5]];
|
||||
break;
|
||||
|
||||
case "so_jeep_medium_volume":
|
||||
param_01 = [[0,0],[0.4,0.2],[0.6,0.6],[0.75,0.9],[1,1]];
|
||||
break;
|
||||
|
||||
case "player_hind_move_volume":
|
||||
param_01 = [[0,0],[0.3,0],[0.6,0.35],[0.7,0.9],[1,1]];
|
||||
break;
|
||||
|
||||
case "player_hind_move_pitch":
|
||||
param_01 = [[0,0.4],[0.5,0.4],[0.75,0.5],[1,0.7]];
|
||||
break;
|
||||
|
||||
case "player_hind_hover_volume":
|
||||
param_01 = [[0,1],[1,1]];
|
||||
break;
|
||||
|
||||
case "player_hind_hover_pitch":
|
||||
param_01 = [[0,0.4],[0.5,0.5],[1,0.7]];
|
||||
break;
|
||||
|
||||
case "enemy_hind_move_volume":
|
||||
param_01 = [[0,1],[1,1]];
|
||||
break;
|
||||
|
||||
case "mi17_move_volume":
|
||||
param_01 = [[0,0.75],[0.3,0.85],[0.6,0.95],[0.7,0.99],[1,1]];
|
||||
break;
|
||||
|
||||
case "mi17_move_pitch":
|
||||
param_01 = [[0,0.4],[0.5,0.6],[1,0.7]];
|
||||
break;
|
||||
|
||||
case "mi17_hover_volume":
|
||||
param_01 = [[0,1],[1,0.75]];
|
||||
break;
|
||||
|
||||
case "mi17_hover_pitch":
|
||||
param_01 = [[0,0.4],[0.5,0.6],[1,0.7]];
|
||||
break;
|
||||
|
||||
case "dubai_littlebird_move_volume":
|
||||
param_01 = [[0,0.75],[0.3,0.85],[0.6,0.95],[0.7,0.99],[1,1]];
|
||||
break;
|
||||
|
||||
case "dubai_littlebird_move_pitch":
|
||||
param_01 = [[0,0.4],[0.5,0.6],[1,0.7]];
|
||||
break;
|
||||
|
||||
case "dubai_littlebird_hover_volume":
|
||||
param_01 = [[0,1],[1,0.75]];
|
||||
break;
|
||||
|
||||
case "dubai_littlebird_hover_pitch":
|
||||
param_01 = [[0,0.4],[0.5,0.6],[1,0.7]];
|
||||
break;
|
||||
|
||||
case "zodiac_player_rampup_pitch":
|
||||
param_01 = [[0,0.45],[0.5,0.5],[1,1]];
|
||||
break;
|
||||
|
||||
case "zodiac_player_rampup_volume":
|
||||
param_01 = [[0,0],[0.25,0.5],[0.85,1],[1,1]];
|
||||
break;
|
||||
|
||||
case "zodiac_player_rampdown_pitch":
|
||||
param_01 = [[0,0.5],[0.25,0.55],[1,0.6]];
|
||||
break;
|
||||
|
||||
case "zodiac_player_rampdown_volume":
|
||||
param_01 = [[0,1],[0.25,0.85],[0.5,0.5],[1,0.25]];
|
||||
break;
|
||||
|
||||
case "zodiac_player_idle_pitch":
|
||||
param_01 = [[0,0.5],[0.02,0.65],[0.1,0.75],[0.2,0.85],[1,1]];
|
||||
break;
|
||||
|
||||
case "zodiac_player_idle_volume":
|
||||
param_01 = [[0,0.75],[0.05,1],[0.1,0.85],[0.25,0.45],[0.3,0.15],[0.35,0],[1,0]];
|
||||
break;
|
||||
|
||||
case "zodiac_player_bottom_pitch":
|
||||
param_01 = [[0,0.35],[0.1,0.4],[0.3,0.5],[0.35,0.6],[0.45,0.65],[0.6,0.7],[1,0.75]];
|
||||
break;
|
||||
|
||||
case "zodiac_player_bottom_volume":
|
||||
param_01 = [[0,0.75],[0.15,0.75],[0.35,1],[0.45,0.35],[0.55,0.25],[0.6,0.2],[0.7,0.15],[1,0]];
|
||||
break;
|
||||
|
||||
case "zodiac_player_slow_pitch":
|
||||
param_01 = [[0,0.2],[0.4,0.35],[0.45,0.45],[0.55,0.5],[0.7,0.6],[1,0.8]];
|
||||
break;
|
||||
|
||||
case "zodiac_player_slow_volume":
|
||||
param_01 = [[0,0.25],[0.1,0.5],[0.35,0.75],[0.55,1],[0.7,0.5],[0.8,0.35],[1,0.2]];
|
||||
break;
|
||||
|
||||
case "zodiac_player_medium_pitch":
|
||||
param_01 = [[0,0.35],[0.5,0.45],[0.65,0.5],[0.75,0.6],[0.85,0.7],[1,0.7]];
|
||||
break;
|
||||
|
||||
case "zodiac_player_medium_volume":
|
||||
param_01 = [[0,0],[0.4,0.2],[0.6,0.5],[0.75,1],[0.8,0.5],[0.9,0.25],[1,0.1]];
|
||||
break;
|
||||
|
||||
case "zodiac_player_fast_pitch":
|
||||
param_01 = [[0,0.45],[0.7,0.45],[0.85,0.5],[0.95,0.55],[1,0.7]];
|
||||
break;
|
||||
|
||||
case "zodiac_player_fast_volume":
|
||||
param_01 = [[0,0],[0.6,0],[0.7,0.25],[0.85,0.5],[0.95,0.5],[1,1]];
|
||||
break;
|
||||
|
||||
case "zodiac_plr_water_idle_pitch":
|
||||
param_01 = [[0,0.5],[1,0.5]];
|
||||
break;
|
||||
|
||||
case "zodiac_plr_water_idle_volume":
|
||||
param_01 = [[0,1],[0.1,0.5],[0.15,0.25],[0.2,0.15],[0.35,0],[1,0]];
|
||||
break;
|
||||
|
||||
case "zodiac_plr_water_botm_pitch":
|
||||
param_01 = [[0,0.45],[0.1,0.5],[0.3,0.5],[1,0.5]];
|
||||
break;
|
||||
|
||||
case "zodiac_plr_water_botm_volume":
|
||||
param_01 = [[0,0],[0.15,0.25],[0.35,1],[0.45,0.35],[0.55,0.25],[0.6,0.2],[0.7,0.15],[1,0]];
|
||||
break;
|
||||
|
||||
case "zodiac_plr_water_slow_pitch":
|
||||
param_01 = [[0,0.45],[0.1,0.5],[0.3,0.5],[1,0.5]];
|
||||
break;
|
||||
|
||||
case "zodiac_plr_water_slow_volume":
|
||||
param_01 = [[0,0],[0.1,0.25],[0.35,0.75],[0.55,1],[0.7,0.5],[0.8,0.35],[1,0.2]];
|
||||
break;
|
||||
|
||||
case "zodiac_plr_water_med_pitch":
|
||||
param_01 = [[0,0.45],[0.1,0.5],[0.3,0.5],[1,0.5]];
|
||||
break;
|
||||
|
||||
case "zodiac_plr_water_med_volume":
|
||||
param_01 = [[0,0],[0.4,0.2],[0.6,0.5],[0.75,1],[0.8,0.5],[0.9,0.25],[1,0.1]];
|
||||
break;
|
||||
|
||||
case "zodiac_plr_water_fast_pitch":
|
||||
param_01 = [[0,0.45],[0.1,0.5],[0.3,0.5],[1,0.5]];
|
||||
break;
|
||||
|
||||
case "zodiac_plr_water_fast_volume":
|
||||
param_01 = [[0,0],[0.6,0],[0.7,0.5],[0.85,1],[1,1]];
|
||||
break;
|
||||
|
||||
case "sdv_plr_rampup_pitch":
|
||||
param_01 = [[0,0.5],[0.5,0.5],[1,0.5]];
|
||||
break;
|
||||
|
||||
case "sdv_plr_rampup_volume":
|
||||
param_01 = [[0,1],[1,1]];
|
||||
break;
|
||||
|
||||
case "sdv_plr_rampdown_pitch":
|
||||
param_01 = [[0,0.5],[0.5,0.5],[1,0.5]];
|
||||
break;
|
||||
|
||||
case "sdv_plr_rampdown_volume":
|
||||
param_01 = [[0,1],[1,1]];
|
||||
break;
|
||||
|
||||
case "sdv_plr_motor_slow_pitch":
|
||||
param_01 = [[0,0.25],[0.15,0.4],[0.3,0.5],[0.6,0.55],[0.75,0.65],[1,0.75]];
|
||||
break;
|
||||
|
||||
case "sdv_plr_motor_slow_volume":
|
||||
param_01 = [[0,0],[0.05,0.5],[0.15,0.75],[0.25,1],[0.35,0.5],[0.45,0.25],[0.55,0.2],[1,0]];
|
||||
break;
|
||||
|
||||
case "sdv_plr_motor_med_pitch":
|
||||
param_01 = [[0,0.5],[0.6,0.5],[0.75,0.65],[1,0.75]];
|
||||
break;
|
||||
|
||||
case "sdv_plr_motor_med_volume":
|
||||
param_01 = [[0,0],[0.25,0.1],[0.35,0.5],[0.45,1],[0.65,1],[0.75,0.75],[0.95,0.25],[1,0.1]];
|
||||
break;
|
||||
|
||||
case "sdv_plr_motor_fast_pitch":
|
||||
param_01 = [[0,0.4],[0.6,0.4],[0.7,0.45],[0.85,0.5],[1,0.5]];
|
||||
break;
|
||||
|
||||
case "sdv_plr_motor_fast_volume":
|
||||
param_01 = [[0,0],[0.6,0.35],[0.7,0.55],[0.85,0.85],[1,1]];
|
||||
break;
|
||||
|
||||
case "sdv_plr_water_slow_pitch":
|
||||
param_01 = [[0,0.45],[0.1,0.5],[0.3,0.5],[1,0.5]];
|
||||
break;
|
||||
|
||||
case "sdv_plr_water_slow_volume":
|
||||
param_01 = [[0,0],[0.1,0.25],[0.45,0.75],[0.65,1],[0.7,0.5],[0.8,0.35],[1,0.2]];
|
||||
break;
|
||||
|
||||
case "sdv_plr_water_med_pitch":
|
||||
param_01 = [[0,0.45],[0.1,0.5],[0.3,0.5],[0.8,0.5],[1,0.55]];
|
||||
break;
|
||||
|
||||
case "sdv_plr_water_med_volume":
|
||||
param_01 = [[0,0],[0.5,0],[0.75,0],[0.85,0.25],[0.95,0.5],[1,1]];
|
||||
break;
|
||||
}
|
||||
|
||||
return param_01;
|
||||
}
|
1468
MW3/PC/SP/maps/_audio_vehicles.gsc
Normal file
1468
MW3/PC/SP/maps/_audio_vehicles.gsc
Normal file
File diff suppressed because it is too large
Load Diff
162
MW3/PC/SP/maps/_audio_whizby.gsc
Normal file
162
MW3/PC/SP/maps/_audio_whizby.gsc
Normal file
@ -0,0 +1,162 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_audio_whizby.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 9
|
||||
* Decompile Time: 294 ms
|
||||
* Timestamp: 10/27/2023 2:21:30 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
whiz_init()
|
||||
{
|
||||
setsaveddvar("snd_newWhizby",1);
|
||||
level._audio.whiz = spawnstruct();
|
||||
level._audio.whiz.use_string_table_presets = 0;
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
whiz_use_string_table()
|
||||
{
|
||||
level._audio.whiz.use_string_table_presets = 1;
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
whiz_set_preset(param_00)
|
||||
{
|
||||
var_01 = [];
|
||||
if(level._audio.whiz.use_string_table_presets)
|
||||
{
|
||||
var_01 = whizx_get_stringtable_preset(param_00);
|
||||
}
|
||||
else
|
||||
{
|
||||
var_01 = maps\_audio::audio_presets_whizby(param_00,var_01);
|
||||
}
|
||||
|
||||
var_02 = var_7B["probability"];
|
||||
var_03 = var_7B["spread"];
|
||||
var_04 = var_7B["radius"];
|
||||
var_05 = var_7B["offset"];
|
||||
level.player setwhizbyprobabilities(var_02[0],var_02[1],var_02[2]);
|
||||
level.player setwhizbyspreads(var_03[0],var_03[1],var_03[2]);
|
||||
level.player setwhizbyradii(var_04[0],var_04[1],var_04[2]);
|
||||
level.player setwhizbyoffset(var_05);
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
whiz_set_probabilities(param_00,param_01,param_02)
|
||||
{
|
||||
level.player setwhizbyprobabilities(param_00,param_01,param_02);
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
whiz_set_spreads(param_00,param_01,param_02)
|
||||
{
|
||||
level.player setwhizbyspreads(param_00,param_01,param_02);
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
whiz_set_radii(param_00,param_01,param_02)
|
||||
{
|
||||
level.player setwhizbyradii(param_00,param_01,param_02);
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
whiz_set_offset(param_00)
|
||||
{
|
||||
level.player setwhizbyoffset(param_00);
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
whizx_get_stringtable_preset(param_00)
|
||||
{
|
||||
var_01 = "soundtables/common_whizby.csv";
|
||||
var_02 = [];
|
||||
var_02 = whizx_get_mix_preset_from_stringtable_internal(var_01,param_00);
|
||||
return var_02;
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
whizx_get_mix_preset_from_stringtable_internal(param_00,param_01)
|
||||
{
|
||||
var_02 = [];
|
||||
var_03 = "";
|
||||
var_04 = "";
|
||||
var_05 = 12;
|
||||
var_06 = [];
|
||||
var_07 = [];
|
||||
var_08 = [];
|
||||
var_09 = 0;
|
||||
var_0A = 0;
|
||||
for(var_0B = 1;var_0B < var_05;var_0B++)
|
||||
{
|
||||
var_03 = tablelookup(param_00,0,"whizby_preset",var_0B);
|
||||
var_04 = tablelookup(param_00,0,param_01,var_0B);
|
||||
if(!isdefined(var_04))
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
if(var_04 != "" && var_04 != "comments")
|
||||
{
|
||||
var_0A++;
|
||||
switch(var_03)
|
||||
{
|
||||
case "radius_offset":
|
||||
var_09 = float(var_04);
|
||||
break;
|
||||
|
||||
case "near_radius":
|
||||
var_06[0] = float(var_04);
|
||||
break;
|
||||
|
||||
case "medium_radius":
|
||||
var_06[1] = float(var_04);
|
||||
break;
|
||||
|
||||
case "far_radius":
|
||||
var_06[2] = float(var_04);
|
||||
break;
|
||||
|
||||
case "near_spread":
|
||||
var_07[0] = float(var_04);
|
||||
break;
|
||||
|
||||
case "medium_spread":
|
||||
var_07[1] = float(var_04);
|
||||
break;
|
||||
|
||||
case "far_spread":
|
||||
var_07[2] = float(var_04);
|
||||
break;
|
||||
|
||||
case "near_prob":
|
||||
var_08[0] = float(var_04);
|
||||
break;
|
||||
|
||||
case "medium_prob":
|
||||
var_08[1] = float(var_04);
|
||||
break;
|
||||
|
||||
case "far_prob":
|
||||
var_08[2] = float(var_04);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(var_0A > 0)
|
||||
{
|
||||
var_02["radius"] = var_06;
|
||||
var_02["spread"] = var_07;
|
||||
var_02["probability"] = var_08;
|
||||
if(isdefined(var_09))
|
||||
{
|
||||
var_02["offset"] = var_09;
|
||||
}
|
||||
}
|
||||
|
||||
return var_02;
|
||||
}
|
873
MW3/PC/SP/maps/_audio_zone_manager.gsc
Normal file
873
MW3/PC/SP/maps/_audio_zone_manager.gsc
Normal file
@ -0,0 +1,873 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_audio_zone_manager.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 30
|
||||
* Decompile Time: 379 ms
|
||||
* Timestamp: 10/27/2023 2:20:29 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
azm_init()
|
||||
{
|
||||
if(!isdefined(level._audio.zone_mgr))
|
||||
{
|
||||
level._audio.zone_mgr = spawnstruct();
|
||||
level._audio.zone_mgr.current_zone = "";
|
||||
level._audio.zone_mgr.zones = [];
|
||||
level._audio.zone_mgr.overrides = spawnstruct();
|
||||
level._audio.zone_mgr.overrides.samb = [];
|
||||
level._audio.zone_mgr.overrides.damb = [];
|
||||
level._audio.zone_mgr.overrides.indexed = [];
|
||||
level._audio.zone_mgr.overrides.rev = [];
|
||||
level._audio.zone_mgr.overrides.occ = [];
|
||||
level._audio.zone_mgr.use_string_table_presets = 0;
|
||||
level._audio.zone_mgr.use_iw_presets = 0;
|
||||
}
|
||||
|
||||
if(!isdefined(level._audio.use_level_audio_zones))
|
||||
{
|
||||
level._audio.level_audio_reverb_function = undefined;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
azm_use_string_table()
|
||||
{
|
||||
level._audio.zone_mgr.use_string_table_presets = 1;
|
||||
level._audio.zone_mgr.use_iw_presets = 0;
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
azm_use_iw_presets()
|
||||
{
|
||||
level._audio.zone_mgr.use_iw_presets = 1;
|
||||
level._audio.zone_mgr.use_string_table_presets = 0;
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
azm_start_zone(param_00,param_01,param_02)
|
||||
{
|
||||
if(level._audio.zone_mgr.current_zone == param_00)
|
||||
{
|
||||
return;
|
||||
}
|
||||
else if(level._audio.zone_mgr.current_zone != "")
|
||||
{
|
||||
azm_stop_zone(level._audio.zone_mgr.current_zone,param_01);
|
||||
}
|
||||
|
||||
level._audio.zone_mgr.current_zone = param_00;
|
||||
if(isdefined(level._audio.zone_mgr.zones[param_00]) && isdefined(level._audio.zone_mgr.zones[param_00]["state"]) && level._audio.zone_mgr.zones[param_00]["state"] != "stopping")
|
||||
{
|
||||
maps\_audio::aud_print_warning("ZONEM_start_zone(\" + param_00 + "\") being called even though audio zone, \" + param_00 + "\", is already started.");
|
||||
return;
|
||||
}
|
||||
|
||||
var_03 = 2;
|
||||
if(isdefined(param_01))
|
||||
{
|
||||
var_03 = param_01;
|
||||
}
|
||||
|
||||
if(!isdefined(level._audio.zone_mgr.zones[param_00]))
|
||||
{
|
||||
var_04 = azmx_load_zone(param_00);
|
||||
if(!isdefined(var_04))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
level._audio.zone_mgr.zones[param_00] = var_04;
|
||||
}
|
||||
|
||||
var_04 = level._audio.zone_mgr.zones[param_00];
|
||||
maps\_audio::aud_print_zone("ZONE START: " + param_00);
|
||||
level._audio.zone_mgr.zones[param_00]["state"] = "playing";
|
||||
var_05 = var_04["priority"];
|
||||
var_06 = var_04["interrupt_fade"];
|
||||
if(isdefined(var_04["streamed_ambience"]))
|
||||
{
|
||||
if(var_04["streamed_ambience"] != "none")
|
||||
{
|
||||
lib_0068::func_147D(var_04["streamed_ambience"],var_03,var_05,var_06);
|
||||
}
|
||||
else
|
||||
{
|
||||
lib_0068::func_1483(var_03);
|
||||
}
|
||||
}
|
||||
|
||||
if(isdefined(var_04["dynamic_ambience"]))
|
||||
{
|
||||
if(var_04["dynamic_ambience"] != "none")
|
||||
{
|
||||
maps\_audio_dynamic_ambi::damb_zone_start_preset(var_04["dynamic_ambience"],1);
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\_audio_dynamic_ambi::damb_stop_zone(1);
|
||||
}
|
||||
}
|
||||
|
||||
if(isdefined(var_04["occlusion"]))
|
||||
{
|
||||
if(var_04["occlusion"] != "none")
|
||||
{
|
||||
maps\_audio::aud_set_occlusion(var_04["occlusion"]);
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\_audio::aud_deactivate_occlusion();
|
||||
}
|
||||
}
|
||||
|
||||
if(isdefined(var_04["filter"]))
|
||||
{
|
||||
if(var_04["filter"] != "none")
|
||||
{
|
||||
maps\_audio::aud_set_filter(var_04["filter"],0);
|
||||
level.player seteqlerp(1,0);
|
||||
}
|
||||
}
|
||||
|
||||
if(isdefined(var_04["reverb"]))
|
||||
{
|
||||
if(var_04["reverb"] != "none")
|
||||
{
|
||||
lib_0086::func_1465(var_04["reverb"]);
|
||||
}
|
||||
else
|
||||
{
|
||||
lib_0086::func_146B();
|
||||
}
|
||||
}
|
||||
|
||||
if(isdefined(var_04["mix"]))
|
||||
{
|
||||
if(var_04["mix"] != "none")
|
||||
{
|
||||
lib_0087::func_1510(var_04["mix"]);
|
||||
return;
|
||||
}
|
||||
|
||||
lib_0087::func_1513(1);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
azm_set_zone_streamed_ambience(param_00,param_01,param_02)
|
||||
{
|
||||
var_03 = azmx_set_param_internal(param_00,"streamed_ambience",param_01,::azmx_restart_stream,param_02);
|
||||
if(!var_03)
|
||||
{
|
||||
if(!isdefined(param_01))
|
||||
{
|
||||
param_01 = "none";
|
||||
}
|
||||
|
||||
level._audio.zone_mgr.overrides.samb[param_00] = param_01;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
azm_set_zone_dynamic_ambience(param_00,param_01,param_02)
|
||||
{
|
||||
if(!isdefined(param_01))
|
||||
{
|
||||
param_01 = "none";
|
||||
}
|
||||
|
||||
azmx_set_param_internal(param_00,"dynamic_ambience",param_01,::azmx_restart_damb,param_02);
|
||||
level._audio.zone_mgr.overrides.damb[param_00] = param_01;
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
azm_set_zone_reverb(param_00,param_01,param_02)
|
||||
{
|
||||
if(!isdefined(param_01))
|
||||
{
|
||||
param_01 = "none";
|
||||
}
|
||||
|
||||
azmx_set_param_internal(param_00,"reverb",param_01,::azmx_restart_reverb,param_02);
|
||||
level._audio.zone_mgr.overrides.rev[param_00] = param_01;
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
azm_set_zone_occlusion(param_00,param_01,param_02)
|
||||
{
|
||||
if(!isdefined(param_01))
|
||||
{
|
||||
param_01 = "none";
|
||||
}
|
||||
|
||||
azmx_set_param_internal(param_00,"occlusion",param_01,::azmx_restart_occlusion,param_02);
|
||||
level._audio.zone_mgr.overrides.indexed[param_01] = param_01;
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
azm_set_zone_mix(param_00,param_01,param_02)
|
||||
{
|
||||
if(!isdefined(param_01))
|
||||
{
|
||||
param_01 = "none";
|
||||
}
|
||||
|
||||
azmx_set_param_internal(param_00,"mix",param_01,::azmx_restart_mix,param_02);
|
||||
level._audio.zone_mgr.overrides.indexed[param_01] = param_01;
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
azm_stop_zones(param_00)
|
||||
{
|
||||
var_01 = 1;
|
||||
if(isdefined(param_00))
|
||||
{
|
||||
var_01 = param_00;
|
||||
}
|
||||
|
||||
maps\_audio::aud_print_zone("ZONE STOP ALL");
|
||||
foreach(var_03 in level._audio.zone_mgr.zones)
|
||||
{
|
||||
azm_stop_zone(var_03["name"],var_01,0);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
azm_stop_zone(param_00,param_01,param_02)
|
||||
{
|
||||
if(isdefined(level._audio.zone_mgr.zones[param_00]) && isdefined(level._audio.zone_mgr.zones[param_00]["state"]) && level._audio.zone_mgr.zones[param_00]["state"] != "stopping")
|
||||
{
|
||||
var_03 = 1;
|
||||
if(isdefined(param_01))
|
||||
{
|
||||
var_03 = param_01;
|
||||
}
|
||||
|
||||
var_04 = level._audio.zone_mgr.zones[param_00];
|
||||
var_05 = 0;
|
||||
if(isdefined(param_02))
|
||||
{
|
||||
var_05 = param_02;
|
||||
}
|
||||
|
||||
if(var_05)
|
||||
{
|
||||
maps\_audio::aud_print_zone("ZONE STOP ZONE: " + param_00);
|
||||
}
|
||||
|
||||
if(isdefined(var_04["streamed_ambience"]))
|
||||
{
|
||||
lib_0068::func_1481(var_04["streamed_ambience"],var_03);
|
||||
}
|
||||
|
||||
if(isdefined(var_04["dynamic_ambience"]))
|
||||
{
|
||||
maps\_audio_dynamic_ambi::damb_zone_stop_preset(var_04["dynamic_ambience"],var_03);
|
||||
}
|
||||
|
||||
level._audio.zone_mgr.zones[param_00]["state"] = "stopping";
|
||||
thread azmx_wait_till_fade_done_and_remove_zone(param_00,var_03);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
azm_get_current_zone()
|
||||
{
|
||||
return level._audio.zone_mgr.current_zone;
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
azm_set_current_zone(param_00)
|
||||
{
|
||||
level._audio.zone_mgr.current_zone = param_00;
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
azm_print_enter_blend(param_00,param_01,param_02)
|
||||
{
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
azm_print_exit_blend(param_00)
|
||||
{
|
||||
}
|
||||
|
||||
//Function Number: 16
|
||||
azm_print_progress(param_00)
|
||||
{
|
||||
}
|
||||
|
||||
//Function Number: 17
|
||||
azmx_load_zone(param_00)
|
||||
{
|
||||
if(isdefined(level._audio.zone_mgr.zones[param_00]))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(!isdefined(level._audio.zone_mgr.preset_cache))
|
||||
{
|
||||
level._audio.zone_mgr.preset_cache = [];
|
||||
}
|
||||
|
||||
var_01 = [];
|
||||
if(isdefined(level._audio.zone_mgr.preset_cache[param_00]))
|
||||
{
|
||||
var_01 = level._audio.zone_mgr.preset_cache[param_00];
|
||||
}
|
||||
else
|
||||
{
|
||||
var_01 = azmx_get_preset_from_string_table(param_00,1);
|
||||
}
|
||||
|
||||
if(!isdefined(var_01) || var_01.size == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
level._audio.zone_mgr.preset_cache[param_00] = var_01;
|
||||
var_02 = 0;
|
||||
if(isdefined(level._audio.zone_mgr.overrides.samb[param_00]))
|
||||
{
|
||||
if(level._audio.zone_mgr.overrides.samb[param_00] == "none")
|
||||
{
|
||||
var_01["streamed_ambience"] = undefined;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_01["streamed_ambience"] = level._audio.zone_mgr.overrides.samb[param_00];
|
||||
}
|
||||
|
||||
var_02 = 1;
|
||||
level._audio.zone_mgr.overrides.samb[param_00] = undefined;
|
||||
}
|
||||
|
||||
if(isdefined(level._audio.zone_mgr.overrides.damb[param_00]))
|
||||
{
|
||||
if(level._audio.zone_mgr.overrides.damb[param_00] == "none")
|
||||
{
|
||||
var_01["dynamic_ambience"] = undefined;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_01["dynamic_ambience"] = level._audio.zone_mgr.overrides.damb[param_00];
|
||||
}
|
||||
|
||||
var_02 = 1;
|
||||
level._audio.zone_mgr.overrides.damb[param_00] = undefined;
|
||||
}
|
||||
|
||||
if(isdefined(level._audio.zone_mgr.overrides.rev[param_00]))
|
||||
{
|
||||
if(level._audio.zone_mgr.overrides.rev[param_00] == "none")
|
||||
{
|
||||
var_01["reverb"] = undefined;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_01["reverb"] = level._audio.zone_mgr.overrides.rev[param_00];
|
||||
}
|
||||
|
||||
var_02 = 1;
|
||||
level._audio.zone_mgr.overrides.rev[param_00] = undefined;
|
||||
}
|
||||
|
||||
if(isdefined(level._audio.zone_mgr.overrides.occ[param_00]))
|
||||
{
|
||||
if(level._audio.zone_mgr.overrides.occ[param_00] == "none")
|
||||
{
|
||||
var_01["occlusion"] = undefined;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_01["occlusion"] = level._audio.zone_mgr.overrides.occ[param_00];
|
||||
}
|
||||
|
||||
var_02 = 1;
|
||||
level._audio.zone_mgr.overrides.occ[param_00] = undefined;
|
||||
}
|
||||
|
||||
if(isdefined(level._audio.zone_mgr.overrides.indexed[param_00]))
|
||||
{
|
||||
if(level._audio.zone_mgr.overrides.indexed[param_00] == "none")
|
||||
{
|
||||
var_01["mix"] = undefined;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_01["mix"] = level._audio.zone_mgr.overrides.indexed[param_00];
|
||||
}
|
||||
|
||||
var_02 = 1;
|
||||
level._audio.zone_mgr.overrides.indexed[param_00] = undefined;
|
||||
}
|
||||
|
||||
if(var_02)
|
||||
{
|
||||
level._audio.zone_mgr.preset_cache[param_00] = var_01;
|
||||
}
|
||||
|
||||
var_01["name"] = param_00;
|
||||
if(!isdefined(var_01["priority"]))
|
||||
{
|
||||
var_01["priority"] = 1;
|
||||
}
|
||||
|
||||
if(!isdefined(var_01["interrupt_fade"]))
|
||||
{
|
||||
var_01["interrupt_fade"] = 0.1;
|
||||
}
|
||||
|
||||
return var_01;
|
||||
}
|
||||
|
||||
//Function Number: 18
|
||||
azmx_get_preset_from_string_table(param_00,param_01)
|
||||
{
|
||||
var_02 = "soundtables/common_zone.csv";
|
||||
var_03 = maps\_audio::get_zone_stringtable();
|
||||
var_04 = [];
|
||||
if(param_01)
|
||||
{
|
||||
var_04 = azmx_get_zone_preset_from_stringtable_internal(var_03,param_00);
|
||||
}
|
||||
|
||||
if(!isdefined(var_04) || var_04.size == 0)
|
||||
{
|
||||
var_04 = azmx_get_zone_preset_from_stringtable_internal(var_02,param_00);
|
||||
}
|
||||
|
||||
if(!isdefined(var_04) || var_04.size == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
return var_04;
|
||||
}
|
||||
|
||||
//Function Number: 19
|
||||
azmx_get_zone_preset_from_stringtable_internal(param_00,param_01)
|
||||
{
|
||||
var_02 = [];
|
||||
var_03 = "";
|
||||
var_04 = "";
|
||||
var_05 = 8;
|
||||
for(var_06 = 1;var_06 < var_05;var_06++)
|
||||
{
|
||||
if(var_03 != "comments" && var_04 != "")
|
||||
{
|
||||
var_02[var_03] = var_04;
|
||||
}
|
||||
|
||||
var_03 = tablelookup(param_00,0,"zone_names",var_06);
|
||||
var_04 = tablelookup(param_00,0,param_01,var_06);
|
||||
if(var_03 != "comment" && var_03 != "comments" && var_04 != "")
|
||||
{
|
||||
switch(var_03)
|
||||
{
|
||||
case "streamed_ambience":
|
||||
var_02["streamed_ambience"] = var_04;
|
||||
break;
|
||||
|
||||
case "dynamic_ambience":
|
||||
var_02["dynamic_ambience"] = var_04;
|
||||
break;
|
||||
|
||||
case "mix":
|
||||
var_02["mix"] = var_04;
|
||||
break;
|
||||
|
||||
case "reverb":
|
||||
var_02["reverb"] = var_04;
|
||||
break;
|
||||
|
||||
case "filter":
|
||||
var_02["filter"] = var_04;
|
||||
break;
|
||||
|
||||
case "occlusion":
|
||||
var_02["occlusion"] = var_04;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return var_02;
|
||||
}
|
||||
|
||||
//Function Number: 20
|
||||
azmx_restart_stream(param_00,param_01)
|
||||
{
|
||||
var_02 = level._audio.zone_mgr.zones[param_00]["streamed_ambience"];
|
||||
if(isdefined(var_02))
|
||||
{
|
||||
lib_0068::func_147D(var_02,param_01);
|
||||
return;
|
||||
}
|
||||
|
||||
lib_0068::func_1483(param_01);
|
||||
}
|
||||
|
||||
//Function Number: 21
|
||||
azmx_restart_damb(param_00,param_01)
|
||||
{
|
||||
var_02 = 1;
|
||||
if(isdefined(param_01))
|
||||
{
|
||||
var_02 = param_01;
|
||||
}
|
||||
|
||||
var_03 = level._audio.zone_mgr.zones[param_00]["dynamic_ambience"];
|
||||
if(isdefined(var_03))
|
||||
{
|
||||
maps\_audio_dynamic_ambi::damb_zone_start_preset(var_03,var_02);
|
||||
return;
|
||||
}
|
||||
|
||||
maps\_audio_dynamic_ambi::damb_zone_stop_preset(undefined,var_02);
|
||||
}
|
||||
|
||||
//Function Number: 22
|
||||
azmx_restart_reverb(param_00,param_01)
|
||||
{
|
||||
var_02 = level._audio.zone_mgr.zones[param_00]["reverb"];
|
||||
if(isdefined(var_02))
|
||||
{
|
||||
lib_0086::func_1465(var_02);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 23
|
||||
azmx_restart_occlusion(param_00,param_01)
|
||||
{
|
||||
var_02 = level._audio.zone_mgr.zones[param_00]["occlusion"];
|
||||
if(isdefined(var_02))
|
||||
{
|
||||
maps\_audio::aud_set_occlusion(var_02);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 24
|
||||
azmx_restart_mix(param_00,param_01)
|
||||
{
|
||||
var_02 = level._audio.zone_mgr.zones[param_00]["mix"];
|
||||
if(isdefined(var_02))
|
||||
{
|
||||
lib_0087::func_150F(var_02);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 25
|
||||
azmx_set_param_internal(param_00,param_01,param_02,param_03,param_04)
|
||||
{
|
||||
if(isdefined(level._audio.zone_mgr.zones[param_00]))
|
||||
{
|
||||
if((isdefined(level._audio.zone_mgr.zones[param_00][param_01]) && level._audio.zone_mgr.zones[param_00][param_01] != param_02) || !isdefined(level._audio.zone_mgr.zones[param_00][param_01]) && param_02 != "none")
|
||||
{
|
||||
if(param_02 == "none")
|
||||
{
|
||||
level._audio.zone_mgr.zones[param_00][param_01] = undefined;
|
||||
}
|
||||
else
|
||||
{
|
||||
level._audio.zone_mgr.zones[param_00][param_01] = param_02;
|
||||
}
|
||||
|
||||
if(param_00 == azm_get_current_zone())
|
||||
{
|
||||
[[ param_03 ]](param_00,param_04);
|
||||
}
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
//Function Number: 26
|
||||
azmx_wait_till_fade_done_and_remove_zone(param_00,param_01)
|
||||
{
|
||||
wait param_01;
|
||||
wait 0.05;
|
||||
if(level._audio.zone_mgr.zones[param_00]["state"] == "stopping")
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 27
|
||||
azmx_get_blend_args(param_00,param_01)
|
||||
{
|
||||
var_02 = spawnstruct();
|
||||
var_02.zone_from_name = param_00;
|
||||
var_02.zone_to_name = param_01;
|
||||
var_02.samb1_name = undefined;
|
||||
var_02.samb2_name = undefined;
|
||||
var_02.damb1_name = undefined;
|
||||
var_02.damb2_name = undefined;
|
||||
var_02.var_158F = undefined;
|
||||
var_02.var_1590 = undefined;
|
||||
var_02.filter1 = undefined;
|
||||
var_02.filter2 = undefined;
|
||||
var_02.occlusion1 = undefined;
|
||||
var_02.var_1594 = undefined;
|
||||
var_02.mix1_name = undefined;
|
||||
var_02.mix2_name = undefined;
|
||||
if(!isdefined(level._audio.zone_mgr.zones[param_00]))
|
||||
{
|
||||
var_03 = azmx_load_zone(param_00);
|
||||
if(!isdefined(var_03))
|
||||
{
|
||||
maps\_audio::aud_print_warning("Couldn\'t find zone: " + param_00);
|
||||
return;
|
||||
}
|
||||
|
||||
level._audio.zone_mgr.zones[param_00] = var_03;
|
||||
}
|
||||
|
||||
var_04 = level._audio.zone_mgr.zones[param_00];
|
||||
if(!isdefined(level._audio.zone_mgr.zones[param_01]))
|
||||
{
|
||||
var_03 = azmx_load_zone(param_01);
|
||||
if(!isdefined(var_03))
|
||||
{
|
||||
maps\_audio::aud_print_warning("Couldn\'t find zone: " + param_01);
|
||||
return;
|
||||
}
|
||||
|
||||
level._audio.zone_mgr.zones[param_01] = var_03;
|
||||
}
|
||||
|
||||
var_05 = level._audio.zone_mgr.zones[param_01];
|
||||
var_02.var_158F = var_04["occlusion"];
|
||||
var_02.var_1590 = var_05["occlusion"];
|
||||
var_02.filter1 = var_04["filter"];
|
||||
var_02.filter2 = var_05["filter"];
|
||||
var_02.occlusion1 = var_04["reverb"];
|
||||
var_02.var_1594 = var_05["reverb"];
|
||||
var_02.mix2 = var_04["mix"];
|
||||
var_02.var_1598 = var_05["mix"];
|
||||
var_02.samb1_name = var_04["streamed_ambience"];
|
||||
var_02.samb2_name = var_05["streamed_ambience"];
|
||||
var_06 = level._audio.damb.playing["zone"].size;
|
||||
if(var_06 != 1)
|
||||
{
|
||||
maps\_audio_dynamic_ambi::damb_stop(1,"zone");
|
||||
}
|
||||
|
||||
if(var_06 == 1)
|
||||
{
|
||||
foreach(var_09, var_08 in level._audio.damb.playing["zone"])
|
||||
{
|
||||
var_02.damb1_name = var_09;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
var_02.damb2_name = var_05["dynamic_ambience"];
|
||||
return var_02;
|
||||
}
|
||||
|
||||
//Function Number: 28
|
||||
azmx_is_valid_damb_blend_request(param_00,param_01)
|
||||
{
|
||||
var_02 = 0;
|
||||
if(isdefined(param_00) && isdefined(param_01) && param_00 != param_01)
|
||||
{
|
||||
var_02 = 1;
|
||||
}
|
||||
else if(isdefined(param_01) && !isdefined(param_00))
|
||||
{
|
||||
var_02 = 1;
|
||||
}
|
||||
else if(isdefined(param_00) && !isdefined(param_01))
|
||||
{
|
||||
var_02 = 1;
|
||||
}
|
||||
|
||||
return var_02;
|
||||
}
|
||||
|
||||
//Function Number: 29
|
||||
azmx_is_valid_samb_blend_request(param_00,param_01)
|
||||
{
|
||||
var_02 = 0;
|
||||
if(isdefined(param_00) && isdefined(param_01) && param_00 != param_01)
|
||||
{
|
||||
var_02 = 1;
|
||||
}
|
||||
else if(isdefined(param_01) && !isdefined(param_00))
|
||||
{
|
||||
var_02 = 1;
|
||||
}
|
||||
|
||||
return var_02;
|
||||
}
|
||||
|
||||
//Function Number: 30
|
||||
azmx_blend_zones(param_00,param_01,param_02)
|
||||
{
|
||||
if(azmx_is_valid_samb_blend_request(param_02.samb1_name,param_02.samb2_name))
|
||||
{
|
||||
var_03 = [];
|
||||
var_04 = 0;
|
||||
if(isdefined(param_02.samb1_name) && param_02.samb1_name != "")
|
||||
{
|
||||
var_05 = level._audio.zone_mgr.zones[param_02.zone_from_name];
|
||||
var_03[var_04] = spawnstruct();
|
||||
var_03[var_04].alias = param_02.samb1_name;
|
||||
var_03[var_04].vol = param_00;
|
||||
var_03[var_04].fade = var_05["interrupt_fade"];
|
||||
var_03[var_04].priority = var_05["priority"];
|
||||
var_04++;
|
||||
}
|
||||
|
||||
if(isdefined(param_02.samb2_name) && param_02.samb2_name != "")
|
||||
{
|
||||
var_06 = level._audio.zone_mgr.zones[param_02.zone_to_name];
|
||||
var_03[var_04] = spawnstruct();
|
||||
var_03[var_04].alias = param_02.samb2_name;
|
||||
var_03[var_04].vol = param_01;
|
||||
var_03[var_04].fade = var_06["interrupt_fade"];
|
||||
var_03[var_04].priority = var_06["priority"];
|
||||
}
|
||||
|
||||
if(var_03.size > 0)
|
||||
{
|
||||
lib_0068::func_1485(var_03);
|
||||
}
|
||||
}
|
||||
|
||||
if(azmx_is_valid_damb_blend_request(param_02.damb1_name,param_02.damb2_name))
|
||||
{
|
||||
maps\_audio_dynamic_ambi::damb_prob_mix_damb_presets(param_02.damb1_name,param_00,param_02.damb2_name,param_01);
|
||||
}
|
||||
|
||||
var_07 = 0;
|
||||
if(maps\_audio::aud_is_zone_filter_enabled())
|
||||
{
|
||||
if(isdefined(param_02.filter1))
|
||||
{
|
||||
var_07 = 1;
|
||||
maps\_audio::aud_set_filter(param_02.filter1,0,0);
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\_audio::aud_set_filter(undefined,0,0);
|
||||
}
|
||||
|
||||
if(isdefined(param_02.filter2))
|
||||
{
|
||||
var_07 = 1;
|
||||
maps\_audio::aud_set_filter(param_02.filter2,1,0);
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\_audio::aud_set_filter(undefined,1,0);
|
||||
}
|
||||
|
||||
if(!isdefined(level._audio.var_159D) && level._audio.var_159D)
|
||||
{
|
||||
if(isdefined(param_02.filter1) || isdefined(param_02.filter2))
|
||||
{
|
||||
level.player seteqlerp(param_00,0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(param_00 >= 0.75)
|
||||
{
|
||||
if(isdefined(param_02.occlusion1))
|
||||
{
|
||||
if(param_02.occlusion1 == "none")
|
||||
{
|
||||
lib_0086::func_1465(undefined);
|
||||
}
|
||||
else
|
||||
{
|
||||
lib_0086::func_1465(param_02.occlusion1);
|
||||
}
|
||||
}
|
||||
|
||||
if(isdefined(param_02.mix2))
|
||||
{
|
||||
if(param_02.mix2 == "none")
|
||||
{
|
||||
lib_0087::func_1513(2);
|
||||
}
|
||||
else
|
||||
{
|
||||
lib_0087::func_1510(param_02.mix2);
|
||||
}
|
||||
}
|
||||
|
||||
if(maps\_audio::aud_is_zone_filter_enabled())
|
||||
{
|
||||
if(isdefined(param_02.var_158F))
|
||||
{
|
||||
if(param_02.var_158F == "none")
|
||||
{
|
||||
maps\_audio::aud_deactivate_occlusion();
|
||||
return;
|
||||
}
|
||||
|
||||
maps\_audio::aud_set_occlusion(param_02.var_158F);
|
||||
return;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if(param_01 >= 0.75)
|
||||
{
|
||||
if(isdefined(param_02.var_1594))
|
||||
{
|
||||
if(param_02.var_1594 == "none")
|
||||
{
|
||||
lib_0086::func_1465(undefined);
|
||||
}
|
||||
else
|
||||
{
|
||||
lib_0086::func_1465(param_02.var_1594);
|
||||
}
|
||||
}
|
||||
|
||||
if(isdefined(param_02.var_1598))
|
||||
{
|
||||
if(param_02.var_1598 == "none")
|
||||
{
|
||||
lib_0087::func_1513(2);
|
||||
}
|
||||
else
|
||||
{
|
||||
lib_0087::func_1510(param_02.var_1598);
|
||||
}
|
||||
}
|
||||
|
||||
if(maps\_audio::aud_is_zone_filter_enabled())
|
||||
{
|
||||
if(isdefined(param_02.var_1590))
|
||||
{
|
||||
if(param_02.var_1590 == "none")
|
||||
{
|
||||
maps\_audio::aud_deactivate_occlusion();
|
||||
return;
|
||||
}
|
||||
|
||||
maps\_audio::aud_set_occlusion(param_02.var_1590);
|
||||
return;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
777
MW3/PC/SP/maps/_autosave.gsc
Normal file
777
MW3/PC/SP/maps/_autosave.gsc
Normal file
@ -0,0 +1,777 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_autosave.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 28
|
||||
* Decompile Time: 433 ms
|
||||
* Timestamp: 10/27/2023 2:22:27 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
level.lastautosavetime = 0;
|
||||
common_scripts\utility::flag_init("game_saving");
|
||||
common_scripts\utility::flag_init("can_save");
|
||||
common_scripts\utility::flag_set("can_save");
|
||||
common_scripts\utility::flag_init("disable_autosaves");
|
||||
if(!isdefined(level._extra_autosave_checks))
|
||||
{
|
||||
level._extra_autosave_checks = [];
|
||||
}
|
||||
|
||||
level.autosave_proximity_threat_func = ::autosave_proximity_threat_func;
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
getdescription()
|
||||
{
|
||||
return &"AUTOSAVE_AUTOSAVE";
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
getnames(param_00)
|
||||
{
|
||||
if(param_00 == 0)
|
||||
{
|
||||
var_01 = &"AUTOSAVE_GAME";
|
||||
}
|
||||
else
|
||||
{
|
||||
var_01 = &"AUTOSAVE_NOGAME";
|
||||
}
|
||||
|
||||
return var_01;
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
beginningoflevelsave()
|
||||
{
|
||||
level waittill("finished final intro screen fadein");
|
||||
if(level.missionfailed)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(maps\_arcademode::arcademode_complete())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(common_scripts\utility::flag("game_saving"))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
common_scripts\utility::flag_set("game_saving");
|
||||
var_00 = "levelshots / autosave / autosave_" + level.script + "start";
|
||||
savegame("levelstart",&"AUTOSAVE_LEVELSTART",var_00,1);
|
||||
setdvar("ui_grenade_death","0");
|
||||
common_scripts\utility::flag_clear("game_saving");
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
trigger_autosave_stealth(param_00)
|
||||
{
|
||||
param_00 waittill("trigger");
|
||||
maps\_utility::autosave_stealth();
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
trigger_autosave_tactical(param_00)
|
||||
{
|
||||
param_00 waittill("trigger");
|
||||
maps\_utility::autosave_tactical();
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
trigger_autosave(param_00)
|
||||
{
|
||||
if(!isdefined(param_00.script_autosave))
|
||||
{
|
||||
param_00.script_autosave = 0;
|
||||
}
|
||||
|
||||
autosaves_think(param_00);
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
autosaves_think(param_00)
|
||||
{
|
||||
var_01 = getnames(param_00.script_autosave);
|
||||
if(!isdefined(var_01))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
param_00 waittill("trigger");
|
||||
var_02 = param_00.script_autosave;
|
||||
var_03 = "levelshots / autosave / autosave_" + level.script + var_02;
|
||||
tryautosave(var_02,var_01,var_03);
|
||||
thread maps\_quotes::setdeadquote();
|
||||
if(isdefined(param_00))
|
||||
{
|
||||
param_00 delete();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
autosavenamethink(param_00)
|
||||
{
|
||||
if(maps\_utility::is_no_game_start())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
param_00 waittill("trigger");
|
||||
if(isdefined(level.customautosavecheck))
|
||||
{
|
||||
if(![[ level.customautosavecheck ]]())
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
var_01 = param_00.script_autosavename;
|
||||
maps\_utility::autosave_by_name(var_01);
|
||||
param_00 delete();
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
trigger_autosave_immediate(param_00)
|
||||
{
|
||||
param_00 waittill("trigger");
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
autosaveprint(param_00,param_01)
|
||||
{
|
||||
if(isdefined(param_01))
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
autosave_timeout(param_00)
|
||||
{
|
||||
level endon("trying_new_autosave");
|
||||
level endon("autosave_complete");
|
||||
wait param_00;
|
||||
common_scripts\utility::flag_clear("game_saving");
|
||||
level notify("autosave_timeout");
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
_autosave_game_now_nochecks()
|
||||
{
|
||||
var_00 = "levelshots / autosave / autosave_" + level.script + "start";
|
||||
savegame("levelstart",&"AUTOSAVE_LEVELSTART",var_00,1);
|
||||
autosave_recon(0);
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
_autosave_game_now_notrestart()
|
||||
{
|
||||
var_00 = "levelshots / autosave / autosave_" + level.script + "start";
|
||||
if(getdvarint("g_reloading") == 0)
|
||||
{
|
||||
savegame("levelstart",&"AUTOSAVE_LEVELSTART",var_00,1);
|
||||
autosave_recon(0);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
_autosave_game_now(param_00)
|
||||
{
|
||||
if(isdefined(level.missionfailed) && level.missionfailed)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(common_scripts\utility::flag("game_saving"))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(maps\_arcademode::arcademode_complete())
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
for(var_01 = 0;var_01 < level.players.size;var_01++)
|
||||
{
|
||||
var_02 = level.players[var_01];
|
||||
if(!isalive(var_02))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
var_03 = "save_now";
|
||||
var_04 = getdescription();
|
||||
if(isdefined(param_00))
|
||||
{
|
||||
var_05 = savegamenocommit(var_03,var_04,"$default",1);
|
||||
}
|
||||
else
|
||||
{
|
||||
var_05 = savegamenocommit(var_04,var_05);
|
||||
}
|
||||
|
||||
wait 0.05;
|
||||
if(issaverecentlyloaded())
|
||||
{
|
||||
level.lastautosavetime = gettime();
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(var_05 < 0)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(!try_to_autosave_now())
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
common_scripts\utility::flag_set("game_saving");
|
||||
wait 2;
|
||||
common_scripts\utility::flag_clear("game_saving");
|
||||
if(!commitwouldbevalid(var_05))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(try_to_autosave_now())
|
||||
{
|
||||
if(!isdefined(param_00))
|
||||
{
|
||||
thread maps\_arcademode::arcademode_checkpoint_print();
|
||||
}
|
||||
|
||||
autosave_recon(var_05);
|
||||
commitsave(var_05);
|
||||
setdvar("ui_grenade_death","0");
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Function Number: 16
|
||||
autosave_now_trigger(param_00)
|
||||
{
|
||||
param_00 waittill("trigger");
|
||||
maps\_utility::autosave_now();
|
||||
}
|
||||
|
||||
//Function Number: 17
|
||||
try_to_autosave_now()
|
||||
{
|
||||
if(!issavesuccessful())
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
for(var_00 = 0;var_00 < level.players.size;var_00++)
|
||||
{
|
||||
var_01 = level.players[var_00];
|
||||
if(!var_01 autosavehealthcheck())
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
if(!common_scripts\utility::flag("can_save"))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Function Number: 18
|
||||
tryautosave(param_00,param_01,param_02,param_03,param_04,param_05)
|
||||
{
|
||||
if(common_scripts\utility::flag("disable_autosaves"))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
level endon("nextmission");
|
||||
level.player endon("death");
|
||||
if(maps\_utility::is_coop())
|
||||
{
|
||||
level.player2 endon("death");
|
||||
}
|
||||
|
||||
level notify("trying_new_autosave");
|
||||
if(common_scripts\utility::flag("game_saving"))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(isdefined(level.nextmission))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
var_06 = 1.25;
|
||||
var_07 = 1.25;
|
||||
if(isdefined(param_03) && param_03 < var_06 + var_07)
|
||||
{
|
||||
}
|
||||
|
||||
if(!isdefined(param_05))
|
||||
{
|
||||
param_05 = 0;
|
||||
}
|
||||
|
||||
if(!isdefined(param_02))
|
||||
{
|
||||
param_02 = "$default";
|
||||
}
|
||||
|
||||
if(!isdefined(param_04))
|
||||
{
|
||||
param_04 = 0;
|
||||
}
|
||||
|
||||
common_scripts\utility::flag_set("game_saving");
|
||||
var_08 = getdescription();
|
||||
var_09 = gettime();
|
||||
for(;;)
|
||||
{
|
||||
if(autosavecheck(undefined,param_04))
|
||||
{
|
||||
var_0A = savegamenocommit(param_00,var_08,param_02,param_05);
|
||||
if(var_0A < 0)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
wait 0.05;
|
||||
if(issaverecentlyloaded())
|
||||
{
|
||||
level.lastautosavetime = gettime();
|
||||
break;
|
||||
}
|
||||
|
||||
wait var_06;
|
||||
if(extra_autosave_checks_failed())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(!autosavecheck(undefined,param_04))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
wait var_07;
|
||||
if(!autosavecheck_not_picky())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(isdefined(param_03))
|
||||
{
|
||||
if(gettime() > var_09 + param_03 * 1000)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(!common_scripts\utility::flag("can_save"))
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
if(!commitwouldbevalid(var_0A))
|
||||
{
|
||||
common_scripts\utility::flag_clear("game_saving");
|
||||
return 0;
|
||||
}
|
||||
|
||||
thread maps\_arcademode::arcademode_checkpoint_print();
|
||||
autosave_recon(var_0A);
|
||||
commitsave(var_0A);
|
||||
level.lastsavetime = gettime();
|
||||
setdvar("ui_grenade_death","0");
|
||||
break;
|
||||
}
|
||||
|
||||
wait 0.25;
|
||||
}
|
||||
|
||||
common_scripts\utility::flag_clear("game_saving");
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Function Number: 19
|
||||
extra_autosave_checks_failed()
|
||||
{
|
||||
foreach(var_01 in level._extra_autosave_checks)
|
||||
{
|
||||
if(![[ var_01["func"] ]]())
|
||||
{
|
||||
autosaveprint("autosave failed: " + var_01["msg"]);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
//Function Number: 20
|
||||
autosavecheck_not_picky()
|
||||
{
|
||||
return autosavecheck(0,0);
|
||||
}
|
||||
|
||||
//Function Number: 21
|
||||
autosavecheck(param_00,param_01)
|
||||
{
|
||||
if(isdefined(level.autosave_check_override))
|
||||
{
|
||||
return [[ level.autosave_check_override ]]();
|
||||
}
|
||||
|
||||
if(isdefined(level.special_autosavecondition) && ![[ level.special_autosavecondition ]]())
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(level.missionfailed)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(maps\_arcademode::arcademode_complete())
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(!isdefined(param_00))
|
||||
{
|
||||
param_00 = level.dopickyautosavechecks;
|
||||
}
|
||||
|
||||
if(!isdefined(param_01))
|
||||
{
|
||||
param_01 = 0;
|
||||
}
|
||||
|
||||
if(param_01)
|
||||
{
|
||||
if(![[ level.global_callbacks["_autosave_stealthcheck"] ]]())
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
for(var_02 = 0;var_02 < level.players.size;var_02++)
|
||||
{
|
||||
var_03 = level.players[var_02];
|
||||
if(!var_03 autosavehealthcheck())
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(param_00 && !var_03 autosaveammocheck())
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
if(level.autosave_threat_check_enabled)
|
||||
{
|
||||
if(!autosavethreatcheck(param_00))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
for(var_02 = 0;var_02 < level.players.size;var_02++)
|
||||
{
|
||||
var_03 = level.players[var_02];
|
||||
if(!var_03 autosaveplayercheck(param_00))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
if(isdefined(level.savehere) && !level.savehere)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(isdefined(level.cansave) && !level.cansave)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(!issavesuccessful())
|
||||
{
|
||||
autosaveprint("autosave failed: save call was unsuccessful");
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Function Number: 22
|
||||
autosaveplayercheck(param_00)
|
||||
{
|
||||
if(isdefined(level.ac130gunner) && level.ac130gunner == self)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
if(self ismeleeing() && param_00)
|
||||
{
|
||||
autosaveprint("autosave failed:player is meleeing");
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(self isthrowinggrenade() && param_00)
|
||||
{
|
||||
autosaveprint("autosave failed:player is throwing a grenade");
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(self isfiring() && param_00)
|
||||
{
|
||||
autosaveprint("autosave failed:player is firing");
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(isdefined(self.shellshocked) && self.shellshocked)
|
||||
{
|
||||
autosaveprint("autosave failed:player is in shellshock");
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(common_scripts\utility::isflashed())
|
||||
{
|
||||
autosaveprint("autosave failed:player is flashbanged");
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Function Number: 23
|
||||
autosaveammocheck()
|
||||
{
|
||||
if(isdefined(level.ac130gunner) && level.ac130gunner == self)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
var_00 = self getweaponslistprimaries();
|
||||
for(var_01 = 0;var_01 < var_00.size;var_01++)
|
||||
{
|
||||
var_02 = self getfractionmaxammo(var_00[var_01]);
|
||||
if(var_02 > 0.1)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
autosaveprint("autosave failed: ammo too low");
|
||||
return 0;
|
||||
}
|
||||
|
||||
//Function Number: 24
|
||||
autosavehealthcheck()
|
||||
{
|
||||
if(isdefined(level.ac130gunner) && level.ac130gunner == self)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
if(maps\_utility::ent_flag_exist("laststand_downed") && maps\_utility::ent_flag("laststand_downed"))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
var_00 = self.health / self.maxhealth;
|
||||
if(var_00 < 0.5)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(common_scripts\utility::flag("_radiation_poisoning"))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(maps\_utility::ent_flag("player_has_red_flashing_overlay"))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Function Number: 25
|
||||
autosavethreatcheck(param_00)
|
||||
{
|
||||
if(isdefined(level.ac130gunner) && level.ac130gunner == self)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
var_01 = getaispeciesarray("bad_guys","all");
|
||||
foreach(var_03 in var_01)
|
||||
{
|
||||
if(!isdefined(var_03.enemy))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(!isplayer(var_03.enemy))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(var_03.type == "dog")
|
||||
{
|
||||
foreach(var_05 in level.players)
|
||||
{
|
||||
if(distance(var_03.origin,var_05.origin) < 384)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if(isdefined(var_03.melee) && isdefined(var_03.melee.target) && isplayer(var_03.melee.target))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
var_07 = [[ level.autosave_proximity_threat_func ]](var_03);
|
||||
if(var_07 == "return_even_if_low_accuracy")
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(var_03.finalaccuracy < 0.021 && var_03.finalaccuracy > -1)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(var_07 == "return")
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(var_07 == "none")
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(var_03.a.lastshoottime > gettime() - 500)
|
||||
{
|
||||
if(param_00 || var_03 animscripts/utility::func_CE3(0) && var_03 canshootenemy(0))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
if(isdefined(var_03.a.aimidlethread) && var_03 animscripts/utility::func_CE3(0) && var_03 canshootenemy(0))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
if(maps\_utility::player_is_near_live_grenade())
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
var_09 = getentarray("destructible","classname");
|
||||
foreach(var_0B in var_09)
|
||||
{
|
||||
if(!isdefined(var_0B.healthdrain))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
foreach(var_05 in level.players)
|
||||
{
|
||||
if(distance(var_0B.origin,var_05.origin) < 400)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Function Number: 26
|
||||
enemy_is_a_threat()
|
||||
{
|
||||
if(self.finalaccuracy >= 0.021)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
foreach(var_01 in level.players)
|
||||
{
|
||||
if(distance(self.origin,var_01.origin) < 500)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
//Function Number: 27
|
||||
autosave_proximity_threat_func(param_00)
|
||||
{
|
||||
foreach(var_02 in level.players)
|
||||
{
|
||||
var_03 = distance(param_00.origin,var_02.origin);
|
||||
if(var_03 < 200)
|
||||
{
|
||||
return "return_even_if_low_accuracy";
|
||||
}
|
||||
else if(var_03 < 360)
|
||||
{
|
||||
return "return";
|
||||
}
|
||||
else if(var_03 < 1000)
|
||||
{
|
||||
return "threat_exists";
|
||||
}
|
||||
}
|
||||
|
||||
return "none";
|
||||
}
|
||||
|
||||
//Function Number: 28
|
||||
autosave_recon(param_00)
|
||||
{
|
||||
if(!maps\_utility::is_default_start())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var_01 = maps\_utility_code::get_leveltime();
|
||||
var_02 = var_01;
|
||||
if(isdefined(level.recon_checkpoint_lasttime))
|
||||
{
|
||||
var_02 = var_01 - level.recon_checkpoint_lasttime;
|
||||
}
|
||||
|
||||
level.recon_checkpoint_lasttime = var_01;
|
||||
reconevent("script_checkpoint: id %d, leveltime %d, deltatime %d",param_00,var_01,var_02);
|
||||
}
|
463
MW3/PC/SP/maps/_bcs_location_trigs.gsc
Normal file
463
MW3/PC/SP/maps/_bcs_location_trigs.gsc
Normal file
@ -0,0 +1,463 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_bcs_location_trigs.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 24
|
||||
* Decompile Time: 362 ms
|
||||
* Timestamp: 10/27/2023 2:24:07 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
bcs_location_trigs_init()
|
||||
{
|
||||
level.bcs_location_mappings = [];
|
||||
bcs_location_trigger_mapping();
|
||||
bcs_trigs_assign_aliases();
|
||||
level.bcs_location_mappings = undefined;
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
bcs_trigs_assign_aliases()
|
||||
{
|
||||
anim.bcs_locations = [];
|
||||
var_00 = getentarray();
|
||||
var_01 = [];
|
||||
foreach(var_03 in var_00)
|
||||
{
|
||||
if(isdefined(var_03.classname) && issubstr(var_03.classname,"trigger_multiple_bcs"))
|
||||
{
|
||||
var_01[var_01.size] = var_03;
|
||||
}
|
||||
}
|
||||
|
||||
foreach(var_03 in var_01)
|
||||
{
|
||||
var_06 = parselocationaliases(level.bcs_location_mappings[var_03.classname]);
|
||||
if(var_06.size > 1)
|
||||
{
|
||||
var_06 = maps\_utility::array_randomize(var_06);
|
||||
}
|
||||
|
||||
var_03.locationaliases = var_06;
|
||||
}
|
||||
|
||||
anim.bcs_locations = var_01;
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
parselocationaliases(param_00)
|
||||
{
|
||||
var_01 = strtok(param_00," ");
|
||||
return var_01;
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
add_bcs_location_mapping(param_00,param_01)
|
||||
{
|
||||
if(isdefined(level.bcs_location_mappings[param_00]))
|
||||
{
|
||||
var_02 = level.bcs_location_mappings[param_00];
|
||||
var_03 = parselocationaliases(var_02);
|
||||
var_04 = parselocationaliases(param_01);
|
||||
foreach(var_06 in var_04)
|
||||
{
|
||||
foreach(var_08 in var_03)
|
||||
{
|
||||
if(var_06 == var_08)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var_02 = var_02 + " " + param_01;
|
||||
level.bcs_location_mappings[param_00] = var_02;
|
||||
return;
|
||||
}
|
||||
|
||||
level.bcs_location_mappings[var_09] = var_0A;
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
bcs_location_trigger_mapping()
|
||||
{
|
||||
generic_locations();
|
||||
vehicles();
|
||||
landmarks();
|
||||
tibet();
|
||||
ny_manhattan();
|
||||
ny_harbor();
|
||||
hijack();
|
||||
warlord();
|
||||
london();
|
||||
payback();
|
||||
hamburg();
|
||||
paris_a();
|
||||
paris_b();
|
||||
paris_ac130();
|
||||
prague();
|
||||
berlin();
|
||||
dubai();
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
generic_locations()
|
||||
{
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_uk_building_1stfloor","loc_1st_report");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_uk_building_2ndfloor","loc_2nd_report");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_uk_building_1stfloor_door_left","loc_door_1st_left_report");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_uk_building_1stfloor_door","loc_door_1st_report");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_uk_building_1stfloor_door_right","loc_door_1st_right_report");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_uk_building_2ndfloor_door","loc_door_2nd_report");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_uk_building_door","loc_door_report");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_uk_building_1stfloor_window_left","loc_wndw_1st_left_report");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_uk_building_1stfloor_window","loc_wndw_1st_report");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_uk_building_1stfloor_window_right","loc_wndw_1st_right_report");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_uk_building_2ndfloor_window_left","loc_wndw_2nd_left_report");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_uk_building_2ndfloor_window","loc_wndw_2nd_report");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_uk_building_2ndfloor_window_right","loc_wndw_2nd_right_report");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_callout_loc_door","callout_loc_door_report");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_callout_loc_door_1st","callout_loc_door_1st_report");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_callout_loc_door_1st_right","callout_loc_door_1st_right_report");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_callout_loc_door_1st_left","callout_loc_door_1st_left_report");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_callout_loc_door_2nd","callout_loc_door_2nd_report");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_callout_loc_wndw_1st","callout_loc_wndw_1st_report");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_callout_loc_wndw_1st_left","callout_loc_wndw_1st_left_report");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_callout_loc_wndw_1st_right","callout_loc_wndw_1st_right_report");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_callout_loc_1st","callout_loc_1st_report");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_callout_loc_2nd","callout_loc_2nd_report");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_callout_loc_wndw_2nd","callout_loc_wndw_2nd_report");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_callout_loc_wndw_2nd_left","callout_loc_wndw_2nd_left_report");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_callout_loc_wndw_2nd_right","callout_loc_wndw_2nd_right_report");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_callout_loc_wndw_3rd","callout_loc_wndw_3rd_report");
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
landmarks()
|
||||
{
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_ac_generic","loc_ac_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_airdrop_generic","loc_airdrop_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_alley_generic","loc_alley_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_balcony_2nd","loc_balcony_2nd");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_balcony_3rd","loc_balcony_3rd");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_bank_generic","loc_bank_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_bar_generic","loc_bar_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_barrels_generic","loc_barrels_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_barricade_generic","loc_barricade_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_barrier_hesco","loc_barrier_hesco");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_barrier_orange","loc_barrier_orange");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_bin_recycle","loc_bin_recycle");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_bookcase_generic","loc_bookcase_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_building_red","loc_building_red");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_bulkhead_generic","loc_bulkhead_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_bunk_generic","loc_bunk_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_bus_generic","loc_bus_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_bus_inside","loc_bus_inside");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_car_blue","loc_car_blue");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_car_burning","loc_car_burning");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_car_destroyed","loc_car_destroyed");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_car_generic","loc_car_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_car_green","loc_car_green");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_car_overturned","loc_car_overturned");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_car_parked","loc_car_parked");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_car_police","loc_car_police");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_car_yellow","loc_car_yellow");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_catwalk_generic","loc_catwalk_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_chair_blue","loc_chair_blue");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_column_generic","loc_column_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_console_generic","loc_console_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_container_generic","loc_container_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_container_red","loc_container_red");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_couch_blue","loc_couch_blue");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_couch_generic","loc_couch_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_crates_ammo","loc_crates_ammo");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_crates_generic","loc_crates_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_cubicles_left","loc_cubicles_left");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_cubicles_right","loc_cubicles_right");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_deck_generic","loc_deck_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_door_back","loc_door_back");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_door_front","loc_door_front");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_dumpster_generic","loc_dumpster_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_embassy_1st","loc_embassy_1st");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_embassy_3rd","loc_embassy_3rd");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_engine_generic","loc_engine_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_fan_exhaust","loc_fan_exhaust");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_gate_generic","loc_gate_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_hill_generic","loc_hill_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_machine_copy","loc_machine_copy");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_mg_generic","loc_mg_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_patio_generic","loc_patio_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_pipe_generic","loc_pipe_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_planter_generic","loc_planter_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_rack_bike","loc_rack_bike");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_railing_generic","loc_railing_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_ramp_down","loc_ramp_down");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_rooftop_generic","loc_rooftop_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_room_conf","loc_room_conf");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_room_middle","loc_room_middle");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_rubble_generic","loc_rubble_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_sandbags_generic","loc_sandbags_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_scaffolding_generic","loc_scaffolding_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_car_black","loc_car_black");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_shop_book","loc_shop_book");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_shop_cafe","loc_shop_cafe");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_shop_coffee","loc_shop_coffee");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_shop_restaurant","loc_shop_restaurant");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_shop_souvenir","loc_shop_souvenir");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_staircase_generic","loc_staircase_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_stairs_bottom","loc_stairs_bottom");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_stairs_generic","loc_stairs_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_stairs_top","loc_stairs_top");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_stand_hotdog","loc_stand_hotdog");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_stand_news","loc_stand_news");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_stand_trading","loc_stand_trading");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_statue_generic","loc_statue_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_stryker_destroyed","loc_stryker_destroyed");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_subway_entrance","loc_subway_entrance");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_table_computer","loc_table_computer");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_table_generic","loc_table_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_tanks_generic","loc_tanks_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_taxi_destroyed","loc_taxi_destroyed");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_taxi_generic","loc_taxi_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_tires_large","loc_tires_large");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_tower_jamming","loc_tower_jamming");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_truck_white","loc_truck_white");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_van_blue","loc_van_blue");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_vehicle_btr","loc_vehicle_btr");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_vehicle_dumptruck","loc_vehicle_dumptruck");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_vehicle_gaz","loc_vehicle_gaz");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_vehicle_hind","loc_vehicle_hind");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_vehicle_snowcat","loc_vehicle_snowcat");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_vehicle_snowmobile","loc_vehicle_snowmobile");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_wall_low","loc_wall_low");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_generic_loc_water_cooler","loc_water_cooler");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_pc_generic_wndw_3rd","callout_loc_wndw_3rd");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_pc_generic_alley_generic","loc_alley_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_pc_generic_arch_generic","loc_arch_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_pc_generic_balcony_2nd","loc_balcony_2nd");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_pc_generic_balcony_3rd","loc_balcony_3rd");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_pc_generic_balcony_generic","loc_balcony_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_pc_generic_barrels_generic","loc_barrels_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_pc_generic_boat_wooden","loc_boat_wooden");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_pc_generic_car_burning","loc_car_burning");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_pc_generic_car_generic","loc_car_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_pc_generic_car_green","loc_car_green");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_pc_generic_car_overturned","loc_car_overturned");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_pc_generic_car_yellow","loc_car_yellow");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_pc_generic_carport_generic","loc_carport_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_pc_generic_cart_generic","loc_cart_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_pc_generic_catwalk_generic","loc_catwalk_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_pc_generic_container_cargo","loc_container_cargo");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_pc_generic_couch_generic","loc_couch_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_pc_generic_counter_generic","loc_counter_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_pc_generic_crates_ammo","loc_crates_ammo");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_pc_generic_crates_generic","loc_crates_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_pc_generic_door_back","loc_door_back");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_pc_generic_door_front","loc_door_front");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_pc_generic_hull_3rd","loc_hull_3rd");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_pc_generic_market_stalls","loc_market_stalls");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_pc_generic_pier_far","loc_pier_far");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_pc_generic_pier_generic","loc_pier_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_pc_generic_rock_big","loc_rock_big");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_pc_generic_rooftop_generic","loc_rooftop_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_pc_generic_stairs_bottom","loc_stairs_bottom");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_pc_generic_stairs_generic","loc_stairs_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_pc_generic_stairs_top","loc_stairs_top");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_pc_generic_tank_welding","loc_tank_welding");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_pc_generic_truck_white","loc_truck_white");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_pc_generic_wall_broken","loc_wall_broken");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_pc_generic_wall_generic","loc_wall_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_generic_1st","callout_loc_1st");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_generic_2nd","callout_loc_2nd");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_generic_door_1st_left","callout_loc_door_1st_left");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_generic_door_1st_right","callout_loc_door_1st_right");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_generic_door_1st","callout_loc_door_1st");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_generic_door_2nd","callout_loc_door_2nd");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_generic_door","callout_loc_door");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_generic_wndw_1st_left","callout_loc_wndw_1st_left");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_generic_wndw_1st_right","callout_loc_wndw_1st_right");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_generic_wndw_1st","callout_loc_wndw_1st");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_generic_wndw_2nd_left","callout_loc_wndw_2nd_left");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_generic_wndw_2nd_right","callout_loc_wndw_2nd_right");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_generic_wndw_2nd","callout_loc_wndw_2nd");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_generic_container_cargo","loc_container_cargo");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_generic_balcony_generic","loc_balcony_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_generic_boat_wooden","loc_boat_wooden");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_generic_tanks_welding","loc_tanks_welding");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_generic_carport_generic","loc_carport_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_generic_rock_big","loc_rock_big");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_generic_wall_broken","loc_wall_broken");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_generic_bin_trash","loc_bin_trash");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_generic_fridge_generic","loc_fridge_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_generic_washing_machine","loc_washing_machine");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_generic_tire_stack","loc_tire_stack");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_generic_mattress_generic","loc_mattress_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_generic_umbrella_generic","loc_umbrella_generic");
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
vehicles()
|
||||
{
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
tibet()
|
||||
{
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
ny_manhattan()
|
||||
{
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_ny_manhattan_lm_memorial_building","lm_memorial_building");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_ny_manhattan_loc_cases_generic","loc_cases_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_ny_manhattan_loc_cases_left","loc_cases_left");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_ny_manhattan_loc_cases_right","loc_cases_right");
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
ny_harbor()
|
||||
{
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_ny_harbor_loc_reactor_generic","loc_reactor_generic");
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
hijack()
|
||||
{
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
warlord()
|
||||
{
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_warlord_church_generic","loc_church_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_warlord_shop_butcher","loc_shop_butcher");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_warlord_shop_pharmacy","loc_shop_pharmacy");
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
london()
|
||||
{
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_uk_landmark_barrels","loc_barrels_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_uk_landmark_barrier","loc_barrier_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_uk_landmark_bulldozer","loc_bulldozer_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_uk_vehicle_car_black","loc_car_black");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_uk_landmark_catwalk","loc_catwalk_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_uk_landmark_cinder_blocks","loc_cinder_blocks");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_uk_landmark_container","loc_container_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_uk_landmark_container_open","loc_container_open");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_uk_landmark_container_small","loc_container_small");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_uk_landmark_crate_blue","loc_crate_blue");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_uk_landmark_crate","loc_crate_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_uk_landmark_dumpster_red","loc_dumpster_red");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_uk_landmark_flatbed","loc_flatbed_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_uk_landmark_loading_bay","loc_loading_bay");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_uk_landmark_pipe_cement","loc_pipe_cement");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_uk_landmark_platform_left","loc_platform_left");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_uk_landmark_porta_john","loc_porta_john");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_uk_landmark_scaffolding","loc_scaffolding_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_uk_landmark_stairs_down","loc_stairs_down");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_uk_landmark_stairs","loc_stairs_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_uk_landmark_stairs_top","loc_stairs_top");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_uk_vehicle_truck_charity","loc_truck_charity");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_uk_vehicle_truck","loc_truck_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_uk_vehicle_target","loc_vehicle_target");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_uk_landmark_wall_low","loc_wall_low");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_uk_landmark_warehouse","loc_warehouse_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_uk_landmark_warehouse_south","loc_warehouse_south");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_uk_landmark_warehouse_west","loc_warehouse_west");
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
payback()
|
||||
{
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_pc_payback_lm_building_tall","lm_building_tall");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_pc_payback_lm_building_white","lm_building_white");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_pc_payback_ship_cargo","loc_ship_cargo");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_pc_payback_shipwreck_generic","loc_shipwreck_generic");
|
||||
}
|
||||
|
||||
//Function Number: 16
|
||||
hamburg()
|
||||
{
|
||||
}
|
||||
|
||||
//Function Number: 17
|
||||
paris_a()
|
||||
{
|
||||
}
|
||||
|
||||
//Function Number: 18
|
||||
paris_b()
|
||||
{
|
||||
}
|
||||
|
||||
//Function Number: 19
|
||||
paris_ac130()
|
||||
{
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_parisAC130_lm_embassy","lm_embassy");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_parisAC130_lm_monument_courtyard","lm_monument_courtyard");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_parisAC130_loc_monument_top","loc_monument_top");
|
||||
}
|
||||
|
||||
//Function Number: 20
|
||||
prague()
|
||||
{
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_prague_sign_large","loc_sign_large");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_prague_car_white","loc_car_white");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_prague_shops_east","loc_shops_east");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_prague_btr_crashed","loc_btr_crashed");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_prague_bldg_west","loc_bldg_west");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_prague_cafe_tables","loc_cafe_tables");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_prague_bldg_north","loc_bldg_north");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_prague_antique_shop","loc_antique_shop");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_prague_pillars","loc_pillars");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_prague_barricades","loc_barricades");
|
||||
}
|
||||
|
||||
//Function Number: 21
|
||||
berlin()
|
||||
{
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_df_berlin_lm_kitchen_back","lm_kitchen_back");
|
||||
}
|
||||
|
||||
//Function Number: 22
|
||||
rescue()
|
||||
{
|
||||
}
|
||||
|
||||
//Function Number: 23
|
||||
rescue_2()
|
||||
{
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_rescue_snowcat_generic","loc_snowcat_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_rescue_dumptruck_generic","loc_dumptruck_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_rescue_building_red","loc_building_red");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_rescue_snowmobile_generic","loc_snowmobile_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_rescue_scaffolding_generic","loc_scaffolding_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_rescue_container_red","loc_container_red");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_rescue_tires_large","loc_tires_large");
|
||||
}
|
||||
|
||||
//Function Number: 24
|
||||
dubai()
|
||||
{
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_dubai_arch_generic","loc_arch_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_dubai_bar","loc_bar");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_dubai_barricades","loc_barricades");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_dubai_car_generic","loc_car_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_dubai_chair_generic","loc_chair_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_dubai_couch_generic","loc_couch_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_dubai_counter_generic","loc_counter_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_dubai_doorway","loc_doorway");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_dubai_escalator_coming_down","loc_escalator_coming_down");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_dubai_escalator_near_right","loc_escalator_near_right");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_dubai_escalator_near_left","loc_escalator_near_left");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_dubai_escalator_top","loc_escalator_top");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_dubai_fountain_generic","loc_fountain_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_dubai_lamppost_generic","loc_lamppost_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_dubai_pillar_generic","loc_pillar_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_dubai_pillar_left","loc_pillar_left");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_dubai_pillar_right","loc_pillar_right");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_dubai_planter_generic","loc_planter_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_dubai_sedan_generic","loc_sedan_generic");
|
||||
add_bcs_location_mapping("trigger_multiple_bcs_tf_dubai_suv_generic","loc_suv_generic");
|
||||
}
|
744
MW3/PC/SP/maps/_breach.gsc
Normal file
744
MW3/PC/SP/maps/_breach.gsc
Normal file
@ -0,0 +1,744 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_breach.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 24
|
||||
* Decompile Time: 305 ms
|
||||
* Timestamp: 10/27/2023 2:20:01 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
level._effect["_breach_doorbreach_detpack"] = loadfx("explosions/exp_pack_doorbreach");
|
||||
level._effect["_breach_doorbreach_kick"] = loadfx("dust/door_kick");
|
||||
level.scr_sound["breach_wooden_door"] = "detpack_explo_main";
|
||||
level.scr_sound["breach_wood_door_kick"] = "wood_door_kick";
|
||||
common_scripts\utility::flag_init("begin_the_breach");
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
breach_think(param_00,param_01,param_02,param_03,param_04,param_05)
|
||||
{
|
||||
self endon("breach_abort");
|
||||
if(isdefined(param_05) && param_05 == 0)
|
||||
{
|
||||
level.fire_notetrack_functions["scripted"] = ::breach_fire_straight;
|
||||
}
|
||||
|
||||
self.flashthrown = 0;
|
||||
self.closestai = undefined;
|
||||
self.animent = undefined;
|
||||
self.breached = 0;
|
||||
self.breachers = 0;
|
||||
self.breachersready = 0;
|
||||
self.singlebreacher = 0;
|
||||
self.readytobreach = 0;
|
||||
self.aiareintheroom = 0;
|
||||
self.abouttobebreached = 0;
|
||||
self.cleared = 0;
|
||||
self.hasdoor = 1;
|
||||
self.hasflashbangs = 0;
|
||||
self.hostilesspawned = 0;
|
||||
var_06 = getentarray(self.targetname,"targetname");
|
||||
var_07 = self.targetname;
|
||||
self.sbadplacename = "badplace_" + var_07;
|
||||
self.badplace = getent("badplace_" + var_07,"targetname");
|
||||
if(isdefined(self.badplace))
|
||||
{
|
||||
}
|
||||
|
||||
self.breachtrigger = getent("trigger_" + var_07,"targetname");
|
||||
if(!isdefined(param_04))
|
||||
{
|
||||
param_04 = 1;
|
||||
}
|
||||
|
||||
if(isdefined(self.breachtrigger))
|
||||
{
|
||||
switch(self.breachtrigger.classname)
|
||||
{
|
||||
case "trigger_use":
|
||||
self.triggerhintstring = param_02;
|
||||
break;
|
||||
|
||||
case "trigger_use_touch":
|
||||
self.triggerhintstring = param_02;
|
||||
break;
|
||||
|
||||
case "trigger_radius":
|
||||
break;
|
||||
|
||||
case "trigger_multiple":
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
switch(param_01)
|
||||
{
|
||||
case "explosive_breach_left":
|
||||
break;
|
||||
|
||||
case "shotgunhinges_breach_left":
|
||||
break;
|
||||
|
||||
case "flash_breach_no_door_right":
|
||||
self.hasdoor = 0;
|
||||
self.hasflashbangs = 1;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if(self.hasdoor == 1)
|
||||
{
|
||||
self.edoor = getent(self.script_linkto,"script_linkname");
|
||||
if(self.edoor.classname == "script_model")
|
||||
{
|
||||
self.animent = spawn("script_origin",self.edoor.origin);
|
||||
self.animent.angles = self.edoor.angles;
|
||||
}
|
||||
else if(self.edoor.classname == "script_brushmodel")
|
||||
{
|
||||
self.animent = getent(self.edoor.target,"targetname");
|
||||
self.edoor.vector = anglestoforward(self.animent.angles);
|
||||
}
|
||||
|
||||
self.animent.type = "Cover Right";
|
||||
self.eexploderorigin = getent(self.edoor.script_linkto,"script_linkname");
|
||||
self.iexplodernum = self.eexploderorigin.script_exploder;
|
||||
}
|
||||
else if(self.hasdoor == 0)
|
||||
{
|
||||
self.animent = getent(self.script_linkto,"script_linkname");
|
||||
}
|
||||
|
||||
if(self.hasflashbangs == 1)
|
||||
{
|
||||
self.grenadeorigin = getent("flashthrow_" + var_07,"targetname");
|
||||
self.grenadedest = getent(self.grenadeorigin.target,"targetname");
|
||||
}
|
||||
|
||||
thread breach_abort(param_00);
|
||||
thread breach_cleanup(param_00);
|
||||
thread breach_play_fx(param_01,param_04);
|
||||
var_08 = 0;
|
||||
for(var_09 = 0;var_09 < param_00.size;var_09++)
|
||||
{
|
||||
if(isdefined(param_00[var_09].firstbreacher))
|
||||
{
|
||||
var_08++;
|
||||
self.closestai = param_00[var_09];
|
||||
}
|
||||
}
|
||||
|
||||
if(var_08 > 0)
|
||||
{
|
||||
}
|
||||
else
|
||||
{
|
||||
self.closestai = maps\_utility::getclosest(self.animent.origin,param_00);
|
||||
}
|
||||
|
||||
if(param_00.size == 1)
|
||||
{
|
||||
self.singlebreacher = 1;
|
||||
}
|
||||
|
||||
for(var_09 = 0;var_09 < param_00.size;var_09++)
|
||||
{
|
||||
param_00[var_09] thread breacher_think(self,param_01,param_05);
|
||||
}
|
||||
|
||||
while(self.breachers < param_00.size)
|
||||
{
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
self notify("ready_to_breach");
|
||||
self.readytobreach = 1;
|
||||
if(isdefined(self.breachtrigger))
|
||||
{
|
||||
self.breachtrigger thread breach_trigger_think(self);
|
||||
self waittill("execute_the_breach");
|
||||
}
|
||||
else
|
||||
{
|
||||
self notify("execute_the_breach");
|
||||
}
|
||||
|
||||
common_scripts\utility::flag_set("begin_the_breach");
|
||||
self.abouttobebreached = 1;
|
||||
if(isdefined(param_03) && param_03 == 1)
|
||||
{
|
||||
var_0A = getentarray("hostiles_" + var_07,"targetname");
|
||||
self waittill("spawn_hostiles");
|
||||
spawnbreachhostiles(var_0A);
|
||||
self.hostilesspawned = 1;
|
||||
}
|
||||
|
||||
if(isdefined(self.badplace))
|
||||
{
|
||||
badplace_cylinder(self.sbadplacename,-1,self.badplace.origin,self.badplace.radius,200,"bad_guys");
|
||||
}
|
||||
|
||||
var_0B = getaiarray("bad_guys");
|
||||
var_0C = [];
|
||||
var_09 = 0;
|
||||
while(var_09 < var_0B.size)
|
||||
{
|
||||
if(var_0B[var_09] istouching(self))
|
||||
{
|
||||
}
|
||||
|
||||
var_0B++ = var_7B[var_0C.size];
|
||||
}
|
||||
|
||||
if(var_7B.size > 0)
|
||||
{
|
||||
common_scripts\utility::array_thread(var_7B,::breach_enemies_stunned,self);
|
||||
}
|
||||
|
||||
while(!self.aiareintheroom)
|
||||
{
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
self notify("breach_complete",var_0B[var_09]);
|
||||
if(!var_7B.size)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
while(!self.cleared)
|
||||
{
|
||||
wait 0.05;
|
||||
for(var_0B = 0;var_0B < var_7B.size;var_0B++)
|
||||
{
|
||||
if(!isalive(var_7B[var_0B]))
|
||||
{
|
||||
var_7B = common_scripts\utility::array_remove(var_7B,var_7B[var_0B]);
|
||||
}
|
||||
|
||||
if(var_7B.size == 0)
|
||||
{
|
||||
self.cleared = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
breach_dont_fire()
|
||||
{
|
||||
while(self.breaching == 1)
|
||||
{
|
||||
self waittillmatch("fire","single anim");
|
||||
self.a.lastshoottime = gettime();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
breacher_think(param_00,param_01,param_02)
|
||||
{
|
||||
self.breaching = 1;
|
||||
self.breachdonotfire = undefined;
|
||||
if(!isdefined(param_02))
|
||||
{
|
||||
param_02 = 1;
|
||||
}
|
||||
|
||||
self pushplayer(1);
|
||||
thread give_infinite_ammo();
|
||||
param_00 endon("breach_abort");
|
||||
self.ender = "stop_idle_" + self getentitynumber();
|
||||
var_03 = undefined;
|
||||
var_04 = undefined;
|
||||
var_05 = undefined;
|
||||
var_06 = undefined;
|
||||
var_07 = undefined;
|
||||
if(self == param_00.closestai)
|
||||
{
|
||||
var_03 = "01";
|
||||
}
|
||||
else
|
||||
{
|
||||
var_03 = "02";
|
||||
}
|
||||
|
||||
if(param_00.singlebreacher == 1 && param_01 == "explosive_breach_left")
|
||||
{
|
||||
var_03 = "02";
|
||||
}
|
||||
|
||||
switch(param_01)
|
||||
{
|
||||
case "explosive_breach_left":
|
||||
if(isdefined(self.usebreachapproach) && self.usebreachapproach == 0)
|
||||
{
|
||||
var_04 = "detcord_stack_left_start_no_approach_" + var_03;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_04 = "detcord_stack_left_start_" + var_03;
|
||||
}
|
||||
|
||||
var_05 = "detcord_stack_leftidle_" + var_03;
|
||||
var_06 = "detcord_stack_leftbreach_" + var_03;
|
||||
break;
|
||||
|
||||
case "shotgunhinges_breach_left":
|
||||
var_04 = "shotgunhinges_breach_left_stack_start_" + var_03;
|
||||
var_05 = "shotgunhinges_breach_left_stack_idle_" + var_03;
|
||||
var_06 = "shotgunhinges_breach_left_stack_breach_" + var_03;
|
||||
break;
|
||||
|
||||
case "flash_breach_no_door_right":
|
||||
if(param_00.singlebreacher == 1)
|
||||
{
|
||||
var_04 = "flash_stack_right_start_single";
|
||||
var_05 = "flash_stack_right_idle_single";
|
||||
var_06 = "flash_stack_right_breach_single";
|
||||
var_07 = "flash_stack_right_flash_single";
|
||||
}
|
||||
else
|
||||
{
|
||||
var_04 = "flash_stack_right_start_" + var_03;
|
||||
var_05 = "flash_stack_right_idle_" + var_03;
|
||||
var_06 = "flash_stack_right_breach_" + var_03;
|
||||
var_07 = "flash_stack_right_flash_" + var_03;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
breach_set_goaladius(64);
|
||||
if(!isdefined(self.usebreachapproach) || self.usebreachapproach)
|
||||
{
|
||||
param_00.animent maps\_anim::anim_generic_reach(self,var_04);
|
||||
}
|
||||
else
|
||||
{
|
||||
self.scriptedarrivalent = param_00.animent;
|
||||
param_00.animent maps\_anim::anim_generic_reach_and_arrive(self,var_04);
|
||||
}
|
||||
|
||||
param_00.animent maps\_anim::anim_generic(self,var_04);
|
||||
param_00.animent thread maps\_anim::anim_generic_loop(self,var_05,self.ender);
|
||||
self.setgoalpos = self.origin;
|
||||
param_00.breachers++;
|
||||
self.scriptedarrivalent = undefined;
|
||||
param_00 waittill("execute_the_breach");
|
||||
if(!param_00.flashthrown && isdefined(var_07))
|
||||
{
|
||||
param_00.animent notify(self.ender);
|
||||
param_00.animent thread maps\_anim::anim_generic(self,var_07);
|
||||
wait 1;
|
||||
if(var_03 == "02" || param_00.singlebreacher == 1)
|
||||
{
|
||||
var_08 = "J_Mid_LE_1";
|
||||
self attach("projectile_m84_flashbang_grenade",var_08);
|
||||
var_09 = self.grenadeweapon;
|
||||
self.grenadeweapon = "flash_grenade";
|
||||
self.grenadeammo++;
|
||||
if(var_03 == "02")
|
||||
{
|
||||
self waittillmatch("grenade_throw","single anim");
|
||||
}
|
||||
|
||||
if(param_00.singlebreacher == 1 && var_03 == "01")
|
||||
{
|
||||
self waittillmatch("fire","single anim");
|
||||
}
|
||||
|
||||
self magicgrenade(param_00.grenadeorigin.origin,param_00.grenadedest.origin,level.iflashfuse);
|
||||
self detach("projectile_m84_flashbang_grenade",var_08);
|
||||
self.grenadeweapon = var_09;
|
||||
self.grenadeammo = 0;
|
||||
}
|
||||
|
||||
self waittillmatch("end","single anim");
|
||||
param_00.animent thread maps\_anim::anim_generic_loop(self,var_05,self.ender);
|
||||
wait 0.1;
|
||||
}
|
||||
|
||||
param_00.animent notify(self.ender);
|
||||
if(param_02 == 0)
|
||||
{
|
||||
self.breachdonotfire = 1;
|
||||
}
|
||||
|
||||
param_00.animent thread maps\_anim::anim_generic(self,var_06);
|
||||
if(param_01 == "explosive_breach_left")
|
||||
{
|
||||
if(var_03 == "02")
|
||||
{
|
||||
thread detcord_logic(param_00);
|
||||
self waittillmatch("pull fuse","single anim");
|
||||
wait 1;
|
||||
param_00 notify("spawn_hostiles");
|
||||
param_00 notify("detpack_about_to_blow");
|
||||
self waittillmatch("explosion","single anim");
|
||||
param_00 notify("detpack_detonated");
|
||||
param_00.breached = 1;
|
||||
param_00.edoor thread door_open("explosive",param_00);
|
||||
param_00 notify("play_breach_fx");
|
||||
}
|
||||
}
|
||||
else if(param_01 == "shotgunhinges_breach_left")
|
||||
{
|
||||
if(var_03 == "01")
|
||||
{
|
||||
param_00 notify("spawn_hostiles");
|
||||
self waittillmatch("kick","single anim");
|
||||
param_00.edoor thread door_open("shotgun",param_00);
|
||||
param_00 notify("play_breach_fx");
|
||||
}
|
||||
}
|
||||
else if(param_01 == "flash_breach_no_door_right")
|
||||
{
|
||||
}
|
||||
|
||||
self waittillmatch("end","single anim");
|
||||
self notify("breach_complete");
|
||||
if(param_02 == 0)
|
||||
{
|
||||
self.breachdonotfire = undefined;
|
||||
}
|
||||
|
||||
if(isdefined(level.friendly_breach_thread))
|
||||
{
|
||||
self thread [[ level.friendly_breach_thread ]](param_00);
|
||||
}
|
||||
|
||||
param_00.aiareintheroom = 1;
|
||||
self pushplayer(0);
|
||||
breach_reset_animname();
|
||||
while(!param_00.cleared)
|
||||
{
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
self.breaching = 0;
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
breach_fire_straight()
|
||||
{
|
||||
if(isdefined(self.breachdonotfire))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
animscripts/notetracks::func_20D5();
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
detcord_logic(param_00)
|
||||
{
|
||||
thread sound_effect_play(param_00);
|
||||
self waittillmatch("attach prop right","single anim");
|
||||
var_01 = "TAG_INHAND";
|
||||
self attach("weapon_detcord",var_01);
|
||||
self waittillmatch("detach prop right","single anim");
|
||||
var_02 = self gettagorigin(var_01);
|
||||
var_03 = self gettagangles(var_01);
|
||||
self detach("weapon_detcord",var_01);
|
||||
var_04 = spawn("script_model",var_02);
|
||||
var_04 setmodel("weapon_detcord");
|
||||
var_04.angles = var_03;
|
||||
param_00 waittill("detpack_detonated");
|
||||
radiusdamage(var_04.origin,64,50,25);
|
||||
var_04 delete();
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
sound_effect_play(param_00)
|
||||
{
|
||||
self waittillmatch("sound effect","single anim");
|
||||
thread common_scripts\utility::play_sound_in_space("detpack_plant_arming",param_00.animent.origin);
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
breach_enemies_stunned(param_00)
|
||||
{
|
||||
self endon("death");
|
||||
param_00 endon("breach_aborted");
|
||||
param_00 waittill("detpack_detonated");
|
||||
if(distance(self.origin,param_00.animent.origin) <= level.detpackstunradius)
|
||||
{
|
||||
level.stunnedanimnumber++;
|
||||
if(level.stunnedanimnumber > 2)
|
||||
{
|
||||
level.stunnedanimnumber = 1;
|
||||
}
|
||||
|
||||
var_01 = "exposed_flashbang_v" + level.stunnedanimnumber;
|
||||
self.allowdeath = 1;
|
||||
maps\_anim::anim_generic_custom_animmode(self,"gravity",var_01);
|
||||
breach_reset_animname();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
breach_trigger_think(param_00)
|
||||
{
|
||||
param_00 endon("execute_the_breach");
|
||||
param_00 endon("breach_aborted");
|
||||
thread breach_trigger_cleanup(param_00);
|
||||
self waittill("trigger");
|
||||
param_00 notify("execute_the_breach");
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
breach_trigger_cleanup(param_00)
|
||||
{
|
||||
param_00 waittill("execute_the_breach");
|
||||
common_scripts\utility::trigger_off();
|
||||
if(isdefined(param_00.ebreachmodel))
|
||||
{
|
||||
param_00.ebreachmodel delete();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
breach_abort(param_00)
|
||||
{
|
||||
self endon("breach_complete");
|
||||
self waittill("breach_abort");
|
||||
self.cleared = 1;
|
||||
thread breach_cleanup(param_00);
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
breach_cleanup(param_00)
|
||||
{
|
||||
while(!self.cleared)
|
||||
{
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
if(isdefined(self.badplace))
|
||||
{
|
||||
badplace_delete(self.sbadplacename);
|
||||
}
|
||||
|
||||
while(!self.cleared)
|
||||
{
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
common_scripts\utility::array_thread(param_00,::breach_ai_reset,self);
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
breach_ai_reset(param_00)
|
||||
{
|
||||
self endon("death");
|
||||
breach_reset_animname();
|
||||
breach_reset_goaladius();
|
||||
param_00.animent notify(self.ender);
|
||||
self notify("stop_infinite_ammo");
|
||||
self pushplayer(0);
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
breach_play_fx(param_00,param_01)
|
||||
{
|
||||
self endon("breach_aborted");
|
||||
self endon("breach_complete");
|
||||
switch(param_00)
|
||||
{
|
||||
case "explosive_breach_left":
|
||||
self waittill("play_breach_fx");
|
||||
common_scripts\utility::exploder(self.iexplodernum);
|
||||
thread common_scripts\utility::play_sound_in_space(level.scr_sound["breach_wooden_door"],self.eexploderorigin.origin);
|
||||
if(param_01)
|
||||
{
|
||||
playfx(level._effect["_breach_doorbreach_detpack"],self.eexploderorigin.origin,anglestoforward(self.eexploderorigin.angles));
|
||||
}
|
||||
break;
|
||||
|
||||
case "shotgunhinges_breach_left":
|
||||
self waittill("play_breach_fx");
|
||||
common_scripts\utility::exploder(self.iexplodernum);
|
||||
if(param_01)
|
||||
{
|
||||
playfx(level._effect["_breach_doorbreach_kick"],self.eexploderorigin.origin,anglestoforward(self.eexploderorigin.angles));
|
||||
}
|
||||
break;
|
||||
|
||||
case "flash_breach_no_door_right":
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
spawnhostile(param_00)
|
||||
{
|
||||
var_01 = param_00 dospawn();
|
||||
maps\_utility::spawn_failed(var_01);
|
||||
return var_01;
|
||||
}
|
||||
|
||||
//Function Number: 16
|
||||
spawnbreachhostiles(param_00)
|
||||
{
|
||||
var_01 = [];
|
||||
for(var_02 = 0;var_02 < param_00.size;var_02++)
|
||||
{
|
||||
var_03 = spawnhostile(param_00[var_02]);
|
||||
var_01[var_01.size] = var_03;
|
||||
}
|
||||
|
||||
return var_01;
|
||||
}
|
||||
|
||||
//Function Number: 17
|
||||
give_infinite_ammo()
|
||||
{
|
||||
self endon("death");
|
||||
self endon("stop_infinite_ammo");
|
||||
while(isdefined(self.weapon))
|
||||
{
|
||||
if(isdefined(self.weapon) && self.weapon == "none")
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
self.bulletsinclip = weaponclipsize(self.weapon);
|
||||
wait 0.5;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 18
|
||||
door_open(param_00,param_01,param_02)
|
||||
{
|
||||
if(!isdefined(param_02))
|
||||
{
|
||||
param_02 = 1;
|
||||
}
|
||||
|
||||
if(param_02 == 1)
|
||||
{
|
||||
self playsound(level.scr_sound["breach_wood_door_kick"]);
|
||||
}
|
||||
|
||||
switch(param_00)
|
||||
{
|
||||
case "explosive":
|
||||
thread door_fall_over(param_01.animent);
|
||||
door_connectpaths();
|
||||
self playsound(level.scr_sound["breach_wooden_door"]);
|
||||
earthquake(0.4,1,self.origin,1000);
|
||||
radiusdamage(self.origin,56,level.maxdetpackdamage,level.mindetpackdamage);
|
||||
break;
|
||||
|
||||
case "shotgun":
|
||||
thread door_fall_over(param_01.animent);
|
||||
door_connectpaths();
|
||||
self playsound(level.scr_sound["breach_wooden_door"]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 19
|
||||
door_connectpaths()
|
||||
{
|
||||
if(self.classname == "script_brushmodel")
|
||||
{
|
||||
self connectpaths();
|
||||
return;
|
||||
}
|
||||
|
||||
var_00 = getent(self.target,"targetname");
|
||||
var_00 hide();
|
||||
var_00 notsolid();
|
||||
var_00 connectpaths();
|
||||
}
|
||||
|
||||
//Function Number: 20
|
||||
door_fall_over(param_00)
|
||||
{
|
||||
var_01 = undefined;
|
||||
if(self.classname == "script_model")
|
||||
{
|
||||
var_01 = anglestoforward(self.angles);
|
||||
}
|
||||
else if(self.classname == "script_brushmodel")
|
||||
{
|
||||
var_01 = self.vector;
|
||||
}
|
||||
else
|
||||
{
|
||||
}
|
||||
|
||||
var_02 = (var_01[0] * 20,var_01[1] * 20,var_01[2] * 20);
|
||||
self moveto(self.origin + var_02,0.5,0,0.5);
|
||||
var_03 = spawn("script_origin",(0,0,0));
|
||||
var_03.angles = param_00.angles;
|
||||
var_03.origin = (self.origin[0],self.origin[1],param_00.origin[2]);
|
||||
self linkto(var_03);
|
||||
var_03 rotatepitch(90,0.45,0.4);
|
||||
wait 0.45;
|
||||
var_03 rotatepitch(-4,0.2,0,0.2);
|
||||
wait 0.2;
|
||||
var_03 rotatepitch(4,0.15,0.15);
|
||||
wait 0.15;
|
||||
self unlink();
|
||||
var_03 delete();
|
||||
}
|
||||
|
||||
//Function Number: 21
|
||||
breach_set_goaladius(param_00)
|
||||
{
|
||||
if(!isdefined(self.old_goalradius))
|
||||
{
|
||||
self.old_goalradius = self.goalradius;
|
||||
}
|
||||
|
||||
self.goalradius = param_00;
|
||||
}
|
||||
|
||||
//Function Number: 22
|
||||
breach_reset_goaladius()
|
||||
{
|
||||
if(isdefined(self.old_goalradius))
|
||||
{
|
||||
self.goalradius = self.old_goalradius;
|
||||
}
|
||||
|
||||
self.old_goalradius = undefined;
|
||||
}
|
||||
|
||||
//Function Number: 23
|
||||
breach_set_animname(param_00)
|
||||
{
|
||||
if(!isdefined(self.old_animname))
|
||||
{
|
||||
self.old_animname = self.animname;
|
||||
}
|
||||
|
||||
self.animname = param_00;
|
||||
}
|
||||
|
||||
//Function Number: 24
|
||||
breach_reset_animname()
|
||||
{
|
||||
if(isdefined(self.old_animname))
|
||||
{
|
||||
self.animname = self.old_animname;
|
||||
}
|
||||
|
||||
self.old_animname = undefined;
|
||||
}
|
369
MW3/PC/SP/maps/_briefing.gsc
Normal file
369
MW3/PC/SP/maps/_briefing.gsc
Normal file
@ -0,0 +1,369 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_briefing.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 15
|
||||
* Decompile Time: 179 ms
|
||||
* Timestamp: 10/27/2023 2:20:02 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
setsaveddvar("hud_drawhud",0);
|
||||
level.script = tolower(getdvar("mapname"));
|
||||
if(!isdefined(level.tmpmsg))
|
||||
{
|
||||
level.tmpmsg = [];
|
||||
}
|
||||
|
||||
var_00 = getentarray("player","classname")[0];
|
||||
setsaveddvar("g_speed",0);
|
||||
var_00 setviewmodel("viewmodel_hands_cloth");
|
||||
precacheshader("black");
|
||||
var_01 = 0;
|
||||
for(var_02 = 0;var_02 < level.slide.size;var_02++)
|
||||
{
|
||||
if(isdefined(level.slide[var_02]["movie"]))
|
||||
{
|
||||
var_01 = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(var_01)
|
||||
{
|
||||
wait 0.05;
|
||||
var_00 gotothelevel(0);
|
||||
return;
|
||||
}
|
||||
|
||||
precachestring(&"SCRIPT_PLATFORM_FIRE_TO_SKIP");
|
||||
for(var_03 = 0;var_03 < level.slide.size;var_03++)
|
||||
{
|
||||
if(isdefined(level.slide[var_03]["image"]))
|
||||
{
|
||||
precacheshader(level.slide[var_03]["image"]);
|
||||
}
|
||||
}
|
||||
|
||||
var_00 thread skipthebriefing();
|
||||
var_00 dothebriefing();
|
||||
var_00 gotothelevel(0);
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
start(param_00)
|
||||
{
|
||||
level.briefing_running = 1;
|
||||
level.briefing_ending = 0;
|
||||
level.placenextimage = "A";
|
||||
if(isdefined(level.imagea))
|
||||
{
|
||||
level.imagea destroy();
|
||||
}
|
||||
|
||||
if(isdefined(level.imageb))
|
||||
{
|
||||
level.imageb destroy();
|
||||
}
|
||||
|
||||
if(isdefined(level.blackscreen))
|
||||
{
|
||||
level.blackscreen destroy();
|
||||
}
|
||||
|
||||
if(isdefined(level.firetoskip))
|
||||
{
|
||||
level.firetoskip destroy();
|
||||
}
|
||||
|
||||
if(!isdefined(param_00) || !param_00)
|
||||
{
|
||||
level.briefing_fadeintime = 0.5;
|
||||
level.briefing_fadeouttime = 0.5;
|
||||
}
|
||||
else
|
||||
{
|
||||
level.briefing_fadeintime = param_00;
|
||||
level.briefing_fadeouttime = param_00;
|
||||
}
|
||||
|
||||
self endon("briefingskip");
|
||||
thread skipcheck();
|
||||
level.blackscreen = newhudelem();
|
||||
level.blackscreen.sort = -1;
|
||||
level.blackscreen.alignx = "left";
|
||||
level.blackscreen.aligny = "top";
|
||||
level.blackscreen.x = 0;
|
||||
level.blackscreen.y = 0;
|
||||
level.blackscreen.horzalign = "fullscreen";
|
||||
level.blackscreen.vertalign = "fullscreen";
|
||||
level.blackscreen.foreground = 1;
|
||||
level.blackscreen.alpha = 1;
|
||||
level.blackscreen setshader("black",640,480);
|
||||
level.firetoskip = newhudelem();
|
||||
level.firetoskip.sort = 1;
|
||||
level.firetoskip.alignx = "center";
|
||||
level.firetoskip.aligny = "top";
|
||||
level.firetoskip.fontscale = 2;
|
||||
level.firetoskip.x = 0;
|
||||
level.firetoskip.y = 60;
|
||||
level.firetoskip.horzalign = "center";
|
||||
level.firetoskip.vertalign = "fullscreen";
|
||||
level.firetoskip.foreground = 1;
|
||||
level.firetoskip settext(&"SCRIPT_PLATFORM_FIRE_TO_SKIP");
|
||||
level.firetoskip.alpha = 0;
|
||||
thread fadeinfiretoskip();
|
||||
level.imagea = newhudelem();
|
||||
level.imagea.alignx = "center";
|
||||
level.imagea.aligny = "middle";
|
||||
level.imagea.x = 320;
|
||||
level.imagea.y = 240;
|
||||
level.imagea.alpha = 0;
|
||||
level.imagea.horzalign = "fullscreen";
|
||||
level.imagea.vertalign = "fullscreen";
|
||||
level.imagea setshader("black",640,360);
|
||||
level.imagea.foreground = 1;
|
||||
level.imageb = newhudelem();
|
||||
level.imageb.alignx = "center";
|
||||
level.imageb.aligny = "middle";
|
||||
level.imageb.x = 320;
|
||||
level.imageb.y = 240;
|
||||
level.imageb.horzalign = "fullscreen";
|
||||
level.imageb.vertalign = "fullscreen";
|
||||
level.imageb.alpha = 0;
|
||||
level.imageb setshader("black",640,360);
|
||||
level.imageb.foreground = 1;
|
||||
self freezecontrols(1);
|
||||
wait 0.5;
|
||||
for(var_01 = 0;var_01 < level.slide.size;var_01++)
|
||||
{
|
||||
var_02 = 0;
|
||||
if(isdefined(level.slide[var_01]["image"]))
|
||||
{
|
||||
if(level.script[0] != "m")
|
||||
{
|
||||
soundplay("slide_advance");
|
||||
}
|
||||
|
||||
wait 0.5;
|
||||
thread image(level.slide[var_01]["image"]);
|
||||
}
|
||||
|
||||
if(isdefined(level.slide[var_01]["dialog_wait"]) && self.dialogplaying[level.slide[var_01]["dialog_wait"]])
|
||||
{
|
||||
self waittill(level.slide[var_01]["dialog_wait"] + "sounddone");
|
||||
}
|
||||
|
||||
if(isdefined(level.slide[var_01]["dialog"]))
|
||||
{
|
||||
soundplay(level.slide[var_01]["dialog"],level.slide[var_01]["dialog"] + "sounddone");
|
||||
var_02 = 1;
|
||||
}
|
||||
|
||||
if(isdefined(level.slide[var_01]["delay"]))
|
||||
{
|
||||
wait level.slide[var_01]["delay"];
|
||||
continue;
|
||||
}
|
||||
|
||||
if(var_02)
|
||||
{
|
||||
self waittill(level.slide[var_01]["dialog"] + "sounddone");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
fadeinfiretoskip()
|
||||
{
|
||||
wait 1;
|
||||
thread fadefiretoskip();
|
||||
level.firetoskip fadeovertime(level.briefing_fadeouttime);
|
||||
level.firetoskip.alpha = 1;
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
fadefiretoskip()
|
||||
{
|
||||
wait 7;
|
||||
level.firetoskip fadeovertime(level.briefing_fadeouttime);
|
||||
level.firetoskip.alpha = 0;
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
waittillbriefingdone()
|
||||
{
|
||||
self waittill("briefingend");
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
skipcheck()
|
||||
{
|
||||
self endon("briefingend");
|
||||
var_00 = getentarray("player","classname")[0];
|
||||
wait 0.05;
|
||||
maps\_utility::set_console_status();
|
||||
for(;;)
|
||||
{
|
||||
if(level.console)
|
||||
{
|
||||
if(var_00 buttonpressed("BUTTON_A"))
|
||||
{
|
||||
self notify("briefingskip");
|
||||
end();
|
||||
return;
|
||||
}
|
||||
|
||||
wait 0.05;
|
||||
continue;
|
||||
}
|
||||
|
||||
if(var_00 attackbuttonpressed())
|
||||
{
|
||||
self notify("briefingskip");
|
||||
end();
|
||||
return;
|
||||
}
|
||||
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
image(param_00)
|
||||
{
|
||||
self endon("briefingskip");
|
||||
if(level.placenextimage == "A")
|
||||
{
|
||||
level.placenextimage = "B";
|
||||
level.imagea setshader(param_00,640,360);
|
||||
thread imagefadeout("B");
|
||||
level.imagea fadeovertime(level.briefing_fadeintime);
|
||||
level.imagea.alpha = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
if(level.placenextimage == "B")
|
||||
{
|
||||
level.placenextimage = "A";
|
||||
level.imageb setshader(param_00,640,360);
|
||||
thread imagefadeout("A");
|
||||
level.imageb fadeovertime(level.briefing_fadeintime);
|
||||
level.imageb.alpha = 1;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
imagefadeout(param_00)
|
||||
{
|
||||
if(param_00 == "A")
|
||||
{
|
||||
level.imagea fadeovertime(level.briefing_fadeouttime);
|
||||
level.imagea.alpha = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
if(param_00 == "B")
|
||||
{
|
||||
level.imageb fadeovertime(level.briefing_fadeouttime);
|
||||
level.imageb.alpha = 0;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
endthread()
|
||||
{
|
||||
if(!level.briefing_running)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(level.briefing_ending)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self notify("briefingend");
|
||||
level.briefing_ending = 1;
|
||||
if(level.script[0] != "m")
|
||||
{
|
||||
self playsound("stop_voice");
|
||||
}
|
||||
|
||||
thread imagefadeout("A");
|
||||
thread imagefadeout("B");
|
||||
wait 1.5;
|
||||
level.briefing_ending = 0;
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
end()
|
||||
{
|
||||
thread endthread();
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
soundplay(param_00,param_01)
|
||||
{
|
||||
if(isdefined(level.tmpmsg[param_00]))
|
||||
{
|
||||
iprintlnbold(level.tmpmsg[param_00]);
|
||||
}
|
||||
|
||||
if(isdefined(param_01))
|
||||
{
|
||||
thread soundplay_flag(param_00,param_01);
|
||||
self playsound(param_00,param_01);
|
||||
return;
|
||||
}
|
||||
|
||||
self playsound(param_00);
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
soundplay_flag(param_00,param_01)
|
||||
{
|
||||
self.dialogplaying[param_00] = 1;
|
||||
self waittill(param_01);
|
||||
self.dialogplaying[param_00] = 0;
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
dothebriefing()
|
||||
{
|
||||
start(0.5);
|
||||
if(level.script[0] != "m")
|
||||
{
|
||||
soundplay("slide_advance");
|
||||
}
|
||||
|
||||
wait 0.5;
|
||||
end();
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
skipthebriefing()
|
||||
{
|
||||
self waittill("briefingskip");
|
||||
gotothelevel(1);
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
gotothelevel(param_00)
|
||||
{
|
||||
if(!param_00)
|
||||
{
|
||||
for(var_01 = 0;var_01 < level.slide.size;var_01++)
|
||||
{
|
||||
if(isdefined(level.slide[var_01]["movie"]))
|
||||
{
|
||||
cinematic(level.slide[var_01]["movie"]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
changelevel(level.leveltoload,0);
|
||||
}
|
32
MW3/PC/SP/maps/_cagedchickens.gsc
Normal file
32
MW3/PC/SP/maps/_cagedchickens.gsc
Normal file
@ -0,0 +1,32 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_cagedchickens.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 2
|
||||
* Decompile Time: 21 ms
|
||||
* Timestamp: 10/27/2023 2:20:03 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
initchickens()
|
||||
{
|
||||
waittillframeend;
|
||||
var_00 = getentarray("caged_chicken","targetname");
|
||||
common_scripts\utility::array_thread(var_00,::spawnchicken);
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
spawnchicken()
|
||||
{
|
||||
var_00 = maps\_utility::spawn_anim_model("chicken");
|
||||
thread maps\_anim::anim_single_solo(var_00,"cage_freakout");
|
||||
var_01 = var_00 maps\_utility::getanim("cage_freakout");
|
||||
var_02 = randomfloatrange(0,1);
|
||||
var_00 setanimtime(var_01,var_02);
|
||||
for(;;)
|
||||
{
|
||||
var_00 playsound("animal_chicken_idle","sounddone");
|
||||
var_00 waittill("sounddone");
|
||||
}
|
||||
}
|
172
MW3/PC/SP/maps/_carry_ai.gsc
Normal file
172
MW3/PC/SP/maps/_carry_ai.gsc
Normal file
@ -0,0 +1,172 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_carry_ai.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 9
|
||||
* Decompile Time: 113 ms
|
||||
* Timestamp: 10/27/2023 2:20:04 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
initcarry()
|
||||
{
|
||||
anims();
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
anims()
|
||||
{
|
||||
level.scr_anim["generic"]["wounded_idle"][0] = %wounded_carry_closet_idle_wounded;
|
||||
level.scr_anim["generic"]["pickup_wounded"] = %wounded_carry_pickup_closet_wounded_straight;
|
||||
level.scr_anim["generic"]["pickup_carrier"] = %wounded_carry_pickup_closet_carrier_straight;
|
||||
level.scr_anim["generic"]["wounded_walk_loop"][0] = %wounded_carry_fastwalk_wounded_relative;
|
||||
level.scr_anim["generic"]["carrier_walk_loop"] = %wounded_carry_fastwalk_carrier;
|
||||
level.scr_anim["generic"]["putdown_wounded"] = %wounded_carry_putdown_closet_wounded;
|
||||
level.scr_anim["generic"]["putdown_carrier"] = %wounded_carry_putdown_closet_carrier;
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
setwounded(param_00)
|
||||
{
|
||||
animscripts/shared::func_23C8();
|
||||
self.woundednode = param_00;
|
||||
self.woundednode thread maps\_anim::anim_generic_loop(self,"wounded_idle","stop_wounded_idle");
|
||||
self.allowdeath = 1;
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
end_carry_ai_logic(param_00,param_01)
|
||||
{
|
||||
level notify("end_carry_ai_logic");
|
||||
setsaveddvar("ai_friendlyFireBlockDuration",2000);
|
||||
param_00.allowpain = 1;
|
||||
param_00.disablebulletwhizbyreaction = 0;
|
||||
param_00.ignoreall = 0;
|
||||
param_00.grenadeawareness = 1;
|
||||
param_00 maps\_utility::setflashbangimmunity(0);
|
||||
param_00.dontmelee = undefined;
|
||||
param_00.neverenablecqb = undefined;
|
||||
param_00.disablearrivals = undefined;
|
||||
param_00.disableexits = undefined;
|
||||
param_00.nododgemove = 0;
|
||||
param_00 pushplayer(0);
|
||||
param_01 notify("stop_carried_loop");
|
||||
param_01 unlink();
|
||||
param_00 maps\_utility::clear_generic_run_anim();
|
||||
param_01.woundednode notify("stop_wounded_idle");
|
||||
param_01.woundednode = undefined;
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
move_president_to_node(param_00,param_01)
|
||||
{
|
||||
level endon("end_carry_ai_logic");
|
||||
goto_and_pickup_wounded(param_00,param_01);
|
||||
carry_to_and_putdown_wounded(param_00,param_01);
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
move_president_to_node_nopickup(param_00,param_01)
|
||||
{
|
||||
param_00 forceteleport(self.origin,self.angles);
|
||||
carry_to_and_putdown_wounded(param_00,param_01);
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
goto_and_pickup_wounded(param_00,param_01)
|
||||
{
|
||||
level endon("end_carry_ai_logic");
|
||||
self endon("end_carry_ai");
|
||||
param_00.woundednode maps\_anim::anim_generic_reach(self,"pickup_carrier");
|
||||
param_00 notify("stop_wounded_idle");
|
||||
param_00.woundednode notify("stop_wounded_idle");
|
||||
param_00.allowdeath = 1;
|
||||
param_00.woundednode thread maps\_anim::anim_generic(param_00,"pickup_wounded");
|
||||
param_00.woundednode maps\_anim::anim_generic(self,"pickup_carrier");
|
||||
self.dontmelee = 1;
|
||||
param_00 invisiblenotsolid();
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
link_wounded(param_00)
|
||||
{
|
||||
self endon("death");
|
||||
param_00 endon("death");
|
||||
param_00 linkto(self,"tag_origin");
|
||||
wait 0.05;
|
||||
param_00 thread maps\_anim::anim_generic_loop(param_00,"wounded_walk_loop","stop_carried_loop");
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
carry_to_and_putdown_wounded(param_00,param_01)
|
||||
{
|
||||
level endon("end_carry_ai_logic");
|
||||
self endon("end_carry_ai");
|
||||
param_00.being_carried = 1;
|
||||
thread maps\_utility::set_generic_run_anim("carrier_walk_loop",1);
|
||||
param_00 notify("stop_wounded_idle");
|
||||
param_00.woundednode notify("stop_wounded_idle");
|
||||
wait 0.05;
|
||||
setsaveddvar("ai_friendlyFireBlockDuration",0);
|
||||
self animmode("none");
|
||||
self.allowpain = 0;
|
||||
self.disablebulletwhizbyreaction = 1;
|
||||
self.ignoreall = 1;
|
||||
self.ignoreme = 1;
|
||||
self.grenadeawareness = 0;
|
||||
maps\_utility::setflashbangimmunity(1);
|
||||
self.neverenablecqb = 1;
|
||||
self.disablearrivals = 1;
|
||||
self.disableexits = 1;
|
||||
self.nododgemove = 1;
|
||||
maps\_utility::disable_cqbwalk();
|
||||
self.oldgoal = self.goalradius;
|
||||
thread link_wounded(param_00);
|
||||
while(isdefined(param_01.target))
|
||||
{
|
||||
self.ignoresuppression = 1;
|
||||
self.disablearrivals = 1;
|
||||
var_02 = getent(param_01.target,"targetname");
|
||||
var_02 = common_scripts\utility::ter_op(isdefined(var_02),var_02,getnode(param_01.target,"targetname"));
|
||||
if(!isdefined(var_02.target))
|
||||
{
|
||||
param_01 = var_02;
|
||||
break;
|
||||
}
|
||||
|
||||
self.goalradius = 64;
|
||||
self setgoalpos(var_02.origin);
|
||||
self waittill("goal");
|
||||
param_01 = var_02;
|
||||
}
|
||||
|
||||
param_01 maps\_anim::anim_generic_reach(self,"putdown_carrier");
|
||||
param_00.woundednode = param_01;
|
||||
param_00 notify("stop_carried_loop");
|
||||
param_01 notify("stop_wounded_idle");
|
||||
param_00 unlink();
|
||||
self.ignoresuppression = 0;
|
||||
self.disablearrivals = 0;
|
||||
self.goalradius = self.oldgoal;
|
||||
thread maps\_utility::clear_run_anim();
|
||||
param_00.woundednode thread maps\_anim::anim_generic(self,"putdown_carrier");
|
||||
param_00.woundednode maps\_anim::anim_generic(param_00,"putdown_wounded");
|
||||
setsaveddvar("ai_friendlyFireBlockDuration",2000);
|
||||
self.allowpain = 1;
|
||||
self.disablebulletwhizbyreaction = 0;
|
||||
self.ignoreall = 0;
|
||||
self.grenadeawareness = 1;
|
||||
maps\_utility::setflashbangimmunity(0);
|
||||
self.dontmelee = undefined;
|
||||
self.neverenablecqb = undefined;
|
||||
self.disablearrivals = undefined;
|
||||
self.disableexits = undefined;
|
||||
self.nododgemove = 0;
|
||||
self pushplayer(0);
|
||||
param_00 visiblesolid();
|
||||
param_00.woundednode thread maps\_anim::anim_generic_loop(param_00,"wounded_idle","stop_wounded_idle");
|
||||
param_00.allowdeath = 1;
|
||||
param_00 notify("stop_putdown");
|
||||
param_00.being_carried = undefined;
|
||||
}
|
584
MW3/PC/SP/maps/_chopperboss.gsc
Normal file
584
MW3/PC/SP/maps/_chopperboss.gsc
Normal file
@ -0,0 +1,584 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_chopperboss.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 19
|
||||
* Decompile Time: 328 ms
|
||||
* Timestamp: 10/27/2023 2:21:06 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
chopper_boss_load_fx()
|
||||
{
|
||||
level._effect["chopper_boss_light_smoke"] = loadfx("smoke/smoke_trail_white_heli");
|
||||
level._effect["chopper_boss_heavy_smoke"] = loadfx("smoke/smoke_trail_black_heli");
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
chopper_boss_locs_populate(param_00,param_01)
|
||||
{
|
||||
level.chopper_boss_locs = common_scripts\utility::getstructarray(param_01,param_00);
|
||||
foreach(var_03 in level.chopper_boss_locs)
|
||||
{
|
||||
var_03.neighbors = var_03 maps\_utility::get_linked_structs();
|
||||
foreach(var_05 in level.chopper_boss_locs)
|
||||
{
|
||||
if(var_03 == var_05)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(!maps\_utility::array_contains(var_03.neighbors,var_05) && maps\_utility::array_contains(var_05 maps\_utility::get_linked_structs(),var_03))
|
||||
{
|
||||
var_03.neighbors[var_03.neighbors.size] = var_05;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
chopper_path_release(param_00,param_01)
|
||||
{
|
||||
if(isdefined(param_01))
|
||||
{
|
||||
var_02 = strtok(param_01," ");
|
||||
foreach(var_04 in var_02)
|
||||
{
|
||||
self endon(var_04);
|
||||
}
|
||||
}
|
||||
|
||||
var_06 = strtok(param_00," ");
|
||||
switch(var_06.size)
|
||||
{
|
||||
case 1:
|
||||
self waittill(var_06[0]);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
common_scripts\utility::waittill_either(var_06[0],var_06[1]);
|
||||
break;
|
||||
|
||||
case 3:
|
||||
common_scripts\utility::waittill_any(var_06[0],var_06[1],var_06[2]);
|
||||
break;
|
||||
|
||||
case 4:
|
||||
common_scripts\utility::waittill_any(var_06[0],var_06[1],var_06[2],var_06[3]);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
self.loc_current.in_use = undefined;
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
chopper_boss_behavior_little_bird(param_00)
|
||||
{
|
||||
self endon("death");
|
||||
self endon("deathspin");
|
||||
level endon("special_op_terminated");
|
||||
self.loc_current = param_00;
|
||||
self.loc_current.in_use = 1;
|
||||
chopper_boss_setup();
|
||||
thread chopper_boss_damage_states();
|
||||
thread chopper_event_on_death();
|
||||
var_01 = 0;
|
||||
for(;;)
|
||||
{
|
||||
self.heli_target = undefined;
|
||||
var_02 = (isdefined(self.request_move) && self.request_move) || var_01;
|
||||
while(isdefined(level.chopper_boss_finding_target) && level.chopper_boss_finding_target == 1)
|
||||
{
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
var_03 = chopper_boss_get_best_location_and_target(var_02);
|
||||
if(isdefined(var_03) && self.loc_current != var_03)
|
||||
{
|
||||
if(isdefined(self.heli_target))
|
||||
{
|
||||
self setlookatent(self.heli_target);
|
||||
}
|
||||
else
|
||||
{
|
||||
var_04 = maps\_utility::getclosest(self.origin,level.players);
|
||||
if(isdefined(var_04))
|
||||
{
|
||||
self setlookatent(var_04);
|
||||
}
|
||||
}
|
||||
|
||||
self.request_move = undefined;
|
||||
thread chopper_boss_move(var_03);
|
||||
self waittill("reached_dynamic_path_end");
|
||||
}
|
||||
|
||||
if(isdefined(self.heli_target))
|
||||
{
|
||||
var_01 = chopper_boss_attempt_firing(self.heli_target);
|
||||
}
|
||||
|
||||
wait 0.1;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
chopper_boss_setup()
|
||||
{
|
||||
maps\_vehicle::mgoff();
|
||||
chopper_boss_sentient();
|
||||
maps\_utility::add_damagefeedback();
|
||||
self.mgturret[1] unlink();
|
||||
self.mgturret[1] delete();
|
||||
var_00 = self.mgturret[0];
|
||||
var_00 unlink();
|
||||
var_00 linkto(self,"tag_turret",(0,0,0),(0,0,0));
|
||||
var_00 setleftarc(45);
|
||||
var_00 setrightarc(45);
|
||||
var_00 settoparc(45);
|
||||
var_00 setbottomarc(55);
|
||||
var_00 setdefaultdroppitch(-10);
|
||||
self.mgturret = [];
|
||||
self.mgturret[self.mgturret.size] = var_00;
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
chopper_event_on_death()
|
||||
{
|
||||
self waittill("death",var_00);
|
||||
if(!isdefined(self))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(maps\_utility::is_survival())
|
||||
{
|
||||
playfx(level._effect["money"],self.origin + (0,0,-32));
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
chopper_boss_damage_states()
|
||||
{
|
||||
self endon("death");
|
||||
self endon("deathspin");
|
||||
var_00 = self.health - self.healthbuffer;
|
||||
var_01 = 0;
|
||||
for(;;)
|
||||
{
|
||||
var_02 = self.health - self.healthbuffer;
|
||||
if(var_02 <= var_00 * 0.5)
|
||||
{
|
||||
if(var_01 == 1)
|
||||
{
|
||||
var_01 = 2;
|
||||
self.request_move = 1;
|
||||
}
|
||||
|
||||
playfxontag(common_scripts\utility::getfx("chopper_boss_heavy_smoke"),self,"tag_engine");
|
||||
}
|
||||
else if(var_02 <= var_00 * 0.75)
|
||||
{
|
||||
if(var_01 == 0)
|
||||
{
|
||||
var_01 = 1;
|
||||
self.request_move = 1;
|
||||
}
|
||||
|
||||
playfxontag(common_scripts\utility::getfx("chopper_boss_light_smoke"),self,"tag_engine");
|
||||
}
|
||||
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
chopper_boss_can_hit_from(param_00,param_01)
|
||||
{
|
||||
var_02 = self.mgturret[0].origin[2] - self.origin[2];
|
||||
return bullettracepassed(param_00 + (0,0,var_02),param_01,0,self);
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
chopper_boss_in_range(param_00)
|
||||
{
|
||||
var_01 = distance2d(self.origin,param_00);
|
||||
var_02 = 384;
|
||||
if(isdefined(level.chopper_boss_min_dist2d))
|
||||
{
|
||||
var_02 = level.chopper_boss_min_dist2d;
|
||||
}
|
||||
|
||||
return var_01 >= var_02 && var_01 <= 3072;
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
chopper_boss_set_target(param_00)
|
||||
{
|
||||
if(isdefined(param_00))
|
||||
{
|
||||
self.heli_target = param_00;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
chopper_boss_attempt_firing(param_00)
|
||||
{
|
||||
self endon("deathspin");
|
||||
self endon("death");
|
||||
var_01 = 0;
|
||||
if(isdefined(param_00) && !isdefined(param_00.heli_shooting) && chopper_boss_in_range(param_00.origin))
|
||||
{
|
||||
thread chopper_boss_manage_shooting_flag(self.heli_target);
|
||||
self setlookatent(param_00);
|
||||
var_02 = chopper_boss_wait_face_target(param_00,5);
|
||||
if(isdefined(param_00))
|
||||
{
|
||||
if(isdefined(var_02) && var_02)
|
||||
{
|
||||
chopper_boss_fire_turrets(param_00);
|
||||
var_01 = 1;
|
||||
}
|
||||
}
|
||||
|
||||
self notify("chopper_done_shooting");
|
||||
}
|
||||
|
||||
return var_01;
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
chopper_boss_manage_shooting_flag(param_00)
|
||||
{
|
||||
param_00.heli_shooting = 1;
|
||||
common_scripts\utility::waittill_any("death","deathspin","chopper_done_shooting");
|
||||
if(isdefined(param_00))
|
||||
{
|
||||
param_00.heli_shooting = undefined;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
chopper_boss_wait_face_target(param_00,param_01)
|
||||
{
|
||||
self endon("death");
|
||||
self endon("deathspin");
|
||||
param_00 endon("death");
|
||||
var_02 = undefined;
|
||||
if(isdefined(param_01))
|
||||
{
|
||||
var_02 = gettime() + param_01 * 1000;
|
||||
}
|
||||
|
||||
while(isdefined(param_00))
|
||||
{
|
||||
if(maps\_utility::within_fov_2d(self.origin,self.angles,param_00.origin,0))
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
if(isdefined(var_02) && gettime() >= var_02)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
wait 0.25;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
chopper_boss_fire_turrets(param_00)
|
||||
{
|
||||
self endon("deathspin");
|
||||
self endon("death");
|
||||
param_00 endon("death");
|
||||
var_01 = 20;
|
||||
foreach(var_03 in self.mgturret)
|
||||
{
|
||||
if(isai(param_00))
|
||||
{
|
||||
var_03 settargetentity(param_00,param_00 geteye() - param_00.origin);
|
||||
}
|
||||
else if(isplayer(param_00))
|
||||
{
|
||||
if(maps\_utility::is_player_down(param_00))
|
||||
{
|
||||
var_01 = 60;
|
||||
var_03 settargetentity(param_00);
|
||||
}
|
||||
else
|
||||
{
|
||||
var_03 settargetentity(param_00,param_00 geteye() - param_00.origin);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var_03 settargetentity(param_00,(0,0,32));
|
||||
}
|
||||
|
||||
var_03 startbarrelspin();
|
||||
}
|
||||
|
||||
wait 2;
|
||||
var_05 = weaponfiretime("minigun_littlebird_spinnup");
|
||||
var_06 = 0;
|
||||
for(var_07 = 0;var_07 < var_01;var_07++)
|
||||
{
|
||||
self.mgturret[var_06] shootturret();
|
||||
var_06++;
|
||||
if(var_06 >= self.mgturret.size)
|
||||
{
|
||||
var_06 = 0;
|
||||
}
|
||||
|
||||
wait var_05 + 0.05;
|
||||
}
|
||||
|
||||
wait 1;
|
||||
foreach(var_03 in self.mgturret)
|
||||
{
|
||||
var_03 stopbarrelspin();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
chopper_boss_manage_targeting_flag()
|
||||
{
|
||||
level.chopper_boss_finding_target = 1;
|
||||
common_scripts\utility::waittill_any("death","deathspin","chopper_done_targeting");
|
||||
level.chopper_boss_finding_target = undefined;
|
||||
}
|
||||
|
||||
//Function Number: 16
|
||||
chopper_boss_get_best_location_and_target(param_00)
|
||||
{
|
||||
self endon("death");
|
||||
var_01 = self.loc_current.neighbors;
|
||||
if(!isdefined(param_00) || param_00 == 0)
|
||||
{
|
||||
}
|
||||
|
||||
thread chopper_boss_manage_targeting_flag();
|
||||
var_02 = [];
|
||||
foreach(var_04 in level.players)
|
||||
{
|
||||
if(!maps\_utility::is_player_down(var_04) && !isdefined(var_04.ignoreme) || var_04.ignoreme == 0)
|
||||
{
|
||||
var_02[var_02.size] = var_04;
|
||||
}
|
||||
}
|
||||
|
||||
var_06 = getaiarray("allies");
|
||||
foreach(var_08 in var_06)
|
||||
{
|
||||
if(!isdefined(var_08.ignoreme) || var_08.ignoreme == 0)
|
||||
{
|
||||
var_02[var_02.size] = var_08;
|
||||
}
|
||||
}
|
||||
|
||||
if(isdefined(level.placed_sentry))
|
||||
{
|
||||
foreach(var_0B in level.placed_sentry)
|
||||
{
|
||||
if(!isdefined(var_0B.ignoreme) || var_0B.ignoreme == 0)
|
||||
{
|
||||
var_02[var_02.size] = var_0B;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(!var_02.size)
|
||||
{
|
||||
foreach(var_04 in level.players)
|
||||
{
|
||||
if(!maps\_utility::is_player_down_and_out(var_04) && !isdefined(var_04.ignoreme) || var_04.ignoreme == 0)
|
||||
{
|
||||
var_02[var_02.size] = var_04;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var_0F = [];
|
||||
var_10 = 0;
|
||||
foreach(var_12 in var_7B)
|
||||
{
|
||||
if(var_12 != self.loc_current && isdefined(var_12.in_use))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_12.heli_target = undefined;
|
||||
var_12.dist2d = undefined;
|
||||
var_13 = undefined;
|
||||
foreach(var_15 in var_02)
|
||||
{
|
||||
if(!isdefined(var_15))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(var_12 chopper_boss_in_range(var_15.origin) == 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_16 = var_15.origin + (0,0,64);
|
||||
if(isai(var_15) || isplayer(var_15))
|
||||
{
|
||||
var_16 = var_15 geteye();
|
||||
}
|
||||
|
||||
if(chopper_boss_can_hit_from(var_12.origin,var_16))
|
||||
{
|
||||
if(!isdefined(var_12.heli_target))
|
||||
{
|
||||
var_0F[var_0F.size] = var_12;
|
||||
var_12.heli_target = var_15;
|
||||
var_13 = distance2d(var_12.origin,var_15.origin);
|
||||
}
|
||||
else
|
||||
{
|
||||
var_17 = distance2d(var_12.origin,var_15.origin);
|
||||
if(var_17 < var_13)
|
||||
{
|
||||
var_12.heli_target = var_15;
|
||||
var_13 = var_17;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var_10++ = var_7B[var_01.size];
|
||||
if(var_10 >= 4)
|
||||
{
|
||||
wait 0.05;
|
||||
var_10 = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(var_0F.size)
|
||||
{
|
||||
var_1A = [];
|
||||
foreach(var_12 in var_0F)
|
||||
{
|
||||
if(isdefined(var_12.heli_target))
|
||||
{
|
||||
var_1A[var_1A.size] = var_12;
|
||||
}
|
||||
}
|
||||
|
||||
var_0F = var_1A;
|
||||
}
|
||||
|
||||
if(!var_0F.size)
|
||||
{
|
||||
foreach(var_12 in var_7B)
|
||||
{
|
||||
if(var_12 != self.loc_current && isdefined(var_12.in_use))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_1E = undefined;
|
||||
foreach(var_15 in var_02)
|
||||
{
|
||||
if(!isdefined(var_15))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(!isdefined(var_1E))
|
||||
{
|
||||
var_1E = var_15;
|
||||
var_12.dist2d = distance2d(var_12.origin,var_15.origin);
|
||||
continue;
|
||||
}
|
||||
|
||||
var_20 = distance2d(var_12.origin,var_15.origin);
|
||||
if(var_20 < var_12.dist2d)
|
||||
{
|
||||
var_1E = var_15;
|
||||
var_12.dist2d = var_20;
|
||||
}
|
||||
}
|
||||
|
||||
if(isdefined(var_12.dist2d))
|
||||
{
|
||||
var_0F[var_0F.size] = var_12;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach(var_12 in var_0F)
|
||||
{
|
||||
var_12.dist2d = distance2d(var_12.heli_target.origin,var_12.origin);
|
||||
}
|
||||
}
|
||||
|
||||
var_25 = maps\_utility_joec::exchange_sort_by_handler(var_0F,::chopper_boss_loc_compare);
|
||||
var_26 = undefined;
|
||||
var_27 = 0;
|
||||
foreach(var_12 in var_25)
|
||||
{
|
||||
var_29 = 384;
|
||||
if(isdefined(level.chopper_boss_min_dist2d))
|
||||
{
|
||||
var_29 = level.chopper_boss_min_dist2d;
|
||||
}
|
||||
|
||||
if(var_12.dist2d >= var_29 && var_12.dist2d <= 3072)
|
||||
{
|
||||
var_26 = var_12;
|
||||
var_27 = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(!isdefined(var_26) && var_25.size)
|
||||
{
|
||||
var_26 = var_25[0];
|
||||
}
|
||||
|
||||
if(isdefined(var_26) && isdefined(var_26.heli_target))
|
||||
{
|
||||
chopper_boss_set_target(var_26.heli_target);
|
||||
}
|
||||
|
||||
self notify("chopper_done_targeting",self.loc_current);
|
||||
if(isdefined(var_26) && var_26 != self.loc_current)
|
||||
{
|
||||
return var_26;
|
||||
}
|
||||
|
||||
return undefined;
|
||||
}
|
||||
|
||||
//Function Number: 17
|
||||
chopper_boss_loc_compare()
|
||||
{
|
||||
return self.dist2d;
|
||||
}
|
||||
|
||||
//Function Number: 18
|
||||
chopper_boss_move(param_00)
|
||||
{
|
||||
self.loc_current.in_use = undefined;
|
||||
self.loc_current = param_00;
|
||||
self.loc_current.in_use = 1;
|
||||
thread maps\_vehicle::vehicle_paths(param_00);
|
||||
}
|
||||
|
||||
//Function Number: 19
|
||||
chopper_boss_sentient()
|
||||
{
|
||||
self makeentitysentient("axis",1);
|
||||
self.attackeraccuracy = 6;
|
||||
self.maxvisibledist = 3072;
|
||||
self.threatbias = 10000;
|
||||
}
|
1582
MW3/PC/SP/maps/_colors.gsc
Normal file
1582
MW3/PC/SP/maps/_colors.gsc
Normal file
File diff suppressed because it is too large
Load Diff
97
MW3/PC/SP/maps/_compass.gsc
Normal file
97
MW3/PC/SP/maps/_compass.gsc
Normal file
@ -0,0 +1,97 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_compass.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 2
|
||||
* Decompile Time: 28 ms
|
||||
* Timestamp: 10/27/2023 2:23:06 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
setupminimap(param_00,param_01)
|
||||
{
|
||||
level.minimap_image = param_00;
|
||||
if(!isdefined(level._loadstarted) && !isdefined(param_01))
|
||||
{
|
||||
}
|
||||
|
||||
if(!isdefined(param_01))
|
||||
{
|
||||
param_01 = "minimap_corner";
|
||||
}
|
||||
|
||||
var_02 = getdvarfloat("scr_requiredMapAspectRatio",1);
|
||||
var_03 = getentarray(param_01,"targetname");
|
||||
if(var_03.size != 2)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var_04 = (var_03[0].origin[0],var_03[0].origin[1],0);
|
||||
var_05 = (var_03[1].origin[0],var_03[1].origin[1],0);
|
||||
var_06 = var_05 - var_04;
|
||||
var_07 = (cos(getnorthyaw()),sin(getnorthyaw()),0);
|
||||
var_08 = (0 - var_07[1],var_07[0],0);
|
||||
if(vectordot(var_06,var_08) > 0)
|
||||
{
|
||||
if(vectordot(var_06,var_07) > 0)
|
||||
{
|
||||
var_09 = var_05;
|
||||
var_0A = var_04;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_0B = vecscale(var_09,vectordot(var_08,var_09));
|
||||
var_09 = var_05 - var_0B;
|
||||
var_0A = var_04 + var_0B;
|
||||
}
|
||||
}
|
||||
else if(vectordot(var_08,var_09) > 0)
|
||||
{
|
||||
var_0B = vecscale(var_09,vectordot(var_08,var_09));
|
||||
var_09 = var_04 + var_0B;
|
||||
var_0A = var_05 - var_0B;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_09 = var_06;
|
||||
var_0A = var_06;
|
||||
}
|
||||
|
||||
if(var_02 > 0)
|
||||
{
|
||||
var_0C = vectordot(var_09 - var_0A,var_07);
|
||||
var_0D = vectordot(var_09 - var_0A,var_08);
|
||||
var_0E = var_0D / var_0C;
|
||||
if(var_0E < var_02)
|
||||
{
|
||||
var_0F = var_02 / var_0E;
|
||||
var_10 = vecscale(var_08,var_0D * var_0F - 1 * 0.5);
|
||||
}
|
||||
else
|
||||
{
|
||||
var_0F = var_10 / var_04;
|
||||
var_10 = vecscale(var_08,var_0D * var_10 - 1 * 0.5);
|
||||
}
|
||||
|
||||
var_09 = var_09 + var_10;
|
||||
var_0A = var_0A - var_10;
|
||||
}
|
||||
|
||||
level.map_extents = [];
|
||||
level.map_extents["top"] = var_09[1];
|
||||
level.map_extents["left"] = var_0A[0];
|
||||
level.map_extents["bottom"] = var_0A[1];
|
||||
level.map_extents["right"] = var_09[0];
|
||||
level.map_width = level.map_extents["right"] - level.map_extents["left"];
|
||||
level.map_height = level.map_extents["top"] - level.map_extents["bottom"];
|
||||
level.mapsize = vectordot(var_09 - var_0A,var_07);
|
||||
setminimap(param_00,var_09[0],var_09[1],var_0A[0],var_0A[1]);
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
vecscale(param_00,param_01)
|
||||
{
|
||||
return (param_00[0] * param_01,param_00[1] * param_01,param_00[2] * param_01);
|
||||
}
|
342
MW3/PC/SP/maps/_coop.gsc
Normal file
342
MW3/PC/SP/maps/_coop.gsc
Normal file
@ -0,0 +1,342 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_coop.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 20
|
||||
* Decompile Time: 309 ms
|
||||
* Timestamp: 10/27/2023 2:22:03 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
common_scripts\utility::flag_init("coop_game");
|
||||
if(!maps\_utility::is_coop())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
common_scripts\utility::flag_set("coop_game");
|
||||
common_scripts\utility::flag_init("coop_show_constant_icon");
|
||||
setdvarifuninitialized("coop_show_constant_icon",1);
|
||||
if(getdvarint("coop_show_constant_icon") == 1)
|
||||
{
|
||||
common_scripts\utility::flag_set("coop_show_constant_icon");
|
||||
}
|
||||
|
||||
precacheshader("hint_health");
|
||||
precacheshader("coop_player_location");
|
||||
precacheshader("coop_player_location_fire");
|
||||
level.coop_icon_blinktime = 7;
|
||||
level.coop_icon_blinkcrement = 0.375;
|
||||
level.coop_revive_nag_hud_refreshtime = 20;
|
||||
foreach(var_01 in level.players)
|
||||
{
|
||||
var_01.colorblind = var_01 getlocalplayerprofiledata("colorBlind");
|
||||
var_01 thread initialize_colors(var_01.colorblind);
|
||||
var_01 thread friendly_hud_init();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
initialize_colors(param_00)
|
||||
{
|
||||
if(param_00)
|
||||
{
|
||||
var_01 = (0.35,1,1);
|
||||
var_02 = (1,0.65,0.2);
|
||||
var_03 = (1,1,1);
|
||||
self.coop_icon_color_normal = var_01;
|
||||
self.coop_icon_color_downed = var_02;
|
||||
self.coop_icon_color_shoot = var_01;
|
||||
self.coop_icon_color_damage = var_03;
|
||||
self.coop_icon_color_dying = var_02;
|
||||
self.coop_icon_color_blink = var_03;
|
||||
return;
|
||||
}
|
||||
|
||||
var_04 = (0.635,0.929,0.604);
|
||||
var_05 = (1,1,0.2);
|
||||
var_02 = (1,0.65,0.2);
|
||||
var_06 = (1,0.2,0.2);
|
||||
var_03 = (1,1,1);
|
||||
self.coop_icon_color_normal = var_04;
|
||||
self.coop_icon_color_downed = var_05;
|
||||
self.coop_icon_color_shoot = var_04;
|
||||
self.coop_icon_color_damage = var_02;
|
||||
self.coop_icon_color_dying = var_06;
|
||||
self.coop_icon_color_blink = var_03;
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
rebuild_friendly_icon(param_00,param_01,param_02)
|
||||
{
|
||||
if(isdefined(self.nofriendlyhudicon))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(!isdefined(self.friendlyicon) || self.friendlyicon.material != param_01)
|
||||
{
|
||||
create_fresh_friendly_icon(param_01);
|
||||
}
|
||||
|
||||
self.friendlyicon.color = param_00;
|
||||
if(isdefined(param_02) && param_02)
|
||||
{
|
||||
self.friendlyicon setwaypointedgestyle_rotatingicon();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
create_fresh_friendly_icon(param_00)
|
||||
{
|
||||
if(isdefined(self.friendlyicon))
|
||||
{
|
||||
self.friendlyicon destroy();
|
||||
}
|
||||
|
||||
self.friendlyicon = newclienthudelem(self);
|
||||
self.friendlyicon setshader(param_00,1,1);
|
||||
self.friendlyicon setwaypoint(1,1,0);
|
||||
self.friendlyicon setwaypointiconoffscreenonly();
|
||||
self.friendlyicon settargetent(maps\_utility::get_other_player(self));
|
||||
self.friendlyicon.material = param_00;
|
||||
self.friendlyicon.hidewheninmenu = 1;
|
||||
if(common_scripts\utility::flag("coop_show_constant_icon"))
|
||||
{
|
||||
self.friendlyicon.alpha = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
self.friendlyicon.alpha = 0;
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
friendly_hud_icon_blink_on_fire()
|
||||
{
|
||||
self endon("death");
|
||||
for(;;)
|
||||
{
|
||||
self waittill("weapon_fired");
|
||||
var_00 = maps\_utility::get_other_player(self);
|
||||
var_00 thread friendly_hud_icon_flash(var_00.coop_icon_color_shoot,"coop_player_location_fire",1);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
friendly_hud_icon_blink_on_damage()
|
||||
{
|
||||
self endon("death");
|
||||
for(;;)
|
||||
{
|
||||
self waittill("damage");
|
||||
var_00 = maps\_utility::get_other_player(self);
|
||||
var_00 thread friendly_hud_icon_flash(var_00.coop_icon_color_damage,"coop_player_location",1);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
friendly_hud_icon_flash(param_00,param_01,param_02)
|
||||
{
|
||||
if(isdefined(self.nofriendlyhudicon))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self endon("death");
|
||||
self notify("flash_color_thread");
|
||||
self endon("flash_color_thread");
|
||||
var_03 = maps\_utility::get_other_player(self);
|
||||
if(maps\_utility::is_player_down(var_03))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
rebuild_friendly_icon(param_00,param_01,param_02);
|
||||
wait 0.5;
|
||||
param_01 = friendlyhudicon_currentmaterial();
|
||||
var_04 = friendlyhudicon_rotating();
|
||||
rebuild_friendly_icon(self.coop_icon_color_normal,param_01,var_04);
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
friendly_hud_init()
|
||||
{
|
||||
level endon("special_op_terminated");
|
||||
friendlyhudicon_normal();
|
||||
thread friendly_hud_icon_blink_on_fire();
|
||||
thread friendly_hud_icon_blink_on_damage();
|
||||
thread monitor_color_blind_toggle();
|
||||
thread friendly_hud_destroy_on_mission_end();
|
||||
if(isdefined(self.nofriendlyhudicon))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self.friendlyicon.alpha = 0;
|
||||
for(;;)
|
||||
{
|
||||
common_scripts\utility::flag_wait("coop_show_constant_icon");
|
||||
self.friendlyicon.alpha = 1;
|
||||
common_scripts\utility::flag_waitopen("coop_show_constant_icon");
|
||||
self.friendlyicon.alpha = 0;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
friendly_hud_destroy_on_mission_end()
|
||||
{
|
||||
level waittill("special_op_terminated");
|
||||
foreach(var_01 in level.players)
|
||||
{
|
||||
var_01 player_friendly_hud_destroy();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
player_friendly_hud_destroy()
|
||||
{
|
||||
if(isdefined(self.friendlyicon))
|
||||
{
|
||||
self.friendlyicon destroy();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
friendlyhudicon_hideall()
|
||||
{
|
||||
common_scripts\utility::flag_clear("coop_show_constant_icon");
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
friendlyhudicon_showall()
|
||||
{
|
||||
common_scripts\utility::flag_set("coop_show_constant_icon");
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
friendlyhudicon_disable()
|
||||
{
|
||||
self.nofriendlyhudicon = 1;
|
||||
player_friendly_hud_destroy();
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
friendlyhudicon_enable()
|
||||
{
|
||||
self.nofriendlyhudicon = undefined;
|
||||
if(!isdefined(self.friendlyicon))
|
||||
{
|
||||
friendlyhudicon_normal();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
friendlyhudicon_normal()
|
||||
{
|
||||
if(!common_scripts\utility::flag("coop_game"))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self.coop_icon_state = "ICON_STATE_NORMAL";
|
||||
var_00 = friendlyhudicon_currentmaterial();
|
||||
var_01 = friendlyhudicon_rotating();
|
||||
rebuild_friendly_icon(self.coop_icon_color_normal,var_00,var_01);
|
||||
}
|
||||
|
||||
//Function Number: 16
|
||||
friendlyhudicon_downed()
|
||||
{
|
||||
if(!common_scripts\utility::flag("coop_game"))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self.coop_icon_state = "ICON_STATE_DOWNED";
|
||||
var_00 = friendlyhudicon_currentmaterial();
|
||||
var_01 = friendlyhudicon_rotating();
|
||||
rebuild_friendly_icon(self.coop_icon_color_downed,var_00,var_01);
|
||||
}
|
||||
|
||||
//Function Number: 17
|
||||
friendlyhudicon_update(param_00)
|
||||
{
|
||||
if(!common_scripts\utility::flag("coop_game"))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var_01 = friendlyhudicon_currentmaterial();
|
||||
var_02 = friendlyhudicon_rotating();
|
||||
rebuild_friendly_icon(param_00,var_01,var_02);
|
||||
}
|
||||
|
||||
//Function Number: 18
|
||||
friendlyhudicon_currentmaterial()
|
||||
{
|
||||
var_00 = "coop_player_location";
|
||||
switch(self.coop_icon_state)
|
||||
{
|
||||
case "ICON_STATE_NORMAL":
|
||||
var_00 = "coop_player_location";
|
||||
break;
|
||||
|
||||
case "ICON_STATE_DOWNED":
|
||||
var_00 = "hint_health";
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return var_00;
|
||||
}
|
||||
|
||||
//Function Number: 19
|
||||
friendlyhudicon_rotating()
|
||||
{
|
||||
var_00 = 0;
|
||||
switch(self.coop_icon_state)
|
||||
{
|
||||
case "ICON_STATE_NORMAL":
|
||||
var_00 = 1;
|
||||
break;
|
||||
|
||||
case "ICON_STATE_DOWNED":
|
||||
var_00 = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return var_00;
|
||||
}
|
||||
|
||||
//Function Number: 20
|
||||
monitor_color_blind_toggle()
|
||||
{
|
||||
for(;;)
|
||||
{
|
||||
if(self getlocalplayerprofiledata("colorBlind") != self.colorblind)
|
||||
{
|
||||
self.colorblind = self getlocalplayerprofiledata("colorBlind");
|
||||
initialize_colors(self.colorblind);
|
||||
switch(self.coop_icon_state)
|
||||
{
|
||||
case "ICON_STATE_NORMAL":
|
||||
friendlyhudicon_normal();
|
||||
break;
|
||||
|
||||
case "ICON_STATE_DOWNED":
|
||||
friendlyhudicon_downed();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
52
MW3/PC/SP/maps/_createfx.gsc
Normal file
52
MW3/PC/SP/maps/_createfx.gsc
Normal file
@ -0,0 +1,52 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_createfx.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 3
|
||||
* Decompile Time: 43 ms
|
||||
* Timestamp: 10/27/2023 2:22:23 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
createfx()
|
||||
{
|
||||
level.func_position_player = ::func_position_player;
|
||||
level.func_position_player_get = ::func_position_player_get;
|
||||
level.func_loopfxthread = ::common_scripts\_fx::loopfxthread;
|
||||
level.func_oneshotfxthread = ::common_scripts\_fx::oneshotfxthread;
|
||||
level.func_create_loopsound = ::common_scripts\_fx::create_loopsound;
|
||||
level.func_updatefx = ::common_scripts\_createfx::restart_fx_looper;
|
||||
level.func_process_fx_rotater = ::common_scripts\_createfx::process_fx_rotater;
|
||||
level.mp_createfx = 0;
|
||||
var_00 = getaiarray();
|
||||
for(var_01 = 0;var_01 < var_00.size;var_01++)
|
||||
{
|
||||
var_00[var_01] delete();
|
||||
}
|
||||
|
||||
thread common_scripts\_createfx::createfxlogic();
|
||||
thread common_scripts\_createfx::func_get_level_fx();
|
||||
common_scripts\_createfx::createfx_common();
|
||||
level waittill("eternity");
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
func_position_player_get(param_00)
|
||||
{
|
||||
if(distance(param_00,level.player.origin) > 64)
|
||||
{
|
||||
setdvar("createfx_playerpos_x",level.player.origin[0]);
|
||||
setdvar("createfx_playerpos_y",level.player.origin[1]);
|
||||
setdvar("createfx_playerpos_z",level.player.origin[2]);
|
||||
}
|
||||
|
||||
return level.player.origin;
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
func_position_player()
|
||||
{
|
||||
var_00 = [];
|
||||
level.player setorigin((var_7B[0],var_7B[1],var_7B[2]));
|
||||
}
|
118
MW3/PC/SP/maps/_damagefeedback.gsc
Normal file
118
MW3/PC/SP/maps/_damagefeedback.gsc
Normal file
@ -0,0 +1,118 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_damagefeedback.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 6
|
||||
* Decompile Time: 100 ms
|
||||
* Timestamp: 10/27/2023 2:22:08 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
init()
|
||||
{
|
||||
precacheshader("damage_feedback");
|
||||
common_scripts\utility::array_thread(level.players,::init_damage_feedback);
|
||||
common_scripts\utility::array_thread(level.players,::monitordamage);
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
init_damage_feedback()
|
||||
{
|
||||
self.hud_damagefeedback = newclienthudelem(self);
|
||||
self.hud_damagefeedback.alignx = "center";
|
||||
self.hud_damagefeedback.aligny = "middle";
|
||||
self.hud_damagefeedback.horzalign = "center";
|
||||
self.hud_damagefeedback.vertalign = "middle";
|
||||
self.hud_damagefeedback.alpha = 0;
|
||||
self.hud_damagefeedback.archived = 1;
|
||||
self.hud_damagefeedback setshader("damage_feedback",24,48);
|
||||
self.hud_damagefeedback.y = 12;
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
monitordamage()
|
||||
{
|
||||
maps\_utility::add_damage_function(::damagefeedback_took_damage);
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
stopmonitordamage()
|
||||
{
|
||||
maps\_utility::remove_damage_function(::damagefeedback_took_damage);
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
damagefeedback_took_damage(param_00,param_01,param_02,param_03,param_04,param_05,param_06)
|
||||
{
|
||||
if(!isplayer(param_01))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(!maps\_utility::is_damagefeedback_enabled())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(isdefined(self.bullet_resistance))
|
||||
{
|
||||
var_07 = [];
|
||||
if(isdefined(var_7B[param_05]))
|
||||
{
|
||||
if(param_01 <= self.bullet_resistance)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
param_02 updatedamagefeedback(self);
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
updatedamagefeedback(param_00)
|
||||
{
|
||||
if(!isplayer(self))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(!isdefined(param_00.team))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(param_00.team == self.team || param_00.team == "neutral")
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(isdefined(param_00.magic_bullet_shield) && param_00.magic_bullet_shield)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(isdefined(param_00.godmode) && param_00.godmode)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(isdefined(param_00.script_godmode) && param_00.script_godmode)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self playlocalsound("SP_hit_alert");
|
||||
var_01 = 1;
|
||||
if(isdefined(level.slowmo.speed_slow))
|
||||
{
|
||||
var_01 = level.slowmo.speed_slow;
|
||||
}
|
||||
|
||||
self.hud_damagefeedback.alpha = 1;
|
||||
self.hud_damagefeedback fadeovertime(var_01);
|
||||
self.hud_damagefeedback.alpha = 0;
|
||||
var_02 = getdvarfloat("cg_crosshairVerticalOffset") * 240;
|
||||
self.hud_damagefeedback.y = 12 - int(var_02);
|
||||
}
|
110
MW3/PC/SP/maps/_deadbody.gsc
Normal file
110
MW3/PC/SP/maps/_deadbody.gsc
Normal file
@ -0,0 +1,110 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_deadbody.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 4
|
||||
* Decompile Time: 44 ms
|
||||
* Timestamp: 10/27/2023 2:20:04 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
level.scr_anim["dead_guy"]["death1"] = %exposed_death_nerve;
|
||||
level.scr_anim["dead_guy"]["death2"] = %exposed_death_falltoknees;
|
||||
level.scr_anim["dead_guy"]["death3"] = %exposed_death_headtwist;
|
||||
level.scr_anim["dead_guy"]["death4"] = %exposed_crouch_death_twist;
|
||||
level.scr_anim["dead_guy"]["death5"] = %exposed_crouch_death_fetal;
|
||||
level.scr_anim["dead_guy"]["death6"] = %death_sitting_pose_v1;
|
||||
level.scr_anim["dead_guy"]["death7"] = %death_sitting_pose_v2;
|
||||
level.scr_anim["dead_guy"]["death8"] = %death_pose_on_desk;
|
||||
level.scr_anim["dead_guy"]["death9"] = %death_pose_on_window;
|
||||
level.max_number_of_dead_bodies["ead_guy"] = #animtree;
|
||||
level.dead_body_count = 1;
|
||||
var_00 = getdvarint("ragdoll_max_simulating") - 6;
|
||||
if(var_00 > 0)
|
||||
{
|
||||
level.var_4075 = var_00;
|
||||
}
|
||||
else
|
||||
{
|
||||
level.var_4075 = 0;
|
||||
}
|
||||
|
||||
var_01 = spawnstruct();
|
||||
var_01.bodies = [];
|
||||
common_scripts\utility::run_thread_on_targetname("trigger_body",::trigger_body,var_01);
|
||||
common_scripts\utility::run_thread_on_targetname("dead_body",::spawn_dead_body,var_01);
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
trigger_body(param_00)
|
||||
{
|
||||
self waittill("trigger");
|
||||
var_01 = getentarray(self.target,"targetname");
|
||||
common_scripts\utility::array_thread(var_01,::spawn_dead_body,param_00);
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
spawn_dead_body(param_00)
|
||||
{
|
||||
if(!getdvarint("ragdoll_enable") && isdefined(self.script_parameters) && self.script_parameters == "require_ragdoll")
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(level.var_4075 == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var_01 = undefined;
|
||||
if(isdefined(self.script_index))
|
||||
{
|
||||
var_01 = self.script_index;
|
||||
}
|
||||
else
|
||||
{
|
||||
level.dead_body_count++;
|
||||
if(level.dead_body_count > 3)
|
||||
{
|
||||
level.dead_body_count = 1;
|
||||
}
|
||||
|
||||
var_01 = level.dead_body_count;
|
||||
}
|
||||
|
||||
var_02 = spawn("script_model",(0,0,0));
|
||||
var_02.origin = self.origin;
|
||||
var_02.angles = self.angles;
|
||||
var_02.animname = "dead_guy";
|
||||
var_02 maps\_utility::assign_animtree();
|
||||
param_00 que_body(var_02);
|
||||
var_02 [[ level.scr_deadbody[var_01] ]]();
|
||||
if(!isdefined(self.script_trace))
|
||||
{
|
||||
var_03 = bullettrace(var_02.origin + (0,0,5),var_02.origin + (0,0,-64),0,undefined);
|
||||
var_02.origin = var_03["position"];
|
||||
}
|
||||
|
||||
var_02 setflaggedanim("flag",var_02 maps\_utility::getanim(self.script_noteworthy),1,0,1);
|
||||
var_02 waittillmatch("end","flag");
|
||||
if(!isdefined(self.script_start))
|
||||
{
|
||||
var_02 startragdoll();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
que_body(param_00)
|
||||
{
|
||||
self.bodies[self.bodies.size] = param_00;
|
||||
if(self.bodies.size <= level.var_4075)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self.bodies[0] delete();
|
||||
self.bodies = common_scripts\utility::array_removeundefined(self.bodies);
|
||||
}
|
2083
MW3/PC/SP/maps/_debug.gsc
Normal file
2083
MW3/PC/SP/maps/_debug.gsc
Normal file
File diff suppressed because it is too large
Load Diff
620
MW3/PC/SP/maps/_detonategrenades.gsc
Normal file
620
MW3/PC/SP/maps/_detonategrenades.gsc
Normal file
@ -0,0 +1,620 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_detonategrenades.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 30
|
||||
* Decompile Time: 459 ms
|
||||
* Timestamp: 10/27/2023 2:22:25 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
init()
|
||||
{
|
||||
level._effect["c4_light_blink"] = loadfx("misc/light_c4_blink");
|
||||
level._effect["claymore_laser"] = loadfx("misc/claymore_laser");
|
||||
for(var_00 = 0;var_00 < level.players.size;var_00++)
|
||||
{
|
||||
level.players[var_00] thread watchgrenadeusage();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
watchgrenadeusage()
|
||||
{
|
||||
level.c4explodethisframe = 0;
|
||||
self endon("death");
|
||||
self.c4array = [];
|
||||
self.throwinggrenade = 0;
|
||||
thread watchc4();
|
||||
thread watchc4detonation();
|
||||
thread watchc4altdetonation();
|
||||
thread watchclaymores();
|
||||
thread begin_semtex_grenade_tracking();
|
||||
for(;;)
|
||||
{
|
||||
self waittill("grenade_pullback",var_00);
|
||||
self.throwinggrenade = 1;
|
||||
if(var_00 == "c4")
|
||||
{
|
||||
beginc4tracking();
|
||||
continue;
|
||||
}
|
||||
|
||||
if(var_00 == "smoke_grenade_american")
|
||||
{
|
||||
beginsmokegrenadetracking();
|
||||
continue;
|
||||
}
|
||||
|
||||
begingrenadetracking();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
beginsmokegrenadetracking()
|
||||
{
|
||||
self waittill("grenade_fire",var_00,var_01);
|
||||
if(!isdefined(level.smokegrenades))
|
||||
{
|
||||
level.smokegrenades = 0;
|
||||
}
|
||||
|
||||
var_00 thread smoke_grenade_death();
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
begin_semtex_grenade_tracking()
|
||||
{
|
||||
for(;;)
|
||||
{
|
||||
self waittill("grenade_fire",var_00,var_01);
|
||||
if(var_01 == "semtex_grenade")
|
||||
{
|
||||
thread track_semtex_grenade(var_00);
|
||||
var_00 thread semtex_sticky_handle(self);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
track_semtex_grenade(param_00)
|
||||
{
|
||||
self.throwinggrenade = 0;
|
||||
if(!isdefined(level.thrown_semtex_grenades))
|
||||
{
|
||||
level.thrown_semtex_grenades = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
level.thrown_semtex_grenades++;
|
||||
}
|
||||
|
||||
param_00 waittill("death");
|
||||
waittillframeend;
|
||||
level.thrown_semtex_grenades--;
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
semtex_sticky_handle(param_00)
|
||||
{
|
||||
self waittill("missile_stuck",var_01);
|
||||
if(!isdefined(var_01))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(var_01.code_classname != "script_vehicle")
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var_01.has_semtex_on_it = 1;
|
||||
self waittill("explode");
|
||||
if(!isdefined(var_01) || !isalive(var_01))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(var_01 maps\_vehicle::is_godmode() || var_01 maps\_vehicle::attacker_isonmyteam(param_00))
|
||||
{
|
||||
var_01.has_semtex_on_it = undefined;
|
||||
return;
|
||||
}
|
||||
|
||||
var_01 kill(var_01.origin,param_00);
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
smoke_grenade_death()
|
||||
{
|
||||
level.smokegrenades++;
|
||||
wait 50;
|
||||
level.smokegrenades--;
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
begingrenadetracking()
|
||||
{
|
||||
self endon("death");
|
||||
self waittill("grenade_fire",var_00,var_01);
|
||||
if(var_01 == "fraggrenade")
|
||||
{
|
||||
var_00 thread maps\_utility::grenade_earthquake();
|
||||
}
|
||||
else if(var_01 == "ninebang_grenade")
|
||||
{
|
||||
self.threw_ninebang = 1;
|
||||
}
|
||||
|
||||
self.throwinggrenade = 0;
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
beginc4tracking()
|
||||
{
|
||||
self endon("death");
|
||||
common_scripts\utility::waittill_any("grenade_fire","weapon_change");
|
||||
self.throwinggrenade = 0;
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
watchc4()
|
||||
{
|
||||
for(;;)
|
||||
{
|
||||
self waittill("grenade_fire",var_00,var_01);
|
||||
if(var_01 == "c4")
|
||||
{
|
||||
if(!self.c4array.size)
|
||||
{
|
||||
thread watchc4altdetonate();
|
||||
}
|
||||
|
||||
self.c4array[self.c4array.size] = var_00;
|
||||
var_00.owner = self;
|
||||
var_00 thread c4damage();
|
||||
thread c4death(var_00);
|
||||
var_00 thread playc4effects();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
c4death(param_00)
|
||||
{
|
||||
param_00 waittill("death");
|
||||
self.c4array = maps\_utility::array_remove_nokeys(self.c4array,param_00);
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
watchclaymores()
|
||||
{
|
||||
self endon("spawned_player");
|
||||
self endon("disconnect");
|
||||
for(;;)
|
||||
{
|
||||
self waittill("grenade_fire",var_00,var_01);
|
||||
if(var_01 == "claymore" || var_01 == "claymore_mp")
|
||||
{
|
||||
var_00.owner = self;
|
||||
var_00 thread c4damage();
|
||||
var_00 thread claymoredetonation();
|
||||
var_00 thread playclaymoreeffects();
|
||||
var_00 thread claymoremakesentient(self.team);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
claymoremakesentient(param_00)
|
||||
{
|
||||
self endon("death");
|
||||
wait 1;
|
||||
if(isdefined(level.claymoresentientfunc))
|
||||
{
|
||||
self thread [[ level.claymoresentientfunc ]](param_00);
|
||||
return;
|
||||
}
|
||||
|
||||
self makeentitysentient(param_00,1);
|
||||
self.attackeraccuracy = 2;
|
||||
self.maxvisibledist = 750;
|
||||
self.threatbias = -1000;
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
claymoredetonation()
|
||||
{
|
||||
self endon("death");
|
||||
self waittill("missile_stuck");
|
||||
var_00 = 192;
|
||||
if(isdefined(self.detonateradius))
|
||||
{
|
||||
var_00 = self.detonateradius;
|
||||
}
|
||||
|
||||
var_01 = spawn("trigger_radius",self.origin + (0,0,0 - var_00),9,var_00,var_00 * 2);
|
||||
thread deleteondeath(var_01);
|
||||
if(!isdefined(level.claymores))
|
||||
{
|
||||
level.claymores = [];
|
||||
}
|
||||
|
||||
level.claymores = maps\_utility::array_add(level.claymores,self);
|
||||
if(!maps\_utility::is_specialop() && level.claymores.size > 15)
|
||||
{
|
||||
level.claymores[0] delete();
|
||||
}
|
||||
|
||||
for(;;)
|
||||
{
|
||||
var_01 waittill("trigger",var_02);
|
||||
if(isdefined(self.owner) && var_02 == self.owner)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(isplayer(var_02))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(var_02 damageconetrace(self.origin,self) > 0)
|
||||
{
|
||||
self playsound("claymore_activated_SP");
|
||||
wait 0.4;
|
||||
if(isdefined(self.owner))
|
||||
{
|
||||
self detonate(self.owner);
|
||||
}
|
||||
else
|
||||
{
|
||||
self detonate(undefined);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
deleteondeath(param_00)
|
||||
{
|
||||
self waittill("death");
|
||||
level.claymores = maps\_utility::array_remove_nokeys(level.claymores,self);
|
||||
wait 0.05;
|
||||
if(isdefined(param_00))
|
||||
{
|
||||
param_00 delete();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 16
|
||||
watchc4detonation()
|
||||
{
|
||||
self endon("death");
|
||||
for(;;)
|
||||
{
|
||||
self waittill("detonate");
|
||||
var_00 = self getcurrentweapon();
|
||||
if(var_00 == "c4")
|
||||
{
|
||||
for(var_01 = 0;var_01 < self.c4array.size;var_01++)
|
||||
{
|
||||
if(isdefined(self.c4array[var_01]))
|
||||
{
|
||||
self.c4array[var_01] thread waitanddetonate(0.1);
|
||||
}
|
||||
}
|
||||
|
||||
self.c4array = [];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 17
|
||||
watchc4altdetonation()
|
||||
{
|
||||
self endon("death");
|
||||
self endon("disconnect");
|
||||
for(;;)
|
||||
{
|
||||
self waittill("alt_detonate");
|
||||
var_00 = self getcurrentweapon();
|
||||
if(var_00 != "c4")
|
||||
{
|
||||
var_01 = [];
|
||||
for(var_02 = 0;var_02 < self.c4array.size;var_02++)
|
||||
{
|
||||
var_03 = self.c4array[var_02];
|
||||
if(isdefined(self.c4array[var_02]))
|
||||
{
|
||||
var_03 thread waitanddetonate(0.1);
|
||||
}
|
||||
}
|
||||
|
||||
self.c4array = var_01;
|
||||
self notify("detonated");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 18
|
||||
waitanddetonate(param_00)
|
||||
{
|
||||
self endon("death");
|
||||
wait param_00;
|
||||
self detonate();
|
||||
}
|
||||
|
||||
//Function Number: 19
|
||||
c4damage()
|
||||
{
|
||||
self.health = 100;
|
||||
self setcandamage(1);
|
||||
self.maxhealth = 100000;
|
||||
self.health = self.maxhealth;
|
||||
var_00 = undefined;
|
||||
for(;;)
|
||||
{
|
||||
self waittill("damage",var_01,var_00);
|
||||
break;
|
||||
}
|
||||
|
||||
self playsound("claymore_activated_SP");
|
||||
if(level.c4explodethisframe)
|
||||
{
|
||||
wait 0.1 + randomfloat(0.4);
|
||||
}
|
||||
else
|
||||
{
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
if(!isdefined(self))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
level.c4explodethisframe = 1;
|
||||
thread resetc4explodethisframe();
|
||||
if(isplayer(var_00))
|
||||
{
|
||||
self detonate(var_00);
|
||||
return;
|
||||
}
|
||||
|
||||
self detonate();
|
||||
}
|
||||
|
||||
//Function Number: 20
|
||||
resetc4explodethisframe()
|
||||
{
|
||||
wait 0.05;
|
||||
level.c4explodethisframe = 0;
|
||||
}
|
||||
|
||||
//Function Number: 21
|
||||
saydamaged(param_00,param_01)
|
||||
{
|
||||
for(var_02 = 0;var_02 < 60;var_02++)
|
||||
{
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 22
|
||||
playc4effects()
|
||||
{
|
||||
self endon("death");
|
||||
self waittill("missile_stuck");
|
||||
playfxontag(common_scripts\utility::getfx("c4_light_blink"),self,"tag_fx");
|
||||
}
|
||||
|
||||
//Function Number: 23
|
||||
playclaymoreeffects()
|
||||
{
|
||||
self endon("death");
|
||||
self waittill("missile_stuck");
|
||||
playfxontag(common_scripts\utility::getfx("claymore_laser"),self,"tag_fx");
|
||||
}
|
||||
|
||||
//Function Number: 24
|
||||
clearfxondeath(param_00)
|
||||
{
|
||||
self waittill("death");
|
||||
param_00 delete();
|
||||
}
|
||||
|
||||
//Function Number: 25
|
||||
getdamageableents(param_00,param_01,param_02,param_03)
|
||||
{
|
||||
var_04 = [];
|
||||
if(!isdefined(param_02))
|
||||
{
|
||||
param_02 = 0;
|
||||
}
|
||||
|
||||
if(!isdefined(param_03))
|
||||
{
|
||||
param_03 = 0;
|
||||
}
|
||||
|
||||
for(var_05 = 0;var_05 < level.players.size;var_05++)
|
||||
{
|
||||
if(!isalive(level.players[var_05]) || level.players[var_05].sessionstate != "playing")
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_06 = level.players[var_05].origin + (0,0,32);
|
||||
var_07 = distance(param_00,var_06);
|
||||
if(var_07 < param_01 && !param_02 || weapondamagetracepassed(param_00,var_06,param_03,undefined))
|
||||
{
|
||||
var_08 = spawnstruct();
|
||||
var_08.isplayer = 1;
|
||||
var_08.isadestructable = 0;
|
||||
var_08.entity = level.players[var_05];
|
||||
var_08.damagecenter = var_06;
|
||||
var_04[var_04.size] = var_08;
|
||||
}
|
||||
}
|
||||
|
||||
var_09 = getentarray("grenade","classname");
|
||||
for(var_05 = 0;var_05 < var_09.size;var_05++)
|
||||
{
|
||||
var_0A = var_09[var_05].origin;
|
||||
var_07 = distance(param_00,var_0A);
|
||||
if(var_07 < param_01 && !param_02 || weapondamagetracepassed(param_00,var_0A,param_03,var_09[var_05]))
|
||||
{
|
||||
var_08 = spawnstruct();
|
||||
var_08.isplayer = 0;
|
||||
var_08.isadestructable = 0;
|
||||
var_08.entity = var_09[var_05];
|
||||
var_08.damagecenter = var_0A;
|
||||
var_04[var_04.size] = var_08;
|
||||
}
|
||||
}
|
||||
|
||||
var_0B = getentarray("destructable","targetname");
|
||||
for(var_05 = 0;var_05 < var_0B.size;var_05++)
|
||||
{
|
||||
var_0A = var_0B[var_05].origin;
|
||||
var_07 = distance(param_00,var_0A);
|
||||
if(var_07 < param_01 && !param_02 || weapondamagetracepassed(param_00,var_0A,param_03,var_0B[var_05]))
|
||||
{
|
||||
var_08 = spawnstruct();
|
||||
var_08.isplayer = 0;
|
||||
var_08.isadestructable = 1;
|
||||
var_08.entity = var_0B[var_05];
|
||||
var_08.damagecenter = var_0A;
|
||||
var_04[var_04.size] = var_08;
|
||||
}
|
||||
}
|
||||
|
||||
return var_04;
|
||||
}
|
||||
|
||||
//Function Number: 26
|
||||
weapondamagetracepassed(param_00,param_01,param_02,param_03)
|
||||
{
|
||||
var_04 = undefined;
|
||||
var_05 = param_01 - param_00;
|
||||
if(lengthsquared(var_05) < param_02 * param_02)
|
||||
{
|
||||
var_04 = param_01;
|
||||
}
|
||||
|
||||
var_06 = vectornormalize(var_05);
|
||||
var_04 = param_00 + (var_06[0] * param_02,var_06[1] * param_02,var_06[2] * param_02);
|
||||
var_07 = bullettrace(var_04,param_01,0,param_03);
|
||||
if(getdvarint("scr_damage_debug") != 0)
|
||||
{
|
||||
if(var_07["fraction"] == 1)
|
||||
{
|
||||
thread debugline(var_04,param_01,(1,1,1));
|
||||
}
|
||||
else
|
||||
{
|
||||
thread debugline(var_04,var_07["position"],(1,0.9,0.8));
|
||||
thread debugline(var_07["position"],param_01,(1,0.4,0.3));
|
||||
}
|
||||
}
|
||||
|
||||
return var_07["fraction"] == 1;
|
||||
}
|
||||
|
||||
//Function Number: 27
|
||||
damageent(param_00,param_01,param_02,param_03,param_04,param_05,param_06)
|
||||
{
|
||||
if(self.isplayer)
|
||||
{
|
||||
self.damageorigin = param_05;
|
||||
self.entity thread [[ level.callbackplayerdamage ]](param_00,param_01,param_02,0,param_03,param_04,param_05,param_06,"none",0);
|
||||
return;
|
||||
}
|
||||
|
||||
if(self.isadestructable && param_04 == "artillery_mp" || param_04 == "claymore_mp")
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self.entity notify("damage",param_02,param_01);
|
||||
}
|
||||
|
||||
//Function Number: 28
|
||||
debugline(param_00,param_01,param_02)
|
||||
{
|
||||
for(var_03 = 0;var_03 < 600;var_03++)
|
||||
{
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 29
|
||||
onweapondamage(param_00,param_01,param_02,param_03)
|
||||
{
|
||||
self endon("death");
|
||||
switch(param_01)
|
||||
{
|
||||
case "concussion_grenade_mp":
|
||||
var_04 = 512;
|
||||
var_05 = 1 - distance(self.origin,param_00.origin) / var_04;
|
||||
var_06 = 1 + 4 * var_05;
|
||||
wait 0.05;
|
||||
self shellshock("concussion_grenade_mp",var_06);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 30
|
||||
watchc4altdetonate()
|
||||
{
|
||||
self endon("death");
|
||||
self endon("disconnect");
|
||||
self endon("detonated");
|
||||
level endon("game_ended");
|
||||
var_00 = 0;
|
||||
for(;;)
|
||||
{
|
||||
if(self usebuttonpressed())
|
||||
{
|
||||
var_00 = 0;
|
||||
while(self usebuttonpressed())
|
||||
{
|
||||
var_00 = var_00 + 0.05;
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
if(var_00 >= 0.5)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_00 = 0;
|
||||
while(!self usebuttonpressed() && var_00 < 0.5)
|
||||
{
|
||||
var_00 = var_00 + 0.05;
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
if(var_00 >= 0.5)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(!self.c4array.size)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self notify("alt_detonate");
|
||||
}
|
||||
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
1024
MW3/PC/SP/maps/_drone.gsc
Normal file
1024
MW3/PC/SP/maps/_drone.gsc
Normal file
File diff suppressed because it is too large
Load Diff
190
MW3/PC/SP/maps/_drone_ai.gsc
Normal file
190
MW3/PC/SP/maps/_drone_ai.gsc
Normal file
@ -0,0 +1,190 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_drone_ai.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 1
|
||||
* Decompile Time: 15 ms
|
||||
* Timestamp: 10/27/2023 2:20:04 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
init()
|
||||
{
|
||||
level.attachpropsfunction["allies"]["stand"]["idle"] = %casual_stand_idle;
|
||||
level.attachpropsfunction["allies"]["stand"]["run"] = %run_lowready_f_relative;
|
||||
level.attachpropsfunction["allies"]["stand"]["death"] = %exposed_death;
|
||||
level.attachpropsfunction["allies"]["covercrouch"]["idle"][0] = %covercrouch_hide_idle;
|
||||
level.attachpropsfunction["allies"]["covercrouch"]["idle"][1] = %covercrouch_twitch_1;
|
||||
level.attachpropsfunction["allies"]["covercrouch"]["idle"][2] = %covercrouch_twitch_2;
|
||||
level.attachpropsfunction["allies"]["covercrouch"]["idle"][3] = %covercrouch_twitch_3;
|
||||
level.attachpropsfunction["allies"]["covercrouch"]["idle"][4] = %covercrouch_hide_look;
|
||||
level.attachpropsfunction["allies"]["covercrouch"]["hide_2_aim"] = %covercrouch_hide_2_aim;
|
||||
level.attachpropsfunction["allies"]["covercrouch"]["aim_2_hide"] = %covercrouch_aim_2_hide;
|
||||
level.attachpropsfunction["allies"]["covercrouch"]["reload"] = %covercrouch_reload_hide;
|
||||
level.attachpropsfunction["allies"]["covercrouch"]["fire"] = %covercrouch_aim5;
|
||||
level.attachpropsfunction["allies"]["covercrouch"]["death"] = %covercrouch_death_1;
|
||||
level.attachpropsfunction["allies"]["covercrouch"]["pop_up_chance"] = 1;
|
||||
level.attachpropsfunction["allies"]["coverstand"]["idle"][0] = %coverstand_hide_idle;
|
||||
level.attachpropsfunction["allies"]["coverstand"]["idle"][1] = %coverstand_look_quick;
|
||||
level.attachpropsfunction["allies"]["coverstand"]["idle"][2] = %coverstand_look_quick_v2;
|
||||
level.attachpropsfunction["allies"]["coverstand"]["idle"][3] = %coverstand_hide_idle_twitch04;
|
||||
level.attachpropsfunction["allies"]["coverstand"]["idle"][4] = %coverstand_hide_idle_twitch05;
|
||||
level.attachpropsfunction["allies"]["coverstand"]["hide_2_aim"] = %coverstand_hide_2_aim;
|
||||
level.attachpropsfunction["allies"]["coverstand"]["aim_2_hide"] = %coverstand_aim_2_hide;
|
||||
level.attachpropsfunction["allies"]["coverstand"]["reload"] = %coverstand_reloada;
|
||||
level.attachpropsfunction["allies"]["coverstand"]["fire"] = %exposed_aim_5;
|
||||
level.attachpropsfunction["allies"]["coverstand"]["death"] = %coverstand_death_left;
|
||||
level.attachpropsfunction["allies"]["coverstand"]["pop_up_chance"] = 1;
|
||||
level.attachpropsfunction["allies"]["coverleftstand"]["idle"][0] = %corner_standl_alert_idle;
|
||||
level.attachpropsfunction["allies"]["coverleftstand"]["idle"][1] = %corner_standl_alert_twitch01;
|
||||
level.attachpropsfunction["allies"]["coverleftstand"]["idle"][2] = %corner_standl_alert_twitch02;
|
||||
level.attachpropsfunction["allies"]["coverleftstand"]["idle"][3] = %corner_standl_alert_twitch03;
|
||||
level.attachpropsfunction["allies"]["coverleftstand"]["idle"][4] = %corner_standl_alert_twitch04;
|
||||
level.attachpropsfunction["allies"]["coverleftstand"]["hide_2_aim"] = %corner_standl_trans_alert_2_b_v2;
|
||||
level.attachpropsfunction["allies"]["coverleftstand"]["aim_2_hide"] = %corner_standl_trans_b_2_alert_v2;
|
||||
level.attachpropsfunction["allies"]["coverleftstand"]["reload"] = %corner_standl_reload_v1;
|
||||
level.attachpropsfunction["allies"]["coverleftstand"]["fire"] = %exposed_aim_5;
|
||||
level.attachpropsfunction["allies"]["coverleftstand"]["death"] = %corner_standl_deathb;
|
||||
level.attachpropsfunction["allies"]["coverleftstand"]["pop_up_chance"] = 1;
|
||||
level.attachpropsfunction["allies"]["coverrightstand"]["idle"][0] = %corner_standr_alert_idle;
|
||||
level.attachpropsfunction["allies"]["coverrightstand"]["idle"][1] = %corner_standr_alert_twitch01;
|
||||
level.attachpropsfunction["allies"]["coverrightstand"]["idle"][2] = %corner_standr_alert_twitch02;
|
||||
level.attachpropsfunction["allies"]["coverrightstand"]["idle"][3] = %corner_standr_alert_twitch04;
|
||||
level.attachpropsfunction["allies"]["coverrightstand"]["hide_2_aim"] = %corner_standr_trans_alert_2_b;
|
||||
level.attachpropsfunction["allies"]["coverrightstand"]["aim_2_hide"] = %corner_standr_trans_b_2_alert;
|
||||
level.attachpropsfunction["allies"]["coverrightstand"]["reload"] = %corner_standr_reload_v1;
|
||||
level.attachpropsfunction["allies"]["coverrightstand"]["fire"] = %exposed_aim_5;
|
||||
level.attachpropsfunction["allies"]["coverrightstand"]["death"] = %corner_standr_deathb;
|
||||
level.attachpropsfunction["allies"]["coverrightstand"]["pop_up_chance"] = 1;
|
||||
level.attachpropsfunction["allies"]["coverrightcrouch"]["idle"][0] = %cornercrr_alert_idle;
|
||||
level.attachpropsfunction["allies"]["coverrightcrouch"]["idle"][1] = %cornercrr_alert_twitch_v1;
|
||||
level.attachpropsfunction["allies"]["coverrightcrouch"]["idle"][2] = %cornercrr_alert_twitch_v2;
|
||||
level.attachpropsfunction["allies"]["coverrightcrouch"]["idle"][3] = %cornercrr_alert_twitch_v3;
|
||||
level.attachpropsfunction["allies"]["coverrightcrouch"]["hide_2_aim"] = %cornercrr_alert_2_lean;
|
||||
level.attachpropsfunction["allies"]["coverrightcrouch"]["aim_2_hide"] = %cornercrr_lean_2_alert;
|
||||
level.attachpropsfunction["allies"]["coverrightcrouch"]["reload"] = %cornercrr_reloada;
|
||||
level.attachpropsfunction["allies"]["coverrightcrouch"]["death"] = %exposed_crouch_death_fetal;
|
||||
level.attachpropsfunction["allies"]["coverrightcrouch"]["pop_up_chance"] = 1;
|
||||
level.attachpropsfunction["allies"]["coverguard"]["idle"][0] = %exposed_crouch_idle_twitch_v2;
|
||||
level.attachpropsfunction["allies"]["coverguard"]["idle"][1] = %exposed_crouch_idle_twitch_v3;
|
||||
level.attachpropsfunction["allies"]["coverguard"]["reload"] = %exposed_crouch_reload;
|
||||
level.attachpropsfunction["allies"]["coverguard"]["fire"] = %exposed_crouch_aim_5;
|
||||
level.attachpropsfunction["allies"]["coverguard"]["death"] = %exposed_crouch_death_fetal;
|
||||
level.attachpropsfunction["allies"]["coverguard"]["pop_up_chance"] = 0;
|
||||
level.attachpropsfunction["allies"]["coverprone"]["idle"][0] = %prone_reaction_a;
|
||||
level.attachpropsfunction["allies"]["coverprone"]["idle"][1] = %prone_twitch_ammocheck;
|
||||
level.attachpropsfunction["allies"]["coverprone"]["idle"][2] = %prone_twitch_scan;
|
||||
level.attachpropsfunction["allies"]["coverprone"]["idle"][3] = %prone_twitch_look;
|
||||
level.attachpropsfunction["allies"]["coverprone"]["idle"][4] = %prone_twitch_lookup;
|
||||
level.attachpropsfunction["allies"]["coverprone"]["hide_2_aim"] = %prone_2_crouch;
|
||||
level.attachpropsfunction["allies"]["coverprone"]["aim_2_hide"] = %crouch_2_prone;
|
||||
level.attachpropsfunction["allies"]["coverprone"]["reload"] = %prone_reload;
|
||||
level.attachpropsfunction["allies"]["coverprone"]["fire"] = %prone_fire_1;
|
||||
level.attachpropsfunction["allies"]["coverprone"]["fire_exposed"] = %exposed_crouch_aim_5;
|
||||
level.attachpropsfunction["allies"]["coverprone"]["death"] = %saw_gunner_prone_death;
|
||||
level.attachpropsfunction["allies"]["coverprone"]["pop_up_chance"] = 0.5;
|
||||
level.attachpropsfunction["allies"]["coverprone_no_pop"]["idle"][0] = %prone_reaction_a;
|
||||
level.attachpropsfunction["allies"]["coverprone_no_pop"]["idle"][1] = %prone_twitch_ammocheck;
|
||||
level.attachpropsfunction["allies"]["coverprone_no_pop"]["idle"][2] = %prone_twitch_scan;
|
||||
level.attachpropsfunction["allies"]["coverprone_no_pop"]["idle"][3] = %prone_twitch_look;
|
||||
level.attachpropsfunction["allies"]["coverprone_no_pop"]["idle"][4] = %prone_twitch_lookup;
|
||||
level.attachpropsfunction["allies"]["coverprone_no_pop"]["hide_2_aim"] = %prone_2_crouch;
|
||||
level.attachpropsfunction["allies"]["coverprone_no_pop"]["aim_2_hide"] = %crouch_2_prone;
|
||||
level.attachpropsfunction["allies"]["coverprone_no_pop"]["reload"] = %prone_reload;
|
||||
level.attachpropsfunction["allies"]["coverprone_no_pop"]["fire"] = %prone_fire_1;
|
||||
level.attachpropsfunction["allies"]["coverprone_no_pop"]["fire_exposed"] = %exposed_crouch_aim_5;
|
||||
level.attachpropsfunction["allies"]["coverprone_no_pop"]["death"] = %saw_gunner_prone_death;
|
||||
level.attachpropsfunction["allies"]["coverprone_no_pop"]["pop_up_chance"] = 0;
|
||||
level.attachpropsfunction["axis"]["stand"]["idle"] = %casual_stand_idle;
|
||||
level.attachpropsfunction["axis"]["stand"]["run"] = %run_lowready_f_relative;
|
||||
level.attachpropsfunction["axis"]["stand"]["death"] = %exposed_death;
|
||||
level.attachpropsfunction["axis"]["covercrouch"]["idle"][0] = %covercrouch_hide_idle;
|
||||
level.attachpropsfunction["axis"]["covercrouch"]["idle"][1] = %covercrouch_twitch_1;
|
||||
level.attachpropsfunction["axis"]["covercrouch"]["idle"][2] = %covercrouch_twitch_2;
|
||||
level.attachpropsfunction["axis"]["covercrouch"]["idle"][3] = %covercrouch_twitch_3;
|
||||
level.attachpropsfunction["axis"]["covercrouch"]["idle"][4] = %covercrouch_hide_look;
|
||||
level.attachpropsfunction["axis"]["covercrouch"]["hide_2_aim"] = %covercrouch_hide_2_aim;
|
||||
level.attachpropsfunction["axis"]["covercrouch"]["aim_2_hide"] = %covercrouch_aim_2_hide;
|
||||
level.attachpropsfunction["axis"]["covercrouch"]["reload"] = %covercrouch_reload_hide;
|
||||
level.attachpropsfunction["axis"]["covercrouch"]["fire"] = %covercrouch_aim5;
|
||||
level.attachpropsfunction["axis"]["covercrouch"]["death"] = %covercrouch_death_1;
|
||||
level.attachpropsfunction["axis"]["covercrouch"]["pop_up_chance"] = 1;
|
||||
level.attachpropsfunction["axis"]["coverstand"]["idle"][0] = %coverstand_hide_idle;
|
||||
level.attachpropsfunction["axis"]["coverstand"]["idle"][1] = %coverstand_look_quick;
|
||||
level.attachpropsfunction["axis"]["coverstand"]["idle"][2] = %coverstand_look_quick_v2;
|
||||
level.attachpropsfunction["axis"]["coverstand"]["idle"][3] = %coverstand_hide_idle_twitch04;
|
||||
level.attachpropsfunction["axis"]["coverstand"]["idle"][4] = %coverstand_hide_idle_twitch05;
|
||||
level.attachpropsfunction["axis"]["coverstand"]["hide_2_aim"] = %coverstand_hide_2_aim;
|
||||
level.attachpropsfunction["axis"]["coverstand"]["aim_2_hide"] = %coverstand_aim_2_hide;
|
||||
level.attachpropsfunction["axis"]["coverstand"]["reload"] = %coverstand_reloada;
|
||||
level.attachpropsfunction["axis"]["coverstand"]["fire"] = %exposed_aim_5;
|
||||
level.attachpropsfunction["axis"]["coverstand"]["death"] = %coverstand_death_left;
|
||||
level.attachpropsfunction["axis"]["coverstand"]["pop_up_chance"] = 1;
|
||||
level.attachpropsfunction["axis"]["coverleftstand"]["idle"][0] = %corner_standl_alert_idle;
|
||||
level.attachpropsfunction["axis"]["coverleftstand"]["idle"][1] = %corner_standl_alert_twitch01;
|
||||
level.attachpropsfunction["axis"]["coverleftstand"]["idle"][2] = %corner_standl_alert_twitch02;
|
||||
level.attachpropsfunction["axis"]["coverleftstand"]["idle"][3] = %corner_standl_alert_twitch03;
|
||||
level.attachpropsfunction["axis"]["coverleftstand"]["idle"][4] = %corner_standl_alert_twitch04;
|
||||
level.attachpropsfunction["axis"]["coverleftstand"]["hide_2_aim"] = %corner_standl_trans_alert_2_b_v2;
|
||||
level.attachpropsfunction["axis"]["coverleftstand"]["aim_2_hide"] = %corner_standl_trans_b_2_alert_v2;
|
||||
level.attachpropsfunction["axis"]["coverleftstand"]["reload"] = %corner_standl_reload_v1;
|
||||
level.attachpropsfunction["axis"]["coverleftstand"]["fire"] = %exposed_aim_5;
|
||||
level.attachpropsfunction["axis"]["coverleftstand"]["death"] = %corner_standl_deathb;
|
||||
level.attachpropsfunction["axis"]["coverleftstand"]["pop_up_chance"] = 1;
|
||||
level.attachpropsfunction["axis"]["coverrightstand"]["idle"][0] = %corner_standr_alert_idle;
|
||||
level.attachpropsfunction["axis"]["coverrightstand"]["idle"][1] = %corner_standr_alert_twitch01;
|
||||
level.attachpropsfunction["axis"]["coverrightstand"]["idle"][2] = %corner_standr_alert_twitch02;
|
||||
level.attachpropsfunction["axis"]["coverrightstand"]["idle"][3] = %corner_standr_alert_twitch04;
|
||||
level.attachpropsfunction["axis"]["coverrightstand"]["hide_2_aim"] = %corner_standr_trans_alert_2_b;
|
||||
level.attachpropsfunction["axis"]["coverrightstand"]["aim_2_hide"] = %corner_standr_trans_b_2_alert;
|
||||
level.attachpropsfunction["axis"]["coverrightstand"]["reload"] = %corner_standr_reload_v1;
|
||||
level.attachpropsfunction["axis"]["coverrightstand"]["fire"] = %exposed_aim_5;
|
||||
level.attachpropsfunction["axis"]["coverrightstand"]["death"] = %corner_standr_deathb;
|
||||
level.attachpropsfunction["axis"]["coverrightstand"]["pop_up_chance"] = 1;
|
||||
level.attachpropsfunction["axis"]["coverrightcrouch"]["idle"][0] = %cornercrr_alert_idle;
|
||||
level.attachpropsfunction["axis"]["coverrightcrouch"]["idle"][1] = %cornercrr_alert_twitch_v1;
|
||||
level.attachpropsfunction["axis"]["coverrightcrouch"]["idle"][2] = %cornercrr_alert_twitch_v2;
|
||||
level.attachpropsfunction["axis"]["coverrightcrouch"]["idle"][3] = %cornercrr_alert_twitch_v3;
|
||||
level.attachpropsfunction["axis"]["coverrightcrouch"]["hide_2_aim"] = %cornercrr_alert_2_lean;
|
||||
level.attachpropsfunction["axis"]["coverrightcrouch"]["aim_2_hide"] = %cornercrr_lean_2_alert;
|
||||
level.attachpropsfunction["axis"]["coverrightcrouch"]["reload"] = %cornercrr_reloada;
|
||||
level.attachpropsfunction["axis"]["coverrightcrouch"]["death"] = %exposed_crouch_death_fetal;
|
||||
level.attachpropsfunction["axis"]["coverrightcrouch"]["pop_up_chance"] = 1;
|
||||
level.attachpropsfunction["axis"]["coverguard"]["idle"][0] = %exposed_crouch_idle_twitch_v2;
|
||||
level.attachpropsfunction["axis"]["coverguard"]["idle"][1] = %exposed_crouch_idle_twitch_v3;
|
||||
level.attachpropsfunction["axis"]["coverguard"]["reload"] = %exposed_crouch_reload;
|
||||
level.attachpropsfunction["axis"]["coverguard"]["fire"] = %exposed_crouch_aim_5;
|
||||
level.attachpropsfunction["axis"]["coverguard"]["death"] = %exposed_crouch_death_fetal;
|
||||
level.attachpropsfunction["axis"]["coverguard"]["pop_up_chance"] = 0;
|
||||
level.attachpropsfunction["axis"]["coverprone"]["idle"][0] = %prone_reaction_a;
|
||||
level.attachpropsfunction["axis"]["coverprone"]["idle"][1] = %prone_twitch_ammocheck;
|
||||
level.attachpropsfunction["axis"]["coverprone"]["idle"][2] = %prone_twitch_scan;
|
||||
level.attachpropsfunction["axis"]["coverprone"]["idle"][3] = %prone_twitch_look;
|
||||
level.attachpropsfunction["axis"]["coverprone"]["idle"][4] = %prone_twitch_lookup;
|
||||
level.attachpropsfunction["axis"]["coverprone"]["hide_2_aim"] = %prone_2_crouch;
|
||||
level.attachpropsfunction["axis"]["coverprone"]["aim_2_hide"] = %crouch_2_prone;
|
||||
level.attachpropsfunction["axis"]["coverprone"]["reload"] = %prone_reload;
|
||||
level.attachpropsfunction["axis"]["coverprone"]["fire"] = %prone_fire_1;
|
||||
level.attachpropsfunction["axis"]["coverprone"]["fire_exposed"] = %exposed_crouch_aim_5;
|
||||
level.attachpropsfunction["axis"]["coverprone"]["death"] = %saw_gunner_prone_death;
|
||||
level.attachpropsfunction["axis"]["coverprone"]["pop_up_chance"] = 0.5;
|
||||
level.attachpropsfunction["axis"]["coverprone_no_pop"]["idle"][0] = %prone_reaction_a;
|
||||
level.attachpropsfunction["axis"]["coverprone_no_pop"]["idle"][1] = %prone_twitch_ammocheck;
|
||||
level.attachpropsfunction["axis"]["coverprone_no_pop"]["idle"][2] = %prone_twitch_scan;
|
||||
level.attachpropsfunction["axis"]["coverprone_no_pop"]["idle"][3] = %prone_twitch_look;
|
||||
level.attachpropsfunction["axis"]["coverprone_no_pop"]["idle"][4] = %prone_twitch_lookup;
|
||||
level.attachpropsfunction["axis"]["coverprone_no_pop"]["hide_2_aim"] = %prone_2_crouch;
|
||||
level.attachpropsfunction["axis"]["coverprone_no_pop"]["aim_2_hide"] = %crouch_2_prone;
|
||||
level.attachpropsfunction["axis"]["coverprone_no_pop"]["reload"] = %prone_reload;
|
||||
level.attachpropsfunction["axis"]["coverprone_no_pop"]["fire"] = %prone_fire_1;
|
||||
level.attachpropsfunction["axis"]["coverprone_no_pop"]["fire_exposed"] = %exposed_crouch_aim_5;
|
||||
level.attachpropsfunction["axis"]["coverprone_no_pop"]["death"] = %saw_gunner_prone_death;
|
||||
level.attachpropsfunction["axis"]["coverprone_no_pop"]["pop_up_chance"] = 0;
|
||||
level.attachpropsfunction["team3"]["stand"]["idle"] = %casual_stand_idle;
|
||||
level.attachpropsfunction["team3"]["stand"]["run"] = %run_lowready_f_relative;
|
||||
level.attachpropsfunction["team3"]["stand"]["death"] = %exposed_death;
|
||||
level._effect["ak47_muzzleflash"] = loadfx("muzzleflashes/ak47_flash_wv");
|
||||
level._effect["m16_muzzleflash"] = loadfx("muzzleflashes/m16_flash_wv");
|
||||
maps\_drone::initglobals();
|
||||
}
|
19
MW3/PC/SP/maps/_drone_civilian.gsc
Normal file
19
MW3/PC/SP/maps/_drone_civilian.gsc
Normal file
@ -0,0 +1,19 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_drone_civilian.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 1
|
||||
* Decompile Time: 10 ms
|
||||
* Timestamp: 10/27/2023 2:20:05 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
init()
|
||||
{
|
||||
level.attachpropsfunction["neutral"]["stand"]["idle"] = %casual_stand_idle;
|
||||
level.attachpropsfunction["neutral"]["stand"]["run"] = %unarmed_scared_run;
|
||||
level.attachpropsfunction["neutral"]["stand"]["death"] = %exposed_death;
|
||||
level.var_408D = ::animscripts/civilian/civilian_init::func_4083;
|
||||
maps\_drone::initglobals();
|
||||
}
|
1095
MW3/PC/SP/maps/_endmission.gsc
Normal file
1095
MW3/PC/SP/maps/_endmission.gsc
Normal file
File diff suppressed because it is too large
Load Diff
99
MW3/PC/SP/maps/_escalator.gsc
Normal file
99
MW3/PC/SP/maps/_escalator.gsc
Normal file
@ -0,0 +1,99 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_escalator.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 4
|
||||
* Decompile Time: 66 ms
|
||||
* Timestamp: 10/27/2023 2:22:58 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
init()
|
||||
{
|
||||
common_scripts\utility::flag_init("_escalator_on");
|
||||
common_scripts\utility::flag_set("_escalator_on");
|
||||
level.escalator_movespeed = 0.5;
|
||||
var_00 = getentarray("escalator","targetname");
|
||||
common_scripts\utility::array_thread(var_00,::escalator_startup);
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
escalator_startup()
|
||||
{
|
||||
var_00 = self;
|
||||
while(isdefined(var_00.target))
|
||||
{
|
||||
var_00 startusinglessfrequentlighting();
|
||||
var_00.true_origin = var_00.origin;
|
||||
var_00.next_step = getent(var_00.target,"targetname");
|
||||
var_00 = var_00.next_step;
|
||||
}
|
||||
|
||||
var_00.true_origin = var_00.origin;
|
||||
var_00.last = 1;
|
||||
var_00.next_step = self;
|
||||
thread escalator_move(self);
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
escalator_move(param_00)
|
||||
{
|
||||
var_01 = param_00;
|
||||
var_02 = var_01.origin;
|
||||
while(common_scripts\utility::flag("_escalator_on"))
|
||||
{
|
||||
var_03 = level.escalator_movespeed;
|
||||
var_04 = var_01.next_step;
|
||||
var_01 show();
|
||||
if(var_04 != param_00)
|
||||
{
|
||||
var_01 moveto(var_04.true_origin,var_03);
|
||||
}
|
||||
else
|
||||
{
|
||||
var_01.origin = var_02;
|
||||
}
|
||||
|
||||
if(var_04 == param_00)
|
||||
{
|
||||
var_01 hide();
|
||||
var_01.true_origin = var_02;
|
||||
param_00 = var_01;
|
||||
wait var_03;
|
||||
continue;
|
||||
}
|
||||
|
||||
var_01.true_origin = var_04.true_origin;
|
||||
var_01 = var_04;
|
||||
}
|
||||
|
||||
var_01 = param_00;
|
||||
for(;;)
|
||||
{
|
||||
var_03 = 2;
|
||||
var_04 = var_01.next_step;
|
||||
var_01 show();
|
||||
var_01 thread final_move(var_03,var_04);
|
||||
if(var_04 == param_00)
|
||||
{
|
||||
var_01 hide();
|
||||
var_01.true_origin = var_02;
|
||||
}
|
||||
|
||||
var_01.true_origin = var_04.true_origin;
|
||||
var_01 = var_04;
|
||||
if(var_01 == param_00)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
final_move(param_00,param_01)
|
||||
{
|
||||
self moveto(param_01.true_origin,param_00,0,param_00);
|
||||
wait param_00;
|
||||
self moveto(self.origin,0.05);
|
||||
}
|
230
MW3/PC/SP/maps/_flare.gsc
Normal file
230
MW3/PC/SP/maps/_flare.gsc
Normal file
@ -0,0 +1,230 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_flare.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 13
|
||||
* Decompile Time: 157 ms
|
||||
* Timestamp: 10/27/2023 2:20:05 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main(param_00,param_01)
|
||||
{
|
||||
if(!isdefined(level._effect))
|
||||
{
|
||||
level._effect = [];
|
||||
}
|
||||
|
||||
level._effect["flare_runner_intro"] = loadfx("misc/flare_start");
|
||||
level._effect["flare_runner"] = loadfx("misc/flare");
|
||||
level._effect["flare_runner_fizzout"] = loadfx("misc/flare_end");
|
||||
maps\_vehicle::build_template("flare",param_00,param_01,"script_vehicle");
|
||||
maps\_vehicle::build_localinit(::init_local);
|
||||
maps\_vehicle::build_life(9999);
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
init_local()
|
||||
{
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
merge_suncolor(param_00,param_01,param_02,param_03)
|
||||
{
|
||||
wait param_00;
|
||||
param_01 = param_01 * 20;
|
||||
var_04 = [];
|
||||
for(var_05 = 0;var_05 < param_01;var_05++)
|
||||
{
|
||||
var_06 = var_05 / param_01;
|
||||
level.thedif = var_06;
|
||||
var_07 = [];
|
||||
for(var_08 = 0;var_08 < 3;var_08++)
|
||||
{
|
||||
var_07[var_08] = param_03[var_08] * var_06 + param_02[var_08] * 1 - var_06;
|
||||
}
|
||||
|
||||
level.sun_color = (var_07[0],var_07[1],var_07[2]);
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
merge_sunsingledvar(param_00,param_01,param_02,param_03,param_04)
|
||||
{
|
||||
setsaveddvar(param_00,param_03);
|
||||
wait param_01;
|
||||
param_02 = param_02 * 20;
|
||||
var_05 = [];
|
||||
for(var_06 = 0;var_06 < param_02;var_06++)
|
||||
{
|
||||
var_07 = var_06 / param_02;
|
||||
level.thedif = var_07;
|
||||
var_08 = param_04 * var_07 + param_03 * 1 - var_07;
|
||||
setsaveddvar(param_00,var_08);
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
setsaveddvar(param_00,param_04);
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
merge_sunbrightness(param_00,param_01,param_02,param_03)
|
||||
{
|
||||
wait param_00;
|
||||
param_01 = param_01 * 20;
|
||||
var_04 = [];
|
||||
for(var_05 = 0;var_05 < param_01;var_05++)
|
||||
{
|
||||
var_06 = var_05 / param_01;
|
||||
level.thedif = var_06;
|
||||
var_07 = param_03 * var_06 + param_02 * 1 - var_06;
|
||||
level.sun_brightness = var_07;
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
level.sun_brightness = param_03;
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
combine_sunlight_and_brightness()
|
||||
{
|
||||
level endon("stop_combining_sunlight_and_brightness");
|
||||
wait 0.05;
|
||||
for(;;)
|
||||
{
|
||||
var_00 = level.sun_brightness;
|
||||
if(var_00 > 1)
|
||||
{
|
||||
var_00 = var_00 + randomfloat(0.2);
|
||||
}
|
||||
|
||||
var_01 = level.sun_color * var_00;
|
||||
setsunlight(var_01[0],var_01[1],var_01[2]);
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
flare_path()
|
||||
{
|
||||
thread maps\_vehicle::gopath(self);
|
||||
common_scripts\utility::flag_wait("flare_stop_setting_sundir");
|
||||
self delete();
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
flare_initial_fx()
|
||||
{
|
||||
var_00 = spawn("script_model",(0,0,0));
|
||||
var_00 setmodel("tag_origin");
|
||||
var_00 linkto(self,"tag_origin",(0,0,0),(0,0,0));
|
||||
playfxontag(level._effect["flare_runner_intro"],var_00,"tag_origin");
|
||||
self waittillmatch("flare_intro_node","noteworthy");
|
||||
var_00 delete();
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
flare_explodes()
|
||||
{
|
||||
common_scripts\utility::flag_set("flare_start_setting_sundir");
|
||||
level.sun_brightness = 1;
|
||||
level.red_suncolor = (0.8,0.4,0.4);
|
||||
level.original_suncolor = getmapsunlight();
|
||||
level.sun_color = level.original_suncolor;
|
||||
thread merge_sunsingledvar("sm_sunSampleSizeNear",0,0.25,0.25,1);
|
||||
thread combine_sunlight_and_brightness();
|
||||
thread merge_suncolor(0,0.25,level.original_suncolor,level.red_suncolor);
|
||||
thread merge_sunbrightness(0,0.25,1,3);
|
||||
var_00 = spawn("script_model",(0,0,0));
|
||||
var_00 setmodel("tag_origin");
|
||||
var_00 linkto(self,"tag_origin",(0,0,0),(0,0,0));
|
||||
playfxontag(level._effect["flare_runner"],var_00,"tag_origin");
|
||||
self waittillmatch("flare_fade_node","noteworthy");
|
||||
var_00 delete();
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
flare_burns_out()
|
||||
{
|
||||
var_00 = spawn("script_model",(0,0,0));
|
||||
var_00 setmodel("tag_origin");
|
||||
var_00 linkto(self,"tag_origin",(0,0,0),(0,0,0));
|
||||
playfxontag(level._effect["flare_runner_fizzout"],var_00,"tag_origin");
|
||||
thread merge_sunsingledvar("sm_sunSampleSizeNear",0,1,1,0.25);
|
||||
thread merge_sunbrightness(0,1,3,0);
|
||||
thread merge_suncolor(0,1,level.red_suncolor,level.original_suncolor);
|
||||
thread merge_sunbrightness(1,1,0,1);
|
||||
var_00 delete();
|
||||
wait 1;
|
||||
common_scripts\utility::flag_set("flare_stop_setting_sundir");
|
||||
resetsundirection();
|
||||
wait 1;
|
||||
level notify("stop_combining_sunlight_and_brightness");
|
||||
waittillframeend;
|
||||
resetsunlight();
|
||||
common_scripts\utility::flag_set("flare_complete");
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
flare_fx()
|
||||
{
|
||||
flare_initial_fx();
|
||||
flare_explodes();
|
||||
flare_burns_out();
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
flag_flare(param_00)
|
||||
{
|
||||
if(!isdefined(level.flag[param_00]))
|
||||
{
|
||||
common_scripts\utility::flag_init(param_00);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
flare_from_targetname(param_00)
|
||||
{
|
||||
var_01 = maps\_vehicle::spawn_vehicle_from_targetname(param_00);
|
||||
flag_flare("flare_in_use");
|
||||
flag_flare("flare_complete");
|
||||
flag_flare("flare_stop_setting_sundir");
|
||||
flag_flare("flare_start_setting_sundir");
|
||||
common_scripts\utility::flag_waitopen("flare_in_use");
|
||||
common_scripts\utility::flag_set("flare_in_use");
|
||||
resetsunlight();
|
||||
resetsundirection();
|
||||
var_01 thread flare_path();
|
||||
var_01 thread flare_fx();
|
||||
var_02 = getmapsundirection();
|
||||
var_03 = var_02;
|
||||
var_04 = var_03 * -100;
|
||||
common_scripts\utility::flag_wait("flare_start_setting_sundir");
|
||||
var_05 = getent(var_01.script_linkto,"script_linkname").origin;
|
||||
var_03 = vectortoangles(var_01.origin - var_05);
|
||||
var_06 = anglestoforward(var_03);
|
||||
for(;;)
|
||||
{
|
||||
wait 0.05;
|
||||
if(common_scripts\utility::flag("flare_stop_setting_sundir"))
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
var_03 = vectortoangles(var_01.origin - var_05);
|
||||
var_07 = anglestoforward(var_03);
|
||||
lerpsundirection(var_06,var_07,0.05);
|
||||
var_06 = var_07;
|
||||
}
|
||||
|
||||
common_scripts\utility::flag_wait("flare_complete");
|
||||
waittillframeend;
|
||||
common_scripts\utility::flag_clear("flare_complete");
|
||||
common_scripts\utility::flag_clear("flare_stop_setting_sundir");
|
||||
common_scripts\utility::flag_clear("flare_start_setting_sundir");
|
||||
resetsunlight();
|
||||
resetsundirection();
|
||||
common_scripts\utility::flag_clear("flare_in_use");
|
||||
}
|
120
MW3/PC/SP/maps/_float.gsc
Normal file
120
MW3/PC/SP/maps/_float.gsc
Normal file
@ -0,0 +1,120 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_float.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 5
|
||||
* Decompile Time: 57 ms
|
||||
* Timestamp: 10/27/2023 2:20:06 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main(param_00,param_01,param_02,param_03,param_04)
|
||||
{
|
||||
var_05 = getentarray("script_floater","targetname");
|
||||
if(!var_05.size)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var_06 = 10;
|
||||
var_07 = 0.5;
|
||||
var_08 = 50;
|
||||
var_09 = (0,0,0);
|
||||
var_0A = 10;
|
||||
if(isdefined(param_00))
|
||||
{
|
||||
var_06 = param_00;
|
||||
}
|
||||
|
||||
if(isdefined(param_01))
|
||||
{
|
||||
var_07 = param_01;
|
||||
}
|
||||
|
||||
if(isdefined(param_02))
|
||||
{
|
||||
var_08 = param_02;
|
||||
}
|
||||
|
||||
if(isdefined(param_04))
|
||||
{
|
||||
var_09 = param_04;
|
||||
}
|
||||
|
||||
if(isdefined(param_03))
|
||||
{
|
||||
var_0A = param_03;
|
||||
}
|
||||
|
||||
for(var_0B = 0;var_0B < var_05.size;var_0B++)
|
||||
{
|
||||
var_05[var_0B] thread floater_think(var_06,var_07,var_08,var_0A,var_09);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
floater_think(param_00,param_01,param_02,param_03,param_04)
|
||||
{
|
||||
self.range = param_00;
|
||||
self.time = 1 / param_01;
|
||||
self.acc = self.time * 0.25;
|
||||
var_05 = self getorigin();
|
||||
var_06 = 360 / param_02;
|
||||
var_07 = distance(var_05,param_04);
|
||||
var_08 = var_07 * var_06;
|
||||
var_09 = sin(var_08);
|
||||
if(cos(var_08) < 0)
|
||||
{
|
||||
self.range = -1 * self.range;
|
||||
}
|
||||
|
||||
var_0A = spawn("script_origin",var_05);
|
||||
self linkto(var_0A);
|
||||
var_0B = vectortoangles(var_05 - param_04);
|
||||
self.nangles = var_0A.angles;
|
||||
var_0A.angles = var_0A.angles + (param_03,param_03 * 0.25,var_0B[2]);
|
||||
self.rangles = var_0A.angles;
|
||||
thread floater_move(var_09,var_0A);
|
||||
thread floater_bob(var_09,var_0A);
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
floater_bob(param_00,param_01)
|
||||
{
|
||||
self endon("death");
|
||||
self endon("stop_float_script");
|
||||
wait abval(self.time * param_00);
|
||||
for(;;)
|
||||
{
|
||||
self.rangles = self.rangles * -1;
|
||||
param_01 rotateto(self.rangles,self.time,self.acc,self.acc);
|
||||
param_01 waittill("rotatedone");
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
floater_move(param_00,param_01)
|
||||
{
|
||||
self endon("death");
|
||||
self endon("stop_float_script");
|
||||
wait abval(self.time * param_00);
|
||||
param_01 movez(self.range * 0.5,self.time * 0.5,self.acc,self.acc);
|
||||
for(;;)
|
||||
{
|
||||
param_01 waittill("movedone");
|
||||
self.range = -1 * self.range;
|
||||
param_01 movez(self.range,self.time,self.acc,self.acc);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
abval(param_00)
|
||||
{
|
||||
if(param_00 < 0)
|
||||
{
|
||||
return -1 * param_00;
|
||||
}
|
||||
|
||||
return param_00;
|
||||
}
|
444
MW3/PC/SP/maps/_friendlyfire.gsc
Normal file
444
MW3/PC/SP/maps/_friendlyfire.gsc
Normal file
@ -0,0 +1,444 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_friendlyfire.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 15
|
||||
* Decompile Time: 246 ms
|
||||
* Timestamp: 10/27/2023 2:22:59 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
level.friendlyfire["min_participation"] = -200;
|
||||
level.friendlyfire["max_participation"] = 1000;
|
||||
level.friendlyfire["enemy_kill_points"] = 250;
|
||||
level.friendlyfire["friend_kill_points"] = -650;
|
||||
level.friendlyfire["point_loss_interval"] = 1.25;
|
||||
level.player.participation = 0;
|
||||
level.friendlyfiredisabled = 0;
|
||||
level.friendlyfiredisabledfordestructible = 0;
|
||||
setdvarifuninitialized("friendlyfire_dev_disabled","0");
|
||||
common_scripts\utility::flag_init("friendly_fire_warning");
|
||||
thread debug_friendlyfire();
|
||||
thread participation_point_flattenovertime();
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
debug_friendlyfire()
|
||||
{
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
friendly_fire_think(param_00)
|
||||
{
|
||||
if(!isdefined(param_00))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(!isdefined(param_00.team))
|
||||
{
|
||||
param_00.team = "allies";
|
||||
}
|
||||
|
||||
if(isdefined(level.no_friendly_fire_penalty))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
level endon("mission failed");
|
||||
level thread notifydamage(param_00);
|
||||
level thread notifydamagenotdone(param_00);
|
||||
level thread notifydeath(param_00);
|
||||
for(;;)
|
||||
{
|
||||
if(!isdefined(param_00))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(param_00.health <= 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var_01 = undefined;
|
||||
var_02 = undefined;
|
||||
var_03 = undefined;
|
||||
var_04 = undefined;
|
||||
var_05 = undefined;
|
||||
var_06 = undefined;
|
||||
var_07 = undefined;
|
||||
param_00 waittill("friendlyfire_notify",var_01,var_02,var_03,var_04,var_05,var_06);
|
||||
if(!isdefined(param_00))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(!isdefined(var_02))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_08 = 0;
|
||||
if(!isdefined(var_06))
|
||||
{
|
||||
var_06 = param_00.damageweapon;
|
||||
}
|
||||
|
||||
if(isdefined(level.friendlyfire_destructible_attacker))
|
||||
{
|
||||
if(isdefined(var_02.damageowner))
|
||||
{
|
||||
var_07 = 1;
|
||||
var_02 = var_02.damageowner;
|
||||
}
|
||||
}
|
||||
|
||||
if(isplayer(var_02))
|
||||
{
|
||||
var_08 = 1;
|
||||
if(isdefined(var_06) && var_06 == "none")
|
||||
{
|
||||
var_08 = 0;
|
||||
}
|
||||
|
||||
if(var_02 isusingturret())
|
||||
{
|
||||
var_08 = 1;
|
||||
}
|
||||
|
||||
if(isdefined(var_07))
|
||||
{
|
||||
var_08 = 1;
|
||||
}
|
||||
}
|
||||
else if(isdefined(var_02.code_classname) && var_02.code_classname == "script_vehicle")
|
||||
{
|
||||
var_09 = var_02 getvehicleowner();
|
||||
if(isdefined(var_09) && isplayer(var_09))
|
||||
{
|
||||
var_08 = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if(!var_08)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(!isdefined(param_00.team))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_0A = param_00.team == level.player.team;
|
||||
var_0B = undefined;
|
||||
if(level.script == "airport")
|
||||
{
|
||||
var_0B = 0;
|
||||
}
|
||||
else if(isdefined(param_00.type) && param_00.type == "civilian")
|
||||
{
|
||||
var_0B = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_0B = issubstr(param_00.classname,"civilian");
|
||||
}
|
||||
|
||||
var_0C = var_01 == -1;
|
||||
if(!var_0A && !var_0B)
|
||||
{
|
||||
if(var_0C)
|
||||
{
|
||||
level.player.participation = level.player.participation + level.friendlyfire["enemy_kill_points"];
|
||||
participation_point_cap();
|
||||
return;
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if(isdefined(param_00.no_friendly_fire_penalty))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(var_05 == "MOD_PROJECTILE_SPLASH" && isdefined(level.no_friendly_fire_splash_damage))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(isdefined(var_06) && var_06 == "claymore")
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(var_0C)
|
||||
{
|
||||
if(isdefined(param_00.friend_kill_points))
|
||||
{
|
||||
level.player.participation = level.player.participation + param_00.friend_kill_points;
|
||||
}
|
||||
else
|
||||
{
|
||||
level.player.participation = level.player.participation + level.friendlyfire["friend_kill_points"];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
level.player.participation = level.player.participation - var_01;
|
||||
}
|
||||
|
||||
participation_point_cap();
|
||||
if(check_grenade(param_00,var_05) && savecommit_aftergrenade())
|
||||
{
|
||||
if(var_0C)
|
||||
{
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if(isdefined(level.friendly_fire_fail_check))
|
||||
{
|
||||
[[ level.friendly_fire_fail_check ]](param_00,var_01,var_02,var_03,var_04,var_05,var_06);
|
||||
continue;
|
||||
}
|
||||
|
||||
friendly_fire_checkpoints(var_0B);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
friendly_fire_checkpoints(param_00)
|
||||
{
|
||||
if(isdefined(level.failonfriendlyfire) && level.failonfriendlyfire)
|
||||
{
|
||||
level thread missionfail(param_00);
|
||||
return;
|
||||
}
|
||||
|
||||
var_01 = level.friendlyfiredisabledfordestructible;
|
||||
if(isdefined(level.friendlyfire_destructible_attacker) && param_00)
|
||||
{
|
||||
var_01 = 0;
|
||||
}
|
||||
|
||||
if(var_01)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(level.friendlyfiredisabled == 1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(level.player.participation <= level.friendlyfire["min_participation"])
|
||||
{
|
||||
level thread missionfail(param_00);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
check_grenade(param_00,param_01)
|
||||
{
|
||||
if(!isdefined(param_00))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
var_02 = 0;
|
||||
if(isdefined(param_00.damageweapon) && param_00.damageweapon == "none")
|
||||
{
|
||||
var_02 = 1;
|
||||
}
|
||||
|
||||
if(isdefined(param_01) && param_01 == "MOD_GRENADE_SPLASH")
|
||||
{
|
||||
var_02 = 1;
|
||||
}
|
||||
|
||||
return var_02;
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
savecommit_aftergrenade()
|
||||
{
|
||||
var_00 = gettime();
|
||||
if(var_00 < 4500)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
else if(var_00 - level.lastautosavetime < 4500)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
participation_point_cap()
|
||||
{
|
||||
if(level.player.participation > level.friendlyfire["max_participation"])
|
||||
{
|
||||
level.player.participation = level.friendlyfire["max_participation"];
|
||||
}
|
||||
|
||||
if(level.player.participation < level.friendlyfire["min_participation"])
|
||||
{
|
||||
level.player.participation = level.friendlyfire["min_participation"];
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
participation_point_flattenovertime()
|
||||
{
|
||||
level endon("mission failed");
|
||||
for(;;)
|
||||
{
|
||||
if(level.player.participation > 0)
|
||||
{
|
||||
level.player.participation--;
|
||||
}
|
||||
else if(level.player.participation < 0)
|
||||
{
|
||||
level.player.participation++;
|
||||
}
|
||||
|
||||
wait level.friendlyfire["point_loss_interval"];
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
turnbackon()
|
||||
{
|
||||
level.friendlyfiredisabled = 0;
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
turnoff()
|
||||
{
|
||||
level.friendlyfiredisabled = 1;
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
missionfail(param_00)
|
||||
{
|
||||
if(!isdefined(param_00))
|
||||
{
|
||||
param_00 = 0;
|
||||
}
|
||||
|
||||
if(level.script == "airport")
|
||||
{
|
||||
if(param_00)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
common_scripts\utility::flag_set("friendly_fire_warning");
|
||||
return;
|
||||
}
|
||||
|
||||
if(getdvar("friendlyfire_dev_disabled") == "1")
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
level.player endon("death");
|
||||
if(!isalive(level.player))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
level endon("mine death");
|
||||
level notify("mission failed");
|
||||
level notify("friendlyfire_mission_fail");
|
||||
waittillframeend;
|
||||
setsaveddvar("hud_missionFailed",1);
|
||||
if(isdefined(level.player.failingmission))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(param_00)
|
||||
{
|
||||
setdvar("ui_deadquote",&"SCRIPT_MISSIONFAIL_CIVILIAN_KILLED");
|
||||
}
|
||||
else if(isdefined(level.custom_friendly_fire_message))
|
||||
{
|
||||
setdvar("ui_deadquote",level.custom_friendly_fire_message);
|
||||
}
|
||||
else if(level.campaign == "british")
|
||||
{
|
||||
setdvar("ui_deadquote",&"SCRIPT_MISSIONFAIL_KILLTEAM_BRITISH");
|
||||
}
|
||||
else if(level.campaign == "russian")
|
||||
{
|
||||
setdvar("ui_deadquote",&"SCRIPT_MISSIONFAIL_KILLTEAM_RUSSIAN");
|
||||
}
|
||||
else
|
||||
{
|
||||
setdvar("ui_deadquote",&"SCRIPT_MISSIONFAIL_KILLTEAM_AMERICAN");
|
||||
}
|
||||
|
||||
if(isdefined(level.custom_friendly_fire_shader))
|
||||
{
|
||||
thread maps\_load::special_death_indicator_hudelement(level.custom_friendly_fire_shader,64,64,0);
|
||||
}
|
||||
|
||||
reconspatialevent(level.player.origin,"script_friendlyfire: civilian %d",param_00);
|
||||
maps\_utility::missionfailedwrapper();
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
notifydamage(param_00)
|
||||
{
|
||||
level endon("mission failed");
|
||||
param_00 endon("death");
|
||||
for(;;)
|
||||
{
|
||||
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;
|
||||
var_0A = undefined;
|
||||
param_00 waittill("damage",var_01,var_02,var_03,var_04,var_05,var_06,var_07,var_08,var_09,var_0A);
|
||||
param_00 notify("friendlyfire_notify",var_01,var_02,var_03,var_04,var_05,var_0A);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
notifydamagenotdone(param_00)
|
||||
{
|
||||
level endon("mission failed");
|
||||
param_00 waittill("damage_notdone",var_01,var_02,var_03,var_04,var_05);
|
||||
param_00 notify("friendlyfire_notify",-1,var_02,undefined,undefined,var_05);
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
notifydeath(param_00)
|
||||
{
|
||||
level endon("mission failed");
|
||||
param_00 waittill("death",var_01,var_02,var_03);
|
||||
param_00 notify("friendlyfire_notify",-1,var_01,undefined,undefined,var_02,var_03);
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
detectfriendlyfireonentity(param_00)
|
||||
{
|
||||
}
|
223
MW3/PC/SP/maps/_fx.gsc
Normal file
223
MW3/PC/SP/maps/_fx.gsc
Normal file
@ -0,0 +1,223 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_fx.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 10
|
||||
* Decompile Time: 149 ms
|
||||
* Timestamp: 10/27/2023 2:23:05 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
script_print_fx()
|
||||
{
|
||||
if(!isdefined(self.script_fxid) || !isdefined(self.script_fxcommand) || !isdefined(self.script_delay))
|
||||
{
|
||||
self delete();
|
||||
return;
|
||||
}
|
||||
|
||||
if(isdefined(self.target))
|
||||
{
|
||||
var_00 = getent(self.target).origin;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_00 = "undefined";
|
||||
}
|
||||
|
||||
if(self.script_fxcommand == "OneShotfx")
|
||||
{
|
||||
}
|
||||
|
||||
if(self.script_fxcommand == "loopfx")
|
||||
{
|
||||
}
|
||||
|
||||
if(self.script_fxcommand == "loopsound")
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
script_playfx(param_00,param_01,param_02)
|
||||
{
|
||||
if(!param_00)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(isdefined(param_02))
|
||||
{
|
||||
playfx(param_00,param_01,param_02);
|
||||
return;
|
||||
}
|
||||
|
||||
playfx(param_00,param_01);
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
script_playfxontag(param_00,param_01,param_02)
|
||||
{
|
||||
if(!param_00)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
playfxontag(param_00,param_01,param_02);
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
grenadeexplosionfx(param_00)
|
||||
{
|
||||
playfx(level._effect["mechanical explosion"],param_00);
|
||||
earthquake(0.15,0.5,param_00,250);
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
soundfx(param_00,param_01,param_02)
|
||||
{
|
||||
var_03 = spawn("script_origin",(0,0,0));
|
||||
var_03.origin = param_01;
|
||||
var_03 playloopsound(param_00);
|
||||
if(isdefined(param_02))
|
||||
{
|
||||
var_03 thread soundfxdelete(param_02);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
soundfxdelete(param_00)
|
||||
{
|
||||
level waittill(param_00);
|
||||
self delete();
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
rainfx(param_00,param_01,param_02)
|
||||
{
|
||||
var_03 = spawn("script_origin",(0,0,0));
|
||||
var_03.origin = param_02;
|
||||
var_03 thread rainloop(param_00,param_01);
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
rainloop(param_00,param_01)
|
||||
{
|
||||
self endon("death");
|
||||
var_02 = spawn("sound_blend",(0,0,0));
|
||||
var_02.origin = self.origin;
|
||||
thread blenddelete(var_02);
|
||||
var_03 = spawn("sound_blend",(0,0,0));
|
||||
var_03.origin = self.origin;
|
||||
thread blenddelete(var_03);
|
||||
var_02 setsoundblend(param_01 + "_null",param_01,0);
|
||||
var_03 setsoundblend(param_00 + "_null",param_00,1);
|
||||
var_04 = "hard";
|
||||
var_05 = undefined;
|
||||
for(;;)
|
||||
{
|
||||
level waittill("rain_change",var_06,var_05);
|
||||
var_05 = var_05 * 20;
|
||||
if(var_06 == "hard")
|
||||
{
|
||||
if(var_04 == "none")
|
||||
{
|
||||
var_05 = var_05 * 0.5;
|
||||
for(var_07 = 0;var_07 < var_05;var_07++)
|
||||
{
|
||||
var_02 setsoundblend(param_01 + "_null",param_01,var_07 / var_05);
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
var_04 = "light";
|
||||
}
|
||||
|
||||
if(var_04 == "light")
|
||||
{
|
||||
for(var_07 = 0;var_07 < var_05;var_07++)
|
||||
{
|
||||
var_02 setsoundblend(param_01 + "_null",param_01,1 - var_07 / var_05);
|
||||
var_03 setsoundblend(param_00 + "_null",param_00,var_07 / var_05);
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(var_06 == "none")
|
||||
{
|
||||
if(var_04 == "hard")
|
||||
{
|
||||
var_05 = var_05 * 0.5;
|
||||
for(var_07 = 0;var_07 < var_05;var_07++)
|
||||
{
|
||||
var_02 setsoundblend(param_01 + "_null",param_01,var_07 / var_05);
|
||||
var_03 setsoundblend(param_00 + "_null",param_00,1 - var_07 / var_05);
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
var_04 = "light";
|
||||
}
|
||||
|
||||
if(var_04 == "light")
|
||||
{
|
||||
for(var_07 = 0;var_07 < var_05;var_07++)
|
||||
{
|
||||
var_02 setsoundblend(param_01 + "_null",param_01,1 - var_07 / var_05);
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(var_06 == "light")
|
||||
{
|
||||
if(var_04 == "none")
|
||||
{
|
||||
for(var_07 = 0;var_07 < var_05;var_07++)
|
||||
{
|
||||
var_02 setsoundblend(param_01 + "_null",param_01,var_07 / var_05);
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
if(var_04 == "hard")
|
||||
{
|
||||
for(var_07 = 0;var_07 < var_05;var_07++)
|
||||
{
|
||||
var_02 setsoundblend(param_01 + "_null",param_01,var_07 / var_05);
|
||||
var_03 setsoundblend(param_00 + "_null",param_00,1 - var_07 / var_05);
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var_04 = var_06;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
blenddelete(param_00)
|
||||
{
|
||||
self waittill("death");
|
||||
param_00 delete();
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
watersheeting(param_00)
|
||||
{
|
||||
var_01 = 3;
|
||||
if(isdefined(param_00.script_duration))
|
||||
{
|
||||
var_01 = param_00.script_duration;
|
||||
}
|
||||
|
||||
for(;;)
|
||||
{
|
||||
param_00 waittill("trigger",var_02);
|
||||
if(isplayer(var_02))
|
||||
{
|
||||
var_02 setwatersheeting(1,var_01);
|
||||
wait var_01 * 0.2;
|
||||
}
|
||||
}
|
||||
}
|
2319
MW3/PC/SP/maps/_gameskill.gsc
Normal file
2319
MW3/PC/SP/maps/_gameskill.gsc
Normal file
File diff suppressed because it is too large
Load Diff
119
MW3/PC/SP/maps/_global_fx.gsc
Normal file
119
MW3/PC/SP/maps/_global_fx.gsc
Normal file
@ -0,0 +1,119 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_global_fx.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 3
|
||||
* Decompile Time: 44 ms
|
||||
* Timestamp: 10/27/2023 2:22:23 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
if(!isdefined(level.global_fx))
|
||||
{
|
||||
level.global_fx = [];
|
||||
}
|
||||
|
||||
level._global_fx_ents = [];
|
||||
var_00 = randomfloatrange(-20,-15);
|
||||
global_fx("barrel_fireFX_origin","global_barrel_fire","fire/firelp_barrel_pm",var_00,"fire_barrel_small");
|
||||
global_fx("ch_streetlight_02_FX_origin","ch_streetlight_02_FX","misc/lighthaze",var_00);
|
||||
global_fx("me_streetlight_01_FX_origin","me_streetlight_01_FX","misc/lighthaze_bog_a",var_00);
|
||||
global_fx("ch_street_light_01_on","lamp_glow_FX","misc/lighthaze",var_00);
|
||||
global_fx("com_wall_streetlamp_on","com_wall_streetlamp_on_FX","misc/light_glow_white_dim",var_00);
|
||||
global_fx("lamp_post_globe_on","lamp_glow_FX","misc/light_glow_white",var_00);
|
||||
global_fx("highway_lamp_post","ch_streetlight_02_FX","misc/lighthaze_villassault",var_00);
|
||||
global_fx("cs_cargoship_spotlight_on_FX_origin","cs_cargoship_spotlight_on_FX","misc/lighthaze",var_00);
|
||||
global_fx("me_dumpster_fire_FX_origin","me_dumpster_fire_FX","fire/firelp_med_pm",var_00,"fire_dumpster_medium");
|
||||
global_fx("com_tires_burning01_FX_origin","com_tires_burning01_FX","fire/tire_fire_med",var_00);
|
||||
global_fx("icbm_powerlinetower_FX_origin","icbm_powerlinetower_FX","misc/power_tower_light_red_blink",var_00);
|
||||
global_fx("icbm_mainframe_FX_origin","icbm_mainframe_FX","props/icbm_mainframe_lightblink",var_00);
|
||||
global_fx("light_pulse_red_FX_origin","light_pulse_red_FX","misc/light_glow_red_generic_pulse",-2);
|
||||
global_fx("light_pulse_red_FX_origin","light_pulse_red_FX","misc/light_glow_red_generic_pulse",-2);
|
||||
global_fx("light_pulse_orange_FX_origin","light_pulse_orange_FX","misc/light_glow_orange_generic_pulse",-2);
|
||||
global_fx("light_red_blink_FX_origin","light_red_blink","misc/power_tower_light_red_blink",-2);
|
||||
global_fx("lighthaze_oilrig_FX_origin","lighthaze_oilrig","misc/lighthaze_oilrig",var_00);
|
||||
global_fx("lighthaze_white_FX_origin","lighthaze_white","misc/lighthaze_white",var_00);
|
||||
global_fx("light_glow_walllight_white_FX_origin","light_glow_walllight_white","misc/light_glow_walllight_white",var_00);
|
||||
global_fx("fluorescent_glow_FX_origin","fluorescent_glow","misc/fluorescent_glow",var_00);
|
||||
global_fx("light_glow_industrial_FX_origin","light_glow_industrial","misc/light_glow_industrial",var_00);
|
||||
global_fx("light_red_steady_FX_origin","light_red_steady","misc/tower_light_red_steady",-2);
|
||||
global_fx("light_blue_steady_FX_origin","light_blue_steady","misc/tower_light_blue_steady",-2);
|
||||
global_fx("light_orange_steady_FX_origin","light_orange_steady","misc/tower_light_orange_steady",-2);
|
||||
global_fx("glow_stick_pile_FX_origin","glow_stick_pile","misc/glow_stick_glow_pile",-2);
|
||||
global_fx("highrise_blinky_tower","highrise_blinky_tower_FX","misc/power_tower_light_red_blink_large",var_00,undefined,1.5);
|
||||
global_fx("flare_ambient_FX_origin","flare_ambient_FX","misc/flare_ambient",var_00,"emt_road_flare_burn",1.5);
|
||||
global_fx("light_glow_white_bulb_FX_origin","light_glow_white_bulb_FX","misc/light_glow_white_bulb",var_00);
|
||||
global_fx("light_glow_white_lamp_FX_origin","light_glow_white_lamp_FX","misc/light_glow_white_lamp",var_00);
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
global_fx(param_00,param_01,param_02,param_03,param_04,param_05)
|
||||
{
|
||||
level.global_fx[param_00] = param_01;
|
||||
var_06 = maps\_utility::getstructarray_delete(param_00,"targetname");
|
||||
if(!isdefined(var_06))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(var_06.size <= 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
for(var_07 = 0;var_07 < var_06.size;var_07++)
|
||||
{
|
||||
var_08 = var_06[var_07] global_fx_create(param_01,param_02,param_03,param_04,param_05);
|
||||
if(!isdefined(var_06[var_07].script_noteworthy))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_09 = var_06[var_07].script_noteworthy;
|
||||
if(!isdefined(level._global_fx_ents[var_09]))
|
||||
{
|
||||
level._global_fx_ents[var_09] = [];
|
||||
}
|
||||
|
||||
level._global_fx_ents[var_09][level._global_fx_ents[var_09].size] = var_08;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
global_fx_create(param_00,param_01,param_02,param_03,param_04)
|
||||
{
|
||||
if(!isdefined(level._effect))
|
||||
{
|
||||
level._effect = [];
|
||||
}
|
||||
|
||||
if(!isdefined(level._effect[param_00]))
|
||||
{
|
||||
level._effect[param_00] = loadfx(param_01);
|
||||
}
|
||||
|
||||
if(isdefined(param_04))
|
||||
{
|
||||
param_02 = param_02 + randomfloat(param_04);
|
||||
}
|
||||
|
||||
if(!isdefined(self.angles))
|
||||
{
|
||||
self.angles = (0,0,0);
|
||||
}
|
||||
|
||||
var_05 = common_scripts\utility::createoneshoteffect(param_00);
|
||||
var_05.v["origin"] = self.origin;
|
||||
var_05.v["angles"] = self.angles;
|
||||
var_05.v["fxid"] = param_00;
|
||||
var_05.v["delay"] = param_02;
|
||||
if(isdefined(param_03))
|
||||
{
|
||||
var_05.v["soundalias"] = param_03;
|
||||
}
|
||||
|
||||
return var_05;
|
||||
}
|
167
MW3/PC/SP/maps/_heli_ride.gsc
Normal file
167
MW3/PC/SP/maps/_heli_ride.gsc
Normal file
@ -0,0 +1,167 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_heli_ride.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 5
|
||||
* Decompile Time: 55 ms
|
||||
* Timestamp: 10/27/2023 2:20:06 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
ride_setup(param_00,param_01)
|
||||
{
|
||||
maps\_vehicle::godon();
|
||||
maps\_vehicle_aianim::getout_rigspawn(maps\_vehicle_aianim::getanimatemodel(),3);
|
||||
if(!isdefined(param_01))
|
||||
{
|
||||
param_01 = level.players;
|
||||
}
|
||||
|
||||
foreach(var_03 in param_01)
|
||||
{
|
||||
thread attach_player(var_03,3);
|
||||
}
|
||||
|
||||
var_05 = 95;
|
||||
if(isdefined(param_00.speed))
|
||||
{
|
||||
var_05 = param_00.speed;
|
||||
}
|
||||
|
||||
self setairresistance(30);
|
||||
self vehicle_setspeed(var_05,40,level.heli_default_decel);
|
||||
maps\_vehicle::vehicle_paths(param_00);
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
attach_player(param_00,param_01,param_02)
|
||||
{
|
||||
param_00 thread player_in_heli(self);
|
||||
if(getdvar("fastrope_arms") == "")
|
||||
{
|
||||
setdvar("fastrope_arms","0");
|
||||
}
|
||||
|
||||
if(!isdefined(param_02))
|
||||
{
|
||||
param_02 = 0;
|
||||
}
|
||||
|
||||
var_03 = undefined;
|
||||
for(var_04 = 0;var_04 < self.riders.size;var_04++)
|
||||
{
|
||||
if(self.riders[var_04].vehicle_position == param_01)
|
||||
{
|
||||
var_03 = self.riders[var_04];
|
||||
var_03.drone_delete_on_unload = 1;
|
||||
var_03.playerpiggyback = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
var_05 = maps\_vehicle_aianim::anim_pos(self,param_01);
|
||||
var_03 notify("newanim");
|
||||
var_03 detachall();
|
||||
var_03 setmodel("fastrope_arms");
|
||||
var_03 useanimtree(var_05.player_animtree);
|
||||
thread maps\_vehicle_aianim::guy_idle(var_03,param_01);
|
||||
wait 0.1;
|
||||
if(isdefined(level.little_bird))
|
||||
{
|
||||
param_00 playerlinkto(var_03,"tag_player",0.35,120,28,30,30,0);
|
||||
}
|
||||
else
|
||||
{
|
||||
param_00 playerlinkto(var_03,"tag_player",0.35,60,28,30,30,0);
|
||||
}
|
||||
|
||||
param_00 freezecontrols(0);
|
||||
var_03 hide();
|
||||
var_06 = getanimlength(var_05.getout);
|
||||
var_06 = var_06 - param_02;
|
||||
self waittill("unloading");
|
||||
if(getdvar("fastrope_arms") != "0")
|
||||
{
|
||||
var_03 show();
|
||||
}
|
||||
|
||||
param_00 disableweapons();
|
||||
wait var_06;
|
||||
param_00 unlink();
|
||||
param_00 enableweapons();
|
||||
setsaveddvar("hud_drawhud","1");
|
||||
level notify("stop_draw_hud_on_death");
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
player_in_heli(param_00)
|
||||
{
|
||||
setsaveddvar("g_friendlyNameDist",0);
|
||||
setsaveddvar("g_friendlyfireDist",0);
|
||||
maps\_utility::hide_player_model();
|
||||
self allowsprint(0);
|
||||
self allowprone(0);
|
||||
self allowstand(0);
|
||||
self enableinvulnerability();
|
||||
self.ignoreme = 1;
|
||||
wait 0.05;
|
||||
self setplayerangles((0,35,0));
|
||||
param_00 waittill("unloading");
|
||||
self notify("stop_quake");
|
||||
wait 6;
|
||||
maps\_utility::autosave_by_name("on_the_ground");
|
||||
self allowprone(0);
|
||||
self allowstand(1);
|
||||
self allowcrouch(0);
|
||||
wait 0.05;
|
||||
self allowprone(1);
|
||||
self allowcrouch(1);
|
||||
self disableinvulnerability();
|
||||
self.ignoreme = 0;
|
||||
self allowsprint(1);
|
||||
wait 4;
|
||||
maps\_utility::show_player_model();
|
||||
if(self == level.player)
|
||||
{
|
||||
for(var_01 = 0;var_01 < 24;var_01++)
|
||||
{
|
||||
self setorigin(self.origin + (2,0,0));
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
setsaveddvar("g_friendlyNameDist",15000);
|
||||
setsaveddvar("g_friendlyfireDist",128);
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
player_heli_ropeanimoverride_idle(param_00,param_01,param_02)
|
||||
{
|
||||
self endon("unloading");
|
||||
maps\_vehicle_aianim::animontag(param_00,param_01,param_02);
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
ride_start(param_00,param_01)
|
||||
{
|
||||
var_02 = "heli_ride_in";
|
||||
var_03 = getentarray(var_02,"targetname");
|
||||
if(!var_03.size)
|
||||
{
|
||||
var_03 = common_scripts\utility::getstructarray("heli_ride_in","targetname");
|
||||
if(!var_03.size)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
var_03 = var_03[0];
|
||||
if(isdefined(param_01))
|
||||
{
|
||||
maps\_vehicle::vehicle_spawn_group_limit_riders(level.gag_heliride_spawner.script_vehicleride,param_01);
|
||||
}
|
||||
|
||||
var_04 = maps\_vehicle::vehicle_spawn(level.gag_heliride_spawner);
|
||||
var_04 thread ride_setup(var_03,param_00);
|
||||
return var_04;
|
||||
}
|
287
MW3/PC/SP/maps/_helicopter_ai.gsc
Normal file
287
MW3/PC/SP/maps/_helicopter_ai.gsc
Normal file
@ -0,0 +1,287 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_helicopter_ai.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 10
|
||||
* Decompile Time: 155 ms
|
||||
* Timestamp: 10/27/2023 2:23:14 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
evasive_think(param_00)
|
||||
{
|
||||
param_00 endon("death");
|
||||
while(param_00.health > 0)
|
||||
{
|
||||
param_00 waittill("missile_lock",var_01);
|
||||
var_02 = evasive_createmaneuvers(param_00,"random");
|
||||
evasive_startmaneuvers(param_00,var_02);
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
evasive_createmaneuvers(param_00,param_01)
|
||||
{
|
||||
switch(param_01)
|
||||
{
|
||||
case "strafe_left_right":
|
||||
param_00 evasive_addpoint(3000,-1500,500,"average");
|
||||
param_00 evasive_addpoint(6000,3000,-700,"average");
|
||||
param_00 evasive_addpoint(3000,-1500,200,"average");
|
||||
break;
|
||||
|
||||
case "strafe_right_left":
|
||||
param_00 evasive_addpoint(3000,1500,500,"average");
|
||||
param_00 evasive_addpoint(6000,-3000,-700,"average");
|
||||
param_00 evasive_addpoint(3000,1500,200,"average");
|
||||
break;
|
||||
|
||||
case "360_clockwise":
|
||||
param_00 evasive_addpoint(1500,1500,200,"none");
|
||||
param_00 evasive_addpoint(0,1500,200,"none");
|
||||
param_00 evasive_addpoint(-1500,1500,200,"none");
|
||||
param_00 evasive_addpoint(-1500,0,0,"none");
|
||||
param_00 evasive_addpoint(-1000,-1000,-200,"none");
|
||||
param_00 evasive_addpoint(0,-1000,-200,"none");
|
||||
param_00 evasive_addpoint(1000,-1000,-200,"none");
|
||||
break;
|
||||
|
||||
case "360_counter_clockwise":
|
||||
param_00 evasive_addpoint(1500,-1500,200,"none");
|
||||
param_00 evasive_addpoint(0,-1500,200,"none");
|
||||
param_00 evasive_addpoint(-1500,-1500,200,"none");
|
||||
param_00 evasive_addpoint(-1500,0,0,"none");
|
||||
param_00 evasive_addpoint(-1000,1000,-200,"none");
|
||||
param_00 evasive_addpoint(0,1000,-200,"none");
|
||||
param_00 evasive_addpoint(1000,1000,-200,"none");
|
||||
break;
|
||||
|
||||
case "random":
|
||||
var_02 = [];
|
||||
return evasive_createmaneuvers(param_01,var_7B[randomint(var_7B.size)]);
|
||||
var_7B[3]
|
||||
"360_counter_clockwise"
|
||||
var_7B[2]
|
||||
"360_clockwise"
|
||||
var_7B[1]
|
||||
"strafe_right_left"
|
||||
var_7B[0]
|
||||
"strafe_left_right"
|
||||
break;
|
||||
}
|
||||
|
||||
var_03 = evasive_getallpoints(var_02);
|
||||
return var_03;
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
evasive_startmaneuvers(param_00,param_01)
|
||||
{
|
||||
param_00 notify("taking_evasive_actions");
|
||||
param_00 endon("taking_evasive_actions");
|
||||
param_00 endon("death");
|
||||
param_00 notify("evasive_action_done");
|
||||
thread evasive_endmaneuvers(param_00);
|
||||
if(getdvar("cobrapilot_debug") == "1")
|
||||
{
|
||||
param_00 evasive_drawpoints(param_01);
|
||||
}
|
||||
|
||||
param_00 setneargoalnotifydist(1500);
|
||||
param_00 vehicle_setspeed(100,30,30);
|
||||
var_02 = param_00.angles[1];
|
||||
for(var_03 = 1;var_03 < param_01.size;var_03++)
|
||||
{
|
||||
if(isdefined(param_01[var_03 + 1]))
|
||||
{
|
||||
var_04 = vectortoangles(param_01[var_03 + 1]["pos"] - param_01[var_03]["pos"]);
|
||||
}
|
||||
else
|
||||
{
|
||||
var_04 = (0,var_02,0);
|
||||
}
|
||||
|
||||
var_05 = var_04[1];
|
||||
if(param_01[var_03]["goalYawMethod"] == "average")
|
||||
{
|
||||
var_05 = var_04[1] + var_02 / 2;
|
||||
}
|
||||
else if(param_01[var_03]["goalYawMethod"] == "forward")
|
||||
{
|
||||
var_05 = param_00.angles[1];
|
||||
}
|
||||
|
||||
if(getdvar("cobrapilot_debug") == "1")
|
||||
{
|
||||
thread maps\_utility::draw_line_until_notify(param_01[var_03]["pos"],param_01[var_03]["pos"] + anglestoforward((0,var_05,0)) * 250,1,1,0.2,param_00,"evasive_action_done");
|
||||
}
|
||||
|
||||
param_00 settargetyaw(var_05);
|
||||
param_00 thread maps\_vehicle::setvehgoalpos_wrap(param_01[var_03]["pos"],0);
|
||||
param_00 waittill("near_goal");
|
||||
}
|
||||
|
||||
param_00 notify("evasive_action_done");
|
||||
param_00 thread maps\_utility::vehicle_resumepath();
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
evasive_endmaneuvers(param_00)
|
||||
{
|
||||
param_00 notify("end_maneuvers");
|
||||
param_00 endon("end_maneuvers");
|
||||
param_00 endon("evasive_action_done");
|
||||
param_00 endon("death");
|
||||
param_00 waittill("missile_lock_ended");
|
||||
param_00 thread maps\_utility::vehicle_resumepath();
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
evasive_addpoint(param_00,param_01,param_02,param_03)
|
||||
{
|
||||
if(!isdefined(self.evasive_points))
|
||||
{
|
||||
self.evasive_points = [];
|
||||
self.evasive_points[0]["pos"] = self.origin;
|
||||
self.evasive_points[0]["ang"] = (0,self.angles[1],0);
|
||||
}
|
||||
|
||||
var_04 = self.evasive_points.size;
|
||||
if(!isdefined(param_03))
|
||||
{
|
||||
param_03 = "none";
|
||||
}
|
||||
|
||||
if(!isdefined(param_02))
|
||||
{
|
||||
param_02 = 0;
|
||||
}
|
||||
|
||||
self.evasive_points[var_04]["forward"] = param_00;
|
||||
self.evasive_points[var_04]["side"] = param_01;
|
||||
self.evasive_points[var_04]["up"] = param_02;
|
||||
var_05 = anglestoforward(self.evasive_points[0]["ang"]);
|
||||
var_06 = anglestoright(self.evasive_points[0]["ang"]);
|
||||
self.evasive_points[var_04]["pos"] = self.evasive_points[var_04 - 1]["pos"] + var_05 * self.evasive_points[var_04]["forward"] + var_06 * self.evasive_points[var_04]["side"] + (0,0,param_02);
|
||||
self.evasive_points[var_04]["goalYawMethod"] = param_03;
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
evasive_getallpoints(param_00)
|
||||
{
|
||||
var_01 = param_00.evasive_points;
|
||||
param_00.evasive_points = undefined;
|
||||
return var_01;
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
evasive_drawpoints(param_00)
|
||||
{
|
||||
for(var_01 = 1;var_01 < param_00.size;var_01++)
|
||||
{
|
||||
thread maps\_utility::draw_line_until_notify(param_00[var_01 - 1]["pos"],param_00[var_01]["pos"],1,0.2,0.2,self,"evasive_action_done");
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
wingman_think(param_00)
|
||||
{
|
||||
param_00 endon("death");
|
||||
level.playervehicle endon("death");
|
||||
var_01 = 2200;
|
||||
var_02 = 1500;
|
||||
var_03 = 0;
|
||||
var_04 = 1;
|
||||
var_05 = 1.2;
|
||||
var_06 = 50;
|
||||
var_07 = 60;
|
||||
var_08 = 2000;
|
||||
var_09 = getplayerhelispeed();
|
||||
var_0A = 0;
|
||||
var_0B = gettime();
|
||||
var_0C = wingman_getgoalpos(var_01,var_02,var_03);
|
||||
param_00 vehicle_setspeed(30,20,20);
|
||||
param_00 settargetyaw(level.playervehicle.angles[1]);
|
||||
param_00 setvehgoalpos(var_0C,1);
|
||||
for(;;)
|
||||
{
|
||||
var_0C = wingman_getgoalpos(var_01,var_02,var_03);
|
||||
if(getdvar("cobrapilot_debug") == "1")
|
||||
{
|
||||
thread common_scripts\utility::draw_line_for_time(level.playervehicle.origin,var_0C,0,1,0,var_04);
|
||||
thread common_scripts\utility::draw_line_for_time(level.playervehicle.origin,param_00.origin,0,0,1,var_04);
|
||||
thread common_scripts\utility::draw_line_for_time(param_00.origin,var_0C,1,1,0,var_04);
|
||||
}
|
||||
|
||||
var_0D = gettime();
|
||||
if(var_0D >= var_0B + var_08)
|
||||
{
|
||||
var_0B = var_0D;
|
||||
var_0A = var_09;
|
||||
var_09 = getplayerhelispeed();
|
||||
}
|
||||
|
||||
var_0E = 0;
|
||||
var_0F = 0;
|
||||
if(var_0A > 20)
|
||||
{
|
||||
var_0F = var_0A;
|
||||
var_0E = 1;
|
||||
}
|
||||
else if(var_0A <= 20 && getplayerhelispeed() > 20)
|
||||
{
|
||||
var_0F = getplayerhelispeed();
|
||||
var_0E = 1;
|
||||
}
|
||||
|
||||
if(var_0E && var_0F > 0)
|
||||
{
|
||||
var_0F = var_0F * var_05;
|
||||
var_10 = var_06;
|
||||
var_11 = var_07;
|
||||
if(var_10 >= var_0F / 2)
|
||||
{
|
||||
var_10 = var_0F / 2;
|
||||
}
|
||||
|
||||
if(var_11 >= var_0F / 2)
|
||||
{
|
||||
var_11 = var_0F / 2;
|
||||
}
|
||||
|
||||
param_00 vehicle_setspeed(var_0F,var_10,var_11);
|
||||
param_00 settargetyaw(level.playervehicle.angles[1]);
|
||||
var_12 = 0;
|
||||
if(getplayerhelispeed() <= 30)
|
||||
{
|
||||
var_12 = 1;
|
||||
}
|
||||
|
||||
if(getdvar("cobrapilot_debug") == "1")
|
||||
{
|
||||
iprintln("wingman speed: " + var_0F + " : " + var_12);
|
||||
}
|
||||
|
||||
param_00 setvehgoalpos(var_0C,var_12);
|
||||
}
|
||||
|
||||
wait var_04;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
wingman_getgoalpos(param_00,param_01,param_02)
|
||||
{
|
||||
var_03 = anglestoforward(common_scripts\utility::flat_angle(level.playervehicle.angles));
|
||||
var_04 = anglestoright(common_scripts\utility::flat_angle(level.playervehicle.angles));
|
||||
var_05 = level.playervehicle.origin + var_03 * param_00 + var_04 * param_01 + (0,0,param_02);
|
||||
return var_05;
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
getplayerhelispeed()
|
||||
{
|
||||
return level.playervehicle vehicle_getspeed();
|
||||
}
|
785
MW3/PC/SP/maps/_helicopter_globals.gsc
Normal file
785
MW3/PC/SP/maps/_helicopter_globals.gsc
Normal file
@ -0,0 +1,785 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_helicopter_globals.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 15
|
||||
* Decompile Time: 268 ms
|
||||
* Timestamp: 10/27/2023 2:23:15 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
globalthink()
|
||||
{
|
||||
if(!isdefined(self.vehicletype))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var_00 = 0;
|
||||
if(self.vehicletype == "hind" || self.vehicletype == "ny_harbor_hind")
|
||||
{
|
||||
var_00 = 1;
|
||||
}
|
||||
|
||||
if(self.vehicletype == "cobra" || self.vehicletype == "cobra_player")
|
||||
{
|
||||
thread attachmissiles("chopperpilot_hellfire","cobra_Sidewinder");
|
||||
if(isdefined(self.fullmodel))
|
||||
{
|
||||
self.fullmodel thread attachmissiles("chopperpilot_hellfire","cobra_Sidewinder");
|
||||
}
|
||||
|
||||
var_00 = 1;
|
||||
}
|
||||
|
||||
if(!var_00)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
level thread flares_think(self);
|
||||
level thread maps\_helicopter_ai::evasive_think(self);
|
||||
if(getdvar("cobrapilot_wingman_enabled") == "1")
|
||||
{
|
||||
if(isdefined(self.script_wingman))
|
||||
{
|
||||
level.wingman = self;
|
||||
level thread maps\_helicopter_ai::wingman_think(self);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
flares_think(param_00)
|
||||
{
|
||||
param_00 endon("death");
|
||||
notifyoncommand("flare_button","+frag");
|
||||
notifyoncommand("flare_button","+usereload");
|
||||
notifyoncommand("flare_button","+activate");
|
||||
while(param_00.health > 0)
|
||||
{
|
||||
if(isdefined(param_00.playercontrolled))
|
||||
{
|
||||
param_00.pilot waittill("flare_button");
|
||||
}
|
||||
else
|
||||
{
|
||||
param_00 waittill("incomming_missile",var_01);
|
||||
if(!isdefined(var_01))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(randomint(3) == 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
wait randomfloatrange(0.5,1);
|
||||
}
|
||||
|
||||
thread flares_fire(param_00);
|
||||
wait 3;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
flares_fire_burst(param_00,param_01,param_02,param_03)
|
||||
{
|
||||
var_04 = 1;
|
||||
for(var_05 = 0;var_05 < param_01;var_05++)
|
||||
{
|
||||
playfx(level.flare_fx[param_00.vehicletype],param_00 gettagorigin("tag_flare"));
|
||||
if(isdefined(param_00.playercontrolled))
|
||||
{
|
||||
level.stats["flares_used"]++;
|
||||
param_00 notify("dropping_flares");
|
||||
if(var_04)
|
||||
{
|
||||
param_00 playsound("cobra_flare_fire");
|
||||
}
|
||||
|
||||
var_04 = !var_04;
|
||||
}
|
||||
|
||||
if(var_05 <= param_02 - 1)
|
||||
{
|
||||
thread flares_redirect_missiles(param_00,param_03);
|
||||
}
|
||||
|
||||
wait 0.1;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
flares_fire(param_00)
|
||||
{
|
||||
param_00 endon("death");
|
||||
var_01 = 5;
|
||||
if(isdefined(param_00.flare_duration))
|
||||
{
|
||||
var_01 = param_00.flare_duration;
|
||||
}
|
||||
|
||||
flares_fire_burst(param_00,8,1,var_01);
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
create_missileattractor_on_player_chopper()
|
||||
{
|
||||
if(isdefined(self.missileattractor))
|
||||
{
|
||||
missile_deleteattractor(self.missileattractor);
|
||||
}
|
||||
|
||||
self.missileattractor = missile_createattractorent(self.centeraimpoint,10000,10000);
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
flares_redirect_missiles(param_00,param_01)
|
||||
{
|
||||
param_00 notify("flares_out");
|
||||
param_00 endon("death");
|
||||
param_00 endon("flares_out");
|
||||
if(!isdefined(param_01))
|
||||
{
|
||||
param_01 = 5;
|
||||
}
|
||||
|
||||
var_02 = flares_get_vehicle_velocity(param_00);
|
||||
var_03 = spawn("script_origin",param_00 gettagorigin("tag_flare"));
|
||||
var_03 movegravity(var_02,param_01);
|
||||
var_04 = undefined;
|
||||
if(isdefined(param_00.playercontrolled))
|
||||
{
|
||||
if(isdefined(param_00.missileattractor))
|
||||
{
|
||||
missile_deleteattractor(param_00.missileattractor);
|
||||
}
|
||||
|
||||
var_04 = missile_createattractorent(var_03,10000,10000);
|
||||
}
|
||||
|
||||
if(isdefined(param_00.incomming_missiles))
|
||||
{
|
||||
for(var_05 = 0;var_05 < param_00.incomming_missiles.size;var_05++)
|
||||
{
|
||||
param_00.incomming_missiles[var_05] missile_settargetent(var_03);
|
||||
}
|
||||
}
|
||||
|
||||
wait param_01;
|
||||
if(isdefined(param_00.playercontrolled))
|
||||
{
|
||||
if(isdefined(var_04))
|
||||
{
|
||||
missile_deleteattractor(var_04);
|
||||
}
|
||||
|
||||
param_00 thread create_missileattractor_on_player_chopper();
|
||||
}
|
||||
|
||||
if(!isdefined(param_00.script_targetoffset_z))
|
||||
{
|
||||
param_00.script_targetoffset_z = 0;
|
||||
}
|
||||
|
||||
var_06 = (0,0,param_00.script_targetoffset_z);
|
||||
if(!isdefined(param_00.incomming_missiles))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
for(var_05 = 0;var_05 < param_00.incomming_missiles.size;var_05++)
|
||||
{
|
||||
param_00.incomming_missiles[var_05] missile_settargetent(param_00,var_06);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
flares_get_vehicle_velocity(param_00)
|
||||
{
|
||||
var_01 = param_00.origin;
|
||||
wait 0.05;
|
||||
var_02 = param_00.origin - var_01;
|
||||
return var_02 * 20;
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
missile_deathwait(param_00,param_01)
|
||||
{
|
||||
param_01 endon("death");
|
||||
param_00 waittill("death");
|
||||
if(!isdefined(param_01.incomming_missiles))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
param_01.incomming_missiles = common_scripts\utility::array_remove(param_01.incomming_missiles,param_00);
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
getenemytarget(param_00,param_01,param_02,param_03,param_04,param_05,param_06)
|
||||
{
|
||||
if(!isdefined(param_02))
|
||||
{
|
||||
param_02 = 0;
|
||||
}
|
||||
|
||||
if(!isdefined(param_03))
|
||||
{
|
||||
param_03 = 0;
|
||||
}
|
||||
|
||||
if(!isdefined(param_04))
|
||||
{
|
||||
param_04 = 1;
|
||||
}
|
||||
|
||||
if(!isdefined(param_05))
|
||||
{
|
||||
param_05 = 0;
|
||||
}
|
||||
|
||||
var_07 = [];
|
||||
var_08 = undefined;
|
||||
var_09 = common_scripts\utility::get_enemy_team(self.script_team);
|
||||
var_0A = [];
|
||||
if(param_04)
|
||||
{
|
||||
for(var_0B = 0;var_0B < level.vehicles[var_09].size;var_0B++)
|
||||
{
|
||||
var_0A[var_0A.size] = level.vehicles[var_09][var_0B];
|
||||
}
|
||||
}
|
||||
|
||||
if(param_02)
|
||||
{
|
||||
var_0C = getaiarray(var_09);
|
||||
for(var_0B = 0;var_0B < var_0C.size;var_0B++)
|
||||
{
|
||||
if(isdefined(var_0C[var_0B].ignored_by_attack_heli))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_0A[var_0A.size] = var_0C[var_0B];
|
||||
}
|
||||
|
||||
if(var_09 == "allies")
|
||||
{
|
||||
for(var_0B = 0;var_0B < level.players.size;var_0B++)
|
||||
{
|
||||
var_0A[var_0A.size] = level.players[var_0B];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(isdefined(param_06))
|
||||
{
|
||||
var_0A = maps\_utility::array_exclude(var_0A,param_06);
|
||||
}
|
||||
|
||||
if(param_05)
|
||||
{
|
||||
var_0A = maps\_utility::array_randomize(var_0A);
|
||||
}
|
||||
|
||||
var_0D = anglestoforward(self.angles);
|
||||
for(var_0B = 0;var_0B < var_0A.size;var_0B++)
|
||||
{
|
||||
if(issentient(var_0A[var_0B]) && issentient(self) && self getthreatbiasgroup() != "")
|
||||
{
|
||||
var_0E = getthreatbias(var_0A[var_0B] getthreatbiasgroup(),self getthreatbiasgroup());
|
||||
if(var_0E <= -1000000)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if(isdefined(param_00) && param_00 > 0)
|
||||
{
|
||||
if(distance(self.origin,var_0A[var_0B].origin) > param_00)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if(isdefined(param_01))
|
||||
{
|
||||
var_0F = vectornormalize(var_0A[var_0B].origin - self.origin);
|
||||
var_10 = vectordot(var_0D,var_0F);
|
||||
if(var_10 <= param_01)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if(param_03)
|
||||
{
|
||||
var_11 = 0;
|
||||
if(isai(var_0A[var_0B]))
|
||||
{
|
||||
var_12 = 48;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_12 = 150;
|
||||
}
|
||||
|
||||
var_11 = sighttracepassed(self.origin,var_0A[var_0B].origin + (0,0,var_12),0,self);
|
||||
if(!var_11)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
var_07[var_07.size] = var_0A[var_0B];
|
||||
}
|
||||
|
||||
self notify("gunner_new_target");
|
||||
if(var_07.size == 0)
|
||||
{
|
||||
return var_08;
|
||||
}
|
||||
|
||||
if(var_07.size == 1)
|
||||
{
|
||||
return var_07[0];
|
||||
}
|
||||
|
||||
var_13 = maps\_utility::getclosest(self.origin,var_07);
|
||||
return var_13;
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
shootenemytarget_bullets(param_00)
|
||||
{
|
||||
self endon("death");
|
||||
self endon("mg_off");
|
||||
param_00 endon("death");
|
||||
self endon("gunner_new_target");
|
||||
if(isdefined(self.playercontrolled))
|
||||
{
|
||||
self endon("gunner_stop_firing");
|
||||
}
|
||||
|
||||
var_01 = (0,0,0);
|
||||
if(isdefined(param_00.script_targetoffset_z))
|
||||
{
|
||||
var_01 = var_01 + (0,0,param_00.script_targetoffset_z);
|
||||
}
|
||||
else if(issentient(param_00))
|
||||
{
|
||||
var_01 = (0,0,32);
|
||||
}
|
||||
|
||||
self setturrettargetent(param_00,var_01);
|
||||
while(self.health > 0)
|
||||
{
|
||||
var_02 = randomintrange(1,25);
|
||||
if(getdvar("cobrapilot_debug") == "1")
|
||||
{
|
||||
iprintln("randomShots = " + var_02);
|
||||
}
|
||||
|
||||
for(var_03 = 0;var_03 < var_02;var_03++)
|
||||
{
|
||||
if(isdefined(self.playercontrolled))
|
||||
{
|
||||
if(isdefined(level.cobraweapon) && level.cobraweapon.size > 0)
|
||||
{
|
||||
self setvehweapon(level.gunnerweapon);
|
||||
}
|
||||
}
|
||||
|
||||
thread shootenemytarget_bullets_debugline(self,"tag_turret",param_00,var_01,(1,1,0),0.05);
|
||||
self fireweapon("tag_flash");
|
||||
if(isdefined(self.playercontrolled))
|
||||
{
|
||||
self setvehweapon(level.cobraweapon[self.pilot.currentweapon].v["weapon"]);
|
||||
}
|
||||
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
wait randomfloatrange(0.25,2.5);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
shootenemytarget_bullets_debugline(param_00,param_01,param_02,param_03,param_04,param_05)
|
||||
{
|
||||
if(getdvar("cobrapilot_debug") != "1")
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(!isdefined(param_04))
|
||||
{
|
||||
param_04 = (0,0,0);
|
||||
}
|
||||
|
||||
param_02 endon("death");
|
||||
self endon("gunner_new_target");
|
||||
if(!isdefined(param_03))
|
||||
{
|
||||
param_03 = (0,0,0);
|
||||
}
|
||||
|
||||
if(isdefined(param_05))
|
||||
{
|
||||
param_05 = gettime() + param_05 * 1000;
|
||||
while(gettime() < param_05)
|
||||
{
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
attachmissiles(param_00,param_01,param_02,param_03)
|
||||
{
|
||||
self.hasattachedweapons = 1;
|
||||
var_04 = [];
|
||||
if(isdefined(param_02))
|
||||
{
|
||||
}
|
||||
|
||||
if(isdefined(param_03))
|
||||
{
|
||||
}
|
||||
|
||||
if(isdefined(var_04))
|
||||
{
|
||||
}
|
||||
|
||||
for(var_05 = 0;var_05 < var_7B.size;var_05++ = var_04)
|
||||
{
|
||||
for(var_06 = 0;var_06 < level.cobra_weapon_tags[var_7B[var_05]].size;var_06++ = var_7B[3])
|
||||
{
|
||||
self attach(level.cobra_missile_models[var_7B[var_05]],level.cobra_weapon_tags[var_7B[var_05]][var_06]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
fire_missile(param_00,param_01,param_02,param_03,param_04)
|
||||
{
|
||||
if(!isdefined(param_01))
|
||||
{
|
||||
param_01 = 1;
|
||||
}
|
||||
|
||||
var_05 = undefined;
|
||||
var_06 = undefined;
|
||||
var_07 = "cobra_20mm";
|
||||
var_08 = [];
|
||||
switch(param_00)
|
||||
{
|
||||
case "f15_missile":
|
||||
var_05 = "cobra_Sidewinder";
|
||||
break;
|
||||
var_7B[1]
|
||||
"ri_side_wing_jnt"
|
||||
var_7B[0]
|
||||
"le_side_wing_jnt"
|
||||
break;
|
||||
|
||||
case "mi28_seeker":
|
||||
var_06 = "cobra_seeker";
|
||||
break;
|
||||
var_7B[3]
|
||||
"tag_store_R_2_a"
|
||||
var_7B[2]
|
||||
"tag_store_L_2_a"
|
||||
var_7B[1]
|
||||
"tag_store_R_1_a"
|
||||
var_7B[0]
|
||||
"tag_store_L_1_a"
|
||||
break;
|
||||
|
||||
case "ffar":
|
||||
var_06 = "cobra_FFAR";
|
||||
break;
|
||||
var_7B[0]
|
||||
"tag_store_r_2"
|
||||
break;
|
||||
|
||||
case "seeker":
|
||||
var_06 = "cobra_seeker";
|
||||
break;
|
||||
var_7B[0]
|
||||
"tag_store_r_2"
|
||||
break;
|
||||
|
||||
case "ffar_bog_a_lite":
|
||||
var_06 = "cobra_FFAR_bog_a_lite";
|
||||
break;
|
||||
var_7B[0]
|
||||
"tag_store_r_2"
|
||||
break;
|
||||
|
||||
case "ffar_airlift":
|
||||
var_06 = "cobra_FFAR_airlift";
|
||||
break;
|
||||
var_7B[1]
|
||||
"tag_store_R_wing"
|
||||
var_7B[0]
|
||||
"tag_store_L_wing"
|
||||
break;
|
||||
|
||||
case "ffar_airlift_nofx":
|
||||
var_06 = "cobra_FFAR_airlift_nofx";
|
||||
break;
|
||||
var_7B[1]
|
||||
"tag_store_R_wing"
|
||||
var_7B[0]
|
||||
"tag_store_L_wing"
|
||||
break;
|
||||
|
||||
case "cobra_zippy":
|
||||
var_06 = "zippy_rockets";
|
||||
break;
|
||||
var_7B[1]
|
||||
"tag_store_R_wing"
|
||||
var_7B[0]
|
||||
"tag_store_L_wing"
|
||||
break;
|
||||
|
||||
case "apache_zippy":
|
||||
var_06 = "zippy_rockets_apache";
|
||||
break;
|
||||
var_7B[1]
|
||||
"tag_flash_3"
|
||||
var_7B[0]
|
||||
"tag_flash_2"
|
||||
break;
|
||||
|
||||
case "apache_zippy_nd":
|
||||
var_06 = "zippy_rockets_apache_nodamage";
|
||||
break;
|
||||
var_7B[1]
|
||||
"tag_flash_3"
|
||||
var_7B[0]
|
||||
"tag_flash_2"
|
||||
break;
|
||||
|
||||
case "mi28_zippy":
|
||||
var_06 = "zippy_rockets_apache";
|
||||
break;
|
||||
var_7B[1]
|
||||
"tag_store_R_wing"
|
||||
var_7B[0]
|
||||
"tag_store_L_wing"
|
||||
break;
|
||||
|
||||
case "mi28_zippy_cheap":
|
||||
var_06 = "zippy_rockets_apache_cheap";
|
||||
break;
|
||||
var_7B[1]
|
||||
"tag_store_R_wing"
|
||||
var_7B[0]
|
||||
"tag_store_L_wing"
|
||||
break;
|
||||
|
||||
case "cobra_turret":
|
||||
var_06 = "hind_turret_penetration";
|
||||
break;
|
||||
var_7B[1]
|
||||
"tag_store_R_wing"
|
||||
var_7B[0]
|
||||
"tag_store_L_wing"
|
||||
break;
|
||||
|
||||
case "ffar_hind":
|
||||
var_08 = "hind_turret";
|
||||
var_06 = "hind_FFAR";
|
||||
break;
|
||||
var_7B[1]
|
||||
"tag_missile_right"
|
||||
var_7B[0]
|
||||
"tag_missile_left"
|
||||
break;
|
||||
|
||||
case "hind_zippy":
|
||||
var_08 = "hind_turret";
|
||||
var_06 = "zippy_rockets";
|
||||
break;
|
||||
var_7B[1]
|
||||
"tag_missile_right"
|
||||
var_7B[0]
|
||||
"tag_missile_left"
|
||||
break;
|
||||
|
||||
case "hind_rpg":
|
||||
var_08 = "hind_turret";
|
||||
var_06 = "rpg";
|
||||
break;
|
||||
var_7B[1]
|
||||
"tag_missile_right"
|
||||
var_7B[0]
|
||||
"tag_missile_left"
|
||||
break;
|
||||
|
||||
case "hind_rpg_cheap":
|
||||
var_08 = "hind_turret";
|
||||
var_06 = "rpg_cheap";
|
||||
break;
|
||||
var_7B[1]
|
||||
"tag_missile_right"
|
||||
var_7B[0]
|
||||
"tag_missile_left"
|
||||
break;
|
||||
|
||||
case "ffar_hind_nodamage":
|
||||
var_08 = "hind_turret";
|
||||
var_06 = "hind_FFAR_nodamage";
|
||||
break;
|
||||
var_7B[1]
|
||||
"tag_missile_right"
|
||||
var_7B[0]
|
||||
"tag_missile_left"
|
||||
break;
|
||||
|
||||
case "ffar_mi28_village_assault":
|
||||
var_08 = "hind_turret";
|
||||
var_06 = "mi28_ffar_village_assault";
|
||||
break;
|
||||
var_7B[7]
|
||||
"tag_store_R_2_d"
|
||||
var_7B[6]
|
||||
"tag_store_L_2_d"
|
||||
var_7B[5]
|
||||
"tag_store_R_2_c"
|
||||
var_7B[4]
|
||||
"tag_store_L_2_c"
|
||||
var_7B[3]
|
||||
"tag_store_R_2_b"
|
||||
var_7B[2]
|
||||
"tag_store_L_2_b"
|
||||
var_7B[1]
|
||||
"tag_store_R_2_a"
|
||||
var_7B[0]
|
||||
"tag_store_L_2_a"
|
||||
break;
|
||||
|
||||
case "ffar_co_rescue":
|
||||
var_06 = "cobra_FFAR_bog_a_lite";
|
||||
break;
|
||||
var_7B[1]
|
||||
"tag_store_L_2_a"
|
||||
var_7B[0]
|
||||
"tag_store_R_2_a"
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
var_07 = weaponfiretime(var_06);
|
||||
if(isdefined(self.nextmissiletag))
|
||||
{
|
||||
var_09 = self.nextmissiletag;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_09 = -1;
|
||||
}
|
||||
|
||||
for(var_0A = 0;var_0A < param_02;var_0A++)
|
||||
{
|
||||
var_09++;
|
||||
var_09 = var_09 % var_7B.size;
|
||||
if(param_01 == "ffar_mi28_village_assault")
|
||||
{
|
||||
if(isdefined(param_03) && isdefined(param_03.origin))
|
||||
{
|
||||
magicbullet(var_06,self gettagorigin(var_7B[var_09]),param_03.origin);
|
||||
if(isdefined(level._effect["ffar_mi28_muzzleflash"]))
|
||||
{
|
||||
playfxontag(common_scripts\utility::getfx("ffar_mi28_muzzleflash"),self,var_7B[var_09]);
|
||||
}
|
||||
|
||||
thread delayed_earthquake(0.1,0.5,0.2,param_03.origin,1600);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
self setvehweapon(var_06);
|
||||
if(isdefined(param_03))
|
||||
{
|
||||
var_0B = self fireweapon(var_7B[var_09],param_03);
|
||||
maps\_audio::aud_send_msg("missile_fired",var_0B);
|
||||
switch(param_01)
|
||||
{
|
||||
case "ffar_airlift":
|
||||
case "ffar_bog_a_lite":
|
||||
case "ffar":
|
||||
var_0B thread missilelosetarget(0.1);
|
||||
break;
|
||||
|
||||
case "apache_zippy_wall":
|
||||
case "mi28_zippy_cheap":
|
||||
case "mi28_zippy":
|
||||
case "apache_zippy_nd":
|
||||
case "apache_zippy":
|
||||
if(!isdefined(var_05))
|
||||
{
|
||||
var_0B thread missilelosetarget(0.6);
|
||||
}
|
||||
else
|
||||
{
|
||||
var_0B thread missilelosetarget(var_05);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var_0B = self fireweapon(var_09[var_0A]);
|
||||
}
|
||||
|
||||
self notify("missile_fired",var_0B);
|
||||
}
|
||||
|
||||
self.nextmissiletag = var_09;
|
||||
if(var_0A < param_02 - 1)
|
||||
{
|
||||
wait var_07;
|
||||
}
|
||||
|
||||
if(isdefined(param_04))
|
||||
{
|
||||
wait param_04;
|
||||
}
|
||||
}
|
||||
|
||||
self setvehweapon(var_08);
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
delayed_earthquake(param_00,param_01,param_02,param_03,param_04)
|
||||
{
|
||||
wait param_00;
|
||||
earthquake(param_01,param_02,param_03,param_04);
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
missilelosetarget(param_00)
|
||||
{
|
||||
self endon("death");
|
||||
wait param_00;
|
||||
if(isdefined(self))
|
||||
{
|
||||
self missile_cleartarget();
|
||||
}
|
||||
}
|
466
MW3/PC/SP/maps/_hiding_door.gsc
Normal file
466
MW3/PC/SP/maps/_hiding_door.gsc
Normal file
@ -0,0 +1,466 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_hiding_door.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 13
|
||||
* Decompile Time: 210 ms
|
||||
* Timestamp: 10/27/2023 2:23:07 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
hiding_door_spawner()
|
||||
{
|
||||
var_00 = getentarray("hiding_door_guy_org","targetname");
|
||||
var_01 = maps\_utility::getclosest(self.origin,var_00);
|
||||
var_01.targetname = undefined;
|
||||
var_02 = getentarray(var_01.target,"targetname");
|
||||
var_03 = undefined;
|
||||
var_04 = undefined;
|
||||
var_05 = undefined;
|
||||
if(isdefined(var_01.script_linkto))
|
||||
{
|
||||
var_05 = var_01 common_scripts\utility::get_linked_ent();
|
||||
}
|
||||
|
||||
if(var_02.size == 1)
|
||||
{
|
||||
var_03 = var_02[0];
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach(var_07 in var_02)
|
||||
{
|
||||
if(var_07.code_classname == "script_brushmodel")
|
||||
{
|
||||
var_04 = var_07;
|
||||
continue;
|
||||
}
|
||||
|
||||
if(var_07.code_classname == "script_model")
|
||||
{
|
||||
var_03 = var_07;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var_09 = getent(var_03.target,"targetname");
|
||||
var_0A = undefined;
|
||||
if(isdefined(var_09.target))
|
||||
{
|
||||
var_0A = getent(var_09.target,"targetname");
|
||||
}
|
||||
|
||||
if(isdefined(var_0A))
|
||||
{
|
||||
var_01 thread hiding_door_guy_pushplayer(var_0A);
|
||||
if(!isdefined(level._hiding_door_pushplayer_clips))
|
||||
{
|
||||
level._hiding_door_pushplayer_clips = [];
|
||||
}
|
||||
|
||||
level._hiding_door_pushplayer_clips[level._hiding_door_pushplayer_clips.size] = var_0A;
|
||||
}
|
||||
|
||||
var_03 delete();
|
||||
var_0B = maps\_utility::spawn_anim_model("hiding_door");
|
||||
var_01 thread maps\_anim::anim_first_frame_solo(var_0B,"fire_3");
|
||||
if(isdefined(var_04))
|
||||
{
|
||||
var_04 linkto(var_0B,"door_hinge_jnt");
|
||||
var_0B hide();
|
||||
}
|
||||
|
||||
if(isdefined(var_09))
|
||||
{
|
||||
var_09 linkto(var_0B,"door_hinge_jnt");
|
||||
var_09 disconnectpaths();
|
||||
}
|
||||
|
||||
var_0C = undefined;
|
||||
if(isdefined(self.target))
|
||||
{
|
||||
var_0C = getent(self.target,"targetname");
|
||||
if(!issubstr(var_0C.classname,"trigger"))
|
||||
{
|
||||
var_0C = undefined;
|
||||
}
|
||||
}
|
||||
|
||||
if(!isdefined(self.script_flag_wait) && !isdefined(var_0C))
|
||||
{
|
||||
var_0D = 200;
|
||||
if(isdefined(self.radius))
|
||||
{
|
||||
var_0D = self.radius;
|
||||
}
|
||||
|
||||
var_0C = spawn("trigger_radius",var_01.origin,0,var_0D,48);
|
||||
}
|
||||
|
||||
if(isdefined(var_05))
|
||||
{
|
||||
badplace_brush(var_05 getentitynumber(),0,var_05,"allies");
|
||||
}
|
||||
|
||||
maps\_utility::add_spawn_function(::hiding_door_guy,var_01,var_0C,var_0B,var_09,var_05);
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
hiding_door_guy(param_00,param_01,param_02,param_03,param_04)
|
||||
{
|
||||
var_05 = hiding_door_starts_open(param_00);
|
||||
self.animname = "hiding_door_guy";
|
||||
self endon("death");
|
||||
self endon("damage");
|
||||
self.grenadeammo = 2;
|
||||
maps\_utility::set_deathanim("death_2");
|
||||
self.allowdeath = 1;
|
||||
self.health = -15536;
|
||||
var_06 = [];
|
||||
thread hiding_door_guy_cleanup(param_01,self,param_03,param_04,var_05);
|
||||
thread hiding_door_death(param_03,param_01,self,param_04,var_05);
|
||||
if(var_06)
|
||||
{
|
||||
param_01 thread maps\_anim::anim_loop(var_7B,"idle");
|
||||
}
|
||||
else
|
||||
{
|
||||
param_01 thread maps\_anim::anim_first_frame(var_7B,"fire_3");
|
||||
}
|
||||
|
||||
if(isdefined(param_02))
|
||||
{
|
||||
wait 0.05;
|
||||
param_02 waittill(param_02,var_7B[var_06.size],self,var_7B[var_7B.size],"trigger");
|
||||
}
|
||||
else
|
||||
{
|
||||
common_scripts\utility::flag_wait(self.script_flag_wait);
|
||||
}
|
||||
|
||||
if(var_06)
|
||||
{
|
||||
param_01 notify("stop_loop");
|
||||
param_01 maps\_anim::anim_single(var_7B,"close");
|
||||
}
|
||||
|
||||
var_07 = 0;
|
||||
var_08 = 0;
|
||||
for(;;)
|
||||
{
|
||||
var_09 = level.player;
|
||||
if(isdefined(self.enemy))
|
||||
{
|
||||
var_09 = self.enemy;
|
||||
}
|
||||
|
||||
var_0A = hiding_door_get_enemy_direction(param_03.angles,self.origin,var_09.origin);
|
||||
if(player_entered_backdoor(var_0A))
|
||||
{
|
||||
if(quit_door_behavior())
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if(var_07 >= 2)
|
||||
{
|
||||
if(quit_door_behavior(1))
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
var_0B = undefined;
|
||||
if(var_0A == "left" || var_0A == "front")
|
||||
{
|
||||
var_0B = "fire_3";
|
||||
}
|
||||
else if(var_0A == "right")
|
||||
{
|
||||
var_0B = "fire_1";
|
||||
if(common_scripts\utility::cointoss())
|
||||
{
|
||||
var_0B = "fire_2";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
param_01 maps\_anim::anim_single(var_7B,"open");
|
||||
param_01 maps\_anim::anim_single(var_7B,"close");
|
||||
var_07++;
|
||||
continue;
|
||||
}
|
||||
|
||||
if(hiding_door_guy_should_charge(var_0A,var_09,var_08))
|
||||
{
|
||||
var_0B = "jump";
|
||||
if(common_scripts\utility::cointoss())
|
||||
{
|
||||
if(self maymovetopoint(animscripts/utility::func_F99(level.scr_anim[self.animname]["kick"])))
|
||||
{
|
||||
var_0B = "kick";
|
||||
}
|
||||
}
|
||||
|
||||
thread hiding_door_death_door_connections(param_04,var_05);
|
||||
param_01 notify("push_player");
|
||||
self notify("charge");
|
||||
self.allowdeath = 1;
|
||||
self.health = 100;
|
||||
maps\_utility::clear_deathanim();
|
||||
param_01 maps\_anim::anim_single(var_7B,var_0B);
|
||||
quit_door_behavior();
|
||||
return;
|
||||
}
|
||||
|
||||
if(hiding_door_guy_should_throw_grenade(var_0A,var_08))
|
||||
{
|
||||
self.grenadeammo--;
|
||||
var_0B = "grenade";
|
||||
}
|
||||
|
||||
var_07 = 0;
|
||||
var_08++;
|
||||
param_01 thread maps\_anim::anim_single(var_7B,var_0B);
|
||||
maps\_utility::delaythread(0.05,::maps\_anim::anim_set_time,var_7B,var_0B,0.3);
|
||||
param_01 waittill(var_0B);
|
||||
param_01 thread maps\_anim::anim_first_frame(var_7B,"open");
|
||||
wait randomfloatrange(0.2,1);
|
||||
param_01 notify("stop_loop");
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
quit_door_behavior(param_00,param_01)
|
||||
{
|
||||
if(!isdefined(param_00))
|
||||
{
|
||||
param_00 = 0;
|
||||
}
|
||||
|
||||
if(param_00)
|
||||
{
|
||||
if(!sighttracepassed(level.player geteye(),self geteye(),0,self))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
self.health = 100;
|
||||
maps\_utility::clear_deathanim();
|
||||
self.goalradius = 512;
|
||||
self setgoalpos(self.origin);
|
||||
self notify("quit_door_behavior");
|
||||
self stopanimscripted();
|
||||
self notify("killanimscript");
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
player_entered_backdoor(param_00)
|
||||
{
|
||||
if(param_00 != "behind")
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
var_01 = distance(self.origin,level.player.origin);
|
||||
if(var_01 > 250)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(!sighttracepassed(level.player geteye(),self geteye(),0,self))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
hiding_door_guy_should_charge(param_00,param_01,param_02)
|
||||
{
|
||||
var_03 = 3;
|
||||
var_04 = 100;
|
||||
var_05 = 600;
|
||||
if(param_02 < var_03)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(param_01 != level.player)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(param_00 != "front")
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
var_06 = distance(self.origin,level.player.origin);
|
||||
if(var_06 < var_04)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(var_06 > var_05)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
return common_scripts\utility::cointoss();
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
hiding_door_guy_should_throw_grenade(param_00,param_01)
|
||||
{
|
||||
if(param_01 < 1)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(param_00 == "behind")
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(randomint(100) < 25 * self.grenadeammo)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
hiding_door_get_enemy_direction(param_00,param_01,param_02)
|
||||
{
|
||||
var_03 = anglestoforward(param_00);
|
||||
var_04 = vectornormalize(var_03);
|
||||
var_05 = vectortoangles(var_04);
|
||||
var_06 = vectortoangles(param_02 - param_01);
|
||||
var_07 = var_05[1] - var_06[1];
|
||||
var_07 = var_07 + 360;
|
||||
var_07 = int(var_07) % 360;
|
||||
var_08 = undefined;
|
||||
if(var_07 >= 90 && var_07 <= 270)
|
||||
{
|
||||
var_08 = "behind";
|
||||
}
|
||||
else if(var_07 >= 300 || var_07 <= 45)
|
||||
{
|
||||
var_08 = "front";
|
||||
}
|
||||
else if(var_07 < 90)
|
||||
{
|
||||
var_08 = "right";
|
||||
}
|
||||
else if(var_07 > 270)
|
||||
{
|
||||
var_08 = "left";
|
||||
}
|
||||
|
||||
return var_08;
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
hiding_door_guy_cleanup(param_00,param_01,param_02,param_03,param_04)
|
||||
{
|
||||
param_01 endon("charge");
|
||||
param_01 common_scripts\utility::waittill_either("death","quit_door_behavior");
|
||||
param_00 notify("stop_loop");
|
||||
thread hiding_door_death_door_connections(param_03,param_04);
|
||||
param_00 notify("push_player");
|
||||
if(!isdefined(param_02.played_death_anim))
|
||||
{
|
||||
param_02.played_death_anim = 1;
|
||||
param_00 thread maps\_anim::anim_single_solo(param_02,"death_2");
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
hiding_door_guy_pushplayer(param_00)
|
||||
{
|
||||
self waittill("push_player");
|
||||
param_00 moveto(self.origin,1.5);
|
||||
wait 1.5;
|
||||
param_00 delete();
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
hiding_door_guy_grenade_throw(param_00)
|
||||
{
|
||||
var_01 = param_00 gettagorigin("J_Wrist_RI");
|
||||
var_02 = distance(level.player.origin,param_00.origin) * 2;
|
||||
if(var_02 < 300)
|
||||
{
|
||||
var_02 = 300;
|
||||
}
|
||||
|
||||
if(var_02 > 1000)
|
||||
{
|
||||
var_02 = 1000;
|
||||
}
|
||||
|
||||
var_03 = vectornormalize(level.player.origin - param_00.origin);
|
||||
var_04 = var_03 * var_02;
|
||||
param_00 magicgrenademanual(var_01,var_04,randomfloatrange(3,5));
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
hiding_door_death(param_00,param_01,param_02,param_03,param_04)
|
||||
{
|
||||
param_02 endon("charge");
|
||||
param_02 endon("quit_door_behavior");
|
||||
param_02 waittill("damage",var_05,var_06);
|
||||
if(!isalive(param_02))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
thread hiding_door_death_door_connections(param_03,param_04);
|
||||
param_01 notify("push_player");
|
||||
param_01 thread maps\_anim::anim_single_solo(param_02,"death_2");
|
||||
if(!isdefined(param_00.played_death_anim))
|
||||
{
|
||||
param_00.played_death_anim = 1;
|
||||
param_01 thread maps\_anim::anim_single_solo(param_00,"death_2");
|
||||
}
|
||||
|
||||
wait 0.5;
|
||||
if(isalive(param_02))
|
||||
{
|
||||
if(isdefined(var_06))
|
||||
{
|
||||
param_02 kill((0,0,0),var_06);
|
||||
return;
|
||||
}
|
||||
|
||||
param_02 kill((0,0,0));
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
hiding_door_death_door_connections(param_00,param_01)
|
||||
{
|
||||
wait 2;
|
||||
if(isdefined(param_00))
|
||||
{
|
||||
param_00 disconnectpaths();
|
||||
}
|
||||
|
||||
if(isdefined(param_01))
|
||||
{
|
||||
badplace_delete(param_01 getentitynumber());
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
hiding_door_starts_open(param_00)
|
||||
{
|
||||
return isdefined(param_00.script_noteworthy) && param_00.script_noteworthy == "starts_open";
|
||||
}
|
58
MW3/PC/SP/maps/_hiding_door_anims.gsc
Normal file
58
MW3/PC/SP/maps/_hiding_door_anims.gsc
Normal file
@ -0,0 +1,58 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_hiding_door_anims.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 3
|
||||
* Decompile Time: 48 ms
|
||||
* Timestamp: 10/27/2023 2:20:07 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
level.max_number_of_dead_bodies["iding_door"] = #animtree;
|
||||
level.scr_model["hiding_door"] = "com_door_01_handleleft";
|
||||
level.scr_anim["hiding_door"]["close"] = %doorpeek_close_door;
|
||||
level.scr_anim["hiding_door"]["death_1"] = %doorpeek_deatha_door;
|
||||
level.scr_anim["hiding_door"]["death_2"] = %doorpeek_deathb_door;
|
||||
level.scr_anim["hiding_door"]["fire_1"] = %doorpeek_firea_door;
|
||||
level.scr_anim["hiding_door"]["fire_2"] = %doorpeek_fireb_door;
|
||||
level.scr_anim["hiding_door"]["fire_3"] = %doorpeek_firec_door;
|
||||
level.scr_anim["hiding_door"]["peek"] = %doorpeek_idle_door;
|
||||
level.scr_anim["hiding_door"]["grenade"] = %doorpeek_grenade_door;
|
||||
level.scr_anim["hiding_door"]["idle"][0] = %doorpeek_idle_door;
|
||||
level.scr_anim["hiding_door"]["jump"] = %doorpeek_jump_door;
|
||||
level.scr_anim["hiding_door"]["kick"] = %doorpeek_kick_door;
|
||||
level.scr_anim["hiding_door"]["open"] = %doorpeek_open_door;
|
||||
precachemodel(level.scr_model["hiding_door"]);
|
||||
maps\_anim::addnotetrack_sound("hiding_door","sound door death","any","scn_doorpeek_door_open_death");
|
||||
maps\_anim::addnotetrack_sound("hiding_door","sound door open","any","scn_doorpeek_door_open");
|
||||
maps\_anim::addnotetrack_sound("hiding_door","sound door slam","any","scn_doorpeek_door_slam");
|
||||
main_guy();
|
||||
thread notetracks();
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
main_guy()
|
||||
{
|
||||
level.scr_anim["hiding_door_guy"]["close"] = %doorpeek_close;
|
||||
level.scr_anim["hiding_door_guy"]["death_1"] = %doorpeek_deatha;
|
||||
level.scr_anim["hiding_door_guy"]["death_2"] = %doorpeek_deathb;
|
||||
level.scr_anim["hiding_door_guy"]["fire_1"] = %doorpeek_firea;
|
||||
level.scr_anim["hiding_door_guy"]["fire_2"] = %doorpeek_fireb;
|
||||
level.scr_anim["hiding_door_guy"]["fire_3"] = %doorpeek_firec;
|
||||
level.scr_anim["hiding_door_guy"]["peek"] = %doorpeek_idle;
|
||||
level.scr_anim["hiding_door_guy"]["grenade"] = %doorpeek_grenade;
|
||||
level.scr_anim["hiding_door_guy"]["idle"][0] = %doorpeek_idle;
|
||||
level.scr_anim["hiding_door_guy"]["jump"] = %doorpeek_jump;
|
||||
level.scr_anim["hiding_door_guy"]["kick"] = %doorpeek_kick;
|
||||
level.scr_anim["hiding_door_guy"]["open"] = %doorpeek_open;
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
notetracks()
|
||||
{
|
||||
wait 0.05;
|
||||
maps\_anim::addnotetrack_customfunction("hiding_door_guy","grenade_throw",::maps\_hiding_door::hiding_door_guy_grenade_throw);
|
||||
}
|
31
MW3/PC/SP/maps/_hud.gsc
Normal file
31
MW3/PC/SP/maps/_hud.gsc
Normal file
@ -0,0 +1,31 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_hud.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 1
|
||||
* Decompile Time: 12 ms
|
||||
* Timestamp: 10/27/2023 2:25:10 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
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 = [];
|
||||
if(level.console)
|
||||
{
|
||||
level.fontheight = 12;
|
||||
return;
|
||||
}
|
||||
|
||||
level.fontheight = 12;
|
||||
}
|
884
MW3/PC/SP/maps/_hud_util.gsc
Normal file
884
MW3/PC/SP/maps/_hud_util.gsc
Normal file
@ -0,0 +1,884 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_hud_util.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 36
|
||||
* Decompile Time: 443 ms
|
||||
* Timestamp: 10/27/2023 2:25:10 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
setparent(param_00)
|
||||
{
|
||||
if(isdefined(self.parent) && self.parent == param_00)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(isdefined(self.parent))
|
||||
{
|
||||
self.parent removechild(self);
|
||||
}
|
||||
|
||||
self.parent = param_00;
|
||||
self.parent addchild(self);
|
||||
if(isdefined(self.point))
|
||||
{
|
||||
setpoint(self.point,self.relativepoint,self.xoffset,self.yoffset);
|
||||
return;
|
||||
}
|
||||
|
||||
setpoint("TOPLEFT");
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
getparent()
|
||||
{
|
||||
return self.parent;
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
addchild(param_00)
|
||||
{
|
||||
param_00.index = self.children.size;
|
||||
self.children[self.children.size] = param_00;
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
removechild(param_00)
|
||||
{
|
||||
param_00.parent = undefined;
|
||||
if(self.children[self.children.size - 1] != param_00)
|
||||
{
|
||||
self.children[param_00.index] = self.children[self.children.size - 1];
|
||||
self.children[param_00.index].index = param_00.index;
|
||||
}
|
||||
|
||||
self.children[self.children.size - 1] = undefined;
|
||||
param_00.index = undefined;
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
setpoint(param_00,param_01,param_02,param_03,param_04)
|
||||
{
|
||||
if(!isdefined(param_04))
|
||||
{
|
||||
param_04 = 0;
|
||||
}
|
||||
|
||||
var_05 = getparent();
|
||||
if(param_04)
|
||||
{
|
||||
self moveovertime(param_04);
|
||||
}
|
||||
|
||||
if(!isdefined(param_02))
|
||||
{
|
||||
param_02 = 0;
|
||||
}
|
||||
|
||||
self.xoffset = param_02;
|
||||
if(!isdefined(param_03))
|
||||
{
|
||||
param_03 = 0;
|
||||
}
|
||||
|
||||
self.yoffset = param_03;
|
||||
self.point = param_00;
|
||||
self.alignx = "center";
|
||||
self.aligny = "middle";
|
||||
if(issubstr(param_00,"TOP"))
|
||||
{
|
||||
self.aligny = "top";
|
||||
}
|
||||
|
||||
if(issubstr(param_00,"BOTTOM"))
|
||||
{
|
||||
self.aligny = "bottom";
|
||||
}
|
||||
|
||||
if(issubstr(param_00,"LEFT"))
|
||||
{
|
||||
self.alignx = "left";
|
||||
}
|
||||
|
||||
if(issubstr(param_00,"RIGHT"))
|
||||
{
|
||||
self.alignx = "right";
|
||||
}
|
||||
|
||||
if(!isdefined(param_01))
|
||||
{
|
||||
param_01 = param_00;
|
||||
}
|
||||
|
||||
self.relativepoint = param_01;
|
||||
var_06 = "center";
|
||||
var_07 = "middle";
|
||||
if(issubstr(param_01,"TOP"))
|
||||
{
|
||||
var_07 = "top";
|
||||
}
|
||||
|
||||
if(issubstr(param_01,"BOTTOM"))
|
||||
{
|
||||
var_07 = "bottom";
|
||||
}
|
||||
|
||||
if(issubstr(param_01,"LEFT"))
|
||||
{
|
||||
var_06 = "left";
|
||||
}
|
||||
|
||||
if(issubstr(param_01,"RIGHT"))
|
||||
{
|
||||
var_06 = "right";
|
||||
}
|
||||
|
||||
if(var_05 == level.uiparent)
|
||||
{
|
||||
self.horzalign = var_06;
|
||||
self.vertalign = var_07;
|
||||
}
|
||||
else
|
||||
{
|
||||
self.horzalign = var_05.horzalign;
|
||||
self.vertalign = var_05.vertalign;
|
||||
}
|
||||
|
||||
if(var_06 == var_05.alignx)
|
||||
{
|
||||
var_08 = 0;
|
||||
var_09 = 0;
|
||||
}
|
||||
else if(var_08 == "center" || var_07.alignx == "center")
|
||||
{
|
||||
var_08 = int(var_07.width / 2);
|
||||
if(var_07 == "left" || var_06.alignx == "right")
|
||||
{
|
||||
var_09 = -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_09 = 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var_08 = var_07.width;
|
||||
if(var_07 == "left")
|
||||
{
|
||||
var_09 = -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_09 = 1;
|
||||
}
|
||||
}
|
||||
|
||||
self.x = var_05.x + var_08 * var_09;
|
||||
if(var_07 == var_05.aligny)
|
||||
{
|
||||
var_0A = 0;
|
||||
var_0B = 0;
|
||||
}
|
||||
else if(var_09 == "middle" || var_07.aligny == "middle")
|
||||
{
|
||||
var_0A = int(var_07.height / 2);
|
||||
if(var_08 == "top" || var_06.aligny == "bottom")
|
||||
{
|
||||
var_0B = -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_0B = 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var_0A = var_07.height;
|
||||
if(var_08 == "top")
|
||||
{
|
||||
var_0B = -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_0B = 1;
|
||||
}
|
||||
}
|
||||
|
||||
self.y = var_05.y + var_0A * var_0B;
|
||||
self.x = self.x + self.xoffset;
|
||||
self.y = self.y + self.yoffset;
|
||||
switch(self.elemtype)
|
||||
{
|
||||
case "bar":
|
||||
setpointbar(param_00,param_01,param_02,param_03);
|
||||
break;
|
||||
}
|
||||
|
||||
updatechildren();
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
setpointbar(param_00,param_01,param_02,param_03)
|
||||
{
|
||||
self.bar.horzalign = self.horzalign;
|
||||
self.bar.vertalign = self.vertalign;
|
||||
self.bar.alignx = "left";
|
||||
self.bar.aligny = self.aligny;
|
||||
self.bar.y = self.y;
|
||||
if(self.alignx == "left")
|
||||
{
|
||||
self.bar.x = self.x + self.padding;
|
||||
}
|
||||
else if(self.alignx == "right")
|
||||
{
|
||||
self.bar.x = self.x - self.width - self.padding;
|
||||
}
|
||||
else
|
||||
{
|
||||
self.bar.x = self.x - int(self.width - self.padding / 2);
|
||||
}
|
||||
|
||||
updatebar(self.bar.frac);
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
updatebar(param_00)
|
||||
{
|
||||
var_01 = int(self.width - self.padding * 2 * param_00);
|
||||
if(!var_01)
|
||||
{
|
||||
var_01 = 1;
|
||||
}
|
||||
|
||||
self.bar.frac = param_00;
|
||||
self.bar setshader(self.bar.shader,var_01,self.height - self.padding * 2);
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
hidebar(param_00)
|
||||
{
|
||||
param_00 = common_scripts\utility::ter_op(isdefined(param_00),param_00,1);
|
||||
if(param_00 || !isdefined(self.var_987) || !isdefined(self.bar.var_987))
|
||||
{
|
||||
self.var_987 = self.alpha;
|
||||
self.bar.var_987 = self.bar.alpha;
|
||||
}
|
||||
|
||||
self.alpha = common_scripts\utility::ter_op(param_00,0,self.var_987);
|
||||
self.bar.alpha = common_scripts\utility::ter_op(param_00,0,self.bar.var_987);
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
createfontstring(param_00,param_01)
|
||||
{
|
||||
var_02 = newhudelem();
|
||||
var_02.elemtype = "font";
|
||||
var_02.font = param_00;
|
||||
var_02.fontscale = param_01;
|
||||
var_02.x = 0;
|
||||
var_02.y = 0;
|
||||
var_02.width = 0;
|
||||
var_02.height = int(level.fontheight * param_01);
|
||||
var_02.xoffset = 0;
|
||||
var_02.yoffset = 0;
|
||||
var_02.children = [];
|
||||
var_02 setparent(level.uiparent);
|
||||
return var_02;
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
createclientfontstring(param_00,param_01)
|
||||
{
|
||||
var_02 = newclienthudelem(self);
|
||||
var_02.elemtype = "font";
|
||||
var_02.font = param_00;
|
||||
var_02.fontscale = param_01;
|
||||
var_02.x = 0;
|
||||
var_02.y = 0;
|
||||
var_02.width = 0;
|
||||
var_02.height = int(level.fontheight * param_01);
|
||||
var_02.xoffset = 0;
|
||||
var_02.yoffset = 0;
|
||||
var_02.children = [];
|
||||
var_02 setparent(level.uiparent);
|
||||
return var_02;
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
createclienttimer(param_00,param_01)
|
||||
{
|
||||
var_02 = newclienthudelem(self);
|
||||
var_02.elemtype = "timer";
|
||||
var_02.font = param_00;
|
||||
var_02.fontscale = param_01;
|
||||
var_02.x = 0;
|
||||
var_02.y = 0;
|
||||
var_02.width = 0;
|
||||
var_02.height = int(level.fontheight * param_01);
|
||||
var_02.xoffset = 0;
|
||||
var_02.yoffset = 0;
|
||||
var_02.children = [];
|
||||
var_02 setparent(level.uiparent);
|
||||
return var_02;
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
createserverfontstring(param_00,param_01)
|
||||
{
|
||||
var_02 = newhudelem();
|
||||
var_02.elemtype = "font";
|
||||
var_02.font = param_00;
|
||||
var_02.fontscale = param_01;
|
||||
var_02.x = 0;
|
||||
var_02.y = 0;
|
||||
var_02.width = 0;
|
||||
var_02.height = int(level.fontheight * param_01);
|
||||
var_02.xoffset = 0;
|
||||
var_02.yoffset = 0;
|
||||
var_02.children = [];
|
||||
var_02 setparent(level.uiparent);
|
||||
return var_02;
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
createservertimer(param_00,param_01)
|
||||
{
|
||||
var_02 = newhudelem();
|
||||
var_02.elemtype = "timer";
|
||||
var_02.font = param_00;
|
||||
var_02.fontscale = param_01;
|
||||
var_02.x = 0;
|
||||
var_02.y = 0;
|
||||
var_02.width = 0;
|
||||
var_02.height = int(level.fontheight * param_01);
|
||||
var_02.xoffset = 0;
|
||||
var_02.yoffset = 0;
|
||||
var_02.children = [];
|
||||
var_02 setparent(level.uiparent);
|
||||
return var_02;
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
createicon(param_00,param_01,param_02)
|
||||
{
|
||||
var_03 = newhudelem();
|
||||
return createicon_hudelem(var_03,param_00,param_01,param_02);
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
createclienticon(param_00,param_01,param_02)
|
||||
{
|
||||
var_03 = newclienthudelem(self);
|
||||
return createicon_hudelem(var_03,param_00,param_01,param_02);
|
||||
}
|
||||
|
||||
//Function Number: 16
|
||||
createicon_hudelem(param_00,param_01,param_02,param_03)
|
||||
{
|
||||
param_00.elemtype = "icon";
|
||||
param_00.x = 0;
|
||||
param_00.y = 0;
|
||||
param_00.width = param_02;
|
||||
param_00.height = param_03;
|
||||
param_00.xoffset = 0;
|
||||
param_00.yoffset = 0;
|
||||
param_00.children = [];
|
||||
param_00 setparent(level.uiparent);
|
||||
if(isdefined(param_01))
|
||||
{
|
||||
param_00 setshader(param_01,param_02,param_03);
|
||||
}
|
||||
|
||||
return param_00;
|
||||
}
|
||||
|
||||
//Function Number: 17
|
||||
createbar(param_00,param_01,param_02,param_03,param_04)
|
||||
{
|
||||
if(!isdefined(param_00))
|
||||
{
|
||||
param_00 = "white";
|
||||
}
|
||||
|
||||
if(!isdefined(param_01))
|
||||
{
|
||||
param_01 = "black";
|
||||
}
|
||||
|
||||
if(!isdefined(param_02))
|
||||
{
|
||||
param_02 = 100;
|
||||
}
|
||||
|
||||
if(!isdefined(param_03))
|
||||
{
|
||||
param_03 = 9;
|
||||
}
|
||||
|
||||
var_05 = newhudelem();
|
||||
var_05.x = 2;
|
||||
var_05.y = 2;
|
||||
var_05.frac = 0.25;
|
||||
var_05.shader = param_00;
|
||||
var_05.sort = -1;
|
||||
var_05 setshader(param_00,param_02 - 2,param_03 - 2);
|
||||
if(isdefined(param_04))
|
||||
{
|
||||
var_05.flashfrac = param_04;
|
||||
var_05 thread flashthread();
|
||||
}
|
||||
|
||||
var_06 = newhudelem();
|
||||
var_06.elemtype = "bar";
|
||||
var_06.x = 0;
|
||||
var_06.y = 0;
|
||||
var_06.width = param_02;
|
||||
var_06.height = param_03;
|
||||
var_06.xoffset = 0;
|
||||
var_06.yoffset = 0;
|
||||
var_06.bar = var_05;
|
||||
var_06.children = [];
|
||||
var_06.padding = 2;
|
||||
var_06.sort = -2;
|
||||
var_06.alpha = 0.5;
|
||||
var_06 setparent(level.uiparent);
|
||||
var_06 setshader(param_01,param_02,param_03);
|
||||
return var_06;
|
||||
}
|
||||
|
||||
//Function Number: 18
|
||||
createclientprogressbar(param_00,param_01,param_02,param_03,param_04,param_05)
|
||||
{
|
||||
param_00 = common_scripts\utility::ter_op(isdefined(param_00),param_00,level.player);
|
||||
param_01 = common_scripts\utility::ter_op(isdefined(param_01),param_01,90);
|
||||
param_02 = common_scripts\utility::ter_op(isdefined(param_02),param_02,"white");
|
||||
param_03 = common_scripts\utility::ter_op(isdefined(param_03),param_03,"black");
|
||||
param_04 = common_scripts\utility::ter_op(isdefined(param_04),param_04,100);
|
||||
param_05 = common_scripts\utility::ter_op(isdefined(param_05),param_05,9);
|
||||
var_06 = param_00 createclientbar(param_02,param_03,param_04,param_05);
|
||||
var_06 setpoint("CENTER",undefined,0,param_01);
|
||||
return var_06;
|
||||
}
|
||||
|
||||
//Function Number: 19
|
||||
createclientbar(param_00,param_01,param_02,param_03,param_04)
|
||||
{
|
||||
var_05 = newclienthudelem(self);
|
||||
var_05.x = 2;
|
||||
var_05.y = 2;
|
||||
var_05.frac = 0.25;
|
||||
var_05.shader = param_00;
|
||||
var_05.sort = -1;
|
||||
var_05 setshader(param_00,param_02 - 2,param_03 - 2);
|
||||
if(isdefined(param_04))
|
||||
{
|
||||
var_05.flashfrac = param_04;
|
||||
var_05 thread flashthread();
|
||||
}
|
||||
|
||||
var_06 = newclienthudelem(self);
|
||||
var_06.elemtype = "bar";
|
||||
var_06.x = 0;
|
||||
var_06.y = 0;
|
||||
var_06.width = param_02;
|
||||
var_06.height = param_03;
|
||||
var_06.xoffset = 0;
|
||||
var_06.yoffset = 0;
|
||||
var_06.bar = var_05;
|
||||
var_06.children = [];
|
||||
var_06.padding = 2;
|
||||
var_06.sort = -2;
|
||||
var_06.alpha = 0.5;
|
||||
var_06 setparent(level.uiparent);
|
||||
var_06 setshader(param_01,param_02,param_03);
|
||||
return var_06;
|
||||
}
|
||||
|
||||
//Function Number: 20
|
||||
setflashfrac(param_00)
|
||||
{
|
||||
self.bar.flashfrac = param_00;
|
||||
}
|
||||
|
||||
//Function Number: 21
|
||||
fade_over_time(param_00,param_01)
|
||||
{
|
||||
if(isdefined(param_01) && param_01 > 0)
|
||||
{
|
||||
self fadeovertime(param_01);
|
||||
}
|
||||
|
||||
self.alpha = param_00;
|
||||
if(isdefined(param_01) && param_01 > 0)
|
||||
{
|
||||
wait param_01;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 22
|
||||
flashthread()
|
||||
{
|
||||
self endon("death");
|
||||
self.alpha = 1;
|
||||
for(;;)
|
||||
{
|
||||
if(self.frac >= self.flashfrac)
|
||||
{
|
||||
self fadeovertime(0.3);
|
||||
self.alpha = 0.2;
|
||||
wait 0.35;
|
||||
self fadeovertime(0.3);
|
||||
self.alpha = 1;
|
||||
wait 0.7;
|
||||
continue;
|
||||
}
|
||||
|
||||
self.alpha = 1;
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 23
|
||||
destroyelem()
|
||||
{
|
||||
var_00 = [];
|
||||
for(var_01 = 0;var_01 < self.children.size;var_01++)
|
||||
{
|
||||
var_00[var_01] = self.children[var_01];
|
||||
}
|
||||
|
||||
for(var_01 = 0;var_01 < var_00.size;var_01++)
|
||||
{
|
||||
var_00[var_01] setparent(getparent());
|
||||
}
|
||||
|
||||
if(self.elemtype == "bar")
|
||||
{
|
||||
self.bar destroy();
|
||||
}
|
||||
|
||||
self destroy();
|
||||
}
|
||||
|
||||
//Function Number: 24
|
||||
seticonshader(param_00)
|
||||
{
|
||||
self setshader(param_00,self.width,self.height);
|
||||
}
|
||||
|
||||
//Function Number: 25
|
||||
setwidth(param_00)
|
||||
{
|
||||
self.width = param_00;
|
||||
}
|
||||
|
||||
//Function Number: 26
|
||||
setheight(param_00)
|
||||
{
|
||||
self.height = param_00;
|
||||
}
|
||||
|
||||
//Function Number: 27
|
||||
setsize(param_00,param_01)
|
||||
{
|
||||
self.width = param_00;
|
||||
self.height = param_01;
|
||||
}
|
||||
|
||||
//Function Number: 28
|
||||
updatechildren()
|
||||
{
|
||||
for(var_00 = 0;var_00 < self.children.size;var_00++)
|
||||
{
|
||||
var_01 = self.children[var_00];
|
||||
var_01 setpoint(var_01.point,var_01.relativepoint,var_01.xoffset,var_01.yoffset);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 29
|
||||
stance_carry_icon_enable(param_00)
|
||||
{
|
||||
if(isdefined(param_00) && param_00 == 0)
|
||||
{
|
||||
stance_carry_icon_disable();
|
||||
return;
|
||||
}
|
||||
|
||||
if(isdefined(level.var_99F))
|
||||
{
|
||||
level.var_99F destroy();
|
||||
}
|
||||
|
||||
setsaveddvar("hud_showStance","0");
|
||||
level.var_99F = newhudelem();
|
||||
level.var_99F.x = -75;
|
||||
if(level.console)
|
||||
{
|
||||
level.var_99F.y = -20;
|
||||
}
|
||||
else
|
||||
{
|
||||
level.var_99F.y = -10;
|
||||
}
|
||||
|
||||
level.var_99F setshader("stance_carry",64,64);
|
||||
level.var_99F.alignx = "right";
|
||||
level.var_99F.aligny = "bottom";
|
||||
level.var_99F.horzalign = "right";
|
||||
level.var_99F.vertalign = "bottom";
|
||||
level.var_99F.foreground = 1;
|
||||
level.var_99F.alpha = 0;
|
||||
level.var_99F fadeovertime(0.5);
|
||||
level.var_99F.alpha = 1;
|
||||
}
|
||||
|
||||
//Function Number: 30
|
||||
stance_carry_icon_disable()
|
||||
{
|
||||
if(isdefined(level.var_99F))
|
||||
{
|
||||
level.var_99F fadeovertime(0.5);
|
||||
level.var_99F.alpha = 0;
|
||||
level.var_99F destroy();
|
||||
}
|
||||
|
||||
setsaveddvar("hud_showStance","1");
|
||||
}
|
||||
|
||||
//Function Number: 31
|
||||
create_mantle()
|
||||
{
|
||||
if(level.console)
|
||||
{
|
||||
var_00 = createfontstring("default",1.8);
|
||||
var_00 setpoint("CENTER",undefined,-23,115);
|
||||
var_00 settext(level.strings["mantle"]);
|
||||
var_01 = createicon("hint_mantle",40,40);
|
||||
var_01 setpoint("CENTER",undefined,73,0);
|
||||
var_01 setparent(var_00);
|
||||
}
|
||||
else
|
||||
{
|
||||
var_00 = createfontstring("default",1.6);
|
||||
var_01 setpoint("CENTER",undefined,0,115);
|
||||
var_01 settext(level.strings["mantle"]);
|
||||
var_01 = createicon("hint_mantle",40,40);
|
||||
var_01 setpoint("CENTER",undefined,0,30);
|
||||
var_01 setparent(var_00);
|
||||
}
|
||||
|
||||
var_01.alpha = 0;
|
||||
var_00.alpha = 0;
|
||||
level.var_9A4 = [];
|
||||
level.var_9A4["text"] = var_00;
|
||||
level.var_9A4["icon"] = var_01;
|
||||
}
|
||||
|
||||
//Function Number: 32
|
||||
get_countdown_hud(param_00,param_01,param_02,param_03)
|
||||
{
|
||||
if(!isdefined(param_03))
|
||||
{
|
||||
param_03 = 0;
|
||||
}
|
||||
|
||||
var_04 = undefined;
|
||||
if(!level.console)
|
||||
{
|
||||
var_04 = -250;
|
||||
}
|
||||
else if(!isdefined(param_00))
|
||||
{
|
||||
var_04 = -225;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_04 = param_00;
|
||||
}
|
||||
|
||||
if(param_03)
|
||||
{
|
||||
var_04 = param_00;
|
||||
}
|
||||
|
||||
if(!isdefined(param_01))
|
||||
{
|
||||
var_05 = 100;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_05 = param_02;
|
||||
}
|
||||
|
||||
if(isdefined(param_02))
|
||||
{
|
||||
var_06 = newclienthudelem(param_02);
|
||||
}
|
||||
else
|
||||
{
|
||||
var_06 = newhudelem();
|
||||
}
|
||||
|
||||
var_06.alignx = "left";
|
||||
var_06.aligny = "middle";
|
||||
var_06.horzalign = "right";
|
||||
var_06.vertalign = "top";
|
||||
var_06.x = var_04;
|
||||
var_06.y = var_05;
|
||||
var_06.fontscale = 1.6;
|
||||
var_06.color = (0.8,1,0.8);
|
||||
var_06.font = "objective";
|
||||
var_06.glowcolor = (0.3,0.6,0.3);
|
||||
var_06.glowalpha = 1;
|
||||
var_06.foreground = 1;
|
||||
var_06.hidewheninmenu = 1;
|
||||
var_06.hidewhendead = 1;
|
||||
return var_06;
|
||||
}
|
||||
|
||||
//Function Number: 33
|
||||
get_download_state_hud(param_00,param_01,param_02,param_03)
|
||||
{
|
||||
if(!isdefined(param_03))
|
||||
{
|
||||
param_03 = 0;
|
||||
}
|
||||
|
||||
var_04 = undefined;
|
||||
if(!level.console)
|
||||
{
|
||||
var_04 = -250;
|
||||
}
|
||||
else if(!isdefined(param_00))
|
||||
{
|
||||
var_04 = -170;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_04 = param_00;
|
||||
}
|
||||
|
||||
if(param_03)
|
||||
{
|
||||
var_04 = param_00;
|
||||
}
|
||||
|
||||
if(!isdefined(param_01))
|
||||
{
|
||||
var_05 = 100;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_05 = param_02;
|
||||
}
|
||||
|
||||
if(isdefined(param_02))
|
||||
{
|
||||
var_06 = newclienthudelem(param_02);
|
||||
}
|
||||
else
|
||||
{
|
||||
var_06 = newhudelem();
|
||||
}
|
||||
|
||||
var_06.alignx = "right";
|
||||
var_06.aligny = "middle";
|
||||
var_06.horzalign = "right";
|
||||
var_06.vertalign = "top";
|
||||
var_06.x = var_04;
|
||||
var_06.y = var_05;
|
||||
var_06.fontscale = 1.6;
|
||||
var_06.color = (0.8,1,0.8);
|
||||
var_06.font = "objective";
|
||||
var_06.glowcolor = (0.3,0.6,0.3);
|
||||
var_06.glowalpha = 1;
|
||||
var_06.foreground = 1;
|
||||
var_06.hidewheninmenu = 1;
|
||||
var_06.hidewhendead = 1;
|
||||
return var_06;
|
||||
}
|
||||
|
||||
//Function Number: 34
|
||||
create_client_overlay(param_00,param_01,param_02)
|
||||
{
|
||||
if(isdefined(param_02))
|
||||
{
|
||||
var_03 = newclienthudelem(param_02);
|
||||
}
|
||||
else
|
||||
{
|
||||
var_03 = newhudelem();
|
||||
}
|
||||
|
||||
var_03.x = 0;
|
||||
var_03.y = 0;
|
||||
var_03 setshader(param_00,640,480);
|
||||
var_03.alignx = "left";
|
||||
var_03.aligny = "top";
|
||||
var_03.sort = 1;
|
||||
var_03.horzalign = "fullscreen";
|
||||
var_03.vertalign = "fullscreen";
|
||||
var_03.alpha = param_01;
|
||||
var_03.foreground = 1;
|
||||
return var_03;
|
||||
}
|
||||
|
||||
//Function Number: 35
|
||||
create_client_overlay_custom_size(param_00,param_01,param_02,param_03,param_04)
|
||||
{
|
||||
var_05 = maps\_utility::get_player_from_self();
|
||||
var_06 = newclienthudelem(var_05);
|
||||
if(!isdefined(param_04))
|
||||
{
|
||||
param_04 = 1;
|
||||
}
|
||||
|
||||
if(!isdefined(param_02))
|
||||
{
|
||||
param_02 = 0;
|
||||
}
|
||||
|
||||
if(!isdefined(param_03))
|
||||
{
|
||||
param_03 = 0;
|
||||
}
|
||||
|
||||
var_06.x = param_02;
|
||||
var_06.y = param_03;
|
||||
var_06 setshader(param_00,int(640 * param_04),int(480 * param_04));
|
||||
var_06.alignx = "center";
|
||||
var_06.aligny = "middle";
|
||||
var_06.sort = 1;
|
||||
var_06.horzalign = "center";
|
||||
var_06.vertalign = "middle";
|
||||
var_06.alpha = param_01;
|
||||
var_06.foreground = 1;
|
||||
return var_06;
|
||||
}
|
||||
|
||||
//Function Number: 36
|
||||
create_client_overlay_fullscreen(param_00,param_01,param_02,param_03,param_04)
|
||||
{
|
||||
var_05 = maps\_utility::get_player_from_self();
|
||||
var_06 = newclienthudelem(var_05);
|
||||
if(!isdefined(param_04))
|
||||
{
|
||||
param_04 = 1;
|
||||
}
|
||||
|
||||
var_06.x = param_02;
|
||||
var_06.y = param_03;
|
||||
var_06 setshader(param_00,int(640 * param_04),int(480 * param_04));
|
||||
var_06.alignx = "center";
|
||||
var_06.aligny = "middle";
|
||||
var_06.sort = 1;
|
||||
var_06.horzalign = "fullscreen";
|
||||
var_06.vertalign = "fullscreen";
|
||||
var_06.alpha = param_01;
|
||||
var_06.foreground = 1;
|
||||
return var_06;
|
||||
}
|
342
MW3/PC/SP/maps/_hud_weapons.gsc
Normal file
342
MW3/PC/SP/maps/_hud_weapons.gsc
Normal file
@ -0,0 +1,342 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_hud_weapons.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 11
|
||||
* Decompile Time: 135 ms
|
||||
* Timestamp: 10/27/2023 2:20:07 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
registerweaponinfo(param_00,param_01,param_02,param_03)
|
||||
{
|
||||
level.weaponinfo[param_00]["type"] = param_02;
|
||||
level.weaponinfo[param_00]["clip"] = param_03;
|
||||
level.weaponinfo[param_00]["string"] = param_01;
|
||||
precachestring(param_01);
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
isweaponregistered(param_00)
|
||||
{
|
||||
if(!isdefined(level.weaponinfo[param_00]))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
getweaponinfotype(param_00)
|
||||
{
|
||||
return level.weaponinfo[param_00]["type"];
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
getweaponinfoclip(param_00)
|
||||
{
|
||||
return level.weaponinfo[param_00]["clip"];
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
getweaponinfostring(param_00)
|
||||
{
|
||||
return level.weaponinfo[param_00]["string"];
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
init()
|
||||
{
|
||||
precacheshader("hud_bullets_rifle");
|
||||
precacheshader("hud_bullets_pistol");
|
||||
precacheshader("hud_bullets_sniper");
|
||||
precacheshader("hud_bullets_spread");
|
||||
precacheshader("hud_bullets_support_front");
|
||||
precacheshader("hud_bullets_support_back");
|
||||
level.bulletalphas = [];
|
||||
level.bulletalphas[level.bulletalphas.size] = 1;
|
||||
level.bulletalphas[level.bulletalphas.size] = 0.996;
|
||||
level.bulletalphas[level.bulletalphas.size] = 0.949;
|
||||
level.bulletalphas[level.bulletalphas.size] = 0.909;
|
||||
level.bulletalphas[level.bulletalphas.size] = 0.87;
|
||||
level.bulletalphas[level.bulletalphas.size] = 0.835;
|
||||
level.bulletalphas[level.bulletalphas.size] = 0.803;
|
||||
level.bulletalphas[level.bulletalphas.size] = 0.776;
|
||||
level.bulletalphas[level.bulletalphas.size] = 0.749;
|
||||
level.bulletalphas[level.bulletalphas.size] = 0.721;
|
||||
level.bulletalphas[level.bulletalphas.size] = 0.698;
|
||||
level.bulletalphas[level.bulletalphas.size] = 0.674;
|
||||
level.bulletalphas[level.bulletalphas.size] = 0.654;
|
||||
level.bulletalphas[level.bulletalphas.size] = 0.635;
|
||||
level.bulletalphas[level.bulletalphas.size] = 0.615;
|
||||
level.bulletalphas[level.bulletalphas.size] = 0.596;
|
||||
level.bulletalphas[level.bulletalphas.size] = 0.58;
|
||||
level.bulletalphas[level.bulletalphas.size] = 0.564;
|
||||
level.bulletalphas[level.bulletalphas.size] = 0.549;
|
||||
level.bulletalphas[level.bulletalphas.size] = 0.537;
|
||||
level.bulletalphas[level.bulletalphas.size] = 0.521;
|
||||
level.bulletalphas[level.bulletalphas.size] = 0.509;
|
||||
level.bulletalphas[level.bulletalphas.size] = 0.498;
|
||||
level.weaponinfo = [];
|
||||
registerweaponinfo("ak47",&"WEAPON_AK47_FULLAUTO","rifle",30);
|
||||
registerweaponinfo("ak47_semi",&"WEAPON_AK47_SEMIAUTO","rifle",30);
|
||||
registerweaponinfo("ak47_grenadier",&"WEAPON_AK47","rifle",30);
|
||||
registerweaponinfo("ak74u",&"WEAPON_AK74U_FULLAUTO","rifle",30);
|
||||
registerweaponinfo("ak74u_semi",&"WEAPON_AK74U_SEMIAUTO","rifle",30);
|
||||
registerweaponinfo("beretta",&"WEAPON_BERETTA","pistol",15);
|
||||
registerweaponinfo("g36c",&"WEAPON_G36C","rifle",30);
|
||||
registerweaponinfo("m14_scoped",&"WEAPON_M14","sniper",10);
|
||||
registerweaponinfo("m16_basic",&"WEAPON_M16A4_FULLAUTO","rifle",30);
|
||||
registerweaponinfo("m16_basic_semi",&"WEAPON_M16A4_SEMIAUTO","rifle",30);
|
||||
registerweaponinfo("m16_grenadier",&"WEAPON_M16","rifle",30);
|
||||
registerweaponinfo("m203",&"WEAPON_M203","grenade",1);
|
||||
registerweaponinfo("rpg",&"WEAPON_RPG","grenade",5);
|
||||
registerweaponinfo("saw",&"WEAPON_SAW","support",100);
|
||||
registerweaponinfo("m4_grunt",&"WEAPON_M4_FULLAUTO","rifle",30);
|
||||
registerweaponinfo("m4_grunt_semi",&"WEAPON_M4_SEMIAUTO","rifle",30);
|
||||
registerweaponinfo("m4_grenadier",&"WEAPON_M4","rifle",30);
|
||||
registerweaponinfo("m40a3",&"WEAPON_M40A3","sniper",10);
|
||||
registerweaponinfo("mp5",&"WEAPON_MP5","smg",30);
|
||||
registerweaponinfo("mp5_silencer",&"WEAPON_MP5SD","smg",30);
|
||||
registerweaponinfo("usp",&"WEAPON_USP","pistol",10);
|
||||
registerweaponinfo("at4",&"WEAPON_AT4","rocketlauncher",1);
|
||||
registerweaponinfo("dragunov",&"WEAPON_DRAGUNOV","sniper",10);
|
||||
registerweaponinfo("g3",&"WEAPON_G3","rifle",30);
|
||||
registerweaponinfo("winchester1200",&"WEAPON_WINCHESTER1200","shotgun",4);
|
||||
registerweaponinfo("uzi",&"WEAPON_UZI","smg",32);
|
||||
level.player initweaponhud();
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
initweaponhud()
|
||||
{
|
||||
if(!isdefined(self.hud_bullets))
|
||||
{
|
||||
self.hud_bullets = [];
|
||||
}
|
||||
|
||||
if(!isdefined(self.hud_bullets[0]))
|
||||
{
|
||||
self.hud_bullets[0] = maps\_hud_util::createicon(undefined,24,96);
|
||||
self.hud_bullets[0] maps\_hud_util::setpoint("BOTTOMRIGHT","BOTTOMRIGHT",-6,-47);
|
||||
self.hud_bullets[0].sort = 10;
|
||||
}
|
||||
|
||||
if(!isdefined(self.hud_bullets[1]))
|
||||
{
|
||||
self.hud_bullets[1] = maps\_hud_util::createicon(undefined,24,96);
|
||||
self.hud_bullets[1] maps\_hud_util::setpoint("BOTTOMRIGHT","BOTTOMRIGHT",-6,-47);
|
||||
self.hud_bullets[1].color = (0.7,0.7,0.7);
|
||||
self.hud_bullets[1].sort = 9;
|
||||
}
|
||||
|
||||
if(!isdefined(self.hud_bullets[2]))
|
||||
{
|
||||
self.hud_bullets[2] = maps\_hud_util::createicon(undefined,24,96);
|
||||
self.hud_bullets[2] maps\_hud_util::setpoint("BOTTOMRIGHT","BOTTOMRIGHT",-6,-47);
|
||||
self.hud_bullets[2].sort = 10;
|
||||
}
|
||||
|
||||
if(!isdefined(self.hud_bullets[3]))
|
||||
{
|
||||
self.hud_bullets[3] = maps\_hud_util::createicon(undefined,24,96);
|
||||
self.hud_bullets[3] maps\_hud_util::setpoint("BOTTOMRIGHT","BOTTOMRIGHT",-6,-47);
|
||||
self.hud_bullets[3].color = (0.7,0.7,0.7);
|
||||
self.hud_bullets[3].sort = 9;
|
||||
}
|
||||
|
||||
if(!isdefined(self.hud_bullets[4]))
|
||||
{
|
||||
self.hud_bullets[4] = maps\_hud_util::createicon(undefined,24,96);
|
||||
self.hud_bullets[4] maps\_hud_util::setpoint("BOTTOMRIGHT","BOTTOMRIGHT",-6,-47);
|
||||
self.hud_bullets[4].sort = 10;
|
||||
}
|
||||
|
||||
thread updatebullethudthink();
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
updatebullethudthink()
|
||||
{
|
||||
self endon("death");
|
||||
var_00 = -1;
|
||||
var_01 = "";
|
||||
var_02 = "";
|
||||
for(;;)
|
||||
{
|
||||
var_03 = self getcurrentweapon();
|
||||
if(isweaponregistered(var_03))
|
||||
{
|
||||
var_04 = getweaponinfotype(var_03);
|
||||
var_05 = self getweaponammoclip(self getcurrentweapon());
|
||||
if(var_03 != var_01 && var_04 != var_02)
|
||||
{
|
||||
sethudweapontype(var_04);
|
||||
var_01 = var_03;
|
||||
var_02 = var_04;
|
||||
var_00 = -1;
|
||||
}
|
||||
|
||||
if(var_05 != var_00)
|
||||
{
|
||||
updatehudweaponammo(var_03,var_05);
|
||||
var_00 = var_05;
|
||||
}
|
||||
}
|
||||
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
sethudweapontype(param_00)
|
||||
{
|
||||
self.pers["weaponType"] = param_00;
|
||||
if(!isdefined(self.hud_bullets))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
for(var_01 = 0;var_01 < self.hud_bullets.size;var_01++)
|
||||
{
|
||||
self.hud_bullets[var_01].alpha = 0;
|
||||
}
|
||||
|
||||
switch(param_00)
|
||||
{
|
||||
case "pistol":
|
||||
self.hud_bullets[0] maps\_hud_util::setpoint("BOTTOMRIGHT","BOTTOMRIGHT",-6,-47);
|
||||
self.hud_bullets[0] maps\_hud_util::seticonshader("hud_bullets_pistol");
|
||||
self.hud_bullets[0].alpha = 1;
|
||||
break;
|
||||
|
||||
case "smg":
|
||||
self.hud_bullets[0] maps\_hud_util::setpoint("BOTTOMRIGHT","BOTTOMRIGHT",-6,-47);
|
||||
self.hud_bullets[0] maps\_hud_util::seticonshader("hud_bullets_rifle");
|
||||
self.hud_bullets[1] maps\_hud_util::seticonshader("hud_bullets_rifle");
|
||||
self.hud_bullets[1] maps\_hud_util::setpoint("BOTTOMRIGHT","BOTTOMRIGHT",-4,-50);
|
||||
self.hud_bullets[0].alpha = 1;
|
||||
self.hud_bullets[1].alpha = 1;
|
||||
break;
|
||||
|
||||
case "rifle":
|
||||
self.hud_bullets[0] maps\_hud_util::setpoint("BOTTOMRIGHT","BOTTOMRIGHT",-6,-47);
|
||||
self.hud_bullets[0] maps\_hud_util::seticonshader("hud_bullets_rifle");
|
||||
self.hud_bullets[1] maps\_hud_util::seticonshader("hud_bullets_rifle");
|
||||
self.hud_bullets[1] maps\_hud_util::setpoint("BOTTOMRIGHT","BOTTOMRIGHT",-4,-50);
|
||||
self.hud_bullets[0].alpha = 1;
|
||||
self.hud_bullets[1].alpha = 1;
|
||||
break;
|
||||
|
||||
case "sniper":
|
||||
self.hud_bullets[0] maps\_hud_util::setpoint("BOTTOMRIGHT","BOTTOMRIGHT",-6,-47);
|
||||
self.hud_bullets[0] maps\_hud_util::seticonshader("hud_bullets_sniper");
|
||||
self.hud_bullets[0].alpha = 1;
|
||||
break;
|
||||
|
||||
case "spread":
|
||||
self.hud_bullets[0] maps\_hud_util::setpoint("BOTTOMRIGHT","BOTTOMRIGHT",-6,-47);
|
||||
self.hud_bullets[0] maps\_hud_util::seticonshader("hud_bullets_spread");
|
||||
self.hud_bullets[0].alpha = 1;
|
||||
break;
|
||||
|
||||
case "support":
|
||||
var_02 = 0;
|
||||
for(var_01 = 0;var_01 < 5;var_01++)
|
||||
{
|
||||
self.hud_bullets[var_01] maps\_hud_util::setpoint("BOTTOMRIGHT","BOTTOMRIGHT",-6 + var_02,-70);
|
||||
self.hud_bullets[var_01].alpha = 1;
|
||||
if(var_01 % 2)
|
||||
{
|
||||
self.hud_bullets[var_01] maps\_hud_util::seticonshader("hud_bullets_support_back");
|
||||
}
|
||||
else
|
||||
{
|
||||
self.hud_bullets[var_01] maps\_hud_util::seticonshader("hud_bullets_support_front");
|
||||
}
|
||||
|
||||
var_02 = var_02 - 14;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
gethudweapontype()
|
||||
{
|
||||
return self.pers["weaponType"];
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
updatehudweaponammo(param_00,param_01)
|
||||
{
|
||||
if(!isdefined(self.hud_bullets))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
switch(gethudweapontype())
|
||||
{
|
||||
case "pistol":
|
||||
var_02 = 15 - getweaponinfoclip(param_00);
|
||||
var_03 = getweaponinfoclip(param_00) - param_01;
|
||||
self.hud_bullets[0].alpha = level.bulletalphas[var_02 + var_03];
|
||||
break;
|
||||
|
||||
case "rifle":
|
||||
var_03 = getweaponinfoclip(param_00) - param_01;
|
||||
var_04 = int(var_03 / 2);
|
||||
var_04 = var_04 + var_03 % 2;
|
||||
var_05 = int(var_03 / 2);
|
||||
self.hud_bullets[0].alpha = level.bulletalphas[var_04];
|
||||
self.hud_bullets[1].alpha = level.bulletalphas[var_05];
|
||||
break;
|
||||
|
||||
case "smg":
|
||||
var_03 = getweaponinfoclip(param_00) - param_01;
|
||||
var_04 = int(var_03 / 2);
|
||||
var_04 = var_04 + var_03 % 2;
|
||||
var_05 = int(var_03 / 2);
|
||||
self.hud_bullets[0].alpha = level.bulletalphas[var_04];
|
||||
self.hud_bullets[1].alpha = level.bulletalphas[var_05];
|
||||
break;
|
||||
|
||||
case "sniper":
|
||||
var_02 = 15 - getweaponinfoclip(param_00);
|
||||
var_03 = getweaponinfoclip(param_00) - param_01;
|
||||
self.hud_bullets[0].alpha = level.bulletalphas[var_02 + var_03];
|
||||
break;
|
||||
|
||||
case "spread":
|
||||
var_02 = 15 - getweaponinfoclip(param_00);
|
||||
var_03 = getweaponinfoclip(param_00) - param_01;
|
||||
self.hud_bullets[0].alpha = level.bulletalphas[var_02 + var_03];
|
||||
break;
|
||||
|
||||
case "support":
|
||||
var_02 = 100 - getweaponinfoclip(param_00);
|
||||
var_03 = getweaponinfoclip(param_00) - param_01;
|
||||
var_03 = var_02 + var_03;
|
||||
var_06 = 20;
|
||||
for(var_07 = 4;var_07 >= 0;var_07--)
|
||||
{
|
||||
if(var_03 > var_06)
|
||||
{
|
||||
self.hud_bullets[var_07].alpha = 0;
|
||||
}
|
||||
else if(var_06 - var_03 <= 20)
|
||||
{
|
||||
self.hud_bullets[var_07].alpha = level.bulletalphas[var_03 - var_06 - 20];
|
||||
}
|
||||
else
|
||||
{
|
||||
self.hud_bullets[var_07].alpha = 1;
|
||||
}
|
||||
|
||||
var_06 = var_06 + 20;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
320
MW3/PC/SP/maps/_intelligence.gsc
Normal file
320
MW3/PC/SP/maps/_intelligence.gsc
Normal file
@ -0,0 +1,320 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_intelligence.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 16
|
||||
* Decompile Time: 254 ms
|
||||
* Timestamp: 10/27/2023 2:23:04 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
if(maps\_utility::is_iw4_map_sp())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
precachestring(&"SCRIPT_INTELLIGENCE_OF_FOURTYSIX");
|
||||
precachestring(&"SCRIPT_INTELLIGENCE_PREV_FOUND");
|
||||
level.intel_items = create_array_of_intel_items();
|
||||
setdvar("ui_level_cheatpoints",level.intel_items.size);
|
||||
level.intel_counter = 0;
|
||||
setdvar("ui_level_player_cheatpoints",level.intel_counter);
|
||||
level.table_origins = create_array_of_origins_from_table();
|
||||
initialize_intel();
|
||||
if(maps\_utility::is_specialop())
|
||||
{
|
||||
remove_all_intel();
|
||||
return;
|
||||
}
|
||||
|
||||
intel_think();
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
remove_all_intel()
|
||||
{
|
||||
foreach(var_01 in level.intel_items)
|
||||
{
|
||||
if(!isdefined(var_01.removed))
|
||||
{
|
||||
var_01 remove_intel_item();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
remove_intel_item()
|
||||
{
|
||||
self.removed = 1;
|
||||
self.item hide();
|
||||
self.item notsolid();
|
||||
common_scripts\utility::trigger_off();
|
||||
level.intel_counter++;
|
||||
setdvar("ui_level_player_cheatpoints",level.intel_counter);
|
||||
self notify("end_trigger_thread");
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
initialize_intel()
|
||||
{
|
||||
foreach(var_01 in level.intel_items)
|
||||
{
|
||||
var_02 = var_01.origin;
|
||||
var_01.num = get_nums_from_origins(var_02);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
intel_think()
|
||||
{
|
||||
foreach(var_01 in level.intel_items)
|
||||
{
|
||||
if(var_01 check_item_found())
|
||||
{
|
||||
var_01 remove_intel_item();
|
||||
continue;
|
||||
}
|
||||
|
||||
var_01 thread wait_for_pickup();
|
||||
var_01 thread poll_for_found();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
poll_for_found()
|
||||
{
|
||||
self endon("end_loop_thread");
|
||||
while(!check_item_found())
|
||||
{
|
||||
wait 0.1;
|
||||
}
|
||||
|
||||
remove_intel_item();
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
check_item_found()
|
||||
{
|
||||
foreach(var_01 in level.players)
|
||||
{
|
||||
if(!var_01 getplayerintelisfound(self.num))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
create_array_of_intel_items()
|
||||
{
|
||||
var_00 = getentarray("intelligence_item","targetname");
|
||||
for(var_01 = 0;var_01 < var_00.size;var_01++)
|
||||
{
|
||||
var_00[var_01].item = getent(var_00[var_01].target,"targetname");
|
||||
var_00[var_01].found = 0;
|
||||
}
|
||||
|
||||
return var_00;
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
create_array_of_origins_from_table()
|
||||
{
|
||||
var_00 = [];
|
||||
for(var_01 = 1;var_01 <= 64;var_01++)
|
||||
{
|
||||
var_02 = tablelookup("maps/_intel_items.csv",0,var_01,4);
|
||||
if(isdefined(var_02) && var_02 != "undefined")
|
||||
{
|
||||
var_03 = strtok(var_02,",");
|
||||
for(var_04 = 0;var_04 < var_03.size;var_04++)
|
||||
{
|
||||
var_03[var_04] = int(var_03[var_04]);
|
||||
}
|
||||
|
||||
var_00[var_01] = (var_03[0],var_03[1],var_03[2]);
|
||||
continue;
|
||||
}
|
||||
|
||||
var_00[var_01] = undefined;
|
||||
}
|
||||
|
||||
return var_00;
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
wait_for_pickup()
|
||||
{
|
||||
self endon("end_trigger_thread");
|
||||
if(self.classname == "trigger_use")
|
||||
{
|
||||
self sethintstring(&"SCRIPT_INTELLIGENCE_PICKUP");
|
||||
self usetriggerrequirelookat();
|
||||
}
|
||||
|
||||
self waittill("trigger",var_00);
|
||||
self notify("end_loop_thread");
|
||||
intel_feedback(var_00);
|
||||
save_intel_for_all_players();
|
||||
updategamerprofileall();
|
||||
waittillframeend;
|
||||
remove_intel_item();
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
save_intel_for_all_players()
|
||||
{
|
||||
foreach(var_01 in level.players)
|
||||
{
|
||||
if(var_01 getplayerintelisfound(self.num))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_01 setplayerintelfound(self.num);
|
||||
}
|
||||
|
||||
logstring("found intel item " + self.num);
|
||||
maps\_endmission::updatesppercent();
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
give_point()
|
||||
{
|
||||
var_00 = self getlocalplayerprofiledata("cheatPoints");
|
||||
self setlocalplayerprofiledata("cheatPoints",var_00 + 1);
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
intel_feedback(param_00)
|
||||
{
|
||||
self.item hide();
|
||||
self.item notsolid();
|
||||
level thread common_scripts\utility::play_sound_in_space("intelligence_pickup",self.item.origin);
|
||||
var_01 = 3000;
|
||||
var_02 = 700;
|
||||
var_03 = var_01 + var_02 / 1000;
|
||||
foreach(var_05 in level.players)
|
||||
{
|
||||
if(param_00 != var_05 && var_05 getplayerintelisfound(self.num))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_06 = var_05 maps\_hud_util::createclientfontstring("objective",1.5);
|
||||
var_06.glowcolor = (0.7,0.7,0.3);
|
||||
var_06.glowalpha = 1;
|
||||
var_06 setup_hud_elem();
|
||||
var_06.y = -60;
|
||||
var_06 setpulsefx(60,var_01,var_02);
|
||||
var_07 = 0;
|
||||
if(param_00 == var_05 && var_05 getplayerintelisfound(self.num))
|
||||
{
|
||||
var_06.label = &"SCRIPT_INTELLIGENCE_PREV_FOUND";
|
||||
}
|
||||
else
|
||||
{
|
||||
var_06.label = &"SCRIPT_INTELLIGENCE_OF_FOURTYSIX";
|
||||
var_05 give_point();
|
||||
var_07 = var_05 getlocalplayerprofiledata("cheatPoints");
|
||||
var_06 setvalue(var_07);
|
||||
}
|
||||
|
||||
if(var_07 >= 22)
|
||||
{
|
||||
var_05 maps\_utility::player_giveachievement_wrapper("INFORMANT");
|
||||
}
|
||||
|
||||
if(var_07 == 46)
|
||||
{
|
||||
var_05 maps\_utility::player_giveachievement_wrapper("SCOUT_LEADER");
|
||||
}
|
||||
|
||||
var_06 common_scripts\utility::delaycall(var_03,::destroy);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
setup_hud_elem()
|
||||
{
|
||||
self.color = (1,1,1);
|
||||
self.alpha = 1;
|
||||
self.x = 0;
|
||||
self.alignx = "center";
|
||||
self.aligny = "middle";
|
||||
self.horzalign = "center";
|
||||
self.vertalign = "middle";
|
||||
self.foreground = 1;
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
assert_if_identical_origins()
|
||||
{
|
||||
var_00 = [];
|
||||
var_01 = 1;
|
||||
while(var_01 < 65)
|
||||
{
|
||||
var_02 = tablelookup("maps/_intel_items.csv",0,var_01,4);
|
||||
var_03 = strtok(var_02,",");
|
||||
var_01 = 0;
|
||||
while(var_01 < var_03.size)
|
||||
{
|
||||
var_02++ = var_7B[var_01];
|
||||
}
|
||||
|
||||
var_01[var_02] = (var_7B[0],var_7B[1],var_7B[2]);
|
||||
var_02++ = int(var_03[var_01]);
|
||||
}
|
||||
|
||||
for(var_02 = 0;var_02 < var_01.size;var_02++)
|
||||
{
|
||||
if(!isdefined(var_01[var_02]))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(var_01[var_02] == "undefined")
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
for(var_04 = 0;var_04 < var_01.size;var_04++)
|
||||
{
|
||||
if(!isdefined(var_01[var_04]))
|
||||
{
|
||||
}
|
||||
else if(var_01[var_04] == "undefined")
|
||||
{
|
||||
}
|
||||
else if(var_02 == var_04)
|
||||
{
|
||||
}
|
||||
else if(var_01[var_02] == var_01[var_04])
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 16
|
||||
get_nums_from_origins(param_00)
|
||||
{
|
||||
for(var_01 = 1;var_01 < level.table_origins.size + 1;var_01++)
|
||||
{
|
||||
if(!isdefined(level.table_origins[var_01]))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(distancesquared(param_00,level.table_origins[var_01]) < squared(75))
|
||||
{
|
||||
return var_01;
|
||||
}
|
||||
}
|
||||
}
|
1750
MW3/PC/SP/maps/_interactive_objects.gsc
Normal file
1750
MW3/PC/SP/maps/_interactive_objects.gsc
Normal file
File diff suppressed because it is too large
Load Diff
750
MW3/PC/SP/maps/_introscreen.gsc
Normal file
750
MW3/PC/SP/maps/_introscreen.gsc
Normal file
@ -0,0 +1,750 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_introscreen.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 31
|
||||
* Decompile Time: 481 ms
|
||||
* Timestamp: 10/27/2023 2:22:56 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
common_scripts\utility::flag_init("pullup_weapon");
|
||||
common_scripts\utility::flag_init("introscreen_complete");
|
||||
common_scripts\utility::flag_init("safe_for_objectives");
|
||||
common_scripts\utility::flag_init("introscreen_complete");
|
||||
maps\_utility::delaythread(10,::common_scripts\utility::flag_set,"safe_for_objectives");
|
||||
level.linefeed_delay = 16;
|
||||
precacheshader("black");
|
||||
precacheshader("white");
|
||||
if(getdvar("introscreen") == "")
|
||||
{
|
||||
setdvar("introscreen","1");
|
||||
}
|
||||
|
||||
if(isdefined(level.credits_active))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
main_old_maps();
|
||||
switch(get_introscreen_levelname())
|
||||
{
|
||||
case "london":
|
||||
precachestring(&"LONDON_INTROSCREEN_LINE_1");
|
||||
precachestring(&"LONDON_INTROSCREEN_LINE_2");
|
||||
precachestring(&"LONDON_INTROSCREEN_LINE_3");
|
||||
precachestring(&"LONDON_INTROSCREEN_LINE_4");
|
||||
precachestring(&"LONDON_INTROSCREEN_LINE_5");
|
||||
introscreen_delay();
|
||||
break;
|
||||
|
||||
case "castle":
|
||||
precachestring(&"CASTLE_INTROSCREEN_LINE_1");
|
||||
precachestring(&"CASTLE_INTROSCREEN_LINE_2");
|
||||
precachestring(&"CASTLE_INTROSCREEN_LINE_3");
|
||||
precachestring(&"CASTLE_INTROSCREEN_LINE_4");
|
||||
precachestring(&"CASTLE_INTROSCREEN_LINE_5");
|
||||
introscreen_delay();
|
||||
break;
|
||||
|
||||
case "prague":
|
||||
precachestring(&"PRAGUE_INTROSCREEN_LINE_1");
|
||||
precachestring(&"PRAGUE_INTROSCREEN_LINE_2");
|
||||
precachestring(&"PRAGUE_INTROSCREEN_LINE_3");
|
||||
precachestring(&"PRAGUE_INTROSCREEN_LINE_4");
|
||||
precachestring(&"PRAGUE_INTROSCREEN_LINE_5");
|
||||
introscreen_delay();
|
||||
break;
|
||||
|
||||
case "prague_escape":
|
||||
precachestring(&"PRAGUE_ESCAPE_INTROSCREEN_LINE_1");
|
||||
precachestring(&"PRAGUE_ESCAPE_INTROSCREEN_LINE_2");
|
||||
precachestring(&"PRAGUE_ESCAPE_INTROSCREEN_LINE_3");
|
||||
precachestring(&"PRAGUE_ESCAPE_INTROSCREEN_LINE_4");
|
||||
precachestring(&"PRAGUE_ESCAPE_INTROSCREEN_LINE_5");
|
||||
introscreen_delay();
|
||||
break;
|
||||
|
||||
case "payback":
|
||||
precachestring(&"PAYBACK_INTROSCREEN_LINE_1");
|
||||
precachestring(&"PAYBACK_INTROSCREEN_LINE_2");
|
||||
precachestring(&"PAYBACK_INTROSCREEN_LINE_3");
|
||||
precachestring(&"PAYBACK_INTROSCREEN_LINE_4");
|
||||
precachestring(&"PAYBACK_INTROSCREEN_LINE_5");
|
||||
introscreen_delay();
|
||||
break;
|
||||
|
||||
case "example":
|
||||
break;
|
||||
|
||||
case "hamburg":
|
||||
precachestring(&"TANKCOMMANDER_INTROSCREEN_LINE_1");
|
||||
precachestring(&"TANKCOMMANDER_INTROSCREEN_LINE_2");
|
||||
precachestring(&"TANKCOMMANDER_INTROSCREEN_LINE_3");
|
||||
precachestring(&"TANKCOMMANDER_INTROSCREEN_LINE_4");
|
||||
introscreen_delay();
|
||||
break;
|
||||
|
||||
case "rescue_2":
|
||||
precachestring(&"RESCUE_2_INTROSCREEN_LINE_1");
|
||||
precachestring(&"RESCUE_2_INTROSCREEN_LINE_2");
|
||||
precachestring(&"RESCUE_2_INTROSCREEN_LINE_3");
|
||||
precachestring(&"RESCUE_2_INTROSCREEN_LINE_4");
|
||||
introscreen_delay();
|
||||
break;
|
||||
|
||||
default:
|
||||
wait 0.05;
|
||||
level notify("finished final intro screen fadein");
|
||||
wait 0.05;
|
||||
level notify("starting final intro screen fadeout");
|
||||
wait 0.05;
|
||||
level notify("controls_active");
|
||||
wait 0.05;
|
||||
common_scripts\utility::flag_set("introscreen_complete");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
introscreen_feed_lines(param_00)
|
||||
{
|
||||
var_01 = getarraykeys(param_00);
|
||||
for(var_02 = 0;var_02 < var_01.size;var_02++)
|
||||
{
|
||||
var_03 = var_01[var_02];
|
||||
var_04 = 1;
|
||||
var_05 = var_02 * var_04 + 1;
|
||||
maps\_utility::delaythread(var_05,::introscreen_corner_line,param_00[var_03],param_00.size - var_02 - 1,var_04,var_03);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
introscreen_generic_black_fade_in(param_00,param_01,param_02)
|
||||
{
|
||||
introscreen_generic_fade_in("black",param_00,param_01,param_02);
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
introscreen_generic_white_fade_in(param_00,param_01,param_02)
|
||||
{
|
||||
introscreen_generic_fade_in("white",param_00,param_01,param_02);
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
introscreen_generic_fade_in(param_00,param_01,param_02,param_03)
|
||||
{
|
||||
if(!isdefined(param_02))
|
||||
{
|
||||
param_02 = 1.5;
|
||||
}
|
||||
|
||||
var_04 = newhudelem();
|
||||
var_04.x = 0;
|
||||
var_04.y = 0;
|
||||
var_04.horzalign = "fullscreen";
|
||||
var_04.vertalign = "fullscreen";
|
||||
var_04.foreground = 1;
|
||||
var_04 setshader(param_00,640,480);
|
||||
if(isdefined(param_03) && param_03 > 0)
|
||||
{
|
||||
var_04.alpha = 0;
|
||||
var_04 fadeovertime(param_03);
|
||||
var_04.alpha = 1;
|
||||
wait param_03;
|
||||
}
|
||||
|
||||
wait param_01;
|
||||
if(param_02 > 0)
|
||||
{
|
||||
var_04 fadeovertime(param_02);
|
||||
}
|
||||
|
||||
var_04.alpha = 0;
|
||||
wait param_02;
|
||||
setsaveddvar("com_cinematicEndInWhite",0);
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
introscreen_create_line(param_00)
|
||||
{
|
||||
var_01 = level.introstring.size;
|
||||
var_02 = var_01 * 30;
|
||||
if(level.console)
|
||||
{
|
||||
var_02 = var_02 - 60;
|
||||
}
|
||||
|
||||
level.introstring[var_01] = newhudelem();
|
||||
level.introstring[var_01].x = 0;
|
||||
level.introstring[var_01].y = var_02;
|
||||
level.introstring[var_01].alignx = "center";
|
||||
level.introstring[var_01].aligny = "middle";
|
||||
level.introstring[var_01].horzalign = "center";
|
||||
level.introstring[var_01].vertalign = "middle";
|
||||
level.introstring[var_01].sort = 1;
|
||||
level.introstring[var_01].foreground = 1;
|
||||
level.introstring[var_01].fontscale = 1.75;
|
||||
level.introstring[var_01] settext(param_00);
|
||||
level.introstring[var_01].alpha = 0;
|
||||
level.introstring[var_01] fadeovertime(1.2);
|
||||
level.introstring[var_01].alpha = 1;
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
introscreen_fadeouttext()
|
||||
{
|
||||
for(var_00 = 0;var_00 < level.introstring.size;var_00++)
|
||||
{
|
||||
level.introstring[var_00] fadeovertime(1.5);
|
||||
level.introstring[var_00].alpha = 0;
|
||||
}
|
||||
|
||||
wait 1.5;
|
||||
for(var_00 = 0;var_00 < level.introstring.size;var_00++)
|
||||
{
|
||||
level.introstring[var_00] destroy();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
introscreen_delay(param_00,param_01,param_02,param_03,param_04,param_05,param_06)
|
||||
{
|
||||
waittillframeend;
|
||||
waittillframeend;
|
||||
if(slamzoom_intro())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(introscreen_old_maps())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
switch(get_introscreen_levelname())
|
||||
{
|
||||
case "london":
|
||||
london_intro();
|
||||
break;
|
||||
|
||||
case "castle":
|
||||
castle_intro();
|
||||
break;
|
||||
|
||||
case "prague":
|
||||
prague_intro();
|
||||
break;
|
||||
|
||||
case "prague_escape":
|
||||
prague_escape_intro();
|
||||
break;
|
||||
|
||||
case "payback":
|
||||
payback_intro();
|
||||
break;
|
||||
|
||||
case "rescue_2":
|
||||
rescue_2_intro();
|
||||
break;
|
||||
|
||||
case "hamburg":
|
||||
hamburg_intro();
|
||||
break;
|
||||
}
|
||||
|
||||
level.introblack = newhudelem();
|
||||
level.introblack.x = 0;
|
||||
level.introblack.y = 0;
|
||||
level.introblack.horzalign = "fullscreen";
|
||||
level.introblack.vertalign = "fullscreen";
|
||||
level.introblack.foreground = 1;
|
||||
level.introblack setshader("black",640,480);
|
||||
level.player freezecontrols(1);
|
||||
wait 0.05;
|
||||
level.introstring = [];
|
||||
if(isdefined(param_00))
|
||||
{
|
||||
introscreen_create_line(param_00);
|
||||
}
|
||||
|
||||
if(isdefined(param_04))
|
||||
{
|
||||
wait param_04;
|
||||
}
|
||||
else
|
||||
{
|
||||
wait 2;
|
||||
}
|
||||
|
||||
if(isdefined(param_01))
|
||||
{
|
||||
introscreen_create_line(param_01);
|
||||
}
|
||||
|
||||
if(isdefined(param_02))
|
||||
{
|
||||
introscreen_create_line(param_02);
|
||||
}
|
||||
|
||||
if(isdefined(param_03))
|
||||
{
|
||||
if(isdefined(param_05))
|
||||
{
|
||||
wait param_05;
|
||||
}
|
||||
else
|
||||
{
|
||||
wait 2;
|
||||
}
|
||||
}
|
||||
|
||||
if(isdefined(param_03))
|
||||
{
|
||||
introscreen_create_line(param_03);
|
||||
}
|
||||
|
||||
level notify("finished final intro screen fadein");
|
||||
if(isdefined(param_06))
|
||||
{
|
||||
wait param_06;
|
||||
}
|
||||
else
|
||||
{
|
||||
wait 3;
|
||||
}
|
||||
|
||||
level.introblack fadeovertime(1.5);
|
||||
level.introblack.alpha = 0;
|
||||
level notify("starting final intro screen fadeout");
|
||||
level.player freezecontrols(0);
|
||||
level notify("controls_active");
|
||||
introscreen_fadeouttext();
|
||||
common_scripts\utility::flag_set("introscreen_complete");
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
_cornerlinethread(param_00,param_01,param_02,param_03)
|
||||
{
|
||||
level notify("new_introscreen_element");
|
||||
if(!isdefined(level.intro_offset))
|
||||
{
|
||||
level.intro_offset = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
level.intro_offset++;
|
||||
}
|
||||
|
||||
var_04 = _cornerlinethread_height();
|
||||
var_05 = newhudelem();
|
||||
var_05.x = 20;
|
||||
var_05.y = var_04;
|
||||
var_05.alignx = "left";
|
||||
var_05.aligny = "bottom";
|
||||
var_05.horzalign = "left";
|
||||
var_05.vertalign = "bottom";
|
||||
var_05.sort = 1;
|
||||
var_05.foreground = 1;
|
||||
var_05 settext(param_00);
|
||||
var_05.alpha = 0;
|
||||
var_05 fadeovertime(0.2);
|
||||
var_05.alpha = 1;
|
||||
var_05.hidewheninmenu = 1;
|
||||
var_05.fontscale = 2;
|
||||
var_05.color = (0.8,1,0.8);
|
||||
var_05.font = "objective";
|
||||
var_05.glowcolor = (0.3,0.6,0.3);
|
||||
var_05.glowalpha = 1;
|
||||
var_06 = int(param_01 * param_02 * 1000 + 4000);
|
||||
var_05 setpulsefx(30,var_06,700);
|
||||
thread hudelem_destroy(var_05);
|
||||
if(!isdefined(param_03))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(!isstring(param_03))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(param_03 != "date")
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
_cornerlinethread_height()
|
||||
{
|
||||
return level.intro_offset * 20 - 82;
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
introscreen_corner_line(param_00,param_01,param_02,param_03)
|
||||
{
|
||||
thread _cornerlinethread(param_00,param_01,param_02,param_03);
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
hudelem_destroy(param_00)
|
||||
{
|
||||
wait level.linefeed_delay;
|
||||
param_00 notify("destroying");
|
||||
level.intro_offset = undefined;
|
||||
var_01 = 0.5;
|
||||
param_00 fadeovertime(var_01);
|
||||
param_00.alpha = 0;
|
||||
wait var_01;
|
||||
param_00 notify("destroy");
|
||||
param_00 destroy();
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
castle_intro()
|
||||
{
|
||||
level.player freezecontrols(1);
|
||||
savegame("levelstart",&"AUTOSAVE_LEVELSTART","whatever",1);
|
||||
thread introscreen_generic_black_fade_in(5);
|
||||
var_00 = [];
|
||||
introscreen_feed_lines(var_7B);
|
||||
wait 5;
|
||||
common_scripts\utility::flag_set("introscreen_complete");
|
||||
level.player freezecontrols(0);
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
london_intro()
|
||||
{
|
||||
level.player freezecontrols(1);
|
||||
savegame("levelstart",&"AUTOSAVE_LEVELSTART","whatever",1);
|
||||
thread introscreen_generic_black_fade_in(5);
|
||||
var_00 = [];
|
||||
introscreen_feed_lines(var_7B);
|
||||
wait 5;
|
||||
common_scripts\utility::flag_set("introscreen_complete");
|
||||
level.player freezecontrols(0);
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
hamburg_intro()
|
||||
{
|
||||
savegame("levelstart",&"AUTOSAVE_LEVELSTART","whatever",1);
|
||||
thread introscreen_generic_black_fade_in(3.5);
|
||||
var_00 = [];
|
||||
introscreen_feed_lines(var_7B);
|
||||
wait 3;
|
||||
common_scripts\utility::flag_set("introscreen_complete");
|
||||
}
|
||||
|
||||
//Function Number: 16
|
||||
prague_intro()
|
||||
{
|
||||
level.player freezecontrols(1);
|
||||
common_scripts\utility::flag_wait("fade_up");
|
||||
thread introscreen_generic_black_fade_in(4,5);
|
||||
var_00 = [];
|
||||
level.player common_scripts\utility::delaycall(4,::freezecontrols,0);
|
||||
common_scripts\utility::flag_wait("city_reveal");
|
||||
maps\_utility::delaythread(9.25,::introscreen_feed_lines,var_7B);
|
||||
}
|
||||
|
||||
//Function Number: 17
|
||||
prague_escape_intro()
|
||||
{
|
||||
level.player freezecontrols(1);
|
||||
thread introscreen_generic_black_fade_in(8,0.5);
|
||||
var_00 = [];
|
||||
introscreen_feed_lines(var_7B);
|
||||
wait 8;
|
||||
common_scripts\utility::flag_set("introscreen_complete");
|
||||
level.player freezecontrols(0);
|
||||
}
|
||||
|
||||
//Function Number: 18
|
||||
payback_intro()
|
||||
{
|
||||
level.player freezecontrols(1);
|
||||
savegame("levelstart",&"AUTOSAVE_LEVELSTART","whatever",1);
|
||||
level notify("introscreen_prime_audio");
|
||||
level notify("introscreen_fade_start");
|
||||
wait 2;
|
||||
level.player freezecontrols(0);
|
||||
var_00 = 9;
|
||||
var_01 = 30;
|
||||
var_02 = 10;
|
||||
level.hudtimestamp = var_00 * 60 * 60 + var_01 * 60 + var_02;
|
||||
level.hudtimestampstarttime = gettime();
|
||||
var_03 = [];
|
||||
introscreen_feed_lines(var_7B);
|
||||
wait 2;
|
||||
}
|
||||
|
||||
//Function Number: 19
|
||||
feedline_delay()
|
||||
{
|
||||
wait 2;
|
||||
}
|
||||
|
||||
//Function Number: 20
|
||||
slamzoom_intro()
|
||||
{
|
||||
var_00 = [];
|
||||
if(!getdvarint("newintro"))
|
||||
{
|
||||
}
|
||||
|
||||
var_01 = isdefined(level.customintroangles);
|
||||
if(!isdefined(var_7B[get_introscreen_levelname()]))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(!isdefined(level.dontrevivehud))
|
||||
{
|
||||
thread revive_ammo_counter();
|
||||
}
|
||||
|
||||
thread hide_hud();
|
||||
thread weapon_pullout();
|
||||
level.player freezecontrols(1);
|
||||
var_02 = ::feedline_delay;
|
||||
var_03 = 16000;
|
||||
var_04 = 1;
|
||||
var_05 = 0;
|
||||
var_06 = 0;
|
||||
if(var_04)
|
||||
{
|
||||
var_07 = [];
|
||||
switch(get_introscreen_levelname())
|
||||
{
|
||||
case "london":
|
||||
cinematicingamesync("estate_fade");
|
||||
var_07 = [];
|
||||
var_03 = 4000;
|
||||
setsaveddvar("sm_sunSampleSizeNear",0.6);
|
||||
maps\_utility::delaythread(0.5,::ramp_out_sunsample_over_time,0.9);
|
||||
break;
|
||||
var_7B[var_07.size]
|
||||
&"LONDON_INTROSCREEN_LINE_4"
|
||||
var_7B[var_07.size]
|
||||
&"LONDON_INTROSCREEN_LINE_3"
|
||||
var_7B[var_07.size]
|
||||
&"LONDON_INTROSCREEN_LINE_2"
|
||||
var_7B[var_07.size]
|
||||
&"LONDON_INTROSCREEN_LINE_1"
|
||||
break;
|
||||
}
|
||||
|
||||
maps\_utility::add_func(var_02);
|
||||
maps\_utility::add_func(::introscreen_feed_lines,var_07);
|
||||
thread maps\_utility::do_funcs();
|
||||
}
|
||||
|
||||
var_08 = level.player.origin;
|
||||
level.player playersetstreamorigin(var_08);
|
||||
level.player.origin = var_08 + (0,0,var_03);
|
||||
var_09 = spawn("script_model",(69,69,69));
|
||||
var_09.origin = level.player.origin;
|
||||
var_09 setmodel("tag_origin");
|
||||
if(var_01)
|
||||
{
|
||||
var_09.angles = (0,level.customintroangles[1],0);
|
||||
}
|
||||
else
|
||||
{
|
||||
var_09.angles = level.player.angles;
|
||||
}
|
||||
|
||||
level.player playerlinkto(var_09,undefined,1,0,0,0,0);
|
||||
var_09.angles = (var_09.angles[0] + 89,var_09.angles[1],0);
|
||||
wait var_05;
|
||||
var_09 moveto(var_08 + (0,0,0),2,0,2);
|
||||
wait 1;
|
||||
wait 0.5;
|
||||
if(var_01)
|
||||
{
|
||||
var_09 rotateto(level.customintroangles,0.5,0.3,0.2);
|
||||
}
|
||||
else
|
||||
{
|
||||
var_09 rotateto((var_09.angles[0] - 89,var_09.angles[1],0),0.5,0.3,0.2);
|
||||
}
|
||||
|
||||
if(!var_06)
|
||||
{
|
||||
savegame("levelstart",&"AUTOSAVE_LEVELSTART","whatever",1);
|
||||
}
|
||||
|
||||
wait 0.5;
|
||||
common_scripts\utility::flag_set("pullup_weapon");
|
||||
wait 0.2;
|
||||
level.player unlink();
|
||||
level.player freezecontrols(0);
|
||||
level.player playerclearstreamorigin();
|
||||
thread common_scripts\utility::play_sound_in_space("ui_screen_trans_in",level.player.origin);
|
||||
wait 0.2;
|
||||
thread common_scripts\utility::play_sound_in_space("ui_screen_trans_out",level.player.origin);
|
||||
wait 0.2;
|
||||
common_scripts\utility::flag_set("introscreen_complete");
|
||||
wait 2;
|
||||
var_09 delete();
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Function Number: 21
|
||||
hide_hud()
|
||||
{
|
||||
wait 0.05;
|
||||
setsaveddvar("compass",0);
|
||||
setsaveddvar("ammoCounterHide","1");
|
||||
setsaveddvar("hud_showstance","0");
|
||||
setsaveddvar("actionSlotsHide","1");
|
||||
}
|
||||
|
||||
//Function Number: 22
|
||||
weapon_pullout()
|
||||
{
|
||||
var_00 = level.player getweaponslistall()[0];
|
||||
level.player disableweapons();
|
||||
common_scripts\utility::flag_wait("pullup_weapon");
|
||||
level.player enableweapons();
|
||||
}
|
||||
|
||||
//Function Number: 23
|
||||
revive_ammo_counter()
|
||||
{
|
||||
common_scripts\utility::flag_wait("safe_for_objectives");
|
||||
if(!isdefined(level.nocompass))
|
||||
{
|
||||
setsaveddvar("compass",1);
|
||||
}
|
||||
|
||||
setsaveddvar("ammoCounterHide","0");
|
||||
setsaveddvar("actionSlotsHide","0");
|
||||
setsaveddvar("hud_showstance","1");
|
||||
}
|
||||
|
||||
//Function Number: 24
|
||||
ramp_out_sunsample_over_time(param_00,param_01)
|
||||
{
|
||||
var_02 = getdvarfloat("sm_sunSampleSizeNear");
|
||||
if(!isdefined(param_01))
|
||||
{
|
||||
param_01 = 0.25;
|
||||
}
|
||||
|
||||
var_03 = var_02 - param_01;
|
||||
var_04 = param_00 * 20;
|
||||
for(var_05 = 0;var_05 <= var_04;var_05++)
|
||||
{
|
||||
var_06 = var_05 / var_04;
|
||||
var_06 = 1 - var_06;
|
||||
var_07 = var_06 * var_03;
|
||||
var_08 = param_01 + var_07;
|
||||
setsaveddvar("sm_sunSampleSizeNear",var_08);
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 25
|
||||
get_introscreen_levelname()
|
||||
{
|
||||
if(isdefined(level.introscreen_levelname))
|
||||
{
|
||||
return level.introscreen_levelname;
|
||||
}
|
||||
|
||||
return level.script;
|
||||
}
|
||||
|
||||
//Function Number: 26
|
||||
main_old_maps()
|
||||
{
|
||||
switch(get_introscreen_levelname())
|
||||
{
|
||||
case "dcburning":
|
||||
precachestring(&"DCBURNING_INTROSCREEN_1");
|
||||
precachestring(&"DCBURNING_INTROSCREEN_2");
|
||||
precachestring(&"DCBURNING_INTROSCREEN_3");
|
||||
precachestring(&"DCBURNING_INTROSCREEN_4");
|
||||
precachestring(&"DCBURNING_INTROSCREEN_5");
|
||||
introscreen_delay();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 27
|
||||
cliffhanger_intro_text()
|
||||
{
|
||||
wait 17;
|
||||
var_00 = [];
|
||||
introscreen_feed_lines(var_7B);
|
||||
}
|
||||
|
||||
//Function Number: 28
|
||||
dcburning_intro()
|
||||
{
|
||||
level.player disableweapons();
|
||||
thread dcburningintrodvars();
|
||||
level.mortar_min_dist = 1;
|
||||
level.player freezecontrols(1);
|
||||
var_00 = newhudelem();
|
||||
var_00.x = 0;
|
||||
var_00.y = 0;
|
||||
var_00.horzalign = "fullscreen";
|
||||
var_00.vertalign = "fullscreen";
|
||||
var_00.foreground = 1;
|
||||
var_00 setshader("black",640,480);
|
||||
wait 4.25;
|
||||
wait 3;
|
||||
level notify("black_fading");
|
||||
level.mortar_min_dist = undefined;
|
||||
var_00 fadeovertime(1.5);
|
||||
var_00.alpha = 0;
|
||||
wait 1.5;
|
||||
common_scripts\utility::flag_set("introscreen_complete");
|
||||
level notify("introscreen_complete");
|
||||
level.player freezecontrols(0);
|
||||
level.player enableweapons();
|
||||
wait 0.5;
|
||||
setsaveddvar("compass",1);
|
||||
setsaveddvar("ammoCounterHide","0");
|
||||
setsaveddvar("hud_showStance",1);
|
||||
common_scripts\utility::flag_wait("player_exiting_start_trench");
|
||||
var_01 = [];
|
||||
introscreen_feed_lines(var_7B);
|
||||
}
|
||||
|
||||
//Function Number: 29
|
||||
dcburningintrodvars()
|
||||
{
|
||||
wait 0.05;
|
||||
setsaveddvar("compass",0);
|
||||
setsaveddvar("ammoCounterHide","1");
|
||||
setsaveddvar("hud_showStance",0);
|
||||
}
|
||||
|
||||
//Function Number: 30
|
||||
rescue_2_intro()
|
||||
{
|
||||
var_00 = [];
|
||||
thread introscreen_generic_black_fade_in(5.4,8);
|
||||
introscreen_feed_lines(var_7B);
|
||||
}
|
||||
|
||||
//Function Number: 31
|
||||
introscreen_old_maps()
|
||||
{
|
||||
switch(get_introscreen_levelname())
|
||||
{
|
||||
case "dcburning":
|
||||
dcburning_intro();
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
132
MW3/PC/SP/maps/_inventory.gsc
Normal file
132
MW3/PC/SP/maps/_inventory.gsc
Normal file
@ -0,0 +1,132 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_inventory.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 6
|
||||
* Decompile Time: 76 ms
|
||||
* Timestamp: 10/27/2023 2:20:08 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
level.inventory = [];
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
inventory_create(param_00,param_01)
|
||||
{
|
||||
if(1)
|
||||
{
|
||||
return spawnstruct();
|
||||
}
|
||||
|
||||
if(!isdefined(param_01))
|
||||
{
|
||||
param_01 = 0;
|
||||
}
|
||||
|
||||
var_02 = newhudelem();
|
||||
var_02.alignx = "right";
|
||||
var_02.aligny = "top";
|
||||
var_02.horzalign = "right";
|
||||
var_02.vertalign = "top";
|
||||
var_02.alpha = 0;
|
||||
var_02.index = level.inventory.size;
|
||||
var_02.show_icon = param_01;
|
||||
var_02 setshader(param_00,40,40);
|
||||
level.inventory[var_02.index] = var_02;
|
||||
inventroy_update();
|
||||
return var_02;
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
inventory_hide()
|
||||
{
|
||||
if(1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self.show_icon = 0;
|
||||
inventroy_update();
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
inventory_show()
|
||||
{
|
||||
if(1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self.show_icon = 1;
|
||||
inventroy_update();
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
inventroy_update()
|
||||
{
|
||||
if(1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var_00 = -18;
|
||||
var_01 = 8;
|
||||
var_02 = 42;
|
||||
var_03 = 0;
|
||||
for(var_04 = 0;var_04 < level.inventory.size;var_04++)
|
||||
{
|
||||
if(level.inventory[var_04].show_icon)
|
||||
{
|
||||
var_05 = var_01 + var_02 * var_03;
|
||||
if(var_05 != level.inventory[var_04].y)
|
||||
{
|
||||
level.inventory[var_04].x = var_00;
|
||||
if(level.inventory[var_04].alpha != 0)
|
||||
{
|
||||
level.inventory[var_04] moveovertime(0.3);
|
||||
}
|
||||
|
||||
level.inventory[var_04].y = var_05;
|
||||
}
|
||||
|
||||
if(level.inventory[var_04].alpha != 1)
|
||||
{
|
||||
level.inventory[var_04] fadeovertime(0.3);
|
||||
level.inventory[var_04].alpha = 1;
|
||||
}
|
||||
|
||||
var_03++;
|
||||
continue;
|
||||
}
|
||||
|
||||
level.inventory[var_04] fadeovertime(0.3);
|
||||
level.inventory[var_04].alpha = 0;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
inventory_destroy()
|
||||
{
|
||||
if(1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self destroy();
|
||||
var_00 = 0;
|
||||
var_01 = level.inventory;
|
||||
level.inventory = [];
|
||||
for(var_02 = 0;var_02 < var_01.size;var_02++)
|
||||
{
|
||||
if(isdefined(var_01[var_02]))
|
||||
{
|
||||
level.inventory[level.inventory.size] = var_01[var_02];
|
||||
}
|
||||
}
|
||||
|
||||
inventroy_update();
|
||||
}
|
182
MW3/PC/SP/maps/_juggernaut.gsc
Normal file
182
MW3/PC/SP/maps/_juggernaut.gsc
Normal file
@ -0,0 +1,182 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_juggernaut.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 5
|
||||
* Decompile Time: 65 ms
|
||||
* Timestamp: 10/27/2023 2:20:36 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
if(isdefined(level.juggernaut_initialized))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
level.juggernaut_initialized = 1;
|
||||
if(!isdefined(level.subclass_spawn_functions))
|
||||
{
|
||||
level.subclass_spawn_functions = [];
|
||||
}
|
||||
|
||||
level.subclass_spawn_functions["juggernaut"] = ::subclass_juggernaut;
|
||||
level.juggernaut_next_alert_time = 0;
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
subclass_juggernaut()
|
||||
{
|
||||
self.juggernaut = 1;
|
||||
self.minpaindamage = 200;
|
||||
self.grenadeammo = 0;
|
||||
self.doorflashchance = 0.05;
|
||||
self.aggressivemode = 1;
|
||||
self.ignoresuppression = 1;
|
||||
self.no_pistol_switch = 1;
|
||||
self.norunngun = 1;
|
||||
self.dontmelee = 1;
|
||||
self.disableexits = 1;
|
||||
self.disablearrivals = 1;
|
||||
self.disablebulletwhizbyreaction = 1;
|
||||
self.combatmode = "no_cover";
|
||||
self.neversprintforvariation = 1;
|
||||
self.a.disablelongdeath = 1;
|
||||
maps\_utility::disable_turnanims();
|
||||
maps\_utility::disable_surprise();
|
||||
init_juggernaut_animsets();
|
||||
maps\_utility::add_damage_function(::animscripts/pain::func_D82);
|
||||
maps\_utility::add_damage_function(::maps\_spawner::pain_resistance);
|
||||
if(!self isbadguy())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self.bullet_resistance = 40;
|
||||
maps\_utility::add_damage_function(::maps\_spawner::bullet_resistance);
|
||||
thread juggernaut_hunt_immediately_behavior();
|
||||
thread juggernaut_sound_when_player_close();
|
||||
self.pathenemyfightdist = 128;
|
||||
self.pathenemylookahead = 128;
|
||||
level notify("juggernaut_spawned");
|
||||
self waittill("death",var_00,var_01,var_02);
|
||||
if(isdefined(self) && isdefined(self.nodrop))
|
||||
{
|
||||
var_03 = [];
|
||||
animscripts/shared::func_23C1();
|
||||
foreach(var_05 in var_7B)
|
||||
{
|
||||
var_03 = self.a.weaponpos[var_05];
|
||||
if(var_03 == "none")
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
self.weaponinfo[var_03].position = "none";
|
||||
self.a.weaponpos[var_05] = "none";
|
||||
}
|
||||
|
||||
self.weapon = "none";
|
||||
animscripts/shared::func_23C4();
|
||||
}
|
||||
|
||||
level notify("juggernaut_died",var_7B[var_7B.size],"back",var_7B[var_7B.size],"chest",var_7B[var_7B.size],"right",var_7B[var_03.size],"left");
|
||||
if(!isdefined(self))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(!isdefined(var_01))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(!isplayer(var_01))
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
juggernaut_hunt_immediately_behavior()
|
||||
{
|
||||
self endon("death");
|
||||
self endon("stop_hunting");
|
||||
self.usechokepoints = 0;
|
||||
for(;;)
|
||||
{
|
||||
wait 0.5;
|
||||
if(isdefined(self.enemy))
|
||||
{
|
||||
self setgoalpos(self.enemy.origin);
|
||||
self.goalradius = 128;
|
||||
self.goalheight = 81;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
juggernaut_sound_when_player_close()
|
||||
{
|
||||
self endon("death");
|
||||
level endon("special_op_terminated");
|
||||
if(isdefined(level.skip_juggernaut_intro_sound) && level.skip_juggernaut_intro_sound)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var_00 = 2500;
|
||||
if(level.script == "ending")
|
||||
{
|
||||
common_scripts\utility::flag_wait("panic_button");
|
||||
var_00 = 750;
|
||||
}
|
||||
|
||||
for(;;)
|
||||
{
|
||||
wait 0.05;
|
||||
if(gettime() < level.juggernaut_next_alert_time)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_01 = maps\_utility::get_closest_player(self.origin);
|
||||
if(!isalive(var_01))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(distance(var_01.origin,self.origin) > var_00)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(level.pmc_alljuggernauts)
|
||||
{
|
||||
var_02 = self gettagorigin("tag_flash");
|
||||
if(!bullettracepassed(self geteye(),var_01 geteye(),0,undefined))
|
||||
{
|
||||
wait 0.25;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
level.juggernaut_next_alert_time = gettime() + 15000;
|
||||
level notify("juggernaut_attacking");
|
||||
common_scripts\utility::array_thread(level.players,::maps\_utility::playlocalsoundwrapper,"_juggernaut_attack");
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
init_juggernaut_animsets()
|
||||
{
|
||||
self.walkdist = 500;
|
||||
self.walkdistfacingmotion = 500;
|
||||
maps\_utility::set_move_animset("run",%juggernaut_runf,%juggernaut_sprint);
|
||||
maps\_utility::set_move_animset("walk",%juggernaut_walkf);
|
||||
maps\_utility::set_move_animset("cqb",%juggernaut_walkf);
|
||||
maps\_utility::set_combat_stand_animset(%juggernaut_stand_fire_burst,%juggernaut_aim5,%juggernaut_stand_idle,%juggernaut_stand_reload);
|
||||
}
|
1800
MW3/PC/SP/maps/_laststand.gsc
Normal file
1800
MW3/PC/SP/maps/_laststand.gsc
Normal file
File diff suppressed because it is too large
Load Diff
236
MW3/PC/SP/maps/_leak.gsc
Normal file
236
MW3/PC/SP/maps/_leak.gsc
Normal file
@ -0,0 +1,236 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_leak.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 11
|
||||
* Decompile Time: 136 ms
|
||||
* Timestamp: 10/27/2023 2:20:09 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
var_00 = getentarray("leaking","targetname");
|
||||
if(!var_00.size)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var_00 thread precachefx();
|
||||
var_00 thread methodsinit();
|
||||
common_scripts\utility::array_thread(var_00,::leak_setup);
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
leak_setup()
|
||||
{
|
||||
switch(self.script_noteworthy)
|
||||
{
|
||||
case "barrel_oil":
|
||||
leak_barrel_setup();
|
||||
break;
|
||||
|
||||
case "barrel_acid":
|
||||
leak_barrel_setup();
|
||||
break;
|
||||
|
||||
case "barrel_sludge":
|
||||
leak_barrel_setup();
|
||||
break;
|
||||
|
||||
case "barrel_water":
|
||||
leak_barrel_setup();
|
||||
break;
|
||||
}
|
||||
|
||||
thread leak_think();
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
leak_barrel_setup()
|
||||
{
|
||||
self.a = self.origin;
|
||||
self.up = anglestoup(self.angles);
|
||||
var_00 = anglestoup((0,90,0));
|
||||
self.org = self.a + self.up * 22;
|
||||
self.a = self.a + self.up * 1.5;
|
||||
self.b = self.a + self.up * 41.4;
|
||||
self.volume = 25861.65;
|
||||
self.curvol = self.volume;
|
||||
var_01 = vectordot(self.up,var_00);
|
||||
var_02 = self.b;
|
||||
if(var_01 < 0)
|
||||
{
|
||||
var_02 = self.a;
|
||||
}
|
||||
|
||||
var_01 = abs(1 - abs(var_01));
|
||||
self.lowz = physicstrace(self.org,self.org + (0,0,-80))[2];
|
||||
self.highz = var_02[2] + var_01 * 14;
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
leak_think()
|
||||
{
|
||||
self setcandamage(1);
|
||||
self endon("drained");
|
||||
for(;;)
|
||||
{
|
||||
self waittill("damage",var_00,var_01,var_02,var_03,var_04);
|
||||
if(var_04 == "MOD_MELEE" || var_04 == "MOD_IMPACT")
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_03 = self [[ level._leak_methods[var_04] ]](var_03,var_04);
|
||||
if(!isdefined(var_03))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
thread leak_drain(var_03);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
leak_drain(param_00)
|
||||
{
|
||||
var_01 = pointonsegmentnearesttopoint(self.a,self.b,param_00);
|
||||
var_02 = undefined;
|
||||
if(var_01 == self.a)
|
||||
{
|
||||
var_02 = self.up * -1;
|
||||
}
|
||||
else if(var_01 == self.b)
|
||||
{
|
||||
var_02 = self.up;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_02 = vectorfromlinetopoint(self.a,self.b,param_00);
|
||||
}
|
||||
|
||||
var_03 = param_00[2] - self.lowz;
|
||||
if(var_03 < 0.02)
|
||||
{
|
||||
var_03 = 0;
|
||||
}
|
||||
|
||||
var_04 = var_03 / self.highz - self.lowz * self.volume;
|
||||
if(self.curvol > var_04)
|
||||
{
|
||||
while(self.curvol > var_04)
|
||||
{
|
||||
playfx(level._effect["leak_interactive_leak"][self.script_noteworthy],param_00,var_02);
|
||||
self.curvol = self.curvol - 100;
|
||||
wait 0.1;
|
||||
}
|
||||
|
||||
playfx(level._effect["leak_interactive_drain"][self.script_noteworthy],param_00,var_02);
|
||||
}
|
||||
|
||||
if(self.curvol / self.volume <= 0.05)
|
||||
{
|
||||
self notify("drained");
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
methodsinit()
|
||||
{
|
||||
level._leak_methods = [];
|
||||
level._leak_methods["MOD_UNKNOWN"] = ::leak_calc_splash;
|
||||
level._leak_methods["MOD_PISTOL_BULLET"] = ::leak_calc_ballistic;
|
||||
level._leak_methods["MOD_RIFLE_BULLET"] = ::leak_calc_ballistic;
|
||||
level._leak_methods["MOD_GRENADE"] = ::leak_calc_splash;
|
||||
level._leak_methods["MOD_GRENADE_SPLASH"] = ::leak_calc_splash;
|
||||
level._leak_methods["MOD_PROJECTILE"] = ::leak_calc_splash;
|
||||
level._leak_methods["MOD_PROJECTILE_SPLASH"] = ::leak_calc_splash;
|
||||
level._leak_methods["MOD_MELEE"] = ::leak_calc_nofx;
|
||||
level._leak_methods["MOD_HEAD_SHOT"] = ::leak_calc_nofx;
|
||||
level._leak_methods["MOD_CRUSH"] = ::leak_calc_nofx;
|
||||
level._leak_methods["MOD_TELEFRAG"] = ::leak_calc_nofx;
|
||||
level._leak_methods["MOD_FALLING"] = ::leak_calc_nofx;
|
||||
level._leak_methods["MOD_SUICIDE"] = ::leak_calc_nofx;
|
||||
level._leak_methods["MOD_TRIGGER_HURT"] = ::leak_calc_splash;
|
||||
level._leak_methods["MOD_EXPLOSIVE"] = ::leak_calc_splash;
|
||||
level._leak_methods["MOD_IMPACT"] = ::leak_calc_nofx;
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
leak_calc_ballistic(param_00,param_01)
|
||||
{
|
||||
return param_00;
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
leak_calc_splash(param_00,param_01)
|
||||
{
|
||||
var_02 = vectornormalize(vectorfromlinetopoint(self.a,self.b,param_00));
|
||||
param_00 = pointonsegmentnearesttopoint(self.a,self.b,param_00);
|
||||
return param_00 + var_02 * 4;
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
leak_calc_nofx(param_00,param_01)
|
||||
{
|
||||
return undefined;
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
leak_calc_assert(param_00,param_01)
|
||||
{
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
precachefx()
|
||||
{
|
||||
for(var_00 = 0;var_00 < self.size;var_00++)
|
||||
{
|
||||
if(self[var_00].script_noteworthy != "barrel_oil")
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
level._effect["leak_interactive_leak"][self[var_00].script_noteworthy] = loadfx("impacts/barrel_leak");
|
||||
level._effect["leak_interactive_drain"][self[var_00].script_noteworthy] = loadfx("impacts/barrel_drain");
|
||||
break;
|
||||
}
|
||||
|
||||
for(var_00 = 0;var_00 < self.size;var_00++)
|
||||
{
|
||||
if(self[var_00].script_noteworthy != "barrel_acid")
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
level._effect["leak_interactive_leak"][self[var_00].script_noteworthy] = loadfx("impacts/barrel_leak");
|
||||
level._effect["leak_interactive_drain"][self[var_00].script_noteworthy] = loadfx("impacts/barrel_drain");
|
||||
break;
|
||||
}
|
||||
|
||||
for(var_00 = 0;var_00 < self.size;var_00++)
|
||||
{
|
||||
if(self[var_00].script_noteworthy != "barrel_water")
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
level._effect["leak_interactive_leak"][self[var_00].script_noteworthy] = loadfx("impacts/barrel_leak");
|
||||
level._effect["leak_interactive_drain"][self[var_00].script_noteworthy] = loadfx("impacts/barrel_drain");
|
||||
break;
|
||||
}
|
||||
|
||||
for(var_00 = 0;var_00 < self.size;var_00++)
|
||||
{
|
||||
if(self[var_00].script_noteworthy != "barrel_sludge")
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
level._effect["leak_interactive_leak"][self[var_00].script_noteworthy] = loadfx("impacts/barrel_leak");
|
||||
level._effect["leak_interactive_drain"][self[var_00].script_noteworthy] = loadfx("impacts/barrel_drain");
|
||||
break;
|
||||
}
|
||||
}
|
871
MW3/PC/SP/maps/_lights.gsc
Normal file
871
MW3/PC/SP/maps/_lights.gsc
Normal file
@ -0,0 +1,871 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_lights.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 22
|
||||
* Decompile Time: 310 ms
|
||||
* Timestamp: 10/27/2023 2:20:23 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
is_light_entity(param_00)
|
||||
{
|
||||
return param_00.classname == "light_spot" || param_00.classname == "light_omni" || param_00.classname == "light";
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
flickerlight(param_00,param_01,param_02,param_03)
|
||||
{
|
||||
self endon("kill_flicker");
|
||||
var_04 = param_00;
|
||||
var_05 = 0;
|
||||
maps\_utility::ent_flag_init("stop_flicker");
|
||||
for(;;)
|
||||
{
|
||||
if(maps\_utility::ent_flag("stop_flicker"))
|
||||
{
|
||||
wait 0.05;
|
||||
continue;
|
||||
}
|
||||
|
||||
var_06 = var_04;
|
||||
var_04 = param_00 + param_01 - param_00 * randomfloat(1);
|
||||
if(param_02 != param_03)
|
||||
{
|
||||
var_05 = var_05 + randomfloatrange(param_02,param_03);
|
||||
}
|
||||
else
|
||||
{
|
||||
var_05 = var_05 + param_02;
|
||||
}
|
||||
|
||||
if(var_05 == 0)
|
||||
{
|
||||
var_05 = var_05 + 1E-07;
|
||||
}
|
||||
|
||||
var_07 = var_06 - var_04 * 1 / var_05;
|
||||
while(var_05 > 0 && !maps\_utility::ent_flag("stop_flicker"))
|
||||
{
|
||||
self setlightcolor(var_04 + var_07 * var_05);
|
||||
wait 0.05;
|
||||
var_05 = var_05 - 0.05;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
kill_flicker_when_damaged(param_00)
|
||||
{
|
||||
var_01 = getentarray(param_00,"script_noteworthy");
|
||||
var_02 = undefined;
|
||||
var_03 = 1E+08;
|
||||
foreach(var_05 in var_01)
|
||||
{
|
||||
var_06 = distance(self.origin,var_05.origin);
|
||||
if(var_06 < var_03)
|
||||
{
|
||||
var_02 = var_05;
|
||||
var_03 = var_06;
|
||||
}
|
||||
}
|
||||
|
||||
if(isdefined(var_02))
|
||||
{
|
||||
var_02 waittill("damage",var_08,var_09,var_0A,var_0B,var_0C,var_0D,var_0E);
|
||||
self notify("kill_flicker");
|
||||
wait 0.05;
|
||||
self setlightcolor((0,0,0));
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
generic_pulsing()
|
||||
{
|
||||
if(getdvar("r_reflectionProbeGenerate") == "1")
|
||||
{
|
||||
self setlightintensity(0);
|
||||
return;
|
||||
}
|
||||
|
||||
var_00 = self getlightintensity();
|
||||
var_01 = 0.05;
|
||||
var_02 = var_00;
|
||||
var_03 = 0.3;
|
||||
var_04 = 0.6;
|
||||
var_05 = var_00 - var_01 / var_03 / 0.05;
|
||||
var_06 = var_00 - var_01 / var_04 / 0.05;
|
||||
for(;;)
|
||||
{
|
||||
var_07 = 0;
|
||||
while(var_07 < var_04)
|
||||
{
|
||||
var_02 = var_02 - var_06;
|
||||
var_02 = clamp(var_02,0,100);
|
||||
self setlightintensity(var_02);
|
||||
var_07 = var_07 + 0.05;
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
wait 1;
|
||||
var_07 = 0;
|
||||
while(var_07 < var_03)
|
||||
{
|
||||
var_02 = var_02 + var_05;
|
||||
var_02 = clamp(var_02,0,100);
|
||||
self setlightintensity(var_02);
|
||||
var_07 = var_07 + 0.05;
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
wait 0.5;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
generic_double_strobe()
|
||||
{
|
||||
if(getdvar("r_reflectionProbeGenerate") == "1")
|
||||
{
|
||||
self setlightintensity(0);
|
||||
return;
|
||||
}
|
||||
|
||||
var_00 = self getlightintensity();
|
||||
var_01 = 0.05;
|
||||
var_02 = 0;
|
||||
var_03 = undefined;
|
||||
var_04 = undefined;
|
||||
var_05 = 0;
|
||||
var_06 = [];
|
||||
if(isdefined(self.script_noteworthy))
|
||||
{
|
||||
var_07 = getentarray(self.script_noteworthy,"targetname");
|
||||
for(var_08 = 0;var_08 < var_07.size;var_08++)
|
||||
{
|
||||
if(is_light_entity(var_07[var_08]))
|
||||
{
|
||||
var_05 = 1;
|
||||
var_06[var_06.size] = var_07[var_08];
|
||||
}
|
||||
|
||||
if(var_07[var_08].classname == "script_model")
|
||||
{
|
||||
var_03 = var_07[var_08];
|
||||
var_04 = getent(var_03.target,"targetname");
|
||||
var_02 = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for(;;)
|
||||
{
|
||||
self setlightintensity(var_01);
|
||||
if(var_02)
|
||||
{
|
||||
var_03 hide();
|
||||
var_04 show();
|
||||
}
|
||||
|
||||
wait 0.8;
|
||||
self setlightintensity(var_00);
|
||||
if(var_02)
|
||||
{
|
||||
var_03 show();
|
||||
var_04 hide();
|
||||
}
|
||||
|
||||
wait 0.1;
|
||||
self setlightintensity(var_01);
|
||||
if(var_02)
|
||||
{
|
||||
var_03 hide();
|
||||
var_04 show();
|
||||
}
|
||||
|
||||
wait 0.12;
|
||||
self setlightintensity(var_00);
|
||||
if(var_02)
|
||||
{
|
||||
var_03 show();
|
||||
var_04 hide();
|
||||
}
|
||||
|
||||
wait 0.1;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
getclosests_flickering_model(param_00)
|
||||
{
|
||||
var_01 = getentarray("light_flicker_model","targetname");
|
||||
var_02 = [];
|
||||
var_03 = maps\_utility::getclosest(param_00,var_01);
|
||||
if(isdefined(var_03))
|
||||
{
|
||||
var_02[0] = var_03;
|
||||
}
|
||||
|
||||
return var_02;
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
generic_flickering()
|
||||
{
|
||||
if(getdvar("r_reflectionProbeGenerate") == "1")
|
||||
{
|
||||
self setlightintensity(0);
|
||||
return;
|
||||
}
|
||||
|
||||
self endon("stop_dynamic_light_behavior");
|
||||
self endon("death");
|
||||
self.linked_models = 0;
|
||||
self.lit_models = undefined;
|
||||
self.unlit_models = undefined;
|
||||
self.linked_lights = 0;
|
||||
self.linked_light_ents = [];
|
||||
self.linked_prefab_ents = undefined;
|
||||
self.linked_things = [];
|
||||
if(isdefined(self.script_linkto))
|
||||
{
|
||||
self.linked_prefab_ents = common_scripts\utility::get_linked_ents();
|
||||
foreach(var_01 in self.linked_prefab_ents)
|
||||
{
|
||||
if(isdefined(var_01.script_noteworthy) && var_01.script_noteworthy == "on")
|
||||
{
|
||||
if(!isdefined(self.lit_models))
|
||||
{
|
||||
self.lit_models[0] = var_01;
|
||||
}
|
||||
else
|
||||
{
|
||||
self.lit_models[self.lit_models.size] = var_01;
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if(isdefined(var_01.script_noteworthy) && var_01.script_noteworthy == "off")
|
||||
{
|
||||
if(!isdefined(self.unlit_models))
|
||||
{
|
||||
self.unlit_models[0] = var_01;
|
||||
}
|
||||
else
|
||||
{
|
||||
self.unlit_models[self.unlit_models.size] = var_01;
|
||||
}
|
||||
|
||||
self.unlit_model = var_01;
|
||||
continue;
|
||||
}
|
||||
|
||||
if(is_light_entity(var_01))
|
||||
{
|
||||
self.linked_lights = 1;
|
||||
self.linked_light_ents[self.linked_light_ents.size] = var_01;
|
||||
}
|
||||
}
|
||||
|
||||
self.linked_models = 1;
|
||||
}
|
||||
|
||||
if(isdefined(self.script_noteworthy))
|
||||
{
|
||||
self.linked_things = getentarray(self.script_noteworthy,"targetname");
|
||||
}
|
||||
|
||||
if(!self.linked_things.size && !isdefined(self.linked_prefab_ents))
|
||||
{
|
||||
self.linked_things = getclosests_flickering_model(self.origin);
|
||||
}
|
||||
|
||||
for(var_03 = 0;var_03 < self.linked_things.size;var_03++)
|
||||
{
|
||||
if(is_light_entity(self.linked_things[var_03]))
|
||||
{
|
||||
self.linked_lights = 1;
|
||||
self.linked_light_ents[self.linked_light_ents.size] = self.linked_things[var_03];
|
||||
}
|
||||
|
||||
if(self.linked_things[var_03].classname == "script_model")
|
||||
{
|
||||
var_04 = self.linked_things[var_03];
|
||||
if(!isdefined(self.lit_models))
|
||||
{
|
||||
self.lit_models[0] = var_04;
|
||||
}
|
||||
else
|
||||
{
|
||||
self.lit_models[self.lit_models.size] = var_04;
|
||||
}
|
||||
|
||||
if(!isdefined(self.unlit_models))
|
||||
{
|
||||
self.unlit_models[0] = getent(var_04.target,"targetname");
|
||||
}
|
||||
else
|
||||
{
|
||||
self.unlit_models[self.unlit_models.size] = getent(var_04.target,"targetname");
|
||||
}
|
||||
|
||||
self.linked_models = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if(isdefined(self.lit_models))
|
||||
{
|
||||
foreach(var_04 in self.lit_models)
|
||||
{
|
||||
if(isdefined(var_04) && isdefined(var_04.script_fxid))
|
||||
{
|
||||
var_04.effect = common_scripts\utility::createoneshoteffect(var_04.script_fxid);
|
||||
var_06 = (0,0,0);
|
||||
var_07 = (0,0,0);
|
||||
if(isdefined(var_04.script_parameters))
|
||||
{
|
||||
var_08 = strtok(var_04.script_parameters,", ");
|
||||
if(var_08.size < 3)
|
||||
{
|
||||
}
|
||||
else if(var_08.size == 6)
|
||||
{
|
||||
var_09 = float(var_08[0]);
|
||||
var_0A = float(var_08[1]);
|
||||
var_0B = float(var_08[2]);
|
||||
var_06 = (var_09,var_0A,var_0B);
|
||||
var_09 = float(var_08[3]);
|
||||
var_0A = float(var_08[4]);
|
||||
var_0B = float(var_08[5]);
|
||||
var_07 = (var_09,var_0A,var_0B);
|
||||
}
|
||||
else
|
||||
{
|
||||
var_09 = float(var_0B[0]);
|
||||
var_0A = float(var_0A[1]);
|
||||
var_0B = float(var_09[2]);
|
||||
var_06 = (var_09,var_0A,var_0B);
|
||||
}
|
||||
}
|
||||
|
||||
var_04.effect.v["origin"] = var_04.origin + var_06;
|
||||
var_04.effect.v["angles"] = var_04.angles + var_07;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
thread generic_flicker_msg_watcher();
|
||||
thread generic_flicker();
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
generic_flicker_msg_watcher()
|
||||
{
|
||||
maps\_utility::ent_flag_init("flicker_on");
|
||||
if(isdefined(self.script_light_startnotify) && self.script_light_startnotify != "nil")
|
||||
{
|
||||
for(;;)
|
||||
{
|
||||
level waittill(self.script_light_startnotify);
|
||||
maps\_utility::ent_flag_set("flicker_on");
|
||||
if(isdefined(self.script_light_stopnotify) && self.script_light_stopnotify != "nil")
|
||||
{
|
||||
level waittill(self.script_light_stopnotify);
|
||||
maps\_utility::ent_flag_clear("flicker_on");
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
maps\_utility::ent_flag_set("flicker_on");
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
generic_flicker_pause()
|
||||
{
|
||||
var_00 = self getlightintensity();
|
||||
if(!maps\_utility::ent_flag("flicker_on"))
|
||||
{
|
||||
if(self.linked_models)
|
||||
{
|
||||
if(isdefined(self.lit_models))
|
||||
{
|
||||
foreach(var_02 in self.lit_models)
|
||||
{
|
||||
var_02 hide();
|
||||
if(isdefined(var_02.effect))
|
||||
{
|
||||
var_02.effect common_scripts\utility::pauseeffect();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(isdefined(self.unlit_models))
|
||||
{
|
||||
foreach(var_05 in self.unlit_models)
|
||||
{
|
||||
var_05 show();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
self setlightintensity(0);
|
||||
if(self.linked_lights)
|
||||
{
|
||||
for(var_07 = 0;var_07 < self.linked_light_ents.size;var_07++)
|
||||
{
|
||||
self.linked_light_ents[var_07] setlightintensity(0);
|
||||
}
|
||||
}
|
||||
|
||||
maps\_utility::ent_flag_wait("flicker_on");
|
||||
self setlightintensity(var_00);
|
||||
if(self.linked_lights)
|
||||
{
|
||||
for(var_07 = 0;var_07 < self.linked_light_ents.size;var_07++)
|
||||
{
|
||||
self.linked_light_ents[var_07] setlightintensity(var_00);
|
||||
}
|
||||
}
|
||||
|
||||
if(self.linked_models)
|
||||
{
|
||||
if(isdefined(self.lit_models))
|
||||
{
|
||||
foreach(var_02 in self.lit_models)
|
||||
{
|
||||
var_02 show();
|
||||
if(isdefined(var_02.effect))
|
||||
{
|
||||
var_02.effect maps\_utility::restarteffect();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(isdefined(self.unlit_models))
|
||||
{
|
||||
foreach(var_05 in self.unlit_models)
|
||||
{
|
||||
var_05 hide();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
generic_flicker()
|
||||
{
|
||||
self endon("stop_dynamic_light_behavior");
|
||||
self endon("death");
|
||||
var_00 = 0.2;
|
||||
var_01 = 1.5;
|
||||
var_02 = self getlightintensity();
|
||||
var_03 = 0;
|
||||
var_04 = var_02;
|
||||
var_05 = 0;
|
||||
while(isdefined(self))
|
||||
{
|
||||
generic_flicker_pause();
|
||||
for(var_05 = randomintrange(1,10);var_05;var_05--)
|
||||
{
|
||||
generic_flicker_pause();
|
||||
wait randomfloatrange(0.05,0.1);
|
||||
if(var_04 > 0.2)
|
||||
{
|
||||
var_04 = randomfloatrange(0,0.3);
|
||||
if(self.linked_models)
|
||||
{
|
||||
foreach(var_07 in self.lit_models)
|
||||
{
|
||||
var_07 hide();
|
||||
if(isdefined(var_07.effect))
|
||||
{
|
||||
var_07.effect common_scripts\utility::pauseeffect();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(isdefined(self.unlit_models))
|
||||
{
|
||||
foreach(var_0A in self.unlit_models)
|
||||
{
|
||||
var_0A show();
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var_04 = var_02;
|
||||
if(self.linked_models)
|
||||
{
|
||||
if(isdefined(self.lit_models))
|
||||
{
|
||||
foreach(var_07 in self.lit_models)
|
||||
{
|
||||
var_07 show();
|
||||
if(isdefined(var_07.effect))
|
||||
{
|
||||
var_07.effect maps\_utility::restarteffect();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(isdefined(self.unlit_models))
|
||||
{
|
||||
foreach(var_0A in self.unlit_models)
|
||||
{
|
||||
var_0A hide();
|
||||
maps\_audio::aud_send_msg("light_flicker_on",var_0A);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
self setlightintensity(var_04);
|
||||
if(self.linked_lights)
|
||||
{
|
||||
for(var_10 = 0;var_10 < self.linked_light_ents.size;var_10++)
|
||||
{
|
||||
self.linked_light_ents[var_10] setlightintensity(var_04);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
generic_flicker_pause();
|
||||
self setlightintensity(var_02);
|
||||
if(self.linked_lights)
|
||||
{
|
||||
for(var_10 = 0;var_10 < self.linked_light_ents.size;var_10++)
|
||||
{
|
||||
self.linked_light_ents[var_10] setlightintensity(var_02);
|
||||
}
|
||||
}
|
||||
|
||||
if(self.linked_models)
|
||||
{
|
||||
if(isdefined(self.lit_models))
|
||||
{
|
||||
foreach(var_07 in self.lit_models)
|
||||
{
|
||||
var_07 show();
|
||||
if(isdefined(var_07.effect))
|
||||
{
|
||||
var_07.effect maps\_utility::restarteffect();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(isdefined(self.unlit_models))
|
||||
{
|
||||
foreach(var_0A in self.unlit_models)
|
||||
{
|
||||
var_0A hide();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
wait randomfloatrange(var_00,var_01);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
generic_spot()
|
||||
{
|
||||
level common_scripts\utility::waitframe();
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
flickerlightintensity(param_00,param_01)
|
||||
{
|
||||
var_02 = self getlightintensity();
|
||||
var_03 = 0;
|
||||
var_04 = var_02;
|
||||
var_05 = 0;
|
||||
for(;;)
|
||||
{
|
||||
for(var_05 = randomintrange(1,10);var_05;var_05--)
|
||||
{
|
||||
wait randomfloatrange(0.05,0.1);
|
||||
if(var_04 > 0.2)
|
||||
{
|
||||
var_04 = randomfloatrange(0,0.3);
|
||||
}
|
||||
else
|
||||
{
|
||||
var_04 = var_02;
|
||||
}
|
||||
|
||||
self setlightintensity(var_04);
|
||||
}
|
||||
|
||||
self setlightintensity(var_02);
|
||||
wait randomfloatrange(param_00,param_01);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
burning_trash_fire()
|
||||
{
|
||||
var_00 = self getlightintensity();
|
||||
var_01 = var_00;
|
||||
for(;;)
|
||||
{
|
||||
var_02 = randomfloatrange(var_00 * 0.7,var_00 * 1.2);
|
||||
var_03 = randomfloatrange(0.3,0.6);
|
||||
var_03 = var_03 * 20;
|
||||
for(var_04 = 0;var_04 < var_03;var_04++)
|
||||
{
|
||||
var_05 = var_02 * var_04 / var_03 + var_01 * var_03 - var_04 / var_03;
|
||||
self setlightintensity(var_05);
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
var_01 = var_02;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
strobelight(param_00,param_01,param_02,param_03)
|
||||
{
|
||||
var_04 = 360 / param_02;
|
||||
var_05 = 0;
|
||||
for(;;)
|
||||
{
|
||||
var_06 = sin(var_05 * var_04) * 0.5 + 0.5;
|
||||
self setlightintensity(param_00 + param_01 - param_00 * var_06);
|
||||
wait 0.05;
|
||||
var_05 = var_05 + 0.05;
|
||||
if(var_05 > param_02)
|
||||
{
|
||||
var_05 = var_05 - param_02;
|
||||
}
|
||||
|
||||
if(isdefined(param_03))
|
||||
{
|
||||
if(common_scripts\utility::flag(param_03))
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
changelightcolorto(param_00,param_01,param_02,param_03)
|
||||
{
|
||||
if(!isdefined(param_02))
|
||||
{
|
||||
param_02 = 0;
|
||||
}
|
||||
|
||||
if(!isdefined(param_03))
|
||||
{
|
||||
param_03 = 0;
|
||||
}
|
||||
|
||||
thread changelightcolortoworkerthread(param_00,param_01,param_02,param_03);
|
||||
}
|
||||
|
||||
//Function Number: 16
|
||||
changelightcolortoworkerthread(param_00,param_01,param_02,param_03)
|
||||
{
|
||||
var_04 = self getlightcolor();
|
||||
var_05 = 1 / param_01 * 2 - param_02 + param_03;
|
||||
var_06 = 0;
|
||||
if(var_06 < param_02)
|
||||
{
|
||||
var_07 = var_05 / param_02;
|
||||
while(var_06 < param_02)
|
||||
{
|
||||
var_08 = var_07 * var_06 * var_06;
|
||||
self setlightcolor(vectorlerp(var_04,param_00,var_08));
|
||||
wait 0.05;
|
||||
var_06 = var_06 + 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
while(var_06 < param_01 - param_03)
|
||||
{
|
||||
var_08 = var_05 * 2 * var_06 - param_02;
|
||||
self setlightcolor(vectorlerp(var_04,param_00,var_08));
|
||||
wait 0.05;
|
||||
var_06 = var_06 + 0.05;
|
||||
}
|
||||
|
||||
var_06 = param_01 - var_06;
|
||||
if(var_06 > 0)
|
||||
{
|
||||
var_07 = var_05 / param_03;
|
||||
while(var_06 > 0)
|
||||
{
|
||||
var_08 = 1 - var_07 * var_06 * var_06;
|
||||
self setlightcolor(vectorlerp(var_04,param_00,var_08));
|
||||
wait 0.05;
|
||||
var_06 = var_06 - 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
self setlightcolor(param_00);
|
||||
}
|
||||
|
||||
//Function Number: 17
|
||||
television()
|
||||
{
|
||||
thread tv_changes_intensity();
|
||||
thread tv_changes_color();
|
||||
}
|
||||
|
||||
//Function Number: 18
|
||||
tv_changes_intensity()
|
||||
{
|
||||
self endon("light_off");
|
||||
var_00 = self getlightintensity();
|
||||
var_01 = var_00;
|
||||
for(;;)
|
||||
{
|
||||
var_02 = randomfloatrange(var_00 * 0.7,var_00 * 1.2);
|
||||
var_03 = randomfloatrange(0.3,1.2);
|
||||
var_03 = var_03 * 20;
|
||||
for(var_04 = 0;var_04 < var_03;var_04++)
|
||||
{
|
||||
var_05 = var_02 * var_04 / var_03 + var_01 * var_03 - var_04 / var_03;
|
||||
self setlightintensity(var_05);
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
var_01 = var_02;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 19
|
||||
tv_changes_color()
|
||||
{
|
||||
self endon("light_off");
|
||||
var_00 = 0.5;
|
||||
var_01 = 0.5;
|
||||
var_02 = [];
|
||||
var_03 = [];
|
||||
for(var_04 = 0;var_04 < 3;var_04++)
|
||||
{
|
||||
var_02[var_04] = 0;
|
||||
var_03[var_04] = 0;
|
||||
}
|
||||
|
||||
for(;;)
|
||||
{
|
||||
for(var_04 = 0;var_04 < var_02.size;var_04++)
|
||||
{
|
||||
var_03[var_04] = var_02[var_04];
|
||||
var_02[var_04] = randomfloat(var_00) + var_01;
|
||||
}
|
||||
|
||||
var_05 = randomfloatrange(0.3,1.2);
|
||||
var_05 = var_05 * 20;
|
||||
for(var_04 = 0;var_04 < var_05;var_04++)
|
||||
{
|
||||
var_06 = [];
|
||||
for(var_07 = 0;var_07 < var_02.size;var_07++)
|
||||
{
|
||||
var_06[var_07] = var_02[var_07] * var_04 / var_05 + var_03[var_07] * var_05 - var_04 / var_05;
|
||||
}
|
||||
|
||||
self setlightcolor((var_06[0],var_06[1],var_06[2]));
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 20
|
||||
sun_shadow_trigger(param_00)
|
||||
{
|
||||
var_01 = 1;
|
||||
if(isdefined(param_00.script_duration))
|
||||
{
|
||||
var_01 = param_00.script_duration;
|
||||
}
|
||||
|
||||
for(;;)
|
||||
{
|
||||
param_00 waittill("trigger",var_02);
|
||||
param_00 set_sun_shadow_params(var_01);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 21
|
||||
set_sun_shadow_params(param_00)
|
||||
{
|
||||
var_01 = getdvarint("sm_sunenable",1);
|
||||
var_02 = getdvarfloat("sm_sunshadowscale",1);
|
||||
var_03 = getdvarint("sm_spotlimit",4);
|
||||
var_04 = getdvarfloat("sm_sunsamplesizenear",0.25);
|
||||
var_05 = getdvarfloat("sm_qualityspotshadow",1);
|
||||
if(isdefined(self.var_1664))
|
||||
{
|
||||
var_01 = self.var_1664;
|
||||
}
|
||||
|
||||
if(isdefined(self.var_1665))
|
||||
{
|
||||
var_02 = self.var_1665;
|
||||
}
|
||||
|
||||
if(isdefined(self.var_1666))
|
||||
{
|
||||
var_03 = self.var_1666;
|
||||
}
|
||||
|
||||
if(isdefined(self.var_1667))
|
||||
{
|
||||
var_04 = self.var_1667;
|
||||
}
|
||||
|
||||
var_04 = min(max(0.016,var_04),32);
|
||||
if(isdefined(self.var_1668))
|
||||
{
|
||||
var_05 = self.var_1668;
|
||||
}
|
||||
|
||||
var_06 = getdvarint("sm_sunenable",1);
|
||||
var_07 = getdvarfloat("sm_sunshadowscale",1);
|
||||
var_08 = getdvarint("sm_spotlimit",4);
|
||||
var_09 = getdvarint("sm_qualityspotshadow",1);
|
||||
setsaveddvar("sm_sunenable",var_01);
|
||||
setsaveddvar("sm_sunshadowscale",var_02);
|
||||
setsaveddvar("sm_spotlimit",var_03);
|
||||
setsaveddvar("sm_qualityspotshadow",var_05);
|
||||
lerp_sunsamplesizenear_overtime(var_04,param_00);
|
||||
}
|
||||
|
||||
//Function Number: 22
|
||||
lerp_sunsamplesizenear_overtime(param_00,param_01)
|
||||
{
|
||||
level notify("changing_sunsamplesizenear");
|
||||
level endon("changing_sunsamplesizenear");
|
||||
var_02 = getdvarfloat("sm_sunSampleSizeNear",0.25);
|
||||
if(param_00 == var_02)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var_03 = param_00 - var_02;
|
||||
var_04 = param_01 / 0.05;
|
||||
if(var_04 > 0)
|
||||
{
|
||||
var_05 = var_03 / var_04;
|
||||
var_06 = var_02;
|
||||
for(var_07 = 0;var_07 < var_04;var_07++)
|
||||
{
|
||||
var_06 = var_06 + var_05;
|
||||
setsaveddvar("sm_sunSampleSizeNear",var_06);
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
setsaveddvar("sm_sunSampleSizeNear",param_00);
|
||||
}
|
5046
MW3/PC/SP/maps/_load.gsc
Normal file
5046
MW3/PC/SP/maps/_load.gsc
Normal file
File diff suppressed because it is too large
Load Diff
1742
MW3/PC/SP/maps/_loadout.gsc
Normal file
1742
MW3/PC/SP/maps/_loadout.gsc
Normal file
File diff suppressed because it is too large
Load Diff
952
MW3/PC/SP/maps/_menus.gsc
Normal file
952
MW3/PC/SP/maps/_menus.gsc
Normal file
@ -0,0 +1,952 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_menus.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 41
|
||||
* Decompile Time: 552 ms
|
||||
* Timestamp: 10/27/2023 2:20:11 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
init()
|
||||
{
|
||||
precachemenu("uiScript_startMultiplayer");
|
||||
precacheshader("black");
|
||||
precacheshader("white");
|
||||
precacheshader("menu_button");
|
||||
precacheshader("menu_button_selected");
|
||||
precacheshader("menu_button_fade");
|
||||
precacheshader("menu_button_fade_selected");
|
||||
precacheshader("menu_button_faderight");
|
||||
precacheshader("menu_button_faderight_selected");
|
||||
precacheshader("menu_caret_open");
|
||||
precacheshader("menu_caret_closed");
|
||||
thread initthumbsticklayout();
|
||||
thread initbuttonlayout();
|
||||
thread initsensitivity();
|
||||
thread initinversion();
|
||||
thread initautoaim();
|
||||
thread initvibration();
|
||||
level.menustack = [];
|
||||
var_00 = createmenu("levels");
|
||||
var_01 = setupaction(::loadmap,"cqb_1");
|
||||
var_02 = spawnstruct();
|
||||
var_02.display = &"MENU_1ST_PASS";
|
||||
var_02.xpos = 240;
|
||||
var_02.ypos = 100;
|
||||
var_00 additem(&"MENU_CQB_TEST",var_01,"loadmap",var_02);
|
||||
var_01 = setupaction(::loadmap,"descent");
|
||||
var_02 = spawnstruct();
|
||||
var_02.display = &"MENU_1ST_PASS";
|
||||
var_02.xpos = 240;
|
||||
var_02.ypos = 100;
|
||||
var_00 additem(&"MENU_BUNKER",var_01,"loadmap",var_02);
|
||||
var_01 = setupaction(::loadmap,"aftermath");
|
||||
var_02 = spawnstruct();
|
||||
var_02.display = &"MENU_100_INITIAL_GEO";
|
||||
var_02.xpos = 240;
|
||||
var_02.ypos = 100;
|
||||
var_00 additem(&"MENU_AFTERMATH",var_01,"loadmap",var_02);
|
||||
var_01 = setupaction(::loadmap,"chechnya_escape");
|
||||
var_02 = spawnstruct();
|
||||
var_02.display = &"MENU_40_INITIAL_GEO";
|
||||
var_02.xpos = 240;
|
||||
var_02.ypos = 100;
|
||||
var_00 additem(&"MENU_CHECHNYA_ESCAPE",var_01,"loadmap",var_02);
|
||||
var_01 = setupaction(::loadmap,"marksman");
|
||||
var_02 = spawnstruct();
|
||||
var_02.display = &"MENU_25_SCRIPTED";
|
||||
var_02.xpos = 240;
|
||||
var_02.ypos = 100;
|
||||
var_00 additem(&"MENU_MARKSMAN",var_01,"loadmap",var_02);
|
||||
var_01 = setupaction(::loadmap,"seaknight_defend");
|
||||
var_02 = spawnstruct();
|
||||
var_02.display = &"MENU_PROTOTYPE_LEVEL_30_SCRIPTED";
|
||||
var_02.xpos = 240;
|
||||
var_02.ypos = 100;
|
||||
var_00 additem(&"MENU_SEAKNIGHT_DEFEND",var_01,"loadmap",var_02);
|
||||
var_01 = setupaction(::loadmap,"wetwork");
|
||||
var_02 = spawnstruct();
|
||||
var_02.display = &"MENU_100_INITIAL_GEO";
|
||||
var_02.xpos = 240;
|
||||
var_02.ypos = 100;
|
||||
var_00 additem(&"MENU_WETWORK",var_01,"loadmap",var_02);
|
||||
var_01 = setupaction(::loadmap,"cargoship");
|
||||
var_02 = spawnstruct();
|
||||
var_02.display = &"MENU_10_SCRIPTED";
|
||||
var_02.xpos = 240;
|
||||
var_02.ypos = 100;
|
||||
var_00 additem(&"MENU_CARGOSHIP",var_01,"loadmap",var_02);
|
||||
var_01 = setupaction(::loadmap,"bog");
|
||||
var_02 = spawnstruct();
|
||||
var_02.display = &"MENU_35_INITIAL_GEO";
|
||||
var_02.xpos = 240;
|
||||
var_02.ypos = 100;
|
||||
var_00 additem(&"MENU_BOG",var_01,"loadmap",var_02);
|
||||
var_01 = setupaction(::loadmap,"training");
|
||||
var_02 = spawnstruct();
|
||||
var_02.display = &"MENU_5_SCRIPTED";
|
||||
var_02.xpos = 240;
|
||||
var_02.ypos = 100;
|
||||
var_00 additem(&"MENU_TRAINING1",var_01,"loadmap",var_02);
|
||||
var_01 = setupaction(::loadmap,"ac130");
|
||||
var_02 = spawnstruct();
|
||||
var_02.display = &"MENU_30";
|
||||
var_02.xpos = 240;
|
||||
var_02.ypos = 100;
|
||||
var_00 additem(&"MENU_AC130",var_01,"loadmap",var_02);
|
||||
var_01 = setupaction(::loadmap,"seaknight_assault");
|
||||
var_02 = spawnstruct();
|
||||
var_02.display = &"MENU_INITIAL_GEO_IN_PROGRESS";
|
||||
var_02.xpos = 240;
|
||||
var_02.ypos = 100;
|
||||
var_00 additem(&"MENU_SEAKNIGHT_ASSAULT",var_01,"loadmap",var_02);
|
||||
var_01 = setupaction(::loadmap,"pilotcobra");
|
||||
var_02 = spawnstruct();
|
||||
var_02.display = &"MENU_INITIAL_GEO_IN_PROGRESS";
|
||||
var_02.xpos = 240;
|
||||
var_02.ypos = 100;
|
||||
var_00 additem(&"MENU_PILOT_COBRA",var_01,"loadmap",var_02);
|
||||
var_03 = createmenu_controls("controls");
|
||||
var_04 = spawnstruct();
|
||||
var_04.index = 0;
|
||||
var_04.dvar = "controls_sticksConfig";
|
||||
var_04.value[0] = "thumbstick_default";
|
||||
var_04.value[1] = "thumbstick_southpaw";
|
||||
var_04.value[2] = "thumbstick_legacy";
|
||||
var_04.value[3] = "thumbstick_legacysouthpaw";
|
||||
var_04.display[0] = "Default";
|
||||
var_04.display[1] = "Southpaw";
|
||||
var_04.display[2] = "Legacy";
|
||||
var_04.display[3] = "Legacy Southpaw";
|
||||
var_03 additemsetting(&"MENU_THUMBSTICK_LAYOUT",undefined,undefined,undefined,var_04);
|
||||
var_04 = spawnstruct();
|
||||
var_04.index = 0;
|
||||
var_04.dvar = "controls_buttonConfig";
|
||||
var_04.value[0] = "buttons_default";
|
||||
var_04.value[1] = "buttons_tactical";
|
||||
var_04.value[2] = "buttons_lefty";
|
||||
var_04.value[3] = "buttons_finesthour";
|
||||
var_04.display[0] = "Default";
|
||||
var_04.display[1] = "Tactical";
|
||||
var_04.display[2] = "Lefty";
|
||||
var_04.display[3] = "Finest Hour";
|
||||
var_03 additemsetting(&"MENU_BUTTON_LAYOUT",undefined,undefined,undefined,var_04);
|
||||
var_04 = spawnstruct();
|
||||
var_04.index = 1;
|
||||
var_04.dvar = "controls_sensitivityConfig";
|
||||
var_04.value[0] = "sensitivity_low";
|
||||
var_04.value[1] = "sensitivity_medium";
|
||||
var_04.value[2] = "sensitivity_high";
|
||||
var_04.value[3] = "sensitivity_veryhigh";
|
||||
var_04.display[0] = "Low";
|
||||
var_04.display[1] = "Medium";
|
||||
var_04.display[2] = "High";
|
||||
var_04.display[3] = "Very High";
|
||||
var_03 additemsetting(&"MENU_LOOK_SENSITIVITY",undefined,undefined,undefined,var_04);
|
||||
var_04 = spawnstruct();
|
||||
var_04.index = 0;
|
||||
var_04.dvar = "controls_inversionConfig";
|
||||
var_04.value[0] = "inversion_disabled";
|
||||
var_04.value[1] = "inversion_enabled";
|
||||
var_04.display[0] = "Disabled";
|
||||
var_04.display[1] = "Enabled";
|
||||
var_03 additemsetting(&"MENU_LOOK_INVERSION",undefined,undefined,undefined,var_04);
|
||||
var_04 = spawnstruct();
|
||||
var_04.index = 1;
|
||||
var_04.dvar = "controls_autoaimConfig";
|
||||
var_04.value[0] = "autoaim_disabled";
|
||||
var_04.value[1] = "autoaim_enabled";
|
||||
var_04.display[0] = "Disabled";
|
||||
var_04.display[1] = "Enabled";
|
||||
var_03 additemsetting(&"MENU_AUTOAIM",undefined,undefined,undefined,var_04);
|
||||
var_04 = spawnstruct();
|
||||
var_04.index = 1;
|
||||
var_04.dvar = "controls_vibrationConfig";
|
||||
var_04.value[0] = "vibration_disabled";
|
||||
var_04.value[1] = "vibration_enabled";
|
||||
var_04.display[0] = "Disabled";
|
||||
var_04.display[1] = "Enabled";
|
||||
var_03 additemsetting(&"MENU_CONTROLLER_VIBRATION",undefined,undefined,undefined,var_04);
|
||||
var_05 = createmenu("main");
|
||||
var_01 = setupaction(::pushmenu,var_00);
|
||||
var_05 additem(&"MENU_SELECT_LEVEL",var_01,"openmenu_levels");
|
||||
var_06 = var_05 addsubmenu("options",&"MENU_OPTIONS");
|
||||
var_01 = setupaction(::pushmenu,var_03);
|
||||
var_06 additem(&"MENU_CONTROLS",var_01);
|
||||
var_06 additem(&"MENU_SUBTITLES");
|
||||
var_06 additem(&"MENU_SAVE_DEVICE");
|
||||
var_05 additem(&"MENU_CREDITS");
|
||||
var_01 = setupaction(::loadmultiplayer);
|
||||
var_05 additem(&"MENU_MULTIPLAYER",var_01);
|
||||
pushmenu(var_05);
|
||||
level.player thread menuresponse();
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
void()
|
||||
{
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
loadmap(param_00)
|
||||
{
|
||||
changelevel(param_00);
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
loadmultiplayer()
|
||||
{
|
||||
level.player openpopupmenu("uiScript_startMultiplayer");
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
pushmenu(param_00)
|
||||
{
|
||||
level.menustack[level.menustack.size] = param_00;
|
||||
var_01 = level.curmenu;
|
||||
level.curmenu = param_00;
|
||||
if(param_00.menutype == "fullScreen")
|
||||
{
|
||||
if(isdefined(var_01))
|
||||
{
|
||||
var_01 thread hidemenu(0.2,1);
|
||||
}
|
||||
|
||||
param_00 thread showmenu(0.2,1);
|
||||
level notify("open_menu",level.curmenu.name);
|
||||
}
|
||||
else
|
||||
{
|
||||
param_00 thread expandmenu(0.2);
|
||||
}
|
||||
|
||||
level.player playsound("mouse_click");
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
popmenu()
|
||||
{
|
||||
if(level.menustack.size == 1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
level.menustack[level.menustack.size - 1] = undefined;
|
||||
var_00 = level.curmenu;
|
||||
level.curmenu = level.menustack[level.menustack.size - 1];
|
||||
if(var_00.menutype == "subMenu")
|
||||
{
|
||||
var_00 thread collapsemenu(0.2);
|
||||
level.curmenu updatemenu(0.2,1);
|
||||
}
|
||||
else
|
||||
{
|
||||
var_00 thread hidemenu(0.2,0);
|
||||
level.curmenu thread showmenu(0.2,0);
|
||||
level notify("close_menu",level.menustack.size);
|
||||
}
|
||||
|
||||
level.player playsound("mouse_click");
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
createmenu(param_00)
|
||||
{
|
||||
var_01 = spawnstruct();
|
||||
var_01.name = param_00;
|
||||
var_01.menutype = "fullScreen";
|
||||
var_01.itemdefs = [];
|
||||
var_01.itemwidth = 120;
|
||||
var_01.itemheight = 20;
|
||||
var_01.itempadding = 0;
|
||||
var_01.selectedindex = 0;
|
||||
var_01.xpos = 80;
|
||||
var_01.ypos = 100;
|
||||
var_01.xoffset = 0;
|
||||
var_01.yoffset = 0;
|
||||
return var_01;
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
createmenu_controls(param_00)
|
||||
{
|
||||
var_01 = spawnstruct();
|
||||
var_01.name = param_00;
|
||||
var_01.menutype = "fullScreen";
|
||||
var_01.itemdefs = [];
|
||||
var_01.itemwidth = 420;
|
||||
var_01.itemheight = 20;
|
||||
var_01.itempadding = 0;
|
||||
var_01.selectedindex = 0;
|
||||
var_01.xpos = 80;
|
||||
var_01.ypos = 100;
|
||||
var_01.xoffset = 0;
|
||||
var_01.yoffset = 0;
|
||||
return var_01;
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
createsubmenu(param_00)
|
||||
{
|
||||
var_01 = spawnstruct();
|
||||
var_01.name = param_00;
|
||||
var_01.menutype = "subMenu";
|
||||
var_01.itemdefs = [];
|
||||
var_01.itemwidth = 120;
|
||||
var_01.itemheight = 20;
|
||||
var_01.itempadding = 0;
|
||||
var_01.selectedindex = 0;
|
||||
var_01.isexpanded = 0;
|
||||
return var_01;
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
additem(param_00,param_01,param_02,param_03)
|
||||
{
|
||||
precachestring(param_00);
|
||||
var_04 = spawnstruct();
|
||||
var_04.itemtype = "item";
|
||||
var_04.bgshader = "menu_button_selected";
|
||||
var_04.fgtext = param_00;
|
||||
var_04.xpos = 0;
|
||||
var_04.ypos = 0;
|
||||
var_04.xoffset = 0;
|
||||
var_04.yoffset = 0;
|
||||
var_04.action = param_01;
|
||||
var_04.event = param_02;
|
||||
var_04.description = param_03;
|
||||
var_04.parentdef = self;
|
||||
var_04.index = self.itemdefs.size;
|
||||
self.itemdefs[self.itemdefs.size] = var_04;
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
additemsetting(param_00,param_01,param_02,param_03,param_04)
|
||||
{
|
||||
precachestring(param_00);
|
||||
var_05 = spawnstruct();
|
||||
var_05.itemtype = "settingMenu";
|
||||
var_05.bgshader = "menu_button_selected";
|
||||
var_05.fgtext = param_00;
|
||||
var_05.xpos = 0;
|
||||
var_05.ypos = 0;
|
||||
var_05.xoffset = 0;
|
||||
var_05.yoffset = 0;
|
||||
var_05.action = param_01;
|
||||
var_05.event = param_02;
|
||||
var_05.description = param_03;
|
||||
var_05.setting = param_04;
|
||||
var_05.parentdef = self;
|
||||
var_05.index = self.itemdefs.size;
|
||||
self.itemdefs[self.itemdefs.size] = var_05;
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
addsubmenu(param_00,param_01)
|
||||
{
|
||||
var_02 = createsubmenu(param_00);
|
||||
var_02.itemtype = "subMenu";
|
||||
var_02.bgshader = "menu_button_selected";
|
||||
var_02.fgtext = param_01;
|
||||
var_02.xpos = 0;
|
||||
var_02.ypos = 0;
|
||||
var_02.xoffset = 20;
|
||||
var_02.yoffset = self.itemheight + self.itempadding;
|
||||
var_02.parentdef = self;
|
||||
var_02.index = self.itemdefs.size;
|
||||
self.itemdefs[self.itemdefs.size] = var_02;
|
||||
return var_02;
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
createitemelems()
|
||||
{
|
||||
self.bgicon = maps\_hud_util::createicon(self.bgshader,self.parentdef.itemwidth,self.parentdef.itemheight);
|
||||
self.bgicon.alpha = 0;
|
||||
self.bgicon.sort = 0;
|
||||
self.fontstring = maps\_hud_util::createfontstring("default",1.5);
|
||||
self.fontstring.alpha = 0;
|
||||
self.fontstring.sort = 100;
|
||||
self.fontstring settext(self.fgtext);
|
||||
if(self.itemtype == "settingMenu")
|
||||
{
|
||||
self.settingvalue = maps\_hud_util::createfontstring("default",1.5);
|
||||
self.settingvalue.alpha = 0;
|
||||
self.settingvalue.sort = 100;
|
||||
updatedisplayvalue();
|
||||
}
|
||||
|
||||
if(self.itemtype == "subMenu")
|
||||
{
|
||||
self.careticon = maps\_hud_util::createicon("menu_caret_closed",self.parentdef.itemheight,self.parentdef.itemheight);
|
||||
self.careticon.alpha = 0;
|
||||
self.careticon.sort = 100;
|
||||
}
|
||||
|
||||
if(isdefined(self.description))
|
||||
{
|
||||
self.descriptionvalue = maps\_hud_util::createfontstring("default",1.5);
|
||||
self.descriptionvalue.alpha = 0;
|
||||
self.descriptionvalue.sort = 100;
|
||||
self.descriptionvalue settext(self.description.display);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
destroyitemelems()
|
||||
{
|
||||
if(self.itemtype == "subMenu")
|
||||
{
|
||||
self.careticon maps\_hud_util::destroyelem();
|
||||
}
|
||||
|
||||
if(self.itemtype == "settingMenu")
|
||||
{
|
||||
self.settingvalue maps\_hud_util::destroyelem();
|
||||
}
|
||||
|
||||
if(isdefined(self.descriptionvalue))
|
||||
{
|
||||
self.descriptionvalue maps\_hud_util::destroyelem();
|
||||
}
|
||||
|
||||
self.bgicon maps\_hud_util::destroyelem();
|
||||
self.fontstring maps\_hud_util::destroyelem();
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
setelempoints(param_00,param_01,param_02,param_03,param_04)
|
||||
{
|
||||
var_05 = 3;
|
||||
self.bgicon maps\_hud_util::setpoint(param_00,param_01,param_02,param_03,param_04);
|
||||
if(self.itemtype == "subMenu")
|
||||
{
|
||||
self.careticon maps\_hud_util::setpoint(param_00,param_01,param_02,param_03,param_04);
|
||||
var_05 = var_05 + 16;
|
||||
}
|
||||
|
||||
if(self.itemtype == "settingMenu")
|
||||
{
|
||||
self.settingvalue maps\_hud_util::setpoint("TOPRIGHT",param_01,param_02 + var_05 + 400,param_03,param_04);
|
||||
}
|
||||
|
||||
if(isdefined(self.descriptionvalue))
|
||||
{
|
||||
self.descriptionvalue maps\_hud_util::setpoint("TOPLEFT",param_01,self.description.xpos,self.description.ypos,param_04);
|
||||
}
|
||||
|
||||
self.fontstring maps\_hud_util::setpoint(param_00,param_01,param_02 + var_05,param_03,param_04);
|
||||
}
|
||||
|
||||
//Function Number: 16
|
||||
showmenu(param_00,param_01)
|
||||
{
|
||||
var_02 = 0;
|
||||
for(var_03 = 0;var_03 < self.itemdefs.size;var_03++)
|
||||
{
|
||||
var_04 = self.itemdefs[var_03];
|
||||
var_04 createitemelems();
|
||||
if(param_01)
|
||||
{
|
||||
var_04 setelempoints("TOPLEFT","TOPRIGHT",self.xpos,self.ypos + var_02);
|
||||
}
|
||||
else
|
||||
{
|
||||
var_04 setelempoints("TOPRIGHT","TOPLEFT",self.xpos,self.ypos + var_02);
|
||||
}
|
||||
|
||||
var_04.xpos = self.xpos;
|
||||
var_04.ypos = self.ypos + var_02;
|
||||
var_02 = var_02 + self.itemheight + self.itempadding;
|
||||
if(var_04.itemtype == "subMenu" && var_04.isexpanded)
|
||||
{
|
||||
var_02 = var_02 + var_04 getmenuheight();
|
||||
}
|
||||
}
|
||||
|
||||
if(self.menutype == "subMenu")
|
||||
{
|
||||
self.parentdef showmenu(param_00,param_01);
|
||||
}
|
||||
|
||||
updatemenu(param_00,1);
|
||||
}
|
||||
|
||||
//Function Number: 17
|
||||
hidemenu(param_00,param_01)
|
||||
{
|
||||
var_02 = 0;
|
||||
for(var_03 = 0;var_03 < self.itemdefs.size;var_03++)
|
||||
{
|
||||
var_04 = self.itemdefs[var_03];
|
||||
var_05 = -1 * self.itemwidth;
|
||||
if(param_01)
|
||||
{
|
||||
var_04 setelempoints("TOPRIGHT","TOPLEFT",self.xpos,self.ypos + var_02,param_00);
|
||||
var_04.bgicon fadeovertime(param_00);
|
||||
var_04.bgicon.alpha = 0;
|
||||
var_04.fontstring fadeovertime(param_00);
|
||||
var_04.fontstring.alpha = 0;
|
||||
if(var_04.itemtype == "settingMenu")
|
||||
{
|
||||
var_04.settingvalue fadeovertime(param_00);
|
||||
var_04.settingvalue.alpha = 0;
|
||||
}
|
||||
|
||||
if(var_04.itemtype == "subMenu")
|
||||
{
|
||||
var_04.careticon fadeovertime(param_00);
|
||||
var_04.careticon.alpha = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var_04 setelempoints("TOPLEFT","TOPRIGHT",self.xpos,self.ypos + var_02,param_00);
|
||||
var_04.bgicon fadeovertime(param_00);
|
||||
var_04.bgicon.alpha = 0;
|
||||
var_04.fontstring fadeovertime(param_00);
|
||||
var_04.fontstring.alpha = 0;
|
||||
if(var_04.itemtype == "settingMenu")
|
||||
{
|
||||
var_04.settingvalue fadeovertime(param_00);
|
||||
var_04.settingvalue.alpha = 0;
|
||||
}
|
||||
|
||||
if(var_04.itemtype == "subMenu")
|
||||
{
|
||||
var_04.careticon fadeovertime(param_00);
|
||||
var_04.careticon.alpha = 0;
|
||||
}
|
||||
}
|
||||
|
||||
var_04.xpos = self.xpos;
|
||||
var_04.ypos = self.ypos + var_02;
|
||||
var_02 = var_02 + self.itemheight + self.itempadding;
|
||||
if(var_04.itemtype == "subMenu" && var_04.isexpanded)
|
||||
{
|
||||
var_02 = var_02 + var_04 getmenuheight();
|
||||
}
|
||||
}
|
||||
|
||||
if(self.menutype == "subMenu")
|
||||
{
|
||||
self.parentdef thread hidemenu(param_00,param_01);
|
||||
}
|
||||
|
||||
wait param_00;
|
||||
for(var_03 = 0;var_03 < self.itemdefs.size;var_03++)
|
||||
{
|
||||
var_04 = self.itemdefs[var_03];
|
||||
var_04 destroyitemelems();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 18
|
||||
collapsemenu(param_00)
|
||||
{
|
||||
self.isexpanded = 0;
|
||||
self.careticon setshader("menu_caret_closed",self.parentdef.itemheight,self.parentdef.itemheight);
|
||||
var_01 = 0;
|
||||
for(var_02 = 0;var_02 < self.itemdefs.size;var_02++)
|
||||
{
|
||||
var_03 = self.itemdefs[var_02];
|
||||
var_03 setelempoints("TOPLEFT","TOPLEFT",self.xpos,self.ypos,param_00);
|
||||
var_03.bgicon fadeovertime(param_00);
|
||||
var_03.bgicon.alpha = 0;
|
||||
var_03.fontstring fadeovertime(param_00);
|
||||
var_03.fontstring.alpha = 0;
|
||||
if(var_03.itemtype == "subMenu")
|
||||
{
|
||||
var_03.careticon fadeovertime(param_00);
|
||||
var_03.careticon.alpha = 0;
|
||||
}
|
||||
|
||||
var_03.xpos = self.xpos;
|
||||
var_03.ypos = self.ypos;
|
||||
}
|
||||
|
||||
wait param_00;
|
||||
for(var_02 = 0;var_02 < self.itemdefs.size;var_02++)
|
||||
{
|
||||
var_03 = self.itemdefs[var_02];
|
||||
var_03.bgicon maps\_hud_util::destroyelem();
|
||||
var_03.fontstring maps\_hud_util::destroyelem();
|
||||
if(var_03.itemtype == "subMenu")
|
||||
{
|
||||
var_03.careticon maps\_hud_util::destroyelem();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 19
|
||||
expandmenu(param_00)
|
||||
{
|
||||
self.isexpanded = 1;
|
||||
self.careticon setshader("menu_caret_open",self.parentdef.itemheight,self.parentdef.itemheight);
|
||||
for(var_01 = 0;var_01 < self.itemdefs.size;var_01++)
|
||||
{
|
||||
var_02 = self.itemdefs[var_01];
|
||||
var_02 createitemelems();
|
||||
var_02 setelempoints("TOPLEFT","TOPLEFT",self.xpos + self.xoffset,self.ypos + self.yoffset);
|
||||
var_02.xpos = self.xpos + self.xoffset;
|
||||
var_02.ypos = self.ypos + self.yoffset;
|
||||
}
|
||||
|
||||
updatemenu(param_00,1);
|
||||
}
|
||||
|
||||
//Function Number: 20
|
||||
updatemenu(param_00,param_01)
|
||||
{
|
||||
var_02 = self.xoffset;
|
||||
var_03 = self.yoffset;
|
||||
for(var_04 = 0;var_04 < self.itemdefs.size;var_04++)
|
||||
{
|
||||
var_05 = self.itemdefs[var_04];
|
||||
var_05 setselected(param_00,var_04 == self.selectedindex);
|
||||
var_06 = var_05.xpos;
|
||||
var_07 = var_05.ypos;
|
||||
if(param_01 || self.xpos + var_02 != var_06 || self.ypos + var_03 != var_07)
|
||||
{
|
||||
var_05 setelempoints("TOPLEFT","TOPLEFT",self.xpos + var_02,self.ypos + var_03,param_00);
|
||||
var_05.xpos = self.xpos + var_02;
|
||||
var_05.ypos = self.ypos + var_03;
|
||||
}
|
||||
|
||||
var_03 = var_03 + self.itemheight + self.itempadding;
|
||||
if(var_05.itemtype == "subMenu" && var_05.isexpanded)
|
||||
{
|
||||
var_03 = var_03 + var_05 getmenuheight();
|
||||
}
|
||||
}
|
||||
|
||||
if(isdefined(self.parentdef))
|
||||
{
|
||||
self.parentdef thread updatemenu(param_00,param_01);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 21
|
||||
setselected(param_00,param_01)
|
||||
{
|
||||
self.bgicon fadeovertime(param_00);
|
||||
self.fontstring fadeovertime(param_00);
|
||||
if(isdefined(self.settingvalue))
|
||||
{
|
||||
self.settingvalue fadeovertime(param_00);
|
||||
}
|
||||
|
||||
if(isdefined(self.descriptionvalue))
|
||||
{
|
||||
self.descriptionvalue fadeovertime(param_00);
|
||||
}
|
||||
|
||||
if(param_01)
|
||||
{
|
||||
if(self.parentdef == level.curmenu)
|
||||
{
|
||||
setelemalpha(1);
|
||||
}
|
||||
else
|
||||
{
|
||||
setelemalpha(0.5);
|
||||
}
|
||||
|
||||
if(isdefined(self.descriptionvalue))
|
||||
{
|
||||
self.descriptionvalue.alpha = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if(self.parentdef == level.curmenu)
|
||||
{
|
||||
setelemalpha(0.5);
|
||||
}
|
||||
else
|
||||
{
|
||||
setelemalpha(0.25);
|
||||
}
|
||||
|
||||
if(isdefined(self.descriptionvalue))
|
||||
{
|
||||
self.descriptionvalue.alpha = 0;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 22
|
||||
setelemalpha(param_00)
|
||||
{
|
||||
self.bgicon.alpha = param_00;
|
||||
self.fontstring.alpha = param_00;
|
||||
if(self.itemtype == "settingMenu")
|
||||
{
|
||||
self.settingvalue.alpha = param_00;
|
||||
}
|
||||
|
||||
if(self.itemtype == "subMenu")
|
||||
{
|
||||
self.careticon.alpha = param_00;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 23
|
||||
setelemcolor(param_00)
|
||||
{
|
||||
self.fontstring.color = param_00;
|
||||
}
|
||||
|
||||
//Function Number: 24
|
||||
getmenuheight()
|
||||
{
|
||||
var_00 = 0;
|
||||
for(var_01 = 0;var_01 < self.itemdefs.size;var_01++)
|
||||
{
|
||||
var_02 = self.itemdefs[var_01];
|
||||
var_00 = var_00 + self.itemheight + self.itempadding;
|
||||
if(var_02.itemtype == "subMenu" && var_02.isexpanded)
|
||||
{
|
||||
var_00 = var_00 + var_02 getmenuheight();
|
||||
}
|
||||
}
|
||||
|
||||
return var_00;
|
||||
}
|
||||
|
||||
//Function Number: 25
|
||||
ondpadup()
|
||||
{
|
||||
self.selectedindex--;
|
||||
if(self.selectedindex < 0)
|
||||
{
|
||||
self.selectedindex = self.itemdefs.size - 1;
|
||||
}
|
||||
|
||||
updatemenu(0.1,0);
|
||||
level.player playsound("mouse_over");
|
||||
}
|
||||
|
||||
//Function Number: 26
|
||||
ondpaddown()
|
||||
{
|
||||
self.selectedindex++;
|
||||
if(self.selectedindex >= self.itemdefs.size)
|
||||
{
|
||||
self.selectedindex = 0;
|
||||
}
|
||||
|
||||
updatemenu(0.1,0);
|
||||
level.player playsound("mouse_over");
|
||||
}
|
||||
|
||||
//Function Number: 27
|
||||
onbuttonb()
|
||||
{
|
||||
popmenu();
|
||||
}
|
||||
|
||||
//Function Number: 28
|
||||
onbuttona()
|
||||
{
|
||||
var_00 = self.itemdefs[self.selectedindex];
|
||||
if(var_00.itemtype == "subMenu")
|
||||
{
|
||||
pushmenu(var_00);
|
||||
return;
|
||||
}
|
||||
|
||||
if(var_00.itemtype == "item")
|
||||
{
|
||||
var_00 thread runaction();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 29
|
||||
ondpadleft()
|
||||
{
|
||||
var_00 = self.itemdefs[self.selectedindex];
|
||||
if(var_00.itemtype == "settingMenu")
|
||||
{
|
||||
var_01 = getdvar(var_00.setting.dvar);
|
||||
var_02 = var_00.setting.value;
|
||||
var_03 = 0;
|
||||
for(var_04 = 0;var_04 < var_02.size;var_04++)
|
||||
{
|
||||
var_05 = var_02[var_04];
|
||||
if(var_05 != var_01)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_03 = var_04 - 1;
|
||||
if(var_03 >= 0)
|
||||
{
|
||||
var_00.setting.index = var_03;
|
||||
setdvar(var_00.setting.dvar,var_02[var_03]);
|
||||
var_00 updatedisplayvalue();
|
||||
level.player playsound("mouse_over");
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 30
|
||||
ondpadright()
|
||||
{
|
||||
var_00 = self.itemdefs[self.selectedindex];
|
||||
if(var_00.itemtype == "settingMenu")
|
||||
{
|
||||
var_01 = getdvar(var_00.setting.dvar);
|
||||
var_02 = var_00.setting.value;
|
||||
var_03 = 0;
|
||||
for(var_04 = 0;var_04 < var_02.size;var_04++)
|
||||
{
|
||||
var_05 = var_02[var_04];
|
||||
if(var_05 != var_01)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_03 = var_04 + 1;
|
||||
if(var_03 <= var_00.setting.value.size - 1)
|
||||
{
|
||||
var_00.setting.index = var_03;
|
||||
setdvar(var_00.setting.dvar,var_02[var_03]);
|
||||
var_00 updatedisplayvalue();
|
||||
level.player playsound("mouse_over");
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 31
|
||||
initthumbsticklayout()
|
||||
{
|
||||
setdvar("controls_sticksConfig","thumbstick_default");
|
||||
}
|
||||
|
||||
//Function Number: 32
|
||||
initbuttonlayout()
|
||||
{
|
||||
setdvar("controls_buttonConfig","buttons_default");
|
||||
}
|
||||
|
||||
//Function Number: 33
|
||||
initsensitivity()
|
||||
{
|
||||
setdvar("controls_sensitivityConfig","sensitivity_medium");
|
||||
}
|
||||
|
||||
//Function Number: 34
|
||||
initinversion()
|
||||
{
|
||||
setdvar("controls_inversionConfig","inversion_disabled");
|
||||
}
|
||||
|
||||
//Function Number: 35
|
||||
initautoaim()
|
||||
{
|
||||
setdvar("controls_autoaimConfig","autoaim_enabled");
|
||||
}
|
||||
|
||||
//Function Number: 36
|
||||
initvibration()
|
||||
{
|
||||
setdvar("controls_vibrationConfig","vibration_enabled");
|
||||
}
|
||||
|
||||
//Function Number: 37
|
||||
updatedisplayvalue()
|
||||
{
|
||||
self.settingvalue settext(self.setting.display[self.setting.index]);
|
||||
}
|
||||
|
||||
//Function Number: 38
|
||||
setupaction(param_00,param_01,param_02)
|
||||
{
|
||||
var_03 = spawnstruct();
|
||||
var_03.name = param_00;
|
||||
if(isdefined(param_01))
|
||||
{
|
||||
var_03.arg1 = param_01;
|
||||
}
|
||||
|
||||
if(isdefined(param_02))
|
||||
{
|
||||
var_03.arg2 = param_02;
|
||||
}
|
||||
|
||||
return var_03;
|
||||
}
|
||||
|
||||
//Function Number: 39
|
||||
runaction()
|
||||
{
|
||||
if(isdefined(self.action))
|
||||
{
|
||||
if(isdefined(self.action.arg1))
|
||||
{
|
||||
thread [[ self.action.name ]](self.action.arg1);
|
||||
}
|
||||
else
|
||||
{
|
||||
thread [[ self.action.name ]]();
|
||||
}
|
||||
}
|
||||
|
||||
if(isdefined(self.event))
|
||||
{
|
||||
level notify(self.event);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 40
|
||||
testaction()
|
||||
{
|
||||
level.marine setgoalnode(getnode("node2","targetname"));
|
||||
level.camera attachpath(getvehiclenode("path2","targetname"));
|
||||
thread maps\_vehicle::gopath(level.camera);
|
||||
}
|
||||
|
||||
//Function Number: 41
|
||||
menuresponse()
|
||||
{
|
||||
for(;;)
|
||||
{
|
||||
self waittill("menuresponse",var_00,var_01);
|
||||
switch(var_01)
|
||||
{
|
||||
case "DPAD_UP":
|
||||
level.curmenu ondpadup();
|
||||
break;
|
||||
|
||||
case "DPAD_DOWN":
|
||||
level.curmenu ondpaddown();
|
||||
break;
|
||||
|
||||
case "DPAD_LEFT":
|
||||
level.curmenu ondpadleft();
|
||||
break;
|
||||
|
||||
case "DPAD_RIGHT":
|
||||
level.curmenu ondpadright();
|
||||
break;
|
||||
|
||||
case "BUTTON_A":
|
||||
level.curmenu onbuttona();
|
||||
break;
|
||||
|
||||
case "BUTTON_B":
|
||||
level.curmenu onbuttonb();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
356
MW3/PC/SP/maps/_mg_penetration.gsc
Normal file
356
MW3/PC/SP/maps/_mg_penetration.gsc
Normal file
@ -0,0 +1,356 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_mg_penetration.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 16
|
||||
* Decompile Time: 203 ms
|
||||
* Timestamp: 10/27/2023 2:25:06 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
gunner_think(param_00)
|
||||
{
|
||||
self endon("death");
|
||||
self notify("end_mg_behavior");
|
||||
self endon("end_mg_behavior");
|
||||
self.can_fire_turret = 1;
|
||||
self.wants_to_fire = 0;
|
||||
if(!maps\_mgturret::use_the_turret(param_00))
|
||||
{
|
||||
self notify("continue_cover_script");
|
||||
return;
|
||||
}
|
||||
|
||||
self.last_enemy_sighting_position = undefined;
|
||||
thread record_enemy_sightings();
|
||||
var_01 = anglestoforward(param_00.angles);
|
||||
var_02 = spawn("script_origin",(0,0,0));
|
||||
thread target_ent_cleanup(var_02);
|
||||
var_02.origin = param_00.origin + var_01 * 500;
|
||||
if(isdefined(self.last_enemy_sighting_position))
|
||||
{
|
||||
var_02.origin = self.last_enemy_sighting_position;
|
||||
}
|
||||
|
||||
param_00 settargetentity(var_02);
|
||||
var_03 = undefined;
|
||||
for(;;)
|
||||
{
|
||||
if(!isalive(self.current_enemy))
|
||||
{
|
||||
stop_firing();
|
||||
self waittill("new_enemy");
|
||||
}
|
||||
|
||||
start_firing();
|
||||
shoot_enemy_until_he_hides_then_shoot_wall(var_02);
|
||||
if(!isalive(self.current_enemy))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(self cansee(self.current_enemy))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
self waittill("saw_enemy");
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
target_ent_cleanup(param_00)
|
||||
{
|
||||
common_scripts\utility::waittill_either("death","end_mg_behavior");
|
||||
param_00 delete();
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
shoot_enemy_until_he_hides_then_shoot_wall(param_00)
|
||||
{
|
||||
self endon("death");
|
||||
self endon("new_enemy");
|
||||
self.current_enemy endon("death");
|
||||
var_01 = self.current_enemy;
|
||||
while(self cansee(var_01))
|
||||
{
|
||||
var_02 = vectortoangles(var_01 geteye() - param_00.origin);
|
||||
var_02 = anglestoforward(var_02);
|
||||
param_00 moveto(param_00.origin + var_02 * 12,0.1);
|
||||
wait 0.1;
|
||||
}
|
||||
|
||||
if(isplayer(var_01))
|
||||
{
|
||||
self endon("saw_enemy");
|
||||
var_03 = var_01 geteye();
|
||||
var_02 = vectortoangles(var_03 - param_00.origin);
|
||||
var_02 = anglestoforward(var_02);
|
||||
var_04 = 150;
|
||||
var_05 = distance(param_00.origin,self.last_enemy_sighting_position) / var_04;
|
||||
if(var_05 > 0)
|
||||
{
|
||||
param_00 moveto(self.last_enemy_sighting_position,var_05);
|
||||
wait var_05;
|
||||
}
|
||||
|
||||
var_06 = param_00.origin + var_02 * 180;
|
||||
var_07 = get_suppress_point(self geteye(),param_00.origin,var_06);
|
||||
if(!isdefined(var_07))
|
||||
{
|
||||
var_07 = param_00.origin;
|
||||
}
|
||||
|
||||
param_00 moveto(param_00.origin + var_02 * 80 + (0,0,randomfloatrange(15,50) * -1),3,1,1);
|
||||
wait 3.5;
|
||||
param_00 moveto(var_07 + var_02 * -20,3,1,1);
|
||||
}
|
||||
|
||||
wait randomfloatrange(2.5,4);
|
||||
stop_firing();
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
set_firing(param_00)
|
||||
{
|
||||
if(param_00)
|
||||
{
|
||||
self.can_fire_turret = 1;
|
||||
if(self.wants_to_fire)
|
||||
{
|
||||
self.turret notify("startfiring");
|
||||
return;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
self.can_fire_turret = 0;
|
||||
self.turret notify("stopfiring");
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
stop_firing()
|
||||
{
|
||||
self.wants_to_fire = 0;
|
||||
self.turret notify("stopfiring");
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
start_firing()
|
||||
{
|
||||
self.wants_to_fire = 1;
|
||||
if(self.can_fire_turret)
|
||||
{
|
||||
self.turret notify("startfiring");
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
create_mg_team()
|
||||
{
|
||||
if(isdefined(level.mg_gunner_team))
|
||||
{
|
||||
level.mg_gunner_team[level.mg_gunner_team.size] = self;
|
||||
return;
|
||||
}
|
||||
|
||||
level.mg_gunner_team = [];
|
||||
level.mg_gunner_team[level.mg_gunner_team.size] = self;
|
||||
waittillframeend;
|
||||
var_00 = spawnstruct();
|
||||
common_scripts\utility::array_thread(level.mg_gunner_team,::mg_gunner_death_notify,var_00);
|
||||
var_01 = level.mg_gunner_team;
|
||||
level.mg_gunner_team = undefined;
|
||||
var_00 waittill("gunner_died");
|
||||
for(var_02 = 0;var_02 < var_01.size;var_02++)
|
||||
{
|
||||
if(!isalive(var_01[var_02]))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_01[var_02] notify("stop_using_built_in_burst_fire");
|
||||
var_01[var_02] thread solo_fires();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
mg_gunner_death_notify(param_00)
|
||||
{
|
||||
self waittill("death");
|
||||
param_00 notify("gunner_died");
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
mgteam_take_turns_firing(param_00)
|
||||
{
|
||||
wait 1;
|
||||
level notify("new_mg_firing_team" + param_00[0].script_noteworthy);
|
||||
level endon("new_mg_firing_team" + param_00[0].script_noteworthy);
|
||||
for(;;)
|
||||
{
|
||||
dual_firing(param_00);
|
||||
solo_firing(param_00);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
solo_firing(param_00)
|
||||
{
|
||||
var_01 = undefined;
|
||||
for(var_02 = 0;var_02 < param_00.size;var_02++)
|
||||
{
|
||||
if(!isalive(param_00[var_02]))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_01 = param_00[var_02];
|
||||
break;
|
||||
}
|
||||
|
||||
if(!isdefined(var_01))
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
solo_fires()
|
||||
{
|
||||
self endon("death");
|
||||
for(;;)
|
||||
{
|
||||
self.turret startfiring();
|
||||
wait randomfloatrange(0.3,0.7);
|
||||
self.turret stopfiring();
|
||||
wait randomfloatrange(0.1,1.1);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
dual_firing(param_00)
|
||||
{
|
||||
for(var_01 = 0;var_01 < param_00.size;var_01++)
|
||||
{
|
||||
param_00[var_01] endon("death");
|
||||
}
|
||||
|
||||
var_02 = 0;
|
||||
var_03 = 1;
|
||||
for(;;)
|
||||
{
|
||||
if(isalive(param_00[var_02]))
|
||||
{
|
||||
param_00[var_02] set_firing(1);
|
||||
}
|
||||
|
||||
if(isalive(param_00[var_03]))
|
||||
{
|
||||
param_00[var_03] set_firing(0);
|
||||
}
|
||||
|
||||
var_04 = var_02;
|
||||
var_02 = var_03;
|
||||
var_03 = var_04;
|
||||
wait randomfloatrange(2.3,3.5);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
spotted_an_enemy(param_00,param_01)
|
||||
{
|
||||
start_firing();
|
||||
self endon("death");
|
||||
self endon("new_enemy");
|
||||
param_01 endon("death");
|
||||
while(self cansee(param_01))
|
||||
{
|
||||
var_02 = vectortoangles(param_01 geteye() - param_00.origin);
|
||||
var_02 = anglestoforward(var_02);
|
||||
param_00 moveto(param_00.origin + var_02 * 10,0.2);
|
||||
wait 0.2;
|
||||
}
|
||||
|
||||
var_02 = vectortoangles(param_01 geteye() - param_00.origin);
|
||||
var_02 = anglestoforward(var_02);
|
||||
var_03 = 150;
|
||||
var_04 = distance(param_00.origin,self.last_enemy_sighting_position) / var_03;
|
||||
param_00 moveto(self.last_enemy_sighting_position,var_04);
|
||||
wait var_04;
|
||||
var_05 = param_00.origin;
|
||||
param_00 moveto(param_00.origin + var_02 * 80 + (0,0,-25),3,1,1);
|
||||
wait 3.5;
|
||||
param_00 moveto(var_05 + var_02 * -20,3,1,1);
|
||||
wait 1;
|
||||
stop_firing();
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
get_suppress_point(param_00,param_01,param_02)
|
||||
{
|
||||
var_03 = distance(param_01,param_02) * 0.05;
|
||||
if(var_03 < 5)
|
||||
{
|
||||
var_03 = 5;
|
||||
}
|
||||
|
||||
if(var_03 > 20)
|
||||
{
|
||||
var_03 = 20;
|
||||
}
|
||||
|
||||
var_04 = param_02 - param_01;
|
||||
var_04 = (var_04[0] / var_03,var_04[1] / var_03,var_04[2] / var_03);
|
||||
var_05 = (0,0,0);
|
||||
var_06 = undefined;
|
||||
for(var_07 = 0;var_07 < var_03 + 2;var_07++)
|
||||
{
|
||||
var_08 = bullettrace(param_00,param_01 + var_05,0,undefined);
|
||||
if(var_08["fraction"] < 1)
|
||||
{
|
||||
var_06 = var_08["position"];
|
||||
break;
|
||||
}
|
||||
|
||||
var_05 = var_05 + var_04;
|
||||
}
|
||||
|
||||
return var_06;
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
record_enemy_sightings()
|
||||
{
|
||||
self endon("death");
|
||||
self endon("end_mg_behavior");
|
||||
self.current_enemy = undefined;
|
||||
for(;;)
|
||||
{
|
||||
record_sighting();
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 16
|
||||
record_sighting()
|
||||
{
|
||||
if(!isalive(self.enemy))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(!self cansee(self.enemy))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self.last_enemy_sighting_position = self.enemy geteye();
|
||||
self notify("saw_enemy");
|
||||
if(!isalive(self.current_enemy) || self.current_enemy != self.enemy)
|
||||
{
|
||||
self.current_enemy = self.enemy;
|
||||
self notify("new_enemy");
|
||||
}
|
||||
}
|
2022
MW3/PC/SP/maps/_mgturret.gsc
Normal file
2022
MW3/PC/SP/maps/_mgturret.gsc
Normal file
File diff suppressed because it is too large
Load Diff
320
MW3/PC/SP/maps/_missions.gsc
Normal file
320
MW3/PC/SP/maps/_missions.gsc
Normal file
@ -0,0 +1,320 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_missions.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 17
|
||||
* Decompile Time: 258 ms
|
||||
* Timestamp: 10/27/2023 2:19:15 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
init()
|
||||
{
|
||||
foreach(var_01 in level.players)
|
||||
{
|
||||
var_01 initnotifymessage();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
monitor_challenges()
|
||||
{
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
challenge_targetval(param_00,param_01,param_02)
|
||||
{
|
||||
var_03 = tablelookup(param_00,0,param_01,6 + param_02 - 1 * 2);
|
||||
return int(var_03);
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
challenge_rewardval(param_00,param_01,param_02)
|
||||
{
|
||||
var_03 = tablelookup(param_00,0,param_01,7 + param_02 - 1 * 2);
|
||||
return int(var_03);
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
getchallengestatus(param_00)
|
||||
{
|
||||
if(isdefined(self.challengedata[param_00]))
|
||||
{
|
||||
return self.challengedata[param_00];
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
ch_getprogress(param_00)
|
||||
{
|
||||
return self getplayerdata("challengeProgress",param_00);
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
ch_getstate(param_00)
|
||||
{
|
||||
return self getplayerdata("challengeState",param_00);
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
ch_setprogress(param_00,param_01)
|
||||
{
|
||||
return self setplayerdata("challengeProgress",param_00,param_01);
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
ch_setstate(param_00,param_01)
|
||||
{
|
||||
return self setplayerdata("challengeState",param_00,param_01);
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
ch_gettarget(param_00,param_01)
|
||||
{
|
||||
return int(tablelookup("sp/allChallengesTable.csv",0,param_00,6 + param_01 - 1 * 2));
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
buildchallengetableinfo(param_00,param_01)
|
||||
{
|
||||
var_02 = 0;
|
||||
var_03 = tablelookupbyrow(param_00,0,0);
|
||||
for(var_04 = 1;var_03 != "";var_04++)
|
||||
{
|
||||
level.challengeinfo[var_03] = [];
|
||||
level.challengeinfo[var_03]["targetval"] = [];
|
||||
level.challengeinfo[var_03]["reward"] = [];
|
||||
level.challengeinfo[var_03]["type"] = param_01;
|
||||
for(var_05 = 1;var_05 < 11;var_05++)
|
||||
{
|
||||
var_06 = challenge_targetval(param_00,var_03,var_05);
|
||||
var_07 = challenge_rewardval(param_00,var_03,var_05);
|
||||
if(var_06 == 0)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
level.challengeinfo[var_03]["targetval"][var_05] = var_06;
|
||||
level.challengeinfo[var_03]["reward"][var_05] = var_07;
|
||||
var_02 = var_02 + var_07;
|
||||
}
|
||||
|
||||
var_03 = tablelookupbyrow(param_00,var_04,0);
|
||||
}
|
||||
|
||||
return int(var_02);
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
buildchallengeinfo()
|
||||
{
|
||||
level.challengeinfo = [];
|
||||
var_00 = 0;
|
||||
var_00 = var_00 + buildchallengetableinfo("sp/allchallengesTable.csv",0);
|
||||
var_01 = tablelookupbyrow("sp/challengeTable.csv",0,4);
|
||||
for(var_02 = 1;var_01 != "";var_02++)
|
||||
{
|
||||
var_03 = tablelookupbyrow(var_01,0,0);
|
||||
for(var_04 = 1;var_03 != "";var_04++)
|
||||
{
|
||||
var_05 = tablelookup(var_01,0,var_03,1);
|
||||
if(var_05 != "")
|
||||
{
|
||||
level.challengeinfo[var_03]["requirement"] = var_05;
|
||||
}
|
||||
|
||||
var_03 = tablelookupbyrow(var_01,var_04,0);
|
||||
}
|
||||
|
||||
var_01 = tablelookupbyrow("sp/challengeTable.csv",var_02,4);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
challengesplashnotify(param_00)
|
||||
{
|
||||
self endon("disconnect");
|
||||
waittillframeend;
|
||||
wait 0.05;
|
||||
var_01 = ch_getstate(param_00) - 1;
|
||||
var_02 = ch_gettarget(param_00,var_01);
|
||||
if(var_02 == 0)
|
||||
{
|
||||
var_02 = 1;
|
||||
}
|
||||
|
||||
var_03 = spawnstruct();
|
||||
var_03.type = "challenge";
|
||||
var_03.optionalnumber = var_02;
|
||||
var_03.name = param_00;
|
||||
var_03.sound = tablelookup("sp/splashTable.csv",0,var_03.name,9);
|
||||
var_03.slot = 0;
|
||||
thread maps\_rank::actionnotify(var_03);
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
updatechallenges()
|
||||
{
|
||||
self.challengedata = [];
|
||||
wait 0.05;
|
||||
foreach(var_04, var_01 in level.challengeinfo)
|
||||
{
|
||||
self.challengedata[var_04] = 0;
|
||||
if(!self isitemunlocked(var_04))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(isdefined(var_01["requirement"]) && !self isitemunlocked(var_01["requirement"]))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_02 = 0;
|
||||
var_03 = var_04;
|
||||
var_02 = ch_getstate(var_04);
|
||||
if(var_02 == 0)
|
||||
{
|
||||
ch_setstate(var_04,1);
|
||||
var_02 = 1;
|
||||
}
|
||||
|
||||
self.challengedata[var_04] = var_02;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
giverankxpafterwait(param_00,param_01)
|
||||
{
|
||||
self endon("death");
|
||||
self endon("disconnect");
|
||||
wait 0.25;
|
||||
maps\_utility::givexp("challenge",level.challengeinfo[param_00]["reward"][param_01]);
|
||||
}
|
||||
|
||||
//Function Number: 16
|
||||
processchallenge(param_00,param_01,param_02)
|
||||
{
|
||||
if(!isdefined(param_01))
|
||||
{
|
||||
param_01 = 1;
|
||||
}
|
||||
|
||||
var_03 = getchallengestatus(param_00);
|
||||
if(var_03 == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(var_03 > level.challengeinfo[param_00]["targetval"].size)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var_04 = ch_getprogress(param_00);
|
||||
if(isdefined(param_02) && param_02)
|
||||
{
|
||||
var_05 = param_01;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_05 = var_05 + param_02;
|
||||
}
|
||||
|
||||
var_06 = level.challengeinfo[param_00]["targetval"][var_03];
|
||||
if(var_05 >= var_06)
|
||||
{
|
||||
var_07 = 1;
|
||||
var_05 = var_06;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_07 = 0;
|
||||
}
|
||||
|
||||
if(var_04 < var_05)
|
||||
{
|
||||
ch_setprogress(param_00,var_05);
|
||||
}
|
||||
|
||||
if(var_07)
|
||||
{
|
||||
thread giverankxpafterwait(param_00,var_03);
|
||||
var_03++;
|
||||
ch_setstate(param_00,var_03);
|
||||
self.challengedata[param_00] = var_03;
|
||||
thread challengesplashnotify(param_00);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 17
|
||||
initnotifymessage()
|
||||
{
|
||||
if(maps\_utility::is_coop())
|
||||
{
|
||||
var_00 = 2.5;
|
||||
var_01 = 1.75;
|
||||
var_02 = 24;
|
||||
var_03 = "objective";
|
||||
var_04 = "TOP";
|
||||
var_05 = "BOTTOM";
|
||||
var_06 = 30;
|
||||
var_07 = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_00 = 2.5;
|
||||
var_01 = 1.75;
|
||||
var_02 = 30;
|
||||
var_03 = "objective";
|
||||
var_04 = "TOP";
|
||||
var_05 = "BOTTOM";
|
||||
var_06 = 30;
|
||||
var_07 = 0;
|
||||
}
|
||||
|
||||
self.notifytitle = maps\_hud_util::createclientfontstring(var_03,var_00);
|
||||
self.notifytitle maps\_hud_util::setpoint(var_04,undefined,var_07,var_06);
|
||||
self.notifytitle.glowcolor = (0.2,0.3,0.7);
|
||||
self.notifytitle.glowalpha = 1;
|
||||
self.notifytitle.hidewheninmenu = 1;
|
||||
self.notifytitle.archived = 0;
|
||||
self.notifytitle.alpha = 0;
|
||||
self.notifytext = maps\_hud_util::createclientfontstring(var_03,var_01);
|
||||
self.notifytext maps\_hud_util::setparent(self.notifytitle);
|
||||
self.notifytext maps\_hud_util::setpoint(var_04,var_05,0,0);
|
||||
self.notifytext.glowcolor = (0.2,0.3,0.7);
|
||||
self.notifytext.glowalpha = 1;
|
||||
self.notifytext.hidewheninmenu = 1;
|
||||
self.notifytext.archived = 0;
|
||||
self.notifytext.alpha = 0;
|
||||
self.notifytext2 = maps\_hud_util::createclientfontstring(var_03,var_01);
|
||||
self.notifytext2 maps\_hud_util::setparent(self.notifytitle);
|
||||
self.notifytext2 maps\_hud_util::setpoint(var_04,var_05,0,0);
|
||||
self.notifytext2.glowcolor = (0.2,0.3,0.7);
|
||||
self.notifytext2.glowalpha = 1;
|
||||
self.notifytext2.hidewheninmenu = 1;
|
||||
self.notifytext2.archived = 0;
|
||||
self.notifytext2.alpha = 0;
|
||||
self.notifyicon = maps\_hud_util::createclienticon("white",var_02,var_02);
|
||||
self.notifyicon maps\_hud_util::setparent(self.notifytext2);
|
||||
self.notifyicon maps\_hud_util::setpoint(var_04,var_05,0,0);
|
||||
self.notifyicon.hidewheninmenu = 1;
|
||||
self.notifyicon.archived = 0;
|
||||
self.notifyicon.alpha = 0;
|
||||
self.doingnotify = 0;
|
||||
self.notifyqueue = [];
|
||||
self.doingsplash = [];
|
||||
self.doingsplash[0] = undefined;
|
||||
self.doingsplash[1] = undefined;
|
||||
self.doingsplash[2] = undefined;
|
||||
self.doingsplash[3] = undefined;
|
||||
self.splashqueue = [];
|
||||
self.splashqueue[0] = [];
|
||||
self.splashqueue[1] = [];
|
||||
self.splashqueue[2] = [];
|
||||
self.splashqueue[3] = [];
|
||||
}
|
1645
MW3/PC/SP/maps/_mortar.gsc
Normal file
1645
MW3/PC/SP/maps/_mortar.gsc
Normal file
File diff suppressed because it is too large
Load Diff
831
MW3/PC/SP/maps/_names.gsc
Normal file
831
MW3/PC/SP/maps/_names.gsc
Normal file
@ -0,0 +1,831 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_names.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 14
|
||||
* Decompile Time: 226 ms
|
||||
* Timestamp: 10/27/2023 2:22:26 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
setup_names()
|
||||
{
|
||||
if(isdefined(level.names))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var_00 = [];
|
||||
var_01 = 0;
|
||||
while(var_01 < var_7B.size)
|
||||
{
|
||||
level.names[var_7B[var_01]] = [];
|
||||
var_01++ = var_7B[var_7B.size];
|
||||
}
|
||||
|
||||
add_name("american","Abbott");
|
||||
add_name("american","Abeles");
|
||||
add_name("american","Ackrich");
|
||||
add_name("american","Alvarez");
|
||||
add_name("american","Andaya");
|
||||
add_name("american","Andrew");
|
||||
add_name("american","Arcovitch");
|
||||
add_name("american","Arem");
|
||||
add_name("american","Arya");
|
||||
add_name("american","Audick");
|
||||
add_name("american","Aye");
|
||||
add_name("american","Babichenko");
|
||||
add_name("american","Baker");
|
||||
add_name("american","Bartolucci");
|
||||
add_name("american","Beahm");
|
||||
add_name("american","Bedi");
|
||||
add_name("american","Bein");
|
||||
add_name("american","Bell");
|
||||
add_name("american","Benitez");
|
||||
add_name("american","Berry");
|
||||
add_name("american","Blizard");
|
||||
add_name("american","Blumel");
|
||||
add_name("american","Boon");
|
||||
add_name("american","Bowling");
|
||||
add_name("american","Boyd");
|
||||
add_name("american","Bracamontes");
|
||||
add_name("american","Brooks");
|
||||
add_name("american","Brown");
|
||||
add_name("american","Buchanan");
|
||||
add_name("american","Buckles");
|
||||
add_name("american","Capen");
|
||||
add_name("american","Casey");
|
||||
add_name("american","Cecot");
|
||||
add_name("american","Centkowski");
|
||||
add_name("american","Chan");
|
||||
add_name("american","Chang");
|
||||
add_name("american","Chen");
|
||||
add_name("american","Chew");
|
||||
add_name("american","Chu");
|
||||
add_name("american","Chyo");
|
||||
add_name("american","Cinquegrano");
|
||||
add_name("american","Clark");
|
||||
add_name("american","Condrey");
|
||||
add_name("american","Conteras");
|
||||
add_name("american","Cournoyer");
|
||||
add_name("american","Curley");
|
||||
add_name("american","Daley");
|
||||
add_name("american","David");
|
||||
add_name("american","Davis");
|
||||
add_name("american","DeBolt");
|
||||
add_name("american","DeMartini");
|
||||
add_name("american","Denny");
|
||||
add_name("american","Deonarine");
|
||||
add_name("american","DeRidder");
|
||||
add_name("american","Desmarais");
|
||||
add_name("american","DiMeo");
|
||||
add_name("american","Dobbie");
|
||||
add_name("american","Dohr");
|
||||
add_name("american","Dolan");
|
||||
add_name("american","Drinkward");
|
||||
add_name("american","Dye");
|
||||
add_name("american","Eady");
|
||||
add_name("american","Evans");
|
||||
add_name("american","Feinberg");
|
||||
add_name("american","Felker");
|
||||
add_name("american","Field");
|
||||
add_name("american","Fong");
|
||||
add_name("american","Ganus");
|
||||
add_name("american","Gavazza");
|
||||
add_name("american","Gavrisheff");
|
||||
add_name("american","Gevorkian");
|
||||
add_name("american","Giesler");
|
||||
add_name("american","Gil");
|
||||
add_name("american","Glasco");
|
||||
add_name("american","Goldsworthy");
|
||||
add_name("american","Griffith");
|
||||
add_name("american","Gu");
|
||||
add_name("american","Guaman");
|
||||
add_name("american","Gunasingam");
|
||||
add_name("american","Hall");
|
||||
add_name("american","Halon");
|
||||
add_name("american","Harmer");
|
||||
add_name("american","Harries");
|
||||
add_name("american","Harris");
|
||||
add_name("american","Haugen");
|
||||
add_name("american","Haworth");
|
||||
add_name("american","Hazelroth");
|
||||
add_name("american","Heath");
|
||||
add_name("american","Hirsh");
|
||||
add_name("american","Holmes");
|
||||
add_name("american","Hook");
|
||||
add_name("american","Hudson");
|
||||
add_name("american","Imai");
|
||||
add_name("american","Jeffries");
|
||||
add_name("american","Johnson");
|
||||
add_name("american","Katz");
|
||||
add_name("american","Keiser");
|
||||
add_name("american","Kelvin");
|
||||
add_name("american","Kinney");
|
||||
add_name("american","Kriegler");
|
||||
add_name("american","Kuhn");
|
||||
add_name("american","Kuo");
|
||||
add_name("american","Kwak");
|
||||
add_name("american","Lai");
|
||||
add_name("american","Lam");
|
||||
add_name("american","Lamperski");
|
||||
add_name("american","Lane");
|
||||
add_name("american","Leal");
|
||||
add_name("american","Lee");
|
||||
add_name("american","Liang");
|
||||
add_name("american","Lie");
|
||||
add_name("american","Lin");
|
||||
add_name("american","Lodato");
|
||||
add_name("american","Longland");
|
||||
add_name("american","Lopez");
|
||||
add_name("american","Lor");
|
||||
add_name("american","Louie");
|
||||
add_name("american","Luo");
|
||||
add_name("american","Luyties");
|
||||
add_name("american","Madrid");
|
||||
add_name("american","Mai");
|
||||
add_name("american","McDonald");
|
||||
add_name("american","McEntyre");
|
||||
add_name("american","McGrath");
|
||||
add_name("american","McGree");
|
||||
add_name("american","McLeran");
|
||||
add_name("american","Mermelstein");
|
||||
add_name("american","Miller");
|
||||
add_name("american","Munson");
|
||||
add_name("american","Myers");
|
||||
add_name("american","Naas");
|
||||
add_name("american","Nacu");
|
||||
add_name("american","Nahashon");
|
||||
add_name("american","Neel");
|
||||
add_name("american","O\'Connor");
|
||||
add_name("american","O\'Hara");
|
||||
add_name("american","Onur");
|
||||
add_name("american","Pacheco");
|
||||
add_name("american","Pavey");
|
||||
add_name("american","Pavlich");
|
||||
add_name("american","Peacher");
|
||||
add_name("american","Peas");
|
||||
add_name("american","Pelayo");
|
||||
add_name("american","Pennya");
|
||||
add_name("american","Pierce");
|
||||
add_name("american","Pineda");
|
||||
add_name("american","Pitts");
|
||||
add_name("american","Porter");
|
||||
add_name("american","Proudfoot");
|
||||
add_name("american","Reisdorf");
|
||||
add_name("american","Robbins");
|
||||
add_name("american","Rowell");
|
||||
add_name("american","Rubin");
|
||||
add_name("american","Ruiz");
|
||||
add_name("american","Ryu");
|
||||
add_name("american","Sahas");
|
||||
add_name("american","Salud");
|
||||
add_name("american","Sanborn");
|
||||
add_name("american","Sandler");
|
||||
add_name("american","Sarkisyan");
|
||||
add_name("american","Schmill");
|
||||
add_name("american","Schofield");
|
||||
add_name("american","Shande");
|
||||
add_name("american","Sharp");
|
||||
add_name("american","Shellikeri");
|
||||
add_name("american","Shepherd");
|
||||
add_name("american","Sheu");
|
||||
add_name("american","Sidey");
|
||||
add_name("american","Silvers");
|
||||
add_name("american","Simas");
|
||||
add_name("american","Smith");
|
||||
add_name("american","Soucy");
|
||||
add_name("american","Sperry");
|
||||
add_name("american","Staples");
|
||||
add_name("american","Stone");
|
||||
add_name("american","Stoughton");
|
||||
add_name("american","Strickland");
|
||||
add_name("american","Suarez");
|
||||
add_name("american","SullivanLee");
|
||||
add_name("american","Swenson");
|
||||
add_name("american","T");
|
||||
add_name("american","Taehoon");
|
||||
add_name("american","Tang");
|
||||
add_name("american","Turner");
|
||||
add_name("american","Veca");
|
||||
add_name("american","Vitalone");
|
||||
add_name("american","Volker");
|
||||
add_name("american","Vuong");
|
||||
add_name("american","Wapner");
|
||||
add_name("american","Wasilczyk");
|
||||
add_name("american","Webb");
|
||||
add_name("american","West");
|
||||
add_name("american","Whelpley");
|
||||
add_name("american","Whitney");
|
||||
add_name("american","Whitten");
|
||||
add_name("american","Wrede");
|
||||
add_name("american","Wright");
|
||||
add_name("american","Yang");
|
||||
add_name("american","Zaiya");
|
||||
add_name("american","Zaring");
|
||||
add_name("american","Zipkin");
|
||||
add_name("seal","Angel");
|
||||
add_name("seal","Apex");
|
||||
add_name("seal","Bearcat");
|
||||
add_name("seal","Bishop");
|
||||
add_name("seal","Boomer");
|
||||
add_name("seal","Boxer");
|
||||
add_name("seal","Canine");
|
||||
add_name("seal","Chemist");
|
||||
add_name("seal","Chemo");
|
||||
add_name("seal","Cherub");
|
||||
add_name("seal","Chino");
|
||||
add_name("seal","Coffin");
|
||||
add_name("seal","Coma");
|
||||
add_name("seal","Cyclops");
|
||||
add_name("seal","Cypher");
|
||||
add_name("seal","Doc");
|
||||
add_name("seal","Druid");
|
||||
add_name("seal","Exxon");
|
||||
add_name("seal","Gator");
|
||||
add_name("seal","Hannibal");
|
||||
add_name("seal","Hazard");
|
||||
add_name("seal","Hitman");
|
||||
add_name("seal","Jayhawk");
|
||||
add_name("seal","Jester");
|
||||
add_name("seal","Justice");
|
||||
add_name("seal","Klepto");
|
||||
add_name("seal","Kojak");
|
||||
add_name("seal","Langley");
|
||||
add_name("seal","Neptune");
|
||||
add_name("seal","Mamba");
|
||||
add_name("seal","Midnight");
|
||||
add_name("seal","Neon");
|
||||
add_name("seal","Nomad");
|
||||
add_name("seal","Ogre");
|
||||
add_name("seal","Ozone");
|
||||
add_name("seal","Patron");
|
||||
add_name("seal","Pharaoh");
|
||||
add_name("seal","Pieces");
|
||||
add_name("seal","Poet");
|
||||
add_name("seal","Preacher");
|
||||
add_name("seal","Reaper");
|
||||
add_name("seal","Redcell");
|
||||
add_name("seal","Roadie");
|
||||
add_name("seal","Robot");
|
||||
add_name("seal","Rocket");
|
||||
add_name("seal","Rooster");
|
||||
add_name("seal","Sparrow");
|
||||
add_name("seal","Taco");
|
||||
add_name("seal","Thumper");
|
||||
add_name("seal","Trojan");
|
||||
add_name("seal","Twister");
|
||||
add_name("seal","Undertone");
|
||||
add_name("seal","Utah");
|
||||
add_name("seal","Whiskey");
|
||||
add_name("seal","Worm");
|
||||
add_name("seal","Yankee");
|
||||
add_name("seal","Zero");
|
||||
copy_names("taskforce","seal");
|
||||
copy_names("delta","seal");
|
||||
add_name("secretservice","Smith");
|
||||
add_name("secretservice","Jones");
|
||||
add_name("secretservice","Jackson");
|
||||
add_name("secretservice","Johnson");
|
||||
add_name("secretservice","Thompson");
|
||||
add_name("secretservice","Ash");
|
||||
add_name("secretservice","Bird");
|
||||
add_name("secretservice","Finn");
|
||||
add_name("secretservice","Fine");
|
||||
add_name("secretservice","Brown");
|
||||
add_name("secretservice","White");
|
||||
add_name("secretservice","Gray");
|
||||
add_name("secretservice","Black");
|
||||
add_name("secretservice","Wylie");
|
||||
add_name("secretservice","Rosenhaus");
|
||||
add_name("secretservice","Boras");
|
||||
add_name("secretservice","McKinnis");
|
||||
add_name("secretservice","Duffy");
|
||||
add_name("secretservice","Falk");
|
||||
add_name("secretservice","Tellem");
|
||||
add_name("secretservice","Goodwin");
|
||||
add_name("secretservice","Condon");
|
||||
add_name("secretservice","Parker");
|
||||
add_name("secretservice","McGuire");
|
||||
add_name("secretservice","Steinberg");
|
||||
add_name("british","Abbot");
|
||||
add_name("british","Adams");
|
||||
add_name("british","Bartlett");
|
||||
add_name("british","Boyd");
|
||||
add_name("british","Boyle");
|
||||
add_name("british","Bremner");
|
||||
add_name("british","Carlyle");
|
||||
add_name("british","Carver");
|
||||
add_name("british","Cheek");
|
||||
add_name("british","Clarke");
|
||||
add_name("british","Collins");
|
||||
add_name("british","Compton");
|
||||
add_name("british","Connolly");
|
||||
add_name("british","Cook");
|
||||
add_name("british","Dowd");
|
||||
add_name("british","Field");
|
||||
add_name("british","Fleming");
|
||||
add_name("british","Fletcher");
|
||||
add_name("british","Flynn");
|
||||
add_name("british","Grant");
|
||||
add_name("british","Greaves");
|
||||
add_name("british","Harris");
|
||||
add_name("british","Harrison");
|
||||
add_name("british","Heath");
|
||||
add_name("british","Henderson");
|
||||
add_name("british","Hopkins");
|
||||
add_name("british","Hoyt");
|
||||
add_name("british","Kent");
|
||||
add_name("british","Lewis");
|
||||
add_name("british","Lipton");
|
||||
add_name("british","Macdonald");
|
||||
add_name("british","Maxwell");
|
||||
add_name("british","McQuarrie");
|
||||
add_name("british","Miller");
|
||||
add_name("british","Mitchell");
|
||||
add_name("british","Moore");
|
||||
add_name("british","Murphy");
|
||||
add_name("british","Murray");
|
||||
add_name("british","Pearce");
|
||||
add_name("british","Plumber");
|
||||
add_name("british","Pritchard");
|
||||
add_name("british","Rankin");
|
||||
add_name("british","Reed");
|
||||
add_name("british","Ritchie");
|
||||
add_name("british","Ross");
|
||||
add_name("british","Roth");
|
||||
add_name("british","Smith");
|
||||
add_name("british","Stevenson");
|
||||
add_name("british","Stuart");
|
||||
add_name("british","Sullivan");
|
||||
add_name("british","Thompson");
|
||||
add_name("british","Veale");
|
||||
add_name("british","Wallace");
|
||||
add_name("british","Wells");
|
||||
add_name("british","Welsh");
|
||||
add_name("russian","Sasha Ivanov");
|
||||
add_name("russian","Aleksei Vyshinskiy");
|
||||
add_name("russian","Boris Ryzhkov");
|
||||
add_name("russian","Dima Tikhonov");
|
||||
add_name("russian","Oleg Kosygin");
|
||||
add_name("russian","Pyotr Bulganin");
|
||||
add_name("russian","Petya Malenkov");
|
||||
add_name("russian","Alyosha Tarkovsky");
|
||||
add_name("russian","Sergei Grombyo");
|
||||
add_name("russian","Viktor Kuznetsov");
|
||||
add_name("russian","Misha Podgorniy");
|
||||
add_name("russian","Borya Mikoyan");
|
||||
add_name("russian","Anatoly Voroshilov");
|
||||
add_name("russian","Kolya Shvernik");
|
||||
add_name("russian","Nikolai Kalinin");
|
||||
add_name("russian","Vladimir Brezhnev");
|
||||
add_name("russian","Pavel Chernenko");
|
||||
add_name("russian","Volodya Andropov");
|
||||
add_name("russian","Yuri Nikitin");
|
||||
add_name("russian","Dmitri Petrenko");
|
||||
add_name("russian","Vanya Gerasimov");
|
||||
add_name("russian","Mikhail Zhuravlev");
|
||||
add_name("russian","Ivan Lukin");
|
||||
add_name("russian","Kostya Golubev");
|
||||
add_name("russian","Konstantin Lebedev");
|
||||
add_name("russian","Aleksandr Vasilev");
|
||||
add_name("russian","Yakov Glushenko");
|
||||
add_name("russian","Sasha Semenov");
|
||||
add_name("russian","Aleksei Ulyanov");
|
||||
add_name("russian","Boris Yefremov");
|
||||
add_name("russian","Dima Chernyshenko");
|
||||
add_name("russian","Oleg Stepanoshvili");
|
||||
add_name("russian","Pyotr Demchenko");
|
||||
add_name("russian","Petya Avagimov");
|
||||
add_name("russian","Alyosha Murzaev");
|
||||
add_name("russian","Sergei Shkuratov");
|
||||
add_name("russian","Viktor Yakimenko");
|
||||
add_name("russian","Misha Masijashvili");
|
||||
add_name("russian","Borya Shapovalov");
|
||||
add_name("russian","Anatoly Ivashenko");
|
||||
add_name("russian","Kolya Dovzhenko");
|
||||
add_name("russian","Nikolai Turdyev");
|
||||
add_name("russian","Vladimir Sabgaida");
|
||||
add_name("russian","Pavel Svirin");
|
||||
add_name("russian","Volodya Sarayev");
|
||||
add_name("russian","Yuri Kiselev");
|
||||
add_name("russian","Dmitri Bondarenko");
|
||||
add_name("russian","Vanya Chernogolov");
|
||||
add_name("russian","Mikhail Voronov");
|
||||
add_name("russian","Ivan Afanasyev");
|
||||
add_name("russian","Kostya Gridin");
|
||||
add_name("russian","Konstantin Petrov");
|
||||
add_name("russian","Aleksandr Rykov");
|
||||
add_name("russian","Yakov Shvedov");
|
||||
add_name("arab","Abdulaziz");
|
||||
add_name("arab","Abdullah");
|
||||
add_name("arab","Ali");
|
||||
add_name("arab","Amin");
|
||||
add_name("arab","Bassam");
|
||||
add_name("arab","Fahd");
|
||||
add_name("arab","Faris");
|
||||
add_name("arab","Fouad");
|
||||
add_name("arab","Habib");
|
||||
add_name("arab","Hakem");
|
||||
add_name("arab","Hassan");
|
||||
add_name("arab","Ibrahim");
|
||||
add_name("arab","Imad");
|
||||
add_name("arab","Jabbar");
|
||||
add_name("arab","Kareem");
|
||||
add_name("arab","Khalid");
|
||||
add_name("arab","Malik");
|
||||
add_name("arab","Muhammad");
|
||||
add_name("arab","Nasir");
|
||||
add_name("arab","Omar");
|
||||
add_name("arab","Rafiq");
|
||||
add_name("arab","Rami");
|
||||
add_name("arab","Said");
|
||||
add_name("arab","Salim");
|
||||
add_name("arab","Samir");
|
||||
add_name("arab","Talib");
|
||||
add_name("arab","Tariq");
|
||||
add_name("arab","Youssef");
|
||||
add_name("arab","Ziad");
|
||||
add_name("portuguese","Carlitos");
|
||||
add_name("portuguese","Antonio");
|
||||
add_name("portuguese","Gervasio");
|
||||
add_name("portuguese","Lois");
|
||||
add_name("portuguese","Xesus");
|
||||
add_name("shadowcompany","Lestat");
|
||||
add_name("shadowcompany","Nosferatu");
|
||||
add_name("shadowcompany","Lecter");
|
||||
add_name("multilingual","Kugelschreiber");
|
||||
add_name("multilingual","Flughafen");
|
||||
add_name("french","Astor");
|
||||
add_name("french","Beliveau");
|
||||
add_name("french","Chaloux");
|
||||
add_name("french","Leboeuf");
|
||||
add_name("french","Leblanc");
|
||||
add_name("french","Navarre");
|
||||
add_name("french","Perilloux");
|
||||
add_name("french","Philippe");
|
||||
add_name("french","Taillon");
|
||||
add_name("african","Sulaiman");
|
||||
add_name("african","Camara");
|
||||
add_name("african","Mustapha");
|
||||
add_name("african","Abubakarr");
|
||||
add_name("czech","Andrej");
|
||||
add_name("czech","Anton");
|
||||
add_name("czech","Antonín");
|
||||
add_name("czech","Arnost");
|
||||
add_name("czech","Augustín");
|
||||
add_name("czech","Bartolomej");
|
||||
add_name("czech","Beda");
|
||||
add_name("czech","Bedrich");
|
||||
add_name("czech","Benes");
|
||||
add_name("czech","Blaze");
|
||||
add_name("czech","Bohdan");
|
||||
add_name("czech","Bohuslav");
|
||||
add_name("czech","Bonifác");
|
||||
add_name("czech","Bozidar");
|
||||
add_name("czech","Branislav");
|
||||
add_name("czech","Cenek");
|
||||
add_name("czech","Ctibor");
|
||||
add_name("czech","Dalek");
|
||||
add_name("czech","Dalibor");
|
||||
add_name("czech","Damek");
|
||||
add_name("czech","Danek");
|
||||
add_name("czech","Dávid");
|
||||
add_name("czech","Dobromil");
|
||||
add_name("czech","Dominik");
|
||||
add_name("czech","Drahoslav");
|
||||
add_name("czech","Dusa");
|
||||
add_name("czech","Edvard");
|
||||
add_name("czech","Eliás");
|
||||
add_name("czech","Evzen");
|
||||
add_name("czech","Frantisek");
|
||||
add_name("czech","Gabriel");
|
||||
add_name("czech","Georg");
|
||||
add_name("czech","Holic");
|
||||
add_name("czech","Honza");
|
||||
add_name("czech","Ignác");
|
||||
add_name("czech","Imrich");
|
||||
add_name("czech","Ivan");
|
||||
add_name("czech","Jakub");
|
||||
add_name("czech","Jan");
|
||||
add_name("czech","Jarmil");
|
||||
add_name("czech","Jaroslav");
|
||||
add_name("czech","Jindrich");
|
||||
add_name("czech","Jirí");
|
||||
add_name("czech","Johan");
|
||||
add_name("czech","Josef");
|
||||
add_name("czech","Július");
|
||||
add_name("czech","Juraj");
|
||||
add_name("czech","Kamil");
|
||||
add_name("czech","Konstantin");
|
||||
add_name("czech","Kopecký");
|
||||
add_name("czech","Kornel");
|
||||
add_name("czech","Kristof");
|
||||
add_name("czech","Ladislav");
|
||||
add_name("czech","Leos");
|
||||
add_name("czech","Libor");
|
||||
add_name("czech","Ludvík");
|
||||
add_name("czech","Lukás");
|
||||
add_name("czech","Marek");
|
||||
add_name("czech","Matej");
|
||||
add_name("czech","Matous");
|
||||
add_name("czech","Matus");
|
||||
add_name("czech","Michal");
|
||||
add_name("czech","Mikulás");
|
||||
add_name("czech","Milan");
|
||||
add_name("czech","Milos");
|
||||
add_name("czech","Mirek");
|
||||
add_name("czech","Miroslav");
|
||||
add_name("czech","Nikola");
|
||||
add_name("czech","Oldrich");
|
||||
add_name("czech","Ondrej");
|
||||
add_name("czech","Otakar");
|
||||
add_name("czech","Patrik");
|
||||
add_name("czech","Pavel");
|
||||
add_name("czech","Petr");
|
||||
add_name("czech","Premysl");
|
||||
add_name("czech","Radek");
|
||||
add_name("czech","Radim");
|
||||
add_name("czech","Radoslav");
|
||||
add_name("czech","Rehor");
|
||||
add_name("czech_surnames","Blumel");
|
||||
add_name("czech_surnames","Maly");
|
||||
add_name("czech_surnames","Pospisil");
|
||||
add_name("czech_surnames","Soukup");
|
||||
add_name("czech_surnames","Blazek");
|
||||
add_name("czech_surnames","Dolezal");
|
||||
add_name("czech_surnames","Fiser");
|
||||
add_name("czech_surnames","Kadlec");
|
||||
add_name("czech_surnames","Kolar");
|
||||
add_name("czech_surnames","Kopecky");
|
||||
add_name("czech_surnames","Kriz");
|
||||
add_name("czech_surnames","Mares");
|
||||
add_name("czech_surnames","Masek");
|
||||
add_name("czech_surnames","Polak");
|
||||
add_name("czech_surnames","Sedlacek");
|
||||
add_name("czech_surnames","Stastny");
|
||||
add_name("czech_surnames","Tuma");
|
||||
add_name("czech_surnames","Vanek");
|
||||
add_name("czech_surnames","Blaha");
|
||||
add_name("czech_surnames","Dusek");
|
||||
add_name("czech_surnames","Hruska");
|
||||
add_name("czech_surnames","Janda");
|
||||
add_name("czech_surnames","Kohout");
|
||||
add_name("czech_surnames","Matousek");
|
||||
add_name("czech_surnames","Moravec");
|
||||
add_name("czech_surnames","Mueller");
|
||||
add_name("czech_surnames","Riha");
|
||||
add_name("czech_surnames","Strnad");
|
||||
add_name("czech_surnames","Sykora");
|
||||
add_name("czech_surnames","Simek");
|
||||
add_name("czech_surnames","Smid");
|
||||
add_name("czech_surnames","Stepanek");
|
||||
add_name("czech_surnames","Tichy");
|
||||
add_name("czech_surnames","Vacek");
|
||||
add_name("czech_surnames","Vlcek");
|
||||
copy_names("pmc","czech_surnames");
|
||||
init_script_friendnames();
|
||||
for(var_01 = 0;var_01 < var_7B.size;var_01++ = "pmc")
|
||||
{
|
||||
remove_script_friendnames_from_list(var_7B[var_01]);
|
||||
randomize_name_list(var_7B[var_01]);
|
||||
level.nameindex[var_7B[var_01]] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
copy_names(param_00,param_01)
|
||||
{
|
||||
level.names[param_00] = level.names[param_01];
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
add_name(param_00,param_01)
|
||||
{
|
||||
level.names[param_00][level.names[param_00].size] = param_01;
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
remove_name(param_00,param_01)
|
||||
{
|
||||
level.names[param_00] = common_scripts\utility::array_remove(level.names[param_00],param_01);
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
init_script_friendnames()
|
||||
{
|
||||
var_00 = [];
|
||||
var_01 = getspawnerarray();
|
||||
var_02 = getaiarray();
|
||||
foreach(var_04 in var_01)
|
||||
{
|
||||
if(isdefined(var_04.script_friendname) && var_04.script_friendname != "none")
|
||||
{
|
||||
var_05 = normalize_script_friendname(var_04.script_friendname);
|
||||
var_00[var_00.size] = var_05;
|
||||
}
|
||||
}
|
||||
|
||||
foreach(var_08 in var_02)
|
||||
{
|
||||
if(isdefined(var_08.script_friendname) && var_08.script_friendname != "none")
|
||||
{
|
||||
var_05 = normalize_script_friendname(var_08.script_friendname);
|
||||
var_00[var_00.size] = var_05;
|
||||
}
|
||||
}
|
||||
|
||||
level.script_friendnames = var_00;
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
normalize_script_friendname(param_00)
|
||||
{
|
||||
var_01 = strtok(param_00," ");
|
||||
if(var_01.size > 1)
|
||||
{
|
||||
param_00 = var_01[1];
|
||||
}
|
||||
|
||||
return param_00;
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
remove_script_friendnames_from_list(param_00)
|
||||
{
|
||||
foreach(var_02 in level.script_friendnames)
|
||||
{
|
||||
foreach(var_04 in level.names[param_00])
|
||||
{
|
||||
if(var_02 == var_04)
|
||||
{
|
||||
remove_name(param_00,var_04);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
randomize_name_list(param_00)
|
||||
{
|
||||
var_01 = level.names[param_00].size;
|
||||
for(var_02 = 0;var_02 < var_01;var_02++)
|
||||
{
|
||||
var_03 = randomint(var_01);
|
||||
var_04 = level.names[param_00][var_02];
|
||||
level.names[param_00][var_02] = level.names[param_00][var_03];
|
||||
level.names[param_00][var_03] = var_04;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
get_name(param_00)
|
||||
{
|
||||
if(isdefined(self.team) && self.team == "neutral")
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(!isdefined(param_00) && level.script == "credits")
|
||||
{
|
||||
self.airank = "private";
|
||||
return;
|
||||
}
|
||||
|
||||
if(isdefined(self.script_friendname))
|
||||
{
|
||||
if(self.script_friendname == "none")
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self.name = self.script_friendname;
|
||||
getrankfromname(self.name);
|
||||
self notify("set name and rank");
|
||||
return;
|
||||
}
|
||||
|
||||
get_name_for_nationality(self.voice);
|
||||
self notify("set name and rank");
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
get_name_for_nationality(param_00)
|
||||
{
|
||||
level.nameindex[param_00] = level.nameindex[param_00] + 1 % level.names[param_00].size;
|
||||
var_01 = level.names[param_00][level.nameindex[param_00]];
|
||||
var_02 = randomint(10);
|
||||
if(nationalityusessurnames(param_00))
|
||||
{
|
||||
var_03 = param_00 + "_surnames";
|
||||
level.nameindex[var_03] = level.nameindex[var_03] + 1 % level.names[var_03].size;
|
||||
var_01 = var_01 + " " + level.names[var_03][level.nameindex[var_03]];
|
||||
}
|
||||
|
||||
if(nationalityusescallsigns(param_00))
|
||||
{
|
||||
var_04 = var_01;
|
||||
self.airank = "private";
|
||||
}
|
||||
else if(var_01 == "secretservice")
|
||||
{
|
||||
var_04 = "Agent " + var_02;
|
||||
self.airank = "private";
|
||||
}
|
||||
else if(var_04 > 5)
|
||||
{
|
||||
var_04 = "Pvt. " + var_02;
|
||||
self.airank = "private";
|
||||
}
|
||||
else if(var_04 > 2)
|
||||
{
|
||||
var_04 = "Cpl. " + var_02;
|
||||
self.airank = "private";
|
||||
}
|
||||
else
|
||||
{
|
||||
var_04 = "Sgt. " + var_02;
|
||||
self.airank = "sergeant";
|
||||
}
|
||||
|
||||
if(isai(self) && self isbadguy())
|
||||
{
|
||||
self.ainame = var_04;
|
||||
return;
|
||||
}
|
||||
|
||||
self.name = var_04;
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
getrankfromname(param_00)
|
||||
{
|
||||
if(!isdefined(param_00))
|
||||
{
|
||||
self.airank = "private";
|
||||
}
|
||||
|
||||
var_01 = strtok(param_00," ");
|
||||
var_02 = var_01[0];
|
||||
switch(var_02)
|
||||
{
|
||||
case "Pvt.":
|
||||
self.airank = "private";
|
||||
break;
|
||||
|
||||
case "Pfc.":
|
||||
self.airank = "private";
|
||||
break;
|
||||
|
||||
case "Agent":
|
||||
self.airank = "private";
|
||||
break;
|
||||
|
||||
case "Cpl.":
|
||||
self.airank = "corporal";
|
||||
break;
|
||||
|
||||
case "Sgt.":
|
||||
self.airank = "sergeant";
|
||||
break;
|
||||
|
||||
case "Lt.":
|
||||
self.airank = "lieutenant";
|
||||
break;
|
||||
|
||||
case "Cpt.":
|
||||
self.airank = "captain";
|
||||
break;
|
||||
|
||||
default:
|
||||
self.airank = "private";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
nationalityusescallsigns(param_00)
|
||||
{
|
||||
switch(param_00)
|
||||
{
|
||||
case "seal":
|
||||
case "taskforce":
|
||||
case "czech":
|
||||
case "delta":
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
nationalityusessurnames(param_00)
|
||||
{
|
||||
return isdefined(level.names[param_00 + "_surnames"]);
|
||||
}
|
1486
MW3/PC/SP/maps/_noder.gsc
Normal file
1486
MW3/PC/SP/maps/_noder.gsc
Normal file
File diff suppressed because it is too large
Load Diff
230
MW3/PC/SP/maps/_overheat.gsc
Normal file
230
MW3/PC/SP/maps/_overheat.gsc
Normal file
@ -0,0 +1,230 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_overheat.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 8
|
||||
* Decompile Time: 94 ms
|
||||
* Timestamp: 10/27/2023 2:20:14 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
init_overheat()
|
||||
{
|
||||
precacheshader("hud_temperature_gauge");
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
overheat_enable(param_00)
|
||||
{
|
||||
if(isdefined(self.overheat))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self.overheat = spawnstruct();
|
||||
self.overheat.turret_heat_status = 1;
|
||||
self.overheat.overheated = 0;
|
||||
self.overheat.turret_heat_max = 114;
|
||||
self.overheat.turret_heat_rate = 1;
|
||||
self.overheat.turret_cool_rate = 1;
|
||||
self.overheat.overheat_time = 2;
|
||||
self.overheat.overheat_flash_time = 0.2;
|
||||
self.overheat.overheat_flash_time_increment = 0.1;
|
||||
self.overheat.gun_usage_delay_after_overheat = 2;
|
||||
thread create_hud();
|
||||
thread status_meter_update(param_00);
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
overheat_disable()
|
||||
{
|
||||
self notify("disable_overheat");
|
||||
level.savehere = undefined;
|
||||
waittillframeend;
|
||||
if(isdefined(self.overheat.overheat_bg))
|
||||
{
|
||||
self.overheat.overheat_bg destroy();
|
||||
}
|
||||
|
||||
if(isdefined(self.overheat.overheat_status))
|
||||
{
|
||||
self.overheat.overheat_status destroy();
|
||||
}
|
||||
|
||||
self.overheat = undefined;
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
status_meter_update(param_00)
|
||||
{
|
||||
self endon("disable_overheat");
|
||||
for(;;)
|
||||
{
|
||||
if(self.overheat.turret_heat_status >= self.overheat.turret_heat_max)
|
||||
{
|
||||
wait 0.05;
|
||||
continue;
|
||||
}
|
||||
|
||||
if(self attackbuttonpressed() && !self.overheat.overheated)
|
||||
{
|
||||
self.overheat.turret_heat_status = self.overheat.turret_heat_status + self.overheat.turret_heat_rate;
|
||||
}
|
||||
else
|
||||
{
|
||||
self.overheat.turret_heat_status = self.overheat.turret_heat_status - self.overheat.turret_cool_rate;
|
||||
}
|
||||
|
||||
self.overheat.turret_heat_status = clamp(self.overheat.turret_heat_status,1,self.overheat.turret_heat_max);
|
||||
update_overheat_meter();
|
||||
thread overheated(param_00);
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
update_overheat_meter()
|
||||
{
|
||||
self.overheat.overheat_status scaleovertime(0.05,10,int(self.overheat.turret_heat_status));
|
||||
thread overheat_setcolor(self.overheat.turret_heat_status,0.05);
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
create_hud()
|
||||
{
|
||||
self endon("disable_overheat");
|
||||
var_00 = 0;
|
||||
if(maps\_utility::is_coop())
|
||||
{
|
||||
var_00 = 70;
|
||||
}
|
||||
|
||||
var_01 = -10;
|
||||
var_02 = -152 + var_00;
|
||||
if(!isdefined(self.overheat.overheat_bg))
|
||||
{
|
||||
self.overheat.overheat_bg = newclienthudelem(self);
|
||||
self.overheat.overheat_bg.alignx = "right";
|
||||
self.overheat.overheat_bg.aligny = "bottom";
|
||||
self.overheat.overheat_bg.horzalign = "right";
|
||||
self.overheat.overheat_bg.vertalign = "bottom";
|
||||
self.overheat.overheat_bg.x = 2;
|
||||
self.overheat.overheat_bg.y = -120 + var_00;
|
||||
self.overheat.overheat_bg setshader("hud_temperature_gauge",35,150);
|
||||
self.overheat.overheat_bg.sort = 4;
|
||||
}
|
||||
|
||||
if(!isdefined(self.overheat.overheat_status))
|
||||
{
|
||||
self.overheat.overheat_status = newclienthudelem(self);
|
||||
self.overheat.overheat_status.alignx = "right";
|
||||
self.overheat.overheat_status.aligny = "bottom";
|
||||
self.overheat.overheat_status.horzalign = "right";
|
||||
self.overheat.overheat_status.vertalign = "bottom";
|
||||
self.overheat.overheat_status.x = var_01;
|
||||
self.overheat.overheat_status.y = var_02;
|
||||
self.overheat.overheat_status setshader("white",10,1);
|
||||
self.overheat.overheat_status.color = (1,0.9,0);
|
||||
self.overheat.overheat_status.alpha = 1;
|
||||
self.overheat.overheat_status.sort = 1;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
overheated(param_00)
|
||||
{
|
||||
self endon("disable_overheat");
|
||||
if(self.overheat.turret_heat_status < self.overheat.turret_heat_max)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(self.overheat.overheated)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self.overheat.overheated = 1;
|
||||
level.savehere = 0;
|
||||
thread maps\_utility::play_sound_on_entity("smokegrenade_explode_default");
|
||||
self.overheat.turret_heat_status = self.overheat.turret_heat_max;
|
||||
if(isdefined(param_00.mgturret))
|
||||
{
|
||||
param_00.mgturret[0] turretfiredisable();
|
||||
}
|
||||
|
||||
var_01 = gettime();
|
||||
var_02 = self.overheat.overheat_flash_time;
|
||||
for(;;)
|
||||
{
|
||||
self.overheat.overheat_status fadeovertime(var_02);
|
||||
self.overheat.overheat_status.alpha = 0.2;
|
||||
wait var_02;
|
||||
self.overheat.overheat_status fadeovertime(var_02);
|
||||
self.overheat.overheat_status.alpha = 1;
|
||||
wait var_02;
|
||||
var_02 = var_02 + self.overheat.overheat_flash_time_increment;
|
||||
if(gettime() - var_01 >= self.overheat.overheat_time * 1000)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
self.overheat.overheat_status.alpha = 1;
|
||||
self.overheat.turret_heat_status = self.overheat.turret_heat_status - self.overheat.turret_cool_rate;
|
||||
wait self.overheat.gun_usage_delay_after_overheat;
|
||||
if(isdefined(param_00.mgturret))
|
||||
{
|
||||
param_00.mgturret[0] turretfireenable();
|
||||
}
|
||||
|
||||
level.savehere = undefined;
|
||||
self.overheat.overheated = 0;
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
overheat_setcolor(param_00,param_01)
|
||||
{
|
||||
self endon("disable_overheat");
|
||||
var_02 = [];
|
||||
var_03 = [];
|
||||
var_04 = [];
|
||||
var_05 = [];
|
||||
var_06 = 0;
|
||||
var_07 = self.overheat.turret_heat_max / 2;
|
||||
var_08 = self.overheat.turret_heat_max;
|
||||
var_09 = undefined;
|
||||
var_0A = undefined;
|
||||
var_0B = undefined;
|
||||
if(param_01 > var_06 && param_01 <= var_07)
|
||||
{
|
||||
var_09 = int(param_01 * 100 / var_07);
|
||||
for(var_0C = 0;var_0C < var_05.size;var_0C++ = var_7B[2])
|
||||
{
|
||||
var_0A = var_03[var_0C] - var_7B[var_0C];
|
||||
var_0B = var_0A / 100;
|
||||
var_05[var_0C] = var_7B[var_0C] + var_0B * var_09;
|
||||
}
|
||||
}
|
||||
else if(param_01 > var_07 && param_01 <= var_08)
|
||||
{
|
||||
var_09 = int(param_01 - var_07 * 100 / var_08 - var_07);
|
||||
for(var_0C = 0;var_0C < var_05.size;var_0C++ = var_7B[2])
|
||||
{
|
||||
var_0A = var_04[var_0C] - var_03[var_0C];
|
||||
var_0B = var_0A / 100;
|
||||
var_05[var_0C] = var_03[var_0C] + var_0B * var_09;
|
||||
}
|
||||
}
|
||||
|
||||
if(isdefined(var_02))
|
||||
{
|
||||
self.overheat.overheat_status fadeovertime(var_02);
|
||||
}
|
||||
|
||||
if(isdefined(self.overheat.overheat_status.color))
|
||||
{
|
||||
self.overheat.overheat_status.color = (var_05[0],var_05[1],var_05[2]);
|
||||
}
|
||||
}
|
809
MW3/PC/SP/maps/_patrol.gsc
Normal file
809
MW3/PC/SP/maps/_patrol.gsc
Normal file
@ -0,0 +1,809 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_patrol.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 23
|
||||
* Decompile Time: 387 ms
|
||||
* Timestamp: 10/27/2023 2:23:10 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
patrol(param_00)
|
||||
{
|
||||
if(isdefined(self.enemy))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self endon("enemy");
|
||||
self endon("death");
|
||||
self endon("damage");
|
||||
self endon("end_patrol");
|
||||
waittillframeend;
|
||||
if(isdefined(self.script_stealthgroup))
|
||||
{
|
||||
[[ level.global_callbacks["_patrol_endon_spotted_flag"] ]]();
|
||||
}
|
||||
|
||||
thread waittill_combat();
|
||||
thread waittill_death();
|
||||
self.goalradius = 32;
|
||||
self allowedstances("stand");
|
||||
self.disablearrivals = 1;
|
||||
self.disableexits = 1;
|
||||
self.allowdeath = 1;
|
||||
self.script_patroller = 1;
|
||||
maps\_utility::disable_cqbwalk();
|
||||
linkpet();
|
||||
set_patrol_run_anim_array();
|
||||
var_01["ent"][1] = ::get_target_ents;
|
||||
var_1C["ent"] = 0;
|
||||
var_1C["node"] = 1;
|
||||
var_1C["node"] = 0;
|
||||
var_1C["struct"] = 1;
|
||||
var_1C["struct"] = 0;
|
||||
param_00["ent"] = ::maps\_utility::set_goal_ent;
|
||||
if(isdefined(var_01))
|
||||
{
|
||||
self.target = var_01;
|
||||
}
|
||||
|
||||
if(isdefined(self.target))
|
||||
{
|
||||
var_03 = 1;
|
||||
var_04 = get_target_ents();
|
||||
var_05 = get_target_nodes();
|
||||
var_06 = get_target_structs();
|
||||
if(var_04.size)
|
||||
{
|
||||
var_07 = common_scripts\utility::random(var_04);
|
||||
var_08 = "ent";
|
||||
}
|
||||
else if(var_07.size)
|
||||
{
|
||||
var_07 = common_scripts\utility::random(var_07);
|
||||
var_08 = "node";
|
||||
}
|
||||
else
|
||||
{
|
||||
var_07 = common_scripts\utility::random(var_08);
|
||||
var_08 = "struct";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var_03 = 0;
|
||||
var_04 = common_scripts\utility::get_linked_ents();
|
||||
var_05 = get_linked_nodes();
|
||||
var_06 = maps\_utility::get_linked_structs();
|
||||
if(var_06.size)
|
||||
{
|
||||
var_07 = common_scripts\utility::random(var_06);
|
||||
var_08 = "ent";
|
||||
}
|
||||
else if(var_07.size)
|
||||
{
|
||||
var_07 = common_scripts\utility::random(var_07);
|
||||
var_08 = "node";
|
||||
}
|
||||
else
|
||||
{
|
||||
var_07 = common_scripts\utility::random(var_08);
|
||||
var_08 = "struct";
|
||||
}
|
||||
}
|
||||
|
||||
var_09 = [];
|
||||
var_0A = var_07;
|
||||
for(;;)
|
||||
{
|
||||
while(isdefined(var_0A.patrol_claimed))
|
||||
{
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
var_07.patrol_claimed = undefined;
|
||||
var_07 = var_0A;
|
||||
self notify("release_node",var_7B["phone"],"patrol_idle_phone",var_7B["checkphone"],"patrol_idle_checkphone",var_7B["stretch"],"patrol_idle_stretch",var_7B["smoke"],"patrol_idle_smoke",var_7B["turn180"],common_scripts\utility::ter_op(isdefined(self.patrol_anim_turn180),self.patrol_anim_turn180,"patrol_turn180"),var_7B["pause"],"patrol_idle_",var_7B["struct"],::maps\_utility::set_goal_ent,var_7B["node"],::maps\_utility::set_goal_node,::maps\_utility::get_linked_structs,::get_target_structs,::get_linked_nodes,::get_target_nodes,::common_scripts\utility::get_linked_ents);
|
||||
var_07.patrol_claimed = 1;
|
||||
self.last_patrol_goal = var_07;
|
||||
[[ var_7B[var_08] ]](var_07);
|
||||
if(isdefined(var_07.radius) && var_07.radius > 0)
|
||||
{
|
||||
self.goalradius = var_07.radius;
|
||||
}
|
||||
else
|
||||
{
|
||||
self.goalradius = 32;
|
||||
}
|
||||
|
||||
self waittill("goal");
|
||||
var_07 notify("trigger",self);
|
||||
if(isdefined(var_07.script_flag_set))
|
||||
{
|
||||
common_scripts\utility::flag_set(var_07.script_flag_set);
|
||||
}
|
||||
|
||||
if(isdefined(var_07.script_ent_flag_set))
|
||||
{
|
||||
maps\_utility::ent_flag_set(var_07.script_ent_flag_set);
|
||||
}
|
||||
|
||||
if(isdefined(var_07.script_flag_clear))
|
||||
{
|
||||
common_scripts\utility::flag_clear(var_07.script_flag_clear);
|
||||
}
|
||||
|
||||
var_0B = var_07 [[ var_1C[var_08][var_03] ]]();
|
||||
if(!var_0B.size)
|
||||
{
|
||||
self notify("reached_path_end");
|
||||
self notify("_patrol_reached_path_end");
|
||||
if(isalive(self.patrol_pet))
|
||||
{
|
||||
self.patrol_pet notify("master_reached_patrol_end");
|
||||
}
|
||||
}
|
||||
|
||||
if(isdefined(var_07.script_flag_wait))
|
||||
{
|
||||
common_scripts\utility::flag_wait(var_07.script_flag_wait);
|
||||
}
|
||||
|
||||
var_07 maps\_utility::script_delay();
|
||||
var_0C = ::animscripts/reactions::func_F20;
|
||||
var_0D = var_07.script_animation;
|
||||
if(isdefined(var_0D))
|
||||
{
|
||||
if(!isdefined(self.patrol_no_stop_transition))
|
||||
{
|
||||
patrol_do_stop_transition_anim(var_0D,var_0C,var_07);
|
||||
}
|
||||
|
||||
if(isdefined(var_07.script_faceangles))
|
||||
{
|
||||
self orientmode("face angle",var_07.angles[1]);
|
||||
}
|
||||
|
||||
self.patrol_script_animation = 1;
|
||||
var_0E = var_09[var_0D];
|
||||
if(isdefined(var_0E))
|
||||
{
|
||||
if(var_0D == "pause")
|
||||
{
|
||||
if(isdefined(self.patrol_scriptedanim) && isdefined(self.patrol_scriptedanim[var_0D]))
|
||||
{
|
||||
var_0E = self.patrol_scriptedanim[var_0D][randomint(self.patrol_scriptedanim[var_0D].size)];
|
||||
}
|
||||
else
|
||||
{
|
||||
var_0E = var_0E + randomintrange(1,6);
|
||||
}
|
||||
}
|
||||
|
||||
maps\_anim::anim_generic_custom_animmode(self,"gravity",var_0E,undefined,var_0C);
|
||||
if(var_0B.size && var_0D != "turn180")
|
||||
{
|
||||
patrol_do_start_transition_anim(var_0D,var_0C);
|
||||
}
|
||||
}
|
||||
|
||||
self.patrol_script_animation = undefined;
|
||||
}
|
||||
|
||||
if(!var_0B.size)
|
||||
{
|
||||
if(isdefined(self.patrol_end_idle) && !isdefined(var_0D))
|
||||
{
|
||||
patrol_do_stop_transition_anim("path_end_idle",var_0C,var_07);
|
||||
for(;;)
|
||||
{
|
||||
var_0F = self.patrol_end_idle[randomint(self.patrol_end_idle.size)];
|
||||
maps\_anim::anim_generic_custom_animmode(self,"gravity",var_0F,undefined,var_0C);
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
var_0A = common_scripts\utility::random(var_0B);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
patrol_do_stop_transition_anim(param_00,param_01,param_02)
|
||||
{
|
||||
var_03 = self;
|
||||
var_04 = 0;
|
||||
if(isdefined(param_02.script_faceangles))
|
||||
{
|
||||
var_03 = param_02;
|
||||
self.noteleport = 1;
|
||||
var_04 = 1;
|
||||
}
|
||||
|
||||
if(isdefined(self.patrol_stop) && isdefined(self.patrol_stop[param_00]))
|
||||
{
|
||||
var_03 maps\_anim::anim_generic_custom_animmode(self,"gravity",self.patrol_stop[param_00],undefined,param_01,var_04);
|
||||
return;
|
||||
}
|
||||
|
||||
var_03 maps\_anim::anim_generic_custom_animmode(self,"gravity","patrol_stop",undefined,param_01,var_04);
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
patrol_do_start_transition_anim(param_00,param_01)
|
||||
{
|
||||
if(isdefined(self.patrol_start) && isdefined(self.patrol_start[param_00]))
|
||||
{
|
||||
maps\_anim::anim_generic_custom_animmode(self,"gravity",self.patrol_start[param_00],undefined,param_01);
|
||||
return;
|
||||
}
|
||||
|
||||
maps\_anim::anim_generic_custom_animmode(self,"gravity","patrol_start",undefined,param_01);
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
stand_up_if_necessary()
|
||||
{
|
||||
if(self.a.pose == "crouch" && isdefined(self.a.array))
|
||||
{
|
||||
var_00 = self.a.array["stance_change"];
|
||||
if(isdefined(var_00))
|
||||
{
|
||||
self setflaggedanimknoballrestart("stand_up",var_00,%root,1);
|
||||
animscripts/shared::donotetracks("stand_up");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
patrol_resume_move_start_func()
|
||||
{
|
||||
self endon("enemy");
|
||||
self animmode("zonly_physics",0);
|
||||
self orientmode("face current");
|
||||
stand_up_if_necessary();
|
||||
var_00 = level.scr_anim["generic"]["patrol_radio_in_clear"];
|
||||
self setflaggedanimknoballrestart("radio",var_00,%root,1);
|
||||
animscripts/shared::donotetracks("radio");
|
||||
turn_180_move_start_func();
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
turn_180_move_start_func()
|
||||
{
|
||||
if(!isdefined(self.pathgoalpos))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var_00 = self.pathgoalpos;
|
||||
var_01 = var_00 - self.origin;
|
||||
var_01 = (var_01[0],var_01[1],0);
|
||||
var_02 = lengthsquared(var_01);
|
||||
if(var_02 < 1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var_01 = var_01 / sqrt(var_02);
|
||||
var_03 = anglestoforward(self.angles);
|
||||
if(vectordot(var_03,var_01) < -0.5)
|
||||
{
|
||||
self animmode("zonly_physics",0);
|
||||
self orientmode("face current");
|
||||
stand_up_if_necessary();
|
||||
var_04 = level.scr_anim["generic"]["patrol_turn180"];
|
||||
self setflaggedanimknoballrestart("move",var_04,%root,1);
|
||||
if(animhasnotetrack(var_04,"code_move"))
|
||||
{
|
||||
animscripts/shared::donotetracks("move");
|
||||
self orientmode("face motion");
|
||||
self animmode("none",0);
|
||||
}
|
||||
|
||||
animscripts/shared::donotetracks("move");
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
set_patrol_run_anim_array()
|
||||
{
|
||||
var_00 = "patrol_walk";
|
||||
if(isdefined(self.patrol_walk_anim))
|
||||
{
|
||||
var_00 = self.patrol_walk_anim;
|
||||
}
|
||||
|
||||
var_01 = undefined;
|
||||
if(isdefined(self.patrol_walk_twitch))
|
||||
{
|
||||
var_01 = self.patrol_walk_twitch;
|
||||
}
|
||||
|
||||
maps\_utility::set_generic_run_anim_array(var_00,var_01);
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
waittill_combat_wait()
|
||||
{
|
||||
self endon("end_patrol");
|
||||
if(isdefined(self.patrol_master))
|
||||
{
|
||||
self.patrol_master endon("death");
|
||||
}
|
||||
|
||||
self waittill("enemy");
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
waittill_death()
|
||||
{
|
||||
self waittill("death");
|
||||
if(!isdefined(self))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self notify("release_node");
|
||||
if(!isdefined(self.last_patrol_goal))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self.last_patrol_goal.patrol_claimed = undefined;
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
waittill_combat()
|
||||
{
|
||||
self endon("death");
|
||||
waittill_combat_wait();
|
||||
var_00 = maps\_utility::ent_flag_exist("_stealth_enabled") && maps\_utility::ent_flag("_stealth_enabled");
|
||||
if(!var_00)
|
||||
{
|
||||
maps\_utility::clear_run_anim();
|
||||
self allowedstances("stand","crouch","prone");
|
||||
self.disablearrivals = 0;
|
||||
self.disableexits = 0;
|
||||
self stopanimscripted();
|
||||
self notify("stop_animmode");
|
||||
self.script_nobark = undefined;
|
||||
self.goalradius = level.default_goalradius;
|
||||
}
|
||||
|
||||
if(isdefined(self.old_interval))
|
||||
{
|
||||
self.interval = self.old_interval;
|
||||
}
|
||||
|
||||
self.moveplaybackrate = 1;
|
||||
if(!isdefined(self))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self notify("release_node");
|
||||
if(!isdefined(self.last_patrol_goal))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self.last_patrol_goal.patrol_claimed = undefined;
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
get_target_ents()
|
||||
{
|
||||
var_00 = [];
|
||||
if(isdefined(self.target))
|
||||
{
|
||||
var_00 = getentarray(self.target,"targetname");
|
||||
}
|
||||
|
||||
return var_00;
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
get_target_nodes()
|
||||
{
|
||||
var_00 = [];
|
||||
if(isdefined(self.target))
|
||||
{
|
||||
var_00 = getnodearray(self.target,"targetname");
|
||||
}
|
||||
|
||||
return var_00;
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
get_target_structs()
|
||||
{
|
||||
var_00 = [];
|
||||
if(isdefined(self.target))
|
||||
{
|
||||
var_00 = common_scripts\utility::getstructarray(self.target,"targetname");
|
||||
}
|
||||
|
||||
return var_00;
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
get_linked_nodes()
|
||||
{
|
||||
var_00 = [];
|
||||
if(isdefined(self.script_linkto))
|
||||
{
|
||||
var_01 = strtok(self.script_linkto," ");
|
||||
for(var_02 = 0;var_02 < var_01.size;var_02++)
|
||||
{
|
||||
var_03 = getnode(var_01[var_02],"script_linkname");
|
||||
if(isdefined(var_03))
|
||||
{
|
||||
var_00[var_00.size] = var_03;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return var_00;
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
showclaimed(param_00)
|
||||
{
|
||||
self endon("release_node");
|
||||
}
|
||||
|
||||
//Function Number: 16
|
||||
linkpet()
|
||||
{
|
||||
if(isdefined(self.patrol_pet))
|
||||
{
|
||||
self.patrol_pet thread pet_patrol();
|
||||
return;
|
||||
}
|
||||
|
||||
if(!isdefined(self.script_pet))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
waittillframeend;
|
||||
var_00 = getaispeciesarray(self.team,"dog");
|
||||
var_01 = undefined;
|
||||
for(var_02 = 0;var_02 < var_00.size;var_02++)
|
||||
{
|
||||
if(!isdefined(var_00[var_02].script_pet))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(var_00[var_02].script_pet != self.script_pet)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_01 = var_00[var_02];
|
||||
self.patrol_pet = var_01;
|
||||
var_01.patrol_master = self;
|
||||
break;
|
||||
}
|
||||
|
||||
if(!isdefined(var_01))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var_01 thread pet_patrol();
|
||||
}
|
||||
|
||||
//Function Number: 17
|
||||
pet_patrol()
|
||||
{
|
||||
maps\_utility::spawn_failed(self);
|
||||
if(isdefined(self.enemy))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self endon("enemy");
|
||||
self endon("death");
|
||||
self endon("end_patrol");
|
||||
if(isdefined(self.script_stealthgroup))
|
||||
{
|
||||
[[ level.global_callbacks["_patrol_endon_spotted_flag"] ]]();
|
||||
}
|
||||
|
||||
self.patrol_master endon("death");
|
||||
thread waittill_combat();
|
||||
self.goalradius = 4;
|
||||
self.allowdeath = 1;
|
||||
var_00 = pet_patrol_create_positions();
|
||||
var_01 = vectornormalize(self.origin - self.patrol_master.origin);
|
||||
var_02 = anglestoright(self.patrol_master.angles);
|
||||
var_03 = "left";
|
||||
if(vectordot(var_01,var_02) > 0)
|
||||
{
|
||||
var_03 = "right";
|
||||
}
|
||||
|
||||
wait 1;
|
||||
thread pet_patrol_handle_move_state();
|
||||
thread pet_patrol_handle_movespeed();
|
||||
self.old_interval = self.interval;
|
||||
self.interval = 70;
|
||||
for(;;)
|
||||
{
|
||||
if(isdefined(self.patrol_master) && !isdefined(self.patrol_master.patrol_script_animation))
|
||||
{
|
||||
var_00 = pet_patrol_init_positions(var_00);
|
||||
if(var_03 == "null")
|
||||
{
|
||||
var_03 = "back";
|
||||
}
|
||||
|
||||
var_03 = pet_patrol_get_available_origin(var_00,var_03);
|
||||
self.patrol_goal_pos = var_00[var_03].origin;
|
||||
}
|
||||
else
|
||||
{
|
||||
self.patrol_goal_pos = self.origin;
|
||||
}
|
||||
|
||||
self setgoalpos(self.patrol_goal_pos);
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 18
|
||||
pet_patrol_create_positions()
|
||||
{
|
||||
var_00 = [];
|
||||
var_01 = spawnstruct();
|
||||
var_01.options = [];
|
||||
var_01.options[var_01.options.size] = "right";
|
||||
var_01.options[var_01.options.size] = "back_right";
|
||||
var_02 = spawnstruct();
|
||||
var_02.options = [];
|
||||
var_02.options[var_02.options.size] = "right";
|
||||
var_02.options[var_02.options.size] = "back_right";
|
||||
var_02.options[var_02.options.size] = "back";
|
||||
var_03 = spawnstruct();
|
||||
var_03.options = [];
|
||||
var_03.options[var_03.options.size] = "back_right";
|
||||
var_03.options[var_03.options.size] = "back_left";
|
||||
var_03.options[var_03.options.size] = "back";
|
||||
var_04 = spawnstruct();
|
||||
var_04.options = [];
|
||||
var_04.options[var_04.options.size] = "left";
|
||||
var_04.options[var_04.options.size] = "back_left";
|
||||
var_04.options[var_04.options.size] = "back";
|
||||
var_05 = spawnstruct();
|
||||
var_05.options = [];
|
||||
var_05.options[var_05.options.size] = "left";
|
||||
var_05.options[var_05.options.size] = "back_left";
|
||||
var_06 = spawnstruct();
|
||||
var_00["right"] = var_01;
|
||||
var_00["left"] = var_05;
|
||||
var_00["back_right"] = var_02;
|
||||
var_00["back_left"] = var_04;
|
||||
var_00["back"] = var_03;
|
||||
var_00["null"] = var_06;
|
||||
return var_00;
|
||||
}
|
||||
|
||||
//Function Number: 19
|
||||
pet_patrol_init_positions(param_00)
|
||||
{
|
||||
var_01 = vectortoangles(self.patrol_master.last_patrol_goal.origin - self.patrol_master.origin);
|
||||
var_02 = self.patrol_master.origin;
|
||||
var_03 = anglestoright(var_01);
|
||||
var_04 = anglestoforward(var_01);
|
||||
param_00["right"].origin = var_02 + var_03 * 40 + var_04 * 30;
|
||||
param_00["left"].origin = var_02 + var_03 * -40 + var_04 * 30;
|
||||
param_00["back_right"].origin = var_02 + var_03 * 32 + var_04 * -16;
|
||||
param_00["back_left"].origin = var_02 + var_03 * -32 + var_04 * -16;
|
||||
param_00["back"].origin = var_02 + var_04 * -48;
|
||||
param_00["null"].origin = self.origin;
|
||||
var_05 = getarraykeys(param_00);
|
||||
for(var_06 = 0;var_06 < var_05.size;var_06++)
|
||||
{
|
||||
var_07 = var_05[var_06];
|
||||
param_00[var_07].checked = 0;
|
||||
param_00[var_07].recursed = 0;
|
||||
}
|
||||
|
||||
return param_00;
|
||||
}
|
||||
|
||||
//Function Number: 20
|
||||
pet_debug_positions(param_00)
|
||||
{
|
||||
var_01 = getarraykeys(param_00);
|
||||
for(var_02 = 0;var_02 < var_01.size;var_02++)
|
||||
{
|
||||
var_03 = var_01[var_02];
|
||||
if(var_03 == "null")
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 21
|
||||
pet_patrol_get_available_origin(param_00,param_01)
|
||||
{
|
||||
param_00[param_01].recursed = 1;
|
||||
for(var_02 = 0;var_02 < param_00[param_01].options.size;var_02++)
|
||||
{
|
||||
var_03 = param_00[param_01].options[var_02];
|
||||
if(param_00[var_03].checked)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(self maymovetopoint(param_00[var_03].origin))
|
||||
{
|
||||
return var_03;
|
||||
}
|
||||
|
||||
param_00[var_03].checked = 1;
|
||||
}
|
||||
|
||||
for(var_02 = 0;var_02 < param_00[param_01].options.size;var_02++)
|
||||
{
|
||||
var_03 = param_00[param_01].options[var_02];
|
||||
if(param_00[var_03].recursed)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_03 = pet_patrol_get_available_origin(param_00,var_03);
|
||||
return var_03;
|
||||
}
|
||||
|
||||
return "null";
|
||||
}
|
||||
|
||||
//Function Number: 22
|
||||
pet_patrol_handle_move_state(param_00)
|
||||
{
|
||||
if(isdefined(self.enemy))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self endon("enemy");
|
||||
self endon("death");
|
||||
self endon("end_patrol");
|
||||
self.patrol_master endon("death");
|
||||
if(isdefined(self.patrol_master.script_noteworthy) && self.patrol_master.script_noteworthy == "cqb_patrol")
|
||||
{
|
||||
maps\_utility::set_dog_walk_anim();
|
||||
return;
|
||||
}
|
||||
|
||||
if(!isdefined(param_00))
|
||||
{
|
||||
param_00 = 200;
|
||||
}
|
||||
|
||||
maps\_utility::set_dog_walk_anim();
|
||||
for(;;)
|
||||
{
|
||||
wait 0.1;
|
||||
var_01 = self.patrol_goal_pos;
|
||||
var_02 = distancesquared(self.origin,self.patrol_goal_pos);
|
||||
if(var_02 > squared(param_00))
|
||||
{
|
||||
if(self.a.movement == "run")
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
maps\_anim::anim_generic_custom_animmode(self,"gravity","patrol_dog_start");
|
||||
maps\_utility::clear_run_anim();
|
||||
self.script_nobark = 1;
|
||||
continue;
|
||||
}
|
||||
|
||||
if(self.a.movement != "walk")
|
||||
{
|
||||
self notify("stopped_while_patrolling");
|
||||
maps\_anim::anim_generic_custom_animmode(self,"gravity","patrol_dog_stop");
|
||||
maps\_utility::set_dog_walk_anim();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 23
|
||||
pet_patrol_handle_movespeed(param_00,param_01)
|
||||
{
|
||||
if(isdefined(self.enemy))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self endon("enemy");
|
||||
self endon("death");
|
||||
self endon("end_patrol");
|
||||
self.patrol_master endon("death");
|
||||
if(isdefined(self.patrol_master.script_noteworthy) && self.patrol_master.script_noteworthy == "cqb_patrol")
|
||||
{
|
||||
for(;;)
|
||||
{
|
||||
wait 0.05;
|
||||
var_02 = self.patrol_goal_pos;
|
||||
var_03 = distancesquared(self.origin,self.patrol_goal_pos);
|
||||
if(var_03 < squared(16))
|
||||
{
|
||||
if(self.moveplaybackrate > 0.4)
|
||||
{
|
||||
self.moveplaybackrate = self.moveplaybackrate - 0.05;
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if(var_03 > squared(48))
|
||||
{
|
||||
if(self.moveplaybackrate < 1.8)
|
||||
{
|
||||
self.moveplaybackrate = self.moveplaybackrate + 0.05;
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
self.moveplaybackrate = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if(!isdefined(param_00))
|
||||
{
|
||||
param_00 = 16;
|
||||
}
|
||||
|
||||
if(!isdefined(param_01))
|
||||
{
|
||||
param_01 = 48;
|
||||
}
|
||||
|
||||
var_04 = param_00 * param_00;
|
||||
var_05 = param_01 * param_01;
|
||||
for(;;)
|
||||
{
|
||||
wait 0.05;
|
||||
var_02 = self.patrol_goal_pos;
|
||||
var_03 = distancesquared(self.origin,self.patrol_goal_pos);
|
||||
if(self.a.movement != "walk")
|
||||
{
|
||||
self.moveplaybackrate = 1;
|
||||
continue;
|
||||
}
|
||||
|
||||
if(var_03 < var_04)
|
||||
{
|
||||
if(self.moveplaybackrate > 0.4)
|
||||
{
|
||||
self.moveplaybackrate = self.moveplaybackrate - 0.05;
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if(var_03 > var_05)
|
||||
{
|
||||
if(self.moveplaybackrate < 0.75)
|
||||
{
|
||||
self.moveplaybackrate = self.moveplaybackrate + 0.05;
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
self.moveplaybackrate = 0.5;
|
||||
}
|
||||
}
|
341
MW3/PC/SP/maps/_player_stats.gsc
Normal file
341
MW3/PC/SP/maps/_player_stats.gsc
Normal file
@ -0,0 +1,341 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_player_stats.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 12
|
||||
* Decompile Time: 182 ms
|
||||
* Timestamp: 10/27/2023 2:22:13 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
init_stats()
|
||||
{
|
||||
self.stats["kills"] = 0;
|
||||
self.stats["kills_melee"] = 0;
|
||||
self.stats["kills_explosives"] = 0;
|
||||
self.stats["kills_juggernaut"] = 0;
|
||||
self.stats["kills_vehicle"] = 0;
|
||||
self.stats["kills_sentry"] = 0;
|
||||
self.stats["headshots"] = 0;
|
||||
self.stats["shots_fired"] = 0;
|
||||
self.stats["shots_hit"] = 0;
|
||||
self.stats["weapon"] = [];
|
||||
thread shots_fired_recorder();
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
was_headshot()
|
||||
{
|
||||
if(isdefined(self.died_of_headshot) && self.died_of_headshot)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
if(!isdefined(self.damagelocation))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
return self.damagelocation == "helmet" || self.damagelocation == "head" || self.damagelocation == "neck";
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
register_kill(param_00,param_01,param_02,param_03)
|
||||
{
|
||||
var_04 = self;
|
||||
if(isdefined(self.owner))
|
||||
{
|
||||
var_04 = self.owner;
|
||||
}
|
||||
|
||||
if(!isplayer(var_04))
|
||||
{
|
||||
if(isdefined(level.pmc_match) && level.pmc_match)
|
||||
{
|
||||
var_04 = level.players[randomint(level.players.size)];
|
||||
}
|
||||
}
|
||||
|
||||
if(!isplayer(var_04))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(isdefined(level.skip_pilot_kill_count) && isdefined(param_00.drivingvehicle) && param_00.drivingvehicle)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var_04.stats["kills"]++;
|
||||
var_04 career_stat_increment("kills",1);
|
||||
if(maps\_utility::is_specialop())
|
||||
{
|
||||
level notify("specops_player_kill",var_04,param_00,param_02,param_03);
|
||||
}
|
||||
|
||||
if(isdefined(param_00))
|
||||
{
|
||||
if(param_00 was_headshot())
|
||||
{
|
||||
var_04.stats["headshots"]++;
|
||||
var_04 career_stat_increment("headshots",1);
|
||||
}
|
||||
|
||||
if(isdefined(param_00.juggernaut))
|
||||
{
|
||||
var_04.stats["kills_juggernaut"]++;
|
||||
var_04 career_stat_increment("kills_juggernaut",1);
|
||||
}
|
||||
|
||||
if(isdefined(param_00.issentrygun))
|
||||
{
|
||||
var_04.stats["kills_sentry"]++;
|
||||
}
|
||||
|
||||
if(param_00.code_classname == "script_vehicle")
|
||||
{
|
||||
var_04.stats["kills_vehicle"]++;
|
||||
if(isdefined(param_00.riders))
|
||||
{
|
||||
foreach(var_06 in param_00.riders)
|
||||
{
|
||||
if(isdefined(var_06))
|
||||
{
|
||||
var_04 register_kill(var_06,param_01,param_02,param_03);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(cause_is_explosive(param_01))
|
||||
{
|
||||
var_04.stats["kills_explosives"]++;
|
||||
}
|
||||
|
||||
if(!isdefined(param_02))
|
||||
{
|
||||
param_02 = var_04 getcurrentweapon();
|
||||
}
|
||||
|
||||
if(issubstr(tolower(param_01),"melee"))
|
||||
{
|
||||
var_04.stats["kills_melee"]++;
|
||||
if(weaponinventorytype(param_02) == "primary")
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if(var_04 is_new_weapon(param_02))
|
||||
{
|
||||
var_04 register_new_weapon(param_02);
|
||||
}
|
||||
|
||||
var_04.stats["weapon"][param_02].kills++;
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
career_stat_increment(param_00,param_01)
|
||||
{
|
||||
if(!maps\_utility::is_specialop())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var_02 = int(self getplayerdata("career",param_00)) + param_01;
|
||||
self setplayerdata("career",param_00,var_02);
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
register_shot_hit()
|
||||
{
|
||||
if(!isplayer(self))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(isdefined(self.registeringshothit))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self.registeringshothit = 1;
|
||||
self.stats["shots_hit"]++;
|
||||
career_stat_increment("bullets_hit",1);
|
||||
var_00 = self getcurrentweapon();
|
||||
if(is_new_weapon(var_00))
|
||||
{
|
||||
register_new_weapon(var_00);
|
||||
}
|
||||
|
||||
self.stats["weapon"][var_00].shots_hit++;
|
||||
waittillframeend;
|
||||
self.registeringshothit = undefined;
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
shots_fired_recorder()
|
||||
{
|
||||
self endon("death");
|
||||
for(;;)
|
||||
{
|
||||
self waittill("weapon_fired");
|
||||
var_00 = self getcurrentweapon();
|
||||
if(!isdefined(var_00) || !maps\_utility::isprimaryweapon(var_00))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
self.stats["shots_fired"]++;
|
||||
career_stat_increment("bullets_fired",1);
|
||||
if(is_new_weapon(var_00))
|
||||
{
|
||||
register_new_weapon(var_00);
|
||||
}
|
||||
|
||||
self.stats["weapon"][var_00].shots_fired++;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
is_new_weapon(param_00)
|
||||
{
|
||||
if(isdefined(self.stats["weapon"][param_00]))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
cause_is_explosive(param_00)
|
||||
{
|
||||
param_00 = tolower(param_00);
|
||||
switch(param_00)
|
||||
{
|
||||
case "splash":
|
||||
case "mod_explosive":
|
||||
case "mod_projectile_splash":
|
||||
case "mod_projectile":
|
||||
case "mod_grenade_splash":
|
||||
case "mod_grenade":
|
||||
return 1;
|
||||
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
register_new_weapon(param_00)
|
||||
{
|
||||
self.stats["weapon"][param_00] = spawnstruct();
|
||||
self.stats["weapon"][param_00].name = param_00;
|
||||
self.stats["weapon"][param_00].shots_fired = 0;
|
||||
self.stats["weapon"][param_00].shots_hit = 0;
|
||||
self.stats["weapon"][param_00].kills = 0;
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
set_stat_dvars()
|
||||
{
|
||||
var_00 = 1;
|
||||
foreach(var_02 in level.players)
|
||||
{
|
||||
setdvar("stats_" + var_00 + "_kills_melee",var_02.stats["kills_melee"]);
|
||||
setdvar("stats_" + var_00 + "_kills_juggernaut",var_02.stats["kills_juggernaut"]);
|
||||
setdvar("stats_" + var_00 + "_kills_explosives",var_02.stats["kills_explosives"]);
|
||||
setdvar("stats_" + var_00 + "_kills_vehicle",var_02.stats["kills_vehicle"]);
|
||||
setdvar("stats_" + var_00 + "_kills_sentry",var_02.stats["kills_sentry"]);
|
||||
var_03 = var_02 get_best_weapons(5);
|
||||
foreach(var_05 in var_03)
|
||||
{
|
||||
var_05.accuracy = 0;
|
||||
if(var_05.shots_fired > 0)
|
||||
{
|
||||
var_05.accuracy = int(var_05.shots_hit / var_05.shots_fired * 100);
|
||||
}
|
||||
}
|
||||
|
||||
for(var_07 = 1;var_07 < 6;var_07++)
|
||||
{
|
||||
setdvar("stats_" + var_00 + "_weapon" + var_07 + "_name"," ");
|
||||
setdvar("stats_" + var_00 + "_weapon" + var_07 + "_kills"," ");
|
||||
setdvar("stats_" + var_00 + "_weapon" + var_07 + "_shots"," ");
|
||||
setdvar("stats_" + var_00 + "_weapon" + var_07 + "_accuracy"," ");
|
||||
}
|
||||
|
||||
for(var_07 = 0;var_07 < var_03.size;var_07++)
|
||||
{
|
||||
if(!isdefined(var_03[var_07]))
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
setdvar("stats_" + var_00 + "_weapon" + var_07 + 1 + "_name",var_03[var_07].name);
|
||||
setdvar("stats_" + var_00 + "_weapon" + var_07 + 1 + "_kills",var_03[var_07].kills);
|
||||
setdvar("stats_" + var_00 + "_weapon" + var_07 + 1 + "_shots",var_03[var_07].shots_fired);
|
||||
setdvar("stats_" + var_00 + "_weapon" + var_07 + 1 + "_accuracy",var_03[var_07].accuracy + "%");
|
||||
}
|
||||
|
||||
var_00++;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
get_best_weapons(param_00)
|
||||
{
|
||||
var_01 = [];
|
||||
for(var_02 = 0;var_02 < param_00;var_02++)
|
||||
{
|
||||
var_01[var_02] = get_weapon_with_most_kills(var_01);
|
||||
}
|
||||
|
||||
return var_01;
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
get_weapon_with_most_kills(param_00)
|
||||
{
|
||||
if(!isdefined(param_00))
|
||||
{
|
||||
param_00 = [];
|
||||
}
|
||||
|
||||
var_01 = undefined;
|
||||
foreach(var_03 in self.stats["weapon"])
|
||||
{
|
||||
var_04 = 0;
|
||||
foreach(var_06 in param_00)
|
||||
{
|
||||
if(var_03.name == var_06.name)
|
||||
{
|
||||
var_04 = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(var_04)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(!isdefined(var_01))
|
||||
{
|
||||
var_01 = var_03;
|
||||
continue;
|
||||
}
|
||||
|
||||
if(var_03.kills > var_01.kills)
|
||||
{
|
||||
var_01 = var_03;
|
||||
}
|
||||
}
|
||||
|
||||
return var_01;
|
||||
}
|
240
MW3/PC/SP/maps/_props.gsc
Normal file
240
MW3/PC/SP/maps/_props.gsc
Normal file
@ -0,0 +1,240 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_props.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 17
|
||||
* Decompile Time: 216 ms
|
||||
* Timestamp: 10/27/2023 2:20:15 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
prop_notetrack_exist(param_00,param_01)
|
||||
{
|
||||
if(!isdefined(level.prop_notetracks))
|
||||
{
|
||||
level.prop_notetracks = [];
|
||||
}
|
||||
|
||||
if(!isdefined(level.prop_notetracks[param_00]))
|
||||
{
|
||||
level.prop_notetracks[param_00] = [];
|
||||
}
|
||||
|
||||
if(isdefined(level.prop_notetracks[param_00][param_01]))
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
level.prop_notetracks[param_00][param_01] = 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
add_smoking_notetracks(param_00)
|
||||
{
|
||||
if(prop_notetrack_exist(param_00,"add_smoking_notetracks"))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
maps\_anim::addnotetrack_customfunction(param_00,"attach cig",::attach_cig);
|
||||
maps\_anim::addnotetrack_customfunction(param_00,"detach cig",::detach_cig);
|
||||
maps\_anim::addnotetrack_customfunction(param_00,"puff",::smoke_puff);
|
||||
maps\_anim::addnotetrack_customfunction(param_00,"exhale",::smoke_exhale);
|
||||
level._effect["cigar_glow"] = loadfx("fire/cigar_glow_far");
|
||||
level._effect["cigar_glow_puff"] = loadfx("fire/cigar_glow_puff");
|
||||
level._effect["cigar_smoke_puff"] = loadfx("smoke/cigarsmoke_puff_far");
|
||||
level._effect["cigar_exhale"] = loadfx("smoke/cigarsmoke_exhale_far");
|
||||
level.scr_model["cigar"] = "prop_price_cigar";
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
detach_idle_clip(param_00)
|
||||
{
|
||||
if(isdefined(param_00.clip))
|
||||
{
|
||||
param_00.clip delete();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
add_sit_load_ak_notetracks(param_00)
|
||||
{
|
||||
if(prop_notetrack_exist(param_00,"add_cellphone_notetracks"))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
maps\_anim::addnotetrack_customfunction(param_00,"attach clip left",::attach_clip);
|
||||
maps\_anim::addnotetrack_customfunction(param_00,"detach clip left",::detach_idle_clip);
|
||||
level.scr_model["clip"] = "weapon_ak47_clip";
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
attach_clip(param_00)
|
||||
{
|
||||
param_00 notify("new_prop_rotation");
|
||||
var_01 = spawn("script_model",(0,0,0));
|
||||
var_01 linkto(param_00,"tag_inhand",(0,0,0),(0,0,0));
|
||||
var_01 setmodel(maps\_utility::getmodel("clip"));
|
||||
param_00.clip = var_01;
|
||||
thread prop_delete(var_01,param_00);
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
add_cellphone_notetracks(param_00)
|
||||
{
|
||||
if(prop_notetrack_exist(param_00,"add_cellphone_notetracks"))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
maps\_anim::addnotetrack_customfunction(param_00,"attach phone",::attach_phone);
|
||||
maps\_anim::addnotetrack_customfunction(param_00,"detach phone",::detach_phone);
|
||||
level.scr_model["cellphone"] = "com_cellphone_off";
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
attach_phone(param_00)
|
||||
{
|
||||
param_00 notify("new_phone_rotation");
|
||||
var_01 = spawn("script_model",(0,0,0));
|
||||
var_01 linkto(param_00,"tag_inhand",(0,0,0),(0,0,0));
|
||||
var_01 setmodel(maps\_utility::getmodel("cellphone"));
|
||||
param_00.phone = var_01;
|
||||
thread prop_delete(var_01,param_00);
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
detach_phone(param_00)
|
||||
{
|
||||
if(isdefined(param_00.phone))
|
||||
{
|
||||
param_00.phone delete();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
attach_cig(param_00)
|
||||
{
|
||||
param_00 notify("new_cigar_rotation");
|
||||
var_01 = spawn("script_model",(0,0,0));
|
||||
var_01 linkto(param_00,"tag_inhand",(0,0,0),(0,0,0));
|
||||
var_01 setmodel(maps\_utility::getmodel("cigar"));
|
||||
playfxontag(common_scripts\utility::getfx("cigar_glow"),var_01,"tag_cigarglow");
|
||||
param_00.cigar = var_01;
|
||||
thread prop_delete_cig(var_01,param_00);
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
detach_cig(param_00)
|
||||
{
|
||||
if(isdefined(param_00.cigar))
|
||||
{
|
||||
param_00.cigar thread prop_cig_throw();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
prop_delete(param_00,param_01)
|
||||
{
|
||||
param_01 notify("new_prop_rotation" + param_00.model);
|
||||
param_01 endon("new_prop_rotation" + param_00.model);
|
||||
param_00 endon("death");
|
||||
param_01 maps\_utility::add_endon("new_prop_rotation" + param_00.model);
|
||||
param_00 maps\_utility::add_endon("death");
|
||||
maps\_utility::add_wait(::maps\_utility::waittill_msg,"stop_loop");
|
||||
param_01 maps\_utility::add_wait(::maps\_utility::waittill_msg,"death");
|
||||
maps\_utility::do_wait_any();
|
||||
param_00 delete();
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
prop_delete_cig(param_00,param_01)
|
||||
{
|
||||
param_01 notify("new_prop_rotation" + param_00.model);
|
||||
param_01 endon("new_prop_rotation" + param_00.model);
|
||||
param_00 endon("death");
|
||||
param_01 maps\_utility::add_endon("new_prop_rotation" + param_00.model);
|
||||
param_00 maps\_utility::add_endon("death");
|
||||
maps\_utility::add_wait(::maps\_utility::waittill_msg,"stop_loop");
|
||||
param_01 maps\_utility::add_wait(::maps\_utility::waittill_msg,"death");
|
||||
maps\_utility::do_wait_any();
|
||||
param_00 thread prop_cig_throw();
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
prop_cig_throw()
|
||||
{
|
||||
self endon("death");
|
||||
if(!isdefined(self))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(isdefined(self.cig_throwing) && self.cig_throwing)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self.cig_throwing = 1;
|
||||
stopfxontag(common_scripts\utility::getfx("cigar_glow"),self,"tag_cigarglow");
|
||||
var_00 = 3;
|
||||
var_01 = anglestoforward(self.angles);
|
||||
self unlink();
|
||||
self movegravity(var_01 * 100,var_00);
|
||||
self rotatevelocity((400,0,0),var_00,0,var_00);
|
||||
wait var_00;
|
||||
self delete();
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
smoke_puff(param_00)
|
||||
{
|
||||
if(!isdefined(param_00.cigar))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
param_00 endon("death");
|
||||
param_00.cigar endon("death");
|
||||
playfxontag(common_scripts\utility::getfx("cigar_glow_puff"),param_00.cigar,"tag_cigarglow");
|
||||
wait 1;
|
||||
playfxontag(common_scripts\utility::getfx("cigar_smoke_puff"),param_00,"tag_eye");
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
smoke_exhale(param_00)
|
||||
{
|
||||
if(!isdefined(param_00.cigar))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
playfxontag(common_scripts\utility::getfx("cigar_exhale"),param_00,"tag_eye");
|
||||
}
|
||||
|
||||
//Function Number: 16
|
||||
ghillie_leaves()
|
||||
{
|
||||
var_00 = [];
|
||||
self endon("death",var_7B[var_7B.size],"J_Wrist_RI",var_7B[var_7B.size],"J_Elbow_LE",var_7B[var_7B.size],"J_Hip_RI",var_7B[var_7B.size],"J_SpineLower",var_7B[var_7B.size],"J_HipTwist_LE",var_7B[var_7B.size],"J_HipTwist_RI",var_7B[var_7B.size],"J_Knee_LE",var_7B[var_7B.size],"J_Knee_RI",var_7B[var_7B.size],"J_SpineUpper",var_7B[var_7B.size],"J_Ankle_LE",var_7B[var_7B.size],"J_Ankle_RI",var_7B[var_7B.size],"J_Knee_Bulge_LE",var_7B[var_7B.size],"J_Ball_LE",var_7B[var_7B.size],"J_Clavicle_RI",var_7B[var_7B.size],"J_Neck",var_7B[var_7B.size],"J_ShoulderRaise_LE",var_7B[var_7B.size],"J_Head",var_7B[var_7B.size],"J_Shoulder_RI",var_7B[var_7B.size],"J_Brow_LE",var_7B[var_7B.size],"J_Cheek_RI",var_7B[var_7B.size],"J_CoatFront_RI",var_7B[var_7B.size],"J_CoatRear_LE",var_7B[var_7B.size],"J_CoatRear_RI",var_7B[var_7B.size],"J_Hip_LE",var_7B[var_7B.size],"J_CoatFront_LE",var_7B[var_00.size],"J_MainRoot");
|
||||
for(;;)
|
||||
{
|
||||
while(self.movemode != "run")
|
||||
{
|
||||
wait 0.2;
|
||||
continue;
|
||||
}
|
||||
|
||||
playfxontag(level._effect["ghillie_leaves"],self,common_scripts\utility::random(var_7B));
|
||||
wait randomfloatrange(0.1,2.5);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 17
|
||||
attach_cig_self()
|
||||
{
|
||||
attach_cig(self);
|
||||
}
|
198
MW3/PC/SP/maps/_quotes.gsc
Normal file
198
MW3/PC/SP/maps/_quotes.gsc
Normal file
@ -0,0 +1,198 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_quotes.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 7
|
||||
* Decompile Time: 103 ms
|
||||
* Timestamp: 10/27/2023 2:21:59 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
thread setdeadquote();
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
setdeadquote()
|
||||
{
|
||||
level endon("mine death");
|
||||
level notify("new_quote_string");
|
||||
level endon("new_quote_string");
|
||||
if(isalive(level.player))
|
||||
{
|
||||
level.player waittill("death");
|
||||
}
|
||||
|
||||
if(!level.missionfailed)
|
||||
{
|
||||
var_00 = int(tablelookup("sp/deathQuoteTable.csv",1,"size",0));
|
||||
var_01 = randomint(var_00);
|
||||
if(getdvar("cycle_deathquotes") != "")
|
||||
{
|
||||
if(getdvar("ui_deadquote_index") == "")
|
||||
{
|
||||
setdvar("ui_deadquote_index","0");
|
||||
}
|
||||
|
||||
var_01 = getdvarint("ui_deadquote_index");
|
||||
setdvar("ui_deadquote",lookupdeathquote(var_01));
|
||||
var_01++;
|
||||
if(var_01 > var_00 - 1)
|
||||
{
|
||||
var_01 = 0;
|
||||
}
|
||||
|
||||
setdvar("ui_deadquote_index",var_01);
|
||||
return;
|
||||
}
|
||||
|
||||
setdvar("ui_deadquote",lookupdeathquote(var_01));
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
lookupdeathquote(param_00)
|
||||
{
|
||||
var_01 = tablelookup("sp/deathQuoteTable.csv",0,param_00,1);
|
||||
if(tolower(var_01[0]) != tolower("@"))
|
||||
{
|
||||
var_01 = "@" + var_01;
|
||||
}
|
||||
|
||||
return var_01;
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
setdeadquote_so()
|
||||
{
|
||||
level notify("new_quote_string");
|
||||
var_00 = [];
|
||||
var_00 = so_builddeadquote();
|
||||
var_00 = maps\_utility::array_randomize(var_00);
|
||||
var_01 = randomint(var_00.size);
|
||||
if(!maps\_utility::is_coop_online())
|
||||
{
|
||||
var_02 = var_00.size > 1;
|
||||
var_03 = var_01;
|
||||
while(var_02)
|
||||
{
|
||||
if(deadquote_recently_used(var_00[var_01]))
|
||||
{
|
||||
var_01++;
|
||||
if(var_01 >= var_00.size)
|
||||
{
|
||||
var_01 = 0;
|
||||
}
|
||||
|
||||
if(var_01 == var_03)
|
||||
{
|
||||
var_02 = 0;
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
var_02 = 0;
|
||||
}
|
||||
|
||||
setdvar("ui_deadquote_v3",getdvar("ui_deadquote_v2"));
|
||||
setdvar("ui_deadquote_v2",getdvar("ui_deadquote_v1"));
|
||||
setdvar("ui_deadquote_v1",var_00[var_01]);
|
||||
}
|
||||
|
||||
switch(var_00[var_01])
|
||||
{
|
||||
case "@DEADQUOTE_SO_ICON_PARTNER":
|
||||
maps\_specialops_code::so_special_failure_hint_reset_dvars("ui_icon_partner");
|
||||
break;
|
||||
|
||||
case "@DEADQUOTE_SO_ICON_OBJ":
|
||||
maps\_specialops_code::so_special_failure_hint_reset_dvars("ui_icon_obj");
|
||||
break;
|
||||
|
||||
case "@DEADQUOTE_SO_ICON_OBJ_OFFSCREEN":
|
||||
maps\_specialops_code::so_special_failure_hint_reset_dvars("ui_icon_obj_offscreen");
|
||||
break;
|
||||
|
||||
case "@DEADQUOTE_SO_STAR_RANKINGS":
|
||||
maps\_specialops_code::so_special_failure_hint_reset_dvars("ui_icon_stars");
|
||||
break;
|
||||
|
||||
case "@DEADQUOTE_SO_CLAYMORE_ENEMIES_SHOOT":
|
||||
case "@DEADQUOTE_SO_CLAYMORE_POINT_ENEMY":
|
||||
maps\_specialops_code::so_special_failure_hint_reset_dvars("ui_icon_claymore");
|
||||
break;
|
||||
|
||||
case "@DEADQUOTE_SO_STEALTH_STAY_LOW":
|
||||
maps\_specialops_code::so_special_failure_hint_reset_dvars("ui_icon_stealth_stance");
|
||||
break;
|
||||
}
|
||||
|
||||
setdvar("ui_deadquote",var_00[var_01]);
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
deadquote_recently_used(param_00)
|
||||
{
|
||||
if(param_00 == getdvar("ui_deadquote_v1"))
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
if(param_00 == getdvar("ui_deadquote_v2"))
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
if(param_00 == getdvar("ui_deadquote_v3"))
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
so_builddeadquote()
|
||||
{
|
||||
if(should_use_custom_deadquotes())
|
||||
{
|
||||
return level.so_deadquotes;
|
||||
}
|
||||
|
||||
var_00 = [];
|
||||
if(!maps\_utility::is_survival())
|
||||
{
|
||||
}
|
||||
else
|
||||
{
|
||||
}
|
||||
|
||||
if(isdefined(self.so_infohud_toggle_state) && self.so_infohud_toggle_state != "none")
|
||||
{
|
||||
}
|
||||
|
||||
if(maps\_utility::is_coop())
|
||||
{
|
||||
}
|
||||
|
||||
return var_7B;
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
should_use_custom_deadquotes()
|
||||
{
|
||||
if(!isdefined(level.so_deadquotes))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(level.so_deadquotes.size <= 0)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
return level.so_deadquotes_chance >= randomfloat(1);
|
||||
}
|
449
MW3/PC/SP/maps/_radiation.gsc
Normal file
449
MW3/PC/SP/maps/_radiation.gsc
Normal file
@ -0,0 +1,449 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_radiation.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 17
|
||||
* Decompile Time: 249 ms
|
||||
* Timestamp: 10/27/2023 2:20:16 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
precachestring(&"SCOUTSNIPER_MRHR");
|
||||
precachestring(&"SCRIPT_RADIATION_DEATH");
|
||||
precacheshellshock("radiation_low");
|
||||
precacheshellshock("radiation_med");
|
||||
precacheshellshock("radiation_high");
|
||||
foreach(var_01 in level.players)
|
||||
{
|
||||
var_01.radiation = spawnstruct();
|
||||
var_01.radiation.super_dose = 0;
|
||||
var_01.radiation.inside = 0;
|
||||
var_01 maps\_utility::ent_flag_init("_radiation_poisoning");
|
||||
}
|
||||
|
||||
common_scripts\utility::run_thread_on_targetname("radiation",::updateradiationtriggers);
|
||||
common_scripts\utility::run_thread_on_targetname("super_radiation",::super_radiation_trigger);
|
||||
common_scripts\utility::array_thread(level.players,::updateradiationdosage);
|
||||
common_scripts\utility::array_thread(level.players,::updateradiationdosimeter);
|
||||
common_scripts\utility::array_thread(level.players,::updateradiationshock);
|
||||
common_scripts\utility::array_thread(level.players,::updateradiationblackout);
|
||||
common_scripts\utility::array_thread(level.players,::updateradiationsound);
|
||||
common_scripts\utility::array_thread(level.players,::updateradiationflag);
|
||||
common_scripts\utility::array_thread(level.players,::first_radiation_dialogue);
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
updateradiationtriggers()
|
||||
{
|
||||
self.members = 0;
|
||||
for(;;)
|
||||
{
|
||||
self waittill("trigger",var_00);
|
||||
thread updateradiationtrigger_perplayer(var_00);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
updateradiationtrigger_perplayer(param_00)
|
||||
{
|
||||
if(param_00.radiation.inside)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
param_00.radiation.inside = 1;
|
||||
param_00.radiation.triggers[param_00.radiation.triggers.size] = self;
|
||||
while(param_00 istouching(self))
|
||||
{
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
param_00.radiation.inside = 0;
|
||||
param_00.radiation.triggers = common_scripts\utility::array_remove(param_00.radiation.triggers,self);
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
super_radiation_trigger()
|
||||
{
|
||||
self waittill("trigger",var_00);
|
||||
var_00.radiation.super_dose = 1;
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
updateradiationdosage()
|
||||
{
|
||||
self.radiation.triggers = [];
|
||||
self.radiation.rate = 0;
|
||||
self.radiation.ratepercent = 0;
|
||||
self.radiation.total = 0;
|
||||
self.radiation.totalpercent = 0;
|
||||
var_00 = 1;
|
||||
var_01 = 0;
|
||||
var_02 = 1100000 / 60 * var_00;
|
||||
var_03 = 200000;
|
||||
var_04 = var_02 - var_01;
|
||||
for(;;)
|
||||
{
|
||||
var_05 = [];
|
||||
for(var_06 = 0;var_06 < self.radiation.triggers.size;var_06++)
|
||||
{
|
||||
var_07 = self.radiation.triggers[var_06];
|
||||
var_08 = distance(self.origin,var_07.origin) - 15;
|
||||
var_05[var_06] = var_02 - var_02 / var_07.radius * var_08;
|
||||
}
|
||||
|
||||
var_09 = 0;
|
||||
for(var_06 = 0;var_06 < var_05.size;var_06++)
|
||||
{
|
||||
var_09 = var_09 + var_05[var_06];
|
||||
}
|
||||
|
||||
if(var_09 < var_01)
|
||||
{
|
||||
var_09 = var_01;
|
||||
}
|
||||
|
||||
if(var_09 > var_02)
|
||||
{
|
||||
var_09 = var_02;
|
||||
}
|
||||
|
||||
self.radiation.rate = var_09;
|
||||
self.radiation.ratepercent = var_09 - var_01 / var_04 * 100;
|
||||
if(self.radiation.super_dose)
|
||||
{
|
||||
var_09 = var_02;
|
||||
self.radiation.ratepercent = 100;
|
||||
}
|
||||
|
||||
if(self.radiation.ratepercent > 25)
|
||||
{
|
||||
self.radiation.total = self.radiation.total + var_09;
|
||||
self.radiation.totalpercent = self.radiation.total / var_03 * 100;
|
||||
}
|
||||
else if(self.radiation.ratepercent < 1 && self.radiation.total > 0)
|
||||
{
|
||||
self.radiation.total = self.radiation.total - 1500;
|
||||
if(self.radiation.total < 0)
|
||||
{
|
||||
self.radiation.total = 0;
|
||||
}
|
||||
|
||||
self.radiation.totalpercent = self.radiation.total / var_03 * 100;
|
||||
}
|
||||
|
||||
wait var_00;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
updateradiationshock()
|
||||
{
|
||||
var_00 = 1;
|
||||
for(;;)
|
||||
{
|
||||
if(self.radiation.ratepercent >= 75)
|
||||
{
|
||||
self shellshock("radiation_high",5);
|
||||
}
|
||||
else if(self.radiation.ratepercent >= 50)
|
||||
{
|
||||
self shellshock("radiation_med",5);
|
||||
}
|
||||
else if(self.radiation.ratepercent > 25)
|
||||
{
|
||||
self shellshock("radiation_low",5);
|
||||
}
|
||||
|
||||
wait var_00;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
updateradiationsound()
|
||||
{
|
||||
thread playradiationsound();
|
||||
for(;;)
|
||||
{
|
||||
if(self.radiation.ratepercent >= 75)
|
||||
{
|
||||
self.radiation.sound = "item_geigercouner_level4";
|
||||
}
|
||||
else if(self.radiation.ratepercent >= 50)
|
||||
{
|
||||
self.radiation.sound = "item_geigercouner_level3";
|
||||
}
|
||||
else if(self.radiation.ratepercent >= 25)
|
||||
{
|
||||
self.radiation.sound = "item_geigercouner_level2";
|
||||
}
|
||||
else if(self.radiation.ratepercent > 0)
|
||||
{
|
||||
self.radiation.sound = "item_geigercouner_level1";
|
||||
}
|
||||
else
|
||||
{
|
||||
self.radiation.sound = "none";
|
||||
}
|
||||
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
updateradiationflag()
|
||||
{
|
||||
for(;;)
|
||||
{
|
||||
if(self.radiation.ratepercent > 25)
|
||||
{
|
||||
maps\_utility::ent_flag_set("_radiation_poisoning");
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\_utility::ent_flag_clear("_radiation_poisoning");
|
||||
}
|
||||
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
playradiationsound()
|
||||
{
|
||||
wait 0.05;
|
||||
var_00 = spawn("script_origin",(0,0,0));
|
||||
var_00.origin = self.origin;
|
||||
var_00.angles = self.angles;
|
||||
var_00 linkto(self);
|
||||
var_01 = self.radiation.sound;
|
||||
for(;;)
|
||||
{
|
||||
if(var_01 != self.radiation.sound)
|
||||
{
|
||||
var_00 stoploopsound();
|
||||
if(isdefined(self.radiation.sound) && self.radiation.sound != "none")
|
||||
{
|
||||
var_00 playloopsound(self.radiation.sound);
|
||||
}
|
||||
}
|
||||
|
||||
var_01 = self.radiation.sound;
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
updateradiationratepercent()
|
||||
{
|
||||
var_00 = 0.05;
|
||||
var_01 = newclienthudelem(self);
|
||||
var_01.fontscale = 1.2;
|
||||
var_01.x = 670;
|
||||
var_01.y = 350;
|
||||
var_01.alignx = "right";
|
||||
var_01.label = "";
|
||||
var_01.alpha = 0;
|
||||
for(;;)
|
||||
{
|
||||
var_01.label = self.radiation.ratepercent;
|
||||
wait var_00;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
updateradiationdosimeter()
|
||||
{
|
||||
var_00 = 0.028;
|
||||
var_01 = 100;
|
||||
var_02 = 1;
|
||||
var_03 = var_01 - var_00;
|
||||
var_04 = self.origin;
|
||||
var_05 = newclienthudelem(self);
|
||||
var_05.fontscale = 1.2;
|
||||
var_05.x = 676;
|
||||
var_05.y = 360;
|
||||
var_05.alpha = 0;
|
||||
var_05.alignx = "right";
|
||||
var_05.label = &"SCOUTSNIPER_MRHR";
|
||||
var_05 thread updateradiationdosimetercolor(self);
|
||||
for(;;)
|
||||
{
|
||||
if(self.radiation.rate <= var_00)
|
||||
{
|
||||
var_06 = randomfloatrange(-0.001,0.001);
|
||||
var_05 setvalue(var_00 + var_06);
|
||||
}
|
||||
else if(self.radiation.rate > var_01)
|
||||
{
|
||||
var_05 setvalue(var_01);
|
||||
}
|
||||
else
|
||||
{
|
||||
var_05 setvalue(self.radiation.rate);
|
||||
}
|
||||
|
||||
wait var_02;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
updateradiationdosimetercolor(param_00)
|
||||
{
|
||||
var_01 = 0.05;
|
||||
for(;;)
|
||||
{
|
||||
var_02 = 1;
|
||||
var_03 = 0.13;
|
||||
while(param_00.radiation.rate >= 100)
|
||||
{
|
||||
if(var_02 <= 0 || var_02 >= 1)
|
||||
{
|
||||
var_03 = var_03 * -1;
|
||||
}
|
||||
|
||||
var_02 = var_02 + var_03;
|
||||
if(var_02 <= 0)
|
||||
{
|
||||
var_02 = 0;
|
||||
}
|
||||
|
||||
if(var_02 >= 1)
|
||||
{
|
||||
var_02 = 1;
|
||||
}
|
||||
|
||||
self.color = (1,var_02,var_02);
|
||||
wait var_01;
|
||||
}
|
||||
|
||||
self.color = (1,1,1);
|
||||
wait var_01;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
updateradiationblackout()
|
||||
{
|
||||
level endon("special_op_terminated");
|
||||
self endon("death");
|
||||
var_00 = newclienthudelem(self);
|
||||
var_00.x = 0;
|
||||
var_00.y = 0;
|
||||
var_00 setshader("black",640,480);
|
||||
var_00.alignx = "left";
|
||||
var_00.aligny = "top";
|
||||
var_00.horzalign = "fullscreen";
|
||||
var_00.vertalign = "fullscreen";
|
||||
var_00.alpha = 0;
|
||||
var_01 = 1;
|
||||
var_02 = 4;
|
||||
var_03 = 0.25;
|
||||
var_04 = 1;
|
||||
var_05 = 25;
|
||||
var_06 = 100;
|
||||
var_07 = 0;
|
||||
for(;;)
|
||||
{
|
||||
while(self.radiation.totalpercent > 25 && self.radiation.ratepercent > 25)
|
||||
{
|
||||
var_08 = var_06 - var_05;
|
||||
var_07 = self.radiation.totalpercent - var_05 / var_08;
|
||||
if(var_07 < 0)
|
||||
{
|
||||
var_07 = 0;
|
||||
}
|
||||
else if(var_07 > 1)
|
||||
{
|
||||
var_07 = 1;
|
||||
}
|
||||
|
||||
var_09 = var_02 - var_01;
|
||||
var_0A = var_01 + var_09 * 1 - var_07;
|
||||
var_0B = var_04 - var_03;
|
||||
var_0C = var_03 + var_0B * var_07;
|
||||
var_0D = 7.2 * var_0C;
|
||||
var_0E = var_07 * 0.5;
|
||||
var_0F = 7.2 * var_0E;
|
||||
if(var_07 == 1)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
var_10 = var_0A / 2;
|
||||
var_00 fadeinblackout(var_10,var_0C,var_0D,self);
|
||||
var_00 fadeoutblackout(var_10,var_0E,var_0F,self);
|
||||
wait var_07 * 0.5;
|
||||
}
|
||||
|
||||
if(var_07 == 1)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
if(var_00.alpha != 0)
|
||||
{
|
||||
var_00 fadeoutblackout(1,0,0,self);
|
||||
}
|
||||
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
var_00 fadeinblackout(2,1,6,self);
|
||||
thread radiation_kill();
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
radiation_kill()
|
||||
{
|
||||
self.specialdamage = 1;
|
||||
self.specialdeath = 1;
|
||||
self.radiationdeath = 1;
|
||||
if(!maps\_utility::kill_wrapper())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
waittillframeend;
|
||||
var_00 = &"SCRIPT_RADIATION_DEATH";
|
||||
setdvar("ui_deadquote",var_00);
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
fadeinblackout(param_00,param_01,param_02,param_03)
|
||||
{
|
||||
self fadeovertime(param_00);
|
||||
self.alpha = param_01;
|
||||
param_03 setblurforplayer(param_02,param_00);
|
||||
wait param_00;
|
||||
}
|
||||
|
||||
//Function Number: 16
|
||||
fadeoutblackout(param_00,param_01,param_02,param_03)
|
||||
{
|
||||
self fadeovertime(param_00);
|
||||
self.alpha = param_01;
|
||||
param_03 setblurforplayer(param_02,param_00);
|
||||
wait param_00;
|
||||
}
|
||||
|
||||
//Function Number: 17
|
||||
first_radiation_dialogue()
|
||||
{
|
||||
self endon("death");
|
||||
for(;;)
|
||||
{
|
||||
maps\_utility::ent_flag_wait("_radiation_poisoning");
|
||||
if(level.script == "scoutsniper" || level.script == "co_scoutsniper")
|
||||
{
|
||||
level thread maps\_utility::function_stack(::maps\_utility::radio_dialogue,"scoutsniper_mcm_youdaft");
|
||||
}
|
||||
|
||||
level notify("radiation_warning");
|
||||
maps\_utility::ent_flag_waitopen("_radiation_poisoning");
|
||||
wait 10;
|
||||
}
|
||||
}
|
86
MW3/PC/SP/maps/_rambo.gsc
Normal file
86
MW3/PC/SP/maps/_rambo.gsc
Normal file
@ -0,0 +1,86 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_rambo.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 4
|
||||
* Decompile Time: 45 ms
|
||||
* Timestamp: 10/27/2023 2:20:35 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
if(isdefined(level.ramboanims))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(!isdefined(level.subclass_spawn_functions))
|
||||
{
|
||||
level.subclass_spawn_functions = [];
|
||||
}
|
||||
|
||||
level.subclass_spawn_functions["militia"] = ::enable_militia_behavior;
|
||||
anim.ramboanims = spawnstruct();
|
||||
level.ramboanims.coverleft90 = animscripts/utility::array(%favela_chaotic_cornerl_hop90,%favela_chaotic_cornerl_high90,%favela_chaotic_cornerl_mid90);
|
||||
level.ramboanims.coverleft45 = animscripts/utility::array(%favela_chaotic_cornerl_high45,%favela_chaotic_cornerl_mid45);
|
||||
level.ramboanims.coverleftgrenade = %favela_chaotic_cornerl_grenade;
|
||||
level.ramboanims.coverright90 = animscripts/utility::array(%favela_chaotic_cornerr_med90,%favela_chaotic_cornerr_low90,%favela_chaotic_cornerr_high90);
|
||||
level.ramboanims.coverright45 = animscripts/utility::array(%favela_chaotic_cornerr_med45,%favela_chaotic_cornerr_low45,%favela_chaotic_cornerr_high45);
|
||||
level.ramboanims.coverrightgrenade = %favela_chaotic_cornerr_grenade;
|
||||
level.ramboanims.coverstand = animscripts/utility::array(%favela_chaotic_standcover_firea,%favela_chaotic_standcover_fireb,%favela_chaotic_standcover_firec);
|
||||
level.ramboanims.coverstandfail = animscripts/utility::array(%favela_chaotic_standcover_gunjama,%favela_chaotic_standcover_gunjamb);
|
||||
level.ramboanims.coverstandgrenade = animscripts/utility::array(%favela_chaotic_standcover_grenadefirea);
|
||||
level.ramboanims.covercrouch = animscripts/utility::array(%favela_chaotic_crouchcover_firea,%favela_chaotic_crouchcover_fireb,%favela_chaotic_crouchcover_firec);
|
||||
level.ramboanims.covercrouchfail = animscripts/utility::array(%favela_chaotic_crouchcover_gunjama,%favela_chaotic_crouchcover_gunjamb);
|
||||
level.ramboanims.covercrouchgrenade = animscripts/utility::array(%favela_chaotic_crouchcover_grenadefirea);
|
||||
setrambogrenadeoffsets();
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
setrambogrenadeoffsets()
|
||||
{
|
||||
animscripts/combat_utility::func_238B(%favela_chaotic_cornerr_grenade,(52.4535,10.107,64.2898));
|
||||
animscripts/combat_utility::func_238B(%favela_chaotic_cornerl_grenade,(19.1753,-18.9954,49.3355));
|
||||
animscripts/combat_utility::func_238B(%favela_chaotic_standcover_grenadefirea,(6.66898,-0.135193,72.117));
|
||||
animscripts/combat_utility::func_238B(%favela_chaotic_crouchcover_grenadefirea,(4.53614,-10.4574,59.7186));
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
enable_militia_behavior()
|
||||
{
|
||||
if(self.type == "dog")
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self.neverenablecqb = 1;
|
||||
self.maxfaceenemydist = 256;
|
||||
if(animscripts/combat_utility::func_23BD())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(animscripts/utility::func_CEA(self.weapon))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self.disable_blindfire = undefined;
|
||||
self.favor_blindfire = 1;
|
||||
self.rambochance = 0.9;
|
||||
self.ramboaccuracymult = 1;
|
||||
self.baseaccuracy = 0.75;
|
||||
self.neversprintforvariation = undefined;
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
disable_militia_behavior()
|
||||
{
|
||||
self.favor_blindfire = undefined;
|
||||
self.rambochance = undefined;
|
||||
self.neverenablecqb = 0;
|
||||
self.maxfaceenemydist = 512;
|
||||
self.ramboaccuracymult = undefined;
|
||||
}
|
881
MW3/PC/SP/maps/_rank.gsc
Normal file
881
MW3/PC/SP/maps/_rank.gsc
Normal file
@ -0,0 +1,881 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_rank.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 41
|
||||
* Decompile Time: 520 ms
|
||||
* Timestamp: 10/27/2023 2:25:08 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
init()
|
||||
{
|
||||
maps\_hud::init();
|
||||
precachestring(&"RANK_PLAYER_WAS_PROMOTED_N");
|
||||
precachestring(&"RANK_PLAYER_WAS_PROMOTED");
|
||||
precachestring(&"RANK_PROMOTED");
|
||||
precachestring(&"RANK_ROMANI");
|
||||
precachestring(&"RANK_ROMANII");
|
||||
precachestring(&"RANK_ROMANIII");
|
||||
precachestring(&"SCRIPT_PLUS");
|
||||
precacheshader("line_horizontal");
|
||||
precacheshader("line_vertical");
|
||||
precacheshader("gradient_fadein");
|
||||
precacheshader("white");
|
||||
level.maxrank = int(tablelookup("sp/rankTable.csv",0,"maxrank",1));
|
||||
level.maxxp = int(tablelookup("sp/rankTable.csv",0,level.maxrank,7));
|
||||
var_00 = 0;
|
||||
for(var_00 = 0;var_00 <= level.maxrank;var_00++)
|
||||
{
|
||||
precacheshader(tablelookup("sp/rankTable.csv",0,var_00,6));
|
||||
}
|
||||
|
||||
var_01 = 0;
|
||||
var_02 = tablelookup("sp/ranktable.csv",0,var_01,1);
|
||||
while(isdefined(var_02) && var_02 != "")
|
||||
{
|
||||
level.ranktable[var_01][1] = tablelookup("sp/ranktable.csv",0,var_01,1);
|
||||
level.ranktable[var_01][2] = tablelookup("sp/ranktable.csv",0,var_01,2);
|
||||
level.ranktable[var_01][3] = tablelookup("sp/ranktable.csv",0,var_01,3);
|
||||
level.ranktable[var_01][7] = tablelookup("sp/ranktable.csv",0,var_01,7);
|
||||
precachestring(tablelookupistring("sp/ranktable.csv",0,var_01,10));
|
||||
var_01++;
|
||||
var_02 = tablelookup("sp/ranktable.csv",0,var_01,1);
|
||||
}
|
||||
|
||||
maps\_missions::buildchallengeinfo();
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
xp_init()
|
||||
{
|
||||
xp_setup();
|
||||
foreach(var_01 in level.players)
|
||||
{
|
||||
var_01 thread xp_player_init();
|
||||
var_01 thread maps\_missions::updatechallenges();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
xp_player_init()
|
||||
{
|
||||
if(!isdefined(self.summary))
|
||||
{
|
||||
self.summary["rankxp"] = self getplayerdata("experience");
|
||||
self.summary["rank"] = getrankforxp(self.summary["rankxp"]);
|
||||
}
|
||||
|
||||
update_rank_into_profile();
|
||||
self.rankupdatetotal = 0;
|
||||
self.hud_rankscroreupdate = newclienthudelem(self);
|
||||
self.hud_rankscroreupdate.horzalign = "center";
|
||||
self.hud_rankscroreupdate.vertalign = "middle";
|
||||
self.hud_rankscroreupdate.alignx = "center";
|
||||
self.hud_rankscroreupdate.aligny = "middle";
|
||||
self.hud_rankscroreupdate.x = 0;
|
||||
self.hud_rankscroreupdate.y = -60;
|
||||
self.hud_rankscroreupdate.font = "hudbig";
|
||||
self.hud_rankscroreupdate.fontscale = 0.75;
|
||||
self.hud_rankscroreupdate.archived = 0;
|
||||
self.hud_rankscroreupdate.color = (0.75,1,0.75);
|
||||
self.hud_rankscroreupdate fontpulseinit();
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
update_rank_into_profile()
|
||||
{
|
||||
var_00 = self getlocalplayerprofiledata("percentCompleteSO");
|
||||
var_01 = int(var_00 / 100);
|
||||
var_02 = getrank();
|
||||
var_03 = var_02 + var_01 * 100;
|
||||
self setlocalplayerprofiledata("percentCompleteSO",var_03);
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
xp_bar_client_elem(param_00)
|
||||
{
|
||||
var_01 = newclienthudelem(param_00);
|
||||
var_01.x = hud_width_format() / 2 * -1;
|
||||
var_01.y = 0;
|
||||
var_01.sort = 5;
|
||||
var_01.horzalign = "center_adjustable";
|
||||
var_01.vertalign = "bottom_adjustable";
|
||||
var_01.alignx = "left";
|
||||
var_01.aligny = "bottom";
|
||||
var_01 setshader("gradient_fadein",get_xpbarwidth(),4);
|
||||
var_01.color = (1,0.8,0.4);
|
||||
var_01.alpha = 0.65;
|
||||
var_01.foreground = 1;
|
||||
return var_01;
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
hud_width_format()
|
||||
{
|
||||
if(issplitscreen())
|
||||
{
|
||||
return 726;
|
||||
}
|
||||
|
||||
return 540;
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
xpbar_update()
|
||||
{
|
||||
if(!get_xpbarwidth())
|
||||
{
|
||||
self.hud_xpbar.alpha = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
self.hud_xpbar.alpha = 0.65;
|
||||
}
|
||||
|
||||
self.hud_xpbar setshader("gradient_fadein",get_xpbarwidth(),4);
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
get_xpbarwidth()
|
||||
{
|
||||
var_00 = int(tablelookup("sp/rankTable.csv",0,self.summary["rank"],3));
|
||||
var_01 = int(self.summary["rankxp"] - int(tablelookup("sp/rankTable.csv",0,self.summary["rank"],2)));
|
||||
var_02 = hud_width_format();
|
||||
var_03 = int(var_02 * var_01 / var_00);
|
||||
return var_03;
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
xp_setup()
|
||||
{
|
||||
if(!isdefined(level.scoreinfo) || !isdefined(level.scoreinfo.size))
|
||||
{
|
||||
level.scoreinfo = [];
|
||||
}
|
||||
|
||||
level.xpscale = 1;
|
||||
if(level.console)
|
||||
{
|
||||
level.xpscale = 1;
|
||||
}
|
||||
|
||||
registerscoreinfo("kill",100);
|
||||
registerscoreinfo("headshot",100);
|
||||
registerscoreinfo("assist",20);
|
||||
registerscoreinfo("suicide",0);
|
||||
registerscoreinfo("teamkill",0);
|
||||
registerscoreinfo("completion_xp",5000);
|
||||
level notify("rank_score_info_defaults_set");
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
givexp_think()
|
||||
{
|
||||
self waittill("death",var_00,var_01,var_02);
|
||||
if(isdefined(var_00) && isdefined(var_00.classname) && var_00.classname == "worldspawn" && isdefined(self.last_dmg_player))
|
||||
{
|
||||
var_00 = self.last_dmg_player;
|
||||
}
|
||||
|
||||
givexp_helper(var_00);
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
givexp_helper(param_00)
|
||||
{
|
||||
if(!isdefined(param_00))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(isai(param_00) && param_00 isbadguy())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(is_special_targetname_attacker(param_00))
|
||||
{
|
||||
if(isdefined(param_00.attacker))
|
||||
{
|
||||
thread givexp_helper(param_00.attacker);
|
||||
return;
|
||||
}
|
||||
|
||||
if(isdefined(param_00.damageowner))
|
||||
{
|
||||
thread givexp_helper(param_00.damageowner);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if(isplayer(param_00))
|
||||
{
|
||||
if(isdefined(level.givexp_kill_func))
|
||||
{
|
||||
param_00 thread [[ level.givexp_kill_func ]](self);
|
||||
}
|
||||
else
|
||||
{
|
||||
param_00 thread maps\_utility::givexp("kill");
|
||||
}
|
||||
}
|
||||
|
||||
if(maps\_utility::is_survival())
|
||||
{
|
||||
if(isai(param_00) && !param_00 isbadguy() && isdefined(param_00.owner) && isplayer(param_00.owner))
|
||||
{
|
||||
if(isdefined(level.givexp_kill_func))
|
||||
{
|
||||
param_00.owner thread [[ level.givexp_kill_func ]](self);
|
||||
}
|
||||
else
|
||||
{
|
||||
param_00.owner thread maps\_utility::givexp("kill");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(!isplayer(param_00) && !isai(param_00))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(!param_00 isbadguy() && isdefined(self.attacker_list) && self.attacker_list.size)
|
||||
{
|
||||
for(var_01 = 0;var_01 < self.attacker_list.size;var_01++)
|
||||
{
|
||||
if(isplayer(self.attacker_list[var_01]) && self.attacker_list[var_01] != param_00)
|
||||
{
|
||||
if(isdefined(self.kill_assist_xp))
|
||||
{
|
||||
self.attacker_list[var_01] thread maps\_utility::givexp("assist",self.kill_assist_xp);
|
||||
continue;
|
||||
}
|
||||
|
||||
self.attacker_list[var_01] thread maps\_utility::givexp("assist");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
is_special_targetname_attacker(param_00)
|
||||
{
|
||||
if(!isdefined(param_00.targetname))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(issubstr(param_00.targetname,"destructible"))
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
if(common_scripts\utility::string_starts_with(param_00.targetname,"sentry_"))
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
ai_xp_init()
|
||||
{
|
||||
thread givexp_think();
|
||||
self.attacker_list = [];
|
||||
self.last_attacked = 0;
|
||||
maps\_utility::add_damage_function(::xp_took_damage);
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
xp_took_damage(param_00,param_01,param_02,param_03,param_04,param_05,param_06)
|
||||
{
|
||||
if(!isdefined(param_01))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(!isdefined(self))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var_07 = gettime();
|
||||
var_08 = var_07 - self.last_attacked;
|
||||
if(var_08 <= 10000)
|
||||
{
|
||||
self.attacker_list = common_scripts\utility::array_remove(self.attacker_list,param_01);
|
||||
self.attacker_list[self.attacker_list.size] = param_01;
|
||||
self.last_attacked = gettime();
|
||||
return;
|
||||
}
|
||||
|
||||
self.attacker_list = [];
|
||||
self.attacker_list[0] = param_01;
|
||||
self.last_attacked = gettime();
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
updateplayerscore(param_00,param_01)
|
||||
{
|
||||
if(!isdefined(level.xp_enable) || !level.xp_enable)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(!isdefined(param_01))
|
||||
{
|
||||
if(isdefined(level.scoreinfo[param_00]))
|
||||
{
|
||||
param_01 = getscoreinfovalue(param_00);
|
||||
}
|
||||
else
|
||||
{
|
||||
param_01 = getscoreinfovalue("kill");
|
||||
}
|
||||
}
|
||||
|
||||
param_01 = int(param_01 * level.xpscale);
|
||||
if(param_00 == "assist")
|
||||
{
|
||||
if(param_01 > getscoreinfovalue("kill"))
|
||||
{
|
||||
param_01 = getscoreinfovalue("kill");
|
||||
}
|
||||
}
|
||||
|
||||
thread print_score_increment(param_01);
|
||||
self.summary["rankxp"] = self.summary["rankxp"] + param_01;
|
||||
if(updaterank())
|
||||
{
|
||||
thread updaterankannouncehud();
|
||||
update_rank_into_profile();
|
||||
}
|
||||
|
||||
if(self.summary["rankxp"] <= level.maxxp)
|
||||
{
|
||||
self setplayerdata("experience",self.summary["rankxp"]);
|
||||
}
|
||||
|
||||
if(self.summary["rankxp"] > level.maxxp)
|
||||
{
|
||||
self setplayerdata("experience",level.maxxp);
|
||||
}
|
||||
|
||||
waittillframeend;
|
||||
self notify("xp_updated",param_00);
|
||||
}
|
||||
|
||||
//Function Number: 16
|
||||
print_score_increment(param_00)
|
||||
{
|
||||
self notify("update_xp");
|
||||
self endon("update_xp");
|
||||
self.rankupdatetotal = self.rankupdatetotal + param_00;
|
||||
self.hud_rankscroreupdate.label = &"SCRIPT_PLUS";
|
||||
self.hud_rankscroreupdate setvalue(self.rankupdatetotal);
|
||||
self.hud_rankscroreupdate.alpha = 0.75;
|
||||
self.hud_rankscroreupdate thread fontpulse(self);
|
||||
self.hud_rankscroreupdate.x = 0;
|
||||
self.hud_rankscroreupdate.y = -60;
|
||||
wait 1;
|
||||
self.hud_rankscroreupdate fadeovertime(0.2);
|
||||
self.hud_rankscroreupdate.alpha = 0;
|
||||
self.hud_rankscroreupdate moveovertime(0.2);
|
||||
self.hud_rankscroreupdate.x = -240;
|
||||
self.hud_rankscroreupdate.y = 160;
|
||||
wait 0.5;
|
||||
self.hud_rankscroreupdate.x = 0;
|
||||
self.hud_rankscroreupdate.y = -60;
|
||||
self.rankupdatetotal = 0;
|
||||
}
|
||||
|
||||
//Function Number: 17
|
||||
fontpulseinit()
|
||||
{
|
||||
self.basefontscale = self.fontscale;
|
||||
self.maxfontscale = self.fontscale * 2;
|
||||
self.inframes = 3;
|
||||
self.outframes = 5;
|
||||
}
|
||||
|
||||
//Function Number: 18
|
||||
fontpulse(param_00)
|
||||
{
|
||||
self notify("fontPulse");
|
||||
self endon("fontPulse");
|
||||
var_01 = self.maxfontscale - self.basefontscale;
|
||||
while(self.fontscale < self.maxfontscale)
|
||||
{
|
||||
self.fontscale = min(self.maxfontscale,self.fontscale + var_01 / self.inframes);
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
while(self.fontscale > self.basefontscale)
|
||||
{
|
||||
self.fontscale = max(self.basefontscale,self.fontscale - var_01 / self.outframes);
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 19
|
||||
updaterank()
|
||||
{
|
||||
var_00 = getrank();
|
||||
if(var_00 == self.summary["rank"])
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
var_01 = self.summary["rank"];
|
||||
var_02 = self.summary["rank"];
|
||||
self.summary["rank"] = var_00;
|
||||
while(var_02 <= var_00)
|
||||
{
|
||||
self.setpromotion = 1;
|
||||
var_02++;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Function Number: 20
|
||||
updaterankannouncehud()
|
||||
{
|
||||
self endon("disconnect");
|
||||
self notify("update_rank");
|
||||
self endon("update_rank");
|
||||
self notify("reset_outcome");
|
||||
var_00 = getrankinfofull(self.summary["rank"]);
|
||||
var_01 = spawnstruct();
|
||||
var_01.titletext = &"RANK_PROMOTED";
|
||||
var_01.iconname = getrankinfoicon(self.summary["rank"]);
|
||||
var_01.sound = "sp_level_up";
|
||||
var_01.duration = 4;
|
||||
var_02 = level.ranktable[self.summary["rank"]][1];
|
||||
var_03 = int(var_02[var_02.size - 1]);
|
||||
var_01.notifytext = var_00;
|
||||
if(common_scripts\utility::flag_exist("special_op_final_xp_given") && common_scripts\utility::flag("special_op_final_xp_given"))
|
||||
{
|
||||
level.eog_summary_delay = int(max(0,var_01.duration - 2));
|
||||
}
|
||||
|
||||
thread notifymessage(var_01);
|
||||
if(var_03 > 1)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 21
|
||||
notifymessage(param_00)
|
||||
{
|
||||
self endon("death");
|
||||
self endon("disconnect");
|
||||
var_01 = 4;
|
||||
while(self.doingnotify && var_01 > 0)
|
||||
{
|
||||
var_01 = var_01 - 0.5;
|
||||
wait 0.5;
|
||||
}
|
||||
|
||||
thread shownotifymessage(param_00);
|
||||
}
|
||||
|
||||
//Function Number: 22
|
||||
stringtofloat(param_00)
|
||||
{
|
||||
var_01 = strtok(param_00,".");
|
||||
var_02 = int(var_01[0]);
|
||||
if(isdefined(var_01[1]))
|
||||
{
|
||||
var_03 = 1;
|
||||
for(var_04 = 0;var_04 < var_01[1].size;var_04++)
|
||||
{
|
||||
var_03 = var_03 * 0.1;
|
||||
}
|
||||
|
||||
var_02 = var_02 + int(var_01[1]) * var_03;
|
||||
}
|
||||
|
||||
return var_02;
|
||||
}
|
||||
|
||||
//Function Number: 23
|
||||
actionnotifymessage(param_00)
|
||||
{
|
||||
self endon("death");
|
||||
self endon("disconnect");
|
||||
var_01 = param_00.slot;
|
||||
if(tablelookup("sp/splashTable.csv",0,param_00.name,0) != "")
|
||||
{
|
||||
if(isdefined(param_00.optionalnumber))
|
||||
{
|
||||
self showhudsplash(param_00.name,param_00.slot,param_00.optionalnumber);
|
||||
}
|
||||
else
|
||||
{
|
||||
self showhudsplash(param_00.name,param_00.slot);
|
||||
}
|
||||
|
||||
self.doingsplash[var_01] = param_00;
|
||||
var_02 = stringtofloat(tablelookup("sp/splashTable.csv",0,param_00.name,4));
|
||||
if(isdefined(param_00.sound))
|
||||
{
|
||||
self playlocalsound(param_00.sound);
|
||||
}
|
||||
|
||||
self notify("actionNotifyMessage" + var_01);
|
||||
self endon("actionNotifyMessage" + var_01);
|
||||
wait var_02 - 0.05;
|
||||
self.doingsplash[var_01] = undefined;
|
||||
}
|
||||
|
||||
if(self.splashqueue[var_01].size)
|
||||
{
|
||||
thread dispatchnotify(var_01);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 24
|
||||
removetypefromqueue(param_00,param_01)
|
||||
{
|
||||
var_02 = [];
|
||||
for(var_03 = 0;var_03 < self.splashqueue[param_01].size;var_03++)
|
||||
{
|
||||
if(self.splashqueue[param_01][var_03].type != "killstreak")
|
||||
{
|
||||
var_02[var_02.size] = self.splashqueue[param_01][var_03];
|
||||
}
|
||||
}
|
||||
|
||||
self.splashqueue[param_01] = var_02;
|
||||
}
|
||||
|
||||
//Function Number: 25
|
||||
actionnotify(param_00)
|
||||
{
|
||||
self endon("death");
|
||||
self endon("disconnect");
|
||||
var_01 = param_00.slot;
|
||||
if(!isdefined(param_00.type))
|
||||
{
|
||||
param_00.type = "";
|
||||
}
|
||||
|
||||
if(!isdefined(self.doingsplash[var_01]))
|
||||
{
|
||||
thread actionnotifymessage(param_00);
|
||||
return;
|
||||
}
|
||||
else if(param_00.type == "killstreak" && self.doingsplash[var_01].type != "challenge" && self.doingsplash[var_01].type != "rank")
|
||||
{
|
||||
self.notifytext.alpha = 0;
|
||||
self.notifytext2.alpha = 0;
|
||||
self.notifyicon.alpha = 0;
|
||||
thread actionnotifymessage(param_00);
|
||||
return;
|
||||
}
|
||||
else if(param_00.type == "challenge" && self.doingsplash[var_01].type != "killstreak" && self.doingsplash[var_01].type != "challenge" && self.doingsplash[var_01].type != "rank")
|
||||
{
|
||||
self.notifytext.alpha = 0;
|
||||
self.notifytext2.alpha = 0;
|
||||
self.notifyicon.alpha = 0;
|
||||
thread actionnotifymessage(param_00);
|
||||
return;
|
||||
}
|
||||
|
||||
if(param_00.type == "challenge" || param_00.type == "killstreak")
|
||||
{
|
||||
if(param_00.type == "killstreak")
|
||||
{
|
||||
removetypefromqueue("killstreak",var_01);
|
||||
}
|
||||
|
||||
for(var_02 = self.splashqueue[var_01].size;var_02 > 0;var_02--)
|
||||
{
|
||||
self.splashqueue[var_01][var_02] = self.splashqueue[var_01][var_02 - 1];
|
||||
}
|
||||
|
||||
self.splashqueue[var_01][0] = param_00;
|
||||
return;
|
||||
}
|
||||
|
||||
self.splashqueue[var_01][self.splashqueue[var_01].size] = param_00;
|
||||
}
|
||||
|
||||
//Function Number: 26
|
||||
shownotifymessage(param_00)
|
||||
{
|
||||
self endon("disconnect");
|
||||
self.doingnotify = 1;
|
||||
waitrequirevisibility(0);
|
||||
if(isdefined(param_00.duration))
|
||||
{
|
||||
var_01 = param_00.duration;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_01 = 4;
|
||||
}
|
||||
|
||||
thread resetoncancel();
|
||||
if(isdefined(param_00.sound))
|
||||
{
|
||||
self playlocalsound(param_00.sound);
|
||||
}
|
||||
|
||||
if(isdefined(param_00.glowcolor))
|
||||
{
|
||||
var_02 = param_00.glowcolor;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_02 = (0.3,0.6,0.3);
|
||||
}
|
||||
|
||||
var_03 = self.notifytitle;
|
||||
if(isdefined(param_00.titletext))
|
||||
{
|
||||
if(isdefined(param_00.titlelabel))
|
||||
{
|
||||
self.notifytitle.label = param_00.titlelabel;
|
||||
}
|
||||
else
|
||||
{
|
||||
self.notifytitle.label = &"";
|
||||
}
|
||||
|
||||
if(isdefined(param_00.titlelabel) && !isdefined(param_00.titleisstring))
|
||||
{
|
||||
self.notifytitle setvalue(param_00.titletext);
|
||||
}
|
||||
else
|
||||
{
|
||||
self.notifytitle settext(param_00.titletext);
|
||||
}
|
||||
|
||||
self.notifytitle setpulsefx(100,int(var_01 * 1000),1000);
|
||||
self.notifytitle.glowcolor = var_02;
|
||||
self.notifytitle.alpha = 1;
|
||||
}
|
||||
|
||||
if(isdefined(param_00.notifytext))
|
||||
{
|
||||
if(isdefined(param_00.textlabel))
|
||||
{
|
||||
self.notifytext.label = param_00.textlabel;
|
||||
}
|
||||
else
|
||||
{
|
||||
self.notifytext.label = &"";
|
||||
}
|
||||
|
||||
if(isdefined(param_00.textlabel) && !isdefined(param_00.textisstring))
|
||||
{
|
||||
self.notifytext setvalue(param_00.notifytext);
|
||||
}
|
||||
else
|
||||
{
|
||||
self.notifytext settext(param_00.notifytext);
|
||||
}
|
||||
|
||||
self.notifytext setpulsefx(100,int(var_01 * 1000),1000);
|
||||
self.notifytext.glowcolor = var_02;
|
||||
self.notifytext.alpha = 1;
|
||||
var_03 = self.notifytext;
|
||||
}
|
||||
|
||||
if(isdefined(param_00.notifytext2))
|
||||
{
|
||||
self.notifytext2 maps\_hud_util::setparent(var_03);
|
||||
if(isdefined(param_00.text2label))
|
||||
{
|
||||
self.notifytext2.label = param_00.text2label;
|
||||
}
|
||||
else
|
||||
{
|
||||
self.notifytext2.label = &"";
|
||||
}
|
||||
|
||||
self.notifytext2 settext(param_00.notifytext2);
|
||||
self.notifytext2 setpulsefx(100,int(var_01 * 1000),1000);
|
||||
self.notifytext2.glowcolor = var_02;
|
||||
self.notifytext2.alpha = 1;
|
||||
var_03 = self.notifytext2;
|
||||
}
|
||||
|
||||
if(isdefined(param_00.iconname))
|
||||
{
|
||||
self.notifyicon maps\_hud_util::setparent(var_03);
|
||||
self.notifyicon setshader(param_00.iconname,60,60);
|
||||
self.notifyicon.alpha = 0;
|
||||
self.notifyicon fadeovertime(1);
|
||||
self.notifyicon.alpha = 1;
|
||||
waitrequirevisibility(var_01);
|
||||
self.notifyicon fadeovertime(0.75);
|
||||
self.notifyicon.alpha = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
waitrequirevisibility(var_01);
|
||||
}
|
||||
|
||||
self notify("notifyMessageDone");
|
||||
self.doingnotify = 0;
|
||||
}
|
||||
|
||||
//Function Number: 27
|
||||
resetoncancel()
|
||||
{
|
||||
self notify("resetOnCancel");
|
||||
self endon("resetOnCancel");
|
||||
self endon("notifyMessageDone");
|
||||
self endon("disconnect");
|
||||
level waittill("cancel_notify");
|
||||
self.notifytitle.alpha = 0;
|
||||
self.notifytext.alpha = 0;
|
||||
self.notifyicon.alpha = 0;
|
||||
self.doingnotify = 0;
|
||||
}
|
||||
|
||||
//Function Number: 28
|
||||
waitrequirevisibility(param_00)
|
||||
{
|
||||
var_01 = 0.05;
|
||||
while(!canreadtext())
|
||||
{
|
||||
wait var_01;
|
||||
}
|
||||
|
||||
while(param_00 > 0)
|
||||
{
|
||||
wait var_01;
|
||||
if(canreadtext())
|
||||
{
|
||||
param_00 = param_00 - var_01;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 29
|
||||
canreadtext()
|
||||
{
|
||||
if(isflashbanged())
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Function Number: 30
|
||||
isflashbanged()
|
||||
{
|
||||
return isdefined(self.flashendtime) && gettime() < self.flashendtime;
|
||||
}
|
||||
|
||||
//Function Number: 31
|
||||
dispatchnotify(param_00)
|
||||
{
|
||||
var_01 = self.splashqueue[param_00][0];
|
||||
for(var_02 = 1;var_02 < self.splashqueue[param_00].size;var_02++)
|
||||
{
|
||||
self.splashqueue[param_00][var_02 - 1] = self.splashqueue[param_00][var_02];
|
||||
}
|
||||
|
||||
self.splashqueue[param_00][var_02 - 1] = undefined;
|
||||
if(isdefined(var_01.name))
|
||||
{
|
||||
actionnotify(var_01);
|
||||
return;
|
||||
}
|
||||
|
||||
shownotifymessage(var_01);
|
||||
}
|
||||
|
||||
//Function Number: 32
|
||||
registerscoreinfo(param_00,param_01)
|
||||
{
|
||||
level.scoreinfo[param_00]["value"] = param_01;
|
||||
}
|
||||
|
||||
//Function Number: 33
|
||||
getscoreinfovalue(param_00)
|
||||
{
|
||||
return level.scoreinfo[param_00]["value"];
|
||||
}
|
||||
|
||||
//Function Number: 34
|
||||
getrankinfominxp(param_00)
|
||||
{
|
||||
return int(level.ranktable[param_00][2]);
|
||||
}
|
||||
|
||||
//Function Number: 35
|
||||
getrankinfoxpamt(param_00)
|
||||
{
|
||||
return int(level.ranktable[param_00][3]);
|
||||
}
|
||||
|
||||
//Function Number: 36
|
||||
getrankinfomaxxp(param_00)
|
||||
{
|
||||
return int(level.ranktable[param_00][7]);
|
||||
}
|
||||
|
||||
//Function Number: 37
|
||||
getrankinfofull(param_00)
|
||||
{
|
||||
return tablelookupistring("sp/ranktable.csv",0,param_00,5);
|
||||
}
|
||||
|
||||
//Function Number: 38
|
||||
getrankinfoicon(param_00)
|
||||
{
|
||||
return tablelookup("sp/rankTable.csv",0,param_00,6);
|
||||
}
|
||||
|
||||
//Function Number: 39
|
||||
getrank()
|
||||
{
|
||||
var_00 = self.summary["rankxp"];
|
||||
var_01 = self.summary["rank"];
|
||||
if(var_00 < getrankinfominxp(var_01) + getrankinfoxpamt(var_01))
|
||||
{
|
||||
return var_01;
|
||||
}
|
||||
|
||||
return getrankforxp(var_00);
|
||||
}
|
||||
|
||||
//Function Number: 40
|
||||
getrankforxp(param_00)
|
||||
{
|
||||
var_01 = 0;
|
||||
for(var_02 = level.ranktable[var_01][1];isdefined(var_02) && var_02 != "";var_02 = undefined)
|
||||
{
|
||||
if(param_00 < getrankinfominxp(var_01) + getrankinfoxpamt(var_01))
|
||||
{
|
||||
return var_01;
|
||||
}
|
||||
|
||||
var_01++;
|
||||
if(isdefined(level.ranktable[var_01]))
|
||||
{
|
||||
var_02 = level.ranktable[var_01][1];
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
var_01--;
|
||||
return var_01;
|
||||
}
|
||||
|
||||
//Function Number: 41
|
||||
getrankxp()
|
||||
{
|
||||
return self getplayerdata("experience");
|
||||
}
|
1922
MW3/PC/SP/maps/_remotemissile.gsc
Normal file
1922
MW3/PC/SP/maps/_remotemissile.gsc
Normal file
File diff suppressed because it is too large
Load Diff
164
MW3/PC/SP/maps/_remotemissile_utility.gsc
Normal file
164
MW3/PC/SP/maps/_remotemissile_utility.gsc
Normal file
@ -0,0 +1,164 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_remotemissile_utility.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 9
|
||||
* Decompile Time: 139 ms
|
||||
* Timestamp: 10/27/2023 2:20:51 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
setup_remote_missile_target()
|
||||
{
|
||||
if(!isdefined(level.remote_missile_targets))
|
||||
{
|
||||
level.remote_missile_targets = [];
|
||||
}
|
||||
|
||||
level.remote_missile_targets[self.unique_id] = self;
|
||||
if(isdefined(level.remotemissile.draw_red_boxes) && !isdefined(level.uav_is_destroyed))
|
||||
{
|
||||
level endon("draw_target_end");
|
||||
while(isdefined(level.setup_remote_missile_target_last_add_time) && level.setup_remote_missile_target_last_add_time == gettime())
|
||||
{
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
level.setup_remote_missile_target_last_add_time = gettime();
|
||||
if(isalive(self))
|
||||
{
|
||||
maps\_remotemissile::draw_target();
|
||||
}
|
||||
}
|
||||
|
||||
self waittill("death");
|
||||
level.remote_missile_targets[self.unique_id] = undefined;
|
||||
if(!isdefined(self))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(isdefined(self.has_target_shader))
|
||||
{
|
||||
self.has_target_shader = undefined;
|
||||
target_remove(self);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
player_uav_rig()
|
||||
{
|
||||
if(isdefined(level.uavrig))
|
||||
{
|
||||
return level.uavrig;
|
||||
}
|
||||
|
||||
var_00 = maps\_remotemissile::get_current_uav_rig();
|
||||
return var_00;
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
create_uav_rigs(param_00)
|
||||
{
|
||||
foreach(var_02 in level.players)
|
||||
{
|
||||
var_03 = common_scripts\utility::spawn_tag_origin();
|
||||
var_03.origin = self.origin;
|
||||
var_03.uav = self;
|
||||
var_03 thread maps\_remotemissile::run_rig_function_when_player_uses_uav(param_00,var_02);
|
||||
var_02 add_player_rig(var_03);
|
||||
var_02 thread maps\_remotemissile::cycle_uav_rigs();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
add_player_rig(param_00)
|
||||
{
|
||||
if(!isdefined(self.var_3BF0))
|
||||
{
|
||||
self.var_3BF0 = [];
|
||||
}
|
||||
|
||||
self.var_3BF0[self.var_3BF0.size] = param_00;
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
give_player_remote_missiles()
|
||||
{
|
||||
self giveweapon("remote_missile_detonator");
|
||||
self.remotemissile_actionslot = 4;
|
||||
thread remotemissile_with_autoreloading();
|
||||
common_scripts\utility::flag_clear("predator_missile_launch_allowed");
|
||||
self setactionslot(self.remotemissile_actionslot,"weapon","remote_missile_detonator");
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
remotemissile_reload()
|
||||
{
|
||||
level endon("stop_uav_reload");
|
||||
level endon("special_op_terminated");
|
||||
if(common_scripts\utility::flag("uav_reloading"))
|
||||
{
|
||||
if(isdefined(level.uav_is_destroyed))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
maps\_remotemissile::remove_uav_weapon();
|
||||
if(common_scripts\utility::flag("uav_collecting_stats"))
|
||||
{
|
||||
level waittill("uav_collecting_stats");
|
||||
maps\_remotemissile::play_kills_dialogue();
|
||||
}
|
||||
|
||||
if(isdefined(level.uav_is_destroyed))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
level.uav_user = undefined;
|
||||
if(common_scripts\utility::flag("uav_reloading"))
|
||||
{
|
||||
level waittill("uav_reloading");
|
||||
}
|
||||
|
||||
if(isdefined(level.uav_is_destroyed))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(!common_scripts\utility::flag("uav_enabled"))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(self getweaponammoclip(self.uav_weaponname) < 1)
|
||||
{
|
||||
maps\_remotemissile::disable_uav();
|
||||
return;
|
||||
}
|
||||
|
||||
maps\_remotemissile::restore_uav_weapon();
|
||||
thread maps\_remotemissile::remotemissile_radio("uav_online");
|
||||
thread maps\_remotemissile::remotemissile_radio_reminder();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
remotemissile_with_autoreloading()
|
||||
{
|
||||
maps\_remotemissile::remotemissile_player_input(::remotemissile_reload);
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
remotemissile_no_autoreload()
|
||||
{
|
||||
maps\_remotemissile::remotemissile_player_input();
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
remotemissile_move_player()
|
||||
{
|
||||
return isdefined(level.remotemissile_temp_move_player);
|
||||
}
|
476
MW3/PC/SP/maps/_riotshield.gsc
Normal file
476
MW3/PC/SP/maps/_riotshield.gsc
Normal file
@ -0,0 +1,476 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_riotshield.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 24
|
||||
* Decompile Time: 303 ms
|
||||
* Timestamp: 10/27/2023 2:20:38 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
init_riotshield()
|
||||
{
|
||||
if(isdefined(level.riotshield_initialized))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
level.riotshield_initialized = 1;
|
||||
level._effect["riot_shield_dmg"] = loadfx("misc/riot_shield_dmg");
|
||||
if(maps\_utility::is_specialop())
|
||||
{
|
||||
var_00 = [];
|
||||
if(!maps\_utility::is_survival())
|
||||
{
|
||||
}
|
||||
|
||||
maps\_specialops::so_include_deadquote_array(var_7B);
|
||||
}
|
||||
|
||||
if(!isdefined(level.subclass_spawn_functions))
|
||||
{
|
||||
level.subclass_spawn_functions = [];
|
||||
}
|
||||
|
||||
level.subclass_spawn_functions["riotshield"] = ::subclass_riotshield;
|
||||
animscripts/riotshield/riotshield::func_3AB4();
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
subclass_riotshield()
|
||||
{
|
||||
animscripts/riotshield/riotshield::func_3AB8();
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
riotshield_sprint_on()
|
||||
{
|
||||
animscripts/riotshield/riotshield::riotshield_sprint_on();
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
riotshield_fastwalk_on()
|
||||
{
|
||||
animscripts/riotshield/riotshield::riotshield_fastwalk_on();
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
riotshield_sprint_off()
|
||||
{
|
||||
animscripts/riotshield/riotshield::riotshield_sprint_off();
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
riotshield_fastwalk_off()
|
||||
{
|
||||
animscripts/riotshield/riotshield::riotshield_fastwalk_off();
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
riotshield_flee()
|
||||
{
|
||||
if(self.subclass != "riotshield")
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self.combatmode = "cover";
|
||||
self.goalradius = 2048;
|
||||
animscripts/riotshield/riotshield::func_3AD1();
|
||||
var_00 = self findbestcovernode();
|
||||
if(isdefined(var_00))
|
||||
{
|
||||
self usecovernode(var_00);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
group_create(param_00,param_01,param_02)
|
||||
{
|
||||
var_03 = [];
|
||||
foreach(var_05 in param_00)
|
||||
{
|
||||
if(var_05.combatmode != "no_cover")
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_03[var_03.size] = var_05;
|
||||
}
|
||||
|
||||
var_07 = spawnstruct();
|
||||
foreach(var_05 in var_03)
|
||||
{
|
||||
if(isdefined(var_05.group) && isdefined(var_05.group.ai_array))
|
||||
{
|
||||
var_05.group.ai_array = common_scripts\utility::array_remove(var_05.group.ai_array,var_05);
|
||||
}
|
||||
|
||||
var_05.group = var_07;
|
||||
}
|
||||
|
||||
var_07.ai_array = var_03;
|
||||
var_07.fleethreshold = 1;
|
||||
var_07.spacing = 50;
|
||||
var_07 thread group_check_deaths();
|
||||
return var_07;
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
group_initialize_formation(param_00,param_01)
|
||||
{
|
||||
self.ai_array = maps\_utility::array_removedead(self.ai_array);
|
||||
self.forward = param_00;
|
||||
if(isdefined(param_01))
|
||||
{
|
||||
self.spacing = param_01;
|
||||
}
|
||||
|
||||
foreach(var_03 in self.ai_array)
|
||||
{
|
||||
var_03.goalradius = 25;
|
||||
var_03.pathenemyfightdist = 128;
|
||||
var_03.pathenemylookahead = 128;
|
||||
}
|
||||
|
||||
group_sort_by_closest_match();
|
||||
thread check_group_facing_forward();
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
group_resort_on_deaths()
|
||||
{
|
||||
self endon("break_group");
|
||||
if(self.ai_array.size == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
while(self.ai_array.size)
|
||||
{
|
||||
maps\_utility::waittill_dead(self.ai_array,1);
|
||||
if(self.group_move_mode != "stopped")
|
||||
{
|
||||
self waittill("goal");
|
||||
}
|
||||
|
||||
self.ai_array = maps\_utility::array_removedead(self.ai_array);
|
||||
group_sort_by_closest_match();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
group_sort_by_closest_match(param_00)
|
||||
{
|
||||
if(self.ai_array.size == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(isdefined(param_00))
|
||||
{
|
||||
self.forward = param_00;
|
||||
}
|
||||
else
|
||||
{
|
||||
param_00 = self.forward;
|
||||
}
|
||||
|
||||
var_01 = group_center();
|
||||
var_02 = (self.forward[1],-1 * self.forward[0],0);
|
||||
var_03 = var_02 * self.spacing;
|
||||
var_04 = group_left_corner(var_01,var_03);
|
||||
var_05 = [];
|
||||
for(var_06 = 0;var_06 < self.ai_array.size;var_06++)
|
||||
{
|
||||
if(isdefined(self.ai_array[var_06]))
|
||||
{
|
||||
var_05[var_06] = vectordot(var_04 - self.ai_array[var_06].origin,var_02);
|
||||
continue;
|
||||
}
|
||||
|
||||
var_05[var_06] = 0;
|
||||
}
|
||||
|
||||
for(var_06 = 1;var_06 < var_05.size;var_06++)
|
||||
{
|
||||
var_07 = var_05[var_06];
|
||||
var_08 = self.ai_array[var_06];
|
||||
for(var_09 = var_06 - 1;var_09 >= 0;var_09--)
|
||||
{
|
||||
if(var_07 < var_05[var_09])
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
var_05[var_09 + 1] = var_05[var_09];
|
||||
self.ai_array[var_09 + 1] = self.ai_array[var_09];
|
||||
}
|
||||
|
||||
var_05[var_09 + 1] = var_07;
|
||||
self.ai_array[var_09 + 1] = var_08;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
group_check_deaths()
|
||||
{
|
||||
for(;;)
|
||||
{
|
||||
if(self.fleethreshold > 0)
|
||||
{
|
||||
self.ai_array = maps\_utility::array_removedead(self.ai_array);
|
||||
if(self.ai_array.size <= self.fleethreshold)
|
||||
{
|
||||
foreach(var_01 in self.ai_array)
|
||||
{
|
||||
var_01 riotshield_flee();
|
||||
}
|
||||
|
||||
self notify("break_group");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
wait 1;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
group_left_corner(param_00,param_01)
|
||||
{
|
||||
return param_00 - self.ai_array.size - 1 / 2 * param_01;
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
group_move(param_00,param_01)
|
||||
{
|
||||
self notify("new_goal_set");
|
||||
self.group_move_mode = "moving";
|
||||
if(isdefined(param_01))
|
||||
{
|
||||
self.forward = param_01;
|
||||
}
|
||||
else
|
||||
{
|
||||
param_01 = self.forward;
|
||||
}
|
||||
|
||||
var_02 = (param_01[1],-1 * param_01[0],0);
|
||||
var_03 = var_02 * self.spacing;
|
||||
var_04 = group_left_corner(param_00,var_03);
|
||||
for(var_05 = 0;var_05 < self.ai_array.size;var_05++)
|
||||
{
|
||||
var_06 = self.ai_array[var_05];
|
||||
if(isdefined(var_06))
|
||||
{
|
||||
var_06 setgoalpos(var_04);
|
||||
}
|
||||
|
||||
var_04 = var_04 + var_03;
|
||||
}
|
||||
|
||||
thread check_group_at_goal();
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
check_group_at_goal()
|
||||
{
|
||||
self endon("new_goal_set");
|
||||
for(;;)
|
||||
{
|
||||
wait 0.5;
|
||||
var_00 = 0;
|
||||
foreach(var_02 in self.ai_array)
|
||||
{
|
||||
if(isdefined(var_02) && isalive(var_02))
|
||||
{
|
||||
var_00++;
|
||||
}
|
||||
}
|
||||
|
||||
var_04 = 0;
|
||||
for(var_05 = 0;var_05 < self.ai_array.size;var_05++)
|
||||
{
|
||||
var_02 = self.ai_array[var_05];
|
||||
if(isdefined(var_02))
|
||||
{
|
||||
var_06 = max(45,var_02.goalradius);
|
||||
if(distancesquared(var_02.origin,var_02.goalpos) < squared(var_06))
|
||||
{
|
||||
var_04++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(var_04 == var_00)
|
||||
{
|
||||
self notify("goal");
|
||||
self.group_move_mode = "stopped";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 16
|
||||
check_group_facing_forward()
|
||||
{
|
||||
self endon("break_group");
|
||||
for(;;)
|
||||
{
|
||||
wait 0.5;
|
||||
var_00 = 0;
|
||||
foreach(var_02 in self.ai_array)
|
||||
{
|
||||
if(isdefined(var_02) && isalive(var_02))
|
||||
{
|
||||
var_00++;
|
||||
}
|
||||
}
|
||||
|
||||
var_04 = 0;
|
||||
var_05 = vectortoyaw(self.forward);
|
||||
for(var_06 = 0;var_06 < self.ai_array.size;var_06++)
|
||||
{
|
||||
var_02 = self.ai_array[var_06];
|
||||
if(isdefined(var_02))
|
||||
{
|
||||
if(abs(var_02.angles[1] - var_05) < 45)
|
||||
{
|
||||
var_04++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(var_04 == var_00)
|
||||
{
|
||||
self notify("goal_yaw");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 17
|
||||
group_sprint_on()
|
||||
{
|
||||
foreach(var_01 in self.ai_array)
|
||||
{
|
||||
if(isalive(var_01))
|
||||
{
|
||||
var_01 riotshield_sprint_on();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 18
|
||||
group_fastwalk_on()
|
||||
{
|
||||
foreach(var_01 in self.ai_array)
|
||||
{
|
||||
if(isalive(var_01))
|
||||
{
|
||||
var_01 riotshield_fastwalk_on();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 19
|
||||
group_sprint_off()
|
||||
{
|
||||
foreach(var_01 in self.ai_array)
|
||||
{
|
||||
if(isalive(var_01))
|
||||
{
|
||||
var_01 riotshield_sprint_off();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 20
|
||||
group_fastwalk_off()
|
||||
{
|
||||
foreach(var_01 in self.ai_array)
|
||||
{
|
||||
if(isalive(var_01))
|
||||
{
|
||||
var_01 riotshield_fastwalk_off();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 21
|
||||
group_lock_angles(param_00)
|
||||
{
|
||||
self.forward = param_00;
|
||||
var_01 = vectortoyaw(param_00);
|
||||
foreach(var_03 in self.ai_array)
|
||||
{
|
||||
if(!isdefined(var_03))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(isdefined(var_03.enemy) && distancesquared(var_03.origin,var_03.enemy.origin) < squared(var_03.pathenemyfightdist))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_03 orientmode("face angle",var_01);
|
||||
var_03.lockorientation = 1;
|
||||
}
|
||||
|
||||
wait 0.1;
|
||||
}
|
||||
|
||||
//Function Number: 22
|
||||
group_unlock_angles()
|
||||
{
|
||||
foreach(var_01 in self.ai_array)
|
||||
{
|
||||
if(!isdefined(var_01))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_01 orientmode("face default");
|
||||
var_01.lockorientation = 0;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 23
|
||||
group_free_combat()
|
||||
{
|
||||
group_unlock_angles();
|
||||
foreach(var_01 in self.ai_array)
|
||||
{
|
||||
if(!isdefined(var_01))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_01.goalradius = 2048;
|
||||
var_01.pathenemyfightdist = 400;
|
||||
var_01.pathenemylookahead = 400;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 24
|
||||
group_center()
|
||||
{
|
||||
var_00 = (0,0,0);
|
||||
var_01 = 0;
|
||||
foreach(var_03 in self.ai_array)
|
||||
{
|
||||
if(isdefined(var_03))
|
||||
{
|
||||
var_00 = var_00 + var_03.origin;
|
||||
var_01++;
|
||||
}
|
||||
}
|
||||
|
||||
if(var_01)
|
||||
{
|
||||
var_00 = 1 / var_01 * var_00;
|
||||
}
|
||||
|
||||
return var_00;
|
||||
}
|
555
MW3/PC/SP/maps/_sea.gsc
Normal file
555
MW3/PC/SP/maps/_sea.gsc
Normal file
@ -0,0 +1,555 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_sea.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 18
|
||||
* Decompile Time: 228 ms
|
||||
* Timestamp: 10/27/2023 2:20:17 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
level._sea_scale = 1;
|
||||
level.sea_model = getent("sea","targetname");
|
||||
level._sea_org = spawn("script_origin",level.sea_model.origin);
|
||||
level._sea_org.offset = level.sea_model.origin * -1;
|
||||
level._sea_org.sway = "sway2";
|
||||
level._sea_link = spawn("script_origin",level.sea_model.origin);
|
||||
level._sea_link.offset = level._sea_org.offset;
|
||||
level.sea_model linkto(level._sea_link);
|
||||
level.sea_foam = getent("sea_foam","targetname");
|
||||
if(isdefined(level.sea_foam))
|
||||
{
|
||||
level.sea_foam linkto(level._sea_link);
|
||||
level.sea_foam hide();
|
||||
}
|
||||
|
||||
level.sea_black = getent("sea_black","targetname");
|
||||
if(isdefined(level.sea_black))
|
||||
{
|
||||
level.sea_black linkto(level._sea_link);
|
||||
}
|
||||
|
||||
common_scripts\utility::flag_init("_sea_waves");
|
||||
common_scripts\utility::flag_init("_sea_viewbob");
|
||||
common_scripts\utility::flag_init("_sea_bob");
|
||||
common_scripts\utility::flag_set("_sea_bob");
|
||||
common_scripts\utility::flag_set("_sea_viewbob");
|
||||
var_00 = getentarray("boat_sway","script_noteworthy");
|
||||
if(isdefined(var_00))
|
||||
{
|
||||
common_scripts\utility::array_thread(var_00,::sea_objectbob,level._sea_org);
|
||||
}
|
||||
|
||||
thread sea_logic();
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
sea_logic()
|
||||
{
|
||||
wait 0.05;
|
||||
var_00 = getmapsundirection();
|
||||
setsundirection(var_00);
|
||||
level.lite_settings = vectortoangles(var_00);
|
||||
level.new_lite_settings = level.lite_settings;
|
||||
level._sea_org thread sea_bob();
|
||||
level._sea_org thread sea_waves();
|
||||
level._sea_org thread sea_viewbob();
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
sea_objectbob_precalc(param_00,param_01)
|
||||
{
|
||||
self.waittime = randomfloatrange(0.5,1);
|
||||
if(isdefined(self.setscale))
|
||||
{
|
||||
self.scale = self.setscale;
|
||||
}
|
||||
else
|
||||
{
|
||||
self.scale = randomfloatrange(2,3);
|
||||
}
|
||||
|
||||
var_02 = 0;
|
||||
var_03 = 0;
|
||||
switch(param_01)
|
||||
{
|
||||
case "sway1":
|
||||
var_02 = self.sway1max;
|
||||
break;
|
||||
|
||||
case "sway2":
|
||||
var_02 = self.sway2max;
|
||||
break;
|
||||
}
|
||||
|
||||
if(self.axial)
|
||||
{
|
||||
var_04 = param_00.rotation[0] * self.pratio * self.scale + param_00.rotation[2] * self.rratio * self.scale;
|
||||
if(var_02 < abs(var_04))
|
||||
{
|
||||
if(var_04 < 1)
|
||||
{
|
||||
var_03 = var_02 * -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_03 = var_02;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var_03 = var_04;
|
||||
}
|
||||
|
||||
self.ang = (self.angles[0],self.angles[1],var_03);
|
||||
return;
|
||||
}
|
||||
|
||||
self.ang = param_00.rotation * self.scale;
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
sea_objectbob(param_00)
|
||||
{
|
||||
if(isdefined(self.targetname))
|
||||
{
|
||||
var_01 = getentarray(self.targetname,"target");
|
||||
for(var_02 = 0;var_02 < var_01.size;var_02++)
|
||||
{
|
||||
var_01[var_02] linkto(self);
|
||||
}
|
||||
}
|
||||
|
||||
var_03 = common_scripts\utility::getstructarray(self.target,"targetname");
|
||||
var_04 = var_03[0].origin;
|
||||
var_05 = undefined;
|
||||
var_06 = spawn("script_origin",(0,0,0));
|
||||
var_06.axial = 0;
|
||||
if(isdefined(var_03[1]))
|
||||
{
|
||||
var_05 = var_03[1].origin;
|
||||
var_06.axial = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_07 = anglestoup(var_03[0].angles);
|
||||
var_07 = var_07 * 10;
|
||||
var_05 = var_04 + var_07;
|
||||
}
|
||||
|
||||
var_06.origin = var_04;
|
||||
var_06.angles = vectortoangles(var_05 - var_04);
|
||||
var_06.pratio = 1;
|
||||
var_06.rratio = 1;
|
||||
var_06.sway1max = 100;
|
||||
var_06.sway2max = 100;
|
||||
var_06.setscale = undefined;
|
||||
if(isdefined(var_03[0].script_parameters))
|
||||
{
|
||||
var_08 = strtok(var_03[0].script_parameters,":;, ");
|
||||
for(var_02 = 0;var_02 < var_08.size;var_02++)
|
||||
{
|
||||
switch(var_08[var_02])
|
||||
{
|
||||
case "axial":
|
||||
var_06.axial = 1;
|
||||
break;
|
||||
|
||||
case "sway1":
|
||||
var_02++;
|
||||
var_06.sway1max = int(var_08[var_02]);
|
||||
break;
|
||||
|
||||
case "sway2":
|
||||
var_02++;
|
||||
var_06.sway2max = int(var_08[var_02]);
|
||||
break;
|
||||
|
||||
case "setscale":
|
||||
var_02++;
|
||||
if(var_08[var_02] == "randomrange")
|
||||
{
|
||||
var_02++;
|
||||
var_09 = int(var_08[var_02]);
|
||||
var_02++;
|
||||
var_0A = int(var_08[var_02]);
|
||||
var_06.setscale = randomfloatrange(var_09,var_0A);
|
||||
}
|
||||
else
|
||||
{
|
||||
var_06.setscale = int(var_08[var_02]);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(var_06.axial)
|
||||
{
|
||||
var_0B = undefined;
|
||||
var_0C = (0,360,0);
|
||||
if(!isdefined(var_03[1]))
|
||||
{
|
||||
var_0B = var_03[0].angles;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_0B = vectortoangles(var_05 - var_04);
|
||||
}
|
||||
|
||||
var_06.rratio = vectordot(anglestoright(var_0B),anglestoright(var_0C));
|
||||
var_06.pratio = vectordot(anglestoright(var_0B),anglestoforward(var_0C));
|
||||
}
|
||||
|
||||
self.link = var_06;
|
||||
self notify("got_link");
|
||||
for(var_02 = 0;var_02 < var_03.size;var_02++)
|
||||
{
|
||||
var_03[var_02] thread sea_objectbob_findparent(var_06,param_00);
|
||||
}
|
||||
|
||||
wait 0.05;
|
||||
self linkto(var_06);
|
||||
if(isdefined(self.script_parameters))
|
||||
{
|
||||
}
|
||||
|
||||
thread sea_objectbob_logic(param_00,var_06);
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
sea_objectbob_logic(param_00,param_01)
|
||||
{
|
||||
for(;;)
|
||||
{
|
||||
if(param_00.sway == "sway2")
|
||||
{
|
||||
param_00 waittill("sway1");
|
||||
}
|
||||
|
||||
param_01 sea_objectbob_precalc(param_00,"sway1");
|
||||
param_01 notify("precalcdone1");
|
||||
if(!isdefined(param_01.parent))
|
||||
{
|
||||
wait param_01.waittime;
|
||||
}
|
||||
|
||||
param_01 rotateto(param_01.ang,param_00.time,param_00.time * 0.5,param_00.time * 0.5);
|
||||
if(param_00.sway == "sway1")
|
||||
{
|
||||
param_00 waittill("sway2");
|
||||
}
|
||||
|
||||
param_01 sea_objectbob_precalc(param_00,"sway2");
|
||||
param_01 notify("precalcdone2");
|
||||
if(!isdefined(param_01.parent))
|
||||
{
|
||||
wait param_01.waittime;
|
||||
}
|
||||
|
||||
param_01 rotateto(param_01.ang,param_00.time,param_00.time * 0.5,param_00.time * 0.5);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
sea_objectbob_follow(param_00)
|
||||
{
|
||||
for(;;)
|
||||
{
|
||||
self moveto(param_00.origin,0.1);
|
||||
wait 0.1;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
sea_objectbob_findparent(param_00,param_01)
|
||||
{
|
||||
if(!isdefined(self.target))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
param_00.parent = getent(self.target,"targetname");
|
||||
if(!isdefined(param_00.parent.link))
|
||||
{
|
||||
param_00.parent waittill("got_link");
|
||||
}
|
||||
|
||||
var_02 = param_00.parent.link;
|
||||
var_03 = param_00.origin;
|
||||
var_04 = spawn("script_origin",var_02.origin);
|
||||
var_04.angles = var_02.angles;
|
||||
var_05 = spawn("script_origin",param_00.origin);
|
||||
var_05.angles = param_00.angles;
|
||||
var_05 linkto(var_04);
|
||||
param_00 thread sea_objectbob_follow(var_05);
|
||||
for(;;)
|
||||
{
|
||||
var_02 waittill("precalcdone1");
|
||||
wait var_02.waittime - 0.05;
|
||||
var_04 rotateto(var_02.ang,param_01.time,param_01.time * 0.5,param_01.time * 0.5);
|
||||
var_02 waittill("precalcdone2");
|
||||
wait var_02.waittime - 0.05;
|
||||
var_04 rotateto(var_02.ang,param_01.time,param_01.time * 0.5,param_01.time * 0.5);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
sea_bob()
|
||||
{
|
||||
self endon("manual_override");
|
||||
common_scripts\utility::flag_wait("_sea_bob");
|
||||
thread sea_bob_reset();
|
||||
wait 0.05;
|
||||
for(;;)
|
||||
{
|
||||
var_00 = 0;
|
||||
var_01 = 0;
|
||||
var_02 = randomfloatrange(2,4) * level._sea_scale;
|
||||
self.time = randomfloatrange(3,4);
|
||||
self.rotation = (var_01,var_00,var_02);
|
||||
self.sway = "sway1";
|
||||
self notify("sway1");
|
||||
if(common_scripts\utility::flag("_sea_bob"))
|
||||
{
|
||||
level._sea_link rotateto(self.rotation,self.time,self.time * 0.5,self.time * 0.5);
|
||||
}
|
||||
|
||||
self rotateto(self.rotation,self.time,self.time * 0.5,self.time * 0.5);
|
||||
wait self.time;
|
||||
self.rotation = self.rotation * -1;
|
||||
self.sway = "sway2";
|
||||
self notify("sway2");
|
||||
if(common_scripts\utility::flag("_sea_bob"))
|
||||
{
|
||||
level._sea_link rotateto(self.rotation,self.time,self.time * 0.5,self.time * 0.5);
|
||||
}
|
||||
|
||||
self rotateto(self.rotation,self.time,self.time * 0.5,self.time * 0.5);
|
||||
wait self.time;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
sea_bob_reset_loop()
|
||||
{
|
||||
self endon("manual_override");
|
||||
common_scripts\utility::flag_wait("_sea_bob");
|
||||
thread sea_bob_reset();
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
sea_bob_reset()
|
||||
{
|
||||
self endon("manual_override");
|
||||
level waittill("_sea_bob");
|
||||
thread sea_bob_reset_loop();
|
||||
level endon("_sea_bob");
|
||||
var_00 = 1.5;
|
||||
var_01 = (0,0,0);
|
||||
level._sea_link rotateto(var_01,var_00,var_00 * 0.5,var_00 * 0.5);
|
||||
wait var_00;
|
||||
wait 0.05;
|
||||
level.new_lite_settings = level.lite_settings;
|
||||
level._sea_link.angles = (0,0,0);
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
sea_waves()
|
||||
{
|
||||
var_00 = sea_waves_setup();
|
||||
if(!isdefined(var_00))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self.oldwaves = [];
|
||||
for(;;)
|
||||
{
|
||||
common_scripts\utility::flag_wait("_sea_waves");
|
||||
self waittill("sway1");
|
||||
thread sea_waves_fx(var_00,"right");
|
||||
common_scripts\utility::flag_wait("_sea_waves");
|
||||
self waittill("sway2");
|
||||
thread sea_waves_fx(var_00,"left");
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
sea_waves_fx(param_00,param_01)
|
||||
{
|
||||
wait self.time * 0.5;
|
||||
var_02 = 2;
|
||||
var_03 = common_scripts\utility::random(sea_closestwavearray(param_00[param_01],var_02));
|
||||
if(!isdefined(self.oldwaves[param_01]))
|
||||
{
|
||||
self.oldwaves[param_01] = var_03;
|
||||
}
|
||||
|
||||
while(self.oldwaves[param_01] == var_03)
|
||||
{
|
||||
wait 0.05;
|
||||
var_03 = common_scripts\utility::random(sea_closestwavearray(param_00[param_01],var_02));
|
||||
}
|
||||
|
||||
self.oldwaves[param_01] = var_03;
|
||||
var_03 thread sea_waves_fx2();
|
||||
thread common_scripts\utility::play_sound_in_space("elm_wave_crash_ext",var_03.origin);
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
sea_waves_fx2()
|
||||
{
|
||||
wait randomfloat(0.15);
|
||||
common_scripts\utility::exploder(self.exploder.v["exploder"]);
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
sea_closestwavearray(param_00,param_01)
|
||||
{
|
||||
var_02 = [];
|
||||
for(var_03 = 0;var_03 < param_00.size;var_03++)
|
||||
{
|
||||
param_00[var_03]._sea_dist = distancesquared(param_00[var_03].origin,level.player.origin);
|
||||
}
|
||||
|
||||
for(var_03 = 0;var_03 < param_00.size;var_03++)
|
||||
{
|
||||
var_02 = sea_closestwavelogic(var_02,param_00[var_03]);
|
||||
}
|
||||
|
||||
var_04 = [];
|
||||
var_03 = 0;
|
||||
while(var_03 < param_01)
|
||||
{
|
||||
var_04++ = var_7B[var_03];
|
||||
}
|
||||
|
||||
return var_7B;
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
sea_closestwavelogic(param_00,param_01)
|
||||
{
|
||||
if(!param_00.size)
|
||||
{
|
||||
param_00[0] = param_01;
|
||||
return param_00;
|
||||
}
|
||||
|
||||
for(var_02 = 0;var_02 < param_00.size;var_02++)
|
||||
{
|
||||
if(param_00[var_02]._sea_dist > param_01._sea_dist)
|
||||
{
|
||||
param_00 = maps\_utility::array_insert(param_00,param_01,var_02);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(var_02 == param_00.size)
|
||||
{
|
||||
param_00 = maps\_utility::array_add(param_00,param_01);
|
||||
}
|
||||
|
||||
return param_00;
|
||||
}
|
||||
|
||||
//Function Number: 16
|
||||
sea_waves_setup()
|
||||
{
|
||||
var_00 = common_scripts\utility::getstructarray("wave_fx","targetname");
|
||||
var_01 = common_scripts\utility::getstruct("wave_fx_center","targetname");
|
||||
if(!var_00.size)
|
||||
{
|
||||
return undefined;
|
||||
}
|
||||
|
||||
var_02 = anglestoforward(var_01.angles);
|
||||
var_03 = anglestoright(var_01.angles);
|
||||
var_04 = [];
|
||||
for(var_05 = 0;var_05 < var_01.size;var_05++ = var_7B["left"])
|
||||
{
|
||||
var_01[var_05].forward = anglestoforward(var_01[var_05].angles);
|
||||
var_01[var_05].up = anglestoup(var_01[var_05].angles);
|
||||
var_01[var_05].right = anglestoright(var_01[var_05].angles);
|
||||
}
|
||||
|
||||
for(var_05 = 0;var_05 < var_01.size;var_05++ = [])
|
||||
{
|
||||
if(vectordot(var_01[var_05].forward,var_04) > 0)
|
||||
{
|
||||
var_7B["right"][var_7B["right"].size] = var_01[var_05];
|
||||
continue;
|
||||
}
|
||||
|
||||
var_7B["left"][var_7B["left"].size] = var_01[var_05];
|
||||
}
|
||||
|
||||
var_06 = level._waves_exploders;
|
||||
for(var_05 = 0;var_05 < var_06.size;var_05++ = var_7B["right"])
|
||||
{
|
||||
var_06[var_05].origin = var_06[var_05].v["origin"];
|
||||
}
|
||||
|
||||
for(var_05 = 0;var_05 < var_7B["right"].size;var_05++ = [])
|
||||
{
|
||||
var_07 = maps\_utility::getclosest(var_7B["right"][var_05].origin,var_06,64);
|
||||
var_06 = common_scripts\utility::array_remove(var_06,var_07);
|
||||
if(isdefined(var_7B["right"][var_05].angles))
|
||||
{
|
||||
var_07.v["forward"] = anglestoup(var_7B["right"][var_05].angles);
|
||||
}
|
||||
|
||||
var_7B["right"][var_05].exploder = var_07;
|
||||
}
|
||||
|
||||
for(var_05 = 0;var_05 < var_7B["left"].size;var_05++)
|
||||
{
|
||||
var_07 = maps\_utility::getclosest(var_7B["left"][var_05].origin,var_06,64);
|
||||
var_06 = common_scripts\utility::array_remove(var_06,var_07);
|
||||
if(isdefined(var_7B["left"][var_05].angles))
|
||||
{
|
||||
var_07.v["forward"] = anglestoup(var_7B["left"][var_05].angles);
|
||||
}
|
||||
|
||||
var_7B["left"][var_05].exploder = var_07;
|
||||
}
|
||||
|
||||
return var_7B;
|
||||
}
|
||||
|
||||
//Function Number: 17
|
||||
sea_litebob()
|
||||
{
|
||||
for(;;)
|
||||
{
|
||||
wait 0.2;
|
||||
var_00 = self.angles * 2;
|
||||
var_00 = (var_00[0],var_00[1],var_00[2]);
|
||||
var_01 = level.new_lite_settings;
|
||||
level.new_lite_settings = combineangles(var_00,level.lite_settings);
|
||||
var_02 = level.new_lite_settings;
|
||||
var_03 = anglestoforward(var_01);
|
||||
var_04 = anglestoforward(var_02);
|
||||
lerpsundirection(var_03,var_04,0.2);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 18
|
||||
sea_viewbob()
|
||||
{
|
||||
for(;;)
|
||||
{
|
||||
common_scripts\utility::flag_wait("_sea_viewbob");
|
||||
level.player playersetgroundreferenceent(self);
|
||||
if(common_scripts\utility::flag("_sea_viewbob"))
|
||||
{
|
||||
level waittill("_sea_viewbob");
|
||||
}
|
||||
|
||||
level.player playersetgroundreferenceent(undefined);
|
||||
}
|
||||
}
|
90
MW3/PC/SP/maps/_shellshock.gsc
Normal file
90
MW3/PC/SP/maps/_shellshock.gsc
Normal file
@ -0,0 +1,90 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_shellshock.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 3
|
||||
* Decompile Time: 34 ms
|
||||
* Timestamp: 10/27/2023 2:20:11 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main(param_00,param_01,param_02,param_03,param_04,param_05)
|
||||
{
|
||||
level thread internalmain(param_00,param_01,param_02,param_03,param_04,param_05);
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
internalmain(param_00,param_01,param_02,param_03,param_04,param_05)
|
||||
{
|
||||
if(!isdefined(param_00))
|
||||
{
|
||||
param_00 = 12;
|
||||
}
|
||||
else if(param_00 < 7)
|
||||
{
|
||||
param_00 = 7;
|
||||
}
|
||||
|
||||
if(!isdefined(param_01))
|
||||
{
|
||||
param_01 = 150;
|
||||
}
|
||||
|
||||
if(!isdefined(param_02))
|
||||
{
|
||||
param_02 = 100;
|
||||
}
|
||||
|
||||
if(!isdefined(param_03))
|
||||
{
|
||||
param_03 = 100;
|
||||
}
|
||||
|
||||
if(!isdefined(param_05))
|
||||
{
|
||||
var_06 = "default";
|
||||
}
|
||||
else
|
||||
{
|
||||
var_06 = var_06;
|
||||
}
|
||||
|
||||
var_07 = level.player getorigin() + (0,8,2);
|
||||
var_08 = 320;
|
||||
var_09 = param_01 + randomint(param_02);
|
||||
var_0A = param_03;
|
||||
level.player playsound("weapons_rocket_explosion");
|
||||
wait 0.25;
|
||||
radiusdamage(var_07,var_08,var_09,var_0A);
|
||||
earthquake(0.75,2,var_07,2250);
|
||||
if(isalive(level.player))
|
||||
{
|
||||
level.player allowstand(0);
|
||||
level.player allowcrouch(0);
|
||||
level.player allowprone(1);
|
||||
wait 0.15;
|
||||
level.player viewkick(127,level.player.origin);
|
||||
level.player shellshock(var_06,param_00);
|
||||
if(!isdefined(param_04))
|
||||
{
|
||||
level.player thread playerhitable(param_00);
|
||||
}
|
||||
|
||||
wait 1.5;
|
||||
level.player allowstand(1);
|
||||
level.player allowcrouch(1);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
playerhitable(param_00)
|
||||
{
|
||||
self.shellshocked = 1;
|
||||
self.ignoreme = 1;
|
||||
self notify("player is shell shocked");
|
||||
self endon("player is shell shocked");
|
||||
wait param_00 - 1;
|
||||
self.shellshocked = 0;
|
||||
self.ignoreme = 0;
|
||||
}
|
352
MW3/PC/SP/maps/_shutter.gsc
Normal file
352
MW3/PC/SP/maps/_shutter.gsc
Normal file
@ -0,0 +1,352 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_shutter.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 12
|
||||
* Decompile Time: 195 ms
|
||||
* Timestamp: 10/27/2023 2:22:57 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
if(!isdefined(level.windstrength))
|
||||
{
|
||||
level.windstrength = 0.2;
|
||||
}
|
||||
|
||||
level.animrate["awning"] = 1;
|
||||
level.animrate["palm"] = 1;
|
||||
level.animweightmin = level.windstrength - 0.5;
|
||||
level.animweightmax = level.windstrength + 0.2;
|
||||
if(level.animweightmin < 0.1)
|
||||
{
|
||||
level.animweightmin = 0.1;
|
||||
}
|
||||
|
||||
if(level.animweightmax > 1)
|
||||
{
|
||||
level.animweightmax = 1;
|
||||
}
|
||||
|
||||
level.inc = 0;
|
||||
awninganims();
|
||||
palmtree_anims();
|
||||
thread new_style_shutters();
|
||||
common_scripts\utility::array_levelthread(getentarray("wire","targetname"),::wirewander);
|
||||
common_scripts\utility::array_levelthread(getentarray("awning","targetname"),::awningwander);
|
||||
common_scripts\utility::array_levelthread(getentarray("palm","targetname"),::palmtrees);
|
||||
var_00 = [];
|
||||
var_01 = getentarray("shutter_left","targetname");
|
||||
var_00 = common_scripts\utility::array_combine(var_00,var_01);
|
||||
var_01 = getentarray("shutter_right_open","targetname");
|
||||
var_00 = common_scripts\utility::array_combine(var_00,var_01);
|
||||
var_01 = getentarray("shutter_left_closed","targetname");
|
||||
var_00 = common_scripts\utility::array_combine(var_00,var_01);
|
||||
foreach(var_03 in var_00)
|
||||
{
|
||||
var_03 addyaw(180);
|
||||
}
|
||||
|
||||
var_05 = [];
|
||||
var_01 = getentarray("shutter_right","targetname");
|
||||
var_05 = common_scripts\utility::array_combine(var_05,var_01);
|
||||
var_01 = getentarray("shutter_left_open","targetname");
|
||||
var_05 = common_scripts\utility::array_combine(var_05,var_01);
|
||||
var_01 = getentarray("shutter_right_closed","targetname");
|
||||
var_05 = common_scripts\utility::array_combine(var_05,var_01);
|
||||
wait 0.05;
|
||||
var_01 = common_scripts\utility::array_combine(var_00,var_05);
|
||||
foreach(var_03 in var_01)
|
||||
{
|
||||
var_03 thread shuttersound();
|
||||
var_03.startyaw = var_03.angles[1];
|
||||
}
|
||||
|
||||
var_01 = undefined;
|
||||
var_08 = "left";
|
||||
level endon("stop_shutters");
|
||||
for(;;)
|
||||
{
|
||||
common_scripts\utility::array_levelthread(var_00,::shutterwanderleft,var_08);
|
||||
common_scripts\utility::array_levelthread(var_05,::shutterwanderright,var_08);
|
||||
level waittill("wind blows",var_08);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
windcontroller()
|
||||
{
|
||||
for(;;)
|
||||
{
|
||||
var_00 = "left";
|
||||
if(randomint(100) > 50)
|
||||
{
|
||||
var_00 = "right";
|
||||
}
|
||||
|
||||
level notify("wind blows",var_00);
|
||||
wait 2 + randomfloat(10);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
new_style_shutters()
|
||||
{
|
||||
var_00 = getentarray("shutter","targetname");
|
||||
foreach(var_02 in var_00)
|
||||
{
|
||||
var_03 = getent(var_02.target,"targetname");
|
||||
var_04 = spawn("script_origin",var_02.origin);
|
||||
var_04.angles = var_03.angles;
|
||||
var_04.startyaw = var_04.angles[1];
|
||||
var_02.pivot = var_04;
|
||||
var_02 linkto(var_04);
|
||||
var_04 addyaw(randomfloatrange(-90,90));
|
||||
var_02 thread shuttersound();
|
||||
}
|
||||
|
||||
level endon("stop_shutters");
|
||||
var_06 = "left";
|
||||
for(;;)
|
||||
{
|
||||
common_scripts\utility::array_levelthread(var_00,::shutterwander,var_06);
|
||||
level waittill("wind blows",var_06);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
shutterwander(param_00,param_01)
|
||||
{
|
||||
level endon("stop_shutters");
|
||||
level endon("wind blows");
|
||||
var_02 = param_00.pivot;
|
||||
var_03 = randomint(3) + 1;
|
||||
var_04 = 1;
|
||||
if(common_scripts\utility::cointoss())
|
||||
{
|
||||
var_04 = var_04 * -1;
|
||||
}
|
||||
|
||||
var_05 = 80;
|
||||
var_06 = 80;
|
||||
if(isdefined(param_00.script_max_left_angle))
|
||||
{
|
||||
var_06 = param_00.script_max_left_angle;
|
||||
}
|
||||
|
||||
if(isdefined(param_00.script_max_right_angle))
|
||||
{
|
||||
var_05 = param_00.script_max_right_angle;
|
||||
}
|
||||
|
||||
for(;;)
|
||||
{
|
||||
param_00 notify("shutterSound");
|
||||
var_07 = randomintrange(50,80);
|
||||
var_03--;
|
||||
if(!var_03)
|
||||
{
|
||||
var_03 = randomint(3) + 1;
|
||||
var_04 = var_04 * -1;
|
||||
}
|
||||
|
||||
var_07 = var_07 * var_04;
|
||||
if(var_04 > 0)
|
||||
{
|
||||
if(var_07 > var_05)
|
||||
{
|
||||
var_07 = var_05;
|
||||
}
|
||||
}
|
||||
else if(var_07 > var_06)
|
||||
{
|
||||
var_07 = var_06;
|
||||
}
|
||||
|
||||
var_08 = var_02.startyaw + var_07;
|
||||
var_09 = abs(var_02.angles[1] - var_08);
|
||||
var_0A = var_09 * 0.05 + randomfloat(1) + 0.25;
|
||||
if(var_0A < 0.25)
|
||||
{
|
||||
var_0A = 0.25;
|
||||
}
|
||||
|
||||
var_02 rotateto((0,var_08,0),var_0A,var_0A * 0.5,var_0A * 0.5);
|
||||
wait var_0A;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
shutterwanderleft(param_00,param_01)
|
||||
{
|
||||
level endon("stop_shutters");
|
||||
level.inc++;
|
||||
level endon("wind blows");
|
||||
var_02 = param_00.startyaw;
|
||||
if(param_01 == "left")
|
||||
{
|
||||
var_02 = var_02 + 179.9;
|
||||
}
|
||||
|
||||
var_03 = 0.2;
|
||||
param_00 rotateto((param_00.angles[0],var_02,param_00.angles[2]),var_03);
|
||||
wait var_03 + 0.1;
|
||||
for(;;)
|
||||
{
|
||||
param_00 notify("shutterSound");
|
||||
var_04 = randomint(80);
|
||||
if(common_scripts\utility::cointoss())
|
||||
{
|
||||
var_04 = var_04 * -1;
|
||||
}
|
||||
|
||||
var_02 = param_00.angles[1] + var_04;
|
||||
var_05 = param_00.angles[1] + var_04 * -1;
|
||||
if(var_02 < param_00.startyaw || var_02 > param_00.startyaw + 179)
|
||||
{
|
||||
var_02 = var_05;
|
||||
}
|
||||
|
||||
var_06 = abs(param_00.angles[1] - var_02);
|
||||
var_03 = var_06 * 0.02 + randomfloat(2);
|
||||
if(var_03 < 0.3)
|
||||
{
|
||||
var_03 = 0.3;
|
||||
}
|
||||
|
||||
param_00 rotateto((param_00.angles[0],var_02,param_00.angles[2]),var_03,var_03 * 0.5,var_03 * 0.5);
|
||||
wait var_03;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
shutterwanderright(param_00,param_01)
|
||||
{
|
||||
level endon("stop_shutters");
|
||||
level.inc++;
|
||||
level endon("wind blows");
|
||||
var_02 = param_00.startyaw;
|
||||
if(param_01 == "left")
|
||||
{
|
||||
var_02 = var_02 + 179.9;
|
||||
}
|
||||
|
||||
var_03 = 0.2;
|
||||
param_00 rotateto((param_00.angles[0],var_02,param_00.angles[2]),var_03);
|
||||
wait var_03 + 0.1;
|
||||
for(;;)
|
||||
{
|
||||
param_00 notify("shutterSound");
|
||||
var_04 = randomint(80);
|
||||
if(randomint(100) > 50)
|
||||
{
|
||||
var_04 = var_04 * -1;
|
||||
}
|
||||
|
||||
var_02 = param_00.angles[1] + var_04;
|
||||
var_05 = param_00.angles[1] + var_04 * -1;
|
||||
if(var_02 < param_00.startyaw || var_02 > param_00.startyaw + 179)
|
||||
{
|
||||
var_02 = var_05;
|
||||
}
|
||||
|
||||
var_06 = abs(param_00.angles[1] - var_02);
|
||||
var_03 = var_06 * 0.02 + randomfloat(2);
|
||||
if(var_03 < 0.3)
|
||||
{
|
||||
var_03 = 0.3;
|
||||
}
|
||||
|
||||
param_00 rotateto((param_00.angles[0],var_02,param_00.angles[2]),var_03,var_03 * 0.5,var_03 * 0.5);
|
||||
wait var_03;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
shuttersound()
|
||||
{
|
||||
for(;;)
|
||||
{
|
||||
self waittill("shutterSound");
|
||||
self waittill("sounddone");
|
||||
wait randomfloat(2);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
wirewander(param_00)
|
||||
{
|
||||
var_01 = getentarray(param_00.target,"targetname");
|
||||
var_02 = var_01[0].origin;
|
||||
var_03 = var_01[1].origin;
|
||||
var_04 = vectortoangles(var_02 - var_03);
|
||||
var_05 = spawn("script_model",(0,0,0));
|
||||
var_05.origin = var_02 * 0.5 + var_03 * 0.5;
|
||||
var_05.angles = var_04;
|
||||
param_00 linkto(var_05);
|
||||
var_06 = 2;
|
||||
var_07 = 0.9;
|
||||
var_08 = 4 + randomfloat(2);
|
||||
var_05 rotateroll(var_08 * 0.5,0.2);
|
||||
wait 0.2;
|
||||
for(;;)
|
||||
{
|
||||
var_09 = var_06 + randomfloat(var_07) - var_07 * 0.5;
|
||||
var_05 rotateroll(var_08,var_09,var_09 * 0.5,var_09 * 0.5);
|
||||
wait var_09;
|
||||
var_05 rotateroll(var_08 * -1,var_09,var_09 * 0.5,var_09 * 0.5);
|
||||
wait var_09;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
awninganims()
|
||||
{
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
awningwander(param_00)
|
||||
{
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
palmtree_anims()
|
||||
{
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
palmtrees(param_00)
|
||||
{
|
||||
param_00 useanimtree(#animtree);
|
||||
switch(param_00.model)
|
||||
{
|
||||
case "tree_desertpalm01":
|
||||
param_00.animname = "ree_desertpalm01";
|
||||
break;
|
||||
|
||||
case "tree_desertpalm02":
|
||||
param_00.animname = "tree_desertpalm02";
|
||||
break;
|
||||
|
||||
case "tree_desertpalm03":
|
||||
param_00.animname = "tree_desertpalm03";
|
||||
break;
|
||||
}
|
||||
|
||||
if(!isdefined(param_00.animname))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
wait randomfloat(2);
|
||||
for(;;)
|
||||
{
|
||||
var_01 = level.animweightmin + randomfloat(level.animweightmax - level.animweightmin);
|
||||
var_02 = 4;
|
||||
param_00 setanim(level.scr_anim[param_00.animname]["wind"][0],var_01,var_02,level.animrate["palm"]);
|
||||
param_00 setanim(level.scr_anim[param_00.animname]["wind"][1],1 - var_01,var_02,level.animrate["palm"]);
|
||||
wait 1 + randomfloat(3);
|
||||
}
|
||||
}
|
3239
MW3/PC/SP/maps/_so_survival_ai.gsc
Normal file
3239
MW3/PC/SP/maps/_so_survival_ai.gsc
Normal file
File diff suppressed because it is too large
Load Diff
2244
MW3/PC/SP/maps/_so_survival_armory.gsc
Normal file
2244
MW3/PC/SP/maps/_so_survival_armory.gsc
Normal file
File diff suppressed because it is too large
Load Diff
578
MW3/PC/SP/maps/_so_survival_challenge.gsc
Normal file
578
MW3/PC/SP/maps/_so_survival_challenge.gsc
Normal file
@ -0,0 +1,578 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_so_survival_challenge.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 33
|
||||
* Decompile Time: 538 ms
|
||||
* Timestamp: 10/27/2023 2:21:27 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
precache_challenge_strings()
|
||||
{
|
||||
precachestring(&"SO_SURVIVAL_SUR_CH_HEADSHOT");
|
||||
precachestring(&"SO_SURVIVAL_SUR_CH_STREAK");
|
||||
precachestring(&"SO_SURVIVAL_SUR_CH_STAGGER");
|
||||
precachestring(&"SO_SURVIVAL_SUR_CH_QUADKILL");
|
||||
precachestring(&"SO_SURVIVAL_SUR_CH_FLASH");
|
||||
precachestring(&"SO_SURVIVAL_SUR_CH_KNIFE");
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
ch_populate()
|
||||
{
|
||||
var_00 = 0;
|
||||
var_01 = 20;
|
||||
var_02 = [];
|
||||
for(var_03 = var_00;var_03 <= var_01;var_03++)
|
||||
{
|
||||
var_04 = ch_get_ref_by_index(var_03);
|
||||
if(!isdefined(var_04) || var_04 == "")
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
var_05 = spawnstruct();
|
||||
var_05.idx = var_03;
|
||||
var_05.ref = var_04;
|
||||
var_05.name = ch_get_name(var_04);
|
||||
var_05.var_189B = ch_get_desc(var_04);
|
||||
var_05.splash = ch_get_splash(var_04);
|
||||
var_05.icon = ch_get_icon(var_04);
|
||||
var_05.requirement = ch_get_requirement(var_04);
|
||||
var_05.xp = ch_get_xp(var_04);
|
||||
var_05.repeatable = ch_get_repeatable(var_04);
|
||||
var_05.carry = ch_get_carry(var_04);
|
||||
var_05.wave_active = ch_get_wave_active(var_04);
|
||||
var_05.wave_inactive = ch_get_wave_inactive(var_04);
|
||||
var_05.func = challenge_func_director(var_04);
|
||||
var_02[var_04] = var_05;
|
||||
}
|
||||
|
||||
return var_02;
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
challenge_init()
|
||||
{
|
||||
level.sur_ch = ch_populate();
|
||||
common_scripts\utility::flag_init("challenge_monitor_busy");
|
||||
maps\_utility::add_global_spawn_function("axis",::track_melee_streak);
|
||||
maps\_utility::add_global_spawn_function("axis",::track_flash_kill);
|
||||
foreach(var_01 in level.players)
|
||||
{
|
||||
var_01 thread sur_challenge_think();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
sur_challenge_think()
|
||||
{
|
||||
wait 0.05;
|
||||
for(var_00 = 0;var_00 < 5;var_00++)
|
||||
{
|
||||
maps\_specialops::surhud_challenge_label(var_00,"");
|
||||
maps\_specialops::surhud_challenge_progress(var_00,0);
|
||||
maps\_specialops::surhud_challenge_reward(var_00,0);
|
||||
}
|
||||
|
||||
maps\_specialops::surhud_disable("challenge");
|
||||
common_scripts\utility::flag_wait("start_survival");
|
||||
for(;;)
|
||||
{
|
||||
var_01 = [];
|
||||
foreach(var_03 in level.sur_ch)
|
||||
{
|
||||
if(var_03.wave_active == 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(var_03.wave_inactive == 0)
|
||||
{
|
||||
if(level.current_wave >= var_03.wave_active)
|
||||
{
|
||||
var_01[var_01.size] = var_03;
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if(level.current_wave >= var_03.wave_active && level.current_wave <= var_03.wave_inactive)
|
||||
{
|
||||
var_01[var_01.size] = var_03;
|
||||
}
|
||||
}
|
||||
|
||||
var_05 = 0;
|
||||
var_01 = maps\_utility::array_randomize(var_01);
|
||||
self.selected_ch_array = [];
|
||||
self.completed_ch = [];
|
||||
foreach(var_07 in var_01)
|
||||
{
|
||||
if(var_05 == 2)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
self.selected_ch_array[var_07.ref] = spawnstruct();
|
||||
self.selected_ch_array[var_07.ref].index = var_05;
|
||||
self.selected_ch_array[var_07.ref].struct = var_07;
|
||||
self.completed_ch[var_07.ref] = 0;
|
||||
self thread [[ var_07.func ]](var_07.ref);
|
||||
var_05++;
|
||||
}
|
||||
|
||||
maps\_specialops::surhud_animate("challenge");
|
||||
level waittill("wave_ended");
|
||||
level waittill("wave_started");
|
||||
self notify("challenge_reset");
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
challenge_func_director(param_00)
|
||||
{
|
||||
switch(param_00)
|
||||
{
|
||||
case "sur_ch_headshot":
|
||||
return ::sur_ch_headshot;
|
||||
|
||||
case "sur_ch_streak":
|
||||
return ::sur_ch_streak;
|
||||
|
||||
case "sur_ch_stagger":
|
||||
return ::sur_ch_stagger;
|
||||
|
||||
case "sur_ch_quadkill":
|
||||
return ::sur_ch_quadkill;
|
||||
|
||||
case "sur_ch_knife":
|
||||
return ::sur_ch_knife;
|
||||
|
||||
case "sur_ch_flash":
|
||||
return ::sur_ch_flash;
|
||||
}
|
||||
|
||||
return undefined;
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
sur_ch_generic(param_00)
|
||||
{
|
||||
self endon("death");
|
||||
self endon("challenge_reset");
|
||||
var_01 = self.selected_ch_array[param_00].index;
|
||||
var_02 = ch_get_requirement(param_00);
|
||||
var_03 = ch_get_xp(param_00);
|
||||
var_04 = ch_get_carry(param_00);
|
||||
var_05 = ch_get_repeatable(param_00);
|
||||
self.selected_ch_array[param_00].completed = 0;
|
||||
self.selected_ch_array[param_00].progress = 0;
|
||||
thread setup_ch_progress_bar(var_01,param_00);
|
||||
var_06 = undefined;
|
||||
for(;;)
|
||||
{
|
||||
while(self.selected_ch_array[param_00].progress < var_02)
|
||||
{
|
||||
self waittill(param_00,var_07,var_06);
|
||||
if(!isdefined(var_07))
|
||||
{
|
||||
var_07 = 1;
|
||||
}
|
||||
|
||||
if(var_07 < 0)
|
||||
{
|
||||
self.selected_ch_array[param_00].progress = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
self.selected_ch_array[param_00].progress = self.selected_ch_array[param_00].progress + var_07;
|
||||
}
|
||||
|
||||
thread ch_progress_bar_update(param_00);
|
||||
}
|
||||
|
||||
if(isdefined(var_06) && isai(var_06))
|
||||
{
|
||||
playfx(level._effect["money"],var_06.origin + (0,0,32));
|
||||
}
|
||||
|
||||
self.selected_ch_array[param_00].progress = 0;
|
||||
self.selected_ch_array[param_00].completed++;
|
||||
var_08 = self.selected_ch_array[param_00].completed * ch_get_xp(param_00);
|
||||
maps\_utility::givexp(param_00,var_08);
|
||||
thread indicate_completion(param_00,var_08);
|
||||
while(common_scripts\utility::flag("challenge_monitor_busy"))
|
||||
{
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
self notify("challenge_complete",param_00);
|
||||
maps\_utility::delaythread(0.05,::ch_progress_bar_update,param_00);
|
||||
if(!var_05)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
generic_kill_monitor(param_00,param_01)
|
||||
{
|
||||
self endon("death");
|
||||
self endon("challenge_reset");
|
||||
for(;;)
|
||||
{
|
||||
var_02 = self.stats["kills"];
|
||||
level waittill("specops_player_kill",var_03,var_04,var_05,var_06);
|
||||
if(!isalive(var_03) || var_03 != self)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
waittillframeend;
|
||||
if(var_02 < self.stats["kills"])
|
||||
{
|
||||
var_07 = self.stats["kills"] - var_02;
|
||||
for(var_08 = 0;var_08 < var_07;var_08++)
|
||||
{
|
||||
self notify(param_00,param_01,var_04);
|
||||
waittillframeend;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
sur_ch_flash(param_00)
|
||||
{
|
||||
thread sur_ch_generic(param_00);
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
track_flash_kill()
|
||||
{
|
||||
level endon("special_op_terminated");
|
||||
if(!isai(self))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self waittill("death",var_00,var_01,var_02);
|
||||
if(!isdefined(var_00) || !isplayer(var_00))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(common_scripts\utility::isflashed())
|
||||
{
|
||||
var_00 notify("sur_ch_flash",1);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
sur_ch_knife(param_00)
|
||||
{
|
||||
thread sur_ch_generic(param_00);
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
track_melee_streak()
|
||||
{
|
||||
level endon("special_op_terminated");
|
||||
if(!isai(self))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self waittill("death",var_00,var_01,var_02);
|
||||
if(!isdefined(var_00) || !isplayer(var_00))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(isdefined(var_02) && weapontype(var_02) == "riotshield")
|
||||
{
|
||||
var_00 notify("sur_ch_knife",-1);
|
||||
return;
|
||||
}
|
||||
|
||||
if(isdefined(var_01) && var_01 == "MOD_MELEE")
|
||||
{
|
||||
var_00 notify("sur_ch_knife",1);
|
||||
return;
|
||||
}
|
||||
|
||||
var_00 notify("sur_ch_knife",-1);
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
sur_ch_quadkill(param_00)
|
||||
{
|
||||
thread sur_ch_generic(param_00);
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
sur_ch_headshot(param_00)
|
||||
{
|
||||
thread sur_ch_generic(param_00);
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
sur_ch_streak(param_00)
|
||||
{
|
||||
self endon("death");
|
||||
self endon("challenge_reset");
|
||||
thread sur_ch_generic(param_00);
|
||||
waittillframeend;
|
||||
thread generic_kill_monitor(param_00,1);
|
||||
thread streak_reset(param_00);
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
streak_reset(param_00)
|
||||
{
|
||||
self endon("death");
|
||||
self endon("challenge_reset");
|
||||
for(;;)
|
||||
{
|
||||
self waittill("damage",var_01,var_02);
|
||||
if(isdefined(var_02) && isai(var_02))
|
||||
{
|
||||
self notify(param_00,-1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 16
|
||||
sur_ch_stagger(param_00)
|
||||
{
|
||||
self endon("death");
|
||||
self endon("challenge_reset");
|
||||
thread sur_ch_generic(param_00);
|
||||
waittillframeend;
|
||||
thread generic_kill_monitor(param_00,6);
|
||||
thread stagger_decay(param_00);
|
||||
}
|
||||
|
||||
//Function Number: 17
|
||||
stagger_decay(param_00)
|
||||
{
|
||||
self endon("death");
|
||||
self endon("challenge_reset");
|
||||
var_01 = 5;
|
||||
var_01 = min(20,var_01);
|
||||
var_02 = 1 / var_01;
|
||||
for(;;)
|
||||
{
|
||||
var_03 = 2;
|
||||
while(self.selected_ch_array[param_00].progress == 0)
|
||||
{
|
||||
common_scripts\utility::waittill_any_timeout(var_03,param_00);
|
||||
}
|
||||
|
||||
if(level.survival_wave_intermission)
|
||||
{
|
||||
level waittill("wave_started");
|
||||
wait var_03;
|
||||
}
|
||||
|
||||
for(var_04 = 0;var_04 < var_01;var_04++)
|
||||
{
|
||||
wait 1 / var_01;
|
||||
var_05 = self.selected_ch_array[param_00].progress;
|
||||
self.selected_ch_array[param_00].progress = max(0,var_05 - var_02);
|
||||
thread ch_progress_bar_update(param_00);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 18
|
||||
setup_ch_progress_bar(param_00,param_01)
|
||||
{
|
||||
maps\_specialops::surhud_challenge_label(param_00,ch_get_name(param_01));
|
||||
thread ch_progress_bar_update(param_01);
|
||||
}
|
||||
|
||||
//Function Number: 19
|
||||
ch_progress_bar_update(param_00)
|
||||
{
|
||||
var_01 = self.selected_ch_array[param_00].index;
|
||||
var_02 = self.selected_ch_array[param_00].progress;
|
||||
var_03 = self.selected_ch_array[param_00].completed + 1;
|
||||
var_04 = ch_get_requirement(param_00);
|
||||
maps\_specialops::surhud_challenge_reward(var_01,ch_get_xp(param_00) * var_03);
|
||||
maps\_specialops::surhud_challenge_progress(var_01,int(var_02 / var_04 * 100) / 100);
|
||||
}
|
||||
|
||||
//Function Number: 20
|
||||
indicate_completion(param_00,param_01)
|
||||
{
|
||||
if(isdefined(self.doingnotify) && self.doingnotify)
|
||||
{
|
||||
while(self.doingnotify)
|
||||
{
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
var_02 = spawnstruct();
|
||||
var_02.duration = 2.5;
|
||||
var_02.sound = "survival_bonus_splash";
|
||||
var_02.type = "wave";
|
||||
var_02.title_font = "hudbig";
|
||||
var_02.playsoundlocally = 1;
|
||||
var_02.zoomin = 1;
|
||||
var_02.var_3E34 = 1;
|
||||
var_02.fadein = 1;
|
||||
var_02.fadeout = 1;
|
||||
var_02.title_glowcolor = (0.85,0.35,0.15);
|
||||
var_02.title_color = (0.95,0.95,0.9);
|
||||
var_02.title = ch_get_splash(param_00);
|
||||
var_02.title_set_value = param_01;
|
||||
if(issplitscreen())
|
||||
{
|
||||
var_02.title_basefontscale = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_02.title_basefontscale = 1.1;
|
||||
}
|
||||
|
||||
maps\_so_survival_code::splash_notify_message(var_02);
|
||||
}
|
||||
|
||||
//Function Number: 21
|
||||
ch_exist(param_00)
|
||||
{
|
||||
return isdefined(level.sur_ch) && isdefined(level.sur_ch[param_00]);
|
||||
}
|
||||
|
||||
//Function Number: 22
|
||||
ch_get_index_by_ref(param_00)
|
||||
{
|
||||
if(ch_exist(param_00))
|
||||
{
|
||||
return level.sur_ch[param_00].idx;
|
||||
}
|
||||
|
||||
return tablelookup("sp/survival_challenge.csv",1,param_00,0);
|
||||
}
|
||||
|
||||
//Function Number: 23
|
||||
ch_get_ref_by_index(param_00)
|
||||
{
|
||||
return tablelookup("sp/survival_challenge.csv",0,param_00,1);
|
||||
}
|
||||
|
||||
//Function Number: 24
|
||||
ch_get_name(param_00)
|
||||
{
|
||||
if(ch_exist(param_00))
|
||||
{
|
||||
return level.sur_ch[param_00].name;
|
||||
}
|
||||
|
||||
return tablelookup("sp/survival_challenge.csv",1,param_00,2);
|
||||
}
|
||||
|
||||
//Function Number: 25
|
||||
ch_get_desc(param_00)
|
||||
{
|
||||
if(ch_exist(param_00))
|
||||
{
|
||||
return level.sur_ch[param_00].var_189B;
|
||||
}
|
||||
|
||||
return tablelookup("sp/survival_challenge.csv",1,param_00,3);
|
||||
}
|
||||
|
||||
//Function Number: 26
|
||||
ch_get_splash(param_00)
|
||||
{
|
||||
if(ch_exist(param_00))
|
||||
{
|
||||
return level.sur_ch[param_00].splash;
|
||||
}
|
||||
|
||||
return tablelookupistring("sp/survival_challenge.csv",1,param_00,4);
|
||||
}
|
||||
|
||||
//Function Number: 27
|
||||
ch_get_icon(param_00)
|
||||
{
|
||||
if(ch_exist(param_00))
|
||||
{
|
||||
return level.sur_ch[param_00].icon;
|
||||
}
|
||||
|
||||
return tablelookup("sp/survival_challenge.csv",1,param_00,5);
|
||||
}
|
||||
|
||||
//Function Number: 28
|
||||
ch_get_requirement(param_00)
|
||||
{
|
||||
if(ch_exist(param_00))
|
||||
{
|
||||
return level.sur_ch[param_00].requirement;
|
||||
}
|
||||
|
||||
return int(tablelookup("sp/survival_challenge.csv",1,param_00,6));
|
||||
}
|
||||
|
||||
//Function Number: 29
|
||||
ch_get_xp(param_00)
|
||||
{
|
||||
if(ch_exist(param_00))
|
||||
{
|
||||
return level.sur_ch[param_00].xp;
|
||||
}
|
||||
|
||||
return int(tablelookup("sp/survival_challenge.csv",1,param_00,7));
|
||||
}
|
||||
|
||||
//Function Number: 30
|
||||
ch_get_repeatable(param_00)
|
||||
{
|
||||
if(ch_exist(param_00))
|
||||
{
|
||||
return level.sur_ch[param_00].repeatable;
|
||||
}
|
||||
|
||||
return int(tablelookup("sp/survival_challenge.csv",1,param_00,8));
|
||||
}
|
||||
|
||||
//Function Number: 31
|
||||
ch_get_carry(param_00)
|
||||
{
|
||||
if(ch_exist(param_00))
|
||||
{
|
||||
return level.sur_ch[param_00].carry;
|
||||
}
|
||||
|
||||
return int(tablelookup("sp/survival_challenge.csv",1,param_00,9));
|
||||
}
|
||||
|
||||
//Function Number: 32
|
||||
ch_get_wave_active(param_00)
|
||||
{
|
||||
if(ch_exist(param_00))
|
||||
{
|
||||
return level.sur_ch[param_00].wave_active;
|
||||
}
|
||||
|
||||
return int(tablelookup("sp/survival_challenge.csv",1,param_00,10));
|
||||
}
|
||||
|
||||
//Function Number: 33
|
||||
ch_get_wave_inactive(param_00)
|
||||
{
|
||||
if(ch_exist(param_00))
|
||||
{
|
||||
return level.sur_ch[param_00].wave_inactive;
|
||||
}
|
||||
|
||||
return int(tablelookup("sp/survival_challenge.csv",1,param_00,11));
|
||||
}
|
5798
MW3/PC/SP/maps/_so_survival_chaos.gsc
Normal file
5798
MW3/PC/SP/maps/_so_survival_chaos.gsc
Normal file
File diff suppressed because it is too large
Load Diff
873
MW3/PC/SP/maps/_so_survival_chaos_entities.gsc
Normal file
873
MW3/PC/SP/maps/_so_survival_chaos_entities.gsc
Normal file
@ -0,0 +1,873 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_so_survival_chaos_entities.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 24
|
||||
* Decompile Time: 453 ms
|
||||
* Timestamp: 10/27/2023 2:19:12 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
get_level(param_00)
|
||||
{
|
||||
return tablelookup(level.chaos_entity_table,0,param_00,1);
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
get_level_weapon(param_00)
|
||||
{
|
||||
return tablelookup(level.chaos_entity_table,0,param_00,2);
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
get_level_weapon_position(param_00)
|
||||
{
|
||||
return tablelookup(level.chaos_entity_table,0,param_00,3);
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
get_level_drop_location(param_00)
|
||||
{
|
||||
return tablelookup(level.chaos_drop_location_table,0,param_00,2);
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
get_level_drop_item(param_00)
|
||||
{
|
||||
return tablelookup(level.chaos_drop_item_table,0,param_00,3);
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
get_level_drop_wave(param_00)
|
||||
{
|
||||
return tablelookup(level.chaos_drop_item_table,0,param_00,2);
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
get_level_ai_size_wave(param_00)
|
||||
{
|
||||
return tablelookup(level.constant_ai_size_table,0,param_00,2);
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
get_level_ai_size(param_00)
|
||||
{
|
||||
return tablelookup(level.constant_ai_size_table,0,param_00,3);
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
get_ai_size_level(param_00)
|
||||
{
|
||||
return tablelookup(level.constant_ai_size_table,0,param_00,1);
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
get_drop_distance_level(param_00)
|
||||
{
|
||||
return tablelookup(level.desired_drop_distance_table,0,param_00,1);
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
get_level_desired_drop_distance(param_00)
|
||||
{
|
||||
return tablelookup(level.desired_drop_distance_table,0,param_00,2);
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
get_level_starting_lives_remaining(param_00)
|
||||
{
|
||||
return tablelookup(level.desired_drop_distance_table,0,param_00,3);
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
chaos_entities_precache()
|
||||
{
|
||||
if(!isdefined(level.chaos_entity_table))
|
||||
{
|
||||
level.chaos_entity_table = "sp/survival_chaos_entities.csv";
|
||||
}
|
||||
|
||||
var_00 = getdvar("mapname");
|
||||
for(var_01 = 100;var_01 <= 1700;var_01++)
|
||||
{
|
||||
var_02 = get_level(var_01);
|
||||
if(!isdefined(var_02) || var_02 == "" || var_02 != var_00)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_03 = get_level_weapon(var_01);
|
||||
if(!isdefined(var_03) || var_03 == "")
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_04 = get_level_weapon_position(var_01);
|
||||
if(!isdefined(var_04) || var_04 == "")
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_05 = strtok(var_04,",");
|
||||
if(!isdefined(var_05) || var_05.size != 3)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(!isdefined(level.chaos_weapon_locations))
|
||||
{
|
||||
level.chaos_weapon_locations = [];
|
||||
}
|
||||
|
||||
precacheitem(var_03);
|
||||
level.chaos_weapon_locations[var_03] = (float(var_05[0]),float(var_05[1]),float(var_05[2]));
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
chaos_entities_place()
|
||||
{
|
||||
level.chaos_entities = [];
|
||||
foreach(var_09, var_01 in level.chaos_weapon_locations)
|
||||
{
|
||||
var_02 = getweaponmodel(var_09);
|
||||
var_03 = common_scripts\utility::spawn_tag_origin();
|
||||
var_03.origin = var_01 + (0,0,48);
|
||||
var_03.var_5C39 = var_09;
|
||||
var_03.trigger = spawn("trigger_radius",var_03.origin,0,48,48);
|
||||
var_04 = (8,0,0);
|
||||
var_05 = (0,0,0);
|
||||
if(issubstr(var_09,"akimbo"))
|
||||
{
|
||||
var_03.akimbo = 1;
|
||||
var_06 = var_04 + (0,-6,0);
|
||||
var_07 = var_04 + (0,6,0);
|
||||
var_03.weapon_models[0] = spawn("script_model",var_03.origin);
|
||||
var_03.weapon_models[0] setmodel(var_02);
|
||||
var_03.weapon_models[0] linkto(var_03,"tag_origin",var_06,var_05 + (15,0,0));
|
||||
var_03.weapon_models[1] = spawn("script_model",var_03.origin);
|
||||
var_03.weapon_models[1] setmodel(var_02);
|
||||
var_03.weapon_models[1] linkto(var_03,"tag_origin",var_07,var_05 + (15,0,0));
|
||||
}
|
||||
else
|
||||
{
|
||||
var_03.akimbo = 0;
|
||||
var_03.weapon_models[0] = spawn("script_model",var_03.origin);
|
||||
var_03.weapon_models[0] setmodel(var_02);
|
||||
var_03.weapon_models[0] linkto(var_03,"tag_origin",var_04,var_05);
|
||||
}
|
||||
|
||||
var_03 thread chaos_entity_rotate();
|
||||
var_03.display_name = get_weapon_display_name(var_09);
|
||||
var_08 = chaos_get_weapon_class(var_09);
|
||||
var_03.hud_icon = get_weapon_hud_icon(var_08);
|
||||
var_03 thread chaos_weapon_collect();
|
||||
var_03.headiconforplayer = [];
|
||||
level.chaos_entities[level.chaos_entities.size] = var_03;
|
||||
}
|
||||
|
||||
level.chaos_weapon_locations = undefined;
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
get_weapon_hud_icon(param_00)
|
||||
{
|
||||
var_01 = "";
|
||||
if(param_00 == "FG")
|
||||
{
|
||||
var_01 = "specops_ui_equipmentstore";
|
||||
}
|
||||
else if(param_00 == "SG")
|
||||
{
|
||||
var_01 = "specops_ui_weaponstore";
|
||||
}
|
||||
else if(param_00 == "AR")
|
||||
{
|
||||
var_01 = "specops_ui_weaponstore";
|
||||
}
|
||||
else if(param_00 == "SN")
|
||||
{
|
||||
var_01 = "specops_ui_weaponstore";
|
||||
}
|
||||
else if(param_00 == "Akimbo")
|
||||
{
|
||||
var_01 = "specops_ui_weaponstore";
|
||||
}
|
||||
else if(param_00 == "LMG")
|
||||
{
|
||||
var_01 = "specops_ui_weaponstore";
|
||||
}
|
||||
else if(param_00 == "SMG")
|
||||
{
|
||||
var_01 = "specops_ui_weaponstore";
|
||||
}
|
||||
else if(param_00 == "HG")
|
||||
{
|
||||
var_01 = "specops_ui_weaponstore";
|
||||
}
|
||||
else if(param_00 == "RPG")
|
||||
{
|
||||
var_01 = "specops_ui_weaponstore";
|
||||
}
|
||||
|
||||
return var_01;
|
||||
}
|
||||
|
||||
//Function Number: 16
|
||||
chaos_get_weapon_class(param_00)
|
||||
{
|
||||
var_01 = "";
|
||||
if(issubstr(param_00,"claymore"))
|
||||
{
|
||||
var_01 = "FG";
|
||||
}
|
||||
else if(issubstr(param_00,"c4"))
|
||||
{
|
||||
var_01 = "FG";
|
||||
}
|
||||
else if(issubstr(param_00,"flash"))
|
||||
{
|
||||
var_01 = "FG";
|
||||
}
|
||||
else if(issubstr(param_00,"1887"))
|
||||
{
|
||||
var_01 = "SG";
|
||||
}
|
||||
else if(issubstr(param_00,"aa12"))
|
||||
{
|
||||
var_01 = "SG";
|
||||
}
|
||||
else if(issubstr(param_00,"acr"))
|
||||
{
|
||||
var_01 = "AR";
|
||||
}
|
||||
else if(issubstr(param_00,"ak47"))
|
||||
{
|
||||
var_01 = "AR";
|
||||
}
|
||||
else if(issubstr(param_00,"as50"))
|
||||
{
|
||||
var_01 = "SN";
|
||||
}
|
||||
else if(issubstr(param_00,"cm901"))
|
||||
{
|
||||
var_01 = "AR";
|
||||
}
|
||||
else if(issubstr(param_00,"fad"))
|
||||
{
|
||||
var_01 = "AR";
|
||||
}
|
||||
else if(issubstr(param_00,"fmg9"))
|
||||
{
|
||||
var_01 = "Akimbo";
|
||||
}
|
||||
else if(issubstr(param_00,"g18"))
|
||||
{
|
||||
var_01 = "Akimbo";
|
||||
}
|
||||
else if(issubstr(param_00,"mg36"))
|
||||
{
|
||||
var_01 = "LMG";
|
||||
}
|
||||
else if(issubstr(param_00,"g36"))
|
||||
{
|
||||
var_01 = "AR";
|
||||
}
|
||||
else if(issubstr(param_00,"m16"))
|
||||
{
|
||||
var_01 = "AR";
|
||||
}
|
||||
else if(issubstr(param_00,"m4"))
|
||||
{
|
||||
var_01 = "AR";
|
||||
}
|
||||
else if(issubstr(param_00,"m60"))
|
||||
{
|
||||
var_01 = "LMG";
|
||||
}
|
||||
else if(issubstr(param_00,"m9"))
|
||||
{
|
||||
var_01 = "SMG";
|
||||
}
|
||||
else if(issubstr(param_00,"mk14"))
|
||||
{
|
||||
var_01 = "AR";
|
||||
}
|
||||
else if(issubstr(param_00,"mk46"))
|
||||
{
|
||||
var_01 = "LMG";
|
||||
}
|
||||
else if(issubstr(param_00,"mp5"))
|
||||
{
|
||||
var_01 = "SMG";
|
||||
}
|
||||
else if(issubstr(param_00,"mp7"))
|
||||
{
|
||||
var_01 = "SMG";
|
||||
}
|
||||
else if(issubstr(param_00,"mp9"))
|
||||
{
|
||||
var_01 = "Akimbo";
|
||||
}
|
||||
else if(issubstr(param_00,"pp90"))
|
||||
{
|
||||
var_01 = "SMG";
|
||||
}
|
||||
else if(issubstr(param_00,"p90"))
|
||||
{
|
||||
var_01 = "SMG";
|
||||
}
|
||||
else if(issubstr(param_00,"pecheneg"))
|
||||
{
|
||||
var_01 = "LMG";
|
||||
}
|
||||
else if(issubstr(param_00,"rsass"))
|
||||
{
|
||||
var_01 = "SN";
|
||||
}
|
||||
else if(issubstr(param_00,"sa80"))
|
||||
{
|
||||
var_01 = "LMG";
|
||||
}
|
||||
else if(issubstr(param_00,"scar"))
|
||||
{
|
||||
var_01 = "AR";
|
||||
}
|
||||
else if(issubstr(param_00,"skorpion"))
|
||||
{
|
||||
var_01 = "Akimbo";
|
||||
}
|
||||
else if(issubstr(param_00,"striker"))
|
||||
{
|
||||
var_01 = "SG";
|
||||
}
|
||||
else if(issubstr(param_00,"type95"))
|
||||
{
|
||||
var_01 = "AR";
|
||||
}
|
||||
else if(issubstr(param_00,"usp45"))
|
||||
{
|
||||
var_01 = "HG";
|
||||
}
|
||||
else if(issubstr(param_00,"ump45"))
|
||||
{
|
||||
var_01 = "SMG";
|
||||
}
|
||||
else if(issubstr(param_00,"usas12"))
|
||||
{
|
||||
var_01 = "SG";
|
||||
}
|
||||
else if(issubstr(param_00,"rpg"))
|
||||
{
|
||||
var_01 = "RPG";
|
||||
}
|
||||
|
||||
return var_01;
|
||||
}
|
||||
|
||||
//Function Number: 17
|
||||
get_weapon_display_name(param_00)
|
||||
{
|
||||
var_01 = undefined;
|
||||
if(issubstr(param_00,"claymore"))
|
||||
{
|
||||
var_01 = &"SO_SURVIVAL_CHAOS_PICKUP_CLAYMORE";
|
||||
}
|
||||
else if(issubstr(param_00,"c4"))
|
||||
{
|
||||
var_01 = &"SO_SURVIVAL_CHAOS_PICKUP_C4";
|
||||
}
|
||||
else if(issubstr(param_00,"flash"))
|
||||
{
|
||||
var_01 = &"SO_SURVIVAL_CHAOS_PICKUP_FLASH";
|
||||
}
|
||||
else if(issubstr(param_00,"1887"))
|
||||
{
|
||||
var_01 = &"SO_SURVIVAL_CHAOS_PICKUP_1887";
|
||||
}
|
||||
else if(issubstr(param_00,"aa12"))
|
||||
{
|
||||
var_01 = &"SO_SURVIVAL_CHAOS_PICKUP_AA12";
|
||||
}
|
||||
else if(issubstr(param_00,"acr"))
|
||||
{
|
||||
var_01 = &"SO_SURVIVAL_CHAOS_PICKUP_ACR";
|
||||
}
|
||||
else if(issubstr(param_00,"ak47"))
|
||||
{
|
||||
var_01 = &"SO_SURVIVAL_CHAOS_PICKUP_AK47";
|
||||
}
|
||||
else if(issubstr(param_00,"as50"))
|
||||
{
|
||||
var_01 = &"SO_SURVIVAL_CHAOS_PICKUP_AS50";
|
||||
}
|
||||
else if(issubstr(param_00,"cm901"))
|
||||
{
|
||||
var_01 = &"SO_SURVIVAL_CHAOS_PICKUP_CM901";
|
||||
}
|
||||
else if(issubstr(param_00,"fad"))
|
||||
{
|
||||
var_01 = &"SO_SURVIVAL_CHAOS_PICKUP_FAD";
|
||||
}
|
||||
else if(issubstr(param_00,"fmg9"))
|
||||
{
|
||||
var_01 = &"SO_SURVIVAL_CHAOS_PICKUP_FMG9";
|
||||
}
|
||||
else if(issubstr(param_00,"g18"))
|
||||
{
|
||||
var_01 = &"SO_SURVIVAL_CHAOS_PICKUP_G18";
|
||||
}
|
||||
else if(issubstr(param_00,"mg36"))
|
||||
{
|
||||
var_01 = &"SO_SURVIVAL_CHAOS_PICKUP_MG36";
|
||||
}
|
||||
else if(issubstr(param_00,"g36"))
|
||||
{
|
||||
var_01 = &"SO_SURVIVAL_CHAOS_PICKUP_G36";
|
||||
}
|
||||
else if(issubstr(param_00,"m16"))
|
||||
{
|
||||
var_01 = &"SO_SURVIVAL_CHAOS_PICKUP_M16";
|
||||
}
|
||||
else if(issubstr(param_00,"m4"))
|
||||
{
|
||||
var_01 = &"SO_SURVIVAL_CHAOS_PICKUP_M4";
|
||||
}
|
||||
else if(issubstr(param_00,"m60"))
|
||||
{
|
||||
var_01 = &"SO_SURVIVAL_CHAOS_PICKUP_M60";
|
||||
}
|
||||
else if(issubstr(param_00,"m9"))
|
||||
{
|
||||
var_01 = &"SO_SURVIVAL_CHAOS_PICKUP_M9";
|
||||
}
|
||||
else if(issubstr(param_00,"mk14"))
|
||||
{
|
||||
var_01 = &"SO_SURVIVAL_CHAOS_PICKUP_MK14";
|
||||
}
|
||||
else if(issubstr(param_00,"mk46"))
|
||||
{
|
||||
var_01 = &"SO_SURVIVAL_CHAOS_PICKUP_MK46";
|
||||
}
|
||||
else if(issubstr(param_00,"mp5"))
|
||||
{
|
||||
var_01 = &"SO_SURVIVAL_CHAOS_PICKUP_MP5";
|
||||
}
|
||||
else if(issubstr(param_00,"mp7"))
|
||||
{
|
||||
var_01 = &"SO_SURVIVAL_CHAOS_PICKUP_MP7";
|
||||
}
|
||||
else if(issubstr(param_00,"mp9"))
|
||||
{
|
||||
var_01 = &"SO_SURVIVAL_CHAOS_PICKUP_MP9";
|
||||
}
|
||||
else if(issubstr(param_00,"pp90"))
|
||||
{
|
||||
var_01 = &"SO_SURVIVAL_CHAOS_PICKUP_PP90";
|
||||
}
|
||||
else if(issubstr(param_00,"p90"))
|
||||
{
|
||||
var_01 = &"SO_SURVIVAL_CHAOS_PICKUP_P90";
|
||||
}
|
||||
else if(issubstr(param_00,"pecheneg"))
|
||||
{
|
||||
var_01 = &"SO_SURVIVAL_CHAOS_PICKUP_PECHENEG";
|
||||
}
|
||||
else if(issubstr(param_00,"rsass"))
|
||||
{
|
||||
var_01 = &"SO_SURVIVAL_CHAOS_PICKUP_RSASS";
|
||||
}
|
||||
else if(issubstr(param_00,"sa80"))
|
||||
{
|
||||
var_01 = &"SO_SURVIVAL_CHAOS_PICKUP_SA80";
|
||||
}
|
||||
else if(issubstr(param_00,"scar"))
|
||||
{
|
||||
var_01 = &"SO_SURVIVAL_CHAOS_PICKUP_SCAR";
|
||||
}
|
||||
else if(issubstr(param_00,"skorpion"))
|
||||
{
|
||||
var_01 = &"SO_SURVIVAL_CHAOS_PICKUP_SKORPION";
|
||||
}
|
||||
else if(issubstr(param_00,"striker"))
|
||||
{
|
||||
var_01 = &"SO_SURVIVAL_CHAOS_PICKUP_STRIKER";
|
||||
}
|
||||
else if(issubstr(param_00,"type95"))
|
||||
{
|
||||
var_01 = &"SO_SURVIVAL_CHAOS_PICKUP_TYPE95";
|
||||
}
|
||||
else if(issubstr(param_00,"usp45"))
|
||||
{
|
||||
var_01 = &"SO_SURVIVAL_CHAOS_PICKUP_USP45";
|
||||
}
|
||||
else if(issubstr(param_00,"ump45"))
|
||||
{
|
||||
var_01 = &"SO_SURVIVAL_CHAOS_PICKUP_UMP45";
|
||||
}
|
||||
else if(issubstr(param_00,"usas12"))
|
||||
{
|
||||
var_01 = &"SO_SURVIVAL_CHAOS_PICKUP_USAS12";
|
||||
}
|
||||
else if(issubstr(param_00,"rpg"))
|
||||
{
|
||||
var_01 = &"SO_SURVIVAL_CHAOS_PICKUP_RPG";
|
||||
}
|
||||
|
||||
return var_01;
|
||||
}
|
||||
|
||||
//Function Number: 18
|
||||
chaos_entity_rotate()
|
||||
{
|
||||
self endon("death");
|
||||
for(;;)
|
||||
{
|
||||
self rotateyaw(360,3,0,0);
|
||||
wait 3;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 19
|
||||
chaos_weapon_collect()
|
||||
{
|
||||
self endon("death");
|
||||
self.trigger endon("death");
|
||||
level endon("special_op_terminated");
|
||||
self.weapon_in_use = 0;
|
||||
for(;;)
|
||||
{
|
||||
self.trigger waittill("trigger",var_00);
|
||||
if(isplayer(var_00) && !maps\_utility::is_player_down(var_00))
|
||||
{
|
||||
var_00 maps/_so_survival_chaos::chaoseventpopup(self.display_name,(1,1,1));
|
||||
}
|
||||
|
||||
if(!isplayer(var_00) || maps\_utility::is_player_down(var_00) || !var_00 usebuttonpressed())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_01 = 0;
|
||||
var_02 = 0;
|
||||
if(!var_00 hasweapon(self.var_5C39) && self.var_5C39 != "claymore")
|
||||
{
|
||||
var_03 = var_00 getweaponslistprimaries();
|
||||
foreach(var_05 in var_03)
|
||||
{
|
||||
if((isdefined(level.coop_incap_weapon) && var_05 == level.coop_incap_weapon) || weaponclass(var_05) == "item" || weaponclass(var_05) == "none" || weaponinventorytype(var_05) == "altmode")
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_00 takeweapon(var_05);
|
||||
}
|
||||
|
||||
var_00 maps/_so_survival_chaos::chaos_give_weapon(self.var_5C39);
|
||||
var_01 = 1;
|
||||
if(!isdefined(var_00.weapon_already_used))
|
||||
{
|
||||
var_00.weapon_already_used = [];
|
||||
}
|
||||
|
||||
if(!isdefined(var_00.weapon_already_used[self.var_5C39]))
|
||||
{
|
||||
maps/_so_survival_chaos::chaos_score_event_raise("new_weapon_collect");
|
||||
var_02 = 1;
|
||||
var_00.weapon_already_used[self.var_5C39] = 1;
|
||||
var_00.game_performance["new_weapon_collected"]++;
|
||||
}
|
||||
else
|
||||
{
|
||||
maps/_so_survival_chaos::chaos_score_event_raise("old_weapon_collect");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var_07 = 0;
|
||||
if(self.var_5C39 == "claymore" || self.var_5C39 == "c4")
|
||||
{
|
||||
if(!var_00 hasweapon(self.var_5C39))
|
||||
{
|
||||
var_00 giveweapon(self.var_5C39);
|
||||
var_07 = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_07 = var_00 getweaponammoclip(self.var_5C39) + 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var_07 = weaponclipsize(self.var_5C39);
|
||||
}
|
||||
|
||||
if(issubstr(self.var_5C39,"akimbo"))
|
||||
{
|
||||
var_00 setweaponammoclip(self.var_5C39,var_07,"left");
|
||||
var_00 setweaponammoclip(self.var_5C39,var_07,"right");
|
||||
}
|
||||
else
|
||||
{
|
||||
var_00 setweaponammoclip(self.var_5C39,var_07);
|
||||
}
|
||||
|
||||
var_08 = 0;
|
||||
if(var_00 getweaponammostock(self.var_5C39) < weaponmaxammo(self.var_5C39))
|
||||
{
|
||||
var_08 = 1;
|
||||
}
|
||||
|
||||
var_09 = weaponaltweaponname(self.var_5C39);
|
||||
if(var_09 != "none" && var_00 getweaponammostock(var_09) < weaponmaxammo(var_09))
|
||||
{
|
||||
var_08 = 1;
|
||||
}
|
||||
|
||||
if(self.var_5C39 == "flash_grenade" || self.var_5C39 == "claymore" || self.var_5C39 == "c4")
|
||||
{
|
||||
var_08 = 1;
|
||||
maps/_so_survival_chaos::chaos_score_event_raise("old_weapon_collect");
|
||||
}
|
||||
|
||||
if(var_08)
|
||||
{
|
||||
if(self.var_5C39 != "claymore" && self.var_5C39 != "c4")
|
||||
{
|
||||
var_00 setweaponammostock(self.var_5C39,weaponmaxammo(self.var_5C39));
|
||||
}
|
||||
|
||||
var_09 = weaponaltweaponname(self.var_5C39);
|
||||
if(var_09 != "none")
|
||||
{
|
||||
var_00 setweaponammostock(var_09,weaponmaxammo(var_09));
|
||||
}
|
||||
|
||||
maps/_so_survival_chaos::chaos_score_event_raise("weapon_ammo");
|
||||
if(self.var_5C39 != "flash_grenade" && self.var_5C39 != "claymore" && self.var_5C39 != "c4")
|
||||
{
|
||||
var_00 switchtoweapon(self.var_5C39);
|
||||
}
|
||||
|
||||
var_01 = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if(var_01)
|
||||
{
|
||||
common_scripts\utility::array_call(self.weapon_models,::hide);
|
||||
foreach(var_0B in level.players)
|
||||
{
|
||||
if(isdefined(self.headiconforplayer[var_0B.unique_id]))
|
||||
{
|
||||
self.headiconforplayer[var_0B.unique_id] destroy();
|
||||
}
|
||||
}
|
||||
|
||||
self.weapon_in_use = 1;
|
||||
if(var_02 == 1)
|
||||
{
|
||||
maps/_so_survival_chaos::radio_dialogue_to_player(var_00,"chaos_new_weapon",1);
|
||||
}
|
||||
|
||||
wait 25;
|
||||
if(self.var_5C39 == "flash_grenade" || self.var_5C39 == "claymore" || self.var_5C39 == "c4")
|
||||
{
|
||||
if(self.var_5C39 == "claymore" || self.var_5C39 == "c4")
|
||||
{
|
||||
var_0D = weaponclipsize(self.var_5C39) - 5;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_0D = weaponclipsize(self.var_5C39);
|
||||
}
|
||||
|
||||
for(;;)
|
||||
{
|
||||
var_0E = 0;
|
||||
foreach(var_0B in level.players)
|
||||
{
|
||||
if(var_0B getammocount(self.var_5C39) < var_0D)
|
||||
{
|
||||
var_0E = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if(var_0E == 0)
|
||||
{
|
||||
wait 0.5;
|
||||
continue;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for(;;)
|
||||
{
|
||||
var_11 = 0;
|
||||
foreach(var_0B in level.players)
|
||||
{
|
||||
if(var_0B hasweapon(self.var_5C39))
|
||||
{
|
||||
var_11 = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if(var_11 == 1)
|
||||
{
|
||||
wait 0.5;
|
||||
continue;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
common_scripts\utility::array_call(self.weapon_models,::show);
|
||||
self.weapon_in_use = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 20
|
||||
chaos_load_drop_location()
|
||||
{
|
||||
if(!isdefined(level.chaos_drop_location_table))
|
||||
{
|
||||
level.chaos_drop_location_table = "sp/survival_chaos_drop_locations.csv";
|
||||
}
|
||||
|
||||
var_00 = getdvar("mapname");
|
||||
for(var_01 = 100;var_01 <= 1700;var_01++)
|
||||
{
|
||||
var_02 = get_level(var_01);
|
||||
if(!isdefined(var_02) || var_02 == "" || var_02 != var_00)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_03 = get_level_drop_location(var_01);
|
||||
if(!isdefined(var_03) || var_03 == "")
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_04 = strtok(var_03,",");
|
||||
if(!isdefined(var_04) || var_04.size != 3)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(!isdefined(level.chaos_drop_locations))
|
||||
{
|
||||
level.chaos_drop_locations = [];
|
||||
}
|
||||
|
||||
level.chaos_drop_locations[level.chaos_drop_locations.size] = (float(var_04[0]),float(var_04[1]),float(var_04[2]));
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 21
|
||||
chaos_load_drop_item()
|
||||
{
|
||||
if(!isdefined(level.chaos_drop_item_table))
|
||||
{
|
||||
level.chaos_drop_item_table = "sp/survival_chaos_drop_items.csv";
|
||||
}
|
||||
|
||||
var_00 = getdvar("mapname");
|
||||
for(var_01 = 100;var_01 <= 1700;var_01++)
|
||||
{
|
||||
var_02 = get_level(var_01);
|
||||
if(!isdefined(var_02) || var_02 == "" || var_02 != var_00)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_03 = get_level_drop_wave(var_01);
|
||||
var_04 = "wave_" + var_03;
|
||||
var_05 = get_level_drop_item(var_01);
|
||||
if(!isdefined(var_05) || var_05 == "")
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_06 = strtok(var_05,";");
|
||||
if(!isdefined(level.chaos_drop_items))
|
||||
{
|
||||
level.chaos_drop_items = [];
|
||||
}
|
||||
|
||||
level.chaos_drop_items[var_04] = var_06;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 22
|
||||
chaos_load_desired_drop_distance()
|
||||
{
|
||||
if(!isdefined(level.desired_drop_distance_table))
|
||||
{
|
||||
level.desired_drop_distance_table = "sp/survival_chaos_drop_distance.csv";
|
||||
}
|
||||
|
||||
var_00 = getdvar("mapname");
|
||||
for(var_01 = 100;var_01 <= 1700;var_01++)
|
||||
{
|
||||
var_02 = get_drop_distance_level(var_01);
|
||||
if(isdefined(var_02) && var_02 == var_00)
|
||||
{
|
||||
var_03 = get_level_desired_drop_distance(var_01);
|
||||
level.map_specific_desired_drop_distance = float(var_03);
|
||||
var_04 = get_level_starting_lives_remaining(var_01);
|
||||
if(chaos_is_coop())
|
||||
{
|
||||
level.map_specific_starting_lives_remaining = 3;
|
||||
}
|
||||
else
|
||||
{
|
||||
level.map_specific_starting_lives_remaining = float(var_04);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 23
|
||||
chaos_is_coop()
|
||||
{
|
||||
if(issplitscreen() || getdvar("coop") == "1")
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
//Function Number: 24
|
||||
chaos_load_ai_size()
|
||||
{
|
||||
if(!isdefined(level.constant_ai_size_table))
|
||||
{
|
||||
level.constant_ai_size_table = "sp/survival_chaos_constant_ai_size.csv";
|
||||
}
|
||||
|
||||
var_00 = getdvar("mapname");
|
||||
for(var_01 = 100;var_01 <= 1700;var_01++)
|
||||
{
|
||||
var_02 = get_ai_size_level(var_01);
|
||||
if(isdefined(var_02) && var_02 == var_00)
|
||||
{
|
||||
var_03 = get_level_ai_size_wave(var_01);
|
||||
var_04 = get_level_ai_size(var_01);
|
||||
if(!isdefined(level.map_specific_ai_size))
|
||||
{
|
||||
level.map_specific_ai_size = [];
|
||||
}
|
||||
|
||||
var_05 = "wave_" + var_03;
|
||||
level.map_specific_ai_size[var_05] = float(var_04);
|
||||
}
|
||||
}
|
||||
}
|
1300
MW3/PC/SP/maps/_so_survival_code.gsc
Normal file
1300
MW3/PC/SP/maps/_so_survival_code.gsc
Normal file
File diff suppressed because it is too large
Load Diff
425
MW3/PC/SP/maps/_so_survival_dialog.gsc
Normal file
425
MW3/PC/SP/maps/_so_survival_dialog.gsc
Normal file
@ -0,0 +1,425 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_so_survival_dialog.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 14
|
||||
* Decompile Time: 235 ms
|
||||
* Timestamp: 10/27/2023 2:21:28 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
survival_dialog_init()
|
||||
{
|
||||
if(getdvarint("survival_chaos") == 1)
|
||||
{
|
||||
chaos_dialog_radio_setup();
|
||||
}
|
||||
else
|
||||
{
|
||||
survival_dialog_radio_setup();
|
||||
}
|
||||
|
||||
thread survival_dialog_wave_start();
|
||||
thread survival_dialog_boss();
|
||||
thread survival_dialog_wave_end();
|
||||
thread survival_dialog_airsupport();
|
||||
thread survival_dialog_claymore_plant();
|
||||
thread survival_dialog_sentry_updates();
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
survival_dialog_wave_start()
|
||||
{
|
||||
level endon("special_op_terminated");
|
||||
var_00 = [];
|
||||
for(;;)
|
||||
{
|
||||
level waittill("wave_started",var_01);
|
||||
var_02 = level common_scripts\utility::waittill_any_timeout(1.5,"wave_ended");
|
||||
if(var_02 == "wave_ended")
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(var_01 == 1)
|
||||
{
|
||||
if(maps\_utility::is_coop())
|
||||
{
|
||||
maps\_utility::radio_dialogue("so_hq_mission_intro");
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\_utility::radio_dialogue("so_hq_mission_intro_sp");
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
var_03 = dialog_get_special_ai_type(var_01,var_00);
|
||||
if(isdefined(var_03) && var_03 != "")
|
||||
{
|
||||
if(!isdefined(var_00[var_03]))
|
||||
{
|
||||
var_00[var_03] = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_00[var_03]++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var_03 = maps\_so_survival_ai::get_squad_type(var_01);
|
||||
}
|
||||
|
||||
if(isdefined(var_03) && var_03 != "")
|
||||
{
|
||||
if(isdefined(level.scr_radio["so_hq_enemy_intel_" + var_03]))
|
||||
{
|
||||
maps\_utility::radio_dialogue("so_hq_enemy_intel_" + var_03);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
dialog_get_special_ai_type(param_00,param_01)
|
||||
{
|
||||
var_02 = maps\_so_survival_ai::get_special_ai(param_00);
|
||||
if(!isdefined(var_02) || !var_02.size)
|
||||
{
|
||||
return undefined;
|
||||
}
|
||||
|
||||
foreach(var_04 in var_02)
|
||||
{
|
||||
if(!isdefined(param_01[var_04]))
|
||||
{
|
||||
param_01[var_04] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
var_06 = "";
|
||||
var_07 = 0;
|
||||
foreach(var_0A, var_09 in param_01)
|
||||
{
|
||||
if(maps\_utility::array_contains(var_02,var_0A) && var_06 == "" || var_09 < var_07)
|
||||
{
|
||||
var_06 = var_0A;
|
||||
var_07 = var_09;
|
||||
}
|
||||
}
|
||||
|
||||
return var_06;
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
survival_dialog_boss()
|
||||
{
|
||||
level endon("special_op_terminated");
|
||||
for(;;)
|
||||
{
|
||||
var_00 = 0;
|
||||
level waittill("boss_spawning",var_01);
|
||||
var_02 = maps\_so_survival_ai::get_bosses_ai(var_01);
|
||||
var_03 = maps\_so_survival_ai::get_bosses_nonai(var_01);
|
||||
if(isdefined(var_03) && var_03.size)
|
||||
{
|
||||
if(var_03.size == 1)
|
||||
{
|
||||
if(isdefined(level.scr_radio["so_hq_boss_intel_" + var_03[0]]))
|
||||
{
|
||||
maps\_utility::radio_dialogue("so_hq_boss_intel_" + var_03[0]);
|
||||
var_00 = 1;
|
||||
}
|
||||
}
|
||||
else if(isdefined(level.scr_radio["so_hq_boss_intel_" + var_03[0] + "_many"]))
|
||||
{
|
||||
maps\_utility::radio_dialogue("so_hq_boss_intel_" + var_03[0] + "_many");
|
||||
var_00 = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if(isdefined(var_02) && var_02.size)
|
||||
{
|
||||
if(var_00)
|
||||
{
|
||||
var_04 = level common_scripts\utility::waittill_any_timeout(1.5,"wave_ended");
|
||||
if(var_04 == "wave_ended")
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if(var_02.size == 1)
|
||||
{
|
||||
if(isdefined(level.scr_radio["so_hq_boss_intel_" + var_02[0]]))
|
||||
{
|
||||
maps\_utility::radio_dialogue("so_hq_boss_intel_" + var_02[0]);
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if(isdefined(level.scr_radio["so_hq_enemy_intel_boss_transport_many"]))
|
||||
{
|
||||
maps\_utility::radio_dialogue("so_hq_enemy_intel_boss_transport_many");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
survival_dialog_wave_end()
|
||||
{
|
||||
level endon("special_op_terminated");
|
||||
for(;;)
|
||||
{
|
||||
level waittill("wave_ended",var_00);
|
||||
var_01 = level common_scripts\utility::waittill_any_timeout(1.5,"wave_started");
|
||||
if(var_01 == "wave_started")
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_02 = "";
|
||||
if(isdefined(level.armory_unlock))
|
||||
{
|
||||
if(isdefined(level.armory_unlock["weapon"]) && level.armory_unlock["weapon"] == var_00)
|
||||
{
|
||||
var_02 = "weapon";
|
||||
}
|
||||
else if(isdefined(level.armory_unlock["equipment"]) && level.armory_unlock["equipment"] == var_00)
|
||||
{
|
||||
var_02 = "equipment";
|
||||
}
|
||||
else if(isdefined(level.armory_unlock["airsupport"]) && level.armory_unlock["airsupport"] == var_00)
|
||||
{
|
||||
var_02 = "airsupport";
|
||||
}
|
||||
}
|
||||
|
||||
if(var_02 != "" && isdefined(level.scr_radio["so_hq_armory_open_" + var_02]))
|
||||
{
|
||||
maps\_utility::radio_dialogue("so_hq_armory_open_" + var_02);
|
||||
continue;
|
||||
}
|
||||
|
||||
maps\_utility::radio_dialogue("so_hq_wave_over_flavor");
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
survival_dialog_airsupport()
|
||||
{
|
||||
level endon("special_op_terminated");
|
||||
for(;;)
|
||||
{
|
||||
level waittill("so_airsupport_incoming",var_00);
|
||||
if(isdefined(level.scr_radio["so_hq_as_" + var_00]))
|
||||
{
|
||||
maps\_utility::radio_dialogue("so_hq_as_" + var_00);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
survival_dialog_claymore_plant()
|
||||
{
|
||||
level endon("special_op_terminated");
|
||||
for(;;)
|
||||
{
|
||||
var_00 = level common_scripts\utility::waittill_any_return("ai_claymore_planted","ai_chembomb_planted");
|
||||
if(var_00 == "ai_claymore_planted")
|
||||
{
|
||||
if(isdefined(level.scr_radio["so_hq_enemy_update_claymore"]))
|
||||
{
|
||||
maps\_utility::radio_dialogue("so_hq_enemy_update_claymore");
|
||||
}
|
||||
}
|
||||
else if(var_00 == "ai_chembomb_planted")
|
||||
{
|
||||
}
|
||||
|
||||
level waittill("wave_ended");
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
survival_dialog_armory_restocked(param_00)
|
||||
{
|
||||
if(param_00 != "" && isdefined(level.scr_radio["so_hq_armory_stocked_" + param_00]))
|
||||
{
|
||||
maps\_utility::radio_dialogue("so_hq_armory_stocked_" + param_00);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
survival_dialog_sentry_updates()
|
||||
{
|
||||
level endon("special_op_terminated");
|
||||
var_00 = "";
|
||||
for(;;)
|
||||
{
|
||||
var_01 = level common_scripts\utility::waittill_any_return("a_sentry_died","a_sentry_is_underattack","wave_ended");
|
||||
if(var_01 == "wave_ended")
|
||||
{
|
||||
var_00 = "";
|
||||
}
|
||||
else if(var_01 == "a_sentry_is_underattack" && var_00 != "a_sentry_is_underattack")
|
||||
{
|
||||
thread survival_dialog_radio_sentry_underattack();
|
||||
}
|
||||
else if(var_01 == "a_sentry_died")
|
||||
{
|
||||
thread survival_dialog_radio_sentry_down();
|
||||
}
|
||||
|
||||
var_00 = var_01;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
survival_dialog_radio_sentry_down()
|
||||
{
|
||||
if(isdefined(level.scr_radio["so_hq_sentry_down"]))
|
||||
{
|
||||
maps\_utility::radio_dialogue("so_hq_sentry_down");
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
survival_dialog_radio_sentry_underattack()
|
||||
{
|
||||
if(isdefined(level.scr_radio["so_hq_sentry_underattack"]))
|
||||
{
|
||||
maps\_utility::radio_dialogue("so_hq_sentry_underattack");
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
survival_dialog_player_down()
|
||||
{
|
||||
level endon("special_op_terminated");
|
||||
for(;;)
|
||||
{
|
||||
level waittill("so_player_down");
|
||||
if(isdefined(level.scr_radio["so_hq_player_down"]))
|
||||
{
|
||||
maps\_utility::radio_dialogue("so_hq_player_down");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
survival_dialog_radio_setup()
|
||||
{
|
||||
level.scr_radio["so_hq_mission_intro"] = "so_hq_mission_intro";
|
||||
level.scr_radio["so_hq_mission_intro_sp"] = "so_hq_mission_intro_sp";
|
||||
level.scr_radio["so_hq_enemy_intel_easy"] = "so_hq_enemy_intel_generic";
|
||||
level.scr_radio["so_hq_enemy_intel_regular"] = "so_hq_enemy_intel_generic";
|
||||
level.scr_radio["so_hq_enemy_intel_hardened"] = "so_hq_enemy_intel_generic";
|
||||
level.scr_radio["so_hq_enemy_intel_veteran"] = "so_hq_enemy_intel_generic";
|
||||
level.scr_radio["so_hq_enemy_intel_elite"] = "so_hq_enemy_intel_generic";
|
||||
level.scr_radio["so_hq_enemy_intel_claymore"] = "so_hq_enemy_intel_generic";
|
||||
level.scr_radio["so_hq_enemy_intel_martyrdom"] = "so_hq_enemy_intel_martyrdom";
|
||||
level.scr_radio["so_hq_enemy_intel_chemical"] = "so_hq_enemy_intel_chemical";
|
||||
level.scr_radio["so_hq_enemy_intel_dog_splode"] = "so_hq_enemy_intel_dog_splode";
|
||||
level.scr_radio["so_hq_enemy_intel_dog_reg"] = "so_hq_enemy_intel_dog_reg";
|
||||
level.scr_radio["so_hq_armory_open_weapon"] = "so_hq_armory_open_weapon";
|
||||
level.scr_radio["so_hq_armory_open_equipment"] = "so_hq_armory_open_equipment";
|
||||
level.scr_radio["so_hq_armory_open_airsupport"] = "so_hq_armory_open_airstrike";
|
||||
level.scr_radio["so_hq_armory_stocked_all"] = "so_hq_armory_stocked_all";
|
||||
level.scr_radio["so_hq_armory_stocked_equipment"] = "so_hq_armory_stocked_equipment";
|
||||
level.scr_radio["so_hq_wave_over_flavor"] = "so_hq_wave_over_flavor";
|
||||
level.scr_radio["so_hq_enemy_update_claymore"] = "so_hq_enemy_update_claymore";
|
||||
level.scr_radio["so_hq_sentry_down"] = "so_hq_sentry_down";
|
||||
level.scr_radio["so_hq_sentry_underattack"] = "so_hq_sentry_underattack";
|
||||
level.scr_radio["so_hq_player_down"] = "so_hq_player_down";
|
||||
level.scr_radio["so_hq_boss_intel_jug_regular"] = "so_hq_enemy_intel_boss_transport";
|
||||
level.scr_radio["so_hq_boss_intel_jug_riotshield"] = "so_hq_enemy_intel_boss_transport";
|
||||
level.scr_radio["so_hq_boss_intel_jug_explosive"] = "so_hq_enemy_intel_boss_transport";
|
||||
level.scr_radio["so_hq_boss_intel_jug_headshot"] = "so_hq_enemy_intel_boss_transport";
|
||||
level.scr_radio["so_hq_boss_intel_jug_minigun"] = "so_hq_enemy_intel_boss_transport";
|
||||
level.scr_radio["so_hq_enemy_intel_boss_transport_many"] = "so_hq_enemy_intel_boss_transport_many";
|
||||
level.scr_radio["so_hq_boss_intel_chopper"] = "so_hq_boss_intel_chopper";
|
||||
level.scr_radio["so_hq_boss_intel_chopper_many"] = "so_hq_boss_intel_chopper_many";
|
||||
level.scr_radio["so_hq_as_friendly_support_delta"] = "so_hq_airsupport_ally_delta";
|
||||
level.scr_radio["so_hq_as_friendly_support_riotshield"] = "so_hq_airsupport_ally_riotshield";
|
||||
level.scr_radio["so_hq_uav_busy"] = "so_hq_uav_busy";
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
chaos_dialog_radio_setup()
|
||||
{
|
||||
level.scr_radio["so_tf_1_success_generic"] = "cm_tf_1_success_generic";
|
||||
level.scr_radio["so_tf_1_success_jerk"] = "cm_tf_1_success_jerk";
|
||||
level.scr_radio["so_tf_1_success_best"] = "cm_tf_1_success_best";
|
||||
level.scr_radio["so_tf_1_fail_bleedout"] = "cm_tf_1_fail_bleedout";
|
||||
level.scr_radio["so_tf_1_fail_generic"] = "cm_tf_1_fail_generic";
|
||||
level.scr_radio["so_tf_1_fail_generic_jerk"] = "cm_tf_1_fail_generic_jerk";
|
||||
level.scr_radio["so_tf_1_fail_time"] = "cm_tf_1_fail_time";
|
||||
level.scr_radio["so_hq_mission_intro"] = "cm_bp_mission_intro_coop";
|
||||
level.scr_radio["so_hq_mission_intro_sp"] = "cm_bp_mission_intro";
|
||||
level.scr_radio["so_hq_enemy_intel_easy"] = "so_hq_enemy_intel_generic";
|
||||
level.scr_radio["so_hq_enemy_intel_regular"] = "so_hq_enemy_intel_generic";
|
||||
level.scr_radio["so_hq_enemy_intel_hardened"] = "so_hq_enemy_intel_generic";
|
||||
level.scr_radio["so_hq_enemy_intel_veteran"] = "so_hq_enemy_intel_generic";
|
||||
level.scr_radio["so_hq_enemy_intel_elite"] = "so_hq_enemy_intel_generic";
|
||||
level.scr_radio["so_hq_enemy_intel_claymore"] = "so_hq_enemy_intel_generic";
|
||||
level.scr_radio["so_hq_enemy_intel_martyrdom"] = "so_hq_enemy_intel_martyrdom";
|
||||
level.scr_radio["so_hq_enemy_intel_chemical"] = "so_hq_enemy_intel_chemical";
|
||||
level.scr_radio["so_hq_enemy_intel_chemical"] = "";
|
||||
level.scr_radio["so_hq_enemy_intel_dog"] = "cm_bp_enemy_dog";
|
||||
level.scr_radio["so_hq_enemy_intel_dogs"] = "cm_bp_enemy_dogs";
|
||||
level.scr_radio["so_hq_wave_over_flavor"] = "so_hq_wave_over_flavor";
|
||||
level.scr_radio["so_hq_player_down"] = "so_hq_player_down";
|
||||
level.scr_radio["so_hq_boss_intel_jug_regular"] = "cm_bp_enemy_juggernaut";
|
||||
level.scr_radio["so_hq_boss_intel_jug_riotshield"] = "cm_bp_enemy_juggernaut";
|
||||
level.scr_radio["so_hq_boss_intel_jug_explosive"] = "cm_bp_enemy_juggernaut";
|
||||
level.scr_radio["so_hq_boss_intel_jug_headshot"] = "cm_bp_enemy_juggernaut";
|
||||
level.scr_radio["so_hq_boss_intel_jug_minigun"] = "cm_bp_enemy_juggernaut";
|
||||
level.scr_radio["so_hq_enemy_intel_boss_transport_many"] = "cm_bp_enemy_juggernauts";
|
||||
level.scr_radio["so_hq_boss_intel_chopper"] = "cm_bp_boss_intel_chopper";
|
||||
level.scr_radio["so_hq_boss_intel_chopper_many"] = "cm_bp_boss_intel_chopper_many";
|
||||
level.scr_radio["so_hq_uav_busy"] = "so_hq_uav_busy";
|
||||
level.scr_radio["chaos_perk_stalker"] = "cm_bp_perk_stalker";
|
||||
level.scr_radio["chaos_perk_excond"] = "cm_bp_perk_excond";
|
||||
level.scr_radio["chaos_perk_sleight"] = "cm_bp_perk_sleight";
|
||||
level.scr_radio["chaos_perk_quickdraw"] = "cm_bp_perk_quickdraw";
|
||||
level.scr_radio["chaos_perk_steadyaim"] = "cm_bp_perk_steadyaim";
|
||||
level.scr_radio["chaos_perk_regeneration"] = "cm_bp_perk_regeneration";
|
||||
level.scr_radio["chaos_perk_juiced"] = "cm_bp_perk_juiced";
|
||||
level.scr_radio["chaos_deliverd_socre"] = "cm_bp_2cp_bonus";
|
||||
level.scr_radio["chaos_deliverd_sentry"] = "cm_bp_2cp_sentrygun";
|
||||
level.scr_radio["chaos_deliverd_laststand"] = "cm_bp_2cp_laststand";
|
||||
level.scr_radio["chaos_deliverd_combomult"] = "cm_bp_2cp_combomult";
|
||||
level.scr_radio["chaos_deliverd_extratime"] = "cm_bp_2cp_extratime";
|
||||
level.scr_radio["chaos_deliverd_freeze"] = "cm_bp_2cp_freeze";
|
||||
level.scr_radio["chaos_time_almostup"] = "cm_bp_time_almostup";
|
||||
level.scr_radio["chaos_10sec_left"] = "cm_bp_time_10seconds";
|
||||
level.scr_radio["chaos_30sec_left"] = "cm_bp_time_30seconds";
|
||||
level.scr_radio["chaos_overtime"] = "cm_bp_gen_overtime";
|
||||
level.scr_radio["chaos_keep_combo"] = "cm_bp_gen_maintaincombo";
|
||||
level.scr_radio["chaos_cp_inbound"] = "cm_bp_cp_inbound";
|
||||
level.scr_radio["chaos_cps_inbound"] = "cm_bp_cps_inbound";
|
||||
level.scr_radio["chaos_new_weapon"] = "cm_bp_gen_weapon";
|
||||
level.scr_radio["chaos_get_onekill"] = "cm_bp_laststand_onekill";
|
||||
level.scr_radio["chaos_2_last_stand"] = "cm_bp_laststand_2remaining";
|
||||
level.scr_radio["chaos_1_last_stand"] = "cm_bp_laststand_finalstand";
|
||||
level.scr_radio["chaos_pickup_sentry"] = "cm_bp_cp_sentrygun";
|
||||
level.scr_radio["chaos_pickup_armor"] = "cm_bp_jugkill_armor";
|
||||
level.scr_radio["chaos_pickup_multiplier"] = "cm_bp_cp_combomult";
|
||||
level.scr_radio["chaos_pickup_laststand"] = "cm_bp_cp_laststand";
|
||||
level.scr_radio["chaos_pickup_time"] = "cm_bp_cp_extratime";
|
||||
level.scr_radio["chaos_pickup_points"] = "cm_bp_cp_bonus";
|
||||
level.scr_radio["chaos_pickup_freeze"] = "cm_bp_cp_freeze";
|
||||
level.scr_radio["chaos_action_explosion"] = "cm_bp_kills_explosion";
|
||||
level.scr_radio["chaos_action_3longshot"] = "cm_bp_kills_3longshot";
|
||||
level.scr_radio["chaos_action_3headshot"] = "cm_bp_kills_3headshot";
|
||||
level.scr_radio["chaos_action_3knife"] = "cm_bp_kills_3knife";
|
||||
level.scr_radio["chaos_action_triple"] = "cm_bp_kills_triple";
|
||||
level.scr_radio["chaos_action_quad"] = "cm_bp_kills_quad";
|
||||
level.scr_radio["chaos_action_multiple"] = "cm_bp_kills_multiple";
|
||||
}
|
306
MW3/PC/SP/maps/_so_survival_loot.gsc
Normal file
306
MW3/PC/SP/maps/_so_survival_loot.gsc
Normal file
@ -0,0 +1,306 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_so_survival_loot.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 19
|
||||
* Decompile Time: 283 ms
|
||||
* Timestamp: 10/27/2023 2:21:07 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
loot_preload()
|
||||
{
|
||||
for(var_00 = 0;var_00 <= 20;var_00++)
|
||||
{
|
||||
var_01 = get_loot_ref_by_index(var_00);
|
||||
if(isdefined(var_01) && get_loot_type(var_01) == "weapon")
|
||||
{
|
||||
maps\_so_survival_code::precache_loadout_item(var_01);
|
||||
}
|
||||
}
|
||||
|
||||
for(var_00 = 100;var_00 <= 199;var_00++)
|
||||
{
|
||||
var_02 = get_loot_version_by_index(var_00);
|
||||
if(isdefined(var_02))
|
||||
{
|
||||
maps\_so_survival_code::precache_loadout_item(var_02);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
loot_postload()
|
||||
{
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
loot_init()
|
||||
{
|
||||
loot_populate(0,20,100,199);
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
loot_populate(param_00,param_01,param_02,param_03)
|
||||
{
|
||||
level.loot_version_array = [];
|
||||
for(var_04 = param_02;var_04 <= param_03;var_04++)
|
||||
{
|
||||
var_05 = get_loot_version_by_index(var_04);
|
||||
if(isdefined(var_05) && var_05 != "")
|
||||
{
|
||||
level.loot_version_array[level.loot_version_array.size] = var_05;
|
||||
}
|
||||
}
|
||||
|
||||
level.loot_info_array = [];
|
||||
for(var_04 = param_00;var_04 <= param_01;var_04++)
|
||||
{
|
||||
var_06 = get_loot_ref_by_index(var_04);
|
||||
if(!isdefined(var_06) || var_06 == "")
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_07 = get_loot_type(var_06);
|
||||
if(!isdefined(level.loot_info_array[var_07]))
|
||||
{
|
||||
level.loot_info_array[var_07] = [];
|
||||
}
|
||||
|
||||
var_08 = spawnstruct();
|
||||
var_08.index = var_04;
|
||||
var_08.ref = var_06;
|
||||
var_08.type = var_07;
|
||||
var_08.name = get_loot_name(var_06);
|
||||
var_08.var_189B = get_loot_desc(var_06);
|
||||
var_08.chance = get_loot_chance(var_06);
|
||||
var_08.wave_unlock = get_loot_wave_unlock(var_06);
|
||||
var_08.wave_lock = get_loot_wave_lock(var_06);
|
||||
var_08.wave_dropped = -999;
|
||||
var_08.rank = get_loot_rank(var_06);
|
||||
var_08.versions = get_loot_versions(var_06);
|
||||
level.loot_info_array[var_07][var_06] = var_08;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
loot_roll(param_00)
|
||||
{
|
||||
if(!isdefined(level.loot_info_array) || !isdefined(level.loot_info_array["weapon"]))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
var_01 = [];
|
||||
foreach(var_03 in level.loot_info_array["weapon"])
|
||||
{
|
||||
if(level.current_wave >= var_03.wave_unlock && level.current_wave < var_03.wave_lock && level.current_wave - var_03.wave_dropped >= 2 && maps\_so_survival_code::highest_player_rank() >= var_03.rank)
|
||||
{
|
||||
var_01[var_01.size] = var_03;
|
||||
}
|
||||
}
|
||||
|
||||
if(!var_01.size)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
var_01 = maps\_utility_joec::exchange_sort_by_handler(var_01,::loot_roll_compare_type_wave_dropped);
|
||||
var_05 = undefined;
|
||||
foreach(var_03 in var_01)
|
||||
{
|
||||
var_07 = common_scripts\utility::ter_op(isdefined(param_00),param_00,var_03.chance);
|
||||
if(var_07 > randomfloatrange(0,1))
|
||||
{
|
||||
var_05 = var_03.versions[randomint(var_03.versions.size)];
|
||||
var_03.wave_dropped = level.current_wave;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(isdefined(var_05))
|
||||
{
|
||||
var_09 = var_05;
|
||||
var_0A = getweaponmodel(var_09);
|
||||
self.dropweapon = 0;
|
||||
thread loot_drop_on_death("weapon_" + var_09,var_09,"weapon",var_0A,"tag_stowed_back");
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
loot_roll_compare_type_wave_dropped()
|
||||
{
|
||||
var_00 = common_scripts\utility::ter_op(isdefined(self) && isdefined(self.wave_dropped),self.wave_dropped,-999);
|
||||
return var_00;
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
loot_drop_on_death(param_00,param_01,param_02,param_03,param_04)
|
||||
{
|
||||
level endon("special_op_terminated");
|
||||
var_05 = spawn("script_model",self gettagorigin(param_04));
|
||||
var_05 setmodel(param_03);
|
||||
var_05 linkto(self,param_04,(0,0,0),(0,0,0));
|
||||
common_scripts\utility::waittill_any("death","long_death");
|
||||
if(!isdefined(self))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var_06 = spawn(param_00,self gettagorigin(param_04));
|
||||
if(isdefined(param_02) && param_02 == "weapon")
|
||||
{
|
||||
var_07 = int(max(1,0.4 * weaponclipsize(param_01)));
|
||||
var_08 = int(max(1,0.5 * weaponmaxammo(param_01)));
|
||||
var_06 itemweaponsetammo(var_07,var_08);
|
||||
var_09 = weaponaltweaponname(param_01);
|
||||
if(var_09 != "none")
|
||||
{
|
||||
var_0A = int(max(1,0.5 * weaponclipsize(var_09)));
|
||||
var_0B = int(max(1,0.5 * weaponmaxammo(var_09)));
|
||||
var_06 itemweaponsetammo(var_0A,var_0B,var_0A,1);
|
||||
}
|
||||
}
|
||||
|
||||
var_05 unlink();
|
||||
wait 0.05;
|
||||
var_05 delete();
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
loot_item_exist(param_00)
|
||||
{
|
||||
return isdefined(level.loot_info_array) && isdefined(level.loot_info_array[param_00]);
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
get_loot_ref_by_index(param_00)
|
||||
{
|
||||
return get_ref_by_index(param_00);
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
get_ref_by_index(param_00)
|
||||
{
|
||||
return tablelookup("sp/survival_loot.csv",0,param_00,1);
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
get_loot_type(param_00)
|
||||
{
|
||||
if(loot_item_exist(param_00))
|
||||
{
|
||||
return level.loot_info_array[param_00].type;
|
||||
}
|
||||
|
||||
return tablelookup("sp/survival_loot.csv",1,param_00,2);
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
get_loot_name(param_00)
|
||||
{
|
||||
if(loot_item_exist(param_00))
|
||||
{
|
||||
return level.loot_info_array[param_00].name;
|
||||
}
|
||||
|
||||
return tablelookup("sp/survival_loot.csv",1,param_00,3);
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
get_loot_desc(param_00)
|
||||
{
|
||||
if(loot_item_exist(param_00))
|
||||
{
|
||||
return level.loot_info_array[param_00].var_189B;
|
||||
}
|
||||
|
||||
return tablelookup("sp/survival_loot.csv",1,param_00,4);
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
get_loot_chance(param_00)
|
||||
{
|
||||
if(loot_item_exist(param_00))
|
||||
{
|
||||
return level.loot_info_array[param_00].chance;
|
||||
}
|
||||
|
||||
return float(tablelookup("sp/survival_loot.csv",1,param_00,5));
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
get_loot_wave_unlock(param_00)
|
||||
{
|
||||
if(loot_item_exist(param_00))
|
||||
{
|
||||
return level.loot_info_array[param_00].wave_unlock;
|
||||
}
|
||||
|
||||
return int(tablelookup("sp/survival_loot.csv",1,param_00,6));
|
||||
}
|
||||
|
||||
//Function Number: 16
|
||||
get_loot_wave_lock(param_00)
|
||||
{
|
||||
if(loot_item_exist(param_00))
|
||||
{
|
||||
return level.loot_info_array[param_00].wave_lock;
|
||||
}
|
||||
|
||||
return int(tablelookup("sp/survival_loot.csv",1,param_00,7));
|
||||
}
|
||||
|
||||
//Function Number: 17
|
||||
get_loot_rank(param_00)
|
||||
{
|
||||
if(loot_item_exist(param_00))
|
||||
{
|
||||
return level.loot_info_array[param_00].rank;
|
||||
}
|
||||
|
||||
return int(tablelookup("sp/survival_loot.csv",1,param_00,8));
|
||||
}
|
||||
|
||||
//Function Number: 18
|
||||
get_loot_version_by_index(param_00)
|
||||
{
|
||||
return get_ref_by_index(param_00);
|
||||
}
|
||||
|
||||
//Function Number: 19
|
||||
get_loot_versions(param_00)
|
||||
{
|
||||
if(loot_item_exist(param_00))
|
||||
{
|
||||
return level.loot_info_array[param_00].versions;
|
||||
}
|
||||
|
||||
var_01 = "joe";
|
||||
var_02 = [];
|
||||
var_03 = param_00;
|
||||
if(get_loot_type(param_00) == "weapon")
|
||||
{
|
||||
var_03 = getsubstr(param_00,0,param_00.size - 3);
|
||||
}
|
||||
|
||||
foreach(var_05 in level.loot_version_array)
|
||||
{
|
||||
if(issubstr(var_05,var_03))
|
||||
{
|
||||
var_02[var_02.size] = var_05;
|
||||
}
|
||||
}
|
||||
|
||||
if(!var_02.size)
|
||||
{
|
||||
var_02[var_02.size] = param_00;
|
||||
}
|
||||
|
||||
return var_02;
|
||||
}
|
232
MW3/PC/SP/maps/_so_survival_perks.gsc
Normal file
232
MW3/PC/SP/maps/_so_survival_perks.gsc
Normal file
@ -0,0 +1,232 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_so_survival_perks.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 21
|
||||
* Decompile Time: 349 ms
|
||||
* Timestamp: 10/27/2023 2:20:59 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
perks_preload()
|
||||
{
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
perks_init()
|
||||
{
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
give_perk(param_00)
|
||||
{
|
||||
if(self hasperk(param_00,1))
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
self clearperks();
|
||||
switch(param_00)
|
||||
{
|
||||
case "specialty_stalker":
|
||||
thread give_perk_stalker();
|
||||
break;
|
||||
|
||||
case "specialty_longersprint":
|
||||
thread give_perk_longersprint();
|
||||
break;
|
||||
|
||||
case "specialty_fastreload":
|
||||
thread give_perk_fastreload();
|
||||
break;
|
||||
|
||||
case "specialty_quickdraw":
|
||||
thread give_perk_quickdraw();
|
||||
break;
|
||||
|
||||
case "specialty_detectexplosive":
|
||||
thread give_perk_detectexplosive();
|
||||
break;
|
||||
|
||||
case "specialty_bulletaccuracy":
|
||||
thread give_perk_bulletaccuracy();
|
||||
break;
|
||||
|
||||
default:
|
||||
thread give_perk_dummy();
|
||||
break;
|
||||
}
|
||||
|
||||
self notify("give_perk",param_00);
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
take_perk(param_00)
|
||||
{
|
||||
if(!self hasperk(param_00,1))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
switch(param_00)
|
||||
{
|
||||
case "specialty_stalker":
|
||||
thread take_perk_stalker();
|
||||
break;
|
||||
|
||||
case "specialty_longersprint":
|
||||
thread take_perk_longersprint();
|
||||
break;
|
||||
|
||||
case "specialty_fastreload":
|
||||
thread take_perk_fastreload();
|
||||
break;
|
||||
|
||||
case "specialty_quickdraw":
|
||||
thread take_perk_quickdraw();
|
||||
break;
|
||||
|
||||
case "specialty_detectexplosive":
|
||||
thread take_perk_detectexplosive();
|
||||
break;
|
||||
|
||||
case "specialty_bulletaccuracy":
|
||||
thread take_perk_bulletaccuracy();
|
||||
break;
|
||||
|
||||
default:
|
||||
thread take_perk_dummy();
|
||||
break;
|
||||
}
|
||||
|
||||
self notify("take_perk",param_00);
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
give_perk_dummy()
|
||||
{
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
take_perk_dummy()
|
||||
{
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
give_perk_longersprint()
|
||||
{
|
||||
self setperk("specialty_longersprint",1,0);
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
take_perk_longersprint()
|
||||
{
|
||||
self unsetperk("specialty_longersprint",1);
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
give_perk_fastreload()
|
||||
{
|
||||
self setperk("specialty_fastreload",1,0);
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
take_perk_fastreload()
|
||||
{
|
||||
self unsetperk("specialty_fastreload",1);
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
give_perk_quickdraw()
|
||||
{
|
||||
self setperk("specialty_quickdraw",1,0);
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
take_perk_quickdraw()
|
||||
{
|
||||
self unsetperk("specialty_quickdraw",1);
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
give_perk_detectexplosive()
|
||||
{
|
||||
self setperk("specialty_detectexplosive",1,0);
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
take_perk_detectexplosive()
|
||||
{
|
||||
self unsetperk("specialty_detectexplosive",1);
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
give_perk_bulletaccuracy()
|
||||
{
|
||||
self setperk("specialty_bulletaccuracy",1,0);
|
||||
}
|
||||
|
||||
//Function Number: 16
|
||||
take_perk_bulletaccuracy()
|
||||
{
|
||||
self unsetperk("specialty_bulletaccuracy",1);
|
||||
}
|
||||
|
||||
//Function Number: 17
|
||||
give_perk_stalker()
|
||||
{
|
||||
self setperk("specialty_stalker",1,0);
|
||||
}
|
||||
|
||||
//Function Number: 18
|
||||
take_perk_stalker()
|
||||
{
|
||||
self unsetperk("specialty_stalker",1);
|
||||
}
|
||||
|
||||
//Function Number: 19
|
||||
perk_hud()
|
||||
{
|
||||
common_scripts\utility::flag_init("HUD_giving_perk");
|
||||
common_scripts\utility::flag_init("HUD_taking_perk");
|
||||
thread update_on_give_perk();
|
||||
thread update_on_take_perk();
|
||||
}
|
||||
|
||||
//Function Number: 20
|
||||
update_on_give_perk()
|
||||
{
|
||||
self endon("death");
|
||||
for(;;)
|
||||
{
|
||||
self waittill("give_perk",var_00);
|
||||
common_scripts\utility::flag_set("HUD_giving_perk");
|
||||
while(common_scripts\utility::flag("HUD_taking_perk"))
|
||||
{
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
wait 1;
|
||||
common_scripts\utility::flag_clear("HUD_giving_perk");
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 21
|
||||
update_on_take_perk()
|
||||
{
|
||||
self endon("death");
|
||||
for(;;)
|
||||
{
|
||||
self waittill("take_perk",var_00);
|
||||
common_scripts\utility::flag_set("HUD_taking_perk");
|
||||
while(common_scripts\utility::flag("HUD_giving_perk"))
|
||||
{
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
wait 1;
|
||||
common_scripts\utility::flag_clear("HUD_taking_perk");
|
||||
}
|
||||
}
|
1288
MW3/PC/SP/maps/_sp_airdrop.gsc
Normal file
1288
MW3/PC/SP/maps/_sp_airdrop.gsc
Normal file
File diff suppressed because it is too large
Load Diff
702
MW3/PC/SP/maps/_sp_airstrike.gsc
Normal file
702
MW3/PC/SP/maps/_sp_airstrike.gsc
Normal file
@ -0,0 +1,702 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_sp_airstrike.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 24
|
||||
* Decompile Time: 408 ms
|
||||
* Timestamp: 10/27/2023 2:21:02 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
airstrike_preload()
|
||||
{
|
||||
precachelocationselector("map_artillery_selector");
|
||||
precacheitem("killstreak_precision_airstrike_sp");
|
||||
precacheitem("killstreak_stealth_airstrike_sp");
|
||||
precacheitem("stealth_bomb_mp");
|
||||
precacheitem("artillery_mp");
|
||||
precacheitem("harrier_missile_mp");
|
||||
precachemodel("vehicle_mig29_desert");
|
||||
precachemodel("vehicle_av8b_harrier_jet_mp");
|
||||
precachemodel("vehicle_av8b_harrier_jet_opfor_mp");
|
||||
precachemodel("weapon_minigun");
|
||||
precachemodel("vehicle_b2_bomber");
|
||||
precachemodel("projectile_cbu97_clusterbomb");
|
||||
precacheshader("specialty_precision_airstrike");
|
||||
precacheshader("dpad_killstreak_precision_airstrike");
|
||||
precachestring(&"SP_KILLSTREAKS_REWARDNAME_PRECISION_AIRSTRIKE");
|
||||
precachestring(&"SP_KILLSTREAKS_EARNED_PRECISION_AIRSTRIKE");
|
||||
precachestring(&"SP_KILLSTREAKS_PRECISION_AIRSTRIKE_PICKUP");
|
||||
precacheshader("specialty_stealth_bomber");
|
||||
precacheshader("dpad_killstreak_stealth_bomber");
|
||||
precachestring(&"SP_KILLSTREAKS_REWARDNAME_STEALTH_AIRSTRIKE");
|
||||
precachestring(&"SP_KILLSTREAKS_EARNED_STEALTH_AIRSTRIKE");
|
||||
precachestring(&"SP_KILLSTREAKS_STEALTH_AIRSTRIKE_PICKUP");
|
||||
level.var_3442 = loadfx("fire/fire_smoke_trail_L");
|
||||
level.var_3443 = loadfx("explosions/clusterbomb");
|
||||
level.mortareffect = loadfx("explosions/artilleryExp_dirt_brown");
|
||||
level.bombstrike = loadfx("explosions/wall_explosion_pm_a");
|
||||
level.stealthbombfx = loadfx("explosions/stealth_bomb_mp");
|
||||
level.planes = 0;
|
||||
level.harrier_smoke = loadfx("fire/jet_afterburner_harrier_damaged");
|
||||
level.harrier_deathfx = loadfx("explosions/aerial_explosion_harrier");
|
||||
level.harrier_afterburnerfx = loadfx("fire/jet_afterburner_harrier");
|
||||
level.fx_airstrike_afterburner = loadfx("fire/jet_afterburner");
|
||||
level.fx_airstrike_contrail = loadfx("smoke/jet_contrail");
|
||||
level.dangermaxradius["stealth"] = 900;
|
||||
level.dangerminradius["stealth"] = 750;
|
||||
level.dangerforwardpush["stealth"] = 1;
|
||||
level.dangerovalscale["stealth"] = 6;
|
||||
level.dangermaxradius["default"] = 550;
|
||||
level.dangerminradius["default"] = 300;
|
||||
level.dangerforwardpush["default"] = 1.5;
|
||||
level.dangerovalscale["default"] = 6;
|
||||
level.dangermaxradius["precision"] = 550;
|
||||
level.dangerminradius["precision"] = 300;
|
||||
level.dangerforwardpush["precision"] = 2;
|
||||
level.dangerovalscale["precision"] = 6;
|
||||
level.dangermaxradius["harrier"] = 550;
|
||||
level.dangerminradius["harrier"] = 300;
|
||||
level.dangerforwardpush["harrier"] = 1.5;
|
||||
level.dangerovalscale["harrier"] = 6;
|
||||
level.artillerydangercenters = [];
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
try_use_airstrike(param_00)
|
||||
{
|
||||
if(isdefined(self.using_uav) && self.using_uav)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(!isdefined(param_00))
|
||||
{
|
||||
param_00 = "precision";
|
||||
}
|
||||
|
||||
switch(param_00)
|
||||
{
|
||||
case "precision":
|
||||
break;
|
||||
|
||||
case "stealth":
|
||||
break;
|
||||
|
||||
case "harrier":
|
||||
if(level.planes > 1)
|
||||
{
|
||||
iprintlnbold("Air space too crowded!");
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
|
||||
case "super":
|
||||
break;
|
||||
}
|
||||
|
||||
var_01 = airstrike_location_select(param_00);
|
||||
if(!isdefined(var_01))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
thread finish_using_airstrike(param_00,var_01.location,var_01.directionyaw);
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
airstrike_location_select(param_00)
|
||||
{
|
||||
var_01 = 0;
|
||||
if(param_00 == "precision" || param_00 == "stealth")
|
||||
{
|
||||
var_01 = 1;
|
||||
}
|
||||
|
||||
var_02 = level.mapsize / 5.625;
|
||||
if(issplitscreen())
|
||||
{
|
||||
var_02 = var_02 * 1.5;
|
||||
}
|
||||
|
||||
self beginlocationselection("map_artillery_selector",var_01,var_02);
|
||||
self.selectinglocation = 1;
|
||||
self setblurforplayer(4,0.3);
|
||||
thread waitforairstrikecancel();
|
||||
thread endselectionon("cancel_location");
|
||||
thread endselectionon("death");
|
||||
thread endselectionon("disconnect");
|
||||
self endon("stop_location_selection");
|
||||
self waittill("confirm_location",var_03,var_04);
|
||||
if(!var_01)
|
||||
{
|
||||
var_04 = randomint(360);
|
||||
}
|
||||
|
||||
self setblurforplayer(0,0.3);
|
||||
if(param_00 == "harrier" && level.planes > 1)
|
||||
{
|
||||
self notify("cancel_location");
|
||||
iprintlnbold("Air space too crowded!");
|
||||
return 0;
|
||||
}
|
||||
|
||||
var_05 = spawnstruct();
|
||||
var_05.location = var_03;
|
||||
var_05.directionyaw = var_04;
|
||||
maps\_utility::delaythread(0.05,::stopairstrikelocationselection);
|
||||
return var_05;
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
waitforairstrikecancel()
|
||||
{
|
||||
self waittill("cancel_location");
|
||||
self setblurforplayer(0,0.3);
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
endselectionon(param_00)
|
||||
{
|
||||
self endon("stop_location_selection");
|
||||
self waittill(param_00);
|
||||
thread stopairstrikelocationselection();
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
stopairstrikelocationselection()
|
||||
{
|
||||
self setblurforplayer(0,0.3);
|
||||
self endlocationselection();
|
||||
self.selectinglocation = undefined;
|
||||
self notify("stop_location_selection");
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
finish_using_airstrike(param_00,param_01,param_02)
|
||||
{
|
||||
var_03 = bullettrace(level.mapcenter + (0,0,1000000),level.mapcenter,0,undefined);
|
||||
param_01 = (param_01[0],param_01[1],var_03["position"][2] - 514);
|
||||
thread do_airstrike(param_00,param_01,param_02,self,self.team);
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
do_airstrike(param_00,param_01,param_02,param_03,param_04)
|
||||
{
|
||||
if(!isdefined(param_00))
|
||||
{
|
||||
param_00 = "default";
|
||||
}
|
||||
|
||||
if(param_00 == "harrier")
|
||||
{
|
||||
level.planes++;
|
||||
}
|
||||
|
||||
if(isdefined(level.airstrikeinprogress))
|
||||
{
|
||||
while(isdefined(level.airstrikeinprogress))
|
||||
{
|
||||
level waittill("begin_airstrike");
|
||||
}
|
||||
|
||||
level.airstrikeinprogress = 1;
|
||||
wait 2;
|
||||
}
|
||||
|
||||
if(!isdefined(param_03))
|
||||
{
|
||||
if(param_00 == "harrier")
|
||||
{
|
||||
level.planes--;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
level.airstrikeinprogress = 1;
|
||||
var_05 = 17 + randomint(3);
|
||||
var_06 = bullettrace(param_01,param_01 + (0,0,-1000000),0,undefined);
|
||||
var_07 = var_06["position"];
|
||||
var_08 = spawnstruct();
|
||||
var_08.origin = var_07;
|
||||
var_08.forward = anglestoforward((0,param_02,0));
|
||||
var_08.airstriketype = param_00;
|
||||
level.artillerydangercenters[level.artillerydangercenters.size] = var_08;
|
||||
var_09 = callstrike(param_03,var_07,param_02,param_00);
|
||||
wait 1;
|
||||
level.airstrikeinprogress = undefined;
|
||||
param_03 notify("begin_airstrike");
|
||||
level notify("begin_airstrike");
|
||||
wait 7.5;
|
||||
var_0A = 0;
|
||||
var_0B = [];
|
||||
for(var_0C = 0;var_0C < level.artillerydangercenters.size;var_0C++)
|
||||
{
|
||||
if(!var_0A && level.artillerydangercenters[var_0C].origin == var_07)
|
||||
{
|
||||
var_0A = 1;
|
||||
continue;
|
||||
}
|
||||
|
||||
var_0B[var_0B.size] = level.artillerydangercenters[var_0C];
|
||||
}
|
||||
|
||||
level.artillerydangercenters = var_0B;
|
||||
if(param_00 != "harrier")
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
while(isdefined(var_09))
|
||||
{
|
||||
wait 0.1;
|
||||
}
|
||||
|
||||
level.planes--;
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
callstrike(param_00,param_01,param_02,param_03)
|
||||
{
|
||||
var_04 = undefined;
|
||||
var_05 = 0;
|
||||
var_06 = (0,param_02,0);
|
||||
var_04 = getent("airstrikeheight","targetname");
|
||||
if(param_03 == "stealth")
|
||||
{
|
||||
var_07 = 12000;
|
||||
var_08 = 2000;
|
||||
if(!isdefined(var_04))
|
||||
{
|
||||
var_09 = 950;
|
||||
var_05 = 1500;
|
||||
if(isdefined(level.airstrikeheightscale))
|
||||
{
|
||||
var_09 = var_09 * level.airstrikeheightscale;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var_09 = var_05.origin[2];
|
||||
var_05 = getexplodedistance(var_09);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var_07 = 24000;
|
||||
var_08 = 7000;
|
||||
if(!isdefined(var_05))
|
||||
{
|
||||
var_09 = 850;
|
||||
var_05 = 1500;
|
||||
if(isdefined(level.airstrikeheightscale))
|
||||
{
|
||||
var_09 = var_09 * level.airstrikeheightscale;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var_09 = var_05.origin[2];
|
||||
var_05 = getexplodedistance(var_09);
|
||||
}
|
||||
}
|
||||
|
||||
var_0A = param_01 + anglestoforward(var_06) * -1 * var_07;
|
||||
if(isdefined(var_04))
|
||||
{
|
||||
var_0A = var_0A * (1,1,0);
|
||||
}
|
||||
|
||||
var_0A = var_0A + (0,0,var_09);
|
||||
if(param_03 == "stealth")
|
||||
{
|
||||
var_0B = param_01 + anglestoforward(var_06) * var_07 * 4;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_0B = param_02 + anglestoforward(var_07) * var_08;
|
||||
}
|
||||
|
||||
if(isdefined(var_04))
|
||||
{
|
||||
var_0B = var_0B * (1,1,0);
|
||||
}
|
||||
|
||||
var_0B = var_0B + (0,0,var_09);
|
||||
var_0C = length(var_0A - var_0B);
|
||||
var_0D = var_0C / var_08;
|
||||
var_0C = abs(var_0C / 2 + var_05);
|
||||
var_0E = var_0C / var_08;
|
||||
param_00 endon("disconnect");
|
||||
level.airstrikedamagedents = [];
|
||||
level.airstrikedamagedentscount = 0;
|
||||
level.airstrikedamagedentsindex = 0;
|
||||
if(param_03 == "stealth")
|
||||
{
|
||||
level thread dobomberstrike(param_00,param_01,var_0A + (0,0,randomint(1000)),var_0B + (0,0,randomint(1000)),var_0E,var_0D,var_06);
|
||||
return;
|
||||
}
|
||||
|
||||
level thread doplanestrike(param_00,param_01,var_0A + (0,0,randomint(500)),var_0B + (0,0,randomint(500)),var_0E,var_0D,var_06,param_03);
|
||||
wait randomfloatrange(1.5,2.5);
|
||||
level thread doplanestrike(param_00,param_01,var_0A + (0,0,randomint(200)),var_0B + (0,0,randomint(200)),var_0E,var_0D,var_06,param_03);
|
||||
wait randomfloatrange(1.5,2.5);
|
||||
level thread doplanestrike(param_00,param_01,var_0A + (0,0,randomint(200)),var_0B + (0,0,randomint(200)),var_0E,var_0D,var_06,param_03);
|
||||
if(param_03 == "super")
|
||||
{
|
||||
wait randomfloatrange(2.5,3.5);
|
||||
level thread doplanestrike(param_00,param_01,var_0A + (0,0,randomint(200)),var_0B + (0,0,randomint(200)),var_0E,var_0D,var_06,param_03);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
getexplodedistance(param_00)
|
||||
{
|
||||
var_01 = 850;
|
||||
var_02 = 1500;
|
||||
var_03 = var_01 / param_00;
|
||||
var_04 = var_03 * var_02;
|
||||
return var_04;
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
airstrike_spawn_fake_plane(param_00,param_01,param_02)
|
||||
{
|
||||
var_03 = "vehicle_mig29_desert";
|
||||
var_04 = "compass_objpoint_airstrike_friendly";
|
||||
var_05 = "compass_objpoint_airstrike_busy";
|
||||
if(param_00 == "harrier")
|
||||
{
|
||||
var_03 = "vehicle_av8b_harrier_jet_mp";
|
||||
if(param_01.team != "allies")
|
||||
{
|
||||
var_03 = "vehicle_av8b_harrier_jet_opfor_mp";
|
||||
}
|
||||
|
||||
var_04 = "hud_minimap_harrier_green";
|
||||
var_05 = "hud_minimap_harrier_red";
|
||||
}
|
||||
else if(param_00 == "stealth")
|
||||
{
|
||||
var_03 = "vehicle_b2_bomber";
|
||||
var_04 = "compass_objpoint_b2_airstrike_friendly";
|
||||
var_05 = "compass_objpoint_b2_airstrike_enemy";
|
||||
}
|
||||
|
||||
var_06 = spawn("script_model",param_02);
|
||||
var_06.team = param_01.team;
|
||||
var_06 setmodel(var_03);
|
||||
return var_06;
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
doplanestrike(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07)
|
||||
{
|
||||
if(!isdefined(param_00))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var_08 = 100;
|
||||
var_09 = 150;
|
||||
var_0A = param_02 + (randomfloat(2) - 1 * var_08,randomfloat(2) - 1 * var_08,0);
|
||||
var_0B = param_03 + (randomfloat(2) - 1 * var_09,randomfloat(2) - 1 * var_09,0);
|
||||
var_0C = airstrike_spawn_fake_plane(param_07,param_00,var_0A);
|
||||
var_0C playloopsound("veh_mig29_dist_loop");
|
||||
var_0C.angles = param_06;
|
||||
var_0D = anglestoforward(param_06);
|
||||
var_0C thread playplanefx();
|
||||
var_0C moveto(var_0B,param_05,0,0);
|
||||
thread callstrike_bombeffect(var_0C,var_0B,param_05,param_04 - 1,param_00,param_07);
|
||||
wait param_05;
|
||||
var_0C notify("delete");
|
||||
var_0C delete();
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
playplanefx()
|
||||
{
|
||||
self endon("death");
|
||||
wait 0.5;
|
||||
playfxontag(level.fx_airstrike_afterburner,self,"tag_engine_right");
|
||||
wait 0.5;
|
||||
playfxontag(level.fx_airstrike_afterburner,self,"tag_engine_left");
|
||||
wait 0.5;
|
||||
playfxontag(level.fx_airstrike_contrail,self,"tag_right_wingtip");
|
||||
wait 0.5;
|
||||
playfxontag(level.fx_airstrike_contrail,self,"tag_left_wingtip");
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
callstrike_bomb(param_00,param_01,param_02,param_03)
|
||||
{
|
||||
if(!isdefined(param_01))
|
||||
{
|
||||
self notify("stop_bombing");
|
||||
return;
|
||||
}
|
||||
|
||||
var_04 = 512;
|
||||
var_05 = (0,randomint(360),0);
|
||||
var_06 = param_00 + anglestoforward(var_05) * randomfloat(var_04);
|
||||
var_07 = bullettrace(var_06,var_06 + (0,0,-10000),0,undefined);
|
||||
var_06 = var_07["position"];
|
||||
var_08 = distance(param_00,var_06);
|
||||
if(var_08 > 5000)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
wait 0.85 * var_08 / 2000;
|
||||
if(!isdefined(param_01))
|
||||
{
|
||||
self notify("stop_bombing");
|
||||
return;
|
||||
}
|
||||
|
||||
if(param_03)
|
||||
{
|
||||
playfx(level.mortareffect,var_06);
|
||||
playrumbleonposition("grenade_rumble",var_06);
|
||||
earthquake(1,0.6,var_06,2000);
|
||||
}
|
||||
|
||||
thread common_scripts\utility::play_sound_in_space("exp_airstrike_bomb",var_06);
|
||||
radiusartilleryshellshock(var_06,512,8,4);
|
||||
radiusdamage(var_06 + (0,0,16),896,300,50,param_01,"MOD_PROJECTILE_SPLASH","stealth_bomb_mp");
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
radiusartilleryshellshock(param_00,param_01,param_02,param_03)
|
||||
{
|
||||
foreach(var_05 in level.players)
|
||||
{
|
||||
if(!isalive(var_05))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_06 = var_05.origin + (0,0,32);
|
||||
var_07 = distance(param_00,var_06);
|
||||
if(var_07 > param_01)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_08 = var_07 / param_01;
|
||||
var_09 = maps\_utility::linear_interpolate(var_08,param_03,param_02);
|
||||
var_05 thread artilleryshellshock("default",var_09);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 16
|
||||
artilleryshellshock(param_00,param_01)
|
||||
{
|
||||
if(isdefined(self.beingartilleryshellshocked) && self.beingartilleryshellshocked)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self.beingartilleryshellshocked = 1;
|
||||
self shellshock(param_00,param_01);
|
||||
wait param_01 + 1;
|
||||
self.beingartilleryshellshocked = 0;
|
||||
}
|
||||
|
||||
//Function Number: 17
|
||||
callstrike_bombeffect(param_00,param_01,param_02,param_03,param_04,param_05)
|
||||
{
|
||||
wait param_03;
|
||||
if(!isdefined(param_04))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
param_00 playsound("veh_mig29_sonic_boom");
|
||||
var_06 = anglestoforward(param_00.angles);
|
||||
var_07 = spawnbomb(param_00.origin,param_00.angles);
|
||||
var_07.airstriketype = param_05;
|
||||
var_07 movegravity(anglestoforward(param_00.angles) * 4666.667,3);
|
||||
wait 1;
|
||||
var_08 = spawn("script_model",var_07.origin);
|
||||
var_08 setmodel("tag_origin");
|
||||
var_08.origin = var_07.origin;
|
||||
var_08.angles = var_07.angles;
|
||||
var_07 setmodel("tag_origin");
|
||||
wait 0.1;
|
||||
var_09 = var_08.origin;
|
||||
var_0A = var_08.angles;
|
||||
playfxontag(level.var_3443,var_08,"tag_origin");
|
||||
wait 1;
|
||||
var_0B = 12;
|
||||
var_0C = 5;
|
||||
var_0D = 55;
|
||||
var_0E = var_0D - var_0C / var_0B;
|
||||
var_0F = (0,0,0);
|
||||
for(var_10 = 0;var_10 < var_0B;var_10++)
|
||||
{
|
||||
var_11 = anglestoforward(var_0A + (var_0D - var_0E * var_10,randomint(10) - 5,0));
|
||||
var_12 = var_09 + var_11 * 10000;
|
||||
var_13 = bullettrace(var_09,var_12,0,undefined);
|
||||
var_14 = var_13["position"];
|
||||
var_0F = var_0F + var_14;
|
||||
radiusdamage(var_14 + (0,0,16),512,200,30,param_04,"MOD_PROJECTILE_SPLASH","artillery_mp");
|
||||
if(var_10 % 3 == 0)
|
||||
{
|
||||
thread common_scripts\utility::play_sound_in_space("exp_airstrike_bomb",var_14);
|
||||
playrumbleonposition("artillery_rumble",var_14);
|
||||
earthquake(0.7,0.75,var_14,1000);
|
||||
}
|
||||
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
var_0F = var_0F / var_0B + (0,0,128);
|
||||
wait 5;
|
||||
var_08 delete();
|
||||
var_07 delete();
|
||||
}
|
||||
|
||||
//Function Number: 18
|
||||
spawnbomb(param_00,param_01)
|
||||
{
|
||||
var_02 = spawn("script_model",param_00);
|
||||
var_02.angles = param_01;
|
||||
var_02 setmodel("projectile_cbu97_clusterbomb");
|
||||
return var_02;
|
||||
}
|
||||
|
||||
//Function Number: 19
|
||||
dobomberstrike(param_00,param_01,param_02,param_03,param_04,param_05,param_06)
|
||||
{
|
||||
if(!isdefined(param_00))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var_07 = 100;
|
||||
var_08 = 150;
|
||||
var_09 = param_02 + (randomfloat(2) - 1 * var_07,randomfloat(2) - 1 * var_07,0);
|
||||
var_0A = param_03 + (randomfloat(2) - 1 * var_08,randomfloat(2) - 1 * var_08,0);
|
||||
var_0B = airstrike_spawn_fake_plane("stealth",param_00,var_09);
|
||||
var_0B playloopsound("veh_b2_dist_loop");
|
||||
var_0B setmodel("vehicle_b2_bomber");
|
||||
var_0B.angles = param_06;
|
||||
var_0C = anglestoforward(param_06);
|
||||
var_0B moveto(var_0A,param_05,0,0);
|
||||
thread bomberdropbombs(var_0B,param_01,param_00);
|
||||
wait param_05;
|
||||
var_0B notify("delete");
|
||||
var_0B delete();
|
||||
}
|
||||
|
||||
//Function Number: 20
|
||||
bomberdropbombs(param_00,param_01,param_02)
|
||||
{
|
||||
while(!targetisclose(param_00,param_01,5000))
|
||||
{
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
var_03 = 1;
|
||||
var_04 = 0;
|
||||
param_00 notify("start_bombing");
|
||||
param_00 thread playbombfx();
|
||||
for(var_05 = targetgetdist(param_00,param_01);var_05 < 5000;var_05 = targetgetdist(param_00,param_01))
|
||||
{
|
||||
if(var_05 < 1500 && !var_04)
|
||||
{
|
||||
param_00 playsound("veh_b2_sonic_boom");
|
||||
var_04 = 1;
|
||||
}
|
||||
|
||||
var_03 = !var_03;
|
||||
if(var_05 < 4500)
|
||||
{
|
||||
param_00 thread callstrike_bomb(param_00.origin,param_02,(0,0,0),var_03);
|
||||
}
|
||||
|
||||
wait 0.1;
|
||||
}
|
||||
|
||||
param_00 notify("stop_bombing");
|
||||
}
|
||||
|
||||
//Function Number: 21
|
||||
targetisclose(param_00,param_01,param_02)
|
||||
{
|
||||
if(!isdefined(param_02))
|
||||
{
|
||||
param_02 = 3000;
|
||||
}
|
||||
|
||||
var_03 = targetisinfront(param_00,param_01);
|
||||
if(var_03)
|
||||
{
|
||||
var_04 = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_04 = -1;
|
||||
}
|
||||
|
||||
var_05 = common_scripts\utility::flat_origin(param_00.origin);
|
||||
var_06 = var_05 + anglestoforward(common_scripts\utility::flat_angle(param_00.angles)) * var_04 * 100000;
|
||||
var_07 = pointonsegmentnearesttopoint(var_05,var_06,param_01);
|
||||
var_08 = distance(var_05,var_07);
|
||||
if(var_08 < param_02)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
//Function Number: 22
|
||||
targetisinfront(param_00,param_01)
|
||||
{
|
||||
var_02 = anglestoforward(common_scripts\utility::flat_angle(param_00.angles));
|
||||
var_03 = vectornormalize(common_scripts\utility::flat_origin(param_01) - param_00.origin);
|
||||
var_04 = vectordot(var_02,var_03);
|
||||
if(var_04 > 0)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
//Function Number: 23
|
||||
targetgetdist(param_00,param_01)
|
||||
{
|
||||
var_02 = targetisinfront(param_00,param_01);
|
||||
if(var_02)
|
||||
{
|
||||
var_03 = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_03 = -1;
|
||||
}
|
||||
|
||||
var_04 = common_scripts\utility::flat_origin(param_00.origin);
|
||||
var_05 = var_04 + anglestoforward(common_scripts\utility::flat_angle(param_00.angles)) * var_03 * 100000;
|
||||
var_06 = pointonsegmentnearesttopoint(var_04,var_05,param_01);
|
||||
var_07 = distance(var_04,var_06);
|
||||
return var_07;
|
||||
}
|
||||
|
||||
//Function Number: 24
|
||||
playbombfx()
|
||||
{
|
||||
self endon("stop_bombing");
|
||||
for(;;)
|
||||
{
|
||||
playfxontag(level.stealthbombfx,self,"tag_left_alamo_missile");
|
||||
playfxontag(level.stealthbombfx,self,"tag_right_alamo_missile");
|
||||
wait 0.5;
|
||||
}
|
||||
}
|
925
MW3/PC/SP/maps/_sp_killstreaks.gsc
Normal file
925
MW3/PC/SP/maps/_sp_killstreaks.gsc
Normal file
@ -0,0 +1,925 @@
|
||||
/*******************************************************************
|
||||
* 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;
|
||||
}
|
5517
MW3/PC/SP/maps/_spawner.gsc
Normal file
5517
MW3/PC/SP/maps/_spawner.gsc
Normal file
File diff suppressed because it is too large
Load Diff
2585
MW3/PC/SP/maps/_specialops.gsc
Normal file
2585
MW3/PC/SP/maps/_specialops.gsc
Normal file
File diff suppressed because it is too large
Load Diff
627
MW3/PC/SP/maps/_specialops_battlechatter.gsc
Normal file
627
MW3/PC/SP/maps/_specialops_battlechatter.gsc
Normal file
@ -0,0 +1,627 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_specialops_battlechatter.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 32
|
||||
* Decompile Time: 518 ms
|
||||
* Timestamp: 10/27/2023 2:21:40 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
init()
|
||||
{
|
||||
anim.so = spawnstruct();
|
||||
level.so.eventtypes = [];
|
||||
level.so.eventtypes["check_fire"] = "threat_friendly_fire";
|
||||
level.so.eventtypes["reload"] = "inform_reload_generic";
|
||||
level.so.eventtypes["frag_out"] = "inform_attack_grenade";
|
||||
level.so.eventtypes["flash_out"] = "inform_attack_flashbang";
|
||||
level.so.eventtypes["smoke_out"] = "inform_attack_smoke";
|
||||
level.so.eventtypes["c4_plant"] = "inform_attack_c4";
|
||||
level.so.eventtypes["claymore_plant"] = "inform_plant_claymore";
|
||||
level.so.eventtypes["downed"] = "inform_suppressed";
|
||||
level.so.eventtypes["bleedout"] = "inform_bleedout";
|
||||
level.so.eventtypes["reviving"] = "inform_reviving";
|
||||
level.so.eventtypes["revived"] = "inform_revived";
|
||||
level.so.eventtypes["sentry_out"] = "inform_place_sentry";
|
||||
level.so.eventtypes["area_secure"] = "inform_area_secure";
|
||||
level.so.eventtypes["kill_generic"] = "inform_kill_generic";
|
||||
level.so.eventtypes["kill_infantry"] = "inform_kill_infantry";
|
||||
level.so.eventtypes["affirmative"] = "inform_roger";
|
||||
level.so.eventtypes["negative"] = "inform_negative";
|
||||
level.so.eventtypes["on_comms"] = "inform_comms";
|
||||
level.so.eventtypes["mark_dropzone"] = "inform_markdz";
|
||||
level.so.eventtypes["glowstick_out"] = "inform_use_glowstick";
|
||||
level.so.eventtypeminwait = [];
|
||||
level.so.eventtypeminwait["check_fire"] = 4;
|
||||
level.so.eventtypeminwait["reload"] = 8;
|
||||
level.so.eventtypeminwait["frag_out"] = 3;
|
||||
level.so.eventtypeminwait["flash_out"] = 3;
|
||||
level.so.eventtypeminwait["smoke_out"] = 3;
|
||||
level.so.eventtypeminwait["c4_plant"] = 2;
|
||||
level.so.eventtypeminwait["claymore_plant"] = 2;
|
||||
level.so.eventtypeminwait["downed"] = 0.5;
|
||||
level.so.eventtypeminwait["bleedout"] = 0.5;
|
||||
level.so.eventtypeminwait["reviving"] = 2;
|
||||
level.so.eventtypeminwait["revived"] = 2;
|
||||
level.so.eventtypeminwait["sentry_out"] = 3;
|
||||
level.so.eventtypeminwait["kill_generic"] = 2;
|
||||
level.so.eventtypeminwait["kill_infantry"] = 2;
|
||||
level.so.eventtypeminwait["area_secure"] = 0.5;
|
||||
level.so.eventtypeminwait["affirmative"] = 2;
|
||||
level.so.eventtypeminwait["negative"] = 2;
|
||||
level.so.eventtypeminwait["on_comms"] = 0.5;
|
||||
level.so.eventtypeminwait["mark_dropzone"] = 0.5;
|
||||
level.so.eventtypeminwait["glowstick_out"] = 3;
|
||||
level.so.skipdistancecheck = [];
|
||||
level.so.skipdistancecheck[level.so.skipdistancecheck.size] = "affirmative";
|
||||
level.so.skipdistancecheck[level.so.skipdistancecheck.size] = "negative";
|
||||
level.so.skipdistancecheck[level.so.skipdistancecheck.size] = "area_secure";
|
||||
level.so.skipdistancecheck[level.so.skipdistancecheck.size] = "on_comms";
|
||||
level.so.skipdistancecheck[level.so.skipdistancecheck.size] = "mark_dropzone";
|
||||
level.so.skipdistancecheck[level.so.skipdistancecheck.size] = "downed";
|
||||
level.so.skipdistancecheck[level.so.skipdistancecheck.size] = "bleedout";
|
||||
level.so.skipdistancecheck[level.so.skipdistancecheck.size] = "check_fire";
|
||||
level.so.noreloadcalloutweapons = [];
|
||||
level.so.noreloadcalloutweapons[level.so.noreloadcalloutweapons.size] = "m79";
|
||||
level.so.noreloadcalloutweapons[level.so.noreloadcalloutweapons.size] = "ranger";
|
||||
level.so.noreloadcalloutweapons[level.so.noreloadcalloutweapons.size] = "claymore";
|
||||
level.so.noreloadcalloutweapons[level.so.noreloadcalloutweapons.size] = "rpg";
|
||||
level.so.noreloadcalloutweapons[level.so.noreloadcalloutweapons.size] = "rpg_player";
|
||||
level.so.bcmaxdistsqd = 640000;
|
||||
level.so.bcprintfailprefix = "^3***** BCS FAILURE: ";
|
||||
common_scripts\utility::array_thread(level.players,::enable_chatter_on_player);
|
||||
enable_chatter();
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
enable_chatter()
|
||||
{
|
||||
level.so_player_chatter_enabled = 1;
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
disable_chatter()
|
||||
{
|
||||
level.so_player_chatter_enabled = 0;
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
enable_chatter_on_player()
|
||||
{
|
||||
self.so_isspeaking = 0;
|
||||
self.bc_eventtypelastusedtime = [];
|
||||
thread revive_tracking();
|
||||
thread claymore_tracking();
|
||||
thread reload_tracking();
|
||||
thread grenade_tracking();
|
||||
thread friendlyfire_tracking();
|
||||
thread friendlyfire_whizby_tracking();
|
||||
thread sentry_tracking();
|
||||
thread kill_generic_tracking();
|
||||
thread kill_infantry_tracking();
|
||||
thread area_secure_tracking();
|
||||
thread affirmative_tracking();
|
||||
thread negative_tracking();
|
||||
thread on_comms_tracking();
|
||||
thread mark_dropzone_tracking();
|
||||
thread glowstick_tracking();
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
revive_tracking()
|
||||
{
|
||||
level endon("special_op_terminated");
|
||||
self endon("death");
|
||||
for(;;)
|
||||
{
|
||||
var_00 = common_scripts\utility::waittill_any_return("so_downed","so_bleedingout","so_reviving","so_revived");
|
||||
if(var_00 == "so_downed")
|
||||
{
|
||||
play_so_chatter("downed");
|
||||
continue;
|
||||
}
|
||||
|
||||
if(var_00 == "so_bleedingout")
|
||||
{
|
||||
play_so_chatter("bleedout");
|
||||
continue;
|
||||
}
|
||||
|
||||
if(var_00 == "so_reviving")
|
||||
{
|
||||
play_so_chatter("reviving");
|
||||
continue;
|
||||
}
|
||||
|
||||
if(var_00 == "so_revived")
|
||||
{
|
||||
play_so_chatter("revived");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
claymore_tracking()
|
||||
{
|
||||
level endon("special_op_terminated");
|
||||
self endon("death");
|
||||
for(;;)
|
||||
{
|
||||
self waittill("begin_firing");
|
||||
var_00 = self getcurrentweapon();
|
||||
if(var_00 == "claymore")
|
||||
{
|
||||
play_so_chatter("claymore_plant");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
sentry_tracking()
|
||||
{
|
||||
level endon("special_op_terminated");
|
||||
self endon("death");
|
||||
for(;;)
|
||||
{
|
||||
self waittill("sentry_placement_finished");
|
||||
play_so_chatter("sentry_out");
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
kill_generic_tracking()
|
||||
{
|
||||
level endon("special_op_terminated");
|
||||
self endon("death");
|
||||
for(;;)
|
||||
{
|
||||
self waittill("so_bcs_kill_generic");
|
||||
play_so_chatter("kill_generic");
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
kill_infantry_tracking()
|
||||
{
|
||||
level endon("special_op_terminated");
|
||||
self endon("death");
|
||||
for(;;)
|
||||
{
|
||||
self waittill("so_bcs_kill_infantry");
|
||||
play_so_chatter("kill_infantry");
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
area_secure_tracking()
|
||||
{
|
||||
level endon("special_op_terminated");
|
||||
self endon("death");
|
||||
for(;;)
|
||||
{
|
||||
self waittill("so_bcs_area_secure");
|
||||
play_so_chatter("area_secure");
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
affirmative_tracking()
|
||||
{
|
||||
level endon("special_op_terminated");
|
||||
self endon("death");
|
||||
for(;;)
|
||||
{
|
||||
self waittill("so_bcs_affirmative");
|
||||
play_so_chatter("area_secure");
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
negative_tracking()
|
||||
{
|
||||
level endon("special_op_terminated");
|
||||
self endon("death");
|
||||
for(;;)
|
||||
{
|
||||
self waittill("so_bcs_negative");
|
||||
play_so_chatter("negative");
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
on_comms_tracking()
|
||||
{
|
||||
level endon("special_op_terminated");
|
||||
self endon("death");
|
||||
for(;;)
|
||||
{
|
||||
self waittill("so_bcs_on_comms");
|
||||
play_so_chatter("on_comms");
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
mark_dropzone_tracking()
|
||||
{
|
||||
level endon("special_op_terminated");
|
||||
self endon("death");
|
||||
for(;;)
|
||||
{
|
||||
self waittill("so_bcs_mark_dropzone");
|
||||
play_so_chatter("mark_dropzone");
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
glowstick_tracking()
|
||||
{
|
||||
}
|
||||
|
||||
//Function Number: 16
|
||||
reload_tracking()
|
||||
{
|
||||
level endon("special_op_terminated");
|
||||
self endon("death");
|
||||
for(;;)
|
||||
{
|
||||
self waittill("reload_start");
|
||||
var_00 = self getcurrentweapon();
|
||||
if(weapon_no_reload_callout(var_00))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(is_downed())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
play_so_chatter("reload");
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 17
|
||||
weapon_no_reload_callout(param_00)
|
||||
{
|
||||
foreach(var_02 in level.so.noreloadcalloutweapons)
|
||||
{
|
||||
if(param_00 == var_02)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
//Function Number: 18
|
||||
grenade_tracking()
|
||||
{
|
||||
level endon("special_op_terminated");
|
||||
self endon("death");
|
||||
for(;;)
|
||||
{
|
||||
self waittill("grenade_fire",var_00,var_01);
|
||||
var_02 = undefined;
|
||||
if(var_01 == "fraggrenade")
|
||||
{
|
||||
var_02 = "frag_out";
|
||||
}
|
||||
else if(var_01 == "semtex_grenade")
|
||||
{
|
||||
var_02 = "frag_out";
|
||||
}
|
||||
else if(var_01 == "flash_grenade")
|
||||
{
|
||||
var_02 = "flash_out";
|
||||
}
|
||||
else if(var_01 == "smoke_grenade_american")
|
||||
{
|
||||
var_02 = "smoke_out";
|
||||
}
|
||||
else if(var_01 == "c4")
|
||||
{
|
||||
var_02 = "c4_plant";
|
||||
}
|
||||
|
||||
if(isdefined(var_02))
|
||||
{
|
||||
play_so_chatter(var_02);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 19
|
||||
friendlyfire_tracking()
|
||||
{
|
||||
level endon("special_op_terminated");
|
||||
self endon("death");
|
||||
for(;;)
|
||||
{
|
||||
self waittill("damage",var_00,var_01,var_02,var_03,var_04);
|
||||
if(!friendlyfire_is_valid(var_00,var_01,var_04))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
play_so_chatter("check_fire");
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 20
|
||||
friendlyfire_is_valid(param_00,param_01,param_02)
|
||||
{
|
||||
if(param_00 <= 0)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(!isplayer(param_01))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(param_01 == self)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(param_02 == "MOD_MELEE")
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(isdefined(level.friendlyfire_warnings) && !level.friendlyfire_warnings)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Function Number: 21
|
||||
friendlyfire_whizby_tracking()
|
||||
{
|
||||
level endon("special_op_terminated");
|
||||
self endon("death");
|
||||
self addaieventlistener("bulletwhizby");
|
||||
for(;;)
|
||||
{
|
||||
self waittill("ai_event",var_00,var_01,var_02);
|
||||
if(var_00 == "bulletwhizby")
|
||||
{
|
||||
if(!friendlyfire_whizby_is_valid(var_01,var_02))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
play_so_chatter("check_fire");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 22
|
||||
friendlyfire_whizby_is_valid(param_00,param_01)
|
||||
{
|
||||
if(!isplayer(param_00))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(param_00 == self)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(is_downed())
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(abs(param_01[2] - self.origin[2] > 128))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
var_02 = distance2d(self.origin,param_01);
|
||||
if(!animscripts/battlechatter_ai::func_B35(param_00,var_02))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(isdefined(level.friendlyfire_warnings) && !level.friendlyfire_warnings)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Function Number: 23
|
||||
play_revive_nag()
|
||||
{
|
||||
var_00 = get_nag_event_type();
|
||||
play_so_chatter(var_00);
|
||||
}
|
||||
|
||||
//Function Number: 24
|
||||
get_nag_event_type()
|
||||
{
|
||||
var_00 = "downed";
|
||||
var_01 = self.laststand_info.bleedout_time;
|
||||
var_02 = self.laststand_info.bleedout_time_default;
|
||||
if(var_01 < var_02 * level.laststand_stage2_multiplier)
|
||||
{
|
||||
var_00 = "bleedout";
|
||||
}
|
||||
|
||||
return var_00;
|
||||
}
|
||||
|
||||
//Function Number: 25
|
||||
can_say_current_nag_event_type()
|
||||
{
|
||||
var_00 = get_nag_event_type();
|
||||
return can_say_event_type(var_00);
|
||||
}
|
||||
|
||||
//Function Number: 26
|
||||
play_so_chatter(param_00)
|
||||
{
|
||||
level endon("special_op_terminated");
|
||||
self endon("death");
|
||||
if(!can_say_event_type(param_00))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(!close_enough_to_other_player(param_00))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var_01 = get_player_team_prefix(self) + level.so.eventtypes[param_00];
|
||||
var_01 = check_overrides(param_00,var_01);
|
||||
if(!isdefined(var_01))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(!soundexists(var_01))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self.so_isspeaking = 1;
|
||||
self playsound(var_01,"bc_done",1);
|
||||
self waittill("bc_done");
|
||||
self.so_isspeaking = 0;
|
||||
update_event_type(param_00);
|
||||
}
|
||||
|
||||
//Function Number: 27
|
||||
can_say_event_type(param_00)
|
||||
{
|
||||
if(!isdefined(level.so_player_chatter_enabled) || !level.so_player_chatter_enabled)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(self.so_isspeaking)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(!isdefined(self.bc_eventtypelastusedtime[param_00]))
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
var_01 = self.bc_eventtypelastusedtime[param_00];
|
||||
var_02 = level.so.eventtypeminwait[param_00] * 1000;
|
||||
if(gettime() - var_01 >= var_02)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
//Function Number: 28
|
||||
update_event_type(param_00)
|
||||
{
|
||||
self.bc_eventtypelastusedtime[param_00] = gettime();
|
||||
}
|
||||
|
||||
//Function Number: 29
|
||||
check_overrides(param_00,param_01)
|
||||
{
|
||||
if(param_00 == "reload")
|
||||
{
|
||||
if(isdefined(level.so_override["skip_inform_reloading"]) && level.so_override["skip_inform_reloading"])
|
||||
{
|
||||
return undefined;
|
||||
}
|
||||
|
||||
if(isdefined(level.so_override["inform_reloading"]))
|
||||
{
|
||||
return level.so_override["inform_reloading"];
|
||||
}
|
||||
}
|
||||
|
||||
return param_01;
|
||||
}
|
||||
|
||||
//Function Number: 30
|
||||
get_player_team_prefix(param_00)
|
||||
{
|
||||
var_01 = "";
|
||||
if(isdefined(level.so_stealth) && level.so_stealth)
|
||||
{
|
||||
var_01 = "STEALTH_";
|
||||
}
|
||||
|
||||
var_02 = "1";
|
||||
if(param_00 == level.player2)
|
||||
{
|
||||
var_02 = "2";
|
||||
}
|
||||
|
||||
switch(level.so_campaign)
|
||||
{
|
||||
case "fso":
|
||||
case "hijack":
|
||||
case "delta":
|
||||
case "ranger":
|
||||
return "SO_US_" + var_02 + "_" + var_01;
|
||||
|
||||
case "seal":
|
||||
return "SO_NS_" + var_02 + "_" + var_01;
|
||||
|
||||
case "sas":
|
||||
case "ghillie":
|
||||
case "woodland":
|
||||
case "desert":
|
||||
case "arctic":
|
||||
return "SO_UK_" + var_02 + "_" + var_01;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 31
|
||||
close_enough_to_other_player(param_00)
|
||||
{
|
||||
if(isdefined(param_00))
|
||||
{
|
||||
foreach(var_02 in level.so.skipdistancecheck)
|
||||
{
|
||||
if(var_02 == param_00)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var_04 = maps\_utility::get_other_player(self);
|
||||
if(distancesquared(var_04.origin,self.origin) > level.so.bcmaxdistsqd)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Function Number: 32
|
||||
is_downed()
|
||||
{
|
||||
if(maps\_utility::ent_flag_exist("laststand_downed") && maps\_utility::ent_flag("laststand_downed"))
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
2180
MW3/PC/SP/maps/_specialops_code.gsc
Normal file
2180
MW3/PC/SP/maps/_specialops_code.gsc
Normal file
File diff suppressed because it is too large
Load Diff
1042
MW3/PC/SP/maps/_squad_enemies.gsc
Normal file
1042
MW3/PC/SP/maps/_squad_enemies.gsc
Normal file
File diff suppressed because it is too large
Load Diff
409
MW3/PC/SP/maps/_stealth_vehicle.gsc
Normal file
409
MW3/PC/SP/maps/_stealth_vehicle.gsc
Normal file
@ -0,0 +1,409 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_stealth_vehicle.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 24
|
||||
* Decompile Time: 284 ms
|
||||
* Timestamp: 10/27/2023 2:20:24 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
flags_init()
|
||||
{
|
||||
level._effect["lighthaze_snow_headlights"] = loadfx("misc/lighthaze_snow_headlights");
|
||||
level._effect["car_taillight_uaz_l"] = loadfx("misc/car_taillight_uaz_l");
|
||||
common_scripts\utility::flag_init("truck_guys_alerted");
|
||||
common_scripts\utility::flag_init("jeep_blown_up");
|
||||
common_scripts\utility::flag_init("jeep_stopped");
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
increase_fov_when_player_is_near()
|
||||
{
|
||||
self endon("death");
|
||||
self endon("enemy");
|
||||
for(;;)
|
||||
{
|
||||
if(player_is_near())
|
||||
{
|
||||
self.fovcosine = 0.01;
|
||||
return;
|
||||
}
|
||||
|
||||
wait 0.5;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
player_is_near()
|
||||
{
|
||||
foreach(var_01 in level.players)
|
||||
{
|
||||
if(distancesquared(self.origin,var_01.origin) < squared(self.footstepdetectdistsprint))
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
stealth_truck_think()
|
||||
{
|
||||
thread base_truck_think();
|
||||
thread truck_headlights();
|
||||
self waittill("death");
|
||||
common_scripts\utility::flag_set("jeep_blown_up");
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
base_truck_guys_think()
|
||||
{
|
||||
self endon("death");
|
||||
level endon("_stealth_spotted");
|
||||
self endon("_stealth_attack");
|
||||
maps\_utility::ent_flag_init("jumped_out");
|
||||
thread truck_guys_think_jumpout();
|
||||
var_00 = [];
|
||||
var_01 = [];
|
||||
var_02 = [];
|
||||
lib_055A::func_41CF("animation","wrapper",::truck_animation_wrapper);
|
||||
lib_0559::func_4304(var_01);
|
||||
lib_0559::func_4309(var_7B);
|
||||
foreach(var_05, var_04 in var_02)
|
||||
{
|
||||
lib_0563::func_42C1(var_05,var_04);
|
||||
}
|
||||
|
||||
maps\_utility::ent_flag_set("_stealth_behavior_reaction_anim");
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
truck_guys_base_search_behavior(param_00)
|
||||
{
|
||||
self endon("_stealth_enemy_alert_level_change");
|
||||
level endon("_stealth_spotted");
|
||||
self endon("_stealth_attack");
|
||||
self endon("death");
|
||||
self endon("pain_death");
|
||||
thread base_truck_guys_attacked_again();
|
||||
self.disablearrivals = 0;
|
||||
self.disableexits = 0;
|
||||
var_01 = distance(param_00.origin,self.origin);
|
||||
self setgoalnode(param_00);
|
||||
self.goalradius = var_01 * 0.5;
|
||||
wait 0.05;
|
||||
maps\_utility::set_generic_run_anim("_stealth_patrol_cqb");
|
||||
self waittill("goal");
|
||||
if(!common_scripts\utility::flag("_stealth_spotted") && !isdefined(self.enemy) || !self cansee(self.enemy))
|
||||
{
|
||||
set_search_walk();
|
||||
lib_055A::func_41F2(param_00);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
base_truck_guys_attacked_again()
|
||||
{
|
||||
self endon("death");
|
||||
self endon("_stealth_attack");
|
||||
level endon("_stealth_spotted");
|
||||
wait 2;
|
||||
self waittill("_stealth_bad_event_listener");
|
||||
lib_055A::func_41EB();
|
||||
maps\_utility::ent_flag_set("not_first_attack");
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
set_search_walk()
|
||||
{
|
||||
maps\_utility::disable_cqbwalk();
|
||||
maps\_utility::set_generic_run_anim("patrol_cold_gunup_search",1);
|
||||
self.disablearrivals = 1;
|
||||
self.disableexits = 1;
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
truck_guys_think_jumpout()
|
||||
{
|
||||
self endon("death");
|
||||
self endon("pain_death");
|
||||
for(;;)
|
||||
{
|
||||
self waittill("jumpedout");
|
||||
lib_055A::func_41F1(self.origin);
|
||||
self.got_off_truck_origin = self.origin;
|
||||
maps\_utility::ent_flag_set("jumped_out");
|
||||
self waittill("enteredvehicle");
|
||||
wait 0.15;
|
||||
maps\_utility::ent_flag_clear("jumped_out");
|
||||
maps\_utility::ent_flag_set("_stealth_behavior_reaction_anim");
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
truck_animation_wrapper(param_00)
|
||||
{
|
||||
self endon("death");
|
||||
self endon("pain_death");
|
||||
common_scripts\utility::flag_set("truck_guys_alerted");
|
||||
maps\_utility::ent_flag_wait("jumped_out");
|
||||
lib_055A::func_4200(param_00);
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
truck_guys_reaction_behavior(param_00)
|
||||
{
|
||||
self endon("death");
|
||||
self endon("pain_death");
|
||||
level endon("_stealth_spotted");
|
||||
self endon("_stealth_attack");
|
||||
common_scripts\utility::flag_set("truck_guys_alerted");
|
||||
maps\_utility::ent_flag_wait("jumped_out");
|
||||
if(!common_scripts\utility::flag("truck_guys_alerted"))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(common_scripts\utility::flag_exist("truck_guys_not_going_back") && common_scripts\utility::flag("truck_guys_not_going_back"))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(!common_scripts\utility::flag("_stealth_spotted") && !maps\_utility::ent_flag("_stealth_attack"))
|
||||
{
|
||||
var_01 = maps\_utility::get_closest_player(self.origin);
|
||||
var_02 = lib_055A::func_41F3(var_01.origin,1500,128);
|
||||
if(isdefined(var_02))
|
||||
{
|
||||
thread truck_guys_base_search_behavior(var_02);
|
||||
}
|
||||
}
|
||||
|
||||
var_03 = lib_055A::func_41DB("_stealth_spotted");
|
||||
if(common_scripts\utility::flag(var_03))
|
||||
{
|
||||
common_scripts\utility::flag_waitopen(var_03);
|
||||
return;
|
||||
}
|
||||
|
||||
self waittill("normal");
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
truck_guys_no_enemy_reaction_behavior(param_00)
|
||||
{
|
||||
self endon("death");
|
||||
self endon("pain_death");
|
||||
level endon("_stealth_spotted");
|
||||
self endon("_stealth_attack");
|
||||
common_scripts\utility::flag_set("truck_guys_alerted");
|
||||
maps\_utility::ent_flag_wait("jumped_out");
|
||||
if(!common_scripts\utility::flag("truck_guys_alerted"))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(common_scripts\utility::flag_exist("truck_guys_not_going_back") && common_scripts\utility::flag("truck_guys_not_going_back"))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(!common_scripts\utility::flag("_stealth_spotted") && !maps\_utility::ent_flag("_stealth_attack"))
|
||||
{
|
||||
var_01 = self._stealth.logic.event.awareness_param[param_00];
|
||||
var_02 = lib_055A::func_41F3(var_01,300,40);
|
||||
thread lib_055A::func_41F4();
|
||||
if(isdefined(var_02))
|
||||
{
|
||||
thread truck_guys_base_search_behavior(var_02);
|
||||
}
|
||||
}
|
||||
|
||||
var_03 = lib_055A::func_41DB("_stealth_spotted");
|
||||
if(common_scripts\utility::flag(var_03))
|
||||
{
|
||||
common_scripts\utility::flag_waitopen(var_03);
|
||||
return;
|
||||
}
|
||||
|
||||
self waittill("normal");
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
truck_alert_level_attack(param_00)
|
||||
{
|
||||
self endon("death");
|
||||
self endon("pain_death");
|
||||
common_scripts\utility::flag_set("truck_guys_alerted");
|
||||
maps\_utility::ent_flag_wait("jumped_out");
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
set_alert_cold_patrol_anims()
|
||||
{
|
||||
self.patrol_walk_anim = "patrol_cold_gunup";
|
||||
self.patrol_walk_twitch = "patrol_gunup_twitch_weights";
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
wait_reaction_time()
|
||||
{
|
||||
var_00 = distance(self.origin,maps\_utility::get_closest_player(self.origin).origin);
|
||||
var_01 = var_00 - 200 / 1000;
|
||||
var_01 = clamp(var_01,0,0.5);
|
||||
wait var_01;
|
||||
}
|
||||
|
||||
//Function Number: 16
|
||||
base_truck_think()
|
||||
{
|
||||
self endon("death");
|
||||
thread dialog_truck_coming();
|
||||
thread dialog_jeep_stopped();
|
||||
thread unload_and_attack_if_stealth_broken_and_close();
|
||||
common_scripts\utility::flag_wait("truck_guys_alerted");
|
||||
var_00 = maps\_utility::get_living_ai_array("truck_guys","script_noteworthy");
|
||||
if(var_00.size == 0)
|
||||
{
|
||||
self vehicle_setspeed(0,15);
|
||||
return;
|
||||
}
|
||||
|
||||
var_01 = common_scripts\utility::random(var_00);
|
||||
var_01 lib_055A::func_41F4();
|
||||
self waittill("safe_to_unload");
|
||||
self vehicle_setspeed(0,15);
|
||||
wait 1;
|
||||
maps\_vehicle::vehicle_unload();
|
||||
common_scripts\utility::flag_set("jeep_stopped");
|
||||
}
|
||||
|
||||
//Function Number: 17
|
||||
unload_and_attack_if_stealth_broken_and_close()
|
||||
{
|
||||
self endon("truck_guys_alerted");
|
||||
for(;;)
|
||||
{
|
||||
common_scripts\utility::flag_wait("_stealth_spotted");
|
||||
foreach(var_01 in level.players)
|
||||
{
|
||||
thread waittill_player_in_range(var_01);
|
||||
}
|
||||
|
||||
self waittill("player_in_range");
|
||||
if(!common_scripts\utility::flag("_stealth_spotted"))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
common_scripts\utility::flag_set("truck_guys_alerted");
|
||||
}
|
||||
|
||||
//Function Number: 18
|
||||
waittill_player_in_range(param_00)
|
||||
{
|
||||
self endon("player_in_range");
|
||||
param_00 maps\_utility::waittill_entity_in_range(self,800);
|
||||
self notify("player_in_range");
|
||||
}
|
||||
|
||||
//Function Number: 19
|
||||
truck_headlights()
|
||||
{
|
||||
playfxontag(level._effect["lighthaze_snow_headlights"],self,"TAG_LIGHT_RIGHT_FRONT");
|
||||
playfxontag(level._effect["lighthaze_snow_headlights"],self,"TAG_LIGHT_LEFT_FRONT");
|
||||
playfxontag(level._effect["car_taillight_uaz_l"],self,"TAG_LIGHT_LEFT_TAIL");
|
||||
playfxontag(level._effect["car_taillight_uaz_l"],self,"TAG_LIGHT_RIGHT_TAIL");
|
||||
self waittill("death");
|
||||
if(isdefined(self))
|
||||
{
|
||||
delete_truck_headlights();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 20
|
||||
delete_truck_headlights()
|
||||
{
|
||||
stopfxontag(level._effect["lighthaze_snow_headlights"],self,"TAG_LIGHT_RIGHT_FRONT");
|
||||
stopfxontag(level._effect["lighthaze_snow_headlights"],self,"TAG_LIGHT_LEFT_FRONT");
|
||||
stopfxontag(level._effect["car_taillight_uaz_l"],self,"TAG_LIGHT_LEFT_TAIL");
|
||||
stopfxontag(level._effect["car_taillight_uaz_l"],self,"TAG_LIGHT_RIGHT_TAIL");
|
||||
}
|
||||
|
||||
//Function Number: 21
|
||||
dialog_truck_coming()
|
||||
{
|
||||
level endon("special_op_terminated");
|
||||
level endon("jeep_stopped");
|
||||
level endon("jeep_blown_up");
|
||||
var_00 = 1;
|
||||
for(;;)
|
||||
{
|
||||
waittill_player_in_truck_range();
|
||||
var_01 = maps\_utility::within_fov(self.origin,self.angles,self.close_player.origin,cos(45));
|
||||
if(var_01)
|
||||
{
|
||||
if(!var_00 && common_scripts\utility::cointoss())
|
||||
{
|
||||
maps\_utility::radio_dialogue("cliff_pri_truckcomingback");
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\_utility::radio_dialogue("cliff_pri_truckiscoming");
|
||||
}
|
||||
|
||||
var_00 = 0;
|
||||
wait 10;
|
||||
}
|
||||
|
||||
wait 1;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 22
|
||||
waittill_player_in_truck_range()
|
||||
{
|
||||
self.close_player = undefined;
|
||||
foreach(var_01 in level.players)
|
||||
{
|
||||
var_01 thread watch_for_truck(self);
|
||||
}
|
||||
|
||||
level waittill("player_in_truck_range");
|
||||
}
|
||||
|
||||
//Function Number: 23
|
||||
watch_for_truck(param_00)
|
||||
{
|
||||
level endon("player_in_truck_range");
|
||||
param_00 maps\_utility::waittill_entity_in_range(self,1200);
|
||||
param_00.close_player = self;
|
||||
level notify("player_in_truck_range");
|
||||
}
|
||||
|
||||
//Function Number: 24
|
||||
dialog_jeep_stopped()
|
||||
{
|
||||
level endon("special_op_terminated");
|
||||
self waittill("unloading");
|
||||
if(common_scripts\utility::flag("_stealth_spotted"))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
maps\_utility::radio_dialogue("cliff_pri_headsup");
|
||||
if(common_scripts\utility::flag("_stealth_spotted"))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
maps\_utility::radio_dialogue("cliff_pri_lookingaround");
|
||||
}
|
185
MW3/PC/SP/maps/_treadfx.gsc
Normal file
185
MW3/PC/SP/maps/_treadfx.gsc
Normal file
@ -0,0 +1,185 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_treadfx.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 3
|
||||
* Decompile Time: 47 ms
|
||||
* Timestamp: 10/27/2023 2:23:17 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main(param_00)
|
||||
{
|
||||
if(!isdefined(param_00))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
level.vehicle_treads[param_00] = 1;
|
||||
switch(param_00)
|
||||
{
|
||||
case "script_vehicle_m1a1_abrams_player_tm":
|
||||
case "script_vehicle_m1a1_abrams_minigun":
|
||||
setallvehiclefx(param_00,"treadfx/tread_dust_hamburg_cheap");
|
||||
setvehiclefx(param_00,"water");
|
||||
setvehiclefx(param_00,"paintedmetal");
|
||||
setvehiclefx(param_00,"riotshield");
|
||||
break;
|
||||
|
||||
case "script_vehicle_uk_utility_truck_no_rail_player":
|
||||
case "script_vehicle_uk_utility_truck_no_rail":
|
||||
case "script_vehicle_uk_utility_truck":
|
||||
setallvehiclefx(param_00,"treadfx/tread_dust_default");
|
||||
setvehiclefx(param_00,"water");
|
||||
setvehiclefx(param_00,"rock");
|
||||
setvehiclefx(param_00,"metal");
|
||||
setvehiclefx(param_00,"brick");
|
||||
setvehiclefx(param_00,"plaster");
|
||||
setvehiclefx(param_00,"asphalt");
|
||||
setvehiclefx(param_00,"paintedmetal");
|
||||
setvehiclefx(param_00,"riotshield");
|
||||
setvehiclefx(param_00,"snow","treadfx/tread_snow_default");
|
||||
setvehiclefx(param_00,"slush","treadfx/tread_snow_default");
|
||||
setvehiclefx(param_00,"ice","treadfx/tread_ice_default");
|
||||
break;
|
||||
|
||||
case "script_vehicle_b2":
|
||||
case "script_vehicle_pavelow_noai":
|
||||
case "script_vehicle_pavelow":
|
||||
case "script_vehicle_mi28_flying_low":
|
||||
case "script_vehicle_osprey_fly":
|
||||
case "script_vehicle_osprey":
|
||||
case "script_vehicle_mi28_flying":
|
||||
case "script_vehicle_ch46e_ny_harbor":
|
||||
case "script_vehicle_ch46e_low":
|
||||
case "script_vehicle_ch46e_notsolid":
|
||||
case "script_vehicle_ch46e":
|
||||
case "script_vehicle_mi17_woodland_landing_noai":
|
||||
case "script_vehicle_mi17_woodland_fly_cheap_noai":
|
||||
case "script_vehicle_mi17_woodland_fly_noai":
|
||||
case "script_vehicle_mi17_woodland_noai":
|
||||
case "script_vehicle_mi17_woodland_landing_so":
|
||||
case "script_vehicle_mi17_woodland_landing":
|
||||
case "script_vehicle_mi17_woodland_fly_cheap":
|
||||
case "script_vehicle_mi17_woodland_fly":
|
||||
case "script_vehicle_mi17_woodland":
|
||||
case "script_vehicle_harrier":
|
||||
case "script_vehicle_blackhawk_minigun_low":
|
||||
case "script_vehicle_blackhawk_hero_hamburg":
|
||||
case "script_vehicle_blackhawk_low_thermal":
|
||||
case "script_vehicle_blackhawk_low":
|
||||
case "script_vehicle_blackhawk_hero_sas_night":
|
||||
case "script_vehicle_blackhawk":
|
||||
case "script_vehicle_littlebird_player":
|
||||
case "script_vehicle_littlebird_bench":
|
||||
case "script_vehicle_cobra_helicopter_fly_player":
|
||||
case "script_vehicle_cobra_helicopter_player":
|
||||
case "script_vehicle_cobra_helicopter_low":
|
||||
case "script_vehicle_cobra_helicopter_fly_low":
|
||||
case "script_vehicle_cobra_helicopter_fly":
|
||||
case "script_vehicle_cobra_helicopter":
|
||||
case "script_vehicle_apache_dark":
|
||||
case "script_vehicle_apache_mg":
|
||||
case "script_vehicle_apache":
|
||||
case "script_vehicle_mi24p_hind_woodland_opened_door":
|
||||
case "script_vehicle_ny_harbor_hind":
|
||||
case "script_vehicle_ny_blackhawk":
|
||||
case "script_vehicle_littlebird_md500":
|
||||
case "script_vehicle_littlebird_armed":
|
||||
case "b2":
|
||||
case "mig29":
|
||||
case "blackhawk_minigun_so":
|
||||
case "harrier":
|
||||
case "pavelow":
|
||||
case "mi28":
|
||||
case "littlebird":
|
||||
case "littlebird_player":
|
||||
case "cobra_player":
|
||||
case "cobra":
|
||||
case "mi17_noai":
|
||||
case "mi17":
|
||||
case "ny_harbor_hind":
|
||||
case "hind":
|
||||
case "seaknight":
|
||||
case "apache":
|
||||
case "blackhawk_minigun":
|
||||
case "blackhawk":
|
||||
setallvehiclefx(param_00,"treadfx/heli_dust_default");
|
||||
setvehiclefx(param_00,"water","treadfx/heli_water");
|
||||
setvehiclefx(param_00,"snow","treadfx/heli_snow_default");
|
||||
setvehiclefx(param_00,"slush","treadfx/heli_snow_default");
|
||||
setvehiclefx(param_00,"ice","treadfx/heli_snow_default");
|
||||
break;
|
||||
|
||||
default:
|
||||
setallvehiclefx(param_00,"treadfx/tread_dust_default");
|
||||
setvehiclefx(param_00,"water");
|
||||
setvehiclefx(param_00,"concrete");
|
||||
setvehiclefx(param_00,"rock");
|
||||
setvehiclefx(param_00,"metal");
|
||||
setvehiclefx(param_00,"brick");
|
||||
setvehiclefx(param_00,"plaster");
|
||||
setvehiclefx(param_00,"asphalt");
|
||||
setvehiclefx(param_00,"paintedmetal");
|
||||
setvehiclefx(param_00,"riotshield");
|
||||
setvehiclefx(param_00,"snow","treadfx/tread_snow_default");
|
||||
setvehiclefx(param_00,"slush","treadfx/tread_snow_default");
|
||||
setvehiclefx(param_00,"ice","treadfx/tread_ice_default");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
setvehiclefx(param_00,param_01,param_02)
|
||||
{
|
||||
if(!isdefined(level._vehicle_effect))
|
||||
{
|
||||
level._vehicle_effect = [];
|
||||
}
|
||||
|
||||
if(!isdefined(param_02))
|
||||
{
|
||||
level._vehicle_effect[param_00][param_01] = -1;
|
||||
return;
|
||||
}
|
||||
|
||||
level._vehicle_effect[param_00][param_01] = loadfx(param_02);
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
setallvehiclefx(param_00,param_01)
|
||||
{
|
||||
setvehiclefx(param_00,"brick",param_01);
|
||||
setvehiclefx(param_00,"bark",param_01);
|
||||
setvehiclefx(param_00,"carpet",param_01);
|
||||
setvehiclefx(param_00,"cloth",param_01);
|
||||
setvehiclefx(param_00,"concrete",param_01);
|
||||
setvehiclefx(param_00,"dirt",param_01);
|
||||
setvehiclefx(param_00,"flesh",param_01);
|
||||
setvehiclefx(param_00,"foliage",param_01);
|
||||
setvehiclefx(param_00,"glass",param_01);
|
||||
setvehiclefx(param_00,"grass",param_01);
|
||||
setvehiclefx(param_00,"gravel",param_01);
|
||||
setvehiclefx(param_00,"ice",param_01);
|
||||
setvehiclefx(param_00,"metal",param_01);
|
||||
setvehiclefx(param_00,"mud",param_01);
|
||||
setvehiclefx(param_00,"paper",param_01);
|
||||
setvehiclefx(param_00,"plaster",param_01);
|
||||
setvehiclefx(param_00,"rock",param_01);
|
||||
setvehiclefx(param_00,"sand",param_01);
|
||||
setvehiclefx(param_00,"snow",param_01);
|
||||
setvehiclefx(param_00,"water",param_01);
|
||||
setvehiclefx(param_00,"wood",param_01);
|
||||
setvehiclefx(param_00,"asphalt",param_01);
|
||||
setvehiclefx(param_00,"ceramic",param_01);
|
||||
setvehiclefx(param_00,"plastic",param_01);
|
||||
setvehiclefx(param_00,"rubber",param_01);
|
||||
setvehiclefx(param_00,"cushion",param_01);
|
||||
setvehiclefx(param_00,"fruit",param_01);
|
||||
setvehiclefx(param_00,"paintedmetal",param_01);
|
||||
setvehiclefx(param_00,"riotshield",param_01);
|
||||
setvehiclefx(param_00,"slush",param_01);
|
||||
setvehiclefx(param_00,"default",param_01);
|
||||
setvehiclefx(param_00,"none");
|
||||
}
|
116
MW3/PC/SP/maps/_treeburst.gsc
Normal file
116
MW3/PC/SP/maps/_treeburst.gsc
Normal file
@ -0,0 +1,116 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\_treeburst.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 4
|
||||
* Decompile Time: 45 ms
|
||||
* Timestamp: 10/27/2023 2:20:25 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
var_00 = getentarray("treeburst","script_noteworthy");
|
||||
for(var_01 = 0;var_01 < var_00.size;var_01++)
|
||||
{
|
||||
var_00[var_01] thread func_435F();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
func_435F()
|
||||
{
|
||||
self waittill("treeburst");
|
||||
if(isdefined(self.var_4360))
|
||||
{
|
||||
var_00 = self.var_4360;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_00 = randomint(360);
|
||||
}
|
||||
|
||||
var_01 = (self.angles[0],var_00,self.angles[2]);
|
||||
var_02 = anglestoforward(var_01);
|
||||
var_02 = var_02 * 100;
|
||||
var_03 = self.origin + var_02 + (0,0,512);
|
||||
var_04 = var_03 + (0,0,-1024);
|
||||
var_05 = bullettrace(var_03,var_04,0,self);
|
||||
var_06 = self.origin + var_02 - var_05["position"];
|
||||
var_07 = var_06[2];
|
||||
var_08 = 0;
|
||||
var_09 = 0;
|
||||
var_0A = var_09;
|
||||
var_0B = 0;
|
||||
var_0C = var_0B;
|
||||
while(var_09 < var_07)
|
||||
{
|
||||
var_08 = var_08 + 340;
|
||||
var_0A = var_09;
|
||||
var_09 = var_09 + var_08;
|
||||
var_0C = var_0B;
|
||||
var_0B++;
|
||||
}
|
||||
|
||||
var_0D = var_0A - var_07;
|
||||
if(var_0D < 0)
|
||||
{
|
||||
var_0D = var_0D * -1;
|
||||
}
|
||||
|
||||
var_0E = var_0C + var_0D / var_08;
|
||||
self movegravity(var_02,var_0E);
|
||||
self waittill("movedone");
|
||||
var_0F = vectornormalize(var_02);
|
||||
var_0F = var_0F * 320;
|
||||
var_03 = self.origin + var_0F + (0,0,512);
|
||||
var_04 = var_03 + (0,0,-1024);
|
||||
var_05 = bullettrace(var_03,var_04,0,self);
|
||||
var_10 = var_05["position"];
|
||||
var_11 = anglestoup(self.angles);
|
||||
var_12 = vectortoangles(var_11);
|
||||
var_13 = var_10 - self.origin;
|
||||
var_14 = vectortoangles(var_13);
|
||||
var_15 = spawn("script_origin",self.origin);
|
||||
var_15.origin = self.origin;
|
||||
var_15.angles = (var_12[0],var_14[1],var_14[2]);
|
||||
self linkto(var_15);
|
||||
var_15 rotateto(var_14,1.15,0.5,0);
|
||||
var_15 waittill("rotatedone");
|
||||
var_15 rotatepitch(-2.5,0.21,0.05,0.15);
|
||||
var_15 waittill("rotatedone");
|
||||
var_15 rotatepitch(2.5,0.26,0.15,0.1);
|
||||
var_15 waittill("rotatedone");
|
||||
self unlink();
|
||||
var_15 delete();
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
drawline(param_00,param_01,param_02,param_03)
|
||||
{
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
func_4361(param_00,param_01,param_02)
|
||||
{
|
||||
if(!isdefined(param_02))
|
||||
{
|
||||
param_02 = 1;
|
||||
}
|
||||
|
||||
if(isdefined(param_01))
|
||||
{
|
||||
wait 0.05;
|
||||
return;
|
||||
}
|
||||
|
||||
for(;;)
|
||||
{
|
||||
var_03 = (1,0,0);
|
||||
var_04 = (0,1,0);
|
||||
var_05 = (0,0,1);
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
12313
MW3/PC/SP/maps/_utility.gsc
Normal file
12313
MW3/PC/SP/maps/_utility.gsc
Normal file
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user