sQueenHead1
0
-1
-15
0
<undefined>
<undefined>
1
603
7
0
0
-1
2
self
0
0
1
//starthealth = 600 + global.mtanks * 10;
starthealth = global.mod_queenHstart + (global.mtanks * 10);
//starthealthcorridors = 200 + global.mtanks * 5;
starthealthcorridors = global.mod_queenHcorridors + (global.mtanks * 5);
//starthealthbigroom = 400 + global.mtanks * 10;
starthealthbigroom = global.mod_queenHbigroom + (global.mtanks * 10);
//starthealthlast = 300;
starthealthlast = global.mod_queenHlast;
// DEBUG SECTION
/*starthealth = 1;
starthealthcorridors = 1;
starthealthbigroom = 1;
starthealthlast = 1;*/
// END DEBUG SECTION
myhealth = starthealth;
flashing = 0;
shaking = 0;
stunned = 0;
fxtimer = 0;
canbehit = 1;
glowfx = 0;
glowalpha = 0;
jawglowalpha = 0;
hpush = 7;
vpush = -3;
//damage = 90 + global.etanks * 10;
damage = global.mod_queenDhead + (global.etanks * 10);
push = 0;
canhit = 1;
surf = surface_create(128, 256);
surf_x = 40;
surf_y = 80;
head_spr = sQueenHead1;
head_frame = 0;
head_damage = 0;
image_angle = 0;
head_angle_max = 30;
head_target_angle = 0;
ujaw_angle = 0;
ljaw_angle = 0;
jaw_target_angle = 0;
ja_off = 0;
eyes_frame = -1;
eyes_close = 0;
neck_base_x = 0;
neck_base_y = 0;
neck_segments = 8;
i = 0;
repeat (neck_segments) {
neck_x[i] = x;
neck_y[i] = y;
}
jaw1_obj = instance_create(x, y, oQueenHeadTop);
jaw2_obj = instance_create(x, y, oQueenHeadBottom);
grab_obj = -4;
jaws_shake = 0;
player_x = x;
player_y = y;
state = 0;
statetime = 0;
numproj = 0;
projdelay = 0;
speedmulti = 1;
attackdelay = 120;
1
603
7
0
0
-1
2
self
0
0
1
repeat (10) {
expl = instance_create(x + random_range(-20, 80), y + random_range(-20, 20), oFXAnimSpark);
expl.image_speed = 0.5 + random(0.5);
expl.additive = 0;
expl.sprite_index = sExpl1;
expl.direction = random(360);
expl.speed = 2 + random(1);
}
make_explosion4(x, y);
sfx_play(sndMissileExpl);
with (jaw1_obj) instance_destroy();
with (jaw2_obj) instance_destroy();
instance_destroy();
1
603
7
0
0
-1
2
self
0
0
1
expl = instance_create(x + random_range(-20, 80), y + random_range(-20, 20), oFXAnimSpark);
expl.image_speed = 0.5;
expl.additive = 0;
expl.sprite_index = sExpl1;
expl.image_xscale = 0.5;
expl.image_yscale = 0.5;
expl.depth = -50;
alarm[9] = 4;
1
603
7
0
0
-1
2
self
0
0
1
var prj;
var xx = x + lengthdir_x(-1, image_angle) - lengthdir_y(-6, image_angle);
var yy = y + lengthdir_y(-1, image_angle) + lengthdir_x(-6, image_angle);
prj = instance_create(xx, yy, oMZetaProj);
prj.speed = 5.5;
prj.gravity = 0.1;
prj.gravity_direction = 270;
prj.direction = image_angle + irandom_range(-15, 15);
//prj.damage = 80;
prj.damage = global.mod_queenDacid;
prj.alarm[0] = 315;
if (state == 6 && statetime < 135) alarm[2] = 1;
1
603
7
0
0
-1
2
self
0
0
1
if (state == 3 && statetime < 270) {
instance_create(x + 5, y + 10, oQueenChargeParticle);
alarm[1] = 5;
}
1
603
7
0
0
-1
2
self
0
0
1
if (numproj > 0) {
instance_create(x + 10, y, oQueenProj);
sfx_play(sndFireball);
numproj -= 1;
alarm[0] = projdelay;
}
1
603
7
0
0
-1
2
self
0
0
1
event_user(10);
jaw1_obj.x = x;
jaw1_obj.y = y;
jaw1_obj.image_angle = image_angle + ujaw_angle;
jaw1_obj.canbehit = canbehit;
jaw1_obj.canhit = canhit;
jaw2_obj.x = x;
jaw2_obj.y = y;
jaw2_obj.image_angle = image_angle + ljaw_angle;
jaw2_obj.canbehit = canbehit;
jaw2_obj.canhit = canhit;
if (instance_exists(grab_obj)) {
grab_obj.x = x + 55;
grab_obj.y = y - 25;
}
player_x = lengthdir_x(65, image_angle + ljaw_angle - 15);
player_y = lengthdir_y(65, image_angle + ljaw_angle - 15);
instance_activate_object(oSolid);
1
603
7
0
0
-1
2
self
0
0
1
var neck_dist, neck_seglen, neck_basedir, i;
if (state == 0) {
if (statetime == 0) {
head_frame = 0;
jaw_target_angle = 0;
}
}
if (state == 1) {
if (statetime == 0) {
head_frame = 0;
jaw_target_angle = 30;
sfx_play(sndQueenIntro);
}
if (statetime == 180) jaw_target_angle = 0;
if (statetime == 240) {
state = 0;
statetime = -1;
}
}
if (state == 2) {
if (statetime == 0) {
head_frame = 0;
jaw_target_angle = 30;
stunned = 0;
numproj = 3;
projdelay = 20;
if (myhealth <= starthealth / 4 * 3) {
numproj = 4;
projdelay = 15;
}
if (myhealth <= starthealth / 4 * 2) {
numproj = 5;
projdelay = 12;
}
if (myhealth <= starthealth / 4) {
numproj = 6;
projdelay = 10;
}
}
if (statetime == 40) alarm[0] = 1;
if (statetime == 180) jaw_target_angle = 0;
if (statetime == 200) {
state = 0;
statetime = -1;
}
} // if (state == 2)
if (state == 3) {
if (statetime == 0) {
head_frame = 0;
jaw_target_angle = 30;
stunned = 0;
canbehit = 0;
alarm[1] = 60;
}
if (statetime > 60 && statetime < 120) {
if (jawglowalpha < 1) jawglowalpha += 0.01;
}
if (statetime == 70) sfx_play(sndQueenCharge);
if (statetime == 300) {
proj = instance_create(x + 20, y + 10, oQueenFireball);
sfx_play(sndQueenBigFire);
if (oMusicV2.useMultistageMusic)
{
switch (oQueen.phase)
{
case 0:
with (oMusicV2) alarm[6] = 5;
break;
case 2:
with (oMusicV2) alarm[7] = 5;
break;
}
}
switch (oQueen.phase) {
case 1:
proj.targetx = 880;
proj.targety = 120;
break;
case 2:
proj.targetx = 1200;
proj.targety = 112;
break;
case 3:
proj.targetx = 1840;
proj.targety = 112;
break;
case 4:
proj.targetx = 2160;
proj.targety = 160;
break;
}
}
if (statetime > 300) {
if (jawglowalpha > 0) jawglowalpha -= 0.05;
}
if (statetime == 320) jaw_target_angle = 0;
if (statetime == 360) {
canbehit = 1;
state = 0;
statetime = -1;
}
} // if (state == 3)
if (state == 4) {
if (statetime == 0) {
head_frame = 0;
jaw_target_angle = 10;
sfx_play(sndQueenRoarShort);
}
if (statetime == 50) jaw_target_angle = 0;
if (statetime < attackdelay * 0.8) {
head_target_angle = point_direction(x, y, oCharacter.x, oCharacter.y - 32);
if (oQueen.phase == 1 || oQueen.phase == 2) head_target_angle = 0;
}
if (statetime == attackdelay) {
state = 5;
statetime = 0;
}
}
if (state == 5) {
if (statetime == 0) {
head_frame = 0;
jaw_target_angle = 0;
direction = image_angle;
speed = 3;
sfx_play(sndQueenAttack);
}
if (speed < 8) speed += 0.5 * speedmulti;
if (collision_line(x, y, x + lengthdir_x(74, image_angle - 12), y + lengthdir_y(74, image_angle - 12), oSolid, true, true) > 0) {
state = 0;
statetime = -1;
screen_shake(10, 4);
speed = 0;
sfx_play(sndQueenImpact);
}
if (statetime == 200) {
state = 0;
statetime = -1;
}
}
if (state == 6) {
if (statetime == 0) {
head_frame = 0;
jaw_target_angle = 0;
stunned = 0;
alarm[2] = 75;
}
if (statetime == 60) jaw_target_angle = 30;
if (statetime < 75) head_target_angle = -60;
if (statetime == 75) sfx_play(sndMZetaAcid);
if (statetime >= 75 && statetime < 135) head_target_angle = -60+(statetime-75);
if (statetime == 150) {
state = 0;
statetime = -1;
}
} // if (state == 6)
if (state == 10) {
if (statetime == 0) {
head_frame = 0;
jaw_target_angle = 25;
jaw1_obj.canhit = 0;
jaw2_obj.canhit = 0;
grab_obj = instance_create(x + 65, y - 30, oQueenGrab);
}
if (oCharacter.state == 53 || oCharacter.state == 54) {
oCharacter.x = x + player_x;
oCharacter.y = y + player_y;
jaws_shake = 1;
head_target_angle = -3;
}
if (oCharacter.state == 54) {
jaw_target_angle = 5;
head_target_angle = 3;
}
if (oCharacter.state == 55) {
jaw_target_angle = 2;
head_target_angle = 8;
jaws_shake = 0;
}
}
if (state == 11) {
if (statetime == 0) {
head_frame = 0;
jaw_target_angle = 0;
jaw1_obj.canhit = 0;
jaw2_obj.canhit = 0;
canhit = 0;
jaws_shake = 0;
with (oCharacter) {
state = 39;
statetime = 0;
xVel = 5;
image_index = 0;
statetime = 0;
sfx_play(sndHurt);
invincible = 30;
ctrl_vibrate(1, 1, 15);
queen_drain = 0;
if (global.currentsuit == 0) global.playerhealth -= 400 * oControl.mod_diffmult; //((global.difficulty == 2) + 1) * oControl.mod_fusion;
if (global.currentsuit == 1) global.playerhealth -= ceil(200) * oControl.mod_diffmult; //((global.difficulty == 2) + 1) * oControl.mod_fusion;
//if (global.currentsuit == 2) global.playerhealth -= ceil(100) * oControl.mod_diffmult; //((global.difficulty == 2) + 1) * oControl.mod_fusion;
if (global.currentsuit == 2) {
if(global.item[5] == 0)
global.playerhealth -= ceil(200) * oControl.mod_diffmult;
else
global.playerhealth -= ceil(100) * oControl.mod_diffmult;
} //added
if (global.playerhealth <= 0 && state != DEFEATED) {
alarm[0] = 6;
state = DEFEATED;
}
}
sfx_play(sndGFTrooperHit);
} // if (statetime == 0)
if (statetime == 120) {
state = 0;
statetime = -1;
}
} // if (state == 11)
if (state == 50) {
if (statetime == 0) {
head_frame = 0;
head_target_angle = 0;
jaw_target_angle = 0;
ujaw_angle = 0;
ljaw_angle = 0;
sfx_play(sndQueenHit2);
stunned = 30;
speed = 0;
bld = instance_create(x + 42, y - 8, oFXAnimSpark);
bld.sprite_index = sMGammaBlood1;
bld.image_speed = 0.5;
bld.image_alpha = 0.6;
bld.image_xscale = -1;
bld.depth = -100;
bld = instance_create(x + 60, y + 8, oFXAnimSpark);
bld.sprite_index = sMGammaBlood1;
bld.image_speed = 0.5;
bld.image_alpha = 0.6;
bld.image_xscale = -1;
bld.image_yscale = -1;
bld.depth = -100;
}
if (statetime == 50) {
state = 0;
statetime = -1;
}
} // if (state == 50)
if (state == 100) {
if (statetime == 0) {
head_frame = 0;
jaw_target_angle = 10;
image_angle = 20;
oCharacter.queen_drain = 0;
if (instance_exists(grab_obj)) with (grab_obj) instance_destroy();
}
if (image_angle > -20) image_angle -= 0.5;
}
if (eyes_close > 0) eyes_close -= 1;
if (eyes_close == 0) {
if (eyes_frame > -1) eyes_frame -= 0.25;
} else if (eyes_frame < 5) eyes_frame += 1;
neck_base_x = oQueen.x + oQueen.neck_x;
neck_base_y = oQueen.y + oQueen.neck_y;
neck_dist = point_distance(neck_base_x, neck_base_y, x, y);
neck_seglen = neck_dist / neck_segments;
neck_basedir = point_direction(neck_base_x, neck_base_y, x, y);
neck_x[0] = neck_base_x + lengthdir_x(neck_seglen, neck_basedir);
neck_y[0] = neck_base_y + lengthdir_y(neck_seglen, neck_basedir);
neck_yoff[0] = sin(pi - neck_dist / (neck_dist - neck_seglen * -1)) * 20;
i = 1;
repeat (neck_segments - 1) {
neck_x[i] = neck_x[i - 1] + lengthdir_x(neck_seglen, neck_basedir);
neck_y[i] = neck_y[i - 1] + lengthdir_y(neck_seglen, neck_basedir);
neck_yoff[i] = sin(pi - neck_dist / (neck_dist - neck_seglen * (i - 1))) * 20;
i += 1;
}
if (ujaw_angle != jaw_target_angle) {
ujaw_angle = lerp(ujaw_angle, jaw_target_angle, 0.1);
ljaw_angle = lerp(ljaw_angle, -jaw_target_angle, 0.1);
}
if (head_target_angle > 180) head_target_angle -= 360;
if (image_angle != head_target_angle) image_angle = lerp(image_angle, head_target_angle, 0.1);
if (stunned > 0) {
if (stunned > 25 && stunned <= 30) head_frame = 1;
if (stunned > 12 && stunned <= 25) head_frame = 2;
if (stunned <= 12) head_frame = 1;
} else head_frame = 0;
statetime += 1;
if (flashing > 0) flashing -= 1;
if (fxtimer < 5) {
fxtimer += 1;
} else fxtimer = 0;
if (shaking > 0) shaking -= 1;
if (stunned > 0) stunned -= 1;
glowfx += 1;
if (glowfx > 10) glowfx = 0;
if (canbehit == 0) {
if (glowalpha < 1) glowalpha += 0.1;
} else if (glowalpha > 0) glowalpha -= 0.05;
1
603
7
0
0
-1
2
self
0
0
1
if (state != 100) with (other) event_user(0);
1
603
7
0
0
-1
2
self
0
0
1
if (canbehit && state != 100) {
if (other.smissile == 0) {
event_user(1);
} else event_user(2);
with (other) event_user(0);
} else with (other) event_user(1);
1
603
7
0
0
-1
2
self
0
0
1
if (state != 100) with (other) {
event_user(1);
instance_destroy();
}
1
603
7
0
0
-1
2
self
0
0
1
eyes_close = 20;
if (oQueen.state == 10 && flashing == 0) event_user(3);
1
603
7
0
0
-1
2
self
0
0
1
if (canhit == 1) {
if (other.state != 52 && other.state != 39 && other.state != 40) {
if (push == 0) {
damage_player(damage, hpush, vpush, 0, 0);
} else damage_player_push(damage, 1, 90, 0, 4);
}
}
1
603
7
0
0
-1
2
self
0
0
1
var ja_off;
ja_off = 0;
if (jaws_shake) ja_off = random_range(-1, 1);
if (surface_exists(surf)) {
surface_set_target(surf);
draw_clear_alpha(c_blue, 0);
if (head_frame == 0) {
draw_sprite_ext(sQueenHeadBack, head_damage, surf_x, surf_y, 1, 1, image_angle, -1, 1);
draw_sprite_ext(sQueenHeadDown, head_damage, surf_x, surf_y, 1, 1, image_angle + ljaw_angle + ja_off, -1, 1);
draw_sprite_ext(sQueenHeadUp, head_damage, surf_x, surf_y, 1, 1, image_angle + ujaw_angle + ja_off, -1, 1);
mask_index = sQueenHeadBack;
if (eyes_frame >= 0) draw_sprite_ext(sQueenEyes, eyes_frame, surf_x, surf_y, 1, 1, image_angle, -1, 1);
}
if (head_frame == 1) {
draw_sprite_ext(sQueenHead1, head_damage, surf_x, surf_y, 1, 1, image_angle, -1, 1);
mask_index = sQueenHead1;
}
if (head_frame == 2) {
draw_sprite_ext(sQueenHead2, head_damage, surf_x, surf_y, 1, 1, image_angle, -1, 1);
mask_index = sQueenHead2;
}
surface_reset_target();
}
1
603
7
0
0
-1
2
self
0
0
1
if (state != 100) {
dmg = 8;
flashtime = 4;
shaking = 6;
event_user(0);
sfx_stop(sndQueenHit1);
sfx_play(sndQueenHit1);
}
1
603
7
0
0
-1
2
self
0
0
1
if (state != 100) {
dmg = 40;
flashtime = 20;
eyes_close = 20;
shaking = 24;
event_user(0);
jaw_target_angle = 30;
sfx_stop(sndQueenHit2);
sfx_play(sndQueenHit2);
}
1
603
7
0
0
-1
2
self
0
0
1
if (state != 100) {
dmg = 50;
flashtime = 20;
eyes_close = 20;
shaking = 24;
if (state == 5 && statetime > 6) {
state = 0;
statetime = -1;
speed = 0;
ujaw_angle = 0;
}
if (ujaw_angle == 0) {
stunned = 30;
} else if (state != 5) image_angle += 10;
event_user(0);
sfx_stop(sndQueenHit2);
sfx_play(sndQueenHit2);
}
1
603
7
0
0
-1
2
self
0
0
1
if (state != 100) {
dmg = 10;
flashtime = 8;
shaking = 10;
event_user(0);
sfx_stop(sndQueenHit1);
sfx_play(sndQueenHit1);
}
1
603
7
0
0
-1
2
self
0
0
1
if !(oCharacter.state == oCharacter.GRABBEDQUEENBELLY && instance_exists(oPBomb)) myhealth -= dmg;
flashing = flashtime;
if (myhealth <= 0 && state != 100 && state != 50) {
if (oQueen.phase < 3) head_damage = 1;
if (oQueen.phase == 3) head_damage = 2;
if (oQueen.phase < 5) {
state = 50;
statetime = 0;
myhealth = 999999;
with (oQueen) {
state = 6;
statetime = 0;
}
}
if (oQueen.phase == 5) {
with (oQueen) {
state = 100;
statetime = 0;
}
state = 100;
}
}
1
603
7
0
0
-1
2
self
0
0
1
if(oControl.mod_fusion == 1 || oControl.MonsterPalettesFusionOnly == 0) {
pal_swap_set(oControl.QueenPalette, 1, false);
}
var i, soff_x, soff_y;
draw_set_blend_mode(bm_add);
draw_sprite_ext(sQueenMouthGlow, -1, x, y, 1, 1, 0, -1, jawglowalpha);
draw_set_blend_mode(bm_normal);
i = 0;
repeat (neck_segments - 1) {
if (!flashing) {
draw_sprite_ext(sQueenNeck, -1, neck_x[i], neck_y[i] + neck_yoff[i], 1, 1, 0, image_blend, 1);
} else {
draw_sprite_ext(sQueenNeck, -1, neck_x[i], neck_y[i] + neck_yoff[i], 1, 1, 0, make_color_rgb(255 - fxtimer * 63, 255 - fxtimer * 63, 255 - fxtimer * 63), 1);
draw_set_blend_mode(bm_add);
repeat (2) draw_sprite_ext(sQueenNeck, -1, neck_x[i], neck_y[i] + neck_yoff[i], 1, 1, 0, -1, 1 - fxtimer * 0.25);
draw_set_blend_mode(bm_normal);
}
i += 1;
}
soff_x = 0;
soff_y = 0;
if (shaking) {
soff_x = choose(-1, 0, 1);
soff_y = choose(-1, 0, 1);
}
if (surface_exists(surf)) {
if (!flashing) {
draw_surface_ext(surf, x - surf_x + soff_x, y - surf_y + soff_y, 1, 1, 0, image_blend, 1);
} else {
draw_surface_ext(surf, x - surf_x + soff_x, y - surf_y + soff_y, 1, 1, 0, make_color_rgb(255 - fxtimer * 63, 255 - fxtimer * 63, 255 - fxtimer * 63), 1);
draw_set_blend_mode(bm_add);
repeat (2) draw_surface_ext(surf, x - surf_x + soff_x, y - surf_y + soff_y, 1, 1, 0, -1, 1 - fxtimer * 0.25);
draw_set_blend_mode(bm_normal);
}
} else {
surface_free(surf);
surf = surface_create(200, 200);
event_user(10);
}
if (head_frame == 0) {
draw_set_blend_mode(bm_add);
if (head_damage < 2) {
draw_sprite_ext(sQueenGlow, 0, x, y, 1, 1, image_angle + ujaw_angle + ja_off, -1, glowalpha * (1 - glowfx * 0.1));
} else draw_sprite_ext(sQueenGlow, 1, x, y, 1, 1, image_angle + ujaw_angle + ja_off, -1, glowalpha * (1 - glowfx * 0.1));
if (ujaw_angle + ja_off < 20) {
draw_sprite_ext(sQueenGlow2, 0, x, y, 1, 1, image_angle, -1, glowalpha * (1 - glowfx * 0.1));
} else draw_sprite_ext(sQueenGlow2, 1, x, y, 1, 1, image_angle, -1, glowalpha * (1 - glowfx * 0.1));
draw_set_blend_mode(bm_normal);
}
draw_set_blend_mode(bm_add);
draw_sprite_ext(sQueenJawGlow, head_damage, x, y, 1, 1, 0, -1, jawglowalpha);
draw_set_blend_mode(bm_normal);
shader_reset();
0
0
0
0.5
0.100000001490116
0
0.100000001490116
0.100000001490116
0.200000002980232
-1
-1