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.
593 lines
12 KiB
593 lines
12 KiB
if (eye.myhealth < 0)
|
|
state = 100
|
|
aim_x = oCharacter.x
|
|
aim_y = oCharacter.y
|
|
if (state == 0)
|
|
{
|
|
if (statetime == 60)
|
|
{
|
|
with (oA4TileLight1)
|
|
color = 1
|
|
sfx_play(sndTesterStartup)
|
|
}
|
|
if (statetime > 60)
|
|
{
|
|
if (eye.shutter_frame < 4)
|
|
eye.shutter_frame += 0.25
|
|
}
|
|
if (statetime == 120)
|
|
{
|
|
enableforcefield = 1
|
|
glass.enabled = 1
|
|
sfx_play(sndTesterBarrierUp)
|
|
}
|
|
if (statetime == 150)
|
|
{
|
|
if file_exists("musTester.ogg")
|
|
{
|
|
mus_play(musTester)
|
|
oMusicV2.bossbgm = 369
|
|
}
|
|
else
|
|
{
|
|
mus_play(musAncientGuardian)
|
|
oMusicV2.bossbgm = 263
|
|
}
|
|
}
|
|
if (statetime == 240)
|
|
{
|
|
state = 1
|
|
statetime = 0
|
|
eye.canbehit = 1
|
|
scan_log(35, get_text("ScanEvents", "ScanMechanism"), 180, 0)
|
|
}
|
|
}
|
|
if (state == 1)
|
|
{
|
|
if (statetime == 0)
|
|
{
|
|
x = round(x)
|
|
y = round(y)
|
|
targetx = 160
|
|
if (y >= 480)
|
|
targety = 100
|
|
else
|
|
targety = 860
|
|
target_soff = 0
|
|
target_coff = 0
|
|
target_angle = 0
|
|
rot_speed = 5
|
|
sangle_timer = 60
|
|
if (instance_number(oTesterShield) == 4)
|
|
change_time = 360
|
|
if (instance_number(oTesterShield) == 3)
|
|
change_time = 300
|
|
if (instance_number(oTesterShield) == 2)
|
|
change_time = 240
|
|
if (instance_number(oTesterShield) == 1)
|
|
change_time = 180
|
|
if (instance_number(oTesterShield) == 0)
|
|
change_time = 120
|
|
}
|
|
if (y <= 120)
|
|
targety = 860
|
|
if (y >= 840)
|
|
targety = 100
|
|
if (instance_number(oTesterShield) == 4)
|
|
movespeed = 1
|
|
if (instance_number(oTesterShield) == 3)
|
|
movespeed = 1.5
|
|
if (instance_number(oTesterShield) == 2)
|
|
movespeed = 2
|
|
if (instance_number(oTesterShield) == 1)
|
|
movespeed = 2.5
|
|
if (instance_number(oTesterShield) == 0)
|
|
movespeed = 3
|
|
if (point_distance(x, y, oCharacter.x, oCharacter.y) > 220)
|
|
movespeed = 1
|
|
if (statetime > 60 && statetime < 260)
|
|
{
|
|
if (sangle_timer > 0)
|
|
sangle_timer -= 1
|
|
else
|
|
{
|
|
starget_angle = (floor(random_range(0, 3.9)) * 90)
|
|
sangle_timer = 120
|
|
sfx_play(sndTesterRotate)
|
|
}
|
|
}
|
|
if (statetime >= change_time)
|
|
{
|
|
if (attacks == 0)
|
|
{
|
|
if (instance_number(oTesterShield) == 4)
|
|
next_attack = 7
|
|
else
|
|
next_attack = 2
|
|
}
|
|
if (attacks == 1 || attacks == 3)
|
|
next_attack = choose(3, 4, 5, 6)
|
|
if (attacks == 2)
|
|
next_attack = 2
|
|
attacks += 1
|
|
if (attacks > 3)
|
|
attacks = 0
|
|
state = next_attack
|
|
statetime = 0
|
|
}
|
|
}
|
|
if (state == 2)
|
|
{
|
|
if (statetime == 0)
|
|
{
|
|
targetx = 160
|
|
targety = y
|
|
movespeed = 0
|
|
target_soff = soffmax
|
|
target_coff = coffmax
|
|
rot_speed = 5
|
|
with (oTesterCannon)
|
|
{
|
|
type = 0
|
|
event_user(2)
|
|
}
|
|
sfx_play(sndTesterCannonArm)
|
|
}
|
|
if (statetime == 50)
|
|
{
|
|
with (oTesterCannon)
|
|
open = 1
|
|
}
|
|
if (statetime == 60)
|
|
target_angle = 45
|
|
if (statetime == 70)
|
|
{
|
|
with (oTesterCannon)
|
|
event_user(0)
|
|
}
|
|
if (statetime == 90)
|
|
target_angle = 90
|
|
if (statetime == 100)
|
|
{
|
|
with (oTesterCannon)
|
|
event_user(0)
|
|
}
|
|
if (statetime == 110)
|
|
target_angle = 45
|
|
if (statetime == 120)
|
|
{
|
|
with (oTesterCannon)
|
|
event_user(0)
|
|
}
|
|
if (statetime == 130)
|
|
{
|
|
with (oTesterCannon)
|
|
open = 0
|
|
}
|
|
if (statetime == 200)
|
|
{
|
|
state = 1
|
|
statetime = -1
|
|
}
|
|
}
|
|
if (state == 3)
|
|
{
|
|
if (statetime == 0)
|
|
{
|
|
targetx = 100
|
|
targety = 120
|
|
movespeed = 5
|
|
target_soff = soffmax
|
|
target_coff = coffmax
|
|
target_angle = 180
|
|
rot_speed = 5
|
|
with (oTesterCannon)
|
|
{
|
|
type = 1
|
|
event_user(2)
|
|
}
|
|
sfx_play(sndTesterCannonArm)
|
|
}
|
|
if (statetime == 100)
|
|
{
|
|
with (oTesterCannon)
|
|
open = 1
|
|
}
|
|
if (statetime == 130)
|
|
{
|
|
with (oTesterCannon)
|
|
event_user(0)
|
|
}
|
|
if (statetime == 190)
|
|
{
|
|
targetx = 125
|
|
targety = 300
|
|
target_angle = 270
|
|
}
|
|
if (statetime == 250)
|
|
{
|
|
with (oTesterCannon)
|
|
event_user(0)
|
|
}
|
|
if (statetime == 280)
|
|
{
|
|
targetx = 160
|
|
targety = 480
|
|
target_angle = 180
|
|
}
|
|
if (statetime == 340)
|
|
{
|
|
with (oTesterCannon)
|
|
event_user(0)
|
|
}
|
|
if (statetime == 370)
|
|
{
|
|
targetx = 195
|
|
targety = 660
|
|
target_angle = 90
|
|
}
|
|
if (statetime == 430)
|
|
{
|
|
with (oTesterCannon)
|
|
event_user(0)
|
|
}
|
|
if (statetime == 460)
|
|
{
|
|
targetx = 220
|
|
targety = 840
|
|
target_angle = 0
|
|
}
|
|
if (statetime == 520)
|
|
{
|
|
with (oTesterCannon)
|
|
event_user(0)
|
|
}
|
|
if (statetime == 550)
|
|
{
|
|
with (oTesterCannon)
|
|
open = 0
|
|
}
|
|
if (statetime == 610)
|
|
{
|
|
state = 1
|
|
statetime = -1
|
|
}
|
|
}
|
|
if (state == 4)
|
|
{
|
|
if (statetime == 0)
|
|
{
|
|
targetx = 160
|
|
targety = 480
|
|
movespeed = 5
|
|
target_soff = soffmax
|
|
target_coff = coffmax
|
|
target_angle = 45
|
|
rot_speed = 5
|
|
with (oTesterCannon)
|
|
{
|
|
type = 2
|
|
event_user(2)
|
|
}
|
|
sfx_play(sndTesterCannonArm)
|
|
}
|
|
if (statetime == 60)
|
|
{
|
|
with (oTesterCannon)
|
|
open = 1
|
|
}
|
|
if (statetime == 100)
|
|
{
|
|
with (oTesterCannon)
|
|
event_user(0)
|
|
}
|
|
if (statetime == 400)
|
|
{
|
|
with (oTesterCannon)
|
|
open = 0
|
|
}
|
|
if (statetime == 460)
|
|
{
|
|
state = 1
|
|
statetime = -1
|
|
}
|
|
}
|
|
if (state == 5)
|
|
{
|
|
if (statetime == 0)
|
|
{
|
|
targetx = 160
|
|
targety = y
|
|
movespeed = 0
|
|
target_soff = soffmax
|
|
target_coff = coffmax
|
|
target_angle = 0
|
|
rot_speed = 5
|
|
with (oTesterCannon)
|
|
{
|
|
type = 3
|
|
event_user(2)
|
|
}
|
|
sfx_play(sndTesterCannonArm)
|
|
}
|
|
if (statetime == 50)
|
|
{
|
|
with (oTesterCannon)
|
|
open = 1
|
|
}
|
|
if (statetime == 100)
|
|
{
|
|
with (oTesterCannon)
|
|
event_user(0)
|
|
}
|
|
if (statetime == 130)
|
|
{
|
|
target_angle = -45
|
|
rot_speed = 0.5
|
|
}
|
|
if (statetime == 210)
|
|
{
|
|
target_angle = 45
|
|
rot_speed = 0.5
|
|
}
|
|
if (statetime == 390)
|
|
{
|
|
with (oTesterCannon)
|
|
open = 0
|
|
}
|
|
if (statetime == 450)
|
|
{
|
|
state = 1
|
|
statetime = -1
|
|
}
|
|
}
|
|
if (state == 6)
|
|
{
|
|
if (statetime == 0)
|
|
{
|
|
targetx = 160
|
|
targety = y
|
|
if (y > 736)
|
|
targety = 736
|
|
if (y < 224)
|
|
targety = 224
|
|
movespeed = 4
|
|
target_soff = soffmax
|
|
target_coff = coffmax
|
|
target_angle = 0
|
|
rot_speed = 5
|
|
with (oTesterCannon)
|
|
{
|
|
type = 4
|
|
event_user(2)
|
|
}
|
|
sfx_play(sndTesterCannonArm)
|
|
}
|
|
if (statetime == 50)
|
|
{
|
|
with (oTesterCannon)
|
|
open = 1
|
|
}
|
|
if (statetime == 100)
|
|
{
|
|
with (oTesterCannon)
|
|
event_user(0)
|
|
sfx_loop(sndTesterPlasmaLoop)
|
|
}
|
|
if (statetime == 130)
|
|
{
|
|
target_angle = 360
|
|
rot_speed = 0.5
|
|
}
|
|
if (statetime == 850)
|
|
{
|
|
with (oTesterPlasmaBeam)
|
|
fadeout = 1
|
|
sfx_stop(sndTesterPlasmaLoop)
|
|
}
|
|
if (statetime == 870)
|
|
{
|
|
with (oTesterCannon)
|
|
open = 0
|
|
}
|
|
if (instance_number(oTesterPlasmaBeam) == 0 && sfx_isplaying(sndTesterPlasmaLoop))
|
|
sfx_stop(sndTesterPlasmaLoop)
|
|
if (statetime == 930)
|
|
{
|
|
state = 1
|
|
statetime = -1
|
|
image_angle = 0
|
|
target_angle = 0
|
|
}
|
|
}
|
|
if (state == 7)
|
|
{
|
|
if (statetime == 0)
|
|
{
|
|
movetotarget = 0
|
|
target_soff = 35
|
|
shuriken = 1
|
|
target_angle = 0
|
|
rot_speed = 0
|
|
sfx_play(sndTesterRotate)
|
|
}
|
|
if (statetime == 50)
|
|
{
|
|
directrotate = 1
|
|
sfx_loop(sndTesterMeleeLoop)
|
|
}
|
|
if (statetime == 100)
|
|
{
|
|
direction = point_direction(x, y, aim_x, aim_y)
|
|
speed = 4
|
|
}
|
|
if (x > wall_r && hspeed > 0)
|
|
hspeed *= -1
|
|
if (x < wall_l && hspeed < 0)
|
|
hspeed *= -1
|
|
if (y > wall_d && vspeed > 0)
|
|
vspeed *= -1
|
|
if (y < wall_u && vspeed < 0)
|
|
vspeed *= -1
|
|
if (statetime == 600)
|
|
{
|
|
speed = 0
|
|
target_soff = 0
|
|
directrotate = 0
|
|
sfx_stop(sndTesterMeleeLoop)
|
|
}
|
|
if (statetime == 660)
|
|
{
|
|
state = 1
|
|
statetime = -1
|
|
image_angle = 0
|
|
target_angle = 0
|
|
shuriken = 0
|
|
movetotarget = 1
|
|
targetx = 160
|
|
targety = 480
|
|
}
|
|
}
|
|
if (state == 100)
|
|
{
|
|
if (statetime == 0)
|
|
{
|
|
movespeed = 0
|
|
movetotarget = 0
|
|
directrotate = 0
|
|
rot_speed = 0
|
|
speed = 0
|
|
sfx_stop(sndTesterMeleeLoop)
|
|
with (oTesterCannon)
|
|
open = 0
|
|
with (oTesterPlasmaBeam)
|
|
fadeout = 1
|
|
with (oTesterGlass)
|
|
instance_destroy()
|
|
with (oTesterMissile)
|
|
event_user(0)
|
|
with (oTesterSpazerBeam)
|
|
event_user(0)
|
|
with (oTesterIceBeam)
|
|
event_user(0)
|
|
with (oTesterWaveBeam)
|
|
event_user(0)
|
|
with (oA4TileLight1)
|
|
color = 0
|
|
with (cam)
|
|
instance_destroy()
|
|
sfx_stop(sndTesterPlasmaLoop)
|
|
sfx_play(sndTesterDeath)
|
|
mus_fadeout(musTester)
|
|
mus_fadeout(musAncientGuardian)
|
|
oMusicV2.bossbgm = 0
|
|
}
|
|
if (statetime == 200)
|
|
{
|
|
sfx_stop(sndTesterMeleeLoop)
|
|
repeat (20)
|
|
{
|
|
expl = instance_create((x + random_range(-45, 45)), (y + random_range(-45, 45)), oFXAnimSpark)
|
|
expl.image_speed = (0.3 + random(0.5))
|
|
expl.additive = 0
|
|
expl.sprite_index = sExpl1Big
|
|
}
|
|
make_explosion3(x, (y - 40))
|
|
repeat (20)
|
|
instance_create(x, (y - 50), oDebris)
|
|
repeat (30)
|
|
instance_create(x, (y - 50), oMetalDebrisBig)
|
|
instance_create(x, y, oScreenFlash)
|
|
sfx_play(sndRobotExpl)
|
|
sfx_play(sndMissileExpl)
|
|
spawn_many_powerups((x - 64), (y - 64), 128, 128)
|
|
with (oDoor)
|
|
event_user(3)
|
|
with (oTesterCannon)
|
|
instance_destroy()
|
|
with (oTesterShield)
|
|
instance_destroy()
|
|
with (oTesterEye)
|
|
instance_destroy()
|
|
global.event[200] = 2
|
|
dead = 1
|
|
if (instance_exists(oClient) && oClient.connected)
|
|
{
|
|
with (oClient)
|
|
event_user(8)
|
|
}
|
|
mus_current_fadein()
|
|
instance_destroy()
|
|
}
|
|
}
|
|
if movetotarget
|
|
{
|
|
if (x < targetx)
|
|
x += 1
|
|
if (x > targetx)
|
|
x -= 1
|
|
if (y < targety)
|
|
y += movespeed
|
|
if (y > targety)
|
|
y -= movespeed
|
|
}
|
|
if (soffset < target_soff)
|
|
soffset += 1
|
|
if (soffset > target_soff)
|
|
soffset -= 1
|
|
if (coffset < target_coff)
|
|
coffset += 2
|
|
if (coffset > target_coff)
|
|
coffset -= 2
|
|
if (image_angle > target_angle)
|
|
image_angle -= rot_speed
|
|
if (image_angle < target_angle)
|
|
image_angle += rot_speed
|
|
if directrotate
|
|
{
|
|
sangle -= 20
|
|
if (sangle < 0)
|
|
sangle += 360
|
|
}
|
|
else
|
|
{
|
|
if (sangle > starget_angle)
|
|
sangle -= srot_speed
|
|
if (sangle < starget_angle)
|
|
sangle += srot_speed
|
|
}
|
|
if (state != 100)
|
|
{
|
|
if (instance_number(oTesterShield) < 4 && enableforcefield == 0)
|
|
{
|
|
enableforcefield = 1
|
|
glass.enabled = 1
|
|
}
|
|
if (glass.enabled == 1)
|
|
eye.canbehit = 0
|
|
else
|
|
eye.canbehit = 1
|
|
}
|
|
if (flashing > 0)
|
|
flashing -= 1
|
|
statetime += 1
|
|
if (global.event[200] > 1 && (!dead))
|
|
{
|
|
make_explosion3(x, y)
|
|
repeat (30)
|
|
instance_create(x, y, oDebris)
|
|
state = 100
|
|
statetime = -1
|
|
alarm[10] = 1
|
|
alarm[11] = 300
|
|
with (oTesterShield)
|
|
event_user(1)
|
|
visible = false
|
|
dead = 1
|
|
if (instance_exists(oClient) && oClient.connected)
|
|
{
|
|
with (oClient)
|
|
event_user(8)
|
|
}
|
|
}
|