mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-06-21 23:47:52 -05:00
1750 lines
42 KiB
Plaintext
1750 lines
42 KiB
Plaintext
/*******************************************************************
|
|
* Decompiled By: Bog
|
|
* Decompiled File: maps\_interactive_objects.gsc
|
|
* Game: Call of Duty: Modern Warfare 3
|
|
* Platform: PC
|
|
* Function Count: 36
|
|
* Decompile Time: 642 ms
|
|
* Timestamp: 10/27/2023 2:23:03 AM
|
|
*******************************************************************/
|
|
|
|
//Function Number: 1
|
|
main()
|
|
{
|
|
common_scripts\utility::flag_init("no_ai_tv_damage");
|
|
var_00 = 0;
|
|
var_01 = getentarray("explodable_barrel","targetname");
|
|
if(var_01.size)
|
|
{
|
|
var_00 = 1;
|
|
}
|
|
|
|
var_01 = getentarray("explodable_barrel","script_noteworthy");
|
|
if(var_01.size > 0)
|
|
{
|
|
var_00 = 1;
|
|
}
|
|
|
|
if(var_00)
|
|
{
|
|
level.breakables_fx["barrel"]["explode"] = loadfx("props/barrelExp");
|
|
level.breakables_fx["barrel"]["burn_start"] = loadfx("props/barrel_ignite");
|
|
level.breakables_fx["barrel"]["burn"] = loadfx("props/barrel_fire_top");
|
|
}
|
|
|
|
var_02 = getentarray("oil_spill","targetname");
|
|
if(var_02.size)
|
|
{
|
|
level.breakables_fx["oilspill"]["burn"] = loadfx("props/barrel_fire");
|
|
level.breakables_fx["oilspill"]["spark"] = loadfx("impacts/small_metalhit_1");
|
|
}
|
|
|
|
var_03 = getentarray("tincan","targetname");
|
|
if(var_03.size)
|
|
{
|
|
level.breakables_fx["tincan"] = loadfx("props/tincan_bounce");
|
|
}
|
|
|
|
var_04 = 0;
|
|
var_05 = getentarray("breakable","targetname");
|
|
if(var_05.size)
|
|
{
|
|
var_04 = 1;
|
|
}
|
|
|
|
var_05 = getentarray("breakable_vase","targetname");
|
|
if(var_05.size)
|
|
{
|
|
var_04 = 1;
|
|
}
|
|
|
|
var_05 = getentarray("breakable box","targetname");
|
|
if(var_01.size)
|
|
{
|
|
var_04 = 1;
|
|
}
|
|
|
|
var_05 = getentarray("breakable box","script_noteworthy");
|
|
if(var_01.size)
|
|
{
|
|
var_04 = 1;
|
|
}
|
|
|
|
if(var_04)
|
|
{
|
|
level.breakables_fx["vase"] = loadfx("props/vase_water");
|
|
level.breakables_fx["bottle"] = loadfx("props/wine_bottle");
|
|
level.breakables_fx["box"][0] = loadfx("props/crateExp_dust");
|
|
level.breakables_fx["box"][1] = loadfx("props/crateExp_dust");
|
|
level.breakables_fx["box"][2] = loadfx("props/crateExp_dust");
|
|
level.breakables_fx["box"][3] = loadfx("props/crateExp_ammo");
|
|
}
|
|
|
|
var_06 = getentarray("glass","targetname");
|
|
var_06 = common_scripts\utility::array_combine(var_06,getentarray("glass","script_noteworthy"));
|
|
if(var_06.size)
|
|
{
|
|
level._glass_info = [];
|
|
level._glass_info["glass_large"]["breakfx"] = loadfx("props/car_glass_large");
|
|
level._glass_info["glass_large"]["breaksnd"] = "veh_glass_break_large";
|
|
level._glass_info["glass_med"]["breakfx"] = loadfx("props/car_glass_med");
|
|
level._glass_info["glass_med"]["breaksnd"] = "veh_glass_break_small";
|
|
level._glass_info["glass_small"]["breakfx"] = loadfx("props/car_glass_headlight");
|
|
level._glass_info["glass_small"]["breaksnd"] = "veh_glass_break_small";
|
|
}
|
|
|
|
var_07 = getentarray("interactive_tv","targetname");
|
|
if(var_07.size)
|
|
{
|
|
precachemodel("com_tv2_d");
|
|
precachemodel("com_tv1");
|
|
precachemodel("com_tv2");
|
|
precachemodel("com_tv1_testpattern");
|
|
precachemodel("com_tv2_testpattern");
|
|
level.breakables_fx["tv_explode"] = loadfx("explosions/tv_explosion");
|
|
}
|
|
|
|
level.var_1DDE = getentarray("interactive_tv_light","targetname");
|
|
var_08 = getentarray("destroyable_security_camera","script_noteworthy");
|
|
if(var_08.size)
|
|
{
|
|
precachemodel("com_security_camera");
|
|
precachemodel("com_security_camera_destroyed");
|
|
level.breakables_fx["security_camera_explode"] = loadfx("props/securitycamera_explosion");
|
|
}
|
|
|
|
level.tv_lite_array = "barrel_mtl_explode";
|
|
var_09 = 25;
|
|
level.var_1DE0["orange vase"] = 1;
|
|
level.var_1DE0["green vase"] = 1;
|
|
level.var_1DE0["bottle"] = 1;
|
|
level.var_1DE1 = 150;
|
|
level.precachemodeltype = [];
|
|
level.barrelexplodingthisframe = 0;
|
|
level.breakables_clip = [];
|
|
level.breakables_clip = getentarray("vase_break_remove","targetname");
|
|
level.console_auto_aim_2nd = [];
|
|
level.console_auto_aim_2nd = getentarray("xenon_auto_aim","targetname");
|
|
level.var_1DE6 = getentarray("xenon_auto_aim_secondary","targetname");
|
|
for(var_0A = 0;var_0A < level.console_auto_aim_2nd.size;var_0A++)
|
|
{
|
|
level.console_auto_aim_2nd[var_0A] notsolid();
|
|
}
|
|
|
|
for(var_0A = 0;var_0A < level.var_1DE6.size;var_0A++)
|
|
{
|
|
level.var_1DE6[var_0A] notsolid();
|
|
}
|
|
|
|
maps\_utility::set_console_status();
|
|
if(level.console)
|
|
{
|
|
level.console_auto_aim_2nd = undefined;
|
|
level.var_1DE6 = undefined;
|
|
}
|
|
|
|
var_0B = getentarray("breakable clip","targetname");
|
|
for(var_0A = 0;var_0A < var_0B.size;var_0A++)
|
|
{
|
|
level.breakables_clip[level.breakables_clip.size] = var_0B[var_0A];
|
|
}
|
|
|
|
level._breakable_utility_modelarray = [];
|
|
level._breakable_utility_modelindex = 0;
|
|
level._breakable_utility_maxnum = var_09;
|
|
common_scripts\utility::array_thread(getentarray("tincan","targetname"),::tincan_think);
|
|
common_scripts\utility::array_thread(getentarray("helmet_pop","targetname"),::helmet_pop);
|
|
common_scripts\utility::array_thread(getentarray("explodable_barrel","targetname"),::explodable_barrel_think);
|
|
common_scripts\utility::array_thread(getentarray("explodable_barrel","script_noteworthy"),::explodable_barrel_think);
|
|
common_scripts\utility::array_thread(getentarray("shuddering_entity","targetname"),::shuddering_entity_think);
|
|
common_scripts\utility::array_thread(getentarray("breakable box","targetname"),::breakable_think);
|
|
common_scripts\utility::array_thread(getentarray("breakable box","script_noteworthy"),::breakable_think);
|
|
common_scripts\utility::array_thread(getentarray("breakable","targetname"),::breakable_think);
|
|
common_scripts\utility::array_thread(getentarray("breakable_vase","targetname"),::breakable_think);
|
|
common_scripts\utility::array_thread(getentarray("oil_spill","targetname"),::oil_spill_think);
|
|
common_scripts\utility::array_thread(getentarray("glass","targetname"),::glass_logic);
|
|
common_scripts\utility::array_thread(getentarray("interactive_tv","targetname"),::tv_logic);
|
|
common_scripts\utility::array_thread(getentarray("destroyable_security_camera","script_noteworthy"),::security_camera_logic);
|
|
}
|
|
|
|
//Function Number: 2
|
|
security_camera_logic()
|
|
{
|
|
self setcandamage(1);
|
|
var_00 = undefined;
|
|
switch(self.model)
|
|
{
|
|
case "com_security_camera":
|
|
var_00 = "com_security_camera_destroyed";
|
|
break;
|
|
}
|
|
|
|
self waittill("damage",var_01,var_02,var_03,var_04,var_05);
|
|
self setmodel(var_00);
|
|
playfxontag(level.breakables_fx["security_camera_explode"],self,"tag_deathfx");
|
|
}
|
|
|
|
//Function Number: 3
|
|
tv_logic()
|
|
{
|
|
self setcandamage(1);
|
|
self.damagemodel = undefined;
|
|
self.offmodel = undefined;
|
|
self.damagemodel = "com_tv2_d";
|
|
self.offmodel = "com_tv2";
|
|
self.onmodel = "com_tv2_testpattern";
|
|
if(issubstr(self.model,"1"))
|
|
{
|
|
self.offmodel = "com_tv1";
|
|
self.onmodel = "com_tv1_testpattern";
|
|
}
|
|
|
|
if(isdefined(self.target))
|
|
{
|
|
if(isdefined(level.disable_interactive_tv_use_triggers))
|
|
{
|
|
var_00 = getent(self.target,"targetname");
|
|
if(isdefined(var_00))
|
|
{
|
|
var_00 delete();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
self.usetrig = getent(self.target,"targetname");
|
|
self.usetrig usetriggerrequirelookat();
|
|
self.usetrig setcursorhint("HINT_NOICON");
|
|
}
|
|
}
|
|
|
|
var_01 = maps\_utility::get_array_of_closest(self.origin,level.var_1DDE,undefined,undefined,64);
|
|
if(var_01.size)
|
|
{
|
|
self.lite = var_01[0];
|
|
level.var_1DDE = common_scripts\utility::array_remove(level.var_1DDE,self.lite);
|
|
self.liteintensity = self.lite getlightintensity();
|
|
}
|
|
|
|
thread tv_damage();
|
|
if(isdefined(self.usetrig))
|
|
{
|
|
thread tv_off();
|
|
}
|
|
}
|
|
|
|
//Function Number: 4
|
|
tv_off()
|
|
{
|
|
self.usetrig endon("death");
|
|
for(;;)
|
|
{
|
|
wait 0.2;
|
|
self.usetrig waittill("trigger");
|
|
self notify("off");
|
|
if(self.model == self.offmodel)
|
|
{
|
|
self setmodel(self.onmodel);
|
|
if(isdefined(self.lite))
|
|
{
|
|
self.lite setlightintensity(self.liteintensity);
|
|
}
|
|
|
|
continue;
|
|
}
|
|
|
|
self setmodel(self.offmodel);
|
|
if(isdefined(self.lite))
|
|
{
|
|
self.lite setlightintensity(0);
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 5
|
|
tv_damage()
|
|
{
|
|
for(;;)
|
|
{
|
|
self waittill("damage",var_00,var_01,var_02,var_03,var_04);
|
|
if(common_scripts\utility::flag("no_ai_tv_damage"))
|
|
{
|
|
if(!isalive(var_01))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(!isplayer(var_01))
|
|
{
|
|
continue;
|
|
}
|
|
}
|
|
|
|
break;
|
|
}
|
|
|
|
if(isdefined(level.tvhook))
|
|
{
|
|
[[ level.tvhook ]]();
|
|
}
|
|
|
|
self notify("off");
|
|
if(isdefined(self.usetrig))
|
|
{
|
|
self.usetrig notify("death");
|
|
}
|
|
|
|
self setmodel(self.damagemodel);
|
|
if(isdefined(self.lite))
|
|
{
|
|
self.lite setlightintensity(0);
|
|
}
|
|
|
|
playfxontag(level.breakables_fx["tv_explode"],self,"tag_fx");
|
|
self playsound("tv_shot_burst");
|
|
if(isdefined(self.usetrig))
|
|
{
|
|
self.usetrig delete();
|
|
}
|
|
}
|
|
|
|
//Function Number: 6
|
|
glass_logic()
|
|
{
|
|
var_00 = undefined;
|
|
var_01 = undefined;
|
|
var_02 = undefined;
|
|
var_03 = 0;
|
|
if(isdefined(self.target))
|
|
{
|
|
var_02 = getent(self.target,"targetname");
|
|
}
|
|
|
|
if(isdefined(self.script_linkto))
|
|
{
|
|
var_04 = common_scripts\utility::get_links();
|
|
var_05 = getent(var_04[0],"script_linkname");
|
|
self linkto(var_05);
|
|
}
|
|
|
|
switch(self.destructible_type)
|
|
{
|
|
case "glass_large":
|
|
break;
|
|
|
|
case "glass_med":
|
|
break;
|
|
|
|
case "glass_small":
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
|
|
if(isdefined(var_02))
|
|
{
|
|
var_03 = 99;
|
|
var_02 linkto(self);
|
|
var_02 hide();
|
|
var_01 = var_02 setcontents(0);
|
|
}
|
|
|
|
if(isdefined(self.script_health))
|
|
{
|
|
var_03 = self.script_health;
|
|
}
|
|
else if(isdefined(var_02))
|
|
{
|
|
var_03 = 99;
|
|
}
|
|
else
|
|
{
|
|
var_03 = 250;
|
|
}
|
|
|
|
self setcandamage(1);
|
|
while(var_03 > 0)
|
|
{
|
|
self waittill("damage",var_06,var_07,var_00,var_08,var_09);
|
|
if(!isdefined(var_00))
|
|
{
|
|
var_00 = (0,0,1);
|
|
}
|
|
|
|
if(!isdefined(var_09))
|
|
{
|
|
var_06 = 100000;
|
|
continue;
|
|
}
|
|
|
|
if(var_09 == "MOD_GRENADE_SPLASH")
|
|
{
|
|
var_06 = var_06 * 1.75;
|
|
continue;
|
|
}
|
|
|
|
if(var_09 == "MOD_IMPACT")
|
|
{
|
|
var_06 = 100000;
|
|
}
|
|
|
|
var_03 = var_03 - var_06;
|
|
}
|
|
|
|
var_0A = var_03 * -1;
|
|
self hide();
|
|
self notsolid();
|
|
if(isdefined(var_02))
|
|
{
|
|
var_02 show();
|
|
var_02 setcandamage(1);
|
|
var_03 = 200 - var_0A;
|
|
var_02 setcontents(var_01);
|
|
while(var_03 > 0)
|
|
{
|
|
var_02 waittill("damage",var_06,var_0B,var_00,var_08,var_09);
|
|
if(!isdefined(var_00))
|
|
{
|
|
var_00 = (0,0,1);
|
|
}
|
|
|
|
if(!isdefined(var_09))
|
|
{
|
|
var_06 = 100000;
|
|
continue;
|
|
}
|
|
|
|
if(var_09 == "MOD_GRENADE_SPLASH")
|
|
{
|
|
var_06 = var_06 * 1.75;
|
|
continue;
|
|
}
|
|
|
|
if(var_09 == "MOD_IMPACT")
|
|
{
|
|
break;
|
|
}
|
|
|
|
var_03 = var_03 - var_06;
|
|
}
|
|
|
|
var_02 delete();
|
|
}
|
|
|
|
glass_play_break_fx(self getorigin(),self.destructible_type,var_00);
|
|
self delete();
|
|
}
|
|
|
|
//Function Number: 7
|
|
glass_play_break_fx(param_00,param_01,param_02)
|
|
{
|
|
thread common_scripts\utility::play_sound_in_space(level._glass_info[param_01]["breaksnd"],param_00);
|
|
playfx(level._glass_info[param_01]["breakfx"],param_00,param_02);
|
|
level notify("glass_shatter");
|
|
}
|
|
|
|
//Function Number: 8
|
|
oil_spill_think()
|
|
{
|
|
self.end = common_scripts\utility::getstruct(self.target,"targetname");
|
|
self.start = common_scripts\utility::getstruct(self.end.target,"targetname");
|
|
self.barrel = getclosestent(self.start.origin,getentarray("explodable_barrel","targetname"));
|
|
if(isdefined(self.barrel))
|
|
{
|
|
self.barrel.oilspill = 1;
|
|
thread oil_spill_burn_after();
|
|
}
|
|
|
|
self.extra = getent(self.target,"targetname");
|
|
self setcandamage(1);
|
|
for(;;)
|
|
{
|
|
self waittill("damage",var_00,var_01,var_02,var_03,var_04);
|
|
if(var_04 == "MOD_MELEE" || var_04 == "MOD_IMPACT")
|
|
{
|
|
continue;
|
|
}
|
|
|
|
self.damageowner = var_01;
|
|
playfx(level.breakables_fx["oilspill"]["spark"],var_03,var_02);
|
|
var_03 = pointonsegmentnearesttopoint(self.start.origin,self.end.origin,var_03);
|
|
thread oil_spill_burn_section(var_03);
|
|
thread oil_spill_burn(var_03,self.start.origin);
|
|
thread oil_spill_burn(var_03,self.end.origin);
|
|
break;
|
|
}
|
|
|
|
if(isdefined(self.barrel))
|
|
{
|
|
self.barrel waittill("exploding");
|
|
}
|
|
|
|
self.extra delete();
|
|
self hide();
|
|
wait 10;
|
|
self delete();
|
|
}
|
|
|
|
//Function Number: 9
|
|
oil_spill_burn_after()
|
|
{
|
|
for(;;)
|
|
{
|
|
self.barrel waittill("damage",var_00,var_01,var_02,var_03,var_04);
|
|
if(var_04 == "MOD_MELEE" || var_04 == "MOD_IMPACT")
|
|
{
|
|
continue;
|
|
}
|
|
|
|
self.damageowner = var_01;
|
|
break;
|
|
}
|
|
|
|
self radiusdamage(self.start.origin,4,10,10,self.damageowner);
|
|
}
|
|
|
|
//Function Number: 10
|
|
oil_spill_burn(param_00,param_01)
|
|
{
|
|
var_02 = vectornormalize(param_01 - param_00);
|
|
var_03 = distance(param_00,param_01);
|
|
var_04 = 8;
|
|
var_05 = var_02 * var_04;
|
|
var_06 = vectortoangles(var_02);
|
|
var_07 = anglestoright(var_06);
|
|
var_08 = getentarray("explodable_barrel","targetname");
|
|
var_09 = 484;
|
|
var_0A = spawn("script_origin",param_00);
|
|
var_0B = 0;
|
|
for(;;)
|
|
{
|
|
var_03 = var_03 - var_04;
|
|
if(var_03 < var_04 * 0.1)
|
|
{
|
|
break;
|
|
}
|
|
|
|
param_00 = param_00 + var_05 + var_07 * randomfloatrange(-6,6);
|
|
thread oil_spill_burn_section(param_00);
|
|
var_0B++;
|
|
if(var_0B == 4)
|
|
{
|
|
badplace_cylinder("",0.5,param_00,64,64);
|
|
var_0B = 0;
|
|
}
|
|
|
|
var_0A.origin = param_00;
|
|
var_0C = [];
|
|
var_08 = common_scripts\utility::array_removeundefined(var_08);
|
|
for(var_0D = 0;var_0D < var_08.size;var_0D++)
|
|
{
|
|
var_0E = anglestoup(var_08[var_0D].angles);
|
|
var_0F = var_08[var_0D].origin + var_0E * 22;
|
|
var_10 = physicstrace(var_0F,var_0F + (0,0,-64));
|
|
if(distancesquared(param_00,var_10) < var_09)
|
|
{
|
|
var_0C[var_0C.size] = var_08[var_0D];
|
|
var_08[var_0D] dodamage(80 + randomfloat(10),param_00);
|
|
}
|
|
}
|
|
|
|
for(var_0D = 0;var_0D < var_0C.size;var_0D++)
|
|
{
|
|
var_08 = common_scripts\utility::array_remove(var_08,var_0C[var_0D]);
|
|
}
|
|
|
|
wait 0.1;
|
|
}
|
|
|
|
if(!isdefined(self.barrel))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(distance(param_00,self.start.origin) < 32)
|
|
{
|
|
self.barrel dodamage(80 + randomfloat(10),param_00);
|
|
}
|
|
}
|
|
|
|
//Function Number: 11
|
|
oil_spill_burn_section(param_00)
|
|
{
|
|
var_01 = 0;
|
|
var_02 = 0;
|
|
playfx(level.breakables_fx["oilspill"]["burn"],param_00);
|
|
}
|
|
|
|
//Function Number: 12
|
|
explodable_barrel_think()
|
|
{
|
|
if(self.classname != "script_model")
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(!isdefined(level.precachemodeltype["com_barrel_benzin"]))
|
|
{
|
|
level.precachemodeltype["com_barrel_benzin"] = 1;
|
|
precachemodel("com_barrel_piece");
|
|
precachemodel("com_barrel_piece2");
|
|
}
|
|
|
|
self endon("exploding");
|
|
breakable_clip();
|
|
xenon_auto_aim();
|
|
self.damagetaken = 0;
|
|
self setcandamage(1);
|
|
for(;;)
|
|
{
|
|
var_00 = undefined;
|
|
var_01 = undefined;
|
|
var_02 = undefined;
|
|
var_03 = undefined;
|
|
var_04 = undefined;
|
|
self waittill("damage",var_00,var_01,var_02,var_03,var_04);
|
|
if(var_04 == "MOD_MELEE" || var_04 == "MOD_IMPACT")
|
|
{
|
|
continue;
|
|
}
|
|
|
|
self.damageowner = var_01;
|
|
if(level.barrelexplodingthisframe)
|
|
{
|
|
wait randomfloat(1);
|
|
}
|
|
|
|
self.damagetaken = self.damagetaken + var_00;
|
|
if(self.damagetaken == var_00)
|
|
{
|
|
thread explodable_barrel_burn();
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 13
|
|
explodable_barrel_burn()
|
|
{
|
|
var_00 = 0;
|
|
var_01 = 0;
|
|
var_02 = anglestoup(self.angles);
|
|
var_03 = anglestoup((0,90,0));
|
|
var_04 = vectordot(var_02,var_03);
|
|
var_05 = (0,0,0);
|
|
var_06 = var_02 * 44;
|
|
if(var_04 < 0.5)
|
|
{
|
|
var_05 = var_02 * 22 - (0,0,30);
|
|
var_06 = var_02 * 22 + (0,0,14);
|
|
}
|
|
|
|
while(self.damagetaken < level.var_1DE1)
|
|
{
|
|
if(!var_01)
|
|
{
|
|
playfx(level.breakables_fx["barrel"]["burn_start"],self.origin + var_05);
|
|
var_01 = 1;
|
|
}
|
|
|
|
if(var_00 > 19)
|
|
{
|
|
var_00 = 0;
|
|
}
|
|
|
|
playfx(level.breakables_fx["barrel"]["burn"],self.origin + var_06);
|
|
if(var_00 == 0)
|
|
{
|
|
self.damagetaken = self.damagetaken + 10 + randomfloat(10);
|
|
badplace_cylinder("",1,self.origin,128,250);
|
|
}
|
|
|
|
var_00++;
|
|
wait 0.05;
|
|
if(!isdefined(self))
|
|
{
|
|
return;
|
|
}
|
|
}
|
|
|
|
self.damagetaken = undefined;
|
|
thread explodable_barrel_explode();
|
|
}
|
|
|
|
//Function Number: 14
|
|
explodable_barrel_explode()
|
|
{
|
|
self notify("exploding");
|
|
self notify("death");
|
|
var_00 = anglestoup(self.angles);
|
|
var_01 = anglestoup((0,90,0));
|
|
var_02 = vectordot(var_00,var_01);
|
|
var_03 = (0,0,0);
|
|
if(var_02 < 0.5)
|
|
{
|
|
var_04 = self.origin + var_00 * 22;
|
|
var_05 = physicstrace(var_04,var_04 + (0,0,-64));
|
|
var_03 = var_05 - self.origin;
|
|
}
|
|
|
|
var_03 = var_03 + (0,0,4);
|
|
level thread common_scripts\utility::play_sound_in_space(level.tv_lite_array,self.origin);
|
|
playfx(level.breakables_fx["barrel"]["explode"],self.origin + var_03);
|
|
physicsexplosionsphere(self.origin + var_03,100,80,1);
|
|
level.barrelexplodingthisframe = 1;
|
|
if(isdefined(self.remove))
|
|
{
|
|
if(common_scripts\utility::issp() && self.remove.spawnflags & 1)
|
|
{
|
|
self.remove connectpaths();
|
|
}
|
|
|
|
self.remove delete();
|
|
}
|
|
|
|
var_06 = 1;
|
|
var_07 = 250;
|
|
var_08 = 250;
|
|
if(isdefined(self.radius))
|
|
{
|
|
var_08 = self.radius;
|
|
}
|
|
|
|
var_09 = undefined;
|
|
if(isdefined(self.damageowner))
|
|
{
|
|
var_09 = self.damageowner;
|
|
if(isplayer(var_09))
|
|
{
|
|
maps\_utility::arcademode_kill(self.origin,"rifle",150);
|
|
}
|
|
|
|
self.damageowner = undefined;
|
|
}
|
|
|
|
level.lastexplodingbarrel["time"] = gettime();
|
|
level.lastexplodingbarrel["origin"] = self.origin + (0,0,30);
|
|
level.lastexplodingbarrel["radius"] = var_08;
|
|
self radiusdamage(self.origin + (0,0,30),var_08,var_07,var_06,var_09);
|
|
if(randomint(2) == 0)
|
|
{
|
|
self setmodel("com_barrel_piece");
|
|
}
|
|
else
|
|
{
|
|
self setmodel("com_barrel_piece2");
|
|
}
|
|
|
|
if(var_02 < 0.5)
|
|
{
|
|
var_04 = self.origin + var_00 * 22;
|
|
var_0A = physicstrace(var_04,var_04 + (0,0,-64));
|
|
self.origin = var_0A;
|
|
self.angles = self.angles + (0,0,90);
|
|
}
|
|
|
|
wait 0.05;
|
|
level.barrelexplodingthisframe = 0;
|
|
}
|
|
|
|
//Function Number: 15
|
|
shuddering_entity_think()
|
|
{
|
|
var_00 = 0;
|
|
if(self.model == "prop_helmet_german_normandy")
|
|
{
|
|
var_00 = 1;
|
|
}
|
|
|
|
self setcandamage(1);
|
|
for(;;)
|
|
{
|
|
self waittill("damage",var_01,var_02,var_03,var_04);
|
|
if(var_00)
|
|
{
|
|
self vibrate(var_03,20,0.6,0.75);
|
|
}
|
|
else
|
|
{
|
|
self vibrate(var_03,0.4,0.4,0.4);
|
|
}
|
|
|
|
self waittill("rotatedone");
|
|
}
|
|
}
|
|
|
|
//Function Number: 16
|
|
tincan_think()
|
|
{
|
|
if(self.classname != "script_model")
|
|
{
|
|
return;
|
|
}
|
|
|
|
self setcandamage(1);
|
|
self waittill("damage",var_00,var_01);
|
|
if(isai(var_01) || isplayer(var_01))
|
|
{
|
|
var_02 = var_01 geteye() - (0,0,randomint(50) + 50);
|
|
}
|
|
else
|
|
{
|
|
var_02 = var_02.origin;
|
|
}
|
|
|
|
var_03 = vectornormalize(self.origin - var_02);
|
|
var_03 = var_03 * 0.5 + randomfloat(1);
|
|
self notify("death");
|
|
playfx(level.breakables_fx["tincan"],self.origin,var_03);
|
|
self delete();
|
|
}
|
|
|
|
//Function Number: 17
|
|
helmet_pop()
|
|
{
|
|
if(self.classname != "script_model")
|
|
{
|
|
return;
|
|
}
|
|
|
|
xenon_auto_aim();
|
|
self setcandamage(1);
|
|
thread helmet_logic();
|
|
}
|
|
|
|
//Function Number: 18
|
|
helmet_logic()
|
|
{
|
|
self waittill("damage",var_00,var_01);
|
|
if(isai(var_01))
|
|
{
|
|
var_02 = var_01 geteye();
|
|
}
|
|
else
|
|
{
|
|
var_02 = var_02.origin;
|
|
}
|
|
|
|
var_03 = vectornormalize(self.origin - var_02);
|
|
if(!isdefined(self.dontremove) && isplayer(var_01))
|
|
{
|
|
thread animscripts/death::func_ED0(var_03);
|
|
return;
|
|
}
|
|
|
|
self notsolid();
|
|
self hide();
|
|
var_04 = spawn("script_model",self.origin + (0,0,5));
|
|
var_04.angles = self.angles;
|
|
var_04 setmodel(self.model);
|
|
var_04 thread animscripts/death::func_ED0(var_03);
|
|
self.dontremove = 0;
|
|
self notify("ok_remove");
|
|
}
|
|
|
|
//Function Number: 19
|
|
allowbreak(param_00)
|
|
{
|
|
if(!isdefined(level.breakingents))
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
if(level.breakingents.size == 0)
|
|
{
|
|
return 0;
|
|
}
|
|
else
|
|
{
|
|
for(var_01 = 0;var_01 < level.breakingents.size;var_01++)
|
|
{
|
|
if(param_00 == level.breakingents[var_01])
|
|
{
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
//Function Number: 20
|
|
breakable_think_triggered(param_00)
|
|
{
|
|
for(;;)
|
|
{
|
|
self waittill("trigger",var_01);
|
|
param_00 notify("damage",100,var_01);
|
|
}
|
|
}
|
|
|
|
//Function Number: 21
|
|
breakable_think()
|
|
{
|
|
if(self.classname != "script_model")
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(!isdefined(self.model))
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_00 = undefined;
|
|
if(self.model == "egypt_prop_vase1" || self.model == "egypt_prop_vase3" || self.model == "egypt_prop_vase4")
|
|
{
|
|
if(!isdefined(level.precachemodeltype["egypt_prop_vase_o"]))
|
|
{
|
|
level.precachemodeltype["egypt_prop_vase_o"] = 1;
|
|
precachemodel("egypt_prop_vase_br2");
|
|
precachemodel("egypt_prop_vase_br5");
|
|
precachemodel("egypt_prop_vase_br7");
|
|
}
|
|
|
|
var_00 = "orange vase";
|
|
breakable_clip();
|
|
xenon_auto_aim();
|
|
}
|
|
else if(self.model == "egypt_prop_vase2" || self.model == "egypt_prop_vase5" || self.model == "egypt_prop_vase6")
|
|
{
|
|
if(!isdefined(level.precachemodeltype["egypt_prop_vase_g"]))
|
|
{
|
|
level.precachemodeltype["egypt_prop_vase_g"] = 1;
|
|
precachemodel("egypt_prop_vase_br1");
|
|
precachemodel("egypt_prop_vase_br3");
|
|
precachemodel("egypt_prop_vase_br4");
|
|
precachemodel("egypt_prop_vase_br6");
|
|
}
|
|
|
|
var_00 = "green vase";
|
|
breakable_clip();
|
|
xenon_auto_aim();
|
|
}
|
|
else if(self.model == "prop_crate_dak1" || self.model == "prop_crate_dak2" || self.model == "prop_crate_dak3" || self.model == "prop_crate_dak4" || self.model == "prop_crate_dak5" || self.model == "prop_crate_dak6" || self.model == "prop_crate_dak7" || self.model == "prop_crate_dak8" || self.model == "prop_crate_dak9")
|
|
{
|
|
if(!isdefined(level.precachemodeltype["prop_crate_dak_shard"]))
|
|
{
|
|
level.precachemodeltype["prop_crate_dak_shard"] = 1;
|
|
precachemodel("prop_crate_dak_shard");
|
|
}
|
|
|
|
var_00 = "wood box";
|
|
breakable_clip();
|
|
xenon_auto_aim();
|
|
}
|
|
else if(self.model == "prop_winebottle_breakable")
|
|
{
|
|
if(!isdefined(level.precachemodeltype["prop_winebottle"]))
|
|
{
|
|
level.precachemodeltype["prop_winebottle"] = 1;
|
|
precachemodel("prop_winebottle_broken_top");
|
|
precachemodel("prop_winebottle_broken_bot");
|
|
}
|
|
|
|
var_00 = "bottle";
|
|
xenon_auto_aim();
|
|
}
|
|
else if(self.model == "prop_diningplate_roundfloral")
|
|
{
|
|
if(!isdefined(level.precachemodeltype["prop_diningplate_brokenfloral"]))
|
|
{
|
|
level.precachemodeltype["prop_diningplate_brokenfloral"] = 1;
|
|
precachemodel("prop_diningplate_brokenfloral1");
|
|
precachemodel("prop_diningplate_brokenfloral2");
|
|
precachemodel("prop_diningplate_brokenfloral3");
|
|
precachemodel("prop_diningplate_brokenfloral4");
|
|
}
|
|
|
|
var_00 = "plate";
|
|
self.plate = "round_floral";
|
|
xenon_auto_aim();
|
|
}
|
|
else if(self.model == "prop_diningplate_roundplain")
|
|
{
|
|
if(!isdefined(level.precachemodeltype["prop_diningplate_brokenplain"]))
|
|
{
|
|
level.precachemodeltype["prop_diningplate_brokenplain"] = 1;
|
|
precachemodel("prop_diningplate_brokenplain1");
|
|
precachemodel("prop_diningplate_brokenplain2");
|
|
precachemodel("prop_diningplate_brokenplain3");
|
|
precachemodel("prop_diningplate_brokenplain4");
|
|
}
|
|
|
|
var_00 = "plate";
|
|
self.plate = "round_plain";
|
|
xenon_auto_aim();
|
|
}
|
|
else if(self.model == "prop_diningplate_roundstack")
|
|
{
|
|
if(!isdefined(level.precachemodeltype["prop_diningplate_brokenplain"]))
|
|
{
|
|
level.precachemodeltype["prop_diningplate_brokenplain"] = 1;
|
|
precachemodel("prop_diningplate_brokenplain1");
|
|
precachemodel("prop_diningplate_brokenplain2");
|
|
precachemodel("prop_diningplate_brokenplain3");
|
|
precachemodel("prop_diningplate_brokenplain4");
|
|
}
|
|
|
|
if(!isdefined(level.precachemodeltype["prop_diningplate_brokenfloral"]))
|
|
{
|
|
level.precachemodeltype["prop_diningplate_brokenfloral"] = 1;
|
|
precachemodel("prop_diningplate_brokenfloral1");
|
|
precachemodel("prop_diningplate_brokenfloral2");
|
|
precachemodel("prop_diningplate_brokenfloral3");
|
|
precachemodel("prop_diningplate_brokenfloral4");
|
|
}
|
|
|
|
var_00 = "plate";
|
|
self.plate = "round_stack";
|
|
xenon_auto_aim();
|
|
}
|
|
else if(self.model == "prop_diningplate_ovalfloral")
|
|
{
|
|
if(!isdefined(level.precachemodeltype["prop_diningplate_brokenfloral"]))
|
|
{
|
|
level.precachemodeltype["prop_diningplate_brokenfloral"] = 1;
|
|
precachemodel("prop_diningplate_brokenfloral1");
|
|
precachemodel("prop_diningplate_brokenfloral2");
|
|
precachemodel("prop_diningplate_brokenfloral3");
|
|
precachemodel("prop_diningplate_brokenfloral4");
|
|
}
|
|
|
|
var_00 = "plate";
|
|
self.plate = "oval_floral";
|
|
xenon_auto_aim();
|
|
}
|
|
else if(self.model == "prop_diningplate_ovalplain")
|
|
{
|
|
if(!isdefined(level.precachemodeltype["prop_diningplate_brokenplain"]))
|
|
{
|
|
level.precachemodeltype["prop_diningplate_brokenplain"] = 1;
|
|
precachemodel("prop_diningplate_brokenplain1");
|
|
precachemodel("prop_diningplate_brokenplain2");
|
|
precachemodel("prop_diningplate_brokenplain3");
|
|
precachemodel("prop_diningplate_brokenplain4");
|
|
}
|
|
|
|
var_00 = "plate";
|
|
self.plate = "oval_plain";
|
|
xenon_auto_aim();
|
|
}
|
|
else if(self.model == "prop_diningplate_ovalstack")
|
|
{
|
|
if(!isdefined(level.precachemodeltype["prop_diningplate_brokenplain"]))
|
|
{
|
|
level.precachemodeltype["prop_diningplate_brokenplain"] = 1;
|
|
precachemodel("prop_diningplate_brokenplain1");
|
|
precachemodel("prop_diningplate_brokenplain2");
|
|
precachemodel("prop_diningplate_brokenplain3");
|
|
precachemodel("prop_diningplate_brokenplain4");
|
|
}
|
|
|
|
if(!isdefined(level.precachemodeltype["prop_diningplate_brokenfloral"]))
|
|
{
|
|
level.precachemodeltype["prop_diningplate_brokenfloral"] = 1;
|
|
precachemodel("prop_diningplate_brokenfloral1");
|
|
precachemodel("prop_diningplate_brokenfloral2");
|
|
precachemodel("prop_diningplate_brokenfloral3");
|
|
precachemodel("prop_diningplate_brokenfloral4");
|
|
}
|
|
|
|
var_00 = "plate";
|
|
self.plate = "oval_stack";
|
|
xenon_auto_aim();
|
|
}
|
|
|
|
if(!isdefined(var_00))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(isdefined(self.target))
|
|
{
|
|
var_01 = getent(self.target,"targetname");
|
|
if(isdefined(var_01) && var_01.classname == "trigger_multiple")
|
|
{
|
|
var_01 thread breakable_think_triggered(self);
|
|
}
|
|
}
|
|
|
|
self setcandamage(1);
|
|
thread breakable_logic(var_00);
|
|
}
|
|
|
|
//Function Number: 22
|
|
breakable_logic(param_00)
|
|
{
|
|
var_01 = undefined;
|
|
for(;;)
|
|
{
|
|
self waittill("damage",var_02,var_01);
|
|
if(isdefined(var_01) && var_01.code_classname == "script_vehicle")
|
|
{
|
|
var_01 joltbody(self.origin + (0,0,-90),0.2);
|
|
}
|
|
|
|
if(param_00 == "wood box")
|
|
{
|
|
if(!allowbreak(var_01))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(!isdefined(level.flags) || !isdefined(level.flags["Breakable Boxes"]))
|
|
{
|
|
break;
|
|
}
|
|
|
|
if(isdefined(level.flags["Breakable Boxes"]) && level.flags["Breakable Boxes"] == 1)
|
|
{
|
|
break;
|
|
}
|
|
|
|
continue;
|
|
}
|
|
|
|
break;
|
|
}
|
|
|
|
self notify("death");
|
|
var_03 = undefined;
|
|
var_04 = undefined;
|
|
var_05 = 0;
|
|
switch(param_00)
|
|
{
|
|
case "green vase":
|
|
case "orange vase":
|
|
var_03 = "bullet_large_vase";
|
|
var_04 = level.breakables_fx["vase"];
|
|
break;
|
|
|
|
case "wood box":
|
|
if(isdefined(level.crateimpactsound))
|
|
{
|
|
var_03 = level.crateimpactsound;
|
|
}
|
|
else
|
|
{
|
|
var_03 = "bullet_large_vase";
|
|
}
|
|
|
|
var_04 = level.breakables_fx["box"][randomint(level.breakables_fx["box"].size)];
|
|
var_05 = 1;
|
|
break;
|
|
|
|
case "bottle":
|
|
var_03 = "bullet_small_bottle";
|
|
var_04 = level.breakables_fx["bottle"];
|
|
break;
|
|
|
|
case "plate":
|
|
var_03 = "bullet_small_plate";
|
|
break;
|
|
}
|
|
|
|
thread common_scripts\utility::play_sound_in_space(var_03,self.origin);
|
|
thread make_broken_peices(self,param_00);
|
|
if(isdefined(var_04))
|
|
{
|
|
playfx(var_04,self.origin);
|
|
}
|
|
|
|
if(var_05)
|
|
{
|
|
var_06 = getentarray("breakable","targetname");
|
|
for(var_07 = 0;var_07 < var_06.size;var_07++)
|
|
{
|
|
var_08 = var_06[var_07];
|
|
var_09 = abs(self.origin[0] - var_08.origin[0]);
|
|
var_0A = abs(self.origin[1] - var_08.origin[1]);
|
|
if(var_09 <= 20 && var_0A <= 20)
|
|
{
|
|
var_0B = self.origin[2] - var_08.origin[2];
|
|
if(var_0B <= 0)
|
|
{
|
|
var_08 notify("damage",var_02,var_01);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if(isdefined(self.remove))
|
|
{
|
|
self.remove connectpaths();
|
|
self.remove delete();
|
|
}
|
|
|
|
if(!isdefined(self.dontremove))
|
|
{
|
|
self delete();
|
|
}
|
|
else
|
|
{
|
|
self.dontremove = 0;
|
|
}
|
|
|
|
self notify("ok_remove");
|
|
}
|
|
|
|
//Function Number: 23
|
|
xenon_auto_aim()
|
|
{
|
|
if(isdefined(level.console_auto_aim_2nd) && level.console_auto_aim_2nd.size > 0)
|
|
{
|
|
self.autoaim = getclosestaccurantent(self.origin,level.console_auto_aim_2nd);
|
|
}
|
|
|
|
if(isdefined(self.autoaim))
|
|
{
|
|
level.console_auto_aim_2nd = common_scripts\utility::array_remove(level.console_auto_aim_2nd,self.autoaim);
|
|
thread xenon_remove_auto_aim();
|
|
}
|
|
}
|
|
|
|
//Function Number: 24
|
|
xenon_auto_aim_stop_logic()
|
|
{
|
|
self notify("entered_xenon_auto_aim_stop_logic");
|
|
self endon("entered_xenon_auto_aim_stop_logic");
|
|
self.autoaim waittill("xenon_auto_aim_stop_logic");
|
|
self.dontremove = undefined;
|
|
}
|
|
|
|
//Function Number: 25
|
|
xenon_remove_auto_aim(param_00)
|
|
{
|
|
thread xenon_auto_aim_stop_logic();
|
|
self endon("xenon_auto_aim_stop_logic");
|
|
self.autoaim endon("xenon_auto_aim_stop_logic");
|
|
self notify("xenon_remove_auto_aim");
|
|
self.autoaim thread xenon_enable_auto_aim(param_00);
|
|
self.dontremove = 1;
|
|
self waittill("damage",var_01,var_02);
|
|
self.autoaim disableaimassist();
|
|
self.autoaim delete();
|
|
if(self.dontremove)
|
|
{
|
|
self waittill("ok_remove");
|
|
}
|
|
|
|
self delete();
|
|
}
|
|
|
|
//Function Number: 26
|
|
xenon_enable_auto_aim(param_00)
|
|
{
|
|
self endon("xenon_auto_aim_stop_logic");
|
|
self endon("death");
|
|
if(!isdefined(param_00))
|
|
{
|
|
param_00 = 1;
|
|
}
|
|
|
|
if(isdefined(self.script_noteworthy) && param_00)
|
|
{
|
|
var_01 = "enable_xenon_autoaim_" + self.script_noteworthy;
|
|
level waittill(var_01);
|
|
}
|
|
|
|
self.wait_message = 0;
|
|
if(isdefined(self.recreate) && self.recreate == 1)
|
|
{
|
|
self waittill("recreate");
|
|
}
|
|
|
|
self enableaimassist();
|
|
}
|
|
|
|
//Function Number: 27
|
|
breakable_clip()
|
|
{
|
|
if(isdefined(self.target))
|
|
{
|
|
var_00 = getent(self.target,"targetname");
|
|
if(var_00.classname == "script_brushmodel")
|
|
{
|
|
self.remove = var_00;
|
|
return;
|
|
}
|
|
}
|
|
|
|
if(isdefined(level.breakables_clip) && level.breakables_clip.size > 0)
|
|
{
|
|
self.remove = getclosestent(self.origin,level.breakables_clip);
|
|
}
|
|
|
|
if(isdefined(self.remove))
|
|
{
|
|
level.breakables_clip = common_scripts\utility::array_remove(level.breakables_clip,self.remove);
|
|
}
|
|
}
|
|
|
|
//Function Number: 28
|
|
make_broken_peices(param_00,param_01)
|
|
{
|
|
var_02 = anglestoright(param_00.angles);
|
|
var_03 = anglestoforward(param_00.angles);
|
|
var_04 = anglestoup(param_00.angles);
|
|
var_05 = [];
|
|
switch(param_01)
|
|
{
|
|
case "orange vase":
|
|
break;
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,3,2,0,param_01,(0,0,0),"egypt_prop_vase_br5")
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,12,10,27,param_01,(0,180,0),"egypt_prop_vase_br7")
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,13,-6,28,param_01,(0,245.1,0),"egypt_prop_vase_br7")
|
|
var_7B[var_05.size]
|
|
addpiece(var_02,var_03,var_04,-7,0,22,param_00,(0,0,0),"egypt_prop_vase_br2")
|
|
break;
|
|
|
|
case "green vase":
|
|
break;
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,3,1,0,param_01,(0,0,0),"egypt_prop_vase_br4")
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,6,13,29,param_01,(0,153.5,0),"egypt_prop_vase_br6")
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,12,1,31,param_01,(0,348.5,0),"egypt_prop_vase_br3")
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,-6,-1,26,param_01,(0,0,0),"egypt_prop_vase_br1")
|
|
break;
|
|
|
|
case "wood box":
|
|
break;
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,-10,10,5,param_01,(180,270,0),"prop_crate_dak_shard")
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,-10,-10,5,param_01,(180,180,0),"prop_crate_dak_shard")
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,10,-10,5,param_01,(180,90,0),"prop_crate_dak_shard")
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,10,10,5,param_01,(180,0,0),"prop_crate_dak_shard")
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,-10,-10,25,param_01,(0,270,0),"prop_crate_dak_shard")
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,10,-10,25,param_01,(0,180,0),"prop_crate_dak_shard")
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,10,10,25,param_01,(0,90,0),"prop_crate_dak_shard")
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,-10,10,25,param_01,(0,0,0),"prop_crate_dak_shard")
|
|
break;
|
|
|
|
case "bottle":
|
|
var_7B[var_7B.size - 1].type = "bottle_top";
|
|
var_7B[var_7B.size - 1].type = "bottle_bot";
|
|
break;
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,0,0,0,param_01,(0,0,0),"prop_winebottle_broken_bot")
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,0,0,10,param_01,(0,0,0),"prop_winebottle_broken_top")
|
|
break;
|
|
|
|
case "plate":
|
|
switch(param_01.plate)
|
|
{
|
|
case "round_floral":
|
|
var_7B[var_7B.size - 1].type = "plate";
|
|
var_7B[var_7B.size - 1].type = "plate";
|
|
var_7B[var_7B.size - 1].type = "plate";
|
|
var_7B[var_7B.size - 1].type = "plate";
|
|
break;
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,-4,2,0.5,param_01,(0,146.8,0),"prop_diningplate_brokenfloral4")
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,1,2,0.5,param_01,(0,150.2,0),"prop_diningplate_brokenfloral3")
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,3,-2,0.5,param_01,(0,149.8,0),"prop_diningplate_brokenfloral2")
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,-3,-4,0.5,param_01,(0,150,0),"prop_diningplate_brokenfloral1")
|
|
break;
|
|
|
|
case "round_plain":
|
|
var_7B[var_7B.size - 1].type = "plate";
|
|
var_7B[var_7B.size - 1].type = "plate";
|
|
var_7B[var_7B.size - 1].type = "plate";
|
|
var_7B[var_7B.size - 1].type = "plate";
|
|
break;
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,-4,2,0.5,param_01,(0,146.8,0),"prop_diningplate_brokenplain4")
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,1,2,0.5,param_01,(0,150.2,0),"prop_diningplate_brokenplain3")
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,3,-2,0.5,param_01,(0,149.8,0),"prop_diningplate_brokenplain2")
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,-3,-4,0.5,param_01,(0,150,0),"prop_diningplate_brokenplain1")
|
|
break;
|
|
|
|
case "round_stack":
|
|
var_7B[var_7B.size - 1].type = "plate";
|
|
var_7B[var_7B.size - 1].type = "plate";
|
|
var_7B[var_7B.size - 1].type = "plate";
|
|
var_7B[var_7B.size - 1].type = "plate";
|
|
var_7B[var_7B.size - 1].type = "plate";
|
|
var_7B[var_7B.size - 1].type = "plate";
|
|
var_7B[var_7B.size - 1].type = "plate";
|
|
var_7B[var_7B.size - 1].type = "plate";
|
|
var_7B[var_7B.size - 1].type = "plate";
|
|
var_7B[var_7B.size - 1].type = "plate";
|
|
var_7B[var_7B.size - 1].type = "plate";
|
|
var_7B[var_7B.size - 1].type = "plate";
|
|
break;
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,-4,2,4.5,param_01,(0,146.8,0),"prop_diningplate_brokenfloral4")
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,1,2,4.5,param_01,(0,150.2,0),"prop_diningplate_brokenfloral3")
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,3,-2,4.5,param_01,(0,149.8,0),"prop_diningplate_brokenfloral2")
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,-3,-4,4.5,param_01,(0,150,0),"prop_diningplate_brokenfloral1")
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,2,4,2.5,param_01,(0,56.8,0),"prop_diningplate_brokenplain4")
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,2,-1,2.5,param_01,(0,60.2,0),"prop_diningplate_brokenplain3")
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,-1,-3,2.5,param_01,(0,59.8,0),"prop_diningplate_brokenplain2")
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,-4,3,2.5,param_01,(0,60,0),"prop_diningplate_brokenplain1")
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,-4,2,0.5,param_01,(0,146.8,0),"prop_diningplate_brokenfloral4")
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,1,2,0.5,param_01,(0,150.2,0),"prop_diningplate_brokenfloral3")
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,3,-2,0.5,param_01,(0,149.8,0),"prop_diningplate_brokenfloral2")
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,-3,-4,0.5,param_01,(0,150,0),"prop_diningplate_brokenfloral1")
|
|
break;
|
|
|
|
case "oval_floral":
|
|
var_7B[var_7B.size - 1].type = "plate";
|
|
var_7B[var_7B.size - 1].type = "plate";
|
|
var_7B[var_7B.size - 1].type = "plate";
|
|
var_7B[var_7B.size - 1].type = "plate";
|
|
var_7B[var_7B.size - 1].type = "plate";
|
|
break;
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,-3,-3,0.5,param_01,(0,246.7,0),"prop_diningplate_brokenfloral4")
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,-2,5,0.5,param_01,(0,102.3,0),"prop_diningplate_brokenfloral4")
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,4,2,0.5,param_01,(0,150.2,0),"prop_diningplate_brokenfloral3")
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,-6,1,0.5,param_01,(0,352.2,0),"prop_diningplate_brokenfloral2")
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,4,-4,0.5,param_01,(0,205.9,0),"prop_diningplate_brokenfloral1")
|
|
break;
|
|
|
|
case "oval_plain":
|
|
var_7B[var_7B.size - 1].type = "plate";
|
|
var_7B[var_7B.size - 1].type = "plate";
|
|
var_7B[var_7B.size - 1].type = "plate";
|
|
var_7B[var_7B.size - 1].type = "plate";
|
|
var_7B[var_7B.size - 1].type = "plate";
|
|
break;
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,-3,-3,0.5,param_01,(0,246.7,0),"prop_diningplate_brokenplain4")
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,-2,5,0.5,param_01,(0,102.3,0),"prop_diningplate_brokenplain4")
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,4,2,0.5,param_01,(0,150.2,0),"prop_diningplate_brokenplain3")
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,-6,1,0.5,param_01,(0,352.2,0),"prop_diningplate_brokenplain2")
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,4,-4,0.5,param_01,(0,205.9,0),"prop_diningplate_brokenplain1")
|
|
break;
|
|
|
|
case "oval_stack":
|
|
var_7B[var_7B.size - 1].type = "plate";
|
|
var_7B[var_7B.size - 1].type = "plate";
|
|
var_7B[var_7B.size - 1].type = "plate";
|
|
var_7B[var_7B.size - 1].type = "plate";
|
|
var_7B[var_7B.size - 1].type = "plate";
|
|
var_7B[var_7B.size - 1].type = "plate";
|
|
var_7B[var_7B.size - 1].type = "plate";
|
|
var_7B[var_7B.size - 1].type = "plate";
|
|
var_7B[var_7B.size - 1].type = "plate";
|
|
var_7B[var_7B.size - 1].type = "plate";
|
|
break;
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,3,4,2.5,param_01,(0,66.7,0),"prop_diningplate_brokenplain4")
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,2,-4,2.5,param_01,(0,282.3,0),"prop_diningplate_brokenplain4")
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,-4,-1,2.5,param_01,(0,330.2,0),"prop_diningplate_brokenplain3")
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,6,0,2.5,param_01,(0,172.2,0),"prop_diningplate_brokenplain2")
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,-4,5,2.5,param_01,(0,25.9,0),"prop_diningplate_brokenplain1")
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,-3,-3,0.5,param_01,(0,246.7,0),"prop_diningplate_brokenfloral4")
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,-2,5,0.5,param_01,(0,102.3,0),"prop_diningplate_brokenfloral4")
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,4,2,0.5,param_01,(0,150.2,0),"prop_diningplate_brokenfloral3")
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,-6,1,0.5,param_01,(0,352.2,0),"prop_diningplate_brokenfloral2")
|
|
var_7B[var_7B.size]
|
|
addpiece(var_03,var_04,var_05,4,-4,0.5,param_01,(0,205.9,0),"prop_diningplate_brokenfloral1")
|
|
break;
|
|
}
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
|
|
common_scripts\utility::array_thread(var_7B,::pieces_move,param_01.origin);
|
|
if(isdefined(level.var_1DE0[var_02]) && level.var_1DE0[var_02] == 1)
|
|
{
|
|
var_06 = var_7B[0].origin[2];
|
|
for(var_07 = 0;var_07 < var_7B.size;var_07++)
|
|
{
|
|
if(var_06 > var_7B[var_07].origin[2])
|
|
{
|
|
var_06 = var_7B[var_07].origin[2];
|
|
}
|
|
}
|
|
|
|
common_scripts\utility::array_thread(var_7B,::pieces_collision,var_06);
|
|
return;
|
|
}
|
|
|
|
wait 2;
|
|
for(var_07 = 0;var_07 < var_7B.size;var_07++)
|
|
{
|
|
if(isdefined(var_7B[var_07]))
|
|
{
|
|
var_7B[var_07] delete();
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 29
|
|
list_add(param_00)
|
|
{
|
|
if(isdefined(level._breakable_utility_modelarray[level._breakable_utility_modelindex]))
|
|
{
|
|
level._breakable_utility_modelarray[level._breakable_utility_modelindex] delete();
|
|
}
|
|
|
|
level._breakable_utility_modelarray[level._breakable_utility_modelindex] = param_00;
|
|
level._breakable_utility_modelindex++;
|
|
if(!level._breakable_utility_modelindex < level._breakable_utility_maxnum)
|
|
{
|
|
level._breakable_utility_modelindex = 0;
|
|
}
|
|
}
|
|
|
|
//Function Number: 30
|
|
pieces_move(param_00)
|
|
{
|
|
self endon("do not kill");
|
|
if(isdefined(self.type) && self.type == "bottle_bot")
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_01 = spawn("script_origin",self.origin);
|
|
self linkto(var_01);
|
|
var_02 = self.origin + (randomfloat(10) - 5,randomfloat(10) - 5,randomfloat(10) + 5);
|
|
var_03 = undefined;
|
|
if(isdefined(self.type) && self.type == "bottle_top")
|
|
{
|
|
var_03 = (randomfloat(40) - 20,randomfloat(40) - 20,70 + randomfloat(15));
|
|
var_04 = 1;
|
|
var_05 = 1;
|
|
var_06 = 1;
|
|
if(randomint(100) > 50)
|
|
{
|
|
var_04 = -1;
|
|
}
|
|
|
|
if(randomint(100) > 50)
|
|
{
|
|
var_05 = -1;
|
|
}
|
|
|
|
if(randomint(100) > 50)
|
|
{
|
|
var_06 = -1;
|
|
}
|
|
|
|
var_01 rotatevelocity((250 * var_04,250 * var_05,randomfloat(100) * var_06),2,0,0.5);
|
|
}
|
|
else if(isdefined(self.type) && self.type == "plate")
|
|
{
|
|
var_03 = vectornormalize(var_02 - param_00);
|
|
var_03 = var_03 * 125 + randomfloat(25);
|
|
if(randomint(100) > 50)
|
|
{
|
|
var_01 rotateroll(800 + randomfloat(4000) * -1,5,0,0);
|
|
}
|
|
else
|
|
{
|
|
var_01 rotateroll(800 + randomfloat(4000),5,0,0);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
var_03 = vectornormalize(var_02 - param_00);
|
|
var_03 = var_03 * 60 + randomfloat(50);
|
|
if(randomint(100) > 50)
|
|
{
|
|
var_01 rotateroll(800 + randomfloat(1000) * -1,5,0,0);
|
|
}
|
|
else
|
|
{
|
|
var_01 rotateroll(800 + randomfloat(1000),5,0,0);
|
|
}
|
|
}
|
|
|
|
var_01 movegravity(var_03,5);
|
|
wait 5;
|
|
if(isdefined(self))
|
|
{
|
|
self unlink();
|
|
}
|
|
|
|
var_01 delete();
|
|
}
|
|
|
|
//Function Number: 31
|
|
pieces_collision(param_00)
|
|
{
|
|
self endon("death");
|
|
wait 0.1;
|
|
var_01 = bullettrace(self.origin,self.origin - (0,0,50000),0,undefined);
|
|
var_02 = var_01["position"];
|
|
while(self.origin[2] > var_02[2])
|
|
{
|
|
wait 0.05;
|
|
}
|
|
|
|
self unlink();
|
|
self.origin = (self.origin[0],self.origin[1],var_02[2]);
|
|
self notify("do not kill");
|
|
self unlink();
|
|
}
|
|
|
|
//Function Number: 32
|
|
addpiece(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08)
|
|
{
|
|
var_09 = 1;
|
|
var_0A = param_00;
|
|
var_0B = param_01;
|
|
var_0C = param_02;
|
|
var_0A = var_0A * param_04 * var_09;
|
|
var_0B = var_0B * param_03 * var_09;
|
|
var_0C = var_0C * param_05 * var_09;
|
|
var_0D = param_06.origin + var_0A + var_0B + var_0C;
|
|
var_0E = spawn("script_model",var_0D);
|
|
var_0E setmodel(param_08);
|
|
var_0E.modelscale = var_09;
|
|
var_0E.angles = param_06.angles + param_07;
|
|
list_add(var_0E);
|
|
return var_0E;
|
|
}
|
|
|
|
//Function Number: 33
|
|
getfurthestent(param_00,param_01)
|
|
{
|
|
if(param_01.size < 1)
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_02 = distance(param_01[0] getorigin(),param_00);
|
|
var_03 = param_01[0];
|
|
for(var_04 = 0;var_04 < param_01.size;var_04++)
|
|
{
|
|
var_05 = distance(param_01[var_04] getorigin(),param_00);
|
|
if(var_05 < var_02)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_02 = var_05;
|
|
var_03 = param_01[var_04];
|
|
}
|
|
|
|
return var_03;
|
|
}
|
|
|
|
//Function Number: 34
|
|
getclosestent(param_00,param_01)
|
|
{
|
|
if(param_01.size < 1)
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_02 = 256;
|
|
var_03 = undefined;
|
|
for(var_04 = 0;var_04 < param_01.size;var_04++)
|
|
{
|
|
var_05 = distance(param_01[var_04] getorigin(),param_00);
|
|
if(var_05 >= var_02)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_02 = var_05;
|
|
var_03 = param_01[var_04];
|
|
}
|
|
|
|
return var_03;
|
|
}
|
|
|
|
//Function Number: 35
|
|
getclosestaccurantent(param_00,param_01)
|
|
{
|
|
if(param_01.size < 1)
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_02 = 8;
|
|
var_03 = undefined;
|
|
for(var_04 = 0;var_04 < param_01.size;var_04++)
|
|
{
|
|
var_05 = distance(param_01[var_04] getorigin(),param_00);
|
|
if(var_05 >= var_02)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_02 = var_05;
|
|
var_03 = param_01[var_04];
|
|
}
|
|
|
|
return var_03;
|
|
}
|
|
|
|
//Function Number: 36
|
|
getclosestaiment(param_00,param_01)
|
|
{
|
|
if(param_01.size < 1)
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_02 = 1000000;
|
|
var_03 = undefined;
|
|
for(var_04 = 0;var_04 < param_01.size;var_04++)
|
|
{
|
|
var_05 = distance(param_01[var_04] getorigin(),param_00);
|
|
if(var_05 >= var_02)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_02 = var_05;
|
|
var_03 = param_01[var_04];
|
|
}
|
|
|
|
return var_03;
|
|
} |