IL-GSC/AW/PC/SP/common_scripts/_createfx.gsc
2023-10-27 03:49:01 -04:00

3267 lines
61 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: common_scripts/_createfx.gsc
* Game: Call of Duty: Advanced Warfare
* Platform: PC
* Function Count: 137
* Decompile Time: 2213 ms
* Timestamp: 10/27/2023 1:57:34 AM
*******************************************************************/
//Function Number: 1
soundonly()
{
return getdvar("scr_createfx_type","0") == "2";
}
//Function Number: 2
fxonly()
{
return getdvar("scr_createfx_type","0") == "1";
}
//Function Number: 3
tracknoneditfx(param_00)
{
if(isdefined(level.tracked_ent))
{
if(!isdefined(level.tracked_ents))
{
level.tracked_ents = [];
}
level.tracked_ents[level.tracked_ents.size] = level.tracked_ent.v;
}
level.tracked_ent = param_00;
}
//Function Number: 4
createeffect(param_00,param_01)
{
var_02 = spawnstruct();
if(soundonly())
{
tracknoneditfx(var_02);
}
else
{
if(!isdefined(level.createfxent))
{
level.createfxent = [];
}
level.createfxent[level.createfxent.size] = var_02;
}
var_02.v = [];
var_02.v["type"] = param_00;
var_02.v["fxid"] = param_01;
var_02.v["angles"] = (0,0,0);
var_02.v["origin"] = (0,0,0);
var_02.drawn = 1;
if(isdefined(param_01) && isdefined(level.createfxbyfxid))
{
var_03 = level.createfxbyfxid[param_01];
if(!isdefined(var_03))
{
var_03 = [];
}
var_03[var_03.size] = var_02;
level.createfxbyfxid[param_01] = var_03;
}
return var_02;
}
//Function Number: 5
getloopeffectdelaydefault()
{
return 0.5;
}
//Function Number: 6
getoneshoteffectdelaydefault()
{
return -15;
}
//Function Number: 7
getexploderdelaydefault()
{
return 0;
}
//Function Number: 8
getintervalsounddelaymindefault()
{
return 0.75;
}
//Function Number: 9
getintervalsounddelaymaxdefault()
{
return 2;
}
//Function Number: 10
createloopsound()
{
var_00 = spawnstruct();
if(fxonly())
{
tracknoneditfx(var_00);
}
else
{
if(!isdefined(level.createfxent))
{
level.createfxent = [];
}
level.createfxent[level.createfxent.size] = var_00;
}
var_00.v = [];
var_00.v["type"] = "soundfx";
var_00.v["fxid"] = "No FX";
var_00.v["soundalias"] = "nil";
var_00.v["angles"] = (0,0,0);
var_00.v["origin"] = (0,0,0);
var_00.v["server_culled"] = 1;
if(getdvar("serverCulledSounds") != "1")
{
var_00.v["server_culled"] = 0;
}
var_00.drawn = 1;
return var_00;
}
//Function Number: 11
createintervalsound()
{
var_00 = createloopsound();
var_00.v["type"] = "soundfx_interval";
var_00.v["delay_min"] = getintervalsounddelaymindefault();
var_00.v["delay_max"] = getintervalsounddelaymaxdefault();
return var_00;
}
//Function Number: 12
createdynamicambience()
{
var_00 = spawnstruct();
if(fxonly())
{
tracknoneditfx(var_00);
}
else
{
if(!isdefined(level.createfxent))
{
level.createfxent = [];
}
level.createfxent[level.createfxent.size] = var_00;
}
var_00.v = [];
var_00.v["origin"] = (0,0,0);
var_00.v["dynamic_distance"] = 1000;
var_00.v["fxid"] = "No FX";
var_00.v["type"] = "soundfx_dynamic";
var_00.v["ambiencename"] = "nil";
return var_00;
}
//Function Number: 13
createnewexploder()
{
var_00 = spawnstruct();
if(fxonly())
{
tracknoneditfx(var_00);
}
else
{
if(!isdefined(level.createfxent))
{
level.createfxent = [];
}
level.createfxent[level.createfxent.size] = var_00;
}
var_00.v = [];
var_00.v["type"] = "exploder";
var_00.v["fxid"] = "No FX";
var_00.v["soundalias"] = "nil";
var_00.v["loopsound"] = "nil";
var_00.v["angles"] = (0,0,0);
var_00.v["origin"] = (0,0,0);
var_00.v["exploder"] = 1;
var_00.v["flag"] = "nil";
var_00.v["exploder_type"] = "normal";
var_00.drawn = 1;
return var_00;
}
//Function Number: 14
createexploderex(param_00,param_01)
{
var_02 = common_scripts\utility::createexploder(param_00);
var_02.v["exploder"] = param_01;
return var_02;
}
//Function Number: 15
createreactiveent()
{
var_00 = spawnstruct();
if(soundonly())
{
tracknoneditfx(var_00);
}
else
{
if(!isdefined(level.createfxent))
{
level.createfxent = [];
}
level.createfxent[level.createfxent.size] = var_00;
}
var_00.v = [];
var_00.v["origin"] = (0,0,0);
var_00.v["reactive_radius"] = 200;
var_00.v["fxid"] = "No FX";
var_00.v["type"] = "reactive_fx";
var_00.v["soundalias"] = "nil";
return var_00;
}
//Function Number: 16
set_origin_and_angles(param_00,param_01)
{
if(isdefined(level.createfx_offset))
{
param_00 = param_00 + level.createfx_offset;
}
self.v["origin"] = param_00;
self.v["angles"] = param_01;
}
//Function Number: 17
set_forward_and_up_vectors()
{
self.v["up"] = anglestoup(self.v["angles"]);
self.v["forward"] = anglestoforward(self.v["angles"]);
}
//Function Number: 18
convertoneshotfx()
{
setdvarifuninitialized("curr_exp_num",1);
var_00 = getdvarint("curr_exp_num");
for(var_01 = 0;var_01 < level._createfx.selected_fx_ents.size;var_01++)
{
var_02 = level._createfx.selected_fx_ents[var_01];
setfxkillondelete(var_02.looper,1);
wait 0.05;
var_02 common_scripts\utility::pauseeffect();
var_02.v["type"] = "exploder";
var_02.v["exploder"] = var_00;
var_02.v["exploder_type"] = "normal";
var_02 common_scripts\utility::activate_individual_exploder();
}
level._createfx.justconvertedoneshot = 1;
}
//Function Number: 19
createfx_common()
{
precacheshader("black");
level._createfx = spawnstruct();
level._createfx.grenade = spawn("script_origin",(0,0,0));
level._createfx.grenade.fx = loadfx("vfx/explosion/frag_grenade_default");
level._createfx.grenade.sound = "null";
level._createfx.grenade.radius = 256;
if(level.mp_createfx)
{
hack_start("painter_mp");
}
else
{
hack_start("painter");
}
common_scripts\utility::flag_init("createfx_saving");
common_scripts\utility::flag_init("createfx_started");
if(!isdefined(level.createfx))
{
level.createfx = [];
}
level.createfx_loopcounter = 0;
setdvar("ui_hidehud","1");
level notify("createfx_common_done");
}
//Function Number: 20
init_level_variables()
{
level._createfx.selectedmove_up = 0;
level._createfx.selectedmove_forward = 0;
level._createfx.selectedmove_right = 0;
level._createfx.selectedrotate_pitch = 0;
level._createfx.selectedrotate_roll = 0;
level._createfx.selectedrotate_yaw = 0;
level._createfx.selected_fx = [];
level._createfx.selected_fx_ents = [];
level._createfx.justconvertedoneshot = 0;
level._createfx.rate = 1;
level._createfx.snap2normal = 0;
level._createfx.snap90deg = 0;
level._createfx.localrot = 0;
level._createfx.axismode = 0;
level._createfx.select_by_name = 0;
level._createfx.player_speed = getdvarfloat("g_speed");
set_player_speed_hud();
}
//Function Number: 21
init_locked_list()
{
level._createfx.lockedlist = [];
level._createfx.lockedlist["escape"] = 1;
level._createfx.lockedlist["BUTTON_LSHLDR"] = 1;
level._createfx.lockedlist["BUTTON_RSHLDR"] = 1;
level._createfx.lockedlist["mouse1"] = 1;
level._createfx.lockedlist["ctrl"] = 1;
}
//Function Number: 22
init_colors()
{
var_00 = [];
var_00["loopfx"]["selected"] = (1,1,0.2);
var_00["loopfx"]["highlighted"] = (0.4,0.95,1);
var_00["loopfx"]["default"] = (0.3,0.8,1);
var_00["oneshotfx"]["selected"] = (1,1,0.2);
var_00["oneshotfx"]["highlighted"] = (0.3,0.6,1);
var_00["oneshotfx"]["default"] = (0.1,0.2,1);
var_00["exploder"]["selected"] = (1,1,0.2);
var_00["exploder"]["highlighted"] = (1,0.2,0.2);
var_00["exploder"]["default"] = (1,0.1,0.1);
var_00["rainfx"]["selected"] = (1,1,0.2);
var_00["rainfx"]["highlighted"] = (0.95,0.4,0.95);
var_00["rainfx"]["default"] = (0.78,0,0.73);
var_00["soundfx"]["selected"] = (1,1,0.2);
var_00["soundfx"]["highlighted"] = (0.2,1,0.2);
var_00["soundfx"]["default"] = (0.1,1,0.1);
var_00["soundfx_interval"]["selected"] = (1,1,0.2);
var_00["soundfx_interval"]["highlighted"] = (0.3,1,0.3);
var_00["soundfx_interval"]["default"] = (0.1,1,0.1);
var_00["reactive_fx"]["selected"] = (1,1,0.2);
var_00["reactive_fx"]["highlighted"] = (0.5,1,0.75);
var_00["reactive_fx"]["default"] = (0.2,0.9,0.2);
var_00["soundfx_dynamic"]["selected"] = (1,1,0.2);
var_00["soundfx_dynamic"]["highlighted"] = (0.3,1,0.3);
var_00["soundfx_dynamic"]["default"] = (0.1,1,0.1);
level._createfx.colors = var_00;
}
//Function Number: 23
createfxlogic()
{
waittillframeend;
wait(0.05);
if(!isdefined(level._effect))
{
level._effect = [];
}
if(getdvar("createfx_map") == "")
{
}
else if(getdvar("createfx_map") == common_scripts\utility::get_template_level())
{
[[ level.func_position_player ]]();
}
init_crosshair();
common_scripts\_createfxmenu::init_menu();
init_huds();
init_tool_hud();
init_crosshair();
init_level_variables();
init_locked_list();
init_colors();
if(getdvar("createfx_use_f4") == "")
{
}
if(getdvar("createfx_no_autosave") == "")
{
}
level.createfx_draw_enabled = 1;
level.last_displayed_ent = undefined;
level.buttonisheld = [];
var_00 = (0,0,0);
common_scripts\utility::flag_set("createfx_started");
if(!level.mp_createfx)
{
var_00 = level.player.origin;
}
var_01 = undefined;
level.fx_rotating = 0;
common_scripts\_createfxmenu::setmenu("none");
level.createfx_selecting = 0;
var_02 = newhudelem();
var_02.x = -120;
var_02.y = 200;
var_02.foreground = 0;
var_02 setshader("black",250,160);
var_02.alpha = 0;
level.createfx_inputlocked = 0;
foreach(var_04 in level.createfxent)
{
var_04 post_entity_creation_function();
}
thread draw_distance();
var_06 = undefined;
thread createfx_autosave();
level.createfx_last_movement_timer = 0;
thread save_undo_buffer();
thread setup_last_movement_timer();
for(;;)
{
var_07 = 0;
var_08 = anglestoright(level.player getplayerangles());
var_09 = anglestoforward(level.player getplayerangles());
var_0A = anglestoup(level.player getplayerangles());
var_0B = 0.85;
var_0C = var_09 * 750;
level.createfxcursor = bullettrace(level.player geteye(),level.player geteye() + var_0C,0,undefined);
var_0D = undefined;
level.buttonclick = [];
level.button_is_kb = [];
process_button_held_and_clicked();
var_0E = button_is_held("ctrl","BUTTON_LSHLDR");
var_0F = button_is_clicked("mouse1","BUTTON_A");
var_10 = button_is_held("mouse1","BUTTON_A");
var_11 = button_is_held("shift");
common_scripts\_createfxmenu::create_fx_menu();
var_12 = "F5";
if(getdvarint("createfx_use_f4"))
{
var_12 = "F4";
}
if(button_is_clicked(var_12))
{
}
if(getdvarint("scr_createfx_dump"))
{
generate_fx_log();
}
if(button_is_clicked("F2"))
{
toggle_createfx_drawing();
}
if(button_is_clicked("ins"))
{
insert_effect();
}
if(button_is_clicked("del"))
{
delete_pressed();
}
if(button_is_clicked("escape"))
{
clear_settable_fx();
}
if(button_is_clicked("rightarrow","space") && !level.createfx_menu_list_active)
{
set_off_exploders();
}
if(button_is_clicked("leftarrow") && !level.createfx_menu_list_active)
{
turn_off_exploders();
}
if(button_is_clicked("f"))
{
frame_selected();
}
if(button_is_clicked("u"))
{
select_by_name_list();
}
if(button_is_clicked("c"))
{
convertoneshotfx();
}
modify_player_speed();
if(!var_0E && button_is_clicked("g"))
{
select_all_exploders_of_currently_selected("exploder");
select_all_exploders_of_currently_selected("flag");
}
if(button_is_clicked("h","F1"))
{
show_help();
}
if(button_is_clicked("BUTTON_LSTICK"))
{
copy_ents();
}
if(button_is_clicked("BUTTON_RSTICK"))
{
paste_ents();
}
if(button_is_clicked("z"))
{
undo();
}
if(button_is_clicked("z") && var_11)
{
redo();
}
if(var_0E)
{
if(button_is_clicked("c"))
{
copy_ents();
}
if(button_is_clicked("v"))
{
paste_ents();
}
if(button_is_clicked("g"))
{
spawn_grenade();
}
}
if(isdefined(level._createfx.selected_fx_option_index))
{
common_scripts\_createfxmenu::menu_fx_option_set();
}
for(var_13 = 0;var_13 < level.createfxent.size;var_13++)
{
var_04 = level.createfxent[var_13];
var_14 = vectornormalize(var_04.v["origin"] - level.player.origin + (0,0,55));
var_15 = vectordot(var_09,var_14);
if(var_15 < var_0B)
{
continue;
}
var_0B = var_15;
var_0D = var_04;
}
level.fx_highlightedent = var_0D;
if(isdefined(var_0D))
{
if(isdefined(var_01))
{
if(var_01 != var_0D)
{
if(!ent_is_selected(var_01))
{
var_01 thread entity_highlight_disable();
}
if(!ent_is_selected(var_0D))
{
var_0D thread entity_highlight_enable();
}
}
}
else if(!ent_is_selected(var_0D))
{
var_0D thread entity_highlight_enable();
}
}
manipulate_createfx_ents(var_0D,var_0F,var_10,var_0E,var_08);
var_07 = handle_selected_ents(var_07);
wait(0.05);
if(var_07)
{
update_selected_entities();
}
if(!level.mp_createfx)
{
var_00 = [[ level.func_position_player_get ]](var_00);
}
var_01 = var_0D;
if(last_selected_entity_has_changed(var_06))
{
level.effect_list_offset = 0;
clear_settable_fx();
common_scripts\_createfxmenu::setmenu("none");
}
if(level._createfx.selected_fx_ents.size)
{
var_06 = level._createfx.selected_fx_ents[level._createfx.selected_fx_ents.size - 1];
continue;
}
var_06 = undefined;
}
}
//Function Number: 24
modify_player_speed()
{
var_00 = 0;
var_01 = button_is_held("ctrl");
if(button_is_held("."))
{
if(var_01)
{
if(level._createfx.player_speed < 190)
{
level._createfx.player_speed = 190;
}
else
{
level._createfx.player_speed = level._createfx.player_speed + 10;
}
}
else
{
level._createfx.player_speed = level._createfx.player_speed + 5;
}
var_00 = 1;
}
else if(button_is_held(","))
{
if(var_01)
{
if(level._createfx.player_speed > 190)
{
level._createfx.player_speed = 190;
}
else
{
level._createfx.player_speed = level._createfx.player_speed - 10;
}
}
else
{
level._createfx.player_speed = level._createfx.player_speed - 5;
}
var_00 = 1;
}
if(var_00)
{
level._createfx.player_speed = clamp(level._createfx.player_speed,5,500);
[[ level.func_player_speed ]]();
set_player_speed_hud();
}
}
//Function Number: 25
set_player_speed_hud()
{
if(!isdefined(level._createfx.player_speed_hud))
{
var_00 = newhudelem();
var_00.alignx = "right";
var_00.foreground = 1;
var_00.fontscale = 1.2;
var_00.alpha = 1;
var_00.x = 120;
var_00.y = 420;
var_01 = newhudelem();
var_01.alignx = "left";
var_01.foreground = 1;
var_01.fontscale = 1.2;
var_01.alpha = 1;
var_01.x = 120;
var_01.y = 420;
var_00.hud_value = var_01;
level._createfx.player_speed_hud = var_00;
}
level._createfx.player_speed_hud.hud_value setvalue(level._createfx.player_speed);
}
//Function Number: 26
toggle_createfx_drawing()
{
level.createfx_draw_enabled = !level.createfx_draw_enabled;
}
//Function Number: 27
insert_effect()
{
common_scripts\_createfxmenu::setmenu("creation");
level.effect_list_offset = 0;
clear_fx_hudelements();
set_fx_hudelement("Pick effect type to create:");
set_fx_hudelement("1. One Shot FX");
set_fx_hudelement("2. Looping FX");
set_fx_hudelement("3. Looping sound");
set_fx_hudelement("4. Exploder");
set_fx_hudelement("5. One Shot Sound");
set_fx_hudelement("6. Reactive Sound");
set_fx_hudelement("7. Dynamic Ambience");
set_fx_hudelement("(c) Cancel >");
set_fx_hudelement("(x) Exit >");
}
//Function Number: 28
manipulate_createfx_ents(param_00,param_01,param_02,param_03,param_04)
{
if(!level.createfx_draw_enabled)
{
return;
}
if(level._createfx.select_by_name)
{
level._createfx.select_by_name = 0;
param_00 = undefined;
}
else if(select_by_substring())
{
param_00 = undefined;
}
for(var_05 = 0;var_05 < level.createfxent.size;var_05++)
{
var_06 = level.createfxent[var_05];
if(!var_06.drawn)
{
continue;
}
var_07 = getdvarfloat("createfx_scaleid");
if(isdefined(param_00) && var_06 == param_00)
{
if(!common_scripts\_createfxmenu::entities_are_selected())
{
common_scripts\_createfxmenu::display_fx_info(var_06);
}
if(param_01)
{
var_08 = index_is_selected(var_05);
level.createfx_help_active = 0;
level.createfx_selecting = !var_08;
if(!param_03)
{
var_09 = level._createfx.selected_fx_ents.size;
clear_entity_selection();
if(var_08 && var_09 == 1)
{
select_entity(var_05,var_06);
}
}
toggle_entity_selection(var_05,var_06);
}
else if(param_02)
{
if(param_03)
{
if(level.createfx_selecting)
{
select_entity(var_05,var_06);
}
if(!level.createfx_selecting)
{
deselect_entity(var_05,var_06);
}
}
}
var_0A = "highlighted";
}
else
{
var_0A = "default";
}
if(index_is_selected(var_05))
{
var_0A = "selected";
}
var_06 createfx_print3d(var_0A,var_07,param_04);
}
}
//Function Number: 29
createfx_print3d(param_00,param_01,param_02)
{
if(getdvarint("fx_showLightGridSampleOffset") != 0)
{
var_03 = getdvarfloat("fx_lightGridSampleOffset");
var_04 = anglestoforward(self.v["angles"]) * var_03;
}
if(self.textalpha > 0)
{
var_05 = get_print3d_text();
var_06 = param_02 * var_05.size * -2.93;
var_07 = level._createfx.colors[self.v["type"]][param_00];
if(isdefined(self.is_playing))
{
var_07 = (1,0.5,0);
}
if(isdefined(self.v["reactive_radius"]))
{
return;
}
if(isdefined(self.v["dynamic_distance"]))
{
return;
}
}
}
//Function Number: 30
get_print3d_text()
{
switch(self.v["type"])
{
case "reactive_fx":
break;
case "soundfx_interval":
break;
case "soundfx_dynamic":
break;
case "soundfx":
break;
case "exploder":
break;
case "oneshotfx":
break;
default:
break;
}
}
//Function Number: 31
select_by_name_list()
{
level.effect_list_offset = 0;
clear_fx_hudelements();
common_scripts\_createfxmenu::setmenu("select_by_name");
common_scripts\_createfxmenu::draw_effects_list();
}
//Function Number: 32
handle_selected_ents(param_00)
{
if(level._createfx.selected_fx_ents.size > 0 && level.createfx_help_active == 0)
{
param_00 = selected_ent_buttons(param_00);
if(!current_mode_hud("selected_ents"))
{
new_tool_hud("selected_ents");
set_tool_hudelem("Mode:","move");
set_tool_hudelem("Move Rate( -/+ ):",level._createfx.rate);
if(level._createfx.snap2normal)
{
var_01 = "on";
var_02 = (0,1,0);
}
else
{
var_01 = "off";
var_02 = (0.5,0.5,0.5);
}
set_tool_hudelem("Snap2Normal( S ):",var_01,var_02);
if(level._createfx.snap90deg)
{
var_03 = "on";
var_04 = (0,1,0);
}
else
{
var_03 = "off";
var_04 = (0.5,0.5,0.5);
}
set_tool_hudelem("90deg Snap( L ):",var_03,var_04);
if(level._createfx.localrot)
{
var_05 = "on";
var_06 = (0,1,0);
}
else
{
var_05 = "off";
var_06 = (0.5,0.5,0.5);
}
set_tool_hudelem("Local Rotation( R ):",var_05,var_06);
}
if(level._createfx.axismode && level._createfx.selected_fx_ents.size > 0)
{
set_tool_hudelem("Mode:","rotate");
thread [[ level.func_process_fx_rotater ]]();
if(button_is_clicked("p"))
{
reset_axis_of_selected_ents();
}
if(button_is_clicked("o"))
{
aim_axis_of_selected_ents();
}
if(button_is_clicked("v"))
{
copy_angles_of_selected_ents();
}
for(var_07 = 0;var_07 < level._createfx.selected_fx_ents.size;var_07++)
{
level._createfx.selected_fx_ents[var_07] draw_axis();
}
if(level.selectedrotate_pitch != 0 || level.selectedrotate_yaw != 0 || level.selectedrotate_roll != 0)
{
param_00 = 1;
}
}
else
{
set_tool_hudelem("Mode:","move");
var_08 = get_selected_move_vector();
for(var_07 = 0;var_07 < level._createfx.selected_fx_ents.size;var_07++)
{
var_09 = level._createfx.selected_fx_ents[var_07];
if(isdefined(var_09.model))
{
continue;
}
var_09 draw_cross();
var_09.v["origin"] = var_09.v["origin"] + var_08;
}
if(distance((0,0,0),var_08) > 0)
{
thread save_undo_buffer();
level.createfx_last_movement_timer = 0;
param_00 = 1;
}
}
}
else
{
clear_tool_hud();
}
return param_00;
}
//Function Number: 33
selected_ent_buttons(param_00)
{
if(button_is_clicked("BUTTON_X"))
{
toggle_axismode();
}
modify_rate();
if(button_is_clicked("s"))
{
toggle_snap2normal();
}
if(button_is_clicked("l"))
{
toggle_snap90deg();
}
if(button_is_clicked("r"))
{
toggle_localrot();
}
if(button_is_clicked("end"))
{
drop_selection_to_ground();
param_00 = 1;
}
if(button_is_clicked("tab","BUTTON_RSHLDR"))
{
move_selection_to_cursor();
param_00 = 1;
}
return param_00;
}
//Function Number: 34
modify_rate()
{
var_00 = button_is_held("shift");
var_01 = button_is_held("ctrl");
if(button_is_clicked("="))
{
if(var_00)
{
level._createfx.rate = level._createfx.rate + 0.025;
}
else if(var_01)
{
if(level._createfx.rate < 1)
{
level._createfx.rate = 1;
}
else
{
level._createfx.rate = level._createfx.rate + 10;
}
}
else
{
level._createfx.rate = level._createfx.rate + 0.1;
}
}
else if(button_is_clicked("-"))
{
if(var_00)
{
level._createfx.rate = level._createfx.rate - 0.025;
}
else if(var_01)
{
if(level._createfx.rate > 1)
{
level._createfx.rate = 1;
}
else
{
level._createfx.rate = 0.1;
}
}
else
{
level._createfx.rate = level._createfx.rate - 0.1;
}
}
level._createfx.rate = clamp(level._createfx.rate,0.025,100);
set_tool_hudelem("Move Rate( -/+ ):",level._createfx.rate);
}
//Function Number: 35
toggle_axismode()
{
level._createfx.axismode = !level._createfx.axismode;
}
//Function Number: 36
toggle_snap2normal()
{
level._createfx.snap2normal = !level._createfx.snap2normal;
if(level._createfx.snap2normal)
{
var_00 = "on";
var_01 = (0,1,0);
}
else
{
var_00 = "off";
var_01 = (0.5,0.5,0.5);
}
set_tool_hudelem("Snap2Normal( S ):",var_00,var_01);
}
//Function Number: 37
toggle_snap90deg()
{
level._createfx.snap90deg = !level._createfx.snap90deg;
if(level._createfx.snap90deg)
{
var_00 = "on";
var_01 = (0,1,0);
}
else
{
var_00 = "off";
var_01 = (0.5,0.5,0.5);
}
set_tool_hudelem("90deg Snap( L ):",var_00,var_01);
}
//Function Number: 38
toggle_localrot()
{
level._createfx.localrot = !level._createfx.localrot;
if(level._createfx.localrot)
{
var_00 = "on";
var_01 = (0,1,0);
}
else
{
var_00 = "off";
var_01 = (0.5,0.5,0.5);
}
set_tool_hudelem("Local Rotation( R ):",var_00,var_01);
}
//Function Number: 39
copy_angles_of_selected_ents()
{
thread save_undo_buffer();
level notify("new_ent_selection");
for(var_00 = 0;var_00 < level._createfx.selected_fx_ents.size;var_00++)
{
var_01 = level._createfx.selected_fx_ents[var_00];
var_01.v["angles"] = level._createfx.selected_fx_ents[level._createfx.selected_fx_ents.size - 1].v["angles"];
var_01 set_forward_and_up_vectors();
}
update_selected_entities();
level.createfx_last_movement_timer = 0;
}
//Function Number: 40
aim_axis_of_selected_ents()
{
thread save_undo_buffer();
level notify("new_ent_selection");
var_00 = level._createfx.selected_fx_ents[level._createfx.selected_fx_ents.size - 1];
for(var_01 = 0;var_01 < level._createfx.selected_fx_ents.size - 1;var_01++)
{
var_02 = level._createfx.selected_fx_ents[var_01];
var_03 = vectortoangles(var_00.v["origin"] - var_02.v["origin"]);
var_02.v["angles"] = var_03;
var_02 set_forward_and_up_vectors();
}
update_selected_entities();
level.createfx_last_movement_timer = 0;
}
//Function Number: 41
reset_axis_of_selected_ents()
{
level notify("new_ent_selection");
thread save_undo_buffer();
for(var_00 = 0;var_00 < level._createfx.selected_fx_ents.size;var_00++)
{
var_01 = level._createfx.selected_fx_ents[var_00];
var_01.v["angles"] = (0,0,0);
var_01 set_forward_and_up_vectors();
}
update_selected_entities();
level.createfx_last_movement_timer = 0;
}
//Function Number: 42
last_selected_entity_has_changed(param_00)
{
if(isdefined(param_00))
{
if(!common_scripts\_createfxmenu::entities_are_selected())
{
return 1;
}
}
else
{
return common_scripts\_createfxmenu::entities_are_selected();
}
return param_00 != level._createfx.selected_fx_ents[level._createfx.selected_fx_ents.size - 1];
}
//Function Number: 43
drop_selection_to_ground()
{
thread save_undo_buffer();
for(var_00 = 0;var_00 < level._createfx.selected_fx_ents.size;var_00++)
{
var_01 = level._createfx.selected_fx_ents[var_00];
var_02 = bullettrace(var_01.v["origin"],var_01.v["origin"] + (0,0,-2048),0,undefined);
var_01.v["origin"] = var_02["position"];
}
level.createfx_last_movement_timer = 0;
}
//Function Number: 44
set_off_exploders()
{
level notify("createfx_exploder_reset");
var_00 = [];
for(var_01 = 0;var_01 < level._createfx.selected_fx_ents.size;var_01++)
{
var_02 = level._createfx.selected_fx_ents[var_01];
if(isdefined(var_02.v["exploder"]))
{
var_00[var_02.v["exploder"]] = 1;
}
}
var_03 = getarraykeys(var_00);
for(var_01 = 0;var_01 < var_03.size;var_01++)
{
common_scripts\_exploder::exploder(var_03[var_01]);
}
}
//Function Number: 45
turn_off_exploders()
{
level notify("createfx_exploder_reset");
var_00 = [];
for(var_01 = 0;var_01 < level._createfx.selected_fx_ents.size;var_01++)
{
var_02 = level._createfx.selected_fx_ents[var_01];
if(isdefined(var_02.v["exploder"]))
{
var_00[var_02.v["exploder"]] = 1;
}
}
var_03 = getarraykeys(var_00);
for(var_01 = 0;var_01 < var_03.size;var_01++)
{
common_scripts\_exploder::kill_exploder(var_03[var_01]);
}
}
//Function Number: 46
draw_distance()
{
var_00 = 0;
if(getdvarint("createfx_drawdist") == 0)
{
}
for(;;)
{
var_01 = getdvarint("createfx_drawdist");
var_01 = var_01 * var_01;
for(var_02 = 0;var_02 < level.createfxent.size;var_02++)
{
var_03 = level.createfxent[var_02];
var_03.drawn = distancesquared(level.player.origin,var_03.v["origin"]) <= var_01;
var_00++;
if(var_00 > 100)
{
var_00 = 0;
wait(0.05);
}
}
if(level.createfxent.size == 0)
{
wait(0.05);
}
}
}
//Function Number: 47
createfx_autosave()
{
setdvarifuninitialized("createfx_autosave_time","300");
for(;;)
{
wait(getdvarint("createfx_autosave_time"));
common_scripts\utility::flag_waitopen("createfx_saving");
if(getdvarint("createfx_no_autosave"))
{
continue;
}
generate_fx_log(1);
}
}
//Function Number: 48
rotate_over_time(param_00,param_01)
{
level endon("new_ent_selection");
var_02 = 0.1;
for(var_03 = 0;var_03 < var_02 * 20;var_03++)
{
if(level.selectedrotate_pitch != 0)
{
param_00 addpitch(level.selectedrotate_pitch);
}
else if(level.selectedrotate_roll != 0)
{
param_00 addyaw(level.selectedrotate_roll);
}
else
{
param_00 addroll(level.selectedrotate_yaw);
}
wait(0.05);
param_00 draw_axis();
for(var_04 = 0;var_04 < level._createfx.selected_fx_ents.size;var_04++)
{
var_05 = level._createfx.selected_fx_ents[var_04];
if(isdefined(var_05.model))
{
continue;
}
var_05.v["origin"] = param_01[var_04].origin;
var_05.v["angles"] = param_01[var_04].angles;
}
}
}
//Function Number: 49
delete_pressed()
{
if(level.createfx_inputlocked)
{
remove_selected_option();
return;
}
delete_selection();
}
//Function Number: 50
remove_selected_option()
{
if(!isdefined(level._createfx.selected_fx_option_index))
{
return;
}
var_00 = level._createfx.options[level._createfx.selected_fx_option_index]["name"];
for(var_01 = 0;var_01 < level.createfxent.size;var_01++)
{
var_02 = level.createfxent[var_01];
if(!ent_is_selected(var_02))
{
continue;
}
var_02 remove_option(var_00);
}
update_selected_entities();
clear_settable_fx();
}
//Function Number: 51
remove_option(param_00)
{
self.v[param_00] = undefined;
}
//Function Number: 52
delete_selection()
{
save_undo_buffer();
var_00 = [];
for(var_01 = 0;var_01 < level.createfxent.size;var_01++)
{
var_02 = level.createfxent[var_01];
if(ent_is_selected(var_02))
{
if(isdefined(var_02.looper))
{
var_02.looper delete();
}
var_02 notify("stop_loop");
continue;
}
var_00[var_00.size] = var_02;
}
level.createfxent = var_00;
level._createfx.selected_fx = [];
level._createfx.selected_fx_ents = [];
clear_fx_hudelements();
save_redo_buffer();
}
//Function Number: 53
move_selection_to_cursor()
{
thread save_undo_buffer();
var_00 = level.createfxcursor["position"];
if(level._createfx.selected_fx_ents.size <= 0)
{
return;
}
var_01 = get_center_of_array(level._createfx.selected_fx_ents);
var_02 = var_01 - var_00;
for(var_03 = 0;var_03 < level._createfx.selected_fx_ents.size;var_03++)
{
var_04 = level._createfx.selected_fx_ents[var_03];
if(isdefined(var_04.model))
{
continue;
}
var_04.v["origin"] = var_04.v["origin"] - var_02;
if(level._createfx.snap2normal)
{
if(isdefined(level.createfxcursor["normal"]))
{
var_04.v["angles"] = vectortoangles(level.createfxcursor["normal"]);
}
}
}
level.createfx_last_movement_timer = 0;
}
//Function Number: 54
select_last_entity()
{
select_entity(level.createfxent.size - 1,level.createfxent[level.createfxent.size - 1]);
}
//Function Number: 55
reselect_entitites()
{
var_00 = [];
for(var_01 = 0;var_01 < level.createfxent.size;var_01++)
{
if(index_is_selected(var_01))
{
var_00[var_00.size] = var_01;
}
}
clear_entity_selection();
select_index_array(var_00);
}
//Function Number: 56
select_all_exploders_of_currently_selected(param_00)
{
var_01 = [];
foreach(var_03 in level._createfx.selected_fx_ents)
{
if(!isdefined(var_03.v[param_00]))
{
continue;
}
var_04 = var_03.v[param_00];
var_01[var_04] = 1;
}
foreach(var_04, var_07 in var_01)
{
foreach(var_09, var_03 in level.createfxent)
{
if(index_is_selected(var_09))
{
continue;
}
if(!isdefined(var_03.v[param_00]))
{
continue;
}
if(var_03.v[param_00] != var_04)
{
continue;
}
select_entity(var_09,var_03);
}
}
update_selected_entities();
}
//Function Number: 57
copy_ents()
{
if(level._createfx.selected_fx_ents.size <= 0)
{
return;
}
var_00 = [];
for(var_01 = 0;var_01 < level._createfx.selected_fx_ents.size;var_01++)
{
var_02 = level._createfx.selected_fx_ents[var_01];
var_03 = spawnstruct();
var_03.v = var_02.v;
var_03 post_entity_creation_function();
var_00[var_00.size] = var_03;
}
level.stored_ents = var_00;
}
//Function Number: 58
post_entity_creation_function()
{
self.textalpha = 0;
self.drawn = 1;
}
//Function Number: 59
paste_ents()
{
if(!isdefined(level.stored_ents))
{
return;
}
clear_entity_selection();
for(var_00 = 0;var_00 < level.stored_ents.size;var_00++)
{
add_and_select_entity(level.stored_ents[var_00]);
}
move_selection_to_cursor();
update_selected_entities();
level.stored_ents = [];
copy_ents();
}
//Function Number: 60
add_and_select_entity(param_00)
{
level.createfxent[level.createfxent.size] = param_00;
select_last_entity();
}
//Function Number: 61
get_center_of_array(param_00)
{
var_01 = (0,0,0);
for(var_02 = 0;var_02 < param_00.size;var_02++)
{
var_01 = (var_01[0] + param_00[var_02].v["origin"][0],var_01[1] + param_00[var_02].v["origin"][1],var_01[2] + param_00[var_02].v["origin"][2]);
}
return (var_01[0] / param_00.size,var_01[1] / param_00.size,var_01[2] / param_00.size);
}
//Function Number: 62
get_radius_of_array(param_00)
{
var_01 = param_00[0].v["origin"];
var_02 = param_00[0].v["origin"];
var_03 = var_01[0];
var_04 = var_01[1];
var_05 = var_01[2];
var_06 = var_02[0];
var_07 = var_02[1];
var_08 = var_02[2];
for(var_09 = 0;var_09 < param_00.size;var_09++)
{
var_0A = param_00[var_09].v["origin"];
if(var_0A[0] < var_01[0])
{
var_03 = var_0A[0];
}
if(var_0A[0] > var_02[0])
{
var_06 = var_0A[0];
}
if(var_0A[1] < var_01[1])
{
var_04 = var_0A[1];
}
if(var_0A[1] > var_02[1])
{
var_07 = var_0A[1];
}
if(var_0A[2] < var_01[2])
{
var_05 = var_0A[2];
}
if(var_0A[2] > var_02[2])
{
var_08 = var_0A[2];
}
}
var_01 = (var_03,var_04,var_05);
var_02 = (var_06,var_07,var_08);
var_0B = distance(var_02,var_01);
return var_0B;
}
//Function Number: 63
ent_draw_axis()
{
self endon("death");
for(;;)
{
draw_axis();
wait(0.05);
}
}
//Function Number: 64
rotation_is_occuring()
{
if(level.selectedrotate_roll != 0)
{
return 1;
}
if(level.selectedrotate_pitch != 0)
{
return 1;
}
return level.selectedrotate_yaw != 0;
}
//Function Number: 65
print_fx_options(param_00,param_01,param_02)
{
for(var_03 = 0;var_03 < level._createfx.options.size;var_03++)
{
var_04 = level._createfx.options[var_03];
if(isdefined(var_04["nowrite"]) && var_04["nowrite"])
{
continue;
}
var_05 = var_04["name"];
if(!isdefined(param_00.v[var_05]))
{
continue;
}
if(!common_scripts\_createfxmenu::mask(var_04["mask"],param_00.v["type"]))
{
continue;
}
if(!level.mp_createfx)
{
if(common_scripts\_createfxmenu::mask("fx",param_00.v["type"]) && var_05 == "fxid")
{
continue;
}
if(param_00.v["type"] == "exploder" && var_05 == "exploder")
{
continue;
}
var_06 = param_00.v["type"] + "/" + var_05;
if(isdefined(level._createfx.defaults[var_06]) && level._createfx.defaults[var_06] == param_00.v[var_05])
{
continue;
}
}
if(var_04["type"] == "string")
{
var_07 = param_00.v[var_05] + "";
if(var_07 == "nil")
{
continue;
}
if(var_05 == "platform" && var_07 == "all")
{
continue;
}
cfxprintln(param_01 + "ent.v[ \" + var_05 + "\" ] = \" + param_00.v[var_05] + "\";");
continue;
}
cfxprintln(param_01 + "ent.v[ \" + var_05 + "\" ] = " + param_00.v[var_05] + ";");
}
}
//Function Number: 66
entity_highlight_disable()
{
self notify("highlight change");
self endon("highlight change");
for(;;)
{
self.textalpha = self.textalpha * 0.85;
self.textalpha = self.textalpha - 0.05;
if(self.textalpha < 0)
{
break;
}
wait(0.05);
}
self.textalpha = 0;
}
//Function Number: 67
entity_highlight_enable()
{
self notify("highlight change");
self endon("highlight change");
for(;;)
{
self.textalpha = self.textalpha + 0.05;
self.textalpha = self.textalpha * 1.25;
if(self.textalpha > 1)
{
break;
}
wait(0.05);
}
self.textalpha = 1;
}
//Function Number: 68
clear_settable_fx()
{
level.createfx_inputlocked = 0;
level._createfx.selected_fx_option_index = undefined;
reset_fx_hud_colors();
}
//Function Number: 69
reset_fx_hud_colors()
{
for(var_00 = 0;var_00 < level._createfx.hudelem_count;var_00++)
{
level._createfx.hudelems[var_00][0].color = (1,1,1);
}
}
//Function Number: 70
toggle_entity_selection(param_00,param_01)
{
if(isdefined(level._createfx.selected_fx[param_00]))
{
deselect_entity(param_00,param_01);
return;
}
select_entity(param_00,param_01);
}
//Function Number: 71
select_entity(param_00,param_01)
{
if(isdefined(level._createfx.selected_fx[param_00]))
{
return;
}
clear_settable_fx();
level notify("new_ent_selection");
param_01 thread entity_highlight_enable();
level._createfx.selected_fx[param_00] = 1;
level._createfx.selected_fx_ents[level._createfx.selected_fx_ents.size] = param_01;
level.createfx_menu_list_active = 0;
}
//Function Number: 72
ent_is_highlighted(param_00)
{
if(!isdefined(level.fx_highlightedent))
{
return 0;
}
return param_00 == level.fx_highlightedent;
}
//Function Number: 73
deselect_entity(param_00,param_01)
{
if(!isdefined(level._createfx.selected_fx[param_00]))
{
return;
}
clear_settable_fx();
level notify("new_ent_selection");
level._createfx.selected_fx[param_00] = undefined;
if(!ent_is_highlighted(param_01))
{
param_01 thread entity_highlight_disable();
}
var_02 = [];
for(var_03 = 0;var_03 < level._createfx.selected_fx_ents.size;var_03++)
{
if(level._createfx.selected_fx_ents[var_03] != param_01)
{
var_02[var_02.size] = level._createfx.selected_fx_ents[var_03];
}
}
level._createfx.selected_fx_ents = var_02;
}
//Function Number: 74
index_is_selected(param_00)
{
return isdefined(level._createfx.selected_fx[param_00]);
}
//Function Number: 75
ent_is_selected(param_00)
{
for(var_01 = 0;var_01 < level._createfx.selected_fx_ents.size;var_01++)
{
if(level._createfx.selected_fx_ents[var_01] == param_00)
{
return 1;
}
}
return 0;
}
//Function Number: 76
clear_entity_selection()
{
for(var_00 = 0;var_00 < level._createfx.selected_fx_ents.size;var_00++)
{
if(!ent_is_highlighted(level._createfx.selected_fx_ents[var_00]))
{
level._createfx.selected_fx_ents[var_00] thread entity_highlight_disable();
}
}
level._createfx.selected_fx = [];
level._createfx.selected_fx_ents = [];
}
//Function Number: 77
draw_axis()
{
}
//Function Number: 78
draw_cross()
{
}
//Function Number: 79
createfx_centerprint(param_00)
{
thread createfx_centerprint_thread(param_00);
}
//Function Number: 80
createfx_centerprint_thread(param_00)
{
level notify("new_createfx_centerprint");
level endon("new_createfx_centerprint");
for(var_01 = 0;var_01 < 5;var_01++)
{
}
wait(4.5);
for(var_01 = 0;var_01 < 5;var_01++)
{
}
}
//Function Number: 81
get_selected_move_vector()
{
var_00 = level.player getplayerangles()[1];
var_01 = (0,var_00,0);
var_02 = anglestoright(var_01);
var_03 = anglestoforward(var_01);
var_04 = anglestoup(var_01);
var_05 = 0;
var_06 = level._createfx.rate;
if(buttondown("DPAD_UP"))
{
if(level.selectedmove_forward < 0)
{
level.selectedmove_forward = 0;
}
level.selectedmove_forward = level.selectedmove_forward + var_06;
}
else if(buttondown("DPAD_DOWN"))
{
if(level.selectedmove_forward > 0)
{
level.selectedmove_forward = 0;
}
level.selectedmove_forward = level.selectedmove_forward - var_06;
}
else
{
level.selectedmove_forward = 0;
}
if(buttondown("DPAD_RIGHT"))
{
if(level.selectedmove_right < 0)
{
level.selectedmove_right = 0;
}
level.selectedmove_right = level.selectedmove_right + var_06;
}
else if(buttondown("DPAD_LEFT"))
{
if(level.selectedmove_right > 0)
{
level.selectedmove_right = 0;
}
level.selectedmove_right = level.selectedmove_right - var_06;
}
else
{
level.selectedmove_right = 0;
}
if(buttondown("BUTTON_Y"))
{
if(level.selectedmove_up < 0)
{
level.selectedmove_up = 0;
}
level.selectedmove_up = level.selectedmove_up + var_06;
}
else if(buttondown("BUTTON_B"))
{
if(level.selectedmove_up > 0)
{
level.selectedmove_up = 0;
}
level.selectedmove_up = level.selectedmove_up - var_06;
}
else
{
level.selectedmove_up = 0;
}
var_07 = (0,0,0);
var_07 = var_07 + var_03 * level.selectedmove_forward;
var_07 = var_07 + var_02 * level.selectedmove_right;
var_07 = var_07 + var_04 * level.selectedmove_up;
return var_07;
}
//Function Number: 82
set_anglemod_move_vector()
{
if(!level._createfx.snap90deg)
{
var_00 = level._createfx.rate;
}
else
{
var_00 = 90;
}
if(buttondown("kp_uparrow","DPAD_UP"))
{
if(level.selectedrotate_pitch < 0)
{
level.selectedrotate_pitch = 0;
}
level.selectedrotate_pitch = level.selectedrotate_pitch + var_00;
}
else if(buttondown("kp_downarrow","DPAD_DOWN"))
{
if(level.selectedrotate_pitch > 0)
{
level.selectedrotate_pitch = 0;
}
level.selectedrotate_pitch = level.selectedrotate_pitch - var_00;
}
else
{
level.selectedrotate_pitch = 0;
}
if(buttondown("DPAD_LEFT"))
{
if(level.selectedrotate_yaw < 0)
{
level.selectedrotate_yaw = 0;
}
level.selectedrotate_yaw = level.selectedrotate_yaw + var_00;
}
else if(buttondown("DPAD_RIGHT"))
{
if(level.selectedrotate_yaw > 0)
{
level.selectedrotate_yaw = 0;
}
level.selectedrotate_yaw = level.selectedrotate_yaw - var_00;
}
else
{
level.selectedrotate_yaw = 0;
}
if(buttondown("BUTTON_Y"))
{
if(level.selectedrotate_roll < 0)
{
level.selectedrotate_roll = 0;
}
level.selectedrotate_roll = level.selectedrotate_roll + var_00;
return;
}
if(buttondown("BUTTON_B"))
{
if(level.selectedrotate_roll > 0)
{
level.selectedrotate_roll = 0;
}
level.selectedrotate_roll = level.selectedrotate_roll - var_00;
return;
}
level.selectedrotate_roll = 0;
}
//Function Number: 83
update_selected_entities()
{
var_00 = 0;
foreach(var_02 in level._createfx.selected_fx_ents)
{
if(var_02.v["type"] == "reactive_fx")
{
var_00 = 1;
}
var_02 [[ level.func_updatefx ]]();
}
if(var_00)
{
refresh_reactive_fx_ents();
}
}
//Function Number: 84
hack_start(param_00)
{
if(!isdefined(param_00))
{
param_00 = "painter_mp";
}
precachemenu(param_00);
wait(0.05);
if(param_00 == "painter_mp")
{
return;
}
level.player openpopupmenu(param_00);
level.player closepopupmenu(param_00);
}
//Function Number: 85
stop_fx_looper()
{
if(isdefined(self.looper))
{
self.looper delete();
}
stop_loopsound();
}
//Function Number: 86
stop_loopsound()
{
self notify("stop_loop");
}
//Function Number: 87
func_get_level_fx()
{
if(!isdefined(level._effect_keys))
{
var_00 = getarraykeys(level._effect);
}
else
{
var_00 = getarraykeys(level._effect);
if(var_00.size == level._effect_keys.size)
{
return level._effect_keys;
}
}
var_00 = common_scripts\utility::alphabetize(var_00);
level._effect_keys = var_00;
return var_00;
}
//Function Number: 88
restart_fx_looper()
{
stop_fx_looper();
set_forward_and_up_vectors();
switch(self.v["type"])
{
case "loopfx":
break;
case "oneshotfx":
break;
case "soundfx":
break;
case "soundfx_interval":
break;
case "soundfx_dynamic":
break;
}
}
//Function Number: 89
refresh_reactive_fx_ents()
{
level._fx.reactive_fx_ents = undefined;
foreach(var_01 in level.createfxent)
{
if(var_01.v["type"] == "reactive_fx")
{
var_01 set_forward_and_up_vectors();
var_01 common_scripts\_fx::add_reactive_fx();
}
}
}
//Function Number: 90
process_fx_rotater()
{
if(level.fx_rotating)
{
thread save_undo_buffer();
level.createfx_last_movement_timer = 0;
return;
}
set_anglemod_move_vector();
if(!rotation_is_occuring())
{
return;
}
level.fx_rotating = 1;
if(level._createfx.selected_fx_ents.size > 1 && !level._createfx.localrot)
{
var_00 = get_center_of_array(level._createfx.selected_fx_ents);
var_01 = spawn("script_origin",var_00);
var_01.v["angles"] = level._createfx.selected_fx_ents[0].v["angles"];
var_01.v["origin"] = var_00;
var_02 = [];
for(var_03 = 0;var_03 < level._createfx.selected_fx_ents.size;var_03++)
{
var_02[var_03] = spawn("script_origin",level._createfx.selected_fx_ents[var_03].v["origin"]);
var_02[var_03].angles = level._createfx.selected_fx_ents[var_03].v["angles"];
var_02[var_03] vehicle_jetbikesethoverforcescale(var_01);
}
rotate_over_time(var_01,var_02);
var_01 delete();
for(var_03 = 0;var_03 < var_02.size;var_03++)
{
var_02[var_03] delete();
}
}
else if(level._createfx.selected_fx_ents.size > 0)
{
foreach(var_05 in level._createfx.selected_fx_ents)
{
var_02 = spawn("script_origin",(0,0,0));
var_02.angles = var_05.v["angles"];
if(level.selectedrotate_pitch != 0)
{
var_02 addpitch(level.selectedrotate_pitch);
}
else if(level.selectedrotate_yaw != 0)
{
var_02 addyaw(level.selectedrotate_yaw);
}
else
{
var_02 addroll(level.selectedrotate_roll);
}
var_05.v["angles"] = var_02.angles;
var_02 delete();
}
wait(0.05);
}
level.fx_rotating = 0;
}
//Function Number: 91
spawn_grenade()
{
playfx(level._createfx.grenade.fx,level.createfxcursor["position"]);
level._createfx.grenade playsound(level._createfx.grenade.sound);
radiusdamage(level.createfxcursor["position"],level._createfx.grenade.radius,50,5,undefined,"MOD_EXPLOSIVE");
level notify("code_damageradius",undefined,level._createfx.grenade.radius,level.createfxcursor["position"]);
}
//Function Number: 92
show_help()
{
if(level.createfx_help_active == 1)
{
clear_fx_hudelements();
level.createfx_help_active = 0;
level.createfx_menu_list_active = 0;
reselect_entitites();
}
else
{
level.createfx_help_active = 1;
level.createfx_menu_list_active = 1;
common_scripts\_createfxmenu::draw_help_list();
thread common_scripts\_createfxmenu::help_navigation_buttons();
clear_tool_hud();
}
wait(0.2);
}
//Function Number: 93
generate_fx_log(param_00)
{
}
//Function Number: 94
write_entity(param_00,param_01)
{
var_02 = "\t";
if(getdvarint("scr_map_exploder_dump"))
{
if(!isdefined(param_00.model))
{
return;
}
}
else if(isdefined(param_00.model))
{
return;
}
if(param_00.v["type"] == "loopfx")
{
cfxprintln(var_02 + "ent = createLoopEffect( \" + param_00.v["fxid"] + "\" );");
}
if(param_00.v["type"] == "oneshotfx")
{
cfxprintln(var_02 + "ent = createOneshotEffect( \" + param_00.v["fxid"] + "\" );");
}
if(param_00.v["type"] == "exploder")
{
if(isdefined(param_00.v["exploder"]) && !level.mp_createfx)
{
cfxprintln(var_02 + "ent = createExploderEx( \" + param_00.v["fxid"] + "\", \" + param_00.v["exploder"] + "\" );");
}
else
{
cfxprintln(var_02 + "ent = createExploder( \" + param_00.v["fxid"] + "\" );");
}
}
if(param_00.v["type"] == "soundfx")
{
cfxprintln(var_02 + "ent = createLoopSound();");
}
if(param_00.v["type"] == "soundfx_interval")
{
cfxprintln(var_02 + "ent = createIntervalSound();");
}
if(param_00.v["type"] == "reactive_fx")
{
cfxprintln(var_02 + "ent = createReactiveEnt();");
}
if(param_00.v["type"] == "soundfx_dynamic")
{
cfxprintln(var_02 + "ent = createDynamicAmbience();");
}
cfxprintln(var_02 + "ent set_origin_and_angles( " + param_00.v["origin"] + ", " + param_00.v["angles"] + " );");
print_fx_options(param_00,var_02,param_01);
cfxprintln("");
}
//Function Number: 95
write_log(param_00,param_01,param_02,param_03,param_04)
{
var_05 = "\t";
cfxprintlnstart();
cfxprintln("//_createfx generated. Do not touch!!");
cfxprintln("#include common_scripts\\utility;");
cfxprintln("#include common_scripts\\_createfx;\n");
cfxprintln("");
cfxprintln("main()");
cfxprintln("{");
var_06 = param_00.size;
if(isdefined(param_04))
{
var_06 = var_06 + param_04.size;
}
cfxprintln(var_05 + "// CreateFX " + param_01 + " entities placed: " + var_06);
foreach(var_08 in param_00)
{
if(level.createfx_loopcounter > 16)
{
level.createfx_loopcounter = 0;
wait(0.1);
}
level.createfx_loopcounter++;
write_entity(var_08,param_02);
}
if(isdefined(param_04))
{
foreach(var_0B in param_04)
{
if(level.createfx_loopcounter > 16)
{
level.createfx_loopcounter = 0;
wait(0.1);
}
level.createfx_loopcounter++;
var_08 = spawnstruct();
var_08.v = var_0B;
write_entity(var_08,param_02);
}
}
cfxprintln("}");
cfxprintln(" ");
cfxprintlnend(param_02,param_03,param_01);
}
//Function Number: 96
createfx_adjust_array()
{
var_00 = 0.1;
foreach(var_02 in level.createfxent)
{
var_03 = [];
var_04 = [];
for(var_05 = 0;var_05 < 3;var_05++)
{
var_03[var_05] = var_02.v["origin"][var_05];
var_04[var_05] = var_02.v["angles"][var_05];
if(var_03[var_05] < var_00 && var_03[var_05] > var_00 * -1)
{
var_03[var_05] = 0;
}
if(var_04[var_05] < var_00 && var_04[var_05] > var_00 * -1)
{
var_04[var_05] = 0;
}
}
var_02.v["origin"] = (var_03[0],var_03[1],var_03[2]);
var_02.v["angles"] = (var_04[0],var_04[1],var_04[2]);
}
}
//Function Number: 97
get_createfx_array(param_00)
{
var_01 = get_createfx_types(param_00);
var_02 = [];
foreach(var_05, var_04 in var_01)
{
var_02[var_05] = [];
}
foreach(var_07 in level.createfxent)
{
var_08 = 0;
foreach(var_05, param_00 in var_01)
{
if(var_07.v["type"] != param_00)
{
continue;
}
var_08 = 1;
var_02[var_05][var_02[var_05].size] = var_07;
break;
}
}
var_0B = [];
for(var_0C = 0;var_0C < var_01.size;var_0C++)
{
foreach(var_07 in var_02[var_0C])
{
var_0B[var_0B.size] = var_07;
}
}
return var_0B;
}
//Function Number: 98
get_createfx_types(param_00)
{
var_01 = [];
if(param_00 == "fx")
{
var_01[0] = "loopfx";
var_01[1] = "oneshotfx";
var_01[2] = "exploder";
}
else
{
var_01[0] = "soundfx";
var_01[1] = "soundfx_interval";
var_01[2] = "reactive_fx";
var_01[3] = "soundfx_dynamic";
}
return var_01;
}
//Function Number: 99
is_createfx_type(param_00,param_01)
{
var_02 = get_createfx_types(param_01);
foreach(var_04 in var_02)
{
if(param_00.v["type"] == var_04)
{
return 1;
}
}
return 0;
}
//Function Number: 100
createfx_filter_types()
{
var_00 = [];
var_00[0] = "soundfx";
var_00[1] = "loopfx";
var_00[2] = "oneshotfx";
var_00[3] = "exploder";
var_00[4] = "soundfx_interval";
var_00[5] = "reactive_fx";
var_00[6] = "soundfx_dynamic";
var_01 = [];
foreach(var_04, var_03 in var_00)
{
var_01[var_04] = [];
}
foreach(var_06 in level.createfxent)
{
var_07 = 0;
foreach(var_04, var_09 in var_00)
{
if(var_06.v["type"] != var_09)
{
continue;
}
var_07 = 1;
var_01[var_04][var_01[var_04].size] = var_06;
break;
}
}
var_0B = [];
for(var_0C = 0;var_0C < var_00.size;var_0C++)
{
foreach(var_06 in var_01[var_0C])
{
var_0B[var_0B.size] = var_06;
}
}
level.createfxent = var_0B;
}
//Function Number: 101
cfxprintlnstart()
{
common_scripts\utility::fileprint_launcher_start_file();
}
//Function Number: 102
cfxprintln(param_00)
{
common_scripts\utility::fileprint_launcher(param_00);
}
//Function Number: 103
cfxprintlnend(param_00,param_01,param_02)
{
var_03 = 1;
if(param_01 != "" || param_00)
{
var_03 = 0;
}
if(common_scripts\utility::issp())
{
var_04 = common_scripts\utility::get_template_level() + param_01 + "_" + param_02 + ".gsc";
if(param_00)
{
var_04 = "backup_" + param_02 + ".gsc";
}
}
else
{
var_04 = common_scripts\utility::get_template_level() + param_02 + "_" + var_03 + ".gsc";
if(param_00)
{
var_04 = "backup.gsc";
}
}
common_scripts\utility::fileprint_launcher_end_file("/share/raw/maps/createfx/" + var_04,var_03);
}
//Function Number: 104
process_button_held_and_clicked()
{
add_button("mouse1");
add_button("BUTTON_RSHLDR");
add_button("BUTTON_LSHLDR");
add_button("BUTTON_RSTICK");
add_button("BUTTON_LSTICK");
add_button("BUTTON_A");
add_button("BUTTON_B");
add_button("BUTTON_X");
add_button("BUTTON_Y");
add_button("DPAD_UP");
add_button("DPAD_LEFT");
add_button("DPAD_RIGHT");
add_button("DPAD_DOWN");
add_kb_button("shift");
add_kb_button("ctrl");
add_kb_button("escape");
add_kb_button("F1");
add_kb_button("F5");
add_kb_button("F4");
add_kb_button("F2");
add_kb_button("a");
add_kb_button("g");
add_kb_button("c");
add_kb_button("h");
add_kb_button("i");
add_kb_button("f");
add_kb_button("k");
add_kb_button("l");
add_kb_button("m");
add_kb_button("o");
add_kb_button("p");
add_kb_button("r");
add_kb_button("s");
add_kb_button("u");
add_kb_button("v");
add_kb_button("x");
add_kb_button("y");
add_kb_button("z");
add_kb_button("del");
add_kb_button("end");
add_kb_button("tab");
add_kb_button("ins");
add_kb_button("add");
add_kb_button("space");
add_kb_button("enter");
add_kb_button("1");
add_kb_button("2");
add_kb_button("3");
add_kb_button("4");
add_kb_button("5");
add_kb_button("6");
add_kb_button("7");
add_kb_button("8");
add_kb_button("9");
add_kb_button("0");
add_kb_button("-");
add_kb_button("=");
add_kb_button(",");
add_kb_button(".");
add_kb_button("[");
add_kb_button("]");
add_kb_button("leftarrow");
add_kb_button("rightarrow");
add_kb_button("uparrow");
add_kb_button("downarrow");
}
//Function Number: 105
locked(param_00)
{
if(isdefined(level._createfx.lockedlist[param_00]))
{
return 0;
}
return kb_locked(param_00);
}
//Function Number: 106
kb_locked(param_00)
{
return level.createfx_inputlocked && isdefined(level.button_is_kb[param_00]);
}
//Function Number: 107
add_button(param_00)
{
if(locked(param_00))
{
return;
}
if(!isdefined(level.buttonisheld[param_00]))
{
if(level.player buttonpressed(param_00))
{
level.buttonisheld[param_00] = 1;
level.buttonclick[param_00] = 1;
return;
}
return;
}
if(!level.player buttonpressed(param_00))
{
level.buttonisheld[param_00] = undefined;
}
}
//Function Number: 108
add_kb_button(param_00)
{
level.button_is_kb[param_00] = 1;
add_button(param_00);
}
//Function Number: 109
buttondown(param_00,param_01)
{
return buttonpressed_internal(param_00) || buttonpressed_internal(param_01);
}
//Function Number: 110
buttonpressed_internal(param_00)
{
if(!isdefined(param_00))
{
return 0;
}
if(kb_locked(param_00))
{
return 0;
}
return level.player buttonpressed(param_00);
}
//Function Number: 111
button_is_held(param_00,param_01)
{
if(isdefined(param_01))
{
if(isdefined(level.buttonisheld[param_01]))
{
return 1;
}
}
return isdefined(level.buttonisheld[param_00]);
}
//Function Number: 112
button_is_clicked(param_00,param_01)
{
if(isdefined(param_01))
{
if(isdefined(level.buttonclick[param_01]))
{
return 1;
}
}
return isdefined(level.buttonclick[param_00]);
}
//Function Number: 113
init_huds()
{
level._createfx.hudelems = [];
level._createfx.hudelem_count = 30;
var_00 = [];
var_01 = [];
var_00[0] = 0;
var_01[0] = 0;
var_00[1] = 1;
var_01[1] = 1;
var_00[2] = -2;
var_01[2] = 1;
var_00[3] = 1;
var_01[3] = -1;
var_00[4] = -2;
var_01[4] = -1;
level.cleartextmarker = newhudelem();
level.cleartextmarker.alpha = 0;
for(var_02 = 0;var_02 < level._createfx.hudelem_count;var_02++)
{
var_03 = [];
for(var_04 = 0;var_04 < 1;var_04++)
{
var_05 = newhudelem();
var_05.alignx = "left";
var_05.location = 0;
var_05.foreground = 1;
var_05.fontscale = 1.4;
var_05.sort = 20 - var_04;
var_05.alpha = 1;
var_05.x = 0 + var_00[var_04];
var_05.y = 60 + var_01[var_04] + var_02 * 15;
if(var_04 > 0)
{
var_05.color = (0,0,0);
}
var_03[var_03.size] = var_05;
}
level._createfx.hudelems[var_02] = var_03;
}
var_03 = [];
for(var_04 = 0;var_04 < 5;var_04++)
{
var_05 = newhudelem();
var_05.alignx = "center";
var_05.location = 0;
var_05.foreground = 1;
var_05.fontscale = 1.4;
var_05.sort = 20 - var_04;
var_05.alpha = 1;
var_05.x = 320 + var_00[var_04];
var_05.y = 80 + var_01[var_04];
if(var_04 > 0)
{
var_05.color = (0,0,0);
}
var_03[var_03.size] = var_05;
}
level.createfx_centerprint = var_03;
}
//Function Number: 114
init_crosshair()
{
var_00 = newhudelem();
var_00.location = 0;
var_00.alignx = "center";
var_00.aligny = "middle";
var_00.foreground = 1;
var_00.fontscale = 2;
var_00.sort = 20;
var_00.alpha = 1;
var_00.x = 320;
var_00.y = 233;
}
//Function Number: 115
clear_fx_hudelements()
{
level.cleartextmarker clearalltextafterhudelem();
for(var_00 = 0;var_00 < level._createfx.hudelem_count;var_00++)
{
for(var_01 = 0;var_01 < 1;var_01++)
{
}
}
level.fxhudelements = 0;
}
//Function Number: 116
set_fx_hudelement(param_00)
{
for(var_01 = 0;var_01 < 1;var_01++)
{
}
level.fxhudelements++;
}
//Function Number: 117
init_tool_hud()
{
if(!isdefined(level._createfx.tool_hudelems))
{
level._createfx.tool_hudelems = [];
}
if(!isdefined(level._createfx.tool_hud_visible))
{
level._createfx.tool_hud_visible = 1;
}
if(!isdefined(level._createfx.tool_hud))
{
level._createfx.tool_hud = "";
}
}
//Function Number: 118
new_tool_hud(param_00)
{
foreach(var_03, var_02 in level._createfx.tool_hudelems)
{
if(isdefined(var_02.value_hudelem))
{
var_02.value_hudelem destroy();
}
var_02 destroy();
level._createfx.tool_hudelems[var_03] = undefined;
}
level._createfx.tool_hud = param_00;
}
//Function Number: 119
current_mode_hud(param_00)
{
return level._createfx.tool_hud == param_00;
}
//Function Number: 120
clear_tool_hud()
{
new_tool_hud("");
}
//Function Number: 121
new_tool_hudelem(param_00)
{
var_01 = newhudelem();
var_01.alignx = "left";
var_01.location = 0;
var_01.foreground = 1;
var_01.fontscale = 1.2;
var_01.alpha = 1;
var_01.x = 0;
var_01.y = 320 + param_00 * 15;
return var_01;
}
//Function Number: 122
get_tool_hudelem(param_00)
{
if(isdefined(level._createfx.tool_hudelems[param_00]))
{
return level._createfx.tool_hudelems[param_00];
}
return undefined;
}
//Function Number: 123
set_tool_hudelem(param_00,param_01,param_02)
{
var_03 = get_tool_hudelem(param_00);
if(!isdefined(var_03))
{
var_03 = new_tool_hudelem(level._createfx.tool_hudelems.size);
level._createfx.tool_hudelems[param_00] = var_03;
var_03.text = param_00;
}
if(isdefined(param_01))
{
if(isdefined(var_03.value_hudelem))
{
var_04 = var_03.value_hudelem;
}
else
{
var_04 = new_tool_hudelem(level._createfx.tool_hudelems.size);
var_04.x = var_04.x + 110;
var_04.y = var_03.y;
var_03.value_hudelem = var_04;
}
if(isdefined(var_04.text) && var_04.text == param_01)
{
return;
}
var_04.text = param_01;
if(!isdefined(param_02))
{
param_02 = (1,1,1);
}
var_04.color = param_02;
}
}
//Function Number: 124
select_by_substring()
{
var_00 = getdvar("select_by_substring");
if(var_00 == "")
{
return 0;
}
setdvar("select_by_substring","");
var_01 = [];
foreach(var_04, var_03 in level.createfxent)
{
if(issubstr(var_03.v["fxid"],var_00))
{
var_01[var_01.size] = var_04;
}
}
if(var_01.size == 0)
{
return 0;
}
deselect_all_ents();
select_index_array(var_01);
foreach(var_06 in var_01)
{
var_03 = level.createfxent[var_06];
select_entity(var_06,var_03);
}
return 1;
}
//Function Number: 125
select_index_array(param_00)
{
foreach(var_02 in param_00)
{
var_03 = level.createfxent[var_02];
select_entity(var_02,var_03);
}
}
//Function Number: 126
deselect_all_ents()
{
foreach(var_02, var_01 in level._createfx.selected_fx_ents)
{
deselect_entity(var_02,var_01);
}
}
//Function Number: 127
setup_last_movement_timer()
{
wait(0.5);
for(;;)
{
level.createfx_last_movement_timer = level.createfx_last_movement_timer + 0.05;
if(level.createfx_last_movement_timer == 0.15)
{
foreach(var_01 in level._createfx.selected_fx_ents)
{
if(var_01.v["type"] == "exploder")
{
var_01 common_scripts\utility::activate_individual_exploder();
}
}
common_scripts\_createfxmenu::display_current_translation();
save_redo_buffer();
}
if(level.createfx_last_movement_timer == 0.05)
{
var_01 = common_scripts\_createfxmenu::get_last_selected_ent();
common_scripts\_createfxmenu::display_current_translation();
}
wait(0.05);
}
}
//Function Number: 128
frame_selected()
{
if(level._createfx.selected_fx_ents.size < 1)
{
return;
}
if(level._createfx.selected_fx_ents.size > 1)
{
var_00 = get_center_of_array(level._createfx.selected_fx_ents);
var_01 = get_radius_of_array(level._createfx.selected_fx_ents) + 200;
}
else
{
var_00 = level._createfx.selected_fx_ents[0].v["origin"];
var_01 = 200;
}
var_02 = anglestoforward(level.player getplayerangles());
var_03 = var_02 * -1 * var_01;
var_04 = level.player geteye();
var_05 = var_04 - level.player.origin;
level.player setorigin(var_00 + var_03 - var_05);
}
//Function Number: 129
clear_all_loopers()
{
foreach(var_01 in level.createfxent)
{
if(isdefined(var_01.looper))
{
var_01.looper delete();
}
var_01 stop_loopsound();
}
}
//Function Number: 130
restart_oneshots()
{
foreach(var_01 in level.createfxent)
{
if(var_01.v["type"] == "oneshotfx")
{
var_01 restart_fx_looper();
}
}
}
//Function Number: 131
restart_selected_exploders()
{
foreach(var_01 in level._createfx.selected_fx_ents)
{
if(isdefined(var_01) && var_01.v["type"] == "exploder")
{
var_01 common_scripts\utility::activate_individual_exploder();
}
}
}
//Function Number: 132
save_undo_buffer()
{
if(isdefined(level.createfxent) && level.createfx_last_movement_timer > 0.15)
{
level.createfxent_undo = copystructarrayvalues(level.createfxent);
}
}
//Function Number: 133
save_redo_buffer()
{
if(isdefined(level.createfxent))
{
level.createfxent_redo = copystructarrayvalues(level.createfxent);
}
}
//Function Number: 134
undo()
{
if(isdefined(level.createfxent_undo))
{
clear_all_loopers();
level.createfxent = [];
level.createfxent = copystructarrayvalues(level.createfxent_undo);
clear_fx_hudelements();
reselect_entitites();
restart_oneshots();
restart_selected_exploders();
}
}
//Function Number: 135
redo()
{
if(isdefined(level.createfxent_redo))
{
clear_all_loopers();
level.createfxent = [];
level.createfxent = copystructarrayvalues(level.createfxent_redo);
clear_fx_hudelements();
reselect_entitites();
restart_oneshots();
restart_selected_exploders();
}
}
//Function Number: 136
copystructarrayvalues(param_00)
{
var_01 = [];
if(param_00.size > 0)
{
for(var_02 = 0;var_02 < param_00.size;var_02++)
{
var_03 = spawnstruct();
if(isdefined(param_00[var_02].v))
{
var_03.v = [];
var_03.v["type"] = param_00[var_02].v["type"];
var_03.v["fxid"] = param_00[var_02].v["fxid"];
var_03.v["soundalias"] = param_00[var_02].v["soundalias"];
var_03.v["loopsound"] = param_00[var_02].v["loopsound"];
var_03.v["angles"] = param_00[var_02].v["angles"];
var_03.v["origin"] = param_00[var_02].v["origin"];
var_03.v["exploder"] = param_00[var_02].v["exploder"];
var_03.v["flag"] = param_00[var_02].v["flag"];
var_03.v["exploder_type"] = param_00[var_02].v["exploder_type"];
var_03.v["server_culled"] = param_00[var_02].v["server_culled"];
var_03.v["delay_min"] = param_00[var_02].v["delay_min"];
var_03.v["delay_max"] = param_00[var_02].v["delay_max"];
var_03.v["soundalias"] = param_00[var_02].v["soundalias"];
var_03.v["delay"] = param_00[var_02].v["delay"];
var_03.v["forward"] = param_00[var_02].v["forward"];
var_03.v["up"] = param_00[var_02].v["up"];
var_01[var_02] = var_03;
}
var_01[var_02].drawn = param_00[var_02].drawn;
var_01[var_02].textalpha = param_00[var_02].textalpha;
}
}
return var_01;
}
//Function Number: 137
removefxentwithentity(param_00)
{
var_01 = [];
foreach(var_03 in level.createfxent)
{
if(isdefined(var_03.model) && var_03.model == param_00)
{
continue;
}
var_01[var_01.size] = var_03;
}
level.createfxent = var_01;
}