You've already forked AM2R-Community-Updates
mirror of
https://github.com/izzy2lost/AM2R-Community-Updates.git
synced 2026-03-10 11:23:35 -07:00
919 lines
28 KiB
XML
919 lines
28 KiB
XML
<!--This Document is generated by GameMaker, if you edit it by hand then you do so at your own risk!-->
|
|
<object>
|
|
<spriteName>sQueenBody</spriteName>
|
|
<solid>0</solid>
|
|
<visible>-1</visible>
|
|
<depth>5</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>if (global.event[303] > 0) {
|
|
instance_destroy();
|
|
} else {
|
|
//damage = 60;
|
|
canbeX = 0;
|
|
damage = global.mod_queenDbody;
|
|
head_obj = instance_create(x + 250, y - 10, oQueenHead);
|
|
front_obj = instance_create(x, y, oQueenFront);
|
|
flashing = 0;
|
|
fxtimer = 0;
|
|
targetx = x;
|
|
phase = 0;
|
|
canhit = 1;
|
|
maxspeed = 2;
|
|
phasetargetx[0] = 600;
|
|
phasetargetx[1] = 928;
|
|
phasetargetx[2] = 1568;
|
|
phasetargetx[3] = 1888;
|
|
phasetargetx[4] = 2528;
|
|
phasetargetx[5] = 2528;
|
|
camx = x;
|
|
camy = y;
|
|
neck_x = x;
|
|
neck_y = y;
|
|
belly_x = x;
|
|
belly_y = y;
|
|
leg1f_x = lengthdir_x(129, image_angle + 15);
|
|
leg1f_y = lengthdir_y(129, image_angle + 15);
|
|
leg1f_obj = instance_create(x + leg1f_x + 13, y + leg1f_y + 69, oQueenLegFront);
|
|
leg2f_obj = instance_create(x + leg1f_x + 13, y + leg1f_y + 69, oQueenLegBack);
|
|
with (leg2f_obj) x += 40;
|
|
leg1b_x = lengthdir_x(37, image_angle + 43);
|
|
leg1b_y = lengthdir_y(37, image_angle + 43);
|
|
leg1b_obj = instance_create(x + leg1b_x + 13, y + leg1b_y + 61, oQueenLegFront);
|
|
with (leg1b_obj) {
|
|
spr_foot = sQueenFootBack;
|
|
spr_leg1 = sQueenLegBack1;
|
|
spr_leg2 = sQueenLegBack2;
|
|
spr_leg3 = sQueenLegBack3;
|
|
spr_leg4 = sQueenLegBack4;
|
|
joint1_len = 45;
|
|
x += 40;
|
|
}
|
|
leg2b_obj = instance_create(x + leg1b_x + 13, y + leg1b_y + 61, oQueenLegBack);
|
|
with (leg2b_obj) spr_foot = sQueenLeg2B;
|
|
col_back = 0;
|
|
col_front = 0;
|
|
col_front_x = x + 130;
|
|
col_front_y = y;
|
|
head_target_x = x + 120;
|
|
head_target_y = y - 10;
|
|
head_target_angle = 0;
|
|
head_target_snap = 1;
|
|
height_target_front = 35;
|
|
height_target_back = 35;
|
|
height_front = 35;
|
|
height_back = 35;
|
|
sin_timer = 0;
|
|
state = 0;
|
|
statetime = 0;
|
|
head_attacks = 0;
|
|
mus_stop_all();
|
|
with (oMusicV2) alarm[5] = 600;
|
|
if (!sfx_isplaying(musQueenIntro)) mus_play_once(musQueenIntro);
|
|
scan_log(16, get_text("ScanEvents", "ScanBioform"), 120, 0);
|
|
|
|
widescreen_space = oControl.widescreen_space;
|
|
|
|
} // if (global.event[303] > 0) else
|
|
</string>
|
|
</argument>
|
|
</arguments>
|
|
</action>
|
|
</event>
|
|
<event eventtype="1" 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>global.monstersleft = 0;
|
|
global.monstersarea = 0;
|
|
</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 (50) {
|
|
expl = instance_create(x + random_range(-90, 150), y + random_range(-60, 30), 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);
|
|
make_explosion4(x + 40, y + 30);
|
|
make_explosion4(x + 80, y + 20);
|
|
make_explosion4(x - 30, y + 10);
|
|
make_explosion4(x - 80, y + 35);
|
|
screen_shake(60, 4);
|
|
instance_create(x, y, oScreenFlash);
|
|
sfx_play(sndMissileExpl);
|
|
sfx_play(sndSMissileExpl);
|
|
sfx_play(sndMEggBreak);
|
|
event_user(10);
|
|
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(-90, 150), y + random_range(-60, 30), 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] = 2;
|
|
</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>belly_x = lengthdir_x(86, image_angle - 15);
|
|
belly_y = lengthdir_y(86, image_angle - 15);
|
|
if (instance_exists(front_obj)) {
|
|
front_obj.x = x;
|
|
front_obj.y = y;
|
|
front_obj.image_angle = image_angle;
|
|
}
|
|
if (instance_exists(head_obj)) {
|
|
if (head_target_snap == 1) {
|
|
head_obj.x = lerp(head_obj.x, head_target_x, 0.2);
|
|
head_obj.y = lerp(head_obj.y, head_target_y, 0.2);
|
|
head_obj.head_target_angle = head_target_angle;
|
|
}
|
|
}
|
|
if (instance_exists(leg1f_obj)) {
|
|
leg1f_obj.joint3_x = x + leg1f_x;
|
|
leg1f_obj.joint3_y = y + leg1f_y;
|
|
}
|
|
if (instance_exists(leg1b_obj)) {
|
|
leg1b_obj.joint3_x = x + leg1b_x;
|
|
leg1b_obj.joint3_y = y + leg1b_y;
|
|
}
|
|
if (instance_exists(leg2f_obj)) leg2f_obj.base_x = x + leg1f_x;
|
|
if (instance_exists(leg2b_obj)) leg2b_obj.base_x = x + leg1b_x;
|
|
if (instance_exists(oQueenHead)) {
|
|
flashing = oQueenHead.flashing;
|
|
fxtimer = oQueenHead.fxtimer;
|
|
if (phase == 0 || phase == 1 && oCharacter.x < 928) {
|
|
camx = 800 - (widescreen_space/2);
|
|
camy = oQueenHead.y + (oCharacter.y - oQueenHead.y) / 2;
|
|
} else if (phase == 1 && oCharacter.x > 1120 && oCharacter.x < 1248) {
|
|
camx = 1120;
|
|
camy = oQueenHead.y + (oCharacter.y - oQueenHead.y) / 2;
|
|
} else if (phase == 2 && oCharacter.x > 1760 && oCharacter.x < 1888) {
|
|
camx = 1760;
|
|
camy = oQueenHead.y + (oCharacter.y - oQueenHead.y) / 2;
|
|
} else if (phase == 3 && oCharacter.x > 2080 && oCharacter.x < 2208) {
|
|
camx = 2080;
|
|
camy = oQueenHead.y + (oCharacter.y - oQueenHead.y) / 2;
|
|
} else if (abs(oCharacter.x - oQueenHead.x) < 250 && abs(oCharacter.y - oQueenHead.y) < 180) { // tweening?
|
|
camx = oQueenHead.x + ((oCharacter.x - oQueenHead.x) / 2);
|
|
camy = oQueenHead.y + (oCharacter.y - oQueenHead.y) / 2;
|
|
oCamera.focus = 0;
|
|
} else {
|
|
camx = oCharacter.x;
|
|
camy = oCharacter.y;
|
|
oCamera.focus = 0;
|
|
}
|
|
} // if (instance_exists(oQueenHead))
|
|
oCamera.smootin = 15;
|
|
if (oCamera.focus == 0) {
|
|
oCamera.focus = 1;
|
|
oCamera.focustime = 0;
|
|
}
|
|
oCamera.focustime += 1;
|
|
oCamera.lockx = 1;
|
|
oCamera.locky = 1;
|
|
oCamera.targetx = camx;
|
|
oCamera.targety = camy;
|
|
oCamera.snapx = 0;
|
|
oCamera.snapy = 0;
|
|
oCamera.smoothout = 40;
|
|
oCamera.alarm[0] = 2;
|
|
</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>col_front_x = x + 130;
|
|
col_back = collision_line(x, y, x, y + height_back, oSolid, true, true);
|
|
col2_back = collision_point(x, y + height_back + 1, oSolid, true, true);
|
|
col_front = collision_line(col_front_x, col_front_y, col_front_x, col_front_y + height_front, oSolid, true, true);
|
|
col2_front = collision_point(col_front_x, col_front_y + height_front + 1, oSolid, true, true);
|
|
if (col2_back < 0) {
|
|
y += 1;
|
|
} else if (col_back > 0) y -= 1;
|
|
if (col2_front < 0) {
|
|
col_front_y += 1;
|
|
} else if (col_front > 0) col_front_y -= 1;
|
|
image_angle = point_direction(x, y, col_front_x, col_front_y);
|
|
neck_x = lengthdir_x(140, image_angle + 17);
|
|
neck_y = lengthdir_y(140, image_angle + 17);
|
|
leg1f_x = lengthdir_x(129, image_angle + 15);
|
|
leg1f_y = lengthdir_y(129, image_angle + 15);
|
|
leg1b_x = lengthdir_x(37, image_angle + 43);
|
|
leg1b_y = lengthdir_y(37, image_angle + 43);
|
|
if (state == 0) {
|
|
head_target_x = x + neck_x + 50;
|
|
head_target_y = y + neck_y - 10;
|
|
head_obj.x = head_target_x;
|
|
head_obj.y = head_target_y;
|
|
height_target_front = 20;
|
|
height_target_back = 20;
|
|
height_front = 20;
|
|
height_back = 20;
|
|
head_obj.canbehit = 0;
|
|
if (statetime == 120) {
|
|
state = 1;
|
|
statetime = 0;
|
|
}
|
|
}
|
|
if (state == 1) {
|
|
if (statetime == 0) {
|
|
height_target_front = 20;
|
|
height_target_back = 20;
|
|
height_front = 20;
|
|
height_back = 20;
|
|
head_obj.state = 1;
|
|
head_obj.statetime = 0;
|
|
head_obj.canbehit = 0;
|
|
}
|
|
head_target_x = x + neck_x + 50;
|
|
head_target_y = y + neck_y - 10;
|
|
if (statetime == 60) targetx = 600;
|
|
if (statetime == 240) {
|
|
state = 3;
|
|
statetime = 0;
|
|
}
|
|
}
|
|
if (state == 2) { // Moving?
|
|
head_target_x = x + neck_x + 20;
|
|
head_target_y = y + neck_y;
|
|
height_target_front = 20;
|
|
height_target_back = 20;
|
|
maxspeed = 2;
|
|
if (point_distance(x, y, oCharacter.x, y) > 400) maxspeed = 4;
|
|
if (point_distance(x, y, oCharacter.x, y) > 500) maxspeed = 6;
|
|
if (x < 560) {
|
|
hspeed = lerp(maxspeed, hspeed, 0.1);
|
|
} else {
|
|
state = 3;
|
|
statetime = 0;
|
|
}
|
|
}
|
|
if (state == 3) {
|
|
if (statetime == 0) {
|
|
switch (phase) {
|
|
case 0:
|
|
height_target_front = 35;
|
|
height_target_back = 35;
|
|
break;
|
|
case 1:
|
|
height_target_front = 15;
|
|
height_target_back = 25;
|
|
break;
|
|
case 2:
|
|
height_target_front = 15;
|
|
height_target_back = 15;
|
|
break;
|
|
case 3:
|
|
height_target_front = 55;
|
|
height_target_back = 30;
|
|
break;
|
|
case 4:
|
|
height_target_front = 15;
|
|
height_target_back = 15;
|
|
break;
|
|
case 5:
|
|
height_target_front = 20;
|
|
height_target_back = 25;
|
|
break;
|
|
} // switch (phase)
|
|
head_obj.canbehit = 1;
|
|
} // if (statetime == 0)
|
|
head_target_x = x + neck_x + 50;
|
|
head_target_y = y + neck_y - 10;
|
|
if (statetime == 120) {
|
|
if (phase == 5) {
|
|
state = 10;
|
|
} else state = 4;
|
|
statetime = 0;
|
|
}
|
|
} // if (state == 3)
|
|
if (state == 4) {
|
|
if (statetime == 0) {
|
|
head_obj.canbehit = 1;
|
|
height_target_front = 20;
|
|
head_target_x = x + neck_x + 38;
|
|
head_target_y = y + neck_y + 12;
|
|
switch (phase) {
|
|
case 0:
|
|
height_target_front = 20;
|
|
height_target_back = 35;
|
|
break;
|
|
case 1:
|
|
height_target_front = 15;
|
|
height_target_back = 25;
|
|
break;
|
|
case 2:
|
|
height_target_front = 15;
|
|
height_target_back = 15;
|
|
break;
|
|
case 3:
|
|
height_target_front = 55;
|
|
height_target_back = 30;
|
|
break;
|
|
case 4:
|
|
height_target_front = 15;
|
|
height_target_back = 15;
|
|
break;
|
|
case 5:
|
|
height_target_front = 15;
|
|
height_target_back = 15;
|
|
break;
|
|
} // switch (phase)
|
|
head_attacks = 2;
|
|
head_obj.speedmulti = 1;
|
|
head_obj.attackdelay = 110;
|
|
if (head_obj.myhealth <= head_obj.starthealth / 4 * 3) {
|
|
head_attacks = 3;
|
|
head_obj.speedmulti = 1.5;
|
|
head_obj.attackdelay = 90;
|
|
}
|
|
if (head_obj.myhealth <= head_obj.starthealth / 4 * 2) {
|
|
head_attacks = 4;
|
|
head_obj.speedmulti = 2;
|
|
head_obj.attackdelay = 70;
|
|
}
|
|
if (head_obj.myhealth <= head_obj.starthealth / 4) {
|
|
head_attacks = 5;
|
|
head_obj.speedmulti = 2.5;
|
|
head_obj.attackdelay = 50;
|
|
}
|
|
} // if (statetime == 0)
|
|
if (statetime == 10) {
|
|
head_obj.state = 4;
|
|
head_obj.statetime = 0;
|
|
head_attacks -= 1;
|
|
}
|
|
if (statetime == 45) head_target_snap = 0;
|
|
if (statetime == 11) {
|
|
head_target_y = y + neck_y + 13;
|
|
if (phase == 1 || phase == 2) {
|
|
if (choose(0, 1) == 0) {
|
|
if (phase == 1) {
|
|
head_target_y = y + neck_y - 15;
|
|
} else head_target_y = y + neck_y - 10;
|
|
} else head_target_y = y + neck_y + 38;
|
|
}
|
|
}
|
|
if (statetime > 10 && head_obj.state == 0) {
|
|
head_target_x = x + neck_x + 24;
|
|
head_target_snap = 1;
|
|
if (head_attacks > 0) statetime = 1;
|
|
}
|
|
if (statetime == 170) {
|
|
state = 8;
|
|
statetime = 0;
|
|
}
|
|
with (oCharacter) if (state == 41) xVel = 4;
|
|
} // if (state == 4)
|
|
|
|
if (state == 8) { //added
|
|
if(phase == 3 && global.difficulty != 0) {
|
|
if (statetime == 0) {
|
|
height_target_front = 15;
|
|
height_target_back = 15;
|
|
targetx = phasetargetx[phase] - 40;
|
|
maxspeed = 1;
|
|
sfx_play(sndQueenRoar);
|
|
head_obj.canbehit = 0;
|
|
head_obj.push = 0;
|
|
head_obj.state = 6;
|
|
head_obj.statetime = 0;
|
|
}
|
|
head_target_x = x + neck_x + 40;
|
|
head_target_y = y + neck_y - 10;
|
|
if (statetime == 210) {
|
|
state = 5;
|
|
statetime = 0;
|
|
}
|
|
}
|
|
else {
|
|
state = 5;
|
|
statetime = 0;
|
|
}
|
|
} // if (state == 8)
|
|
|
|
|
|
if (state == 5) {
|
|
if (statetime == 0) {
|
|
switch (phase) {
|
|
case 0:
|
|
height_target_front = 35;
|
|
height_target_back = 35;
|
|
break;
|
|
case 1:
|
|
height_target_front = 15;
|
|
height_target_back = 25;
|
|
break;
|
|
case 2:
|
|
height_target_front = 15;
|
|
height_target_back = 15;
|
|
break;
|
|
case 3:
|
|
height_target_front = 25;
|
|
height_target_back = 20;
|
|
break;
|
|
case 4:
|
|
height_target_front = 15;
|
|
height_target_back = 15;
|
|
break;
|
|
case 5:
|
|
height_target_front = 15;
|
|
height_target_back = 15;
|
|
break;
|
|
} // switch (phase)
|
|
targetx = phasetargetx[phase] - 88;
|
|
maxspeed = 1;
|
|
sfx_play(sndQueenRoar);
|
|
head_obj.canbehit = 0;
|
|
head_obj.push = 0;
|
|
} // if (statetime == 0)
|
|
head_target_x = x + neck_x + 50;
|
|
head_target_y = y + neck_y + 20;
|
|
if (statetime > 60) {
|
|
if (phase == 1) head_target_y = y + neck_y - 30;
|
|
if (phase == 2) head_target_y = y + neck_y - 5;
|
|
}
|
|
if (statetime == 120) {
|
|
head_obj.state = 2;
|
|
head_obj.statetime = 0;
|
|
}
|
|
if (statetime == 180) targetx = phasetargetx[phase];
|
|
if (phase == 3 && statetime == 230) {
|
|
height_target_back = 20;
|
|
height_target_front = 55;
|
|
}
|
|
if (statetime == 360) {
|
|
state = 4;
|
|
statetime = -1;
|
|
}
|
|
} // if (state == 5)
|
|
if (state == 6) { // Fire breathe in, do music setting?
|
|
if (statetime == 0) {
|
|
if (oMusicV2.useMultistageMusic)
|
|
{
|
|
switch (phase)
|
|
{
|
|
case 0:
|
|
mus_stop(musQueenIntro);
|
|
with (oMusicV2) alarm[5] = -1;
|
|
mus_stop(musQueen);
|
|
mus_play_once(musQueenBreak);
|
|
oMusicV2.bossbgm = musQueenBreak; //added
|
|
break;
|
|
case 2:
|
|
mus_stop(musQueen2);
|
|
mus_play_once(musQueenBreak);
|
|
oMusicV2.bossbgm = musQueenBreak; //added
|
|
break;
|
|
}
|
|
}
|
|
|
|
switch (phase) {
|
|
case 0:
|
|
height_target_front = 35;
|
|
height_target_back = 35;
|
|
break;
|
|
case 1:
|
|
height_target_front = 15;
|
|
height_target_back = 25;
|
|
break;
|
|
case 2:
|
|
height_target_front = 15;
|
|
height_target_back = 15;
|
|
break;
|
|
case 3:
|
|
height_target_front = 45;
|
|
height_target_back = 30;
|
|
break;
|
|
case 4:
|
|
height_target_front = 15;
|
|
height_target_back = 15;
|
|
break;
|
|
case 5:
|
|
height_target_front = 15;
|
|
height_target_back = 15;
|
|
break;
|
|
} // switch (phase)
|
|
head_target_snap = 1;
|
|
targetx = phasetargetx[phase];
|
|
head_obj.canbehit = 0;
|
|
head_obj.push = 0;
|
|
} // if (statetime == 0)
|
|
head_target_x = x + neck_x + 30;
|
|
head_target_y = y + neck_y;
|
|
if (statetime < 120 && head_obj.state != 3) {
|
|
if (head_obj.state == 0) {
|
|
head_obj.state = 3;
|
|
head_obj.statetime = 0;
|
|
}
|
|
}
|
|
if (statetime == 400) {
|
|
state = 7;
|
|
statetime = 0;
|
|
}
|
|
if (statetime > 120 && point_distance(oQueen.x, oQueen.y, oCharacter.x, oQueen.y) > 350) {
|
|
state = 7;
|
|
statetime = 0;
|
|
head_obj.state = 0;
|
|
head_obj.statetime = 0;
|
|
head_obj.jawglowalpha = 0;
|
|
}
|
|
} // if (state == 6)
|
|
if (state == 7) { // Actual move???
|
|
if (statetime == 0) {
|
|
height_target_front = 25;
|
|
height_target_back = 25;
|
|
head_obj.push = 1;
|
|
targetx = phasetargetx[phase];
|
|
}
|
|
head_obj.canbehit = 0;
|
|
if (point_distance(x, y, oCharacter.x, y) < 260) {
|
|
head_target_x = oCharacter.x - 60;
|
|
head_target_y = oCharacter.y - 30;
|
|
} else {
|
|
head_target_x = x + neck_x + 50;
|
|
head_target_y = y + neck_y;
|
|
}
|
|
with (oCharacter) if (state == 41) {
|
|
xVel = 4;
|
|
if (statetime == 1) yVel = -4.5;
|
|
}
|
|
if (x == targetx) {
|
|
state = 3;
|
|
statetime = -1;
|
|
oQueenHead.myhealth = oQueenHead.starthealthcorridors;
|
|
if (phase == 3) oQueenHead.myhealth = oQueenHead.starthealthbigroom;
|
|
if (phase == 4) {
|
|
phase = 5;
|
|
oQueenHead.myhealth = oQueenHead.starthealthlast;
|
|
}
|
|
}
|
|
maxspeed = 1;
|
|
if (point_distance(x, y, oCharacter.x, y) > 400) maxspeed = 2;
|
|
if (point_distance(x, y, oCharacter.x, y) > 460) maxspeed = 3;
|
|
} // if (state == 7)
|
|
if (state == 10) {
|
|
if (statetime == 0) {
|
|
height_target_front = 20;
|
|
head_target_x = x + neck_x + 30;
|
|
head_target_y = y + neck_y;
|
|
head_obj.state = 10;
|
|
head_obj.statetime = 0;
|
|
head_obj.canbehit = 1;
|
|
sfx_play(sndQueenRoarShort);
|
|
}
|
|
if (statetime == 60) sfx_play(sndQueenAttack);
|
|
if (statetime > 60) {
|
|
head_target_x = max(784, oCharacter.x - 60);
|
|
head_target_y = oCharacter.y - 38;
|
|
if (oCharacter.state == 53 || oCharacter.state == 54 || oCharacter.state == 55) {
|
|
head_target_x = x + neck_x + 40;
|
|
head_target_y = y + neck_y + 20;
|
|
}
|
|
}
|
|
if (statetime == 300 && (oCharacter.state == 53 || oCharacter.state == 54)) {
|
|
head_obj.state = 11;
|
|
head_obj.statetime = 0;
|
|
state = 3;
|
|
statetime = 0;
|
|
}
|
|
} // if (state == 10)
|
|
if (state == 100) {
|
|
if (statetime == 0) {
|
|
height_target_front = 10;
|
|
height_target_back = 10;
|
|
head_obj.push = 0;
|
|
head_obj.canhit = 0;
|
|
head_obj.state = 100;
|
|
head_obj.statetime = 0;
|
|
leg1f_obj.canhit = 0;
|
|
leg1b_obj.canhit = 0;
|
|
head_target_x = x + neck_x + 40;
|
|
head_target_y = y + neck_y + 5;
|
|
alarm[9] = 1;
|
|
alarm[10] = 300;
|
|
head_obj.alarm[9] = 1;
|
|
head_obj.alarm[10] = 280;
|
|
canhit = 0;
|
|
mus_fadeout(musQueen);
|
|
mus_fadeout(musQueen3);
|
|
oMusicV2.bossbgm = sndJump;
|
|
sfx_play(sndQueenDeath);
|
|
global.event[303] = 1;
|
|
}
|
|
if (statetime > 40) {
|
|
if (head_target_y < 160) head_target_y += 2;
|
|
}
|
|
} // if (state == 100)
|
|
if (x != targetx) {
|
|
if (targetx > x && hspeed < maxspeed) hspeed += 0.1;
|
|
if (targetx < x && hspeed > -maxspeed) hspeed -= 0.1;
|
|
if (point_distance(x, y, targetx, y) <= maxspeed) {
|
|
x = targetx;
|
|
hspeed = 0;
|
|
}
|
|
}
|
|
height_front = height_target_front + sin(sin_timer) * 2;
|
|
height_back = height_target_back + sin(sin_timer + 10) * 2;
|
|
sin_timer += 0.06;
|
|
if (sin_timer > 99999999) sin_timer = 0;
|
|
statetime += 1;
|
|
</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 (state != 100) with (other) event_user(0);
|
|
</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="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 ((state == 7) && (phase < 2)) {
|
|
damage_player_push(damage/2, 1, 90, 0, 4);
|
|
}
|
|
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>with (front_obj) instance_destroy();
|
|
with (leg1f_obj) instance_destroy();
|
|
with (leg2f_obj) instance_destroy();
|
|
with (leg1b_obj) instance_destroy();
|
|
with (leg2b_obj) instance_destroy();
|
|
</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);
|
|
}
|
|
|
|
if (!flashing) {
|
|
draw_self();
|
|
} else {
|
|
draw_sprite_ext(sprite_index, -1, x, y, 1, 1, image_angle, make_color_rgb(255 - fxtimer * 63, 255 - fxtimer * 63, 255 - fxtimer * 63), 1);
|
|
draw_set_blend_mode(bm_add);
|
|
repeat (2) draw_sprite_ext(sprite_index, -1, x, y, 1, 1, image_angle, -1, 1 - fxtimer * 0.25);
|
|
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>
|