/******************************************************************* * Decompiled By: Bog * Decompiled File: maps\_noder.gsc * Game: Call of Duty: Modern Warfare 3 * Platform: PC * Function Count: 77 * Decompile Time: 1277 ms * Timestamp: 10/27/2023 2:22:19 AM *******************************************************************/ //Function Number: 1 main(param_00) { if(!getdvarint("noder")) { return; } level.drone_paths = []; level.scr_anim["generic"]["node_cover_left"][0] = %cornercrl_reloada; level.scr_anim["generic"]["node_cover_left"][1] = %cornercrl_look_fast; level.scr_anim["generic"]["node_cover_left"][2] = %corner_standl_grenade_b; level.scr_anim["generic"]["node_cover_left"][3] = %corner_standl_flinch; level.scr_anim["generic"]["node_cover_left"][4] = %corner_standl_look_idle; level.scr_anim["generic"]["node_cover_left"][5] = %corner_standl_look_2_alert; level.scr_anim["generic"]["node_cover_right"][0] = %cornercrr_reloada; level.scr_anim["generic"]["node_cover_right"][1] = %corner_standr_grenade_b; level.scr_anim["generic"]["node_cover_right"][2] = %corner_standr_flinch; level.scr_anim["generic"]["node_cover_right"][3] = %corner_standr_look_idle; level.scr_anim["generic"]["node_cover_right"][4] = %corner_standr_look_2_alert; level.scr_anim["generic"]["node_cover_crouch"][0] = %covercrouch_hide_idle; level.scr_anim["generic"]["node_cover_crouch"][1] = %covercrouch_twitch_1; level.scr_anim["generic"]["node_cover_crouch"][2] = %covercrouch_hide_2_aim; level.scr_anim["generic"]["node_cover_crouch"][3] = %covercrouch_hide_2_aim; level.scr_anim["generic"]["node_cover_crouch"][4] = %covercrouch_hide_2_aim; level.scr_anim["generic"]["node_cover_crouch"][5] = %covercrouch_hide_look; level.scr_anim["generic"]["node_cover_crouch_window"][0] = %covercrouch_hide_idle; level.scr_anim["generic"]["node_cover_crouch_window"][1] = %covercrouch_twitch_1; level.scr_anim["generic"]["node_cover_crouch_window"][2] = %covercrouch_hide_2_aim; level.scr_anim["generic"]["node_cover_crouch_window"][3] = %covercrouch_hide_2_aim; level.scr_anim["generic"]["node_cover_crouch_window"][4] = %covercrouch_hide_2_aim; level.scr_anim["generic"]["node_cover_crouch_window"][5] = %covercrouch_hide_look; level.scr_anim["generic"]["node_cover_prone"][0] = %crouch_2_prone_firing; level.scr_anim["generic"]["node_cover_prone"][1] = %prone_2_crouch; level.scr_anim["generic"]["node_cover_prone"][2] = %prone_reload; level.scr_anim["generic"]["node_cover_stand"][0] = %coverstand_reloada; level.scr_anim["generic"]["node_concealment_crouch"][0] = %covercrouch_hide_idle; level.scr_anim["generic"]["node_concealment_crouch"][1] = %covercrouch_twitch_1; level.scr_anim["generic"]["node_concealment_crouch"][2] = %covercrouch_hide_2_aim; level.scr_anim["generic"]["node_concealment_crouch"][3] = %covercrouch_hide_2_aim; level.scr_anim["generic"]["node_concealment_crouch"][4] = %covercrouch_hide_2_aim; level.scr_anim["generic"]["node_concealment_crouch"][5] = %covercrouch_hide_look; level.scr_anim["generic"]["node_concealment_prone"][0] = %crouch_2_prone_firing; level.scr_anim["generic"]["node_concealment_prone"][1] = %prone_2_crouch; level.scr_anim["generic"]["node_concealment_prone"][2] = %prone_reload; level.scr_anim["generic"]["node_concealment_stand"][0] = %coverstand_reloada; level.node_offset = []; level.node_offset["node_cover_left"] = (0,90,0); level.node_offset["node_cover_right"] = (0,-90,0); level.node_offset["node_pathnode"] = (0,0,0); level.node_offset["node_cover_crouch"] = (0,0,0); level.node_offset["node_cover_crouch_window"] = (0,0,0); level.node_offset["node_cover_prone"] = (0,0,0); level.node_offset["node_cover_stand"] = (0,0,0); level.node_offset["node_concealment_crouch"] = (0,0,0); level.node_offset["node_concealment_prone"] = (0,0,0); level.node_offset["node_concealment_stand"] = (0,0,0); level.noder_node_delete = 0; level.var_1B45 = []; var_01 = getspawnerarray(); level.var_1B46 = 0; level.dontdonotetracks = []; if(var_01.size) { var_02 = var_01[0]; var_02 maps\_spawner::dronespawner_init(); for(var_03 = 0;var_03 < 20;var_03++) { level.dontdonotetracks[var_03] = maps\_spawner::spawner_dronespawn(var_02); level.dontdonotetracks[var_03] notsolid(); level.dontdonotetracks[var_03] hide(); level.dontdonotetracks[var_03].var_11E5 = 1; level.dontdonotetracks[var_03].dummyguyindex = var_03; level.var_1B4B[var_03] = spawn("script_origin",(0,0,0)); level.var_1B4B[var_03].var_1B4B = 1; level.var_1B46++; } } level.dummyguy_index = 0; maps\_anim::init(); var_04 = getentarray(); foreach(var_06 in var_04) { if((isdefined(var_06.classname) && var_06.classname == "player") || isdefined(var_06.var_11E5) || isdefined(var_06.var_1B4B)) { continue; } if(isdefined(var_06)) { var_06 delete(); } } var_04 = undefined; level.dummynode = 64; level.place_node_group = []; level.var_1B4F = "node_pathnode"; level.painter_startgroup = []; level.noder_heightoffset = (0,0,32); level.var_1B52 = 0; level.wall_look = 256; level.coliding_node = undefined; level.var_1B55 = 0; level.node_animation_preview = 1; add_node_type("node_pathnode",undefined); add_node_type("node_cover_crouch"); add_node_type("node_cover_crouch_window"); add_node_type("node_cover_left",-1); add_node_type("node_cover_right",1); add_node_type("node_cover_prone"); add_node_type("node_cover_stand"); add_node_type("node_concealment_crouch"); add_node_type("node_concealment_prone"); add_node_type("node_concealment_stand"); thread hack_start(); thread hud_init(); thread noder_init(); common_scripts\utility::flag_wait("user_hud_active"); thread draw_selected_node_name(); thread manage_nearnodes(); level.drone_paths = []; var_08 = getallnodes(); if(var_08.size) { level.player setorigin(maps\_utility::getclosest(level.player.origin,var_08).origin); } for(;;) { wait 0.05; level.player_view_trace = player_view_trace(); place_node_place(1); } } //Function Number: 2 hack_start() { common_scripts\utility::flag_init("user_alive"); while(!isdefined(get_mp_player())) { wait 0.05; } wait 0.05; level.noder_player = get_mp_player(); level.noder_player takeallweapons(); level.noder_player allowcrouch(0); level.noder_player allowjump(0); level.noder_player allowprone(0); common_scripts\utility::flag_set("user_alive"); } //Function Number: 3 noder_init() { level.preview_node = spawn("script_model",(0,0,0)); precachemodel("node_preview"); level.preview_node setmodel("node_preview"); level.preview_node notsolid(); level.selector_model = spawn("script_model",(0,0,0)); level.selector_model setmodel("node_select"); level.selector_model notsolid(); level.selector_model hide(); level.selected_node = undefined; setcurrentgroup(level.var_1B4F); level.var_1B4F = undefined; playerinit(); } //Function Number: 4 hud_update_placed_model_count() { level.hud_noder["helppm"].description setvalue(level.painter_startgroup.size); var_00 = 256; if(level.painter_startgroup.size < var_00) { level.hud_noder["helppm"].description.color = (1,1,1); return; } var_01 = 1; var_02 = 1 - level.painter_startgroup.size - var_00 / var_00; var_03 = var_02; level.hud_noder["helppm"].description.color = (var_01,var_02,var_03); } //Function Number: 5 controler_hud_add(param_00,param_01,param_02,param_03,param_04) { var_05 = 520; var_06 = 120; var_07 = 18; var_08 = 0.8; var_09 = 20; var_0A = 1.4; if(!isdefined(level.hud_noder) || !isdefined(level.hud_noder[param_00])) { level.hud_noder[param_00] = _newhudelem(); var_0B = _newhudelem(); } else { var_0B = level.hud_noder[param_01].description; } level.hud_noder[param_00].location = 0; level.hud_noder[param_00].alignx = "right"; level.hud_noder[param_00].aligny = "middle"; level.hud_noder[param_00].foreground = 1; level.hud_noder[param_00].fontscale = 1.5; level.hud_noder[param_00].sort = 20; level.hud_noder[param_00].alpha = var_08; level.hud_noder[param_00].x = var_05 + var_09; level.hud_noder[param_00].y = var_06 + param_01 * var_07; level.hud_noder[param_00] _settext(param_02); var_0B.location = 0; var_0B.alignx = "left"; var_0B.aligny = "middle"; var_0B.foreground = 1; var_0B.fontscale = var_0A; var_0B.sort = 20; var_0B.alpha = var_08; var_0B.x = var_05 + var_09; var_0B.y = var_06 + param_01 * var_07; if(isdefined(param_04)) { var_0B setvalue(param_04); } if(isdefined(param_03)) { var_0B _settext(param_03); } level.hud_noder[param_00].description = var_0B; } //Function Number: 6 hud_init() { common_scripts\utility::flag_init("user_hud_active"); common_scripts\utility::flag_wait("user_alive"); var_00 = 17; var_01 = []; var_02 = 15; var_03 = int(var_00 / 2); var_04 = 240 + var_03 * var_02; var_05 = 0.7 / var_03; var_06 = var_05; for(var_07 = 0;var_07 < var_00;var_07++) { var_01[var_07] = _newhudelem(); var_01[var_07].location = 0; var_01[var_07].alignx = "left"; var_01[var_07].aligny = "middle"; var_01[var_07].foreground = 1; var_01[var_07].fontscale = 2; var_01[var_07].sort = 20; if(var_07 == var_03) { var_01[var_07].alpha = 1; } else { var_01[var_07].alpha = var_06; } var_01[var_07].x = 0; var_01[var_07].y = var_04; var_01[var_07] _settext("."); if(var_07 == var_03) { var_05 = var_05 * -1; } var_06 = var_06 + var_05; var_04 = var_04 - var_02; } level.group_hudelems = var_01; var_08 = _newhudelem(); var_08.location = 0; var_08.alignx = "left"; var_08.aligny = "bottom"; var_08.foreground = 1; var_08.fontscale = 2; var_08.sort = 20; var_08.alpha = 1; var_08.x = 320; var_08.y = 244; var_08 _settext("."); level.crosshair = var_08; var_08 = _newhudelem(); var_08.location = 0; var_08.alignx = "center"; var_08.aligny = "bottom"; var_08.foreground = 1; var_08.fontscale = 2; var_08.sort = 20; var_08.alpha = 0; var_08.x = 320; var_08.y = 244; var_08 setvalue(0); level.crosshair_value = var_08; var_09 = _newhudelem(); var_09.location = 0; var_09.alignx = "center"; var_09.aligny = "bottom"; var_09.foreground = 1; var_09.fontscale = 2; var_09.sort = 20; var_09.alpha = 1; var_09.x = 320; var_09.y = 300; var_09 _settext(""); level.selection_lock_indicator = var_09; var_0A = _newhudelem(); var_0A.location = 0; var_0A.alignx = "center"; var_0A.aligny = "bottom"; var_0A.foreground = 1; var_0A.fontscale = 2; var_0A.sort = 20; var_0A.alpha = 1; var_0A.x = 320; var_0A.y = 300; var_0A _settext(""); level.node_animation_preview_indicator = var_0A; var_0B = 550; var_0C = 120; var_0D = 18; var_0E = 1; var_0F = 0.8; var_10 = 20; var_11 = 1.4; controler_hud_add("helppm",1,"^5Placed Nodes: ",undefined,level.painter_startgroup.size); controler_hud_add("gridsize",2,"^5Grid Size: ",undefined,level.wall_look); controler_hud_add("helpxy",6,"^4X/^3Y: ",undefined,level.dummynode); controler_hud_add("helpab",7,"^2A/^1B^7: ","-"); controler_hud_add("helplsrs",8,"^8L^7/R Stick: ","-"); controler_hud_add("helplbrb",9,"^8L^7/R Shoulder: ","-"); controler_hud_add("helpdpu",10,"^8DPad U/^7D: ","-"); controler_hud_add("helpdpl",11,"^8DPad L/^7R: ","-"); controler_hud_add("helpF",17,"^8W: ","-"); level.hud_noder["helpF"].x = var_0B - 450; level.hud_noder["helpF"].description.x = var_0B - 450; hint_buttons_main(); common_scripts\utility::flag_set("user_hud_active"); } //Function Number: 7 controler_hud_update_text(param_00,param_01) { level.hud_noder[param_00].description _settext(param_01); } //Function Number: 8 controler_hud_update_button(param_00,param_01) { level.hud_noder[param_00] _settext(param_01); } //Function Number: 9 setcurrentgroup(param_00) { common_scripts\utility::flag_wait("user_hud_active"); level.place_node_current_group = param_00; var_01 = getarraykeys(level.place_node_group); var_02 = 0; var_03 = int(level.group_hudelems.size / 2); for(var_04 = 0;var_04 < var_01.size;var_04++) { if(var_01[var_04] == param_00) { var_02 = var_04; break; } } for(var_04 = 0;var_04 < level.group_hudelems.size;var_04++) { level.group_hudelems[var_04] clearalltextafterhudelem(); } level.group_hudelems[var_03] _settext("^3" + gettext_nonode(var_01[var_02])); for(var_04 = 1;var_04 < level.group_hudelems.size - var_03;var_04++) { if(var_02 - var_04 < 0) { level.group_hudelems[var_03 + var_04] _settext("-- --"); continue; } level.group_hudelems[var_03 + var_04] _settext(gettext_nonode(var_01[var_02 - var_04])); } for(var_04 = 1;var_04 < level.group_hudelems.size - var_03;var_04++) { if(var_02 + var_04 > var_01.size - 1) { level.group_hudelems[var_03 - var_04] _settext("-- --"); continue; } level.group_hudelems[var_03 - var_04] _settext(gettext_nonode(var_01[var_02 + var_04])); } param_00 = getcurrent_groupstruct(); level.wall_look = param_00.grid_size; hud_update_gridsize(); } //Function Number: 10 setgroup_up() { var_00 = undefined; var_01 = getarraykeys(level.place_node_group); for(var_02 = 0;var_02 < var_01.size;var_02++) { if(var_01[var_02] == level.place_node_current_group) { var_00 = var_02 + 1; break; } } if(var_00 == var_01.size) { var_00 = 0; } setcurrentgroup(var_01[var_00]); } //Function Number: 11 setgroup_down() { var_00 = undefined; var_01 = getarraykeys(level.place_node_group); for(var_02 = 0;var_02 < var_01.size;var_02++) { if(var_01[var_02] == level.place_node_current_group) { var_00 = var_02 - 1; break; } } if(var_00 < 0) { var_00 = var_01.size - 1; } setcurrentgroup(var_01[var_00]); } //Function Number: 12 add_node_type(param_00,param_01,param_02) { if(!isdefined(param_01)) { param_01 = 0; } if(!isdefined(param_02)) { param_02 = 0; } precachemodel(param_00); if(!isdefined(level.place_node_group[param_00])) { var_03 = spawnstruct(); var_03.wall_snap_direction = param_01; var_03.grid_size = param_02; level.place_node_group[param_00] = var_03; } level.place_node_group[param_00].model = param_00; } //Function Number: 13 playerinit() { level.noder_max = 950; common_scripts\utility::flag_wait("user_hud_active"); level.noder_player takeallweapons(); level.button_modifier_func = []; level.button_func = []; level.noder_player thread button_monitor(); level.noder_player thread button_modifier(); set_button_funcs_main(); add_button_modifier_func(::set_button_funcs_quick_select,::set_button_funcs_quick_select_release,"BUTTON_LSTICK"); } //Function Number: 14 button_modifier() { for(;;) { foreach(var_02, var_01 in level.button_modifier_func) { if(self buttonpressed(var_02)) { [[ level.button_modifier_func[var_02] ]](); while(self buttonpressed(var_02)) { wait 0.05; } [[ level.button_modifier_release_func[var_02] ]](); wait 0.05; } } wait 0.05; } } //Function Number: 15 button_monitor() { for(;;) { foreach(var_02, var_01 in level.button_func) { if(self buttonpressed(var_02)) { [[ level.button_func[var_02] ]](); if(!level.button_func_isflow[var_02]) { while(self buttonpressed(var_02)) { wait 0.05; } } break; } } wait 0.05; } } //Function Number: 16 add_button_func(param_00,param_01,param_02) { var_03 = []; level.button_func[param_02] = param_00; level.button_func_isflow[param_02] = param_01; } //Function Number: 17 add_button_modifier_func(param_00,param_01,param_02) { level.button_modifier_func[param_02] = param_00; level.button_modifier_release_func[param_02] = param_01; } //Function Number: 18 deleteme() { self delete(); } //Function Number: 19 getcurrent_groupstruct() { return level.place_node_group[level.place_node_current_group]; } //Function Number: 20 get_wall_offset(param_00) { var_01 = level.player_view_trace; var_02 = var_01["position"]; var_03 = 16 * vectornormalize(var_01["normal"]); var_04 = var_02 + var_03; var_05 = find_corner_snap(var_04,param_00); if(isdefined(var_05)) { var_04 = var_05; } return groundpos_loc(var_04) + level.noder_heightoffset; } //Function Number: 21 find_corner_snap(param_00,param_01) { var_02 = getcurrent_groupstruct(); var_03 = var_02.wall_snap_direction; if(var_03 == 0) { return; } var_04 = param_00; var_05 = var_04; var_06 = 32; var_07 = 16 * var_03 * vectornormalize(anglestoright(param_01)); var_08 = 1; while(var_08 < 15) { var_04 = var_05; param_00 = var_04; var_09 = var_08 * var_06 * var_03 * vectornormalize(anglestoright(param_01)); var_0A = bullettrace_but_not_nodes(param_00,param_00 + var_09,0); param_00 = param_00 + var_0A["fraction"] * var_09; if(var_0A["fraction"] < 1) { continue; } else { } var_04 = param_00; var_0B = 32 * vectornormalize(anglestoforward(param_01)); var_0A = bullettrace_but_not_nodes(param_00,param_00 + var_0B,0); var_0C = var_0A["fraction"]; if(var_0A["fraction"] == 1) { var_0C = 0.51; } param_00 = param_00 + var_0C * var_0B; if(var_0A["fraction"] < var_0C) { continue; } else { } var_04 = param_00; var_0D = var_09 * -1 - var_07; var_0A = bullettrace_but_not_nodes(param_00,param_00 + var_0D,0); param_00 = param_00 + var_0A["fraction"] * var_0D; if(var_0A["fraction"] > 0.99) { continue; } else { } var_0E = param_00; var_0F = var_0E + var_07 * -1 + var_0B * var_0C * -1; var_10 = var_0F + var_07 * 0.9; var_0A = bullettrace_but_not_nodes(var_10,var_10 + var_0B * 0.5,0); if(var_0A["fraction"] < 1) { var_0F = var_0A["position"] - var_0B * 0.5 + var_07 * -0.9; } return var_0F; var_0B++; } return undefined; } //Function Number: 22 place_node_place(param_00) { if(!isdefined(param_00)) { param_00 = 0; } var_01 = level.player_view_trace; var_02 = common_scripts\utility::flat_angle(level.player getplayerangles()); var_03 = var_01["position"] + level.noder_heightoffset; if(var_01["fraction"] == 1 || level.painter_startgroup.size > level.noder_max) { level.preview_node hide(); return; } if(is_player_looking_at_a_wall()) { level.preview_node dontinterpolate(); var_02 = vectortoangles(-1 * var_01["normal"]); var_03 = get_wall_offset(var_02); } else if(level.wall_look) { level.preview_node dontinterpolate(); var_03 = get_snapped_origin(var_03); draw_grid(var_03,param_00); var_02 = (0,0,0); } if(node_is_invalid(var_03)) { level.preview_node hide(); select_coliding_node(); return; } else if(node_is_touching(var_03)) { select_coliding_node(); } else { unselect_node(); level.preview_node show(); } draw_lines_to_connectible_nodes(var_03); place_node_here(var_03,var_02,param_00); } //Function Number: 23 place_node_here(param_00,param_01,param_02) { var_03 = getcurrent_groupstruct(); if(param_02) { var_04 = level.preview_node; var_04.origin = param_00; } else { var_04 = spawn("script_model",param_01); } var_04 notsolid(); if(!param_02) { var_04 setmodel(var_03.model); } var_04.angles = param_01; if(var_03.model == "node_pathnode") { var_04.angles = (0,0,0); } if(!param_02) { place_new_dummy_guy_and_animate_at_node(var_04); level.painter_startgroup[level.painter_startgroup.size] = var_04; } hud_update_placed_model_count(); } //Function Number: 24 place_node_place_at_feet() { var_00 = common_scripts\utility::flat_angle(level.noder_player getplayerangles()); var_01 = groundpos_loc(level.noder_player.origin + (0,0,16)) + level.noder_heightoffset; if(node_is_invalid(var_01)) { return; } place_node_here(var_01,var_00,0); hud_update_placed_model_count(); } //Function Number: 25 get_mp_player() { return getentarray("player","classname")[0]; } //Function Number: 26 place_node_erase() { var_00 = undefined; if(isdefined(level.selected_node)) { var_00 = level.selected_node; } if(isdefined(level.player_view_trace["entity"])) { var_00 = level.player_view_trace["entity"]; if(!issubstr(var_00.model,"node_")) { var_00 = undefined; } } if(!isdefined(var_00)) { return; } level.near_nodes = common_scripts\utility::array_remove(level.near_nodes,var_00); level.painter_startgroup = common_scripts\utility::array_remove(level.painter_startgroup,var_00); if(isdefined(var_00.has_dummy_guy)) { var_00.has_dummy_guy hide(); var_00.has_dummy_guy.is_hidden = 1; } var_00 delete(); level.noder_node_delete = 1; hud_update_placed_model_count(); } //Function Number: 27 dump_nodes() { } //Function Number: 28 player_view_trace() { var_00 = 2000; var_01 = level.noder_player geteye(); return bullettrace(var_01,var_01 + anglestoforward(level.noder_player getplayerangles()) * var_00,0,level.preview_node); } //Function Number: 29 is_player_looking_at_a_wall() { if(!isdefined(level.player_view_trace["normal"])) { return 0; } if(traces_hitting_node(level.player_view_trace)) { return 0; } var_00 = vectortoangles(level.player_view_trace["normal"]); var_01 = common_scripts\utility::flat_angle(var_00); if(vectordot(anglestoforward(var_01),anglestoforward(var_00)) == 1) { return 1; } return 0; } //Function Number: 30 gettext_nonode(param_00) { var_01 = ""; for(var_02 = 5;var_02 < param_00.size;var_02++) { var_01 = var_01 + param_00[var_02]; } return var_01; } //Function Number: 31 bullettrace_but_not_nodes(param_00,param_01,param_02,param_03) { var_04 = bullettrace(param_00,param_01,param_02,param_03); if(traces_hitting_node(var_04)) { var_04 = bullettrace(param_00,param_01,param_02,var_04["entity"]); } return var_04; } //Function Number: 32 traces_hitting_node(param_00) { return isdefined(param_00["entity"]) && isdefined(param_00["entity"].model) && issubstr(param_00["entity"].model,"node_"); } //Function Number: 33 groundpos_loc(param_00,param_01) { if(!isdefined(param_01)) { param_01 = -100000; } return bullettrace_but_not_nodes(param_00,param_00 + (0,0,param_01),0,self)["position"]; } //Function Number: 34 get_snapped_origin(param_00) { var_01 = level.wall_look; var_02 = snap_number_to_nearest_grid(param_00[0],var_01); var_03 = snap_number_to_nearest_grid(param_00[1],var_01); return groundpos_loc((var_02,var_03,param_00[2] + 32)) + level.noder_heightoffset; } //Function Number: 35 snap_number_to_nearest_grid(param_00,param_01) { var_02 = param_00 / param_01; var_03 = int(var_02); var_04 = var_02 - var_03; if(var_04 < -0.5) { var_03--; } else if(var_04 > 0.5) { var_03++; } return var_03 * param_01; } //Function Number: 36 draw_grid(param_00,param_01) { var_02 = 1; var_03 = (0,1,0); param_00 = groundpos_loc(param_00); var_04 = param_00 + (0,0,level.wall_look); for(var_05 = var_02 * -1;var_05 < var_02 + 1;var_05++) { for(var_06 = var_02 * -1;var_06 < var_02 + 1;var_06++) { if(var_05 != var_02) { } if(var_06 != var_02) { } } } } //Function Number: 37 groundpos_line(param_00,param_01,param_02,param_03) { var_04 = level.wall_look * -2; param_00 = groundpos_loc(param_00,var_04); param_01 = groundpos_loc(param_01,var_04); } //Function Number: 38 node_is_invalid(param_00) { var_01 = 0; var_02 = 68; var_03 = undefined; foreach(var_05 in level.painter_startgroup) { var_06 = distance(param_00,var_05.origin); if(var_06 < 32) { var_01++; if(var_06 < 0.05) { var_01 = 6; } if(var_06 < var_02) { var_03 = var_05; } } } if(!isdefined(var_03)) { return 0; } level.coliding_node = var_03; if(var_01 >= 2) { return 1; } return 0; } //Function Number: 39 node_is_touching(param_00) { foreach(var_02 in level.painter_startgroup) { if(distance(param_00,var_02.origin) < 32) { level.coliding_node = var_02; return 1; } } return 0; } //Function Number: 40 hud_update_gridsize() { var_00 = "^7"; if(level.wall_look != 0) { var_00 = "^1"; } level.hud_noder["gridsize"].description _settext(var_00 + level.wall_look); } //Function Number: 41 grid_up() { if(!level.wall_look) { level.wall_look = 64; } level.wall_look = level.wall_look * 2; if(level.wall_look > 256) { level.wall_look = 256; } hud_update_gridsize(); } //Function Number: 42 grid_down() { if(!level.wall_look) { return; } level.wall_look = level.wall_look * 0.5; if(level.wall_look < 64) { level.wall_look = 0; } hud_update_gridsize(); } //Function Number: 43 grid_toggle() { if(level.wall_look == 256) { level.wall_look = 0; } else { level.wall_look = 256; } hud_update_gridsize(); } //Function Number: 44 select_traced_node(param_00) { select_node(param_00["entity"]); } //Function Number: 45 select_node(param_00) { if(level.var_1B55 && isdefined(level.selected_node)) { return; } place_new_dummy_guy_and_animate_at_node(param_00); level.selector_model dontinterpolate(); level.selector_model.origin = param_00.origin; level.selector_model.angles = param_00.angles; level.selector_model show(); level.selected_node = param_00; } //Function Number: 46 place_new_dummy_guy_and_animate_at_node(param_00) { if(!level.dontdonotetracks.size || isdefined(param_00.has_dummy_guy) || !node_has_animations(param_00)) { return; } var_01 = fifo_dummyguy(); if(isdefined(var_01.lastnode)) { var_01.lastnode.has_dummy_guy = undefined; } var_01 thread animate_dummyguy_at_node(param_00); } //Function Number: 47 select_coliding_node() { select_node(level.coliding_node); } //Function Number: 48 unselect_node() { if(level.var_1B55 && isdefined(level.selected_node)) { return; } level.selector_model hide(); level.selected_node = undefined; } //Function Number: 49 draw_selected_node_name() { for(;;) { if(!isdefined(level.selected_node)) { wait 0.05; continue; } var_00 = level.selected_node.model; var_01 = anglestoright(level.player getplayerangles()) * var_00.size * -3; thread maps\_utility::debug_message(var_00,level.selected_node.origin + var_01,0.05); wait 0.05; } } //Function Number: 50 toggle_select_lock() { if(level.var_1B55) { level.selection_lock_indicator _settext(""); level.var_1B55 = 0; return; } level.selection_lock_indicator _settext("^1Selection Lock On"); level.var_1B55 = 1; } //Function Number: 51 set_button_funcs_main() { clear_all_button_funcs(); add_button_func(::dump_nodes,0,"w"); add_button_func(::place_node_erase,0,"BUTTON_LSHLDR"); add_button_func(::place_node_place,0,"BUTTON_RSHLDR"); add_button_func(::place_node_place_at_feet,0,"BUTTON_RSTICK"); add_button_func(::setgroup_down,0,"BUTTON_X"); add_button_func(::setgroup_up,0,"BUTTON_Y"); add_button_func(::setgroup_down,0,"DPAD_UP"); add_button_func(::setgroup_up,0,"DPAD_DOWN"); add_button_func(::grid_toggle,0,"BUTTON_A"); add_button_func(::toggle_animation_preview,0,"BUTTON_B"); } //Function Number: 52 clear_all_button_funcs() { level.button_func = []; level.button_func_isflow = []; } //Function Number: 53 set_button_funcs_quickselect() { clear_all_button_funcs(); add_button_func(::dump_nodes,0,"w"); add_button_func(::select_node_cover_left,0,"BUTTON_LSHLDR"); add_button_func(::select_node_cover_right,0,"BUTTON_RSHLDR"); add_button_func(::select_node_pathnode,0,"BUTTON_LTRIG"); add_button_func(::select_node_pathnode,0,"BUTTON_RTRIG"); add_button_func(::select_node_pathnode,0,"BUTTON_RSTICK"); add_button_func(::select_node_cover_crouch_window,0,"BUTTON_X"); add_button_func(::select_node_cover_prone,0,"BUTTON_Y"); add_button_func(::select_node_concealment_stand,0,"DPAD_UP"); add_button_func(::select_node_concealment_prone,0,"DPAD_DOWN"); add_button_func(::select_node_concealment_crouch,0,"DPAD_RGIHT"); add_button_func(::select_node_cover_stand,0,"BUTTON_A"); add_button_func(::select_node_cover_crouch,0,"BUTTON_B"); } //Function Number: 54 hint_buttons_quick_modifier() { controler_hud_update_text("helpxy","^4Cover Crouch Window ^7/ ^3Prone"); controler_hud_update_text("helpab","^2Cover Stand ^7/ ^1Crouch"); controler_hud_update_text("helplsrs","^8 - ^7/ Pathnode"); controler_hud_update_text("helplbrb","^8Cover Left ^7/ Right"); controler_hud_update_text("helpdpl","^8Conceal - ^7/ Crouch"); controler_hud_update_text("helpdpu","^8Conceal Stand ^7/ Prone"); } //Function Number: 55 hint_buttons_main() { controler_hud_update_text("helpxy","^4Node Type Up ^7/ ^3Down"); controler_hud_update_text("helpab","^2Toggle Grid ^7/ ^1Anim Preview "); controler_hud_update_text("helplsrs","^8Quick Pick ^7/ Place at Player"); controler_hud_update_text("helplbrb","^8Remove ^7/ Place"); controler_hud_update_text("helpdpl","^8- ^7/ -"); controler_hud_update_text("helpdpu","^8Node Type Up ^7/ Down"); var_00 = "( dump ) ^3map_source / xenon_export/" + level.script + "_nodedump.map"; controler_hud_update_text("helpF",var_00); } //Function Number: 56 select_node_cover_crouch() { setcurrentgroup("node_cover_crouch"); } //Function Number: 57 select_node_pathnode() { setcurrentgroup("node_pathnode"); } //Function Number: 58 select_node_cover_crouch_window() { setcurrentgroup("node_cover_crouch_window"); } //Function Number: 59 select_node_cover_prone() { setcurrentgroup("node_cover_prone"); } //Function Number: 60 select_node_cover_stand() { setcurrentgroup("node_cover_stand"); } //Function Number: 61 select_node_concealment_crouch() { setcurrentgroup("node_concealment_crouch"); } //Function Number: 62 select_node_concealment_prone() { setcurrentgroup("node_concealment_prone"); } //Function Number: 63 select_node_concealment_stand() { setcurrentgroup("node_concealment_stand"); } //Function Number: 64 select_node_cover_left() { setcurrentgroup("node_cover_left"); } //Function Number: 65 select_node_cover_right() { setcurrentgroup("node_cover_right"); } //Function Number: 66 set_button_funcs_quick_select() { clear_all_button_funcs(); set_button_funcs_quickselect(); hint_buttons_quick_modifier(); } //Function Number: 67 set_button_funcs_quick_select_release() { set_button_funcs_main(); hint_buttons_main(); } //Function Number: 68 _newhudelem() { if(!isdefined(level.noder_elems)) { level.noder_elems = []; } var_00 = newhudelem(); level.noder_elems[level.noder_elems.size] = var_00; return var_00; } //Function Number: 69 _settext(param_00) { self.realtext = param_00; foreach(var_02 in level.noder_elems) { if(isdefined(var_02.realtext)) { var_02 settext(var_02.realtext); } } } //Function Number: 70 animate_dummyguy_at_node(param_00) { var_01 = param_00.origin + (0,0,-32); var_02 = param_00.angles + level.node_offset[param_00.model]; param_00.has_dummy_guy = self; self.lastnode = param_00; level.var_1B4B[self.dummyguyindex] notify("stop_loop"); level.var_1B4B[self.dummyguyindex].origin = var_01; level.var_1B4B[self.dummyguyindex].angles = var_02; level.var_1B4B[self.dummyguyindex] dontinterpolate(); self dontinterpolate(); self show(); self.is_hidden = 0; level.var_1B4B[self.dummyguyindex] maps\_anim::anim_generic_loop(self,param_00.model); } //Function Number: 71 fifo_dummyguy() { level.dummyguy_index++; if(level.dummyguy_index == level.var_1B46) { level.dummyguy_index = 0; } var_00 = level.dontdonotetracks[level.dummyguy_index]; return var_00; } //Function Number: 72 node_has_animations(param_00) { if(isdefined(level.scr_anim["generic"][param_00.model])) { return 1; } return 0; } //Function Number: 73 toggle_animation_preview() { if(level.node_animation_preview) { level.node_animation_preview_indicator _settext("^1Anim Preview Off"); level.node_animation_preview = 0; hide_all_dummyguys(); return; } level.node_animation_preview_indicator _settext(""); level.node_animation_preview = 1; show_all_dummyguys(); } //Function Number: 74 hide_all_dummyguys() { foreach(var_01 in level.dontdonotetracks) { if(!isdefined(var_01.is_hidden) || !var_01.is_hidden) { var_01 hide(); } } } //Function Number: 75 show_all_dummyguys() { foreach(var_01 in level.dontdonotetracks) { if(!isdefined(var_01.is_hidden) || !var_01.is_hidden) { var_01 show(); } } } //Function Number: 76 draw_lines_to_connectible_nodes(param_00) { foreach(var_02 in level.near_nodes) { if(!isdefined(var_02.classname)) { continue; } } } //Function Number: 77 manage_nearnodes() { level endon("dump_nodes"); level.near_nodes = []; var_00 = getallnodes(); var_01 = 0; var_02 = 1000; var_03 = []; level.nearnodes_time = 0; wait 0.05; for(;;) { var_04 = var_00; foreach(var_06 in level.painter_startgroup) { var_04[var_04.size] = var_06; } var_08 = level.painter_startgroup.size; foreach(var_06 in var_04) { var_03[var_03.size] = var_06; var_01++; if(level.painter_startgroup.size != var_08) { var_03 = []; var_01 = 0; break; } if(var_01 > var_02) { var_0A = []; foreach(var_0C in level.near_nodes) { if(distancesquared((level.preview_node.origin[0],level.preview_node.origin[1],0),(var_0C.origin[0],var_0C.origin[1],0)) <= 65536) { var_0A[var_0A.size] = var_0C; } } var_0E = []; foreach(var_10 in var_03) { if(distancesquared((level.preview_node.origin[0],level.preview_node.origin[1],0),(var_10.origin[0],var_10.origin[1],0)) <= 65536) { var_0E[var_0E.size] = var_10; } } level.near_nodes = maps\_utility::array_merge(var_0E,var_0A); var_03 = []; var_01 = 0; wait 0.05; waittillframeend; } if(level.noder_node_delete) { level.noder_node_delete = 0; var_03 = []; var_01 = 0; break; } } wait 0.05; } }