diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 583daa7ade3..7232239d6f5 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -3,7 +3,7 @@ appearance_flags = TILE_BOUND glide_size = 8 // Default, adjusted when mobs move based on their movement delays var/last_move = null - var/anchored = 0 + var/anchored = FALSE var/move_resist = MOVE_RESIST_DEFAULT var/move_force = MOVE_FORCE_DEFAULT var/pull_force = PULL_FORCE_DEFAULT @@ -13,13 +13,15 @@ var/datum/thrownthing/throwing = null var/throw_speed = 2 //How many tiles to move per ds when being thrown. Float values are fully supported var/throw_range = 7 - var/no_spin = 0 - var/no_spin_thrown = 0 - var/moved_recently = 0 + var/no_spin = FALSE + var/no_spin_thrown = FALSE + var/moved_recently = FALSE var/mob/pulledby = null var/atom/movable/pulling + /// Face towards the atom while pulling it + var/face_while_pulling = FALSE var/throwforce = 0 - var/canmove = 1 + var/canmove = TRUE var/inertia_dir = 0 var/atom/inertia_last_loc diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index e508b09fc8e..4d58c90a095 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -2,6 +2,7 @@ icon = 'icons/obj/structures.dmi' pressure_resistance = 8 max_integrity = 300 + face_while_pulling = TRUE var/climbable var/mob/climber var/broken = FALSE diff --git a/code/game/objects/structures/curtains.dm b/code/game/objects/structures/curtains.dm index 029b0a761ad..da8b0f48476 100644 --- a/code/game/objects/structures/curtains.dm +++ b/code/game/objects/structures/curtains.dm @@ -5,6 +5,7 @@ icon = 'icons/obj/curtain.dmi' name = "curtain" icon_state = "closed" + face_while_pulling = FALSE layer = SHOWER_CLOSED_LAYER opacity = 1 density = 0 diff --git a/code/game/objects/structures/engicart.dm b/code/game/objects/structures/engicart.dm index a77dc35b909..52e1d0ca8e1 100644 --- a/code/game/objects/structures/engicart.dm +++ b/code/game/objects/structures/engicart.dm @@ -3,6 +3,7 @@ desc = "A cart for storing engineering items." icon = 'icons/obj/engicart.dmi' icon_state = "cart" + face_while_pulling = FALSE anchored = 0 density = 1 var/obj/item/stack/sheet/glass/myglass = null diff --git a/code/game/objects/structures/foodcart.dm b/code/game/objects/structures/foodcart.dm index 3a9a3414986..0253ad66952 100644 --- a/code/game/objects/structures/foodcart.dm +++ b/code/game/objects/structures/foodcart.dm @@ -3,6 +3,7 @@ desc = "A cart for transporting food and drinks." icon = 'icons/obj/foodcart.dmi' icon_state = "cart" + face_while_pulling = FALSE anchored = 0 density = 1 //Food slots diff --git a/code/game/objects/structures/janicart.dm b/code/game/objects/structures/janicart.dm index e4bd6b26140..5c9b3393808 100644 --- a/code/game/objects/structures/janicart.dm +++ b/code/game/objects/structures/janicart.dm @@ -7,6 +7,7 @@ icon_state = "cart" anchored = 0 density = 1 + face_while_pulling = FALSE container_type = OPENCONTAINER //copypaste sorry var/amount_per_transfer_from_this = 5 //shit I dunno, adding this so syringes stop runtime erroring. --NeoFite 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 53b0ce8f1eb..4c5c8136182 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm @@ -70,6 +70,7 @@ name = "roller bed" icon = 'icons/obj/rollerbed.dmi' icon_state = "down" + face_while_pulling = FALSE resistance_flags = NONE anchored = FALSE comfort = 1 diff --git a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm index 9b8eb06e216..1318be1d310 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm @@ -11,6 +11,7 @@ max_integrity = 250 integrity_failure = 25 buckle_offset = 0 + face_while_pulling = FALSE var/buildstacktype = /obj/item/stack/sheet/metal var/buildstackamount = 1 var/item_chair = /obj/item/chair // if null it can't be picked up diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index e0f88a53b2b..ed75caa8f39 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -169,7 +169,10 @@ n = get_step(mob, direct) . = mob.SelfMove(n, direct, delay) - mob.setDir(direct) + if(mob.pulling?.face_while_pulling) + mob.setDir(get_dir(mob, mob.pulling)) // Face welding tanks and stuff when pulling + else + mob.setDir(direct) if((direct & (direct - 1)) && mob.loc == n) //moved diagonally successfully delay = mob.movement_delay() * 2 //Will prevent mob diagonal moves from smoothing accurately, sadly