@@ -89,10 +89,10 @@
if(ishuman(usr))
if(!usr.put_in_hands(O))
O.forceMove(get_turf(src))
- update_icon()
+ update_appearance(updates = ALL)
/obj/structure/guncase/handle_atom_del(atom/A)
- update_icon()
+ update_appearance(updates = ALL)
/obj/structure/guncase/contents_explosion(severity, target)
for(var/thing in contents)
diff --git a/code/game/objects/structures/headpike.dm b/code/game/objects/structures/headpike.dm
index 68c1f77770b4..48067345d990 100644
--- a/code/game/objects/structures/headpike.dm
+++ b/code/game/objects/structures/headpike.dm
@@ -20,7 +20,7 @@
victim = locate(/obj/item/bodypart/head) in parts_list
name = "[victim.name] on a spear"
..()
- update_icon()
+ update_appearance(updates = ALL)
/obj/structure/headpike/glass/CheckParts(list/parts_list)
spear = locate(/obj/item/twohanded/spear) in parts_list
@@ -38,7 +38,7 @@
. = ..()
pixel_x = rand(-8, 8)
-/obj/structure/headpike/update_icon()
+/obj/structure/headpike/update_appearance(updates = ALL)
..()
var/obj/item/bodypart/head/H = locate() in contents
var/mutable_appearance/MA = new()
diff --git a/code/game/objects/structures/holosign.dm b/code/game/objects/structures/holosign.dm
index b8be88a76bb2..43510242cdf7 100644
--- a/code/game/objects/structures/holosign.dm
+++ b/code/game/objects/structures/holosign.dm
@@ -212,14 +212,14 @@
/obj/structure/holosign/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0)
playsound(loc, 'sound/weapons/egloves.ogg', 80, 1)
-/obj/structure/holobed/update_icon()
+/obj/structure/holobed/update_appearance(updates = ALL)
icon_state = "[initial(icon_state)][stasis ? "" : "_off"]"
/obj/structure/holobed/AltClick(mob/living/user)
if(user.a_intent == INTENT_HELP)
stasis = !stasis
handle_stasis(occupant)
- update_icon()
+ update_appearance(updates = ALL)
to_chat(user, span_warning("You [stasis ? "activate" : "deactivate"] the stasis field."))
/obj/structure/holobed/Exited(atom/movable/AM, atom/newloc)
diff --git a/code/game/objects/structures/janicart.dm b/code/game/objects/structures/janicart.dm
index 1effa44b3076..3ec372c7812b 100644
--- a/code/game/objects/structures/janicart.dm
+++ b/code/game/objects/structures/janicart.dm
@@ -64,28 +64,28 @@
if(!myspray)
put_in_cart(I, user)
myspray=I
- update_icon()
+ update_appearance(updates = ALL)
else
to_chat(user, fail_msg)
else if(istype(I, /obj/item/paint/paint_remover))
if(!myremover)
put_in_cart(I, user)
myremover=I
- update_icon()
+ update_appearance(updates = ALL)
else
to_chat(user, fail_msg)
else if(istype(I, /obj/item/melee/flyswatter))
if(!myswatter)
put_in_cart(I, user)
myswatter=I
- update_icon()
+ update_appearance(updates = ALL)
else
to_chat(user, fail_msg)
else if(istype(I, /obj/item/flashlight))
if(!mylight)
put_in_cart(I, user)
mylight=I
- update_icon()
+ update_appearance(updates = ALL)
else
to_chat(user, fail_msg)
else if(istype(I, /obj/item/lightreplacer))
@@ -104,7 +104,7 @@
if(signs < max_signs)
put_in_cart(I, user)
signs++
- update_icon()
+ update_appearance(updates = ALL)
else
to_chat(user, span_warning("[src] can't hold any more signs!"))
else if(mybag)
@@ -208,7 +208,7 @@
else
return
- update_icon()
+ update_appearance(updates = ALL)
/*
check_menu: Checks if we are allowed to interact with a radial menu
@@ -223,7 +223,7 @@
return FALSE
return TRUE
-/obj/structure/janitorialcart/update_icon()
+/obj/structure/janitorialcart/update_appearance(updates = ALL)
cut_overlays()
if(mybag)
add_overlay("cart_garbage")
diff --git a/code/game/objects/structures/ladders.dm b/code/game/objects/structures/ladders.dm
index 588e726ac71e..7d158e9b70f9 100644
--- a/code/game/objects/structures/ladders.dm
+++ b/code/game/objects/structures/ladders.dm
@@ -13,11 +13,11 @@
if (up)
src.up = up
up.down = src
- up.update_icon()
+ up.update_appearance(updates = ALL)
if (down)
src.down = down
down.up = src
- down.update_icon()
+ down.update_appearance(updates = ALL)
return INITIALIZE_HINT_LATELOAD
/obj/structure/ladder/Destroy(force)
@@ -36,26 +36,26 @@
if (L)
down = L
L.up = src // Don't waste effort looping the other way
- L.update_icon()
+ L.update_appearance(updates = ALL)
if (!up)
L = locate() in SSmapping.get_turf_above(T)
if (L)
up = L
L.down = src // Don't waste effort looping the other way
- L.update_icon()
+ L.update_appearance(updates = ALL)
- update_icon()
+ update_appearance(updates = ALL)
/obj/structure/ladder/proc/disconnect()
if(up && up.down == src)
up.down = null
- up.update_icon()
+ up.update_appearance(updates = ALL)
if(down && down.up == src)
down.up = null
- down.update_icon()
+ down.update_appearance(updates = ALL)
up = down = null
-/obj/structure/ladder/update_icon()
+/obj/structure/ladder/update_appearance(updates = ALL)
if(up && down)
icon_state = "ladder11"
@@ -160,7 +160,7 @@
/obj/structure/ladder/unbreakable/LateInitialize()
// Override the parent to find ladders based on being height-linked
if (!id || (up && down))
- update_icon()
+ update_appearance(updates = ALL)
return
for (var/O in GLOB.ladders)
@@ -170,17 +170,17 @@
if (!down && L.height == height - 1)
down = L
L.up = src
- L.update_icon()
+ L.update_appearance(updates = ALL)
if (up)
break // break if both our connections are filled
else if (!up && L.height == height + 1)
up = L
L.down = src
- L.update_icon()
+ L.update_appearance(updates = ALL)
if (down)
break // break if both our connections are filled
- update_icon()
+ update_appearance(updates = ALL)
/obj/structure/ladder/unbreakable/binary
name = "mysterious ladder"
diff --git a/code/game/objects/structures/life_candle.dm b/code/game/objects/structures/life_candle.dm
index 3b91e7e76d21..8f1e92d90d3f 100644
--- a/code/game/objects/structures/life_candle.dm
+++ b/code/game/objects/structures/life_candle.dm
@@ -37,7 +37,7 @@
user.visible_message(span_notice("[user] touches [src]. It seems to respond to [user.p_their()] presence!"), span_warning("You create a connection between you and [src]."))
linked_minds |= user.mind
- update_icon()
+ update_appearance(updates = ALL)
float(linked_minds.len)
if(linked_minds.len)
START_PROCESSING(SSobj, src)
@@ -46,7 +46,7 @@
STOP_PROCESSING(SSobj, src)
set_light(0)
-/obj/structure/life_candle/update_icon()
+/obj/structure/life_candle/update_appearance(updates = ALL)
if(linked_minds.len)
icon_state = icon_state_active
else
diff --git a/code/game/objects/structures/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm
index a5af8c214ace..0009e8bd09df 100644
--- a/code/game/objects/structures/mineral_doors.dm
+++ b/code/game/objects/structures/mineral_doors.dm
@@ -95,7 +95,7 @@
door_opened = TRUE
layer = OPEN_DOOR_LAYER
air_update_turf(1)
- update_icon()
+ update_appearance(updates = ALL)
isSwitchingStates = FALSE
if(close_delay != -1)
@@ -116,10 +116,10 @@
door_opened = FALSE
layer = initial(layer)
air_update_turf(1)
- update_icon()
+ update_appearance(updates = ALL)
isSwitchingStates = FALSE
-/obj/structure/mineral_door/update_icon()
+/obj/structure/mineral_door/update_appearance(updates = ALL)
icon_state = "[initial(icon_state)][door_opened ? "open":""]"
/obj/structure/mineral_door/attackby(obj/item/I, mob/user)
diff --git a/code/game/objects/structures/mop_bucket.dm b/code/game/objects/structures/mop_bucket.dm
index 843185bcc24e..36fa9e723de7 100644
--- a/code/game/objects/structures/mop_bucket.dm
+++ b/code/game/objects/structures/mop_bucket.dm
@@ -19,27 +19,27 @@
if(!user.transferItemToLoc(M, src))
return
ourmop = M
- update_icon()
+ update_appearance(updates = ALL)
to_chat(user, span_notice("You put [M] into [src]."))
else
reagents.trans_to(M, 5, transfered_by = user)
to_chat(user, span_notice("You wet [M] in [src]."))
playsound(loc, 'sound/effects/slosh.ogg', 25, 1)
- update_icon()
+ update_appearance(updates = ALL)
else
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
/obj/structure/mopbucket/attack_hand(mob/user)
if(ourmop)
user.put_in_hands(ourmop)
to_chat(user, span_notice("You take [ourmop] from [src]."))
ourmop = null
- update_icon()
+ update_appearance(updates = ALL)
return
return ..()
-/obj/structure/mopbucket/update_icon()
+/obj/structure/mopbucket/update_appearance(updates = ALL)
cut_overlays()
if(reagents.total_volume > 0)
add_overlay("mopbucket_water")
diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm
index a164eca7a0dd..cc4ec6e8e5be 100644
--- a/code/game/objects/structures/morgue.dm
+++ b/code/game/objects/structures/morgue.dm
@@ -29,6 +29,7 @@ GLOBAL_LIST_EMPTY(bodycontainers) //Let them act as spawnpoints for revenants an
var/breakout_time = 600
/obj/structure/bodycontainer/Initialize()
+ AddElement(/datum/element/update_icon_blocker)
. = ..()
GLOB.bodycontainers += src
recursive_organ_check(src)
@@ -43,10 +44,7 @@ GLOBAL_LIST_EMPTY(bodycontainers) //Let them act as spawnpoints for revenants an
/obj/structure/bodycontainer/on_log(login)
..()
- update_icon()
-
-/obj/structure/bodycontainer/update_icon()
- return
+ update_appearance(updates = ALL)
/obj/structure/bodycontainer/relaymove(mob/user)
if(user.stat || !isturf(loc))
@@ -130,7 +128,7 @@ GLOBAL_LIST_EMPTY(bodycontainers) //Let them act as spawnpoints for revenants an
for(var/atom/movable/AM in src)
AM.forceMove(T)
recursive_organ_check(src)
- update_icon()
+ update_appearance(updates = ALL)
/obj/structure/bodycontainer/proc/close()
playsound(src, 'sound/effects/roll.ogg', 5, 1)
@@ -140,7 +138,7 @@ GLOBAL_LIST_EMPTY(bodycontainers) //Let them act as spawnpoints for revenants an
if(ismob(AM) && !isliving(AM))
continue
AM.forceMove(src)
- update_icon()
+ update_appearance(updates = ALL)
/obj/structure/bodycontainer/get_remote_view_fullscreens(mob/user)
if(user.stat == DEAD || !(user.sight & (SEEOBJS|SEEMOBS)))
@@ -173,7 +171,7 @@ GLOBAL_LIST_EMPTY(bodycontainers) //Let them act as spawnpoints for revenants an
beeper = !beeper
to_chat(user, span_notice("You turn the speaker function [beeper ? "on" : "off"]."))
-/obj/structure/bodycontainer/morgue/update_icon()
+/obj/structure/bodycontainer/morgue/update_appearance(updates = ALL)
if (!connected || connected.loc != src) // Open or tray is gone.
icon_state = "morgue0"
else
@@ -232,7 +230,7 @@ GLOBAL_LIST_EMPTY(crematoriums)
connected = new /obj/structure/tray/c_tray(src)
connected.connected = src
-/obj/structure/bodycontainer/crematorium/update_icon()
+/obj/structure/bodycontainer/crematorium/update_appearance(updates = ALL)
if(!connected || connected.loc != src)
icon_state = "crema0"
else
@@ -260,7 +258,7 @@ GLOBAL_LIST_EMPTY(crematoriums)
else
audible_message(span_italics("You hear a roar as the crematorium fires up."))
locked = TRUE
- update_icon()
+ update_appearance(updates = ALL)
cremate_timer = addtimer(CALLBACK(src, PROC_REF(finish_cremate), user), (breakout_time + cremate_time ), TIMER_STOPPABLE)
@@ -271,7 +269,7 @@ GLOBAL_LIST_EMPTY(crematoriums)
playsound(src.loc, 'sound/machines/ding.ogg', 50, 1) //you horrible people
deltimer(cremate_timer)
cremate_timer = null
- update_icon()
+ update_appearance(updates = ALL)
/obj/structure/bodycontainer/crematorium/proc/finish_cremate(mob/user)
var/list/conts = get_all_contents() - src - connected
@@ -327,7 +325,7 @@ GLOBAL_LIST_EMPTY(crematoriums)
if(!QDELETED(src))
locked = FALSE
- update_icon()
+ update_appearance(updates = ALL)
playsound(src.loc, 'sound/machines/ding.ogg', 50, 1) //you horrible people
/obj/structure/bodycontainer/crematorium/creamatorium
@@ -362,7 +360,7 @@ GLOBAL_LIST_EMPTY(crematoriums)
/obj/structure/tray/Destroy()
if(connected)
connected.connected = null
- connected.update_icon()
+ connected.update_appearance(updates = ALL)
connected = null
return ..()
diff --git a/code/game/objects/structures/safe.dm b/code/game/objects/structures/safe.dm
index 8913505ecbf4..232a36327c3c 100644
--- a/code/game/objects/structures/safe.dm
+++ b/code/game/objects/structures/safe.dm
@@ -56,7 +56,7 @@ FLOOR SAFES
space += I.w_class
I.forceMove(src)
-/obj/structure/safe/update_icon()
+/obj/structure/safe/update_appearance(updates = ALL)
if(open)
icon_state = "[initial(icon_state)]-open"
else
@@ -147,7 +147,7 @@ FLOOR SAFES
return
to_chat(user, span_notice("You [open ? "close" : "open"] [src]."))
open = !open
- update_icon()
+ update_appearance(updates = ALL)
return TRUE
if("turnright")
if(open)
diff --git a/code/game/objects/structures/shower.dm b/code/game/objects/structures/shower.dm
index 04d361b2b1dc..833fddea39a3 100644
--- a/code/game/objects/structures/shower.dm
+++ b/code/game/objects/structures/shower.dm
@@ -29,7 +29,7 @@
/obj/machinery/shower/interact(mob/M)
on = !on
- update_icon()
+ update_appearance(updates = ALL)
handle_mist()
add_fingerprint(M)
if(on)
@@ -69,7 +69,7 @@
. = ..()
. += span_notice("You can
alt-click to change the temperature.")
-/obj/machinery/shower/update_icon()
+/obj/machinery/shower/update_appearance(updates = ALL)
. = ..()
cut_overlays()
if(on)
diff --git a/code/game/objects/structures/stairs.dm b/code/game/objects/structures/stairs.dm
index 40e2517985d8..60b914b4e63d 100644
--- a/code/game/objects/structures/stairs.dm
+++ b/code/game/objects/structures/stairs.dm
@@ -34,12 +34,12 @@
update_surrounding()
/obj/structure/stairs/proc/update_surrounding()
- update_icon()
+ update_appearance(updates = ALL)
for(var/i in GLOB.cardinals)
var/turf/T = get_step(get_turf(src), i)
var/obj/structure/stairs/S = locate() in T
if(S)
- S.update_icon()
+ S.update_appearance(updates = ALL)
/obj/structure/stairs/Uncross(atom/movable/AM, atom/newloc)
if(!newloc || !AM)
@@ -54,7 +54,7 @@
return FALSE
return ..()
-/obj/structure/stairs/update_icon()
+/obj/structure/stairs/update_appearance(updates = ALL)
if(isTerminator())
icon_state = "stairs_t"
else
diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm
index b43ba8e6d852..3e86be1d3dcd 100644
--- a/code/game/objects/structures/tables_racks.dm
+++ b/code/game/objects/structures/tables_racks.dm
@@ -73,7 +73,7 @@
/obj/structure/table/proc/deconstruction_hints(mob/user)
return span_notice("The top is
screwed on, but the main
bolts are also visible.")
-/obj/structure/table/update_icon()
+/obj/structure/table/update_appearance(updates = ALL)
if(smooth)
queue_smooth(src)
queue_smooth_neighbors(src)
diff --git a/code/game/objects/structures/tank_dispenser.dm b/code/game/objects/structures/tank_dispenser.dm
index e444e73b84b0..f36ce75888ea 100644
--- a/code/game/objects/structures/tank_dispenser.dm
+++ b/code/game/objects/structures/tank_dispenser.dm
@@ -23,9 +23,9 @@
new /obj/item/tank/internals/oxygen(src)
for(var/i in 1 to plasmatanks)
new /obj/item/tank/internals/plasma(src)
- update_icon()
+ update_appearance(updates = ALL)
-/obj/structure/tank_dispenser/update_icon()
+/obj/structure/tank_dispenser/update_appearance(updates = ALL)
cut_overlays()
switch(oxygentanks)
if(1 to 3)
@@ -69,7 +69,7 @@
if(!user.transferItemToLoc(I, src))
return
to_chat(user, span_notice("You put [I] in [src]."))
- update_icon()
+ update_appearance(updates = ALL)
/obj/structure/tank_dispenser/ui_state(mob/user)
return GLOB.physical_state
@@ -109,7 +109,7 @@
usr.put_in_hands(tank)
oxygentanks--
. = TRUE
- update_icon()
+ update_appearance(updates = ALL)
/obj/structure/tank_dispenser/deconstruct(disassembled = TRUE)
diff --git a/code/game/objects/structures/transit_tubes/station.dm b/code/game/objects/structures/transit_tubes/station.dm
index 55a4f827e09a..50e89b5c148d 100644
--- a/code/game/objects/structures/transit_tubes/station.dm
+++ b/code/game/objects/structures/transit_tubes/station.dm
@@ -38,7 +38,7 @@
for(var/obj/structure/transit_tube_pod/pod in loc)
if(!pod.moving && !pod.cargo)
AM.forceMove(pod)
- pod.update_icon()
+ pod.update_appearance(updates = ALL)
return
@@ -152,7 +152,7 @@
continue
S.forceMove(pod)
playsound(src, 'sound/mecha/mechturn.ogg', 25 ,1)
- pod.update_icon()
+ pod.update_appearance(updates = ALL)
sleep(SleepTime)
if(open_status == STATION_TUBE_CLOSED && pod && pod.loc == loc)
pod.follow_tube()
diff --git a/code/game/objects/structures/transit_tubes/transit_tube_cargo_pod.dm b/code/game/objects/structures/transit_tubes/transit_tube_cargo_pod.dm
index 363e07b906eb..96e6a71bee93 100644
--- a/code/game/objects/structures/transit_tubes/transit_tube_cargo_pod.dm
+++ b/code/game/objects/structures/transit_tubes/transit_tube_cargo_pod.dm
@@ -4,7 +4,7 @@
cargo = TRUE
name = "transit tube cargo pod"
-/obj/structure/transit_tube_pod/cargo/update_icon()
+/obj/structure/transit_tube_pod/cargo/update_appearance(updates = ALL)
if(contents.len)
icon_state = "pod_cargo_occupied"
else
diff --git a/code/game/objects/structures/transit_tubes/transit_tube_pod.dm b/code/game/objects/structures/transit_tubes/transit_tube_pod.dm
index ee2906ab84bf..9a9901d9b4f0 100644
--- a/code/game/objects/structures/transit_tubes/transit_tube_pod.dm
+++ b/code/game/objects/structures/transit_tubes/transit_tube_pod.dm
@@ -19,7 +19,7 @@
empty_pod()
return ..()
-/obj/structure/transit_tube_pod/update_icon()
+/obj/structure/transit_tube_pod/update_appearance(updates = ALL)
if(contents.len)
icon_state = "pod_occupied"
else
@@ -88,7 +88,7 @@
location = get_turf(src)
for(var/atom/movable/M in contents)
M.forceMove(location)
- update_icon()
+ update_appearance(updates = ALL)
/obj/structure/transit_tube_pod/Process_Spacemove()
if(moving) //No drifting while moving in the tubes
@@ -176,7 +176,7 @@
if(direction == turn(station.boarding_dir,180))
if(station.open_status == STATION_TUBE_OPEN)
mob.forceMove(loc)
- update_icon()
+ update_appearance(updates = ALL)
else
station.open_animation()
diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm
index 2b574b751802..a8546fc98e88 100644
--- a/code/game/objects/structures/watercloset.dm
+++ b/code/game/objects/structures/watercloset.dm
@@ -14,7 +14,7 @@
/obj/structure/toilet/Initialize()
. = ..()
open = round(rand(0, 1))
- update_icon()
+ update_appearance(updates = ALL)
/obj/structure/toilet/attack_hand(mob/living/user)
@@ -67,10 +67,10 @@
w_items -= I.w_class
else
open = !open
- update_icon()
+ update_appearance(updates = ALL)
-/obj/structure/toilet/update_icon()
+/obj/structure/toilet/update_appearance(updates = ALL)
icon_state = "toilet[open][cistern]"
@@ -81,7 +81,7 @@
if(I.use_tool(src, user, 30))
user.visible_message("[user] [cistern ? "replaces the lid on the cistern" : "lifts the lid off the cistern"]!", span_notice("You [cistern ? "replace the lid on the cistern" : "lift the lid off the cistern"]!"), span_italics("You hear grinding porcelain."))
cistern = !cistern
- update_icon()
+ update_appearance(updates = ALL)
else if(cistern)
if(user.a_intent != INTENT_HARM)
@@ -392,9 +392,9 @@
/obj/structure/curtain/proc/toggle()
open = !open
- update_icon()
+ update_appearance(updates = ALL)
-/obj/structure/curtain/update_icon()
+/obj/structure/curtain/update_appearance(updates = ALL)
if(!open)
icon_state = "closed"
layer = WALL_OBJ_LAYER
diff --git a/code/game/objects/structures/windoor_assembly.dm b/code/game/objects/structures/windoor_assembly.dm
index dd0090d3053e..88b52cf01bf8 100644
--- a/code/game/objects/structures/windoor_assembly.dm
+++ b/code/game/objects/structures/windoor_assembly.dm
@@ -47,7 +47,7 @@
setDir(ini_dir)
move_update_air(T)
-/obj/structure/windoor_assembly/update_icon()
+/obj/structure/windoor_assembly/update_appearance(updates = ALL)
icon_state = "[facing]_[secure ? "secure_" : ""]windoor_assembly[state]"
/obj/structure/windoor_assembly/CanAllowThrough(atom/movable/mover, turf/target)
@@ -309,7 +309,7 @@
return ..()
//Update to reflect changes(if applicable)
- update_icon()
+ update_appearance(updates = ALL)
@@ -339,7 +339,7 @@
/obj/structure/windoor_assembly/proc/after_rotation(mob/user)
ini_dir = dir
- update_icon()
+ update_appearance(updates = ALL)
//Flips the windoor assembly, determines whather the door opens to the left or the right
/obj/structure/windoor_assembly/verb/flip()
@@ -361,5 +361,5 @@
facing = "l"
to_chat(usr, span_notice("The windoor will now slide to the left."))
- update_icon()
+ update_appearance(updates = ALL)
return
diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm
index 275e6dcf83d2..3a6d0267fd56 100644
--- a/code/game/objects/structures/window.dm
+++ b/code/game/objects/structures/window.dm
@@ -329,12 +329,12 @@
//This proc is used to update the icons of nearby windows.
/obj/structure/window/proc/update_nearby_icons()
- update_icon()
+ update_appearance(updates = ALL)
if(smooth)
queue_smooth_neighbors(src)
//merges adjacent full-tile windows into one
-/obj/structure/window/update_icon()
+/obj/structure/window/update_appearance(updates = ALL)
if(!QDELETED(src))
if(!fulltile)
return
@@ -810,7 +810,7 @@
/obj/structure/window/reinforced/clockwork/ratvar_act()
if(GLOB.ratvar_awakens)
obj_integrity = max_integrity
- update_icon()
+ update_appearance(updates = ALL)
/obj/structure/window/reinforced/clockwork/narsie_act()
take_damage(rand(25, 75), BRUTE)
@@ -876,7 +876,7 @@
/obj/structure/window/paperframe/Initialize()
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
/obj/structure/window/paperframe/examine(mob/user)
. = ..()
@@ -902,19 +902,19 @@
playsound(src, hitsound, 50, 1)
if(!QDELETED(src))
user.visible_message(span_danger("[user] tears a hole in [src]."))
- update_icon()
+ update_appearance(updates = ALL)
-/obj/structure/window/paperframe/update_icon()
- if(obj_integrity < max_integrity)
- cut_overlay(paper)
- add_overlay(torn)
- set_opacity(FALSE)
- else
- cut_overlay(torn)
- add_overlay(paper)
- set_opacity(TRUE)
+/obj/structure/window/paperframe/update_appearance(updates)
+ . = ..()
+ set_opacity(obj_integrity >= max_integrity)
+
+/obj/structure/window/paperframe/update_icon(updates=ALL)
+ . = ..()
queue_smooth(src)
+/obj/structure/window/paperframe/update_overlays()
+ . = ..()
+ . += (obj_integrity < max_integrity) ? torn : paper
/obj/structure/window/paperframe/attackby(obj/item/W, mob/user)
if(W.is_hot())
@@ -929,10 +929,10 @@
qdel(W)
user.visible_message("[user] patches some of the holes in \the [src].")
if(obj_integrity == max_integrity)
- update_icon()
+ update_appearance(updates = ALL)
return
..()
- update_icon()
+ update_appearance(updates = ALL)
@@ -953,9 +953,9 @@
/obj/structure/cloth_curtain/proc/toggle()
open = !open
- update_icon()
+ update_appearance(updates = ALL)
-/obj/structure/cloth_curtain/update_icon()
+/obj/structure/cloth_curtain/update_appearance(updates = ALL)
if(!open)
icon_state = "curtain_closed"
layer = WALL_OBJ_LAYER
diff --git a/code/game/turfs/open.dm b/code/game/turfs/open.dm
index de63a88639dd..17a4e0910825 100644
--- a/code/game/turfs/open.dm
+++ b/code/game/turfs/open.dm
@@ -322,7 +322,7 @@
/turf/open/floor/grass/fairy/Initialize()
. = ..()
icon_state = "fairygrass[rand(1,4)]"
- update_icon()
+ update_appearance(updates = ALL)
/turf/open/indestructible/boss //you put stone tiles on this and use it as a base
name = "necropolis floor"
diff --git a/code/game/turfs/simulated/floor.dm b/code/game/turfs/simulated/floor.dm
index 4101efd3ac69..7d09ead97354 100644
--- a/code/game/turfs/simulated/floor.dm
+++ b/code/game/turfs/simulated/floor.dm
@@ -115,7 +115,7 @@
/turf/open/floor/blob_act(obj/structure/blob/B)
return
-/turf/open/floor/proc/update_icon()
+/turf/open/floor/update_appearance(updates = ALL)
update_visuals()
return 1
@@ -164,7 +164,7 @@
W.icon_regular_floor = old_icon
W.icon_state_regular_floor = old_icon_state
W.setDir(old_dir)
- W.update_icon()
+ W.update_appearance(updates = ALL)
return W
/turf/open/floor/attackby(obj/item/C, mob/user, params)
@@ -285,7 +285,7 @@
new_window.req_one_access = the_rcd.airlock_electronics.one_access
new_window.unres_sides = the_rcd.airlock_electronics.unres_sides
new_window.autoclose = TRUE
- new_window.update_icon()
+ new_window.update_appearance(updates = ALL)
return TRUE
to_chat(user, span_notice("You build an airlock."))
var/obj/machinery/door/airlock/new_airlock = new the_rcd.airlock_type(src)
@@ -304,7 +304,7 @@
if(new_airlock.electronics.unres_sides)
new_airlock.unres_sides = new_airlock.electronics.unres_sides
new_airlock.autoclose = TRUE
- new_airlock.update_icon()
+ new_airlock.update_appearance(updates = ALL)
return TRUE
if(RCD_DECONSTRUCT)
diff --git a/code/game/turfs/simulated/floor/fancy_floor.dm b/code/game/turfs/simulated/floor/fancy_floor.dm
index 2789469e486c..90530dd55a00 100644
--- a/code/game/turfs/simulated/floor/fancy_floor.dm
+++ b/code/game/turfs/simulated/floor/fancy_floor.dm
@@ -197,7 +197,7 @@
. = ..()
if(src.type == /turf/open/floor/grass) //don't want grass subtypes getting the icon state,
icon_state = "grass[rand(1,4)]"
- update_icon()
+ update_appearance(updates = ALL)
/turf/open/floor/grass/attackby(obj/item/C, mob/user, params)
if((C.tool_behaviour == TOOL_SHOVEL) && params)
@@ -293,9 +293,9 @@
/turf/open/floor/carpet/Initialize()
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
-/turf/open/floor/carpet/update_icon()
+/turf/open/floor/carpet/update_appearance(updates = ALL)
if(!..())
return 0
if(!broken && !burnt)
@@ -402,11 +402,11 @@
/turf/open/floor/carpet/break_tile()
broken = TRUE
- update_icon()
+ update_appearance(updates = ALL)
/turf/open/floor/carpet/burn_tile()
burnt = TRUE
- update_icon()
+ update_appearance(updates = ALL)
/turf/open/floor/carpet/get_smooth_underlay_icon(mutable_appearance/underlay_appearance, turf/asking_turf, adjacency_dir)
return FALSE
diff --git a/code/game/turfs/simulated/floor/light_floor.dm b/code/game/turfs/simulated/floor/light_floor.dm
index b890683f6af5..d5ece9c632cd 100644
--- a/code/game/turfs/simulated/floor/light_floor.dm
+++ b/code/game/turfs/simulated/floor/light_floor.dm
@@ -34,7 +34,7 @@
/turf/open/floor/light/Initialize()
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
if(!length(lighttile_designs))
populate_lighttile_designs()
@@ -43,7 +43,7 @@
light_range = 0
update_light()
-/turf/open/floor/light/update_icon()
+/turf/open/floor/light/update_appearance(updates = ALL)
..()
if(on)
switch(state)
@@ -79,7 +79,7 @@
if(!choice)
return FALSE
currentcolor = choice
- update_icon()
+ update_appearance(updates = ALL)
/turf/open/floor/light/attack_ai(mob/user)
if(!can_modify_colour)
@@ -88,7 +88,7 @@
if(!choice)
return FALSE
currentcolor = choice
- update_icon()
+ update_appearance(updates = ALL)
return attack_hand(user)
/turf/open/floor/light/attackby(obj/item/C, mob/user, params)
@@ -98,7 +98,7 @@
if(state && user.temporarilyRemoveItemFromInventory(C))
qdel(C)
state = 0 //fixing it by bashing it with a light bulb, fun eh?
- update_icon()
+ update_appearance(updates = ALL)
to_chat(user, span_notice("You replace the light bulb."))
else
to_chat(user, span_notice("The light bulb seems fine, no need to replace it."))
diff --git a/code/game/turfs/simulated/floor/mineral_floor.dm b/code/game/turfs/simulated/floor/mineral_floor.dm
index e99722885d0d..3b3f30c12b13 100644
--- a/code/game/turfs/simulated/floor/mineral_floor.dm
+++ b/code/game/turfs/simulated/floor/mineral_floor.dm
@@ -23,7 +23,7 @@
icons = typelist("icons", icons)
-/turf/open/floor/mineral/update_icon()
+/turf/open/floor/mineral/update_appearance(updates = ALL)
if(!..())
return 0
if(!broken && !burnt)
diff --git a/code/game/turfs/simulated/floor/misc_floor.dm b/code/game/turfs/simulated/floor/misc_floor.dm
index bb8bd5a8ec7e..d2dc9452a4dc 100644
--- a/code/game/turfs/simulated/floor/misc_floor.dm
+++ b/code/game/turfs/simulated/floor/misc_floor.dm
@@ -20,14 +20,14 @@
/turf/open/floor/circuit/Initialize()
SSmapping.nuke_tiles += src
- update_icon()
+ update_appearance(updates = ALL)
. = ..()
/turf/open/floor/circuit/Destroy()
SSmapping.nuke_tiles -= src
return ..()
-/turf/open/floor/circuit/update_icon()
+/turf/open/floor/circuit/update_appearance(updates = ALL)
if(on)
if(LAZYLEN(SSmapping.nuke_threats))
icon_state = "rcircuitanim"
diff --git a/code/game/turfs/simulated/floor/plasteel_floor.dm b/code/game/turfs/simulated/floor/plasteel_floor.dm
index e3150da9027d..610317fe2975 100644
--- a/code/game/turfs/simulated/floor/plasteel_floor.dm
+++ b/code/game/turfs/simulated/floor/plasteel_floor.dm
@@ -13,7 +13,7 @@
new /obj/effect/glowing_rune(src)
ChangeTurf(/turf/open/floor/plating/rust)
-/turf/open/floor/plasteel/update_icon()
+/turf/open/floor/plasteel/update_appearance(updates = ALL)
if(!..())
return 0
if(!broken && !burnt)
diff --git a/code/game/turfs/simulated/floor/plating.dm b/code/game/turfs/simulated/floor/plating.dm
index 947be76e60d9..1b94ef3cfea7 100644
--- a/code/game/turfs/simulated/floor/plating.dm
+++ b/code/game/turfs/simulated/floor/plating.dm
@@ -44,7 +44,7 @@
else
icon_plating = initial(icon_state)
-/turf/open/floor/plating/update_icon()
+/turf/open/floor/plating/update_appearance(updates = ALL)
if(!..())
return
if(!broken && !burnt)
diff --git a/code/game/turfs/simulated/minerals.dm b/code/game/turfs/simulated/minerals.dm
index 262c13095871..0436586512a2 100644
--- a/code/game/turfs/simulated/minerals.dm
+++ b/code/game/turfs/simulated/minerals.dm
@@ -93,9 +93,9 @@
if(hardness <= 0)
gets_drilled(user,triggered_by_explosion)
else
- update_icon()
+ update_appearance(updates = ALL)
-/turf/closed/mineral/proc/update_icon()
+/turf/closed/mineral/update_appearance(updates = ALL)
if(hardness != initial(hardness))
var/mutable_appearance/cracks = mutable_appearance('icons/turf/mining.dmi',"rock_cracks",ON_EDGED_TURF_LAYER)
var/matrix/M = new
diff --git a/code/game/turfs/simulated/wall/reinf_walls.dm b/code/game/turfs/simulated/wall/reinf_walls.dm
index 628a6d692b24..5375b213faf4 100644
--- a/code/game/turfs/simulated/wall/reinf_walls.dm
+++ b/code/game/turfs/simulated/wall/reinf_walls.dm
@@ -55,7 +55,7 @@
if(W.tool_behaviour == TOOL_WIRECUTTER)
W.play_tool_sound(src, 100)
d_state = SUPPORT_LINES
- update_icon()
+ update_appearance(updates = ALL)
to_chat(user, span_notice("You cut the outer grille."))
return 1
@@ -66,14 +66,14 @@
if(!istype(src, /turf/closed/wall/r_wall) || d_state != SUPPORT_LINES)
return 1
d_state = COVER
- update_icon()
+ update_appearance(updates = ALL)
to_chat(user, span_notice("You unsecure the support lines."))
return 1
else if(W.tool_behaviour == TOOL_WIRECUTTER)
W.play_tool_sound(src, 100)
d_state = INTACT
- update_icon()
+ update_appearance(updates = ALL)
to_chat(user, span_notice("You repair the outer grille."))
return 1
@@ -86,7 +86,7 @@
if(!istype(src, /turf/closed/wall/r_wall) || d_state != COVER)
return 1
d_state = CUT_COVER
- update_icon()
+ update_appearance(updates = ALL)
to_chat(user, span_notice("You press firmly on the cover, dislodging it."))
return 1
@@ -96,7 +96,7 @@
if(!istype(src, /turf/closed/wall/r_wall) || d_state != COVER)
return 1
d_state = SUPPORT_LINES
- update_icon()
+ update_appearance(updates = ALL)
to_chat(user, span_notice("The support lines have been secured."))
return 1
@@ -107,7 +107,7 @@
if(!istype(src, /turf/closed/wall/r_wall) || d_state != CUT_COVER)
return 1
d_state = ANCHOR_BOLTS
- update_icon()
+ update_appearance(updates = ALL)
to_chat(user, span_notice("You pry off the cover."))
return 1
@@ -119,7 +119,7 @@
if(!istype(src, /turf/closed/wall/r_wall) || d_state != CUT_COVER)
return TRUE
d_state = COVER
- update_icon()
+ update_appearance(updates = ALL)
to_chat(user, span_notice("The metal cover has been welded securely to the frame."))
return 1
@@ -130,7 +130,7 @@
if(!istype(src, /turf/closed/wall/r_wall) || d_state != ANCHOR_BOLTS)
return 1
d_state = SUPPORT_RODS
- update_icon()
+ update_appearance(updates = ALL)
to_chat(user, span_notice("You remove the bolts anchoring the support rods."))
return 1
@@ -140,7 +140,7 @@
if(!istype(src, /turf/closed/wall/r_wall) || d_state != ANCHOR_BOLTS)
return 1
d_state = CUT_COVER
- update_icon()
+ update_appearance(updates = ALL)
to_chat(user, span_notice("The metal cover has been pried back into place."))
return 1
@@ -153,7 +153,7 @@
if(!istype(src, /turf/closed/wall/r_wall) || d_state != SUPPORT_RODS)
return 1
d_state = SHEATH
- update_icon()
+ update_appearance(updates = ALL)
to_chat(user, span_notice("You slice through the support rods."))
return 1
@@ -164,7 +164,7 @@
if(!istype(src, /turf/closed/wall/r_wall) || d_state != SUPPORT_RODS)
return 1
d_state = ANCHOR_BOLTS
- update_icon()
+ update_appearance(updates = ALL)
to_chat(user, span_notice("You tighten the bolts anchoring the support rods."))
return 1
@@ -186,12 +186,12 @@
if(!istype(src, /turf/closed/wall/r_wall) || d_state != SHEATH)
return TRUE
d_state = SUPPORT_RODS
- update_icon()
+ update_appearance(updates = ALL)
to_chat(user, span_notice("You weld the support rods back together."))
return 1
return 0
-/turf/closed/wall/r_wall/proc/update_icon()
+/turf/closed/wall/r_wall/update_appearance(updates = ALL)
if(d_state != INTACT)
smooth = SMOOTH_FALSE
clear_smooth_overlays()
diff --git a/code/game/turfs/space/transit.dm b/code/game/turfs/space/transit.dm
index e976bada3522..c4debfcb6a4f 100644
--- a/code/game/turfs/space/transit.dm
+++ b/code/game/turfs/space/transit.dm
@@ -8,7 +8,7 @@
/turf/open/space/transit/Initialize(mapload)
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
RegisterSignal(src, COMSIG_TURF_RESERVATION_RELEASED, PROC_REF(launch_contents))
/turf/open/space/transit/Destroy()
@@ -67,7 +67,7 @@
/turf/open/space/transit/east
dir = EAST
-/turf/open/space/transit/proc/update_icon()
+/turf/open/space/transit/update_appearance(updates = ALL)
icon_state = "speedspace_ns_[get_transit_state(src)]"
transform = turn(matrix(), get_transit_angle(src))
diff --git a/code/modules/NTNet/relays.dm b/code/modules/NTNet/relays.dm
index 036d4593691f..553cf2f814af 100644
--- a/code/modules/NTNet/relays.dm
+++ b/code/modules/NTNet/relays.dm
@@ -32,7 +32,7 @@
return FALSE
return TRUE
-/obj/machinery/ntnet_relay/update_icon()
+/obj/machinery/ntnet_relay/update_appearance(updates = ALL)
cut_overlays()
if(is_operational())
var/mutable_appearance/on_overlay = mutable_appearance(icon, "[initial(icon_state)]_on")
@@ -49,7 +49,7 @@
else
use_power = IDLE_POWER_USE
- update_icon()
+ update_appearance(updates = ALL)
if(dos_overload > 0)
dos_overload = max(0, dos_overload - dos_dissipate * delta_time)
@@ -57,12 +57,12 @@
// If DoS traffic exceeded capacity, crash.
if((dos_overload > dos_capacity) && !dos_failure)
dos_failure = 1
- update_icon()
+ update_appearance(updates = ALL)
SSnetworks.station_network.add_log("Quantum relay switched from normal operation mode to overload recovery mode.")
// If the DoS buffer reaches 0 again, restart.
if((dos_overload == 0) && dos_failure)
dos_failure = 0
- update_icon()
+ update_appearance(updates = ALL)
SSnetworks.station_network.add_log("Quantum relay switched from overload recovery mode to normal operation mode.")
..()
@@ -89,13 +89,13 @@
if("restart")
dos_overload = 0
dos_failure = 0
- update_icon()
+ update_appearance(updates = ALL)
SSnetworks.station_network.add_log("Quantum relay manually restarted from overload recovery mode to normal operation mode.")
return TRUE
if("toggle")
enabled = !enabled
SSnetworks.station_network.add_log("Quantum relay manually [enabled ? "enabled" : "disabled"].")
- update_icon()
+ update_appearance(updates = ALL)
return TRUE
/obj/machinery/ntnet_relay/Initialize()
diff --git a/code/modules/VR/vr_sleeper.dm b/code/modules/VR/vr_sleeper.dm
index 64f814a6ffd0..2046f1ba4c29 100644
--- a/code/modules/VR/vr_sleeper.dm
+++ b/code/modules/VR/vr_sleeper.dm
@@ -22,7 +22,7 @@
sparks = new /datum/effect_system/spark_spread()
sparks.set_up(2,0)
sparks.attach(src)
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/vr_sleeper/attackby(obj/item/I, mob/user, params)
if(!state_open && !occupant)
@@ -61,7 +61,7 @@
sparks.start()
addtimer(CALLBACK(src, PROC_REF(emagNotify)), 150)
-/obj/machinery/vr_sleeper/update_icon()
+/obj/machinery/vr_sleeper/update_appearance(updates = ALL)
icon_state = "[initial(icon_state)][state_open ? "-open" : ""]"
/obj/machinery/vr_sleeper/open_machine()
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index b9a6b5e9a898..e57cc5232b14 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -1397,7 +1397,7 @@
var/obj/item/reagent_containers/food/snacks/cookie/cookie = new(H)
if(H.put_in_hands(cookie)) // They have hands and can use them to hold cookies
- H.update_inv_hands()
+ H.update_held_items()
log_admin("[key_name(H)] got their cookie in-hand, spawned by [key_name(src.owner)].")
message_admins("[key_name(H)] got their cookie in-hand, spawned by [key_name(src.owner)].")
else // They do not have hands available, for some reason
diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm
index 31990ad0b82f..c185f01b8516 100644
--- a/code/modules/admin/verbs/debug.dm
+++ b/code/modules/admin/verbs/debug.dm
@@ -457,7 +457,7 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention)
var/obj/item/storage/wallet/W = worn
W.front_id = id
id.forceMove(W)
- W.update_icon()
+ W.update_appearance(updates = ALL)
else
H.equip_to_slot(id,SLOT_WEAR_ID)
else if(isanimal(M))
@@ -848,7 +848,7 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention)
F.anchored = TRUE
F.warming_up = 3
F.start_fields()
- F.update_icon()
+ F.update_appearance(updates = ALL)
spawn(30)
for(var/obj/machinery/the_singularitygen/G in GLOB.machines)
diff --git a/code/modules/admin/verbs/manipulate_organs.dm b/code/modules/admin/verbs/manipulate_organs.dm
index 92eacb7af34b..67b29052c24e 100644
--- a/code/modules/admin/verbs/manipulate_organs.dm
+++ b/code/modules/admin/verbs/manipulate_organs.dm
@@ -71,4 +71,4 @@
var/obj/item/implantcase/case = new(get_turf(C))
case.imp = I
I.forceMove(case)
- case.update_icon()
+ case.update_appearance(updates = ALL)
diff --git a/code/modules/antagonists/_common/antag_hud.dm b/code/modules/antagonists/_common/antag_hud.dm
index 9fcca9388dbf..0949c859fd1e 100644
--- a/code/modules/antagonists/_common/antag_hud.dm
+++ b/code/modules/antagonists/_common/antag_hud.dm
@@ -54,7 +54,7 @@ GLOBAL_LIST_EMPTY_TYPED(has_antagonist_huds, /datum/atom_hud/alternate_appearanc
/datum/atom_hud/alternate_appearance/basic/antagonist_hud/process(delta_time)
index += 1
- update_icon()
+ update_appearance(updates = ALL)
/datum/atom_hud/alternate_appearance/basic/antagonist_hud/proc/check_processing()
if (antag_hud_images.len > 1 && !(DF_ISPROCESSING in datum_flags))
@@ -77,7 +77,7 @@ GLOBAL_LIST_EMPTY_TYPED(has_antagonist_huds, /datum/atom_hud/alternate_appearanc
return final_antag_hud_images
-/datum/atom_hud/alternate_appearance/basic/antagonist_hud/proc/update_icon()
+/datum/atom_hud/alternate_appearance/basic/antagonist_hud/proc/update_appearance(updates = ALL)
if (antag_hud_images.len == 0)
image.icon = icon('icons/blanks/32x32.dmi', "nothing")
else
@@ -88,5 +88,5 @@ GLOBAL_LIST_EMPTY_TYPED(has_antagonist_huds, /datum/atom_hud/alternate_appearanc
antag_hud_images = get_antag_hud_images(source)
index = clamp(index, 1, antag_hud_images.len)
- update_icon()
+ update_appearance(updates = ALL)
check_processing()
diff --git a/code/modules/antagonists/abductor/equipment/abduction_gear.dm b/code/modules/antagonists/abductor/equipment/abduction_gear.dm
index 3b783cd6e0c7..141c0fcf1c4e 100644
--- a/code/modules/antagonists/abductor/equipment/abduction_gear.dm
+++ b/code/modules/antagonists/abductor/equipment/abduction_gear.dm
@@ -74,7 +74,7 @@
M.icon_state = disguise.icon_state
M.cut_overlays()
M.add_overlay(disguise.overlays)
- M.update_inv_hands()
+ M.update_held_items()
/obj/item/clothing/suit/armor/abductor/vest/proc/DeactivateStealth()
if(!stealth_active)
@@ -405,8 +405,9 @@
Congratulations! You are now trained for invasive xenobiology research!"}
-/obj/item/paper/guides/antag/abductor/update_icon()
- return
+/obj/item/paper/guides/antag/abductor/Initialize(mapload)
+ AddElement(/datum/element/update_icon_blocker)
+ return ..()
/obj/item/paper/guides/antag/abductor/AltClick()
return //otherwise it would fold into a paperplane.
@@ -442,9 +443,9 @@ Congratulations! You are now trained for invasive xenobiology research!"}
txt = "probing"
to_chat(usr, span_notice("You switch the baton to [txt] mode."))
- update_icon()
+ update_appearance(updates = ALL)
-/obj/item/abductor/baton/update_icon()
+/obj/item/abductor/baton/update_appearance(updates = ALL)
switch(mode)
if(BATON_STUN)
icon_state = "wonderprodStun"
diff --git a/code/modules/antagonists/abductor/equipment/gland.dm b/code/modules/antagonists/abductor/equipment/gland.dm
index 0aa4fa5d0dd6..475184e294b6 100644
--- a/code/modules/antagonists/abductor/equipment/gland.dm
+++ b/code/modules/antagonists/abductor/equipment/gland.dm
@@ -18,6 +18,7 @@
var/active_mind_control = FALSE
/obj/item/organ/heart/gland/Initialize()
+ AddElement(/datum/element/update_icon_blocker)
. = ..()
icon_state = pick(list("health", "spider", "slime", "emp", "species", "egg", "vent", "mindshock", "viral"))
@@ -49,9 +50,6 @@
holder.icon_state = "hudgland_ready"
else
holder.icon_state = "hudgland_spent"
-
-/obj/item/organ/heart/gland/update_icon()
- return // stop it from switching to the non existent heart_on sprite
/obj/item/organ/heart/gland/proc/mind_control(command, mob/living/user)
if(!ownerCheck() || !mind_control_uses || active_mind_control)
diff --git a/code/modules/antagonists/abductor/machinery/experiment.dm b/code/modules/antagonists/abductor/machinery/experiment.dm
index af79d3d5e118..156cc8147300 100644
--- a/code/modules/antagonists/abductor/machinery/experiment.dm
+++ b/code/modules/antagonists/abductor/machinery/experiment.dm
@@ -183,7 +183,7 @@
SSjob.SendToLateJoin(H, FALSE)
return
-/obj/machinery/abductor/experiment/update_icon()
+/obj/machinery/abductor/experiment/update_appearance(updates = ALL)
if(state_open)
icon_state = "experiment-open"
else
diff --git a/code/modules/antagonists/blob/blobstrains/_blobstrain.dm b/code/modules/antagonists/blob/blobstrains/_blobstrain.dm
index 87e87ba24c67..b949270203df 100644
--- a/code/modules/antagonists/blob/blobstrains/_blobstrain.dm
+++ b/code/modules/antagonists/blob/blobstrains/_blobstrain.dm
@@ -31,7 +31,7 @@ GLOBAL_LIST_INIT(valid_blobstrains, subtypesof(/datum/blobstrain) - list(/datum/
point_rate = point_rate * overmind.basemodifier
for(var/BL in GLOB.blobs)
var/obj/structure/blob/B = BL
- B.update_icon()
+ B.update_appearance(updates = ALL)
for(var/BLO in overmind.blob_mobs)
var/mob/living/simple_animal/hostile/blob/BM = BLO
BM.update_icons() //If it's getting a new strain, tell it what it does!
diff --git a/code/modules/antagonists/blob/blobstrains/replicating_foam.dm b/code/modules/antagonists/blob/blobstrains/replicating_foam.dm
index 6f922e7694de..d407df3ff44b 100644
--- a/code/modules/antagonists/blob/blobstrains/replicating_foam.dm
+++ b/code/modules/antagonists/blob/blobstrains/replicating_foam.dm
@@ -17,7 +17,7 @@
var/obj/structure/blob/newB = B.expand(null, null, 0)
if(newB)
newB.obj_integrity = B.obj_integrity - damage
- newB.update_icon()
+ newB.update_appearance(updates = ALL)
return ..()
diff --git a/code/modules/antagonists/blob/overmind.dm b/code/modules/antagonists/blob/overmind.dm
index 8741b6920db1..e60bc379820a 100644
--- a/code/modules/antagonists/blob/overmind.dm
+++ b/code/modules/antagonists/blob/overmind.dm
@@ -59,7 +59,7 @@ GLOBAL_LIST_EMPTY(blob_nodes)
set_strain(BS)
color = blobstrain.complementary_color
if(blob_core)
- blob_core.update_icon()
+ blob_core.update_appearance(updates = ALL)
SSshuttle.registerHostileEnvironment(src)
announcement_time = world.time + 6000
. = ..()
@@ -180,7 +180,7 @@ GLOBAL_LIST_EMPTY(blob_nodes)
var/obj/structure/blob/B = BL
if(B && B.overmind == src)
B.overmind = null
- B.update_icon() //reset anything that was ours
+ B.update_appearance(updates = ALL) //reset anything that was ours
for(var/BLO in blob_mobs)
var/mob/living/simple_animal/hostile/blob/BM = BLO
if(BM)
diff --git a/code/modules/antagonists/blob/powers.dm b/code/modules/antagonists/blob/powers.dm
index 2aa7516c5faf..dad35bc8ed9b 100644
--- a/code/modules/antagonists/blob/powers.dm
+++ b/code/modules/antagonists/blob/powers.dm
@@ -51,7 +51,7 @@
core.overmind = src
blobs_legit += src
blob_core = core
- core.update_icon()
+ core.update_appearance(updates = ALL)
update_health_hud()
placed = 1
return 1
@@ -173,7 +173,7 @@
if(LAZYLEN(candidates)) //if we got at least one candidate, they're a blobbernaut now.
B.max_integrity = initial(B.max_integrity) * 0.25 //factories that produced a blobbernaut have much lower health
B.obj_integrity = min(B.obj_integrity, B.max_integrity)
- B.update_icon()
+ B.update_appearance(updates = ALL)
B.visible_message(span_warning("
The blobbernaut [pick("rips", "tears", "shreds")] its way out of the factory blob!"))
playsound(B.loc, 'sound/effects/splat.ogg', 50, 1)
var/mob/living/simple_animal/hostile/blob/blobbernaut/blobber = new /mob/living/simple_animal/hostile/blob/blobbernaut(get_turf(B))
diff --git a/code/modules/antagonists/blob/structures/_blob.dm b/code/modules/antagonists/blob/structures/_blob.dm
index faab39fc9ded..669c83db1568 100644
--- a/code/modules/antagonists/blob/structures/_blob.dm
+++ b/code/modules/antagonists/blob/structures/_blob.dm
@@ -29,7 +29,7 @@
overmind.blobs_legit += src
GLOB.blobs += src //Keep track of the blob in the normal list either way
setDir(pick(GLOB.cardinals))
- update_icon()
+ update_appearance(updates = ALL)
if(atmosblock)
air_update_turf(1)
ConsumeTile()
@@ -82,7 +82,7 @@
var/atom/movable/mover = caller
. = . || (mover.pass_flags & PASSBLOB)
-/obj/structure/blob/update_icon() //Updates color based on overmind color if we have an overmind.
+/obj/structure/blob/update_appearance(updates = ALL) //Updates color based on overmind color if we have an overmind.
if(overmind)
add_atom_colour(overmind.blobstrain.color, FIXED_COLOUR_PRIORITY)
else
@@ -103,7 +103,7 @@
var/obj/structure/blob/B = L
if(!B.overmind && !istype(B, /obj/structure/blob/core) && prob(30))
B.overmind = pulsing_overmind //reclaim unclaimed, non-core blobs.
- B.update_icon()
+ B.update_appearance(updates = ALL)
var/distance = get_dist(get_turf(src), get_turf(B))
var/expand_probablity = max(20 - distance * 8, 1)
if(B.Adjacent(src))
@@ -127,7 +127,7 @@
if(heal_timestamp <= world.time)
obj_integrity = min(max_integrity, obj_integrity+health_regen)
heal_timestamp = world.time + 20
- update_icon()
+ update_appearance(updates = ALL)
pulse_timestamp = world.time + 10
return 1 //we did it, we were pulsed!
return 0 //oh no we failed
@@ -185,7 +185,7 @@
if(T.Enter(B,src)) //NOW we can attempt to move into the tile
B.density = initial(B.density)
B.forceMove(T)
- B.update_icon()
+ B.update_appearance(updates = ALL)
if(B.overmind && expand_reaction)
B.overmind.blobstrain.expand_reaction(src, B, T, controller)
return B
@@ -289,7 +289,7 @@
/obj/structure/blob/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir)
. = ..()
if(. && obj_integrity > 0)
- update_icon()
+ update_appearance(updates = ALL)
/obj/structure/blob/obj_destruction(damage_flag)
if(overmind)
@@ -301,7 +301,7 @@
CRASH("change_to(): invalid type for blob")
var/obj/structure/blob/B = new type(src.loc, controller)
B.creation_action()
- B.update_icon()
+ B.update_appearance(updates = ALL)
B.setDir(dir)
qdel(src)
return B
@@ -344,7 +344,7 @@
return "Currently weak to brute damage."
return "N/A"
-/obj/structure/blob/normal/update_icon()
+/obj/structure/blob/normal/update_appearance(updates = ALL)
..()
if(obj_integrity <= 15)
icon_state = "blob_damaged"
diff --git a/code/modules/antagonists/blob/structures/core.dm b/code/modules/antagonists/blob/structures/core.dm
index 98ac915e8b11..8ca9c0566e98 100644
--- a/code/modules/antagonists/blob/structures/core.dm
+++ b/code/modules/antagonists/blob/structures/core.dm
@@ -14,17 +14,17 @@
GLOB.blob_cores += src
START_PROCESSING(SSobj, src)
GLOB.poi_list |= src
- update_icon() //so it atleast appears
+ update_appearance(updates = ALL) //so it atleast appears
if(!placed && !overmind)
return INITIALIZE_HINT_QDEL
if(overmind)
- update_icon()
+ update_appearance(updates = ALL)
. = ..()
/obj/structure/blob/core/scannerreport()
return "Directs the blob's expansion, gradually expands, and sustains nearby blob spores and blobbernauts."
-/obj/structure/blob/core/update_icon()
+/obj/structure/blob/core/update_appearance(updates = ALL)
cut_overlays()
color = null
var/mutable_appearance/blob_overlay = mutable_appearance('icons/mob/blob.dmi', "blob")
diff --git a/code/modules/antagonists/blob/structures/node.dm b/code/modules/antagonists/blob/structures/node.dm
index 456b2d8bcf0b..e1d36439561c 100644
--- a/code/modules/antagonists/blob/structures/node.dm
+++ b/code/modules/antagonists/blob/structures/node.dm
@@ -18,7 +18,7 @@
/obj/structure/blob/node/scannerreport()
return "Gradually expands and sustains nearby blob spores and blobbernauts."
-/obj/structure/blob/node/update_icon()
+/obj/structure/blob/node/update_appearance(updates = ALL)
cut_overlays()
color = null
var/mutable_appearance/blob_overlay = mutable_appearance('icons/mob/blob.dmi', "blob")
diff --git a/code/modules/antagonists/blob/structures/shield.dm b/code/modules/antagonists/blob/structures/shield.dm
index 0a21174326c4..8392fa8c53ab 100644
--- a/code/modules/antagonists/blob/structures/shield.dm
+++ b/code/modules/antagonists/blob/structures/shield.dm
@@ -19,7 +19,7 @@
/obj/structure/blob/shield/core
point_return = 0
-/obj/structure/blob/shield/update_icon()
+/obj/structure/blob/shield/update_appearance(updates = ALL)
..()
if(obj_integrity < max_integrity * 0.5)
icon_state = "[initial(icon_state)]_damaged"
diff --git a/code/modules/antagonists/bloodsuckers/powers/targeted/lasombra.dm b/code/modules/antagonists/bloodsuckers/powers/targeted/lasombra.dm
index 450049b3ed12..6ce4cda367a1 100644
--- a/code/modules/antagonists/bloodsuckers/powers/targeted/lasombra.dm
+++ b/code/modules/antagonists/bloodsuckers/powers/targeted/lasombra.dm
@@ -78,7 +78,7 @@
if(istype(O, /obj/item/pda))
var/obj/item/pda/PDA = O
PDA.set_light_on(FALSE)
- PDA.update_icon()
+ PDA.update_appearance(updates = ALL)
O.visible_message(span_danger("The light in [PDA] shorts out!"))
else
O.visible_message(span_danger("[O] is disintegrated by [src]!"))
diff --git a/code/modules/antagonists/bloodsuckers/structures/bloodsucker_coffin.dm b/code/modules/antagonists/bloodsuckers/structures/bloodsucker_coffin.dm
index 466683d15ec6..4aa781944d04 100644
--- a/code/modules/antagonists/bloodsuckers/structures/bloodsucker_coffin.dm
+++ b/code/modules/antagonists/bloodsuckers/structures/bloodsucker_coffin.dm
@@ -162,7 +162,7 @@
if(user == resident)
if(welded)
welded = FALSE
- update_icon()
+ update_appearance(updates = ALL)
locked = FALSE
return TRUE
playsound(get_turf(src), 'sound/machines/door_locked.ogg', 20, 1)
diff --git a/code/modules/antagonists/bloodsuckers/structures/bloodsucker_crypt.dm b/code/modules/antagonists/bloodsuckers/structures/bloodsucker_crypt.dm
index 5740e6d5cd4f..ae49d0909e04 100644
--- a/code/modules/antagonists/bloodsuckers/structures/bloodsucker_crypt.dm
+++ b/code/modules/antagonists/bloodsuckers/structures/bloodsucker_crypt.dm
@@ -317,7 +317,7 @@
to_chat(user, span_cult("Seems like you need a direct link to the abyss to awaken [src]. Maybe searching a spacial influence would yield something."))
return
icon_state = initial(icon_state) + (awoken ? "_idle" : "_awaken")
- update_icon()
+ update_appearance(updates = ALL)
var/rankspent
switch(bloodsuckerdatum.clanprogress)
if(0)
@@ -399,7 +399,7 @@
. = ..()
anchored = FALSE
-/obj/structure/bloodsucker/moldingstone/update_icon()
+/obj/structure/bloodsucker/moldingstone/update_appearance(updates = ALL)
cut_overlays()
switch(metal)
if(1 to 5)
@@ -431,7 +431,7 @@
balloon_alert(user, "added [metal] metal")
if(istype(I, /obj/item/bloodsucker/chisel))
start_sculpiting(user)
- update_icon()
+ update_appearance(updates = ALL)
/obj/structure/bloodsucker/moldingstone/proc/start_sculpiting(mob/living/artist)
if(metal < 10)
@@ -444,7 +444,7 @@
if(!do_after(artist, 10 SECONDS, src))
artist.balloon_alert(artist, "ruined!")
metal -= rand(5, 10)
- update_icon()
+ update_appearance(updates = ALL)
return
artist.balloon_alert(artist, "done, a masterpiece!")
@@ -468,7 +468,7 @@
new /obj/item/stack/sheet/metal(get_turf(user), count)
else
to_chat(user, span_warning("There's no metal to retrieve in [src]."))
- update_icon()
+ update_appearance(updates = ALL)
#undef METALLIMIT
/obj/structure/bloodsucker/bloodstatue
@@ -714,7 +714,7 @@
playsound(loc, 'sound/effects/pop_expl.ogg', 25, 1)
density = TRUE
- update_icon()
+ update_appearance(updates = ALL)
// Set up Torture stuff now
convert_progress = 3
@@ -750,7 +750,7 @@
visible_message(span_danger("[buckled_mob][buckled_mob.stat == DEAD ? "'s corpse" : ""] slides off of the rack."))
density = FALSE
buckled_mob.Paralyze(2 SECONDS)
- update_icon()
+ update_appearance(updates = ALL)
return TRUE
/obj/structure/bloodsucker/vassalrack/attack_hand(mob/user, list/modifiers)
@@ -811,10 +811,10 @@
smallmeat++
meat_amount = bigmeat + intermeat + mediummeat + smallmeat
qdel(I)
- update_icon()
+ update_appearance(updates = ALL)
#undef MEATLIMIT
-/obj/structure/bloodsucker/vassalrack/update_icon()
+/obj/structure/bloodsucker/vassalrack/update_appearance(updates = ALL)
cut_overlays()
if(bigmeat)
add_overlay("bigmeat_[bigmeat]")
@@ -853,7 +853,7 @@
else
to_chat(user, span_warning("There's no meat to retrieve in [src]"))
meat_amount = bigmeat + intermeat + mediummeat + smallmeat
- update_icon()
+ update_appearance(updates = ALL)
/**
* Step One: Tick Down Conversion from 3 to 0
@@ -1153,7 +1153,7 @@
if(bigmeat && meatlost == 4)
bigmeat--
meatlost -= 4
- update_icon()
+ update_appearance(updates = ALL)
meat_amount = bigmeat + intermeat + mediummeat + smallmeat
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -1187,7 +1187,7 @@
STOP_PROCESSING(SSobj, src)
return ..()
-/obj/structure/bloodsucker/candelabrum/update_icon()
+/obj/structure/bloodsucker/candelabrum/update_appearance(updates = ALL)
icon_state = "candelabrum[lit ? "_lit" : ""]"
return ..()
@@ -1212,7 +1212,7 @@
else
set_light(0)
STOP_PROCESSING(SSobj, src)
- update_icon()
+ update_appearance(updates = ALL)
/obj/structure/bloodsucker/candelabrum/process()
if(!lit)
@@ -1288,7 +1288,7 @@
if(!buckle_mob(target))
return
- update_icon()
+ update_appearance(updates = ALL)
/obj/structure/bloodsucker/candelabrum/proc/remove_loyalties(mob/living/target, mob/living/user)
// Find Mindshield implant & destroy, takes a good while.
@@ -1300,7 +1300,7 @@
/obj/structure/bloodsucker/candelabrum/unbuckle_mob(mob/living/buckled_mob, force = FALSE, can_fall = TRUE)
. = ..()
src.visible_message(span_danger("[buckled_mob][buckled_mob.stat==DEAD?"'s corpse":""] slides off of the candelabrum."))
- update_icon()
+ update_appearance(updates = ALL)
/// Blood Throne - Allows Bloodsuckers to remotely speak with their Vassals. - Code (Mostly) stolen from comfy chairs (armrests) and chairs (layers)
/* broken currently
diff --git a/code/modules/antagonists/changeling/powers/mutations.dm b/code/modules/antagonists/changeling/powers/mutations.dm
index 5557758aead7..1ed5644b287b 100644
--- a/code/modules/antagonists/changeling/powers/mutations.dm
+++ b/code/modules/antagonists/changeling/powers/mutations.dm
@@ -33,7 +33,7 @@
if(!silent)
playsound(user, 'sound/effects/blobattack.ogg', 30, TRUE)
user.visible_message(span_warning("With a sickening crunch, [user] reforms [user.p_their()] [weapon_name_simple] into an arm!"), span_notice("We assimilate the [weapon_name_simple] back into our body."), "
You hear organic matter ripping and tearing!")
qdel(blade)
- target.update_inv_hands()
+ target.update_held_items()
/*/datum/action/changeling/sting/extract_dna //yogs start - removed extract dna sting
name = "Extract DNA Sting"
diff --git a/code/modules/antagonists/clockcult/clock_effects/clock_sigils.dm b/code/modules/antagonists/clockcult/clock_effects/clock_sigils.dm
index fc43883665ec..872eacf3f592 100644
--- a/code/modules/antagonists/clockcult/clock_effects/clock_sigils.dm
+++ b/code/modules/antagonists/clockcult/clock_effects/clock_sigils.dm
@@ -181,7 +181,7 @@
/obj/effect/clockwork/sigil/transmission/Initialize()
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
/obj/effect/clockwork/sigil/transmission/ex_act(severity)
if(severity == 3)
@@ -242,7 +242,7 @@
return FALSE
return TRUE
-/obj/effect/clockwork/sigil/transmission/update_icon()
+/obj/effect/clockwork/sigil/transmission/update_appearance(updates = ALL)
var/power_charge = get_clockwork_power()
if(GLOB.ratvar_awakens)
alpha = 255
diff --git a/code/modules/antagonists/clockcult/clock_helpers/clock_powerdrain.dm b/code/modules/antagonists/clockcult/clock_helpers/clock_powerdrain.dm
index 5ada97e2fd2b..b84d1dbd8b83 100644
--- a/code/modules/antagonists/clockcult/clock_helpers/clock_powerdrain.dm
+++ b/code/modules/antagonists/clockcult/clock_helpers/clock_powerdrain.dm
@@ -21,7 +21,7 @@
shorted = 1
visible_message(span_warning("The [name]'s screen blurs with static."))
update()
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/power/smes/power_drain(clockcult_user)
if(charge)
@@ -32,13 +32,13 @@
icon_state = "[initial(icon_state)]-o"
do_sparks(10, FALSE, src)
visible_message(span_warning("[src]'s panel flies open with a flurry of sparks!"))
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/stock_parts/cell/power_drain(clockcult_user)
if(charge)
. = min(charge, MIN_CLOCKCULT_POWER*3)
charge = use(.)
- update_icon()
+ update_appearance(updates = ALL)
/mob/living/silicon/robot/power_drain(clockcult_user)
if((!clockcult_user || !is_servant_of_ratvar(src)) && cell && cell.charge)
diff --git a/code/modules/antagonists/clockcult/clock_helpers/power_helpers.dm b/code/modules/antagonists/clockcult/clock_helpers/power_helpers.dm
index 7542c93ca2a2..4b439b4e71cd 100644
--- a/code/modules/antagonists/clockcult/clock_helpers/power_helpers.dm
+++ b/code/modules/antagonists/clockcult/clock_helpers/power_helpers.dm
@@ -12,7 +12,7 @@
else
current_power = GLOB.clockwork_power = clamp(GLOB.clockwork_power + amount, 0, MAX_CLOCKWORK_POWER)
for(var/obj/effect/clockwork/sigil/transmission/T in GLOB.all_clockwork_objects)
- T.update_icon()
+ T.update_appearance(updates = ALL)
var/unlock_message
if(current_power >= SCRIPT_UNLOCK_THRESHOLD && !GLOB.script_scripture_unlocked)
GLOB.script_scripture_unlocked = TRUE
diff --git a/code/modules/antagonists/clockcult/clock_scripture.dm b/code/modules/antagonists/clockcult/clock_scripture.dm
index 4d02e411a297..f953aa8480d3 100644
--- a/code/modules/antagonists/clockcult/clock_scripture.dm
+++ b/code/modules/antagonists/clockcult/clock_scripture.dm
@@ -322,7 +322,7 @@ GLOBAL_LIST_INIT(scripture_states,scripture_states_init_value()) //list of clock
slab.slab_ability = new ranged_type(slab)
slab.slab_ability.slab = slab
slab.slab_ability.set_ranged_ability(invoker, ranged_message)
- invoker.update_inv_hands()
+ invoker.update_held_items()
var/end_time = world.time + timeout_time
var/successful = FALSE
if(timeout_time)
@@ -348,5 +348,5 @@ GLOBAL_LIST_INIT(scripture_states,scripture_states_init_value()) //list of clock
slab.item_state = initial(slab.lefthand_file)
slab.item_state = initial(slab.righthand_file)
slab.inhand_overlay = null
- invoker?.update_inv_hands()
+ invoker?.update_held_items()
return successful //slab doesn't look like a word now.
diff --git a/code/modules/antagonists/clockcult/clock_structures/ark_of_the_clockwork_justicar.dm b/code/modules/antagonists/clockcult/clock_structures/ark_of_the_clockwork_justicar.dm
index 221436cb1b0d..1397f9dfae59 100644
--- a/code/modules/antagonists/clockcult/clock_structures/ark_of_the_clockwork_justicar.dm
+++ b/code/modules/antagonists/clockcult/clock_structures/ark_of_the_clockwork_justicar.dm
@@ -296,7 +296,7 @@
if(!O.pulledby && !iseffect(O) && O.density)
if(!step_away(O, src, 2) || get_dist(O, src) < 2)
O.take_damage(50, BURN, BOMB)
- O.update_icon()
+ O.update_appearance(updates = ALL)
for(var/V in GLOB.player_list)
var/mob/M = V
var/turf/T = get_turf(M)
diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm
index be5cb128225e..c297cdd1dbfc 100644
--- a/code/modules/antagonists/cult/cult_items.dm
+++ b/code/modules/antagonists/cult/cult_items.dm
@@ -384,7 +384,7 @@
max = 40
prefix = "darkened"
-/obj/item/sharpener/cult/update_icon()
+/obj/item/sharpener/cult/update_appearance(updates = ALL)
icon_state = "cult_sharpener[used ? "_used" : ""]"
/obj/item/clothing/suit/hooded/cultrobes/cult_shield
@@ -690,7 +690,7 @@ GLOBAL_VAR_INIT(curselimit, 0)
qdel(spear_act)
..()
-/obj/item/twohanded/cult_spear/update_icon()
+/obj/item/twohanded/cult_spear/update_appearance(updates = ALL)
icon_state = "bloodspear[wielded]"
/obj/item/twohanded/cult_spear/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum)
diff --git a/code/modules/antagonists/cult/cult_structures.dm b/code/modules/antagonists/cult/cult_structures.dm
index 53d7f23a9115..f7c762ea6bd5 100644
--- a/code/modules/antagonists/cult/cult_structures.dm
+++ b/code/modules/antagonists/cult/cult_structures.dm
@@ -306,13 +306,14 @@
/obj/structure/destructible/cult/pillar/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir, armour_penetration = 0)
..()
- update_icon()
+ update_appearance(updates = ALL)
/obj/structure/destructible/cult/pillar/Destroy()
new /obj/effect/decal/cleanable/ash(loc)
..()
-/obj/structure/destructible/cult/pillar/update_icon()
+/obj/structure/destructible/cult/pillar/update_appearance(updates = ALL)
+ . = ..()
icon_state = "pillar[alt ? "alt": ""]2"
if (obj_integrity < max_integrity/3)
icon_state = "pillar[alt ? "alt": ""]0"
@@ -398,7 +399,7 @@
M.playsound_local(src, 'sound/effects/explosionfar.ogg', 50, 1)
shake_camera(M, 1, 1)
for (var/obj/structure/destructible/cult/pillar/P in pillars)
- P.update_icon()
+ P.update_appearance(updates = ALL)
/obj/structure/destructible/cult/bloodstone/proc/summon()
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF //should stop the stone from being destroyed by damage
@@ -408,7 +409,7 @@
/obj/structure/destructible/cult/bloodstone/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir, armour_penetration = 0)
..()
- update_icon()
+ update_appearance(updates = ALL)
/obj/structure/destructible/cult/bloodstone/ex_act(var/severity)
switch(severity)
@@ -470,7 +471,7 @@
else
T.narsie_act(TRUE, TRUE)
-/obj/structure/destructible/cult/bloodstone/update_icon()
+/obj/structure/destructible/cult/bloodstone/update_appearance(updates = ALL)
icon_state = "bloodstone-[current_fullness]"
cut_overlays()
var/image/I_base = image('icons/obj/cult_64x64.dmi',"bloodstone-base")
@@ -500,7 +501,7 @@
animate(color = list(1.25,0.12,0,0,0,1.25,0.12,0,0.12,0,1.25,0,0,0,0,1,0,0,0,0), time = 0.1 SECONDS)
animate(color = list(1.125,0.06,0,0,0,1.125,0.06,0,0.06,0,1.125,0,0,0,0,1,0,0,0,0), time = 0.1 SECONDS)
set_light(20, 20)
- update_icon()
+ update_appearance(updates = ALL)
/obj/structure/destructible/cult/bloodstone/conceal() //lol
return
diff --git a/code/modules/antagonists/devil/true_devil/inventory.dm b/code/modules/antagonists/devil/true_devil/inventory.dm
index a3d0dbdf582b..c79229dfc5bd 100644
--- a/code/modules/antagonists/devil/true_devil/inventory.dm
+++ b/code/modules/antagonists/devil/true_devil/inventory.dm
@@ -1,10 +1,10 @@
/mob/living/carbon/true_devil/doUnEquip(obj/item/I, force, newloc, no_move, invdrop = TRUE, silent = FALSE)
if(..())
- update_inv_hands()
+ update_held_items()
return 1
return 0
-/mob/living/carbon/true_devil/update_inv_hands()
+/mob/living/carbon/true_devil/update_held_items()
//TODO LORDPIDEY: Figure out how to make the hands line up properly. the l/r_hand_overlay should use the down sprite when facing down, left, or right, and the up sprite when facing up.
remove_overlay(DEVIL_HANDS_LAYER)
var/list/hands_overlays = list()
diff --git a/code/modules/antagonists/eldritch_cult/eldritch_book.dm b/code/modules/antagonists/eldritch_cult/eldritch_book.dm
index 75f4bb92702a..a70a3c8cbaf2 100644
--- a/code/modules/antagonists/eldritch_cult/eldritch_book.dm
+++ b/code/modules/antagonists/eldritch_cult/eldritch_book.dm
@@ -155,7 +155,7 @@
if(cultie.gain_knowledge(EK))
return TRUE
- update_icon() // Not applicable to all objects.
+ update_appearance(updates = ALL) // Not applicable to all objects.
/obj/item/forbidden_book/ui_close(mob/user)
flick("book_closing",src)
diff --git a/code/modules/antagonists/eldritch_cult/eldritch_magic.dm b/code/modules/antagonists/eldritch_cult/eldritch_magic.dm
index 4ec64ef051db..010f17c1862d 100644
--- a/code/modules/antagonists/eldritch_cult/eldritch_magic.dm
+++ b/code/modules/antagonists/eldritch_cult/eldritch_magic.dm
@@ -761,7 +761,7 @@
pixel_y = rand(-6,6)
pixel_x = rand(-6,6)
icon_state = "small_rune_[rand(12)]"
- update_icon()
+ update_appearance(updates = ALL)
// Shoots out in a wave-like, what rust heretics themselves get
/datum/action/cooldown/spell/cone/staggered/entropic_plume
diff --git a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm
index fa76d6315e05..a3172c80ac67 100644
--- a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm
+++ b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm
@@ -39,7 +39,7 @@
GLOB.nuke_list += src
core = new /obj/item/nuke_core(src)
STOP_PROCESSING(SSobj, core)
- update_icon()
+ update_appearance(updates = ALL)
GLOB.poi_list |= src
previous_level = get_security_level()
@@ -111,7 +111,7 @@
if(I.use_tool(src, user, 60, volume=100))
deconstruction_state = NUKESTATE_UNSCREWED
to_chat(user, span_notice("You remove the screws from [src]'s front panel."))
- update_icon()
+ update_appearance(updates = ALL)
return
if(NUKESTATE_PANEL_REMOVED)
@@ -122,7 +122,7 @@
if(I.use_tool(src, user, 80, volume=100, amount=1))
to_chat(user, span_notice("You cut [src]'s inner plate."))
deconstruction_state = NUKESTATE_WELDED
- update_icon()
+ update_appearance(updates = ALL)
return
if(NUKESTATE_CORE_EXPOSED)
if(istype(I, /obj/item/nuke_core_container))
@@ -132,7 +132,7 @@
if(core_box.load(core, user))
to_chat(user, span_notice("You load the plutonium core into [core_box]."))
deconstruction_state = NUKESTATE_CORE_REMOVED
- update_icon()
+ update_appearance(updates = ALL)
core = null
else
to_chat(user, span_warning("You fail to load the plutonium core into [core_box]. [core_box] has already been used!"))
@@ -146,7 +146,7 @@
to_chat(user, span_notice("You repair [src]'s inner metal plate. The radiation is contained."))
deconstruction_state = NUKESTATE_PANEL_REMOVED
STOP_PROCESSING(SSobj, core)
- update_icon()
+ update_appearance(updates = ALL)
return
. = ..()
@@ -158,14 +158,14 @@
if(tool.use_tool(src, user, 30, volume=100))
to_chat(user, span_notice("You remove [src]'s front panel."))
deconstruction_state = NUKESTATE_PANEL_REMOVED
- update_icon()
+ update_appearance(updates = ALL)
return TRUE
if(NUKESTATE_WELDED)
to_chat(user, span_notice("You start prying off [src]'s inner plate..."))
if(tool.use_tool(src, user, 30, volume=100))
to_chat(user, span_notice("You pry off [src]'s inner plate. You can see the core's green glow!"))
deconstruction_state = NUKESTATE_CORE_EXPOSED
- update_icon()
+ update_appearance(updates = ALL)
START_PROCESSING(SSobj, core)
return TRUE
@@ -179,7 +179,7 @@
else
return NUKE_OFF_UNLOCKED
-/obj/machinery/nuclearbomb/update_icon()
+/obj/machinery/nuclearbomb/update_appearance(updates = ALL)
if(deconstruction_state == NUKESTATE_INTACT)
switch(get_nuke_state())
if(NUKE_OFF_LOCKED, NUKE_OFF_UNLOCKED)
@@ -408,7 +408,7 @@
timing = FALSE
detonation_timer = null
countdown.stop()
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/nuclearbomb/proc/set_active()
if(safety)
@@ -429,7 +429,7 @@
S.switch_mode_to(initial(S.mode))
S.alert = FALSE
countdown.stop()
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/nuclearbomb/proc/get_time_left()
if(timing)
@@ -456,7 +456,7 @@
exploding = TRUE
yes_code = FALSE
safety = TRUE
- update_icon()
+ update_appearance(updates = ALL)
sound_to_playing_players('sound/machines/alarm.ogg')
if(SSticker && SSticker.mode)
SSticker.roundend_check_paused = TRUE
@@ -563,7 +563,7 @@
S.switch_mode_to(initial(S.mode))
S.alert = FALSE
countdown.stop()
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/nuclearbomb/beer/proc/fizzbuzz()
var/datum/reagents/R = new/datum/reagents(1000)
diff --git a/code/modules/antagonists/nukeop/nukeop.dm b/code/modules/antagonists/nukeop/nukeop.dm
index 5ba81ca9faa7..e4a47a7de7c6 100644
--- a/code/modules/antagonists/nukeop/nukeop.dm
+++ b/code/modules/antagonists/nukeop/nukeop.dm
@@ -183,7 +183,7 @@
/datum/outfit/nuclear_operative_elite/post_equip(mob/living/carbon/human/H, visualsOnly)
var/obj/item/shield/energy/shield = locate() in H.held_items
shield.icon_state = "[shield.base_icon_state]1"
- H.update_inv_hands()
+ H.update_held_items()
/datum/antagonist/nukeop/leader
name = "Nuclear Operative Leader"
diff --git a/code/modules/antagonists/official/official.dm b/code/modules/antagonists/official/official.dm
index 8b1c544e25e6..f39b417392c5 100644
--- a/code/modules/antagonists/official/official.dm
+++ b/code/modules/antagonists/official/official.dm
@@ -86,4 +86,4 @@
/datum/antagonist/centcom/grand_admiral
name = "CentCom Grand Admiral"
role = "Grand Admiral"
- outfit = /datum/outfit/centcom/grand_admiral
\ No newline at end of file
+ outfit = /datum/outfit/centcom/grand_admiral
diff --git a/code/modules/antagonists/revolution/revolution.dm b/code/modules/antagonists/revolution/revolution.dm
index 2e0f24481c15..8cf014a34d7c 100644
--- a/code/modules/antagonists/revolution/revolution.dm
+++ b/code/modules/antagonists/revolution/revolution.dm
@@ -151,7 +151,7 @@
to_chat(admin, span_danger("Repairing flash failed!"))
else
flash.burnt_out = FALSE
- flash.update_icon()
+ flash.update_appearance(updates = ALL)
/datum/antagonist/rev/head/proc/admin_demote(datum/mind/target,mob/user)
message_admins("[key_name_admin(user)] has demoted [key_name_admin(owner)] from head revolutionary.")
diff --git a/code/modules/antagonists/slaughter/slaughter.dm b/code/modules/antagonists/slaughter/slaughter.dm
index f81c23c44083..449c64a2daa9 100644
--- a/code/modules/antagonists/slaughter/slaughter.dm
+++ b/code/modules/antagonists/slaughter/slaughter.dm
@@ -75,8 +75,9 @@
icon = 'icons/obj/surgery.dmi'
icon_state = "demon_heart-on"
-/obj/item/organ/heart/demon/update_icon()
- return //always beating visually
+/obj/item/organ/internal/heart/demon/Initialize(mapload)
+ AddElement(/datum/element/update_icon_blocker)
+ return ..()
/obj/item/organ/heart/demon/attack(mob/M, mob/living/carbon/user, obj/target)
if(M != user)
diff --git a/code/modules/antagonists/traitor/equipment/Malf_Modules.dm b/code/modules/antagonists/traitor/equipment/Malf_Modules.dm
index 8d1dd9363c25..e6e745a62d83 100644
--- a/code/modules/antagonists/traitor/equipment/Malf_Modules.dm
+++ b/code/modules/antagonists/traitor/equipment/Malf_Modules.dm
@@ -654,7 +654,7 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/AI_Module))
if(!is_station_level(F.z))
continue
F.obj_flags |= EMAGGED
- F.update_icon()
+ F.update_appearance(updates = ALL)
to_chat(owner, span_notice("All thermal sensors on the station have been disabled. Fire alerts will no longer be recognized."))
owner.playsound_local(owner, 'sound/machines/terminal_off.ogg', 50, 0)
diff --git a/code/modules/antagonists/zombie/abilities/spit.dm b/code/modules/antagonists/zombie/abilities/spit.dm
index 809bf1767c5b..d6995eec3c59 100644
--- a/code/modules/antagonists/zombie/abilities/spit.dm
+++ b/code/modules/antagonists/zombie/abilities/spit.dm
@@ -12,7 +12,7 @@
else
add_ranged_ability(user, span_notice("You open your neurotoxin reserves.
Left-click to fire at a target!"), TRUE)
-/obj/effect/proc_holder/zombie/spit/update_icon()
+/obj/effect/proc_holder/zombie/spit/update_appearance(updates = ALL)
action.button_icon_state = "alien_neurotoxin_[active]"
action.build_all_button_icons()
diff --git a/code/modules/assembly/assembly.dm b/code/modules/assembly/assembly.dm
index ed41fff2b090..41c4b8645173 100644
--- a/code/modules/assembly/assembly.dm
+++ b/code/modules/assembly/assembly.dm
@@ -18,7 +18,7 @@
throw_range = 7
var/is_position_sensitive = FALSE //set to true if the device has different icons for each position.
- //This will prevent things such as visible lasers from facing the incorrect direction when transformed by assembly_holder's update_icon()
+ //This will prevent things such as visible lasers from facing the incorrect direction when transformed by assembly_holder's update_appearance(updates = ALL)
var/secured = TRUE
var/list/attached_overlays = null
var/obj/item/assembly_holder/holder = null
@@ -89,7 +89,7 @@
/obj/item/assembly/proc/toggle_secure()
secured = !secured
- update_icon()
+ update_appearance(updates = ALL)
return secured
diff --git a/code/modules/assembly/bomb.dm b/code/modules/assembly/bomb.dm
index 7b8590f3d416..5b28c80850f1 100644
--- a/code/modules/assembly/bomb.dm
+++ b/code/modules/assembly/bomb.dm
@@ -19,7 +19,7 @@
/obj/item/onetankbomb/examine(mob/user)
return bombtank.examine(user)
-/obj/item/onetankbomb/update_icon()
+/obj/item/onetankbomb/update_appearance(updates = ALL)
cut_overlays()
if(bombtank)
icon = bombtank.icon
@@ -132,7 +132,7 @@
master = bomb
forceMove(bomb)
- bomb.update_icon()
+ bomb.update_appearance(updates = ALL)
user.put_in_hands(bomb) //Equips the bomb if possible, or puts it on the floor.
to_chat(user, span_notice("You attach [assembly] to [src]."))
diff --git a/code/modules/assembly/doorcontrol.dm b/code/modules/assembly/doorcontrol.dm
index 8eff567fcb1a..f6c91fc26751 100644
--- a/code/modules/assembly/doorcontrol.dm
+++ b/code/modules/assembly/doorcontrol.dm
@@ -65,7 +65,7 @@
if(specialfunctions & BOLTS)
if(!D.wires.is_cut(WIRE_BOLTS) && D.hasPower())
D.locked = !D.locked
- D.update_icon()
+ D.update_appearance(updates = ALL)
if(specialfunctions & SHOCK)
if(D.secondsElectrified)
D.set_electrified(MACHINE_ELECTRIFIED_PERMANENT, usr)
diff --git a/code/modules/assembly/flash.dm b/code/modules/assembly/flash.dm
index e3ea2cf94db0..0f7629096e55 100644
--- a/code/modules/assembly/flash.dm
+++ b/code/modules/assembly/flash.dm
@@ -54,9 +54,9 @@
if(flash)
add_overlay(flashing_overlay)
attached_overlays += flashing_overlay
- addtimer(CALLBACK(src, PROC_REF(update_icon)), 5)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/atom/, update_appearance)), 5)
if(holder)
- holder.update_icon()
+ holder.update_appearance(updates = ALL)
/obj/item/assembly/flash/proc/clown_check(mob/living/carbon/human/user)
if(HAS_TRAIT(user, TRAIT_CLUMSY) && prob(50))
@@ -67,7 +67,7 @@
/obj/item/assembly/flash/proc/burn_out() //Made so you can override it if you want to have an invincible flash from R&D or something.
if(!burnt_out)
burnt_out = TRUE
- update_icon()
+ update_appearance(updates = ALL)
if(ismob(loc))
var/mob/M = loc
M.visible_message(span_danger("[src] burns out!"),span_userdanger("[src] burns out!"))
diff --git a/code/modules/assembly/health.dm b/code/modules/assembly/health.dm
index 69f90681a7ca..fb22dede8413 100644
--- a/code/modules/assembly/health.dm
+++ b/code/modules/assembly/health.dm
@@ -27,7 +27,7 @@
else
scanning = FALSE
STOP_PROCESSING(SSobj, src)
- update_icon()
+ update_appearance(updates = ALL)
return secured
/obj/item/assembly/health/AltClick(mob/living/user)
diff --git a/code/modules/assembly/holder.dm b/code/modules/assembly/holder.dm
index b00f74e42374..47d29c21d0c2 100644
--- a/code/modules/assembly/holder.dm
+++ b/code/modules/assembly/holder.dm
@@ -27,7 +27,7 @@
attach(A,user)
attach(A2,user)
name = "[A.name]-[A2.name] assembly"
- update_icon()
+ update_appearance(updates = ALL)
SSblackbox.record_feedback("tally", "assembly_made", 1, "[initial(A.name)]-[initial(A2.name)]")
/obj/item/assembly_holder/proc/attach(obj/item/assembly/A, mob/user)
@@ -44,7 +44,7 @@
a_right = A
A.holder_movement()
-/obj/item/assembly_holder/update_icon()
+/obj/item/assembly_holder/update_appearance(updates = ALL)
cut_overlays()
if(a_left)
add_overlay("[a_left.icon_state]_left")
@@ -84,8 +84,7 @@
// yogs end
add_overlay(right)
- if(master)
- master.update_icon()
+ master?.update_appearance(updates)
/obj/item/assembly_holder/Crossed(atom/movable/AM as mob|obj)
. = ..()
diff --git a/code/modules/assembly/infrared.dm b/code/modules/assembly/infrared.dm
index b1078c082865..ef3f93ed3683 100644
--- a/code/modules/assembly/infrared.dm
+++ b/code/modules/assembly/infrared.dm
@@ -39,7 +39,7 @@
return FALSE //Cooldown check
on = !on
refreshBeam()
- update_icon()
+ update_appearance(updates = ALL)
return TRUE
/obj/item/assembly/infra/toggle_secure()
@@ -50,22 +50,23 @@
else
QDEL_LIST(beams)
STOP_PROCESSING(SSobj, src)
- update_icon()
+ update_appearance(updates = ALL)
return secured
-/obj/item/assembly/infra/update_icon()
- cut_overlays()
- attached_overlays = list()
- if(on)
- add_overlay("infrared_on")
- attached_overlays += "infrared_on"
- if(visible && secured)
- add_overlay("infrared_visible")
- attached_overlays += "infrared_visible"
+/obj/item/assembly/infra/update_appearance(updates = ALL)
+ . = ..()
+ holder?.update_appearance(updates)
- if(holder)
- holder.update_icon()
- return
+/obj/item/assembly/infra/update_overlays()
+ . = ..()
+ attached_overlays = list()
+ if(!on)
+ return
+ . += "infrared_on"
+ attached_overlays += "infrared_on"
+ if(visible && secured)
+ . += "infrared_visible"
+ attached_overlays += "infrared_visible"
/obj/item/assembly/infra/dropped()
. = ..()
@@ -207,7 +208,7 @@
visible = !visible
. = TRUE
- update_icon()
+ update_appearance(updates = ALL)
refreshBeam()
/***************************IBeam*********************************/
diff --git a/code/modules/assembly/mousetrap.dm b/code/modules/assembly/mousetrap.dm
index 6266ccaf3595..43ac7c36b13d 100644
--- a/code/modules/assembly/mousetrap.dm
+++ b/code/modules/assembly/mousetrap.dm
@@ -22,16 +22,16 @@
if((HAS_TRAIT(user, TRAIT_DUMB) || HAS_TRAIT(user, TRAIT_CLUMSY)) && prob(50))
to_chat(user, span_warning("Your hand slips, setting off the trigger!"))
pulse(FALSE)
- update_icon()
+ update_appearance(updates = ALL)
playsound(src, 'sound/weapons/handcuffs.ogg', 30, TRUE, -3)
-/obj/item/assembly/mousetrap/update_icon()
+/obj/item/assembly/mousetrap/update_appearance(updates = ALL)
if(armed)
icon_state = "mousetraparmed"
else
icon_state = "mousetrap"
if(holder)
- holder.update_icon()
+ holder.update_appearance(updates = ALL)
/obj/item/assembly/mousetrap/proc/triggered(mob/target, type = "feet")
if(!armed)
@@ -42,7 +42,7 @@
if(HAS_TRAIT(H, TRAIT_PIERCEIMMUNE))
playsound(src, 'sound/effects/snap.ogg', 50, TRUE)
armed = FALSE
- update_icon()
+ update_appearance(updates = ALL)
pulse(FALSE)
return FALSE
switch(type)
@@ -69,7 +69,7 @@
M.splat()
playsound(src, 'sound/effects/snap.ogg', 50, TRUE)
armed = FALSE
- update_icon()
+ update_appearance(updates = ALL)
pulse(FALSE)
@@ -87,7 +87,7 @@
return
to_chat(user, span_notice("You disarm [src]."))
armed = !armed
- update_icon()
+ update_appearance(updates = ALL)
playsound(src, 'sound/weapons/handcuffs.ogg', 30, TRUE, -3)
diff --git a/code/modules/assembly/proximity.dm b/code/modules/assembly/proximity.dm
index 4ef4ed3e2940..861de9b0c554 100644
--- a/code/modules/assembly/proximity.dm
+++ b/code/modules/assembly/proximity.dm
@@ -29,7 +29,7 @@
timing = !timing
else
scanning = FALSE
- update_icon()
+ update_appearance(updates = ALL)
return TRUE
/obj/item/assembly/prox_sensor/on_detach()
@@ -50,7 +50,7 @@
else
START_PROCESSING(SSobj, src)
proximity_monitor.SetHost(loc,src)
- update_icon()
+ update_appearance(updates = ALL)
return secured
/obj/item/assembly/prox_sensor/HasProximity(atom/movable/AM as mob|obj)
@@ -84,7 +84,7 @@
return FALSE
scanning = scan
proximity_monitor.SetRange(scanning ? sensitivity : 0)
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/assembly/prox_sensor/proc/sensitivity_change(value)
var/sense = min(max(sensitivity + value, 0), 5)
@@ -92,7 +92,7 @@
if(scanning && proximity_monitor.SetRange(sense))
sense()
-/obj/item/assembly/prox_sensor/update_icon()
+/obj/item/assembly/prox_sensor/update_appearance(updates = ALL)
cut_overlays()
attached_overlays = list()
if(timing)
@@ -102,7 +102,7 @@
add_overlay("prox_scanning")
attached_overlays += "prox_scanning"
if(holder)
- holder.update_icon()
+ holder.update_appearance(updates = ALL)
return
/obj/item/assembly/prox_sensor/ui_status(mob/user)
@@ -140,7 +140,7 @@
. = TRUE
if("time")
timing = !timing
- update_icon()
+ update_appearance(updates = ALL)
. = TRUE
if("input")
var/value = text2num(params["adjust"])
diff --git a/code/modules/assembly/signaler.dm b/code/modules/assembly/signaler.dm
index 8b097bee28c5..16a82933b97d 100644
--- a/code/modules/assembly/signaler.dm
+++ b/code/modules/assembly/signaler.dm
@@ -44,9 +44,9 @@
signal()
return TRUE
-/obj/item/assembly/signaler/update_icon()
+/obj/item/assembly/signaler/update_appearance(updates = ALL)
if(holder)
- holder.update_icon()
+ holder.update_appearance(updates = ALL)
return
/obj/item/assembly/signaler/ui_status(mob/user)
@@ -104,9 +104,9 @@
else
idx++
label_color = label_colors[idx]
- update_icon()
+ update_appearance(updates = ALL)
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/assembly/signaler/attackby(obj/item/W, mob/user, params)
if(issignaler(W))
@@ -116,7 +116,7 @@
set_frequency(signaler2.frequency)
// yogs start - signaller colors
label_color = signaler2.label_color
- update_icon()
+ update_appearance(updates = ALL)
// yogs end
to_chat(user, "You transfer the frequency and code of \the [signaler2.name] to \the [name]")
..()
diff --git a/code/modules/assembly/timer.dm b/code/modules/assembly/timer.dm
index 0c5011f07425..e739a3e6ea38 100644
--- a/code/modules/assembly/timer.dm
+++ b/code/modules/assembly/timer.dm
@@ -37,7 +37,7 @@
if(!..())
return FALSE//Cooldown check
timing = !timing
- update_icon()
+ update_appearance(updates = ALL)
return TRUE
@@ -48,7 +48,7 @@
else
timing = FALSE
STOP_PROCESSING(SSobj, src)
- update_icon()
+ update_appearance(updates = ALL)
return secured
@@ -63,7 +63,7 @@
LM.playsound_local(get_turf(src), 'sound/machines/triple_beep.ogg', ASSEMBLY_BEEP_VOLUME, TRUE)
if(loop)
timing = TRUE
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/assembly/timer/process(delta_time)
@@ -76,14 +76,14 @@
time = saved_time
-/obj/item/assembly/timer/update_icon()
+/obj/item/assembly/timer/update_appearance(updates = ALL)
cut_overlays()
attached_overlays = list()
if(timing)
add_overlay("timer_timing")
attached_overlays += "timer_timing"
if(holder)
- holder.update_icon()
+ holder.update_appearance(updates = ALL)
/obj/item/assembly/timer/ui_status(mob/user)
if(is_secured(user))
@@ -115,7 +115,7 @@
timing = !timing
if(timing && istype(holder, /obj/item/transfer_valve))
log_bomber(usr, "activated a", src, "attachment on [holder]")
- update_icon()
+ update_appearance(updates = ALL)
. = TRUE
if("repeat")
loop = !loop
diff --git a/code/modules/atmospherics/machinery/airalarm.dm b/code/modules/atmospherics/machinery/airalarm.dm
index 8b9ba4a59fdc..fb2a7a3388bb 100644
--- a/code/modules/atmospherics/machinery/airalarm.dm
+++ b/code/modules/atmospherics/machinery/airalarm.dm
@@ -236,7 +236,7 @@
if(name == initial(name))
name = "[get_area_name(src)] Air Alarm"
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/airalarm/Destroy()
SSradio.remove_object(src, frequency)
@@ -458,7 +458,7 @@
if(A.atmosalert(0, src))
post_alert(0)
. = TRUE
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/airalarm/proc/reset(wire)
@@ -466,7 +466,7 @@
if(WIRE_POWER)
if(!wires.is_cut(WIRE_POWER))
shorted = FALSE
- update_icon()
+ update_appearance(updates = ALL)
if(WIRE_AI)
if(!wires.is_cut(WIRE_AI))
aidisabled = FALSE
@@ -630,7 +630,7 @@
"set_internal_pressure" = 0
), signal_source)
-/obj/machinery/airalarm/update_icon()
+/obj/machinery/airalarm/update_appearance(updates = ALL)
if(panel_open)
switch(buildstage)
if(2)
@@ -724,7 +724,7 @@
if(A.atmosalert(new_area_danger_level,src)) //if area was in normal state or if area was in alert state
post_alert(new_area_danger_level)
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/airalarm/attackby(obj/item/W, mob/user, params)
switch(buildstage)
@@ -734,13 +734,13 @@
to_chat(user, span_notice("You cut the final wires."))
new /obj/item/stack/cable_coil(loc, 5)
buildstage = 1
- update_icon()
+ update_appearance(updates = ALL)
return
else if(W.tool_behaviour == TOOL_SCREWDRIVER) // Opening that Air Alarm up.
W.play_tool_sound(src)
panel_open = !panel_open
to_chat(user, span_notice("The wires have been [panel_open ? "exposed" : "unexposed"]."))
- update_icon()
+ update_appearance(updates = ALL)
return
else if(W.GetID())// trying to unlock the interface with an ID card
togglelock(user)
@@ -759,7 +759,7 @@
new /obj/item/electronics/airalarm( src.loc )
playsound(src.loc, 'sound/items/deconstruct.ogg', 50, 1)
buildstage = 0
- update_icon()
+ update_appearance(updates = ALL)
return
if(istype(W, /obj/item/stack/cable_coil))
@@ -780,14 +780,14 @@
shorted = 0
post_alert(0)
buildstage = 2
- update_icon()
+ update_appearance(updates = ALL)
return
if(0)
if(istype(W, /obj/item/electronics/airalarm))
if(user.temporarilyRemoveItemFromInventory(W))
to_chat(user, span_notice("You insert the circuit."))
buildstage = 1
- update_icon()
+ update_appearance(updates = ALL)
qdel(W)
return
@@ -798,7 +798,7 @@
user.visible_message(span_notice("[user] fabricates a circuit and places it into [src]."), \
span_notice("You adapt an air alarm circuit and slot it into the assembly."))
buildstage = 1
- update_icon()
+ update_appearance(updates = ALL)
return
if(W.tool_behaviour == TOOL_WRENCH)
@@ -828,7 +828,7 @@
user.visible_message(span_notice("[user] fabricates a circuit and places it into [src]."), \
span_notice("You adapt an air alarm circuit and slot it into the assembly."))
buildstage = 1
- update_icon()
+ update_appearance(updates = ALL)
return TRUE
return FALSE
diff --git a/code/modules/atmospherics/machinery/atmosmachinery.dm b/code/modules/atmospherics/machinery/atmosmachinery.dm
index ce6d38b8a42d..6de36eee0450 100644
--- a/code/modules/atmospherics/machinery/atmosmachinery.dm
+++ b/code/modules/atmospherics/machinery/atmosmachinery.dm
@@ -117,13 +117,13 @@ GLOBAL_LIST_EMPTY(pipeimages)
if(can_be_node(target, i))
nodes[i] = target
break
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/atmospherics/proc/setPipingLayer(new_layer)
piping_layer = (pipe_flags & PIPING_DEFAULT_LAYER_ONLY) ? PIPING_LAYER_DEFAULT : new_layer
- update_icon()
+ update_appearance(updates = ALL)
-/obj/machinery/atmospherics/update_icon()
+/obj/machinery/atmospherics/update_appearance(updates = ALL)
layer = initial(layer) + piping_layer / 1000
return ..()
@@ -175,7 +175,7 @@ GLOBAL_LIST_EMPTY(pipeimages)
var/obj/machinery/atmospherics/pipe/P = reference
P.destroy_network()
nodes[nodes.Find(reference)] = null
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/atmospherics/attackby(obj/item/W, mob/user, params)
if(istype(W, /obj/item/pipe)) //lets you autodrop
diff --git a/code/modules/atmospherics/machinery/components/binary_devices/binary_devices.dm b/code/modules/atmospherics/machinery/components/binary_devices/binary_devices.dm
index 22a407f3d14b..65e8d3350e68 100644
--- a/code/modules/atmospherics/machinery/components/binary_devices/binary_devices.dm
+++ b/code/modules/atmospherics/machinery/components/binary_devices/binary_devices.dm
@@ -14,7 +14,7 @@
initialize_directions = EAST|WEST
/obj/machinery/atmospherics/components/binary/hide(intact)
- update_icon()
+ update_appearance(updates = ALL)
..()
/obj/machinery/atmospherics/components/binary/getNodeConnects()
diff --git a/code/modules/atmospherics/machinery/components/binary_devices/circulator.dm b/code/modules/atmospherics/machinery/components/binary_devices/circulator.dm
index 4677507cec21..5d8fbe58ac69 100644
--- a/code/modules/atmospherics/machinery/components/binary_devices/circulator.dm
+++ b/code/modules/atmospherics/machinery/components/binary_devices/circulator.dm
@@ -36,7 +36,7 @@
/obj/machinery/atmospherics/components/binary/circulator/Initialize(mapload)
.=..()
component_parts = list(new /obj/item/circuitboard/machine/circulator)
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/atmospherics/components/binary/circulator/ComponentInitialize()
. = ..()
@@ -82,7 +82,7 @@
..()
update_icon_nopipes()
-/obj/machinery/atmospherics/components/binary/circulator/update_icon()
+/obj/machinery/atmospherics/components/binary/circulator/update_appearance(updates = ALL)
cut_overlays()
if(anchored)
@@ -188,7 +188,7 @@
node2.addMember(src)
SSair.add_to_rebuild_queue(src)
- update_icon()
+ update_appearance(updates = ALL)
return TRUE
@@ -257,7 +257,7 @@
generator.cold_circ = null
else
generator.hot_circ = null
- generator.update_icon()
+ generator.update_appearance(updates = ALL)
generator = null
/obj/machinery/atmospherics/components/binary/circulator/setPipingLayer(new_layer)
@@ -281,5 +281,5 @@
/obj/machinery/atmospherics/components/binary/circulator/obj_break(damage_flag)
if(generator)
generator.kill_circs()
- generator.update_icon()
+ generator.update_appearance(updates = ALL)
..()
diff --git a/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm
index 9181b33d5709..98837e855d13 100644
--- a/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm
+++ b/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm
@@ -175,7 +175,7 @@
return //do not update_icon
spawn(2)
broadcast_status()
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume
name = "large dual-port air vent"
diff --git a/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm b/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm
index cc951ab2977e..24344a37c188 100644
--- a/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm
+++ b/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm
@@ -33,7 +33,7 @@ Passive gate is similar to the regular pump except:
var/msg = "was turned [on ? "on" : "off"] by [key_name(user)]"
investigate_log(msg, INVESTIGATE_ATMOS)
investigate_log(msg, INVESTIGATE_SUPERMATTER) // yogs - make supermatter invest useful
- update_icon()
+ update_appearance(updates = ALL)
return ..()
/obj/machinery/atmospherics/components/binary/passive_gate/AltClick(mob/user)
@@ -43,7 +43,7 @@ Passive gate is similar to the regular pump except:
investigate_log(msg, INVESTIGATE_ATMOS)
investigate_log(msg, INVESTIGATE_SUPERMATTER) // yogs - make supermatter invest useful
balloon_alert(user, "pressure output set to [target_pressure] kPa")
- update_icon()
+ update_appearance(updates = ALL)
return ..()
@@ -148,7 +148,7 @@ Passive gate is similar to the regular pump except:
var/msg = "was set to [target_pressure] kPa by [key_name(usr)]"
investigate_log(msg, INVESTIGATE_ATMOS)
investigate_log(msg, INVESTIGATE_SUPERMATTER) // yogs - make supermatter invest useful
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/atmospherics/components/binary/passive_gate/atmosinit()
..()
@@ -179,7 +179,7 @@ Passive gate is similar to the regular pump except:
return
broadcast_status()
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/atmospherics/components/binary/passive_gate/can_unwrench(mob/user)
. = ..()
diff --git a/code/modules/atmospherics/machinery/components/binary_devices/pressure_valve.dm b/code/modules/atmospherics/machinery/components/binary_devices/pressure_valve.dm
index 92a3873e6980..bea0dcde8220 100644
--- a/code/modules/atmospherics/machinery/components/binary_devices/pressure_valve.dm
+++ b/code/modules/atmospherics/machinery/components/binary_devices/pressure_valve.dm
@@ -24,7 +24,7 @@
if(can_interact(user))
on = !on
investigate_log("was turned [on ? "on" : "off"] by [key_name(user)]", INVESTIGATE_ATMOS)
- update_icon()
+ update_appearance(updates = ALL)
return ..()
/obj/machinery/atmospherics/components/binary/pressure_valve/AltClick(mob/user)
@@ -32,7 +32,7 @@
target_pressure = MAX_OUTPUT_PRESSURE
investigate_log("was set to [target_pressure] kPa by [key_name(user)]", INVESTIGATE_ATMOS)
balloon_alert(user, "pressure output set to [target_pressure] kPa")
- update_icon()
+ update_appearance(updates = ALL)
return ..()
/obj/machinery/atmospherics/components/binary/pressure_valve/Destroy()
@@ -117,7 +117,7 @@
if(.)
target_pressure = clamp(pressure, 0, ONE_ATMOSPHERE*100)
investigate_log("was set to [target_pressure] kPa by [key_name(usr)]", INVESTIGATE_ATMOS)
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/atmospherics/components/binary/pressure_valve/atmosinit()
. = ..()
@@ -147,7 +147,7 @@
return
broadcast_status()
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/atmospherics/components/binary/pressure_valve/can_unwrench(mob/user)
. = ..()
diff --git a/code/modules/atmospherics/machinery/components/binary_devices/pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/pump.dm
index ef25ea72f46e..f2ea0c5c9517 100644
--- a/code/modules/atmospherics/machinery/components/binary_devices/pump.dm
+++ b/code/modules/atmospherics/machinery/components/binary_devices/pump.dm
@@ -30,7 +30,7 @@
/obj/machinery/atmospherics/components/binary/pump/CtrlClick(mob/user)
if(can_interact(user))
on = !on
- update_icon()
+ update_appearance(updates = ALL)
return ..()
/obj/machinery/atmospherics/components/binary/pump/AltClick(mob/user)
@@ -40,7 +40,7 @@
investigate_log(msg, INVESTIGATE_ATMOS)
investigate_log(msg, INVESTIGATE_SUPERMATTER) // yogs - makes supermatter invest useful
balloon_alert(user, "pressure output set to [target_pressure] kPa")
- update_icon()
+ update_appearance(updates = ALL)
return ..()
/obj/machinery/atmospherics/components/binary/pump/Destroy()
@@ -137,7 +137,7 @@
var/msg = "was set to [target_pressure] kPa by [key_name(usr)]"
investigate_log(msg, INVESTIGATE_ATMOS)
investigate_log(msg, INVESTIGATE_SUPERMATTER) // yogs - makes supermatter invest useful
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/atmospherics/components/binary/pump/atmosinit()
..()
@@ -168,7 +168,7 @@
return
broadcast_status()
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/atmospherics/components/binary/pump/can_unwrench(mob/user)
. = ..()
diff --git a/code/modules/atmospherics/machinery/components/binary_devices/temperature_gate.dm b/code/modules/atmospherics/machinery/components/binary_devices/temperature_gate.dm
index 88ccb2a6adc0..932fed89f4d2 100644
--- a/code/modules/atmospherics/machinery/components/binary_devices/temperature_gate.dm
+++ b/code/modules/atmospherics/machinery/components/binary_devices/temperature_gate.dm
@@ -23,7 +23,7 @@
if(can_interact(user))
on = !on
investigate_log("was turned [on ? "on" : "off"] by [key_name(user)]", INVESTIGATE_ATMOS)
- update_icon()
+ update_appearance(updates = ALL)
return ..()
/obj/machinery/atmospherics/components/binary/temperature_gate/AltClick(mob/user)
@@ -31,7 +31,7 @@
target_temperature = max_temperature
investigate_log("was set to [target_temperature] K by [key_name(user)]", INVESTIGATE_ATMOS)
balloon_alert(user, "target temperature set to [target_temperature] K")
- update_icon()
+ update_appearance(updates = ALL)
return ..()
@@ -109,7 +109,7 @@
if(.)
target_temperature = clamp(minimum_temperature, temperature, max_temperature)
investigate_log("was set to [target_temperature] K by [key_name(usr)]", INVESTIGATE_ATMOS)
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/atmospherics/components/binary/temperature_gate/can_unwrench(mob/user)
. = ..()
diff --git a/code/modules/atmospherics/machinery/components/binary_devices/temperature_pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/temperature_pump.dm
index 579fea954138..0574365adec8 100644
--- a/code/modules/atmospherics/machinery/components/binary_devices/temperature_pump.dm
+++ b/code/modules/atmospherics/machinery/components/binary_devices/temperature_pump.dm
@@ -18,7 +18,7 @@
if(can_interact(user))
on = !on
investigate_log("was turned [on ? "on" : "off"] by [key_name(user)]", INVESTIGATE_ATMOS)
- update_icon()
+ update_appearance(updates = ALL)
return ..()
/obj/machinery/atmospherics/components/binary/temperature_pump/AltClick(mob/user)
@@ -26,7 +26,7 @@
heat_transfer_rate = max_heat_transfer_rate
investigate_log("was set to [heat_transfer_rate]% by [key_name(user)]", INVESTIGATE_ATMOS)
balloon_alert(user, "transfer rate set to [heat_transfer_rate]%")
- update_icon()
+ update_appearance(updates = ALL)
return ..()
/obj/machinery/atmospherics/components/binary/temperature_pump/update_icon_nopipes()
@@ -94,4 +94,4 @@
if(.)
heat_transfer_rate = clamp(rate, 0, max_heat_transfer_rate)
investigate_log("was set to [heat_transfer_rate]% by [key_name(usr)]", INVESTIGATE_ATMOS)
- update_icon()
+ update_appearance(updates = ALL)
diff --git a/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm
index 04ca2b623e24..b75a4cce11b1 100644
--- a/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm
+++ b/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm
@@ -34,7 +34,7 @@
var/msg = "was turned [on ? "on" : "off"] by [key_name(usr)]"
investigate_log(msg, INVESTIGATE_ATMOS)
investigate_log(msg, INVESTIGATE_SUPERMATTER) // yogs - make supermatter invest useful
- update_icon()
+ update_appearance(updates = ALL)
return ..()
/obj/machinery/atmospherics/components/binary/volume_pump/AltClick(mob/user)
@@ -44,7 +44,7 @@
investigate_log(msg, INVESTIGATE_ATMOS)
investigate_log(msg, INVESTIGATE_SUPERMATTER) // yogs - make supermatter invest useful
balloon_alert(user, "volume output set to [transfer_rate] L/s")
- update_icon()
+ update_appearance(updates = ALL)
return ..()
/obj/machinery/atmospherics/components/binary/volume_pump/Destroy()
@@ -158,7 +158,7 @@
var/msg = "was set to [transfer_rate] L/s by [key_name(usr)]"
investigate_log(msg, INVESTIGATE_ATMOS)
investigate_log(msg, INVESTIGATE_SUPERMATTER) // yogs - make supermatter invest useful
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/atmospherics/components/binary/volume_pump/receive_signal(datum/signal/signal)
if(!signal.data["tag"] || (signal.data["tag"] != id) || (signal.data["sigtype"]!="command"))
@@ -185,7 +185,7 @@
return //do not update_icon
broadcast_status()
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/atmospherics/components/binary/volume_pump/can_unwrench(mob/user)
. = ..()
diff --git a/code/modules/atmospherics/machinery/components/components_base.dm b/code/modules/atmospherics/machinery/components/components_base.dm
index 184258760675..37d8b0333d19 100644
--- a/code/modules/atmospherics/machinery/components/components_base.dm
+++ b/code/modules/atmospherics/machinery/components/components_base.dm
@@ -24,7 +24,7 @@
/obj/machinery/atmospherics/components/proc/update_icon_nopipes()
return
-/obj/machinery/atmospherics/components/update_icon()
+/obj/machinery/atmospherics/components/update_appearance(updates = ALL)
update_icon_nopipes()
underlays.Cut()
diff --git a/code/modules/atmospherics/machinery/components/fusion/hfr_parts.dm b/code/modules/atmospherics/machinery/components/fusion/hfr_parts.dm
index 3c60597ff47e..f5896b78ac89 100644
--- a/code/modules/atmospherics/machinery/components/fusion/hfr_parts.dm
+++ b/code/modules/atmospherics/machinery/components/fusion/hfr_parts.dm
@@ -52,8 +52,7 @@
if(tool.use_tool(src, user, 10 SECONDS, volume=30, amount=5))
balloon_alert(user, "repaired")
cracked = FALSE
- update_icon()
- update_overlays()
+ update_appearance(updates = ALL)
/obj/machinery/atmospherics/components/unary/hypertorus/default_change_direction_wrench(mob/user, obj/item/I)
. = ..()
@@ -72,7 +71,7 @@
node.addMember(src)
SSair.add_to_rebuild_queue(src)
-/obj/machinery/atmospherics/components/unary/hypertorus/update_icon()
+/obj/machinery/atmospherics/components/unary/hypertorus/update_appearance(updates = ALL)
. = ..()
if(panel_open)
icon_state = icon_state_open
@@ -81,7 +80,7 @@
else
icon_state = icon_state_off
-/obj/machinery/atmospherics/components/unary/hypertorus/proc/update_overlays()
+/obj/machinery/atmospherics/components/unary/hypertorus/update_overlays()
if(!cracked)
return
@@ -153,7 +152,7 @@
return
return ..()
-/obj/machinery/hypertorus/update_icon()
+/obj/machinery/hypertorus/update_appearance(updates = ALL)
if(panel_open)
icon_state = icon_state_open
else if(active)
diff --git a/code/modules/atmospherics/machinery/components/fusion/hfr_procs.dm b/code/modules/atmospherics/machinery/components/fusion/hfr_procs.dm
index d3c98bc979c2..fa82b7e8f121 100644
--- a/code/modules/atmospherics/machinery/components/fusion/hfr_procs.dm
+++ b/code/modules/atmospherics/machinery/components/fusion/hfr_procs.dm
@@ -89,22 +89,22 @@
return
to_chat(user, span_notice("You link all parts toghether."))
active = TRUE
- update_icon()
+ update_appearance(updates = ALL)
linked_interface.active = TRUE
- linked_interface.update_icon()
+ linked_interface.update_appearance(updates = ALL)
RegisterSignal(linked_interface, COMSIG_PARENT_QDELETING, PROC_REF(unregister_signals))
linked_input.active = TRUE
- linked_input.update_icon()
+ linked_input.update_appearance(updates = ALL)
RegisterSignal(linked_input, COMSIG_PARENT_QDELETING, PROC_REF(unregister_signals))
linked_output.active = TRUE
- linked_output.update_icon()
+ linked_output.update_appearance(updates = ALL)
RegisterSignal(linked_output, COMSIG_PARENT_QDELETING, PROC_REF(unregister_signals))
linked_moderator.active = TRUE
- linked_moderator.update_icon()
+ linked_moderator.update_appearance(updates = ALL)
RegisterSignal(linked_moderator, COMSIG_PARENT_QDELETING, PROC_REF(unregister_signals))
for(var/obj/machinery/hypertorus/corner/corner in corners)
corner.active = TRUE
- corner.update_icon()
+ corner.update_appearance(updates = ALL)
RegisterSignal(corner, COMSIG_PARENT_QDELETING, PROC_REF(unregister_signals))
soundloop = new(list(src), TRUE)
soundloop.volume = 5
@@ -138,27 +138,27 @@
if(!active)
return
active = FALSE
- update_icon()
+ update_appearance(updates = ALL)
if(linked_interface)
linked_interface.active = FALSE
- linked_interface.update_icon()
+ linked_interface.update_appearance(updates = ALL)
linked_interface = null
if(linked_input)
linked_input.active = FALSE
- linked_input.update_icon()
+ linked_input.update_appearance(updates = ALL)
linked_input = null
if(linked_output)
linked_output.active = FALSE
- linked_output.update_icon()
+ linked_output.update_appearance(updates = ALL)
linked_output = null
if(linked_moderator)
linked_moderator.active = FALSE
- linked_moderator.update_icon()
+ linked_moderator.update_appearance(updates = ALL)
linked_moderator = null
if(corners.len)
for(var/obj/machinery/hypertorus/corner/corner in corners)
corner.active = FALSE
- corner.update_icon()
+ corner.update_appearance(updates = ALL)
corners = list()
QDEL_NULL(soundloop)
@@ -592,7 +592,7 @@
/obj/machinery/atmospherics/components/unary/hypertorus/core/proc/create_crack()
var/obj/machinery/atmospherics/components/unary/hypertorus/part = pick(machine_parts)
part.cracked = TRUE
- part.update_icon()
+ part.update_appearance(updates = ALL)
part.update_overlays()
return part
diff --git a/code/modules/atmospherics/machinery/components/gas_recipe_machines/crystallizer.dm b/code/modules/atmospherics/machinery/components/gas_recipe_machines/crystallizer.dm
index d3b1dfab1e01..f52d0f868b21 100644
--- a/code/modules/atmospherics/machinery/components/gas_recipe_machines/crystallizer.dm
+++ b/code/modules/atmospherics/machinery/components/gas_recipe_machines/crystallizer.dm
@@ -15,7 +15,7 @@
circuit = /obj/item/circuitboard/machine/crystallizer
pipe_flags = PIPING_ONE_PER_TURF| PIPING_DEFAULT_LAYER_ONLY
- ///Base icon state for the machine to be used in update_icon()
+ ///Base icon state for the machine to be used in update_appearance(updates = ALL)
var/base_icon = "crystallizer"
///Internal Gas mix used for processing the gases that have been put in
var/datum/gas_mixture/internal
@@ -79,12 +79,14 @@
SSair.add_to_rebuild_queue(src)
return TRUE
-/obj/machinery/atmospherics/components/binary/crystallizer/proc/update_overlays()
+/obj/machinery/atmospherics/components/binary/crystallizer/update_overlays()
+ . = ..()
cut_overlays()
add_overlay(getpipeimage(icon, "pipe", dir, COLOR_LIME, piping_layer))
add_overlay(getpipeimage(icon, "pipe", turn(dir, 180), COLOR_RED, piping_layer))
-/obj/machinery/atmospherics/components/binary/crystallizer/proc/update_icon_state()
+/obj/machinery/atmospherics/components/binary/crystallizer/update_icon_state()
+ . = ..()
if(panel_open)
icon_state = "[base_icon]-open"
else if(on)
@@ -92,7 +94,7 @@
else
icon_state = "[base_icon]-off"
-/obj/machinery/atmospherics/components/binary/crystallizer/update_icon()
+/obj/machinery/atmospherics/components/binary/crystallizer/update_appearance(updates = ALL)
. = ..()
update_icon_state()
update_overlays()
@@ -102,7 +104,7 @@
return
on = !on
investigate_log("was turned [on ? "on" : "off"] by [key_name(user)]", INVESTIGATE_ATMOS)
- update_icon()
+ update_appearance(updates = ALL)
///Checks if the gases in the input are the ones needed by the recipe
/obj/machinery/atmospherics/components/binary/crystallizer/proc/check_gas_requirements()
@@ -341,7 +343,7 @@
var/_gas_input = params["gas_input"]
gas_input = clamp(_gas_input, 0, max_gas_input)
investigate_log("was set to [gas_input] by [key_name(usr)]", INVESTIGATE_ATMOS)
- update_icon()
+ update_appearance(updates = ALL)
#undef MIN_PROGRESS_AMOUNT
#undef MIN_DEVIATION_RATE
diff --git a/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm b/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm
index 4794b303f08e..ec9322d4a703 100644
--- a/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm
+++ b/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm
@@ -21,7 +21,7 @@
var/msg = "was turned [on ? "on" : "off"] by [key_name(usr)]"
investigate_log(msg, INVESTIGATE_ATMOS)
investigate_log(msg, INVESTIGATE_SUPERMATTER) // yogs - make supermatter invest useful
- update_icon()
+ update_appearance(updates = ALL)
return ..()
/obj/machinery/atmospherics/components/trinary/filter/AltClick(mob/user)
@@ -31,7 +31,7 @@
investigate_log(msg, INVESTIGATE_ATMOS)
investigate_log(msg, INVESTIGATE_SUPERMATTER) // yogs - make supermatter invest useful
balloon_alert(user, "volume output set to [transfer_rate] L/s")
- update_icon()
+ update_appearance(updates = ALL)
return ..()
/obj/machinery/atmospherics/components/trinary/filter/proc/set_frequency(new_frequency)
@@ -44,7 +44,7 @@
SSradio.remove_object(src,frequency)
return ..()
-/obj/machinery/atmospherics/components/trinary/filter/update_icon()
+/obj/machinery/atmospherics/components/trinary/filter/update_appearance(updates = ALL)
cut_overlays()
for(var/direction in GLOB.cardinals)
if(!(direction & initialize_directions))
@@ -194,7 +194,7 @@
investigate_log(msg, INVESTIGATE_ATMOS)
investigate_log(msg, INVESTIGATE_SUPERMATTER) // yogs - make supermatter invest useful
. = TRUE
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/atmospherics/components/trinary/filter/can_unwrench(mob/user)
. = ..()
diff --git a/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm b/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm
index e1b4960217e9..fdbe577c0f6e 100644
--- a/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm
+++ b/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm
@@ -20,7 +20,7 @@
if(can_interact(user))
on = !on
investigate_log("was turned [on ? "on" : "off"] by [key_name(usr)]", INVESTIGATE_ATMOS)
- update_icon()
+ update_appearance(updates = ALL)
return ..()
/obj/machinery/atmospherics/components/trinary/mixer/AltClick(mob/user)
@@ -28,10 +28,10 @@
target_pressure = MAX_OUTPUT_PRESSURE
investigate_log("was set to [target_pressure] kPa by [key_name(usr)]", INVESTIGATE_ATMOS)
balloon_alert(user, "pressure output on set to [target_pressure] kPa")
- update_icon()
+ update_appearance(updates = ALL)
return ..()
-/obj/machinery/atmospherics/components/trinary/mixer/update_icon()
+/obj/machinery/atmospherics/components/trinary/mixer/update_appearance(updates = ALL)
cut_overlays()
for(var/direction in GLOB.cardinals)
if(!(direction & initialize_directions))
@@ -173,7 +173,7 @@
adjust_node1_value(100 - value)
investigate_log("was set to [node2_concentration] % on node 2 by [key_name(usr)]", INVESTIGATE_ATMOS)
. = TRUE
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/atmospherics/components/trinary/mixer/proc/adjust_node1_value(newValue)
node1_concentration = newValue / 100
diff --git a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm
index 46da9bb8a67d..8afe86d0eeca 100644
--- a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm
+++ b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm
@@ -54,7 +54,7 @@
var/oldoccupant = occupant
. = ..() // Parent proc takes care of removing occupant if necessary
if (AM == oldoccupant)
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/atmospherics/components/unary/cryo_cell/on_construction()
..(dir, dir)
@@ -102,7 +102,7 @@
beaker.forceMove(drop_location())
beaker = null
-/obj/machinery/atmospherics/components/unary/cryo_cell/update_icon()
+/obj/machinery/atmospherics/components/unary/cryo_cell/update_appearance(updates = ALL)
cut_overlays()
if(panel_open)
@@ -181,7 +181,7 @@
return
if(!is_operational())
on = FALSE
- update_icon()
+ update_appearance(updates = ALL)
return
if(!occupant)
return
@@ -198,7 +198,7 @@
playsound(src,'sound/machines/cryo_warning_ignore.ogg',60,1)
on = FALSE
sleep(0.2 SECONDS)// here for timing. Shuts off right at climax of the effect before falloff.
- update_icon()
+ update_appearance(updates = ALL)
return
var/robotic_limb_damage = 0 // brute and burn damage to robotic limbs
@@ -221,7 +221,7 @@
if(!treating_wounds)
on = FALSE
- update_icon()
+ update_appearance(updates = ALL)
playsound(src, 'sound/machines/cryo_warning.ogg', volume) // Bug the doctors.
var/msg = "Patient fully restored."
if(robotic_limb_damage)
@@ -270,7 +270,7 @@
if(!nodes[1] || !airs[1] || (air1.get_moles(/datum/gas/oxygen) < 5 && air1.get_moles(/datum/gas/pluoxium) < 5)) // Turn off if the machine won't work.
on = FALSE
- update_icon()
+ update_appearance(updates = ALL)
return
if(occupant)
@@ -310,7 +310,7 @@
var/mob/living/L = M
L.update_mobility()
occupant = null
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/atmospherics/components/unary/cryo_cell/close_machine(mob/living/carbon/user)
treating_wounds = FALSE
@@ -371,7 +371,7 @@
|| default_change_direction_wrench(user, I) \
|| default_pry_open(I) \
|| default_deconstruction_crowbar(I))
- update_icon()
+ update_appearance(updates = ALL)
return
else if(I.tool_behaviour == TOOL_SCREWDRIVER)
to_chat(user, "
You can't access the maintenance panel while the pod is " \
@@ -465,7 +465,7 @@
log_game("[key_name(usr)] removed an [beaker] to cryo containing [beaker.reagents.reagent_list]") // yogs -- Adds logging for when the beaker's removed from cryo
beaker = null
. = TRUE
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/atmospherics/components/unary/cryo_cell/update_remote_sight(mob/living/user)
return // we don't see the pipe network while inside cryo.
@@ -511,7 +511,7 @@
on = FALSE
else if(!state_open)
on = TRUE
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/atmospherics/components/unary/cryo_cell/AltClick(mob/user)
if(!user.canUseTopic(src, !issilicon(user)))
@@ -522,6 +522,6 @@
close_machine()
else
open_machine()
- update_icon()
+ update_appearance(updates = ALL)
#undef CRYOMOBS
diff --git a/code/modules/atmospherics/machinery/components/unary_devices/heat_exchanger.dm b/code/modules/atmospherics/machinery/components/unary_devices/heat_exchanger.dm
index 3cfca0993886..1ec97f060ac5 100644
--- a/code/modules/atmospherics/machinery/components/unary_devices/heat_exchanger.dm
+++ b/code/modules/atmospherics/machinery/components/unary_devices/heat_exchanger.dm
@@ -23,7 +23,7 @@
piping_layer = 4
icon_state = "he_map-4"
-/obj/machinery/atmospherics/components/unary/heat_exchanger/update_icon()
+/obj/machinery/atmospherics/components/unary/heat_exchanger/update_appearance(updates = ALL)
if(nodes[1])
icon_state = "he1"
var/obj/machinery/atmospherics/node = nodes[1]
diff --git a/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm b/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm
index f48524d90e3e..313d05644d0c 100644
--- a/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm
+++ b/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm
@@ -28,7 +28,7 @@
if(can_interact(user))
on = !on
investigate_log("was turned [on ? "on" : "off"] by [key_name(usr)]", INVESTIGATE_ATMOS)
- update_icon()
+ update_appearance(updates = ALL)
return ..()
/obj/machinery/atmospherics/components/unary/outlet_injector/AltClick(mob/user)
@@ -36,7 +36,7 @@
volume_rate = MAX_TRANSFER_RATE
investigate_log("was set to [volume_rate] L/s by [key_name(usr)]", INVESTIGATE_ATMOS)
balloon_alert(user, "volume output set to [volume_rate] L/s")
- update_icon()
+ update_appearance(updates = ALL)
return ..()
/obj/machinery/atmospherics/components/unary/outlet_injector/Destroy()
@@ -145,7 +145,7 @@
spawn(2)
broadcast_status()
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/atmospherics/components/unary/outlet_injector/ui_interact(mob/user, datum/tgui/ui)
@@ -185,7 +185,7 @@
if(.)
volume_rate = clamp(rate, 0, MAX_TRANSFER_RATE)
investigate_log("was set to [volume_rate] L/s by [key_name(usr)]", INVESTIGATE_ATMOS)
- update_icon()
+ update_appearance(updates = ALL)
broadcast_status()
/obj/machinery/atmospherics/components/unary/outlet_injector/can_unwrench(mob/user)
@@ -199,7 +199,7 @@
return
on = !on
investigate_log("was turned [on ? "on" : "off"] by [key_name(usr)]", INVESTIGATE_ATMOS)
- update_icon()
+ update_appearance(updates = ALL)
// mapping
diff --git a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm
index 801f7a4b2fcf..13df8015809a 100644
--- a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm
+++ b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm
@@ -39,7 +39,7 @@
B += M.rating
heat_capacity = 5000 * ((B - 1) ** 2)
-/obj/machinery/atmospherics/components/unary/thermomachine/update_icon()
+/obj/machinery/atmospherics/components/unary/thermomachine/update_appearance(updates = ALL)
cut_overlays()
if(panel_open)
@@ -68,7 +68,7 @@
if(can_interact(user))
on = !on
investigate_log("was turned [on ? "on" : "off"] by [key_name(usr)]", INVESTIGATE_ATMOS)
- update_icon()
+ update_appearance(updates = ALL)
return ..()
/obj/machinery/atmospherics/components/unary/thermomachine/AltClick(mob/living/user)
@@ -183,7 +183,7 @@
target_temperature = clamp(target, min_temperature, max_temperature)
investigate_log("was set to [target_temperature] K by [key_name(usr)]", INVESTIGATE_ATMOS)
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/atmospherics/components/unary/thermomachine/freezer
name = "freezer"
diff --git a/code/modules/atmospherics/machinery/components/unary_devices/unary_devices.dm b/code/modules/atmospherics/machinery/components/unary_devices/unary_devices.dm
index e095517775f1..d5ca80df352d 100644
--- a/code/modules/atmospherics/machinery/components/unary_devices/unary_devices.dm
+++ b/code/modules/atmospherics/machinery/components/unary_devices/unary_devices.dm
@@ -18,10 +18,10 @@
/obj/machinery/atmospherics/components/unary/on_construction()
..()
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/atmospherics/components/unary/hide(intact)
- update_icon()
+ update_appearance(updates = ALL)
..(intact)
/obj/machinery/atmospherics/components/unary/proc/assign_uid_vents()
diff --git a/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm b/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm
index c61b24eabb59..27d1d148bfcd 100644
--- a/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm
+++ b/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm
@@ -119,7 +119,7 @@
space_shutoff_ticks--
if(space_shutoff_ticks <= 1 && !on)
on = TRUE
- update_icon()
+ update_appearance(updates = ALL)
if(!nodes[1])
on = FALSE
if(!on || welded)
@@ -137,7 +137,7 @@
last_moles_added = 0
on = FALSE
space_shutoff_ticks = 20 // shut off for about 20 seconds before trying again.
- update_icon()
+ update_appearance(updates = ALL)
return
if(pump_direction & RELEASING) // internal -> external
@@ -302,7 +302,7 @@
// log_admin("DEBUG \[[world.timeofday]\]: vent_pump/receive_signal: unknown command \"[signal.data["command"]]\"\n[signal.debug_print()]")
broadcast_status()
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/atmospherics/components/unary/vent_pump/welder_act(mob/living/user, obj/item/I)
if(!I.tool_start_check(user, amount=0))
@@ -315,7 +315,7 @@
else
user.visible_message("[user] unwelded the vent.", span_notice("You unweld the vent."), span_italics("You hear welding."))
welded = FALSE
- update_icon()
+ update_appearance(updates = ALL)
pipe_vision_img = image(src, loc, layer = ABOVE_HUD_LAYER, dir = dir)
pipe_vision_img.plane = ABOVE_HUD_PLANE
investigate_log("was [welded ? "welded shut" : "unwelded"] by [key_name(user)]", INVESTIGATE_ATMOS)
@@ -345,7 +345,7 @@
return
user.visible_message("[user] furiously claws at [src]!", "You manage to clear away the stuff blocking the vent", "You hear loud scraping noises.")
welded = FALSE
- update_icon()
+ update_appearance(updates = ALL)
pipe_vision_img = image(src, loc, layer = ABOVE_HUD_LAYER, dir = dir)
pipe_vision_img.plane = ABOVE_HUD_PLANE
playsound(loc, 'sound/weapons/bladeslice.ogg', 100, 1)
diff --git a/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm b/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm
index bca6f49eeb7c..568dcc0ffe76 100644
--- a/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm
+++ b/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm
@@ -243,7 +243,7 @@
return //do not update_icon
broadcast_status()
- update_icon()
+ update_appearance(updates = ALL)
return
/obj/machinery/atmospherics/components/unary/vent_scrubber/power_change()
@@ -261,7 +261,7 @@
else
user.visible_message("[user] unwelds the scrubber.", "You unweld the scrubber.", "You hear welding.")
welded = FALSE
- update_icon()
+ update_appearance(updates = ALL)
pipe_vision_img = image(src, loc, layer = ABOVE_HUD_LAYER, dir = dir)
pipe_vision_img.plane = ABOVE_HUD_PLANE
investigate_log("was [welded ? "welded shut" : "unwelded"] by [key_name(user)]", INVESTIGATE_ATMOS)
@@ -287,7 +287,7 @@
return
user.visible_message("[user] furiously claws at [src]!", "You manage to clear away the stuff blocking the scrubber.", "You hear loud scraping noises.")
welded = FALSE
- update_icon()
+ update_appearance(updates = ALL)
pipe_vision_img = image(src, loc, layer = ABOVE_HUD_LAYER, dir = dir)
pipe_vision_img.plane = ABOVE_HUD_PLANE
playsound(loc, 'sound/weapons/bladeslice.ogg', 100, 1)
diff --git a/code/modules/atmospherics/machinery/other/miner.dm b/code/modules/atmospherics/machinery/other/miner.dm
index db6cb5682a06..9a13e351930e 100644
--- a/code/modules/atmospherics/machinery/other/miner.dm
+++ b/code/modules/atmospherics/machinery/other/miner.dm
@@ -71,12 +71,12 @@
/obj/machinery/atmospherics/miner/proc/set_active(setting)
if(active != setting)
active = setting
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/atmospherics/miner/proc/set_broken(setting)
if(broken != setting)
broken = setting
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/atmospherics/miner/proc/update_power()
if(!active)
@@ -108,7 +108,7 @@
return TRUE
return FALSE
-/obj/machinery/atmospherics/miner/update_icon()
+/obj/machinery/atmospherics/miner/update_appearance(updates = ALL)
cut_overlays()
if(broken)
add_overlay("broken")
diff --git a/code/modules/atmospherics/machinery/pipes/heat_exchange/junction.dm b/code/modules/atmospherics/machinery/pipes/heat_exchange/junction.dm
index 10b8fff66ae3..e7dd1a664de5 100644
--- a/code/modules/atmospherics/machinery/pipes/heat_exchange/junction.dm
+++ b/code/modules/atmospherics/machinery/pipes/heat_exchange/junction.dm
@@ -30,7 +30,7 @@
return ..(target, given_layer, FALSE) //we want a normal pipe instead
return ..(target, given_layer, TRUE)
-/obj/machinery/atmospherics/pipe/heat_exchanging/junction/update_icon()
+/obj/machinery/atmospherics/pipe/heat_exchanging/junction/update_appearance(updates = ALL)
icon_state = "pipe[nodes[1] ? "1" : "0"][nodes[2] ? "1" : "0"]-[piping_layer]"
update_layer()
update_alpha()
diff --git a/code/modules/atmospherics/machinery/pipes/heat_exchange/manifold.dm b/code/modules/atmospherics/machinery/pipes/heat_exchange/manifold.dm
index ab63bddb6a14..753261b4c46d 100644
--- a/code/modules/atmospherics/machinery/pipes/heat_exchange/manifold.dm
+++ b/code/modules/atmospherics/machinery/pipes/heat_exchange/manifold.dm
@@ -26,7 +26,7 @@
initialize_directions = NORTH|SOUTH|EAST|WEST
initialize_directions &= ~dir
-/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/update_icon()
+/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/update_appearance(updates = ALL)
cut_overlays()
PIPING_LAYER_DOUBLE_SHIFT(center, piping_layer)
diff --git a/code/modules/atmospherics/machinery/pipes/heat_exchange/manifold4w.dm b/code/modules/atmospherics/machinery/pipes/heat_exchange/manifold4w.dm
index fddd9ea8b079..64bbf3cf97e2 100644
--- a/code/modules/atmospherics/machinery/pipes/heat_exchange/manifold4w.dm
+++ b/code/modules/atmospherics/machinery/pipes/heat_exchange/manifold4w.dm
@@ -24,7 +24,7 @@
/obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w/SetInitDirections()
initialize_directions = initial(initialize_directions)
-/obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w/update_icon()
+/obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w/update_appearance(updates = ALL)
cut_overlays()
PIPING_LAYER_DOUBLE_SHIFT(center, piping_layer)
diff --git a/code/modules/atmospherics/machinery/pipes/heat_exchange/simple.dm b/code/modules/atmospherics/machinery/pipes/heat_exchange/simple.dm
index fd013e11bd36..417bfb58740a 100644
--- a/code/modules/atmospherics/machinery/pipes/heat_exchange/simple.dm
+++ b/code/modules/atmospherics/machinery/pipes/heat_exchange/simple.dm
@@ -24,7 +24,7 @@
if(EAST, WEST)
initialize_directions = EAST|WEST
-/obj/machinery/atmospherics/pipe/heat_exchanging/simple/update_icon()
+/obj/machinery/atmospherics/pipe/heat_exchanging/simple/update_appearance(updates = ALL)
icon_state = "pipe[nodes[1] ? "1" : "0"][nodes[2] ? "1" : "0"]-[piping_layer]"
update_layer()
update_alpha()
diff --git a/code/modules/atmospherics/machinery/pipes/layermanifold.dm b/code/modules/atmospherics/machinery/pipes/layermanifold.dm
index 00285a5f77d1..a5d87004970a 100644
--- a/code/modules/atmospherics/machinery/pipes/layermanifold.dm
+++ b/code/modules/atmospherics/machinery/pipes/layermanifold.dm
@@ -42,7 +42,7 @@
/obj/machinery/atmospherics/pipe/layer_manifold/proc/get_all_connected_nodes()
return front_nodes + back_nodes + nodes
-/obj/machinery/atmospherics/pipe/layer_manifold/update_icon() //HEAVILY WIP FOR UPDATE ICONS!!
+/obj/machinery/atmospherics/pipe/layer_manifold/update_appearance(updates = ALL) //HEAVILY WIP FOR UPDATE ICONS!!
cut_overlays()
layer = initial(layer) + (PIPING_LAYER_MAX * PIPING_LAYER_LCHANGE) //This is above everything else.
@@ -99,7 +99,7 @@
new_nodes += foundfront
if(foundback && !QDELETED(foundback))
new_nodes += foundback
- update_icon()
+ update_appearance(updates = ALL)
return new_nodes
/obj/machinery/atmospherics/pipe/layer_manifold/atmosinit()
@@ -128,7 +128,7 @@
if(reference in back_nodes)
var/i = back_nodes.Find(reference)
back_nodes[i] = null
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/atmospherics/pipe/layer_manifold/relaymove(mob/living/user, dir)
if(initialize_directions & dir)
diff --git a/code/modules/atmospherics/machinery/pipes/manifold.dm b/code/modules/atmospherics/machinery/pipes/manifold.dm
index 7e1464138d0f..5738b5cef2c3 100644
--- a/code/modules/atmospherics/machinery/pipes/manifold.dm
+++ b/code/modules/atmospherics/machinery/pipes/manifold.dm
@@ -22,7 +22,7 @@
var/mutable_appearance/center
-/* We use New() instead of Initialize() because these values are used in update_icon()
+/* We use New() instead of Initialize() because these values are used in update_appearance(updates = ALL)
* in the mapping subsystem init before Initialize() is called in the atoms subsystem init.
* This is true for the other manifolds (the 4 ways and the heat exchanges) too.
*/
@@ -35,7 +35,7 @@
initialize_directions = NORTH|SOUTH|EAST|WEST
initialize_directions &= ~dir
-/obj/machinery/atmospherics/pipe/manifold/update_icon()
+/obj/machinery/atmospherics/pipe/manifold/update_appearance(updates = ALL)
cut_overlays()
if(!center)
center = mutable_appearance(icon, "manifold_center")
diff --git a/code/modules/atmospherics/machinery/pipes/manifold4w.dm b/code/modules/atmospherics/machinery/pipes/manifold4w.dm
index 75aa68046046..e5802bd39baa 100644
--- a/code/modules/atmospherics/machinery/pipes/manifold4w.dm
+++ b/code/modules/atmospherics/machinery/pipes/manifold4w.dm
@@ -29,7 +29,7 @@
/obj/machinery/atmospherics/pipe/manifold4w/SetInitDirections()
initialize_directions = initial(initialize_directions)
-/obj/machinery/atmospherics/pipe/manifold4w/update_icon()
+/obj/machinery/atmospherics/pipe/manifold4w/update_appearance(updates = ALL)
cut_overlays()
if(!center)
center = mutable_appearance(icon, "manifold_center")
diff --git a/code/modules/atmospherics/machinery/pipes/pipes.dm b/code/modules/atmospherics/machinery/pipes/pipes.dm
index 2d9dfc0b4a13..cda15529ac54 100644
--- a/code/modules/atmospherics/machinery/pipes/pipes.dm
+++ b/code/modules/atmospherics/machinery/pipes/pipes.dm
@@ -45,7 +45,7 @@
/obj/machinery/atmospherics/pipe/hide(i)
if(level == 1 && isturf(loc))
invisibility = i ? INVISIBILITY_MAXIMUM : 0
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/atmospherics/pipe/proc/releaseAirToTurf()
if(air_temporary)
@@ -98,7 +98,7 @@
qdel(meter)
. = ..()
-/obj/machinery/atmospherics/pipe/update_icon()
+/obj/machinery/atmospherics/pipe/update_appearance(updates = ALL)
. = ..()
update_alpha()
@@ -109,7 +109,7 @@
for(var/i in 1 to device_type)
if(nodes[i])
var/obj/machinery/atmospherics/N = nodes[i]
- N.update_icon()
+ N.update_appearance(updates = ALL)
/obj/machinery/atmospherics/pipe/return_pipenets()
. = list(parent)
diff --git a/code/modules/atmospherics/machinery/pipes/simple.dm b/code/modules/atmospherics/machinery/pipes/simple.dm
index 00d24cebda5e..db30a39d3442 100644
--- a/code/modules/atmospherics/machinery/pipes/simple.dm
+++ b/code/modules/atmospherics/machinery/pipes/simple.dm
@@ -32,7 +32,7 @@
if(EAST, WEST)
initialize_directions = EAST|WEST
-/obj/machinery/atmospherics/pipe/simple/update_icon()
+/obj/machinery/atmospherics/pipe/simple/update_appearance(updates = ALL)
icon_state = "pipe[nodes[1] ? "1" : "0"][nodes[2] ? "1" : "0"]-[piping_layer]"
update_layer()
update_alpha()
diff --git a/code/modules/atmospherics/machinery/portable/canister.dm b/code/modules/atmospherics/machinery/portable/canister.dm
index 5ff4b2868fa0..e6e5f6e6cf2b 100644
--- a/code/modules/atmospherics/machinery/portable/canister.dm
+++ b/code/modules/atmospherics/machinery/portable/canister.dm
@@ -234,7 +234,7 @@
timing = !timing
if(timing)
valve_timer = world.time + (timer_set * 10)
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/portable_atmospherics/canister/proto
name = "prototype canister"
@@ -272,7 +272,7 @@
/obj/machinery/portable_atmospherics/canister/Initialize()
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/portable_atmospherics/canister/Destroy()
qdel(pump)
@@ -306,7 +306,7 @@
#define CANISTER_LIGHT_RANGE 0.4
#define CANISTER_LIGHT_POWER 0.5
-/obj/machinery/portable_atmospherics/canister/update_icon()
+/obj/machinery/portable_atmospherics/canister/update_appearance(updates = ALL)
if(stat & BROKEN)
cut_overlays()
SSvis_overlays.remove_vis_overlay(src, managed_vis_overlays)
@@ -474,7 +474,7 @@
if(.)
if(close_valve)
valve_open = FALSE
- update_icon()
+ update_appearance(updates = ALL)
investigate_log("Valve was closed by [key_name(user)].
", INVESTIGATE_ATMOS)
else if(valve_open && holding)
investigate_log("[key_name(user)] started a transfer into [holding].
", INVESTIGATE_ATMOS)
@@ -499,7 +499,7 @@
pump.airs[1] = null
pump.airs[2] = null
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/portable_atmospherics/canister/ui_state(mob/user)
return GLOB.physical_state
@@ -645,7 +645,7 @@
investigate_log("[key_name(usr)] removed the [holding], leaving the valve open and transferring into the [span_boldannounce("air")].", INVESTIGATE_ATMOS)
replace_tank(usr, FALSE)
. = TRUE
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/portable_atmospherics/canister/examine(mob/dead/observer/user)
if(istype(user))
diff --git a/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm b/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm
index 6651e9376774..d7122f4162e6 100644
--- a/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm
+++ b/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm
@@ -70,7 +70,7 @@
anchored = TRUE //Prevent movement
pixel_x = new_port.pixel_x
pixel_y = new_port.pixel_y
- update_icon()
+ update_appearance(updates = ALL)
return TRUE
/obj/machinery/portable_atmospherics/Move()
@@ -86,7 +86,7 @@
connected_port = null
pixel_x = 0
pixel_y = 0
- update_icon()
+ update_appearance(updates = ALL)
return TRUE
/obj/machinery/portable_atmospherics/AltClick(mob/living/user)
@@ -111,7 +111,7 @@
holding = new_tank
else
holding = null
- update_icon()
+ update_appearance(updates = ALL)
return TRUE
/obj/machinery/portable_atmospherics/attackby(obj/item/W, mob/user, params)
@@ -122,7 +122,7 @@
return
to_chat(user, span_notice("[holding ? "In one smooth motion you pop [holding] out of [src]'s connector and replace it with [T]" : "You insert [T] into [src]"]."))
replace_tank(user, FALSE, T)
- update_icon()
+ update_appearance(updates = ALL)
else if(W.tool_behaviour == TOOL_WRENCH)
if(!(stat & BROKEN))
if(connected_port)
@@ -132,7 +132,7 @@
"[user] disconnects [src].", \
span_notice("You unfasten [src] from the port."), \
span_italics("You hear a ratchet."))
- update_icon()
+ update_appearance(updates = ALL)
return
else
var/obj/machinery/atmospherics/components/unary/portables_connector/possible_port = locate(/obj/machinery/atmospherics/components/unary/portables_connector) in loc
@@ -147,7 +147,7 @@
"[user] connects [src].", \
span_notice("You fasten [src] to the port."), \
span_italics("You hear a ratchet."))
- update_icon()
+ update_appearance(updates = ALL)
else
return ..()
diff --git a/code/modules/atmospherics/machinery/portable/pump.dm b/code/modules/atmospherics/machinery/portable/pump.dm
index 14a413defbf2..b3b5c4263302 100644
--- a/code/modules/atmospherics/machinery/portable/pump.dm
+++ b/code/modules/atmospherics/machinery/portable/pump.dm
@@ -29,7 +29,7 @@
QDEL_NULL(pump)
return ..()
-/obj/machinery/portable_atmospherics/pump/update_icon()
+/obj/machinery/portable_atmospherics/pump/update_appearance(updates = ALL)
icon_state = "psiphon:[on]"
cut_overlays()
@@ -67,7 +67,7 @@
if(prob(100 / severity))
direction = PUMP_OUT
pump.target_pressure = rand(0, 100 * ONE_ATMOSPHERE)
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/portable_atmospherics/pump/replace_tank(mob/living/user, close_valve)
. = ..()
@@ -75,7 +75,7 @@
if(close_valve)
if(on)
on = FALSE
- update_icon()
+ update_appearance(updates = ALL)
else if(on && holding && direction == PUMP_OUT)
investigate_log("[key_name(user)] started a transfer into [holding].
", INVESTIGATE_ATMOS)
@@ -153,10 +153,10 @@
if(holding)
replace_tank(usr, FALSE)
. = TRUE
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/portable_atmospherics/pump/CtrlShiftClick(mob/user)
if(!user.canUseTopic(src, BE_CLOSE))
return
on = !on
- update_icon()
+ update_appearance(updates = ALL)
diff --git a/code/modules/atmospherics/machinery/portable/scrubber.dm b/code/modules/atmospherics/machinery/portable/scrubber.dm
index 692412c4b944..7c0f036e20cf 100644
--- a/code/modules/atmospherics/machinery/portable/scrubber.dm
+++ b/code/modules/atmospherics/machinery/portable/scrubber.dm
@@ -36,7 +36,7 @@
air_update_turf()
return ..()
-/obj/machinery/portable_atmospherics/scrubber/update_icon()
+/obj/machinery/portable_atmospherics/scrubber/update_appearance(updates = ALL)
icon_state = "pscrubber:[on]"
cut_overlays()
@@ -79,7 +79,7 @@
if(is_operational())
if(prob(50 / severity))
on = !on
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/portable_atmospherics/scrubber/ui_interact(mob/user, datum/tgui/ui)
ui = SStgui.try_update_ui(user, src, ui)
@@ -113,7 +113,7 @@
if(close_valve)
if(on)
on = FALSE
- update_icon()
+ update_appearance(updates = ALL)
else if(on && holding)
investigate_log("[key_name(user)] started a transfer into [holding].
", INVESTIGATE_ATMOS)
@@ -131,7 +131,7 @@
if("toggle_filter")
scrubbing ^= gas_id2path(params["val"])
. = TRUE
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/portable_atmospherics/scrubber/huge
name = "huge air scrubber"
@@ -149,13 +149,13 @@
/obj/machinery/portable_atmospherics/scrubber/huge/movable
movable = TRUE
-/obj/machinery/portable_atmospherics/scrubber/huge/update_icon()
+/obj/machinery/portable_atmospherics/scrubber/huge/update_appearance(updates = ALL)
icon_state = "scrubber:[on]"
/obj/machinery/portable_atmospherics/scrubber/huge/process_atmos()
if((!anchored && !movable) || !is_operational())
on = FALSE
- update_icon()
+ update_appearance(updates = ALL)
use_power = on ? ACTIVE_POWER_USE : IDLE_POWER_USE
if(!on)
return
@@ -176,4 +176,4 @@
if(!user.canUseTopic(src, BE_CLOSE))
return
on = !on
- update_icon()
+ update_appearance(updates = ALL)
diff --git a/code/modules/awaymissions/gateway.dm b/code/modules/awaymissions/gateway.dm
index bb9b2081180f..49c9ff4ddf81 100644
--- a/code/modules/awaymissions/gateway.dm
+++ b/code/modules/awaymissions/gateway.dm
@@ -16,7 +16,7 @@ GLOBAL_DATUM(the_gateway, /obj/machinery/gateway/centerstation)
/obj/machinery/gateway/Initialize()
randomspawns = GLOB.awaydestinations
- update_icon()
+ update_appearance(updates = ALL)
if(!istype(src, /obj/machinery/gateway/centerstation) && !istype(src, /obj/machinery/gateway/centeraway))
switch(dir)
if(SOUTH,SOUTHEAST,SOUTHWEST)
@@ -26,9 +26,9 @@ GLOBAL_DATUM(the_gateway, /obj/machinery/gateway/centerstation)
/obj/machinery/gateway/proc/toggleoff()
for(var/obj/machinery/gateway/G in linked)
G.active = 0
- G.update_icon()
+ G.update_appearance(updates = ALL)
active = 0
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/gateway/proc/detect()
if(!can_link)
@@ -53,7 +53,7 @@ GLOBAL_DATUM(the_gateway, /obj/machinery/gateway/centerstation)
ready = TRUE
return ready
-/obj/machinery/gateway/update_icon()
+/obj/machinery/gateway/update_appearance(updates = ALL)
if(active)
icon_state = "on"
return
@@ -80,7 +80,7 @@ GLOBAL_DATUM(the_gateway, /obj/machinery/gateway/centerstation)
. = ..()
if(!GLOB.the_gateway)
GLOB.the_gateway = src
- update_icon()
+ update_appearance(updates = ALL)
wait = world.time + CONFIG_GET(number/gateway_delay) //+ thirty minutes default
awaygate = locate(/obj/machinery/gateway/centeraway)
@@ -100,7 +100,7 @@ GLOBAL_DATUM(the_gateway, /obj/machinery/gateway/centerstation)
var/obj/machinery/gateway/centeraway/awaygate = null
can_link = TRUE
-/obj/machinery/gateway/centerstation/update_icon()
+/obj/machinery/gateway/centerstation/update_appearance(updates = ALL)
if(active)
icon_state = "oncenter"
return
@@ -129,9 +129,9 @@ GLOBAL_DATUM(the_gateway, /obj/machinery/gateway/centerstation)
for(var/obj/machinery/gateway/G in linked)
G.active = 1
- G.update_icon()
+ G.update_appearance(updates = ALL)
active = 1
- update_icon()
+ update_appearance(updates = ALL)
//okay, here's the good teleporting stuff
/obj/machinery/gateway/centerstation/Bumped(atom/movable/AM)
@@ -179,11 +179,11 @@ GLOBAL_DATUM(the_gateway, /obj/machinery/gateway/centerstation)
/obj/machinery/gateway/centeraway/Initialize()
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
stationgate = locate(/obj/machinery/gateway/centerstation)
-/obj/machinery/gateway/centeraway/update_icon()
+/obj/machinery/gateway/centeraway/update_appearance(updates = ALL)
if(active)
icon_state = "oncenter"
return
@@ -198,9 +198,9 @@ GLOBAL_DATUM(the_gateway, /obj/machinery/gateway/centerstation)
for(var/obj/machinery/gateway/G in linked)
G.active = 1
- G.update_icon()
+ G.update_appearance(updates = ALL)
active = 1
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/gateway/centeraway/proc/check_exile_implant(mob/living/L)
for(var/obj/item/implant/exile/E in L.implants)//Checking that there is an exile implant
@@ -250,4 +250,4 @@ GLOBAL_DATUM(the_gateway, /obj/machinery/gateway/centerstation)
/obj/item/paper/fluff/gateway
info = "Congratulations,
Your station has been selected to carry out the Gateway Project.
The equipment will be shipped to you at the start of the next quarter.
You are to prepare a secure location to house the equipment as outlined in the attached documents.
--Nanotrasen Bluespace Research"
- name = "Confidential Correspondence, Pg 1"
\ No newline at end of file
+ name = "Confidential Correspondence, Pg 1"
diff --git a/code/modules/awaymissions/mission_code/Academy.dm b/code/modules/awaymissions/mission_code/Academy.dm
index 38ebc62e93b6..b69c9a8f7e90 100644
--- a/code/modules/awaymissions/mission_code/Academy.dm
+++ b/code/modules/awaymissions/mission_code/Academy.dm
@@ -413,8 +413,9 @@
icon_state = "1"
color = rgb(0,0,255)
-/obj/structure/ladder/unbreakable/rune/update_icon()
- return
+/obj/structure/ladder/unbreakable/rune/Initialize(mapload)
+ AddElement(/datum/element/update_icon_blocker)
+ return ..()
/obj/structure/ladder/unbreakable/rune/show_fluff_message(up,mob/user)
user.visible_message("[user] activates \the [src].",span_notice("You activate \the [src]."))
diff --git a/code/modules/awaymissions/pamphlet.dm b/code/modules/awaymissions/pamphlet.dm
index 7cbbde096d6e..b28f517ea93b 100644
--- a/code/modules/awaymissions/pamphlet.dm
+++ b/code/modules/awaymissions/pamphlet.dm
@@ -35,5 +35,6 @@
environs."
//we don't want the silly text overlay!
-/obj/item/paper/pamphlet/update_icon()
- return
+/obj/item/paper/pamphlet/Initialize(mapload)
+ AddElement(/datum/element/update_icon_blocker)
+ return ..()
diff --git a/code/modules/buildmode/buildmode.dm b/code/modules/buildmode/buildmode.dm
index a65843e618e0..02a0e42e4b08 100644
--- a/code/modules/buildmode/buildmode.dm
+++ b/code/modules/buildmode/buildmode.dm
@@ -134,12 +134,12 @@
close_switchstates()
mode = new newmode(src)
mode.enter_mode(src)
- modebutton.update_icon()
+ modebutton.update_appearance(updates = ALL)
/datum/buildmode/proc/change_dir(newdir)
build_dir = newdir
close_dirswitch()
- dirbutton.update_icon()
+ dirbutton.update_appearance(updates = ALL)
return 1
/datum/buildmode/proc/InterceptClickOn(mob/user, params, atom/object)
diff --git a/code/modules/buildmode/buttons.dm b/code/modules/buildmode/buttons.dm
index a60f105f8321..00df1eabbd25 100644
--- a/code/modules/buildmode/buttons.dm
+++ b/code/modules/buildmode/buttons.dm
@@ -24,10 +24,10 @@
bd.toggle_modeswitch()
else if(pa.Find("right"))
bd.mode.change_settings(usr.client)
- update_icon()
+ update_appearance(updates = ALL)
return 1
-/atom/movable/screen/buildmode/mode/update_icon()
+/atom/movable/screen/buildmode/mode/update_appearance(updates = ALL)
if(bd && bd.mode)
icon_state = bd.mode.get_button_iconstate()
else
@@ -47,13 +47,13 @@
screen_loc = "NORTH,WEST+2"
name = "Change Dir"
-/atom/movable/screen/buildmode/bdir/update_icon()
+/atom/movable/screen/buildmode/bdir/update_appearance(updates = ALL)
dir = bd.build_dir
return
/atom/movable/screen/buildmode/bdir/Click()
bd.toggle_dirswitch()
- update_icon()
+ update_appearance(updates = ALL)
return 1
// used to switch between modes
diff --git a/code/modules/cargo/bounty_console.dm b/code/modules/cargo/bounty_console.dm
index 6a2e47dd4d7e..01b912aa147b 100644
--- a/code/modules/cargo/bounty_console.dm
+++ b/code/modules/cargo/bounty_console.dm
@@ -23,7 +23,7 @@
/obj/item/paper/bounty_printout/Initialize()
. = ..()
info = "Nanotrasen Cargo Bounties
"
- update_icon()
+ update_appearance(updates = ALL)
for(var/datum/bounty/B in GLOB.bounties_list)
if(B.claimed)
continue
diff --git a/code/modules/cargo/centcom_podlauncher.dm b/code/modules/cargo/centcom_podlauncher.dm
index 4ceb0113c062..0567513a7f58 100644
--- a/code/modules/cargo/centcom_podlauncher.dm
+++ b/code/modules/cargo/centcom_podlauncher.dm
@@ -714,7 +714,7 @@
if (isnull(target_turf))
return
var/obj/structure/closet/supplypod/centcompod/toLaunch = DuplicateObject(temp_pod) //Duplicate the temp_pod (which we have been varediting or configuring with the UI) and store the result
- toLaunch.update_icon()//we update_icon() here so that the door doesnt "flicker on" right after it lands
+ toLaunch.update_appearance(updates = ALL)//we update_appearance(updates = ALL) here so that the door doesnt "flicker on" right after it lands
var/shippingLane = GLOB.areas_by_type[/area/centcom/supplypod/podStorage]
toLaunch.forceMove(shippingLane)
if (launchClone) //We arent launching the actual items from the bay, rather we are creating clones and launching those
diff --git a/code/modules/cargo/expressconsole.dm b/code/modules/cargo/expressconsole.dm
index 785c55fb3f9e..06536b1cac3c 100644
--- a/code/modules/cargo/expressconsole.dm
+++ b/code/modules/cargo/expressconsole.dm
@@ -192,7 +192,7 @@
. = TRUE
message_admins("[ADMIN_LOOKUPFLW(usr)] has ordered a [SO.pack.name] pod at location [ADMIN_VERBOSEJMP(LZ)]")
investigate_log("Order #[SO.id] ([SO.pack.name], placed by [key_name(SO.orderer_ckey)]), paid by [D.account_holder] has shipped.", INVESTIGATE_CARGO)
- update_icon()
+ update_appearance(updates = ALL)
else
if(SO.pack.get_cost() * (0.72*MAX_EMAG_ROCKETS) <= points_to_check) // bulk discount :^)
landingzone = GLOB.areas_by_type[pick(GLOB.the_station_areas)] //override default landing zone
@@ -212,7 +212,7 @@
new /obj/effect/DPtarget(LZ, podType, SO)
amountordered++
. = TRUE
- update_icon()
+ update_appearance(updates = ALL)
CHECK_TICK
message_admins("[ADMIN_LOOKUPFLW(usr)] has ordered a [SO.pack.name] pod x[amountordered] at location [ADMIN_VERBOSEJMP(LZ)]")
investigate_log("Order #[SO.id] ([SO.pack.name] x[amountordered], placed by [key_name(SO.orderer_ckey)]), paid by [D.account_holder] has shipped.", INVESTIGATE_CARGO)
diff --git a/code/modules/cargo/gondolapod.dm b/code/modules/cargo/gondolapod.dm
index 226f430292a4..97ce697bf3f5 100644
--- a/code/modules/cargo/gondolapod.dm
+++ b/code/modules/cargo/gondolapod.dm
@@ -29,7 +29,7 @@
name = linked_pod.name
. = ..()
-/mob/living/simple_animal/pet/gondola/gondolapod/proc/update_icon()
+/mob/living/simple_animal/pet/gondola/gondolapod/update_appearance(updates = ALL)
if(opened)
icon_state = "gondolapod_open"
else
@@ -60,12 +60,12 @@
/mob/living/simple_animal/pet/gondola/gondolapod/setOpened()
opened = TRUE
- update_icon()
+ update_appearance(updates = ALL)
addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, setClosed)), 50)
/mob/living/simple_animal/pet/gondola/gondolapod/setClosed()
opened = FALSE
- update_icon()
+ update_appearance(updates = ALL)
/mob/living/simple_animal/pet/gondola/gondolapod/death()
qdel(linked_pod) //Will cause the open() proc for the linked supplypod to be called with the "broken" parameter set to true, meaning that it will dump its contents on death
diff --git a/code/modules/cargo/order.dm b/code/modules/cargo/order.dm
index 3c532e137355..b6c62828d6b4 100644
--- a/code/modules/cargo/order.dm
+++ b/code/modules/cargo/order.dm
@@ -54,7 +54,7 @@
P.info += "Rank: [orderer_rank]
"
P.info += "Comment: [reason]
"
- P.update_icon()
+ P.update_appearance(updates = ALL)
return P
/datum/supply_order/proc/generateManifest(obj/structure/closet/crate/C, var/owner, var/packname) //generates-the-manifests.
@@ -92,10 +92,10 @@
while(--lost >= 0)
qdel(pick(C.contents))
- P.update_icon()
+ P.update_appearance(updates = ALL)
P.forceMove(C)
C.manifest = P
- C.update_icon()
+ C.update_appearance(updates = ALL)
return P
@@ -113,4 +113,4 @@
for (var/I in misc_contents)
new I(miscbox)
generateManifest(miscbox, misc_own, "")
- return
\ No newline at end of file
+ return
diff --git a/code/modules/cargo/supplypod.dm b/code/modules/cargo/supplypod.dm
index a66293a499da..9b5a098c0183 100644
--- a/code/modules/cargo/supplypod.dm
+++ b/code/modules/cargo/supplypod.dm
@@ -58,8 +58,6 @@
var/list/reverse_option_list = list("Mobs"=FALSE,"Objects"=FALSE,"Anchored"=FALSE,"Underfloor"=FALSE,"Wallmounted"=FALSE,"Floors"=FALSE,"Walls"=FALSE, "Mecha"=FALSE)
var/list/turfs_in_cargo = list()
- var/list/managed_overlays
-
/obj/structure/closet/supplypod/bluespacepod
style = STYLE_BLUESPACE
bluespace = TRUE
@@ -109,7 +107,7 @@
door = "[base]_door"
else
door = FALSE
- update_icon()
+ update_appearance(updates = ALL)
/obj/structure/closet/supplypod/proc/SetReverseIcon()
fin_mask = "bottomfin"
@@ -117,7 +115,7 @@
icon_state = GLOB.podstyles[style][POD_BASE] + "_reverse"
pixel_x = initial(pixel_x)
transform = matrix()
- update_icon()
+ update_appearance(updates = ALL)
/obj/structure/closet/supplypod/proc/backToNonReverseIcon()
fin_mask = initial(fin_mask)
@@ -125,9 +123,9 @@
icon_state = GLOB.podstyles[style][POD_BASE]
pixel_x = initial(pixel_x)
transform = matrix()
- update_icon()
+ update_appearance(updates = ALL)
-/obj/structure/closet/supplypod/update_icon()
+/obj/structure/closet/supplypod/update_appearance(updates = ALL)
var/list/new_overlays = update_overlays()
if(managed_overlays)
cut_overlay(managed_overlays)
@@ -136,7 +134,7 @@
managed_overlays = new_overlays
add_overlay(new_overlays)
-/obj/structure/closet/supplypod/proc/update_overlays()
+/obj/structure/closet/supplypod/update_overlays()
. = list()
if(style == STYLE_INVISIBLE)
return
@@ -420,17 +418,17 @@
/obj/structure/closet/supplypod/setOpened() //Proc exists here, as well as in any atom that can assume the role of a "holder" of a supplypod. Check the open_pod() proc for more details
opened = TRUE
density = FALSE
- update_icon()
+ update_appearance(updates = ALL)
/obj/structure/closet/supplypod/extractionpod/setOpened()
opened = TRUE
density = TRUE
- update_icon()
+ update_appearance(updates = ALL)
/obj/structure/closet/supplypod/setClosed() //Ditto
opened = FALSE
density = TRUE
- update_icon()
+ update_appearance(updates = ALL)
/obj/structure/closet/supplypod/proc/tryMakeRubble(turf/T) //Ditto
if (rubble_type == RUBBLE_NONE)
@@ -443,7 +441,7 @@
return
rubble = new /obj/effect/supplypod_rubble(T)
rubble.setStyle(rubble_type, src)
- update_icon()
+ update_appearance(updates = ALL)
/obj/structure/closet/supplypod/Moved()
deleteRubble()
@@ -452,7 +450,7 @@
/obj/structure/closet/supplypod/proc/deleteRubble()
rubble?.fadeAway()
rubble = null
- update_icon()
+ update_appearance(updates = ALL)
/obj/structure/closet/supplypod/proc/addGlow()
if (GLOB.podstyles[style][POD_SHAPE] != POD_SHAPE_NORML)
@@ -599,7 +597,7 @@
/obj/effect/DPtarget/proc/beginLaunch(effectCircle) //Begin the animation for the pod falling. The effectCircle param determines whether the pod gets to come in from any descent angle
pod.addGlow()
- pod.update_icon()
+ pod.update_appearance(updates = ALL)
if (pod.style != STYLE_INVISIBLE)
pod.add_filter("motionblur",1,list("type"="motion_blur", "x"=0, "y"=3))
pod.forceMove(drop_location())
diff --git a/code/modules/cargo/supplypod_beacon.dm b/code/modules/cargo/supplypod_beacon.dm
index ca8417f9bb04..d52bae77d032 100644
--- a/code/modules/cargo/supplypod_beacon.dm
+++ b/code/modules/cargo/supplypod_beacon.dm
@@ -29,9 +29,9 @@
playsound(src,'sound/machines/synth_no.ogg',50,0)
if (SP_UNREADY)
ready = FALSE
- update_icon()
+ update_appearance(updates = ALL)
-/obj/item/supplypod_beacon/update_icon()
+/obj/item/supplypod_beacon/update_appearance(updates = ALL)
cut_overlays()
if (launched)
add_overlay("sp_green")
diff --git a/code/modules/client/preferences/ghost.dm b/code/modules/client/preferences/ghost.dm
index 648feea31e49..82c5e21b9eb5 100644
--- a/code/modules/client/preferences/ghost.dm
+++ b/code/modules/client/preferences/ghost.dm
@@ -16,7 +16,7 @@
return
ghost.ghost_accs = value
- ghost.update_icon()
+ ghost.update_appearance(updates = ALL)
/datum/preference/choiced/ghost_accessories/deserialize(input, datum/preferences/preferences)
// Old ghost preferences used to be 1/50/100.
diff --git a/code/modules/clothing/chameleon.dm b/code/modules/clothing/chameleon.dm
index cc7039212f3e..33177c4c4c1e 100644
--- a/code/modules/clothing/chameleon.dm
+++ b/code/modules/clothing/chameleon.dm
@@ -243,7 +243,7 @@
var/obj/item/clothing/head/helmet/helmet = initial(HS.helmettype)
I.head_piece.initial_state = initial(helmet.icon_state)
update_item(helmet, I.head_piece)
- I.head_piece.update_icon()
+ I.head_piece.update_appearance(updates = ALL)
qdel(helmet)
//YOGS END
target.icon = initial(picked_item.icon)
diff --git a/code/modules/clothing/ears/_ears.dm b/code/modules/clothing/ears/_ears.dm
index bc4f213ea14f..2082772f4675 100644
--- a/code/modules/clothing/ears/_ears.dm
+++ b/code/modules/clothing/ears/_ears.dm
@@ -35,15 +35,15 @@
/obj/item/clothing/ears/headphones/Initialize()
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
-/obj/item/clothing/ears/headphones/update_icon()
+/obj/item/clothing/ears/headphones/update_appearance(updates = ALL)
icon_state = "[initial(icon_state)]_[headphones_on? "on" : "off"]"
item_state = "[initial(item_state)]_[headphones_on? "on" : "off"]"
/obj/item/clothing/ears/headphones/proc/toggle(owner)
headphones_on = !headphones_on
- update_icon()
+ update_appearance(updates = ALL)
var/mob/living/carbon/human/H = owner
if(istype(H))
H.update_inv_ears()
diff --git a/code/modules/clothing/glasses/engine_goggles.dm b/code/modules/clothing/glasses/engine_goggles.dm
index d9e4b4733701..183e182c111f 100644
--- a/code/modules/clothing/glasses/engine_goggles.dm
+++ b/code/modules/clothing/glasses/engine_goggles.dm
@@ -24,7 +24,7 @@
/obj/item/clothing/glasses/meson/engine/Initialize()
. = ..()
START_PROCESSING(SSobj, src)
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/clothing/glasses/meson/engine/Destroy()
STOP_PROCESSING(SSobj, src)
@@ -50,7 +50,7 @@
if(H.glasses == src)
H.update_sight()
- update_icon()
+ update_appearance(updates = ALL)
for(var/X in actions)
var/datum/action/A = X
A.build_all_button_icons()
@@ -114,7 +114,7 @@
pic = new('icons/turf/overlays.dmi', place, "redOverlay", AREA_LAYER)
flick_overlay(pic, list(user.client), 8)
-/obj/item/clothing/glasses/meson/engine/update_icon()
+/obj/item/clothing/glasses/meson/engine/update_appearance(updates = ALL)
icon_state = "trayson-[mode]"
update_mob()
@@ -125,7 +125,7 @@
if(user.get_item_by_slot(SLOT_GLASSES) == src)
user.update_inv_glasses()
else
- user.update_inv_hands()
+ user.update_held_items()
/obj/item/clothing/glasses/meson/engine/tray //atmos techs have lived far too long without tray goggles while those damned engineers get their dual-purpose gogles all to themselves
name = "optical t-ray scanner"
diff --git a/code/modules/clothing/head/hardhat.dm b/code/modules/clothing/head/hardhat.dm
index 07554e146686..9fa37f0d05e0 100644
--- a/code/modules/clothing/head/hardhat.dm
+++ b/code/modules/clothing/head/hardhat.dm
@@ -31,9 +31,9 @@
turn_on(user)
else
turn_off(user)
- update_icon()
+ update_appearance(updates = ALL)
-/obj/item/clothing/head/hardhat/update_icon()
+/obj/item/clothing/head/hardhat/update_appearance(updates = ALL)
icon_state = "hardhat[on]_[hat_type]"
item_state = "hardhat[on]_[hat_type]"
if(ishuman(loc))
@@ -128,7 +128,7 @@
/obj/item/clothing/head/hardhat/weldhat/Initialize()
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/clothing/head/hardhat/weldhat/attack_self(mob/living/user)
toggle_helmet_light(user)
@@ -147,7 +147,7 @@
/obj/item/clothing/head/hardhat/weldhat/proc/toggle_welding_screen(mob/living/user)
if(weldingvisortoggle(user))
playsound(src, 'sound/mecha/mechmove03.ogg', 50, 1) //Visors don't just come from nothing
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/clothing/head/hardhat/weldhat/worn_overlays(isinhands)
. = ..()
@@ -156,7 +156,7 @@
if(!up)
. += mutable_appearance(mob_overlay_icon, "weldvisor")
-/obj/item/clothing/head/hardhat/weldhat/update_icon()
+/obj/item/clothing/head/hardhat/weldhat/update_appearance(updates = ALL)
cut_overlays()
if(!up)
add_overlay("weldvisor")
diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm
index c2cfb47a1e4e..c1f42c776666 100644
--- a/code/modules/clothing/head/helmet.dm
+++ b/code/modules/clothing/head/helmet.dm
@@ -49,7 +49,7 @@
if(A == attached_light)
set_attached_light(null)
update_helmlight()
- update_icon()
+ update_appearance(updates = ALL)
QDEL_NULL(alight)
qdel(A)
return ..()
@@ -371,7 +371,7 @@
//LightToggle
-/obj/item/clothing/head/helmet/update_icon()
+/obj/item/clothing/head/helmet/update_appearance(updates = ALL)
var/state = "[initial(icon_state)]"
if(attached_light)
if(attached_light.on)
@@ -399,7 +399,7 @@
return
to_chat(user, span_notice("You click [S] into place on [src]."))
set_attached_light(S)
- update_icon()
+ update_appearance(updates = ALL)
update_helmlight()
alight = new(src)
if(loc == user)
@@ -419,7 +419,7 @@
var/obj/item/flashlight/removed_light = set_attached_light(null)
update_helmlight()
removed_light.update_brightness(user)
- update_icon()
+ update_appearance(updates = ALL)
user.update_inv_head()
QDEL_NULL(alight)
return TRUE
@@ -444,7 +444,7 @@
/obj/item/clothing/head/helmet/proc/update_helmlight()
if(attached_light)
- update_icon()
+ update_appearance(updates = ALL)
for(var/X in actions)
var/datum/action/A = X
A.build_all_button_icons()
diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm
index 128507cc0cc5..d26734ae8c7b 100644
--- a/code/modules/clothing/head/misc_special.dm
+++ b/code/modules/clothing/head/misc_special.dm
@@ -207,9 +207,9 @@
/obj/item/clothing/head/wig/Initialize(mapload)
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
-/obj/item/clothing/head/wig/update_icon()
+/obj/item/clothing/head/wig/update_appearance(updates = ALL)
cut_overlays()
icon_state = ""
var/datum/sprite_accessory/S = GLOB.hair_styles_list[hair_style]
@@ -241,7 +241,7 @@
user.visible_message(span_notice("[user] changes \the [src]'s hairstyle to [new_style]."), span_notice("You change \the [src]'s hairstyle to [new_style]."))
if(adjustablecolor)
hair_color = input(usr,"","Choose Color",hair_color) as color|null
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/clothing/head/wig/random/Initialize(mapload)
@@ -264,7 +264,7 @@
. = ..()
if(ishuman(user) && slot == SLOT_HEAD)
hair_color = "#[user.hair_color]"
- update_icon()
+ update_appearance(updates = ALL)
user.update_inv_head()
/obj/item/clothing/head/bronze
diff --git a/code/modules/clothing/neck/bodycamera.dm b/code/modules/clothing/neck/bodycamera.dm
index 5fac7363de8d..39bc4c52cb44 100644
--- a/code/modules/clothing/neck/bodycamera.dm
+++ b/code/modules/clothing/neck/bodycamera.dm
@@ -26,7 +26,7 @@
bodcam.network = list("ss13")
bodcam.internal_light = FALSE
bodcam.status = FALSE
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/clothing/neck/bodycam/attack_self(mob/user)
if(!setup)
@@ -39,7 +39,7 @@
bodcam.status = TRUE
to_chat(user, span_notice("You turn on the body camera."))
getMobhook(user)
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/clothing/neck/bodycam/AltClick(mob/user)
if(preset)
@@ -52,9 +52,9 @@
bodcam.network[1] = temp
setup = TRUE
bodcam.status = TRUE
- update_icon()
+ update_appearance(updates = ALL)
-/obj/item/clothing/neck/bodycam/update_icon()
+/obj/item/clothing/neck/bodycam/update_appearance(updates = ALL)
..()
var/suffix = "off"
if(bodcam.status)
@@ -92,7 +92,7 @@
Disconnect()
bodcam.c_tag = null
bodcam.network[1] = null //requires a reset
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/clothing/neck/bodycam/Destroy()
Disconnect()
diff --git a/code/modules/clothing/shoes/bananashoes.dm b/code/modules/clothing/shoes/bananashoes.dm
index 20dd6785aadf..d69f88b1a9ce 100644
--- a/code/modules/clothing/shoes/bananashoes.dm
+++ b/code/modules/clothing/shoes/bananashoes.dm
@@ -23,7 +23,7 @@
on = !on
if(!always_noslip)
clothing_flags &= ~NOSLIP
- update_icon()
+ update_appearance(updates = ALL)
to_chat(loc, span_warning("You ran out of bananium!"))
else
new /obj/item/grown/bananapeel/specialpeel(get_step(src,turn(usr.dir, 180))) //honk
@@ -45,7 +45,7 @@
var/datum/component/material_container/bananium = GetComponent(/datum/component/material_container)
if(bananium.get_material_amount(/datum/material/bananium))
on = !on
- update_icon()
+ update_appearance(updates = ALL)
to_chat(user, span_notice("You [on ? "activate" : "deactivate"] the prototype shoes."))
if(!always_noslip)
if(on)
@@ -55,7 +55,7 @@
else
to_chat(user, span_warning("You need bananium to turn the prototype shoes on!"))
-/obj/item/clothing/shoes/clown_shoes/banana_shoes/update_icon()
+/obj/item/clothing/shoes/clown_shoes/banana_shoes/update_appearance(updates = ALL)
if(on)
icon_state = "clown_prototype_on"
else
diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm
index bbcfebefe739..a1d265a12a7b 100644
--- a/code/modules/clothing/spacesuits/hardsuit.dm
+++ b/code/modules/clothing/spacesuits/hardsuit.dm
@@ -305,7 +305,7 @@
visor_flags_inv = HIDEMASK|HIDEEYES|HIDEFACE|HIDEFACIALHAIR
visor_flags = STOPSPRESSUREDAMAGE
-/obj/item/clothing/head/helmet/space/hardsuit/syndi/update_icon()
+/obj/item/clothing/head/helmet/space/hardsuit/syndi/update_appearance(updates = ALL)
icon_state = "hardsuit[on]-[hardsuit_type]"
/obj/item/clothing/head/helmet/space/hardsuit/syndi/Initialize()
@@ -336,7 +336,7 @@
flags_cover &= ~(HEADCOVERSEYES | HEADCOVERSMOUTH)
flags_inv &= ~visor_flags_inv
cold_protection &= ~HEAD
- update_icon()
+ update_appearance(updates = ALL)
playsound(src.loc, 'sound/mecha/mechmove03.ogg', 50, 1)
toggle_hardsuit_mode(user)
user.update_inv_head()
@@ -363,7 +363,7 @@
linkedsuit.cold_protection &= ~(CHEST | GROIN | LEGS | FEET | ARMS | HANDS)
linkedsuit.icon_state = "hardsuit[on]-[hardsuit_type]"
- linkedsuit.update_icon()
+ linkedsuit.update_appearance(updates = ALL)
user.update_inv_wear_suit()
user.update_inv_w_uniform()
diff --git a/code/modules/detectivework/scanner.dm b/code/modules/detectivework/scanner.dm
index 2962bba33b01..d861ed754fea 100644
--- a/code/modules/detectivework/scanner.dm
+++ b/code/modules/detectivework/scanner.dm
@@ -137,7 +137,7 @@
P.info = text("Forensic Record - (FR-[])
", frNum)
P.info += jointext(log, "
")
P.info += "
Notes:
"
- P.update_icon()
+ P.update_appearance(updates = ALL)
if(ismob(loc))
var/mob/M = loc
diff --git a/code/modules/events/pirates.dm b/code/modules/events/pirates.dm
index 9ba61b2b7dfa..d14ae10dc7e5 100644
--- a/code/modules/events/pirates.dm
+++ b/code/modules/events/pirates.dm
@@ -137,7 +137,7 @@
. = ..()
gps = new/obj/item/gps/internal/pirate(src)
gps.tracking = FALSE
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/shuttle_scrambler/process()
if(active)
@@ -168,7 +168,7 @@
if(active || !user.canUseTopic(src, BE_CLOSE))
return
toggle_on(user)
- update_icon()
+ update_appearance(updates = ALL)
send_notification()
else
dump_loot(user)
@@ -195,7 +195,7 @@
active = FALSE
STOP_PROCESSING(SSobj,src)
-/obj/machinery/shuttle_scrambler/update_icon()
+/obj/machinery/shuttle_scrambler/update_appearance(updates = ALL)
if(active)
icon_state = "dominator-blue"
else
diff --git a/code/modules/events/prison_break.dm b/code/modules/events/prison_break.dm
index a581d6c659ea..4ae297f33e11 100644
--- a/code/modules/events/prison_break.dm
+++ b/code/modules/events/prison_break.dm
@@ -49,7 +49,7 @@
if(istype(O, /obj/structure/closet/secure_closet))
var/obj/structure/closet/secure_closet/temp = O
temp.locked = FALSE
- temp.update_icon()
+ temp.update_appearance(updates = ALL)
else if(istype(O, /obj/machinery/door/airlock))
var/obj/machinery/door/airlock/temp = O
//Skip doors in critical positions, such as the SM chamber, and skip doors the AI can't control since it's a virus
diff --git a/code/modules/events/shuttle_loan.dm b/code/modules/events/shuttle_loan.dm
index 5f96b5b052f8..70dbdb3b1de0 100644
--- a/code/modules/events/shuttle_loan.dm
+++ b/code/modules/events/shuttle_loan.dm
@@ -271,7 +271,7 @@
setAnchored(TRUE)
timer_set = rand(480, 600) //once the supply shuttle docks (after 5 minutes travel time), players have between 3-5 minutes to defuse the bomb
activate()
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/paper/fluff/cargo/bomb
name = "hastly scribbled note"
diff --git a/code/modules/events/stray_cargo.dm b/code/modules/events/stray_cargo.dm
index 0666ca9bd206..90eca071d24a 100644
--- a/code/modules/events/stray_cargo.dm
+++ b/code/modules/events/stray_cargo.dm
@@ -52,7 +52,7 @@
var/datum/supply_pack/SP = new pack_type
var/obj/structure/closet/crate/crate = SP.generate(null)
crate.locked = FALSE //Unlock secure crates
- crate.update_icon()
+ crate.update_appearance(updates = ALL)
var/obj/structure/closet/supplypod/pod = make_pod()
new /obj/effect/DPtarget(LZ, pod, crate)
diff --git a/code/modules/food_and_drinks/drinks/drinks/bottle.dm b/code/modules/food_and_drinks/drinks/drinks/bottle.dm
index 74af5070fc36..b962dbdcd357 100644
--- a/code/modules/food_and_drinks/drinks/drinks/bottle.dm
+++ b/code/modules/food_and_drinks/drinks/drinks/bottle.dm
@@ -23,9 +23,9 @@
age_restricted = TRUE
/obj/item/reagent_containers/food/drinks/bottle/on_reagent_change(changetype)
- update_icon()
+ update_appearance(updates = ALL)
-/obj/item/reagent_containers/food/drinks/bottle/update_icon()
+/obj/item/reagent_containers/food/drinks/bottle/update_appearance(updates = ALL)
cut_overlays()
if(reagents.total_volume)
diff --git a/code/modules/food_and_drinks/food/customizables.dm b/code/modules/food_and_drinks/food/customizables.dm
index b5963cbad589..30b367c6b941 100644
--- a/code/modules/food_and_drinks/food/customizables.dm
+++ b/code/modules/food_and_drinks/food/customizables.dm
@@ -60,7 +60,7 @@
. = ..()
-/obj/item/reagent_containers/food/snacks/customizable/proc/update_name(obj/item/reagent_containers/food/snacks/S)
+/obj/item/reagent_containers/food/snacks/customizable/update_name(obj/item/reagent_containers/food/snacks/S)
for(var/obj/item/I in ingredients)
if(!istype(S, I.type))
customname = "custom"
@@ -334,9 +334,9 @@
/obj/item/reagent_containers/glass/bowl/on_reagent_change(changetype)
..()
- update_icon()
+ update_appearance(updates = ALL)
-/obj/item/reagent_containers/glass/bowl/update_icon()
+/obj/item/reagent_containers/glass/bowl/update_appearance(updates = ALL)
cut_overlays()
if(reagents && reagents.total_volume)
var/mutable_appearance/filling = mutable_appearance('icons/obj/food/soupsalad.dmi', "fullbowl")
diff --git a/code/modules/food_and_drinks/food/snacks.dm b/code/modules/food_and_drinks/food/snacks.dm
index 67fbd04f12ab..8a7677a9accf 100644
--- a/code/modules/food_and_drinks/food/snacks.dm
+++ b/code/modules/food_and_drinks/food/snacks.dm
@@ -247,7 +247,7 @@ All foods are distributed among various categories. Use common sense.
trash = null
return
-/obj/item/reagent_containers/food/snacks/proc/update_overlays(obj/item/reagent_containers/food/snacks/S)
+/obj/item/reagent_containers/food/snacks/update_overlays(obj/item/reagent_containers/food/snacks/S)
cut_overlays()
var/mutable_appearance/filling = mutable_appearance(icon, "[initial(icon_state)]_filling")
if(S.filling_color == "#FFFFFF")
diff --git a/code/modules/food_and_drinks/food/snacks_pastry.dm b/code/modules/food_and_drinks/food/snacks_pastry.dm
index e9fc9463db46..26a626eba29c 100644
--- a/code/modules/food_and_drinks/food/snacks_pastry.dm
+++ b/code/modules/food_and_drinks/food/snacks_pastry.dm
@@ -651,9 +651,9 @@
/obj/item/reagent_containers/food/snacks/pancakes/Initialize()
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
-/obj/item/reagent_containers/food/snacks/pancakes/update_icon()
+/obj/item/reagent_containers/food/snacks/pancakes/update_appearance(updates = ALL)
if(contents.len)
name = "stack of pancakes"
else
@@ -717,13 +717,13 @@
pancake.pixel_x = rand(-1,1)
pancake.pixel_y = 3 * contents.len - 1
add_overlay(pancake)
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/reagent_containers/food/snacks/pancakes/attack(mob/M, mob/user, def_zone, stacked = TRUE)
if(user.a_intent == INTENT_HARM || !contents.len || !stacked)
return ..()
var/obj/item/O = contents[contents.len]
. = O.attack(M, user, def_zone, FALSE)
- update_icon()
+ update_appearance(updates = ALL)
#undef PANCAKE_MAX_STACK
diff --git a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm
index 2e9d001b6096..bc12a66df568 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm
@@ -38,7 +38,7 @@
if(M.rating >= 2)
. += "Gibber has been upgraded to process inorganic materials."
-/obj/machinery/gibber/update_icon()
+/obj/machinery/gibber/update_appearance(updates = ALL)
cut_overlays()
if (dirty)
add_overlay("grbloody")
@@ -99,7 +99,7 @@
user.visible_message(span_danger("[user] stuffs [C] into the gibber!"))
C.forceMove(src)
occupant = C
- update_icon()
+ update_appearance(updates = ALL)
else
startgibbing(user)
@@ -133,7 +133,7 @@
/obj/machinery/gibber/proc/go_out()
dropContents()
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/gibber/proc/startgibbing(mob/user)
if(src.operating)
@@ -145,7 +145,7 @@
visible_message(span_italics("You hear a loud squelchy grinding sound."))
playsound(src.loc, 'sound/machines/juicer.ogg', 50, 1)
operating = TRUE
- update_icon()
+ update_appearance(updates = ALL)
var/offset = prob(50) ? -2 : 2
animate(src, pixel_x = pixel_x + offset, time = 0.02 SECONDS, loop = 200) //start shaking
@@ -221,7 +221,7 @@
pixel_x = initial(pixel_x) //return to its spot after shaking
operating = FALSE
- update_icon()
+ update_appearance(updates = ALL)
//auto-gibs anything that bumps into it
/obj/machinery/gibber/autogibber
diff --git a/code/modules/food_and_drinks/kitchen_machinery/griddle.dm b/code/modules/food_and_drinks/kitchen_machinery/griddle.dm
index efd6c0c36d06..d12f564c495a 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/griddle.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/griddle.dm
@@ -32,7 +32,7 @@
return
if(!on && default_deconstruction_screwdriver(user, icon_state, icon_state, I))
- update_icon()
+ update_appearance(updates = ALL)
return
if(griddled_objects.len >= max_items)
@@ -49,7 +49,7 @@
I.pixel_y = clamp(text2num(click_params["icon-y"]) - 16, -(world.icon_size/8), world.icon_size/4)
to_chat(user, "You place [I] on [src].")
AddToGrill(I, user)
- update_icon()
+ update_appearance(updates = ALL)
else
return ..()
@@ -62,7 +62,7 @@
begin_processing()
else
end_processing()
- update_icon()
+ update_appearance(updates = ALL)
update_grill_audio()
@@ -106,7 +106,7 @@
if(prob(10))
visible_message("[griddled_item] doesn't seem to be doing too great on the [src]!")
-/obj/machinery/griddle/update_icon()
+/obj/machinery/griddle/update_appearance(updates = ALL)
. = ..()
if(panel_open)
icon_state = "griddle[variant]_o"
diff --git a/code/modules/food_and_drinks/kitchen_machinery/grill.dm b/code/modules/food_and_drinks/kitchen_machinery/grill.dm
index 2bce876dd710..b250f59301f8 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/grill.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/grill.dm
@@ -20,7 +20,7 @@
. = ..()
grill_loop = new(list(src), FALSE)
-/obj/machinery/grill/update_icon()
+/obj/machinery/grill/update_appearance(updates = ALL)
if(grilled_item)
icon_state = "grill"
else if(grill_fuel > 0)
@@ -38,7 +38,7 @@
else
grill_fuel += (50 * stackamount)
S.use(stackamount)
- update_icon()
+ update_appearance(updates = ALL)
return
if(I.resistance_flags & INDESTRUCTIBLE)
to_chat(user, span_warning("You don't feel it would be wise to grill [I]..."))
@@ -59,7 +59,7 @@
RegisterSignal(grilled_item, COMSIG_GRILL_COMPLETED, PROC_REF(GrillCompleted))
grilled_item.foodtype |= GRILLED
to_chat(user, span_notice("You put the [grilled_item] on [src]."))
- update_icon()
+ update_appearance(updates = ALL)
grill_loop.start()
return
else
@@ -67,13 +67,13 @@
grill_fuel += (20 * (I.reagents.get_reagent_amount(/datum/reagent/consumable/monkey_energy)))
to_chat(user, span_notice("You pour the Monkey Energy in [src]."))
I.reagents.remove_reagent(/datum/reagent/consumable/monkey_energy, I.reagents.get_reagent_amount(/datum/reagent/consumable/monkey_energy))
- update_icon()
+ update_appearance(updates = ALL)
return
..()
/obj/machinery/grill/process(delta_time)
..()
- update_icon()
+ update_appearance(updates = ALL)
if(grill_fuel <= 0)
return
else
@@ -124,7 +124,7 @@
if(grilled_item)
to_chat(user, span_notice("You take out [grilled_item] from [src]."))
grilled_item.forceMove(drop_location())
- update_icon()
+ update_appearance(updates = ALL)
return
return ..()
diff --git a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm
index 8c49d584ed36..d343dc8eee8b 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm
@@ -87,7 +87,7 @@
"- Capacity: [max_n_of_items] items.\n"+\
span_notice("- Cook time reduced by [(efficiency - 1) * 25]%.")
-/obj/machinery/microwave/update_icon()
+/obj/machinery/microwave/update_appearance(updates = ALL)
if(broken)
icon_state = "mwb"
else if(dirty_anim_playing)
@@ -109,7 +109,7 @@
if(dirty < 100)
if(default_deconstruction_screwdriver(user, icon_state, icon_state, O) || default_unfasten_wrench(user, O))
- update_icon()
+ update_appearance(updates = ALL)
return
if(panel_open && is_wire_tool(O))
@@ -127,7 +127,7 @@
if(O.use_tool(src, user, 20))
user.visible_message("[user] fixes \the [src].", span_notice("You fix \the [src]."))
broken = 0
- update_icon()
+ update_appearance(updates = ALL)
return FALSE //to use some fuel
else
to_chat(user, span_warning("It's broken!"))
@@ -141,7 +141,7 @@
playsound(loc, 'sound/effects/spray3.ogg', 50, 1, -6)
user.visible_message("[user] has cleaned \the [src].", span_notice("You clean \the [src]."))
dirty = 0
- update_icon()
+ update_appearance(updates = ALL)
else
to_chat(user, span_warning("You need more space cleaner!"))
return TRUE
@@ -152,7 +152,7 @@
if(do_after(user, P.cleanspeed, src))
user.visible_message("[user] has cleaned \the [src].", span_notice("You clean \the [src]."))
dirty = 0
- update_icon()
+ update_appearance(updates = ALL)
return TRUE
if(dirty == 100) // The microwave is all dirty so can't be used!
@@ -258,7 +258,7 @@
set_light(1.5)
soundloop.start()
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/microwave/proc/spark()
visible_message(span_warning("Sparks fly around [src]!"))
@@ -282,7 +282,7 @@
turn_on()
playsound(src.loc, 'sound/effects/splat.ogg', 50, 1)
dirty_anim_playing = TRUE
- update_icon()
+ update_appearance(updates = ALL)
loop(MICROWAVE_MUCK, 4)
/obj/machinery/microwave/proc/loop(type, time, wait = max(12 - 2 * efficiency, 2)) // standard wait is 10
@@ -349,7 +349,7 @@
/obj/machinery/microwave/proc/after_finish_loop()
set_light(0)
soundloop.stop()
- update_icon()
+ update_appearance(updates = ALL)
#undef MICROWAVE_NORMAL
#undef MICROWAVE_MUCK
diff --git a/code/modules/food_and_drinks/kitchen_machinery/oven.dm b/code/modules/food_and_drinks/kitchen_machinery/oven.dm
index 471abd866cc4..105a74f18ab5 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/oven.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/oven.dm
@@ -42,7 +42,7 @@
QDEL_NULL(particles)
. = ..()
-/obj/machinery/oven/update_icon()
+/obj/machinery/oven/update_appearance(updates = ALL)
update_overlays()
if(panel_open)
icon_state = "oven_o"
@@ -53,7 +53,7 @@
icon_state = "oven_off"
return ..()
-/obj/machinery/oven/proc/update_overlays()
+/obj/machinery/oven/update_overlays()
cut_overlays()
var/mutable_appearance/door_overlay
if(open)
@@ -87,7 +87,7 @@
if(prob(10))
visible_message(span_danger("You smell a burnt smell coming from [src]!"))
set_smoke_state(worst_cooked_food_state)
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/oven/attackby(obj/item/I, mob/user, params)
@@ -110,7 +110,7 @@
RegisterSignal(used_tray, COMSIG_MOVABLE_MOVED, PROC_REF(ItemMoved))
update_baking_audio()
- update_icon()
+ update_appearance(updates = ALL)
///Called when the tray is moved out of the oven in some way
/obj/machinery/oven/proc/ItemMoved(obj/item/oven_tray, atom/OldLoc, Dir, Forced)
@@ -144,7 +144,7 @@
if(used_tray)
begin_processing()
used_tray.vis_flags |= VIS_HIDE
- update_icon()
+ update_appearance(updates = ALL)
update_baking_audio()
return TRUE
@@ -178,7 +178,7 @@
to_chat(user,span_notice("The access panel won't budge with a tray inside!"))
return TRUE
panel_open = !panel_open
- update_icon()
+ update_appearance(updates = ALL)
return TRUE
diff --git a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm
index 4634feb216e1..bae71731393d 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm
@@ -146,10 +146,10 @@
/obj/machinery/smartfridge/obj_break(damage_flag)
if(!(stat & BROKEN))
stat |= BROKEN
- update_icon()
+ update_appearance(updates = ALL)
..(damage_flag)
-/obj/machinery/smartfridge/update_icon()
+/obj/machinery/smartfridge/update_appearance(updates = ALL)
var/startstate = initial(icon_state)
if(stat & BROKEN)
icon_state = "[startstate]-broken"
@@ -230,7 +230,7 @@
if(accept_check(O))
load(O)
user.visible_message("[user] has added \the [O] to \the [src].", span_notice("You add \the [O] to \the [src]."))
- update_icon()
+ update_appearance(updates = ALL)
updateUsrDialog()
if(contents.len >= max_n_of_items)
indicate_full()
@@ -245,7 +245,7 @@
if(accept_check(G))
load(G)
loaded++
- update_icon()
+ update_appearance(updates = ALL)
updateUsrDialog()
if(loaded)
@@ -272,7 +272,7 @@
load(organ)
OS.clear_organ()
user.visible_message("[user] has added \the [organ] to \the [src].", span_notice("You add \the [organ] to \the [src]."))
- update_icon()
+ update_appearance(updates = ALL)
updateUsrDialog()
if(contents.len >= max_n_of_items)
indicate_full()
@@ -377,7 +377,7 @@
if(O.name == params["name"])
dispense(O, usr)
break
- update_icon()
+ update_appearance(updates = ALL)
cut_overlay(full_indicator_state)
animate_dispenser()
return TRUE
@@ -390,7 +390,7 @@
dispense(O, usr)
desired--
- update_icon()
+ update_appearance(updates = ALL)
cut_overlay(full_indicator_state)
animate_dispenser()
return TRUE
@@ -454,7 +454,7 @@
/obj/machinery/smartfridge/drying_rack/ui_act(action, params)
. = ..()
if(.)
- update_icon() // This is to handle a case where the last item is taken out manually instead of through drying pop-out
+ update_appearance(updates = ALL) // This is to handle a case where the last item is taken out manually instead of through drying pop-out
return
switch(action)
if("Dry")
@@ -474,9 +474,9 @@
/obj/machinery/smartfridge/drying_rack/load() //For updating the filled overlay
..()
- update_icon()
+ update_appearance(updates = ALL)
-/obj/machinery/smartfridge/drying_rack/update_icon()
+/obj/machinery/smartfridge/drying_rack/update_appearance(updates = ALL)
..()
cut_overlays()
if(drying)
@@ -489,7 +489,7 @@
if(drying)
if(rack_dry())//no need to update unless something got dried
SStgui.update_uis(src)
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/smartfridge/drying_rack/accept_check(obj/item/O)
if(istype(O, /obj/item/reagent_containers/food/snacks/))
@@ -507,7 +507,7 @@
else
drying = TRUE
use_power = ACTIVE_POWER_USE
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/smartfridge/drying_rack/proc/rack_dry()
for(var/obj/item/reagent_containers/food/snacks/S in src)
diff --git a/code/modules/food_and_drinks/pizzabox.dm b/code/modules/food_and_drinks/pizzabox.dm
index 31ef16bbfad3..66e86e55a061 100644
--- a/code/modules/food_and_drinks/pizzabox.dm
+++ b/code/modules/food_and_drinks/pizzabox.dm
@@ -31,14 +31,14 @@
/obj/item/pizzabox/Initialize()
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/pizzabox/Destroy()
unprocess()
return ..()
-/obj/item/pizzabox/update_icon()
+/obj/item/pizzabox/update_appearance(updates = ALL)
// Description
desc = initial(desc)
if(open)
@@ -104,7 +104,7 @@
audible_message(span_warning("[icon2html(src, hearers(src))] *beep*"))
bomb_active = TRUE
START_PROCESSING(SSobj, src)
- update_icon()
+ update_appearance(updates = ALL)
//ATTACK HAND IGNORING PARENT RETURN VALUE
/obj/item/pizzabox/attack_hand(mob/user)
@@ -115,13 +115,13 @@
user.put_in_hands(pizza)
to_chat(user, span_notice("You take [pizza] out of [src]."))
pizza = null
- update_icon()
+ update_appearance(updates = ALL)
else if(bomb)
if(wires.is_all_cut() && bomb_defused)
user.put_in_hands(bomb)
to_chat(user, span_notice("You carefully remove the [bomb] from [src]."))
bomb = null
- update_icon()
+ update_appearance(updates = ALL)
return
else
bomb_timer = input(user, "Set the [bomb] timer from [BOMB_TIMER_MIN] to [BOMB_TIMER_MAX].", bomb, bomb_timer) as num|null
@@ -136,14 +136,14 @@
bomb.adminlog = "The [bomb.name] in [src.name] that [key_name(user)] activated has detonated!"
to_chat(user, span_warning("You trap [src] with [bomb]."))
- update_icon()
+ update_appearance(updates = ALL)
else if(boxes.len)
var/obj/item/pizzabox/topbox = boxes[boxes.len]
boxes -= topbox
user.put_in_hands(topbox)
to_chat(user, span_notice("You remove the topmost [name] from the stack."))
- topbox.update_icon()
- update_icon()
+ topbox.update_appearance(updates = ALL)
+ update_appearance(updates = ALL)
user.regenerate_icons()
/obj/item/pizzabox/attackby(obj/item/I, mob/user, params)
@@ -158,8 +158,8 @@
boxes += add
newbox.boxes.Cut()
to_chat(user, span_notice("You put [newbox] on top of [src]!"))
- newbox.update_icon()
- update_icon()
+ newbox.update_appearance(updates = ALL)
+ update_appearance(updates = ALL)
user.regenerate_icons()
if(boxes.len >= 5)
if(prob(10 * boxes.len))
@@ -179,7 +179,7 @@
return
pizza = I
to_chat(user, span_notice("You put [I] in [src]."))
- update_icon()
+ update_appearance(updates = ALL)
return
else if(istype(I, /obj/item/bombcore/miniature/pizza))
if(open && !bomb)
@@ -188,7 +188,7 @@
wires = new /datum/wires/explosive/pizza(src)
bomb = I
to_chat(user, span_notice("You put [I] in [src]. Sneeki breeki..."))
- update_icon()
+ update_appearance(updates = ALL)
return
else if(bomb)
to_chat(user, span_notice("[src] already has a bomb in it!"))
@@ -202,7 +202,7 @@
if(!user.canUseTopic(src, BE_CLOSE))
return
to_chat(user, span_notice("You write with [I] on [src]."))
- update_icon()
+ update_appearance(updates = ALL)
return
else if(is_wire_tool(I))
if(wires && bomb)
@@ -252,9 +252,9 @@
fall_dir = pick(GLOB.alldirs)
step(P.pizza, fall_dir)
P.pizza = null
- P.update_icon()
+ P.update_appearance(updates = ALL)
boxes -= P
- update_icon()
+ update_appearance(updates = ALL)
if(isliving(loc))
var/mob/living/L = loc
L.regenerate_icons()
@@ -263,7 +263,7 @@
STOP_PROCESSING(SSobj, src)
qdel(wires)
wires = null
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/pizzabox/bomb/Initialize()
. = ..()
diff --git a/code/modules/food_and_drinks/plate.dm b/code/modules/food_and_drinks/plate.dm
index 5140cd543efb..f7050ff6e628 100644
--- a/code/modules/food_and_drinks/plate.dm
+++ b/code/modules/food_and_drinks/plate.dm
@@ -31,7 +31,7 @@
I.pixel_y = clamp(text2num(click_params["icon-y"]) - 16, -placement_offset, max_height_offset)
to_chat(user, span_notice("You place [I] on [src]."))
AddToPlate(I, user)
- update_icon()
+ update_appearance(updates = ALL)
else
return ..()
diff --git a/code/modules/games/cas.dm b/code/modules/games/cas.dm
index 9c53e54cc252..5121d0cded74 100644
--- a/code/modules/games/cas.dm
+++ b/code/modules/games/cas.dm
@@ -78,7 +78,7 @@
H.pickup(user)
user.put_in_hands(H)
user.visible_message("[user] draws a card from the deck.", span_notice("You draw a card from the deck."))
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/toy/cards/deck/cas/attackby(obj/item/I, mob/living/user, params)
if(istype(I, /obj/item/toy/cards/singlecard/cas))
@@ -93,9 +93,9 @@
cards += RC
user.visible_message("[user] adds a card to the bottom of the deck.",span_notice("You add the card to the bottom of the deck."))
qdel(SC)
- update_icon()
+ update_appearance(updates = ALL)
-/obj/item/toy/cards/deck/cas/update_icon()
+/obj/item/toy/cards/deck/cas/update_appearance(updates = ALL)
if(cards.len < 26)
icon_state = "deck_[deckstyle]_low"
@@ -129,14 +129,14 @@
else if(flipped)
name = buffertext
flipped = !flipped
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/toy/cards/singlecard/cas/AltClick(mob/living/user)
if(!ishuman(user) || !user.canUseTopic(src, BE_CLOSE))
return
Flip()
-/obj/item/toy/cards/singlecard/cas/update_icon()
+/obj/item/toy/cards/singlecard/cas/update_appearance(updates = ALL)
if(flipped)
icon_state = "[card_face]_flipped"
else
diff --git a/code/modules/goals/station_goals/bsa.dm b/code/modules/goals/station_goals/bsa.dm
index 11149fb38997..709eb8bd0e30 100644
--- a/code/modules/goals/station_goals/bsa.dm
+++ b/code/modules/goals/station_goals/bsa.dm
@@ -255,7 +255,7 @@
if("recalibrate")
calibrate(usr)
. = TRUE
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/computer/bsa_control/proc/calibrate(mob/user)
if(!GLOB.bsa_unlock)
diff --git a/code/modules/goals/station_goals/shield.dm b/code/modules/goals/station_goals/shield.dm
index fa8c89811907..e0ae1499f4ae 100644
--- a/code/modules/goals/station_goals/shield.dm
+++ b/code/modules/goals/station_goals/shield.dm
@@ -116,9 +116,9 @@
else
animate(src, pixel_y = 0, time = 1 SECONDS)
anchored = FALSE
- update_icon()
+ update_appearance(updates = ALL)
-/obj/machinery/satellite/update_icon()
+/obj/machinery/satellite/update_appearance(updates = ALL)
icon_state = active ? "sat_active" : "sat_inactive"
/obj/machinery/satellite/multitool_act(mob/living/user, obj/item/I)
diff --git a/code/modules/holodeck/area_copy.dm b/code/modules/holodeck/area_copy.dm
index 0897a4768918..b25bed06f9ef 100644
--- a/code/modules/holodeck/area_copy.dm
+++ b/code/modules/holodeck/area_copy.dm
@@ -37,7 +37,7 @@ GLOBAL_LIST_INIT(duplicate_forbidden_vars, list(
var/obj/item/I = O
I.damtype = STAMINA // thou shalt not
- N.update_icon()
+ N.update_appearance(updates = ALL)
if(ismachinery(O))
var/obj/machinery/M = O
M.power_change()
diff --git a/code/modules/holodeck/items.dm b/code/modules/holodeck/items.dm
index 95b12ccbcef0..451a8811f850 100644
--- a/code/modules/holodeck/items.dm
+++ b/code/modules/holodeck/items.dm
@@ -187,7 +187,7 @@
ready = !ready
- update_icon()
+ update_appearance(updates = ALL)
var/numbuttons = 0
var/numready = 0
@@ -199,7 +199,7 @@
if(numbuttons == numready)
begin_event()
-/obj/machinery/readybutton/update_icon()
+/obj/machinery/readybutton/update_appearance(updates = ALL)
if(ready)
icon_state = "auth_on"
else
diff --git a/code/modules/holodeck/turfs.dm b/code/modules/holodeck/turfs.dm
index 82510c22eadd..aa4bd9e3e9e3 100644
--- a/code/modules/holodeck/turfs.dm
+++ b/code/modules/holodeck/turfs.dm
@@ -34,7 +34,7 @@
. = ..()
if(src.type == /turf/open/floor/holofloor/grass) //don't want grass subtypes getting the icon state,
icon_state = "grass[rand(1,4)]"
- update_icon()
+ update_appearance(updates = ALL)
/turf/open/floor/holofloor/beach
gender = PLURAL
@@ -117,9 +117,9 @@
/turf/open/floor/holofloor/carpet/Initialize()
. = ..()
- addtimer(CALLBACK(src, PROC_REF(update_icon)), 1)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/atom/, update_appearance)), 1)
-/turf/open/floor/holofloor/carpet/update_icon()
+/turf/open/floor/holofloor/carpet/update_appearance(updates = ALL)
if(!..())
return 0
if(intact)
diff --git a/code/modules/hydroponics/beekeeping/honeycomb.dm b/code/modules/hydroponics/beekeeping/honeycomb.dm
index daa22c4f850f..50b5f773416e 100644
--- a/code/modules/hydroponics/beekeeping/honeycomb.dm
+++ b/code/modules/hydroponics/beekeeping/honeycomb.dm
@@ -17,10 +17,10 @@
. = ..()
pixel_x = rand(8,-8)
pixel_y = rand(8,-8)
- update_icon()
+ update_appearance(updates = ALL)
-/obj/item/reagent_containers/honeycomb/update_icon()
+/obj/item/reagent_containers/honeycomb/update_appearance(updates = ALL)
cut_overlays()
var/mutable_appearance/honey_overlay = mutable_appearance(icon, /datum/reagent/consumable/honey)
if(honey_color)
@@ -37,4 +37,4 @@
reagents.add_reagent(R.type,5)
else
honey_color = ""
- update_icon()
\ No newline at end of file
+ update_appearance(updates = ALL)
diff --git a/code/modules/hydroponics/biogenerator.dm b/code/modules/hydroponics/biogenerator.dm
index 9d828aa4f92d..bed6118641bc 100644
--- a/code/modules/hydroponics/biogenerator.dm
+++ b/code/modules/hydroponics/biogenerator.dm
@@ -31,7 +31,7 @@
..()
if(A == beaker)
beaker = null
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/biogenerator/contents_explosion(severity, target)
..()
@@ -63,9 +63,9 @@
. += span_notice("The status display reads: Productivity at [productivity*100]%.
Matter consumption reduced by [(efficiency*25)-25]%.
Machine can hold up to [max_items] pieces of produce.")
/obj/machinery/biogenerator/on_reagent_change(changetype) //When the reagents change, change the icon as well.
- update_icon()
+ update_appearance(updates = ALL)
-/obj/machinery/biogenerator/update_icon()
+/obj/machinery/biogenerator/update_appearance(updates = ALL)
if(panel_open)
icon_state = "biogen-empty-o"
else if(!src.beaker)
@@ -88,7 +88,7 @@
var/obj/item/reagent_containers/glass/B = beaker
B.forceMove(drop_location())
beaker = null
- update_icon()
+ update_appearance(updates = ALL)
return
if(default_deconstruction_crowbar(O))
@@ -104,7 +104,7 @@
return
beaker = O
to_chat(user, span_notice("You add the container to the machine."))
- update_icon()
+ update_appearance(updates = ALL)
else
to_chat(user, span_warning("Close the maintenance panel first."))
return
@@ -184,12 +184,12 @@
qdel(I)
if(S)
processing = TRUE
- update_icon()
+ update_appearance(updates = ALL)
playsound(loc, 'sound/machines/blender.ogg', 50, TRUE)
use_power(S * 30)
sleep(S + 15 / productivity)
processing = FALSE
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/biogenerator/proc/check_cost(list/materials, multiplier = 1, remove_points = TRUE)
if(materials.len != 1 || materials[1] != getmaterialref(/datum/material/biomass))
@@ -199,7 +199,7 @@
else
if(remove_points)
points -= materials[getmaterialref(/datum/material/biomass)]*multiplier/efficiency
- update_icon()
+ update_appearance(updates = ALL)
return TRUE
/obj/machinery/biogenerator/proc/check_container_volume(list/reagents, multiplier = 1)
@@ -240,7 +240,7 @@
beaker.reagents.add_reagent(R, D.make_reagents[R])
. = 1
--i
- update_icon()
+ update_appearance(updates = ALL)
return .
/obj/machinery/biogenerator/proc/detach(mob/living/user)
@@ -250,7 +250,7 @@
else
beaker.drop_location(get_turf(src))
beaker = null
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/biogenerator/ui_status(mob/user)
if(stat & BROKEN || panel_open)
diff --git a/code/modules/hydroponics/fermenting_barrel.dm b/code/modules/hydroponics/fermenting_barrel.dm
index 7d0ad8e0676c..6094267d0b65 100644
--- a/code/modules/hydroponics/fermenting_barrel.dm
+++ b/code/modules/hydroponics/fermenting_barrel.dm
@@ -63,9 +63,9 @@
ENABLE_BITFIELD(reagents.flags, DRAINABLE)
DISABLE_BITFIELD(reagents.flags, REFILLABLE)
to_chat(user, span_notice("You close [src], letting you draw from its tap."))
- update_icon()
+ update_appearance(updates = ALL)
-/obj/structure/fermenting_barrel/update_icon()
+/obj/structure/fermenting_barrel/update_appearance(updates = ALL)
if(open)
icon_state = "barrel_open"
else
diff --git a/code/modules/hydroponics/gene_modder.dm b/code/modules/hydroponics/gene_modder.dm
index 689cb7242bda..180e0bed82b3 100644
--- a/code/modules/hydroponics/gene_modder.dm
+++ b/code/modules/hydroponics/gene_modder.dm
@@ -55,7 +55,7 @@
min_wchance = 0
min_wrate = 0
-/obj/machinery/plantgenes/update_icon()
+/obj/machinery/plantgenes/update_appearance(updates = ALL)
..()
cut_overlays()
if((stat & (BROKEN|NOPOWER)))
@@ -71,7 +71,7 @@
/obj/machinery/plantgenes/attackby(obj/item/I, mob/user, params)
if(default_deconstruction_screwdriver(user, "dnamod", "dnamod", I))
- update_icon()
+ update_appearance(updates = ALL)
return
if(default_deconstruction_crowbar(I))
return
@@ -261,7 +261,7 @@
seed.verb_pickup()
seed = null
update_genes()
- update_icon()
+ update_appearance(updates = ALL)
else
var/obj/item/I = usr.get_active_held_item()
if (istype(I, /obj/item/seeds))
@@ -269,7 +269,7 @@
return
insert_seed(I)
to_chat(usr, span_notice("You add [I] to the machine."))
- update_icon()
+ update_appearance(updates = ALL)
else if(href_list["eject_disk"] && !operation)
var/obj/item/I = usr.get_active_held_item()
eject_disk()
@@ -278,7 +278,7 @@
return
disk = I
to_chat(usr, span_notice("You add [I] to the machine."))
- update_icon()
+ update_appearance(updates = ALL)
else if(href_list["op"] == "insert" && disk && disk.gene && seed)
if(!operation) // Wait for confirmation
operation = "insert"
@@ -337,10 +337,10 @@
else if(istype(G, /datum/plant_gene/core/weed_chance))
gene.value = max(gene.value, min_wchance)
disk.update_name()
- disk.update_icon()
+ disk.update_appearance(updates = ALL)
qdel(seed)
seed = null
- update_icon()
+ update_appearance(updates = ALL)
if("replace")
if(disk && disk.gene && istype(disk.gene, G.type) && istype(G, /datum/plant_gene/core))
seed.genes -= G
@@ -372,7 +372,7 @@
S.forceMove(src)
seed = S
update_genes()
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/plantgenes/proc/eject_disk()
if (disk && !operation)
@@ -383,7 +383,7 @@
disk.forceMove(drop_location())
disk = null
update_genes()
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/plantgenes/proc/update_genes()
core_genes = list()
@@ -436,16 +436,16 @@
/obj/item/disk/plantgene/Initialize()
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
src.pixel_x = rand(-5, 5)
src.pixel_y = rand(-5, 5)
-/obj/item/disk/plantgene/update_icon()
+/obj/item/disk/plantgene/update_appearance(updates = ALL)
cut_overlays()
if(gene)
add_overlay("datadisk_gene")
-/obj/item/disk/plantgene/proc/update_name()
+/obj/item/disk/plantgene/update_name()
if(gene)
name = "[gene.get_name()] (plant data disk)"
else
diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm
index aef012e31693..294c914f653d 100644
--- a/code/modules/hydroponics/hydroponics.dm
+++ b/code/modules/hydroponics/hydroponics.dm
@@ -215,7 +215,7 @@
weedinvasion() // Weed invasion into empty tray
needs_update = 1
if (needs_update)
- update_icon()
+ update_appearance(updates = ALL)
return
/obj/machinery/hydroponics/proc/nutrimentMutation()
@@ -237,7 +237,7 @@
return
return
-/obj/machinery/hydroponics/update_icon()
+/obj/machinery/hydroponics/update_appearance(updates = ALL)
//Refreshes the icon and sets the luminosity
cut_overlays()
@@ -360,7 +360,7 @@
harvest = 0
weedlevel = 0 // Reset
pestlevel = 0 // Reset
- update_icon()
+ update_appearance(updates = ALL)
visible_message(span_warning("The [oldPlantName] is overtaken by some [myseed.plantname]!"))
update_name()
@@ -394,7 +394,7 @@
weedlevel = 0 // Reset
sleep(0.5 SECONDS) // Wait a while
- update_icon()
+ update_appearance(updates = ALL)
visible_message(span_warning("[oldPlantName] suddenly mutates into [myseed.plantname]!"))
update_name()
@@ -414,7 +414,7 @@
weedlevel = 0 // Reset
sleep(0.5 SECONDS) // Wait a while
- update_icon()
+ update_appearance(updates = ALL)
visible_message(span_warning("The mutated weeds in [src] spawn some [myseed.plantname]!"))
update_name()
else
@@ -426,7 +426,7 @@
pestlevel = 0 // Pests die
lastproduce = 0
if(!dead)
- update_icon()
+ update_appearance(updates = ALL)
dead = 1
@@ -777,9 +777,9 @@
S.clear_reagents()
qdel(S)
- H.update_icon()
+ H.update_appearance(updates = ALL)
if(reagent_source) // If the source wasn't composted and destroyed
- reagent_source.update_icon()
+ reagent_source.update_appearance(updates = ALL)
return 1
else if(istype(O, /obj/item/seeds) && !istype(O, /obj/item/seeds/sample))
@@ -795,7 +795,7 @@
age = 1
plant_health = myseed.endurance
lastcycle = world.time
- update_icon()
+ update_appearance(updates = ALL)
else
to_chat(user, span_warning("[src] already has seeds in it!"))
@@ -823,7 +823,7 @@
if(weedlevel > 0)
user.visible_message("[user] uproots the weeds.", span_notice("You remove the weeds from [src]."))
weedlevel = 0
- update_icon()
+ update_appearance(updates = ALL)
else
to_chat(user, span_warning("This plot is completely devoid of weeds! It doesn't need uprooting."))
@@ -844,7 +844,7 @@
user.visible_message(span_notice("[user] [using_irrigation ? "" : "dis"]connects [src]'s irrigation hoses."), \
span_notice("You [using_irrigation ? "" : "dis"]connect [src]'s irrigation hoses."))
for(var/obj/machinery/hydroponics/h in range(1,src))
- h.update_icon()
+ h.update_appearance(updates = ALL)
else if(istype(O, /obj/item/shovel/spade))
if(!myseed && !weedlevel)
@@ -864,7 +864,7 @@
myseed = null
update_name()
weedlevel = 0 //Has a side effect of cleaning up those nasty weeds
- update_icon()
+ update_appearance(updates = ALL)
else
return ..()
@@ -895,7 +895,7 @@
qdel(myseed)
myseed = null
update_name()
- update_icon()
+ update_appearance(updates = ALL)
else
if(user)
examine(user)
@@ -903,7 +903,7 @@
/obj/machinery/hydroponics/AltClick(mob/user)
. = ..()
if(!anchored)
- update_icon()
+ update_appearance(updates = ALL)
return FALSE
var/warning = tgui_alert(user, "Are you sure you wish to empty the tray's nutrient beaker?","Empty Tray Nutrients?", list("Yes", "No"))
if(warning == "Yes" && user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
@@ -931,7 +931,7 @@
myseed = null
update_name()
dead = 0
- update_icon()
+ update_appearance(updates = ALL)
/// Tray Setters - The following procs adjust the tray or plants variables, and make sure that the stat doesn't go out of bounds.///
/obj/machinery/hydroponics/proc/adjustNutri(adjustamt)
@@ -965,9 +965,9 @@
/obj/machinery/hydroponics/proc/become_self_sufficient() // Ambrosia Gaia effect
visible_message(span_boldnotice("[src] begins to glow with a beautiful light!"))
self_sustaining = TRUE
- update_icon()
+ update_appearance(updates = ALL)
-/obj/machinery/hydroponics/proc/update_name()
+/obj/machinery/hydroponics/update_name()
if(myseed)
name = "[initial(name)] ([myseed.plantname])"
else
diff --git a/code/modules/hydroponics/plant_genes.dm b/code/modules/hydroponics/plant_genes.dm
index ecf0626b8c07..7ce4c92a576b 100644
--- a/code/modules/hydroponics/plant_genes.dm
+++ b/code/modules/hydroponics/plant_genes.dm
@@ -239,8 +239,8 @@
C.charge = newcharge
if(isobj(C.loc))
var/obj/O = C.loc
- O.update_icon() //update power meters and such
- C.update_icon()
+ O.update_appearance(updates = ALL) //update power meters and such
+ C.update_appearance(updates = ALL)
batteries_recharged = 1
if(batteries_recharged)
to_chat(target, span_notice("Your batteries are recharged!"))
diff --git a/code/modules/instruments/items.dm b/code/modules/instruments/items.dm
index 59fd4e84fde6..09d8d7df7206 100644
--- a/code/modules/instruments/items.dm
+++ b/code/modules/instruments/items.dm
@@ -94,14 +94,14 @@
*/
/obj/item/instrument/piano_synth/headphones/proc/start_playing()
icon_state = "[initial(icon_state)]_on"
- update_icon()
+ update_appearance(updates = ALL)
/**
* Called by a component signal when our song stops playing.
*/
/obj/item/instrument/piano_synth/headphones/proc/stop_playing()
icon_state = "[initial(icon_state)]"
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/instrument/banjo
name = "banjo"
diff --git a/code/modules/jobs/job_types/_job.dm b/code/modules/jobs/job_types/_job.dm
index 5677347d72e8..0e0867ce3bae 100644
--- a/code/modules/jobs/job_types/_job.dm
+++ b/code/modules/jobs/job_types/_job.dm
@@ -338,7 +338,7 @@
H.equip_to_slot_if_possible(PDA, SLOT_WEAR_ID)
PDA.update_label()
- PDA.update_icon()
+ PDA.update_appearance(updates = ALL)
PDA.update_filters()
else
diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm
index c1d040f74847..0a19eb395c17 100644
--- a/code/modules/library/lib_items.dm
+++ b/code/modules/library/lib_items.dm
@@ -48,7 +48,7 @@
for(var/obj/item/I in loc)
if(istype(I, /obj/item/book))
I.forceMove(src)
- update_icon()
+ update_appearance(updates = ALL)
/obj/structure/bookcase/attackby(obj/item/I, mob/user, params)
switch(state)
@@ -82,13 +82,13 @@
if(is_type_in_list(I, allowed_books))
if(!user.transferItemToLoc(I, src))
return
- update_icon()
+ update_appearance(updates = ALL)
else if(STR)
for(var/obj/item/T in I.contents)
if(istype(T, /obj/item/book) || istype(T, /obj/item/spellbook))
STR.remove_from_storage(T, src)
to_chat(user, span_notice("You empty \the [I] into \the [src]."))
- update_icon()
+ update_appearance(updates = ALL)
else if(istype(I, /obj/item/pen))
if(!user.is_literate())
to_chat(user, span_notice("You scribble illegibly on the side of [src]!"))
@@ -129,7 +129,7 @@
user.put_in_hands(choice)
else
choice.forceMove(drop_location())
- update_icon()
+ update_appearance(updates = ALL)
/obj/structure/bookcase/deconstruct(disassembled = TRUE)
@@ -139,7 +139,7 @@
qdel(src)
-/obj/structure/bookcase/update_icon()
+/obj/structure/bookcase/update_appearance(updates = ALL)
if(contents.len < 5)
icon_state = "book-[contents.len]"
else
@@ -152,7 +152,7 @@
/obj/structure/bookcase/manuals/medical/Initialize()
. = ..()
new /obj/item/book/manual/wiki/medical_cloning(src)
- update_icon()
+ update_appearance(updates = ALL)
/obj/structure/bookcase/manuals/engineering
@@ -165,7 +165,7 @@
new /obj/item/book/manual/wiki/engineering_guide(src)
new /obj/item/book/manual/wiki/engineering_singulo_tesla(src)
new /obj/item/book/manual/wiki/robotics_cyborgs(src)
- update_icon()
+ update_appearance(updates = ALL)
/obj/structure/bookcase/manuals/research_and_development
@@ -174,7 +174,7 @@
/obj/structure/bookcase/manuals/research_and_development/Initialize()
. = ..()
new /obj/item/book/manual/wiki/research_and_development(src)
- update_icon()
+ update_appearance(updates = ALL)
/*
diff --git a/code/modules/library/random_books.dm b/code/modules/library/random_books.dm
index 193e6e6ba2d3..fecd4a5735d6 100644
--- a/code/modules/library/random_books.dm
+++ b/code/modules/library/random_books.dm
@@ -31,11 +31,11 @@
/obj/structure/bookcase/random/Initialize(mapload)
. = ..()
if(!book_count || !isnum(book_count))
- update_icon()
+ update_appearance(updates = ALL)
return
book_count += pick(-1,-1,0,1,1)
create_random_books(book_count, src, FALSE, category)
- update_icon()
+ update_appearance(updates = ALL)
/proc/create_random_books(amount = 2, location, fail_loud = FALSE, category = null)
. = list()
@@ -45,7 +45,7 @@
if(fail_loud || prob(5))
var/obj/item/paper/P = new(location)
P.info = "There once was a book from Nantucket
But the database failed us, so f*$! it.
I tried to be good to you
Now this is an I.O.U
If you're feeling entitled, well, stuff it!
~"
- P.update_icon()
+ P.update_appearance(updates = ALL)
return
if(prob(25))
category = null
diff --git a/code/modules/library/soapstone.dm b/code/modules/library/soapstone.dm
index ee83c53b4e8b..ad4b1b45e7f6 100644
--- a/code/modules/library/soapstone.dm
+++ b/code/modules/library/soapstone.dm
@@ -145,9 +145,9 @@
creator_key = user.ckey
realdate = world.realtime
map = SSmapping.config.map_name
- update_icon()
+ update_appearance(updates = ALL)
-/obj/structure/chisel_message/update_icon()
+/obj/structure/chisel_message/update_appearance(updates = ALL)
..()
var/hash = md5(hidden_message)
var/newcolor = copytext_char(hash, 1, 7)
@@ -188,7 +188,7 @@
var/turf/newloc = locate(x, y, z)
if(isturf(newloc))
forceMove(newloc)
- update_icon()
+ update_appearance(updates = ALL)
/obj/structure/chisel_message/examine(mob/user)
. = ..()
diff --git a/code/modules/mapping/mapping_helpers.dm b/code/modules/mapping/mapping_helpers.dm
index 703f47e6f33d..09b952f07d75 100644
--- a/code/modules/mapping/mapping_helpers.dm
+++ b/code/modules/mapping/mapping_helpers.dm
@@ -247,7 +247,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/mapping_helpers/no_lava)
else
var/obj/item/organ/O = part
O.organ_flags |= ORGAN_FROZEN
- j.update_icon()
+ j.update_appearance(updates = ALL)
qdel(src)
/obj/effect/mapping_helpers/teleport_anchor
diff --git a/code/modules/mapping/minimap.dm b/code/modules/mapping/minimap.dm
index 6b7293ade551..9f9837120ca7 100644
--- a/code/modules/mapping/minimap.dm
+++ b/code/modules/mapping/minimap.dm
@@ -105,9 +105,9 @@
/obj/item/map/station/Initialize()
..()
minimaps += SSmapping.station_minimaps
- update_icon()
+ update_appearance(updates = ALL)
-/obj/item/map/update_icon()
+/obj/item/map/update_appearance(updates = ALL)
cut_overlays()
var/datum/minimap/map = minimaps[1]
if(!map) return
diff --git a/code/modules/mining/equipment/explorer_gear.dm b/code/modules/mining/equipment/explorer_gear.dm
index 95e51c784a7a..612adcab945a 100644
--- a/code/modules/mining/equipment/explorer_gear.dm
+++ b/code/modules/mining/equipment/explorer_gear.dm
@@ -124,9 +124,9 @@
/obj/item/clothing/head/helmet/space/hostile_environment/Initialize()
. = ..()
AddComponent(/datum/component/spraycan_paintable)
- update_icon()
+ update_appearance(updates = ALL)
-/obj/item/clothing/head/helmet/space/hostile_environment/update_icon()
+/obj/item/clothing/head/helmet/space/hostile_environment/update_appearance(updates = ALL)
..()
cut_overlays()
var/mutable_appearance/glass_overlay = mutable_appearance(icon, "hostile_env_glass")
diff --git a/code/modules/mining/equipment/kinetic_crusher.dm b/code/modules/mining/equipment/kinetic_crusher.dm
index 8ce5c4f88b81..732986ad11e4 100644
--- a/code/modules/mining/equipment/kinetic_crusher.dm
+++ b/code/modules/mining/equipment/kinetic_crusher.dm
@@ -28,7 +28,7 @@
var/detonation_damage = 50
var/backstab_bonus = 30
-/obj/item/twohanded/kinetic_crusher/update_icon() //Updates the sprite for in-hand and on-mob.
+/obj/item/twohanded/kinetic_crusher/update_appearance(updates = ALL) //Updates the sprite for in-hand and on-mob.
icon_state = "mining_hammer[wielded]"
return
@@ -508,7 +508,7 @@
..()
-/obj/item/twohanded/kinetic_crusher/mega/update_icon()
+/obj/item/twohanded/kinetic_crusher/mega/update_appearance(updates = ALL)
icon_state = "magmite_crusher[wielded]"
return
diff --git a/code/modules/mining/equipment/marker_beacons.dm b/code/modules/mining/equipment/marker_beacons.dm
index 864fdb0e26b2..ba04f19df1d9 100644
--- a/code/modules/mining/equipment/marker_beacons.dm
+++ b/code/modules/mining/equipment/marker_beacons.dm
@@ -33,14 +33,14 @@ GLOBAL_LIST_INIT(marker_beacon_colors, list(
/obj/item/stack/marker_beacon/Initialize(mapload)
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/stack/marker_beacon/examine(mob/user)
. = ..()
. += "Use in-hand to place a [singular_name].\n"+\
"Alt-click to select a color. Current color is [picked_color]."
-/obj/item/stack/marker_beacon/update_icon()
+/obj/item/stack/marker_beacon/update_appearance(updates = ALL)
icon_state = "[initial(icon_state)][lowertext(picked_color)]"
/obj/item/stack/marker_beacon/attack_self(mob/user)
@@ -64,7 +64,7 @@ GLOBAL_LIST_INIT(marker_beacon_colors, list(
return
if(input_color)
picked_color = input_color
- update_icon()
+ update_appearance(updates = ALL)
/obj/structure/marker_beacon
name = "marker beacon"
@@ -83,20 +83,20 @@ GLOBAL_LIST_INIT(marker_beacon_colors, list(
/obj/structure/marker_beacon/Initialize(mapload, set_color)
. = ..()
picked_color = set_color
- update_icon()
+ update_appearance(updates = ALL)
/obj/structure/marker_beacon/deconstruct(disassembled = TRUE)
if(!(flags_1 & NODECONSTRUCT_1))
var/obj/item/stack/marker_beacon/M = new(loc)
M.picked_color = picked_color
- M.update_icon()
+ M.update_appearance(updates = ALL)
qdel(src)
/obj/structure/marker_beacon/examine(mob/user)
. = ..()
. += span_notice("Alt-click to select a color. Current color is [picked_color].")
-/obj/structure/marker_beacon/update_icon()
+/obj/structure/marker_beacon/update_appearance(updates = ALL)
while(!picked_color || !GLOB.marker_beacon_colors[picked_color])
picked_color = pick(GLOB.marker_beacon_colors)
icon_state = "[initial(icon_state)][lowertext(picked_color)]-on"
@@ -110,7 +110,7 @@ GLOBAL_LIST_INIT(marker_beacon_colors, list(
if(do_after(user, remove_speed, src))
var/obj/item/stack/marker_beacon/M = new(loc)
M.picked_color = picked_color
- M.update_icon()
+ M.update_appearance(updates = ALL)
transfer_fingerprints_to(M)
if(user.put_in_hands(M, TRUE)) //delete the beacon if it fails
playsound(src, 'sound/items/deconstruct.ogg', 50, 1)
@@ -143,4 +143,4 @@ GLOBAL_LIST_INIT(marker_beacon_colors, list(
return
if(input_color)
picked_color = input_color
- update_icon()
+ update_appearance(updates = ALL)
diff --git a/code/modules/mining/equipment/regenerative_core.dm b/code/modules/mining/equipment/regenerative_core.dm
index b5e179ce4912..073e4b4e94cd 100644
--- a/code/modules/mining/equipment/regenerative_core.dm
+++ b/code/modules/mining/equipment/regenerative_core.dm
@@ -41,7 +41,7 @@
/obj/item/organ/regenerative_core/proc/preserved(implanted = 0)
inert = FALSE
preserved = TRUE
- update_icon()
+ update_appearance(updates = ALL)
name = "preserved regenerative core"
desc = "All that remains of a hivelord. It is preserved, allowing you to use it to heal completely without danger of decay."
if(implanted)
@@ -54,7 +54,7 @@
name = "decayed regenerative core"
desc = "All that remains of a hivelord. It has decayed, and is completely useless."
SSblackbox.record_feedback("nested tally", "hivelord_core", 1, list("[type]", "inert"))
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/organ/regenerative_core/ui_action_click()
if(inert)
@@ -134,9 +134,9 @@
/obj/item/organ/regenerative_core/legion/Initialize()
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
-/obj/item/organ/regenerative_core/update_icon()
+/obj/item/organ/regenerative_core/update_appearance(updates = ALL)
icon_state = inert ? "legion_soul_inert" : "legion_soul"
cut_overlays()
if(!inert && !preserved)
diff --git a/code/modules/mining/equipment/survival_pod.dm b/code/modules/mining/equipment/survival_pod.dm
index e4f7f6056887..9e85edc6baed 100644
--- a/code/modules/mining/equipment/survival_pod.dm
+++ b/code/modules/mining/equipment/survival_pod.dm
@@ -138,7 +138,7 @@
icon = 'icons/obj/lavaland/survival_pod.dmi'
icon_state = "sleeper"
-/obj/machinery/sleeper/survival_pod/update_icon()
+/obj/machinery/sleeper/survival_pod/update_appearance(updates = ALL)
if(state_open)
cut_overlays()
else
@@ -154,8 +154,9 @@
/obj/machinery/stasis/survival_pod/play_power_sound()
return
-/obj/machinery/stasis/survival_pod/update_icon()
- return
+/obj/machinery/stasis/survival_pod/Initialize(mapload)
+ AddElement(/datum/element/update_icon_blocker)
+ return ..()
//Computer
/obj/item/gps/computer
@@ -206,8 +207,9 @@
pitches = FALSE
var/empty = FALSE
-/obj/machinery/smartfridge/survival_pod/update_icon()
- return
+/obj/machinery/smartfridge/survival_pod/Initialize(mapload)
+ AddElement(/datum/element/update_icon_blocker)
+ return ..()
/obj/machinery/smartfridge/survival_pod/Initialize(mapload)
. = ..()
diff --git a/code/modules/mining/lavaland/ash_flora.dm b/code/modules/mining/lavaland/ash_flora.dm
index 30b37f99f25d..8eac950db92e 100644
--- a/code/modules/mining/lavaland/ash_flora.dm
+++ b/code/modules/mining/lavaland/ash_flora.dm
@@ -300,7 +300,7 @@
icon = 'icons/obj/lavaland/ash_flora.dmi'
icon_state = "mushroom_bowl"
-/obj/item/reagent_containers/glass/bowl/mushroom_bowl/update_icon()
+/obj/item/reagent_containers/glass/bowl/mushroom_bowl/update_appearance(updates = ALL)
cut_overlays()
if(reagents && reagents.total_volume)
var/mutable_appearance/filling = mutable_appearance('icons/obj/lavaland/ash_flora.dmi', "fullbowl")
diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm
index 209f262c5244..06aab00bd118 100644
--- a/code/modules/mining/lavaland/necropolis_chests.dm
+++ b/code/modules/mining/lavaland/necropolis_chests.dm
@@ -683,7 +683,7 @@ GLOBAL_LIST_EMPTY(aide_list)
desc = "A flask with an almost-holy aura emitting from it. The label on the bottle says: 'erqo'hyy tvi'rf lbh jv'atf'."
list_reagents = list(/datum/reagent/flightpotion = 5)
-/obj/item/reagent_containers/glass/bottle/potion/update_icon()
+/obj/item/reagent_containers/glass/bottle/potion/update_appearance(updates = ALL)
if(reagents.total_volume)
icon_state = initial(icon_state)
desc = initial(desc)
@@ -1504,18 +1504,18 @@ GLOBAL_LIST_EMPTY(aide_list)
chaser_speed = max(chaser_speed + health_percent, 0.5) //one tenth of a second faster for each missing 10% of health
blast_range -= round(health_percent * 10) //one additional range for each missing 10% of health
-/obj/item/hierophant_club/update_icon()
+/obj/item/hierophant_club/update_appearance(updates = ALL)
icon_state = "hierophant_club[timer <= world.time ? "_ready":""][(beacon && !QDELETED(beacon)) ? "":"_beacon"]"
item_state = icon_state
if(ismob(loc))
var/mob/M = loc
- M.update_inv_hands()
+ M.update_held_items()
M.update_inv_back()
/obj/item/hierophant_club/proc/prepare_icon_update()
- update_icon()
+ update_appearance(updates = ALL)
sleep(timer - world.time)
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/hierophant_club/ui_action_click(mob/user, action)
if(istype(action, /datum/action/item_action/toggle_unfriendly_fire)) //toggle friendly fire...
@@ -1743,7 +1743,7 @@ GLOBAL_LIST_EMPTY(aide_list)
var/fauna_damage_type = BRUTE
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
-/obj/item/twohanded/bonespear/stalwartpike/update_icon()
+/obj/item/twohanded/bonespear/stalwartpike/update_appearance(updates = ALL)
. = ..()
if(wielded)
icon_state = "stalwart_spear1"
diff --git a/code/modules/mining/lavaland/world_anvil.dm b/code/modules/mining/lavaland/world_anvil.dm
index 76b08f2ca73a..18f77da0d08e 100644
--- a/code/modules/mining/lavaland/world_anvil.dm
+++ b/code/modules/mining/lavaland/world_anvil.dm
@@ -27,7 +27,7 @@
QDEL_NULL(internal)
. = ..()
-/obj/structure/world_anvil/update_icon()
+/obj/structure/world_anvil/update_appearance(updates = ALL)
icon_state = forge_charges > 0 ? "anvil_a" : "anvil"
if(forge_charges > 0)
set_light(4,1,LIGHT_COLOR_ORANGE)
@@ -44,7 +44,7 @@
forge_charges = forge_charges + placed_ore.quality
to_chat(user,"You place down the gibtonite on the World Anvil, and watch as the gibtonite melts into it. The World Anvil is now heated enough for [forge_charges] forge[forge_charges > 1 ? "s" : ""].")
qdel(placed_ore)
- update_icon()
+ update_appearance(updates = ALL)
return
if(forge_charges <= 0)
to_chat(user,"The World Anvil is not hot enough to be usable!")
@@ -70,7 +70,7 @@
forge_charges--
if(forge_charges <= 0)
visible_message("The World Anvil cools down.")
- update_icon()
+ update_appearance(updates = ALL)
diff --git a/code/modules/mining/machine_redemption.dm b/code/modules/mining/machine_redemption.dm
index 998142f53fc9..8e2457b03a6d 100644
--- a/code/modules/mining/machine_redemption.dm
+++ b/code/modules/mining/machine_redemption.dm
@@ -345,7 +345,7 @@
do_sparks(5, TRUE, src)
..()
-/obj/machinery/mineral/ore_redemption/update_icon()
+/obj/machinery/mineral/ore_redemption/update_appearance(updates = ALL)
if(powered())
icon_state = initial(icon_state)
else
diff --git a/code/modules/mining/machine_silo.dm b/code/modules/mining/machine_silo.dm
index ddaa3629eca9..ef65ebe7688b 100644
--- a/code/modules/mining/machine_silo.dm
+++ b/code/modules/mining/machine_silo.dm
@@ -71,7 +71,7 @@ GLOBAL_LIST_EMPTY(silo_access_logs)
if(user.a_intent == INTENT_HARM) //so we can hit the machine
return ..()
- if(default_deconstruction_screwdriver(user, "icon_state", "icon_state", W))
+ if(default_deconstruction_screwdriver(user, "silo_open", "silo", W))
return TRUE
if(default_deconstruction_crowbar(W))
diff --git a/code/modules/mining/machine_vending.dm b/code/modules/mining/machine_vending.dm
index fcd4fe2dc71f..cfa4211a906c 100644
--- a/code/modules/mining/machine_vending.dm
+++ b/code/modules/mining/machine_vending.dm
@@ -105,7 +105,7 @@
var/datum/data/mining_equipment/M = p
GLOB.vending_products[M.equipment_path] = 1
-/obj/machinery/mineral/equipment_vendor/update_icon()
+/obj/machinery/mineral/equipment_vendor/update_appearance(updates = ALL)
if(powered())
icon_state = initial(icon_state)
else
diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm
index a950925c99f6..0d831c0f3cd6 100644
--- a/code/modules/mining/ores_coins.dm
+++ b/code/modules/mining/ores_coins.dm
@@ -22,7 +22,7 @@
var/list/stack_overlays
var/edible = FALSE //can a preternis eat it for some funny effect?
-/obj/item/stack/ore/update_icon()
+/obj/item/stack/ore/update_appearance(updates = ALL)
var/difference = min(ORESTACK_OVERLAYS_MAX, amount) - (LAZYLEN(stack_overlays)+1)
if(difference == 0)
return
@@ -612,7 +612,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\
/obj/item/coinstack/Initialize()
. = ..()
coins = list()
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/coinstack/examine(mob/user)
. = ..()
@@ -626,7 +626,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\
if(antag > 1)
. += span_info("But they told me I could only have one at a time...")
-/obj/item/coinstack/update_icon()
+/obj/item/coinstack/update_appearance(updates = ALL)
cut_overlays()
for(var/i in 1 to length(coins))
var/obj/item/coin/C = coins[i]
@@ -655,7 +655,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\
C.pixel_y = 0
src.add_fingerprint(user)
to_chat(user,span_notice("You add [C] to the stack of coins."))
- update_icon()
+ update_appearance(updates = ALL)
return TRUE
/obj/item/coinstack/proc/remove_from_stack(mob/living/user) //you can only remove the topmost coin from the stack
@@ -663,7 +663,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\
if(top_coin)
coins -= top_coin
user.put_in_active_hand(top_coin)
- update_icon()
+ update_appearance(updates = ALL)
if(length(coins) <= 1) //one coin left, we're done here
var/obj/item/coin/lastCoin = coins[1]
coins -= coins[1]
diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm
index 8b623a5b7edd..60b033cd9087 100644
--- a/code/modules/mob/dead/new_player/new_player.dm
+++ b/code/modules/mob/dead/new_player/new_player.dm
@@ -299,7 +299,7 @@
observer.real_name = observer.client.prefs.read_preference(/datum/preference/name/real_name)
observer.name = observer.real_name
observer.client.init_verbs()
- observer.update_icon()
+ observer.update_appearance(updates = ALL)
observer.stop_sound_channel(CHANNEL_LOBBYMUSIC)
QDEL_NULL(mind)
qdel(src)
diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm
index 2b4984769ab9..bfe9e407c1dd 100644
--- a/code/modules/mob/dead/observer/observer.dm
+++ b/code/modules/mob/dead/observer/observer.dm
@@ -115,7 +115,7 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER)
facial_hair_style = body_human.facial_hair_style
facial_hair_color = brighten_color(body_human.facial_hair_color)
- update_icon()
+ update_appearance(updates = ALL)
if(!T || is_secret_level(T.z))
var/list/turfs = get_area_turfs(/area/shuttle/arrival)
@@ -193,7 +193,9 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER)
* Hair will always update its dir, so if your sprite has no dirs the haircut will go all over the place.
* |- Ricotez
*/
-/mob/dead/observer/proc/update_icon(new_form)
+/mob/dead/observer/update_icon(updates=ALL, new_form)
+ . = ..()
+
if(client) //We update our preferences in case they changed right before update_icon was called.
ghost_accs = client.prefs.read_preference(/datum/preference/choiced/ghost_accessories)
ghost_others = client.prefs.read_preference(/datum/preference/choiced/ghost_others)
@@ -818,7 +820,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
qdel(species)
- update_icon()
+ update_appearance(updates = ALL)
/mob/dead/observer/canUseTopic(atom/movable/M, be_close=FALSE, no_dextery=FALSE, no_tk=FALSE)
return IsAdminGhost(usr)
diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm
index 6b212efaa5ec..6281ee138adc 100644
--- a/code/modules/mob/inventory.dm
+++ b/code/modules/mob/inventory.dm
@@ -190,7 +190,7 @@
I.equipped(src, SLOT_HANDS, no_sound)
if(I.pulledby)
I.pulledby.stop_pulling()
- update_inv_hands()
+ update_held_items()
I.pixel_x = initial(I.pixel_x)
I.pixel_y = initial(I.pixel_y)
I.transform = initial(I.transform)
@@ -330,7 +330,7 @@
var/hand_index = get_held_index_of_item(I)
if(hand_index)
held_items[hand_index] = null
- update_inv_hands()
+ update_held_items()
if(I)
if(client)
client.screen -= I
@@ -434,7 +434,7 @@
return FALSE
if(M.equip_to_appropriate_slot(src))
- M.update_inv_hands()
+ M.update_held_items()
return TRUE
else
if(equip_delay_self)
diff --git a/code/modules/mob/living/brain/MMI.dm b/code/modules/mob/living/brain/MMI.dm
index 27b646b0c990..86e2a59bbd59 100644
--- a/code/modules/mob/living/brain/MMI.dm
+++ b/code/modules/mob/living/brain/MMI.dm
@@ -24,7 +24,7 @@
Unless you are slaved as a silicon, you retain crew/antagonist/etc status and should behave as such.\n\
Being placed in a mech does not slave you to any laws."
-/obj/item/mmi/update_icon()
+/obj/item/mmi/update_appearance(updates = ALL)
if(!brain)
icon_state = "mmi_off"
return
@@ -83,7 +83,7 @@
brain = newbrain
name = "[initial(name)]: [brainmob.real_name]"
- update_icon()
+ update_appearance(updates = ALL)
SSblackbox.record_feedback("amount", "mmis_filled", 1)
@@ -110,7 +110,7 @@
if(!brainmob) return
to_chat(brainmob, span_userdanger("Due to the traumatic danger of your removal, all memories of the events leading to your brain being removed are lost[rebooting ? ", along with all memories of the events leading to your death as a cyborg" : ""]"))
eject_brain(user)
- update_icon()
+ update_appearance(updates = ALL)
name = initial(name)
user.visible_message(span_notice("[user] rips the brain out of [src]"), span_danger("You successfully remove the brain from the [src][rebooting ? ", interrupting the reboot process" : ""]"))
if(rebooting)
@@ -159,7 +159,7 @@
name = "[initial(name)]: [brainmob.real_name]"
to_chat(brainmob, welcome_message)
- update_icon()
+ update_appearance(updates = ALL)
return
/obj/item/mmi/proc/replacement_ai_name()
diff --git a/code/modules/mob/living/brain/death.dm b/code/modules/mob/living/brain/death.dm
index e90637f63ed8..9419a9ebe61a 100644
--- a/code/modules/mob/living/brain/death.dm
+++ b/code/modules/mob/living/brain/death.dm
@@ -7,7 +7,7 @@
var/obj/item/mmi = container
mmi.visible_message(span_warning("[src]'s MMI flatlines!"), \
span_italics("You hear something flatline."))
- mmi.update_icon()
+ mmi.update_appearance(updates = ALL)
return ..()
diff --git a/code/modules/mob/living/brain/posibrain.dm b/code/modules/mob/living/brain/posibrain.dm
index e7f48ee9991e..3f444e185370 100644
--- a/code/modules/mob/living/brain/posibrain.dm
+++ b/code/modules/mob/living/brain/posibrain.dm
@@ -58,12 +58,12 @@ GLOBAL_VAR(posibrain_notify_cooldown)
ping_ghosts("requested", FALSE)
next_ask = world.time + askDelay
searching = TRUE
- update_icon()
+ update_appearance(updates = ALL)
addtimer(CALLBACK(src, PROC_REF(check_success)), askDelay)
/obj/item/mmi/posibrain/proc/check_success()
searching = FALSE
- update_icon()
+ update_appearance(updates = ALL)
if(QDELETED(brainmob))
return
if(brainmob.client)
@@ -126,7 +126,7 @@ GLOBAL_VAR(posibrain_notify_cooldown)
brainmob.mind.remove_all_antag()
brainmob.mind.wipe_memory()
- update_icon()
+ update_appearance(updates = ALL)
return ..()
/obj/item/mmi/posibrain/proc/transfer_personality(mob/candidate)
@@ -204,7 +204,7 @@ GLOBAL_VAR(posibrain_notify_cooldown)
return
-/obj/item/mmi/posibrain/update_icon()
+/obj/item/mmi/posibrain/update_appearance(updates = ALL)
if(searching)
icon_state = "[initial(icon_state)]-searching"
return
diff --git a/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm b/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm
index 3e5fdaf31ef9..f7de3864883d 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm
@@ -44,7 +44,7 @@
alt_icon = old_icon
pixel_x = get_standard_pixel_x_offset(mobility_flags & MOBILITY_STAND)
pixel_y = get_standard_pixel_y_offset(mobility_flags & MOBILITY_STAND)
- update_inv_hands()
+ update_held_items()
update_inv_handcuffed()
/mob/living/carbon/alien/humanoid/regenerate_icons()
@@ -75,7 +75,7 @@
overlays_standing[HANDCUFF_LAYER] = cuffs
//Royals have bigger sprites, so inhand things must be handled differently.
-/mob/living/carbon/alien/humanoid/royal/update_inv_hands()
+/mob/living/carbon/alien/humanoid/royal/update_held_items()
..()
remove_overlay(HANDS_LAYER)
var/list/hands = list()
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index 45f47a9d6044..42e7e6738cc6 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -45,10 +45,10 @@
var/atom/movable/screen/inventory/hand/H
H = hud_used.hand_slots["[oindex]"]
if(H)
- H.update_icon()
+ H.update_appearance(updates = ALL)
H = hud_used.hand_slots["[held_index]"]
if(H)
- H.update_icon()
+ H.update_appearance(updates = ALL)
/mob/living/carbon/activate_hand(selhand) //l/r OR 1-held_items.len
diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm
index dec676f7b770..6c25a02e06eb 100644
--- a/code/modules/mob/living/carbon/carbon_defense.dm
+++ b/code/modules/mob/living/carbon/carbon_defense.dm
@@ -67,7 +67,7 @@
I.attack_hand(src)
if(get_active_held_item() == I) //if our attack_hand() picks up the item...
visible_message(span_warning("[src] catches [I]!")) //catch that sucker!
- update_inv_hands()
+ update_held_items()
I.pixel_x = initial(I.pixel_x)
I.pixel_y = initial(I.pixel_y)
I.transform = initial(I.transform)
diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm
index 2574a5250c22..f6a10476b4cf 100644
--- a/code/modules/mob/living/carbon/human/human_movement.dm
+++ b/code/modules/mob/living/carbon/human/human_movement.dm
@@ -80,7 +80,7 @@
FP.entered_dirs |= dir
FP.bloodiness = S.bloody_shoes[S.blood_state] - BLOOD_LOSS_IN_SPREAD
FP.add_blood_DNA(S.return_blood_DNA())
- FP.update_icon()
+ FP.update_appearance(updates = ALL)
update_inv_shoes()
//End bloody footprints
if(istype(S))
diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm
index 6a8c17291a18..f48942ef83c8 100644
--- a/code/modules/mob/living/carbon/human/inventory.dm
+++ b/code/modules/mob/living/carbon/human/inventory.dm
@@ -343,7 +343,7 @@
to_chat(src, "You have no backpack to take something out of!")
return
if(equip_to_slot_if_possible(thing, SLOT_BACK))
- update_inv_hands()
+ update_held_items()
return
if(!SEND_SIGNAL(equipped_back, COMSIG_CONTAINS_STORAGE)) // not a storage item
if(!thing)
@@ -374,7 +374,7 @@
to_chat(src, "You have no belt to take something out of!")
return
if(equip_to_slot_if_possible(thing, SLOT_BELT))
- update_inv_hands()
+ update_held_items()
return
if(!SEND_SIGNAL(equipped_belt, COMSIG_CONTAINS_STORAGE)) // not a storage item
if(!thing)
@@ -403,7 +403,7 @@
to_chat(src, span_notice("You have no suit storage to take something out of."))
return
if(equip_to_slot_if_possible(thing, SLOT_SUIT_STORE))
- update_inv_hands()
+ update_held_items()
return
if(!SEND_SIGNAL(equipped_suit, COMSIG_CONTAINS_STORAGE)) // not a storage item
if(!thing)
diff --git a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm
index 9d6fd3130a33..9ba5168380c0 100644
--- a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm
@@ -147,6 +147,9 @@
var/obj/item/light_eater/blade
decay_factor = 0
+/obj/item/organ/heart/nightmare/Initialize(mapload)
+ AddElement(/datum/element/update_icon_blocker)
+ return ..()
/obj/item/organ/heart/nightmare/attack(mob/M, mob/living/carbon/user, obj/target)
if(M != user)
@@ -179,9 +182,6 @@
/obj/item/organ/heart/nightmare/Stop()
return 0
-/obj/item/organ/heart/nightmare/update_icon()
- return //always beating visually
-
/obj/item/organ/heart/nightmare/process()
if(QDELETED(owner) || owner.stat != DEAD || !owner)
respawn_progress = 0
@@ -261,7 +261,7 @@
var/obj/item/pda/PDA = O
PDA.set_light_on(FALSE)
PDA.set_light_range(0) //It won't be turning on again.
- PDA.update_icon()
+ PDA.update_appearance(updates = ALL)
visible_message(span_danger("The light in [PDA] shorts out!"))
else
visible_message(span_danger("[O] is disintegrated by [src]!"))
diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm
index c0bcb9f8e63a..e1d528f7ed6b 100644
--- a/code/modules/mob/living/carbon/human/update_icons.dm
+++ b/code/modules/mob/living/carbon/human/update_icons.dm
@@ -102,7 +102,7 @@ There are several things that need to be remembered:
if(client && hud_used)
var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_W_UNIFORM]
- inv.update_icon()
+ inv.update_appearance(updates = ALL)
if(istype(w_uniform, /obj/item/clothing/under))
var/obj/item/clothing/under/U = w_uniform
@@ -148,7 +148,7 @@ There are several things that need to be remembered:
if(client && hud_used)
var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_WEAR_ID]
- inv.update_icon()
+ inv.update_appearance(updates = ALL)
var/mutable_appearance/id_overlay = overlays_standing[ID_LAYER]
@@ -173,7 +173,7 @@ There are several things that need to be remembered:
if(client && hud_used && hud_used.inv_slots[SLOT_GLOVES])
var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_GLOVES]
- inv.update_icon()
+ inv.update_appearance(updates = ALL)
if(!gloves && blood_in_hands)
var/mutable_appearance/bloody_overlay = mutable_appearance('icons/effects/blood.dmi', "bloodyhands", -GLOVES_LAYER)
@@ -209,7 +209,7 @@ There are several things that need to be remembered:
if(client && hud_used)
var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_GLASSES]
- inv.update_icon()
+ inv.update_appearance(updates = ALL)
if(glasses)
glasses.screen_loc = ui_glasses //...draw the item in the inventory screen
@@ -237,7 +237,7 @@ There are several things that need to be remembered:
if(client && hud_used)
var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_EARS]
- inv.update_icon()
+ inv.update_appearance(updates = ALL)
if(ears)
ears.screen_loc = ui_ears //move the item to the appropriate screen loc
@@ -258,7 +258,7 @@ There are several things that need to be remembered:
if(client && hud_used)
var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_NECK]
- inv.update_icon()
+ inv.update_appearance(updates = ALL)
if(wear_neck)
wear_neck.screen_loc = ui_neck
@@ -283,7 +283,7 @@ There are several things that need to be remembered:
if(client && hud_used)
var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_SHOES]
- inv.update_icon()
+ inv.update_appearance(updates = ALL)
if(shoes)
var/target_overlay = shoes.icon_state
@@ -311,7 +311,7 @@ There are several things that need to be remembered:
if(client && hud_used)
var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_SUIT_STORE]
- inv.update_icon()
+ inv.update_appearance(updates = ALL)
if(s_store)
s_store.screen_loc = ui_sstore1
@@ -350,7 +350,7 @@ There are several things that need to be remembered:
if(client && hud_used)
var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_BELT]
- inv.update_icon()
+ inv.update_appearance(updates = ALL)
if(belt)
belt.screen_loc = ui_belt
@@ -373,7 +373,7 @@ There are several things that need to be remembered:
if(client && hud_used)
var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_WEAR_SUIT]
- inv.update_icon()
+ inv.update_appearance(updates = ALL)
if(istype(wear_suit, /obj/item))
wear_suit.screen_loc = ui_oclothing
@@ -402,10 +402,10 @@ There are several things that need to be remembered:
var/atom/movable/screen/inventory/inv
inv = hud_used.inv_slots[SLOT_L_STORE]
- inv.update_icon()
+ inv.update_appearance(updates = ALL)
inv = hud_used.inv_slots[SLOT_R_STORE]
- inv.update_icon()
+ inv.update_appearance(updates = ALL)
if(l_store)
l_store.screen_loc = ui_storage1
@@ -428,7 +428,7 @@ There are several things that need to be remembered:
if(client && hud_used)
var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_WEAR_MASK]
- inv.update_icon()
+ inv.update_appearance(updates = ALL)
if(wear_mask)
var/target_overlay = wear_mask.icon_state
@@ -455,7 +455,7 @@ There are several things that need to be remembered:
if(client && hud_used && hud_used.inv_slots[SLOT_BACK])
var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_BACK]
- inv.update_icon()
+ inv.update_appearance(updates = ALL)
if(back)
update_hud_back(back)
diff --git a/code/modules/mob/living/carbon/inventory.dm b/code/modules/mob/living/carbon/inventory.dm
index fdb575db5865..09bc7a3ce9b1 100644
--- a/code/modules/mob/living/carbon/inventory.dm
+++ b/code/modules/mob/living/carbon/inventory.dm
@@ -95,7 +95,7 @@
update_inv_legcuffed()
if(SLOT_HANDS)
put_in_hands(I)
- update_inv_hands()
+ update_held_items()
if(SLOT_IN_BACKPACK)
if(!back || !SEND_SIGNAL(back, COMSIG_TRY_STORAGE_INSERT, I, src, TRUE))
not_handled = TRUE
diff --git a/code/modules/mob/living/carbon/update_icons.dm b/code/modules/mob/living/carbon/update_icons.dm
index eb0c0337cec3..4fc1933c9bc9 100644
--- a/code/modules/mob/living/carbon/update_icons.dm
+++ b/code/modules/mob/living/carbon/update_icons.dm
@@ -41,13 +41,13 @@
/mob/living/carbon/regenerate_icons()
if(notransform)
return 1
- update_inv_hands()
+ update_held_items()
update_inv_handcuffed()
update_inv_legcuffed()
update_fire()
-/mob/living/carbon/update_inv_hands()
+/mob/living/carbon/update_held_items()
remove_overlay(HANDS_LAYER)
if (handcuffed)
drop_all_held_items()
@@ -117,7 +117,7 @@
if(client && hud_used && hud_used.inv_slots[SLOT_WEAR_MASK])
var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_WEAR_MASK]
- inv.update_icon()
+ inv.update_appearance(updates = ALL)
if(wear_mask)
if(!(SLOT_WEAR_MASK in check_obscured_slots()))
@@ -131,7 +131,7 @@
if(client && hud_used && hud_used.inv_slots[SLOT_NECK])
var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_NECK]
- inv.update_icon()
+ inv.update_appearance(updates = ALL)
if(wear_neck)
if(!(SLOT_NECK in check_obscured_slots()))
@@ -145,7 +145,7 @@
if(client && hud_used && hud_used.inv_slots[SLOT_BACK])
var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_BACK]
- inv.update_icon()
+ inv.update_appearance(updates = ALL)
if(back)
overlays_standing[BACK_LAYER] = back.build_worn_icon(default_layer = BACK_LAYER, default_icon_file = 'icons/mob/clothing/back.dmi')
@@ -161,7 +161,7 @@
if(client && hud_used && hud_used.inv_slots[SLOT_BACK])
var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_HEAD]
- inv.update_icon()
+ inv.update_appearance(updates = ALL)
if(head)
overlays_standing[HEAD_LAYER] = head.build_worn_icon(default_layer = HEAD_LAYER, default_icon_file = 'icons/mob/clothing/head/head.dmi')
@@ -198,7 +198,7 @@
for(var/hand in hud_used.hand_slots)
var/atom/movable/screen/inventory/hand/H = hud_used.hand_slots[hand]
if(H)
- H.update_icon()
+ H.update_appearance(updates = ALL)
//update whether our head item appears on our hud.
/mob/living/carbon/proc/update_hud_head(obj/item/I)
diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm
index a022db670b21..465a1e8a831a 100644
--- a/code/modules/mob/living/silicon/ai/ai.dm
+++ b/code/modules/mob/living/silicon/ai/ai.dm
@@ -1054,7 +1054,7 @@
playsound(get_turf(src), 'sound/machines/ding.ogg', 50, 1, ignore_walls = FALSE)
to_chat(src, "Hack complete. \The [apc] is now under your exclusive control.")
- apc.update_icon()
+ apc.update_appearance(updates = ALL)
/mob/living/silicon/ai/verb/deploy_to_shell(var/mob/living/silicon/robot/target)
set category = "AI Commands"
diff --git a/code/modules/mob/living/silicon/ai/decentralized/ai_data_core.dm b/code/modules/mob/living/silicon/ai/decentralized/ai_data_core.dm
index 36b861050cc2..12e8d577d38f 100644
--- a/code/modules/mob/living/silicon/ai/decentralized/ai_data_core.dm
+++ b/code/modules/mob/living/silicon/ai/decentralized/ai_data_core.dm
@@ -40,7 +40,7 @@ GLOBAL_VAR_INIT(primary_data_core, null)
GLOB.data_cores += src
if(primary && !GLOB.primary_data_core)
GLOB.primary_data_core = src
- update_icon()
+ update_appearance(updates = ALL)
RefreshParts()
/obj/machinery/ai/data_core/RefreshParts()
@@ -165,7 +165,7 @@ GLOBAL_VAR_INIT(primary_data_core, null)
if(valid_holder())
valid_ticks++
if(valid_ticks == 1)
- update_icon()
+ update_appearance(updates = ALL)
use_power = ACTIVE_POWER_USE
if((stat & NOPOWER))
integrated_battery.use(active_power_usage * CELL_POWERUSE_MULTIPLIER)
@@ -174,7 +174,7 @@ GLOBAL_VAR_INIT(primary_data_core, null)
valid_ticks--
if(valid_ticks <= 0)
use_power = IDLE_POWER_USE
- update_icon()
+ update_appearance(updates = ALL)
for(var/mob/living/silicon/ai/AI in contents)
if(!AI.is_dying)
AI.relocate()
@@ -214,7 +214,7 @@ GLOBAL_VAR_INIT(primary_data_core, null)
if(AI.eyeobj)
AI.eyeobj.forceMove(get_turf(src))
-/obj/machinery/ai/data_core/update_icon()
+/obj/machinery/ai/data_core/update_appearance(updates = ALL)
cut_overlays()
if(!(stat & (BROKEN|EMPED)) && has_power())
diff --git a/code/modules/mob/living/silicon/ai/decentralized/management/ai_controlpanel.dm b/code/modules/mob/living/silicon/ai/decentralized/management/ai_controlpanel.dm
index a47fbdc71046..7e4445d97c18 100644
--- a/code/modules/mob/living/silicon/ai/decentralized/management/ai_controlpanel.dm
+++ b/code/modules/mob/living/silicon/ai/decentralized/management/ai_controlpanel.dm
@@ -218,7 +218,7 @@ GLOBAL_VAR_INIT(ai_control_code, random_nukecode(6))
return
downloading.transfer_ai(AI_TRANS_TO_CARD, user_downloading, null, intellicard)
intellicard.forceMove(get_turf(src))
- intellicard.update_icon()
+ intellicard.update_appearance(updates = ALL)
intellicard = null
stop_download(TRUE)
@@ -237,7 +237,7 @@ GLOBAL_VAR_INIT(ai_control_code, random_nukecode(6))
intellicard.AI.control_disabled = FALSE
intellicard.AI.relocate(TRUE)
intellicard.AI = null
- intellicard.update_icon()
+ intellicard.update_appearance(updates = ALL)
/obj/machinery/computer/ai_control_console/ui_act(action, params)
if(..())
diff --git a/code/modules/mob/living/silicon/ai/decentralized/server_cabinet.dm b/code/modules/mob/living/silicon/ai/decentralized/server_cabinet.dm
index 6f4a1b779cab..9a7cbca4ddc9 100644
--- a/code/modules/mob/living/silicon/ai/decentralized/server_cabinet.dm
+++ b/code/modules/mob/living/silicon/ai/decentralized/server_cabinet.dm
@@ -39,7 +39,7 @@ GLOBAL_LIST_EMPTY(server_cabinets)
roundstart = mapload
installed_racks = list()
GLOB.server_cabinets += src
- update_icon()
+ update_appearance(updates = ALL)
RefreshParts()
/obj/machinery/ai/server_cabinet/Destroy()
@@ -79,7 +79,7 @@ GLOBAL_LIST_EMPTY(server_cabinets)
valid_ticks++
if(!was_valid_holder)
- update_icon()
+ update_appearance(updates = ALL)
was_valid_holder = TRUE
if(!hardware_synced)
@@ -96,7 +96,7 @@ GLOBAL_LIST_EMPTY(server_cabinets)
GLOB.ai_os.update_hardware()
-/obj/machinery/ai/server_cabinet/update_icon()
+/obj/machinery/ai/server_cabinet/update_appearance(updates = ALL)
cut_overlays()
if(installed_racks.len > 0)
@@ -131,7 +131,7 @@ GLOBAL_LIST_EMPTY(server_cabinets)
cached_power_usage += rack.get_power_usage()
GLOB.ai_os.update_hardware()
use_power = ACTIVE_POWER_USE
- update_icon()
+ update_appearance(updates = ALL)
return FALSE
if(W.tool_behaviour == TOOL_CROWBAR)
if(installed_racks.len)
@@ -145,7 +145,7 @@ GLOBAL_LIST_EMPTY(server_cabinets)
GLOB.ai_os.update_hardware()
to_chat(user, span_notice("You remove all the racks from [src]"))
use_power = IDLE_POWER_USE
- update_icon()
+ update_appearance(updates = ALL)
return FALSE
else
if(default_deconstruction_crowbar(W))
diff --git a/code/modules/mob/living/silicon/ai/multicam.dm b/code/modules/mob/living/silicon/ai/multicam.dm
index 35ea739c3dee..5fd2521d72fd 100644
--- a/code/modules/mob/living/silicon/ai/multicam.dm
+++ b/code/modules/mob/living/silicon/ai/multicam.dm
@@ -171,14 +171,14 @@ GLOBAL_DATUM(ai_camera_room_landmark, /obj/effect/landmark/ai_multicam_room)
continue
cameras_telegraphed -= C
C.in_use_lights--
- C.update_icon()
+ C.update_appearance(updates = ALL)
for (var/V in add)
var/obj/machinery/camera/C = V
if(QDELETED(C))
continue
cameras_telegraphed |= C
C.in_use_lights++
- C.update_icon()
+ C.update_appearance(updates = ALL)
/mob/camera/aiEye/pic_in_pic/proc/disable_camera_telegraphing()
telegraph_cameras = FALSE
@@ -187,7 +187,7 @@ GLOBAL_DATUM(ai_camera_room_landmark, /obj/effect/landmark/ai_multicam_room)
if(QDELETED(C))
continue
C.in_use_lights--
- C.update_icon()
+ C.update_appearance(updates = ALL)
cameras_telegraphed.Cut()
/mob/camera/aiEye/pic_in_pic/Destroy()
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index 08ec212972ff..db9225ab7676 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -170,7 +170,7 @@
mmi.brainmob.name = src.real_name
mmi.brainmob.real_name = src.real_name
mmi.brainmob.container = mmi
- mmi.update_icon()
+ mmi.update_appearance(updates = ALL)
updatename()
@@ -195,7 +195,7 @@
mmi.brainmob.remove_from_dead_mob_list()
mmi.brainmob.add_to_alive_mob_list()
mind.transfer_to(mmi.brainmob)
- mmi.update_icon()
+ mmi.update_appearance(updates = ALL)
if(istype(mmi, /obj/item/mmi/posibrain))
ADD_TRAIT(mmi.brainmob, TRAIT_PACIFISM, POSIBRAIN_TRAIT)
else
@@ -803,14 +803,14 @@
set_light_range(1) //Again, like above, this only takes effect when the light is forced on by doomsday mode.
set_light_on(FALSE)
lamp_enabled = FALSE
- lampButton?.update_icon()
+ lampButton?.update_appearance(updates = ALL)
update_icons()
return
set_light_range(lamp_intensity)
set_light_color(lamp_color)
set_light_on(TRUE)
lamp_enabled = TRUE
- lampButton?.update_icon()
+ lampButton?.update_appearance(updates = ALL)
update_icons()
/mob/living/silicon/robot/proc/deconstruct()
diff --git a/code/modules/mob/living/silicon/robot/robot_defense.dm b/code/modules/mob/living/silicon/robot/robot_defense.dm
index 487c1d033d74..0139291de74d 100644
--- a/code/modules/mob/living/silicon/robot/robot_defense.dm
+++ b/code/modules/mob/living/silicon/robot/robot_defense.dm
@@ -54,7 +54,7 @@
add_fingerprint(user)
if(opened && !wiresexposed && !issilicon(user))
if(cell)
- cell.update_icon()
+ cell.update_appearance(updates = ALL)
cell.add_fingerprint(user)
user.put_in_active_hand(cell)
to_chat(user, span_notice("You remove \the [cell]."))
diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm
index e0eeeba1982a..da5675478eca 100644
--- a/code/modules/mob/living/silicon/robot/robot_modules.dm
+++ b/code/modules/mob/living/silicon/robot/robot_modules.dm
@@ -153,7 +153,7 @@
var/obj/item/assembly/flash/F = I
F.times_used = 0
F.burnt_out = FALSE
- F.update_icon()
+ F.update_appearance(updates = ALL)
else if(istype(I, /obj/item/melee/baton))
var/obj/item/melee/baton/B = I
if(B.cell)
@@ -389,7 +389,7 @@
if(T.cell.charge < T.cell.maxcharge)
var/obj/item/ammo_casing/energy/S = T.ammo_type[T.select]
T.cell.give(S.e_cost * coeff)
- T.update_icon()
+ T.update_appearance(updates = ALL)
else
T.charge_timer = 0
diff --git a/code/modules/mob/living/simple_animal/bot/SuperBeepsky.dm b/code/modules/mob/living/simple_animal/bot/SuperBeepsky.dm
index 4f9cc5d7a41c..55e90c41ebbf 100644
--- a/code/modules/mob/living/simple_animal/bot/SuperBeepsky.dm
+++ b/code/modules/mob/living/simple_animal/bot/SuperBeepsky.dm
@@ -51,7 +51,7 @@
weapon.attack(C, src)
playsound(src, 'sound/weapons/blade1.ogg', 50, TRUE, -1)
if(C.stat == DEAD)
- addtimer(CALLBACK(src, PROC_REF(update_icon)), 2)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/atom/, update_appearance)), 2)
back_to_idle()
@@ -60,13 +60,13 @@
return
switch(mode)
if(BOT_IDLE) // idle
- update_icon()
+ update_appearance(updates = ALL)
walk_to(src,0)
look_for_perp() // see if any criminals are in range
if(!mode && auto_patrol) // still idle, and set to patrol
mode = BOT_START_PATROL // switch to patrol mode
if(BOT_HUNT) // hunting for perp
- update_icon()
+ update_appearance(updates = ALL)
playsound(src,'sound/effects/beepskyspinsabre.ogg',100,TRUE,-1)
// general beepsky doesn't give up so easily, jedi scum
if(frustration >= 20)
diff --git a/code/modules/mob/living/simple_animal/bot/atmosbot.dm b/code/modules/mob/living/simple_animal/bot/atmosbot.dm
index cff40711067f..a68eecac6df6 100644
--- a/code/modules/mob/living/simple_animal/bot/atmosbot.dm
+++ b/code/modules/mob/living/simple_animal/bot/atmosbot.dm
@@ -51,11 +51,11 @@
/mob/living/simple_animal/bot/atmosbot/turn_on()
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
/mob/living/simple_animal/bot/atmosbot/turn_off()
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
/mob/living/simple_animal/bot/atmosbot/set_custom_texts()
text_hack = "You corrupt [name]'s safety protocols."
@@ -82,7 +82,7 @@
if(last_barrier_tick + ATMOSBOT_HOLOBARRIER_COOLDOWN < world.time)
target = return_nearest_breach()
action = ATMOSBOT_DEPLOY_FOAM
- update_icon()
+ update_appearance(updates = ALL)
if(!target)
if(auto_patrol)
@@ -194,9 +194,9 @@
return
breached_pressure = new_breach_pressure
update_controls()
- update_icon()
+ update_appearance(updates = ALL)
-/mob/living/simple_animal/bot/atmosbot/update_icon()
+/mob/living/simple_animal/bot/atmosbot/update_appearance(updates = ALL)
icon_state = "atmosbot[on][on?"_[action]":""]"
/mob/living/simple_animal/bot/atmosbot/UnarmedAttack(atom/A, proximity)
diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm
index b5f5a013fc2b..5faed059e230 100644
--- a/code/modules/mob/living/simple_animal/bot/bot.dm
+++ b/code/modules/mob/living/simple_animal/bot/bot.dm
@@ -130,7 +130,7 @@
on = TRUE
update_mobility()
set_light_on(on)
- update_icon()
+ update_appearance(updates = ALL)
diag_hud_set_botstat()
return TRUE
@@ -139,7 +139,7 @@
update_mobility()
set_light_on(on)
bot_reset() //Resets an AI's call, should it exist.
- update_icon()
+ update_appearance(updates = ALL)
/mob/living/simple_animal/bot/Initialize()
. = ..()
@@ -400,7 +400,7 @@
if(istype(dropped_item, /obj/item/stock_parts/cell))
var/obj/item/stock_parts/cell/dropped_cell = dropped_item
dropped_cell.charge = 0
- dropped_cell.update_icon()
+ dropped_cell.update_appearance(updates = ALL)
else if(istype(dropped_item, /obj/item/storage))
var/obj/item/storage/S = dropped_item
@@ -409,7 +409,7 @@
else if(istype(dropped_item, /obj/item/gun/energy))
var/obj/item/gun/energy/dropped_gun = dropped_item
dropped_gun.cell.charge = 0
- dropped_gun.update_icon()
+ dropped_gun.update_appearance(updates = ALL)
//Generalized behavior code, override where needed!
@@ -855,7 +855,7 @@ Pass a positive integer as an argument to override a bot's default speed.
ejectpai(usr)
update_controls()
-/mob/living/simple_animal/bot/proc/update_icon()
+/mob/living/simple_animal/bot/update_appearance(updates = ALL)
icon_state = "[initial(icon_state)][on]"
// Machinery to simplify topic and access calls
@@ -968,7 +968,7 @@ Pass a positive integer as an argument to override a bot's default speed.
/mob/living/simple_animal/bot/revive(full_heal = 0, admin_revive = 0)
if(..())
- update_icon()
+ update_appearance(updates = ALL)
. = 1
/mob/living/simple_animal/bot/ghost()
diff --git a/code/modules/mob/living/simple_animal/bot/construction.dm b/code/modules/mob/living/simple_animal/bot/construction.dm
index 0e3afdf43cb7..7c1caae2f841 100644
--- a/code/modules/mob/living/simple_animal/bot/construction.dm
+++ b/code/modules/mob/living/simple_animal/bot/construction.dm
@@ -212,9 +212,9 @@
/obj/item/bot_assembly/floorbot/Initialize()
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
-/obj/item/bot_assembly/floorbot/update_icon()
+/obj/item/bot_assembly/floorbot/update_appearance(updates = ALL)
..()
switch(build_step)
if(ASSEMBLY_FIRST_STEP)
@@ -237,7 +237,7 @@
to_chat(user, span_notice("You add [W] to [src]."))
qdel(W)
build_step++
- update_icon()
+ update_appearance(updates = ALL)
if(ASSEMBLY_SECOND_STEP)
if(istype(W, /obj/item/bodypart/l_arm/robot) || istype(W, /obj/item/bodypart/r_arm/robot))
diff --git a/code/modules/mob/living/simple_animal/bot/ed209bot.dm b/code/modules/mob/living/simple_animal/bot/ed209bot.dm
index 87cb73c8e6dc..d70be10e9760 100644
--- a/code/modules/mob/living/simple_animal/bot/ed209bot.dm
+++ b/code/modules/mob/living/simple_animal/bot/ed209bot.dm
@@ -388,15 +388,15 @@ Auto Patrol[]"},
if(!lasercolor)
var/obj/item/gun/energy/e_gun/dragnet/G = new (Tsec)
G.cell.charge = 0
- G.update_icon()
+ G.update_appearance(updates = ALL)
else if(lasercolor == "b")
var/obj/item/gun/energy/laser/bluetag/G = new (Tsec)
G.cell.charge = 0
- G.update_icon()
+ G.update_appearance(updates = ALL)
else if(lasercolor == "r")
var/obj/item/gun/energy/laser/redtag/G = new (Tsec)
G.cell.charge = 0
- G.update_icon()
+ G.update_appearance(updates = ALL)
if(prob(50))
new /obj/item/bodypart/l_leg/robot(Tsec)
diff --git a/code/modules/mob/living/simple_animal/bot/firebot.dm b/code/modules/mob/living/simple_animal/bot/firebot.dm
index 1d992c22bc6b..6fd44704e3e6 100644
--- a/code/modules/mob/living/simple_animal/bot/firebot.dm
+++ b/code/modules/mob/living/simple_animal/bot/firebot.dm
@@ -41,7 +41,7 @@
/mob/living/simple_animal/bot/firebot/Initialize()
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
var/datum/job/engineer/J = new/datum/job/engineer
access_card.access += J.get_access()
prev_access = access_card.access
@@ -76,11 +76,11 @@
/mob/living/simple_animal/bot/firebot/turn_on()
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
/mob/living/simple_animal/bot/firebot/turn_off()
..()
- update_icon()
+ update_appearance(updates = ALL)
/mob/living/simple_animal/bot/firebot/bot_reset()
..()
@@ -88,14 +88,14 @@
old_target_fire = null
ignore_list = list()
anchored = FALSE
- update_icon()
+ update_appearance(updates = ALL)
/mob/living/simple_animal/bot/firebot/proc/soft_reset()
path = list()
target_fire = null
mode = BOT_IDLE
last_found = world.time
- update_icon()
+ update_appearance(updates = ALL)
/mob/living/simple_animal/bot/firebot/set_custom_texts()
text_hack = "You corrupt [name]'s safety protocols."
@@ -152,7 +152,7 @@
stationary_mode = !stationary_mode
update_controls()
- update_icon()
+ update_appearance(updates = ALL)
/mob/living/simple_animal/bot/firebot/proc/is_burning(atom/target)
if(ismob(target))
@@ -286,7 +286,7 @@
flick("firebot1_use", user)
internal_ext.afterattack(target, user, null)
-/mob/living/simple_animal/bot/firebot/update_icon()
+/mob/living/simple_animal/bot/firebot/update_appearance(updates = ALL)
if(!on)
icon_state = "firebot0"
return
diff --git a/code/modules/mob/living/simple_animal/bot/floorbot.dm b/code/modules/mob/living/simple_animal/bot/floorbot.dm
index a4ad78b124a5..6e4c0737f29a 100644
--- a/code/modules/mob/living/simple_animal/bot/floorbot.dm
+++ b/code/modules/mob/living/simple_animal/bot/floorbot.dm
@@ -45,7 +45,7 @@
/mob/living/simple_animal/bot/floorbot/Initialize(mapload, new_toolbox_color)
. = ..()
toolbox_color = new_toolbox_color
- update_icon()
+ update_appearance(updates = ALL)
var/datum/job/engineer/J = new/datum/job/engineer
access_card.access += J.get_access()
prev_access = access_card.access
@@ -55,11 +55,11 @@
/mob/living/simple_animal/bot/floorbot/turn_on()
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
/mob/living/simple_animal/bot/floorbot/turn_off()
..()
- update_icon()
+ update_appearance(updates = ALL)
/mob/living/simple_animal/bot/floorbot/bot_reset()
..()
@@ -67,7 +67,7 @@
oldloc = null
ignore_list = list()
anchored = FALSE
- update_icon()
+ update_appearance(updates = ALL)
/mob/living/simple_animal/bot/floorbot/set_custom_texts()
text_hack = "You corrupt [name]'s construction protocols."
@@ -355,11 +355,11 @@
if(specialtiles == 0)
speak("Requesting refill of custom floortiles to continue replacing.")
mode = BOT_IDLE
- update_icon()
+ update_appearance(updates = ALL)
anchored = FALSE
target = null
-/mob/living/simple_animal/bot/floorbot/update_icon()
+/mob/living/simple_animal/bot/floorbot/update_appearance(updates = ALL)
icon_state = "[toolbox_color]floorbot[on]"
diff --git a/code/modules/mob/living/simple_animal/bot/honkbot.dm b/code/modules/mob/living/simple_animal/bot/honkbot.dm
index 384edd069202..8fdbb187355c 100644
--- a/code/modules/mob/living/simple_animal/bot/honkbot.dm
+++ b/code/modules/mob/living/simple_animal/bot/honkbot.dm
@@ -39,7 +39,7 @@
/mob/living/simple_animal/bot/honkbot/Initialize()
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
auto_patrol = TRUE
var/datum/job/clown/J = new/datum/job/clown
access_card.access += J.get_access()
@@ -50,7 +50,7 @@
/mob/living/simple_animal/bot/honkbot/proc/sensor_blink()
icon_state = "honkbot-c"
- addtimer(CALLBACK(src, PROC_REF(update_icon)), 5, TIMER_OVERRIDE|TIMER_UNIQUE)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/atom/, update_appearance)), 5, TIMER_OVERRIDE|TIMER_UNIQUE)
//honkbots react with sounds.
/mob/living/simple_animal/bot/honkbot/proc/react_ping()
@@ -133,7 +133,7 @@ Maintenance panel panel is [open ? "opened" : "closed"]"},
oldtarget_name = user.name
audible_message(span_danger("[src] gives out an evil laugh!"))
playsound(src, 'sound/machines/honkbot_evil_laugh.ogg', 75, 1, -1) // evil laughter
- update_icon()
+ update_appearance(updates = ALL)
/mob/living/simple_animal/bot/honkbot/bullet_act(obj/item/projectile/Proj)
if((istype(Proj,/obj/item/projectile/beam)) || (istype(Proj,/obj/item/projectile/bullet) && (Proj.damage_type == BURN))||(Proj.damage_type == BRUTE) && (!Proj.nodamage && Proj.damage < health && ishuman(Proj.firer)))
@@ -176,7 +176,7 @@ Maintenance panel panel is [open ? "opened" : "closed"]"},
playsound(src, "honkbot_e", 50, 0)
spam_flag = TRUE // prevent spam
icon_state = "honkbot-e"
- addtimer(CALLBACK(src, PROC_REF(update_icon)), 30, TIMER_OVERRIDE|TIMER_UNIQUE)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/atom/, update_appearance)), 30, TIMER_OVERRIDE|TIMER_UNIQUE)
addtimer(CALLBACK(src, PROC_REF(spam_flag_false)), cooldowntimehorn)
/mob/living/simple_animal/bot/honkbot/proc/honk_attack(mob/living/carbon/C) // horn attack
diff --git a/code/modules/mob/living/simple_animal/bot/medbot.dm b/code/modules/mob/living/simple_animal/bot/medbot.dm
index 3cf8e99d2eb6..9120a5b89fd5 100644
--- a/code/modules/mob/living/simple_animal/bot/medbot.dm
+++ b/code/modules/mob/living/simple_animal/bot/medbot.dm
@@ -91,7 +91,7 @@
treatment_tox_avoid = null
treatment_tox = /datum/reagent/toxin/sodium_thiopental
-/mob/living/simple_animal/bot/medbot/update_icon()
+/mob/living/simple_animal/bot/medbot/update_appearance(updates = ALL)
cut_overlays()
if(skin)
add_overlay("medskin_[skin]")
@@ -116,11 +116,11 @@
prev_access = access_card.access
qdel(J)
skin = new_skin
- update_icon()
+ update_appearance(updates = ALL)
/mob/living/simple_animal/bot/medbot/update_mobility()
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
/mob/living/simple_animal/bot/medbot/bot_reset()
..()
@@ -129,14 +129,14 @@
oldloc = null
last_found = world.time
declare_cooldown = 0
- update_icon()
+ update_appearance(updates = ALL)
/mob/living/simple_animal/bot/medbot/proc/soft_reset() //Allows the medibot to still actively perform its medical duties without being completely halted as a hard reset does.
path = list()
patient = null
mode = BOT_IDLE
last_found = world.time
- update_icon()
+ update_appearance(updates = ALL)
/mob/living/simple_animal/bot/medbot/set_custom_texts()
@@ -222,7 +222,7 @@
else if(href_list["stationary"])
stationary_mode = !stationary_mode
path = list()
- update_icon()
+ update_appearance(updates = ALL)
else if(href_list["virus"])
treat_virus = !treat_virus
@@ -413,7 +413,7 @@
if(patient && (get_dist(src,patient) <= 1)) //Patient is next to us, begin treatment!
if(mode != BOT_HEALING)
mode = BOT_HEALING
- update_icon()
+ update_appearance(updates = ALL)
frustration = 0
medicate_patient(patient)
return
@@ -554,9 +554,9 @@
var/mob/living/carbon/C = A
patient = C
mode = BOT_HEALING
- update_icon()
+ update_appearance(updates = ALL)
medicate_patient(C)
- update_icon()
+ update_appearance(updates = ALL)
else
..()
@@ -664,7 +664,7 @@
if(failed)
visible_message("[src] retracts its syringe.")
- update_icon()
+ update_appearance(updates = ALL)
soft_reset()
return
diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm
index 78b371ae68ae..3350217a2e9c 100644
--- a/code/modules/mob/living/simple_animal/bot/mulebot.dm
+++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm
@@ -115,7 +115,7 @@
..()
else
..()
- update_icon()
+ update_appearance(updates = ALL)
return
/mob/living/simple_animal/bot/mulebot/emag_act(mob/user)
@@ -127,7 +127,7 @@
flick("mulebot-emagged", src)
playsound(src, "sparks", 100, 0)
-/mob/living/simple_animal/bot/mulebot/update_icon()
+/mob/living/simple_animal/bot/mulebot/update_appearance(updates = ALL)
if(open)
icon_state="mulebot-hatch"
else
@@ -389,7 +389,7 @@
load = AM
mode = BOT_IDLE
- update_icon()
+ update_appearance(updates = ALL)
/mob/living/simple_animal/bot/mulebot/proc/load_mob(mob/living/M)
can_buckle = TRUE
@@ -463,7 +463,7 @@
num_steps--
if(!on || client)
return
- update_icon()
+ update_appearance(updates = ALL)
switch(mode)
if(BOT_IDLE) // idle
@@ -572,7 +572,7 @@
mode = BOT_GO_HOME
else
mode = BOT_DELIVER
- update_icon()
+ update_appearance(updates = ALL)
get_nav()
// starts bot moving to home
@@ -583,7 +583,7 @@
spawn(0)
set_destination(home_destination)
mode = BOT_BLOCKED
- update_icon()
+ update_appearance(updates = ALL)
// called when bot reaches current target
/mob/living/simple_animal/bot/mulebot/proc/at_target()
@@ -691,7 +691,7 @@
loaddir = text2num(direction)
else
loaddir = 0
- update_icon()
+ update_appearance(updates = ALL)
if(destination) // No need to calculate a path if you do not have a destination set!
calc_path()
@@ -713,7 +713,7 @@
new /obj/item/stack/cable_coil/cut(Tsec)
if(cell)
cell.forceMove(Tsec)
- cell.update_icon()
+ cell.update_appearance(updates = ALL)
cell = null
do_sparks(3, TRUE, src)
diff --git a/code/modules/mob/living/simple_animal/bot/secbot.dm b/code/modules/mob/living/simple_animal/bot/secbot.dm
index 60bf9159515c..fe004dbdd52e 100644
--- a/code/modules/mob/living/simple_animal/bot/secbot.dm
+++ b/code/modules/mob/living/simple_animal/bot/secbot.dm
@@ -71,7 +71,7 @@
/mob/living/simple_animal/bot/secbot/Initialize()
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
var/datum/job/detective/J = new/datum/job/detective
access_card.access += J.get_access()
prev_access = access_card.access
@@ -83,7 +83,7 @@
if(prob(5))
russian = TRUE // imported from Russia
-/mob/living/simple_animal/bot/secbot/update_icon()
+/mob/living/simple_animal/bot/secbot/update_appearance(updates = ALL)
if(mode == BOT_HUNT)
icon_state = "[initial(icon_state)]-c"
return
@@ -209,7 +209,7 @@ Auto Patrol: []"},
oldtarget_name = user.name
audible_message(span_danger("[src] buzzes oddly!"))
declare_arrests = FALSE
- update_icon()
+ update_appearance(updates = ALL)
/mob/living/simple_animal/bot/secbot/bullet_act(obj/item/projectile/Proj)
if(istype(Proj , /obj/item/projectile/beam)||istype(Proj, /obj/item/projectile/bullet))
@@ -264,7 +264,7 @@ Auto Patrol: []"},
var/judgement_criteria = judgement_criteria()
playsound(src, 'sound/weapons/egloves.ogg', 50, TRUE, -1)
icon_state = "secbot-c"
- addtimer(CALLBACK(src, PROC_REF(update_icon)), 2)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/atom/, update_appearance)), 2)
var/threat = 5
if(ishuman(C))
var/mob/living/carbon/human/H = C
diff --git a/code/modules/mob/living/simple_animal/eldritch_demons.dm b/code/modules/mob/living/simple_animal/eldritch_demons.dm
index e6c5cb6a540b..f8707a633f80 100644
--- a/code/modules/mob/living/simple_animal/eldritch_demons.dm
+++ b/code/modules/mob/living/simple_animal/eldritch_demons.dm
@@ -322,7 +322,7 @@
icon_state = "rust_walker_n"
else if(newdir == SOUTH)
icon_state = "rust_walker_s"
- //update_icon()
+ //update_appearance(updates = ALL)
/mob/living/simple_animal/hostile/eldritch/rust_spirit/Moved()
. = ..()
diff --git a/code/modules/mob/living/simple_animal/friendly/drone/inventory.dm b/code/modules/mob/living/simple_animal/friendly/drone/inventory.dm
index 520728b34532..bda0c98d00af 100644
--- a/code/modules/mob/living/simple_animal/friendly/drone/inventory.dm
+++ b/code/modules/mob/living/simple_animal/friendly/drone/inventory.dm
@@ -8,7 +8,7 @@
/mob/living/simple_animal/drone/doUnEquip(obj/item/I, force, newloc, no_move, invdrop = TRUE, silent = FALSE)
if(..())
- update_inv_hands()
+ update_held_items()
if(I == head)
head = null
update_inv_head()
@@ -59,7 +59,7 @@
var/index = get_held_index_of_item(I)
if(index)
held_items[index] = null
- update_inv_hands()
+ update_held_items()
if(I.pulledby)
I.pulledby.stop_pulling()
diff --git a/code/modules/mob/living/simple_animal/friendly/drone/visuals_icons.dm b/code/modules/mob/living/simple_animal/friendly/drone/visuals_icons.dm
index b6fe86efe0db..1e861b57b88c 100644
--- a/code/modules/mob/living/simple_animal/friendly/drone/visuals_icons.dm
+++ b/code/modules/mob/living/simple_animal/friendly/drone/visuals_icons.dm
@@ -18,7 +18,7 @@
drone_overlays[cache_index] = null
-/mob/living/simple_animal/drone/update_inv_hands()
+/mob/living/simple_animal/drone/update_held_items()
remove_overlay(DRONE_HANDS_LAYER)
var/list/hands_overlays = list()
@@ -85,7 +85,7 @@
/mob/living/simple_animal/drone/regenerate_icons()
// Drones only have 4 slots, which in this specific instance
// is a small blessing.
- update_inv_hands()
+ update_held_items()
update_inv_head()
update_inv_internal_storage()
diff --git a/code/modules/mob/living/simple_animal/friendly/spiderbot.dm b/code/modules/mob/living/simple_animal/friendly/spiderbot.dm
index f5fe2ccbfd7f..b9deddaa8d11 100644
--- a/code/modules/mob/living/simple_animal/friendly/spiderbot.dm
+++ b/code/modules/mob/living/simple_animal/friendly/spiderbot.dm
@@ -65,7 +65,7 @@
to_chat(user, span_notice("You install [M] in [src]!"))
mmi = M
transfer_personality(M)
- update_icon()
+ update_appearance(updates = ALL)
return 1
else if(O.tool_behaviour == TOOL_WELDER && (user.a_intent != INTENT_HARM || user == src)) ///Removed needless self repair part
@@ -131,7 +131,7 @@
if(!QDELETED(src) && stat != DEAD)
death()
-/mob/living/simple_animal/spiderbot/proc/update_icon()
+/mob/living/simple_animal/spiderbot/update_appearance(updates = ALL)
if(mmi)
if(istype(mmi, /obj/item/mmi/posibrain))
icon_state = "spiderbot-chassis-posi"
@@ -150,10 +150,10 @@
else if(key)
mmi.brainmob.key = key
mmi.forceMove(loc)
- mmi.update_icon()
+ mmi.update_appearance(updates = ALL)
mmi = null
name = initial(name)
- update_icon()
+ update_appearance(updates = ALL)
/mob/living/simple_animal/spiderbot/gib()
eject_brain()
diff --git a/code/modules/mob/living/simple_animal/guardian/guardian.dm b/code/modules/mob/living/simple_animal/guardian/guardian.dm
index 29bbf2324254..8e4eb31de605 100644
--- a/code/modules/mob/living/simple_animal/guardian/guardian.dm
+++ b/code/modules/mob/living/simple_animal/guardian/guardian.dm
@@ -256,7 +256,7 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians
var/index = get_held_index_of_item(I)
if(index)
held_items[index] = null
- update_inv_hands()
+ update_held_items()
if(I.pulledby)
I.pulledby.stop_pulling()
@@ -277,7 +277,7 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians
cut_overlay(I)
guardian_overlays[cache_index] = null
-/mob/living/simple_animal/hostile/guardian/update_inv_hands()
+/mob/living/simple_animal/hostile/guardian/update_held_items()
remove_overlay(GUARDIAN_HANDS_LAYER)
var/list/hands_overlays = list()
var/obj/item/l_hand = get_item_for_held_index(1)
@@ -314,7 +314,7 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians
apply_overlay(GUARDIAN_HANDS_LAYER)
/mob/living/simple_animal/hostile/guardian/regenerate_icons()
- update_inv_hands()
+ update_held_items()
//MANIFEST, RECALL, TOGGLE MODE/LIGHT, SHOW TYPE
@@ -636,8 +636,9 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians
"}
-/obj/item/paper/guides/antag/guardian/update_icon()
- return
+/obj/item/paper/guides/antag/guardian/Initialize(mapload)
+ AddElement(/datum/element/update_icon_blocker)
+ return ..()
/obj/item/paper/guides/antag/guardian/wizard
name = "Guardian Guide"
diff --git a/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm b/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm
index dc2d4a0b8cfd..bb6d28ac8f0e 100644
--- a/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm
+++ b/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm
@@ -42,7 +42,7 @@
//SLOT HANDLING BULLSHIT FOR INTERNAL STORAGE
/mob/living/simple_animal/hostile/guardian/dextrous/doUnEquip(obj/item/I, force, newloc, no_move, invdrop = TRUE, silent = FALSE)
if(..())
- update_inv_hands()
+ update_held_items()
if(I == internal_storage)
internal_storage = null
update_inv_internal_storage()
diff --git a/code/modules/mob/living/simple_animal/hostile/gorilla/visuals_icons.dm b/code/modules/mob/living/simple_animal/hostile/gorilla/visuals_icons.dm
index 9d451748b059..3d8f90840624 100644
--- a/code/modules/mob/living/simple_animal/hostile/gorilla/visuals_icons.dm
+++ b/code/modules/mob/living/simple_animal/hostile/gorilla/visuals_icons.dm
@@ -9,7 +9,7 @@
cut_overlay(I)
gorilla_overlays[cache_index] = null
-/mob/living/simple_animal/hostile/gorilla/update_inv_hands()
+/mob/living/simple_animal/hostile/gorilla/update_held_items()
cut_overlays("standing_overlay")
remove_overlay(GORILLA_HANDS_LAYER)
@@ -49,5 +49,5 @@
return ..()
/mob/living/simple_animal/hostile/gorilla/regenerate_icons()
- update_inv_hands()
+ update_held_items()
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
index dd7d5fba6cb7..6bb7a6c8416e 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
@@ -300,8 +300,9 @@ Difficulty: Very Hard
var/list/stored_items = list()
var/list/blacklist = list()
-/obj/machinery/smartfridge/black_box/update_icon()
- return
+/obj/machinery/smartfridge/black_box/Initialize(mapload)
+ AddElement(/datum/element/update_icon_blocker)
+ return ..()
/obj/machinery/smartfridge/black_box/accept_check(obj/item/O)
if(!istype(O))
diff --git a/code/modules/mob/living/simple_animal/hostile/mimic.dm b/code/modules/mob/living/simple_animal/hostile/mimic.dm
index 4a87971bef8d..31a2c0ac66b7 100644
--- a/code/modules/mob/living/simple_animal/hostile/mimic.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mimic.dm
@@ -239,19 +239,19 @@ GLOBAL_LIST_INIT(protected_objects, list(/obj/structure/table, /obj/structure/ca
var/obj/item/ammo_casing/energy/shot = Zapgun.ammo_type[Zapgun.select]
if(Zapgun.cell.charge >= shot.e_cost)
Zapgun.cell.use(shot.e_cost)
- Zapgun.update_icon()
+ Zapgun.update_appearance(updates = ALL)
..()
else if(Zapstick)
if(Zapstick.charges)
Zapstick.charges--
- Zapstick.update_icon()
+ Zapstick.update_appearance(updates = ALL)
..()
else if(Pewgun)
if(Pewgun.chambered)
if(Pewgun.chambered.BB)
qdel(Pewgun.chambered.BB)
Pewgun.chambered.BB = null //because qdel takes too long, ensures icon update
- Pewgun.chambered.update_icon()
+ Pewgun.chambered.update_appearance(updates = ALL)
..()
else
visible_message(span_danger("The [src] clears a jam!"))
@@ -260,7 +260,7 @@ GLOBAL_LIST_INIT(protected_objects, list(/obj/structure/table, /obj/structure/ca
if(Pewgun.magazine && Pewgun.magazine.stored_ammo.len)
Pewgun.chambered = Pewgun.magazine.get_round(0)
Pewgun.chambered.forceMove(Pewgun)
- Pewgun.update_icon()
+ Pewgun.update_appearance(updates = ALL)
else if(Pewgun.magazine && Pewgun.magazine.stored_ammo.len) //only true for pumpguns i think
Pewgun.chambered = Pewgun.magazine.get_round(0)
Pewgun.chambered.forceMove(Pewgun)
diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm
index aeb129cc76b4..cf3e370358eb 100644
--- a/code/modules/mob/living/simple_animal/simple_animal.dm
+++ b/code/modules/mob/living/simple_animal/simple_animal.dm
@@ -536,16 +536,16 @@
var/atom/movable/screen/inventory/hand/H
H = hud_used.hand_slots["[hand_index]"]
if(H)
- H.update_icon()
+ H.update_appearance(updates = ALL)
H = hud_used.hand_slots["[oindex]"]
if(H)
- H.update_icon()
+ H.update_appearance(updates = ALL)
/mob/living/simple_animal/put_in_hands(obj/item/I, del_on_fail = FALSE, merge_stacks = TRUE)
. = ..(I, del_on_fail, merge_stacks)
- update_inv_hands()
+ update_held_items()
-/mob/living/simple_animal/update_inv_hands()
+/mob/living/simple_animal/update_held_items()
if(client && hud_used && hud_used.hud_version != HUD_STYLE_NOHUD)
var/obj/item/l_hand = get_item_for_held_index(1)
var/obj/item/r_hand = get_item_for_held_index(2)
diff --git a/code/modules/mob/living/simple_animal/slime/slime.dm b/code/modules/mob/living/simple_animal/slime/slime.dm
index 60f16e558944..8be3d38844e9 100644
--- a/code/modules/mob/living/simple_animal/slime/slime.dm
+++ b/code/modules/mob/living/simple_animal/slime/slime.dm
@@ -149,7 +149,7 @@
coretype = text2path("/obj/item/slime_extract/[sanitizedcolour]")
regenerate_icons()
-/mob/living/simple_animal/slime/proc/update_name()
+/mob/living/simple_animal/slime/update_name()
if(slime_name_regex.Find(name))
number = rand(1, 1000)
name = "[colour] [is_adult ? "adult" : "baby"] slime ([number])"
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index 96234ae968e8..64be881e1ce5 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -707,7 +707,7 @@
var/obj/item/I = get_active_held_item()
if(I)
I.attack_self(src)
- update_inv_hands()
+ update_held_items()
/**
* Get the notes of this mob
diff --git a/code/modules/mob/update_icons.dm b/code/modules/mob/update_icons.dm
index 581584912df0..a9d59456a44c 100644
--- a/code/modules/mob/update_icons.dm
+++ b/code/modules/mob/update_icons.dm
@@ -1,6 +1,7 @@
//Most of these are defined at this level to reduce on checks elsewhere in the code.
//Having them here also makes for a nice reference list of the various overlay-updating procs available
+///Redraws the entire mob. For carbons, this is rather expensive, please use the individual update_X procs.
/mob/proc/regenerate_icons() //TODO: phase this out completely if possible
return
@@ -19,7 +20,7 @@
/mob/proc/update_inv_back()
return
-/mob/proc/update_inv_hands()
+/mob/proc/update_held_items()
return
/mob/proc/update_inv_wear_mask()
@@ -68,4 +69,4 @@
return
/mob/proc/update_inv_ears()
- return
\ No newline at end of file
+ return
diff --git a/code/modules/modular_computers/computers/item/computer.dm b/code/modules/modular_computers/computers/item/computer.dm
index 0764f2aa2654..744079da545b 100644
--- a/code/modules/modular_computers/computers/item/computer.dm
+++ b/code/modules/modular_computers/computers/item/computer.dm
@@ -99,7 +99,7 @@
idle_threads = list()
install_starting_components()
install_starting_files()
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/modular_computer/Destroy()
kill_program(forced = TRUE)
@@ -262,7 +262,7 @@
. += get_modular_computer_parts_examine(user)
-/obj/item/modular_computer/update_icon()
+/obj/item/modular_computer/update_appearance(updates = ALL)
if(!physical)
return
@@ -293,11 +293,11 @@
/obj/item/modular_computer/equipped()
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/modular_computer/dropped()
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/modular_computer/proc/update_label()
@@ -338,7 +338,7 @@
else
to_chat(user, span_notice("You press the power button and start up \the [src]."))
enabled = TRUE
- update_icon()
+ update_appearance(updates = ALL)
play_computer_sound(startup_sound, get_clamped_volume(), FALSE)
ui_interact(user)
else // Unpowered
@@ -480,7 +480,7 @@
var/mob/user = usr
if(user && istype(user))
ui_interact(user) // Re-open the UI on this computer. It should show the main screen now.
- update_icon()
+ update_appearance(updates = ALL)
// Returns 0 for No Signal, 1 for Low Signal and 2 for Good Signal. 3 is for wired connection (always-on)
/obj/item/modular_computer/proc/get_ntnet_status(specific_action = 0)
@@ -504,7 +504,7 @@
if(loud)
physical.visible_message(span_notice("\The [src] shuts down."))
enabled = FALSE
- update_icon()
+ update_appearance(updates = ALL)
play_computer_sound(shutdown_sound, get_clamped_volume(), FALSE)
/**
@@ -517,7 +517,7 @@
if(!has_light)
return FALSE
set_light_on(!light_on)
- update_icon()
+ update_appearance(updates = ALL)
return TRUE
/**
diff --git a/code/modules/modular_computers/computers/item/computer_components.dm b/code/modules/modular_computers/computers/item/computer_components.dm
index 8020167959a6..ade43953655f 100644
--- a/code/modules/modular_computers/computers/item/computer_components.dm
+++ b/code/modules/modular_computers/computers/item/computer_components.dm
@@ -50,7 +50,7 @@
yeet.on_remove(src, user)
if(enabled && !use_power())
shutdown_computer()
- update_icon()
+ update_appearance(updates = ALL)
return TRUE
/// This isn't the "uninstall fully" proc, it just makes the computer lose all its references to the component
diff --git a/code/modules/modular_computers/computers/item/computer_ui.dm b/code/modules/modular_computers/computers/item/computer_ui.dm
index cb6f3f7aa702..c64246b3c65b 100644
--- a/code/modules/modular_computers/computers/item/computer_ui.dm
+++ b/code/modules/modular_computers/computers/item/computer_ui.dm
@@ -116,7 +116,7 @@
active_program.program_state = PROGRAM_STATE_BACKGROUND // Should close any existing UIs
active_program = null
- update_icon()
+ update_appearance(updates = ALL)
if(user && istype(user))
ui_interact(user) // Re-open the UI on this computer. It should show the main screen now.
@@ -156,7 +156,7 @@
active_program = P
P.alert_pending = FALSE
idle_threads.Remove(P)
- update_icon()
+ update_appearance(updates = ALL)
return
var/obj/item/computer_hardware/processor_unit/PU = all_components[MC_CPU]
@@ -171,7 +171,7 @@
if(P.run_program(user))
active_program = P
P.alert_pending = FALSE
- update_icon()
+ update_appearance(updates = ALL)
return TRUE
if("PC_toggle_light")
diff --git a/code/modules/modular_computers/computers/item/laptop/laptop.dm b/code/modules/modular_computers/computers/item/laptop/laptop.dm
index 8dbb3472a44c..d9300949c3a0 100644
--- a/code/modules/modular_computers/computers/item/laptop/laptop.dm
+++ b/code/modules/modular_computers/computers/item/laptop/laptop.dm
@@ -33,7 +33,7 @@
if(start_open && !screen_on)
toggle_open()
-/obj/item/modular_computer/laptop/update_icon()
+/obj/item/modular_computer/laptop/update_appearance(updates = ALL)
if(screen_on)
..()
else
@@ -106,7 +106,7 @@
icon_state = icon_state_unpowered
screen_on = !screen_on
- update_icon()
+ update_appearance(updates = ALL)
diff --git a/code/modules/modular_computers/computers/item/processor.dm b/code/modules/modular_computers/computers/item/processor.dm
index dd636708bd2f..f71793922d38 100644
--- a/code/modules/modular_computers/computers/item/processor.dm
+++ b/code/modules/modular_computers/computers/item/processor.dm
@@ -62,7 +62,7 @@
if(!machinery_computer)
return
..()
- machinery_computer.update_icon()
+ machinery_computer.update_appearance(updates = ALL)
return
/obj/item/modular_computer/processor/attack_ghost(mob/user)
diff --git a/code/modules/modular_computers/computers/item/tablet/tablet.dm b/code/modules/modular_computers/computers/item/tablet/tablet.dm
index e1d9f279d25f..28e87fe2df50 100644
--- a/code/modules/modular_computers/computers/item/tablet/tablet.dm
+++ b/code/modules/modular_computers/computers/item/tablet/tablet.dm
@@ -56,11 +56,11 @@
return
to_chat(user, span_notice("You slide \the [C] into \the [src]."))
inserted_item = C
- update_icon()
+ update_appearance(updates = ALL)
else
return ..()
-/obj/item/modular_computer/tablet/update_icon()
+/obj/item/modular_computer/tablet/update_appearance(updates = ALL)
..()
if (!isnull(variants))
if(!finish_color)
diff --git a/code/modules/modular_computers/computers/machinery/console/modular_console.dm b/code/modules/modular_computers/computers/machinery/console/modular_console.dm
index fd5d35c8329a..fae3cd416152 100644
--- a/code/modules/modular_computers/computers/machinery/console/modular_console.dm
+++ b/code/modules/modular_computers/computers/machinery/console/modular_console.dm
@@ -42,9 +42,9 @@
network_card.identification_string = "Unknown Console"
if(cpu)
cpu.screen_on = 1
- update_icon()
+ update_appearance(updates = ALL)
-/obj/machinery/modular_computer/console/update_icon()
+/obj/machinery/modular_computer/console/update_appearance(updates = ALL)
. = ..()
// this bit of code makes the computer hug the wall its next to
diff --git a/code/modules/modular_computers/computers/machinery/modular_computer.dm b/code/modules/modular_computers/computers/machinery/modular_computer.dm
index 73ad7713bd36..fe36d84387bd 100644
--- a/code/modules/modular_computers/computers/machinery/modular_computer.dm
+++ b/code/modules/modular_computers/computers/machinery/modular_computer.dm
@@ -75,8 +75,8 @@
return FALSE
return (cpu.emag_act(user))
-/obj/machinery/modular_computer/update_icon()
- cpu.update_icon()
+/obj/machinery/modular_computer/update_appearance(updates = ALL)
+ cpu.update_appearance(updates = ALL)
/obj/machinery/modular_computer/AltClick(mob/user)
if(cpu)
@@ -105,13 +105,13 @@
if(cpu)
cpu.shutdown_computer(0)
stat |= NOPOWER
- update_icon()
+ update_appearance(updates = ALL)
// Modular computers can have battery in them, we handle power in previous proc, so prevent this from messing it up for us.
/obj/machinery/modular_computer/power_change()
if(cpu && cpu.use_power()) // If MC_CPU still has a power source, PC wouldn't go offline.
stat &= ~NOPOWER
- update_icon()
+ update_appearance(updates = ALL)
return
. = ..()
diff --git a/code/modules/modular_computers/file_system/program.dm b/code/modules/modular_computers/file_system/program.dm
index 0daf31715c19..2dbf51324912 100644
--- a/code/modules/modular_computers/file_system/program.dm
+++ b/code/modules/modular_computers/file_system/program.dm
@@ -68,7 +68,7 @@
// Relays icon update to the computer.
/datum/computer_file/program/proc/update_computer_icon()
if(computer)
- computer.update_icon()
+ computer.update_appearance(updates = ALL)
// Attempts to create a log in global ntnet datum. Returns 1 on success, 0 on fail.
/datum/computer_file/program/proc/generate_network_log(text)
@@ -237,7 +237,7 @@
program_state = PROGRAM_STATE_BACKGROUND // Should close any existing UIs
computer.active_program = null
- computer.update_icon()
+ computer.update_appearance(updates = ALL)
ui.close()
if(user && istype(user))
diff --git a/code/modules/modular_computers/file_system/programs/antagonist/revelation.dm b/code/modules/modular_computers/file_system/programs/antagonist/revelation.dm
index 4c82eeb5f235..d10ff670753d 100644
--- a/code/modules/modular_computers/file_system/programs/antagonist/revelation.dm
+++ b/code/modules/modular_computers/file_system/programs/antagonist/revelation.dm
@@ -28,7 +28,7 @@
computer.visible_message(span_notice("\The [computer]'s screen brightly flashes and loud electrical buzzing is heard."))
computer.enabled = FALSE
- computer.update_icon()
+ computer.update_appearance(updates = ALL)
var/obj/item/computer_hardware/hard_drive/hard_drive = computer.all_components[MC_HDD]
var/obj/item/computer_hardware/battery/battery_module = computer.all_components[MC_CELL]
var/obj/item/computer_hardware/recharger/recharger = computer.all_components[MC_CHARGE]
diff --git a/code/modules/modular_computers/file_system/programs/arcade.dm b/code/modules/modular_computers/file_system/programs/arcade.dm
index 3f2fd4639e87..40f436ea6c22 100644
--- a/code/modules/modular_computers/file_system/programs/arcade.dm
+++ b/code/modules/modular_computers/file_system/programs/arcade.dm
@@ -28,7 +28,7 @@
game_active = FALSE
program_icon_state = "arcade_off"
if(istype(computer))
- computer.update_icon()
+ computer.update_appearance(updates = ALL)
ticket_count += 1
sleep(1 SECONDS)
return
@@ -38,7 +38,7 @@
game_active = FALSE
program_icon_state = "arcade_off"
if(istype(computer))
- computer.update_icon()
+ computer.update_appearance(updates = ALL)
sleep(1 SECONDS)
return
return
@@ -168,4 +168,4 @@
boss_id = rand(1,6)
pause_state = FALSE
if(istype(computer))
- computer.update_icon()
+ computer.update_appearance(updates = ALL)
diff --git a/code/modules/modular_computers/file_system/programs/engineering/sm_monitor.dm b/code/modules/modular_computers/file_system/programs/engineering/sm_monitor.dm
index f0d06dc70970..ca3918331c3d 100644
--- a/code/modules/modular_computers/file_system/programs/engineering/sm_monitor.dm
+++ b/code/modules/modular_computers/file_system/programs/engineering/sm_monitor.dm
@@ -31,7 +31,7 @@
ui_header = "smmon_[last_status].gif"
program_icon_state = "smmon_[last_status]"
if(istype(computer))
- computer.update_icon()
+ computer.update_appearance(updates = ALL)
/datum/computer_file/program/supermatter_monitor/run_program(mob/living/user)
. = ..(user)
diff --git a/code/modules/modular_computers/file_system/programs/medical/crew_monitor.dm b/code/modules/modular_computers/file_system/programs/medical/crew_monitor.dm
index 2f64d0d938ce..28ef95d324aa 100644
--- a/code/modules/modular_computers/file_system/programs/medical/crew_monitor.dm
+++ b/code/modules/modular_computers/file_system/programs/medical/crew_monitor.dm
@@ -56,7 +56,7 @@
ui_header = "health_green.gif"
if(istype(computer))
- computer.update_icon()
+ computer.update_appearance(updates = ALL)
/datum/computer_file/program/crew_monitor/ui_data(mob/user)
var/list/data = get_header_data()
diff --git a/code/modules/modular_computers/file_system/programs/portrait_printer.dm b/code/modules/modular_computers/file_system/programs/portrait_printer.dm
index 912bf4030dcd..625c6f29f7f8 100644
--- a/code/modules/modular_computers/file_system/programs/portrait_printer.dm
+++ b/code/modules/modular_computers/file_system/programs/portrait_printer.dm
@@ -73,7 +73,7 @@
printed_canvas.name = "painting - [title]"
///this is a copy of something that is already in the database- it should not be able to be saved.
printed_canvas.no_save = TRUE
- printed_canvas.update_icon()
+ printed_canvas.update_appearance(updates = ALL)
to_chat(usr, span_notice("You have printed [title] onto a new canvas."))
playsound(computer.physical, 'sound/items/poster_being_created.ogg', 100, TRUE)
diff --git a/code/modules/modular_computers/file_system/programs/radar.dm b/code/modules/modular_computers/file_system/programs/radar.dm
index 97f64584ed06..0d3a44030145 100644
--- a/code/modules/modular_computers/file_system/programs/radar.dm
+++ b/code/modules/modular_computers/file_system/programs/radar.dm
@@ -17,7 +17,7 @@
var/atom/selected
///Used to store when the next scan is available. Updated by the scan() proc.
var/next_scan = 0
- ///Used to keep track of the last value program_icon_state was set to, to prevent constant unnecessary update_icon() calls
+ ///Used to keep track of the last value program_icon_state was set to, to prevent constant unnecessary update_appearance(updates = ALL) calls
var/last_icon_state = ""
///Used by the tgui interface, themed NT or Syndicate.
var/arrowstyle = "ntosradarpointer.png"
@@ -180,7 +180,7 @@
if(!trackable(signal))
program_icon_state = "[initial(program_icon_state)]lost"
if(last_icon_state != program_icon_state)
- computer.update_icon()
+ computer.update_appearance(updates = ALL)
last_icon_state = program_icon_state
return
@@ -198,7 +198,7 @@
program_icon_state = "[initial(program_icon_state)]far"
if(last_icon_state != program_icon_state)
- computer.update_icon()
+ computer.update_appearance(updates = ALL)
last_icon_state = program_icon_state
computer.setDir(get_dir(here_turf, target_turf))
diff --git a/code/modules/modular_computers/file_system/programs/science/airestorer.dm b/code/modules/modular_computers/file_system/programs/science/airestorer.dm
index 56a9d7463fbd..f5c7a3a3b493 100644
--- a/code/modules/modular_computers/file_system/programs/science/airestorer.dm
+++ b/code/modules/modular_computers/file_system/programs/science/airestorer.dm
@@ -85,7 +85,7 @@
A.updatehealth()
if(A.health >= 0 && A.stat == DEAD)
A.revive()
- cardhold.update_icon()
+ cardhold.update_appearance(updates = ALL)
// Finished restoring
if(A.health >= 100)
ai_slot.locked = FALSE
diff --git a/code/modules/modular_computers/hardware/printer.dm b/code/modules/modular_computers/hardware/printer.dm
index 5f5fa75d1eb8..22f8a675a22c 100644
--- a/code/modules/modular_computers/hardware/printer.dm
+++ b/code/modules/modular_computers/hardware/printer.dm
@@ -37,7 +37,7 @@
P.info = text_to_print
if(paper_title)
P.name = paper_title
- P.update_icon()
+ P.update_appearance(updates = ALL)
P.reload_fields()
stored_paper--
P = null
@@ -52,7 +52,7 @@
// Damaged printer causes the resulting paper to be somewhat harder to read.
if(damage > damage_malfunction)
P.info = stars(P.info, 100-malfunction_probability)
- P.update_icon()
+ P.update_appearance(updates = ALL)
P.reload_fields()
stored_paper--
P = null
diff --git a/code/modules/ninja/suit/ninjaDrainAct.dm b/code/modules/ninja/suit/ninjaDrainAct.dm
index f8b61cef7b5e..a4a529c3b469 100644
--- a/code/modules/ninja/suit/ninjaDrainAct.dm
+++ b/code/modules/ninja/suit/ninjaDrainAct.dm
@@ -55,7 +55,7 @@ They *could* go in their appropriate files, but this is supposed to be modular
playsound(loc, "sparks", 50, 1)
obj_flags |= EMAGGED
locked = FALSE
- update_icon()
+ update_appearance(updates = ALL)
@@ -112,7 +112,7 @@ They *could* go in their appropriate files, but this is supposed to be modular
S.cell.give(charge)
charge = 0
corrupt()
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/proc/AI_notify_hack()
var/turf/location = get_turf(src)
diff --git a/code/modules/ninja/suit/suit_attackby.dm b/code/modules/ninja/suit/suit_attackby.dm
index 6a9040497657..aab9572e7059 100644
--- a/code/modules/ninja/suit/suit_attackby.dm
+++ b/code/modules/ninja/suit/suit_attackby.dm
@@ -29,7 +29,7 @@
U.put_in_hands(old_cell)
old_cell.add_fingerprint(U)
old_cell.corrupt()
- old_cell.update_icon()
+ old_cell.update_appearance(updates = ALL)
cell = CELL
to_chat(U, span_notice("Upgrade complete. Maximum capacity: [round(cell.maxcharge/100)]%"))
else
diff --git a/code/modules/pai/card.dm b/code/modules/pai/card.dm
index 312b8a26abc1..e512b719ec00 100644
--- a/code/modules/pai/card.dm
+++ b/code/modules/pai/card.dm
@@ -58,19 +58,19 @@
if(thing == pai) //double check /mob/living/silicon/pai/Destroy() if you change these.
pai = null
emotion_icon = initial(emotion_icon)
- update_icon()
+ update_appearance(updates = ALL)
return ..()
/obj/item/pai_card/Initialize(mapload)
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
SSpai.pai_card_list += src
/obj/item/pai_card/suicide_act(mob/living/user)
user.visible_message(span_suicide("[user] is staring sadly at [src]! [user.p_they()] can't keep living without real human intimacy!"))
return OXYLOSS
-/obj/item/pai_card/proc/update_overlays()
+/obj/item/pai_card/update_overlays()
. = ..()
. += "pai-[emotion_icon]"
if(pai?.hacking_cable)
@@ -79,7 +79,7 @@
/obj/item/pai_card/vv_edit_var(vname, vval)
. = ..()
if(vname == NAMEOF(src, emotion_icon))
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/pai_card/ui_interact(mob/user, datum/tgui/ui)
. = ..()
@@ -253,7 +253,7 @@
return FALSE
pai = downloaded
emotion_icon = "null"
- update_icon()
+ update_appearance(updates = ALL)
playsound(src, 'sound/effects/pai_boot.ogg', 50, TRUE, -1)
audible_message("[src] plays a cheerful startup noise!")
return TRUE
diff --git a/code/modules/pai/death.dm b/code/modules/pai/death.dm
index 62cd82fe009b..7b856657f2e9 100644
--- a/code/modules/pai/death.dm
+++ b/code/modules/pai/death.dm
@@ -14,6 +14,6 @@
card.forceMove(drop_location())
card.pai = null
card.emotion_icon = initial(card.emotion_icon)
- card.update_icon()
+ card.update_appearance(updates = ALL)
qdel(src)
diff --git a/code/modules/pai/door_jack.dm b/code/modules/pai/door_jack.dm
index 50013cf5862c..44b06f69ea34 100644
--- a/code/modules/pai/door_jack.dm
+++ b/code/modules/pai/door_jack.dm
@@ -116,7 +116,7 @@
untrack_thing(hacking_cable)
QDEL_NULL(hacking_cable)
if(!QDELETED(card))
- card.update_icon()
+ card.update_appearance(updates = ALL)
return FALSE
var/obj/machinery/door/door = hacking_cable.machine
balloon_alert(src, "success")
diff --git a/code/modules/pai/pai.dm b/code/modules/pai/pai.dm
index 71a1013a4c19..49f47b7ad282 100644
--- a/code/modules/pai/pai.dm
+++ b/code/modules/pai/pai.dm
@@ -170,7 +170,7 @@
hacking_cable = null
SStgui.update_user_uis(src)
if(!QDELETED(card))
- card.update_icon()
+ card.update_appearance(updates = ALL)
if(deleting_atom == atmos_analyzer)
atmos_analyzer = null
if(deleting_atom == camera)
diff --git a/code/modules/pai/software.dm b/code/modules/pai/software.dm
index 1ff2e02d3585..8ac66feebfed 100644
--- a/code/modules/pai/software.dm
+++ b/code/modules/pai/software.dm
@@ -142,7 +142,7 @@
if(isnull(new_image))
return FALSE
card.emotion_icon = new_image
- card.update_icon()
+ card.update_appearance(updates = ALL)
return TRUE
/**
diff --git a/code/modules/paperwork/carbonpaper.dm b/code/modules/paperwork/carbonpaper.dm
index d81bbbb5fc2c..59f858a3fb8f 100644
--- a/code/modules/paperwork/carbonpaper.dm
+++ b/code/modules/paperwork/carbonpaper.dm
@@ -7,7 +7,7 @@
var/iscopy = FALSE
-/obj/item/paper/carbon/update_icon()
+/obj/item/paper/carbon/update_appearance(updates = ALL)
if(iscopy)
if(written.len)
icon_state = "cpaper_words"
@@ -52,8 +52,8 @@
copied = TRUE
copy.copied = TRUE
copy.iscopy = TRUE
- update_icon()
- copy.update_icon()
+ update_appearance(updates = ALL)
+ copy.update_appearance(updates = ALL)
usr.put_in_hands(copy)
else
to_chat(usr, span_warning("There are no more carbon copies attached to this paper!"))
diff --git a/code/modules/paperwork/clipboard.dm b/code/modules/paperwork/clipboard.dm
index 37ff574f43e5..c1dca1568995 100644
--- a/code/modules/paperwork/clipboard.dm
+++ b/code/modules/paperwork/clipboard.dm
@@ -17,7 +17,7 @@
return BRUTELOSS//the clipboard's clip is very strong. industrial duty. can kill a man easily.
/obj/item/clipboard/Initialize()
- update_icon()
+ update_appearance(updates = ALL)
. = ..()
/obj/item/clipboard/Destroy()
@@ -25,7 +25,7 @@
QDEL_NULL(toppaper) //let movable/Destroy handle the rest
return ..()
-/obj/item/clipboard/update_icon()
+/obj/item/clipboard/update_appearance(updates = ALL)
cut_overlays()
var/list/dat = list()
if(toppaper)
@@ -43,10 +43,10 @@
return
toppaper = W
to_chat(user, span_notice("You clip the paper onto \the [src]."))
- update_icon()
+ update_appearance(updates = ALL)
else if(toppaper)
toppaper.attackby(user.get_active_held_item(), user)
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/clipboard/attack_self(mob/user)
@@ -126,4 +126,4 @@
//Update everything
attack_self(usr)
- update_icon()
+ update_appearance(updates = ALL)
diff --git a/code/modules/paperwork/contract.dm b/code/modules/paperwork/contract.dm
index f8e59ab8369a..4cb6bbd7a395 100644
--- a/code/modules/paperwork/contract.dm
+++ b/code/modules/paperwork/contract.dm
@@ -10,8 +10,11 @@
/obj/item/paper/contract/proc/update_text()
return
-/obj/item/paper/contract/update_icon()
- return
+/obj/item/paper/contract/Initialize(mapload, new_employee_name)
+ if(!new_employee_name)
+ return INITIALIZE_HINT_QDEL
+ AddElement(/datum/element/update_icon_blocker)
+ return ..()
/obj/item/paper/contract/infernal
var/contractType = 0
@@ -269,7 +272,7 @@
var/obj/item/storage/wallet/W = worn
W.front_id = id
id.forceMove(worn)
- worn.update_icon()
+ worn.update_appearance(updates = ALL)
var/datum/round_event/ion_storm/add_law_only/ion = new()
ion.announceEvent = -1
ion.ionMessage = "[user.name] is the only Captain of the station. [user.name] is the highest authority, legitimate or otherwise, on the station. [user.name] was always the captain and highest authority on the station. Do not state this law."
diff --git a/code/modules/paperwork/faxmachine.dm b/code/modules/paperwork/faxmachine.dm
index 3d2d79b29d82..95410b041e9f 100644
--- a/code/modules/paperwork/faxmachine.dm
+++ b/code/modules/paperwork/faxmachine.dm
@@ -196,7 +196,7 @@ GLOBAL_LIST_EMPTY(adminfaxes)
templist += L
P.written += templist
- P.update_icon()
+ P.update_appearance(updates = ALL)
playsound(loc, "sound/items/polaroid1.ogg", 50, 1)
// Stamps
diff --git a/code/modules/paperwork/filingcabinet.dm b/code/modules/paperwork/filingcabinet.dm
index 90c0b9ab5d32..0dcfc60a8391 100644
--- a/code/modules/paperwork/filingcabinet.dm
+++ b/code/modules/paperwork/filingcabinet.dm
@@ -60,7 +60,7 @@
icon_state = "coloredcabinet_frame"
name = "colored cabinet"
-/obj/structure/filingcabinet/colored/update_icon()
+/obj/structure/filingcabinet/colored/update_appearance(updates = ALL)
cut_overlays()
var/mutable_appearance/cab = mutable_appearance(icon, "coloredcabinet_trim")
cab.color = colour
@@ -68,7 +68,7 @@
/obj/structure/filingcabinet/Initialize(mapload)
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
if(mapload)
for(var/obj/item/I in loc)
if(istype(I, /obj/item/paper) || istype(I, /obj/item/folder) || istype(I, /obj/item/photo))
@@ -185,7 +185,7 @@
colour = colour_choice
name = "colored cabinet" // Having a cabinet called 'Purple Cabinet' while it's green colored would be weird
playsound(src, 'sound/effects/spray.ogg', 5, TRUE, 5)
- update_icon() // reset overlays
+ update_appearance(updates = ALL) // reset overlays
return
diff --git a/code/modules/paperwork/folders.dm b/code/modules/paperwork/folders.dm
index 7bc395bdd982..d804fe49cb46 100644
--- a/code/modules/paperwork/folders.dm
+++ b/code/modules/paperwork/folders.dm
@@ -28,7 +28,7 @@
icon_state = "folder_white"
-/obj/item/folder/update_icon()
+/obj/item/folder/update_appearance(updates = ALL)
cut_overlays()
if(contents.len)
add_overlay("folder_paper")
@@ -39,7 +39,7 @@
if(!user.transferItemToLoc(W, src))
return
to_chat(user, span_notice("You put [W] into [src]."))
- update_icon()
+ update_appearance(updates = ALL)
else if(istype(W, /obj/item/pen))
if(!user.is_literate())
to_chat(user, span_notice("You scribble illegibly on the cover of [src]!"))
@@ -94,7 +94,7 @@
//Update everything
attack_self(usr)
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/folder/documents
name = "folder- 'TOP SECRET'"
@@ -103,7 +103,7 @@
/obj/item/folder/documents/Initialize()
. = ..()
new /obj/item/documents/nanotrasen(src)
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/folder/syndicate
icon_state = "folder_syndie"
@@ -116,7 +116,7 @@
/obj/item/folder/syndicate/red/Initialize()
. = ..()
new /obj/item/documents/syndicate/red(src)
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/folder/syndicate/blue
icon_state = "folder_sblue"
@@ -124,9 +124,9 @@
/obj/item/folder/syndicate/blue/Initialize()
. = ..()
new /obj/item/documents/syndicate/blue(src)
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/folder/syndicate/mining/Initialize()
. = ..()
new /obj/item/documents/syndicate/mining(src)
- update_icon()
+ update_appearance(updates = ALL)
diff --git a/code/modules/paperwork/inspector_booth.dm b/code/modules/paperwork/inspector_booth.dm
index 3e970fd8dc08..a64ff29c0db6 100644
--- a/code/modules/paperwork/inspector_booth.dm
+++ b/code/modules/paperwork/inspector_booth.dm
@@ -55,9 +55,9 @@
/obj/machinery/inspector_booth/Initialize()
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
-/obj/machinery/inspector_booth/update_icon()
+/obj/machinery/inspector_booth/update_appearance(updates = ALL)
if (stat & NOPOWER)
icon_state = "booth_off"
else if (panel_open || stat & MAINT)
diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm
index 94c01b862069..18f633baeed5 100644
--- a/code/modules/paperwork/paper.dm
+++ b/code/modules/paperwork/paper.dm
@@ -75,10 +75,10 @@
pixel_y = rand(-8, 8)
pixel_x = rand(-9, 9)
written = list()
- update_icon()
+ update_appearance(updates = ALL)
-/obj/item/paper/update_icon()
+/obj/item/paper/update_appearance(updates = ALL)
if(resistance_flags & ON_FIRE)
icon_state = "paper_onfire"
@@ -184,7 +184,7 @@
stamps = null
LAZYCLEARLIST(stamped)
cut_overlays()
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/paper/proc/parsepencode(t, obj/item/pen/P, mob/user, iscrayon = 0)
@@ -278,7 +278,7 @@
else
written.Insert(text2num(id),templist) // text2num, otherwise it writes to the hashtable index instead of into the array
usr << browse("[name][render_body(usr,TRUE)]
[stamps]", "window=[name]") // Update the window
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/paper/attackby(obj/item/P, mob/living/carbon/human/user, params)
@@ -352,7 +352,7 @@
src.loc = B
P.loc = B
B.amount = 2
- B.update_icon()
+ B.update_appearance(updates = ALL)
add_fingerprint(user)
@@ -365,7 +365,7 @@
/obj/item/paper/extinguish()
..()
- update_icon()
+ update_appearance(updates = ALL)
/*
* Construction paper
@@ -390,8 +390,9 @@
icon_state = "scrap"
slot_flags = null
-/obj/item/paper/crumpled/update_icon()
- return
+/obj/item/paper/crumpled/Initialize(mapload)
+ AddElement(/datum/element/update_icon_blocker)
+ return ..()
/obj/item/paper/crumpled/bloody
icon_state = "scrap_bloodied"
diff --git a/code/modules/paperwork/paper_bundle.dm b/code/modules/paperwork/paper_bundle.dm
index e9386ff652aa..220117faea9a 100644
--- a/code/modules/paperwork/paper_bundle.dm
+++ b/code/modules/paperwork/paper_bundle.dm
@@ -58,7 +58,7 @@
usr << browse("", "window=[name]") //Closes the dialog
P = src[page]
P.attackby(W, user)
- update_icon()
+ update_appearance(updates = ALL)
attack_self(usr) //Update the browsed page.
add_fingerprint(usr)
return
@@ -114,7 +114,7 @@
/obj/item/paper_bundle/attack_self(mob/user as mob)
src.show_content(user)
add_fingerprint(usr)
- update_icon()
+ update_appearance(updates = ALL)
return
/obj/item/paper_bundle/proc/update_screen()
@@ -165,7 +165,7 @@
page = amount
if(page == amount)
screen = 2
- update_icon()
+ update_appearance(updates = ALL)
else
to_chat(usr, span_notice("You need to hold it in hand!"))
if (istype(src.loc, /mob) || istype(src.loc?.loc, /mob))
@@ -205,7 +205,7 @@
/obj/item/paper_bundle/AltClick(mob/living/user)
unbundle()
-/obj/item/paper_bundle/update_icon()
+/obj/item/paper_bundle/update_appearance(updates = ALL)
cut_overlays()
var/obj/item/paper/P = src[1]
icon_state = P.icon_state
diff --git a/code/modules/paperwork/paper_cutter.dm b/code/modules/paperwork/paper_cutter.dm
index 6edc5bb08645..f9892f324b97 100644
--- a/code/modules/paperwork/paper_cutter.dm
+++ b/code/modules/paperwork/paper_cutter.dm
@@ -15,7 +15,7 @@
/obj/item/papercutter/Initialize()
. = ..()
storedcutter = new /obj/item/hatchet/cutterblade(src)
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/papercutter/suicide_act(mob/user)
@@ -34,7 +34,7 @@
return (BRUTELOSS)
-/obj/item/papercutter/update_icon()
+/obj/item/papercutter/update_appearance(updates = ALL)
..()
cut_overlays()
icon_state = (storedcutter ? "[initial(icon_state)]-cutter" : "[initial(icon_state)]")
@@ -49,7 +49,7 @@
playsound(loc, "pageturn", 60, 1)
to_chat(user, span_notice("You place [P] in [src]."))
storedpaper = P
- update_icon()
+ update_appearance(updates = ALL)
return
if(istype(P, /obj/item/hatchet/cutterblade) && !storedcutter)
if(!user.transferItemToLoc(P, src))
@@ -57,7 +57,7 @@
to_chat(user, span_notice("You replace [src]'s [P]."))
P.forceMove(src)
storedcutter = P
- update_icon()
+ update_appearance(updates = ALL)
return
if(P.tool_behaviour == TOOL_SCREWDRIVER && storedcutter)
P.play_tool_sound(src)
@@ -79,7 +79,7 @@
to_chat(user, span_notice("You remove [src]'s [storedcutter]."))
user.put_in_hands(storedcutter)
storedcutter = null
- update_icon()
+ update_appearance(updates = ALL)
if(storedpaper)
playsound(src.loc, 'sound/weapons/slash.ogg', 50, 1)
@@ -88,7 +88,7 @@
qdel(storedpaper)
new /obj/item/paperslip(get_turf(src))
new /obj/item/paperslip(get_turf(src))
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/papercutter/MouseDrop(atom/over_object)
. = ..()
diff --git a/code/modules/paperwork/paperbin.dm b/code/modules/paperwork/paperbin.dm
index c52d915c54b4..76a820b95d06 100644
--- a/code/modules/paperwork/paperbin.dm
+++ b/code/modules/paperwork/paperbin.dm
@@ -25,7 +25,7 @@
if(P && !bin_pen)
P.forceMove(src)
bin_pen = P
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/paper_bin/Destroy()
if(papers)
@@ -37,7 +37,7 @@
/obj/item/paper_bin/fire_act(exposed_temperature, exposed_volume)
if(total_paper)
total_paper = 0
- update_icon()
+ update_appearance(updates = ALL)
..()
/obj/item/paper_bin/MouseDrop(atom/over_object)
@@ -73,14 +73,14 @@
user.put_in_hands(P)
to_chat(user, span_notice("You take [P] out of \the [src]."))
bin_pen = null
- update_icon()
+ update_appearance(updates = ALL)
else if(total_paper >= 1)
response = alert(user, "Do you take regular paper, or Carbon copy paper?", "Paper type request", "Regular", "Carbon Copy", "Cancel")
if (response != "Regular" && response != "Carbon Copy")
add_fingerprint(user)
return
total_paper--
- update_icon()
+ update_appearance(updates = ALL)
// If there's any custom paper on the stack, use that instead of creating a new paper.
var/obj/item/paper/P
if(papers.len > 0)
@@ -113,14 +113,14 @@
to_chat(user, span_notice("You put [P] in [src]."))
papers.Add(P)
total_paper++
- update_icon()
+ update_appearance(updates = ALL)
else if(istype(I, /obj/item/pen) && !bin_pen)
var/obj/item/pen/P = I
if(!user.transferItemToLoc(P, src))
return
to_chat(user, span_notice("You put [P] in [src]."))
bin_pen = P
- update_icon()
+ update_appearance(updates = ALL)
else
return ..()
@@ -131,7 +131,7 @@
else
. += "It doesn't contain anything."
-/obj/item/paper_bin/update_icon()
+/obj/item/paper_bin/update_appearance(updates = ALL)
if(total_paper < 1)
icon_state = "paper_bin0"
else
diff --git a/code/modules/paperwork/paperplane.dm b/code/modules/paperwork/paperplane.dm
index 97985c89f6ff..6c330a49adde 100644
--- a/code/modules/paperwork/paperplane.dm
+++ b/code/modules/paperwork/paperplane.dm
@@ -29,7 +29,7 @@
newPaper.forceMove(src)
else
internalPaper = new(src)
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/paperplane/handle_atom_del(atom/A)
if(A == internalPaper)
@@ -52,7 +52,7 @@
sleep(1 SECONDS)
return (BRUTELOSS)
-/obj/item/paperplane/update_icon()
+/obj/item/paperplane/update_appearance(updates = ALL)
cut_overlays()
var/list/stamped = internalPaper.stamped
if(stamped)
@@ -75,7 +75,7 @@
else if(istype(P, /obj/item/stamp)) //we don't randomize stamps on a paperplane
internalPaper.attackby(P, user) //spoofed attack to update internal paper.
- update_icon()
+ update_appearance(updates = ALL)
else if(P.is_hot())
if(HAS_TRAIT(user, TRAIT_CLUMSY) && prob(10))
diff --git a/code/modules/paperwork/papershredder.dm b/code/modules/paperwork/papershredder.dm
index 3447000a9306..0294135e4d57 100644
--- a/code/modules/paperwork/papershredder.dm
+++ b/code/modules/paperwork/papershredder.dm
@@ -11,7 +11,7 @@
/obj/machinery/papershredder/proc/try_insert(mob/user, insert_size = 0)
if(paperamount <= max_paper - insert_size)
paperamount += insert_size
- update_icon()
+ update_appearance(updates = ALL)
playsound(src.loc, 'sound/items/pshred.ogg', 75, 1)
return TRUE
else
@@ -30,7 +30,7 @@
if(ran == 3)
SP.color = null
paperamount -=1
- update_icon()
+ update_appearance(updates = ALL)
to_chat(user, span_warning("The [src] was too full and shredded paper goes everywhere!"))
else
to_chat(user, span_warning("The [src] is full please empty it before you continue."))
@@ -74,7 +74,7 @@
SP.color = null
STR.handle_item_insertion(SP)
paperamount -=1
- update_icon()
+ update_appearance(updates = ALL)
else
to_chat(user, span_warning("The [W] is full."))
return
@@ -85,7 +85,7 @@
if(paperamount < max_paper)
qdel(W)
paperamount += 1
- update_icon()
+ update_appearance(updates = ALL)
return
if(shred_amount && try_insert(user, shred_amount))
@@ -113,12 +113,12 @@
if(ran == 3)
SP.color = null
paperamount -=1
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/papershredder/AltClick(mob/living/user)
emptypaper()
-/obj/machinery/papershredder/update_icon()
+/obj/machinery/papershredder/update_appearance(updates = ALL)
if(paperamount == 0)
icon_state = "papershredder0"
if(paperamount == 1||paperamount == 2)
diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm
index 20793611c237..645f3f00e159 100644
--- a/code/modules/paperwork/pen.dm
+++ b/code/modules/paperwork/pen.dm
@@ -227,9 +227,9 @@
to_chat(user, span_warning("[src] is now active."))
var/datum/component/butchering/butchering = src.GetComponent(/datum/component/butchering)
butchering.butchering_enabled = on
- update_icon()
+ update_appearance(updates = ALL)
-/obj/item/pen/edagger/update_icon()
+/obj/item/pen/edagger/update_appearance(updates = ALL)
if(on)
icon_state = "edagger"
item_state = "edagger"
diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm
index 39a1f086641e..fc905584e005 100644
--- a/code/modules/paperwork/photocopier.dm
+++ b/code/modules/paperwork/photocopier.dm
@@ -341,7 +341,7 @@
c.written += L
c.name = copy.name
c.fields = copy.fields
- c.update_icon()
+ c.update_appearance(updates = ALL)
c.stamps = copy.stamps
if(copy.stamped)
c.stamped = copy.stamped.Copy()
@@ -374,7 +374,7 @@
p.amount++
//p.amount--
p.loc = src.loc
- p.update_icon()
+ p.update_appearance(updates = ALL)
p.icon_state = "paper_words"
p.name = bundle.name
p.pixel_y = rand(-8, 8)
diff --git a/code/modules/paperwork/ticketmachine.dm b/code/modules/paperwork/ticketmachine.dm
index fcc8d03554f4..7672a1a858a0 100644
--- a/code/modules/paperwork/ticketmachine.dm
+++ b/code/modules/paperwork/ticketmachine.dm
@@ -18,9 +18,9 @@
/obj/machinery/ticket_machine/Initialize()
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
-/obj/machinery/ticket_machine/update_icon()
+/obj/machinery/ticket_machine/update_appearance(updates = ALL)
var/Temp = screenNum //This whole thing breaks down a 3 digit number into 3 seperate digits, aka "69" becomes "0","6" and "9"
var/Digit1 = round(Temp%10)//The remainder of any number/10 is always that number's rightmost digit
var/Digit2 = round(((Temp-Digit1)*0.1)%10) //Same idea, but divided by ten, to find the middle digit
@@ -50,7 +50,7 @@
if(currentNum < screenNum - 1)
screenNum -- //this should only happen if the queue is all caught up and more numbers get called than tickets exist
currentNum = screenNum - 1 //so the number wont go onto infinity. Numbers that haven't been taken yet won't show up on the screen yet either.
- update_icon() //Update our icon here
+ update_appearance(updates = ALL) //Update our icon here
if(tickets.len\The [src] already contains a photo.")
..()
@@ -31,7 +31,7 @@
user.put_in_hands(I)
to_chat(user, span_notice("You carefully remove the photo from \the [src]."))
displayed = null
- update_icon()
+ update_appearance(updates = ALL)
return ..()
/obj/item/wallframe/picture/attack_self(mob/user)
@@ -44,7 +44,7 @@
else
return ..()
-/obj/item/wallframe/picture/update_icon()
+/obj/item/wallframe/picture/update_appearance(updates = ALL)
cut_overlays()
if(displayed)
add_overlay(image(displayed))
@@ -106,7 +106,7 @@
else
qdel(framed)
framed = P
- update_icon()
+ update_appearance(updates = ALL)
/obj/structure/sign/picture_frame/examine(mob/user)
if(in_range(src, user) && framed)
@@ -135,7 +135,7 @@
if(!user.transferItemToLoc(P, src))
return
framed = P
- update_icon()
+ update_appearance(updates = ALL)
else
to_chat(user, "\The [src] already contains a photo.")
@@ -148,7 +148,7 @@
if(framed)
framed.show(user)
-/obj/structure/sign/picture_frame/update_icon()
+/obj/structure/sign/picture_frame/update_appearance(updates = ALL)
cut_overlays()
if(framed)
add_overlay(image(framed))
@@ -162,5 +162,5 @@
if(contents.len)
var/obj/item/I = pick(contents)
I.forceMove(F)
- F.update_icon()
+ F.update_appearance(updates = ALL)
qdel(src)
diff --git a/code/modules/photography/photos/photo.dm b/code/modules/photography/photos/photo.dm
index 768367a708ed..5dea309e7766 100644
--- a/code/modules/photography/photos/photo.dm
+++ b/code/modules/photography/photos/photo.dm
@@ -21,7 +21,7 @@
if(!istype(P))
return
picture = P
- update_icon()
+ update_appearance(updates = ALL)
if(P.caption)
scribble = P.caption
if(setname && P.picture_name)
@@ -32,7 +32,7 @@
if(setdesc && P.picture_desc)
desc = P.picture_desc
-/obj/item/photo/update_icon()
+/obj/item/photo/update_appearance(updates = ALL)
if(!istype(picture) || !picture.picture_image)
return
var/icon/I = picture.get_small_icon()
diff --git a/code/modules/plumbing/ducts.dm b/code/modules/plumbing/ducts.dm
index f238a8cc734d..a5d28bf42960 100644
--- a/code/modules/plumbing/ducts.dm
+++ b/code/modules/plumbing/ducts.dm
@@ -57,7 +57,7 @@ All the important duct code:
for(var/atom/movable/AM in get_step(src, D))
if(connect_network(AM, D))
add_connects(D)
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/duct/proc/connect_network(atom/movable/AM, direction, ignore_color)
if(istype(AM, /obj/machinery/duct))
@@ -82,7 +82,7 @@ All the important duct code:
add_neighbour(D)
D.add_connects(opposite_dir)
- D.update_icon()
+ D.update_appearance(updates = ALL)
return TRUE //tell the current pipe to also update it's sprite
if(!(D in neighbours)) //we cool
if((duct_color != D.duct_color) && !(ignore_colors || D.ignore_colors))
@@ -125,7 +125,7 @@ All the important duct code:
duct.remove_duct(src)
lose_neighbours()
reset_connects(0)
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/duct/proc/create_duct()
duct = new()
@@ -160,7 +160,7 @@ All the important duct code:
adjacents += D
return adjacents
-/obj/machinery/duct/update_icon() //setting connects isnt a parameter because sometimes we make more than one change, overwrite it completely or just add it to the bitfield
+/obj/machinery/duct/update_appearance(updates = ALL) //setting connects isnt a parameter because sometimes we make more than one change, overwrite it completely or just add it to the bitfield
var/temp_icon = initial(icon_state)
for(var/D in GLOB.cardinals)
if(D & connects)
@@ -245,7 +245,7 @@ All the important duct code:
return
connect_network(D, direction, TRUE)
add_connects(direction)
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/duct/multilayered
name = "duct layer-manifold"
@@ -262,7 +262,7 @@ All the important duct code:
dumb = TRUE
-/obj/machinery/duct/multilayered/update_icon()
+/obj/machinery/duct/multilayered/update_appearance(updates = ALL)
icon_state = initial(icon_state)
if((connects & NORTH) || (connects & SOUTH))
icon_state += "_vertical"
diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm
index 2600bf0ebff7..1e153bcd428e 100644
--- a/code/modules/power/apc.dm
+++ b/code/modules/power/apc.dm
@@ -205,7 +205,7 @@
operating = FALSE
name = "[area.name] APC"
stat |= MAINT
- src.update_icon()
+ src.update_appearance(updates = ALL)
addtimer(CALLBACK(src, PROC_REF(update)), 5)
/obj/machinery/power/apc/Destroy()
@@ -230,7 +230,7 @@
/obj/machinery/power/apc/handle_atom_del(atom/A)
if(A == cell)
cell = null
- update_icon()
+ update_appearance(updates = ALL)
updateUsrDialog()
/obj/machinery/power/apc/proc/make_terminal()
@@ -260,7 +260,7 @@
stack_trace("Bad areastring path for [src], [src.areastring]")
else if(isarea(A) && src.areastring == null)
src.area = A
- update_icon()
+ update_appearance(updates = ALL)
make_terminal()
@@ -325,7 +325,7 @@
// update the APC icon to show the three base states
// also add overlays for indicator lights
-/obj/machinery/power/apc/update_icon()
+/obj/machinery/power/apc/update_appearance(updates = ALL)
var/update = check_updates() //returns 0 if no need to update icons.
// 1 if we need to update the icon_state
// 2 if we need to update the overlays
@@ -518,7 +518,7 @@
else if (opened!=APC_COVER_REMOVED)
opened = APC_COVER_CLOSED
coverlocked = TRUE //closing cover relocks it
- update_icon()
+ update_appearance(updates = ALL)
return
else if (!(stat & BROKEN))
if(coverlocked && !(stat & MAINT)) // locked...
@@ -529,7 +529,7 @@
return
else
opened = APC_COVER_OPENED
- update_icon()
+ update_appearance(updates = ALL)
return
else
W.play_tool_sound(src)
@@ -538,7 +538,7 @@
W.play_tool_sound(src)
to_chat(user, span_notice("You pry the broken cover off of [src]."))
opened = APC_COVER_REMOVED
- update_icon()
+ update_appearance(updates = ALL)
return
/obj/machinery/power/apc/screwdriver_act(mob/living/user, obj/item/W)
@@ -550,10 +550,10 @@
user.visible_message("[user] removes \the [cell] from [src]!",span_notice("You remove \the [cell]."))
var/turf/T = get_turf(user)
cell.forceMove(T)
- cell.update_icon()
+ cell.update_appearance(updates = ALL)
cell = null
charging = APC_NOT_CHARGING
- update_icon()
+ update_appearance(updates = ALL)
return
else
switch (has_electronics)
@@ -570,14 +570,14 @@
else
to_chat(user, span_warning("There is nothing to secure!"))
return
- update_icon()
+ update_appearance(updates = ALL)
else if(obj_flags & EMAGGED)
to_chat(user, span_warning("The interface is broken!"))
return
else
panel_open = !panel_open
to_chat(user, span_notice("The wires have been [panel_open ? "exposed" : "unexposed"]."))
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/power/apc/wirecutter_act(mob/living/user, obj/item/W)
if (terminal && opened)
@@ -626,7 +626,7 @@
"[user.name] has inserted the power cell to [src.name]!",\
span_notice("You insert the power cell."))
chargecount = 0
- update_icon()
+ update_appearance(updates = ALL)
else if (W.GetID())
togglelock(user)
else if (istype(W, /obj/item/stack/cable_coil) && opened)
@@ -704,7 +704,7 @@
chargecount = 0
user.visible_message(span_notice("[user] fabricates a weak power cell and places it into [src]."), \
span_warning("Your [P.name] whirrs with strain as you create a weak power cell and place it into [src]!"))
- update_icon()
+ update_appearance(updates = ALL)
else
to_chat(user, span_warning("[src] has both electronics and a cell."))
return
@@ -719,7 +719,7 @@
to_chat(user, span_notice("You replace missing APC's cover."))
qdel(W)
opened = APC_COVER_OPENED
- update_icon()
+ update_appearance(updates = ALL)
return
if (has_electronics)
to_chat(user, span_warning("You cannot repair this APC until you remove the electronics still inside!"))
@@ -733,7 +733,7 @@
obj_integrity = max_integrity
if (opened==APC_COVER_REMOVED)
opened = APC_COVER_OPENED
- update_icon()
+ update_appearance(updates = ALL)
else if(istype(W, /obj/item/clockwork/integration_cog) && is_servant_of_ratvar(user))
if(integration_cog)
to_chat(user, span_warning("This APC already has a cog."))
@@ -742,7 +742,7 @@
user.visible_message(span_warning("[user] slices [src]'s cover lock, and it swings wide open!"), \
span_alloy("You slice [src]'s cover lock apart with [W], and the cover swings open."))
opened = APC_COVER_OPENED
- update_icon()
+ update_appearance(updates = ALL)
else
user.visible_message(span_warning("[user] presses [W] into [src]!"), \
span_alloy("You hold [W] in place within [src], and it slowly begins to warm up..."))
@@ -759,7 +759,7 @@
playsound(src, 'sound/machines/clockcult/steam_whoosh.ogg', 50, FALSE)
opened = APC_COVER_CLOSED
locked = FALSE
- update_icon()
+ update_appearance(updates = ALL)
return
else if(istype(W, /obj/item/apc_powercord))
return //because we put our fancy code in the right places, and this is all in the powercord's afterattack()
@@ -815,7 +815,7 @@
chargecount = 0
user.visible_message(span_notice("[user] fabricates a weak power cell and places it into [src]."), \
span_warning("Your [the_rcd.name] whirrs with strain as you create a weak power cell and place it into [src]!"))
- update_icon()
+ update_appearance(updates = ALL)
return TRUE
else
to_chat(user, span_warning("[src] has both electronics and a cell."))
@@ -835,7 +835,7 @@
if(allowed(usr) && !wires.is_cut(WIRE_IDSCAN) && !malfhack)
locked = !locked
to_chat(user, span_notice("You [ locked ? "lock" : "unlock"] the APC interface."))
- update_icon()
+ update_appearance(updates = ALL)
updateUsrDialog()
else
to_chat(user, span_warning("Access denied."))
@@ -866,7 +866,7 @@
opened = APC_COVER_REMOVED
coverlocked = FALSE
visible_message(span_warning("The APC cover is knocked down!"))
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/power/apc/emag_act(mob/user)
if(!(obj_flags & EMAGGED) && !malfhack)
@@ -882,7 +882,7 @@
obj_flags |= EMAGGED
locked = FALSE
to_chat(user, span_notice("You emag the APC interface."))
- update_icon()
+ update_appearance(updates = ALL)
// attack with hand - remove cell (if cover open) or interact with the APC
@@ -899,10 +899,10 @@
if(cell)
user.visible_message("[user] removes \the [cell] from [src]!",span_notice("You remove \the [cell]."))
user.put_in_hands(cell)
- cell.update_icon()
+ cell.update_appearance(updates = ALL)
src.cell = null
charging = APC_NOT_CHARGING
- src.update_icon()
+ src.update_appearance(updates = ALL)
return
if((stat & MAINT) && !opened) //no board; no interface
return
@@ -1040,7 +1040,7 @@
to_chat(usr, "The APC does not respond to the command.")
else
locked = !locked
- update_icon()
+ update_appearance(updates = ALL)
. = TRUE
if("cover")
coverlocked = !coverlocked
@@ -1055,20 +1055,20 @@
chargemode = !chargemode
if(!chargemode)
charging = APC_NOT_CHARGING
- update_icon()
+ update_appearance(updates = ALL)
. = TRUE
if("channel")
if(params["eqp"])
equipment = setsubsystem(text2num(params["eqp"]))
- update_icon()
+ update_appearance(updates = ALL)
update()
else if(params["lgt"])
lighting = setsubsystem(text2num(params["lgt"]))
- update_icon()
+ update_appearance(updates = ALL)
update()
else if(params["env"])
environ = setsubsystem(text2num(params["env"]))
- update_icon()
+ update_appearance(updates = ALL)
update()
. = TRUE
if("overload")
@@ -1086,7 +1086,7 @@
malfvacate()
if("reboot")
failure_timer = 0
- update_icon()
+ update_appearance(updates = ALL)
update()
if("emergency_lighting")
emergency_lights = !emergency_lights
@@ -1111,7 +1111,7 @@
add_hiddenprint(user)
log_combat(user, src, "turned [operating ? "on" : "off"]")
update()
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/power/apc/proc/malfhack(mob/living/silicon/ai/malf)
if(!istype(malf))
@@ -1252,7 +1252,7 @@
/obj/machinery/power/apc/process()
if(icon_update_needed)
- update_icon()
+ update_appearance(updates = ALL)
if(stat & (BROKEN|MAINT))
return
if(!area.requires_power)
@@ -1427,7 +1427,7 @@
if(APC_RESET_EMP)
equipment = 3
environ = 3
- update_icon()
+ update_appearance(updates = ALL)
update()
// damage and destruction acts
@@ -1443,7 +1443,7 @@
lighting = 0
equipment = 0
environ = 0
- update_icon()
+ update_appearance(updates = ALL)
update()
addtimer(CALLBACK(src, PROC_REF(reset), APC_RESET_EMP), 600)
diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm
index 4143c7a3ad65..404bd441a9dd 100644
--- a/code/modules/power/cable.dm
+++ b/code/modules/power/cable.dm
@@ -90,7 +90,7 @@ By design, d1 is the smallest direction and d2 is the highest
cable_color = param_color || cable_color || pick(cable_colors)
if(cable_colors[cable_color])
cable_color = cable_colors[cable_color]
- update_icon()
+ update_appearance(updates = ALL)
/obj/structure/cable/Destroy() // called when a cable is deleted
if(powernet)
@@ -117,9 +117,9 @@ By design, d1 is the smallest direction and d2 is the highest
if(level == 1 && isturf(loc))
invisibility = i ? INVISIBILITY_MAXIMUM : 0
- update_icon()
+ update_appearance(updates = ALL)
-/obj/structure/cable/update_icon()
+/obj/structure/cable/update_appearance(updates = ALL)
icon_state = "[d1]-[d2]"
color = null
add_atom_colour(cable_color, FIXED_COLOUR_PRIORITY)
@@ -492,12 +492,12 @@ By design, d1 is the smallest direction and d2 is the highest
pixel_x = rand(-2,2)
pixel_y = rand(-2,2)
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/stack/cable_coil/proc/set_cable_color(new_color)
color = GLOB.cable_colors[new_color]
cable_color = new_color
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/stack/cable_coil/suicide_act(mob/user)
if(locate(/obj/structure/chair/stool) in get_turf(user))
@@ -537,7 +537,7 @@ By design, d1 is the smallest direction and d2 is the highest
if(use(CABLE_RESTRAINTS_COST))
var/obj/item/restraints/handcuffs/cable/restraints = new(null, cable_color)
user.put_in_hands(restraints)
- update_icon()
+ update_appearance(updates = ALL)
///////////////////////////////////
// General procedures
@@ -562,7 +562,7 @@ By design, d1 is the smallest direction and d2 is the highest
return
return ..()
-/obj/item/stack/cable_coil/update_icon()
+/obj/item/stack/cable_coil/update_appearance(updates = ALL)
if(novariants)
return
icon_state = "[initial(item_state)][amount < 3 ? amount : ""]"
@@ -576,7 +576,7 @@ By design, d1 is the smallest direction and d2 is the highest
var/obj/item/stack/cable_coil/new_cable = ..()
if(istype(new_cable))
new_cable.cable_color = cable_color
- new_cable.update_icon()
+ new_cable.update_appearance(updates = ALL)
//add cables to the stack
/obj/item/stack/cable_coil/proc/give(extra)
@@ -584,7 +584,7 @@ By design, d1 is the smallest direction and d2 is the highest
amount = max_amount
else
amount += extra
- update_icon()
+ update_appearance(updates = ALL)
@@ -633,7 +633,7 @@ By design, d1 is the smallest direction and d2 is the highest
C.d1 = 0 //it's a O-X node cable
C.d2 = dirn
C.add_fingerprint(user)
- C.update_icon()
+ C.update_appearance(updates = ALL)
//create a new powernet with the cable, if needed it will be merged later
var/datum/powernet/PN = new()
@@ -705,7 +705,7 @@ By design, d1 is the smallest direction and d2 is the highest
NC.d1 = 0
NC.d2 = fdirn
NC.add_fingerprint(user)
- NC.update_icon()
+ NC.update_appearance(updates = ALL)
//create a new powernet with the cable, if needed it will be merged later
var/datum/powernet/newPN = new(loc.z)
@@ -747,7 +747,7 @@ By design, d1 is the smallest direction and d2 is the highest
return
- C.update_icon()
+ C.update_appearance(updates = ALL)
C.d1 = nd1
C.d2 = nd2
@@ -755,7 +755,7 @@ By design, d1 is the smallest direction and d2 is the highest
//updates the stored cable coil
C.add_fingerprint(user)
- C.update_icon()
+ C.update_appearance(updates = ALL)
C.mergeConnectedNetworks(C.d1) //merge the powernets...
@@ -786,7 +786,7 @@ By design, d1 is the smallest direction and d2 is the highest
/obj/item/stack/cable_coil/cyborg/attack_self(mob/user)
var/picked = tgui_input_list(user, "Pick a cable color.","Cable Color", GLOB.cable_colors)
cable_color = picked
- update_icon()
+ update_appearance(updates = ALL)
//////////////////////////////
// Misc.
@@ -848,7 +848,7 @@ By design, d1 is the smallest direction and d2 is the highest
amount = rand(1,2)
pixel_x = rand(-2,2)
pixel_y = rand(-2,2)
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/stack/cable_coil/cut/red
cable_color = "red"
diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm
index dc28c0f25167..3f30eb75b99d 100644
--- a/code/modules/power/cell.dm
+++ b/code/modules/power/cell.dm
@@ -33,7 +33,7 @@
charge = maxcharge
if(ratingdesc)
desc += " This one has a rating of [DisplayEnergy(maxcharge)], and you should not swallow it."
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/stock_parts/cell/Destroy()
STOP_PROCESSING(SSobj, src)
@@ -54,7 +54,7 @@
else
return PROCESS_KILL
-/obj/item/stock_parts/cell/update_icon()
+/obj/item/stock_parts/cell/update_appearance(updates = ALL)
cut_overlays()
if(grown_battery)
add_overlay(image('icons/obj/power.dmi',"grown_wires"))
@@ -178,7 +178,7 @@
/obj/item/stock_parts/cell/crap/empty/Initialize()
. = ..()
charge = 0
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/stock_parts/cell/upgraded
name = "upgraded power cell"
@@ -200,7 +200,7 @@
/obj/item/stock_parts/cell/secborg/empty/Initialize()
. = ..()
charge = 0
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/stock_parts/cell/mini_egun
name = "miniature energy gun power cell"
@@ -236,7 +236,7 @@
/obj/item/stock_parts/cell/high/empty/Initialize()
. = ..()
charge = 0
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/stock_parts/cell/super
name = "super-capacity power cell"
@@ -248,7 +248,7 @@
/obj/item/stock_parts/cell/super/empty/Initialize()
. = ..()
charge = 0
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/stock_parts/cell/hyper
name = "hyper-capacity power cell"
@@ -260,7 +260,7 @@
/obj/item/stock_parts/cell/hyper/empty/Initialize()
. = ..()
charge = 0
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/stock_parts/cell/bluespace
name = "bluespace power cell"
@@ -273,7 +273,7 @@
/obj/item/stock_parts/cell/bluespace/empty/Initialize()
. = ..()
charge = 0
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/stock_parts/cell/infinite
name = "infinite-capacity power cell!"
@@ -294,8 +294,9 @@
maxcharge = 50000
ratingdesc = FALSE
-/obj/item/stock_parts/cell/infinite/abductor/update_icon()
- return
+/obj/item/stock_parts/cell/infinite/abductor/Initialize(mapload)
+ AddElement(/datum/element/update_icon_blocker)
+ return ..()
/obj/item/stock_parts/cell/potato
@@ -326,7 +327,7 @@
/obj/item/stock_parts/cell/emproof/empty/Initialize()
. = ..()
charge = 0
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/stock_parts/cell/emproof/empty/ComponentInitialize()
. = ..()
diff --git a/code/modules/power/generator.dm b/code/modules/power/generator.dm
index 4f611e650120..98588801ad6b 100644
--- a/code/modules/power/generator.dm
+++ b/code/modules/power/generator.dm
@@ -22,7 +22,7 @@
find_circs()
connect_to_network()
SSair.atmos_machinery += src
- update_icon()
+ update_appearance(updates = ALL)
component_parts = list(new /obj/item/circuitboard/machine/generator)
/obj/machinery/power/generator/ComponentInitialize()
@@ -34,7 +34,7 @@
SSair.atmos_machinery -= src
return ..()
-/obj/machinery/power/generator/update_icon()
+/obj/machinery/power/generator/update_appearance(updates = ALL)
cut_overlays()
SSvis_overlays.remove_vis_overlay(src, managed_vis_overlays)
@@ -109,7 +109,7 @@
var/datum/gas_mixture/cold_circ_air1 = cold_circ.airs[1]
cold_circ_air1.merge(cold_air)
- update_icon()
+ update_appearance(updates = ALL)
src.updateDialog()
@@ -222,7 +222,7 @@
to_chat(user, span_notice("You start removing the circulators..."))
if(I.use_tool(src, user, 30, volume=50))
kill_circs()
- update_icon()
+ update_appearance(updates = ALL)
to_chat(user, span_notice("You disconnect [src]'s circulator links."))
playsound(src, 'sound/misc/box_deploy.ogg', 50)
return TRUE
@@ -248,7 +248,7 @@
kill_circs()
connect_to_network()
to_chat(user, span_notice("You [anchored?"secure":"unsecure"] [src]."))
- update_icon()
+ update_appearance(updates = ALL)
return TRUE
/obj/machinery/power/generator/screwdriver_act(mob/user, obj/item/I)
@@ -263,7 +263,7 @@
panel_open = !panel_open
I.play_tool_sound(src)
to_chat(user, span_notice("You [panel_open?"open":"close"] the panel on [src]."))
- update_icon()
+ update_appearance(updates = ALL)
return TRUE
/obj/machinery/power/generator/crowbar_act(mob/user, obj/item/I)
@@ -286,11 +286,11 @@
/obj/machinery/power/generator/proc/kill_circs()
if(hot_circ)
hot_circ.generator = null
- hot_circ.update_icon()
+ hot_circ.update_appearance(updates = ALL)
hot_circ = null
if(cold_circ)
cold_circ.generator = null
- cold_circ.update_icon()
+ cold_circ.update_appearance(updates = ALL)
cold_circ = null
/obj/machinery/power/generator/obj_break(damage_flag)
diff --git a/code/modules/power/gravitygenerator.dm b/code/modules/power/gravitygenerator.dm
index 7adcdd8e07cb..9c1c8a1e38a2 100644
--- a/code/modules/power/gravitygenerator.dm
+++ b/code/modules/power/gravitygenerator.dm
@@ -43,7 +43,7 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne
if(tesla_flags & TESLA_MACHINE_EXPLOSIVE)
qdel(src)//like the singulo, tesla deletes it. stops it from exploding over and over
-/obj/machinery/gravity_generator/update_icon()
+/obj/machinery/gravity_generator/update_appearance(updates = ALL)
..()
icon_state = "[get_status()]_[sprite_number]"
@@ -154,7 +154,7 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne
part.sprite_number = count
part.main_part = src
parts += part
- part.update_icon()
+ part.update_appearance(updates = ALL)
/obj/machinery/gravity_generator/main/proc/connected_parts()
return parts.len == 8
@@ -177,7 +177,7 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne
if(M.stat & BROKEN)
M.set_fix()
broken_state = 0
- update_icon()
+ update_appearance(updates = ALL)
set_power()
// Interaction
@@ -190,14 +190,14 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne
to_chat(user, span_notice("You secure the screws of the framework."))
I.play_tool_sound(src)
broken_state++
- update_icon()
+ update_appearance(updates = ALL)
return
if(GRAV_NEEDS_WELDING)
if(I.tool_behaviour == TOOL_WELDER)
if(I.use_tool(src, user, 0, volume=50, amount=1))
to_chat(user, span_notice("You mend the damaged framework."))
broken_state++
- update_icon()
+ update_appearance(updates = ALL)
return
if(GRAV_NEEDS_PLASTEEL)
if(istype(I, /obj/item/stack/sheet/plasteel))
@@ -207,7 +207,7 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne
to_chat(user, span_notice("You add the plating to the framework."))
playsound(src.loc, 'sound/machines/click.ogg', 75, 1)
broken_state++
- update_icon()
+ update_appearance(updates = ALL)
else
to_chat(user, span_warning("You need 10 sheets of plasteel!"))
return
@@ -259,10 +259,10 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne
return "fix[min(broken_state, 3)]"
return on || charging_state != POWER_IDLE ? "on" : "off"
-/obj/machinery/gravity_generator/main/update_icon()
+/obj/machinery/gravity_generator/main/update_appearance(updates = ALL)
..()
for(var/obj/O in parts)
- O.update_icon()
+ O.update_appearance(updates = ALL)
// Set the charging state based on power/breaker.
/obj/machinery/gravity_generator/main/proc/set_power()
@@ -274,7 +274,7 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne
charging_state = new_state ? POWER_UP : POWER_DOWN // Startup sequence animation.
investigate_log("is now [charging_state == POWER_UP ? "charging" : "discharging"].", INVESTIGATE_GRAVITY)
- update_icon()
+ update_appearance(updates = ALL)
// Set the state of the gravity.
/obj/machinery/gravity_generator/main/proc/set_state(new_state)
@@ -295,7 +295,7 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne
investigate_log("was brought offline and there is now no gravity for this level.", INVESTIGATE_GRAVITY)
message_admins("The gravity generator was brought offline with no backup generator. [ADMIN_VERBOSEJMP(src)]")
- update_icon()
+ update_appearance(updates = ALL)
update_list()
src.updateUsrDialog()
if(alert)
diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm
index 87558aa6b688..36d00652d538 100644
--- a/code/modules/power/lighting.dm
+++ b/code/modules/power/lighting.dm
@@ -87,7 +87,7 @@
if(cell)
user.visible_message("[user] removes [cell] from [src]!",span_notice("You remove [cell]."))
user.put_in_hands(cell)
- cell.update_icon()
+ cell.update_appearance(updates = ALL)
cell = null
add_fingerprint(user)
@@ -340,7 +340,7 @@
QDEL_NULL(cell)
return ..()
-/obj/machinery/light/update_icon()
+/obj/machinery/light/update_appearance(updates = ALL)
cut_overlays()
switch(status) // set icon_states
if(LIGHT_OK)
@@ -408,7 +408,7 @@
else
use_power = IDLE_POWER_USE
set_light(0)
- update_icon()
+ update_appearance(updates = ALL)
active_power_usage = (brightness * 10)
if(on != on_gs)
@@ -537,7 +537,7 @@
set_light(0)
forced_off = !forced_off
on = !on
- update_icon()
+ update_appearance(updates = ALL)
update()
else
return ..()
diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm
index ad2772f03c94..a0c54dd950ea 100644
--- a/code/modules/power/port_gen.dm
+++ b/code/modules/power/port_gen.dm
@@ -45,15 +45,15 @@
/obj/machinery/power/port_gen/proc/TogglePower()
if(active)
active = FALSE
- update_icon()
+ update_appearance(updates = ALL)
soundloop.stop()
else if(HasFuel())
active = TRUE
START_PROCESSING(SSmachines, src)
- update_icon()
+ update_appearance(updates = ALL)
soundloop.start()
-/obj/machinery/power/port_gen/update_icon()
+/obj/machinery/power/port_gen/update_appearance(updates = ALL)
icon_state = "[base_icon]_[active]"
/obj/machinery/power/port_gen/process()
diff --git a/code/modules/power/power.dm b/code/modules/power/power.dm
index fa967e02f788..6afcc7c33be2 100644
--- a/code/modules/power/power.dm
+++ b/code/modules/power/power.dm
@@ -124,7 +124,7 @@
SEND_SIGNAL(src, COMSIG_MACHINERY_POWER_LOST)
. = TRUE
stat |= NOPOWER
- update_icon()
+ update_appearance(updates = ALL)
// connect the machine to a powernet if a node cable is present on the turf
/obj/machinery/power/proc/connect_to_network()
diff --git a/code/modules/power/singularity/collector.dm b/code/modules/power/singularity/collector.dm
index 7a8d8c5da898..38b6209c5601 100644
--- a/code/modules/power/singularity/collector.dm
+++ b/code/modules/power/singularity/collector.dm
@@ -159,7 +159,7 @@
if(!user.transferItemToLoc(W, src))
return
loaded_tank = W
- update_icon()
+ update_appearance(updates = ALL)
else if(W.GetID())
if(togglelock(user))
return TRUE
@@ -294,14 +294,14 @@
if(active)
toggle_power()
else
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/power/rad_collector/rad_act(pulse_strength, collectable_radiation)
. = ..()
if(loaded_tank && active && collectable_radiation && pulse_strength > RAD_COLLECTOR_EFFICIENCY)
stored_power += (pulse_strength-RAD_COLLECTOR_EFFICIENCY)*RAD_COLLECTOR_COEFFICIENT*(machine_tier+power_bonus)
-/obj/machinery/power/rad_collector/update_icon()
+/obj/machinery/power/rad_collector/update_appearance(updates = ALL)
cut_overlays()
if(loaded_tank)
add_overlay("ptank")
@@ -327,7 +327,7 @@
else
icon_state = "ca"
flick("ca_deactive", src)
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/power/rad_collector/bullet_act(obj/item/projectile/P)
if(istype(P, /obj/item/projectile/energy/nuclear_particle))
diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm
index e8bb1661c7f0..20820d22e44f 100644
--- a/code/modules/power/singularity/emitter.dm
+++ b/code/modules/power/singularity/emitter.dm
@@ -126,7 +126,7 @@
QDEL_NULL(sparks)
return ..()
-/obj/machinery/power/emitter/update_icon()
+/obj/machinery/power/emitter/update_appearance(updates = ALL)
if(active && powernet)
icon_state = avail(active_power_usage) ? icon_state_on : icon_state_underpowered
else
@@ -152,7 +152,7 @@
log_game("Emitter turned [active ? "ON" : "OFF"] by [key_name(user)] in [AREACOORD(src)]")
investigate_log("turned [active ? "ON" : "OFF"] by [key_name(user)] at [AREACOORD(src)]", INVESTIGATE_SINGULO)
investigate_log("turned [active ? "ON" : "OFF"] by [key_name(user)] at [AREACOORD(src)]", INVESTIGATE_SUPERMATTER) // yogs - so supermatter investigate is useful
- update_icon()
+ update_appearance(updates = ALL)
else
to_chat(user, span_warning("The controls are locked!"))
@@ -175,20 +175,20 @@
return
if(state != EMITTER_WELDED || (!powernet && active_power_usage))
active = FALSE
- update_icon()
+ update_appearance(updates = ALL)
return
if(active == TRUE)
if(!active_power_usage || surplus() >= active_power_usage)
add_load(active_power_usage)
if(!powered)
powered = TRUE
- update_icon()
+ update_appearance(updates = ALL)
investigate_log("regained power and turned ON at [AREACOORD(src)]", INVESTIGATE_SINGULO)
investigate_log("regained power and turned ON at [AREACOORD(src)]", INVESTIGATE_SUPERMATTER) // yogs - so supermatter investigate is useful
else
if(powered)
powered = FALSE
- update_icon()
+ update_appearance(updates = ALL)
investigate_log("lost power and turned OFF at [AREACOORD(src)]", INVESTIGATE_SINGULO)
investigate_log("lost power and turned OFF at [AREACOORD(src)]", INVESTIGATE_SUPERMATTER) // yogs - so supermatter investigate is useful
log_game("Emitter lost power in [AREACOORD(src)]")
diff --git a/code/modules/power/singularity/field_generator.dm b/code/modules/power/singularity/field_generator.dm
index d9e087c18724..da96d4ced5c5 100644
--- a/code/modules/power/singularity/field_generator.dm
+++ b/code/modules/power/singularity/field_generator.dm
@@ -44,7 +44,7 @@ field_generator power level display
var/list/obj/machinery/field/generator/connected_gens
var/clean_up = 0
-/obj/machinery/field/generator/update_icon()
+/obj/machinery/field/generator/update_appearance(updates = ALL)
cut_overlays()
if(warming_up)
add_overlay("+a[warming_up]")
@@ -173,7 +173,7 @@ field_generator power level display
var/new_level = round(num_power_levels * power / field_generator_max_power)
if(new_level != power_level)
power_level = new_level
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/field/generator/proc/turn_off()
active = FG_OFFLINE
@@ -182,7 +182,7 @@ field_generator power level display
while (warming_up>0 && !active)
sleep(5 SECONDS)
warming_up--
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/field/generator/proc/turn_on()
active = FG_CHARGING
@@ -190,7 +190,7 @@ field_generator power level display
while (warming_up<3 && active)
sleep(5 SECONDS)
warming_up++
- update_icon()
+ update_appearance(updates = ALL)
if(warming_up >= 3)
start_fields()
@@ -306,7 +306,7 @@ field_generator power level display
connected_gens |= G
G.connected_gens |= src
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/field/generator/proc/cleanup()
@@ -321,7 +321,7 @@ field_generator power level display
FG.cleanup()
connected_gens -= FG
clean_up = 0
- update_icon()
+ update_appearance(updates = ALL)
//This is here to help fight the "hurr durr, release singulo cos nobody will notice before the
//singulo eats the evidence". It's not fool-proof but better than nothing.
diff --git a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm
index 6f5824de0c19..3dcb4ca98906 100644
--- a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm
+++ b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm
@@ -107,7 +107,7 @@
construction_state = PA_CONSTRUCTION_PANEL_OPEN
update_state()
- update_icon()
+ update_appearance(updates = ALL)
/obj/structure/particle_accelerator/deconstruct(disassembled = TRUE)
@@ -122,7 +122,7 @@
investigate_log("was moved whilst active; it powered down.", INVESTIGATE_SINGULO)
-/obj/structure/particle_accelerator/update_icon()
+/obj/structure/particle_accelerator/update_appearance(updates = ALL)
switch(construction_state)
if(PA_CONSTRUCTION_UNSECURED,PA_CONSTRUCTION_UNWIRED)
icon_state="[reference]"
diff --git a/code/modules/power/singularity/particle_accelerator/particle_control.dm b/code/modules/power/singularity/particle_accelerator/particle_control.dm
index 382c4223f344..825b78f5f233 100644
--- a/code/modules/power/singularity/particle_accelerator/particle_control.dm
+++ b/code/modules/power/singularity/particle_accelerator/particle_control.dm
@@ -54,7 +54,7 @@
var/obj/structure/particle_accelerator/part = CP
part.strength = null
part.powered = FALSE
- part.update_icon()
+ part.update_appearance(updates = ALL)
connected_parts.Cut()
return
if(!part_scan())
@@ -62,7 +62,7 @@
active = FALSE
connected_parts.Cut()
-/obj/machinery/particle_accelerator/control_box/update_icon()
+/obj/machinery/particle_accelerator/control_box/update_appearance(updates = ALL)
if(active)
icon_state = "control_boxp[strength]" //yogs- fix sprite not updating (note that /tg/ PA power 2 sprite is incomplete)
else
@@ -84,7 +84,7 @@
for(var/CP in connected_parts)
var/obj/structure/particle_accelerator/part = CP
part.strength = strength
- part.update_icon()
+ part.update_appearance(updates = ALL)
/obj/machinery/particle_accelerator/control_box/proc/add_strength(s)
if(assembled && (strength < strength_upper_limit))
@@ -120,12 +120,12 @@
if(connected_parts.len < 6)
investigate_log("lost a connected part; It powered down.", INVESTIGATE_SINGULO)
toggle_power()
- update_icon()
+ update_appearance(updates = ALL)
return
if(area_restricted && !istype(get_area(src),/area/engine))
investigate_log("had its area restriction turned on while in an invalid area; It powered down.", INVESTIGATE_SINGULO)
toggle_power()
- update_icon()
+ update_appearance(updates = ALL)
return
//emit some particles
for(var/obj/structure/particle_accelerator/particle_emitter/PE in connected_parts)
@@ -198,14 +198,14 @@
var/obj/structure/particle_accelerator/part = CP
part.strength = strength
part.powered = TRUE
- part.update_icon()
+ part.update_appearance(updates = ALL)
else
use_power = IDLE_POWER_USE
for(var/CP in connected_parts)
var/obj/structure/particle_accelerator/part = CP
part.strength = null
part.powered = FALSE
- part.update_icon()
+ part.update_appearance(updates = ALL)
return TRUE
@@ -269,7 +269,7 @@
if(did_something)
user.changeNext_move(CLICK_CD_MELEE)
update_state()
- update_icon()
+ update_appearance(updates = ALL)
return
..()
@@ -365,7 +365,7 @@
to_chat(operator, "You [locked ? "enable" : "disable"] the area restriction.");
. = TRUE
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/particle_accelerator/control_box/charlie //for charlie station
locked = FALSE
diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm
index 9a94a93dca46..2b502df20639 100644
--- a/code/modules/power/smes.dm
+++ b/code/modules/power/smes.dm
@@ -61,7 +61,7 @@
obj_break()
return
terminal.master = src
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/power/smes/RefreshParts()
var/IO = 0
@@ -81,7 +81,7 @@
/obj/machinery/power/smes/attackby(obj/item/I, mob/user, params)
//opening using screwdriver
if(default_deconstruction_screwdriver(user, "[initial(icon_state)]-o", initial(icon_state), I))
- update_icon()
+ update_appearance(updates = ALL)
return
//changing direction using wrench
@@ -98,7 +98,7 @@
to_chat(user, span_alert("No power terminal found."))
return
stat &= ~BROKEN
- update_icon()
+ update_appearance(updates = ALL)
return
//building and linking a terminal
@@ -205,7 +205,7 @@
obj_break()
-/obj/machinery/power/smes/update_icon()
+/obj/machinery/power/smes/update_appearance(updates = ALL)
cut_overlays()
if(stat & BROKEN)
return
@@ -286,7 +286,7 @@
// only update icon if state changed
if(last_disp != chargedisplay() || last_chrg != inputting || last_onln != outputting)
- update_icon()
+ update_appearance(updates = ALL)
@@ -316,7 +316,7 @@
output_used -= excess
if(clev != chargedisplay() ) //if needed updates the icons overlay
- update_icon()
+ update_appearance(updates = ALL)
return
@@ -353,12 +353,12 @@
if("tryinput")
input_attempt = !input_attempt
log_smes(usr)
- update_icon()
+ update_appearance(updates = ALL)
. = TRUE
if("tryoutput")
output_attempt = !output_attempt
log_smes(usr)
- update_icon()
+ update_appearance(updates = ALL)
. = TRUE
if("input")
var/target = params["target"]
@@ -420,7 +420,7 @@
output_level = rand(0, output_level_max)
input_level = rand(0, input_level_max)
charge = max(charge - 1e6/severity, 0)
- update_icon()
+ update_appearance(updates = ALL)
log_smes()
/obj/machinery/power/smes/engineering
@@ -446,7 +446,7 @@
return
output_attempt = !output_attempt
log_smes(user)
- update_icon()
+ update_appearance(updates = ALL)
#undef SMES_OUTPUTTING
#undef SMES_NOT_OUTPUTTING
diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm
index 125490890808..e769619a872e 100644
--- a/code/modules/power/solar.dm
+++ b/code/modules/power/solar.dm
@@ -34,7 +34,7 @@
panelstructure = mutable_appearance(icon, "solar_panel", FLY_LAYER)
paneloverlay = mutable_appearance(icon, "solar_panel-o", FLY_LAYER)
paneloverlay.color = panelcolor
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/power/solar/Destroy()
unset_control() //remove from control computer
@@ -113,7 +113,7 @@
new /obj/item/shard(src.loc)
qdel(src)
-/obj/machinery/power/solar/update_icon()
+/obj/machinery/power/solar/update_appearance(updates = ALL)
..()
cut_overlays()
var/matrix/turner = matrix()
@@ -134,7 +134,7 @@
if(azimuth_current != azimuth_target)
azimuth_current = azimuth_target
occlusion_setup()
- update_icon()
+ update_appearance(updates = ALL)
needs_to_update_solar_exposure = TRUE
///trace towards sun to see if we're in shadow
@@ -349,7 +349,7 @@
if(connected_tracker && length(connected_panels))
track = SOLAR_TRACK_AUTO
connected_tracker.sun_update(SSsun, SSsun.azimuth)
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/power/solar_control/Destroy()
for(var/obj/machinery/power/solar/M in connected_panels)
@@ -372,7 +372,7 @@
if(!T.control) //i.e unconnected
T.set_control(src)
-/obj/machinery/power/solar_control/update_icon()
+/obj/machinery/power/solar_control/update_appearance(updates = ALL)
cut_overlays()
if(stat & NOPOWER)
add_overlay("[icon_keyboard]_off")
diff --git a/code/modules/projectiles/ammunition/_ammunition.dm b/code/modules/projectiles/ammunition/_ammunition.dm
index c35403f7ae78..cf4ba453137c 100644
--- a/code/modules/projectiles/ammunition/_ammunition.dm
+++ b/code/modules/projectiles/ammunition/_ammunition.dm
@@ -33,9 +33,9 @@
pixel_x = rand(-10, 10)
pixel_y = rand(-10, 10)
setDir(pick(GLOB.alldirs))
- update_icon()
+ update_appearance(updates = ALL)
-/obj/item/ammo_casing/update_icon()
+/obj/item/ammo_casing/update_appearance(updates = ALL)
..()
icon_state = "[initial(icon_state)][BB && !CHECK_BITFIELD(casing_flags, CASINGFLAG_NO_LIVE_SPRITE) ? "-live" : ""]"
desc = "[initial(desc)][!BB && !CHECK_BITFIELD(casing_flags, CASINGFLAG_NO_LIVE_SPRITE) ? " This one is spent." : ""]"
@@ -59,7 +59,7 @@
else
continue
if (boolets > 0)
- box.update_icon()
+ box.update_appearance(updates = ALL)
to_chat(user, span_notice("You collect [boolets] shell\s. [box] now contains [box.stored_ammo.len] shell\s."))
else
to_chat(user, span_warning("You fail to collect anything!"))
@@ -72,7 +72,7 @@
. = ..()
/obj/item/ammo_casing/proc/bounce_away(still_warm = FALSE, bounce_delay = 3)
- update_icon()
+ update_appearance(updates = ALL)
SpinAnimation(10, 1)
var/matrix/M = matrix(transform)
M.Turn(rand(-170,170))
diff --git a/code/modules/projectiles/ammunition/_firing.dm b/code/modules/projectiles/ammunition/_firing.dm
index 846c96a80fb0..e5c3a04b72fb 100644
--- a/code/modules/projectiles/ammunition/_firing.dm
+++ b/code/modules/projectiles/ammunition/_firing.dm
@@ -19,7 +19,7 @@
else
user.changeNext_move(CLICK_CD_RANGE)
user.newtonian_move(get_dir(target, user))
- update_icon()
+ update_appearance(updates = ALL)
return TRUE
/obj/item/ammo_casing/proc/ready_proj(atom/target, mob/living/user, quiet, zone_override = "", atom/fired_from)
diff --git a/code/modules/projectiles/ammunition/reusable/_reusable.dm b/code/modules/projectiles/ammunition/reusable/_reusable.dm
index 64cd363bec47..f43f9c36eb74 100644
--- a/code/modules/projectiles/ammunition/reusable/_reusable.dm
+++ b/code/modules/projectiles/ammunition/reusable/_reusable.dm
@@ -31,4 +31,4 @@
if(!BB)
newshot()
in_air = FALSE
- update_icon()
+ update_appearance(updates = ALL)
diff --git a/code/modules/projectiles/ammunition/reusable/arrow.dm b/code/modules/projectiles/ammunition/reusable/arrow.dm
index 39f9492767b2..665613ea66c0 100644
--- a/code/modules/projectiles/ammunition/reusable/arrow.dm
+++ b/code/modules/projectiles/ammunition/reusable/arrow.dm
@@ -76,7 +76,7 @@
if(iscarbon(user))
var/mob/living/carbon/C = user
C.throw_mode_off()
- update_icon()
+ update_appearance(updates = ALL)
return ..()
/obj/item/ammo_casing/reusable/arrow/wirecutter_act(mob/living/user, obj/item/I)
@@ -131,23 +131,23 @@
if(istype(new_explosive))
explosive = new_explosive
LAZYADD(attached_parts, new_explosive)
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/ammo_casing/reusable/arrow/proc/add_bola(obj/item/restraints/legcuffs/bola/new_bola)
if(istype(new_bola))
bola = new_bola
LAZYADD(attached_parts, new_bola)
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/ammo_casing/reusable/arrow/proc/add_syringe(obj/item/reagent_containers/syringe/new_syringe)
if(istype(new_syringe))
syringe = new_syringe
LAZYADD(attached_parts, new_syringe)
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/ammo_casing/reusable/arrow/proc/add_flame()
flaming = TRUE
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/ammo_casing/reusable/arrow/proc/on_embed(target, mob/living/carbon/embedde)
if(syringe)
@@ -439,7 +439,7 @@
// Otherwise, move it to the arrow and make it the new shard
new_shard.forceMove(src)
shard = new_shard
- update_icon()
+ update_appearance(updates = ALL)
..()
/obj/item/ammo_casing/reusable/arrow/singulo/update_icon(force_update)
diff --git a/code/modules/projectiles/ammunition/reusable/foam.dm b/code/modules/projectiles/ammunition/reusable/foam.dm
index 90ebfb71bdf5..b0af19d2b809 100644
--- a/code/modules/projectiles/ammunition/reusable/foam.dm
+++ b/code/modules/projectiles/ammunition/reusable/foam.dm
@@ -10,7 +10,7 @@
var/modified = FALSE
var/obj/item/pen/pen
-/obj/item/ammo_casing/reusable/foam_dart/update_icon()
+/obj/item/ammo_casing/reusable/foam_dart/update_appearance(updates = ALL)
..()
if (modified)
icon_state = "foamdart_empty"
@@ -26,7 +26,7 @@
if (A.tool_behaviour == TOOL_SCREWDRIVER && !modified)
modified = TRUE
to_chat(user, span_notice("You pop the safety cap off [src]."))
- update_icon()
+ update_appearance(updates = ALL)
else if (istype(A, /obj/item/pen))
if(modified)
if(!pen)
diff --git a/code/modules/projectiles/attachments/_attachment.dm b/code/modules/projectiles/attachments/_attachment.dm
index a7b59c5a9f93..43728cbc75fd 100644
--- a/code/modules/projectiles/attachments/_attachment.dm
+++ b/code/modules/projectiles/attachments/_attachment.dm
@@ -35,7 +35,7 @@
/// See code/modules/projectiles/attachments/laser_sight.dm for example.
var/list/actions_list = list()
-/obj/item/attachment/update_icon()
+/obj/item/attachment/update_appearance(updates = ALL)
icon_state = "[initial(icon_state)][is_on ? "_on" : ""]"
. = ..()
attached_gun?.update_attachments()
diff --git a/code/modules/projectiles/attachments/laser_sight.dm b/code/modules/projectiles/attachments/laser_sight.dm
index 23569ceadf88..df86cab5f7b9 100644
--- a/code/modules/projectiles/attachments/laser_sight.dm
+++ b/code/modules/projectiles/attachments/laser_sight.dm
@@ -48,7 +48,7 @@
else
attached_gun.spread += 6
QDEL_LIST(attached_gun.current_tracers)
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/attachment/laser_sight/process()
return aiming_beam(TRUE)
diff --git a/code/modules/projectiles/attachments/scopes.dm b/code/modules/projectiles/attachments/scopes.dm
index 4a340175c638..d9aff9a03111 100644
--- a/code/modules/projectiles/attachments/scopes.dm
+++ b/code/modules/projectiles/attachments/scopes.dm
@@ -47,7 +47,7 @@
else
attached_gun.spread += accuracy
drop_user(current_user)
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/attachment/scope/infrared/pickup_user(mob/user)
. = ..()
diff --git a/code/modules/projectiles/boxes_magazines/_box_magazine.dm b/code/modules/projectiles/boxes_magazines/_box_magazine.dm
index 68ed1c623d6e..64806619dd19 100644
--- a/code/modules/projectiles/boxes_magazines/_box_magazine.dm
+++ b/code/modules/projectiles/boxes_magazines/_box_magazine.dm
@@ -39,7 +39,7 @@
calc_mats()
if(!start_empty)
top_off(starting=TRUE)
- update_icon()
+ update_appearance(updates = ALL)
/**
* top_off is used to refill the magazine to max, in case you want to increase the size of a magazine with VV then refill it at once
@@ -59,7 +59,7 @@
for(var/i = max(1, stored_ammo.len), i <= max_ammo, i++)
stored_ammo += new round_check(src)
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/ammo_box/proc/calc_mats(force = FALSE)
if (force || !bullet_cost)
@@ -138,8 +138,8 @@
if(!silent)
to_chat(user, span_notice("You load [num_loaded] round\s into \the [src]!"))
playsound(src, 'sound/weapons/bulletinsert.ogg', 60, TRUE)
- A.update_icon()
- update_icon()
+ A.update_appearance(updates = ALL)
+ update_appearance(updates = ALL)
return num_loaded
/obj/item/ammo_box/attack_self(mob/user)
@@ -150,7 +150,7 @@
A.bounce_away(FALSE, NONE)
playsound(src, 'sound/weapons/bulletinsert.ogg', 60, TRUE)
to_chat(user, span_notice("You remove a round from [src]!"))
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/ammo_box/AltClick(mob/user)
. = ..()
@@ -167,9 +167,9 @@
A.bounce_away(FALSE, NONE)
playsound(src, 'sound/weapons/bulletinsert.ogg', 60, TRUE)
to_chat(user, span_notice("You remove a round from [src]!"))
- update_icon()
+ update_appearance(updates = ALL)
-/obj/item/ammo_box/update_icon()
+/obj/item/ammo_box/update_appearance(updates = ALL)
var/rounds_left = stored_ammo.len
switch(multiple_sprites)
if(AMMO_BOX_PER_BULLET)
@@ -206,4 +206,4 @@
/obj/item/ammo_box/magazine/handle_atom_del(atom/A)
stored_ammo -= A
- update_icon()
+ update_appearance(updates = ALL)
diff --git a/code/modules/projectiles/boxes_magazines/external/grenade.dm b/code/modules/projectiles/boxes_magazines/external/grenade.dm
index 690c880c15a1..2712eba4a447 100644
--- a/code/modules/projectiles/boxes_magazines/external/grenade.dm
+++ b/code/modules/projectiles/boxes_magazines/external/grenade.dm
@@ -5,7 +5,7 @@
caliber = "75"
max_ammo = 8
-/obj/item/ammo_box/magazine/m75/update_icon()
+/obj/item/ammo_box/magazine/m75/update_appearance(updates = ALL)
..()
if(ammo_count())
icon_state = "75-8"
diff --git a/code/modules/projectiles/boxes_magazines/external/lmg.dm b/code/modules/projectiles/boxes_magazines/external/lmg.dm
index 8132339a8e3d..d58903e067df 100644
--- a/code/modules/projectiles/boxes_magazines/external/lmg.dm
+++ b/code/modules/projectiles/boxes_magazines/external/lmg.dm
@@ -32,6 +32,6 @@
ammo_type = /obj/item/ammo_casing/mm712x82/inc
sprite_designation = "I"
-/obj/item/ammo_box/magazine/mm712x82/update_icon()
+/obj/item/ammo_box/magazine/mm712x82/update_appearance(updates = ALL)
..()
icon_state = "a762[sprite_designation]-[round(ammo_count(),10)]"
diff --git a/code/modules/projectiles/boxes_magazines/external/pistol.dm b/code/modules/projectiles/boxes_magazines/external/pistol.dm
index 1642a131d395..bb1a9749cb55 100644
--- a/code/modules/projectiles/boxes_magazines/external/pistol.dm
+++ b/code/modules/projectiles/boxes_magazines/external/pistol.dm
@@ -64,7 +64,7 @@
caliber = ".45"
max_ammo = 8
-/obj/item/ammo_box/magazine/m45/update_icon()
+/obj/item/ammo_box/magazine/m45/update_appearance(updates = ALL)
..()
if (ammo_count() >= 8)
icon_state = "45-8"
@@ -81,7 +81,7 @@
caliber = "9mm"
max_ammo = 15
-/obj/item/ammo_box/magazine/pistolm9mm/update_icon()
+/obj/item/ammo_box/magazine/pistolm9mm/update_appearance(updates = ALL)
..()
icon_state = "9x19p-[ammo_count() ? "10" : "0"]"
@@ -95,7 +95,7 @@
caliber = ".50ae"
max_ammo = 7
-/obj/item/ammo_box/magazine/m50/update_icon()
+/obj/item/ammo_box/magazine/m50/update_appearance(updates = ALL)
. = ..()
if (ammo_count() >= 7)
icon_state = "50ae-7"
@@ -112,7 +112,7 @@
caliber = "38"
max_ammo = 8
-/obj/item/ammo_box/magazine/v38/update_icon()
+/obj/item/ammo_box/magazine/v38/update_appearance(updates = ALL)
..()
if (ammo_count() >= 8)
icon_state = "v38[sprite_designation]-8"
diff --git a/code/modules/projectiles/boxes_magazines/external/rechargable.dm b/code/modules/projectiles/boxes_magazines/external/rechargable.dm
index e98aff2bbc60..23754c87a826 100644
--- a/code/modules/projectiles/boxes_magazines/external/rechargable.dm
+++ b/code/modules/projectiles/boxes_magazines/external/rechargable.dm
@@ -8,7 +8,7 @@
caliber = LASER
max_ammo = 20
-/obj/item/ammo_box/magazine/recharge/update_icon()
+/obj/item/ammo_box/magazine/recharge/update_appearance(updates = ALL)
..()
desc = "[initial(desc)] It has [stored_ammo.len] shot\s left."
cut_overlays()
@@ -29,7 +29,7 @@
icon_state = "lasgunmag"
desc = "A rechargeable, detachable battery that serves as a magazine for las weaponry."
-/obj/item/ammo_box/magazine/recharge/lasgun/update_icon()
+/obj/item/ammo_box/magazine/recharge/lasgun/update_appearance(updates = ALL)
..()
desc = "[initial(desc)] It has [stored_ammo.len] shot\s left."
if(ammo_count())
@@ -74,7 +74,7 @@
"fire" = 2
)
-/obj/item/gun/ballistic/automatic/pistol/ntusp/update_icon()
+/obj/item/gun/ballistic/automatic/pistol/ntusp/update_appearance(updates = ALL)
icon_state = initial(icon_state)
if(istype(magazine, /obj/item/ammo_box/magazine/recharge/ntusp/laser))
// Tricks the parent proc into thinking we have a skin so it uses the laser-variant icon_state
@@ -104,7 +104,7 @@
var/bullets_to_remove = round(bullet_count / (severity*2))
for(var/i = 0; i < bullets_to_remove, i++)
qdel(get_round())
- update_icon()
+ update_appearance(updates = ALL)
if(isgun(loc))
var/obj/item/gun/ballistic/G = loc
if(!G.magazine == src)
@@ -135,7 +135,7 @@
icon_state = "powerpack_small-l"
max_ammo = 8
-/obj/item/ammo_box/magazine/recharge/ntusp/laser/update_icon()
+/obj/item/ammo_box/magazine/recharge/ntusp/laser/update_appearance(updates = ALL)
..()
cut_overlays()
var/cur_ammo = ammo_count()
diff --git a/code/modules/projectiles/boxes_magazines/external/rifle.dm b/code/modules/projectiles/boxes_magazines/external/rifle.dm
index f33ba8a15753..64a07035bf35 100644
--- a/code/modules/projectiles/boxes_magazines/external/rifle.dm
+++ b/code/modules/projectiles/boxes_magazines/external/rifle.dm
@@ -8,7 +8,7 @@
caliber = ".45"
max_ammo = 10
-/obj/item/ammo_box/magazine/m10mm/rifle/update_icon()
+/obj/item/ammo_box/magazine/m10mm/rifle/update_appearance(updates = ALL)
..()
if(ammo_count())
icon_state = "75-8"
@@ -25,7 +25,7 @@
caliber = "a556"
max_ammo = 30
-/obj/item/ammo_box/magazine/m556/update_icon()
+/obj/item/ammo_box/magazine/m556/update_appearance(updates = ALL)
..()
icon_state = "5.56m[sprite_designation]-[round(ammo_count(),5)]"
@@ -55,7 +55,7 @@
caliber = "a556"
max_ammo = 30
-/obj/item/ammo_box/magazine/r556/update_icon()
+/obj/item/ammo_box/magazine/r556/update_appearance(updates = ALL)
..()
if(ammo_count())
icon_state = "arg556[sprite_designation]"
@@ -96,7 +96,7 @@
caliber = "m308"
max_ammo = 15
-/obj/item/ammo_box/magazine/m308/update_icon()
+/obj/item/ammo_box/magazine/m308/update_appearance(updates = ALL)
..()
if(ammo_count())
icon_state = "m308[sprite_designation]"
@@ -130,7 +130,7 @@
caliber = "a762"
max_ammo = 11
-/obj/item/ammo_box/magazine/ks762/update_icon()
+/obj/item/ammo_box/magazine/ks762/update_appearance(updates = ALL)
..()
if(ammo_count())
icon_state = "ks762[sprite_designation]"
diff --git a/code/modules/projectiles/boxes_magazines/external/shotgun.dm b/code/modules/projectiles/boxes_magazines/external/shotgun.dm
index 46eaf75985f4..49fd92d40e08 100644
--- a/code/modules/projectiles/boxes_magazines/external/shotgun.dm
+++ b/code/modules/projectiles/boxes_magazines/external/shotgun.dm
@@ -10,7 +10,7 @@
max_ammo = 8
sprite_designation = "b"
-/obj/item/ammo_box/magazine/m12g/update_icon()
+/obj/item/ammo_box/magazine/m12g/update_appearance(updates = ALL)
..()
if(ammo_count())
icon_state = "m12g[sprite_designation]-8"
diff --git a/code/modules/projectiles/boxes_magazines/external/smg.dm b/code/modules/projectiles/boxes_magazines/external/smg.dm
index c05c7332e51a..1d9e6a3d10de 100644
--- a/code/modules/projectiles/boxes_magazines/external/smg.dm
+++ b/code/modules/projectiles/boxes_magazines/external/smg.dm
@@ -8,7 +8,7 @@
caliber = "4.6x30mm"
max_ammo = 20
-/obj/item/ammo_box/magazine/wt550m9/update_icon()
+/obj/item/ammo_box/magazine/wt550m9/update_appearance(updates = ALL)
..()
switch(ammo_count())
if(17 to 21) //Considers the extra bullet in the chamber
@@ -75,7 +75,7 @@
sprite_designation = "B"
max_ammo = 10
-/obj/item/ammo_box/magazine/wt550m9/wt_airburst/update_icon() // Snowflake code snowflake code
+/obj/item/ammo_box/magazine/wt550m9/wt_airburst/update_appearance(updates = ALL) // Snowflake code snowflake code
..()
switch(ammo_count())
if(9 to 11) //Considers the extra bullet in the chamber
@@ -101,7 +101,7 @@
caliber = "9mm"
max_ammo = 32
-/obj/item/ammo_box/magazine/uzim9mm/update_icon()
+/obj/item/ammo_box/magazine/uzim9mm/update_appearance(updates = ALL)
..()
icon_state = "uzi9mm-[round(ammo_count(),4)]"
@@ -115,7 +115,7 @@
caliber = "9mm"
max_ammo = 21
-/obj/item/ammo_box/magazine/smgm9mm/update_icon()
+/obj/item/ammo_box/magazine/smgm9mm/update_appearance(updates = ALL)
..()
icon_state = "smg9mm[sprite_designation]-[ammo_count() ? "42" : "0"]"
@@ -145,7 +145,7 @@
caliber = ".45"
max_ammo = 24
-/obj/item/ammo_box/magazine/smgm45/update_icon()
+/obj/item/ammo_box/magazine/smgm45/update_appearance(updates = ALL)
..()
icon_state = "c20r45[sprite_designation]-[round(ammo_count(),2)]"
diff --git a/code/modules/projectiles/boxes_magazines/external/sniper.dm b/code/modules/projectiles/boxes_magazines/external/sniper.dm
index 6da8640160d9..1930d1d4eb80 100644
--- a/code/modules/projectiles/boxes_magazines/external/sniper.dm
+++ b/code/modules/projectiles/boxes_magazines/external/sniper.dm
@@ -9,7 +9,7 @@
max_ammo = 6
caliber = ".50bmg"
-/obj/item/ammo_box/magazine/sniper_rounds/update_icon()
+/obj/item/ammo_box/magazine/sniper_rounds/update_appearance(updates = ALL)
..()
if(ammo_count())
icon_state = "[initial(icon_state)]-ammo"
diff --git a/code/modules/projectiles/boxes_magazines/external/toy.dm b/code/modules/projectiles/boxes_magazines/external/toy.dm
index 82c97ea054ff..6878f71663fc 100644
--- a/code/modules/projectiles/boxes_magazines/external/toy.dm
+++ b/code/modules/projectiles/boxes_magazines/external/toy.dm
@@ -9,7 +9,7 @@
ammo_type = /obj/item/ammo_casing/reusable/foam_dart
max_ammo = 20
-/obj/item/ammo_box/magazine/toy/smg/update_icon()
+/obj/item/ammo_box/magazine/toy/smg/update_appearance(updates = ALL)
..()
if(ammo_count())
icon_state = "smg9mm-42"
@@ -35,7 +35,7 @@
ammo_type = /obj/item/ammo_casing/reusable/foam_dart
max_ammo = 20
-/obj/item/ammo_box/magazine/toy/smgm45/update_icon()
+/obj/item/ammo_box/magazine/toy/smgm45/update_appearance(updates = ALL)
..()
icon_state = "c20r45-[round(ammo_count(),2)]"
@@ -50,7 +50,7 @@
ammo_type = /obj/item/ammo_casing/reusable/foam_dart
max_ammo = 50
-/obj/item/ammo_box/magazine/toy/m762/update_icon()
+/obj/item/ammo_box/magazine/toy/m762/update_appearance(updates = ALL)
..()
icon_state = "a762-[round(ammo_count(),10)]"
diff --git a/code/modules/projectiles/boxes_magazines/internal/_cylinder.dm b/code/modules/projectiles/boxes_magazines/internal/_cylinder.dm
index a1d16826ccfe..d276f25636b7 100644
--- a/code/modules/projectiles/boxes_magazines/internal/_cylinder.dm
+++ b/code/modules/projectiles/boxes_magazines/internal/_cylinder.dm
@@ -58,4 +58,4 @@
for(var/i = 1, i <= max_ammo, i++)
if(!give_round(new load_type(src)))
break
- update_icon()
\ No newline at end of file
+ update_appearance(updates = ALL)
diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm
index 53b41c5996e9..bde5f42926fb 100644
--- a/code/modules/projectiles/gun.dm
+++ b/code/modules/projectiles/gun.dm
@@ -121,7 +121,7 @@
pin = null
if(A == chambered)
chambered = null
- update_icon()
+ update_appearance(updates = ALL)
if(A == bayonet)
clear_bayonet()
if(A == gun_light)
@@ -206,7 +206,7 @@
w_class -= suppressed.w_class
qdel(suppressed)
suppressed = null
- update_icon()
+ update_appearance(updates = ALL)
else
if(enloudened && enloudened.enloudened_sound)
playsound(user, enloudened.enloudened_sound, fire_sound_volume, vary_fire_sound)
@@ -355,7 +355,7 @@
firing_burst = FALSE
return FALSE
process_chamber()
- update_icon()
+ update_appearance(updates = ALL)
return TRUE
/// cd_override is FALSE or 0 by default (no override), if you want to make a gun have no click cooldown then just make it something small like 0.001
@@ -409,17 +409,17 @@
shoot_with_empty_chamber(user)
return
process_chamber()
- update_icon()
+ update_appearance(updates = ALL)
semicd = TRUE
addtimer(CALLBACK(src, PROC_REF(reset_semicd)), fire_delay)
if(user)
- user.update_inv_hands()
+ user.update_held_items()
SSblackbox.record_feedback("tally", "gun_fired", 1, type)
recent_shoot = world.time
return TRUE
-/obj/item/gun/update_icon()
+/obj/item/gun/update_appearance(updates = ALL)
..()
@@ -629,7 +629,7 @@
else
cut_overlay(flashlight_overlay, TRUE)
flashlight_overlay = null
- update_icon()
+ update_appearance(updates = ALL)
for(var/X in actions)
var/datum/action/A = X
A.build_all_button_icons()
diff --git a/code/modules/projectiles/guns/ballistic.dm b/code/modules/projectiles/guns/ballistic.dm
index 8b0b522902cc..562527df1ef8 100644
--- a/code/modules/projectiles/guns/ballistic.dm
+++ b/code/modules/projectiles/guns/ballistic.dm
@@ -156,7 +156,7 @@
feedback_fire_slide ? add_overlay(feedback_firing_icon) : add_overlay(feedback_original_icon)
DabAnimation(speed = feedback_recoil_speed, angle = ((rand(25,50)) * feedback_recoil_amount), direction = (feedback_recoil_reverse ? 2 : 3), hold_seconds = feedback_recoil_hold)
sleep(frames)
- update_icon()
+ update_appearance(updates = ALL)
return
if (bolt_type == BOLT_TYPE_LOCKING)
if(type != "slide*")
@@ -165,7 +165,7 @@
DabAnimation(speed = feedback_recoil_speed, angle = ((rand(20,25)) * feedback_recoil_amount), direction = 2)
add_overlay("[feedback_original_icon_base]_[type]") // actual animation
sleep(frames)
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/gun/ballistic/Initialize()
. = ..()
@@ -177,7 +177,7 @@
feedback_firing_icon = feedback_original_icon_base
if (!spawnwithmagazine)
bolt_locked = TRUE
- update_icon()
+ update_appearance(updates = ALL)
return
if (!magazine)
if (!starting_mag_type)
@@ -185,10 +185,10 @@
else
magazine = new starting_mag_type(src)
chamber_round()
- update_icon()
+ update_appearance(updates = ALL)
-/obj/item/gun/ballistic/update_icon()
+/obj/item/gun/ballistic/update_appearance(updates = ALL)
if (QDELETED(src))
return
..()
@@ -281,7 +281,7 @@
else
playsound(src, rack_sound, rack_sound_volume, rack_sound_vary)
feedback("slide_close")
- update_icon()
+ update_appearance(updates = ALL)
///Drops the bolt from a locked position
/obj/item/gun/ballistic/proc/drop_bolt(mob/user = null)
@@ -291,7 +291,7 @@
bolt_locked = FALSE
feedback("slide_close")
chamber_round()
- update_icon()
+ update_appearance(updates = ALL)
///Handles all the logic needed for magazine insertion
/obj/item/gun/ballistic/proc/insert_magazine(mob/user, obj/item/ammo_box/magazine/AM, display_message = TRUE)
@@ -308,7 +308,7 @@
feedback("mag_in")
if (bolt_type == BOLT_TYPE_OPEN && !bolt_locked)
chamber_round(TRUE)
- update_icon()
+ update_appearance(updates = ALL)
return TRUE
else
to_chat(user, span_warning("You cannot seem to get \the [src] out of your hands!"))
@@ -340,10 +340,10 @@
else
magazine = null
user.put_in_hands(old_mag)
- old_mag.update_icon()
+ old_mag.update_appearance(updates = ALL)
if (display_message)
to_chat(user, span_notice("You pull the [magazine_wording] out of \the [src]."))
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/gun/ballistic/can_shoot()
return chambered
@@ -376,8 +376,8 @@
user.say(reload_say, forced = "reloading")
if (chambered == null && bolt_type == BOLT_TYPE_NO_BOLT)
chamber_round()
- A.update_icon()
- update_icon()
+ A.update_appearance(updates = ALL)
+ update_appearance(updates = ALL)
return
if(istype(A, /obj/item/suppressor))
var/obj/item/suppressor/S = A
@@ -420,11 +420,11 @@
/obj/item/gun/ballistic/proc/install_suppressor(obj/item/suppressor/S)
suppressed = S
w_class += S.w_class //so pistols do not fit in pockets when suppressed
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/gun/ballistic/proc/install_enloudener(obj/item/enloudener/E)
enloudened = E
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/gun/ballistic/AltClick(mob/user)
if (unique_reskin && !current_skin && user.canUseTopic(src, BE_CLOSE, NO_DEXTERY))
@@ -438,7 +438,7 @@
user.put_in_hands(suppressed)
w_class -= suppressed.w_class
suppressed = null
- update_icon()
+ update_appearance(updates = ALL)
return
if(enloudened && can_unsuppress)
if(!user.is_holding(src))
@@ -447,7 +447,7 @@
user.put_in_hands(enloudened)
w_class -= enloudened.w_class
enloudened = null
- update_icon()
+ update_appearance(updates = ALL)
return
///Prefire empty checks for the bolt drop
@@ -456,7 +456,7 @@
if (bolt_type == BOLT_TYPE_OPEN && !bolt_locked)
bolt_locked = TRUE
playsound(src, bolt_drop_sound, bolt_drop_sound_volume)
- update_icon()
+ update_appearance(updates = ALL)
///postfire empty checks for bolt locking and sound alarms
/obj/item/gun/ballistic/proc/postfire_empty_checks()
@@ -464,12 +464,12 @@
if (!alarmed && empty_alarm)
playsound(src, empty_alarm_sound, empty_alarm_volume, empty_alarm_vary)
alarmed = TRUE
- update_icon()
+ update_appearance(updates = ALL)
if (bolt_type == BOLT_TYPE_LOCKING)
if(!bolt_locked)
feedback("slide_open")
bolt_locked = TRUE
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/gun/ballistic/afterattack()
prefire_empty_checks()
@@ -500,7 +500,7 @@
if (num_unloaded)
to_chat(user, span_notice("You unload [num_unloaded] [cartridge_wording]\s from [src]."))
playsound(user, eject_sound, eject_sound_volume, eject_sound_vary)
- update_icon()
+ update_appearance(updates = ALL)
else
to_chat(user, span_warning("[src] is empty!"))
return
@@ -630,7 +630,7 @@ GLOBAL_LIST_INIT(gun_saw_types, typecacheof(list(
slot_flags |= ITEM_SLOT_BELT //but you can wear it on your belt (poorly concealed under a trenchcoat, ideally)
recoil = SAWN_OFF_RECOIL
sawn_off = TRUE
- update_icon()
+ update_appearance(updates = ALL)
return TRUE
///used for sawing guns, causes the gun to fire without the input of the user
diff --git a/code/modules/projectiles/guns/ballistic/automatic.dm b/code/modules/projectiles/guns/ballistic/automatic.dm
index 2208ecf166d7..a86aaab45643 100644
--- a/code/modules/projectiles/guns/ballistic/automatic.dm
+++ b/code/modules/projectiles/guns/ballistic/automatic.dm
@@ -27,7 +27,7 @@
/obj/item/gun/ballistic/automatic/proto/unrestricted
pin = /obj/item/firing_pin
-/obj/item/gun/ballistic/automatic/update_icon()
+/obj/item/gun/ballistic/automatic/update_appearance(updates = ALL)
..()
if(!select)
add_overlay("[initial(icon_state)]_semi")
@@ -56,7 +56,7 @@
to_chat(user, span_notice("You switch to [burst_size]-rnd burst."))
playsound(user, 'sound/weapons/empty.ogg', 100, 1)
- update_icon()
+ update_appearance(updates = ALL)
for(var/X in actions)
var/datum/action/A = X
A.build_all_button_icons()
@@ -82,7 +82,7 @@
/obj/item/gun/ballistic/automatic/c20r/Initialize()
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/gun/ballistic/automatic/wt550
name = "\improper security auto carbine"
@@ -133,7 +133,7 @@
/obj/item/gun/ballistic/automatic/m90/Initialize()
. = ..()
underbarrel = new /obj/item/gun/ballistic/revolver/grenadelauncher(src)
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/gun/ballistic/automatic/m90/unrestricted
pin = /obj/item/firing_pin
@@ -141,7 +141,7 @@
/obj/item/gun/ballistic/automatic/m90/unrestricted/Initialize()
. = ..()
underbarrel = new /obj/item/gun/ballistic/revolver/grenadelauncher/unrestricted(src)
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/gun/ballistic/automatic/m90/afterattack(atom/target, mob/living/user, flag, params)
if(select == 2)
@@ -157,7 +157,7 @@
else
..()
-/obj/item/gun/ballistic/automatic/m90/update_icon()
+/obj/item/gun/ballistic/automatic/m90/update_appearance(updates = ALL)
..()
switch(select)
if(0)
@@ -188,7 +188,7 @@
spread -= spread_difference
to_chat(user, span_notice("You switch to semi-auto."))
playsound(user, 'sound/weapons/empty.ogg', 100, 1)
- update_icon()
+ update_appearance(updates = ALL)
return
/obj/item/gun/ballistic/automatic/tommygun
@@ -262,10 +262,10 @@
playsound(user, 'sound/weapons/sawopen.ogg', 60, 1)
else
playsound(user, 'sound/weapons/sawopen.ogg', 60, 1)
- update_icon()
+ update_appearance(updates = ALL)
-/obj/item/gun/ballistic/automatic/l6_saw/update_icon()
+/obj/item/gun/ballistic/automatic/l6_saw/update_appearance(updates = ALL)
. = ..()
add_overlay("l6_door_[cover_open ? "open" : "closed"]")
@@ -276,7 +276,7 @@
return
else
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
//ATTACK HAND IGNORING PARENT RETURN VALUE
/obj/item/gun/ballistic/automatic/l6_saw/attack_hand(mob/user)
diff --git a/code/modules/projectiles/guns/ballistic/bow.dm b/code/modules/projectiles/guns/ballistic/bow.dm
index a627ad529b40..84087b422174 100644
--- a/code/modules/projectiles/guns/ballistic/bow.dm
+++ b/code/modules/projectiles/guns/ballistic/bow.dm
@@ -45,7 +45,7 @@
/obj/item/gun/ballistic/bow/chamber_round()
chambered = magazine.get_round(1)
update_slowdown()
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/gun/ballistic/bow/dropped()
. = ..()
@@ -63,7 +63,7 @@
chambered = null
magazine.give_round(old_chambered)
update_slowdown()
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/gun/ballistic/bow/equipped(mob/user, slot)
..()
@@ -73,7 +73,7 @@
chambered = null
magazine.get_round(FALSE)
update_slowdown()
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/gun/ballistic/bow/attack_self(mob/living/user)
if(drawing)
@@ -123,7 +123,7 @@
user.put_in_hands(AC)
to_chat(user, span_notice("You remove [AC]."))
update_slowdown()
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/gun/ballistic/bow/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/ammo_casing))
@@ -133,9 +133,9 @@
to_chat(user, span_notice("You notch [I]."))
nerfed = istype(I, /obj/item/ammo_casing/reusable/arrow/toy)
update_slowdown()
- update_icon()
+ update_appearance(updates = ALL)
-/obj/item/gun/ballistic/bow/update_icon()
+/obj/item/gun/ballistic/bow/update_appearance(updates = ALL)
cut_overlay(arrow_overlay, TRUE)
icon_state = "[initial(icon_state)][chambered ? "_firing" : ""]"
if(get_ammo())
@@ -460,7 +460,7 @@
if(TIMER_COOLDOWN_CHECK(src, "arrow_recharge"))
. += span_warning("It is currently recharging!")
-/obj/item/gun/ballistic/bow/energy/update_icon()
+/obj/item/gun/ballistic/bow/energy/update_appearance(updates = ALL)
cut_overlay(arrow_overlay, TRUE)
if(folded)
@@ -478,7 +478,7 @@
if(ismob(loc))
var/mob/M = loc
- M.update_inv_hands()
+ M.update_held_items()
/obj/item/gun/ballistic/bow/energy/shoot_live_shot(mob/living/user, pointblank, atom/pbtarget, message)
if(folded)
@@ -501,7 +501,7 @@
to_chat(user, span_notice("You fabricate an arrow."))
recharge_arrow()
update_slowdown()
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/gun/ballistic/bow/energy/proc/recharge_arrow()
if(folded || magazine.get_round(TRUE))
@@ -509,7 +509,7 @@
var/ammo_type = magazine.ammo_type
magazine.give_round(new ammo_type())
update_slowdown()
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/gun/ballistic/bow/energy/attackby(obj/item/I, mob/user, params)
return
@@ -521,7 +521,7 @@
QDEL_NULL(current_round)
if(!TIMER_COOLDOWN_CHECK(src, "arrow_recharge"))
recharge_arrow()
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/gun/ballistic/bow/energy/proc/select_projectile(mob/living/user)
var/obj/item/ammo_box/magazine/internal/bow/energy/M = magazine
@@ -559,7 +559,7 @@
to_chat(user, span_notice("You switch \the [src]'s firing mode to \"[initial(choice.name)]\"."))
QDEL_NULL(choice_list)
QDEL_NULL(radial_list)
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/gun/ballistic/bow/energy/CtrlClick(mob/living/user)
if(!can_fold || !user.is_holding(src))
@@ -589,7 +589,7 @@
//magazine.stored_ammo = stored_ammo
if(user)
to_chat(user, span_notice("You extend [src], allowing it to be fired."))
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/gun/ballistic/bow/energy/advanced
name = "advanced hardlight bow"
diff --git a/code/modules/projectiles/guns/ballistic/laser_gatling.dm b/code/modules/projectiles/guns/ballistic/laser_gatling.dm
index 2fb829dc8f94..ddae61139d1b 100644
--- a/code/modules/projectiles/guns/ballistic/laser_gatling.dm
+++ b/code/modules/projectiles/guns/ballistic/laser_gatling.dm
@@ -42,7 +42,7 @@
armed = 0
to_chat(user, span_warning("You need a free hand to hold the gun!"))
return
- update_icon()
+ update_appearance(updates = ALL)
user.update_inv_back()
else
to_chat(user, span_warning("You are already holding the gun!"))
@@ -81,7 +81,7 @@
M.putItemFromInventoryInHandIfPossible(src, H.held_index)
-/obj/item/minigunpack/update_icon()
+/obj/item/minigunpack/update_appearance(updates = ALL)
if(armed)
icon_state = "notholstered"
else
@@ -96,7 +96,7 @@
to_chat(user, span_notice("You attach the [gun.name] to the [name]."))
else
src.visible_message(span_warning("The [gun.name] snaps back onto the [name]!"))
- update_icon()
+ update_appearance(updates = ALL)
user.update_inv_back()
diff --git a/code/modules/projectiles/guns/ballistic/minigun.dm b/code/modules/projectiles/guns/ballistic/minigun.dm
index f66198d60137..58396b9c5f87 100644
--- a/code/modules/projectiles/guns/ballistic/minigun.dm
+++ b/code/modules/projectiles/guns/ballistic/minigun.dm
@@ -42,7 +42,7 @@
armed = FALSE
to_chat(user, span_warning("You need a free hand to hold the gun!"))
return
- update_icon()
+ update_appearance(updates = ALL)
user.update_inv_back()
else
to_chat(user, span_warning("You are already holding the gun!"))
@@ -81,7 +81,7 @@
M.putItemFromInventoryInHandIfPossible(src, H.held_index)
-/obj/item/minigunbackpack/update_icon()
+/obj/item/minigunbackpack/update_appearance(updates = ALL)
if(armed)
icon_state = "notholstered"
else
@@ -96,7 +96,7 @@
to_chat(user, span_notice("You attach the [gun.name] to the [name]."))
else
visible_message(span_warning("The [gun.name] snaps back onto the [name]!"))
- update_icon()
+ update_appearance(updates = ALL)
user.update_inv_back()
diff --git a/code/modules/projectiles/guns/ballistic/revolver.dm b/code/modules/projectiles/guns/ballistic/revolver.dm
index aa9e032ebd46..0e291903e03b 100644
--- a/code/modules/projectiles/guns/ballistic/revolver.dm
+++ b/code/modules/projectiles/guns/ballistic/revolver.dm
@@ -181,8 +181,8 @@
..()
if(get_ammo(FALSE) > 0)
spin()
- update_icon()
- A.update_icon()
+ update_appearance(updates = ALL)
+ A.update_appearance(updates = ALL)
return
/obj/item/gun/ballistic/revolver/russian/attack_self(mob/user)
diff --git a/code/modules/projectiles/guns/ballistic/rifle.dm b/code/modules/projectiles/guns/ballistic/rifle.dm
index 356e9c069f4b..7a596a139817 100644
--- a/code/modules/projectiles/guns/ballistic/rifle.dm
+++ b/code/modules/projectiles/guns/ballistic/rifle.dm
@@ -15,7 +15,7 @@
bolt_drop_sound = "sound/weapons/mosinboltin.ogg"
tac_reloads = FALSE
-obj/item/gun/ballistic/rifle/update_icon()
+obj/item/gun/ballistic/rifle/update_appearance(updates = ALL)
..()
add_overlay("[icon_state]_bolt[bolt_locked ? "_locked" : ""]")
@@ -25,7 +25,7 @@ obj/item/gun/ballistic/rifle/rack(mob/user = null)
playsound(src, rack_sound, rack_sound_volume, rack_sound_vary)
process_chamber(FALSE, FALSE, FALSE)
bolt_locked = TRUE
- update_icon()
+ update_appearance(updates = ALL)
return
drop_bolt(user)
diff --git a/code/modules/projectiles/guns/ballistic/shotgun.dm b/code/modules/projectiles/guns/ballistic/shotgun.dm
index 7bec002f220f..bb6a69396169 100644
--- a/code/modules/projectiles/guns/ballistic/shotgun.dm
+++ b/code/modules/projectiles/guns/ballistic/shotgun.dm
@@ -228,11 +228,11 @@
slot_flags = ITEM_SLOT_BACK
to_chat(user, span_notice("You tie the lengths of cable to the shotgun, making a sling."))
slung = TRUE
- update_icon()
+ update_appearance(updates = ALL)
else
to_chat(user, span_warning("You need at least ten lengths of cable if you want to make a sling!"))
-/obj/item/gun/ballistic/shotgun/doublebarrel/improvised/update_icon()
+/obj/item/gun/ballistic/shotgun/doublebarrel/improvised/update_appearance(updates = ALL)
..()
if(slung)
icon_state = "ishotgunsling"
@@ -243,7 +243,7 @@
if(. && slung) //sawing off the gun removes the sling
new /obj/item/stack/cable_coil(get_turf(src), 10)
slung = 0
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/gun/ballistic/shotgun/doublebarrel/improvised/sawn
name = "sawn-off improvised shotgun"
diff --git a/code/modules/projectiles/guns/ballistic/toy.dm b/code/modules/projectiles/guns/ballistic/toy.dm
index 0de7b9610b37..c2ca6dc51bf7 100644
--- a/code/modules/projectiles/guns/ballistic/toy.dm
+++ b/code/modules/projectiles/guns/ballistic/toy.dm
@@ -13,7 +13,7 @@
item_flags = NONE
casing_ejector = FALSE
-/obj/item/gun/ballistic/automatic/toy/update_icon()
+/obj/item/gun/ballistic/automatic/toy/update_appearance(updates = ALL)
. = ..()
add_overlay("[icon_state]_toy")
@@ -56,7 +56,7 @@
casing_ejector = FALSE
can_suppress = FALSE
-/obj/item/gun/ballistic/shotgun/toy/update_icon()
+/obj/item/gun/ballistic/shotgun/toy/update_appearance(updates = ALL)
. = ..()
add_overlay("[icon_state]_toy")
@@ -90,7 +90,7 @@
/obj/item/gun/ballistic/automatic/c20r/toy/unrestricted/riot
mag_type = /obj/item/ammo_box/magazine/toy/smgm45/riot
-/obj/item/gun/ballistic/automatic/c20r/toy/update_icon()
+/obj/item/gun/ballistic/automatic/c20r/toy/update_appearance(updates = ALL)
. = ..()
add_overlay("[icon_state]_toy")
@@ -110,6 +110,6 @@
/obj/item/gun/ballistic/automatic/l6_saw/toy/unrestricted/riot
mag_type = /obj/item/ammo_box/magazine/toy/m762/riot
-/obj/item/gun/ballistic/automatic/l6_saw/toy/update_icon()
+/obj/item/gun/ballistic/automatic/l6_saw/toy/update_appearance(updates = ALL)
. = ..()
add_overlay("[icon_state]_toy")
diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm
index 311300cbba8a..c2b932666acb 100644
--- a/code/modules/projectiles/guns/energy.dm
+++ b/code/modules/projectiles/guns/energy.dm
@@ -10,7 +10,7 @@
var/list/ammo_type = list(/obj/item/ammo_casing/energy)
var/select = 1 //The state of the select fire switch. Determines from the ammo_type list what kind of shot is fired next.
var/can_charge = TRUE //Can it be charged in a recharger?
- var/automatic_charge_overlays = TRUE //Do we handle overlays with base update_icon()?
+ var/automatic_charge_overlays = TRUE //Do we handle overlays with base update_appearance(updates = ALL)?
var/charge_sections = 4
ammo_x_offset = 2
var/shaded_charge = FALSE //if this gun uses a stateful charge bar for more detail
@@ -45,7 +45,7 @@
emp_jam_timer = addtimer(CALLBACK(src, PROC_REF(emp_unjam)), unjam_time, TIMER_STOPPABLE)
chambered = null //we empty the chamber
recharge_newshot() //and try to charge a new shot
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/gun/energy/shoot_with_empty_chamber(mob/living/user as mob|obj)
if(emp_jammed)
@@ -73,7 +73,7 @@
recharge_newshot(TRUE)
if(selfcharge)
START_PROCESSING(SSobj, src)
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/gun/energy/proc/update_ammo_types()
var/obj/item/ammo_casing/energy/shot
@@ -100,12 +100,12 @@
cell.give(100*charge_amount)
if(!chambered) //if empty chamber we try to charge a new shot
recharge_newshot(TRUE)
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/gun/energy/attack_self(mob/living/user as mob)
if(ammo_type.len > 1)
select_fire(user)
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/gun/energy/can_shoot()
var/obj/item/ammo_casing/energy/shot = ammo_type[select]
@@ -204,7 +204,7 @@
playsound(loc, fire_sound, 50, 1, -1)
var/obj/item/ammo_casing/energy/shot = ammo_type[select]
cell.use(shot.e_cost)
- update_icon()
+ update_appearance(updates = ALL)
return(FIRELOSS)
else
user.visible_message(span_suicide("[user] panics and starts choking to death!"))
diff --git a/code/modules/projectiles/guns/energy/dueling.dm b/code/modules/projectiles/guns/energy/dueling.dm
index 6addb2cd4fe9..2f0c0a024798 100644
--- a/code/modules/projectiles/guns/energy/dueling.dm
+++ b/code/modules/projectiles/guns/energy/dueling.dm
@@ -173,7 +173,7 @@
if(DUEL_SETTING_C)
setting = DUEL_SETTING_A
to_chat(user,span_notice("You switch [src] setting to [setting] mode."))
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/gun/energy/dueling/update_icon(force_update)
. = ..()
@@ -230,7 +230,7 @@
duration = 30
var/setting
-/obj/effect/temp_visual/dueling_chaff/update_icon()
+/obj/effect/temp_visual/dueling_chaff/update_appearance(updates = ALL)
. = ..()
switch(setting)
if(DUEL_SETTING_A)
@@ -251,13 +251,13 @@
. = ..()
var/obj/item/projectile/energy/duel/D = BB
D.setting = setting
- D.update_icon()
+ D.update_appearance(updates = ALL)
/obj/item/ammo_casing/energy/duel/fire_casing(atom/target, mob/living/user, params, distro, quiet, zone_override, spread, atom/fired_from)
. = ..()
var/obj/effect/temp_visual/dueling_chaff/C = new(get_turf(user))
C.setting = setting
- C.update_icon()
+ C.update_appearance(updates = ALL)
//Projectile
@@ -268,7 +268,7 @@
homing = TRUE
var/setting
-/obj/item/projectile/energy/duel/update_icon()
+/obj/item/projectile/energy/duel/update_appearance(updates = ALL)
. = ..()
switch(setting)
if(DUEL_SETTING_A)
@@ -323,7 +323,7 @@
STR.max_items = 2
STR.set_holdable(list(/obj/item/gun/energy/dueling))
-/obj/item/storage/lockbox/dueling/update_icon()
+/obj/item/storage/lockbox/dueling/update_appearance(updates = ALL)
cut_overlays()
var/locked = SEND_SIGNAL(src, COMSIG_IS_STORAGE_LOCKED)
if(locked)
@@ -343,4 +343,4 @@
gun_A.duel = D
gun_B.duel = D
D.gun_A = gun_A
- D.gun_B = gun_B
\ No newline at end of file
+ D.gun_B = gun_B
diff --git a/code/modules/projectiles/guns/energy/energy_gun.dm b/code/modules/projectiles/guns/energy/energy_gun.dm
index 202a43709089..aa3b2174d78d 100644
--- a/code/modules/projectiles/guns/energy/energy_gun.dm
+++ b/code/modules/projectiles/guns/energy/energy_gun.dm
@@ -30,7 +30,7 @@
set_gun_light(new /obj/item/flashlight/seclite(src))
return ..()
-/obj/item/gun/energy/e_gun/mini/update_icon()
+/obj/item/gun/energy/e_gun/mini/update_appearance(updates = ALL)
..()
if(gun_light && gun_light.on)
add_overlay("mini-light")
diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm
index b446dff500fe..59624751b4b4 100644
--- a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm
+++ b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm
@@ -108,7 +108,7 @@
/obj/item/gun/energy/kinetic_accelerator/proc/empty()
if(cell)
cell.use(cell.charge)
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/gun/energy/kinetic_accelerator/proc/attempt_reload(recharge_time)
if(!cell)
@@ -142,10 +142,10 @@
playsound(src.loc, 'sound/weapons/kenetic_reload.ogg', 60, 1)
else
to_chat(loc, span_warning("[src] silently charges up."))
- update_icon()
+ update_appearance(updates = ALL)
overheat = FALSE
-/obj/item/gun/energy/kinetic_accelerator/update_icon()
+/obj/item/gun/energy/kinetic_accelerator/update_appearance(updates = ALL)
..()
if(!can_shoot())
add_overlay("[icon_state]_empty")
diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm
index 94e81c77da54..2036217aa77a 100644
--- a/code/modules/projectiles/guns/energy/special.dm
+++ b/code/modules/projectiles/guns/energy/special.dm
@@ -34,7 +34,7 @@
pin = null
ammo_x_offset = 1
-/obj/item/gun/energy/decloner/update_icon()
+/obj/item/gun/energy/decloner/update_appearance(updates = ALL)
..()
var/obj/item/ammo_casing/energy/shot = ammo_type[select]
if(!QDELETED(cell) && (cell.charge > shot.e_cost))
@@ -138,6 +138,7 @@
toolspeed = 2
/obj/item/gun/energy/plasmacutter/Initialize()
+ AddElement(/datum/element/update_icon_blocker)
. = ..()
AddComponent(/datum/component/butchering, 25, 105, 0, 'sound/weapons/plasma_cutter.ogg')
@@ -207,10 +208,6 @@
else
. = ..(amount=1)
-
-/obj/item/gun/energy/plasmacutter/update_icon()
- return
-
/obj/item/gun/energy/plasmacutter/adv
name = "advanced plasma cutter"
icon_state = "adv_plasmacutter"
@@ -306,7 +303,7 @@
desc = "A projector that emits high density quantum-coupled bluespace beams. This one seems to be modified to go through glass."
ammo_type = list(/obj/item/ammo_casing/energy/wormhole/upgraded, /obj/item/ammo_casing/energy/wormhole/orange/upgraded)
-/obj/item/gun/energy/wormhole_projector/update_icon()
+/obj/item/gun/energy/wormhole_projector/update_appearance(updates = ALL)
icon_state = "[initial(icon_state)][select]"
item_state = icon_state
@@ -384,8 +381,8 @@
can_charge = FALSE
use_cyborg_cell = TRUE
-/obj/item/gun/energy/printer/update_icon()
- return
+/obj/item/gun/energy/printer/Initialize(mapload)
+ AddElement(/datum/element/update_icon_blocker)
/obj/item/gun/energy/printer/emp_act()
return
diff --git a/code/modules/projectiles/guns/magic.dm b/code/modules/projectiles/guns/magic.dm
index a8e5555d17e5..a6a59f279605 100644
--- a/code/modules/projectiles/guns/magic.dm
+++ b/code/modules/projectiles/guns/magic.dm
@@ -80,8 +80,9 @@
recharge_newshot()
return 1
-/obj/item/gun/magic/update_icon()
- return
+/obj/item/gun/magic/Initialize(mapload)
+ AddElement(/datum/element/update_icon_blocker)
+ return ..()
/obj/item/gun/magic/shoot_with_empty_chamber(mob/living/user as mob|obj)
to_chat(user, span_warning("The [name] whizzles quietly."))
diff --git a/code/modules/projectiles/guns/magic/wand.dm b/code/modules/projectiles/guns/magic/wand.dm
index 64e159b5570f..1123c510d3cd 100644
--- a/code/modules/projectiles/guns/magic/wand.dm
+++ b/code/modules/projectiles/guns/magic/wand.dm
@@ -21,7 +21,7 @@
. = ..()
. += "Has [charges] charge\s remaining."
-/obj/item/gun/magic/wand/update_icon()
+/obj/item/gun/magic/wand/update_appearance(updates = ALL)
icon_state = "[initial(icon_state)][charges ? "" : "-drained"]"
/obj/item/gun/magic/wand/attack(atom/target, mob/living/user)
@@ -44,7 +44,7 @@
zap_self(user)
else
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/gun/magic/wand/proc/zap_self(mob/living/user)
diff --git a/code/modules/projectiles/guns/misc/beam_rifle.dm b/code/modules/projectiles/guns/misc/beam_rifle.dm
index a911ee20855d..1898cf2a290a 100644
--- a/code/modules/projectiles/guns/misc/beam_rifle.dm
+++ b/code/modules/projectiles/guns/misc/beam_rifle.dm
@@ -148,7 +148,7 @@
current_zoom_x = 0
current_zoom_y = 0
-/obj/item/gun/energy/beam_rifle/update_icon()
+/obj/item/gun/energy/beam_rifle/update_appearance(updates = ALL)
cut_overlays()
var/obj/item/ammo_casing/energy/primary_ammo = ammo_type[1]
if(!QDELETED(cell) && (cell.charge >= primary_ammo.e_cost))
diff --git a/code/modules/projectiles/guns/misc/blastcannon.dm b/code/modules/projectiles/guns/misc/blastcannon.dm
index 164d3d790e66..794719430f8f 100644
--- a/code/modules/projectiles/guns/misc/blastcannon.dm
+++ b/code/modules/projectiles/guns/misc/blastcannon.dm
@@ -41,10 +41,10 @@
user.put_in_hands(bomb)
user.visible_message(span_warning("[user] detaches [bomb] from [src]."))
bomb = null
- update_icon()
+ update_appearance(updates = ALL)
return ..()
-/obj/item/gun/blastcannon/update_icon()
+/obj/item/gun/blastcannon/update_appearance(updates = ALL)
if(bomb)
icon_state = icon_state_loaded
name = "blast cannon"
@@ -65,7 +65,7 @@
return FALSE
user.visible_message(span_warning("[user] attaches [T] to [src]!"))
bomb = T
- update_icon()
+ update_appearance(updates = ALL)
return TRUE
return ..()
@@ -94,7 +94,7 @@
var/power = bomb? calculate_bomb() : debug_power
power = min(power, max_power)
QDEL_NULL(bomb)
- update_icon()
+ update_appearance(updates = ALL)
var/heavy = power * 0.25
var/medium = power * 0.5
var/light = power
diff --git a/code/modules/projectiles/guns/misc/syringe_gun.dm b/code/modules/projectiles/guns/misc/syringe_gun.dm
index 6098c5bdefcb..7d6acd3d3326 100644
--- a/code/modules/projectiles/guns/misc/syringe_gun.dm
+++ b/code/modules/projectiles/guns/misc/syringe_gun.dm
@@ -17,7 +17,7 @@
/obj/item/gun/syringe/Initialize()
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
chambered = new /obj/item/ammo_casing/syringegun(src)
/obj/item/gun/syringe/handle_atom_del(atom/A)
@@ -36,7 +36,7 @@
/obj/item/gun/syringe/process_chamber()
if(chambered && !chambered.BB) //we just fired
recharge_newshot()
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/gun/syringe/examine(mob/user)
. = ..()
@@ -66,14 +66,14 @@
to_chat(user, span_notice("You load [A] into \the [src]."))
syringes += A
recharge_newshot()
- update_icon()
+ update_appearance(updates = ALL)
playsound(loc, load_sound, 40)
return TRUE
else
to_chat(user, span_warning("[src] cannot hold more syringes!"))
return FALSE
-/obj/item/gun/syringe/update_icon()
+/obj/item/gun/syringe/update_appearance(updates = ALL)
. = ..()
if(!has_syringe_overlay)
return
@@ -116,7 +116,7 @@
to_chat(user, span_notice("You load \the [D] into \the [src]."))
syringes += D
recharge_newshot()
- update_icon()
+ update_appearance(updates = ALL)
playsound(loc, load_sound, 40)
return TRUE
else
diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm
index dd9d72b15926..a3986dc49400 100644
--- a/code/modules/projectiles/projectile/magic.dm
+++ b/code/modules/projectiles/projectile/magic.dm
@@ -448,7 +448,7 @@
for(var/atom/movable/AM in contents)
C.insert(AM)
C.welded = weld
- C.update_icon()
+ C.update_appearance(updates = ALL)
created = TRUE
return ..()
@@ -475,7 +475,7 @@
if(!welded)
return
icon_state = magic_icon
- update_icon()
+ update_appearance(updates = ALL)
/obj/structure/closet/decay/after_weld(weld_state)
if(weld_state)
@@ -495,7 +495,7 @@
/obj/structure/closet/decay/proc/unmagify()
icon_state = weakened_icon
- update_icon()
+ update_appearance(updates = ALL)
addtimer(CALLBACK(src, PROC_REF(decay)), 15 SECONDS)
icon_welded = "welded"
diff --git a/code/modules/projectiles/projectile/reusable/arrow.dm b/code/modules/projectiles/projectile/reusable/arrow.dm
index 30058fb07342..477c1bfde08b 100644
--- a/code/modules/projectiles/projectile/reusable/arrow.dm
+++ b/code/modules/projectiles/projectile/reusable/arrow.dm
@@ -37,7 +37,7 @@
L.ignite_mob()
arrow.flaming = FALSE
- arrow.update_icon()
+ arrow.update_appearance(updates = ALL)
/obj/item/projectile/bullet/reusable/arrow/handle_drop(atom/target)
if(dropped || !ammo_type)
diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
index 23fe2a6eef06..27236fb13a33 100644
--- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
+++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
@@ -107,7 +107,7 @@
t4_upgrade_reagents = sortList(t4_upgrade_reagents, /proc/cmp_reagents_asc)
display_reagents |= t4_upgrade_reagents
//we don't sort display_reagents again after adding these because they will fuck up the order
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/chem_dispenser/Destroy()
QDEL_NULL(beaker)
@@ -145,7 +145,7 @@
if(working_state)
flick(working_state,src)
-/obj/machinery/chem_dispenser/update_icon()
+/obj/machinery/chem_dispenser/update_appearance(updates = ALL)
cut_overlays()
icon_state = "[(nopower_state && !powered()) ? nopower_state : initial(icon_state)]"
if(has_panel_overlay && panel_open)
@@ -347,7 +347,7 @@
if(default_unfasten_wrench(user, I))
return
if(default_deconstruction_screwdriver(user, icon_state, icon_state, I))
- update_icon()
+ update_appearance(updates = ALL)
return
if(default_deconstruction_crowbar(I))
return
@@ -375,7 +375,7 @@
replace_beaker(user, B)
to_chat(user, span_notice("You add [B] to [src]."))
updateUsrDialog()
- update_icon()
+ update_appearance(updates = ALL)
else if(user.a_intent != INTENT_HARM && !istype(I, /obj/item/card/emag))
to_chat(user, span_warning("You can't load [I] into [src]!"))
return ..()
@@ -434,7 +434,7 @@
beaker = new_beaker
else
beaker = null
- update_icon()
+ update_appearance(updates = ALL)
return TRUE
/obj/machinery/chem_dispenser/on_deconstruction()
@@ -479,7 +479,7 @@
var/old = dir
. = ..()
if(dir != old)
- update_icon() // the beaker needs to be re-positioned if we rotate
+ update_appearance(updates = ALL) // the beaker needs to be re-positioned if we rotate
/obj/machinery/chem_dispenser/drinks/display_beaker()
var/mutable_appearance/b_o = beaker_overlay || mutable_appearance(icon, "disp_beaker")
diff --git a/code/modules/reagents/chemistry/machinery/chem_heater.dm b/code/modules/reagents/chemistry/machinery/chem_heater.dm
index b7d6268b8347..2727fa68a2e1 100644
--- a/code/modules/reagents/chemistry/machinery/chem_heater.dm
+++ b/code/modules/reagents/chemistry/machinery/chem_heater.dm
@@ -21,16 +21,16 @@
. = ..()
if(A == beaker)
beaker = null
- update_icon()
+ update_appearance(updates = ALL)
-/obj/machinery/chem_heater/update_icon()
+/obj/machinery/chem_heater/update_appearance(updates = ALL)
icon_state = "mixer[beaker ? 1 : 0][on ? "a" : "b"]"
/obj/machinery/chem_heater/CtrlClick(mob/user)
if(!user.canUseTopic(src, !issilicon(user)))
return
on = !on
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/chem_heater/AltClick(mob/living/user)
if(!istype(user) || !user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
@@ -47,7 +47,7 @@
beaker = new_beaker
else
beaker = null
- update_icon()
+ update_appearance(updates = ALL)
return TRUE
/obj/machinery/chem_heater/RefreshParts()
@@ -91,7 +91,7 @@
replace_beaker(user, B)
to_chat(user, span_notice("You add [B] to [src]."))
updateUsrDialog()
- update_icon()
+ update_appearance(updates = ALL)
return
return ..()
@@ -129,7 +129,7 @@
if("power")
on = !on
. = TRUE
- update_icon()
+ update_appearance(updates = ALL)
if("temperature")
var/target = params["target"]
var/adjust = text2num(params["adjust"])
diff --git a/code/modules/reagents/chemistry/machinery/chem_master.dm b/code/modules/reagents/chemistry/machinery/chem_master.dm
index 84a71dae462b..6892772e501b 100644
--- a/code/modules/reagents/chemistry/machinery/chem_master.dm
+++ b/code/modules/reagents/chemistry/machinery/chem_master.dm
@@ -65,11 +65,11 @@
if(A == beaker)
beaker = null
reagents.clear_reagents()
- update_icon()
+ update_appearance(updates = ALL)
else if(A == bottle)
bottle = null
-/obj/machinery/chem_master/update_icon()
+/obj/machinery/chem_master/update_appearance(updates = ALL)
cut_overlays()
if (stat & BROKEN)
add_overlay("waitlight")
@@ -103,7 +103,7 @@
replace_beaker(user, B)
to_chat(user, span_notice("You add [B] to [src]."))
updateUsrDialog()
- update_icon()
+ update_appearance(updates = ALL)
else if(!condi && istype(I, /obj/item/storage/pill_bottle))
if(bottle)
to_chat(user, span_warning("A pill bottle is already loaded into [src]!"))
@@ -131,7 +131,7 @@
beaker = new_beaker
else
beaker = null
- update_icon()
+ update_appearance(updates = ALL)
return TRUE
/obj/machinery/chem_master/on_deconstruction()
diff --git a/code/modules/reagents/chemistry/machinery/chem_synthesizer.dm b/code/modules/reagents/chemistry/machinery/chem_synthesizer.dm
index 4bc6fd486e40..c05d533c1816 100644
--- a/code/modules/reagents/chemistry/machinery/chem_synthesizer.dm
+++ b/code/modules/reagents/chemistry/machinery/chem_synthesizer.dm
@@ -53,7 +53,7 @@
var/input = text2num(params["amount"])
if(input)
amount = input
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/chem_dispenser/chem_synthesizer/proc/find_reagent(input)
. = FALSE
diff --git a/code/modules/reagents/chemistry/machinery/pandemic.dm b/code/modules/reagents/chemistry/machinery/pandemic.dm
index b46cb1600c7d..bd5670081160 100644
--- a/code/modules/reagents/chemistry/machinery/pandemic.dm
+++ b/code/modules/reagents/chemistry/machinery/pandemic.dm
@@ -17,7 +17,7 @@
/obj/machinery/computer/pandemic/Initialize()
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/computer/pandemic/Destroy()
QDEL_NULL(beaker)
@@ -42,7 +42,7 @@
/obj/machinery/computer/pandemic/handle_atom_del(atom/A)
if(A == beaker)
beaker = null
- update_icon()
+ update_appearance(updates = ALL)
return ..()
/obj/machinery/computer/pandemic/proc/get_by_index(thing, index)
@@ -122,10 +122,10 @@
/obj/machinery/computer/pandemic/proc/reset_replicator_cooldown()
wait = FALSE
- update_icon()
+ update_appearance(updates = ALL)
playsound(src, 'sound/machines/ping.ogg', 30, TRUE)
-/obj/machinery/computer/pandemic/update_icon()
+/obj/machinery/computer/pandemic/update_appearance(updates = ALL)
if(stat & BROKEN)
icon_state = (beaker ? "mixer1_b" : "mixer0_b")
return
@@ -140,7 +140,7 @@
if(beaker)
beaker.forceMove(drop_location())
beaker = null
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/computer/pandemic/ui_interact(mob/user, datum/tgui/ui)
ui = SStgui.try_update_ui(user, src, ui)
@@ -215,7 +215,7 @@
B.desc = "A small bottle. Contains [A.agent] culture in synthblood medium."
B.reagents.add_reagent(/datum/reagent/blood, 20, data)
wait = TRUE
- update_icon()
+ update_appearance(updates = ALL)
var/turf/source_turf = get_turf(src)
log_virus("A culture bottle was printed for the virus [A.admin_details()] at [loc_name(source_turf)] by [key_name(usr)]")
addtimer(CALLBACK(src, PROC_REF(reset_replicator_cooldown)), 50)
@@ -229,7 +229,7 @@
B.name = "[D.name] vaccine bottle"
B.reagents.add_reagent(/datum/reagent/vaccine, 15, list(id))
wait = TRUE
- update_icon()
+ update_appearance(updates = ALL)
addtimer(CALLBACK(src, PROC_REF(reset_replicator_cooldown)), 200)
. = TRUE
@@ -247,7 +247,7 @@
beaker = I
to_chat(user, span_notice("You insert [I] into [src]."))
- update_icon()
+ update_appearance(updates = ALL)
else
return ..()
diff --git a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm
index ac4d9da53f03..c4144928cb18 100644
--- a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm
+++ b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm
@@ -37,7 +37,7 @@
. = ..()
holdingitems = list()
QDEL_NULL(container)
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/reagentgrinder/Destroy()
if(container)
@@ -89,7 +89,7 @@
. = ..()
if(A == container)
container = null
- update_icon()
+ update_appearance(updates = ALL)
if(holdingitems[A])
holdingitems -= A
@@ -99,7 +99,7 @@
AM.forceMove(drop_location())
holdingitems = list()
-/obj/machinery/reagentgrinder/update_icon()
+/obj/machinery/reagentgrinder/update_appearance(updates = ALL)
if(!container)
icon_state = "juicer"
return
@@ -118,7 +118,7 @@
container = new_container
else
container = null
- update_icon()
+ update_appearance(updates = ALL)
return TRUE
/obj/machinery/reagentgrinder/attackby(obj/item/I, mob/user, params)
@@ -142,7 +142,7 @@
return
replace_container(user, B)
to_chat(user, span_notice("You add [B] to [src]."))
- update_icon()
+ update_appearance(updates = ALL)
return TRUE //no afterattack
if(holdingitems.len >= limit)
diff --git a/code/modules/reagents/chemistry/machinery/smoke_machine.dm b/code/modules/reagents/chemistry/machinery/smoke_machine.dm
index c7477ce9d10f..d6504978233d 100644
--- a/code/modules/reagents/chemistry/machinery/smoke_machine.dm
+++ b/code/modules/reagents/chemistry/machinery/smoke_machine.dm
@@ -36,7 +36,7 @@
for(var/obj/item/stock_parts/matter_bin/B in component_parts)
reagents.maximum_volume += REAGENTS_BASE_VOLUME * B.rating
-/obj/machinery/smoke_machine/update_icon()
+/obj/machinery/smoke_machine/update_appearance(updates = ALL)
if((!is_operational()) || (!on) || (reagents.total_volume == 0))
if (panel_open)
icon_state = "smoke0-o"
@@ -70,12 +70,12 @@
return
if(reagents.total_volume == 0)
on = FALSE
- update_icon()
+ update_appearance(updates = ALL)
return
var/turf/location = get_turf(src)
var/smoke_test = locate(/obj/effect/particle_effect/fluid/smoke) in location
if(on && !smoke_test)
- update_icon()
+ update_appearance(updates = ALL)
var/datum/effect_system/fluid_spread/smoke/chem/smoke_machine/smoke = new()
smoke.set_up(setting * 3, location = location, carry = reagents, efficiency = efficiency)
smoke.start()
@@ -131,7 +131,7 @@
switch(action)
if("purge")
reagents.clear_reagents()
- update_icon()
+ update_appearance(updates = ALL)
. = TRUE
if("setting")
var/amount = text2num(params["amount"])
@@ -140,7 +140,7 @@
. = TRUE
if("power")
on = !on
- update_icon()
+ update_appearance(updates = ALL)
if(on)
message_admins("[ADMIN_LOOKUPFLW(usr)] activated a smoke machine that contains [english_list(reagents.reagent_list)] at [ADMIN_VERBOSEJMP(src)].")
log_game("[key_name(usr)] activated a smoke machine that contains [english_list(reagents.reagent_list)] at [AREACOORD(src)].")
diff --git a/code/modules/reagents/chemistry/recipes/special.dm b/code/modules/reagents/chemistry/recipes/special.dm
index 4bb16dcd1f2f..270832b6f3dd 100644
--- a/code/modules/reagents/chemistry/recipes/special.dm
+++ b/code/modules/reagents/chemistry/recipes/special.dm
@@ -208,4 +208,4 @@ GLOBAL_LIST_INIT(food_reagents, build_reagents_to_food()) //reagentid = related
dat += " above [recipe.required_temp] degrees"
dat += "."
info = dat.Join("")
- update_icon()
+ update_appearance(updates = ALL)
diff --git a/code/modules/reagents/reagent_containers/blood_pack.dm b/code/modules/reagents/reagent_containers/blood_pack.dm
index 065c26f04dd9..83db61c70476 100644
--- a/code/modules/reagents/reagent_containers/blood_pack.dm
+++ b/code/modules/reagents/reagent_containers/blood_pack.dm
@@ -56,7 +56,7 @@
. = ..()
if(blood_type != null)
reagents.add_reagent(unique_blood ? unique_blood : /datum/reagent/blood, 200, list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_type"=blood_type,"resistances"=null,"trace_chem"=null))
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/reagent_containers/blood/on_reagent_change(changetype)
if(reagents)
@@ -68,7 +68,7 @@
else
blood_type = null
update_pack_name()
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/reagent_containers/blood/proc/update_pack_name()
if(!labelled)
@@ -77,7 +77,7 @@
else
name = "blood pack"
-/obj/item/reagent_containers/blood/update_icon()
+/obj/item/reagent_containers/blood/update_appearance(updates = ALL)
cut_overlays()
var/v = min(round(reagents.total_volume / volume * 10), 10)
@@ -140,4 +140,4 @@
labelled = 0
update_pack_name()
else
- return ..()
\ No newline at end of file
+ return ..()
diff --git a/code/modules/reagents/reagent_containers/borghypo.dm b/code/modules/reagents/reagent_containers/borghypo.dm
index a922925a8c9f..62235cc2f51f 100644
--- a/code/modules/reagents/reagent_containers/borghypo.dm
+++ b/code/modules/reagents/reagent_containers/borghypo.dm
@@ -55,7 +55,7 @@ Borg Hypospray
regenerate_reagents()
charge_timer = 0
- //update_icon()
+ //update_appearance(updates = ALL)
return 1
// Use this to add more chemicals for the borghypo to produce.
diff --git a/code/modules/reagents/reagent_containers/bottle.dm b/code/modules/reagents/reagent_containers/bottle.dm
index 798145704a2b..4543e9e3dde0 100644
--- a/code/modules/reagents/reagent_containers/bottle.dm
+++ b/code/modules/reagents/reagent_containers/bottle.dm
@@ -15,12 +15,12 @@
. = ..()
if(!icon_state)
icon_state = "bottle"
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/reagent_containers/glass/bottle/on_reagent_change(changetype)
- update_icon()
+ update_appearance(updates = ALL)
-/obj/item/reagent_containers/glass/bottle/update_icon()
+/obj/item/reagent_containers/glass/bottle/update_appearance(updates = ALL)
cut_overlays()
if(!filling_icon_state)
filling_icon_state = icon_state
@@ -467,7 +467,7 @@
disease_amount = 15
/// Name that used as the base for pen renaming, so subtypes can have different names without having to worry about messing with it
var/base_name = "vial"
- var/base_icon_state = "vial"
+ base_icon_state = "vial"
/// List of icon_states that require the stripe overlay to look good. Not a very good way of doing it, but its the best I can come up with right now.
var/list/striped_vial_skins = list("vial_white", "vial_red", "vial_blue", "vial_green", "vial_orange", "vial_purple", "vial_black", "viallarge_white", "viallarge_red", "viallarge_blue", "viallarge_green", "viallarge_orange", "viallarge_purple", "viallarge_black")
diff --git a/code/modules/reagents/reagent_containers/dropper.dm b/code/modules/reagents/reagent_containers/dropper.dm
index 640716e6e1b8..38216c4f798b 100644
--- a/code/modules/reagents/reagent_containers/dropper.dm
+++ b/code/modules/reagents/reagent_containers/dropper.dm
@@ -44,7 +44,7 @@
span_userdanger("[user] tries to squirt something into [target]'s eyes, but fails!"))
to_chat(user, span_notice("You transfer [trans] unit\s of the solution."))
- update_icon()
+ update_appearance(updates = ALL)
return
else if(isalien(target)) //hiss-hiss has no eyes!
to_chat(target, span_danger("[target] does not seem to have any eyes!"))
@@ -82,7 +82,7 @@
trans = src.reagents.trans_to(target, amount_per_transfer_from_this, transfered_by = user)
to_chat(user, span_notice("You transfer [trans] unit\s of the solution."))
- update_icon()
+ update_appearance(updates = ALL)
else
@@ -98,9 +98,9 @@
to_chat(user, span_notice("You fill [src] with [trans] unit\s of the solution."))
- update_icon()
+ update_appearance(updates = ALL)
-/obj/item/reagent_containers/dropper/update_icon()
+/obj/item/reagent_containers/dropper/update_appearance(updates = ALL)
cut_overlays()
if(reagents.total_volume)
var/mutable_appearance/filling = mutable_appearance('icons/obj/reagentfillings.dmi', "dropper")
diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm
index 678c2b7d51e9..f50982c7175a 100755
--- a/code/modules/reagents/reagent_containers/glass.dm
+++ b/code/modules/reagents/reagent_containers/glass.dm
@@ -119,15 +119,15 @@
/obj/item/reagent_containers/glass/beaker/Initialize()
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/reagent_containers/glass/beaker/get_part_rating()
return reagents.maximum_volume
/obj/item/reagent_containers/glass/beaker/on_reagent_change(changetype)
- update_icon()
+ update_appearance(updates = ALL)
-/obj/item/reagent_containers/glass/beaker/update_icon()
+/obj/item/reagent_containers/glass/beaker/update_appearance(updates = ALL)
cut_overlays()
if(reagents.total_volume)
@@ -177,7 +177,7 @@
amount_per_transfer_from_this = 10
possible_transfer_amounts = list(5,10,15,20,25,30,60,120)
-/obj/item/reagent_containers/glass/beaker/plastic/update_icon()
+/obj/item/reagent_containers/glass/beaker/plastic/update_appearance(updates = ALL)
icon_state = "beakerlarge" // hack to lets us reuse the large beaker reagent fill states
..()
icon_state = "beakerwhite"
@@ -422,9 +422,9 @@
/obj/item/reagent_containers/glass/mixbowl/on_reagent_change(changetype)
..()
- update_icon()
+ update_appearance(updates = ALL)
-/obj/item/reagent_containers/glass/mixbowl/update_icon()
+/obj/item/reagent_containers/glass/mixbowl/update_appearance(updates = ALL)
cut_overlays()
if(reagents.total_volume)
diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm
index b97dd338140b..61a5ea3a3133 100644
--- a/code/modules/reagents/reagent_containers/hypospray.dm
+++ b/code/modules/reagents/reagent_containers/hypospray.dm
@@ -126,7 +126,7 @@
if(!iscyborg(user))
reagents.maximum_volume = 0 //Makes them useless afterwards
reagents.flags = NONE
- update_icon()
+ update_appearance(updates = ALL)
addtimer(CALLBACK(src, PROC_REF(cyborg_recharge), user), 80)
/obj/item/reagent_containers/autoinjector/medipen/proc/cyborg_recharge(mob/living/silicon/robot/user)
@@ -134,9 +134,9 @@
var/mob/living/silicon/robot/R = user
if(R.cell.use(100))
reagents.add_reagent_list(list_reagents)
- update_icon()
+ update_appearance(updates = ALL)
-/obj/item/reagent_containers/autoinjector/medipen/update_icon()
+/obj/item/reagent_containers/autoinjector/medipen/update_appearance(updates = ALL)
if(reagents.total_volume > 0)
icon_state = initial(icon_state)
else
@@ -305,14 +305,14 @@
if(ispath(container))
container = new container
antispam = FALSE
- update_icon()
+ update_appearance(updates = ALL)
-/obj/item/hypospray/update_icon()
+/obj/item/hypospray/update_appearance(updates = ALL)
..()
cut_overlays()
if(ismob(loc))
var/mob/M = loc
- M.update_inv_hands()
+ M.update_held_items()
if(container?.reagents?.total_volume)
var/mutable_appearance/filling = mutable_appearance('icons/obj/reagentfillings.dmi', "[icon_state]-10")
@@ -355,7 +355,7 @@
user.put_in_hands(container)
to_chat(user, span_notice("You remove [container] from [src]."))
container = null
- update_icon()
+ update_appearance(updates = ALL)
playsound(loc, pick(eject_sound), 50, 1)
else
to_chat(user, span_notice("This hypo isn't loaded!"))
@@ -376,7 +376,7 @@
return FALSE
container = V
user.visible_message(span_notice("[user] has loaded [container] into [src]."),span_notice("You have loaded [container] into [src]."))
- update_icon()
+ update_appearance(updates = ALL)
playsound(loc, pick(load_sound), 35, 1)
return TRUE
else
@@ -433,7 +433,7 @@
if(HYPO_DRAW)
draw(target, user)
antispam = FALSE
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/hypospray/proc/inject(mob/living/carbon/target, mob/user)
//Initial Checks/Logging
diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm
index 1ca00f8877fd..cd67ea85b687 100644
--- a/code/modules/reagents/reagent_containers/syringes.dm
+++ b/code/modules/reagents/reagent_containers/syringes.dm
@@ -21,28 +21,28 @@
. = ..()
if(list_reagents) //syringe starts in inject mode if its already got something inside
mode = SYRINGE_INJECT
- update_icon()
+ update_appearance(updates = ALL)
RegisterSignals(src, list(COMSIG_ITEM_EMBEDDED, COMSIG_ITEM_EMBED_TICK), PROC_REF(embed_inject))
/obj/item/reagent_containers/syringe/on_reagent_change(changetype)
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/reagent_containers/syringe/pickup(mob/user)
..()
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/reagent_containers/syringe/dropped(mob/user)
..()
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/reagent_containers/syringe/attack_self(mob/user)
mode = !mode
- update_icon()
+ update_appearance(updates = ALL)
//ATTACK HAND IGNORING PARENT RETURN VALUE
/obj/item/reagent_containers/syringe/attack_hand()
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/reagent_containers/syringe/attack_paw(mob/user)
return attack_hand(user)
@@ -103,7 +103,7 @@
to_chat(user, span_notice("You fill [src] with [trans] units of the solution. It now contains [reagents.total_volume] units."))
if (reagents.total_volume >= reagents.maximum_volume)
mode=!mode
- update_icon()
+ update_appearance(updates = ALL)
if(SYRINGE_INJECT)
// Always log attemped injections for admins
@@ -165,10 +165,10 @@
to_chat(user, span_notice("You inject [amount_per_transfer_from_this] units of the solution. The syringe now contains [reagents.total_volume] units."))
if (reagents.total_volume <= 0 && mode==SYRINGE_INJECT)
mode = SYRINGE_DRAW
- update_icon()
+ update_appearance(updates = ALL)
-/obj/item/reagent_containers/syringe/update_icon()
+/obj/item/reagent_containers/syringe/update_appearance(updates = ALL)
cut_overlays()
var/rounded_vol
if(reagents && reagents.total_volume)
@@ -189,7 +189,7 @@
if (SYRINGE_INJECT)
injoverlay = "inject"
add_overlay(injoverlay)
- M.update_inv_hands()
+ M.update_held_items()
/obj/item/reagent_containers/syringe/proc/embed_inject(target, mob/living/carbon/human/embedde, obj/item/bodypart/part)
if(!reagents.total_volume)
diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm
index 3d38e3d93bca..e8decb0df568 100644
--- a/code/modules/reagents/reagent_dispenser.dm
+++ b/code/modules/reagents/reagent_dispenser.dm
@@ -101,7 +101,7 @@
reagents.trans_to(W, W.max_fuel, transfered_by = user)
user.visible_message(span_notice("[user] refills [user.p_their()] [W.name]."), span_notice("You refill [W]."))
playsound(src, 'sound/effects/refill.ogg', 50, 1)
- W.update_icon()
+ W.update_appearance(updates = ALL)
else
user.visible_message(span_warning("[user] catastrophically fails at refilling [user.p_their()] [W.name]!"), span_userdanger("That was stupid of you."))
diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm
index 25a7e6c3a122..caf4d1e9eeb7 100644
--- a/code/modules/recycling/conveyor2.dm
+++ b/code/modules/recycling/conveyor2.dm
@@ -121,7 +121,7 @@ GLOBAL_LIST_EMPTY(conveyors_by_id)
movedir = backwards
update()
-/obj/machinery/conveyor/update_icon()
+/obj/machinery/conveyor/update_appearance(updates = ALL)
if(!operating)
icon_state = "conveyor[inverted ? "-0" : "0"]"
else
@@ -132,7 +132,7 @@ GLOBAL_LIST_EMPTY(conveyors_by_id)
if(stat & NOPOWER)
operating = FALSE
. = FALSE
- update_icon()
+ update_appearance(updates = ALL)
// machine process
// move items to the target location
@@ -197,7 +197,7 @@ GLOBAL_LIST_EMPTY(conveyors_by_id)
inverted = !inverted
update_move_direction()
to_chat(user, span_notice("You set [src]'s direction [inverted ? "backwards" : "back to default"]."))
- update_icon()
+ update_appearance(updates = ALL)
else if(I.tool_behaviour == TOOL_MULTITOOL)
switch(conveytime)
@@ -253,7 +253,7 @@ GLOBAL_LIST_EMPTY(conveyors_by_id)
. = ..()
if (newid)
id = newid
- update_icon()
+ update_appearance(updates = ALL)
LAZYADD(GLOB.conveyors_by_id[id], src)
/obj/machinery/conveyor_switch/Destroy()
@@ -271,7 +271,7 @@ GLOBAL_LIST_EMPTY(conveyors_by_id)
// update the icon depending on the position
-/obj/machinery/conveyor_switch/update_icon()
+/obj/machinery/conveyor_switch/update_appearance(updates = ALL)
if(position<0)
if(invert_icon)
icon_state = "switch-fwd"
@@ -297,7 +297,7 @@ GLOBAL_LIST_EMPTY(conveyors_by_id)
for(var/obj/machinery/conveyor/C in GLOB.conveyors_by_id[id])
C.operating = position
C.update_move_direction()
- C.update_icon()
+ C.update_appearance(updates = ALL)
CHECK_TICK
// attack with hand, switch position
@@ -318,13 +318,13 @@ GLOBAL_LIST_EMPTY(conveyors_by_id)
position = 0
operated = 1
- update_icon()
+ update_appearance(updates = ALL)
// find any switches with same id as this one, and set their positions to match us
for(var/obj/machinery/conveyor_switch/S in GLOB.conveyors_by_id[id])
S.invert_icon = invert_icon
S.position = position
- S.update_icon()
+ S.update_appearance(updates = ALL)
CHECK_TICK
/obj/machinery/conveyor_switch/attackby(obj/item/I, mob/user, params)
diff --git a/code/modules/recycling/disposal/bin.dm b/code/modules/recycling/disposal/bin.dm
index bab1c389c7b8..d9859663293e 100644
--- a/code/modules/recycling/disposal/bin.dm
+++ b/code/modules/recycling/disposal/bin.dm
@@ -39,7 +39,7 @@
air_contents = new /datum/gas_mixture()
//gas.volume = 1.05 * CELLSTANDARD
- update_icon()
+ update_appearance(updates = ALL)
return INITIALIZE_HINT_LATELOAD //we need turfs to have air
@@ -96,7 +96,7 @@
if((I.item_flags & ABSTRACT) || !user.temporarilyRemoveItemFromInventory(I))
return
place_item_in_disposal(I, user)
- update_icon()
+ update_appearance(updates = ALL)
return 1 //no afterattack
else
return ..()
@@ -140,7 +140,7 @@
target.visible_message(span_danger("[user] has placed [target] in [src]."), span_userdanger("[user] has placed [target] in [src]."))
log_combat(user, target, "stuffed", addition="into [src]")
target.LAssailant = WEAKREF(user)
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/disposal/relaymove(mob/user)
attempt_escape(user)
@@ -157,14 +157,14 @@
// leave the disposal
/obj/machinery/disposal/proc/go_out(mob/user)
user.forceMove(loc)
- update_icon()
+ update_appearance(updates = ALL)
// monkeys and xenos can only pull the flush lever
/obj/machinery/disposal/attack_paw(mob/user)
if(stat & BROKEN)
return
flush = !flush
- update_icon()
+ update_appearance(updates = ALL)
// eject the contents of the disposal unit
@@ -173,11 +173,12 @@
for(var/atom/movable/AM in src)
AM.forceMove(T)
AM.pipe_eject(0)
- update_icon()
+ update_appearance(updates = ALL)
// update the icon & overlays to reflect mode & status
-/obj/machinery/disposal/update_icon()
- return
+/obj/machinery/disposal/Initialize(mapload)
+ AddElement(/datum/element/update_icon_blocker)
+ return ..()
/obj/machinery/disposal/proc/flush()
flushing = TRUE
@@ -233,7 +234,7 @@
src.transfer_fingerprints_to(stored)
stored.anchored = FALSE
stored.density = TRUE
- stored.update_icon()
+ stored.update_appearance(updates = ALL)
for(var/atom/movable/AM in src) //out, out, darned crowbar!
AM.forceMove(T)
..()
@@ -273,8 +274,8 @@
to_chat(user, span_warning("You empty the bag."))
for(var/obj/item/O in T.contents)
STR.remove_from_storage(O,src)
- T.update_icon()
- update_icon()
+ T.update_appearance(updates = ALL)
+ update_appearance(updates = ALL)
else
return ..()
@@ -285,7 +286,7 @@
if(!user.canUseTopic(src, TRUE))
return
flush = !flush
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/disposal/bin/ui_state(mob/user)
return GLOB.notcontained_state
@@ -315,22 +316,22 @@
switch(action)
if("handle-0")
flush = FALSE
- update_icon()
+ update_appearance(updates = ALL)
. = TRUE
if("handle-1")
if(!panel_open)
flush = TRUE
- update_icon()
+ update_appearance(updates = ALL)
. = TRUE
if("pump-0")
if(pressure_charging)
pressure_charging = FALSE
- update_icon()
+ update_appearance(updates = ALL)
. = TRUE
if("pump-1")
if(!pressure_charging)
pressure_charging = TRUE
- update_icon()
+ update_appearance(updates = ALL)
. = TRUE
if("eject")
eject()
@@ -346,7 +347,7 @@
visible_message(span_notice("[AM] lands in [src] and triggers the flush system!."))
else
visible_message(span_notice("[AM] lands in [src]."))
- update_icon()
+ update_appearance(updates = ALL)
else
visible_message(span_notice("[AM] bounces off of [src]'s rim!"))
return ..()
@@ -357,9 +358,9 @@
..()
full_pressure = FALSE
pressure_charging = TRUE
- update_icon()
+ update_appearance(updates = ALL)
-/obj/machinery/disposal/bin/update_icon()
+/obj/machinery/disposal/bin/update_appearance(updates = ALL)
cut_overlays()
if(stat & BROKEN)
pressure_charging = FALSE
@@ -435,7 +436,7 @@
if(air_contents.return_pressure() >= SEND_PRESSURE)
full_pressure = TRUE
pressure_charging = FALSE
- update_icon()
+ update_appearance(updates = ALL)
return
/obj/machinery/disposal/bin/get_remote_view_fullscreens(mob/user)
diff --git a/code/modules/recycling/disposal/construction.dm b/code/modules/recycling/disposal/construction.dm
index 83af120d4cb8..d8e41f05aee0 100644
--- a/code/modules/recycling/disposal/construction.dm
+++ b/code/modules/recycling/disposal/construction.dm
@@ -32,7 +32,7 @@
var/datum/component/simple_rotation/rotcomp = GetComponent(/datum/component/simple_rotation)
rotcomp.BaseRot(null,ROTATION_FLIP)
- update_icon()
+ update_appearance(updates = ALL)
/obj/structure/disposalconstruct/Move()
var/old_dir = dir
@@ -40,7 +40,7 @@
setDir(old_dir) //pipes changing direction when moved is just annoying and buggy
// update iconstate and dpdir due to dir and type
-/obj/structure/disposalconstruct/update_icon()
+/obj/structure/disposalconstruct/update_appearance(updates = ALL)
icon_state = initial(pipe_type.icon_state)
if(is_pipe())
icon_state = "con[icon_state]"
@@ -63,7 +63,7 @@
// change visibility status and force update of icon
/obj/structure/disposalconstruct/hide(var/intact)
invisibility = (intact && level==1) ? INVISIBILITY_MAXIMUM: 0 // hide if floor is intact
- update_icon()
+ update_appearance(updates = ALL)
/obj/structure/disposalconstruct/proc/get_disposal_dir()
if(!is_pipe())
@@ -98,7 +98,7 @@
if(dir in GLOB.diagonals) // Fix RPD-induced diagonal turning
setDir(turn(dir, 45))
pipe_type = initial(temp.flip_type)
- update_icon()
+ update_appearance(updates = ALL)
/obj/structure/disposalconstruct/proc/can_be_rotated(mob/user,rotation_type)
if(anchored)
@@ -151,7 +151,7 @@
density = initial(pipe_type.density)
to_chat(user, span_notice("You attach the [pipename] to the underfloor."))
I.play_tool_sound(src, 100)
- update_icon()
+ update_appearance(updates = ALL)
return TRUE
/obj/structure/disposalconstruct/welder_act(mob/living/user, obj/item/I)
diff --git a/code/modules/religion/religion_structures.dm b/code/modules/religion/religion_structures.dm
index ae918a84d964..26897f1a0474 100644
--- a/code/modules/religion/religion_structures.dm
+++ b/code/modules/religion/religion_structures.dm
@@ -67,11 +67,11 @@
to_chat(user, span_notice("The liquid feels warm and soothing as you touch it. The fountain immediately dries up shortly afterwards."))
user.reagents.add_reagent(/datum/reagent/medicine/omnizine/godblood,10) //Hurts your brain and makes you go insane
user.reagents.add_reagent(/datum/reagent/toxin/mindbreaker,10) //However, it gives rather potent healing.
- update_icon()
- addtimer(CALLBACK(src, PROC_REF(update_icon)), time_between_uses)
+ update_appearance(updates = ALL)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/atom/, update_appearance)), time_between_uses)
-/obj/structure/holyfountain/update_icon()
+/obj/structure/holyfountain/update_appearance(updates = ALL)
if(last_process + time_between_uses > world.time)
icon_state = "fountain"
else
diff --git a/code/modules/research/destructive_analyzer.dm b/code/modules/research/destructive_analyzer.dm
index 45f8e8afc293..ba62f348480c 100644
--- a/code/modules/research/destructive_analyzer.dm
+++ b/code/modules/research/destructive_analyzer.dm
@@ -48,10 +48,10 @@ Note: Must be placed within 3 tiles of the R&D Console
linked_console.updateUsrDialog()
/obj/machinery/rnd/destructive_analyzer/proc/finish_loading()
- update_icon()
+ update_appearance(updates = ALL)
reset_busy()
-/obj/machinery/rnd/destructive_analyzer/update_icon()
+/obj/machinery/rnd/destructive_analyzer/update_appearance(updates = ALL)
if(loaded_item)
icon_state = "d_analyzer_l"
else
@@ -94,7 +94,7 @@ Note: Must be placed within 3 tiles of the R&D Console
else
qdel(thing)
if (!innermode)
- update_icon()
+ update_appearance(updates = ALL)
return TRUE
/obj/machinery/rnd/destructive_analyzer/proc/user_try_decon_id(id, mob/user)
@@ -150,5 +150,5 @@ Note: Must be placed within 3 tiles of the R&D Console
return FALSE
loaded_item.forceMove(get_turf(src))
loaded_item = null
- update_icon()
+ update_appearance(updates = ALL)
return TRUE
diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm
index 782688384e82..cee825c3fb62 100644
--- a/code/modules/research/experimentor.dm
+++ b/code/modules/research/experimentor.dm
@@ -564,12 +564,12 @@
addtimer(CALLBACK(src, PROC_REF(reset_exp)), resetTime)
/obj/machinery/rnd/experimentor/proc/reset_exp()
- update_icon()
+ update_appearance(updates = ALL)
recentlyExperimented = FALSE
if(autoexperiment)
do_experiment()
-/obj/machinery/rnd/experimentor/update_icon()
+/obj/machinery/rnd/experimentor/update_appearance(updates = ALL)
icon_state = "h_lathe"
/obj/machinery/rnd/experimentor/proc/warn_admins(user, ReactionName)
diff --git a/code/modules/research/nanites/nanite_chamber.dm b/code/modules/research/nanites/nanite_chamber.dm
index bd2b417d7a99..47e1b920cbd9 100644
--- a/code/modules/research/nanites/nanite_chamber.dm
+++ b/code/modules/research/nanites/nanite_chamber.dm
@@ -38,7 +38,7 @@
busy = status
busy_message = message
busy_icon_state = working_icon
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/nanite_chamber/proc/set_safety(threshold)
if(!occupant)
@@ -104,7 +104,7 @@
return
SEND_SIGNAL(occupant, COMSIG_NANITE_DELETE)
-/obj/machinery/nanite_chamber/update_icon()
+/obj/machinery/nanite_chamber/update_appearance(updates = ALL)
cut_overlays()
if((stat & MAINT) || panel_open)
@@ -188,7 +188,7 @@
/obj/machinery/nanite_chamber/attackby(obj/item/I, mob/user, params)
if(!occupant && default_deconstruction_screwdriver(user, icon_state, icon_state, I))//sent icon_state is irrelevant...
- update_icon()//..since we're updating the icon here, since the scanner can be unpowered when opened/closed
+ update_appearance(updates = ALL)//..since we're updating the icon here, since the scanner can be unpowered when opened/closed
return
if(default_pry_open(I))
diff --git a/code/modules/research/nanites/nanite_chamber_computer.dm b/code/modules/research/nanites/nanite_chamber_computer.dm
index 234492e4c7c7..b278323e30cc 100644
--- a/code/modules/research/nanites/nanite_chamber_computer.dm
+++ b/code/modules/research/nanites/nanite_chamber_computer.dm
@@ -122,7 +122,7 @@
switch(action)
if("toggle_lock")
chamber.locked = !chamber.locked
- chamber.update_icon()
+ chamber.update_appearance(updates = ALL)
. = TRUE
if("eject")
eject(usr)
diff --git a/code/modules/research/nanites/nanite_remote.dm b/code/modules/research/nanites/nanite_remote.dm
index ad787af0069f..45f2ce12115a 100644
--- a/code/modules/research/nanites/nanite_remote.dm
+++ b/code/modules/research/nanites/nanite_remote.dm
@@ -33,7 +33,7 @@
if(allowed(user))
to_chat(user, span_notice("You unlock [src]."))
locked = FALSE
- update_icon()
+ update_appearance(updates = ALL)
else
to_chat(user, span_warning("Access denied."))
@@ -44,9 +44,9 @@
obj_flags |= EMAGGED
if(locked)
locked = FALSE
- update_icon()
+ update_appearance(updates = ALL)
-/obj/item/nanite_remote/update_icon()
+/obj/item/nanite_remote/update_appearance(updates = ALL)
. = ..()
cut_overlays()
if(obj_flags & EMAGGED)
@@ -166,7 +166,7 @@
if("lock")
if(!(obj_flags & EMAGGED))
locked = TRUE
- update_icon()
+ update_appearance(updates = ALL)
. = TRUE
diff --git a/code/modules/research/nanites/public_chamber.dm b/code/modules/research/nanites/public_chamber.dm
index 283eb1a895ed..5e1786ce8a90 100644
--- a/code/modules/research/nanites/public_chamber.dm
+++ b/code/modules/research/nanites/public_chamber.dm
@@ -30,7 +30,7 @@
/obj/machinery/public_nanite_chamber/proc/set_busy(status, working_icon)
busy = status
busy_icon_state = working_icon
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/public_nanite_chamber/proc/inject_nanites(mob/living/attacker)
if(stat & (NOPOWER|BROKEN))
@@ -60,7 +60,7 @@
log_combat(attacker, occupant, "injected", null, "with nanites via [src]")
occupant.AddComponent(/datum/component/nanites, 75, cloud_id)
-/obj/machinery/public_nanite_chamber/update_icon()
+/obj/machinery/public_nanite_chamber/update_appearance(updates = ALL)
cut_overlays()
if((stat & MAINT) || panel_open)
@@ -161,7 +161,7 @@
/obj/machinery/public_nanite_chamber/attackby(obj/item/I, mob/user, params)
if(!occupant && default_deconstruction_screwdriver(user, icon_state, icon_state, I))//sent icon_state is irrelevant...
- update_icon()//..since we're updating the icon here, since the scanner can be unpowered when opened/closed
+ update_appearance(updates = ALL)//..since we're updating the icon here, since the scanner can be unpowered when opened/closed
return
if(default_pry_open(I))
diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm
index 0652ca2ddeda..d776911226e1 100644
--- a/code/modules/research/server.dm
+++ b/code/modules/research/server.dm
@@ -27,7 +27,7 @@
var/obj/item/circuitboard/machine/B = new /obj/item/circuitboard/machine/rdserver(null)
B.apply_default_parts(src)
current_temp = get_env_temp()
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/rnd/server/Destroy()
SSresearch.servers -= src
@@ -39,7 +39,7 @@
tot_rating += SP.rating
heat_gen /= max(1, tot_rating)
-/obj/machinery/rnd/server/update_icon()
+/obj/machinery/rnd/server/update_appearance(updates = ALL)
if(panel_open)
icon_state = "server_t"
return
@@ -53,7 +53,7 @@
/obj/machinery/rnd/server/default_deconstruction_screwdriver(mob/user, icon_state_open, icon_state_closed, obj/item/I)
.=..()
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/rnd/server/power_change()
. = ..()
@@ -65,7 +65,7 @@
working = FALSE
else
working = TRUE
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/rnd/server/emp_act()
. = ..()
diff --git a/code/modules/security_levels/security_levels.dm b/code/modules/security_levels/security_levels.dm
index daf5b60f5879..5431b7d5f283 100644
--- a/code/modules/security_levels/security_levels.dm
+++ b/code/modules/security_levels/security_levels.dm
@@ -82,7 +82,7 @@ GLOBAL_VAR_INIT(security_level, SEC_LEVEL_GREEN)
GLOB.security_level = level
for(var/obj/machinery/firealarm/FA in GLOB.machines)
if(is_station_level(FA.z))
- FA.update_icon()
+ FA.update_appearance(updates = ALL)
if(level >= SEC_LEVEL_RED)
for(var/obj/machinery/computer/shuttle/pod/pod in GLOB.machines)
diff --git a/code/modules/shuttle/emergency.dm b/code/modules/shuttle/emergency.dm
index f4d45e3561c4..2e72ec11cf05 100644
--- a/code/modules/shuttle/emergency.dm
+++ b/code/modules/shuttle/emergency.dm
@@ -498,8 +498,9 @@
density = FALSE
clockwork = TRUE //it'd look weird
-/obj/machinery/computer/shuttle/pod/update_icon()
- return
+/obj/machinery/computer/shuttle/pod/Initialize(mapload)
+ AddElement(/datum/element/update_icon_blocker)
+ return ..()
/obj/machinery/computer/shuttle/pod/emag_act(mob/user)
if(obj_flags & EMAGGED)
diff --git a/code/modules/shuttle/manipulator.dm b/code/modules/shuttle/manipulator.dm
index c82232e217a5..e5e7378b1139 100644
--- a/code/modules/shuttle/manipulator.dm
+++ b/code/modules/shuttle/manipulator.dm
@@ -12,11 +12,11 @@
density = TRUE
-/obj/machinery/shuttle_manipulator/update_icon()
+/obj/machinery/shuttle_manipulator/update_appearance(updates = ALL)
cut_overlays()
var/mutable_appearance/hologram_projection = mutable_appearance(icon, "hologram_on")
hologram_projection.pixel_y = 22
var/mutable_appearance/hologram_ship = mutable_appearance(icon, "hologram_whiteship")
hologram_ship.pixel_y = 27
add_overlay(hologram_projection)
- add_overlay(hologram_ship)
\ No newline at end of file
+ add_overlay(hologram_ship)
diff --git a/code/modules/shuttle/on_move.dm b/code/modules/shuttle/on_move.dm
index 2faa462705f4..cda0542a9000 100644
--- a/code/modules/shuttle/on_move.dm
+++ b/code/modules/shuttle/on_move.dm
@@ -258,8 +258,8 @@ All ShuttleMove procs go here
A.addMember(src)
SSair.add_to_rebuild_queue(src)
else
- // atmosinit() calls update_icon(), so we don't need to call it
- update_icon()
+ // atmosinit() calls update_appearance(updates = ALL), so we don't need to call it
+ update_appearance(updates = ALL)
/obj/machinery/atmospherics/pipe/afterShuttleMove(turf/oldT, list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir, rotation)
. = ..()
diff --git a/code/modules/shuttle/shuttle_rotate.dm b/code/modules/shuttle/shuttle_rotate.dm
index 61e43d69fb8c..1b2efe414a84 100644
--- a/code/modules/shuttle/shuttle_rotate.dm
+++ b/code/modules/shuttle/shuttle_rotate.dm
@@ -42,7 +42,7 @@ If ever any of these procs are useful for non-shuttles, rename it to proc/rotate
/mob/dead/observer/shuttleRotate(rotation, params)
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
/************************************Structure rotate procs************************************/
@@ -59,7 +59,7 @@ If ever any of these procs are useful for non-shuttles, rename it to proc/rotate
var/temp = d1
d1 = d2
d2 = temp
- update_icon()
+ update_appearance(updates = ALL)
//Fixes dpdir on shuttle rotation
/obj/structure/disposalpipe/shuttleRotate(rotation, params)
diff --git a/code/modules/shuttle/spaceship_navigation_beacon.dm b/code/modules/shuttle/spaceship_navigation_beacon.dm
index 89e02920a732..63e513302fe2 100644
--- a/code/modules/shuttle/spaceship_navigation_beacon.dm
+++ b/code/modules/shuttle/spaceship_navigation_beacon.dm
@@ -29,7 +29,7 @@ obj/machinery/spaceship_navigation_beacon/emp_act()
return ..()
// update the icon_state
-/obj/machinery/spaceship_navigation_beacon/update_icon()
+/obj/machinery/spaceship_navigation_beacon/update_appearance(updates = ALL)
if(powered())
icon_state = "core"
else
@@ -37,7 +37,7 @@ obj/machinery/spaceship_navigation_beacon/emp_act()
/obj/machinery/spaceship_navigation_beacon/power_change()
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/spaceship_navigation_beacon/multitool_act(mob/living/user, obj/item/multitool/I)
if(panel_open)
diff --git a/code/modules/shuttle/special.dm b/code/modules/shuttle/special.dm
index 65f56f9b655b..abea24517e18 100644
--- a/code/modules/shuttle/special.dm
+++ b/code/modules/shuttle/special.dm
@@ -19,9 +19,9 @@
. = ..()
if(prob(50))
desc = "Oh no, not again."
- update_icon()
+ update_appearance(updates = ALL)
-/obj/machinery/power/emitter/energycannon/magical/update_icon()
+/obj/machinery/power/emitter/energycannon/magical/update_appearance(updates = ALL)
if(active)
icon_state = icon_state_on
else
@@ -39,7 +39,7 @@
visible_message("\
[src] closes its eyes.")
active = FALSE
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/power/emitter/energycannon/magical/attackby(obj/item/W, mob/user, params)
return
diff --git a/code/modules/spells/spell_types/self/disguise.dm b/code/modules/spells/spell_types/self/disguise.dm
index 0ecf7549f6fb..419182904627 100644
--- a/code/modules/spells/spell_types/self/disguise.dm
+++ b/code/modules/spells/spell_types/self/disguise.dm
@@ -53,7 +53,7 @@
C.icon_state = target.icon_state
C.cut_overlays()
C.add_overlay(target.get_overlays_copy(list(HANDS_LAYER)))
- C.update_inv_hands()
+ C.update_held_items()
log_game("[C.name] has disguised as [target.name]!")
is_disguised = TRUE
addtimer(CALLBACK(src, PROC_REF(undocloak), C), (40 SECONDS + (spell_level * 3))) //Sets it up so this is unchanged on default level, and goes up per level invested.
diff --git a/code/modules/spells/spell_types/self/summonitem.dm b/code/modules/spells/spell_types/self/summonitem.dm
index 26d960eb4038..cb2b255c9e40 100644
--- a/code/modules/spells/spell_types/self/summonitem.dm
+++ b/code/modules/spells/spell_types/self/summonitem.dm
@@ -125,7 +125,7 @@
if(istype(retrieved_item, /obj/machinery/portable_atmospherics))
var/obj/machinery/portable_atmospherics/atmos_item = retrieved_item
atmos_item.disconnect()
- atmos_item.update_icon()
+ atmos_item.update_appearance(updates = ALL)
// Otherwise bring the whole thing with us
item_to_retrieve = retrieved_item
diff --git a/code/modules/surgery/anesthesia_machine.dm b/code/modules/surgery/anesthesia_machine.dm
index d4cdb85dae4e..f9427bc8b77f 100644
--- a/code/modules/surgery/anesthesia_machine.dm
+++ b/code/modules/surgery/anesthesia_machine.dm
@@ -20,9 +20,9 @@
if(is_roundstart)
var/obj/item/tank/T = new /obj/item/tank/internals/anesthetic(src)
attached_tank = T
- update_icon()
+ update_appearance(updates = ALL)
-/obj/machinery/anesthetic_machine/update_icon()
+/obj/machinery/anesthetic_machine/update_appearance(updates = ALL)
cut_overlays()
if(mask_out)
add_overlay("mask_off")
@@ -44,7 +44,7 @@
I.forceMove(src) // Put new tank in, set it as attached tank
visible_message("[user] inserts [I] into [src].")
attached_tank = I
- update_icon()
+ update_appearance(updates = ALL)
return
. = ..()
@@ -54,7 +54,7 @@
attached_tank.forceMove(loc)
to_chat(user, "You remove the [attached_tank].")
attached_tank = null
- update_icon()
+ update_appearance(updates = ALL)
if(mask_out)
retract_mask()
@@ -67,7 +67,7 @@
else
attached_mask.forceMove(src)
mask_out = FALSE
- update_icon()
+ update_appearance(updates = ALL)
return TRUE
return FALSE
@@ -87,7 +87,7 @@
target.open_internals(attached_tank, TRUE)
mask_out = TRUE
START_PROCESSING(SSmachines, src)
- update_icon()
+ update_appearance(updates = ALL)
else
to_chat(usr, "[mask_out ? "The machine is already in use!" : "The machine has no attached tank!"]")
diff --git a/code/modules/surgery/bodyparts/dismemberment.dm b/code/modules/surgery/bodyparts/dismemberment.dm
index cf7bb028dc80..2eb18eedd5f0 100644
--- a/code/modules/surgery/bodyparts/dismemberment.dm
+++ b/code/modules/surgery/bodyparts/dismemberment.dm
@@ -230,7 +230,7 @@
if(C.hud_used)
var/atom/movable/screen/inventory/hand/R = C.hud_used.hand_slots["[held_index]"]
if(R)
- R.update_icon()
+ R.update_appearance(updates = ALL)
if(C.gloves)
C.dropItemToGround(C.gloves, TRUE)
C.update_inv_gloves() //to remove the bloody hands overlay
@@ -248,7 +248,7 @@
if(C.hud_used)
var/atom/movable/screen/inventory/hand/L = C.hud_used.hand_slots["[held_index]"]
if(L)
- L.update_icon()
+ L.update_appearance(updates = ALL)
if(C.gloves)
C.dropItemToGround(C.gloves, TRUE)
C.update_inv_gloves() //to remove the bloody hands overlay
@@ -333,7 +333,7 @@
if(C.hud_used)
var/atom/movable/screen/inventory/hand/hand = C.hud_used.hand_slots["[held_index]"]
if(hand)
- hand.update_icon()
+ hand.update_appearance(updates = ALL)
C.update_inv_gloves()
if(special) //non conventional limb attachment
diff --git a/code/modules/surgery/bodyparts/parts.dm b/code/modules/surgery/bodyparts/parts.dm
index 199aeffaae44..dd3c9e99a433 100644
--- a/code/modules/surgery/bodyparts/parts.dm
+++ b/code/modules/surgery/bodyparts/parts.dm
@@ -124,7 +124,7 @@
if(owner.hud_used)
var/atom/movable/screen/inventory/hand/L = owner.hud_used.hand_slots["[held_index]"]
if(L)
- L.update_icon()
+ L.update_appearance(updates = ALL)
/obj/item/bodypart/l_arm/monkey
icon = 'icons/mob/animal_parts.dmi'
@@ -219,7 +219,7 @@
if(owner.hud_used)
var/atom/movable/screen/inventory/hand/R = owner.hud_used.hand_slots["[held_index]"]
if(R)
- R.update_icon()
+ R.update_appearance(updates = ALL)
/obj/item/bodypart/r_arm/monkey
icon = 'icons/mob/animal_parts.dmi'
diff --git a/code/modules/surgery/implant_removal.dm b/code/modules/surgery/implant_removal.dm
index 502e94bb786b..402f01ffc6b1 100644
--- a/code/modules/surgery/implant_removal.dm
+++ b/code/modules/surgery/implant_removal.dm
@@ -68,7 +68,7 @@
return TRUE
case.imp.implant(target, user)
case.imp = null
- case.update_icon()
+ case.update_appearance(updates = ALL)
display_results(user, target, span_notice("You implant \the [I] into [target]'s [parse_zone(target_zone)]."),
"[user] implants \the [I] into [target]'s [parse_zone(target_zone)]!",
"[user] inserts something into [target]'s [parse_zone(target_zone)]!")
@@ -92,7 +92,7 @@
if(case && !case.imp)
case.imp = I
I.forceMove(case)
- case.update_icon()
+ case.update_appearance(updates = ALL)
display_results(user, target, span_notice("You place [I] into [case]."),
"[user] places [I] into [case]!",
"[user] places it into [case]!")
diff --git a/code/modules/surgery/organs/appendix.dm b/code/modules/surgery/organs/appendix.dm
index dad5d62f72ca..d12c63c94703 100644
--- a/code/modules/surgery/organs/appendix.dm
+++ b/code/modules/surgery/organs/appendix.dm
@@ -10,7 +10,7 @@
now_fixed = span_info("The pain in your abdomen has subsided.")
var/inflamed
-/obj/item/organ/appendix/update_icon()
+/obj/item/organ/appendix/update_appearance(updates = ALL)
if(inflamed)
icon_state = "appendixinflamed"
name = "inflamed appendix"
@@ -30,7 +30,7 @@
for(var/datum/disease/appendicitis/A in M.diseases)
A.cure()
inflamed = TRUE
- update_icon()
+ update_appearance(updates = ALL)
..()
/obj/item/organ/appendix/Insert(mob/living/carbon/M, special = 0)
@@ -64,7 +64,7 @@
inflamed = FALSE
M.emote("chuckle") //you really think that will stop me?
-/obj/item/organ/appendix/cybernetic/update_icon()
+/obj/item/organ/appendix/cybernetic/update_appearance(updates = ALL)
icon_state = "implant-filter"
name = "cybernetic appendix"
diff --git a/code/modules/surgery/organs/augment_legs.dm b/code/modules/surgery/organs/augment_legs.dm
index 9d48dceb8e6d..04bd05335058 100644
--- a/code/modules/surgery/organs/augment_legs.dm
+++ b/code/modules/surgery/organs/augment_legs.dm
@@ -11,7 +11,7 @@
/obj/item/organ/cyberimp/leg/Initialize()
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
SetSlotFromZone()
/obj/item/organ/cyberimp/leg/emp_act(severity)
@@ -59,7 +59,7 @@
else
CRASH("Invalid zone for [type]")
-/obj/item/organ/cyberimp/leg/update_icon()
+/obj/item/organ/cyberimp/leg/update_appearance(updates = ALL)
if(zone == BODY_ZONE_R_LEG)
transform = null
else // Mirroring the icon
@@ -81,7 +81,7 @@
zone = BODY_ZONE_R_LEG
SetSlotFromZone()
to_chat(user, span_notice("You modify [src] to be installed on the [zone == BODY_ZONE_R_LEG ? "right" : "left"] leg."))
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/organ/cyberimp/leg/emp_act(severity)
. = ..()
diff --git a/code/modules/surgery/organs/augments_arms.dm b/code/modules/surgery/organs/augments_arms.dm
index ecbeaa0f80f2..fedbe3b65b6f 100644
--- a/code/modules/surgery/organs/augments_arms.dm
+++ b/code/modules/surgery/organs/augments_arms.dm
@@ -18,7 +18,7 @@
if(ispath(holder))
holder = new holder(src)
- update_icon()
+ update_appearance(updates = ALL)
SetSlotFromZone()
items_list = contents.Copy()
@@ -31,7 +31,7 @@
else
CRASH("Invalid zone for [type]")
-/obj/item/organ/cyberimp/arm/update_icon()
+/obj/item/organ/cyberimp/arm/update_appearance(updates = ALL)
if(zone == BODY_ZONE_R_ARM)
transform = null
else // Mirroring the icon
@@ -52,7 +52,7 @@
zone = BODY_ZONE_R_ARM
SetSlotFromZone()
to_chat(user, span_notice("You modify [src] to be installed on the [zone == BODY_ZONE_R_ARM ? "right" : "left"] arm."))
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/organ/cyberimp/arm/Remove(mob/living/carbon/M, special = 0)
Retract()
@@ -323,7 +323,7 @@
tool_behaviour = active_tool.tool_behaviour
lefthand_file = active_tool.lefthand_file
righthand_file = active_tool.righthand_file
- linkedarm.owner.update_inv_hands()
+ linkedarm.owner.update_held_items()
plane = 22
/obj/item/toolset_handler/attack_self(mob/user)
diff --git a/code/modules/surgery/organs/augments_chest.dm b/code/modules/surgery/organs/augments_chest.dm
index 9d9eca03c0c8..8b6d5d9d9400 100644
--- a/code/modules/surgery/organs/augments_chest.dm
+++ b/code/modules/surgery/organs/augments_chest.dm
@@ -162,9 +162,9 @@
if(!silent)
to_chat(owner, span_notice("You turn your thrusters set off."))
on = FALSE
- update_icon()
+ update_appearance(updates = ALL)
-/obj/item/organ/cyberimp/chest/thrusters/update_icon()
+/obj/item/organ/cyberimp/chest/thrusters/update_appearance(updates = ALL)
if(on)
icon_state = "imp_jetpack-on"
else
@@ -266,9 +266,9 @@
on = !on
if(!silent)
to_chat(owner, span_notice("You turn your spinal implant [on? "on" : "off"]."))
- update_icon()
+ update_appearance(updates = ALL)
-/obj/item/organ/cyberimp/chest/spinalspeed/update_icon()
+/obj/item/organ/cyberimp/chest/spinalspeed/update_appearance(updates = ALL)
if(on)
icon_state = "imp_spinal-on"
else
diff --git a/code/modules/surgery/organs/autosurgeon.dm b/code/modules/surgery/organs/autosurgeon.dm
index dcbadbc1700e..cb4aabc4d12e 100644
--- a/code/modules/surgery/organs/autosurgeon.dm
+++ b/code/modules/surgery/organs/autosurgeon.dm
@@ -41,7 +41,7 @@
if(user.getorganslot(bastard.slot)) //NEVERMIND WE ARE NOT BALLING
bastard.zone = original_zone //MISSION ABORT
bastard.SetSlotFromZone()
- bastard.update_icon()
+ bastard.update_appearance(updates = ALL)
storedorgan.Insert(user)//insert stored organ into the user
user.visible_message(span_notice("[user] presses a button on [src], and you hear a short mechanical noise."), span_notice("You feel a sharp sting as [src] plunges into your body."))
playsound(get_turf(user), 'sound/weapons/circsawhit.ogg', 50, 1)
@@ -145,7 +145,7 @@
implant.zone = BODY_ZONE_R_ARM
to_chat(user, span_notice("You change the autosurgeon to target the right arm."))
implant.SetSlotFromZone()
- implant.update_icon() //If for whatever reason, the implant is removed from the autosurgeon after it's switched
+ implant.update_appearance(updates = ALL) //If for whatever reason, the implant is removed from the autosurgeon after it's switched
/obj/item/autosurgeon/arm/syndicate/syndie_mantis
uses = 1
@@ -322,7 +322,7 @@
if(user.getorganslot(bastard.slot)) //NEVERMIND WE ARE NOT BALLING
bastard.zone = original_zone //MISSION ABORT
bastard.SetSlotFromZone()
- bastard.update_icon()
+ bastard.update_appearance(updates = ALL)
toimplant.Insert(user)//insert stored organ into the user
user.visible_message(span_notice("[user] presses a button on [src], and you hear a short mechanical noise."), span_notice("You feel a sharp sting as [src] plunges into your body."))
playsound(get_turf(user), 'sound/weapons/circsawhit.ogg', 50, 1)
diff --git a/code/modules/surgery/organs/heart.dm b/code/modules/surgery/organs/heart.dm
index 27cd00138ffa..1fbdf2a018a2 100644
--- a/code/modules/surgery/organs/heart.dm
+++ b/code/modules/surgery/organs/heart.dm
@@ -28,9 +28,9 @@
/obj/item/organ/heart/Initialize()
. = ..()
icon_base = icon_state
- update_icon()
+ update_appearance(updates = ALL)
-/obj/item/organ/heart/update_icon()
+/obj/item/organ/heart/update_appearance(updates = ALL)
if(beating)
icon_state = "[icon_base]-on"
else
@@ -55,12 +55,12 @@
/obj/item/organ/heart/proc/Stop()
beating = 0
- update_icon()
+ update_appearance(updates = ALL)
return TRUE
/obj/item/organ/heart/proc/Restart()
beating = 1
- update_icon()
+ update_appearance(updates = ALL)
return TRUE
/obj/item/organ/heart/prepare_eat()
diff --git a/code/modules/surgery/organs/tongue.dm b/code/modules/surgery/organs/tongue.dm
index 91e72a6a0c5e..a75b564dadb2 100644
--- a/code/modules/surgery/organs/tongue.dm
+++ b/code/modules/surgery/organs/tongue.dm
@@ -39,7 +39,7 @@
. = ..()
languages_possible = languages_possible_base
-/obj/item/organ/tongue/update_icon()
+/obj/item/organ/tongue/update_appearance(updates = ALL)
. = ..()
if(honked) // This tongue has a bike horn inside of it. Let's draw it
add_overlay("honked")
@@ -75,7 +75,7 @@
/obj/item/organ/tongue/Initialize() // this only exists to make sure the spawned tongue has a horn inside of it visually
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/organ/tongue/examine(mob/user)
. = ..()
diff --git a/code/modules/vehicles/motorized_wheelchair.dm b/code/modules/vehicles/motorized_wheelchair.dm
index ee690b5b5806..7c2c86a77aa6 100644
--- a/code/modules/vehicles/motorized_wheelchair.dm
+++ b/code/modules/vehicles/motorized_wheelchair.dm
@@ -33,7 +33,7 @@
var/mob/living/L = A
L.update_mobility()
if(power_cell)
- power_cell.update_icon()
+ power_cell.update_appearance(updates = ALL)
refresh_parts()
/obj/vehicle/ridden/wheelchair/motorized/obj_destruction(damage_flag)
@@ -75,7 +75,7 @@
/obj/vehicle/ridden/wheelchair/motorized/attack_hand(mob/living/user)
if(power_cell && panel_open)
- power_cell.update_icon()
+ power_cell.update_appearance(updates = ALL)
user.put_in_hands(power_cell)
to_chat(user, span_notice("You remove the [power_cell] from [src]."))
power_cell = null
diff --git a/code/modules/vehicles/pimpin_ride.dm b/code/modules/vehicles/pimpin_ride.dm
index e174ffc33cb4..f212c2b3cf34 100644
--- a/code/modules/vehicles/pimpin_ride.dm
+++ b/code/modules/vehicles/pimpin_ride.dm
@@ -9,7 +9,7 @@
/obj/vehicle/ridden/janicart/Initialize(mapload)
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
var/datum/component/riding/D = LoadComponent(/datum/component/riding)
D.set_riding_offsets(RIDING_OFFSET_ALL, list(TEXT_NORTH = list(0, 4), TEXT_SOUTH = list(0, 7), TEXT_EAST = list(-12, 7), TEXT_WEST = list( 12, 7)))
@@ -42,7 +42,7 @@
return
to_chat(user, span_notice("You hook the trashbag onto [src]."))
mybag = I
- update_icon()
+ update_appearance(updates = ALL)
else if(istype(I, /obj/item/janiupgrade))
if(floorbuffer)
to_chat(user, span_warning("[src] already has a floor buffer!"))
@@ -51,11 +51,11 @@
qdel(I)
to_chat(user, span_notice("You upgrade [src] with the floor buffer."))
AddElement(/datum/element/cleaning)
- update_icon()
+ update_appearance(updates = ALL)
else
return ..()
-/obj/vehicle/ridden/janicart/update_icon()
+/obj/vehicle/ridden/janicart/update_appearance(updates = ALL)
cut_overlays()
if(mybag)
add_overlay("cart_garbage")
@@ -70,7 +70,7 @@
mybag.forceMove(get_turf(user))
user.put_in_hands(mybag)
mybag = null
- update_icon()
+ update_appearance(updates = ALL)
/obj/vehicle/ridden/janicart/upgraded
floorbuffer = TRUE
diff --git a/code/modules/vending/_vending.dm b/code/modules/vending/_vending.dm
index 2bb93b08e363..db759839aa13 100644
--- a/code/modules/vending/_vending.dm
+++ b/code/modules/vending/_vending.dm
@@ -265,7 +265,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
else
..()
-/obj/machinery/vending/update_icon()
+/obj/machinery/vending/update_appearance(updates = ALL)
if(stat & BROKEN)
icon_state = "[initial(icon_state)]-broken"
else
@@ -973,7 +973,7 @@ GLOBAL_LIST_EMPTY(vending_products)
else
stat |= NOPOWER
- update_icon()
+ update_appearance(updates = ALL)
//Somebody cut an important wire and now we're following a new definition of "pitch."
/**
diff --git a/icons/obj/doors/doorfire.dmi b/icons/obj/doors/doorfire.dmi
index 3b9f05cfa32116b59b224b7e8f243728647e922c..34c19dbb56ed349bf1f614339ed8c61450e2b907 100644
GIT binary patch
literal 10590
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
EKesqCkN^Mx
literal 7717
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
diff --git a/icons/obj/mining.dmi b/icons/obj/mining.dmi
index f5c8325c1721b4f8f32c0fda5b66904db75f39b6..7f817d663dd5cd0884671fbb78908d68095357cd 100644
GIT binary patch
delta 28541
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