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

106 lines
3.4 KiB

if (frozen == 0)
{
if (state == 0)
{
shield_angle = (5 + (sin(time) * 10))
shield_offset = (sin((time + 2)) * -1.5)
time += 0.15
hspeed = lerp(hspeed, (0.5 * facing), 0.05)
vspeed = 0
if (collision_line((x + (facing * 25)), (y - 4), (x + (facing * 25)), (y + 4), oSolid, true, true) || (facing == 1 && x > limit_r) || (facing == -1 && x < limit_l))
facing = (-facing)
if collision_line((x + (facing * 30)), (y - 4), (x + (facing * 30)), (y + 4), oHalzynShield, true, true)
facing = (-facing)
if collision_line(x, y, x, (y + 120), oCharacter, true, true)
{
state = 1
statetime = 0
startx = x
starty = y
speed = 0
}
}
if (state == 1)
{
if (statetime < 30)
{
shield_angle = lerp(shield_angle, -20, 0.2)
shield_offset = lerp(shield_offset, 0, 0.1)
}
if (statetime >= 30 && statetime < 160)
{
direction = point_direction(x, y, oCharacter.x, (oCharacter.y - 16))
speed = lerp(speed, 2.7, 0.04)
if ((oCharacter.state == oCharacter.BALL && point_distance(x, y, oCharacter.x, (oCharacter.y - 16)) < 3) || (oCharacter.state != oCharacter.BALL && point_distance(x, y, oCharacter.x, (oCharacter.y - 16)) < 8))
{
state = 2
statetime = -1
speed = 0
}
if ((statetime > 60 && collision_line((x - 16), (y + 10), (x + 16), (y + 10), oSolid, true, true)) || collision_line((x + 20), (y - 8), (x + 20), (y + 8), oSolid, true, true) || collision_line((x - 20), (y - 8), (x - 20), (y + 8), oSolid, true, true))
{
state = 2
statetime = -1
speed = 0
}
shield_angle = lerp(shield_angle, 30, 0.2)
}
if (statetime >= 160)
speed *= 0.95
if (statetime >= 180)
{
state = 2
statetime = -1
}
}
if (state == 2)
{
direction = point_direction(x, y, startx, starty)
speed = lerp(speed, 2, 0.1)
shield_angle = lerp(shield_angle, 5, 0.1)
if (point_distance(x, y, startx, starty) < 2)
{
state = 0
statetime = -1
time = 0
vspeed = 0
x = startx
y = starty
}
}
}
else
speed = 0
event_inherited()
if (state == 100)
{
if (instance_exists(shield1) && instance_exists(shield2))
{
deb = instance_create(shield1.x, shield1.y, oDebris)
deb.image_angle = shield1.image_angle
deb.sprite_index = sHalzynShield
deb.direction = (0 + random(30))
deb.speed = (0.5 + random(3))
deb.gravity = 0.1
deb.playsound = 0
deb = instance_create(shield2.x, shield2.y, oDebris)
deb.image_angle = shield2.image_angle
deb.sprite_index = sHalzynShield
deb.image_xscale = -1
deb.direction = (180 - random(30))
deb.speed = (0.5 + random(3))
deb.gravity = 0.1
deb.playsound = 0
with (shield1)
instance_destroy()
with (shield2)
instance_destroy()
}
enemy_death()
}
if (instance_exists(shield1) && instance_exists(shield2))
{
shield1.fxtimer = fxtimer
shield2.fxtimer = fxtimer
}