diff --git a/code/ZAS/Airflow.dm b/code/ZAS/Airflow.dm
index 7b0d3afa98b..62a6daea16f 100644
--- a/code/ZAS/Airflow.dm
+++ b/code/ZAS/Airflow.dm
@@ -2,17 +2,18 @@
Contains helper procs for airflow, handled in /connection_group.
*/
-
mob/var/tmp/last_airflow_stun = 0
mob/proc/airflow_stun()
if(stat == 2)
return 0
if(last_airflow_stun > world.time - vsc.airflow_stun_cooldown) return 0
+
if(!(status_flags & CANSTUN) && !(status_flags & CANWEAKEN))
- src << "\blue You stay upright as the air rushes past you."
+ src << "You stay upright as the air rushes past you."
return 0
- if(weakened <= 0) src << "\red The sudden rush of air knocks you over!"
- weakened = max(weakened,5)
+ if(!lying)
+ src << "The sudden rush of air knocks you over!"
+ Weaken(5)
last_airflow_stun = world.time
mob/living/silicon/airflow_stun()
@@ -22,16 +23,9 @@ mob/living/carbon/metroid/airflow_stun()
return
mob/living/carbon/human/airflow_stun()
- if(last_airflow_stun > world.time - vsc.airflow_stun_cooldown) return 0
- if(buckled) return 0
if(shoes)
if(shoes.flags & NOSLIP) return 0
- if(!(status_flags & CANSTUN) && !(status_flags & CANWEAKEN))
- src << "\blue You stay upright as the air rushes past you."
- return 0
- if(weakened <= 0) src << "\red The sudden rush of air knocks you over!"
- weakened = max(weakened,rand(1,5))
- last_airflow_stun = world.time
+ ..()
atom/movable/proc/check_airflow_movable(n)
@@ -84,10 +78,8 @@ obj/item/check_airflow_movable(n)
if(istype(src, /mob/living/carbon/human))
if(src:buckled)
return
- if(src:shoes)
- if(istype(src:shoes, /obj/item/clothing/shoes/magboots))
- if(src:shoes:magpulse)
- return
+ if(src:shoes && src:shoes.flags & NOSLIP)
+ return
src << "\red You are sucked away by airflow!"
var/airflow_falloff = 9 - sqrt((x - airflow_dest.x) ** 2 + (y - airflow_dest.y) ** 2)
if(airflow_falloff < 1)
@@ -207,7 +199,8 @@ mob/airflow_hit(atom/A)
for(var/mob/M in hearers(src))
M.show_message("\red \The [src] slams into \a [A]!",1,"\red You hear a loud slam!",2)
playsound(src.loc, "smash.ogg", 25, 1, -1)
- weakened = max(weakened, (istype(A,/obj/item) ? A:w_class : rand(1,5))) //Heheheh
+ var/weak_amt = istype(A,/obj/item) ? A:w_class : rand(1,5) //Heheheh
+ Weaken(weak_amt)
. = ..()
obj/airflow_hit(atom/A)
@@ -239,10 +232,10 @@ mob/living/carbon/human/airflow_hit(atom/A)
apply_damage(b_loss/3, BRUTE, "groin", blocked, 0, "Airflow")
if(airflow_speed > 10)
- paralysis += round(airflow_speed * vsc.airflow_stun)
- stunned = max(stunned,paralysis + 3)
+ Paralyse(round(airflow_speed * vsc.airflow_stun))
+ Stun(paralysis + 3)
else
- stunned += round(airflow_speed * vsc.airflow_stun/2)
+ Stun(round(airflow_speed * vsc.airflow_stun/2))
. = ..()
zone/proc/movables()
diff --git a/code/game/objects/buckling.dm b/code/game/objects/buckling.dm
index 00e39993321..d64857d0042 100644
--- a/code/game/objects/buckling.dm
+++ b/code/game/objects/buckling.dm
@@ -24,6 +24,7 @@
return 0
M.buckled = src
+ M.facing_dir = null
M.set_dir(dir)
M.update_canmove()
buckled_mob = M
diff --git a/code/game/objects/structures/stool_bed_chair_nest/bed.dm b/code/game/objects/structures/stool_bed_chair_nest/bed.dm
index a53ceff7cbd..6d50066a748 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm
@@ -138,8 +138,8 @@
density = 1
icon_state = "up"
else
- buckled_mob.pixel_y = 0
- buckled_mob.old_y = 0
+ M.pixel_y = 0
+ M.old_y = 0
density = 0
icon_state = "down"
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index 850a4147dd6..db14807a067 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -1180,7 +1180,9 @@ mob/proc/yank_out_object()
usr << "You are now facing [dir2text(facing_dir)]."
/mob/proc/set_face_dir(var/newdir)
- if(newdir)
+ if(newdir == facing_dir)
+ facing_dir = null
+ else if(newdir)
set_dir(newdir)
facing_dir = newdir
else if(facing_dir)
@@ -1200,20 +1202,16 @@ mob/proc/yank_out_object()
/mob/verb/northfaceperm()
set hidden = 1
- facing_dir = null
set_face_dir(NORTH)
/mob/verb/southfaceperm()
set hidden = 1
- facing_dir = null
set_face_dir(SOUTH)
/mob/verb/eastfaceperm()
set hidden = 1
- facing_dir = null
set_face_dir(EAST)
/mob/verb/westfaceperm()
set hidden = 1
- facing_dir = null
set_face_dir(WEST)
diff --git a/interface/skin.dmf b/interface/skin.dmf
index 7ba4d107881..d0680547312 100644
--- a/interface/skin.dmf
+++ b/interface/skin.dmf
@@ -249,6 +249,23 @@ macro "hotkeymode"
name = "SOUTH+REP"
command = ".south"
is-disabled = false
+ elem
+ name = "ALT+WEST"
+ command = "westfaceperm"
+ is-disabled = false
+ is-disabled = false
+ elem
+ name = "ALT+NORTH"
+ command = "northfaceperm"
+ is-disabled = false
+ elem
+ name = "ALT+EAST"
+ command = "eastfaceperm"
+ is-disabled = false
+ elem
+ name = "ALT+SOUTH"
+ command = "southfaceperm"
+ is-disabled = false
elem
name = "INSERT"
command = "a-intent right"
@@ -1828,7 +1845,7 @@ window "infowindow"
elem "info"
type = INFO
pos = 0,0
- size = 636x451
+ size = 638x477
anchor1 = 0,0
anchor2 = 100,100
font-family = ""