You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1059 lines
30 KiB
1059 lines
30 KiB
<!--This Document is generated by GameMaker, if you edit it by hand then you do so at your own risk!-->
|
|
<object>
|
|
<spriteName>sQueenHead1</spriteName>
|
|
<solid>0</solid>
|
|
<visible>-1</visible>
|
|
<depth>-15</depth>
|
|
<persistent>0</persistent>
|
|
<parentName><undefined></parentName>
|
|
<maskName><undefined></maskName>
|
|
<events>
|
|
<event eventtype="0" enumb="0">
|
|
<action>
|
|
<libid>1</libid>
|
|
<id>603</id>
|
|
<kind>7</kind>
|
|
<userelative>0</userelative>
|
|
<isquestion>0</isquestion>
|
|
<useapplyto>-1</useapplyto>
|
|
<exetype>2</exetype>
|
|
<functionname></functionname>
|
|
<codestring></codestring>
|
|
<whoName>self</whoName>
|
|
<relative>0</relative>
|
|
<isnot>0</isnot>
|
|
<arguments>
|
|
<argument>
|
|
<kind>1</kind>
|
|
<string>//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;
|
|
</string>
|
|
</argument>
|
|
</arguments>
|
|
</action>
|
|
</event>
|
|
<event eventtype="2" enumb="10">
|
|
<action>
|
|
<libid>1</libid>
|
|
<id>603</id>
|
|
<kind>7</kind>
|
|
<userelative>0</userelative>
|
|
<isquestion>0</isquestion>
|
|
<useapplyto>-1</useapplyto>
|
|
<exetype>2</exetype>
|
|
<functionname></functionname>
|
|
<codestring></codestring>
|
|
<whoName>self</whoName>
|
|
<relative>0</relative>
|
|
<isnot>0</isnot>
|
|
<arguments>
|
|
<argument>
|
|
<kind>1</kind>
|
|
<string>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();
|
|
</string>
|
|
</argument>
|
|
</arguments>
|
|
</action>
|
|
</event>
|
|
<event eventtype="2" enumb="9">
|
|
<action>
|
|
<libid>1</libid>
|
|
<id>603</id>
|
|
<kind>7</kind>
|
|
<userelative>0</userelative>
|
|
<isquestion>0</isquestion>
|
|
<useapplyto>-1</useapplyto>
|
|
<exetype>2</exetype>
|
|
<functionname></functionname>
|
|
<codestring></codestring>
|
|
<whoName>self</whoName>
|
|
<relative>0</relative>
|
|
<isnot>0</isnot>
|
|
<arguments>
|
|
<argument>
|
|
<kind>1</kind>
|
|
<string>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;
|
|
</string>
|
|
</argument>
|
|
</arguments>
|
|
</action>
|
|
</event>
|
|
<event eventtype="2" enumb="2">
|
|
<action>
|
|
<libid>1</libid>
|
|
<id>603</id>
|
|
<kind>7</kind>
|
|
<userelative>0</userelative>
|
|
<isquestion>0</isquestion>
|
|
<useapplyto>-1</useapplyto>
|
|
<exetype>2</exetype>
|
|
<functionname></functionname>
|
|
<codestring></codestring>
|
|
<whoName>self</whoName>
|
|
<relative>0</relative>
|
|
<isnot>0</isnot>
|
|
<arguments>
|
|
<argument>
|
|
<kind>1</kind>
|
|
<string>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;
|
|
</string>
|
|
</argument>
|
|
</arguments>
|
|
</action>
|
|
</event>
|
|
<event eventtype="2" enumb="1">
|
|
<action>
|
|
<libid>1</libid>
|
|
<id>603</id>
|
|
<kind>7</kind>
|
|
<userelative>0</userelative>
|
|
<isquestion>0</isquestion>
|
|
<useapplyto>-1</useapplyto>
|
|
<exetype>2</exetype>
|
|
<functionname></functionname>
|
|
<codestring></codestring>
|
|
<whoName>self</whoName>
|
|
<relative>0</relative>
|
|
<isnot>0</isnot>
|
|
<arguments>
|
|
<argument>
|
|
<kind>1</kind>
|
|
<string>if (state == 3 && statetime < 270) {
|
|
instance_create(x + 5, y + 10, oQueenChargeParticle);
|
|
alarm[1] = 5;
|
|
}
|
|
</string>
|
|
</argument>
|
|
</arguments>
|
|
</action>
|
|
</event>
|
|
<event eventtype="2" enumb="0">
|
|
<action>
|
|
<libid>1</libid>
|
|
<id>603</id>
|
|
<kind>7</kind>
|
|
<userelative>0</userelative>
|
|
<isquestion>0</isquestion>
|
|
<useapplyto>-1</useapplyto>
|
|
<exetype>2</exetype>
|
|
<functionname></functionname>
|
|
<codestring></codestring>
|
|
<whoName>self</whoName>
|
|
<relative>0</relative>
|
|
<isnot>0</isnot>
|
|
<arguments>
|
|
<argument>
|
|
<kind>1</kind>
|
|
<string>if (numproj > 0) {
|
|
instance_create(x + 10, y, oQueenProj);
|
|
sfx_play(sndFireball);
|
|
numproj -= 1;
|
|
alarm[0] = projdelay;
|
|
}
|
|
</string>
|
|
</argument>
|
|
</arguments>
|
|
</action>
|
|
</event>
|
|
<event eventtype="3" enumb="2">
|
|
<action>
|
|
<libid>1</libid>
|
|
<id>603</id>
|
|
<kind>7</kind>
|
|
<userelative>0</userelative>
|
|
<isquestion>0</isquestion>
|
|
<useapplyto>-1</useapplyto>
|
|
<exetype>2</exetype>
|
|
<functionname></functionname>
|
|
<codestring></codestring>
|
|
<whoName>self</whoName>
|
|
<relative>0</relative>
|
|
<isnot>0</isnot>
|
|
<arguments>
|
|
<argument>
|
|
<kind>1</kind>
|
|
<string>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);
|
|
</string>
|
|
</argument>
|
|
</arguments>
|
|
</action>
|
|
</event>
|
|
<event eventtype="3" enumb="0">
|
|
<action>
|
|
<libid>1</libid>
|
|
<id>603</id>
|
|
<kind>7</kind>
|
|
<userelative>0</userelative>
|
|
<isquestion>0</isquestion>
|
|
<useapplyto>-1</useapplyto>
|
|
<exetype>2</exetype>
|
|
<functionname></functionname>
|
|
<codestring></codestring>
|
|
<whoName>self</whoName>
|
|
<relative>0</relative>
|
|
<isnot>0</isnot>
|
|
<arguments>
|
|
<argument>
|
|
<kind>1</kind>
|
|
<string>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;
|
|
</string>
|
|
</argument>
|
|
</arguments>
|
|
</action>
|
|
</event>
|
|
<event eventtype="4" ename="oBomb2">
|
|
<action>
|
|
<libid>1</libid>
|
|
<id>603</id>
|
|
<kind>7</kind>
|
|
<userelative>0</userelative>
|
|
<isquestion>0</isquestion>
|
|
<useapplyto>-1</useapplyto>
|
|
<exetype>2</exetype>
|
|
<functionname></functionname>
|
|
<codestring></codestring>
|
|
<whoName>self</whoName>
|
|
<relative>0</relative>
|
|
<isnot>0</isnot>
|
|
<arguments>
|
|
<argument>
|
|
<kind>1</kind>
|
|
<string>if (state != 100) with (other) event_user(0);
|
|
</string>
|
|
</argument>
|
|
</arguments>
|
|
</action>
|
|
</event>
|
|
<event eventtype="4" ename="oMissile">
|
|
<action>
|
|
<libid>1</libid>
|
|
<id>603</id>
|
|
<kind>7</kind>
|
|
<userelative>0</userelative>
|
|
<isquestion>0</isquestion>
|
|
<useapplyto>-1</useapplyto>
|
|
<exetype>2</exetype>
|
|
<functionname></functionname>
|
|
<codestring></codestring>
|
|
<whoName>self</whoName>
|
|
<relative>0</relative>
|
|
<isnot>0</isnot>
|
|
<arguments>
|
|
<argument>
|
|
<kind>1</kind>
|
|
<string>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);
|
|
</string>
|
|
</argument>
|
|
</arguments>
|
|
</action>
|
|
</event>
|
|
<event eventtype="4" ename="oBeam">
|
|
<action>
|
|
<libid>1</libid>
|
|
<id>603</id>
|
|
<kind>7</kind>
|
|
<userelative>0</userelative>
|
|
<isquestion>0</isquestion>
|
|
<useapplyto>-1</useapplyto>
|
|
<exetype>2</exetype>
|
|
<functionname></functionname>
|
|
<codestring></codestring>
|
|
<whoName>self</whoName>
|
|
<relative>0</relative>
|
|
<isnot>0</isnot>
|
|
<arguments>
|
|
<argument>
|
|
<kind>1</kind>
|
|
<string>if (state != 100) with (other) {
|
|
event_user(1);
|
|
instance_destroy();
|
|
}
|
|
</string>
|
|
</argument>
|
|
</arguments>
|
|
</action>
|
|
</event>
|
|
<event eventtype="4" ename="oPBombExpl">
|
|
<action>
|
|
<libid>1</libid>
|
|
<id>603</id>
|
|
<kind>7</kind>
|
|
<userelative>0</userelative>
|
|
<isquestion>0</isquestion>
|
|
<useapplyto>-1</useapplyto>
|
|
<exetype>2</exetype>
|
|
<functionname></functionname>
|
|
<codestring></codestring>
|
|
<whoName>self</whoName>
|
|
<relative>0</relative>
|
|
<isnot>0</isnot>
|
|
<arguments>
|
|
<argument>
|
|
<kind>1</kind>
|
|
<string>eyes_close = 20;
|
|
if (oQueen.state == 10 && flashing == 0) event_user(3);
|
|
</string>
|
|
</argument>
|
|
</arguments>
|
|
</action>
|
|
</event>
|
|
<event eventtype="4" ename="oCharacter">
|
|
<action>
|
|
<libid>1</libid>
|
|
<id>603</id>
|
|
<kind>7</kind>
|
|
<userelative>0</userelative>
|
|
<isquestion>0</isquestion>
|
|
<useapplyto>-1</useapplyto>
|
|
<exetype>2</exetype>
|
|
<functionname></functionname>
|
|
<codestring></codestring>
|
|
<whoName>self</whoName>
|
|
<relative>0</relative>
|
|
<isnot>0</isnot>
|
|
<arguments>
|
|
<argument>
|
|
<kind>1</kind>
|
|
<string>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);
|
|
}
|
|
}
|
|
</string>
|
|
</argument>
|
|
</arguments>
|
|
</action>
|
|
</event>
|
|
<event eventtype="7" enumb="20">
|
|
<action>
|
|
<libid>1</libid>
|
|
<id>603</id>
|
|
<kind>7</kind>
|
|
<userelative>0</userelative>
|
|
<isquestion>0</isquestion>
|
|
<useapplyto>-1</useapplyto>
|
|
<exetype>2</exetype>
|
|
<functionname></functionname>
|
|
<codestring></codestring>
|
|
<whoName>self</whoName>
|
|
<relative>0</relative>
|
|
<isnot>0</isnot>
|
|
<arguments>
|
|
<argument>
|
|
<kind>1</kind>
|
|
<string>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();
|
|
}
|
|
</string>
|
|
</argument>
|
|
</arguments>
|
|
</action>
|
|
</event>
|
|
<event eventtype="7" enumb="14">
|
|
<action>
|
|
<libid>1</libid>
|
|
<id>603</id>
|
|
<kind>7</kind>
|
|
<userelative>0</userelative>
|
|
<isquestion>0</isquestion>
|
|
<useapplyto>-1</useapplyto>
|
|
<exetype>2</exetype>
|
|
<functionname></functionname>
|
|
<codestring></codestring>
|
|
<whoName>self</whoName>
|
|
<relative>0</relative>
|
|
<isnot>0</isnot>
|
|
<arguments>
|
|
<argument>
|
|
<kind>1</kind>
|
|
<string>if (state != 100) {
|
|
dmg = 8;
|
|
flashtime = 4;
|
|
shaking = 6;
|
|
event_user(0);
|
|
sfx_stop(sndQueenHit1);
|
|
sfx_play(sndQueenHit1);
|
|
}
|
|
</string>
|
|
</argument>
|
|
</arguments>
|
|
</action>
|
|
</event>
|
|
<event eventtype="7" enumb="13">
|
|
<action>
|
|
<libid>1</libid>
|
|
<id>603</id>
|
|
<kind>7</kind>
|
|
<userelative>0</userelative>
|
|
<isquestion>0</isquestion>
|
|
<useapplyto>-1</useapplyto>
|
|
<exetype>2</exetype>
|
|
<functionname></functionname>
|
|
<codestring></codestring>
|
|
<whoName>self</whoName>
|
|
<relative>0</relative>
|
|
<isnot>0</isnot>
|
|
<arguments>
|
|
<argument>
|
|
<kind>1</kind>
|
|
<string>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);
|
|
}
|
|
</string>
|
|
</argument>
|
|
</arguments>
|
|
</action>
|
|
</event>
|
|
<event eventtype="7" enumb="12">
|
|
<action>
|
|
<libid>1</libid>
|
|
<id>603</id>
|
|
<kind>7</kind>
|
|
<userelative>0</userelative>
|
|
<isquestion>0</isquestion>
|
|
<useapplyto>-1</useapplyto>
|
|
<exetype>2</exetype>
|
|
<functionname></functionname>
|
|
<codestring></codestring>
|
|
<whoName>self</whoName>
|
|
<relative>0</relative>
|
|
<isnot>0</isnot>
|
|
<arguments>
|
|
<argument>
|
|
<kind>1</kind>
|
|
<string>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);
|
|
}
|
|
</string>
|
|
</argument>
|
|
</arguments>
|
|
</action>
|
|
</event>
|
|
<event eventtype="7" enumb="11">
|
|
<action>
|
|
<libid>1</libid>
|
|
<id>603</id>
|
|
<kind>7</kind>
|
|
<userelative>0</userelative>
|
|
<isquestion>0</isquestion>
|
|
<useapplyto>-1</useapplyto>
|
|
<exetype>2</exetype>
|
|
<functionname></functionname>
|
|
<codestring></codestring>
|
|
<whoName>self</whoName>
|
|
<relative>0</relative>
|
|
<isnot>0</isnot>
|
|
<arguments>
|
|
<argument>
|
|
<kind>1</kind>
|
|
<string>if (state != 100) {
|
|
dmg = 10;
|
|
flashtime = 8;
|
|
shaking = 10;
|
|
event_user(0);
|
|
sfx_stop(sndQueenHit1);
|
|
sfx_play(sndQueenHit1);
|
|
}
|
|
</string>
|
|
</argument>
|
|
</arguments>
|
|
</action>
|
|
</event>
|
|
<event eventtype="7" enumb="10">
|
|
<action>
|
|
<libid>1</libid>
|
|
<id>603</id>
|
|
<kind>7</kind>
|
|
<userelative>0</userelative>
|
|
<isquestion>0</isquestion>
|
|
<useapplyto>-1</useapplyto>
|
|
<exetype>2</exetype>
|
|
<functionname></functionname>
|
|
<codestring></codestring>
|
|
<whoName>self</whoName>
|
|
<relative>0</relative>
|
|
<isnot>0</isnot>
|
|
<arguments>
|
|
<argument>
|
|
<kind>1</kind>
|
|
<string>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;
|
|
}
|
|
}
|
|
</string>
|
|
</argument>
|
|
</arguments>
|
|
</action>
|
|
</event>
|
|
<event eventtype="8" enumb="0">
|
|
<action>
|
|
<libid>1</libid>
|
|
<id>603</id>
|
|
<kind>7</kind>
|
|
<userelative>0</userelative>
|
|
<isquestion>0</isquestion>
|
|
<useapplyto>-1</useapplyto>
|
|
<exetype>2</exetype>
|
|
<functionname></functionname>
|
|
<codestring></codestring>
|
|
<whoName>self</whoName>
|
|
<relative>0</relative>
|
|
<isnot>0</isnot>
|
|
<arguments>
|
|
<argument>
|
|
<kind>1</kind>
|
|
<string>
|
|
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();
|
|
</string>
|
|
</argument>
|
|
</arguments>
|
|
</action>
|
|
</event>
|
|
</events>
|
|
<PhysicsObject>0</PhysicsObject>
|
|
<PhysicsObjectSensor>0</PhysicsObjectSensor>
|
|
<PhysicsObjectShape>0</PhysicsObjectShape>
|
|
<PhysicsObjectDensity>0.5</PhysicsObjectDensity>
|
|
<PhysicsObjectRestitution>0.100000001490116</PhysicsObjectRestitution>
|
|
<PhysicsObjectGroup>0</PhysicsObjectGroup>
|
|
<PhysicsObjectLinearDamping>0.100000001490116</PhysicsObjectLinearDamping>
|
|
<PhysicsObjectAngularDamping>0.100000001490116</PhysicsObjectAngularDamping>
|
|
<PhysicsObjectFriction>0.200000002980232</PhysicsObjectFriction>
|
|
<PhysicsObjectAwake>-1</PhysicsObjectAwake>
|
|
<PhysicsObjectKinematic>-1</PhysicsObjectKinematic>
|
|
<PhysicsShapePoints/>
|
|
</object>
|