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_oMGamma_Step_0.gml

545 lines
14 KiB

if (active == 1)
{
if (state == 1)
{
xVel = 0
yVel = 0
}
if (state == 3)
{
if chasing
{
targetx = oCharacter.x
targety = (oCharacter.y - 32)
if (shell.hitting && hitandrun)
{
xVel = 0
yVel = 0
event_user(1)
with (shell)
hitting = 0
}
}
else if (distance_to_object(oCharacter) > 120)
{
chasing = 1
alarm[3] = awaydelay
}
if (targety > y)
yVel += (myaccely * 1.4)
if ((targety - 24) < y)
yVel -= myaccely
if (targetx > x)
xVel += myaccelx
if (targetx < x)
xVel -= myaccelx
if ((isCollisionRight(1) && xVel > 0) || (isCollisionLeft(1) && xVel < 0))
xVel = 0
if ((isCollisionBottom(1) && yVel > 0) || (isCollisionTop(1) && yVel < 0))
yVel = 0
rotspeed = 0.5
if (abs(xVel) > 1)
targetangle = ((-abs(xVel)) * 3)
else
targetangle = 0
legrotspeed = 1
legfa1t = ((-abs(xVel)) * 4)
legfb1t = ((-abs(xVel)) * 4)
legba1t = ((-abs(xVel)) * 4)
legbb1t = ((-abs(xVel)) * 4)
legfa2t = (abs(xVel) * 9)
legfb2t = (abs(xVel) * 9)
legba2t = (abs(xVel) * 9)
legbb2t = (abs(xVel) * 9)
if ((canspmove || canspmove2) && statetime > 60 && spdelay == 0 && dodging == 0)
{
nextsp = 0
if (random(1) < 0.5)
{
if canspmove
nextsp = 1
}
else if canspmove2
nextsp = 2
if (nextsp == 1)
{
state = 7
spdelay = 180
statetime = 0
turndelay = 5
}
else if (nextsp == 2)
{
state = 4
spdelay = 150
statetime = 0
turndelay = 5
}
}
if (candodge && dodgedelay == 0 && ((instance_exists(oMissile) && distance_to_object(oMissile) < 64) || (instance_exists(oBeam) && distance_to_object(oBeam) < 64)) && ((facing == 1 && oCharacter.x > x) || (facing == -1 && oCharacter.x < x)))
{
if ((oCharacter.y - 48) > y)
{
yVel = 2.5
if (oCharacter.x > x)
xVel = -3.5
if (oCharacter.x < x)
xVel = 3.5
}
if ((oCharacter.y - 48) < y)
{
yVel = -4
if (oCharacter.x > x)
xVel = 1
if (oCharacter.x < x)
xVel = -1
}
dodging = 1
dodgetime = 0
dodgedelay = 300
alarm[2] = 1
currentangle = -10
canbehit = 0
sfx_play(sndMGammaDodge)
}
if (dodging && dodgetime >= 8)
{
dodging = 0
canbehit = 1
}
}
if (state == 4)
{
if ((oCharacter.y - 48) > y)
yVel += 0.4
if ((oCharacter.y - 48) < y)
yVel += -0.2
if ((oCharacter.y - 80) > y)
yVel *= 0.95
if (distance_to_object(oCharacter) < 128)
{
if (oCharacter.x > x)
xVel += -0.1
if (oCharacter.x < x)
xVel += 0.1
}
xVel *= 0.98
rotspeed = 0.5
targetangle = -20
legrotspeed = 0.5
legfa1t = -30
legfb1t = -30
legba1t = -30
legbb1t = -30
legfa2t = 40
legfb2t = 40
legba2t = 40
legbb2t = 40
if (statetime > 50)
{
state = 5
statetime = 0
turndelay = 70
alarm[2] = 1
sfx_play(sndMGammaSP)
}
}
if (state == 5)
{
if (statetime < 10)
xVel *= 0.98
if (statetime == 10)
{
if (oCharacter.x > x)
xVel = 6
if (oCharacter.x < x)
xVel = -6
yVel = 0
grabber = instance_create(x, y, oMGammaGrab)
}
if ((oCharacter.y - 54) > y)
yVel += 0.2
if ((oCharacter.y - 64) < y)
yVel += -0.2
if ((isCollisionBottom(1) && yVel > 0) || (isCollisionTop(1) && yVel < 0))
yVel = 0
if (yVel > 2)
yVel = 2
if (yVel < -2)
yVel = -2
rotspeed = 0.5
targetangle = -8
legrotspeed = 2
legfa1t = -20
legfb1t = -20
legba1t = -20
legbb1t = -20
legfa2t = -30
legfb2t = -30
legba2t = -30
legbb2t = -30
if (statetime > 60)
{
state = 3
statetime = 0
turndelay = 30
canbehit = 1
}
if (statetime > 10 && (isCollisionRight(1) || isCollisionLeft(1)))
{
state = 6
statetime = 0
turndelay = 60
with (grabber)
instance_destroy()
}
if (oCharacter.state == 38)
{
state = 9
statetime = 0
canbehit = 1
}
}
if (state == 6)
{
xVel = 0
yVel = 0
rotspeed = 0.25
targetangle = 0
if (statetime > 30)
{
state = 3
statetime = 0
turndelay = 10
}
}
if (state == 7)
{
xVel = 0
yVel = 0
rotspeed = 0.5
targetangle = 0
legrotspeed = 2
legfa1t = 20
legfb1t = 20
legba1t = 20
legbb1t = 20
legfa2t = 40
legfb2t = 40
legba2t = 40
legbb2t = 40
if (statetime == 5)
sfx_play(sndMGammaSP2)
if (statetime > 30)
{
state = 8
statetime = 0
}
}
if (state == 8)
{
xVel = 0
yVel = 0
rotspeed = 0.5
targetangle = 0
legrotspeed = 5
legfa1t = -20
legfb1t = -20
legba1t = -20
legbb1t = -20
legfa2t = -30
legfb2t = -30
legba2t = -30
legbb2t = -30
if (statetime == 4)
{
elec = instance_create((x + (32 * facing)), y, oMGammaElec)
elec.facing = facing
elec.rotspeed = elecrotspeed
if (facing == 1)
elec.image_angle = -130
if (facing == -1)
elec.image_angle = 310
sfx_play(sndMGammaElec)
}
if (statetime > 15 && (!instance_exists(oMGammaElec)))
{
state = 3
statetime = 0
turndelay = 10
yVel = -0.5
}
}
if (state == 9)
{
if (facing == 1 && xVel > -1.5)
xVel -= 0.05
if (facing == -1 && xVel < 1.5)
xVel += 0.05
yVel = -0.5
rotspeed = 0.2
targetangle = 10
legrotspeed = 1
legfa1t = 20
legfb1t = 20
legba1t = 20
legbb1t = 20
legfa2t = 10
legfb2t = 10
legba2t = 10
legbb2t = 10
if (statetime == 0)
{
spark = instance_create(oCharacter.x, oCharacter.y, oElectricSpark)
arms = instance_create(x, y, oMGammaArms)
if (global.difficulty >= 2)
xVel *= 0.5
}
spark.image_alpha = 1
if (statetime > 100)
{
state = 3
statetime = 0
turndelay = 10
with (arms)
instance_destroy()
}
}
if (oCharacter.x > x && facing == -1 && (state == 3 || state == 4))
{
if (turndelay > 0)
turndelay -= 1
if (turndelay == 0)
{
facing = 1
turndelay = 5
turning = 1
myspr = sprite_index
sprite_index = sMGammaTurn
image_index = 0
}
}
if (oCharacter.x < x && facing == 1 && (state == 3 || state == 4))
{
if (turndelay > 0)
turndelay -= 1
if (turndelay == 0)
{
facing = -1
turndelay = 5
turning = 1
myspr = sprite_index
sprite_index = sMGammaTurn
image_index = 0
}
}
if turning
image_speed = 0.5
else
image_speed = 0.5
if flashing
{
if (statetime == 0)
{
if (oCharacter.x > x)
xVel = -2
if (oCharacter.x < x)
xVel = 2
yVel = -2
dodgedelay = 20
spdelay = 40
with (oMGammaElec)
instance_destroy()
if (myhealth > 0)
state = 3
}
if ((isCollisionRight(1) && xVel > 0) || (isCollisionLeft(1) && xVel < 0))
xVel *= -1
xVel *= 0.95
yVel *= 0.95
rotspeed = 2
targetangle = 0
legrotspeed = 2
legfa1a = 20
legfa1t = 0
legfb1a = 20
legfb1t = 0
legfa2a = 40
legfa2t = 0
legfb2a = 40
legfb2t = 0
legba1a = 20
legba1t = 0
legbb1a = 20
legbb1t = 0
legba2a = 40
legba2t = 0
legbb2a = 40
legbb2t = 0
if (statetime >= flashtime)
{
canbehit = 1
flashing = 0
statetime = 0
}
}
if (state != 5)
{
if (yVel > maxspeedy)
yVel = maxspeedy
if (yVel < (-maxspeedy))
yVel = (-maxspeedy)
if (xVel > maxspeedx)
xVel = maxspeedx
if (xVel < (-maxspeedx))
xVel = (-maxspeedx)
}
if (currentangle > targetangle)
currentangle -= rotspeed
if (currentangle < targetangle)
currentangle += rotspeed
image_angle = (currentangle * facing)
if (legfa1a > legfa1t)
legfa1a -= legrotspeed
if (legfa1a < legfa1t)
legfa1a += legrotspeed
if (legfa2a > legfa2t)
legfa2a -= legrotspeed
if (legfa2a < legfa2t)
legfa2a += legrotspeed
if (legfb1a > legfb1t)
legfb1a -= legrotspeed
if (legfb1a < legfb1t)
legfb1a += legrotspeed
if (legfb2a > legfb2t)
legfb2a -= legrotspeed
if (legfb2a < legfb2t)
legfb2a += legrotspeed
if (legba1a > legba1t)
legba1a -= legrotspeed
if (legba1a < legba1t)
legba1a += legrotspeed
if (legba2a > legba2t)
legba2a -= legrotspeed
if (legba2a < legba2t)
legba2a += legrotspeed
if (legbb1a > legbb1t)
legbb1a -= legrotspeed
if (legbb1a < legbb1t)
legbb1a += legrotspeed
if (legbb2a > legbb2t)
legbb2a -= legrotspeed
if (legbb2a < legbb2t)
legbb2a += legrotspeed
legfa1da = (legfa1a * facing)
legfa2da = (legfa2a * facing)
legfb1da = (legfb1a * facing)
legfb2da = (legfb2a * facing)
legba1da = (legba1a * facing)
legba2da = (legba2a * facing)
legbb1da = (legbb1a * facing)
legbb2da = (legbb2a * facing)
if (global.waterlevel != 0 && y > global.waterlevel)
inwater = 1
else
inwater = 0
if inwater
speedmulti = 0.6
else
speedmulti = 1
moveTo((xVel * speedmulti), (yVel * speedmulti))
}
if (state == 100)
{
with (shell)
instance_destroy()
xVel *= 0.98
yVel *= 0.98
}
if instance_exists(shell)
{
shell.x = x
shell.y = y
shell.image_xscale = facing
shell.image_angle = image_angle
}
statetime += 1
if (spdelay > 0)
spdelay -= 1
if (dodgedelay > 0)
dodgedelay -= 1
if dodging
dodgetime += 1
if (fxtimer < 5)
fxtimer += 1
else
fxtimer = 0
drawefangs = (!drawefangs)
legfa1x = (lengthdir_x(4, (currentangle + 330)) * facing)
legfa1y = lengthdir_y(4, (currentangle + 330))
legfa2x = (lengthdir_x(24, ((currentangle + legfa1a) + 255)) * facing)
legfa2y = lengthdir_y(24, ((currentangle + legfa1a) + 255))
legfb1x = (lengthdir_x(10, (currentangle + 217)) * facing)
legfb1y = lengthdir_y(10, (currentangle + 217))
legfb2x = (lengthdir_x(18, ((currentangle + legfb1a) + 230)) * facing)
legfb2y = lengthdir_y(18, ((currentangle + legfb1a) + 230))
legba1x = (lengthdir_x(16, (currentangle + 294)) * facing)
legba1y = lengthdir_y(16, (currentangle + 294))
legba2x = (lengthdir_x(9, ((currentangle + legba1a) + 265)) * facing)
legba2y = lengthdir_y(9, ((currentangle + legba1a) + 265))
legbb1x = (lengthdir_x(14, (currentangle + 230)) * facing)
legbb1y = lengthdir_y(14, (currentangle + 230))
legbb2x = (lengthdir_x(12, ((currentangle + legfb1a) + 256)) * facing)
legbb2y = lengthdir_y(12, ((currentangle + legfb1a) + 256))
if instance_exists(grabber)
{
grabber.x = ((x + legba1x) + legba2x)
grabber.y = ((y + legba1y) + legba2y)
if (state != 5)
{
with (grabber)
instance_destroy()
}
}
if (global.metdead[myid] == 1 && (!dead))
{
myhealth = 0
state = 100
statetime = 0
alarm[10] = 1
alarm[11] = 160
flashtime = 180
turndelay = 180
PlaySoundMono(deathsound)
check_areaclear()
global.monstersalive -= 1
if (global.monstersalive < 0)
global.monstersalive = 0
if (global.monstersalive == 0)
{
mus_fadeout(musGammaFight)
oMusicV2.bossbgm = 0
}
if instance_exists(grabber)
{
with (grabber)
instance_destroy()
}
if instance_exists(arms)
{
with (arms)
instance_destroy()
}
if instance_exists(shell)
{
with (shell)
instance_destroy()
}
global.dmap[mapposx, mapposy] = 11
with (oControl)
event_user(2)
dead = 1
xVel = 0
yVel = 0
}