<undefined> 0 -1 -200 0 <undefined> <undefined> 1 603 7 0 0 -1 2 self 0 0 1 ///Primary Settings state = 0; statetime = 0; collectable = 0; reform = random(1); move = 0; image_speed = 0.2; xvariant = 0; xtype = sHXPickup; flashing = 0; fxtimer = 0; sizeX = 1; sizeY =1; relativeX = 0; relativeY = 0; // origin point velocity originVelX = 0; originVelY = 0; // parasite velocity velX = 0; velY = 0; //counter for it to stand still for a bit before moving counter = 30; //orbit point orbitX = xstart; orbitY = ystart; orbitCounter = 0; //orbit point randomize counter xExit = choose(-5,5,-7,7,-9,9); yExit = choose(-5,5,-7,7,-9,9); frozenAngle = 0; drawAngle = 0; drawHalzynShields = false; inview = true; 1 603 7 0 0 -1 2 self 0 0 1 if(state == 6) { //Shrink during pickup if(floor(statetime) == 0) { image_xscale = 1; image_xscale = 1; if(xvariant == 1) { image_xscale = 0.8; image_xscale = 0.8; } } x = oCharacter.x + relativeX; y = (oCharacter.y-oCharacter.sprite_height/2) + relativeY; relativeX = lerp(relativeX, 0, 0.1); relativeY = lerp(relativeY, 0, 0.1); if(image_xscale > 0) { image_xscale -= 0.0225; image_yscale -= 0.0225; } if(image_xscale <= 0) instance_destroy(); } //inview widescreen fix if ((x < (view_xview[0] - 16 - (oControl.widescreen_space/2))) || (x > (view_xview[0] + view_wview[0] + 16 + (oControl.widescreen_space/2))) || (y < view_yview[0] - 16) || (y > view_yview[0] + view_hview[0] + 16)) { inview = false; } 1 603 7 0 0 -1 2 self 0 0 1 inview = true; 1 603 7 0 0 -1 2 self 0 0 1 ///X Movement //Thanks for the movement code, Scoot! if (fxtimer < 10) { fxtimer += 1; } else fxtimer = 0; if (flashing > 0) flashing -= 1; if(state == 0) { //Initial settings that we can't run in the create event because reasons 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) { //Spawn transition state if(statetime == 0) PlaySoundMono(sndXMorph1); if(statetime <= 40) { sizeX = sizeX + 0.12; sizeY = sizeY + 0.08; } if(statetime >= 40) { sizeX = sizeX - 0.12; sizeY = 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) //Normal Movement { move = 1; if(statetime == 0) collectable = 1; if(counter > 0) { //Counter before movement move = 0; counter--; } else { //Randomize orbit point every 30 frames if(orbitCounter > 0) { orbitCounter--; } else {//Target either the Orbit Point or Sarah var angle = random(360); if(oCharacter.chargebeam == 0) { //Orbit Point orbitX = xstart + lengthdir_x(32,angle); orbitY = ystart + lengthdir_y(32,angle); } else if(oCharacter.chargebeam >= 1) { //Sarah orbitX = oCharacter.x; orbitY = oCharacter.y - oCharacter.sprite_height/2; } orbitCounter = irandom_range(15,25); //Time before targeting again } //Maximum speed 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) { //Fly away move = 1; orbitX += xExit; orbitY += yExit; //Maximum speed velX = clamp(velX,-4,4); velY = clamp(velY,-4,4); } if(state == 4) { //Prepare for respawn flashing = 2; if(statetime == 0) { if(lastEnemy != oSkorp && lastEnemy != oGlowFly) lastAngle = 0; if(lastEnemy = oHalzyn) drawHalzynShields = true; drawAngle = lastAngle; } if(statetime < 120) { move = 1; orbitX = lastXPos; orbitY = lastYPos; //Maximum speed 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) { //Respawn transition if(statetime == 0) PlaySoundMono(sndXMorph1); if(statetime <= 40) { sizeX = sizeX + 0.12; sizeY = sizeY + 0.08; } if(statetime >= 40) { sizeX = sizeX - 0.12; sizeY = 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) { //Orbital movement var 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; 1 603 7 0 0 -1 2 self 0 0 1 //inview = false; 1 603 7 0 0 -1 2 self 0 0 1 ///Destroy if outside room && state == 3 if(state == 3) { if ((x < (view_xview[0] - (oControl.widescreen_space/2))) || (x > (view_xview[0] + view_wview[0] + (oControl.widescreen_space/2))) || (y < 0) || (y > room_height)) { instance_destroy(); } } 1 603 7 0 0 -1 2 other 0 0 1 if(state == 1 || state == 5) { if(inview) { if(sprite_index == xtype) draw_sprite_pixelated(sprite_index, image_index, x, y, image_xscale, 1, image_angle, c_white, 1, sizeX, sizeY, 16); else { draw_sprite_pixelated(sprite_index, image_index, lastEnemyX, lastEnemyY, lastFacing, 1, drawAngle, c_white, 1, sizeX, sizeY, 128); if(sprite_index == sSkorpBody) { draw_sprite_pixelated(sSkorpDiscLunge, 0, lastEnemyX + lengthdir_x(11, lastAngle - 24), lastEnemyY + lengthdir_y(11, lastAngle - 24), -1, 1, 0, c_white, 1, sizeX, sizeY, 32); draw_sprite_pixelated(sSkorpDiscLunge, 0, lastEnemyX + lengthdir_x(11, lastAngle + 24), lastEnemyY + lengthdir_y(11, lastAngle + 24), 1, 1, 0, c_white, 1, sizeX, sizeY, 32); } if(drawHalzynShields) { var shield; if (lastEnemyGlow == 1) { shield = sHalzynShieldA4; } else if (lastEnemyGlow == 2) { shield = sHalzynShieldA4_2; } else { shield = sHalzynShield; } draw_sprite_pixelated(shield, 0, lastEnemyX + 8, lastEnemyY - 3, 1, 1, 0, c_white, 1, sizeX, sizeY, 32); draw_sprite_pixelated(shield, 0, lastEnemyX - 8, lastEnemyY - 3, -1, 1, 0, c_white, 1, sizeX, sizeY, 32); } } } } else if(!flashing) { //draw_self(); draw_sprite_ext(sprite_index, -1, round(x), round(y), image_xscale, image_yscale, image_angle, image_blend, image_alpha); } else if(flashing) { draw_sprite_ext(sprite_index, -1, round(x), round(y), image_xscale, image_yscale, image_angle, make_color_rgb(80, 80, 80), 1); draw_set_blend_mode(bm_add); repeat (3) draw_sprite_ext(sprite_index, -1, round(x), round(y), image_xscale, image_yscale, image_angle, -1, 1 - fxtimer * 0.1); draw_set_blend_mode(bm_normal); } 0 0 0 0.5 0.100000001490116 0 0.100000001490116 0.100000001490116 0.200000002980232 -1 0