diff --git a/code/__DEFINES/layers.dm b/code/__DEFINES/layers.dm
index 26894d3e6ea..db88f46a676 100644
--- a/code/__DEFINES/layers.dm
+++ b/code/__DEFINES/layers.dm
@@ -85,23 +85,29 @@
#define ABOVE_LIGHTING_PLANE 16
#define ABOVE_LIGHTING_LAYER 16
-#define BYOND_LIGHTING_PLANE 17
-#define BYOND_LIGHTING_LAYER 17
+#define FLOOR_OPENSPACE_PLANE 17
+#define OPENSPACE_LAYER 17
+
+#define BYOND_LIGHTING_PLANE 18
+#define BYOND_LIGHTING_LAYER 18
+
+#define CAMERA_STATIC_PLANE 19
+#define CAMERA_STATIC_LAYER 19
//HUD layer defines
-#define FULLSCREEN_PLANE 18
-#define FLASH_LAYER 18
-#define FULLSCREEN_LAYER 18.1
-#define UI_DAMAGE_LAYER 18.2
-#define BLIND_LAYER 18.3
-#define CRIT_LAYER 18.4
-#define CURSE_LAYER 18.5
+#define FULLSCREEN_PLANE 20
+#define FLASH_LAYER 20
+#define FULLSCREEN_LAYER 20.1
+#define UI_DAMAGE_LAYER 20.2
+#define BLIND_LAYER 20.3
+#define CRIT_LAYER 20.4
+#define CURSE_LAYER 20.5
-#define HUD_PLANE 19
-#define HUD_LAYER 19
-#define ABOVE_HUD_PLANE 20
-#define ABOVE_HUD_LAYER 20
+#define HUD_PLANE 21
+#define HUD_LAYER 21
+#define ABOVE_HUD_PLANE 22
+#define ABOVE_HUD_LAYER 22
-#define SPLASHSCREEN_LAYER 21
-#define SPLASHSCREEN_PLANE 21
\ No newline at end of file
+#define SPLASHSCREEN_LAYER 23
+#define SPLASHSCREEN_PLANE 23
\ No newline at end of file
diff --git a/code/_onclick/hud/blob_overmind.dm b/code/_onclick/hud/blob_overmind.dm
index feb57d83c05..6fe3a781642 100644
--- a/code/_onclick/hud/blob_overmind.dm
+++ b/code/_onclick/hud/blob_overmind.dm
@@ -141,6 +141,9 @@
blobpwrdisplay.name = "blob power"
blobpwrdisplay.icon_state = "block"
blobpwrdisplay.screen_loc = ui_health
+ blobpwrdisplay.mouse_opacity = MOUSE_OPACITY_TRANSPARENT
+ blobpwrdisplay.layer = ABOVE_HUD_LAYER
+ blobpwrdisplay.plane = ABOVE_HUD_PLANE
static_inventory += blobpwrdisplay
blobhealthdisplay = new /obj/screen()
diff --git a/code/_onclick/hud/picture_in_picture.dm b/code/_onclick/hud/picture_in_picture.dm
index bbac6e36df3..e011aea037c 100644
--- a/code/_onclick/hud/picture_in_picture.dm
+++ b/code/_onclick/hud/picture_in_picture.dm
@@ -1,7 +1,7 @@
/obj/screen/movable/pic_in_pic
name = "Picture-in-picture"
screen_loc = "CENTER"
- plane = GAME_PLANE
+ plane = FLOOR_PLANE
var/atom/center
var/width = 0
var/height = 0
diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm
index aeda1e5baa6..c583617ac23 100644
--- a/code/_onclick/hud/screen_objects.dm
+++ b/code/_onclick/hud/screen_objects.dm
@@ -9,9 +9,10 @@
/obj/screen
name = ""
icon = 'icons/mob/screen_gen.dmi'
- layer = HUD_LAYER_SCREEN
- plane = ABOVE_HUD_PLANE
- unacidable = 1
+ layer = HUD_LAYER
+ plane = HUD_PLANE
+ resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF
+ unacidable = TRUE
var/obj/master = null //A reference to the object in the slot. Grabs or items, generally.
var/datum/hud/hud = null
appearance_flags = NO_CLIENT_COLOR
@@ -36,6 +37,8 @@
/obj/screen/close
name = "close"
+ layer = ABOVE_HUD_LAYER
+ plane = ABOVE_HUD_PLANE
/obj/screen/close/Click()
if(master)
@@ -47,8 +50,6 @@
/obj/screen/drop
name = "drop"
icon_state = "act_drop"
- layer = HUD_LAYER
- plane = HUD_PLANE
/obj/screen/drop/Click()
usr.drop_item_v()
@@ -144,9 +145,7 @@
name = "resist"
icon = 'icons/mob/screen_midnight.dmi'
icon_state = "act_resist"
- layer = HUD_LAYER
- plane = HUD_PLANE
-
+
/obj/screen/resist/Click()
if(isliving(usr))
var/mob/living/L = usr
@@ -329,8 +328,6 @@
/obj/screen/inventory
var/slot_id //The indentifier for the slot. It has nothing to do with ID cards.
var/list/object_overlays = list()
- layer = HUD_LAYER
- plane = HUD_PLANE
/obj/screen/inventory/MouseEntered()
..()
@@ -420,8 +417,6 @@
return 1
/obj/screen/swap_hand
- layer = HUD_LAYER
- plane = HUD_PLANE
name = "swap hand"
/obj/screen/swap_hand/Click()
diff --git a/code/datums/components/squeak.dm b/code/datums/components/squeak.dm
index 3fe88f7d0e9..e5b948f4f26 100644
--- a/code/datums/components/squeak.dm
+++ b/code/datums/components/squeak.dm
@@ -1,5 +1,3 @@
-// Squeak component ported over from tg
-
/datum/component/squeak
var/static/list/default_squeak_sounds = list('sound/items/toysqueak1.ogg'=1, 'sound/items/toysqueak2.ogg'=1, 'sound/items/toysqueak3.ogg'=1)
var/list/override_squeak_sounds
@@ -49,21 +47,12 @@
else
playsound(parent, pickweight(override_squeak_sounds), volume, 1, -1)
-/datum/component/squeak/proc/step_squeak(datum/source, mob/living/carbon/human/H)
- if(H.m_intent == MOVE_INTENT_RUN)
- if(steps > step_delay)
- play_squeak()
- steps = 0
- else
- steps++
- else
+/datum/component/squeak/proc/step_squeak()
+ if(steps > step_delay)
play_squeak()
-
-/datum/component/squeak/proc/on_equip(datum/source, mob/equipper, slot)
- RegisterSignal(equipper, COMSIG_MOVABLE_DISPOSING, .proc/disposing_react, TRUE)
-
-/datum/component/squeak/proc/on_drop(datum/source, mob/user)
- UnregisterSignal(user, COMSIG_MOVABLE_DISPOSING)
+ steps = 0
+ else
+ steps++
/datum/component/squeak/proc/play_squeak_crossed(atom/movable/AM)
if(isitem(AM))
@@ -83,6 +72,13 @@
last_use = world.time
play_squeak()
+/datum/component/squeak/proc/on_equip(datum/source, mob/equipper, slot)
+ RegisterSignal(equipper, COMSIG_MOVABLE_DISPOSING, .proc/disposing_react, TRUE)
+
+/datum/component/squeak/proc/on_drop(datum/source, mob/user)
+ UnregisterSignal(user, COMSIG_MOVABLE_DISPOSING)
+
+// Disposal pipes related shit
/datum/component/squeak/proc/disposing_react(datum/source, obj/structure/disposalholder/holder, obj/machinery/disposal/source)
//We don't need to worry about unregistering this signal as it will happen for us automaticaly when the holder is qdeleted
RegisterSignal(holder, COMSIG_ATOM_DIR_CHANGE, .proc/holder_dir_change)
diff --git a/code/datums/mutable_appearance.dm b/code/datums/mutable_appearance.dm
index 2b0c3e1a44c..31c20315508 100644
--- a/code/datums/mutable_appearance.dm
+++ b/code/datums/mutable_appearance.dm
@@ -4,6 +4,11 @@
// Mutable appearances are children of images, just so you know.
+/mutable_appearance/New()
+ ..()
+ plane = FLOAT_PLANE // No clue why this is 0 by default yet images are on FLOAT_PLANE
+ // And yes this does have to be in the constructor, BYOND ignores it if you set it as a normal var
+
// Helper similar to image()
/proc/mutable_appearance(icon, icon_state = "", layer = FLOAT_LAYER, plane = FLOAT_PLANE)
var/mutable_appearance/MA = new()
@@ -13,7 +18,7 @@
MA.plane = plane
return MA
-/mutable_appearance/clean
+
/mutable_appearance/clean/New()
. = ..()
alpha = 255
diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm
index e962365451e..d1bee2bb62e 100644
--- a/code/game/atoms_movable.dm
+++ b/code/game/atoms_movable.dm
@@ -185,11 +185,12 @@
. = 0
// Called after a successful Move(). By this point, we've already moved
-/atom/movable/proc/Moved(atom/OldLoc, Dir)
- if(!inertia_moving)
+/atom/movable/proc/Moved(atom/OldLoc, Dir, Forced = FALSE)
+ SEND_SIGNAL(src, COMSIG_MOVABLE_MOVED, OldLoc, Dir, Forced)
+ if (!inertia_moving)
inertia_next_move = world.time + inertia_move_delay
newtonian_move(Dir)
- return 1
+ return TRUE
// Previously known as HasEntered()
// This is automatically called when something enters your square
diff --git a/code/game/gamemodes/miniantags/abduction/machinery/pad.dm b/code/game/gamemodes/miniantags/abduction/machinery/pad.dm
index f7ff2864608..697d173716a 100644
--- a/code/game/gamemodes/miniantags/abduction/machinery/pad.dm
+++ b/code/game/gamemodes/miniantags/abduction/machinery/pad.dm
@@ -7,7 +7,8 @@
var/turf/teleport_target
/obj/machinery/abductor/pad/proc/Warp(mob/living/target)
- target.Move(src.loc)
+ if(!target.buckled)
+ target.forceMove(get_turf(src))
/obj/machinery/abductor/pad/proc/Send()
if(teleport_target == null)
diff --git a/code/modules/mob/dead/dead.dm b/code/modules/mob/dead/dead.dm
index ca868b5e88f..f34aa75cd5e 100644
--- a/code/modules/mob/dead/dead.dm
+++ b/code/modules/mob/dead/dead.dm
@@ -1,23 +1,4 @@
/mob/dead/forceMove(atom/destination)
- // Overriden from code/game/atoms_movable.dm#141 to prevent things like mice squeaking when ghosts walk on them.
- // Same as parent, except that it does not include Uncrossed or Crossed calls.
- var/turf/old_loc = loc
+ var/oldloc = loc
loc = destination
-
- if(old_loc)
- old_loc.Exited(src, destination)
-
- if(destination)
- destination.Entered(src)
-
- if(isturf(destination) && opacity)
- var/turf/new_loc = destination
- new_loc.reconsider_lights()
-
- if(isturf(old_loc) && opacity)
- old_loc.reconsider_lights()
-
- for(var/datum/light_source/L in light_sources)
- L.source_atom.update_light()
-
- return 1
\ No newline at end of file
+ Moved(oldloc, NONE, TRUE)
\ No newline at end of file
diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm
index 3bc9d279eb9..57cf90ddd9a 100644
--- a/code/modules/mob/dead/observer/observer.dm
+++ b/code/modules/mob/dead/observer/observer.dm
@@ -10,7 +10,7 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER)
desc = "It's a g-g-g-g-ghooooost!" //jinkies!
icon = 'icons/mob/mob.dmi'
icon_state = "ghost"
- layer = 4
+ layer = GHOST_LAYER
stat = DEAD
density = 0
canmove = 0
@@ -228,29 +228,25 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
/mob/dead/observer/Move(NewLoc, direct)
following = null
- dir = direct
- ghostimage.dir = dir
+ setDir(direct)
+ ghostimage.setDir(dir)
+
+ var/oldloc = loc
+
if(NewLoc)
forceMove(NewLoc)
- return
- forceMove(get_turf(src)) //Get out of closets and such as a ghost
- if((direct & NORTH) && y < world.maxy)
- y++
- else if((direct & SOUTH) && y > 1)
- y--
- if((direct & EAST) && x < world.maxx)
- x++
- else if((direct & WEST) && x > 1)
- x--
+ else
+ forceMove(get_turf(src)) //Get out of closets and such as a ghost
+ if((direct & NORTH) && y < world.maxy)
+ y++
+ else if((direct & SOUTH) && y > 1)
+ y--
+ if((direct & EAST) && x < world.maxx)
+ x++
+ else if((direct & WEST) && x > 1)
+ x--
- for(var/obj/effect/step_trigger/S in locate(x, y, z)) //<-- this is dumb
- S.Crossed(src)
-
- var/area/A = get_area(src)
- if(A)
- A.Entered(src)
-
- ..()
+ Moved(oldloc, direct)
/mob/dead/observer/can_use_hands() return 0
@@ -399,7 +395,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
var/area/A = input("Area to jump to", "BOOYEA") as null|anything in ghostteleportlocs
var/area/thearea = ghostteleportlocs[A]
-
+
if(!thearea)
return
diff --git a/code/modules/mob/living/carbon/alien/larva/powers.dm b/code/modules/mob/living/carbon/alien/larva/powers.dm
index f1076721cf1..27837dc7cf5 100644
--- a/code/modules/mob/living/carbon/alien/larva/powers.dm
+++ b/code/modules/mob/living/carbon/alien/larva/powers.dm
@@ -7,8 +7,8 @@
if(stat != CONSCIOUS)
return
- if(layer != TURF_LAYER+0.2)
- layer = TURF_LAYER+0.2
+ if(layer != ABOVE_NORMAL_TURF_LAYER)
+ layer = ABOVE_NORMAL_TURF_LAYER
visible_message("[src] scurries to the ground!", "You are now hiding.")
else
layer = MOB_LAYER
diff --git a/code/modules/mob/living/carbon/brain/MMI.dm b/code/modules/mob/living/carbon/brain/MMI.dm
index 2e4d3e8efd6..6b194315f1d 100644
--- a/code/modules/mob/living/carbon/brain/MMI.dm
+++ b/code/modules/mob/living/carbon/brain/MMI.dm
@@ -44,7 +44,7 @@
visible_message("[user] sticks \a [O] into \the [src].")
brainmob = B.brainmob
B.brainmob = null
- brainmob.loc = src
+ brainmob.forceMove(src)
brainmob.container = src
brainmob.stat = CONSCIOUS
GLOB.respawnable_list -= brainmob
@@ -152,7 +152,7 @@
held_brain.name = "\the [brainmob.name]'s [initial(held_brain.name)]"
brainmob.container = null//Reset brainmob mmi var.
- brainmob.loc = held_brain//Throw mob into brain.
+ brainmob.forceMove(held_brain) //Throw mob into brain.
GLOB.respawnable_list += brainmob
GLOB.living_mob_list -= brainmob//Get outta here
held_brain.brainmob = brainmob//Set the brain to use the brainmob
diff --git a/code/modules/mob/living/carbon/brain/brain.dm b/code/modules/mob/living/carbon/brain/brain.dm
index 0f7d4230587..df0afa62f49 100644
--- a/code/modules/mob/living/carbon/brain/brain.dm
+++ b/code/modules/mob/living/carbon/brain/brain.dm
@@ -67,10 +67,10 @@
/mob/living/carbon/brain/on_forcemove(atom/newloc)
if(container)
- container.loc = newloc
+ container.forceMove(newloc)
else //something went very wrong.
CRASH("Brainmob without container.")
- loc = container
+ forceMove(container)
/*
This will return true if the brain has a container that leaves it less helpless than a naked brain
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index 44a333fbe44..1433b9c3358 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -72,7 +72,7 @@
if(prob(src.getBruteLoss() - 50))
for(var/atom/movable/A in stomach_contents)
- A.loc = loc
+ A.forceMove(drop_location())
stomach_contents.Remove(A)
src.gib()
@@ -833,7 +833,7 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump,
to_chat(src, "You successfully remove [I].")
if(I == handcuffed)
- handcuffed.loc = loc
+ handcuffed.forceMove(drop_location())
handcuffed.dropped(src)
handcuffed = null
if(buckled && buckled.buckle_requires_restraints)
@@ -841,7 +841,7 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump,
update_handcuffed()
return
if(I == legcuffed)
- legcuffed.loc = loc
+ legcuffed.forceMove(drop_location())
legcuffed.dropped()
legcuffed = null
update_inv_legcuffed()
@@ -935,7 +935,7 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump,
if(client)
client.screen -= W
if(W)
- W.loc = loc
+ W.forceMove(drop_location())
W.dropped(src)
if(W)
W.layer = initial(W.layer)
@@ -947,7 +947,7 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump,
if(client)
client.screen -= W
if(W)
- W.loc = loc
+ W.forceMove(drop_location())
W.dropped(src)
if(W)
W.layer = initial(W.layer)
@@ -1141,7 +1141,7 @@ so that different stomachs can handle things in different ways VB*/
sight = initial(sight)
lighting_alpha = initial(lighting_alpha)
-
+
for(var/obj/item/organ/internal/cyberimp/eyes/E in internal_organs)
sight |= E.vision_flags
if(E.see_in_dark)
@@ -1160,6 +1160,6 @@ so that different stomachs can handle things in different ways VB*/
sight |= (SEE_TURFS|SEE_MOBS|SEE_OBJS)
see_in_dark = 8
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE
-
+
SEND_SIGNAL(src, COMSIG_MOB_UPDATE_SIGHT)
sync_lighting_plane_alpha()
diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm
index 9e6ab986395..e68f5652b01 100644
--- a/code/modules/mob/living/carbon/human/inventory.dm
+++ b/code/modules/mob/living/carbon/human/inventory.dm
@@ -187,82 +187,85 @@
//This is an UNSAFE proc. Use mob_can_equip() before calling this one! Or rather use equip_to_slot_if_possible() or advanced_equip_to_slot_if_possible()
//set redraw_mob to 0 if you don't wish the hud to be updated - if you're doing it manually in your own proc.
-/mob/living/carbon/human/equip_to_slot(obj/item/W as obj, slot, redraw_mob = 1)
- if(!slot) return
- if(!istype(W)) return
- if(!has_organ_for_slot(slot)) return
+/mob/living/carbon/human/equip_to_slot(obj/item/I, slot, redraw_mob = 1)
+ if(!slot)
+ return
+ if(!istype(I))
+ return
+ if(!has_organ_for_slot(slot))
+ return
- if(W == src.l_hand)
+ if(I == src.l_hand)
src.l_hand = null
update_inv_l_hand() //So items actually disappear from hands.
- else if(W == src.r_hand)
+ else if(I == src.r_hand)
src.r_hand = null
update_inv_r_hand()
- W.screen_loc = null
- W.loc = src
- W.equipped(src, slot)
- W.layer = ABOVE_HUD_LAYER
- W.plane = ABOVE_HUD_PLANE
+ I.screen_loc = null
+ I.forceMove(src)
+ I.equipped(src, slot)
+ I.layer = ABOVE_HUD_LAYER
+ I.plane = ABOVE_HUD_PLANE
switch(slot)
if(slot_back)
- back = W
+ back = I
update_inv_back(redraw_mob)
if(slot_wear_mask)
- wear_mask = W
+ wear_mask = I
if((wear_mask.flags & BLOCKHAIR) || (wear_mask.flags & BLOCKHEADHAIR))
update_hair(redraw_mob) //rebuild hair
update_fhair(redraw_mob)
update_head_accessory(redraw_mob)
if(hud_list.len)
sec_hud_set_ID()
- wear_mask_update(W, toggle_off = TRUE)
+ wear_mask_update(I, toggle_off = TRUE)
update_inv_wear_mask(redraw_mob)
if(slot_handcuffed)
- handcuffed = W
+ handcuffed = I
update_inv_handcuffed(redraw_mob)
if(slot_legcuffed)
- legcuffed = W
+ legcuffed = I
update_inv_legcuffed(redraw_mob)
if(slot_l_hand)
- l_hand = W
+ l_hand = I
update_inv_l_hand(redraw_mob)
if(slot_r_hand)
- r_hand = W
+ r_hand = I
update_inv_r_hand(redraw_mob)
if(slot_belt)
- belt = W
+ belt = I
update_inv_belt(redraw_mob)
if(slot_wear_id)
- wear_id = W
+ wear_id = I
if(hud_list.len)
sec_hud_set_ID()
update_inv_wear_id(redraw_mob)
if(slot_wear_pda)
- wear_pda = W
+ wear_pda = I
update_inv_wear_pda(redraw_mob)
if(slot_l_ear)
- l_ear = W
+ l_ear = I
if(l_ear.slot_flags & SLOT_TWOEARS)
- var/obj/item/clothing/ears/offear/O = new(W)
- O.loc = src
+ var/obj/item/clothing/ears/offear/O = new(I)
+ O.forceMove(src)
r_ear = O
O.layer = ABOVE_HUD_LAYER
O.plane = ABOVE_HUD_PLANE
update_inv_ears(redraw_mob)
if(slot_r_ear)
- r_ear = W
+ r_ear = I
if(r_ear.slot_flags & SLOT_TWOEARS)
- var/obj/item/clothing/ears/offear/O = new(W)
- O.loc = src
+ var/obj/item/clothing/ears/offear/O = new(I)
+ O.forceMove(src)
l_ear = O
O.layer = ABOVE_HUD_LAYER
O.plane = ABOVE_HUD_PLANE
update_inv_ears(redraw_mob)
if(slot_glasses)
- glasses = W
- var/obj/item/clothing/glasses/G = W
+ glasses = I
+ var/obj/item/clothing/glasses/G = I
if(G.tint)
update_tint()
if(G.prescription)
@@ -272,49 +275,48 @@
update_inv_glasses(redraw_mob)
update_client_colour()
if(slot_gloves)
- gloves = W
+ gloves = I
update_inv_gloves(redraw_mob)
if(slot_head)
- head = W
+ head = I
if((head.flags & BLOCKHAIR) || (head.flags & BLOCKHEADHAIR))
update_hair(redraw_mob) //rebuild hair
update_fhair(redraw_mob)
update_head_accessory(redraw_mob)
// paper + bandanas
- if(istype(W, /obj/item/clothing/head))
- var/obj/item/clothing/head/hat = W
+ if(istype(I, /obj/item/clothing/head))
+ var/obj/item/clothing/head/hat = I
if(hat.vision_flags || hat.see_in_dark || !isnull(hat.lighting_alpha))
update_sight()
- head_update(W)
+ head_update(I)
update_inv_head(redraw_mob)
if(slot_shoes)
- shoes = W
+ shoes = I
update_inv_shoes(redraw_mob)
if(slot_wear_suit)
- wear_suit = W
+ wear_suit = I
update_inv_wear_suit(redraw_mob)
if(slot_w_uniform)
- w_uniform = W
+ w_uniform = I
update_inv_w_uniform(redraw_mob)
if(slot_l_store)
- l_store = W
+ l_store = I
update_inv_pockets(redraw_mob)
if(slot_r_store)
- r_store = W
+ r_store = I
update_inv_pockets(redraw_mob)
if(slot_s_store)
- s_store = W
+ s_store = I
update_inv_s_store(redraw_mob)
if(slot_in_backpack)
- if(get_active_hand() == W)
- unEquip(W)
- W.loc = back
+ if(get_active_hand() == I)
+ unEquip(I)
+ I.forceMove(back)
if(slot_tie)
var/obj/item/clothing/under/uniform = src.w_uniform
- uniform.attackby(W,src)
+ uniform.attackby(I, src)
else
to_chat(src, "You are trying to equip this item to an unsupported inventory slot. Report this to a coder!")
- return
/mob/living/carbon/human/put_in_hands(obj/item/W)
if(!W) return 0
diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm
index 6e540c4cf5a..6133c5150e1 100644
--- a/code/modules/mob/living/carbon/human/update_icons.dm
+++ b/code/modules/mob/living/carbon/human/update_icons.dm
@@ -597,7 +597,7 @@ var/global/list/damage_icon_parts = list()
client.screen -= thing // WHAT THE FUCKING FUCK BAY GODDAMNIT
// **I FUCKING HATE YOU AAAAAAAAAA**
if(thing) //
- thing.loc = loc //
+ thing.forceMove(drop_location()) //
thing.dropped(src) //
thing.layer = initial(thing.layer)
thing.plane = initial(thing.plane)
diff --git a/code/modules/mob/living/carbon/slime/powers.dm b/code/modules/mob/living/carbon/slime/powers.dm
index 23918680197..40f9060ee63 100644
--- a/code/modules/mob/living/carbon/slime/powers.dm
+++ b/code/modules/mob/living/carbon/slime/powers.dm
@@ -47,7 +47,7 @@
/mob/living/carbon/slime/proc/Feedon(var/mob/living/M)
Victim = M
- src.loc = M.loc
+ forceMove(M.loc)
canmove = 0
anchored = 1
var/lastnut = nutrition
@@ -64,7 +64,7 @@
canmove = 0
if(Adjacent(Victim))
- loc = M.loc
+ forceMove(M.loc)
if(iscarbon(Victim))
Victim.adjustCloneLoss(rand(5,6))
@@ -163,7 +163,7 @@
/mob/living/carbon/slime/proc/UpdateFeed(var/mob/M)
if(Victim)
if(Victim == M)
- loc = M.loc // simple "attach to head" effect!
+ forceMove(M.loc) // simple "attach to head" effect!
/mob/living/carbon/slime/verb/Evolve()
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index 9af52718ab3..dbf2cda075d 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -519,7 +519,6 @@
var/turf/T = loc
. = ..()
if(.)
- SEND_SIGNAL(src, COMSIG_MOVABLE_MOVED)
handle_footstep(loc)
step_count++
@@ -972,7 +971,7 @@
/mob/living/onTransitZ(old_z,new_z)
..()
- update_z(new_z)
+ update_z(new_z)
/mob/living/proc/owns_soul()
if(mind)
diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm
index 869c663e312..3b9b2d720ca 100644
--- a/code/modules/mob/living/simple_animal/friendly/mouse.dm
+++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm
@@ -35,8 +35,9 @@
can_collar = 1
gold_core_spawnable = CHEM_MOB_SPAWN_FRIENDLY
-/mob/living/simple_animal/mouse/Initialize()
+/mob/living/simple_animal/mouse/Initialize(mapload)
. = ..()
+ AddComponent(/datum/component/squeak, list('sound/creatures/mousesqueak.ogg' = 1), 100)
/mob/living/simple_animal/mouse/handle_automated_speech()
..()
@@ -92,10 +93,9 @@
/mob/living/simple_animal/mouse/Crossed(AM as mob|obj)
if(ishuman(AM))
- if(stat == CONSCIOUS)
+ if(!stat)
var/mob/M = AM
to_chat(M, "[bicon(src)] Squeek!")
- SEND_SOUND(M, squeak_sound)
..()
/mob/living/simple_animal/mouse/death(gibbed)
diff --git a/code/modules/mob/living/update_status.dm b/code/modules/mob/living/update_status.dm
index bec41f68698..39357533abb 100644
--- a/code/modules/mob/living/update_status.dm
+++ b/code/modules/mob/living/update_status.dm
@@ -93,9 +93,9 @@
density = !lying
if(lying)
if(layer == initial(layer))
- layer = MOB_LAYER - 0.2
+ layer = LYING_MOB_LAYER //so mob lying always appear behind standing mobs
else
- if(layer == MOB_LAYER - 0.2)
+ if(layer == LYING_MOB_LAYER)
layer = initial(layer)
update_transform()
diff --git a/code/modules/mob/mob_grab.dm b/code/modules/mob/mob_grab.dm
index a4a52d4ef1e..077164be6b7 100644
--- a/code/modules/mob/mob_grab.dm
+++ b/code/modules/mob/mob_grab.dm
@@ -214,12 +214,12 @@
shift = -10
adir = assailant.dir
affecting.setDir(assailant.dir)
- affecting.loc = assailant.loc
+ affecting.forceMove(assailant.loc)
if(GRAB_KILL)
shift = 0
adir = 1
affecting.setDir(SOUTH)//face up
- affecting.loc = assailant.loc
+ affecting.forceMove(assailant.loc)
switch(adir)
if(NORTH)
@@ -387,7 +387,7 @@
if(M == assailant && state >= GRAB_AGGRESSIVE) //no eatin unless you have an agressive grab
if(checkvalid(user, affecting)) //wut
var/mob/living/carbon/attacker = user
-
+
if(affecting.buckled)
to_chat(user, "[affecting] is buckled!")
return