var _hspeed = lengthdir_x(stored_speed, direction) * 2; var _vspeed = lengthdir_y(stored_speed, direction) * 2; var newdir = direction; var cx = camerax(); var cy = cameray(); var cw = camerawidth(); var ch = cameraheight(); var padh = -60; var padv = -80; var hcheck = (x + _hspeed) < (cx - padh) || (x + _hspeed) > (cx + cw + padh); var vcheck = (y + _vspeed) < (cy - padv) || (y + _vspeed) > ((cy + ch) - 160); if (vspeed > 0) { with (obj_plat_follower) { if (name == "ralsei" && is_platform_mode && y > ((cy + ch) - 160)) { vcheck = true; break; } } } var got_hit = false; if (hcheck && !vcheck) { newdir = 180 - newdir; x += lengthdir_x(stored_speed, newdir); y += lengthdir_y(stored_speed, newdir); scr_debug_print("hbounce"); got_hit = true; with (obj_plat_camera) shakex = 6; } else if (vcheck && !hcheck) { newdir = -1 * newdir; x += lengthdir_x(stored_speed, newdir); y += lengthdir_y(stored_speed, newdir); scr_debug_print("vvbounce"); got_hit = true; with (obj_plat_camera) shakey = 6; } else if (hcheck && vcheck) { newdir = 180 - newdir; newdir = -1 * newdir; x += lengthdir_x(stored_speed, newdir); y += lengthdir_y(stored_speed, newdir); scr_debug_print("xxxbounce"); got_hit = true; with (obj_plat_camera) { shakex = 6; shakey = 6; } } if (got_hit) { turnstun = 2; hp--; hit = 1; shake = 4; flash_hurt(255); snd_play(snd_punchweak, 1, 0.5); if (hp <= 0) { instance_destroy(); exit; } } direction = newdir; target_angle = 180 + direction; if (image_xscale < 0) target_angle += 180;