if (!i_ex(obj_growtangle)) exit; if (i_ex(obj_bullet_orange_debris)) { var ___x = gt_minx() + 8; var ___y = gt_miny() + 5; if (!surface_exists(surf)) surf = surface_create(gt_maxx() - ___x - 4, gt_maxy() - ___y - 3); surface_set_target(surf); draw_clear_alpha(c_black, 0); with (obj_bullet_orange_debris) draw_sprite_ext(sprite_index, image_index, x - ___x, y - ___y, image_xscale, image_yscale, image_angle, make_color_rgb(255 * image_alpha, 255 * image_alpha, 255 * image_alpha), 1); surface_reset_target(); gpu_set_blendmode(bm_normal); draw_surface(surf, ___x, ___y); } if (con == 0) { var jumptime = 15; scr_lerpvar("x", x, (obj_growtangle.x + 22) - (sprite_width / 2), round(jumptime * 1.2), 1, "out"); scr_lerpvar("y", y, obj_growtangle.y + (obj_growtangle.sprite_height / 2) + 20, jumptime, 3, "out"); con = -99; scr_script_delayed(scr_var, jumptime, "con", 1); foodalpha = 0; foodtimer = 0; flash = 0; foodangle = 0; with (obj_growtangle) scr_lerpvar("image_xscale", image_xscale, 3, 30); } if (con == 1) { var mcx = x + (sprite_width / 2); var mcy = y + (sprite_height / 2); foodtimer += 4; foodalpha = lerp(foodalpha, 1, 0.125); foodangle = lerp(foodangle, 145, 0.1); var foodlength = 100 - foodtimer; if (foodcollected > 0 && foodlength > 0) { for (var i = 0; i < foodcollected; i++) draw_sprite_ext(spr_bullet_green_egg, 0, mcx + lengthdir_x(foodlength, ((360 / foodcollected) * i) + foodangle), mcy + lengthdir_y(foodlength, ((360 / foodcollected) * i) + foodangle), 1, 1, 0, c_white, foodalpha); } if (foodlength < 25 && flash == 0) { flash = 1; sprite_index = spr_enemy_orange_prepare; var oflash = scr_oflash(); oflash.flashspeed = 0.5; } if (foodlength <= 0 && !i_ex(obj_oflash)) { sprite_index = spr_enemy_orange_fly_withfist; aurasiner = 0; auraalpha = 0; gensiner = 0; con = 2; foodtimer = 0; } draw_self(); } if (con == 2) { foodtimer++; auraalpha = lerp(auraalpha, 1, 0.125); aurasiner++; auracolor = merge_color(c_white, hexcolor(#33ADFF), aurasiner / 10); if (aurasiner == 10) aurasiner = 0; gensiner++; if (foodtimer == 2) dustlift = 1; createrocks = true; var attacktime = 90; var _endy = -60; vspeed = -21; scr_lerpvar("vspeed", vspeed, vspeed / 2, 38); var etx = -21; var ety = -32; draw_sprite_ext(spr_enemy_orange_energytrail, 0, etx + x + (sprite_width / 2), (ety + y) - 2, 1.3, 2, 0, auracolor, 0.5 * auraalpha); draw_sprite_ext(sprite_index, image_index, x + choose(-2, 0, 2), y + choose(-2, 0, 2), image_xscale, image_yscale, image_angle, image_blend, image_alpha); draw_sprite_ext(spr_enemy_orange_energytrail, 0, etx + x + (sprite_width / 2), (ety + y) - 2, 1.4, 2, 0, auracolor, 0.15 * auraalpha); counter = 0; con = 3; sound_play(snd_punchheavythunder); } if (con == 3) { counter++; var etx = -21; var ety = -34; if (counter > 40) { counter = 0; con = 4; _dir = random(360); loops = 9; } draw_sprite_ext(spr_enemy_orange_energytrail, 0, etx + x + (sprite_width / 2), ety + y, 1.3, 2, image_angle, auracolor, 0.5 * auraalpha); draw_sprite_ext(sprite_index, image_index, x + choose(-2, 0, 2), y + choose(-2, 0, 2), image_xscale, image_yscale, image_angle, image_blend, image_alpha); draw_sprite_ext(spr_enemy_orange_energytrail, 0, etx + x + (sprite_width / 2), ety + y, 1.4, 2, image_angle, auracolor, 0.15 * auraalpha); } if (con == 4) { if (counter == 0) { _dir += (120 + random(30)); x = obj_growtangle.x + lengthdir_x(480, _dir); y = obj_growtangle.y + lengthdir_y(480, _dir); extendo = 0; speed = 0; } if (counter < 24) { extendo = scr_approach_curve(extendo, 230, sqrt(30 - counter), 0); draw_set_color(c_red); d_line_width(x, y, x + lengthdir_x(extendo * 4, _dir + 180), y + lengthdir_y(extendo * 4, _dir + 180), 2); draw_set_color(c_white); } if (counter == 25) { sound_play(snd_punchheavythunder); image_angle = _dir + 90; direction = _dir + 180; speed = 64 - (6.5 * max(0, loops - 4)); friction = 0.25; var spin = choose(-5, 5); with (obj_bullet_orange_debris) launched = false; } with (obj_bullet_orange_debris) { if (launched < 0.5 && ((other.counter > 25 && abs(angle_difference(other._dir, point_direction(other.x, other.y, x, y))) < (90 - (point_distance(x, y, other.x, other.y) / 9))) || launched > 0)) { if (launched == 0) { _dir = other._dir + 180; dist = 3; spindir = sign(angle_difference(_dir, point_direction(other.x, other.y, x, y))); rate = 1.75 - ((min(5, 10 - other.loops) * 2) / 30); grazed = false; } hspeed += (lengthdir_x(0.72 - (launched * 1.5), _dir) * rate); vspeed += (lengthdir_y(0.72 - (launched * 1.5), _dir) * rate); launched += (0.011 * rate); spinrate = (-speed / 1.5) * spindir; } } var etx = lengthdir_x(-21 + (sprite_width / 3), _dir - 90) + lengthdir_x(-34, _dir); var ety = lengthdir_y(-21 + (sprite_width / 3), _dir - 90) + lengthdir_y(-34, _dir); if (counter > 25) { draw_sprite_ext(spr_enemy_orange_energytrail, 0, etx + x, ety + y, 1.3, 2, image_angle, auracolor, 0.5 * auraalpha); draw_sprite_ext(sprite_index, image_index, x + choose(-2, 0, 2), y + choose(-2, 0, 2), image_xscale, image_yscale, image_angle, image_blend, image_alpha); draw_sprite_ext(spr_enemy_orange_energytrail, 0, etx + x, ety + y, 1.4, 2, image_angle, auracolor, 0.15 * auraalpha); } if (counter == (38 + (5 * max(0, loops - 4)) + (24 * (loops == 1)))) { counter = -1; loops--; if (loops == 0) { con = 5; speed = 0; image_angle = 0; with (obj_bullet_orange_debris) scr_lerpvar("image_alpha", 1, 0, 60); } } counter++; } if (con == 5) { sprite_index = spr_enemy_orange_down; if (i_ex(obj_orange_enemy)) x = obj_orange_enemy.xstart; y = obj_growtangle.y - 400; gravity = 0.65; con = 6; with (obj_bullet_orange_debris) active = false; } if (con == 6 && i_ex(obj_orange_enemy)) { if (y >= obj_orange_enemy.ystart) { y = obj_orange_enemy.ystart; dust = instance_create(x + 16, y + 28, obj_animation); dust.sprite_index = spr_dust2; scr_darksize(dust); dust.image_speed = 0.5; dust.depth = depth - 5; dust.hspeed = -2; dust = instance_create(x + 36, y + 28, obj_animation); dust.sprite_index = spr_dust2; scr_darksize(dust); dust.image_speed = 0.5; dust.depth = depth - 5; dust.hspeed = 2; gravity = 0; vspeed = 0; mode = 0; siner = 0; instance_destroy(); with (obj_bullet_orange_debris) instance_destroy(); } } draw_self(); if (dustlift == 1) { dustlift = 0; for (var i = 0; i < 6; i++) { dust = instance_create(x + 16, y + 28, obj_animation); dust.sprite_index = spr_dust2; scr_darksize(dust); dust.image_speed = 0.5 - random(0.2); dust.depth = depth - 5; dust.hspeed = -(2 + i + random(0.5)); dust.vspeed = (i / 3) + random(0.5); dust.friction = 0.1; dust = instance_create(x + 36, y + 28, obj_animation); dust.sprite_index = spr_dust2; scr_darksize(dust); dust.image_speed = 0.5 - random(0.2); dust.depth = depth - 5; dust.hspeed = 2 + i + random(0.5); dust.vspeed = (i / 3) + random(0.5); dust.friction = 0.1; } } if (createrocks == 1) { createrocks = false; var growtanglesize = obj_growtangle.sprite_width; for (var xx = -500; xx < 500; xx += 100) { for (var yy = -500; yy < 500; yy += 100) { var xxx = random_range(-27, 27) + (((yy + 360) % 160) * 0.48); with (instance_create_depth(obj_growtangle.x + xx + (xxx / 2), obj_growtangle.y + 240, obj_growtangle.depth + 1, obj_bullet_orange_debris)) { if (yy < -300) y = obj_growtangle.y + yy + random_range(-25, 25); else scr_lerpvar("y", y, obj_growtangle.y + yy + random_range(-25, 25), 48 + ((y - yy) / 20), 1, "out"); scr_lerpvar("x", x, obj_growtangle.x + xx + xxx, 48 + ((y - yy) / 20), 1, "out"); spinrate = sign(x - obj_growtangle.x) + (xx / 45); launched = 0; image_angle = 90; direction = 90; } } } }