sMAlpha 0 -1 0 0 <undefined> <undefined> 1 603 7 0 0 -1 2 self 0 0 1 canbeX = 0; makeActive(); setCollisionBounds(-15, -9, 15, 9); hpush = 5; vpush = -3; flashing = 0; flashtime = 0; canbehit = 1; frozen = 0; platform = 0; statetime = 0; turndelay = 0; currentangle = 0; targetangle = 0; rotspeed = 0; targetx = 0; targety = 0; spdelay = 700; turning = 0; dodgedelay = 0; dodgetime = 0; dodging = 0; fxtimer = 0; chasing = 0; hitsound = sndMAlphaHit; deathsound = sndMAlphaDeath; active = 1; target = 0; state = 3; alarm[1] = 120; alarm[3] = 1; image_speed = 0.2; damagedealt = 0; if (global.log[11] == 0) { global.log[11] = 1; global.newlog[11] = 1; } scan_log(12, get_text("ScanEvents", "ScanBioform"), 180, 0); last_one = 0; myposx = floor(x / 320); myposy = floor((y - 8) / 240); mapposx = myposx + global.mapoffsetx; mapposy = myposy + global.mapoffsety; if (room != rm_a0h14) global.dmap[mapposx, mapposy] = 10; else global.dmap[43, 24] = 10; with (oControl) event_user(2); 1 603 7 0 0 -1 2 self 0 0 1 repeat (10) { expl = instance_create(x - 16 + random(32), y - 16 + random(32), oFXAnimSpark); expl.image_speed = 0.5 + random(0.5); expl.additive = 0; expl.sprite_index = sExpl1; expl.direction = random(360); expl.speed = 2 + random(1); } make_explosion4(x, y); instance_create(x, y, oScreenFlash); sfx_play(sndMAlphaExpl); sfx_play(sndMissileExpl); if (global.monstersalive == 0) mus_current_fadein(); if (oControl.mod_insanitymode == 0 || (global.difficulty < 2 && oControl.mod_insanitymode == 1)) { if (damagedealt > givebackhp) damagedealt = givebackhp; monster_spawn_powerups(x, y, floor(damagedealt / 20), floor(starthealth / 10 / 2)); } instance_destroy(); 1 603 7 0 0 -1 2 self 0 0 1 expl = instance_create(x - 16 + random(32), y - 16 + random(32), oFXAnimSpark); expl.image_speed = 0.5; expl.additive = 0; expl.sprite_index = sExpl1; expl.image_xscale = 0.5; expl.image_yscale = 0.5; alarm[10] = 5; 1 603 7 0 0 -1 2 self 0 0 1 if (chasing == 0) { chasing = 1; alarm[3] = awaydelay; } else event_user(1); 1 603 7 0 0 -1 2 self 0 0 1 flash = instance_create(x, y, oFXTrail); flash.sprite_index = sprite_index; flash.image_index = image_index; flash.image_alpha = 1; flash.white = 0; flash.fadespeed = 0.15; flash.depth = 10; flash.image_xscale = facing; flash.image_angle = image_angle; if (state == 5 || dodging) alarm[2] = 3; 1 603 7 0 0 -1 2 self 0 0 1 if (state == 3) { xVel *= 0.4; yVel *= 1.2; alarm[1] = 133; } 1 603 7 0 0 -1 2 self 0 0 1 instance_activate_region(x - 64, y - 64, 128, 128, 1); 1 603 7 0 0 -1 2 self 0 0 1 if (active == 1) { if (state == 1) { xVel = 0; yVel = 0; } if (state == 3) { image_speed = 0.2; if (spriteset == 2 && !turning) sprite_index = sMAlpha3Move; if (chasing) { targetx = oCharacter.x; targety = oCharacter.y - 24; 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; if (canspmove && statetime > 60 && spdelay == 0 && dodging == 0) { state = 4; statetime = 0; turndelay = 1; spdelay = 700; } 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(sndMAlphaDodge); } if (dodging && dodgetime >= 8) { dodging = 0; canbehit = 1; } } // if (state == 3) if (state == 4) { if (spriteset == 2) { image_index = 0; image_speed = 0; sprite_index = sMAlpha3Attack; } if (oCharacter.y - 24 > y) yVel += 0.1; if (oCharacter.y - 24 < y) yVel += -0.1; if (oCharacter.y - 64 > 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 = 1; targetangle = -25; if (statetime > 50) { state = 5; statetime = 0; turndelay = 70; alarm[2] = 1; sfx_play(sndMAlphaSP); } } if (state == 5) { image_speed = 0; if (spriteset == 2 && image_index < 3) image_index += 0.05; if (statetime < 10) xVel *= 0.98; if (statetime == 10) { if (oCharacter.x > x) xVel = 7; if (oCharacter.x < x) xVel = -7; } if (oCharacter.y - 16 > y) yVel += 0.1; if (oCharacter.y - 24 < y) yVel += -0.1; if (isCollisionBottom(1) && yVel > 0 || isCollisionTop(1) && yVel < 0) yVel = 0; if (yVel > 2) yVel = 2; if (yVel < -2) yVel = -2; rotspeed = 1; targetangle = -25; if (statetime > 60) { state = 3; statetime = 0; turndelay = 30; } if (statetime > 20 && (isCollisionRight(1) || isCollisionLeft(1))) { state = 6; statetime = 0; turndelay = 60; } } // if (state == 5) if (state == 6) { image_speed = 0; if (spriteset == 2 && image_index > 0) image_index -= 0.1; xVel = 0; yVel = 0; rotspeed = 0.25; targetangle = 0; if (statetime > 30) { state = 3; statetime = 0; turndelay = 30; } } if (oCharacter.x > x && facing == -1) { if (turndelay > 0) turndelay -= 1; if (turndelay == 0) { facing = 1; turndelay = 30; turning = 1; if (spriteset == 0) { sprite_index = sMAlphaTurn; myspr = 567; } if (spriteset == 1) { sprite_index = sMAlpha2Turn; myspr = 568; } if (spriteset == 2) { sprite_index = sMAlpha3Turn; myspr = 570; } image_index = 0; } } if (oCharacter.x < x && facing == 1) { if (turndelay > 0) turndelay -= 1; if (turndelay == 0) { facing = -1; turndelay = 30; turning = 1; if (spriteset == 0) { sprite_index = sMAlphaTurn; myspr = 567; } if (spriteset == 1) { sprite_index = sMAlpha2Turn; myspr = 568; } if (spriteset == 2) { sprite_index = sMAlpha3Turn; myspr = 570; } image_index = 0; } } if (turning) { image_speed = 0.5; } else if (flashing || state == 100) image_speed = 0.4; if (flashing) { if (statetime == 0) { dodgedelay = 20; if (myhealth > 0) state = 3; } if (statetime < 8) { if (oCharacter.x > x) xVel = -0.5 - random(3); if (oCharacter.x < x) xVel = 0.5 + random(3); yVel = -1 - random(4); if (state == 100 && fallondeath && y < 160) yVel = 2; } if (isCollisionRight(1) && xVel > 0 || isCollisionLeft(1) && xVel < 0) xVel *= -1; xVel *= 0.95; yVel *= 0.95; rotspeed = 2; targetangle = 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; moveTo(xVel, yVel); } // if (active == 1) if (state == 100) { if (statetime == 1) { damagedealt += shell.damagedealt; 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; 1 603 7 0 0 -1 2 self 0 0 1 if (yVel > 0) yVel *= -0.2; if (state == 5) { state = 3; statetime = 0; turndelay = 30; xVel = 0; yVel = 0; } 1 603 7 0 0 -1 2 self 0 0 1 if (yVel < 0) yVel *= -0.2; if (state == 5) { state = 3; statetime = 0; turndelay = 30; xVel = 0; yVel = 0; } 1 603 7 0 0 -1 2 self 0 0 1 if (xVel < 0) xVel *= -0.2; if (state == 5) { state = 3; statetime = 0; turndelay = 30; xVel = 0; yVel = 0; } 1 603 7 0 0 -1 2 self 0 0 1 if (xVel > 0) xVel *= -0.2; if (state == 5) { state = 3; statetime = 0; turndelay = 30; xVel = 0; yVel = 0; } 1 603 7 0 0 -1 2 self 0 0 1 xVel *= 1.1; 1 603 7 0 0 -1 2 self 0 0 1 if (state == 3) yVel += 1; 1 603 7 0 0 -1 2 self 0 0 1 if (state == 3) yVel += -0.2; 1 603 7 0 0 -1 2 self 0 0 1 if (state == 3) xVel += 0.2; 1 603 7 0 0 -1 2 self 0 0 1 if (state == 3) xVel += -0.2; 1 603 7 0 0 -1 2 self 0 0 1 if (canbehit) { event_user(0); with (other) event_user(0); } 1 603 7 0 0 -1 2 self 0 0 1 if (oBeam.chargebeam && !oBeam.ibeam && !oBeam.wbeam && !oBeam.pbeam && !oBeam.sbeam && global.missiles == 0 && global.smissiles == 0) { if (canbehit) { event_user(0); with (other) { event_user(0); instance_destroy(); } } } else { with (other) { event_user(1); instance_destroy(); } } 1 603 7 0 0 -1 2 self 0 0 1 if (myhealth > 0) { if (other.invincible == 0) damagedealt += damage; if (false) damage_player(damage, hpush, vpush, 0, 0);//testing 2x damage else damage_player(damage, hpush, vpush, 0, 0); if (chasing && hitandrun) { xVel = 0; yVel = 0; event_user(1); } } 1 603 7 0 0 -1 2 self 0 0 1 if (global.monstersalive == 1) { last_one = 1; maxspeedx = 3.6; maxspeedy = 2.2; myaccelx = 0.14; myaccely = 0.1; chasedelay = 120; awaydelay = 80; awayoffsetx = -10; awayoffsety = -30; } 1 603 7 0 0 -1 2 self 0 0 1 chasing = 0; targetx = oCharacter.x + awayoffsetx * facing; targety = oCharacter.y + awayoffsety; alarm[3] = chasedelay; 1 603 7 0 0 -1 2 self 0 0 1 if (other.smissile == 1) { dmg = 50; flashtime = 60; } else { dmg = 10; flashtime = 30; } myhealth -= dmg; if (myhealth <= 0) { state = 100; statetime = 0; alarm[10] = 1; alarm[11] = 160; flashtime = 180; turndelay = 180; PlaySoundMono(deathsound); global.metdead[myid] = 1; global.monstersleft -= 1; global.monstersarea -= 1; check_areaclear(); global.monstersalive -= 1; if (global.monstersalive == 0) { mus_fadeout(musAlphaFight); oMusicV2.bossbgm = sndJump; } with (oMAlpha) event_user(2); global.dmap[mapposx, mapposy] = 11; with (oControl) event_user(2); } flashing = 1; canbehit = 0; statetime = 0; currentangle = 30; if (chasing == 0) { chasing = 1; alarm[3] = awaydelay; } if (myhealth > 0) PlaySoundMono(hitsound); if (sfx_isplaying(sndMAlphaIntro)) sfx_stop(sndMAlphaIntro); 1 603 7 0 0 -1 2 self 0 0 1 if (turning) { turning = 0; sprite_index = myspr; } 1 603 7 0 0 -1 2 self 0 0 1 if (global.ingame == 1) { global.monstersalive = 0; mus_stop(musAlphaFight); with (oMusicV2) { alarm[1] = -1; bossbgm = sndJump; } mus_current_fadein(); } 1 603 7 0 0 -1 2 self 0 0 1 if((oControl.mod_fusion == 1) || (oControl.MonsterPalettesFusionOnly == 0)) { pal_swap_set(oControl.AlphaPalette, 1, false); } if (!flashing) draw_sprite_ext(sprite_index, -1, x, y, facing, 1, image_angle, -1, 1); if (flashing) { draw_sprite_ext(sprite_index, -1, x, y, facing, 1, image_angle, make_color_rgb(255 - fxtimer * 63, 255 - fxtimer * 63, 255 - fxtimer * 63), 1); draw_set_blend_mode(bm_add); repeat (2) draw_sprite_ext(sprite_index, -1, x, y, facing, 1, image_angle, -1, 1 - fxtimer * 0.25); draw_set_blend_mode(bm_normal); } shader_reset(); 0 0 0 0.5 0.100000001490116 0 0.100000001490116 0.100000001490116 0.200000002980232 -1 -1