Added MW3 Scripts

This commit is contained in:
InfinityLoader
2023-10-27 03:47:01 -04:00
commit d559c1d414
981 changed files with 539970 additions and 0 deletions

View 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
View 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

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1 @@
Failed to decompile this file, open a ticket if you need this fixed.

File diff suppressed because it is too large Load Diff

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

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View 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);
}
}
}
}

View 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!");
}

View 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;
}

File diff suppressed because it is too large Load Diff

View 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;
}

View 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;
}
}
}

View 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);
}

View 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
View 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;
}

View 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);
}

View 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");
}
}

View 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;
}

View 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

File diff suppressed because it is too large Load Diff

View 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
View 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;
}
}

View 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]));
}

View 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);
}

View 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

File diff suppressed because it is too large Load Diff

View 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

File diff suppressed because it is too large Load Diff

View 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();
}

View 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();
}

File diff suppressed because it is too large Load Diff

View 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
View 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
View 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;
}

View 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
View 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;
}
}
}

File diff suppressed because it is too large Load Diff

View 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;
}

View 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;
}

View 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();
}

View 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();
}
}

View 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";
}

View 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
View 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;
}

View 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;
}

View 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;
}
}

View 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;
}
}
}

File diff suppressed because it is too large Load Diff

View 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;
}

View 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();
}

View 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);
}

File diff suppressed because it is too large Load Diff

236
MW3/PC/SP/maps/_leak.gsc Normal file
View 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
View 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

File diff suppressed because it is too large Load Diff

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
View 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;
}
}
}

View 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

File diff suppressed because it is too large Load Diff

View 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

File diff suppressed because it is too large Load Diff

831
MW3/PC/SP/maps/_names.gsc Normal file
View 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

File diff suppressed because it is too large Load Diff

View 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
View 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;
}
}

View 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
View 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
View 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);
}

View 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
View 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
View 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");
}

File diff suppressed because it is too large Load Diff

View 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);
}

View 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
View 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);
}
}

View 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
View 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);
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View 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));
}

File diff suppressed because it is too large Load Diff

View 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);
}
}
}

File diff suppressed because it is too large Load Diff

View 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";
}

View 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;
}

View 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");
}
}

File diff suppressed because it is too large Load Diff

View 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;
}
}

View 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

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View 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;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View 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
View 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");
}

View 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

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