diff --git a/code/modules/keybindings/bindings_mob.dm b/code/modules/keybindings/bindings_mob.dm index 964ee65047..36b4775c34 100644 --- a/code/modules/keybindings/bindings_mob.dm +++ b/code/modules/keybindings/bindings_mob.dm @@ -61,16 +61,28 @@ if(client.keys_held["Ctrl"]) switch(SSinput.movement_keys[_key]) if(NORTH) - northface() + if(client.keys_held["Shift"]) + northshift() + else + northface() return if(SOUTH) - southface() + if(client.keys_held["Shift"]) + southshift() + else + southface() return if(WEST) - westface() + if(client.keys_held["Shift"]) + westshift() + else + westface() return if(EAST) - eastface() + if(client.keys_held["Shift"]) + eastshift() + else + eastface() return return ..() diff --git a/code/modules/mob/living/living_movement.dm b/code/modules/mob/living/living_movement.dm index f278d22891..410e5b28db 100644 --- a/code/modules/mob/living/living_movement.dm +++ b/code/modules/mob/living/living_movement.dm @@ -1,6 +1,10 @@ /mob/living/Moved() . = ..() update_turf_movespeed(loc) + if(is_shifted) + is_shifted = FALSE + pixel_x = get_standard_pixel_x_offset(lying) + pixel_y = get_standard_pixel_y_offset(lying) /mob/living/CanPass(atom/movable/mover, turf/target) if((mover.pass_flags & PASSMOB)) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 497033b3e3..1f766d5f95 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -705,6 +705,38 @@ GLOBAL_VAR_INIT(exploit_warn_spam_prevention, 0) client.last_turn = world.time + MOB_FACE_DIRECTION_DELAY return TRUE +/mob/verb/eastshift() + set hidden = TRUE + if(!canface()) + return FALSE + if(pixel_x <= 16) + pixel_x++ + is_shifted = TRUE + +/mob/verb/westshift() + set hidden = TRUE + if(!canface()) + return FALSE + if(pixel_x >= -16) + pixel_x-- + is_shifted = TRUE + +/mob/verb/northshift() + set hidden = TRUE + if(!canface()) + return FALSE + if(pixel_y <= 16) + pixel_y++ + is_shifted = TRUE + +/mob/verb/southshift() + set hidden = TRUE + if(!canface()) + return FALSE + if(pixel_y >= -16) + pixel_y-- + is_shifted = TRUE + /mob/proc/IsAdvancedToolUser()//This might need a rename but it should replace the can this mob use things check return FALSE diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 6725e29610..059fed3d5c 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -38,6 +38,7 @@ var/resting = 0 //Carbon var/lying = 0 var/lying_prev = 0 + var/is_shifted = FALSE //MOVEMENT SPEED var/list/movespeed_modification //Lazy list, see mob_movespeed.dm