diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 05990e8de9..c3531b6606 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -924,6 +924,12 @@ default behaviour is: /mob/living/Moved(var/atom/oldloc, direct, forced, movetime) . = ..() handle_footstep(loc) + // Begin VOREstation edit + if(is_shifted) + is_shifted = FALSE + pixel_x = 0 + pixel_y = 0 + // End VOREstation edit if(pulling) // we were pulling a thing and didn't lose it during our move. var/pull_dir = get_dir(src, pulling) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index b925bdd94e..ea09b6a25a 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -1022,6 +1022,40 @@ mob/proc/yank_out_object() set hidden = 1 set_face_dir(client.client_dir(WEST)) +// Begin VOREstation edit +/mob/verb/shiftnorth() + set hidden = TRUE + if(!canface()) + return FALSE + if(pixel_y <= 16) + pixel_y++ + is_shifted = TRUE + +/mob/verb/shiftsouth() + set hidden = TRUE + if(!canface()) + return FALSE + if(pixel_y >= -16) + pixel_y-- + is_shifted = TRUE + +/mob/verb/shiftwest() + set hidden = TRUE + if(!canface()) + return FALSE + if(pixel_x >= -16) + pixel_x-- + is_shifted = TRUE + +mob/verb/shifteast() + set hidden = TRUE + if(!canface()) + return FALSE + if(pixel_x <= 16) + pixel_x++ + is_shifted = TRUE +// End VOREstation edit + /mob/proc/adjustEarDamage() return diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index c5066adb7c..daf9ab6d89 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -83,6 +83,7 @@ var/resting = 0 //Carbon var/lying = 0 var/lying_prev = 0 + var/is_shifted = FALSE // VoreStation Edit; pixel shifting var/canmove = 1 //Allows mobs to move through dense areas without restriction. For instance, in space or out of holder objects. var/incorporeal_move = 0 //0 is off, 1 is normal, 2 is for ninjas. diff --git a/interface/skin.dmf b/interface/skin.dmf index 8e0f6d9ab2..28fbf978ce 100644 --- a/interface/skin.dmf +++ b/interface/skin.dmf @@ -53,6 +53,18 @@ macro "borghotkeymode" elem name = "SOUTH+REP" command = ".movedown" + elem + name = "CTRL+SHIFT+NORTH" + command = "shiftnorth" + elem + name = "CTRL+SHIFT+SOUTH" + command = "shiftsouth" + elem + name = "CTRL+SHIFT+WEST" + command = "shiftwest" + elem + name = "CTRL+SHIFT+EAST" + command = "shifteast" elem name = "INSERT" command = "a-intent right" @@ -274,6 +286,18 @@ macro "macro" elem name = "SOUTH+REP" command = ".movedown" + elem + name = "CTRL+SHIFT+NORTH" + command = "shiftnorth" + elem + name = "CTRL+SHIFT+SOUTH" + command = "shiftsouth" + elem + name = "CTRL+SHIFT+WEST" + command = "shiftwest" + elem + name = "CTRL+SHIFT+EAST" + command = "shifteast" elem name = "INSERT" command = "a-intent right" @@ -441,6 +465,18 @@ macro "hotkeymode" elem name = "SOUTH+REP" command = ".movedown" + elem + name = "CTRL+SHIFT+NORTH" + command = "shiftnorth" + elem + name = "CTRL+SHIFT+SOUTH" + command = "shiftsouth" + elem + name = "CTRL+SHIFT+WEST" + command = "shiftwest" + elem + name = "CTRL+SHIFT+EAST" + command = "shifteast" elem name = "INSERT" command = "a-intent right" @@ -680,6 +716,18 @@ macro "borgmacro" elem name = "SOUTH+REP" command = ".movedown" + elem + name = "CTRL+SHIFT+NORTH" + command = "shiftnorth" + elem + name = "CTRL+SHIFT+SOUTH" + command = "shiftsouth" + elem + name = "CTRL+SHIFT+WEST" + command = "shiftwest" + elem + name = "CTRL+SHIFT+EAST" + command = "shifteast" elem name = "INSERT" command = "a-intent right"