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.
207 lines
5.0 KiB
207 lines
5.0 KiB
var angle, ang;
|
|
if (fxtimer < 10)
|
|
fxtimer += 1
|
|
else
|
|
fxtimer = 0
|
|
if (flashing > 0)
|
|
flashing -= 1
|
|
if (state == 0)
|
|
{
|
|
image_alpha = 1
|
|
depth = lastDepth
|
|
sprite_index = lastSprite
|
|
image_index = lastFrame
|
|
image_angle = lastAngle
|
|
image_xscale = lastFacing
|
|
image_xscale = lastYscale
|
|
image_speed = 0
|
|
state = 1
|
|
statetime = 0
|
|
xoffset = (sprite_get_xoffset(lastSprite) - mean(sprite_get_bbox_left(lastSprite), sprite_get_bbox_right(lastSprite)))
|
|
lastXPos -= xoffset
|
|
yoffset = (sprite_get_yoffset(lastSprite) - mean(sprite_get_bbox_top(lastSprite), sprite_get_bbox_bottom(lastSprite)))
|
|
lastYPos -= yoffset
|
|
if (frozenAngle != 0)
|
|
drawAngle = frozenAngle
|
|
else
|
|
drawAngle = lastAngle
|
|
if (sprite_index == sRamulken)
|
|
sprite_index = sRamulkenNoShield
|
|
if (lastEnemy == oCavedropper || lastEnemy == oBlobAir || lastEnemy == oBlobWater || lastEnemy == oGawron || lastEnemy == oYumee || lastEnemy == oSkreek || lastEnemy == oErisSegment || lastEnemy == oErisBody2 || lastEnemy == oMeboid || lastEnemy == oMeboid2)
|
|
reform = -1
|
|
}
|
|
if (state == 1)
|
|
{
|
|
if (statetime == 0)
|
|
PlaySoundMono(sndXMorph1)
|
|
if (statetime <= 40)
|
|
{
|
|
sizeX += 0.12
|
|
sizeY += 0.08
|
|
}
|
|
if (statetime >= 40)
|
|
{
|
|
sizeX -= 0.12
|
|
sizeY -= 0.08
|
|
if (statetime == 40)
|
|
{
|
|
collectable = 1
|
|
sprite_index = xtype
|
|
depth = -200
|
|
image_index = 0
|
|
image_speed = 0.2
|
|
image_angle = 0
|
|
image_xscale = 1
|
|
image_yscale = 1
|
|
if (xvariant == 1)
|
|
{
|
|
image_xscale = 0.8
|
|
image_yscale = 0.8
|
|
}
|
|
}
|
|
if (statetime >= 81)
|
|
{
|
|
state = 2
|
|
statetime = 0
|
|
}
|
|
}
|
|
}
|
|
if (state == 2)
|
|
{
|
|
move = 1
|
|
if (statetime == 0)
|
|
collectable = 1
|
|
if (counter > 0)
|
|
{
|
|
move = 0
|
|
counter--
|
|
}
|
|
else
|
|
{
|
|
if (orbitCounter > 0)
|
|
orbitCounter--
|
|
else
|
|
{
|
|
angle = random(360)
|
|
if (oCharacter.chargebeam == 0)
|
|
{
|
|
orbitX = (xstart + lengthdir_x(32, angle))
|
|
orbitY = (ystart + lengthdir_y(32, angle))
|
|
}
|
|
else if (oCharacter.chargebeam >= 1)
|
|
{
|
|
orbitX = oCharacter.x
|
|
orbitY = (oCharacter.y - (oCharacter.sprite_height / 2))
|
|
}
|
|
orbitCounter = irandom_range(15, 25)
|
|
}
|
|
velX = clamp(velX, -4, 4)
|
|
velY = clamp(velY, -4, 4)
|
|
}
|
|
xstart += originVelX
|
|
ystart += originVelY
|
|
if (reform >= 0.5 && statetime >= 155)
|
|
{
|
|
state = 4
|
|
statetime = 0
|
|
collectable = 0
|
|
}
|
|
else if (statetime >= 620)
|
|
{
|
|
state = 3
|
|
statetime = 0
|
|
}
|
|
}
|
|
if (state == 3)
|
|
{
|
|
move = 1
|
|
orbitX += xExit
|
|
orbitY += yExit
|
|
velX = clamp(velX, -4, 4)
|
|
velY = clamp(velY, -4, 4)
|
|
}
|
|
if (state == 4)
|
|
{
|
|
flashing = 2
|
|
if (statetime == 0)
|
|
{
|
|
if (lastEnemy != oSkorp && lastEnemy != oGlowFly)
|
|
lastAngle = 0
|
|
if (lastEnemy == oHalzyn)
|
|
drawHalzynShields = 1
|
|
drawAngle = lastAngle
|
|
}
|
|
if (statetime < 120)
|
|
{
|
|
move = 1
|
|
orbitX = lastXPos
|
|
orbitY = lastYPos
|
|
velX = clamp(velX, -3, 3)
|
|
velY = clamp(velY, -3, 3)
|
|
}
|
|
if (statetime > 120 && point_distance(x, y, lastXPos, lastYPos) > 2)
|
|
{
|
|
move = 0
|
|
move_towards_point(lastXPos, lastYPos, 2)
|
|
}
|
|
else if (point_distance(x, y, lastXPos, lastYPos) <= 2)
|
|
{
|
|
move = 0
|
|
x = lastXPos
|
|
y = lastYPos
|
|
speed = 0
|
|
state = 5
|
|
statetime = 0
|
|
}
|
|
}
|
|
if (state == 5)
|
|
{
|
|
if (statetime == 0)
|
|
PlaySoundMono(sndXMorph1)
|
|
if (statetime <= 40)
|
|
{
|
|
sizeX += 0.12
|
|
sizeY += 0.08
|
|
}
|
|
if (statetime >= 40)
|
|
{
|
|
sizeX -= 0.12
|
|
sizeY -= 0.08
|
|
if (statetime == 40)
|
|
{
|
|
image_speed = 0
|
|
sprite_index = lastSprite
|
|
image_xscale = lastFacing
|
|
image_index = 0
|
|
depth = lastDepth
|
|
lastEnemyX = (x + xoffset)
|
|
lastEnemyY = (y + yoffset)
|
|
}
|
|
if (statetime >= 81)
|
|
{
|
|
enemy = instance_create((lastXPos + xoffset), (lastYPos + yoffset), lastEnemy)
|
|
enemy.facing = lastFacing
|
|
enemy.myhealth = (enemy.myhealth / 2)
|
|
enemy.timer = lastEnemyTimer
|
|
enemy.rotspeed = lastEnemyRotspeed
|
|
enemy.myspeed = lastEnemyMyspeed
|
|
enemy.offset = lastEnemyOffset
|
|
enemy.moveratio = lastEnemyMoveratio
|
|
enemy.movesteps = lastEnemyMovesteps
|
|
enemy.image_angle = lastAngle
|
|
if (lastEnemy == oHalzyn)
|
|
enemy.glow = lastEnemyGlow
|
|
instance_destroy()
|
|
}
|
|
}
|
|
}
|
|
if (move == 1)
|
|
{
|
|
ang = point_direction(x, y, orbitX, orbitY)
|
|
velX += lengthdir_x(0.2, ang)
|
|
velY += lengthdir_y(0.2, ang)
|
|
x += velX
|
|
y += velY
|
|
}
|
|
statetime += 1
|