Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // update/calculate delta time
- if(keyboard_check(vk_shift))
- dt = 0.2
- else {
- //new_dt = 60*(current_time - old_time)/1000
- //dt = dt*0.97 + new_dt*0.03
- dt = 60 / room_speed
- }
- //room_caption = string(state)
- room_caption = sprite_get_name(sprite_index) + ':' + string(frame)
- KeyLeft = ord('Q')
- KeyRight = ord('D')
- KeyDown = ord('S')
- check_l = keyboard_check(KeyLeft)
- check_r = keyboard_check(KeyRight)
- check_jump = keyboard_check(vk_space)
- press_atk = mouse_check_button_pressed(mb_left)
- on_ground = !place_free(x, y+1)
- force_x = 0
- force_y = 0
- gravity_force = p_gravity_force
- // debug - test hits
- if(keyboard_check_pressed(vk_numpad0)) {
- playerChangeState(StateHitStatic, s_player_hit_static, 0)
- }
- if(keyboard_check_pressed(vk_numpad1)) {
- playerChangeState(StateHitFallsBack, s_player_hit_falls_back, 0)
- }
- if(keyboard_check_pressed(vk_numpad2)) {
- playerChangeState(StateHitFallsFront, s_player_hit_falls_front, 0)
- }
- if(on_ground) {
- deactivate_l = false
- deactivate_r = false
- }
- if(deactivate_l) {
- deactivate_timer -= dt
- if(deactivate_timer <= 0 ||
- (keyboard_check_released(KeyLeft) && check_r) ||
- keyboard_check_pressed(KeyLeft)) {
- deactivate_l = false
- }
- else {
- check_l = false
- check_r = true
- }
- }
- else
- if(deactivate_r) {
- deactivate_timer -= dt
- if(deactivate_timer <= 0 ||
- (keyboard_check_released(KeyRight) && check_l) ||
- keyboard_check_pressed(KeyRight)) {
- deactivate_r = false
- }
- else {
- check_r = false
- check_l = true
- }
- }
- frame_prev = frame
- if(sprite_index == s_player_run_acc ||
- sprite_index == s_player_run_dec ||
- sprite_index == s_player_wallsword_start) {
- frame += 0.4 * dt
- }
- else if(sprite_index == s_player_atk_fa) {
- frame += 1/6 * dt
- }
- else {
- frame += 0.2 * dt
- }
- if(state == StateIdle)
- {
- if(!on_ground) {
- playerChangeState(StateFall, s_player_jump_fall, 0)
- }
- else if(press_atk)
- {
- playerChangeState(StateAtkA, s_player_atk_a, 0)
- }
- else if(check_l xor check_r) {
- playerChangeState(StateRun, s_player_run_acc, 1)
- if(check_l && !check_r) {
- image_xscale = -1
- }
- else if(!check_l && check_r) {
- image_xscale = 1
- }
- }
- else if(check_jump && place_free(x, y-1)) {
- playerChangeState(StateJump, s_player_jump_leap, 0)
- }
- else if(sprite_index == s_player_run_dec
- && frame >= 8)
- {
- sprite_index = s_player_idle
- frame = 0
- }
- }
- else if(state == StateRun)
- {
- force = p_run_speed
- if(sprite_index == s_player_run_acc)
- {
- if(frame >= 4) {
- sprite_index = s_player_run
- }
- else {
- // progressive acceleration
- force *= min(1, frame / 4)
- }
- }
- if(!on_ground) {
- playerChangeState(StateFall, s_player_jump, 3)
- }
- else if(check_jump) {
- playerChangeState(StateJump, s_player_jump, 2)
- }
- else if(check_l) {
- image_xscale = -1
- force_x = -force
- if(playerIsOnSlopeL()) {
- playerChangeState(StateSlide, s_player_slide_loop, 0)
- slide_acc = force
- }
- else if(press_atk) {
- playerChangeState(StateAtkFA, s_player_atk_fa, 0)
- }
- }
- else if(check_r) {
- image_xscale = 1
- force_x = force
- if(playerIsOnSlopeR()) {
- playerChangeState(StateSlide, s_player_slide_loop, 0)
- slide_acc = force
- }
- else if(press_atk) {
- playerChangeState(StateAtkFA, s_player_atk_fa, 0)
- }
- }
- else {
- playerChangeState(StateIdle, s_player_run_dec, 0)
- }
- }
- else if(state == StateJump)
- {
- // run => jump
- if(sprite_index == s_player_jump) {
- if(frame >= 2) {
- if(on_ground)
- {
- if((image_xscale > 0 && check_r) ||
- (image_xscale < 0 && check_l) )
- {
- // small teleport
- applyForce(image_xscale*16, 0)
- //if(place_free(x+image_xscale*16, y))
- // x += image_xscale * 16
- vy = -p_jump_force_y_forward
- vx = image_xscale * p_jump_force_x_forward
- force_x = image_xscale * 2
- playerChangeState(StateFall, s_player_jump, frame)
- }
- else
- {
- playerChangeState(StateJump, s_player_jump_leap, 2)
- }
- }
- }
- }
- // idle => jump
- else if(sprite_index == s_player_jump_leap) {
- if(frame >= 3) {
- if(on_ground) {
- // esquive?
- if((image_xscale > 0 && check_l) ||
- (image_xscale < 0 && check_r) )
- {
- playerChangeState(StateFall, s_player_jump, 3)
- vx = -image_xscale * 3
- vy = -p_jump_force / 1.2
- force_x = -image_xscale * 2
- }
- else if((image_xscale > 0 && check_r) ||
- (image_xscale < 0 && check_l) )
- {
- playerChangeState(StateFall, s_player_jump, 3)
- vx = image_xscale * 3
- vy = -p_jump_force / 1.2
- force_x = image_xscale * 2
- }
- else {
- vy = -p_jump_force * 1.1
- }
- }
- else if(check_l) {
- force_x = -2
- }
- else if(check_r) {
- force_x = 2
- }
- if(frame >= 4) {
- playerChangeState(StateFall, s_player_jump_fall, 0)
- //sprite_index = s_player_jump_fall
- //frame = 0
- }
- }
- }
- /*
- else if(sprite_index == s_player_jump_fall) {
- if(vy >= 0) {
- playerChangeState(StateFall, s_player_jump_fall, frame)
- }
- else if(check_l) {
- force_x = -2
- }
- else if(check_r) {
- force_x = 2
- }
- }*/
- else if(on_ground) {
- playerChangeState(StateLand, s_player_jump_land, 0)
- }
- }
- else if(state == StateFall) // jumping and falling
- {
- if(vy < 0) // jumping
- {
- /*if(sprite_index == s_player_jump_fall)
- {
- if(frame > 3) {
- frame = 3
- }
- }
- else */if(sprite_index == s_player_jump)
- {
- if(sprite_index == s_player_jump && frame > 5) {
- frame = 5
- }
- if(sprite_index == s_player_jump_fall && frame > 3) {
- frame = 3
- }
- ready_to_walljump =
- (wallAtLeft () && image_xscale < 0) ||
- (wallAtRight() && image_xscale > 0)
- if((wallAtLeft () && image_xscale < 0) ||
- (wallAtRight() && image_xscale > 0) )
- {
- wall_glue_timer = -1
- }
- if(check_jump
- && ready_to_walljump)
- {
- playerChangeState(StateWallJump, s_player_walljump_start, 0)
- wall_glue_timer = 0
- }
- else if(wall_glue_timer <= 0)
- {
- if(check_l) {
- force_x = -p_jump_force_x_forward
- }
- else if(check_r) {
- force_x = p_jump_force_x_forward
- }
- else {
- force_x = 0
- }
- }
- if(sprite_index == s_player_jump
- && image_xscale < 0 && wallAtLeft())
- {
- playerChangeState(StateWall, s_player_wallsword_start, 1)
- }
- else if(sprite_index == s_player_jump
- && image_xscale > 0 && wallAtRight())
- {
- playerChangeState(StateWall, s_player_wallsword_start, 1)
- }
- }
- }
- else // falling
- {
- if( (image_xscale > 0 && playerIsOnSlopeR()) ||
- (image_xscale < 0 && playerIsOnSlopeL()) )
- {
- playerChangeState(StateSlide, s_player_slide_loop, 0)
- slide_acc = force
- }
- else if( (check_r && image_xscale > 0 && playerShouldCliffR()))
- {
- // move the player at the good coordinates
- var ins;
- ins = instance_position(bbox_right+1, bbox_top+8, o_block_cliff)
- if(ins != noone) {
- y = ins.y + (bbox_bottom - bbox_top) - 2
- }
- playerChangeState(StateCliffHangStart, s_player_cliff_hang_start, 0)
- }
- else if( (check_l && image_xscale < 0 && playerShouldCliffL()))
- {
- // move the player at the good coordinates
- var ins;
- ins = instance_position(bbox_left-1, bbox_top+8, o_block_cliff)
- if(ins != noone) {
- y = ins.y + (bbox_bottom - bbox_top) - 2
- }
- playerChangeState(StateCliffHangStart, s_player_cliff_hang_start, 0)
- }
- else if(sprite_index == s_player_jump_fall)
- {
- if(frame > 3) {
- frame = 3
- }
- if(check_l) {
- force_x = -p_fall_force_x
- }
- else if(check_r) {
- force_x = p_fall_force_x
- }
- }
- else if(sprite_index == s_player_jump)
- {
- if(frame > 6) {
- frame = 6
- }
- if(check_l) {
- force_x = -p_fall_force_x_forward
- }
- else if(check_r) {
- force_x = p_fall_force_x_forward
- }
- else {
- force_x = 0
- }
- if(!keyboard_check(KeyDown))
- {
- if(sprite_index == s_player_jump
- && image_xscale < 0 && wallAtLeft()) {
- playerChangeState(StateWall, s_player_wallsword_start, 1)
- }
- else if(sprite_index == s_player_jump
- && image_xscale > 0 && wallAtRight()) {
- playerChangeState(StateWall, s_player_wallsword_start, 1)
- }
- }
- }
- }
- if(on_ground && state != StateSlide) {
- playerChangeState(StateLand, s_player_jump_land, 0)
- }
- }
- else if(state == StateLand)
- {
- if(frame >= 3) {
- playerChangeState(StateIdle, s_player_idle, 1)
- }
- else if(frame >= 2 && (check_l xor check_r)) {
- playerChangeState(StateRun, s_player_run_acc, 1)
- if(check_l && !check_r) {
- image_xscale = -1
- }
- else if(!check_l && check_r) {
- image_xscale = 1
- }
- }
- }
- else if(state == StateWall)
- {
- gravity_force = 0
- //vy = 0
- //force_y = p_wall_fall_force_y
- if(sprite_index == s_player_wallsword_start) {
- //force_y = 0
- vy = 0
- }
- else if(sprite_index == s_player_wallsword && frame < 1) {
- force_y = 0
- }
- else {
- if(vy < p_wall_fall_force_y) {
- vy += 0.1
- }
- force_y = vy/2
- }
- if(on_ground)
- {
- playerChangeState(StateLand, s_player_jump_land, 0)
- }
- else if(sprite_index == s_player_wallsword_start)
- {
- if(frame >= 3) {
- sprite_index = s_player_wallsword
- frame = 0
- }
- }
- else
- if( (image_xscale > 0 && !wallAtRight()) ||
- (image_xscale < 0 && !wallAtLeft()) )
- {
- playerChangeState(StateFall, s_player_jump_fall, 0)
- }
- else if(check_jump)
- {
- playerChangeState(StateWallJump, s_player_walljump_start, 0)
- }
- else if(keyboard_check_pressed(KeyDown)) {
- playerChangeState(StateFall, s_player_jump, 4)
- }
- }
- else if(state == StateWallJump)
- {
- gravity_force = 0
- vy = 0
- if(frame >= 1) {
- playerChangeState(StateFall, s_player_jump, 2)
- deactivate_timer = 60
- if(image_xscale < 0) {
- deactivate_l = true
- deactivate_r = false
- } else {
- deactivate_r = true
- deactivate_l = false
- }
- image_xscale *= -1
- force_x = image_xscale * p_wall_jump_force_x
- vx = image_xscale * p_wall_jump_inertia_x
- vy = -p_wall_jump_force_y
- }
- }
- else if(state == StateSlide)
- {
- force_x = slide_acc * image_xscale
- if(slide_acc < p_slide_max_speed) {
- slide_acc += p_slide_acc * dt
- slide_acc = min(slide_acc, p_slide_max_speed)
- }
- // jump: todo
- if(check_jump) {
- //playerChangeState(StateJump, s_player_jump, 2)
- // code doublon
- // small teleport
- applyForce(image_xscale*16, 0)
- vy = -p_slide_jump_force
- vx = image_xscale * (p_slide_jump_inertia_x + slide_acc*0.65)
- force_x = image_xscale * p_slide_jump_force_x
- playerChangeState(StateFall, s_player_jump, frame)
- }
- else if((image_xscale < 0 && playerSlideShouldStopL()) ||
- (image_xscale > 0 && playerSlideShouldStopR())) {
- playerChangeState(StateSlideEnd, s_player_slide_end, 0)
- }
- }
- else if(state == StateSlideEnd)
- {
- force_x = slide_acc * image_xscale
- if(slide_acc > 3) {
- slide_acc -= p_slide_acc * dt
- slide_acc = max(slide_acc, 3)
- }
- if(frame >= 5) {
- playerChangeState(StateIdle, s_player_idle, 0)
- }
- }
- else if(state == StateCliffHangStart)
- {
- if(frame >= 4) {
- playerChangeState(StateCliffHang, s_player_cliff_hang, 0)
- }
- }
- else if(state == StateCliffHang)
- {
- if(check_jump) {
- playerChangeState(StateCliffHangUp, s_player_cliff_hang_up, 0)
- }
- else if((/*(!check_r && image_xscale > 0) ||
- (!check_l && image_xscale < 0))
- && (frame >= 5 || */keyboard_check(KeyDown)))
- {
- playerChangeState(StateCliffHangDrop, s_player_cliff_hang_drop, 0)
- }
- }
- else if(state == StateCliffHangDrop)
- {
- if(frame >= 2) {
- playerChangeState(StateFall, s_player_jump_fall, 0)
- }
- }
- else if(state == StateCliffHangUp)
- {
- var dx, dy;
- dx = 46;
- dy = 60;
- camera_dx = lerp(0, dx * image_xscale, frame/7)
- camera_dy = lerp(0, -dy, frame/7)
- if(frame >= 7) {
- x += dx * image_xscale
- y -= dy
- playerChangeState(StateIdle, s_player_idle, 0)
- camera_dx = 0
- camera_dy = 0
- }
- }
- else if(state == StateAtkA)
- {
- if(frame >= 2 && frame < 4) {
- mask_index = sprite_index
- playerHitGoblin()
- }
- if(press_atk && frame < 7) {
- playerChangeState(StateAtkA2, s_player_atk_aa, frame)
- }
- else if(frame >= 8) {
- playerChangeState(StateIdle, s_player_idle, 0)
- }
- }
- else if(state == StateAtkA2)
- {
- if(frame >= 2 && frame < 4) {
- mask_index = s_player_atk_a
- }
- else if(frame >= 6 && frame < 8) {
- mask_index = s_player_atk_aa
- }
- if(mask_index != s_player_mask) {
- playerHitGoblin()
- }
- if(press_atk && frame < 10) {
- playerChangeState(StateAtkA3, s_player_atk_aaa, frame)
- }
- else if(frame >= 10) {
- playerChangeState(StateIdle, s_player_idle, 0)
- }
- }
- else if(state == StateAtkA3)
- {
- if(frame >= 2 && frame < 4) {
- mask_index = s_player_atk_a
- }
- else if(frame >= 6 && frame < 8) {
- mask_index = s_player_atk_aa
- }
- else if(frame >= 11 && frame < 13) {
- mask_index = s_player_atk_aaa
- }
- if(mask_index != s_player_mask) {
- playerHitGoblin()
- }
- if(frame >= 16) {
- playerChangeState(StateIdle, s_player_idle, 0)
- }
- }
- else if(state == StateAtkFA)
- {
- applyAnchor(anchor_atk_fa, StateIdle, s_player_idle, 0)
- if(press_atk && frame < 5) {
- playerChangeState(StateAtkFA2, s_player_atk_fafa, frame)
- }
- else if(frame >= 8) {
- playerChangeState(StateIdle, s_player_idle, 0)
- offset_x = 0
- camera_dx = 0
- }
- updateCameraOffset()
- }
- else if(state == StateAtkFA2)
- {
- applyAnchor(anchor_atk_fa2, StateIdle, s_player_idle, 0)
- if(press_atk && frame < 13) {
- playerChangeState(StateAtkFA3, s_player_atk_fafafa, frame)
- }
- else if(frame >= 15) {
- playerChangeState(StateIdle, s_player_idle, 0)
- offset_x = 0
- }
- updateCameraOffset()
- }
- else if(state == StateAtkFA3)
- {
- applyAnchor(anchor_atk_fa3, StateIdle, s_player_idle, 0)
- if(frame >= 20) {
- playerChangeState(StateIdle, s_player_idle, 0)
- offset_x = 0
- }
- updateCameraOffset()
- }
- else if(state == StateHitStatic)
- {
- if(frame >= 23) {
- playerChangeState(StateIdle, s_player_idle, 0)
- }
- }
- else if(state == StateHitGetupBack)
- {
- if(frame >= 12) {
- playerChangeState(StateIdle, s_player_idle, 0)
- }
- }
- else if(state == StateHitGetupFront)
- {
- if(frame >= 12) {
- playerChangeState(StateIdle, s_player_idle, 0)
- }
- }
- else if(state == StateHitFallsBack)
- {
- if(frame >= 1 && frame < 2 && !place_free(x, y+1)) {
- vx = -image_xscale * 6
- vy = -2.5
- }
- else if(frame >= 11) {
- playerChangeState(StateHitGetupBack, s_player_getup_back, 0)
- }
- }
- else if(state == StateHitFallsFront)
- {
- if(frame >= 1 && frame < 2 && !place_free(x, y+1)) {
- vx = image_xscale * 6
- vy = -2.5
- }
- else if(frame >= 11) {
- playerChangeState(StateHitGetupFront, s_player_getup_front, 0)
- }
- }
- // apply horizontal friction
- {
- fric = 0.1 * dt
- if(on_ground) fric *= 2
- if(vx > 0) {
- vx = max(0, vx-fric)
- } else {
- vx = min(0, vx+fric)
- }
- }
- // some states deactivate the gravity and vertical forces
- if(state == StateCliffHangStart ||
- state == StateCliffHang ||
- state == StateCliffHangUp) {
- vy = 0
- } else {
- vy += gravity_force * dt
- }
- // limit vertical speed
- if(vy > 12) {
- vy = 12
- }
- updateFromVelocity(dt, force_x, force_y)
- if(collisionRight || collisionLeft) vx = 0
- if(collisionTop || collisionBottom) vy = 0
- old_time = current_time
Advertisement
Add Comment
Please, Sign In to add comment