if (global.pause) exit; ///Player Input key_right = keyboard_check(ord("D")) or keyboard_check(vk_right); key_left = -(keyboard_check(ord("A")) or keyboard_check(vk_left)); key_jump = keyboard_check_pressed(vk_space); key_jumpheight = (keyboard_check(vk_space)); key_down = keyboard_check(ord("S")) or keyboard_check(vk_down); key_sprint = 1.5 * keyboard_check(vk_shift); key_up = keyboard_check(ord("W")) or keyboard_check(vk_up); key_crouch = keyboard_check(vk_control); key_stand = keyboard_check_released(vk_control); keydown = key_down leftcheck = key_left * -1 //Death if life <= 0 { game_restart(); } if leftcheck {facing = -1} if key_right {facing = 1} //Move Speed move = key_right + key_left ; hsp = move * movespeed + (key_sprint * move * movespeed); //Jumping if (vsp < 10) vsp += grav if key_jump && (place_meeting(x,y+4,obj_wall)) { vsp = -jumpspeed //- (key_sprint * .5) } if !key_jumpheight && vsp < 0 && kill = 0 && !place_meeting(x,y+1,obj_enemy) && enemytouch = false { vsp = 0; } // Down Jumping if (place_meeting(x,y+4,obj_owp)) { if (key_jump) and (key_down) vsp = jumpspeed } //Resetting Pogo Kills. Needed for Pogoing and Control Jump to Work if (place_meeting(x,y+4,obj_wall)) { kill = 0 enemytouch = false } //Ladder if (key_up || key_down) && !key_crouch { if place_meeting(x,y,obj_ladder) ladder = true; } if (ladder) { vsp = 0; if (key_up) vsp = -2; if (key_down) vsp = 2; if !place_meeting(x,y,obj_ladder) ladder = false; if (key_crouch) ladder = false; } //Crouching? if key_crouch { crouching = true standing = false } else if !place_meeting(x,y-43,obj_wall) { standing = true crouching = false } //Wall Jumping // //if (place_meeting(x - 8, y, obj_wall) && (!place_meeting(x,y-4,obj_wall))) //{ //if leftcheck and (key_jump) vsp = -jumpspeed * .88; obj_player.wall = true; //if obj_player.wall = true && !place_meeting(x,y+8,obj_wall) && (key_jump) //{ // //x += 32 //} //} // //if (place_meeting(x + 8, y, obj_wall) && (!place_meeting(x,y-4,obj_wall))) //{ if (key_right) and (key_jump) vsp = -jumpspeed * .88; obj_player.wall = true; //if obj_player.wall = true && !place_meeting(x,y+8,obj_wall) && (key_jump) //{ //x -= 32 //} //} //if place_meeting(x,y+8,obj_wall) and !place_meeting(x+ hsp,y,obj_wall) //{obj_player.wall = false} // //Sliding //if (place_meeting(x,y+4,obj_wall) && !place_meeting(x+1,y+1,obj_wall)) //{ // ssp = key_down * movespeed * .5; // vsp = 1.5 * jumpspeed; // x += ssp; //} //else //{ // if (place_meeting(x,y+4,obj_wall) && !place_meeting(x-1,y+1,obj_wall)) // { // ssp = key_down * movespeed * -.5; // vsp = 1.5 * jumpspeed; // x += ssp; // } // else // { // ssp = 0; // } //} // //Horizontal Collision if place_meeting(x+hsp,y,obj_wall) { yplus = 0; while (place_meeting(x+hsp,y-yplus,obj_wall) && yplus <= abs(1*hsp)) yplus += 1; if place_meeting(x+hsp,y-yplus,obj_wall) { while (!place_meeting(x+sign(hsp),y,obj_wall)) x+=sign(hsp); hsp = 0; } else { y -= yplus } } x += hsp; yplus = 0; if place_meeting(x, y+10,obj_wall) && vsp >= 0 && !place_meeting(x,y-1,obj_wall) { y += yplus; grav = 2; } else { grav = 0.2; } //Vert Collision Detection if (place_meeting(x,y+vsp,obj_wall)) { while(!place_meeting(x,y+sign(vsp),obj_wall)) { y += sign(vsp) } vsp = 0 } y += vsp + vsp2;