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.
AM2R-Multitroid-Fair-Team-PVP/Export_Code/gml_Object_oQueenHead_Step_...

393 lines
9.0 KiB

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 == 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 == 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 == 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)
if (global.currentsuit == 1)
global.playerhealth -= (ceil(200) * oControl.mod_diffmult)
if (global.currentsuit == 2)
{
if (global.item[5] == 0)
global.playerhealth -= (ceil(200) * oControl.mod_diffmult)
else
global.playerhealth -= (ceil(100) * oControl.mod_diffmult)
}
if (global.playerhealth <= 0 && state != DEFEATED)
{
alarm[0] = 6
state = DEFEATED
}
}
sfx_play(sndGFTrooperHit)
}
if (statetime == 120)
{
state = 0
statetime = -1
}
}
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 == 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