@@ -89,10 +90,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 258ef6579213..6d0a49ade7e8 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,8 +38,8 @@
. = ..()
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()
if(H)
diff --git a/code/game/objects/structures/holosign.dm b/code/game/objects/structures/holosign.dm
index 57844bb77b00..81e84d533f20 100644
--- a/code/game/objects/structures/holosign.dm
+++ b/code/game/objects/structures/holosign.dm
@@ -215,14 +215,15 @@
/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 37bb885f2d59..7676d452e812 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,8 @@
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 e894818d15bc..4ccf516aa9a0 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,27 @@
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 +161,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 +171,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..cc293407bacf 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,8 @@
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 3dbc37c7fb3b..87ec0efe70f1 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,11 @@
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 300cc049d6c4..f99f7ac55089 100644
--- a/code/game/objects/structures/mop_bucket.dm
+++ b/code/game/objects/structures/mop_bucket.dm
@@ -19,27 +19,28 @@
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 f02d14fe7fe4..bbf5610e1a2e 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(mapload)
+ 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,8 @@ 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 +231,8 @@ 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 +260,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 +271,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 +327,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 +362,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..6a47c8bb1423 100644
--- a/code/game/objects/structures/safe.dm
+++ b/code/game/objects/structures/safe.dm
@@ -56,7 +56,8 @@ 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 +148,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 5f691e267775..24aa76832ff0 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/signs/signs_interactive.dm b/code/game/objects/structures/signs/signs_interactive.dm
index 589f1e251033..2d7b63f40534 100644
--- a/code/game/objects/structures/signs/signs_interactive.dm
+++ b/code/game/objects/structures/signs/signs_interactive.dm
@@ -18,20 +18,20 @@ GLOBAL_LIST_EMPTY(map_delamination_counters)
/obj/structure/sign/delamination_counter/proc/update_count(new_count)
since_last = min(new_count, 99)
- update_icon()
+ update_appearance(UPDATE_ICON)
-/obj/structure/sign/delamination_counter/update_icon()
- cut_overlays()
+/obj/structure/sign/delamination_counter/update_overlays()
+ . = ..()
var/ones = since_last % 10
var/mutable_appearance/ones_overlay = mutable_appearance('icons/obj/decals.dmi', "days_[ones]")
ones_overlay.pixel_x = 4
- add_overlay(ones_overlay)
+ . += ones_overlay
var/tens = (since_last / 10) % 10
var/mutable_appearance/tens_overlay = mutable_appearance('icons/obj/decals.dmi', "days_[tens]")
tens_overlay.pixel_x = -5
- add_overlay(tens_overlay)
+ . += tens_overlay
/obj/structure/sign/delamination_counter/examine(mob/user)
. = ..()
diff --git a/code/game/objects/structures/stairs.dm b/code/game/objects/structures/stairs.dm
index 40e2517985d8..3b25ba231e01 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,8 @@
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 e8e0eee656b0..7fa74a74bb3e 100644
--- a/code/game/objects/structures/tables_racks.dm
+++ b/code/game/objects/structures/tables_racks.dm
@@ -76,7 +76,8 @@
/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 d2b91fa512e7..9beef0f2ea83 100644
--- a/code/game/objects/structures/tank_dispenser.dm
+++ b/code/game/objects/structures/tank_dispenser.dm
@@ -23,9 +23,10 @@
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 +70,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 +110,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..ef6a0d40c5e3 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,8 @@
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 99e985c417c3..4aa98fb62bfa 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,8 @@
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 +89,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 +177,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 d1c3f214b08d..911dced2f7d7 100644
--- a/code/game/objects/structures/watercloset.dm
+++ b/code/game/objects/structures/watercloset.dm
@@ -14,7 +14,7 @@
/obj/structure/toilet/Initialize(mapload)
. = ..()
open = round(rand(0, 1))
- update_icon()
+ update_appearance(updates = ALL)
/obj/structure/toilet/attack_hand(mob/living/user)
@@ -67,10 +67,11 @@
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 +82,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 +393,10 @@
/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 f96d2a764bc1..5d4170c98cb9 100644
--- a/code/game/objects/structures/windoor_assembly.dm
+++ b/code/game/objects/structures/windoor_assembly.dm
@@ -47,7 +47,8 @@
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 +310,7 @@
return ..()
//Update to reflect changes(if applicable)
- update_icon()
+ update_appearance(updates = ALL)
@@ -339,7 +340,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 +362,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 a1efbe1afd29..27df59aaffdd 100644
--- a/code/game/objects/structures/window.dm
+++ b/code/game/objects/structures/window.dm
@@ -326,12 +326,13 @@
//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
@@ -807,7 +808,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)
@@ -873,7 +874,7 @@
/obj/structure/window/paperframe/Initialize(mapload)
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
/obj/structure/window/paperframe/examine(mob/user)
. = ..()
@@ -899,19 +900,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())
@@ -926,10 +927,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)
@@ -950,9 +951,10 @@
/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 8a361f3306a9..bf7359fe14c4 100644
--- a/code/game/turfs/open.dm
+++ b/code/game/turfs/open.dm
@@ -317,7 +317,7 @@
/turf/open/floor/grass/fairy/Initialize(mapload)
. = ..()
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 64fe6c622ee7..ea45a43bb7cb 100644
--- a/code/game/turfs/simulated/floor.dm
+++ b/code/game/turfs/simulated/floor.dm
@@ -116,8 +116,8 @@
return
/turf/open/floor/update_icon()
+ . = ..()
update_visuals()
- return 1
/turf/open/floor/attack_paw(mob/user)
return attack_hand(user)
@@ -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 3ae163c2e448..d8f74784169e 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,10 @@
/turf/open/floor/carpet/Initialize(mapload)
. = ..()
- 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 +403,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 75b94e76ea9c..096f44898e63 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(mapload)
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
if(!length(lighttile_designs))
populate_lighttile_designs()
@@ -43,8 +43,8 @@
light_range = 0
update_light()
-/turf/open/floor/light/update_icon()
- ..()
+/turf/open/floor/light/update_appearance(updates = ALL)
+ . = ..()
if(on)
switch(state)
if(0)
@@ -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 d575fdfb7347..9ce69e08083b 100644
--- a/code/game/turfs/simulated/floor/mineral_floor.dm
+++ b/code/game/turfs/simulated/floor/mineral_floor.dm
@@ -23,7 +23,8 @@
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 69254b140a13..e1346b073418 100644
--- a/code/game/turfs/simulated/floor/misc_floor.dm
+++ b/code/game/turfs/simulated/floor/misc_floor.dm
@@ -20,14 +20,15 @@
/turf/open/floor/circuit/Initialize(mapload)
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..f4fbbe00c59c 100644
--- a/code/game/turfs/simulated/floor/plasteel_floor.dm
+++ b/code/game/turfs/simulated/floor/plasteel_floor.dm
@@ -13,7 +13,8 @@
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 a4907cbc81de..9aa6b2f19443 100644
--- a/code/game/turfs/simulated/floor/plating.dm
+++ b/code/game/turfs/simulated/floor/plating.dm
@@ -44,7 +44,8 @@
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 e092293e435a..7ada3ecffa3b 100644
--- a/code/game/turfs/simulated/minerals.dm
+++ b/code/game/turfs/simulated/minerals.dm
@@ -93,9 +93,10 @@
if(hardness <= 0)
gets_drilled(user,triggered_by_explosion)
else
- update_icon()
+ update_appearance(updates = ALL)
-/turf/closed/mineral/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 5b87b9094dfd..eea5255b0c31 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,13 @@
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/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 fbd722e33640..e619e898b3fc 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,8 @@
/turf/open/space/transit/east
dir = EAST
-/turf/open/space/transit/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 edaf2ed31fe9..9fc7fae6473e 100644
--- a/code/modules/NTNet/relays.dm
+++ b/code/modules/NTNet/relays.dm
@@ -32,7 +32,8 @@
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 +50,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 +58,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 +90,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(mapload)
diff --git a/code/modules/VR/vr_sleeper.dm b/code/modules/VR/vr_sleeper.dm
index 154cbd61fd30..98cc19615109 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,8 @@
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 57f6fbf87d68..3e86d2e55447 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 1e05e75f80c2..6357aa54e44d 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,ITEM_SLOT_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..98c35ef20fd8 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()
/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()
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()
check_processing()
diff --git a/code/modules/antagonists/abductor/equipment/abduction_gear.dm b/code/modules/antagonists/abductor/equipment/abduction_gear.dm
index 567636e03180..db71a730d399 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,10 @@ 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 74fd4e93cdff..186fd79befc2 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(mapload)
+ 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..3161e519810b 100644
--- a/code/modules/antagonists/abductor/machinery/experiment.dm
+++ b/code/modules/antagonists/abductor/machinery/experiment.dm
@@ -183,7 +183,8 @@
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 fb81ebac4274..f1049e654c55 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 73ffff293882..cd744c7af998 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 eb3d55cdad08..63e3b613e61b 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 5482732d13b7..372486ad86d2 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,8 @@
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 +104,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 +128,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 +186,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 +290,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 +302,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,8 +345,8 @@
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"
name = "fragile blob"
diff --git a/code/modules/antagonists/blob/structures/core.dm b/code/modules/antagonists/blob/structures/core.dm
index 1cecdc9f8e16..cc255fe9e6df 100644
--- a/code/modules/antagonists/blob/structures/core.dm
+++ b/code/modules/antagonists/blob/structures/core.dm
@@ -15,17 +15,18 @@
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)
return ..()
/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 f9c3b48eb84b..94e96ad43502 100644
--- a/code/modules/antagonists/blob/structures/node.dm
+++ b/code/modules/antagonists/blob/structures/node.dm
@@ -18,7 +18,8 @@
/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..1c80da669c48 100644
--- a/code/modules/antagonists/blob/structures/shield.dm
+++ b/code/modules/antagonists/blob/structures/shield.dm
@@ -19,8 +19,8 @@
/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"
name = "weakened [initial(name)]"
diff --git a/code/modules/antagonists/bloodsuckers/bloodsuckers.dm b/code/modules/antagonists/bloodsuckers/bloodsuckers.dm
index fcd04fefdcd1..03de29db0778 100644
--- a/code/modules/antagonists/bloodsuckers/bloodsuckers.dm
+++ b/code/modules/antagonists/bloodsuckers/bloodsuckers.dm
@@ -157,16 +157,13 @@
var/datum/hud/bloodsucker_hud = owner.current.hud_used
- blood_display = new /atom/movable/screen/bloodsucker/blood_counter()
- blood_display.hud = bloodsucker_hud
+ blood_display = new /atom/movable/screen/bloodsucker/blood_counter(bloodsucker_hud)
bloodsucker_hud.infodisplay += blood_display
- vamprank_display = new /atom/movable/screen/bloodsucker/rank_counter()
- vamprank_display.hud = bloodsucker_hud
+ vamprank_display = new /atom/movable/screen/bloodsucker/rank_counter(bloodsucker_hud)
bloodsucker_hud.infodisplay += vamprank_display
- sunlight_display = new /atom/movable/screen/bloodsucker/sunlight_counter()
- sunlight_display.hud = bloodsucker_hud
+ sunlight_display = new /atom/movable/screen/bloodsucker/sunlight_counter(bloodsucker_hud)
bloodsucker_hud.infodisplay += sunlight_display
INVOKE_ASYNC(bloodsucker_hud, TYPE_PROC_REF(/datum/hud/, show_hud), bloodsucker_hud.hud_version)
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 fe9b83f2c7d6..dc96aa1b3ed3 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 c639c21c7b33..28c933a28272 100644
--- a/code/modules/antagonists/bloodsuckers/structures/bloodsucker_crypt.dm
+++ b/code/modules/antagonists/bloodsuckers/structures/bloodsucker_crypt.dm
@@ -316,7 +316,7 @@
return
icon_state = initial(icon_state) + (awoken ? "_idle" : "_awaken")
- update_icon()
+ update_appearance(updates = ALL)
var/rankspent
switch(bloodsuckerdatum.clanprogress)
if(0)
@@ -395,7 +395,8 @@
. = ..()
anchored = FALSE
-/obj/structure/bloodsucker/moldingstone/update_icon()
+/obj/structure/bloodsucker/moldingstone/update_appearance(updates = ALL)
+ . = ..()
cut_overlays()
switch(metal)
if(1 to 5)
@@ -427,7 +428,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)
@@ -440,7 +441,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!")
@@ -464,7 +465,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
@@ -710,7 +711,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
@@ -746,7 +747,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)
@@ -807,10 +808,11 @@
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]")
@@ -849,7 +851,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
@@ -1149,7 +1151,7 @@
if(bigmeat && meatlost == 4)
bigmeat--
meatlost -= 4
- update_icon()
+ update_appearance(updates = ALL)
meat_amount = bigmeat + intermeat + mediummeat + smallmeat
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -1183,7 +1185,8 @@
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 ..()
@@ -1208,7 +1211,7 @@
else
set_light(0)
STOP_PROCESSING(SSobj, src)
- update_icon()
+ update_appearance(updates = ALL)
/obj/structure/bloodsucker/candelabrum/process()
if(!lit)
@@ -1284,7 +1287,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.
@@ -1296,7 +1299,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/changeling.dm b/code/modules/antagonists/changeling/changeling.dm
index 50745e796481..6076108a95f2 100644
--- a/code/modules/antagonists/changeling/changeling.dm
+++ b/code/modules/antagonists/changeling/changeling.dm
@@ -407,12 +407,10 @@
if(mob_to_tweak.hud_used)
var/datum/hud/hud_used = mob_to_tweak.hud_used
- lingchemdisplay = new /atom/movable/screen/ling/chems()
- lingchemdisplay.hud = hud_used
+ lingchemdisplay = new /atom/movable/screen/ling/chems(hud_used)
hud_used.infodisplay += lingchemdisplay
- lingstingdisplay = new /atom/movable/screen/ling/sting()
- lingstingdisplay.hud = hud_used
+ lingstingdisplay = new /atom/movable/screen/ling/sting(hud_used)
hud_used.infodisplay += lingstingdisplay
hud_used.show_hud(hud_used.hud_version)
diff --git a/code/modules/antagonists/changeling/powers/mutations.dm b/code/modules/antagonists/changeling/powers/mutations.dm
index 1ac2f9c46ec4..7d6a4caebdc0 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 400a1f0cba1a..1ef4914ac900 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(mapload)
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
/obj/effect/clockwork/sigil/transmission/ex_act(severity)
if(severity == 3)
@@ -242,7 +242,8 @@
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 35d628814b22..ba3a34a5d7ea 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 74c0b5bd29c7..67c98ef4917a 100644
--- a/code/modules/antagonists/cult/cult_items.dm
+++ b/code/modules/antagonists/cult/cult_items.dm
@@ -384,7 +384,8 @@
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 +691,8 @@ 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 d1d13d45a883..a5effdd25bea 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(severity)
switch(severity)
@@ -470,7 +471,8 @@
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 +502,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 5a93e1632aa0..12ac1dda3037 100644
--- a/code/modules/antagonists/eldritch_cult/eldritch_magic.dm
+++ b/code/modules/antagonists/eldritch_cult/eldritch_magic.dm
@@ -759,7 +759,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 6477ecc6b202..735f9be9bf0d 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,8 @@
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 +409,7 @@
timing = FALSE
detonation_timer = null
countdown.stop()
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/nuclearbomb/proc/set_active()
if(safety)
@@ -429,7 +430,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 +457,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 +564,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 c374a5232ae8..d1090429b0ec 100644
--- a/code/modules/antagonists/nukeop/nukeop.dm
+++ b/code/modules/antagonists/nukeop/nukeop.dm
@@ -178,7 +178,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/revolution/revolution.dm b/code/modules/antagonists/revolution/revolution.dm
index 709cb0f00b29..950e1db0449a 100644
--- a/code/modules/antagonists/revolution/revolution.dm
+++ b/code/modules/antagonists/revolution/revolution.dm
@@ -140,7 +140,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 5493f5eefb60..25a7fa32bebc 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 abea49d42908..4fd4331c3b8c 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..669f4b003ca3 100644
--- a/code/modules/antagonists/zombie/abilities/spit.dm
+++ b/code/modules/antagonists/zombie/abilities/spit.dm
@@ -12,7 +12,8 @@
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 e72de7fe9e5e..32ffa561a860 100644
--- a/code/modules/assembly/assembly.dm
+++ b/code/modules/assembly/assembly.dm
@@ -11,7 +11,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
@@ -82,7 +82,7 @@
/obj/item/assembly/proc/toggle_secure()
secured = !secured
- update_icon()
+ update_appearance(updates = ALL)
return secured
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 1fae39be6571..246513ed0659 100644
--- a/code/modules/assembly/flash.dm
+++ b/code/modules/assembly/flash.dm
@@ -45,7 +45,8 @@
attack(user,user)
return FIRELOSS
-/obj/item/assembly/flash/update_icon(flash = FALSE)
+/obj/item/assembly/flash/update_icon(updates = ALL, flash = FALSE)
+ . = ..()
cut_overlays()
attached_overlays = list()
if(burnt_out)
@@ -55,9 +56,9 @@
if(flash)
add_overlay(flashing_overlay)
attached_overlays += flashing_overlay
- addtimer(CALLBACK(src, TYPE_PROC_REF(/atom/, 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))
@@ -68,7 +69,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!"))
@@ -120,7 +121,7 @@
addtimer(CALLBACK(src, PROC_REF(flash_end)), FLASH_LIGHT_DURATION, TIMER_OVERRIDE|TIMER_UNIQUE)
times_used++
flash_recharge()
- update_icon(TRUE)
+ update_appearance(UPDATE_ICON, TRUE)
if(user && !clown_check(user))
return FALSE
return TRUE
@@ -173,7 +174,7 @@
var/mob/living/silicon/robot/R = M
if(!R.sensor_protection)
log_combat(user, R, "flashed", src)
- update_icon(1)
+ update_appearance(UPDATE_ICON, TRUE)
R.Paralyze(rand(80,120))
R.set_confusion_if_lower(5 SECONDS * CONFUSION_STACK_MAX_MULTIPLIER)
R.flash_act(affect_silicon = 1)
@@ -294,7 +295,7 @@
addtimer(CALLBACK(src, PROC_REF(flash_end)), FLASH_LIGHT_DURATION, TIMER_OVERRIDE|TIMER_UNIQUE)
addtimer(CALLBACK(src, PROC_REF(cooldown)), flashcd)
playsound(src, 'sound/weapons/flash.ogg', 100, TRUE)
- update_icon(1)
+ update_appearance(UPDATE_ICON, TRUE)
return TRUE
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 3c983852d139..91fc9e58d28e 100644
--- a/code/modules/assembly/holder.dm
+++ b/code/modules/assembly/holder.dm
@@ -23,7 +23,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)
@@ -40,7 +40,8 @@
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")
@@ -80,8 +81,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 82c6fd03c3e5..e55adafb17f2 100644
--- a/code/modules/assembly/infrared.dm
+++ b/code/modules/assembly/infrared.dm
@@ -36,7 +36,7 @@
return FALSE //Cooldown check
on = !on
refreshBeam()
- update_icon()
+ update_appearance(updates = ALL)
return TRUE
/obj/item/assembly/infra/toggle_secure()
@@ -47,22 +47,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()
. = ..()
@@ -204,7 +205,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..328c0a063213 100644
--- a/code/modules/assembly/mousetrap.dm
+++ b/code/modules/assembly/mousetrap.dm
@@ -22,16 +22,17 @@
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 +43,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 +70,7 @@
M.splat()
playsound(src, 'sound/effects/snap.ogg', 50, TRUE)
armed = FALSE
- update_icon()
+ update_appearance(updates = ALL)
pulse(FALSE)
@@ -87,7 +88,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 ae7b26bef1da..7749d7249037 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,8 @@
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 +103,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 +141,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 d549dba6d50a..3250e98958e2 100644
--- a/code/modules/assembly/signaler.dm
+++ b/code/modules/assembly/signaler.dm
@@ -44,9 +44,10 @@
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 +105,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 +117,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 0861f88d4eb9..deebf77724aa 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,15 @@
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 +116,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..d6b4e01d3f98 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,8 @@
"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 +725,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 +735,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 +760,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 +781,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 +799,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 +829,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..d83999b115bf 100644
--- a/code/modules/atmospherics/machinery/atmosmachinery.dm
+++ b/code/modules/atmospherics/machinery/atmosmachinery.dm
@@ -117,13 +117,14 @@ 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 +176,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 861f457062fd..bdb59f2ba587 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 e4510f592166..ea72556b0683 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)
AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_VERBS )
/obj/machinery/atmospherics/components/binary/circulator/Destroy()
@@ -79,7 +79,8 @@
..()
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)
@@ -185,7 +186,7 @@
node2.addMember(src)
SSair.add_to_rebuild_queue(src)
- update_icon()
+ update_appearance(updates = ALL)
return TRUE
@@ -254,7 +255,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)
@@ -278,5 +279,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 edb0f39239ab..4adad2671650 100644
--- a/code/modules/atmospherics/machinery/components/components_base.dm
+++ b/code/modules/atmospherics/machinery/components/components_base.dm
@@ -24,7 +24,8 @@
/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..3278ea82ca0a 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,8 @@
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 +153,8 @@
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 ec56fa1788a7..33c26c05de2d 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..39e99f35ed7b 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,8 @@
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 +195,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..ae04f51ecc38 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,11 @@
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 +174,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 19a3c017abca..78ef9ed35219 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,8 @@
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 +182,7 @@
return
if(!is_operational())
on = FALSE
- update_icon()
+ update_appearance(updates = ALL)
return
if(!occupant)
return
@@ -198,7 +199,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
@@ -223,7 +224,7 @@
treating_wounds = has_cryo_wound
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 +271,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 +311,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 +372,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 +466,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 +512,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 +523,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..49b9a11a04ad 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,8 @@
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 62c5ef10b2ad..5e1b1524ec30 100644
--- a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm
+++ b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm
@@ -39,7 +39,8 @@
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 +69,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 +184,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 672fa9af62c9..e8a2594ff208 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 b6a6290539d9..83fc480c432e 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,8 @@
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..075d37dc9ee8 100644
--- a/code/modules/atmospherics/machinery/pipes/heat_exchange/junction.dm
+++ b/code/modules/atmospherics/machinery/pipes/heat_exchange/junction.dm
@@ -30,7 +30,8 @@
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..4fe3d4832434 100644
--- a/code/modules/atmospherics/machinery/pipes/heat_exchange/manifold.dm
+++ b/code/modules/atmospherics/machinery/pipes/heat_exchange/manifold.dm
@@ -26,7 +26,8 @@
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..f451b690827d 100644
--- a/code/modules/atmospherics/machinery/pipes/heat_exchange/manifold4w.dm
+++ b/code/modules/atmospherics/machinery/pipes/heat_exchange/manifold4w.dm
@@ -24,7 +24,8 @@
/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..4e25131645e0 100644
--- a/code/modules/atmospherics/machinery/pipes/heat_exchange/simple.dm
+++ b/code/modules/atmospherics/machinery/pipes/heat_exchange/simple.dm
@@ -24,7 +24,8 @@
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 40eeb619ba4f..cca7d01a40a4 100644
--- a/code/modules/atmospherics/machinery/pipes/layermanifold.dm
+++ b/code/modules/atmospherics/machinery/pipes/layermanifold.dm
@@ -42,7 +42,8 @@
/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 +100,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 +129,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 e051cf04f92f..cd2935e4b593 100644
--- a/code/modules/atmospherics/machinery/pipes/manifold.dm
+++ b/code/modules/atmospherics/machinery/pipes/manifold.dm
@@ -22,8 +22,8 @@
var/mutable_appearance/center
-/* We use New() instead of Initialize(mapload) because these values are used in update_icon()
- * in the mapping subsystem init before Initialize(mapload) is called in the atoms subsystem init.
+/* 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.
*/
/obj/machinery/atmospherics/pipe/manifold/New()
@@ -35,7 +35,8 @@
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..09b3d681ce69 100644
--- a/code/modules/atmospherics/machinery/pipes/manifold4w.dm
+++ b/code/modules/atmospherics/machinery/pipes/manifold4w.dm
@@ -29,7 +29,8 @@
/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..fad19101a2ab 100644
--- a/code/modules/atmospherics/machinery/pipes/simple.dm
+++ b/code/modules/atmospherics/machinery/pipes/simple.dm
@@ -32,7 +32,8 @@
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 632d2a6ed27c..58fdf053b8eb 100644
--- a/code/modules/atmospherics/machinery/portable/canister.dm
+++ b/code/modules/atmospherics/machinery/portable/canister.dm
@@ -236,7 +236,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"
@@ -274,7 +274,7 @@
/obj/machinery/portable_atmospherics/canister/Initialize(mapload)
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/portable_atmospherics/canister/Destroy()
qdel(pump)
@@ -308,7 +308,8 @@
#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)
@@ -476,7 +477,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)
@@ -501,7 +502,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
@@ -647,7 +648,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 c5558ef62a09..9f1de8d484ee 100644
--- a/code/modules/atmospherics/machinery/portable/pump.dm
+++ b/code/modules/atmospherics/machinery/portable/pump.dm
@@ -29,7 +29,8 @@
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 +68,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 +76,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 +154,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 6d9e143dbfcc..923da8360818 100644
--- a/code/modules/atmospherics/machinery/portable/scrubber.dm
+++ b/code/modules/atmospherics/machinery/portable/scrubber.dm
@@ -36,7 +36,8 @@
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 +80,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 +114,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 +132,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 +150,14 @@
/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 +178,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 c183a67a633d..9a397eda7578 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(mapload)
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,8 @@ 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 +81,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 +101,8 @@ 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 +131,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 +181,12 @@ GLOBAL_DATUM(the_gateway, /obj/machinery/gateway/centerstation)
/obj/machinery/gateway/centeraway/Initialize(mapload)
. = ..()
- 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 +201,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 +253,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 b6e9e8ca6ba2..4cd2f39cf900 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..88af90f667bd 100644
--- a/code/modules/buildmode/buttons.dm
+++ b/code/modules/buildmode/buttons.dm
@@ -24,14 +24,15 @@
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()
- if(bd && bd.mode)
+/atom/movable/screen/buildmode/mode/update_icon_state()
+ if(bd?.mode)
icon_state = bd.mode.get_button_iconstate()
else
icon_state = initial(icon_state)
+ return ..()
/atom/movable/screen/buildmode/help
icon_state = "buildhelp"
@@ -47,13 +48,13 @@
screen_loc = "NORTH,WEST+2"
name = "Change Dir"
-/atom/movable/screen/buildmode/bdir/update_icon()
+/atom/movable/screen/buildmode/bdir/update_icon_state()
dir = bd.build_dir
- return
+ 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 1059bb18e716..ed8ba3bad062 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(mapload)
. = ..()
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 40bf5def556a..1941fe5821f6 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 c9d22a586f26..4a712e51d4ac 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 7ae9c3426c5e..f47f42f54c75 100644
--- a/code/modules/cargo/gondolapod.dm
+++ b/code/modules/cargo/gondolapod.dm
@@ -29,11 +29,9 @@
name = linked_pod.name
. = ..()
-/mob/living/simple_animal/pet/gondola/gondolapod/update_icon()
- if(opened)
- icon_state = "gondolapod_open"
- else
- icon_state = "gondolapod"
+/mob/living/simple_animal/pet/gondola/gondolapod/update_icon_state()
+ icon_state = "gondolapod[opened ? "_open" : ""]"
+ return ..()
/mob/living/simple_animal/pet/gondola/gondolapod/verb/deliver()
set name = "Release Contents"
@@ -60,12 +58,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 ca7883ffb2bf..6a7537d79928 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, owner, 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
diff --git a/code/modules/cargo/supplypod.dm b/code/modules/cargo/supplypod.dm
index f7c55fc15716..c491d07c682a 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,19 +123,13 @@
icon_state = GLOB.podstyles[style][POD_BASE]
pixel_x = initial(pixel_x)
transform = matrix()
- update_icon()
-
-/obj/structure/closet/supplypod/update_icon()
- var/list/new_overlays = update_overlays()
- if(managed_overlays)
- cut_overlay(managed_overlays)
- managed_overlays = null
- if(length(new_overlays))
- managed_overlays = new_overlays
- add_overlay(new_overlays)
-
-/obj/structure/closet/supplypod/proc/update_overlays()
- . = list()
+ update_appearance(updates = ALL)
+
+/obj/structure/closet/supplypod/closet_update_overlays(list/new_overlays)
+ return
+
+/obj/structure/closet/supplypod/update_overlays()
+ . = ..()
if(style == STYLE_INVISIBLE)
return
@@ -420,17 +412,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 +435,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 +444,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 +591,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 a8464a573325..2eeed5cb818e 100644
--- a/code/modules/cargo/supplypod_beacon.dm
+++ b/code/modules/cargo/supplypod_beacon.dm
@@ -29,9 +29,10 @@
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..ed8356c3a249 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.
@@ -90,7 +90,7 @@
if (!is_donator(client))
return
- ghost.update_icon(value)
+ ghost.update_appearance(UPDATE_ICON, value)
/datum/preference/choiced/ghost_form/compile_constant_data()
var/list/data = ..()
diff --git a/code/modules/clothing/chameleon.dm b/code/modules/clothing/chameleon.dm
index 42490f1d6549..0e5d21af2dac 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 98ea902107de..d62ec497efc7 100644
--- a/code/modules/clothing/ears/_ears.dm
+++ b/code/modules/clothing/ears/_ears.dm
@@ -35,15 +35,16 @@
/obj/item/clothing/ears/headphones/Initialize(mapload)
. = ..()
- 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/_glasses.dm b/code/modules/clothing/glasses/_glasses.dm
index 5cf0c4407f9f..f99d6eaf9dcf 100644
--- a/code/modules/clothing/glasses/_glasses.dm
+++ b/code/modules/clothing/glasses/_glasses.dm
@@ -338,11 +338,12 @@
/obj/item/clothing/glasses/blindfold/white/equipped(mob/living/carbon/human/user, slot)
if(ishuman(user) && slot == ITEM_SLOT_EYES)
- update_icon(user)
+ update_appearance(UPDATE_ICON, user)
user.update_inv_glasses() //Color might have been changed by update_icon.
..()
-/obj/item/clothing/glasses/blindfold/white/update_icon(mob/living/carbon/human/user)
+/obj/item/clothing/glasses/blindfold/white/update_appearance(updates = ALL, mob/living/carbon/human/user)
+ . = ..()
if(ishuman(user) && !colored_before)
add_atom_colour("#[user.eye_color]", FIXED_COLOUR_PRIORITY)
colored_before = TRUE
diff --git a/code/modules/clothing/glasses/engine_goggles.dm b/code/modules/clothing/glasses/engine_goggles.dm
index bd0d1dba3c7e..cd647cea5805 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(mapload)
. = ..()
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,8 @@
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 +126,7 @@
if(user.get_item_by_slot(ITEM_SLOT_EYES) == 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/collectable.dm b/code/modules/clothing/head/collectable.dm
index 48297c5499e0..0179d0fb6b95 100644
--- a/code/modules/clothing/head/collectable.dm
+++ b/code/modules/clothing/head/collectable.dm
@@ -105,11 +105,12 @@
/obj/item/clothing/head/collectable/kitty/equipped(mob/living/carbon/human/user, slot)
if(ishuman(user) && slot == ITEM_SLOT_HEAD)
- update_icon(user)
+ update_appearance(UPDATE_ICON, user)
user.update_inv_head() //Color might have been changed by update_icon.
..()
-/obj/item/clothing/head/collectable/kitty/update_icon(mob/living/carbon/human/user)
+/obj/item/clothing/head/collectable/kitty/update_appearance(updates = ALL, mob/living/carbon/human/user)
+ . = ..()
if(ishuman(user))
add_atom_colour("#[user.hair_color]", FIXED_COLOUR_PRIORITY)
diff --git a/code/modules/clothing/head/hardhat.dm b/code/modules/clothing/head/hardhat.dm
index 09dce2c10e8e..a7b4b69ee2f1 100644
--- a/code/modules/clothing/head/hardhat.dm
+++ b/code/modules/clothing/head/hardhat.dm
@@ -31,9 +31,10 @@
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 +129,7 @@
/obj/item/clothing/head/hardhat/weldhat/Initialize(mapload)
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/clothing/head/hardhat/weldhat/attack_self(mob/living/user)
toggle_helmet_light(user)
@@ -147,7 +148,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 +157,8 @@
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 015fa6c1949e..0a7d790a6f8c 100644
--- a/code/modules/clothing/head/helmet.dm
+++ b/code/modules/clothing/head/helmet.dm
@@ -46,7 +46,7 @@
if(A == attached_light)
set_attached_light(null)
update_helmlight()
- update_icon()
+ update_appearance(updates = ALL)
QDEL_NULL(alight)
qdel(A)
return ..()
@@ -368,7 +368,8 @@
//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)
@@ -396,7 +397,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)
@@ -416,7 +417,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
@@ -441,7 +442,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 33b94dd71cbe..ad1e8a220e27 100644
--- a/code/modules/clothing/head/misc_special.dm
+++ b/code/modules/clothing/head/misc_special.dm
@@ -134,7 +134,7 @@
/obj/item/clothing/head/kitty/equipped(mob/living/carbon/human/user, slot)
if(ishuman(user) && slot == ITEM_SLOT_HEAD)
- update_icon(user)
+ update_appearance(UPDATE_ICON, user)
user.update_inv_head() //Color might have been changed by update_icon.
var/datum/language_holder/LH = user.get_language_holder()
if(!LH.has_language(/datum/language/felinid) || !LH.can_speak_language(/datum/language/felinid))
@@ -150,7 +150,8 @@
LH.remove_language(/datum/language/felinid,TRUE,TRUE,LANGUAGE_CATEARS)
-/obj/item/clothing/head/kitty/update_icon(mob/living/carbon/human/user)
+/obj/item/clothing/head/kitty/update_appearance(updates = ALL, mob/living/carbon/human/user)
+ . = ..()
if(ishuman(user))
add_atom_colour("#[user.hair_color]", FIXED_COLOUR_PRIORITY)
@@ -207,9 +208,10 @@
/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 +243,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 +266,7 @@
. = ..()
if(ishuman(user) && slot == ITEM_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 a73749e00491..864bdd99c29c 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,10 +52,10 @@
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)
suffix = "on"
@@ -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 064b1dc748fc..755feba632fc 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,8 @@
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 fd422cc78b1e..88c3053962d7 100644
--- a/code/modules/clothing/spacesuits/hardsuit.dm
+++ b/code/modules/clothing/spacesuits/hardsuit.dm
@@ -305,7 +305,8 @@
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(mapload)
@@ -336,7 +337,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 +364,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/clothing/spacesuits/plasmamen.dm b/code/modules/clothing/spacesuits/plasmamen.dm
index 30ba60f29546..56da5dd2f5e1 100644
--- a/code/modules/clothing/spacesuits/plasmamen.dm
+++ b/code/modules/clothing/spacesuits/plasmamen.dm
@@ -61,7 +61,7 @@
helmet_on = !helmet_on
icon_state = "[initial(icon_state)][helmet_on ? "-light":""]"
item_state = icon_state
- update_icon(user)
+ update_appearance(UPDATE_ICON, user)
set_light_on(helmet_on)
@@ -78,9 +78,10 @@
saved_style = "enviro[GLOB.plasmaman_helmet_list[style]]"
add_overlay(mutable_appearance('icons/obj/clothing/hats.dmi', saved_style))
helmet_mob_overlay = mutable_appearance('icons/mob/clothing/head/head.dmi', saved_style)
- update_icon(user)
+ update_appearance(UPDATE_ICON, user)
-/obj/item/clothing/head/helmet/space/plasmaman/update_icon(mob/living/carbon/human/user)
+/obj/item/clothing/head/helmet/space/plasmaman/update_appearance(updates = ALL, mob/living/carbon/human/user)
+ . = ..()
if(!user)
return
user.cut_overlay(helmet_mob_overlay)
@@ -95,7 +96,7 @@
if(slot != ITEM_SLOT_HEAD)
user.cut_overlay(helmet_mob_overlay)
return
- update_icon(user)
+ update_appearance(UPDATE_ICON, user)
/obj/item/clothing/head/helmet/space/plasmaman/dropped(mob/living/user)
user.cut_overlay(helmet_mob_overlay)
diff --git a/code/modules/detectivework/scanner.dm b/code/modules/detectivework/scanner.dm
index 5200b8744533..83d83a0538bb 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 4fa101792923..a7f299e8cc86 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,8 @@
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 328a3bba45fe..7df520ff344d 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/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm
index a89f8d6d2de1..c6784ffbcf96 100644
--- a/code/modules/flufftext/Hallucination.dm
+++ b/code/modules/flufftext/Hallucination.dm
@@ -115,7 +115,8 @@ GLOBAL_LIST_INIT(hallucination_list, list(
if(target.client)
target.client.images |= current_image
-/obj/effect/hallucination/simple/update_icon(new_state,new_icon,new_px=0,new_py=0)
+/obj/effect/hallucination/simple/update_appearance(updates = ALL, new_state,new_icon,new_px=0,new_py=0)
+ . = ..()
image_state = new_state
if(new_icon)
image_icon = new_icon
@@ -217,7 +218,7 @@ GLOBAL_LIST_INIT(hallucination_list, list(
name = "alien hunter ([rand(1, 1000)])"
/obj/effect/hallucination/simple/xeno/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum)
- update_icon("alienh_pounce")
+ update_appearance(UPDATE_ICON, "alienh_pounce")
if(hit_atom == target && target.stat!=DEAD)
target.Paralyze(100)
target.visible_message(span_danger("[target] flails around wildly."),"[name] pounces on you!")
@@ -239,10 +240,10 @@ GLOBAL_LIST_INIT(hallucination_list, list(
feedback_details += "Vent Coords: [pump.x],[pump.y],[pump.z]"
xeno = new(pump.loc,target)
sleep(1 SECONDS)
- xeno.update_icon("alienh_leap",'icons/mob/alienleap.dmi',-32,-32)
+ xeno.update_appearance(UPDATE_ICON,"alienh_leap",'icons/mob/alienleap.dmi',-32,-32)
xeno.throw_at(target,7,1, xeno, FALSE, TRUE)
sleep(1 SECONDS)
- xeno.update_icon("alienh_leap",'icons/mob/alienleap.dmi',-32,-32)
+ xeno.update_appearance(UPDATE_ICON,"alienh_leap",'icons/mob/alienleap.dmi',-32,-32)
xeno.throw_at(pump,7,1, xeno, FALSE, TRUE)
sleep(1 SECONDS)
var/xeno_name = xeno.name
diff --git a/code/modules/food_and_drinks/drinks/drinks/bottle.dm b/code/modules/food_and_drinks/drinks/drinks/bottle.dm
index 0a0d75ec7aaf..242fa5d284a7 100644
--- a/code/modules/food_and_drinks/drinks/drinks/bottle.dm
+++ b/code/modules/food_and_drinks/drinks/drinks/bottle.dm
@@ -23,9 +23,10 @@
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 799324b0f0ca..67f98dd27d10 100644
--- a/code/modules/food_and_drinks/food/customizables.dm
+++ b/code/modules/food_and_drinks/food/customizables.dm
@@ -53,14 +53,14 @@
mix_filling_color(S)
S.reagents.trans_to(src,min(S.reagents.total_volume, 15), transfered_by = user) //limit of 15, we don't want our custom food to be completely filled by just one ingredient with large reagent volume.
foodtype |= S.foodtype
- update_overlays(S)
+ update_food_overlays(S)
to_chat(user, span_notice("You add the [I.name] to the [name]."))
- update_name(S)
+ update_food_name(S)
else
. = ..()
-/obj/item/reagent_containers/food/snacks/customizable/proc/update_name(obj/item/reagent_containers/food/snacks/S)
+/obj/item/reagent_containers/food/snacks/customizable/proc/update_food_name(obj/item/reagent_containers/food/snacks/S)
for(var/obj/item/I in ingredients)
if(!istype(S, I.type))
customname = "custom"
@@ -102,7 +102,7 @@
rgbcolor[4] = (customcolor[4]+ingcolor[4])/2
filling_color = rgb(rgbcolor[1], rgbcolor[2], rgbcolor[3], rgbcolor[4])
-/obj/item/reagent_containers/food/snacks/customizable/update_overlays(obj/item/reagent_containers/food/snacks/S)
+/obj/item/reagent_containers/food/snacks/customizable/update_food_overlays(obj/item/reagent_containers/food/snacks/S)
var/mutable_appearance/filling = mutable_appearance(icon, "[initial(icon_state)]_filling")
if(S.filling_color == "#FFFFFF")
filling.color = pick("#FF0000","#0000FF","#008000","#FFFF00")
@@ -138,7 +138,7 @@
/obj/item/reagent_containers/food/snacks/customizable/initialize_slice(obj/item/reagent_containers/food/snacks/slice, reagents_per_slice)
..()
slice.filling_color = filling_color
- slice.update_overlays(src)
+ slice.update_food_overlays(src)
/obj/item/reagent_containers/food/snacks/customizable/Destroy()
@@ -347,9 +347,10 @@
/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 9cd1aa6ea9a3..6fc28abb7b81 100644
--- a/code/modules/food_and_drinks/food/snacks.dm
+++ b/code/modules/food_and_drinks/food/snacks.dm
@@ -255,7 +255,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/proc/update_food_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 254025024908..723e4f039b89 100644
--- a/code/modules/food_and_drinks/food/snacks_pastry.dm
+++ b/code/modules/food_and_drinks/food/snacks_pastry.dm
@@ -672,9 +672,10 @@
/obj/item/reagent_containers/food/snacks/pancakes/Initialize(mapload)
. = ..()
- 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
@@ -718,13 +719,13 @@
to_chat(user, span_notice("You add the [I] to the [name]."))
P.name = initial(P.name)
contents += P
- update_overlays(P)
+ update_food_overlays(P)
if (P.contents.len)
for(var/V in P.contents)
P = V
P.name = initial(P.name)
contents += P
- update_overlays(P)
+ update_food_overlays(P)
P = I
LAZYCLEARLIST(P.contents)
return
@@ -733,18 +734,18 @@
return O.attackby(I, user, params)
..()
-/obj/item/reagent_containers/food/snacks/pancakes/update_overlays(obj/item/reagent_containers/food/snacks/P)
+/obj/item/reagent_containers/food/snacks/pancakes/update_food_overlays(obj/item/reagent_containers/food/snacks/P)
var/mutable_appearance/pancake = mutable_appearance(icon, "[P.item_state]_[rand(1,3)]")
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 756db185425b..8fd117153362 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm
@@ -38,7 +38,8 @@
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 +100,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 +134,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 +146,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 +222,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 56065b62c0c0..0da369667bb6 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 ce0259a5c6c0..cb2f72737c12 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/grill.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/grill.dm
@@ -20,7 +20,8 @@
. = ..()
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 +39,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 +60,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 +68,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 +125,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 c32488db9083..53ded31239d2 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm
@@ -87,7 +87,8 @@
"- 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 +110,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 +128,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 +142,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 +153,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 +259,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 +283,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 +350,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..13a3a94ada0e 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/oven.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/oven.dm
@@ -42,8 +42,7 @@
QDEL_NULL(particles)
. = ..()
-/obj/machinery/oven/update_icon()
- update_overlays()
+/obj/machinery/oven/update_icon_state()
if(panel_open)
icon_state = "oven_o"
return ..()
@@ -53,15 +52,15 @@
icon_state = "oven_off"
return ..()
-/obj/machinery/oven/proc/update_overlays()
- cut_overlays()
+/obj/machinery/oven/update_overlays()
+ . = ..()
var/mutable_appearance/door_overlay
if(open)
door_overlay = mutable_appearance(icon, "oven_lid_open")
door_overlay.pixel_y = OVEN_LID_Y_OFFSET
else
door_overlay = mutable_appearance(icon, "oven_lid_closed")
- add_overlay(door_overlay);
+ . += door_overlay
/obj/machinery/oven/process(delta_time)
..()
@@ -87,7 +86,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 +109,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 +143,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 +177,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 f85e1aff0663..415dbe9f32e0 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm
@@ -146,10 +146,11 @@
/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 +231,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 +246,7 @@
if(accept_check(G))
load(G)
loaded++
- update_icon()
+ update_appearance(updates = ALL)
updateUsrDialog()
if(loaded)
@@ -272,7 +273,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 +378,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 +391,7 @@
dispense(O, usr)
desired--
- update_icon()
+ update_appearance(updates = ALL)
cut_overlay(full_indicator_state)
animate_dispenser()
return TRUE
@@ -454,7 +455,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,10 +475,10 @@
/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)
add_overlay("drying_rack_drying")
@@ -489,7 +490,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 +508,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 15d995943de2..2b8419ca10e8 100644
--- a/code/modules/food_and_drinks/pizzabox.dm
+++ b/code/modules/food_and_drinks/pizzabox.dm
@@ -31,14 +31,15 @@
/obj/item/pizzabox/Initialize(mapload)
. = ..()
- 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 +105,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 +116,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 +137,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 +159,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 +180,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 +189,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 +203,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 +253,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 +264,7 @@
STOP_PROCESSING(SSobj, src)
qdel(wires)
wires = null
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/pizzabox/bomb/Initialize(mapload)
. = ..()
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..b05285a18fdc 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,10 @@
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 +130,15 @@
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 f981ad6066a1..7c0cc745bebc 100644
--- a/code/modules/goals/station_goals/shield.dm
+++ b/code/modules/goals/station_goals/shield.dm
@@ -116,9 +116,10 @@
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 87d2981dd78c..6140e35b78fd 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 27220da6be7c..613037217dc3 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,8 @@
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 94588436d409..3109e3bdde37 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,10 @@
/turf/open/floor/holofloor/carpet/Initialize(mapload)
. = ..()
- addtimer(CALLBACK(src, TYPE_PROC_REF(/atom/, 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 1cf097c98ed6..6b40933d2bc0 100644
--- a/code/modules/hydroponics/beekeeping/honeycomb.dm
+++ b/code/modules/hydroponics/beekeeping/honeycomb.dm
@@ -17,10 +17,11 @@
. = ..()
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 +38,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 eb2625ad9658..cd68db406ec7 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,10 @@
. += 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 +89,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 +105,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 +185,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 +200,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 +241,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 +251,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 efc99f269478..aab59cc4af07 100644
--- a/code/modules/hydroponics/fermenting_barrel.dm
+++ b/code/modules/hydroponics/fermenting_barrel.dm
@@ -63,9 +63,10 @@
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 14f4baaf914b..c770e919ceda 100644
--- a/code/modules/hydroponics/gene_modder.dm
+++ b/code/modules/hydroponics/gene_modder.dm
@@ -55,8 +55,8 @@
min_wchance = 0
min_wrate = 0
-/obj/machinery/plantgenes/update_icon()
- ..()
+/obj/machinery/plantgenes/update_appearance(updates = ALL)
+ . = ..()
cut_overlays()
if((stat & (BROKEN|NOPOWER)))
icon_state = "dnamod-off"
@@ -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,20 +436,19 @@
/obj/item/disk/plantgene/Initialize(mapload)
. = ..()
- 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()
- if(gene)
- name = "[gene.get_name()] (plant data disk)"
- else
- name = "plant data disk"
+/obj/item/disk/plantgene/update_name()
+ . = ..()
+ name = gene ? "[gene.get_name()] (plant data disk)" : "plant data disk"
/obj/item/disk/plantgene/attack_self(mob/user)
read_only = !read_only
diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm
index aef012e31693..1adc5d9df247 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,8 @@
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 +361,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 +395,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 +415,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 +427,7 @@
pestlevel = 0 // Pests die
lastproduce = 0
if(!dead)
- update_icon()
+ update_appearance(updates = ALL)
dead = 1
@@ -777,9 +778,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 +796,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 +824,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 +845,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 +865,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 +896,7 @@
qdel(myseed)
myseed = null
update_name()
- update_icon()
+ update_appearance(updates = ALL)
else
if(user)
examine(user)
@@ -903,7 +904,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 +932,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,13 +966,11 @@
/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()
- if(myseed)
- name = "[initial(name)] ([myseed.plantname])"
- else
- name = initial(name)
+/obj/machinery/hydroponics/update_name()
+ . = ..()
+ name = myseed ? "[initial(name)] ([myseed.plantname])" : initial(name)
///////////////////////////////////////////////////////////////////////////////
/obj/machinery/hydroponics/soil //Not actually hydroponics at all! Honk!
diff --git a/code/modules/hydroponics/plant_genes.dm b/code/modules/hydroponics/plant_genes.dm
index f0acd1979f1f..54d2f1a97407 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 7394c38f8656..968edfb4fc29 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 ffa127dfe698..b418cd94824b 100644
--- a/code/modules/jobs/job_types/_job.dm
+++ b/code/modules/jobs/job_types/_job.dm
@@ -329,7 +329,7 @@
H.equip_to_slot_if_possible(PDA, ITEM_SLOT_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 e11fa80ceebc..3ac70bf3e644 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,8 @@
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 +153,7 @@
/obj/structure/bookcase/manuals/medical/Initialize(mapload)
. = ..()
new /obj/item/book/manual/wiki/medical_cloning(src)
- update_icon()
+ update_appearance(updates = ALL)
/obj/structure/bookcase/manuals/engineering
@@ -165,7 +166,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 +175,7 @@
/obj/structure/bookcase/manuals/research_and_development/Initialize(mapload)
. = ..()
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 97f9366e0732..eb5056f95edf 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..22d64efe709b 100644
--- a/code/modules/library/soapstone.dm
+++ b/code/modules/library/soapstone.dm
@@ -145,10 +145,10 @@
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)
add_atom_colour("#[newcolor]", FIXED_COLOUR_PRIORITY)
@@ -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 4a8a2064af37..1e4d5ab011f1 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 084a8b3697cd..c2ed5ffbd93f 100644
--- a/code/modules/mapping/minimap.dm
+++ b/code/modules/mapping/minimap.dm
@@ -105,9 +105,10 @@
/obj/item/map/station/Initialize(mapload)
..()
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 aa1adf0be3d4..85c0447a6b0c 100644
--- a/code/modules/mining/equipment/explorer_gear.dm
+++ b/code/modules/mining/equipment/explorer_gear.dm
@@ -124,10 +124,10 @@
/obj/item/clothing/head/helmet/space/hostile_environment/Initialize(mapload)
. = ..()
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")
glass_overlay.appearance_flags = RESET_COLOR
diff --git a/code/modules/mining/equipment/kinetic_crusher.dm b/code/modules/mining/equipment/kinetic_crusher.dm
index fad185b85682..cf5bb8fc6822 100644
--- a/code/modules/mining/equipment/kinetic_crusher.dm
+++ b/code/modules/mining/equipment/kinetic_crusher.dm
@@ -28,7 +28,8 @@
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 +509,8 @@
..()
-/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..34dca7a708e6 100644
--- a/code/modules/mining/equipment/marker_beacons.dm
+++ b/code/modules/mining/equipment/marker_beacons.dm
@@ -33,14 +33,15 @@ 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 +65,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 +84,21 @@ 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 +112,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 +145,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 2a5a7e004690..5181990fd899 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,10 @@
/obj/item/organ/regenerative_core/legion/Initialize(mapload)
. = ..()
- 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 8baa359fe742..106cbb6a0e06 100644
--- a/code/modules/mining/equipment/survival_pod.dm
+++ b/code/modules/mining/equipment/survival_pod.dm
@@ -138,7 +138,8 @@
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 +155,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 +208,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 4d6908fa6f0b..e10c68c57082 100644
--- a/code/modules/mining/lavaland/ash_flora.dm
+++ b/code/modules/mining/lavaland/ash_flora.dm
@@ -300,7 +300,8 @@
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 c9192aac2f50..8db367dafc34 100644
--- a/code/modules/mining/lavaland/necropolis_chests.dm
+++ b/code/modules/mining/lavaland/necropolis_chests.dm
@@ -683,7 +683,8 @@ 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 +1505,19 @@ 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 +1745,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 acf746ba7888..e0d31ddc29df 100644
--- a/code/modules/mining/lavaland/world_anvil.dm
+++ b/code/modules/mining/lavaland/world_anvil.dm
@@ -27,7 +27,8 @@
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 +45,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 +71,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..a44d5972d78a 100644
--- a/code/modules/mining/machine_redemption.dm
+++ b/code/modules/mining/machine_redemption.dm
@@ -345,7 +345,8 @@
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 4727e1a51b3b..9156452293ac 100644
--- a/code/modules/mining/machine_vending.dm
+++ b/code/modules/mining/machine_vending.dm
@@ -105,7 +105,8 @@
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 1527ab7d8c16..ced57ad0d8ea 100644
--- a/code/modules/mining/ores_coins.dm
+++ b/code/modules/mining/ores_coins.dm
@@ -22,7 +22,8 @@
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
@@ -620,7 +621,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\
/obj/item/coinstack/Initialize(mapload)
. = ..()
coins = list()
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/coinstack/examine(mob/user)
. = ..()
@@ -634,7 +635,8 @@ 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]
@@ -663,7 +665,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
@@ -671,7 +673,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 ad6b3592ae60..463aa249a736 100644
--- a/code/modules/mob/dead/new_player/new_player.dm
+++ b/code/modules/mob/dead/new_player/new_player.dm
@@ -297,7 +297,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/login.dm b/code/modules/mob/dead/observer/login.dm
index e39207ffde59..a84f7467ae6a 100644
--- a/code/modules/mob/dead/observer/login.dm
+++ b/code/modules/mob/dead/observer/login.dm
@@ -16,5 +16,5 @@
if (isturf(T))
update_z(T.z)
- update_icon(preferred_form)
+ update_appearance(UPDATE_ICON, preferred_form)
updateghostimages()
diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm
index 640270573be5..f111f8559a8f 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)
@@ -188,12 +188,14 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER)
/*
* This proc will update the icon of the ghost itself, with hair overlays, as well as the ghost image.
- * Please call update_icon(icon_state) from now on when you want to update the icon_state of the ghost,
+ * Please call update_appearance(UPDATE_ICON, icon_state) from now on when you want to update the icon_state of the ghost,
* or you might end up with hair on a sprite that's not supposed to get it.
* 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/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 d2d45a4660d6..7fa172b75bcd 100644
--- a/code/modules/mob/inventory.dm
+++ b/code/modules/mob/inventory.dm
@@ -190,7 +190,7 @@
I.equipped(src, ITEM_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)
@@ -336,7 +336,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
@@ -440,7 +440,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 57ed3dd01f24..f2e332062579 100644
--- a/code/modules/mob/living/brain/MMI.dm
+++ b/code/modules/mob/living/brain/MMI.dm
@@ -24,7 +24,8 @@
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 +84,7 @@
brain = newbrain
name = "[initial(name)]: [brainmob.real_name]"
- update_icon()
+ update_appearance(updates = ALL)
SSblackbox.record_feedback("amount", "mmis_filled", 1)
@@ -110,7 +111,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 +160,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 5037d46eb4c6..2f09d55b9a1b 100644
--- a/code/modules/mob/living/brain/posibrain.dm
+++ b/code/modules/mob/living/brain/posibrain.dm
@@ -60,12 +60,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)
@@ -131,7 +131,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)
@@ -210,7 +210,8 @@ 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 340f9918a803..a91fbb42e26b 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 dddace248ac9..97b3fc2f9b4b 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)
@@ -619,7 +619,7 @@
name = "self-grasp"
desc = "Sometimes all you can do is slow the bleeding."
icon = 'icons/obj/toy.dmi'
- icon_state = "latexballon"
+ icon_state = "latexballoon"
item_state = "nothing"
force = 0
throwforce = 0
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 f87e39120139..b458519df514 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, ITEM_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, ITEM_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, ITEM_SLOT_SUITSTORE))
- 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 c5fdec856f51..dac08097aff6 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 11f673676385..29474653b298 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[TOBITSHIFT(ITEM_SLOT_ICLOTHING) + 1]
- 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[TOBITSHIFT(ITEM_SLOT_ID) + 1]
- 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[TOBITSHIFT(ITEM_SLOT_GLOVES) + 1])
var/atom/movable/screen/inventory/inv = hud_used.inv_slots[TOBITSHIFT(ITEM_SLOT_GLOVES) + 1]
- 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[TOBITSHIFT(ITEM_SLOT_EYES) + 1]
- 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[TOBITSHIFT(ITEM_SLOT_EARS) + 1]
- 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 && hud_used.inv_slots[TOBITSHIFT(ITEM_SLOT_NECK) + 1])
var/atom/movable/screen/inventory/inv = hud_used.inv_slots[TOBITSHIFT(ITEM_SLOT_NECK) + 1]
- 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[TOBITSHIFT(ITEM_SLOT_FEET) + 1]
- 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[TOBITSHIFT(ITEM_SLOT_SUITSTORE) + 1]
- 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[TOBITSHIFT(ITEM_SLOT_BELT) + 1]
- 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[TOBITSHIFT(ITEM_SLOT_OCLOTHING) + 1]
- inv.update_icon()
+ inv.update_appearance(updates = ALL)
if(istype(wear_suit, /obj/item))
wear_suit.screen_loc = ui_oclothing
@@ -402,9 +402,9 @@ There are several things that need to be remembered:
var/atom/movable/screen/inventory/inv
inv = hud_used.inv_slots[TOBITSHIFT(ITEM_SLOT_LPOCKET) + 1]
- inv.update_icon()
+ inv.update_appearance(updates = ALL)
inv = hud_used.inv_slots[TOBITSHIFT(ITEM_SLOT_RPOCKET) + 1]
- inv.update_icon()
+ inv.update_appearance(updates = ALL)
if(l_store)
l_store.screen_loc = ui_storage1
@@ -427,7 +427,7 @@ There are several things that need to be remembered:
if(client && hud_used && hud_used.inv_slots[TOBITSHIFT(ITEM_SLOT_MASK) + 1])
var/atom/movable/screen/inventory/inv = hud_used.inv_slots[TOBITSHIFT(ITEM_SLOT_MASK) + 1]
- inv.update_icon()
+ inv.update_appearance(updates = ALL)
if(wear_mask)
var/target_overlay = wear_mask.icon_state
@@ -454,7 +454,7 @@ There are several things that need to be remembered:
if(client && hud_used && hud_used.inv_slots[TOBITSHIFT(ITEM_SLOT_BACK) + 1])
var/atom/movable/screen/inventory/inv = hud_used.inv_slots[TOBITSHIFT(ITEM_SLOT_BACK) + 1]
- 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 385caa0c5e59..cc735de0896f 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(ITEM_SLOT_HANDS)
put_in_hands(I)
- update_inv_hands()
+ update_held_items()
if(ITEM_SLOT_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 7d51955714f9..58710c7a4121 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?.inv_slots[TOBITSHIFT(ITEM_SLOT_MASK) + 1])
var/atom/movable/screen/inventory/inv = hud_used.inv_slots[TOBITSHIFT(ITEM_SLOT_MASK) + 1]
- inv.update_icon()
+ inv.update_appearance(updates = ALL)
if(wear_mask)
if(!(ITEM_SLOT_MASK in check_obscured_slots()))
@@ -131,7 +131,7 @@
if(client && hud_used?.inv_slots[TOBITSHIFT(ITEM_SLOT_NECK) + 1])
var/atom/movable/screen/inventory/inv = hud_used.inv_slots[TOBITSHIFT(ITEM_SLOT_NECK) + 1]
- inv.update_icon()
+ inv.update_appearance(updates = ALL)
if(wear_neck)
if(!(ITEM_SLOT_NECK in check_obscured_slots()))
@@ -145,7 +145,7 @@
if(client && hud_used?.inv_slots[TOBITSHIFT(ITEM_SLOT_BACK) + 1])
var/atom/movable/screen/inventory/inv = hud_used.inv_slots[TOBITSHIFT(ITEM_SLOT_BACK) + 1]
- 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?.inv_slots[TOBITSHIFT(ITEM_SLOT_BACK) + 1])
var/atom/movable/screen/inventory/inv = hud_used.inv_slots[TOBITSHIFT(ITEM_SLOT_HEAD) + 1]
- 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/init_signals.dm b/code/modules/mob/living/init_signals.dm
index 0c27ab1cb14d..cfcf7a395198 100644
--- a/code/modules/mob/living/init_signals.dm
+++ b/code/modules/mob/living/init_signals.dm
@@ -173,13 +173,13 @@
/mob/living/proc/on_incapacitated_trait_gain(datum/source)
SIGNAL_HANDLER
add_traits(list(TRAIT_UI_BLOCKED, TRAIT_PULL_BLOCKED), TRAIT_INCAPACITATED)
-// update_appearance()
+ update_appearance()
/// Called when [TRAIT_INCAPACITATED] is removed from the mob.
/mob/living/proc/on_incapacitated_trait_loss(datum/source)
SIGNAL_HANDLER
remove_traits(list(TRAIT_UI_BLOCKED, TRAIT_PULL_BLOCKED), TRAIT_INCAPACITATED)
-// update_appearance()
+ update_appearance()
/// Called when [TRAIT_RESTRAINED] is added to the mob.
diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm
index b41b16d05d35..97a7dbf988d9 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(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 ebf7da491931..0e7654796770 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,8 @@ 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 406632bf187a..07e36a74daca 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,8 @@ 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 +132,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 +146,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 2b5a31dacbcf..8e3d25a53cb7 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 d4ec495f1296..3c61bddbc57a 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 df5ed87c4484..8d65146aaa92 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 bd710740f7c7..849c0718e1dc 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 435c369d4016..444382019e13 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, TYPE_PROC_REF(/atom/, 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..a86dc055bc42 100644
--- a/code/modules/mob/living/simple_animal/bot/atmosbot.dm
+++ b/code/modules/mob/living/simple_animal/bot/atmosbot.dm
@@ -15,6 +15,7 @@
desc = "Or the A.S.S. Bot for short."
icon = 'icons/mob/aibots.dmi'
icon_state = "atmosbot0"
+ base_icon_state = "atmosbot"
density = FALSE
anchored = FALSE
health = 25
@@ -51,11 +52,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 +83,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)
@@ -122,10 +123,9 @@
/mob/living/simple_animal/bot/atmosbot/proc/deploy_smartmetal()
if(emagged == 2)
explosion(src.loc,1,2,4,flame_range = 2)
- qdel(src)
else
deployed_smartmetal = WEAKREF(new /obj/effect/particle_effect/fluid/foam/metal/smart(get_turf(src)))
- qdel(src)
+ qdel(src)
return
//Analyse the atmosphere to see if there is a potential breach nearby
@@ -194,10 +194,11 @@
return
breached_pressure = new_breach_pressure
update_controls()
- update_icon()
+ update_appearance(UPDATE_ICON)
-/mob/living/simple_animal/bot/atmosbot/update_icon()
- icon_state = "atmosbot[on][on?"_[action]":""]"
+/mob/living/simple_animal/bot/atmosbot/update_icon_state()
+ . = ..()
+ icon_state = "[base_icon_state][on][on ? "_[action]" : ""]"
/mob/living/simple_animal/bot/atmosbot/UnarmedAttack(atom/A, proximity)
if(isturf(A) && A == get_turf(src))
diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm
index b69bf925fc76..7d8e1f22e3b0 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(UPDATE_ICON)
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(UPDATE_ICON)
/mob/living/simple_animal/bot/Initialize(mapload)
. = ..()
@@ -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(UPDATE_ICON)
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(UPDATE_ICON)
//Generalized behavior code, override where needed!
@@ -855,8 +855,9 @@ Pass a positive integer as an argument to override a bot's default speed.
ejectpai(usr)
update_controls()
-/mob/living/simple_animal/bot/update_icon()
- icon_state = "[initial(icon_state)][on]"
+/mob/living/simple_animal/bot/update_icon_state()
+ icon_state = "[isnull(base_icon_state) ? initial(icon_state) : base_icon_state][on]"
+ return ..()
// Machinery to simplify topic and access calls
/obj/machinery/bot_core
@@ -968,7 +969,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 52a44ad84592..f7c3c7a8d498 100644
--- a/code/modules/mob/living/simple_animal/bot/construction.dm
+++ b/code/modules/mob/living/simple_animal/bot/construction.dm
@@ -212,19 +212,30 @@
/obj/item/bot_assembly/floorbot/Initialize(mapload)
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
-/obj/item/bot_assembly/floorbot/update_icon()
- ..()
+/obj/item/bot_assembly/floorbot/update_name()
+ . = ..()
switch(build_step)
- if(ASSEMBLY_FIRST_STEP)
- desc = initial(desc)
+ if(ASSEMBLY_SECOND_STEP)
+ name = "incomplete floorbot assembly"
+ else
name = initial(name)
- icon_state = "[toolbox_color]toolbox_tiles"
+/obj/item/bot_assembly/floorbot/update_desc()
+ . = ..()
+ switch(build_step)
if(ASSEMBLY_SECOND_STEP)
desc = "It's a toolbox with tiles sticking out the top and a sensor attached."
- name = "incomplete floorbot assembly"
+ else
+ desc = initial(desc)
+
+/obj/item/bot_assembly/floorbot/update_icon_state()
+ . = ..()
+ switch(build_step)
+ if(ASSEMBLY_FIRST_STEP)
+ icon_state = "[toolbox_color]toolbox_tiles"
+ if(ASSEMBLY_SECOND_STEP)
icon_state = "[toolbox_color]toolbox_tiles_sensor"
/obj/item/bot_assembly/floorbot/attackby(obj/item/W, mob/user, params)
@@ -237,7 +248,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 2e01b58cd734..e7325995e9f0 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 cdc1f2e12d42..9d7347f35e07 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(mapload)
. = ..()
- 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,16 +286,15 @@
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_icon_state()
+ . = ..()
if(!on)
icon_state = "firebot0"
return
- if(IsStun() || IsParalyzed())
- icon_state = "firebots1"
- else if(stationary_mode) //Bot has yellow light to indicate stationary mode.
+ if(IsStun() || IsParalyzed() || stationary_mode) //Bot has yellow light to indicate stationary mode.
icon_state = "firebots1"
- else
- icon_state = "firebot1"
+ return
+ icon_state = "firebot1"
/mob/living/simple_animal/bot/firebot/explode()
diff --git a/code/modules/mob/living/simple_animal/bot/floorbot.dm b/code/modules/mob/living/simple_animal/bot/floorbot.dm
index a4ad78b124a5..998fcf5fa9e9 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,12 @@
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_icon_state()
+ . = ..()
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 2965832f658d..21ba0e1acf76 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(mapload)
. = ..()
- 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, TYPE_PROC_REF(/atom/, 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, TYPE_PROC_REF(/atom/, 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..12b89731e3cd 100644
--- a/code/modules/mob/living/simple_animal/bot/medbot.dm
+++ b/code/modules/mob/living/simple_animal/bot/medbot.dm
@@ -15,6 +15,7 @@
desc = "A little medical robot. He looks somewhat underwhelmed."
icon = 'icons/mob/aibots.dmi'
icon_state = "medibot0"
+ base_icon_state = "medibot"
density = FALSE
anchored = FALSE
health = 20
@@ -91,23 +92,23 @@
treatment_tox_avoid = null
treatment_tox = /datum/reagent/toxin/sodium_thiopental
-/mob/living/simple_animal/bot/medbot/update_icon()
- cut_overlays()
- if(skin)
- add_overlay("medskin_[skin]")
+/mob/living/simple_animal/bot/medbot/update_icon_state()
+ . = ..()
if(!on)
- icon_state = "medibot0"
+ icon_state = "[base_icon_state]0"
return
if(IsStun() || IsParalyzed())
- icon_state = "medibota"
+ icon_state = "[base_icon_state]a"
return
if(mode == BOT_HEALING)
- icon_state = "medibots[stationary_mode]"
+ icon_state = "[base_icon_state]s[stationary_mode]"
return
- else if(stationary_mode) //Bot has yellow light to indicate stationary mode.
- icon_state = "medibot2"
- else
- icon_state = "medibot1"
+ icon_state = "[base_icon_state][stationary_mode ? 2 : 1]" //Bot has yellow light to indicate stationary mode.
+
+/mob/living/simple_animal/bot/medbot/update_overlays()
+ . = ..()
+ if(skin)
+ . += "medskin_[skin]"
/mob/living/simple_animal/bot/medbot/Initialize(mapload, new_skin)
. = ..()
@@ -116,11 +117,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 +130,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 +223,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 +414,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 +555,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 +665,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 361ffc9c733b..ea75ba067372 100644
--- a/code/modules/mob/living/simple_animal/bot/mulebot.dm
+++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm
@@ -12,6 +12,7 @@
name = "\improper MULEbot"
desc = "A Multiple Utility Load Effector bot."
icon_state = "mulebot0"
+ base_icon_state = "mulebot"
density = TRUE
move_resist = MOVE_FORCE_STRONG
animate_movement = 1
@@ -112,7 +113,7 @@
..()
else
..()
- update_icon()
+ update_appearance(updates = ALL)
return
/mob/living/simple_animal/bot/mulebot/emag_act(mob/user)
@@ -121,21 +122,20 @@
if(!open)
locked = !locked
to_chat(user, span_notice("You [locked ? "lock" : "unlock"] [src]'s controls!"))
- flick("mulebot-emagged", src)
+ flick("[base_icon_state]-emagged", src)
playsound(src, "sparks", 100, 0)
-/mob/living/simple_animal/bot/mulebot/update_icon()
- if(open)
- icon_state="mulebot-hatch"
- else
- icon_state = "mulebot[wires.is_cut(WIRE_AVOIDANCE)]"
- cut_overlays()
- if(load && !ismob(load))//buckling handles the mob offsets
- load.pixel_y = initial(load.pixel_y) + 9
- if(load.layer < layer)
- load.layer = layer + 0.01
- add_overlay(load)
- return
+/mob/living/simple_animal/bot/mulebot/update_icon_state() //if you change the icon_state names, please make sure to update /datum/wires/mulebot/on_pulse() as well. <3
+ . = ..()
+ icon_state = "[base_icon_state][open ? "-hatch" : wires.is_cut(WIRE_AVOIDANCE)]"
+
+/mob/living/simple_animal/bot/mulebot/update_overlays()
+ . = ..()
+ if(!load || ismob(load)) //mob offsets and such are handled by the riding component / buckling
+ return
+ var/mutable_appearance/load_overlay = mutable_appearance(load.icon, load.icon_state, layer + 0.01)
+ load_overlay.pixel_y = initial(load.pixel_y) + 9
+ . += load_overlay
/mob/living/simple_animal/bot/mulebot/ex_act(severity)
unload(0)
@@ -338,6 +338,7 @@
if(DELIGHT)
audible_message("[src] makes a delighted ping!", span_italics("You hear a ping."))
playsound(loc, 'sound/machines/ping.ogg', 50, 0)
+ flick("[base_icon_state]1", src)
// mousedrop a crate to load the bot
@@ -386,7 +387,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
@@ -460,7 +461,7 @@
num_steps--
if(!on || client)
return
- update_icon()
+ update_appearance(updates = ALL)
switch(mode)
if(BOT_IDLE) // idle
@@ -569,7 +570,7 @@
mode = BOT_GO_HOME
else
mode = BOT_DELIVER
- update_icon()
+ update_appearance(updates = ALL)
get_nav()
// starts bot moving to home
@@ -580,7 +581,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()
@@ -688,7 +689,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()
@@ -710,7 +711,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 ef3b15ef59d5..6a45ac38fd83 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(mapload)
. = ..()
- 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,8 @@
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 +210,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 +265,7 @@ Auto Patrol: []"},
var/judgement_criteria = judgement_criteria()
playsound(src, 'sound/weapons/egloves.ogg', 50, TRUE, -1)
icon_state = "secbot-c"
- addtimer(CALLBACK(src, TYPE_PROC_REF(/atom/, 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 1991868eb855..12813a6e9459 100644
--- a/code/modules/mob/living/simple_animal/eldritch_demons.dm
+++ b/code/modules/mob/living/simple_animal/eldritch_demons.dm
@@ -317,12 +317,12 @@
)
/mob/living/simple_animal/hostile/eldritch/rust_spirit/setDir(newdir)
- . = ..()
- if(newdir == NORTH)
- icon_state = "rust_walker_n"
- else if(newdir == SOUTH)
- icon_state = "rust_walker_s"
- //update_icon()
+ . = ..()
+ if(newdir == NORTH)
+ icon_state = "rust_walker_n"
+ else if(newdir == SOUTH)
+ icon_state = "rust_walker_s"
+ //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 1124de738d39..344b73e178f9 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 64b0860dc4a7..cfd0b1a219a9 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,8 @@
if(!QDELETED(src) && stat != DEAD)
death()
-/mob/living/simple_animal/spiderbot/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 +151,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 d95270a0120e..278c7f27bb63 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 d4b977fba945..9138ea064230 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 f7946560440d..ee61bd2b8520 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 684a7d66b59c..1624c6a00bd1 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 7e56049b2801..847f21dcb6ba 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..723c986fac36 100644
--- a/code/modules/mob/living/simple_animal/slime/slime.dm
+++ b/code/modules/mob/living/simple_animal/slime/slime.dm
@@ -143,13 +143,14 @@
/mob/living/simple_animal/slime/proc/set_colour(new_colour)
colour = new_colour
- update_name()
+ update_appearance(UPDATE_NAME)
slime_mutation = mutation_table(colour)
var/sanitizedcolour = replacetext(colour, " ", "")
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 12c2fda13881..931c1ce7594f 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -674,15 +674,11 @@
///Update the pulling hud icon
/mob/proc/update_pull_hud_icon()
- if(hud_used)
- if(hud_used.pull_icon)
- hud_used.pull_icon.update_icon(src)
+ hud_used?.pull_icon?.update_appearance()
///Update the resting hud icon
/mob/proc/update_rest_hud_icon()
- if(hud_used)
- if(hud_used.rest_icon)
- hud_used.rest_icon.update_icon(src)
+ hud_used?.rest_icon?.update_appearance()
/**
* Verb to activate the object in your held hand
@@ -707,7 +703,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/mob_movement.dm b/code/modules/mob/mob_movement.dm
index b2368a0ba2a1..23358ad4cdc8 100644
--- a/code/modules/mob/mob_movement.dm
+++ b/code/modules/mob/mob_movement.dm
@@ -495,7 +495,7 @@
m_intent = MOVE_INTENT_RUN
if(hud_used && hud_used.static_inventory)
for(var/atom/movable/screen/mov_intent/selector in hud_used.static_inventory)
- selector.update_icon(src)
+ selector.update_appearance(UPDATE_ICON,src)
///Moves a mob upwards in z level
/mob/verb/up()
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 8f30343f0aaf..bfa8c73c46b9 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,8 @@
. += 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 +294,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 +339,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 +481,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 +505,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 +518,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 bbdcdb815ae1..49a9af2f4b7b 100644
--- a/code/modules/modular_computers/computers/item/laptop/laptop.dm
+++ b/code/modules/modular_computers/computers/item/laptop/laptop.dm
@@ -33,7 +33,8 @@
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 +107,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 81e483c3dc95..184ddf1af02b 100644
--- a/code/modules/modular_computers/computers/item/tablet/tablet.dm
+++ b/code/modules/modular_computers/computers/item/tablet/tablet.dm
@@ -56,12 +56,12 @@
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)
finish_color = pick(variants)
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 29275d051998..e92973d77ef2 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 02e8b67c8cc1..802d0b887418 100644
--- a/code/modules/modular_computers/computers/machinery/modular_computer.dm
+++ b/code/modules/modular_computers/computers/machinery/modular_computer.dm
@@ -75,8 +75,9 @@
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 +106,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 b7d3163581b3..443cdb917358 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 28aa6d769e9c..bec5349c9eb9 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 4266a46127cd..c783ce6a46fa 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/energy_katana.dm b/code/modules/ninja/energy_katana.dm
index 83d559175094..8c8d040cb6e1 100644
--- a/code/modules/ninja/energy_katana.dm
+++ b/code/modules/ninja/energy_katana.dm
@@ -86,7 +86,7 @@
/obj/item/energy_katana/dropped(mob/user)
. = ..()
- jaunt.Remove(user)
+ jaunt?.Remove(user)
user.update_icons()
//If we hit the Ninja who owns this Katana, they catch it.
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/hud.dm b/code/modules/pai/hud.dm
index 52df720e507e..3c53c96395a3 100644
--- a/code/modules/pai/hud.dm
+++ b/code/modules/pai/hud.dm
@@ -179,57 +179,57 @@
var/mob/living/silicon/pai/mypai = mymob
// Software menu
- using = new /atom/movable/screen/pai/software
+ using = new /atom/movable/screen/pai/software(src)
using.screen_loc = ui_pai_software
static_inventory += using
// Holoform
- using = new /atom/movable/screen/pai/shell
+ using = new /atom/movable/screen/pai/shell(src)
using.screen_loc = ui_pai_shell
static_inventory += using
// Chassis Select Menu
- using = new /atom/movable/screen/pai/chassis
+ using = new /atom/movable/screen/pai/chassis(src)
using.screen_loc = ui_pai_chassis
static_inventory += using
// Rest
- using = new /atom/movable/screen/pai/rest
+ using = new /atom/movable/screen/pai/rest(src)
using.screen_loc = ui_pai_rest
static_inventory += using
// Integrated Light
- using = new /atom/movable/screen/pai/light
+ using = new /atom/movable/screen/pai/light(src)
using.screen_loc = ui_pai_light
static_inventory += using
// Newscaster
- using = new /atom/movable/screen/pai/newscaster
+ using = new /atom/movable/screen/pai/newscaster(src)
using.screen_loc = ui_pai_newscaster
static_inventory += using
// Language menu
- using = new /atom/movable/screen/language_menu
+ using = new /atom/movable/screen/language_menu(src)
using.screen_loc = ui_pai_language_menu
static_inventory += using
// Host Monitor
- using = new /atom/movable/screen/pai/host_monitor()
+ using = new /atom/movable/screen/pai/host_monitor(src)
using.screen_loc = ui_pai_host_monitor
static_inventory += using
// Crew Manifest
- using = new /atom/movable/screen/pai/crew_manifest()
+ using = new /atom/movable/screen/pai/crew_manifest(src)
using.screen_loc = ui_pai_crew_manifest
static_inventory += using
// Laws
- using = new /atom/movable/screen/pai/state_laws()
+ using = new /atom/movable/screen/pai/state_laws(src)
using.screen_loc = ui_pai_state_laws
static_inventory += using
// Modular Interface
- using = new /atom/movable/screen/pai/modpc()
+ using = new /atom/movable/screen/pai/modpc(src)
using.screen_loc = ui_pai_mod_int
static_inventory += using
mypai.pda_button = using
@@ -237,22 +237,22 @@
tablet_button.pAI = mypai
// Internal GPS
- using = new /atom/movable/screen/pai/internal_gps()
+ using = new /atom/movable/screen/pai/internal_gps(src)
using.screen_loc = ui_pai_internal_gps
static_inventory += using
// Take image
- using = new /atom/movable/screen/pai/image_take()
+ using = new /atom/movable/screen/pai/image_take(src)
using.screen_loc = ui_pai_take_picture
static_inventory += using
// View images
- using = new /atom/movable/screen/pai/image_view()
+ using = new /atom/movable/screen/pai/image_view(src)
using.screen_loc = ui_pai_view_images
static_inventory += using
// Radio
- using = new /atom/movable/screen/pai/radio()
+ using = new /atom/movable/screen/pai/radio(src)
using.screen_loc = ui_pai_radio
static_inventory += using
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..5c38cbb3bef3 100644
--- a/code/modules/paperwork/carbonpaper.dm
+++ b/code/modules/paperwork/carbonpaper.dm
@@ -7,7 +7,8 @@
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 +53,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 82cc9c8f249a..ea39309be758 100644
--- a/code/modules/paperwork/clipboard.dm
+++ b/code/modules/paperwork/clipboard.dm
@@ -17,15 +17,16 @@
return BRUTELOSS//the clipboard's clip is very strong. industrial duty. can kill a man easily.
/obj/item/clipboard/Initialize(mapload)
- update_icon()
- . = ..()
+ update_appearance(updates = ALL)
+ return ..()
/obj/item/clipboard/Destroy()
QDEL_NULL(haspen)
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 +44,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 +127,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 311c6a3cfee3..503572255f77 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..ae398634f6cb 100644
--- a/code/modules/paperwork/filingcabinet.dm
+++ b/code/modules/paperwork/filingcabinet.dm
@@ -60,7 +60,8 @@
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 +69,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 +186,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 df5436db67ad..24f77c0a89dd 100644
--- a/code/modules/paperwork/folders.dm
+++ b/code/modules/paperwork/folders.dm
@@ -28,7 +28,8 @@
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 +40,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 +95,7 @@
//Update everything
attack_self(usr)
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/folder/documents
name = "folder- 'TOP SECRET'"
@@ -103,7 +104,7 @@
/obj/item/folder/documents/Initialize(mapload)
. = ..()
new /obj/item/documents/nanotrasen(src)
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/folder/syndicate
icon_state = "folder_syndie"
@@ -116,7 +117,7 @@
/obj/item/folder/syndicate/red/Initialize(mapload)
. = ..()
new /obj/item/documents/syndicate/red(src)
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/folder/syndicate/blue
icon_state = "folder_sblue"
@@ -124,9 +125,9 @@
/obj/item/folder/syndicate/blue/Initialize(mapload)
. = ..()
new /obj/item/documents/syndicate/blue(src)
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/folder/syndicate/mining/Initialize(mapload)
. = ..()
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 cff2ff91cb79..7cd9016bb451 100644
--- a/code/modules/paperwork/inspector_booth.dm
+++ b/code/modules/paperwork/inspector_booth.dm
@@ -55,9 +55,10 @@
/obj/machinery/inspector_booth/Initialize(mapload)
. = ..()
- 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 0442a79569ad..81c7bba57797 100644
--- a/code/modules/paperwork/paper.dm
+++ b/code/modules/paperwork/paper.dm
@@ -76,10 +76,11 @@
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"
@@ -185,7 +186,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)
@@ -279,7 +280,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)
@@ -355,7 +356,7 @@
src.loc = B
P.loc = B
B.amount = 2
- B.update_icon()
+ B.update_appearance(updates = ALL)
add_fingerprint(user)
@@ -368,7 +369,7 @@
/obj/item/paper/extinguish()
..()
- update_icon()
+ update_appearance(updates = ALL)
/*
* Construction paper
@@ -393,8 +394,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 351e5472cc1c..f6f1f67df1e3 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,8 @@
/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 127366ab3b44..1c15ab5da29d 100644
--- a/code/modules/paperwork/paper_cutter.dm
+++ b/code/modules/paperwork/paper_cutter.dm
@@ -15,7 +15,7 @@
/obj/item/papercutter/Initialize(mapload)
. = ..()
storedcutter = new /obj/item/hatchet/cutterblade(src)
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/papercutter/suicide_act(mob/user)
@@ -34,8 +34,8 @@
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)]")
if(storedpaper)
@@ -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..3f04fa272af5 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,8 @@
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..ecece6048356 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,8 @@
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 +76,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..b7d92a601cda 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,13 @@
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 45dd291ba16f..9d986f495826 100644
--- a/code/modules/paperwork/pen.dm
+++ b/code/modules/paperwork/pen.dm
@@ -227,9 +227,10 @@
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 3733cfb818f1..49f3317edef4 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 8cb813ecbc13..7720a582f752 100644
--- a/code/modules/paperwork/ticketmachine.dm
+++ b/code/modules/paperwork/ticketmachine.dm
@@ -18,9 +18,10 @@
/obj/machinery/ticket_machine/Initialize(mapload)
. = ..()
- 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 +51,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,8 @@
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 +107,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 +136,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 +149,8 @@
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 +164,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..91839f855ed4 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,8 @@
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..9ab6d9a04d1f 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,8 @@ 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 +246,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 +263,8 @@ 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 5051b5ba8f06..fa4606ded5fb 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,8 @@
// 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 +519,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 +530,7 @@
return
else
opened = APC_COVER_OPENED
- update_icon()
+ update_appearance(updates = ALL)
return
else
W.play_tool_sound(src)
@@ -538,7 +539,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 +551,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 +571,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 +627,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 +705,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 +720,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 +734,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 +743,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 +760,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 +816,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 +836,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 +867,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 +883,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 +900,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 +1041,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 +1056,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 +1087,7 @@
malfvacate()
if("reboot")
failure_timer = 0
- update_icon()
+ update_appearance(updates = ALL)
update()
if("emergency_lighting")
emergency_lights = !emergency_lights
@@ -1111,7 +1112,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 +1253,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 +1428,7 @@
if(APC_RESET_EMP)
equipment = 3
environ = 3
- update_icon()
+ update_appearance(updates = ALL)
update()
// damage and destruction acts
@@ -1443,7 +1444,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 ff93006eba42..aa96987be994 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,10 @@ 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 +493,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 +538,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 +563,8 @@ 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 +578,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 +586,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 +635,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 +707,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 +749,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 +757,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 +788,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 +850,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 a15b72fca84f..2ccc32836a10 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)
RegisterSignal(src, COMSIG_ITEM_MAGICALLY_CHARGED, PROC_REF(on_magic_charge))
var/static/list/loc_connections = list(
@@ -77,7 +77,7 @@
. |= COMPONENT_ITEM_BURNT_OUT
charge = maxcharge
- update_icon()
+ update_appearance()
// Guns need to process their chamber when we've been charged
if(isgun(loc))
@@ -86,7 +86,7 @@
// The thing we're in might have overlays or icon states for whether the cell is charged
if(!ismob(loc))
- loc.update_icon()
+ loc.update_appearance()
return .
@@ -96,7 +96,8 @@
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"))
@@ -220,7 +221,7 @@
/obj/item/stock_parts/cell/crap/empty/Initialize(mapload)
. = ..()
charge = 0
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/stock_parts/cell/upgraded
name = "upgraded power cell"
@@ -242,7 +243,7 @@
/obj/item/stock_parts/cell/secborg/empty/Initialize(mapload)
. = ..()
charge = 0
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/stock_parts/cell/mini_egun
name = "miniature energy gun power cell"
@@ -278,7 +279,7 @@
/obj/item/stock_parts/cell/high/empty/Initialize(mapload)
. = ..()
charge = 0
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/stock_parts/cell/super
name = "super-capacity power cell"
@@ -290,7 +291,7 @@
/obj/item/stock_parts/cell/super/empty/Initialize(mapload)
. = ..()
charge = 0
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/stock_parts/cell/hyper
name = "hyper-capacity power cell"
@@ -302,7 +303,7 @@
/obj/item/stock_parts/cell/hyper/empty/Initialize(mapload)
. = ..()
charge = 0
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/stock_parts/cell/bluespace
name = "bluespace power cell"
@@ -315,7 +316,7 @@
/obj/item/stock_parts/cell/bluespace/empty/Initialize(mapload)
. = ..()
charge = 0
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/stock_parts/cell/infinite
name = "infinite-capacity power cell!"
@@ -336,8 +337,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
@@ -372,7 +374,7 @@
/obj/item/stock_parts/cell/emproof/empty/Initialize(mapload)
. = ..()
charge = 0
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/stock_parts/cell/emproof/corrupt()
return
diff --git a/code/modules/power/generator.dm b/code/modules/power/generator.dm
index 6a61c3bbf381..f322e5b460b1 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)
AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_VERBS )
@@ -31,7 +31,8 @@
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)
@@ -106,7 +107,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()
@@ -219,7 +220,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
@@ -245,7 +246,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)
@@ -260,7 +261,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)
@@ -283,11 +284,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 5e6593c35804..eff6ed564ede 100644
--- a/code/modules/power/gravitygenerator.dm
+++ b/code/modules/power/gravitygenerator.dm
@@ -43,8 +43,8 @@ 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]"
/obj/machinery/gravity_generator/proc/get_status()
@@ -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 f8ca79194b24..946185c240ed 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)
@@ -339,7 +339,8 @@
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)
@@ -413,7 +414,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)
@@ -542,7 +543,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 afe65f073e13..4529a18fbc11 100644
--- a/code/modules/power/port_gen.dm
+++ b/code/modules/power/port_gen.dm
@@ -45,15 +45,16 @@
/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 b23d8adb3cec..b3a1cb559b6d 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..6b3b959b4502 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,15 @@
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 +328,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 78e4e045a113..aa80e9051e3f 100644
--- a/code/modules/power/singularity/emitter.dm
+++ b/code/modules/power/singularity/emitter.dm
@@ -120,7 +120,8 @@
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
@@ -146,7 +147,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!"))
@@ -169,20 +170,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 45b2ddb3acca..fdb83a680963 100644
--- a/code/modules/power/singularity/field_generator.dm
+++ b/code/modules/power/singularity/field_generator.dm
@@ -44,7 +44,8 @@ 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]")
@@ -170,7 +171,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
@@ -179,7 +180,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
@@ -187,7 +188,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()
@@ -303,7 +304,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()
@@ -318,7 +319,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/generator.dm b/code/modules/power/singularity/generator.dm
index f451e9b3128b..637fb8e052b8 100644
--- a/code/modules/power/singularity/generator.dm
+++ b/code/modules/power/singularity/generator.dm
@@ -22,7 +22,9 @@
default_unfasten_wrench(user, W, 0)
else
return ..()
-/obj/machinery/the_singularitygen/update_icon(power)
+
+/obj/machinery/the_singularitygen/update_appearance(updates = ALL, power)
+ . = ..()
if(power)
if(power>150)
animate(src, icon_state = "[initial(icon_state)]_3", 10)
@@ -43,4 +45,4 @@
qdel(src)
else
energy -= delta_time * 0.5
- update_icon(energy)
+ update_appearance(UPDATE_ICON, energy)
diff --git a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm
index 6bc4f7dc0d8c..f14b47742b75 100644
--- a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm
+++ b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm
@@ -106,7 +106,7 @@
construction_state = PA_CONSTRUCTION_PANEL_OPEN
update_state()
- update_icon()
+ update_appearance(updates = ALL)
/obj/structure/particle_accelerator/deconstruct(disassembled = TRUE)
@@ -121,7 +121,8 @@
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 a6bc79e0402d..44fdab118abd 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,8 @@
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 +85,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 +121,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 +199,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 +270,7 @@
if(did_something)
user.changeNext_move(CLICK_CD_MELEE)
update_state()
- update_icon()
+ update_appearance(updates = ALL)
return
..()
@@ -365,7 +366,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 19d5552a8a4c..12eb8bceec42 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,8 @@
obj_break()
-/obj/machinery/power/smes/update_icon()
+/obj/machinery/power/smes/update_appearance(updates = ALL)
+ . = ..()
cut_overlays()
if(stat & BROKEN)
return
@@ -286,7 +287,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 +317,7 @@
output_used -= excess
if(clev != chargedisplay() ) //if needed updates the icons overlay
- update_icon()
+ update_appearance(updates = ALL)
return
@@ -353,12 +354,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 +421,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 +447,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 bb9e9457076e..d9f678356683 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,8 +113,8 @@
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()
turner.Turn(azimuth_current)
@@ -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,8 @@
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 5ae45fcc4890..dfb5891e82fc 100644
--- a/code/modules/projectiles/ammunition/_ammunition.dm
+++ b/code/modules/projectiles/ammunition/_ammunition.dm
@@ -33,10 +33,10 @@
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 f34ed497f52a..8a2e9da72dd8 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 124516d06256..c20184471aeb 100644
--- a/code/modules/projectiles/ammunition/reusable/arrow.dm
+++ b/code/modules/projectiles/ammunition/reusable/arrow.dm
@@ -40,7 +40,7 @@
if(LAZYLEN(new_parts))
CheckParts(new_parts)
-/obj/item/ammo_casing/reusable/arrow/update_icon(force_update)
+/obj/item/ammo_casing/reusable/arrow/update_appearance(updates = ALL, force_update)
..()
cut_overlays()
if(istype(explosive))
@@ -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,10 +439,10 @@
// 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)
+/obj/item/ammo_casing/reusable/arrow/singulo/update_appearance(updates = ALL,force_update)
..()
if(istype(shard))
add_overlay(mutable_appearance(icon, "[icon_state]_[shard.icon_state]"), TRUE)
diff --git a/code/modules/projectiles/ammunition/reusable/foam.dm b/code/modules/projectiles/ammunition/reusable/foam.dm
index 90ebfb71bdf5..6aa656a4de31 100644
--- a/code/modules/projectiles/ammunition/reusable/foam.dm
+++ b/code/modules/projectiles/ammunition/reusable/foam.dm
@@ -10,8 +10,8 @@
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"
else
@@ -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..38d6743c5388 100644
--- a/code/modules/projectiles/attachments/_attachment.dm
+++ b/code/modules/projectiles/attachments/_attachment.dm
@@ -35,7 +35,8 @@
/// 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 b68ca45f49ab..7366de34d678 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,10 @@
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 +207,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..3488ed3b1228 100644
--- a/code/modules/projectiles/boxes_magazines/external/grenade.dm
+++ b/code/modules/projectiles/boxes_magazines/external/grenade.dm
@@ -5,8 +5,8 @@
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"
else
diff --git a/code/modules/projectiles/boxes_magazines/external/lmg.dm b/code/modules/projectiles/boxes_magazines/external/lmg.dm
index 8132339a8e3d..da029f992be0 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 951b1411d8ef..e698594b5525 100644
--- a/code/modules/projectiles/boxes_magazines/external/pistol.dm
+++ b/code/modules/projectiles/boxes_magazines/external/pistol.dm
@@ -64,8 +64,8 @@
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"
else
@@ -81,8 +81,8 @@
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"]"
//Desert Eagle
@@ -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,8 +112,8 @@
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"
else
diff --git a/code/modules/projectiles/boxes_magazines/external/rechargable.dm b/code/modules/projectiles/boxes_magazines/external/rechargable.dm
index e98aff2bbc60..810b02435a2e 100644
--- a/code/modules/projectiles/boxes_magazines/external/rechargable.dm
+++ b/code/modules/projectiles/boxes_magazines/external/rechargable.dm
@@ -8,8 +8,8 @@
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()
var/cur_ammo = ammo_count()
@@ -29,8 +29,8 @@
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())
icon_state = "[initial(icon_state)]"
@@ -74,7 +74,8 @@
"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 +105,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,8 +136,8 @@
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()
if(cur_ammo)
diff --git a/code/modules/projectiles/boxes_magazines/external/rifle.dm b/code/modules/projectiles/boxes_magazines/external/rifle.dm
index f33ba8a15753..13cc090a55ba 100644
--- a/code/modules/projectiles/boxes_magazines/external/rifle.dm
+++ b/code/modules/projectiles/boxes_magazines/external/rifle.dm
@@ -8,8 +8,8 @@
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"
else
@@ -25,8 +25,8 @@
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)]"
/obj/item/ammo_box/magazine/m556/ap
@@ -55,8 +55,8 @@
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]"
else
@@ -96,8 +96,8 @@
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]"
else
@@ -130,8 +130,8 @@
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]"
else
diff --git a/code/modules/projectiles/boxes_magazines/external/shotgun.dm b/code/modules/projectiles/boxes_magazines/external/shotgun.dm
index 46eaf75985f4..3eef509e94cc 100644
--- a/code/modules/projectiles/boxes_magazines/external/shotgun.dm
+++ b/code/modules/projectiles/boxes_magazines/external/shotgun.dm
@@ -10,8 +10,8 @@
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"
else
diff --git a/code/modules/projectiles/boxes_magazines/external/smg.dm b/code/modules/projectiles/boxes_magazines/external/smg.dm
index c05c7332e51a..e6231a9b8cb0 100644
--- a/code/modules/projectiles/boxes_magazines/external/smg.dm
+++ b/code/modules/projectiles/boxes_magazines/external/smg.dm
@@ -8,8 +8,8 @@
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
icon_state = "46x30mmt[sprite_designation]-20"
@@ -75,7 +75,8 @@
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,8 +102,8 @@
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)]"
//NT Saber SMG
@@ -115,8 +116,8 @@
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"]"
/obj/item/ammo_box/magazine/smgm9mm/ap
@@ -145,8 +146,8 @@
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)]"
/obj/item/ammo_box/magazine/smgm45/ap
diff --git a/code/modules/projectiles/boxes_magazines/external/sniper.dm b/code/modules/projectiles/boxes_magazines/external/sniper.dm
index 6da8640160d9..6ebdb7c66402 100644
--- a/code/modules/projectiles/boxes_magazines/external/sniper.dm
+++ b/code/modules/projectiles/boxes_magazines/external/sniper.dm
@@ -9,8 +9,8 @@
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"
else
diff --git a/code/modules/projectiles/boxes_magazines/external/toy.dm b/code/modules/projectiles/boxes_magazines/external/toy.dm
index 82c97ea054ff..fdf850d9e34a 100644
--- a/code/modules/projectiles/boxes_magazines/external/toy.dm
+++ b/code/modules/projectiles/boxes_magazines/external/toy.dm
@@ -9,8 +9,8 @@
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"
else
@@ -35,8 +35,8 @@
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)]"
/obj/item/ammo_box/magazine/toy/smgm45/riot
@@ -50,8 +50,8 @@
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)]"
/obj/item/ammo_box/magazine/toy/m762/riot
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 d6128dfa15bf..c47b62ff1571 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,18 +409,18 @@
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)
+ . = ..()
/obj/item/gun/proc/reset_semicd()
@@ -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()
@@ -647,7 +647,7 @@
attachment_overlays += M
att_position += 1
- update_icon(TRUE)
+ update_appearance(UPDATE_ICON, TRUE)
for(var/datum/action/A as anything in actions)
A.build_all_button_icons()
diff --git a/code/modules/projectiles/guns/ballistic.dm b/code/modules/projectiles/guns/ballistic.dm
index 703e8dfe6a9d..bf57cfc9a886 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(mapload)
. = ..()
@@ -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,11 @@
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 +282,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 +292,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 +309,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 +341,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 +377,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 +421,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 +439,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 +448,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 +457,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 +465,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 +501,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 +631,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 ec4fd862e563..2d4cc0390a79 100644
--- a/code/modules/projectiles/guns/ballistic/automatic.dm
+++ b/code/modules/projectiles/guns/ballistic/automatic.dm
@@ -27,8 +27,8 @@
/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")
if(select == 1)
@@ -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(mapload)
. = ..()
- 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(mapload)
. = ..()
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(mapload)
. = ..()
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,8 +157,8 @@
else
..()
-/obj/item/gun/ballistic/automatic/m90/update_icon()
- ..()
+/obj/item/gun/ballistic/automatic/m90/update_appearance(updates = ALL)
+ . = ..()
switch(select)
if(0)
add_overlay("[initial(icon_state)]_semi")
@@ -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 39598331ba6c..45eed69f4d4b 100644
--- a/code/modules/projectiles/guns/ballistic/bow.dm
+++ b/code/modules/projectiles/guns/ballistic/bow.dm
@@ -43,7 +43,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()
. = ..()
@@ -61,7 +61,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)
..()
@@ -71,7 +71,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)
@@ -121,7 +121,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))
@@ -131,9 +131,10 @@
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())
@@ -451,7 +452,8 @@
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)
@@ -469,7 +471,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)
@@ -492,7 +494,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))
@@ -500,7 +502,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
@@ -512,7 +514,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
@@ -550,7 +552,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))
@@ -580,7 +582,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 9bca7518e0cc..ff4419eeca37 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,8 @@
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 +97,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 a7c5e9da5701..f0b4beb2becb 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,8 @@
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 +97,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 002f16d91691..b5c16a66652e 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..8ac34aaaa930 100644
--- a/code/modules/projectiles/guns/ballistic/rifle.dm
+++ b/code/modules/projectiles/guns/ballistic/rifle.dm
@@ -15,8 +15,8 @@
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" : ""]")
obj/item/gun/ballistic/rifle/rack(mob/user = null)
@@ -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 e5626fb46520..41a0cf2f21bb 100644
--- a/code/modules/projectiles/guns/ballistic/shotgun.dm
+++ b/code/modules/projectiles/guns/ballistic/shotgun.dm
@@ -228,12 +228,12 @@
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 c65adaa8a00f..5c387e683a95 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 cf7810067b49..f02e3b0195e8 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]
@@ -156,10 +156,10 @@
to_chat(user, span_notice("[src] is now set to [shot.select_name]."))
chambered = null
recharge_newshot(TRUE)
- update_icon(TRUE)
+ update_appearance(UPDATE_ICON, TRUE)
return
-/obj/item/gun/energy/update_icon(force_update)
+/obj/item/gun/energy/update_appearance(updates = ALL, force_update)
if(QDELETED(src))
return
..()
@@ -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 d7ede30bf273..d3454f3ebade 100644
--- a/code/modules/projectiles/guns/energy/dueling.dm
+++ b/code/modules/projectiles/guns/energy/dueling.dm
@@ -173,9 +173,9 @@
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)
+/obj/item/gun/energy/dueling/update_appearance(updates = ALL, force_update)
. = ..()
if(setting_overlay)
cut_overlay(setting_overlay)
@@ -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,8 @@
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)
diff --git a/code/modules/projectiles/guns/energy/energy_gun.dm b/code/modules/projectiles/guns/energy/energy_gun.dm
index f35aff17fee8..e130e67e277f 100644
--- a/code/modules/projectiles/guns/energy/energy_gun.dm
+++ b/code/modules/projectiles/guns/energy/energy_gun.dm
@@ -30,8 +30,8 @@
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")
@@ -163,7 +163,7 @@
I.use(1)
cell.give(250*charge_multiplier)
user.radiation += (75*charge_multiplier) //You are putting you hand into a nuclear reactor to put more uranium in it
- update_icon(TRUE)
+ update_appearance(UPDATE_ICON, TRUE)
else
if(!(previous_loc == user.loc))
to_chat(user, span_boldwarning("You move, bumping your hand on [src]'s nulear reactor's core!")) //when I said devoid of ANY safety measures I meant it
diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm
index 563a01fc4b3c..35a68a4397a6 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,11 +142,11 @@
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")
else
diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm
index 6ac021300bab..4219410763e6 100644
--- a/code/modules/projectiles/guns/energy/special.dm
+++ b/code/modules/projectiles/guns/energy/special.dm
@@ -34,8 +34,8 @@
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))
add_overlay("decloner_spin")
@@ -138,6 +138,7 @@
toolspeed = 2
/obj/item/gun/energy/plasmacutter/Initialize(mapload)
+ 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,8 @@
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 +382,9 @@
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 7b08f3da3ab4..a38c172de01f 100644
--- a/code/modules/projectiles/guns/magic.dm
+++ b/code/modules/projectiles/guns/magic.dm
@@ -49,7 +49,7 @@
. |= COMPONENT_ITEM_BURNT_OUT
charges = max_charges
- update_icon()
+ update_appearance()
recharge_newshot()
return .
@@ -108,8 +108,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 383cb47830c5..e854503dd31a 100644
--- a/code/modules/projectiles/guns/magic/wand.dm
+++ b/code/modules/projectiles/guns/magic/wand.dm
@@ -21,7 +21,8 @@
. = ..()
. += "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 +45,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 ab196eda9af9..b34ae4ce3d6b 100644
--- a/code/modules/projectiles/guns/misc/beam_rifle.dm
+++ b/code/modules/projectiles/guns/misc/beam_rifle.dm
@@ -148,7 +148,8 @@
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 ae5f27377a2b..32ed87ae43f2 100644
--- a/code/modules/projectiles/guns/misc/blastcannon.dm
+++ b/code/modules/projectiles/guns/misc/blastcannon.dm
@@ -41,10 +41,11 @@
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 +66,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 +95,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 9798c722b26a..c55c43d48052 100644
--- a/code/modules/projectiles/guns/misc/syringe_gun.dm
+++ b/code/modules/projectiles/guns/misc/syringe_gun.dm
@@ -18,7 +18,7 @@
/obj/item/gun/syringe/Initialize(mapload)
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
chambered = new /obj/item/ammo_casing/syringegun(src)
/obj/item/gun/syringe/handle_atom_del(atom/A)
@@ -37,7 +37,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)
. = ..()
@@ -71,14 +71,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
@@ -124,7 +124,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 175a73c951ce..ec78cf991cc5 100644
--- a/code/modules/projectiles/projectile/magic.dm
+++ b/code/modules/projectiles/projectile/magic.dm
@@ -450,7 +450,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 ..()
@@ -477,7 +477,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)
@@ -497,7 +497,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 d5d0914bde36..08cf4368fe55 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,8 @@
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 +348,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 +376,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 +435,7 @@
beaker = new_beaker
else
beaker = null
- update_icon()
+ update_appearance(updates = ALL)
return TRUE
/obj/machinery/chem_dispenser/on_deconstruction()
@@ -479,7 +480,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..06dc4a322e50 100644
--- a/code/modules/reagents/chemistry/machinery/chem_heater.dm
+++ b/code/modules/reagents/chemistry/machinery/chem_heater.dm
@@ -21,16 +21,17 @@
. = ..()
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 +48,7 @@
beaker = new_beaker
else
beaker = null
- update_icon()
+ update_appearance(updates = ALL)
return TRUE
/obj/machinery/chem_heater/RefreshParts()
@@ -91,7 +92,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 +130,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 177d08bc2404..3ef4dff44827 100644
--- a/code/modules/reagents/chemistry/machinery/chem_master.dm
+++ b/code/modules/reagents/chemistry/machinery/chem_master.dm
@@ -65,11 +65,12 @@
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 +104,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 +132,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 59b9f2a427f9..7e37deac3a93 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(mapload)
. = ..()
- 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,11 @@
/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 +141,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 +216,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 +230,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 +248,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 8be38a4680d0..cd0a134b2923 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,8 @@
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 +119,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 +143,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 b883fedc1ed1..ebde6133275e 100644
--- a/code/modules/reagents/chemistry/machinery/smoke_machine.dm
+++ b/code/modules/reagents/chemistry/machinery/smoke_machine.dm
@@ -36,7 +36,8 @@
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 +71,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 +132,7 @@
switch(action)
if("purge")
reagents.clear_reagents()
- update_icon()
+ update_appearance(updates = ALL)
. = TRUE
if("setting")
var/amount = text2num(params["amount"])
@@ -140,7 +141,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 96054f949928..ab72eb610a9a 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 633b94a1001b..9772b346649f 100644
--- a/code/modules/reagents/reagent_containers/blood_pack.dm
+++ b/code/modules/reagents/reagent_containers/blood_pack.dm
@@ -57,7 +57,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)
@@ -69,7 +69,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)
@@ -78,7 +78,8 @@
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)
@@ -141,4 +142,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 31ef33730ecc..a9e6f33cd25d 100644
--- a/code/modules/reagents/reagent_containers/borghypo.dm
+++ b/code/modules/reagents/reagent_containers/borghypo.dm
@@ -55,7 +55,8 @@ 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 916c955288e0..61a12f6d5d99 100644
--- a/code/modules/reagents/reagent_containers/bottle.dm
+++ b/code/modules/reagents/reagent_containers/bottle.dm
@@ -15,12 +15,13 @@
. = ..()
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
@@ -468,7 +469,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..479640f689ea 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,10 @@
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 0d4d5a14eeae..048b7f6a3e2b 100755
--- a/code/modules/reagents/reagent_containers/glass.dm
+++ b/code/modules/reagents/reagent_containers/glass.dm
@@ -119,15 +119,16 @@
/obj/item/reagent_containers/glass/beaker/Initialize(mapload)
. = ..()
- 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 +178,8 @@
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 +424,10 @@
/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 685083f3619f..f40b080a711a 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,10 @@
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
@@ -304,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")
@@ -352,7 +353,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!"))
@@ -373,7 +374,7 @@
unload_hypo(user)
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
@@ -430,7 +431,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 d338a4a87afb..88b59434ce9a 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)
RegisterSignal(src, 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,11 @@
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,8 +190,8 @@
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)
return
diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm
index 1dcc4bde816d..bb529a319e6d 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 f7b15f1ba49c..a89b7666249d 100644
--- a/code/modules/recycling/conveyor2.dm
+++ b/code/modules/recycling/conveyor2.dm
@@ -121,7 +121,8 @@ 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 +133,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 +198,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 +254,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 +272,8 @@ 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 +299,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 +320,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..5f75094c080d 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,10 @@
..()
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 +437,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 7697a7036590..e59e609ccf68 100644
--- a/code/modules/recycling/disposal/construction.dm
+++ b/code/modules/recycling/disposal/construction.dm
@@ -32,7 +32,7 @@
if(flip)
rotcomp.BaseRot(null,ROTATION_FLIP)
- update_icon()
+ update_appearance(updates = ALL)
/obj/structure/disposalconstruct/Move()
var/old_dir = dir
@@ -40,7 +40,8 @@
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 +64,7 @@
// change visibility status and force update of icon
/obj/structure/disposalconstruct/hide(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())
@@ -94,7 +95,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)
@@ -147,7 +148,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 c69675312af7..e9ababcaef9d 100644
--- a/code/modules/religion/religion_structures.dm
+++ b/code/modules/religion/religion_structures.dm
@@ -64,11 +64,12 @@
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, TYPE_PROC_REF(/atom/, 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..637d742ba362 100644
--- a/code/modules/research/destructive_analyzer.dm
+++ b/code/modules/research/destructive_analyzer.dm
@@ -48,10 +48,11 @@ 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 +95,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 +151,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 7d6c2fc83e70..accc00d87afd 100644
--- a/code/modules/research/experimentor.dm
+++ b/code/modules/research/experimentor.dm
@@ -563,12 +563,13 @@
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 305f9711f963..69c69d154f9b 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,8 @@
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 +189,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 f244b96d6aee..a73ef3e4fd53 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 5451fdd8e952..aac29f13cc32 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,8 @@
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 +162,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 f304969ebc76..588e5ab947d2 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,8 @@
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
@@ -52,8 +53,8 @@
icon_state = "RD-server-on"
/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 +66,7 @@
working = FALSE
else
working = TRUE
- update_icon()
+ update_appearance(UPDATE_ICON_STATE)
/obj/machinery/rnd/server/emp_act()
. = ..()
diff --git a/code/modules/security_levels/keycard_authentication.dm b/code/modules/security_levels/keycard_authentication.dm
index 0db2e85e71bd..2a678b699666 100644
--- a/code/modules/security_levels/keycard_authentication.dm
+++ b/code/modules/security_levels/keycard_authentication.dm
@@ -137,7 +137,7 @@ GLOBAL_VAR_INIT(emergency_access, FALSE)
for(var/turf/in_area as anything in A.get_contained_turfs())
for(var/obj/machinery/door/airlock/D in in_area)
D.emergency = TRUE
- D.update_icon(ALL, 0)
+ D.update_appearance(ALL, 0)
minor_announce("Access restrictions on maintenance and external airlocks have been lifted.", "Attention! Station-wide emergency declared!",1)
GLOB.emergency_access = TRUE
SSblackbox.record_feedback("nested tally", "keycard_auths", 1, list("emergency maintenance access", "enabled"))
@@ -147,7 +147,7 @@ GLOBAL_VAR_INIT(emergency_access, FALSE)
for(var/turf/in_area as anything in A.get_contained_turfs())
for(var/obj/machinery/door/airlock/D in in_area)
D.emergency = FALSE
- D.update_icon(ALL, 0)
+ D.update_appearance(ALL, 0)
minor_announce("Access restrictions in maintenance areas have been restored.", "Attention! Station-wide emergency rescinded:")
GLOB.emergency_access = FALSE
SSblackbox.record_feedback("nested tally", "keycard_auths", 1, list("emergency maintenance access", "disabled"))
diff --git a/code/modules/security_levels/level_interface.dm b/code/modules/security_levels/level_interface.dm
index 11fff53c633e..d7bdd68aac03 100644
--- a/code/modules/security_levels/level_interface.dm
+++ b/code/modules/security_levels/level_interface.dm
@@ -28,27 +28,26 @@
radio.independent = TRUE
radio.recalculateChannels()
-/obj/machinery/level_interface/update_icon()
- cut_overlays()
+/obj/machinery/level_interface/update_overlays()
+ . = ..()
if(!is_operational())
set_light_on(FALSE)
- return
else
set_light_on(TRUE)
switch(GLOB.security_level)
if(SEC_LEVEL_GREEN)
- add_overlay("alert-level-green")
+ . += "alert-level-green"
if(SEC_LEVEL_BLUE)
- add_overlay("alert-level-blue")
+ . += "alert-level-blue"
if(SEC_LEVEL_RED)
- add_overlay("alert-level-red")
+ . += "alert-level-red"
if(SEC_LEVEL_GAMMA)
- add_overlay("alert-level-gamma")
+ . += "alert-level-gamma"
if(SEC_LEVEL_EPSILON)
- add_overlay("alert-level-epsilon")
+ . += "alert-level-epsilon"
if(SEC_LEVEL_DELTA)
- add_overlay("alert-level-delta")
+ . += "alert-level-delta"
/obj/machinery/level_interface/ui_interact(mob/user, datum/tgui/ui)
ui = SStgui.try_update_ui(user, src, ui)
diff --git a/code/modules/security_levels/security_levels.dm b/code/modules/security_levels/security_levels.dm
index e83b789c568b..d75b10dfbe31 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)
for(var/obj/machinery/level_interface/LI in GLOB.machines)
LI.update_icon()
diff --git a/code/modules/shuttle/emergency.dm b/code/modules/shuttle/emergency.dm
index 5d5f8eac070c..d63378507154 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..82a3fcdffd47 100644
--- a/code/modules/shuttle/manipulator.dm
+++ b/code/modules/shuttle/manipulator.dm
@@ -12,11 +12,12 @@
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 8b128e9f886f..d8944c1c28d5 100644
--- a/code/modules/shuttle/spaceship_navigation_beacon.dm
+++ b/code/modules/shuttle/spaceship_navigation_beacon.dm
@@ -29,7 +29,8 @@ 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 +38,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 d4564362a1e9..3a22ffbf99cf 100644
--- a/code/modules/shuttle/special.dm
+++ b/code/modules/shuttle/special.dm
@@ -19,9 +19,10 @@
. = ..()
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 +40,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 ee058be5eda4..aea08aac0d87 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/spells/spell_types/touch/_touch.dm b/code/modules/spells/spell_types/touch/_touch.dm
index 7f37068be5ac..05f56d952c15 100644
--- a/code/modules/spells/spell_types/touch/_touch.dm
+++ b/code/modules/spells/spell_types/touch/_touch.dm
@@ -322,7 +322,7 @@
icon = 'icons/obj/wizard.dmi'
lefthand_file = 'icons/mob/inhands/misc/touchspell_lefthand.dmi'
righthand_file = 'icons/mob/inhands/misc/touchspell_righthand.dmi'
- icon_state = "latexballon"
+ icon_state = "latexballoon"
item_state = null
item_flags = NEEDS_PERMIT | ABSTRACT | HAND_ITEM
w_class = WEIGHT_CLASS_HUGE
diff --git a/code/modules/surgery/anesthesia_machine.dm b/code/modules/surgery/anesthesia_machine.dm
index 8fb1b92fac3b..bd8ea6a475a7 100644
--- a/code/modules/surgery/anesthesia_machine.dm
+++ b/code/modules/surgery/anesthesia_machine.dm
@@ -20,9 +20,10 @@
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 +45,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 +55,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 +68,7 @@
else
attached_mask.forceMove(src)
mask_out = FALSE
- update_icon()
+ update_appearance(updates = ALL)
return TRUE
return FALSE
@@ -87,7 +88,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 c591bf219261..46849132c55e 100644
--- a/code/modules/surgery/bodyparts/dismemberment.dm
+++ b/code/modules/surgery/bodyparts/dismemberment.dm
@@ -231,7 +231,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
@@ -249,7 +249,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
@@ -334,7 +334,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..e0ca3414422a 100644
--- a/code/modules/surgery/organs/appendix.dm
+++ b/code/modules/surgery/organs/appendix.dm
@@ -10,7 +10,8 @@
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 +31,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 +65,8 @@
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 5fa0ea931ed0..b394e4909dd5 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(mapload)
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
SetSlotFromZone()
/obj/item/organ/cyberimp/leg/emp_act(severity)
@@ -59,7 +59,8 @@
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 +82,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 c45e71e971ed..2be146204fa6 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()
@@ -33,7 +33,8 @@
return FALSE
return TRUE
-/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
@@ -53,7 +54,7 @@
zone = BODY_ZONE_R_ARM
if(SetSlotFromZone())
I.play_tool_sound(src)
- update_icon()
+ update_appearance(UPDATE_ICON)
to_chat(user, span_notice("You modify [src] to be installed on the [zone == BODY_ZONE_R_ARM ? "right" : "left"] arm."))
else
to_chat(user, span_warning("[src] cannot be modified!"))
@@ -327,7 +328,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 8e8318edfab1..15153dbfb727 100644
--- a/code/modules/surgery/organs/augments_chest.dm
+++ b/code/modules/surgery/organs/augments_chest.dm
@@ -169,9 +169,10 @@
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
@@ -275,9 +276,10 @@
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 ef4d029470ef..eef26953fdfb 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)
@@ -148,7 +148,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
@@ -325,7 +325,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 434931c55e1b..02c807094db4 100644
--- a/code/modules/surgery/organs/heart.dm
+++ b/code/modules/surgery/organs/heart.dm
@@ -24,9 +24,10 @@
/obj/item/organ/heart/Initialize(mapload)
. = ..()
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
@@ -51,12 +52,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 4805c86b9360..c4d1a6a16f67 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(mapload) // 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..876edecd4b59 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,12 @@
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 +71,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 ae1970316efb..22268c0930df 100644
--- a/code/modules/vending/_vending.dm
+++ b/code/modules/vending/_vending.dm
@@ -265,7 +265,8 @@ 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 +974,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/code/modules/vending/security_armaments.dm b/code/modules/vending/security_armaments.dm
index 4c7d2ceb86a1..5c8bda2a8a07 100644
--- a/code/modules/vending/security_armaments.dm
+++ b/code/modules/vending/security_armaments.dm
@@ -82,7 +82,7 @@
var/list/items = list()
for(var/obj/item/wep in inventory)
var/obj/item/gun/weapon = wep
- weapon.update_icon(TRUE)
+ weapon.update_appearance(UPDATE_ICON, TRUE)
var/icon/gun_icon = getFlatIcon(wep)
var/list/details = list()
diff --git a/icons/obj/doors/doorfire.dmi b/icons/obj/doors/doorfire.dmi
index 3b9f05cfa321..34c19dbb56ed 100644
Binary files a/icons/obj/doors/doorfire.dmi and b/icons/obj/doors/doorfire.dmi differ
diff --git a/icons/obj/mining.dmi b/icons/obj/mining.dmi
index f5c8325c1721..7f817d663dd5 100644
Binary files a/icons/obj/mining.dmi and b/icons/obj/mining.dmi differ
diff --git a/icons/obj/toy.dmi b/icons/obj/toy.dmi
index 2c488ee01b26..14fcc758d611 100644
Binary files a/icons/obj/toy.dmi and b/icons/obj/toy.dmi differ
diff --git a/tgui/docs/tutorial-and-examples.md b/tgui/docs/tutorial-and-examples.md
index 3dba803c959a..b88c157cf84a 100644
--- a/tgui/docs/tutorial-and-examples.md
+++ b/tgui/docs/tutorial-and-examples.md
@@ -84,7 +84,7 @@ input. The input's `action` and `params` are passed to the proc.
return FALSE
color = new_color
. = TRUE
- update_icon()
+ update_appearance(updates = ALL)
```
The `..()` (parent call) is very important here, as it is how we check that the
@@ -312,7 +312,7 @@ upon code review):
// A demo of proper input sanitation.
var = CLAMP(newvar, min_val, max_val)
. = TRUE
- update_icon() // Not applicable to all objects.
+ update_appearance(updates = ALL) // Not applicable to all objects.
```
And the template:
diff --git a/yogstation.dme b/yogstation.dme
index d6ca39b8e2e2..2df7c7cd33eb 100644
--- a/yogstation.dme
+++ b/yogstation.dme
@@ -641,6 +641,7 @@
#include "code\datums\elements\earhealing.dm"
#include "code\datums\elements\firestacker.dm"
#include "code\datums\elements\squish.dm"
+#include "code\datums\elements\update_icon_blocker.dm"
#include "code\datums\helper_datums\events.dm"
#include "code\datums\helper_datums\getrev.dm"
#include "code\datums\helper_datums\icon_snapshot.dm"
diff --git a/yogstation/code/_globalvars/lists/maintenance_loot.dm b/yogstation/code/_globalvars/lists/maintenance_loot.dm
index 571dbb257649..7df68e34ee9c 100644
--- a/yogstation/code/_globalvars/lists/maintenance_loot.dm
+++ b/yogstation/code/_globalvars/lists/maintenance_loot.dm
@@ -317,7 +317,7 @@ GLOBAL_LIST_INIT(maintenance_loot_traditional,list(
/obj/item/instrument/violin = W_RARE,
/obj/item/kitchen/fork = W_UNCOMMON,
/obj/item/laser_pointer = W_UNCOMMON,
- /obj/item/latexballon = W_UNCOMMON,
+ /obj/item/latexballoon = W_UNCOMMON,
/obj/item/lighter = W_RARE,
/obj/item/lighter/greyscale = W_UNCOMMON,
/obj/item/lipstick/random = W_UNCOMMON,
diff --git a/yogstation/code/controllers/subsystem/bluespace_locker.dm b/yogstation/code/controllers/subsystem/bluespace_locker.dm
index e54b407ef0c0..66b8f89d3920 100644
--- a/yogstation/code/controllers/subsystem/bluespace_locker.dm
+++ b/yogstation/code/controllers/subsystem/bluespace_locker.dm
@@ -65,8 +65,8 @@ SUBSYSTEM_DEF(bluespace_locker)
internal_locker.contents += external_locker.contents
internal_locker.open()
internal_locker.dump_contents()
- internal_locker.update_icon()
- external_locker.update_icon()
+ internal_locker.update_appearance(updates = ALL)
+ external_locker.update_appearance(updates = ALL)
/datum/controller/subsystem/bluespace_locker/proc/redistribute_locker()
if(!internal_locker)
diff --git a/yogstation/code/controllers/subsystem/yogs.dm b/yogstation/code/controllers/subsystem/yogs.dm
index 2c2903a81988..f9efc250d1ec 100644
--- a/yogstation/code/controllers/subsystem/yogs.dm
+++ b/yogstation/code/controllers/subsystem/yogs.dm
@@ -125,7 +125,7 @@ SUBSYSTEM_DEF(Yogs)
for(var/datum/department_goal/d in listOfGoals[account])
P.info += d.get_name()
P.info += "
"
- P.update_icon()
+ P.update_appearance(updates = ALL)
else
var/obj/item/paper/P = new /obj/item/paper(C.loc)
@@ -135,7 +135,7 @@ SUBSYSTEM_DEF(Yogs)
if(d.account == account)
P.info += d.get_name()
P.info += ""
- P.update_icon()
+ P.update_appearance(updates = ALL)
for(var/path in subtypesof(/datum/corporation))
diff --git a/yogstation/code/game/gamemodes/darkspawn/darkspawn_hud.dm b/yogstation/code/game/gamemodes/darkspawn/darkspawn_hud.dm
index 13890fcc370e..553f99906dd7 100644
--- a/yogstation/code/game/gamemodes/darkspawn/darkspawn_hud.dm
+++ b/yogstation/code/game/gamemodes/darkspawn/darkspawn_hud.dm
@@ -3,13 +3,13 @@
/datum/hud/New(mob/owner, ui_style = 'icons/mob/screen_midnight.dmi')
. = ..()
- psi_counter = new /atom/movable/screen/darkspawn_psi
+ psi_counter = new /atom/movable/screen/darkspawn_psi(src)
/datum/hud/human/New(mob/living/carbon/human/owner, ui_style = 'icons/mob/screen_midnight.dmi')
. = ..()
- psi_counter = new /atom/movable/screen/darkspawn_psi
+ psi_counter = new /atom/movable/screen/darkspawn_psi(src)
infodisplay += psi_counter
/datum/hud/Destroy()
. = ..()
- psi_counter = null
\ No newline at end of file
+ psi_counter = null
diff --git a/yogstation/code/game/gamemodes/gangs/dominator.dm b/yogstation/code/game/gamemodes/gangs/dominator.dm
index 142aba7a87d0..133ba8ad08c0 100644
--- a/yogstation/code/game/gamemodes/gangs/dominator.dm
+++ b/yogstation/code/game/gamemodes/gangs/dominator.dm
@@ -28,7 +28,7 @@
spark_system = new
spark_system.set_up(5, TRUE, src)
countdown = new(src)
- update_icon()
+ update_appearance(updates = ALL)
.=..()
/obj/machinery/dominator/Destroy()
@@ -54,7 +54,8 @@
/obj/machinery/dominator/tesla_act()
qdel(src)
-/obj/machinery/dominator/update_icon()
+/obj/machinery/dominator/update_appearance(updates = ALL)
+ . = ..()
cut_overlays()
if(!(stat & BROKEN))
icon_state = "dominator-active"
@@ -137,7 +138,7 @@
spark_system.start()
else if(!(stat & BROKEN))
spark_system.start()
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/dominator/obj_break(damage_flag)
@@ -196,7 +197,7 @@
SSshuttle.registerHostileEnvironment(src)
name = "[gang.name] Gang [name]"
operating = TRUE
- update_icon()
+ update_appearance(updates = ALL)
countdown.color = gang.color
countdown.start()
@@ -244,7 +245,7 @@
set_light(0)
operating = FALSE
stat |= BROKEN
- update_icon()
+ update_appearance(updates = ALL)
STOP_PROCESSING(SSmachines, src)
if(nukedisk)
nukedisk.forceMove(drop_location())
diff --git a/yogstation/code/game/gamemodes/gangs/gangtool.dm b/yogstation/code/game/gamemodes/gangs/gangtool.dm
index f26843e72475..3bf7e5b41780 100644
--- a/yogstation/code/game/gamemodes/gangs/gangtool.dm
+++ b/yogstation/code/game/gamemodes/gangs/gangtool.dm
@@ -21,7 +21,7 @@
var/list/tags = list()
/obj/item/gangtool/Initialize(mapload)
- update_icon()
+ update_appearance(updates = ALL)
if(buyable_items.len)
return ..()
for(var/i in subtypesof(/datum/gang_item))
@@ -138,7 +138,8 @@
recall(usr)
attack_self(usr)
-/obj/item/gangtool/update_icon()
+/obj/item/gangtool/update_appearance(updates = ALL)
+ . = ..()
overlays.Cut()
var/image/I = new(icon, "[icon_state]-overlay")
if(gang)
@@ -174,7 +175,7 @@
if(G)
gang = G.gang
gang.gangtools += src
- update_icon()
+ update_appearance(updates = ALL)
if(!(user.mind in gang.leaders) && promotable)
G.promote()
free_pen = TRUE
diff --git a/yogstation/code/game/gamemodes/vampire/vampire_hud.dm b/yogstation/code/game/gamemodes/vampire/vampire_hud.dm
index c1bbbefae04c..f43b025c1d78 100644
--- a/yogstation/code/game/gamemodes/vampire/vampire_hud.dm
+++ b/yogstation/code/game/gamemodes/vampire/vampire_hud.dm
@@ -3,13 +3,13 @@
/datum/hud/New(mob/owner, ui_style = 'icons/mob/screen_midnight.dmi')
. = ..()
- vamp_blood_display = new /atom/movable/screen/vampire()
+ vamp_blood_display = new /atom/movable/screen/vampire(src)
/datum/hud/human/New(mob/living/carbon/human/owner, ui_style = 'icons/mob/screen_midnight.dmi')
. = ..()
- vamp_blood_display = new /atom/movable/screen/vampire()
+ vamp_blood_display = new /atom/movable/screen/vampire(src)
infodisplay += vamp_blood_display
/datum/hud/Destroy()
. = ..()
- vamp_blood_display = null
\ No newline at end of file
+ vamp_blood_display = null
diff --git a/yogstation/code/game/mecha/makeshift/lockermech.dm b/yogstation/code/game/mecha/makeshift/lockermech.dm
index 2bd3abe045a4..0c16252b0e45 100644
--- a/yogstation/code/game/mecha/makeshift/lockermech.dm
+++ b/yogstation/code/game/mecha/makeshift/lockermech.dm
@@ -26,11 +26,11 @@
/obj/mecha/working/makeshift/go_out()
..()
- update_icon()
+ update_appearance(updates = ALL)
/obj/mecha/working/makeshift/moved_inside(mob/living/carbon/human/H)
..()
- update_icon()
+ update_appearance(updates = ALL)
/obj/mecha/working/makeshift/Exit(atom/movable/O)
diff --git a/yogstation/code/game/objects/items/brace.dm b/yogstation/code/game/objects/items/brace.dm
index b8ec8cbadaa4..3e94576a18fe 100644
--- a/yogstation/code/game/objects/items/brace.dm
+++ b/yogstation/code/game/objects/items/brace.dm
@@ -23,8 +23,8 @@
var/obj/machinery/door/airlock/placed_on
var/cover_open = FALSE
-/obj/structure/deployed_brace/update_icon()
- ..()
+/obj/structure/deployed_brace/update_appearance(updates = ALL)
+ . = ..()
cut_overlays()
if(cover_open)
add_overlay("cover_open")
@@ -53,7 +53,7 @@
cover_open = !cover_open
tool.play_tool_sound(src)
to_chat(user, span_notice("You [cover_open ? "open" : "close"] the cover."))
- update_icon()
+ update_appearance(updates = ALL)
/obj/structure/deployed_brace/wrench_act(mob/user, obj/item/tool)
if(get_dist(user, placed_on) > 1)
diff --git a/yogstation/code/game/objects/items/crayons.dm b/yogstation/code/game/objects/items/crayons.dm
index ddee748e0504..b134c20a4a65 100644
--- a/yogstation/code/game/objects/items/crayons.dm
+++ b/yogstation/code/game/objects/items/crayons.dm
@@ -88,7 +88,7 @@
if(G)
gang = G
paint_color = G.color
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/toy/crayon/spraycan/gang/examine(mob/user)
. = ..()
diff --git a/yogstation/code/game/objects/items/fishing/rods.dm b/yogstation/code/game/objects/items/fishing/rods.dm
index d007f0eab550..618f50acae0c 100644
--- a/yogstation/code/game/objects/items/fishing/rods.dm
+++ b/yogstation/code/game/objects/items/fishing/rods.dm
@@ -206,10 +206,11 @@
opened = !opened
w_class = opened ? WEIGHT_CLASS_BULKY : WEIGHT_CLASS_SMALL
playsound(src.loc, 'sound/machines/click.ogg', 50, TRUE)
- update_icon()
+ update_appearance(updates = ALL)
user.regenerate_icons()
-/obj/item/twohanded/fishingrod/collapsible/update_icon()
+/obj/item/twohanded/fishingrod/collapsible/update_appearance(updates = ALL)
+ . = ..()
item_state = opened ? "fishing_rod" : ""
icon_state = "[rod_icon_state][opened ? "" : "_c"]"
diff --git a/yogstation/code/game/objects/items/holotool/holotool.dm b/yogstation/code/game/objects/items/holotool/holotool.dm
index f85969bcfaf0..2516744b52bb 100644
--- a/yogstation/code/game/objects/items/holotool/holotool.dm
+++ b/yogstation/code/game/objects/items/holotool/holotool.dm
@@ -68,7 +68,7 @@
if(!C || QDELETED(src))
return
current_color = C
- update_icon()
+ update_appearance(updates = ALL)
action.build_all_button_icons()
user.regenerate_icons()
@@ -80,7 +80,7 @@
current_tool = mode
current_tool.on_set(src)
playsound(loc, 'yogstation/sound/items/holotool.ogg', get_clamped_volume(), 1, -1)
- update_icon()
+ update_appearance(updates = ALL)
user.regenerate_icons()
@@ -101,7 +101,8 @@
else
qdel(M)
-/obj/item/holotool/update_icon()
+/obj/item/holotool/update_appearance(updates = ALL)
+ . = ..()
cut_overlays()
if(current_tool)
var/mutable_appearance/holo_item = mutable_appearance(icon, current_tool.name)
diff --git a/yogstation/code/game/objects/items/melee/energy.dm b/yogstation/code/game/objects/items/melee/energy.dm
index 43adcdf8c2bb..89643257f457 100644
--- a/yogstation/code/game/objects/items/melee/energy.dm
+++ b/yogstation/code/game/objects/items/melee/energy.dm
@@ -7,7 +7,7 @@
if(active)
icon_state = "sword[color]"
- user.update_inv_hands()
+ user.update_held_items()
else
..()
diff --git a/yogstation/code/game/objects/items/premadepapers.dm b/yogstation/code/game/objects/items/premadepapers.dm
index a8add201328f..8659cc91b426 100644
--- a/yogstation/code/game/objects/items/premadepapers.dm
+++ b/yogstation/code/game/objects/items/premadepapers.dm
@@ -24,7 +24,7 @@
written += new/datum/langtext("
Reason: ",/datum/language/common)
written += ""
written += new/datum/langtext("
Stamp Below if Approved",/datum/language/common)
- update_icon()
+ update_appearance(updates = ALL)
/**
@@ -57,7 +57,7 @@
written += new/datum/langtext("
Administrator Notes: ",/datum/language/common)
written += ""
written += new/datum/langtext("
Stamp Below if Accepted:",/datum/language/common)
- update_icon()
+ update_appearance(updates = ALL)
/**
*
@@ -106,7 +106,7 @@
written += new/datum/langtext("
",/datum/language/common)
written += new/datum/langtext("
",/datum/language/common)
written += new/datum/langtext("Signed: ",/datum/language/common)
- update_icon()
+ update_appearance(updates = ALL)
/**
*
@@ -173,7 +173,7 @@
written += ""
written += new/datum/langtext("
",/datum/language/common)
written += new/datum/langtext("Reporting Officer's Signature:",/datum/language/common)
- update_icon()
+ update_appearance(updates = ALL)
/**
*
@@ -207,7 +207,7 @@
written += ""
written += new/datum/langtext("
",/datum/language/common)
written += new/datum/langtext("Stamp Below if Approved",/datum/language/common)
- update_icon()
+ update_appearance(updates = ALL)
/**
@@ -243,7 +243,7 @@
written += new/datum/langtext("Signed, ",/datum/language/common)
written += ""
written += new/datum/langtext("
Roboticist Notes:",/datum/language/common)
- update_icon()
+ update_appearance(updates = ALL)
/**
*
@@ -274,7 +274,7 @@
written += ""
written += new/datum/langtext("
",/datum/language/common)
written += new/datum/langtext("Stamp Below if Approved",/datum/language/common)
- update_icon()
+ update_appearance(updates = ALL)
/**
*
@@ -312,7 +312,7 @@
written += ""
written += new/datum/langtext("
",/datum/language/common)
written += new/datum/langtext("Stamp Below if Approved",/datum/language/common)
- update_icon()
+ update_appearance(updates = ALL)
/**
*
@@ -340,7 +340,7 @@
written += ""
written += new/datum/langtext("
",/datum/language/common)
written += new/datum/langtext("Stamp Below if Approved",/datum/language/common)
- update_icon()
+ update_appearance(updates = ALL)
//RD upgrade form not included because from personal experience if you don't upgrade stuff you will be lynched
@@ -372,7 +372,7 @@
written += new/datum/langtext("
Signed, ",/datum/language/common)
written += ""
written += new/datum/langtext("
Stamp Below if Approved",/datum/language/common)
- update_icon()
+ update_appearance(updates = ALL)
/**
*
@@ -403,7 +403,7 @@
written += ""
written += new/datum/langtext("
Stamp:",/datum/language/common)
written += new/datum/langtext("",/datum/language/common)
- update_icon()
+ update_appearance(updates = ALL)
/**
*
@@ -476,7 +476,7 @@
written += ""
written += new/datum/langtext(", hereby acknowledge that I have answered this test's questions to the best of my ability, and acknowledge that if I fail this test, a penalty to be determined may be applied to me.
",/datum/language/common)
written += new/datum/langtext("Test Administrator: ",/datum/language/common)
- update_icon()
+ update_appearance(updates = ALL)
/**
*
@@ -501,7 +501,7 @@
written += new/datum/langtext("4. Who is the CEO of Nanotrasen? Answer below. Theo Deimi
",/datum/language/common)
written += new/datum/langtext("5. From the following letters, Z V B D M K T P H S Y C, which 2, in order, come last in the alphabet? YZ
",/datum/language/common)
written += new/datum/langtext("TOP SECRET - Command Eyes Only",/datum/language/common)
- update_icon()
+ update_appearance(updates = ALL)
// How to perform autopsy
@@ -514,7 +514,7 @@
written += new/datum/langtext("Step 1: Apply drapes to the chest and select Autopsy.
",/datum/language/common)
written += new/datum/langtext("Step 2: Incise the chest with a scalpel.
",/datum/language/common)
written += new/datum/langtext("Step 3: While holding a forensic scanner in your off-hand, perform the autopsy using the scalpel again.
",/datum/language/common)
- update_icon()
+ update_appearance(updates = ALL)
//academy ruin papers
@@ -551,7 +551,7 @@
written += new/datum/langtext("To: Recruiter Billy the Lame
",/datum/language/common)
written += new/datum/langtext("Bill, where the heck did you find this guy? Are you sure he's wizard material..? He st--te-s a-lot. He's a -tink-ng l-zard--
",/datum/language/common)
written += new/datum/langtext("The rest of the paper is charred...",/datum/language/common)
- update_icon()
+ update_appearance(updates = ALL)
@@ -606,7 +606,7 @@
new /obj/item/paper/paperwork/incident_report(src)
new /obj/item/paper/paperwork/literacytest(src)
toppaper = contents[contents.len]
- update_icon()
+ update_appearance(updates = ALL)
/**
* Initializes the Head of Security's clipboard.
@@ -633,7 +633,7 @@
for (var/i in 1 to 10)
new /obj/item/paper/paperwork/sec_incident_report(src)
toppaper = contents[contents.len]
- update_icon()
+ update_appearance(updates = ALL)
/**
* Initializes the Captain's clipboard.
@@ -658,7 +658,7 @@
new /obj/item/paper/paperwork/literacytest(src)
new /obj/item/paper/paperwork/literacytest/answers(src)
toppaper = contents[contents.len]
- update_icon()
+ update_appearance(updates = ALL)
/**
* Initializes the Head of Personnels clipboard.
@@ -685,7 +685,7 @@
new /obj/item/paper/paperwork/literacytest(src)
new /obj/item/paper/paperwork/literacytest/answers(src)
toppaper = contents[contents.len]
- update_icon()
+ update_appearance(updates = ALL)
/**
* Initializes the Warden's clipboard.
@@ -709,7 +709,7 @@
for (var/i in 1 to 10)
new /obj/item/paper/paperwork/sec_incident_report(src)
toppaper = contents[contents.len]
- update_icon()
+ update_appearance(updates = ALL)
/**
* Initializes the Chief Engineer's clipboard.
@@ -732,7 +732,7 @@
new /obj/item/paper/paperwork/hopaccessrequestform(src)
new /obj/item/paper/paperwork/incident_report(src)
toppaper = contents[contents.len]
- update_icon()
+ update_appearance(updates = ALL)
/**
* Initializes the Chief Medical Officer's clipboard.
@@ -755,7 +755,7 @@
new /obj/item/paper/paperwork/hopaccessrequestform(src)
new /obj/item/paper/paperwork/incident_report(src)
toppaper = contents[contents.len]
- update_icon()
+ update_appearance(updates = ALL)
/**
* Initializes security officer clipboards.
@@ -771,7 +771,7 @@
for (var/i in 1 to 10)
new /obj/item/paper/paperwork/incident_report(src)
toppaper = contents[contents.len]
- update_icon()
+ update_appearance(updates = ALL)
/**
* Initializes the admin variant clipboard.
@@ -808,5 +808,5 @@
new /obj/item/paper/paperwork/literacytest(src)
new /obj/item/paper/paperwork/literacytest/answers(src)
toppaper = contents[contents.len]
- update_icon()
+ update_appearance(updates = ALL)
//turdis bad
diff --git a/yogstation/code/game/objects/items/sharpener.dm b/yogstation/code/game/objects/items/sharpener.dm
index e30c0094ec3b..3b05c683ea47 100644
--- a/yogstation/code/game/objects/items/sharpener.dm
+++ b/yogstation/code/game/objects/items/sharpener.dm
@@ -1,2 +1,3 @@
-/obj/item/sharpener/update_icon()
- icon_state = "[initial(icon_state)]_used"
+/obj/item/sharpener/update_appearance(updates = ALL)
+ . = ..()
+ icon_state = "[initial(icon_state)]_used"
diff --git a/yogstation/code/game/objects/items/tool_switcher.dm b/yogstation/code/game/objects/items/tool_switcher.dm
index 119575a3914d..029336dcd2b6 100644
--- a/yogstation/code/game/objects/items/tool_switcher.dm
+++ b/yogstation/code/game/objects/items/tool_switcher.dm
@@ -113,7 +113,7 @@
current_tool = T
if(istype(loc, /mob))
var/mob/M = loc
- M.update_inv_hands()
+ M.update_held_items()
/obj/item/storage/belt/tool_switcher/proc/switch_tool_index(I)
if(!current_program || I > current_program.tools_list.len || I < 1)
diff --git a/yogstation/code/game/objects/items/tools.dm b/yogstation/code/game/objects/items/tools.dm
index cde82f097b5b..03236cdea87f 100644
--- a/yogstation/code/game/objects/items/tools.dm
+++ b/yogstation/code/game/objects/items/tools.dm
@@ -66,7 +66,7 @@
to_chat(user,span_notice("Your servos whirr as the cutting head reconfigures into a prying head."))
else
to_chat(user, span_notice("You attach the pry jaws to [src]."))
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/jawsoflife/proc/transform_cutters(mob/user)
attack_verb = list("pinched", "nipped")
@@ -80,7 +80,7 @@
to_chat(user,span_notice("Your servos whirr as the prying head reconfigures into a cutting head."))
else
to_chat(user, span_notice("You attach the cutting jaws to [src]."))
- update_icon()
+ update_appearance(updates = ALL)
//better handdrill
/obj/item/handdrill
@@ -138,7 +138,7 @@
to_chat(user,span_notice("Your servos whirr as the drill reconfigures into bolt mode."))
else
to_chat(user, span_notice("You attach the bolt driver bit to [src]."))
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/handdrill/proc/transform_screwdriver(mob/user)
desc = "A simple powered hand drill. It's fitted with a screw bit."
@@ -150,7 +150,7 @@
to_chat(user,span_notice("Your servos whirr as the drill reconfigures into screw mode."))
else
to_chat(user, span_notice("You attach the screw driver bit to [src]."))
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/jawsoflife/jimmy
name = "airlock jimmy"
diff --git a/yogstation/code/game/objects/items/weaponry.dm b/yogstation/code/game/objects/items/weaponry.dm
index 44169c7604fd..18fb522737a7 100644
--- a/yogstation/code/game/objects/items/weaponry.dm
+++ b/yogstation/code/game/objects/items/weaponry.dm
@@ -2,7 +2,7 @@
name = "raised hand"
desc = "Slap my hand."
icon = 'icons/obj/toy.dmi'
- icon_state = "latexballon"
+ icon_state = "latexballoon"
item_state = "nothing"
hitsound = 'sound/weapons/punchmiss.ogg'
force = 0
@@ -29,7 +29,7 @@
name = "hand for holding"
desc = "You rapscallion, how scandalous!"
icon = 'icons/obj/toy.dmi'
- icon_state = "latexballon"
+ icon_state = "latexballoon"
item_state = "nothing"
hitsound = 'sound/weapons/punchmiss.ogg'
force = 0
diff --git a/yogstation/code/game/objects/structures/fireaxe.dm b/yogstation/code/game/objects/structures/fireaxe.dm
index 2ceb921d75bf..5d1d8c15033b 100644
--- a/yogstation/code/game/objects/structures/fireaxe.dm
+++ b/yogstation/code/game/objects/structures/fireaxe.dm
@@ -9,7 +9,7 @@
/obj/structure/fireaxecabinet/Initialize(mapload)//<-- mirrored/overwritten proc
. = ..()
fireaxe = new
- update_icon()
+ update_appearance(updates = ALL)
//Sets up a spark system
spark_system = new /datum/effect_system/spark_spread
spark_system.set_up(2, 1, src)
@@ -86,7 +86,7 @@
audible_message("You hear an audible clunk as the [name]'s bolt [locked ? "retracts" : "locks into place"].")
playsound(loc, "sound/machines/locktoggle.ogg", 30, 1, -3)
locked = !locked
- update_icon()
+ update_appearance(updates = ALL)
/obj/structure/fireaxecabinet/emag_act(mob/user)
//this allows you to emag the fireaxe cabinet, unlocking it immediately.
@@ -105,5 +105,5 @@
playsound(loc, "sound/machines/locktoggle.ogg", 30, 1, -3)
locked = 0
audible_message("You hear an audible clunk as the [name]'s bolt retracts.")
- update_icon()
+ update_appearance(updates = ALL)
//Fireaxe Cabinet is now permanently unlocked.
diff --git a/yogstation/code/game/objects/structures/toilet_bong.dm b/yogstation/code/game/objects/structures/toilet_bong.dm
index 6236ddc89caf..5db6beaca9fb 100644
--- a/yogstation/code/game/objects/structures/toilet_bong.dm
+++ b/yogstation/code/game/objects/structures/toilet_bong.dm
@@ -15,16 +15,15 @@
STR.max_w_class = WEIGHT_CLASS_SMALL
STR.max_combined_w_class = WEIGHT_CLASS_SMALL * 24
STR.max_items = 24
- RegisterSignal(STR, COMSIG_STORAGE_INSERTED, TYPE_PROC_REF(/atom/, update_icon))
- RegisterSignal(STR, COMSIG_STORAGE_REMOVED, TYPE_PROC_REF(/atom/, update_icon))
- weed_overlay = mutable_appearance('yogstation/icons/obj/watercloset.dmi', "weed")
+ RegisterSignal(STR, COMSIG_STORAGE_INSERTED, TYPE_PROC_REF(/atom/, update_appearance))
+ RegisterSignal(STR, COMSIG_STORAGE_REMOVED, TYPE_PROC_REF(/atom/, update_appearance))
START_PROCESSING(SSobj, src)
-/obj/structure/toilet_bong/update_icon()
+/obj/structure/toilet_bong/update_overlays()
. = ..()
- cut_overlays()
- if (LAZYLEN(contents))
- add_overlay(weed_overlay)
+ if(LAZYLEN(contents))
+ weed_overlay = mutable_appearance('yogstation/icons/obj/watercloset.dmi', "weed")
+ . += weed_overlay
/obj/structure/toilet_bong/attack_hand(mob/user)
. = ..()
@@ -44,7 +43,7 @@
smoke.set_up(smoke_spread, location = location, carry = boof.reagents, silent = TRUE)
smoke.start()
qdel(boof)
- update_icon()
+ update_appearance(updates = ALL)
// It's a bong powered by a **flamethrower**, it's definitely an open flame!!
/obj/structure/toilet_bong/process()
diff --git a/yogstation/code/modules/antagonists/darkspawn/darkspawn_objects/umbral_tendrils.dm b/yogstation/code/modules/antagonists/darkspawn/darkspawn_objects/umbral_tendrils.dm
index 1c55ec101a61..64286afa1606 100644
--- a/yogstation/code/modules/antagonists/darkspawn/darkspawn_objects/umbral_tendrils.dm
+++ b/yogstation/code/modules/antagonists/darkspawn/darkspawn_objects/umbral_tendrils.dm
@@ -82,7 +82,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)
visible_message(span_danger("The light in [PDA] shorts out!"))
else
visible_message(span_danger("[O] is disintegrated by [src]!"))
diff --git a/yogstation/code/modules/antagonists/shadowling/shadowling_abilities.dm b/yogstation/code/modules/antagonists/shadowling/shadowling_abilities.dm
index bd7bf2d88a81..60a0c1879c0d 100644
--- a/yogstation/code/modules/antagonists/shadowling/shadowling_abilities.dm
+++ b/yogstation/code/modules/antagonists/shadowling/shadowling_abilities.dm
@@ -521,7 +521,7 @@
target_apc.cell?.charge = 0 //Sent to the shadow realm
target_apc.chargemode = 0 //Won't recharge either until an engineer hits the button
target_apc.charging = 0
- target_apc.update_icon()
+ target_apc.update_appearance(updates = ALL)
return TRUE
diff --git a/yogstation/code/modules/antagonists/slaughter/slaughter.dm b/yogstation/code/modules/antagonists/slaughter/slaughter.dm
index 561a30f50e9d..692466f0b5e2 100644
--- a/yogstation/code/modules/antagonists/slaughter/slaughter.dm
+++ b/yogstation/code/modules/antagonists/slaughter/slaughter.dm
@@ -133,9 +133,6 @@
icon_state = "demon_heart-on"
decay_factor = 0
-/obj/item/organ/heart/demon/update_icon()
- return //always beating visually
-
/obj/item/organ/heart/demon/attack(mob/M, mob/living/carbon/user, obj/target)
if(M != user)
return ..()
diff --git a/yogstation/code/modules/assembly/signaler.dm b/yogstation/code/modules/assembly/signaler.dm
index 951b9fbb2e83..889c0eac2cbd 100644
--- a/yogstation/code/modules/assembly/signaler.dm
+++ b/yogstation/code/modules/assembly/signaler.dm
@@ -5,9 +5,10 @@
/obj/item/assembly/signaler/Initialize(mapload)
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
-/obj/item/assembly/signaler/update_icon()
+/obj/item/assembly/signaler/update_appearance(updates = ALL)
+ . = ..()
if(label_color)
cut_overlays()
attached_overlays = list()
diff --git a/yogstation/code/modules/atmospherics/machinery/pipes/bluespace.dm b/yogstation/code/modules/atmospherics/machinery/pipes/bluespace.dm
index 7e9daa9c63f1..b362ea5c6abb 100644
--- a/yogstation/code/modules/atmospherics/machinery/pipes/bluespace.dm
+++ b/yogstation/code/modules/atmospherics/machinery/pipes/bluespace.dm
@@ -47,9 +47,10 @@ GLOBAL_LIST_EMPTY(bluespace_pipe_networks)
return ..() + GLOB.bluespace_pipe_networks[bluespace_network_name] - src
/obj/machinery/atmospherics/pipe/bluespace/hide()
- update_icon()
+ update_appearance(updates = ALL)
-/obj/machinery/atmospherics/pipe/bluespace/update_icon(showpipe)
+/obj/machinery/atmospherics/pipe/bluespace/update_appearance(updates = ALL, showpipe)
+ . = ..()
underlays.Cut()
var/turf/T = loc
@@ -83,4 +84,4 @@ GLOBAL_LIST_EMPTY(bluespace_pipe_networks)
if(color)
. = getpipeimage('icons/obj/atmospherics/components/binary_devices.dmi', state, dir, color)
else
- . = getpipeimage('icons/obj/atmospherics/components/binary_devices.dmi', state, dir)
\ No newline at end of file
+ . = getpipeimage('icons/obj/atmospherics/components/binary_devices.dmi', state, dir)
diff --git a/yogstation/code/modules/clothing/head/helmet.dm b/yogstation/code/modules/clothing/head/helmet.dm
index ffd7174204d6..071e0ba69fe0 100644
--- a/yogstation/code/modules/clothing/head/helmet.dm
+++ b/yogstation/code/modules/clothing/head/helmet.dm
@@ -5,7 +5,8 @@
. = ..()
initial_state = "[initial(icon_state)]"
-/obj/item/clothing/head/helmet/update_icon()
+/obj/item/clothing/head/helmet/update_appearance(updates = ALL)
+ . = ..()
var/state = "[initial_state]"
if(attached_light)
if(attached_light.on)
diff --git a/yogstation/code/modules/clothing/suits/nerd.dm b/yogstation/code/modules/clothing/suits/nerd.dm
index 94abc9883b90..4132349827ed 100644
--- a/yogstation/code/modules/clothing/suits/nerd.dm
+++ b/yogstation/code/modules/clothing/suits/nerd.dm
@@ -57,7 +57,7 @@
. = ..()
GC = new(src)
GC.scanning = TRUE
- update_icon()
+ update_appearance(updates = ALL)
/obj/item/clothing/suit/armor/nerd/Destroy()
QDEL_NULL(GC)
diff --git a/yogstation/code/modules/donor/unique_donator_items.dm b/yogstation/code/modules/donor/unique_donator_items.dm
index dbcd8769d879..c19a4129f300 100644
--- a/yogstation/code/modules/donor/unique_donator_items.dm
+++ b/yogstation/code/modules/donor/unique_donator_items.dm
@@ -553,9 +553,9 @@ Uncomment this and use atomproccall as necessary, then copypaste the output into
/datum/donator_gear/saxophone
name = "saxophone"
unlock_path = /obj/item/instrument/saxophone
-/datum/donator_gear/latexballon
+/datum/donator_gear/latexballoon
name = "latex glove"
- unlock_path = /obj/item/latexballon
+ unlock_path = /obj/item/latexballoon
/datum/donator_gear/zippo
name = "Zippo lighter"
unlock_path = /obj/item/lighter
diff --git a/yogstation/code/modules/guardian/abilities/major/healing.dm b/yogstation/code/modules/guardian/abilities/major/healing.dm
index d471a2b1fe89..326b742eeb71 100644
--- a/yogstation/code/modules/guardian/abilities/major/healing.dm
+++ b/yogstation/code/modules/guardian/abilities/major/healing.dm
@@ -45,7 +45,7 @@
guardian.do_attack_animation(O)
O.obj_integrity = min(O.obj_integrity + (O.max_integrity * 0.1), O.max_integrity)
var/obj/effect/temp_visual/heal/H = new /obj/effect/temp_visual/heal(get_turf(O))
- O.update_icon()
+ O.update_appearance(updates = ALL)
if (guardian.namedatum)
H.color = guardian.namedatum.color
guardian.changeNext_move(CLICK_CD_MELEE)
diff --git a/yogstation/code/modules/jobs/job_types/_job.dm b/yogstation/code/modules/jobs/job_types/_job.dm
index 6f74b51930a9..d7c78f2d4ec1 100644
--- a/yogstation/code/modules/jobs/job_types/_job.dm
+++ b/yogstation/code/modules/jobs/job_types/_job.dm
@@ -49,18 +49,18 @@
var/obj/item/modular_computer/tablet/pda/PDA = locate(/obj/item/modular_computer/tablet/pda) in H.get_all_contents()
if(PDA)
PDA.finish_color = "glass"
- PDA.update_icon()
+ PDA.update_appearance(updates = ALL)
if(PDA_COLOR_PIPBOY)
var/obj/item/modular_computer/tablet/pda/PDA = locate(/obj/item/modular_computer/tablet/pda) in H.get_all_contents()
if(PDA)
PDA.finish_color = "pipboy"
PDA.slot_flags |= ITEM_SLOT_GLOVES
- PDA.update_icon()
+ PDA.update_appearance(updates = ALL)
if(PDA_COLOR_RAINBOW)
var/obj/item/modular_computer/tablet/pda/PDA = locate(/obj/item/modular_computer/tablet/pda) in H.get_all_contents()
if(PDA)
PDA.finish_color = "rainbow"
- PDA.update_icon()
+ PDA.update_appearance(updates = ALL)
/datum/job/proc/give_cape(mob/living/H, mob/M)
var/client/C = M.client
diff --git a/yogstation/code/modules/mob/living/brain/MMI.dm b/yogstation/code/modules/mob/living/brain/MMI.dm
index 938d33afd02c..de1634975f93 100644
--- a/yogstation/code/modules/mob/living/brain/MMI.dm
+++ b/yogstation/code/modules/mob/living/brain/MMI.dm
@@ -7,7 +7,7 @@
brain = newbrain
name = "[initial(name)]: [brain.real_name]"
to_chat(brainmob, "(If your brain was removed after your death you don't remember how you died, or who killed you. See rule 1.6.") //yogs
- update_icon()
+ update_appearance(updates = ALL)
return
.=..()
diff --git a/yogstation/code/modules/mob/living/simple_animal/friendly/chocobo.dm b/yogstation/code/modules/mob/living/simple_animal/friendly/chocobo.dm
index c99a33a04e1d..29662f0bdf65 100644
--- a/yogstation/code/modules/mob/living/simple_animal/friendly/chocobo.dm
+++ b/yogstation/code/modules/mob/living/simple_animal/friendly/chocobo.dm
@@ -14,9 +14,9 @@
speak_chance = 2
turns_per_move = 5
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab = 2)
- response_help = "pets"
+ response_help = "pets"
response_disarm = "gently pushes aside"
- response_harm = "kicks"
+ response_harm = "kicks"
attacktext = "kicks"
health = 60
maxHealth = 60
@@ -33,7 +33,7 @@
if(random_color)
var/newcolor = rgb(rand(0, 255), rand(0, 255), rand(0, 255))
add_atom_colour(newcolor, FIXED_COLOUR_PRIORITY)
- update_icon()
+ update_appearance(UPDATE_ICON)
var/datum/component/riding/D = LoadComponent(/datum/component/riding)
D.set_riding_offsets(RIDING_OFFSET_ALL, list(TEXT_NORTH = list(0, 8, MOB_LAYER), TEXT_SOUTH = list(0, 8, MOB_LAYER), TEXT_EAST = list(0, 8, MOB_LAYER), TEXT_WEST = list( 0, 8, MOB_LAYER)))
D.set_vehicle_dir_layer(SOUTH, ABOVE_MOB_LAYER)
@@ -44,7 +44,7 @@
/mob/living/simple_animal/chocobo/death(gibbed)
. = ..()
- update_icon()
+ update_appearance(UPDATE_ICON)
for(var/mob/living/N in buckled_mobs)
unbuckle_mob(N)
can_buckle = FALSE
@@ -53,17 +53,12 @@
. = ..()
if(.)
can_buckle = initial(can_buckle)
- update_icon()
+ update_appearance(UPDATE_ICON)
-/mob/living/simple_animal/chocobo/update_icon()
+/mob/living/simple_animal/chocobo/update_overlays()
+ . = ..()
if(!random_color) //icon override
return
- cut_overlays()
- if(stat == DEAD)
- var/mutable_appearance/base_overlay = mutable_appearance(icon, "chocobo_limbs_dead")
- base_overlay.appearance_flags = RESET_COLOR
- add_overlay(base_overlay)
- else
- var/mutable_appearance/base_overlay = mutable_appearance(icon, "chocobo_limbs")
- base_overlay.appearance_flags = RESET_COLOR
- add_overlay(base_overlay)
+ var/mutable_appearance/base_overlay = mutable_appearance(icon, "chocobo_limbs[(stat == DEAD) ? "_dead" : ""]")
+ base_overlay.appearance_flags = RESET_COLOR
+ . += base_overlay
diff --git a/yogstation/code/modules/mob/living/simple_animal/hostile/retaliate/king_of_goats.dm b/yogstation/code/modules/mob/living/simple_animal/hostile/retaliate/king_of_goats.dm
index 8957c9d389fe..9d2ebd5f8596 100644
--- a/yogstation/code/modules/mob/living/simple_animal/hostile/retaliate/king_of_goats.dm
+++ b/yogstation/code/modules/mob/living/simple_animal/hostile/retaliate/king_of_goats.dm
@@ -105,7 +105,7 @@ Difficulty: Insanely Hard
/mob/living/simple_animal/hostile/retaliate/goat/king/phase2/Initialize(mapload)
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
/mob/living/simple_animal/hostile/retaliate/goat/king/Found(atom/A)
if(isliving(A))
@@ -251,11 +251,10 @@ Difficulty: Insanely Hard
player.music_path = /datum/music/sourced/battle/king_goat_2
player.do_range_check(0)
stun_chance = 10
- update_icon()
+ update_appearance(UPDATE_ICON)
visible_message(span_cult("\The [src]' wounds close with a flash, and when he emerges, he's even larger than before!"))
-
-/mob/living/simple_animal/hostile/retaliate/goat/king/phase2/update_icon()
+/mob/living/simple_animal/hostile/retaliate/goat/king/phase2/update_icon_state()
var/matrix/M = new
if(phase3)
icon_state = "king_goat3"
@@ -265,6 +264,7 @@ Difficulty: Insanely Hard
M.Scale(1.25)
transform = M
pixel_y = 10
+ return ..()
/mob/living/simple_animal/hostile/retaliate/goat/king/phase2/Life(seconds_per_tick = SSMOBS_DT, times_fired)
. = ..()
diff --git a/yogstation/code/modules/power/singularity/particle_accelerator/particle_control.dm b/yogstation/code/modules/power/singularity/particle_accelerator/particle_control.dm
index 0e252afdaf75..f0ae8bf53e30 100644
--- a/yogstation/code/modules/power/singularity/particle_accelerator/particle_control.dm
+++ b/yogstation/code/modules/power/singularity/particle_accelerator/particle_control.dm
@@ -16,4 +16,4 @@
if(!active)
toggle_power()
- update_icon()
+ update_appearance(updates = ALL)
diff --git a/yogstation/code/modules/power/validhunter.dm b/yogstation/code/modules/power/validhunter.dm
index 63262bd57139..ca33a87da00d 100644
--- a/yogstation/code/modules/power/validhunter.dm
+++ b/yogstation/code/modules/power/validhunter.dm
@@ -15,7 +15,8 @@
connect_to_network()
return ..()
-/obj/machinery/power/validhunter_engine/update_icon()
+/obj/machinery/power/validhunter_engine/update_appearance(updates = ALL)
+ . = ..()
if(operating)
icon_state = "throw_me_in_the_trash_and_feed_my_remains_to_the_devil_operating"
else
@@ -74,7 +75,7 @@
/obj/machinery/power/validhunter_engine/proc/process_mob(mob/living/L, mob/user)
operating = TRUE
- update_icon()
+ update_appearance(updates = ALL)
playsound(src.loc, 'sound/machines/terminal_on.ogg', 50, 1)
L.forceMove(src)
@@ -159,7 +160,7 @@
pixel_x = initial(pixel_x) //return to its spot after shaking
operating = FALSE
- update_icon()
+ update_appearance(updates = ALL)
/obj/machinery/power/validhunter_engine/proc/fake_gib(mob/living/L)
playsound(src.loc, 'sound/machines/terminal_off.ogg', 50, 1)
@@ -167,5 +168,5 @@
dropContents()
operating = FALSE
- update_icon()
+ update_appearance(updates = ALL)
diff --git a/yogstation/code/modules/projectiles/guns/ballistic/launchers.dm b/yogstation/code/modules/projectiles/guns/ballistic/launchers.dm
index 9aaa8b623031..060b47aee275 100644
--- a/yogstation/code/modules/projectiles/guns/ballistic/launchers.dm
+++ b/yogstation/code/modules/projectiles/guns/ballistic/launchers.dm
@@ -13,8 +13,9 @@
casing_ejector = FALSE
internal_magazine = TRUE
-/obj/item/gun/ballistic/speargun/update_icon()
- return
+/obj/item/gun/ballistic/speargun/Initialize(mapload)
+ AddElement(/datum/element/update_icon_blocker)
+ return ..()
/obj/item/gun/ballistic/speargun/attack_self()
return
diff --git a/yogstation/code/modules/reagents/reagent_containers/hypospray.dm b/yogstation/code/modules/reagents/reagent_containers/hypospray.dm
index 64698a74717a..82126b794a7f 100644
--- a/yogstation/code/modules/reagents/reagent_containers/hypospray.dm
+++ b/yogstation/code/modules/reagents/reagent_containers/hypospray.dm
@@ -23,7 +23,8 @@
amount_per_transfer_from_this = 25
list_reagents = list(/datum/reagent/medicine/stimulants = 75)
-/obj/item/reagent_containers/autoinjector/medipen/stimpack/large/update_icon()
+/obj/item/reagent_containers/autoinjector/medipen/stimpack/large/update_appearance(updates = ALL)
+ . = ..()
if(reagents.total_volume > 25)
icon_state = initial(icon_state)
else if(reagents.total_volume)
@@ -45,7 +46,8 @@
var/enlightenment = pick(strings(REDPILL_FILE, "redpill_questions"))
to_chat(M, span_notice("[enlightenment]"))
-/obj/item/reagent_containers/autoinjector/medipen/stimpack/large/redpill/update_icon()
+/obj/item/reagent_containers/autoinjector/medipen/stimpack/large/redpill/update_appearance(updates = ALL)
+ . = ..()
if(reagents.total_volume > 25)
icon_state = initial(icon_state)
else if(reagents.total_volume)
diff --git a/yogstation/code/modules/recycling/disposal/pipe_sorting.dm b/yogstation/code/modules/recycling/disposal/pipe_sorting.dm
index f62799bbc453..9c18917f9436 100644
--- a/yogstation/code/modules/recycling/disposal/pipe_sorting.dm
+++ b/yogstation/code/modules/recycling/disposal/pipe_sorting.dm
@@ -27,7 +27,8 @@
if(!wires.is_cut(WIRE_SORT_SCAN))
sort_scan = TRUE
-/obj/structure/disposalpipe/sorting/update_icon()
+/obj/structure/disposalpipe/sorting/update_appearance(updates = ALL)
+ . = ..()
cut_overlays()
. = ..()
if(panel_open)
@@ -37,7 +38,7 @@
panel_open = !panel_open
I.play_tool_sound(src)
to_chat(user, span_notice("You [panel_open ? "open" : "close"] the wire panel."))
- update_icon()
+ update_appearance(updates = ALL)
return TRUE
/obj/structure/disposalpipe/sorting/attackby(obj/item/I, mob/user)
diff --git a/yogstation/code/modules/spacepods/construction.dm b/yogstation/code/modules/spacepods/construction.dm
index 52b704d195ca..6edc64d42c99 100644
--- a/yogstation/code/modules/spacepods/construction.dm
+++ b/yogstation/code/modules/spacepods/construction.dm
@@ -200,4 +200,4 @@
user.visible_message("[user] welds [src]'s armor.", "You weld [src]'s armor.")
// finally this took too fucking long
// somehow this takes up 40 lines less code than the original, code-less version. And it actually works
- update_icon()
+ update_appearance(updates = ALL)
diff --git a/yogstation/code/modules/spacepods/equipment.dm b/yogstation/code/modules/spacepods/equipment.dm
index aec8c6517d61..f0162224c55c 100644
--- a/yogstation/code/modules/spacepods/equipment.dm
+++ b/yogstation/code/modules/spacepods/equipment.dm
@@ -38,7 +38,7 @@
/obj/item/spacepod_equipment/weaponry/on_install(obj/spacepod/SP)
. = ..()
SP.weapon = src
- SP.update_icon()
+ SP.update_appearance(updates = ALL)
/obj/item/spacepod_equipment/weaponry/on_uninstall()
. = ..()
diff --git a/yogstation/code/modules/spacepods/physics.dm b/yogstation/code/modules/spacepods/physics.dm
index 4eb92c5b40c5..26fa44f3bb96 100644
--- a/yogstation/code/modules/spacepods/physics.dm
+++ b/yogstation/code/modules/spacepods/physics.dm
@@ -207,7 +207,7 @@
C.pixel_y = last_offset_y*32
animate(C, pixel_x = offset_x*32, pixel_y = offset_y*32, time = time SECONDS, flags=ANIMATION_END_NOW)
user_thrust_dir = 0
- update_icon()
+ update_appearance(updates = ALL)
/obj/spacepod/Bumped(atom/movable/A)
if(A.dir & NORTH)
diff --git a/yogstation/code/modules/spacepods/spacepod.dm b/yogstation/code/modules/spacepods/spacepod.dm
index 769a4112cc45..429ee471e3ce 100644
--- a/yogstation/code/modules/spacepods/spacepod.dm
+++ b/yogstation/code/modules/spacepods/spacepod.dm
@@ -168,12 +168,12 @@ GLOBAL_LIST_INIT(spacepods_list, list())
if(W.use_tool(src, user, 50, amount=3, volume = 50))
if(repairing)
obj_integrity = min(max_integrity, obj_integrity + 10)
- update_icon()
+ update_appearance(updates = ALL)
to_chat(user, span_notice("You mend some [pick("dents","bumps","damage")] with [W]"))
else if(!cell && !internal_tank && !equipment.len && !pilot && !passengers.len && construction_state == SPACEPOD_ARMOR_WELDED)
user.visible_message("[user] slices off [src]'s armor.", span_notice("You slice off [src]'s armor."))
construction_state = SPACEPOD_ARMOR_SECURED
- update_icon()
+ update_appearance(updates = ALL)
return TRUE
return ..()
@@ -235,7 +235,7 @@ GLOBAL_LIST_INIT(spacepods_list, list())
max_integrity = armor.pod_integrity
obj_integrity = max_integrity - integrity_failure + obj_integrity
pod_armor = armor
- update_icon()
+ update_appearance(updates = ALL)
/obj/spacepod/proc/remove_armor()
if(!pod_armor)
@@ -243,7 +243,7 @@ GLOBAL_LIST_INIT(spacepods_list, list())
max_integrity = integrity_failure
desc = initial(desc)
pod_armor = null
- update_icon()
+ update_appearance(updates = ALL)
/obj/spacepod/proc/InterceptClickOn(mob/user, params, atom/target)
@@ -256,7 +256,7 @@ GLOBAL_LIST_INIT(spacepods_list, list())
/obj/spacepod/take_damage()
..()
- update_icon()
+ update_appearance(updates = ALL)
/obj/spacepod/return_air()
return cabin_air
@@ -396,7 +396,8 @@ GLOBAL_LIST_INIT(spacepods_list, list())
// there here's your frame pieces back, happy?
qdel(src)
-/obj/spacepod/update_icon()
+/obj/spacepod/update_appearance(updates = ALL)
+ . = ..()
cut_overlays()
if(construction_state != SPACEPOD_ARMOR_WELDED)
icon = 'goon/icons/obj/spacepods/construction_2x2.dmi'
diff --git a/yogstation/code/modules/xenoarch/loot/gigadrill.dm b/yogstation/code/modules/xenoarch/loot/gigadrill.dm
index 32c252da6d48..635d8fa736ee 100644
--- a/yogstation/code/modules/xenoarch/loot/gigadrill.dm
+++ b/yogstation/code/modules/xenoarch/loot/gigadrill.dm
@@ -13,13 +13,13 @@
/obj/vehicle/ridden/gigadrill/after_add_occupant(mob/M)
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
/obj/vehicle/ridden/gigadrill/after_remove_occupant(mob/M)
. = ..()
- update_icon()
+ update_appearance(updates = ALL)
-/obj/vehicle/ridden/gigadrill/update_icon()
+/obj/vehicle/ridden/gigadrill/update_appearance(updates = ALL)
. = ..()
if(occupant_amount())
icon_state = "gigadrill_mov"
diff --git a/yogstation/code/modules/xenoarch/loot/guns.dm b/yogstation/code/modules/xenoarch/loot/guns.dm
index 5c59228e29a1..b9b43fefcbe0 100644
--- a/yogstation/code/modules/xenoarch/loot/guns.dm
+++ b/yogstation/code/modules/xenoarch/loot/guns.dm
@@ -17,7 +17,8 @@
. = ..()
playsound(src, 'yogstation/sound/weapons/spur_spawn.ogg')
-/obj/item/gun/energy/polarstar/update_icon(force_update)
+/obj/item/gun/energy/polarstar/update_appearance(updates = ALL, force_update)
+ . = ..()
var/maxcharge = cell.maxcharge
var/charge = cell.charge