var __cx = camerax(); var __cy = cameray(); if (golden_mode) pal_swap_set(palette_sprite, 1, false); if (facing == "r") reversal = 1; if (facing == "l") reversal = 0; facing = "d"; siner += speedscale; siner0 += speedscale; siner1 += speedscale; siner2 += speedscale; if (!scaled_bounce) { if (bounce == 1) { image_yscale = 2.5; image_xscale = (image_xscale < 0) ? -1.5 : 1.5; bounce = 2; } if (bounce == 2) { var target_scale = (image_xscale < 0) ? -2 : 2; scr_lerpvar("image_xscale", image_xscale, target_scale, 16, -2, "out"); scr_lerpvar("image_yscale", image_yscale, 2, 16, -2, "out"); bounce = 3; } if (bounce == 3) { if (image_yscale <= 2.01) { image_yscale = 2; bounce = 0; } } } else { if (bounce == 1) { cur_xscale = image_xscale; cur_yscale = image_yscale; bounce = 2; } if (bounce == 2) { image_yscale = cur_yscale * 1.25; image_xscale = cur_xscale * 0.75; bounce = 3; } if (bounce == 3) { scr_lerpvar("image_xscale", image_xscale, cur_xscale, 16, -2, "out"); scr_lerpvar("image_yscale", image_yscale, cur_yscale, 16, -2, "out"); bounce = 4; } if (bounce == 4) { if (image_yscale <= (cur_yscale + 0.1)) { image_yscale = cur_yscale; bounce = 0; } } } if (preset != -1) { drawtype = 0; if (preset == 0) { image_speed = 0; wobblestate = 0; wobbletime = 0; wobbleamt = 0; drawtype = 1; } if (preset == 1) { wobblestate = 1; wobbletime = 4; wobbleamt = 10; } if (preset == 2) { wobblestate = 1; wobbletime = 4; wobbleamt = 8; } if (preset == -2) { wobblestate = 1; wobbletime = 4; wobbleamt = 8; } if (preset == -3) { image_index = 1; wobblestate = 1; wobbletime = 4; wobbleamt = 8; } if (preset == 2.5) { wobblestate = 1; wobbletime = 4; wobbleamt = 8; } if (preset == 3) { wobblestate = 1; wobbletime = 4; wobbleamt = 30; } if (preset == 4) { wobblestate = 3; wobbletime = 3; wobbleamt = 15; } if (preset == 5) { reversal = 0; animchangetimer = 8; wobblestate = 4; wobbleamt = 40; wobbletime = 4; changespeed = 20; } if (preset == 6) { image_speed = 0.25; wobblestate = 5; wobbletime = 3; wobbleamt = 10; } if (preset == 7) { wobblestate = 6; wobbletime = 12; wobbleamt = 20; } if (preset == 8) { wobblestate = 6; wobbletime = 1; wobbleamt = 2; } if (preset == 9) { wobblestate = 7; wobbletime = 0.5; wobbleamt = 2; } if (preset == 10) { wobblestate = 0; wobbletime = 0; wobbleamt = 0; drawtype = 1; } if (preset == 11) { image_speed = 0.5; wobblestate = 8; wobbletime = 1; wobbleamt = 10; } if (preset == 12) { image_speed = 0.35; wobblestate = 1; wobbletime = 2; wobbleamt = 20; } if (preset == 13) { image_speed = 0.5; wobblestate = 6; wobbletime = 2; wobbleamt = 20; drawtype = 1; } if (preset == 14) { wobblestate = 7; wobbletime = 1; wobbleamt = 2; } if (preset == 15) { wobblestate = 6; wobbletime = 0.5; wobbleamt = 6; } if (preset == 16) { wobblestate = 10; wobbletime = 3; wobbleamt = 30; } if (preset == 17) { wobblestate = 0; wobbletime = 0; wobbleamt = 0; drawtype = 1; } if (preset == 18) { reversal = 0; animchangetimer = 4; wobblestate = 4; wobbleamt = 20; wobbletime = 4; } if (preset == 19) { rosecon = 1; rosetimer = 0; drawtype = 3; image_xscale = 0.5 * sign(image_xscale); image_yscale = 0.5; image_speed = 0; image_index = 0; } if (preset == 20) { wobblestate = 5; wobbletime = 3; wobbleamt = 30; } if (preset == 21) { wobblestate = 12; wobbleamt = 7; wobbletime = 4.5; drawtype = 0; image_speed = 0; } if (preset == -21) { wobblestate = 12; wobbleamt = 7; wobbletime = 4.5; drawtype = 0; } if (preset == 22) { wobblestate = 7; wobbleamt = 5.9; wobbletime = 2.4; drawtype = 0; image_speed = 0; } if (preset == 23) { wobblestate = 8; wobbleamt = 7.7; wobbletime = 6; drawtype = 0; image_speed = 0.25; } if (preset == 24) { wobblestate = 8; wobbleamt = 7.7; wobbletime = 6; drawtype = 0; image_speed = 0.25; } if (preset == 25) { wobblestate = 8; wobbleamt = 7.7; wobbletime = 6; drawtype = 0; image_speed = 0.25; } if (preset == 26) { wobblestate = 5.5; wobbletime = 10; wobbleamt = 40; siner = 1.5707963267948966 * wobbletime; } if (preset == 27) { image_index = 0; image_speed = 0; bounce = 0; } if (preset == 28) { image_index = 3; image_speed = 0; wobbleamt = 30; wobblestate = 1; wobbletime = 10; bounce = 1; } if (preset == 30) { wobblestate = 0; wobbleamt = 0; wobbletime = 0; drawtype = 1; image_speed = 1; } if (preset == 31) { wobbleamt = 15; wobblestate = 12; wobbletime = 5; bounce = 0; } if (preset == 32) { wobblestate = 12; wobbleamt = 7; wobbletime = 4.5; drawtype = 0; image_speed = 0; } if (preset == -32) { wobblestate = 12; wobbleamt = 7; wobbletime = 4.5; drawtype = 0; } if (preset == 33) { reversal = 0; wobblestate = 8; wobbleamt = 40; wobbletime = 4; } if (preset == 34) { reversal = 0; wobblestate = 13; changespeed = 15; animchangetimer = 0; pointcon = 0; wobbleamt = 10; wobbletime = 4; } if (preset == 35) { reversal = 0; wobblestate = -1; rate = 2; shtimer = 0; drawtype = 2; } if (preset == 36) { reversal = 0; drawtype = 0; siner = 0; wobbleamt = 10; wobblestate = 16; } if (preset == 37) { reversal = 0; drawtype = 0; siner = 0; wobbleamt = 10; wobblestate = 14; } if (preset == 69) { wobblestate = 6; wobbleamt = 20; wobbletime = 4; drawtype = 0; image_speed = 0.25; } preset = -1; } x1 = x - sprite_xoffset; y1 = y - sprite_yoffset; x2 = (x - sprite_xoffset) + sprite_width; y2 = y - sprite_yoffset; x3 = (x - sprite_xoffset) + sprite_width; y3 = (y - sprite_yoffset) + sprite_height; x4 = x - sprite_xoffset; y4 = (y - sprite_yoffset) + sprite_height; var reversalsign = 1; if (reversal == 1) reversalsign = -1; if (wobblestate == 1) { x1 += (abs(sin(siner / wobbletime) * wobbleamt) * reversalsign); x2 += (abs(sin(siner / wobbletime) * wobbleamt) * reversalsign); y1 -= abs(sin(siner / wobbletime) * wobbleamt); y2 += abs(sin(siner / wobbletime) * wobbleamt); } if (wobblestate == 2) { x1 += (sin(siner / wobbletime) * 10 * reversalsign); x2 += (sin(siner / wobbletime) * 10 * reversalsign); y1 -= (sin((siner / wobbletime) * 0.9) * 14); y2 += (sin((siner / wobbletime) * 1.1) * 14); } if (wobblestate == 3) { if (sin(siner / wobbletime) < 0) reversal = 1; else reversal = 0; var addamt = abs(sin(siner / wobbletime) * wobbleamt); var addamt2 = addamt; if (reversal == 1) addamt = -addamt; x1 += addamt; x2 += addamt; y1 -= addamt2; y2 += addamt2; } var _keep_pivot = false; if (wobblestate == 4) { siner -= (speedscale - 1); animchangetimer += speedscale; if (animchangetimer >= changespeed && pointcon == 0) { reversal = 0; bounce = 1; pointcon++; } if (animchangetimer >= (changespeed * 2) && pointcon == 1) { reversal = 0; sprite_index = spr_tenna_point_up; x1 = x - sprite_xoffset; y1 = y - sprite_yoffset; x2 = (x - sprite_xoffset) + sprite_width; y2 = y - sprite_yoffset; x3 = (x - sprite_xoffset) + sprite_width; y3 = (y - sprite_yoffset) + sprite_height; x4 = x - sprite_xoffset; y4 = (y - sprite_yoffset) + sprite_height; bounce = 1; pointcon++; } if (animchangetimer >= (changespeed * 3) && pointcon == 2) { reversal = 1; bounce = 1; pointcon++; } if (animchangetimer >= (changespeed * 4)) { reversal = 1; sprite_index = spr_tenna_point_up; x1 = x - sprite_xoffset; y1 = y - sprite_yoffset; x2 = (x - sprite_xoffset) + sprite_width; y2 = y - sprite_yoffset; x3 = (x - sprite_xoffset) + sprite_width; y3 = (y - sprite_yoffset) + sprite_height; x4 = x - sprite_xoffset; y4 = (y - sprite_yoffset) + sprite_height; bounce = 1; animchangetimer = 0; pointcon = 0; } if (pointcon == 3) _keep_pivot = true; var addamt = abs(sin(siner / wobbletime) * wobbleamt); var addamt2 = addamt; if (reversal == 1) addamt = -addamt; x1 += addamt; x2 += addamt; y1 -= addamt2; y2 += addamt2; } if (wobblestate == 5) { if (sin(siner / wobbletime) < 0) reversal = 1; else reversal = 0; var addamt = abs(sin(siner / wobbletime) * wobbleamt); var addamt2 = addamt; if (reversal == 1) addamt = -addamt; x1 += addamt; x2 += addamt; y1 -= addamt2; y2 += addamt2; } if (wobblestate > 5 && wobblestate < 6) { if (wobblestate == 5.5) { x1 += ((abs(sin(siner / wobbletime) * wobbleamt) - wobbleamt) * reversalsign); x2 += ((abs(sin(siner / wobbletime) * wobbleamt) - wobbleamt) * reversalsign); y1 -= (abs(sin(siner / wobbletime) * wobbleamt) - wobbleamt); y2 += ((abs(sin(siner / wobbletime) * wobbleamt) - wobbleamt) / 2); if (sin((siner + 1) / wobbletime) <= 0.5) { wobblestate = 5.6; sprite_index = spr_tenna_sad; } } if (wobblestate == 5.6) { x1 += ((abs(sin(siner / wobbletime) * wobbleamt) - (wobbleamt / 2)) * reversalsign); x2 += ((abs(sin(siner / wobbletime) * wobbleamt) - (wobbleamt / 2)) * reversalsign); y1 -= (abs(sin(siner / wobbletime) * wobbleamt) - (wobbleamt / 2)); y2 += ((abs(sin(siner / wobbletime) * wobbleamt) - (wobbleamt / 2)) / 2); if (sin((siner + 1) / wobbletime) <= 0) preset = 7; } } if (wobblestate == 6) { x1 += ((abs(sin(siner / wobbletime) * wobbleamt) - wobbleamt) * reversalsign); x2 += ((abs(sin(siner / wobbletime) * wobbleamt) - wobbleamt) * reversalsign); y1 -= (abs(sin(siner / wobbletime) * wobbleamt) - wobbleamt); y2 += ((abs(sin(siner / wobbletime) * wobbleamt) - wobbleamt) / 2); } if (wobblestate == 7) { x1 += (sin(siner / wobbletime) * wobbleamt * reversalsign); x2 += (sin(siner / wobbletime) * wobbleamt * reversalsign); y1 -= (((sin((siner / wobbletime) * 0.5) * wobbleamt) / 2) * -1); y2 += ((sin((siner / wobbletime) * 0.5) * wobbleamt) / 3); } if (wobblestate == 8) { var addamt = abs(sin(siner / wobbletime) * wobbleamt); var addamt2 = addamt; if (reversal == 1) addamt = -addamt; x1 += addamt; x2 += addamt; y1 -= addamt2; y2 += addamt2; } if (wobblestate == 9) { y1 -= (sin((siner / wobbletime) * wobbleamt * 0.9) * 14); y2 += (sin((siner / wobbletime) * wobbleamt * 1.1) * 14); } if (wobblestate == 10) { var localReverse = 0; if (sin(siner / wobbletime) < 0) localReverse = 1; else localReverse = 0; var addamt = abs(sin(siner / wobbletime) * wobbleamt); var addamt2 = addamt; if (localReverse == 1) addamt = -addamt; x1 += addamt; x2 += addamt; y1 -= addamt2; y2 += addamt2; } if (wobblestate == 11) { siner -= (speedscale - 1); animchangetimer += speedscale; if (animchangetimer >= changespeed && pointcon == 0) { reversal = 0; sprite_index = spr_tenna_point_left; bounce = 1; pointcon++; } if (animchangetimer >= (changespeed * 2) && pointcon == 1) { reversal = 0; sprite_index = spr_tenna_point_at_screen; x1 = x - sprite_xoffset; y1 = y - sprite_yoffset; x2 = (x - sprite_xoffset) + sprite_width; y2 = y - sprite_yoffset; x3 = (x - sprite_xoffset) + sprite_width; y3 = (y - sprite_yoffset) + sprite_height; x4 = x - sprite_xoffset; y4 = (y - sprite_yoffset) + sprite_height; bounce = 1; pointcon++; } if (animchangetimer >= (changespeed * 3) && pointcon == 2) { sprite_index = spr_tenna_salute_b; reversal = 0; bounce = 1; pointcon++; } if (animchangetimer >= (changespeed * 4)) { reversal = 1; sprite_index = spr_tenna_point_up; x1 = x - sprite_xoffset; y1 = y - sprite_yoffset; x2 = (x - sprite_xoffset) + sprite_width; y2 = y - sprite_yoffset; x3 = (x - sprite_xoffset) + sprite_width; y3 = (y - sprite_yoffset) + sprite_height; x4 = x - sprite_xoffset; y4 = (y - sprite_yoffset) + sprite_height; bounce = 1; animchangetimer = 0; pointcon = 0; } if (pointcon == 3) _keep_pivot = true; var addamt = abs(sin(siner / wobbletime) * wobbleamt); var addamt2 = addamt; if (reversal == 1) addamt = -addamt; x1 += addamt; x2 += addamt; y1 -= addamt2; y2 += addamt2; } if (wobblestate == 12) { var amt = abs(sin(siner / wobbletime) * wobbleamt); var amt2 = abs(cos(siner / wobbletime) * wobbleamt); x1 += amt; x2 += (amt2 / 2); y1 += amt; y2 += amt; } if (wobblestate == 13) { siner -= (speedscale - 1); animchangetimer += speedscale; if (pointcon == 0) { x1 = x - sprite_xoffset; y1 = y - sprite_yoffset; x2 = (x - sprite_xoffset) + sprite_width; y2 = y - sprite_yoffset; x3 = (x - sprite_xoffset) + sprite_width; y3 = (y - sprite_yoffset) + sprite_height; x4 = x - sprite_xoffset; y4 = (y - sprite_yoffset) + sprite_height; timediff = 0; pointcon++; wobbletime = 1; wobbleamt = 2; } if (pointcon == 1) { x1 += ((abs(sin(siner / wobbletime) * wobbleamt) - wobbleamt) * reversalsign); x2 += ((abs(sin(siner / wobbletime) * wobbleamt) - wobbleamt) * reversalsign); y1 -= (abs(sin(siner / wobbletime) * wobbleamt) - wobbleamt); y2 += ((abs(sin(siner / wobbletime) * wobbleamt) - wobbleamt) / 2); timediff = animchangetimer / changespeed; x1 -= (timediff * 10); x2 += (timediff * 10); x4 -= (timediff * 10); x3 += (timediff * 10); y1 = (y1 - 10) + (timediff * 20); y2 = (y2 - 10) + (timediff * 20); if (animchangetimer >= changespeed) pointcon++; } if (pointcon == 99) { timediff = animchangetimer / changespeed; x1 -= (timediff * 20); x2 += (timediff * 20); x4 -= (timediff * 20); x3 += (timediff * 20); y1 += (timediff * 10); y2 += (timediff * 10); if (animchangetimer >= changespeed) pointcon++; } if (pointcon == 2) { reversal = 0; bounce = 1; pointcon++; } if (pointcon == 3) { if (animchangetimer >= (changespeed * 2)) { animchangetimer = 0; pointcon = 0; } } var addamt = abs(sin(siner / wobbletime) * wobbleamt); var addamt2 = addamt; } if (wobblestate == 14) { shakex = sin(siner / 4) * sin(siner / 3) * 12; shakey = -abs(cos(siner / 2) * cos(siner / 1.5) * 28); drawtype = 0; siner = floor(siner); image_index = (sin(siner / 4) * 3) + 3; } if (wobblestate == 15) { shakex = sin(siner / 4) * sin(siner / 3) * 12; shakey = -abs(cos(siner / 2) * cos(siner / 1.5) * 28); drawtype = 0; siner = floor(siner); image_index = (sin(siner / 4) * 16) + 48; } if (wobblestate == 16) { shakex = sin(siner / 4) * sin(siner / 3) * 12; shakey = -abs(cos(siner / 2) * cos(siner / 1.5) * 28); drawtype = 0; siner = floor(siner); if (frame < 10) frame = 10; if ((siner % 40) == 0) { frame = floor(random(63)) + 10; wobbleamt = 3 + floor(random(10)); } image_index = frame + (sin(siner / 2) * wobbleamt); } if (wobblestate == 17) { x1 -= ((abs(sin(siner / wobbletime) * wobbleamt) - wobbleamt) * reversalsign); x2 -= ((abs(sin(siner / wobbletime) * wobbleamt) - wobbleamt) * reversalsign); y1 += (abs(sin(siner / wobbletime) * wobbleamt) - wobbleamt); y2 -= ((abs(sin(siner / wobbletime) * wobbleamt) - wobbleamt) / 2); } if (reversal == 1) { var remx1 = x1; var remx2 = x2; var remx3 = x3; var remx4 = x4; x1 = remx2; x2 = remx1; x3 = remx4; x4 = remx3; if (_keep_pivot) { x1 += (sprite_width - sprite_xoffset); x2 += (sprite_width - sprite_xoffset); x3 += (sprite_width - sprite_xoffset); x4 += (sprite_width - sprite_xoffset); } } if (drawtype == 0) { if (xscale != 2) { x1 = x + ((x1 - x) * (xscale / 2)); x2 = x + ((x2 - x) * (xscale / 2)); x3 = x + ((x3 - x) * (xscale / 2)); x4 = x + ((x4 - x) * (xscale / 2)); } if (yscale != 2) { y1 = y + ((y1 - y) * (yscale / 2)); y2 = y + ((y2 - y) * (yscale / 2)); y3 = y + ((y3 - y) * (yscale / 2)); y4 = y + ((y4 - y) * (yscale / 2)); } if (shakex != 0) { x1 += shakex; x2 += shakex; x3 += shakex; x4 += shakex; } if (shakey != 0) { y1 += shakey; y2 += shakey; y3 += shakey; y4 += shakey; } if (outline) { d3d_set_fog(true, c_black, 0, 1); draw_sprite_pos(sprite_index, image_index, x1 - 2, y1, x2 - 2, y2, x3 - 2, y3, x4 - 2, y4, 1); draw_sprite_pos(sprite_index, image_index, x1, y1 - 2, x2, y2 - 2, x3, y3 - 2, x4, y4 - 2, 1); draw_sprite_pos(sprite_index, image_index, x1, y1 + 2, x2, y2 + 2, x3, y3 + 2, x4, y4 + 2, 1); draw_sprite_pos(sprite_index, image_index, x1 + 2, y1, x2 + 2, y2, x3 + 2, y3, x4 + 2, y4, 1); d3d_set_fog(false, c_black, 0, 0); } if (dropshadow) { d3d_set_fog(true, c_black, 0, 1); draw_sprite_pos(sprite_index, image_index, x1 + dropdist, y1 + dropdist, x2 + dropdist, y2 + dropdist, x3 + dropdist, y3 + dropdist, x4 + dropdist, y4 + dropdist, 1); d3d_set_fog(false, c_white, 0, 0); } draw_sprite_pos(sprite_index, image_index, x1, y1, x2, y2, x3, y3, x4, y4, 1); } if (drawtype == 1) { if (dropshadow) draw_sprite_ext(sprite_index, image_index, x + dropdist, y + dropdist, image_xscale, image_yscale, image_angle, c_black, image_alpha); draw_self(); if (flash) { flashsiner++; d3d_set_fog(true, image_blend, 0, 1); draw_sprite_ext(sprite_index, image_index, x, y, image_xscale, image_yscale, image_angle, image_blend, (-cos(flashsiner / 5) * 0.4) + 0.6); d3d_set_fog(false, c_black, 0, 0); } if (darkenalpha > 0) { d3d_set_fog(true, c_black, 0, 1); draw_sprite_ext(sprite_index, image_index, x, y, image_xscale, image_yscale, image_angle, c_black, darkenalpha); d3d_set_fog(false, c_black, 0, 0); darkenalpha -= 0.01; } } if (drawtype == 2) { animsiner++; var bx = sin(animsiner / 6) * 5; var by = -abs(cos(animsiner / 4)) * 5; var armx = sin(animsiner / 6) * 9; var army = cos(animsiner / 6) * 6; var headx = sin(animsiner / 6) * 8; var heady = (sin(animsiner / 6) * 6) + 4; var legx = sin((animsiner + 4) / 6) * 5; var legy = cos(animsiner / 6) * 2; var _color = 16777215; animsinerb++; var image = animsiner / 6; var loopimage = 1.5 + (sin(image) * 1.5); var loopimage1 = 1 + (sin(image) * 1); var tailimage = image; armshake *= -1; armshakesiner++; var chargingup = 1; var armshakevalue = clamp((sin((armshakesiner / 18) - 1) * 1.5) - 1, 0, 4); var armshakey = armshakevalue * armshake; var headimage = 2; if (chargingup == 0) { armshakey = 0; armshakevalue = 0; } draw_sprite_ext(spr_tenna_battle_leg_l, image, x - legx, y + legy, image_xscale, image_yscale, image_angle, _color, image_alpha); draw_sprite_ext(spr_tenna_battle_leg_r, image, x + legx, y - (legy / 4), image_xscale, image_yscale, image_angle, _color, image_alpha); draw_sprite_ext(spr_tenna_battle_tails, tailimage, (x + (bx / 2)) - 4, y + by, image_xscale, image_yscale, image_angle, _color, image_alpha); draw_sprite_ext(spr_tenna_battle_arm_back, 3 - loopimage, ((x + bx) - (armx * 1.5)) + 12, (y + by) - army, image_xscale, image_yscale, image_angle, _color, image_alpha); draw_sprite_ext(spr_tenna_battle_torso, 0, x + bx, y + by, image_xscale, image_yscale, image_angle, _color, image_alpha); draw_sprite_ext(spr_tenna_battle_tie, 0, x + bx, y + by, image_xscale, image_yscale, image_angle, _color, image_alpha); draw_sprite_ext(spr_tenna_battle_face, headimage - (armshakevalue * 5), ((x + bx) - headx) + 2 + (armshakey / 2), (y + by + heady) - 2 - (armshakey / 2), image_xscale, image_yscale, image_angle, _color, image_alpha); draw_sprite_ext(spr_tenna_battle_arm_front, loopimage, ((x + bx) - armx) + armshakey, y + by + army + armshakey, image_xscale, image_yscale, image_angle, _color, image_alpha); } var lineshow = 0; if (lineshow) { draw_line(x1, y1, x2, y2); draw_line(x2, y2, x3, y3); draw_line(x1, y1, x4, y4); draw_line(x4, y4, x3, y3); draw_circle(x, y, 0.5, 1); draw_text(__cx, (__cy + 480) - 15, "wobblestate=" + string(wobblestate)); } if (golden_mode) pal_swap_reset();