Code: Select all
buildingExplodes()
{
maps\demolition_fx::createWallShredExploders();
wait (2.0);
demoStart = getentarray ("demo_start","targetname");
demoBack = getentarray ("demo_back","targetname");
demo1 = getent ("demo_1","targetname");
demo2 = getent ("demo_2","targetname");
demo3 = getent ("demo_3","targetname");
demo4 = getent ("demo_4","targetname");
demo5 = getent ("demo_5","targetname");
demo_wall = getent ("demo_wall","targetname");
rubble = getent ("demo_base_rubble","targetname");
demoBase = getent ("demo_base","targetname");
demoBase2 = getent ("demo_base2","targetname");
demoBaseChunk = getent ("demo_base_chunk","targetname");
level.eq_org = (7088, 754, 384);
earthquake(0.2, 5, level.eq_org, 5000);
if (level.showExploder)
exploder(20);
level notify ("stopGermanPlanning"); // stops german planning sound fx
getent ("explosion_sound","targetname") playsound ("demolition_demoexplosion");
ai = getaiarray();
trigger = getent("demolition_death_trigger","targetname");
for (i=0;i<ai.size;i++)
{
if (ai[i] istouching (trigger))
ai[i] dodamage(ai[i].health,(0,0,0));
}
if (level.player istouching (trigger))
level.player dodamage (level.player.health, (0,0,0));
if (level.showExploder)
exploder(1);
quickQuake();
if (level.showExploder)
exploder(2);
quickQuake();
// demoBase hide();
if (level.showExploder)
exploder(3);
quickQuake();
wait (0.5);
// demoStart hide();
if (level.showExploder)
exploder(21);
quickQuake();
wait .25;
earthquake(0.35, 14, level.eq_org, 5000);
ai = getaiarray("axis");
for (i=0;i<ai.size;i++)
ai[i] dodamage(ai[i].health +5, (0,0,0));
maps\_spawner::kill_spawnerNum(1);
getent ("death_point","targetname") thread explosionDamage();
demo1 thread moveRotate(-10, 0);
thread chunkSpawnStart(level.build_brick[10], "brick_spawn_short", demo1, 10, (-30,270,0), 0.15);
demo1 show();
demo2 show();
demo3 show();
demo4 show();
demo5 show();
for (i=0;i<demoStart.size;i++)
demoStart[i] delete();
array_thread (demoBack, ::shower);
demoBase show();
demoBase solid();
demoBaseChunk show();
// demo_wall show();
exploder(19);
array_thread(getentarray("building_glow","script_noteworthy"), ::deleter);
array_thread(getentarray("demo_start_model","targetname"), ::deleter);
level notify ("stop fx" + "lantern_stop");
wait (0.45);
wait (0.25);
/*
if (level.showExploder)
exploder(4);
*/
wait .25;
if (level.showExploder)
exploder(22);
demo2 thread moveRotate(-15, -5);
offsetTimer = 0.3;
thread chunkSpawnStart(level.build_brick[20], "brick_spawn_short", demo2, 2.4, (-30,285,0), 0.35);
thread chunkSpawnStart(level.build_brick[25], "brick_spawn_short", demo2, 1, (-30,285,0), 0.35);
wait (offsetTimer);
chunkSetFX(level.build_brick[20], "brick_spawn_long");
chunkSetFX(level.build_brick[25], "brick_spawn");
// thread chunkSpawnStart(level.build_brick[20], "brick_spawn_long", demo2, 2-offsetTimer, (-30,270,0), 0.15);
// thread chunkSpawnStart(level.build_brick[25], "brick_spawn", demo2, 1-offsetTimer, (-30,270,0), 0.15);
wait (0.65 - offsetTimer);
/*
if (level.showExploder)
exploder(5);
*/
rubble show();
rubble solid();
rubble moveto (rubble.origin + (0,0,level.movelength), 6, 2, 4);
wait .25;
wait (0.65);
if (level.showExploder)
exploder(23); // 3rd bricks
demo3 thread moveRotate(-20, -10);
thread chunkSpawnStart(level.build_brick[30], "brick_spawn_short", demo3, 2, (-30,270,0), 0.25);
wait .24;
chunkSetFX(level.build_brick[30], "brick_spawn");
/*
if (level.showExploder)
exploder(6);
*/
if (level.showExploder)
exploder(24);
demo4 thread moveRotate(-10, -40);
// thread chunkSpawnStart(level.build_brick[40], demo4, 1.5, (-30,350,0));
thread chunkSpawnStart(level.build_brick[40], "brick_spawn", demo4, 2, (-30,340,0), 0.25);
wait (0.65);
array_thread (demoBack, ::deleter);
demoBase2 show();
demoBase2 solid();
demo5 thread moveRotate(-10, 0); // -10 -10
demo_wall delete();
/*
// demo5 thread moveRotate();
demo5a thread moveRotateFall(7, 1, -4000);
wait (0.15);
demo5b thread moveRotateFall(6, -1, 2000);
wait (0.35);
demo5c thread moveRotateFall(5, 1, -2000);
wait (0.35);
demo5d thread moveRotateFall(4, 1, -2000);
wait (0.35);
demo5e thread moveRotateFall(3, 1, -2000);
wait (0.35);
demo5f thread moveRotateFall(2, 1, -2000);
wait (0.35);
demo5g thread moveRotateFall(1, 1, -2000);
*/
flag_set ("explosion_done");
if (getcvar("start") != "boom")
flag_wait("chunk_falls");
else
wait (15);
demoBaseChunk playsound ("demolition_brick_crumble");
demoBaseChunk moveto (demoBaseChunk.origin + (0,0,-3000), 4, 1);
demoBaseChunk rotatevelocity((-1500,0,0), 6, 4);
wait (1.0);
demoBaseChunk playsound ("demolition_brick_hitsground");
}