diff --git a/code/__DEFINES/colors.dm b/code/__DEFINES/colors.dm
index 9f45d8da79..db78144689 100644
--- a/code/__DEFINES/colors.dm
+++ b/code/__DEFINES/colors.dm
@@ -24,6 +24,7 @@
#define COLOR_BEIGE "#CEB689"
#define COLOR_BLUE_GRAY "#75A2BB"
#define COLOR_BROWN "#BA9F6D"
+#define COLOR_SOFT_RED "#FA8282"
#define COLOR_DARK_BROWN "#997C4F"
#define COLOR_DARK_ORANGE "#C3630C"
#define COLOR_GREEN_GRAY "#99BB76"
diff --git a/code/__DEFINES/dcs/flags.dm b/code/__DEFINES/dcs/flags.dm
index 719a795824..3a6877eeb3 100644
--- a/code/__DEFINES/dcs/flags.dm
+++ b/code/__DEFINES/dcs/flags.dm
@@ -83,3 +83,19 @@
#define COMBAT_MODE_ACTIVE (1<<1)
/// combat mode is not active
#define COMBAT_MODE_INACTIVE (1<<2)
+
+// Update flags for [/atom/proc/update_appearance]
+/// Update the atom's name
+#define UPDATE_NAME (1<<0)
+/// Update the atom's desc
+#define UPDATE_DESC (1<<1)
+/// Update the atom's icon state
+#define UPDATE_ICON_STATE (1<<2)
+/// Update the atom's overlays
+#define UPDATE_OVERLAYS (1<<3)
+/// Update the atom's greyscaling
+#define UPDATE_GREYSCALE (1<<4)
+/// Update the atom's smoothing. (More accurately, queue it for an update)
+#define UPDATE_SMOOTHING (1<<5)
+/// Update the atom's icon
+#define UPDATE_ICON (UPDATE_ICON_STATE|UPDATE_OVERLAYS)
diff --git a/code/__DEFINES/dcs/signals.dm b/code/__DEFINES/dcs/signals.dm
index 5f8745ca8e..3ab70126e3 100644
--- a/code/__DEFINES/dcs/signals.dm
+++ b/code/__DEFINES/dcs/signals.dm
@@ -74,11 +74,30 @@
#define EXAMINE_POSITION_BEFORE (1<<1)
//End positions
#define COMPONENT_EXNAME_CHANGED (1<<0)
-#define COMSIG_ATOM_UPDATE_ICON "atom_update_icon" //from base of atom/update_icon(): ()
- #define COMSIG_ATOM_NO_UPDATE_ICON_STATE 1
- #define COMSIG_ATOM_NO_UPDATE_OVERLAYS 2
-#define COMSIG_ATOM_UPDATE_OVERLAYS "atom_update_overlays" //from base of atom/update_overlays(): (list/new_overlays)
-#define COMSIG_ATOM_UPDATED_ICON "atom_updated_icon" //from base of atom/update_icon(): (signalOut, did_anything)
+///from base of [/atom/proc/update_appearance]: (updates)
+#define COMSIG_ATOM_UPDATE_APPEARANCE "atom_update_appearance"
+ /// If returned from [COMSIG_ATOM_UPDATE_APPEARANCE] it prevents the atom from updating its name.
+ #define COMSIG_ATOM_NO_UPDATE_NAME UPDATE_NAME
+ /// If returned from [COMSIG_ATOM_UPDATE_APPEARANCE] it prevents the atom from updating its desc.
+ #define COMSIG_ATOM_NO_UPDATE_DESC UPDATE_DESC
+ /// If returned from [COMSIG_ATOM_UPDATE_APPEARANCE] it prevents the atom from updating its icon.
+ #define COMSIG_ATOM_NO_UPDATE_ICON UPDATE_ICON
+///from base of [/atom/proc/update_name]: (updates)
+#define COMSIG_ATOM_UPDATE_NAME "atom_update_name"
+///from base of [/atom/proc/update_desc]: (updates)
+#define COMSIG_ATOM_UPDATE_DESC "atom_update_desc"
+///from base of [/atom/update_icon]: ()
+#define COMSIG_ATOM_UPDATE_ICON "atom_update_icon"
+ /// If returned from [COMSIG_ATOM_UPDATE_ICON] it prevents the atom from updating its icon state.
+ #define COMSIG_ATOM_NO_UPDATE_ICON_STATE UPDATE_ICON_STATE
+ /// If returned from [COMSIG_ATOM_UPDATE_ICON] it prevents the atom from updating its overlays.
+ #define COMSIG_ATOM_NO_UPDATE_OVERLAYS UPDATE_OVERLAYS
+///from base of [atom/update_icon_state]: ()
+#define COMSIG_ATOM_UPDATE_ICON_STATE "atom_update_icon_state"
+///from base of [/atom/update_overlays]: (list/new_overlays)
+#define COMSIG_ATOM_UPDATE_OVERLAYS "atom_update_overlays"
+///from base of [/atom/update_icon]: (signalOut, did_anything)
+#define COMSIG_ATOM_UPDATED_ICON "atom_updated_icon"
#define COMSIG_ATOM_ENTERED "atom_entered" //from base of atom/Entered(): (atom/movable/entering, /atom)
#define COMSIG_ATOM_EXIT "atom_exit" //from base of atom/Exit(): (/atom/movable/exiting, /atom/newloc)
#define COMPONENT_ATOM_BLOCK_EXIT 1
@@ -112,8 +131,6 @@
///from obj/machinery/bsa/full/proc/fire(): ()
#define COMSIG_ATOM_BSA_BEAM "atom_bsa_beam_pass"
#define COMSIG_ATOM_BLOCKS_BSA_BEAM (1<<0)
-///from base of atom/set_light(): (l_range, l_power, l_color)
-#define COMSIG_ATOM_SET_LIGHT "atom_set_light"
///from base of atom/setDir(): (old_dir, new_dir). Called before the direction changes.
#define COMSIG_ATOM_DIR_CHANGE "atom_dir_change"
///from base of atom/handle_atom_del(): (atom/deleted)
@@ -278,6 +295,32 @@
///from base of mob/AltClickOn(): (atom/A)
#define COMSIG_MOB_ALTCLICKON "mob_altclickon"
+// Lighting:
+///from base of [atom/proc/set_light]: (l_range, l_power, l_color, l_on)
+#define COMSIG_ATOM_SET_LIGHT "atom_set_light"
+ /// Blocks [/atom/proc/set_light], [/atom/proc/set_light_power], [/atom/proc/set_light_range], [/atom/proc/set_light_color], [/atom/proc/set_light_on], and [/atom/proc/set_light_flags].
+ #define COMPONENT_BLOCK_LIGHT_UPDATE (1<<0)
+///Called right before the atom changes the value of light_power to a different one, from base [atom/proc/set_light_power]: (new_power)
+#define COMSIG_ATOM_SET_LIGHT_POWER "atom_set_light_power"
+///Called right after the atom changes the value of light_power to a different one, from base of [/atom/proc/set_light_power]: (old_power)
+#define COMSIG_ATOM_UPDATE_LIGHT_POWER "atom_update_light_power"
+///Called right before the atom changes the value of light_range to a different one, from base [atom/proc/set_light_range]: (new_range)
+#define COMSIG_ATOM_SET_LIGHT_RANGE "atom_set_light_range"
+///Called right after the atom changes the value of light_range to a different one, from base of [/atom/proc/set_light_range]: (old_range)
+#define COMSIG_ATOM_UPDATE_LIGHT_RANGE "atom_update_light_range"
+///Called right before the atom changes the value of light_color to a different one, from base [atom/proc/set_light_color]: (new_color)
+#define COMSIG_ATOM_SET_LIGHT_COLOR "atom_set_light_color"
+///Called right after the atom changes the value of light_color to a different one, from base of [/atom/proc/set_light_color]: (old_color)
+#define COMSIG_ATOM_UPDATE_LIGHT_COLOR "atom_update_light_color"
+///Called right before the atom changes the value of light_on to a different one, from base [atom/proc/set_light_on]: (new_value)
+#define COMSIG_ATOM_SET_LIGHT_ON "atom_set_light_on"
+///Called right after the atom changes the value of light_on to a different one, from base of [/atom/proc/set_light_on]: (old_value)
+#define COMSIG_ATOM_UPDATE_LIGHT_ON "atom_update_light_on"
+///Called right before the atom changes the value of light_flags to a different one, from base [atom/proc/set_light_flags]: (new_flags)
+#define COMSIG_ATOM_SET_LIGHT_FLAGS "atom_set_light_flags"
+///Called right after the atom changes the value of light_flags to a different one, from base of [/atom/proc/set_light_flags]: (old_flags)
+#define COMSIG_ATOM_UPDATE_LIGHT_FLAGS "atom_update_light_flags"
+
// /client signals
#define COMSIG_MOB_CLIENT_LOGIN "mob_client_login" //sent when a mob/login() finishes: (client)
#define COMSIG_MOB_CLIENT_LOGOUT "mob_client_logout" //sent when a mob/logout() starts: (client)
@@ -361,6 +404,12 @@
// /machinery signals
#define COMSIG_MACHINE_EJECT_OCCUPANT "eject_occupant" //from base of obj/machinery/dropContents() (occupant)
+///from base power_change() when power is lost
+#define COMSIG_MACHINERY_POWER_LOST "machinery_power_lost"
+///from base power_change() when power is restored
+#define COMSIG_MACHINERY_POWER_RESTORED "machinery_power_restored"
+///from /obj/machinery/obj_break(damage_flag): (damage_flag)
+#define COMSIG_MACHINERY_BROKEN "machinery_broken"
// /obj/item signals
#define COMSIG_ITEM_ATTACK "item_attack" //from base of obj/item/attack(): (/mob/living/target, /mob/living/user)
diff --git a/code/__DEFINES/layers_planes.dm b/code/__DEFINES/layers_planes.dm
index 37584d892d..ea7b1b2e0a 100644
--- a/code/__DEFINES/layers_planes.dm
+++ b/code/__DEFINES/layers_planes.dm
@@ -124,16 +124,20 @@
#define EMISSIVE_PLANE 13
#define EMISSIVE_LAYER 13
-#define EMISSIVE_RENDER_TARGET "*EMISSIVE_PLANE"
#define EMISSIVE_UNBLOCKABLE_PLANE 14
#define EMISSIVE_UNBLOCKABLE_LAYER 14
+#define EMISSIVE_LAYER_UNBLOCKABLE 14
#define EMISSIVE_UNBLOCKABLE_RENDER_TARGET "*EMISSIVE_UNBLOCKABLE_PLANE"
+#define EMISSIVE_RENDER_TARGET "*EMISSIVE_PLANE"
#define LIGHTING_PLANE 15
#define LIGHTING_LAYER 15
#define LIGHTING_RENDER_TARGET "LIGHT_PLANE"
+#define O_LIGHTING_VISUAL_PLANE 110
+#define O_LIGHTING_VISUAL_RENDER_TARGET "O_LIGHT_VISUAL_PLANE"
+
#define RAD_TEXT_LAYER 15.1
#define ABOVE_LIGHTING_PLANE 16
diff --git a/code/__DEFINES/lighting.dm b/code/__DEFINES/lighting.dm
index 3fba27ba52..95d91da14a 100644
--- a/code/__DEFINES/lighting.dm
+++ b/code/__DEFINES/lighting.dm
@@ -84,11 +84,24 @@
#define FLASH_LIGHT_POWER 3
#define FLASH_LIGHT_RANGE 3.8
+// Emissive blocking.
/// Uses vis_overlays to leverage caching so that very few new items need to be made for the overlay. For anything that doesn't change outline or opaque area much or at all.
#define EMISSIVE_BLOCK_GENERIC 1
/// Uses a dedicated render_target object to copy the entire appearance in real time to the blocking layer. For things that can change in appearance a lot from the base state, like humans.
#define EMISSIVE_BLOCK_UNIQUE 2
+/// The color matrix applied to all emissive overlays. Should be solely dependent on alpha and not have RGB overlap with [EM_BLOCK_COLOR].
+#define EMISSIVE_COLOR list(0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,1, 1,1,1,0)
+/// A globaly cached version of [EMISSIVE_COLOR] for quick access.
+GLOBAL_LIST_INIT(emissive_color, EMISSIVE_COLOR)
+/// The color matrix applied to all emissive blockers. Should be solely dependent on alpha and not have RGB overlap with [EMISSIVE_COLOR].
+#define EM_BLOCK_COLOR list(0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,1, 0,0,0,0)
+/// A globaly cached version of [EM_BLOCK_COLOR] for quick access.
+GLOBAL_LIST_INIT(em_block_color, EM_BLOCK_COLOR)
+/// The color matrix used to mask out emissive blockers on the emissive plane. Alpha should default to zero, be solely dependent on the RGB value of [EMISSIVE_COLOR], and be independant of the RGB value of [EM_BLOCK_COLOR].
+#define EM_MASK_MATRIX list(0,0,0,1/3, 0,0,0,1/3, 0,0,0,1/3, 0,0,0,0, 1,1,1,0)
+/// A globaly cached version of [EM_MASK_MATRIX] for quick access.
+GLOBAL_LIST_INIT(em_mask_matrix, EM_MASK_MATRIX)
/// Returns the red part of a #RRGGBB hex sequence as number
#define GETREDPART(hexa) hex2num(copytext(hexa, 2, 4))
diff --git a/code/__DEFINES/power.dm b/code/__DEFINES/power.dm
index 78d942d78b..8cd3e7d525 100644
--- a/code/__DEFINES/power.dm
+++ b/code/__DEFINES/power.dm
@@ -1,3 +1,8 @@
#define SOLAR_TRACK_OFF 0
#define SOLAR_TRACK_TIMED 1
#define SOLAR_TRACK_AUTO 2
+
+///conversion ratio from joules to watts
+#define WATTS / 0.002
+///conversion ratio from watts to joules
+#define JOULES * 0.002
diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm
index 745b12e84f..e55faab1be 100644
--- a/code/__HELPERS/game.dm
+++ b/code/__HELPERS/game.dm
@@ -395,7 +395,7 @@
/proc/ScreenText(obj/O, maptext="", screen_loc="CENTER-7,CENTER-7", maptext_height=480, maptext_width=480)
if(!isobj(O))
- O = new /obj/screen/text()
+ O = new /atom/movable/screen/text()
O.maptext = maptext
O.maptext_height = maptext_height
O.maptext_width = maptext_width
diff --git a/code/__HELPERS/lighting.dm b/code/__HELPERS/lighting.dm
new file mode 100644
index 0000000000..685958b015
--- /dev/null
+++ b/code/__HELPERS/lighting.dm
@@ -0,0 +1,5 @@
+/// Produces a mutable appearance glued to the [EMISSIVE_PLANE] dyed to be the [EMISSIVE_COLOR].
+/proc/emissive_appearance(icon, icon_state = "", layer = FLOAT_LAYER, alpha = 255, appearance_flags = NONE)
+ var/mutable_appearance/appearance = mutable_appearance(icon, icon_state, layer, EMISSIVE_PLANE, alpha, appearance_flags)
+ appearance.color = GLOB.emissive_color
+ return appearance
diff --git a/code/_onclick/ai.dm b/code/_onclick/ai.dm
index f153b5965c..c7834dc5ef 100644
--- a/code/_onclick/ai.dm
+++ b/code/_onclick/ai.dm
@@ -25,7 +25,7 @@
if(multicam_on)
var/turf/T = get_turf(A)
if(T)
- for(var/obj/screen/movable/pic_in_pic/ai/P in T.vis_locs)
+ for(var/atom/movable/screen/movable/pic_in_pic/ai/P in T.vis_locs)
if(P.ai == src)
P.Click(params)
break
diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm
index d24aa06806..9321427387 100644
--- a/code/_onclick/click.dm
+++ b/code/_onclick/click.dm
@@ -429,14 +429,14 @@
setDir(WEST, ismousemovement)
//debug
-/obj/screen/proc/scale_to(x1,y1)
+/atom/movable/screen/proc/scale_to(x1,y1)
if(!y1)
y1 = x1
var/matrix/M = new
M.Scale(x1,y1)
transform = M
-/obj/screen/click_catcher
+/atom/movable/screen/click_catcher
icon = 'icons/mob/screen_gen.dmi'
icon_state = "catcher"
plane = CLICKCATCHER_PLANE
@@ -446,7 +446,7 @@
#define MAX_SAFE_BYOND_ICON_SCALE_TILES (MAX_SAFE_BYOND_ICON_SCALE_PX / world.icon_size)
#define MAX_SAFE_BYOND_ICON_SCALE_PX (33 * 32) //Not using world.icon_size on purpose.
-/obj/screen/click_catcher/proc/UpdateGreed(view_size_x = 15, view_size_y = 15)
+/atom/movable/screen/click_catcher/proc/UpdateGreed(view_size_x = 15, view_size_y = 15)
var/icon/newicon = icon('icons/mob/screen_gen.dmi', "catcher")
var/ox = min(MAX_SAFE_BYOND_ICON_SCALE_TILES, view_size_x)
var/oy = min(MAX_SAFE_BYOND_ICON_SCALE_TILES, view_size_y)
@@ -461,7 +461,7 @@
M.Scale(px/sx, py/sy)
transform = M
-/obj/screen/click_catcher/Click(location, control, params)
+/atom/movable/screen/click_catcher/Click(location, control, params)
var/list/modifiers = params2list(params)
if(modifiers["middle"] && iscarbon(usr))
var/mob/living/carbon/C = usr
diff --git a/code/_onclick/drag_drop.dm b/code/_onclick/drag_drop.dm
index 43451bd056..ae853a4e1a 100644
--- a/code/_onclick/drag_drop.dm
+++ b/code/_onclick/drag_drop.dm
@@ -80,10 +80,10 @@
/atom/proc/IsAutoclickable()
. = 1
-/obj/screen/IsAutoclickable()
+/atom/movable/screen/IsAutoclickable()
. = 0
-/obj/screen/click_catcher/IsAutoclickable()
+/atom/movable/screen/click_catcher/IsAutoclickable()
. = 1
//Please don't roast me too hard
diff --git a/code/_onclick/hud/action_button.dm b/code/_onclick/hud/action_button.dm
index 8a66374029..791cf336ac 100644
--- a/code/_onclick/hud/action_button.dm
+++ b/code/_onclick/hud/action_button.dm
@@ -1,6 +1,6 @@
#define ACTION_BUTTON_DEFAULT_BACKGROUND "default"
-/obj/screen/movable/action_button
+/atom/movable/screen/movable/action_button
var/datum/action/linked_action
var/actiontooltipstyle = ""
screen_loc = null
@@ -11,7 +11,7 @@
var/id
var/ordered = TRUE //If the button gets placed into the default bar
-/obj/screen/movable/action_button/proc/can_use(mob/user)
+/atom/movable/screen/movable/action_button/proc/can_use(mob/user)
if (linked_action)
return linked_action.owner == user
else if (isobserver(user))
@@ -20,14 +20,14 @@
else
return TRUE
-/obj/screen/movable/action_button/MouseDrop(over_object)
+/atom/movable/screen/movable/action_button/MouseDrop(over_object)
if(!can_use(usr))
return
- if((istype(over_object, /obj/screen/movable/action_button) && !istype(over_object, /obj/screen/movable/action_button/hide_toggle)))
+ if((istype(over_object, /atom/movable/screen/movable/action_button) && !istype(over_object, /atom/movable/screen/movable/action_button/hide_toggle)))
if(locked)
to_chat(usr, "Action button \"[name]\" is locked, unlock it first.")
return
- var/obj/screen/movable/action_button/B = over_object
+ var/atom/movable/screen/movable/action_button/B = over_object
var/list/actions = usr.actions
actions.Swap(actions.Find(src.linked_action), actions.Find(B.linked_action))
moved = FALSE
@@ -38,7 +38,7 @@
else
return ..()
-/obj/screen/movable/action_button/Click(location,control,params)
+/atom/movable/screen/movable/action_button/Click(location,control,params)
if (!can_use(usr))
return
@@ -60,7 +60,7 @@
return TRUE
//Hide/Show Action Buttons ... Button
-/obj/screen/movable/action_button/hide_toggle
+/atom/movable/screen/movable/action_button/hide_toggle
name = "Hide Buttons"
desc = "Shift-click any button to reset its position, and Control-click it to lock it in place. Alt-click this button to reset all buttons to their default positions."
icon = 'icons/mob/actions.dmi'
@@ -72,7 +72,7 @@
var/mutable_appearance/hide_appearance
var/mutable_appearance/show_appearance
-/obj/screen/movable/action_button/hide_toggle/Initialize()
+/atom/movable/screen/movable/action_button/hide_toggle/Initialize()
. = ..()
var/static/list/icon_cache = list()
@@ -86,7 +86,7 @@
if(!show_appearance)
show_appearance = icon_cache[cache_key] = mutable_appearance(hide_icon, show_state)
-/obj/screen/movable/action_button/hide_toggle/Click(location,control,params)
+/atom/movable/screen/movable/action_button/hide_toggle/Click(location,control,params)
if (!can_use(usr))
return
@@ -107,7 +107,7 @@
if(modifiers["alt"])
for(var/V in usr.actions)
var/datum/action/A = V
- var/obj/screen/movable/action_button/B = A.button
+ var/atom/movable/screen/movable/action_button/B = A.button
B.moved = FALSE
if(B.id && usr.client)
usr.client.prefs.action_buttons_screen_locs["[B.name]_[B.id]"] = null
@@ -129,10 +129,10 @@
update_icon()
usr.update_action_buttons()
-/obj/screen/movable/action_button/hide_toggle/AltClick(mob/user)
+/atom/movable/screen/movable/action_button/hide_toggle/AltClick(mob/user)
for(var/V in user.actions)
var/datum/action/A = V
- var/obj/screen/movable/action_button/B = A.button
+ var/atom/movable/screen/movable/action_button/B = A.button
B.moved = FALSE
if(moved)
moved = FALSE
@@ -141,7 +141,7 @@
return TRUE
-/obj/screen/movable/action_button/hide_toggle/proc/InitialiseIcon(datum/hud/owner_hud)
+/atom/movable/screen/movable/action_button/hide_toggle/proc/InitialiseIcon(datum/hud/owner_hud)
var/settings = owner_hud.get_action_buttons_icons()
icon = settings["bg_icon"]
icon_state = settings["bg_state"]
@@ -150,7 +150,7 @@
show_state = settings["toggle_show"]
update_icon()
-/obj/screen/movable/action_button/hide_toggle/update_overlays()
+/atom/movable/screen/movable/action_button/hide_toggle/update_overlays()
. = ..()
if(hidden)
. += show_appearance
@@ -158,12 +158,12 @@
. += hide_appearance
-/obj/screen/movable/action_button/MouseEntered(location,control,params)
+/atom/movable/screen/movable/action_button/MouseEntered(location,control,params)
if(!QDELETED(src))
openToolTip(usr,src,params,title = name,content = desc,theme = actiontooltipstyle)
-/obj/screen/movable/action_button/MouseExited()
+/atom/movable/screen/movable/action_button/MouseExited()
closeToolTip(usr)
/datum/hud/proc/get_action_buttons_icons()
@@ -203,7 +203,7 @@
else
for(var/datum/action/A in actions)
A.UpdateButtonIcon()
- var/obj/screen/movable/action_button/B = A.button
+ var/atom/movable/screen/movable/action_button/B = A.button
if(B.ordered)
button_number++
if(B.moved)
@@ -235,7 +235,7 @@
return "WEST[coord_col]:[coord_col_offset],NORTH[coord_row]:-6"
-/datum/hud/proc/SetButtonCoords(obj/screen/button,number, supportedcolumns)
+/datum/hud/proc/SetButtonCoords(atom/movable/screen/button,number, supportedcolumns)
var/row = round((number-1)/supportedcolumns)
var/col = ((number - 1)%(supportedcolumns)) + 1
var/x_offset = 32*(col-1) + 4 + 2*col
diff --git a/code/_onclick/hud/ai.dm b/code/_onclick/hud/ai.dm
index 93c3b63d1e..17b5a9ed61 100644
--- a/code/_onclick/hud/ai.dm
+++ b/code/_onclick/hud/ai.dm
@@ -1,136 +1,136 @@
-/obj/screen/ai
+/atom/movable/screen/ai
icon = 'icons/mob/screen_ai.dmi'
-/obj/screen/ai/Click()
+/atom/movable/screen/ai/Click()
if(isobserver(usr) || usr.incapacitated())
return TRUE
-/obj/screen/ai/aicore
+/atom/movable/screen/ai/aicore
name = "AI core"
icon_state = "ai_core"
-/obj/screen/ai/aicore/Click()
+/atom/movable/screen/ai/aicore/Click()
if(..())
return
var/mob/living/silicon/ai/AI = usr
AI.view_core()
-/obj/screen/ai/camera_list
+/atom/movable/screen/ai/camera_list
name = "Show Camera List"
icon_state = "camera"
-/obj/screen/ai/camera_list/Click()
+/atom/movable/screen/ai/camera_list/Click()
if(..())
return
var/mob/living/silicon/ai/AI = usr
AI.show_camera_list()
-/obj/screen/ai/camera_track
+/atom/movable/screen/ai/camera_track
name = "Track With Camera"
icon_state = "track"
-/obj/screen/ai/camera_track/Click()
+/atom/movable/screen/ai/camera_track/Click()
if(..())
return
var/mob/living/silicon/ai/AI = usr
var/target_name = input(AI, "Choose who you want to track", "Tracking") as null|anything in AI.trackable_mobs()
AI.ai_camera_track(target_name)
-/obj/screen/ai/camera_light
+/atom/movable/screen/ai/camera_light
name = "Toggle Camera Light"
icon_state = "camera_light"
-/obj/screen/ai/camera_light/Click()
+/atom/movable/screen/ai/camera_light/Click()
if(..())
return
var/mob/living/silicon/ai/AI = usr
AI.toggle_camera_light()
-/obj/screen/ai/crew_monitor
+/atom/movable/screen/ai/crew_monitor
name = "Crew Monitoring Console"
icon_state = "crew_monitor"
-/obj/screen/ai/crew_monitor/Click()
+/atom/movable/screen/ai/crew_monitor/Click()
if(..())
return
var/mob/living/silicon/ai/AI = usr
GLOB.crewmonitor.show(AI,AI)
-/obj/screen/ai/crew_manifest
+/atom/movable/screen/ai/crew_manifest
name = "Crew Manifest"
icon_state = "manifest"
-/obj/screen/ai/crew_manifest/Click()
+/atom/movable/screen/ai/crew_manifest/Click()
if(..())
return
var/mob/living/silicon/ai/AI = usr
AI.ai_roster()
-/obj/screen/ai/alerts
+/atom/movable/screen/ai/alerts
name = "Show Alerts"
icon_state = "alerts"
-/obj/screen/ai/alerts/Click()
+/atom/movable/screen/ai/alerts/Click()
if(..())
return
var/mob/living/silicon/ai/AI = usr
AI.ai_alerts()
-/obj/screen/ai/announcement
+/atom/movable/screen/ai/announcement
name = "Make Vox Announcement"
icon_state = "announcement"
-/obj/screen/ai/announcement/Click()
+/atom/movable/screen/ai/announcement/Click()
if(..())
return
var/mob/living/silicon/ai/AI = usr
AI.announcement()
-/obj/screen/ai/call_shuttle
+/atom/movable/screen/ai/call_shuttle
name = "Call Emergency Shuttle"
icon_state = "call_shuttle"
-/obj/screen/ai/call_shuttle/Click()
+/atom/movable/screen/ai/call_shuttle/Click()
if(..())
return
var/mob/living/silicon/ai/AI = usr
AI.ai_call_shuttle()
-/obj/screen/ai/state_laws
+/atom/movable/screen/ai/state_laws
name = "State Laws"
icon_state = "state_laws"
-/obj/screen/ai/state_laws/Click()
+/atom/movable/screen/ai/state_laws/Click()
if(..())
return
var/mob/living/silicon/ai/AI = usr
AI.checklaws()
-/obj/screen/ai/pda_msg_send
+/atom/movable/screen/ai/pda_msg_send
name = "PDA - Send Message"
icon_state = "pda_send"
-/obj/screen/ai/pda_msg_send/Click()
+/atom/movable/screen/ai/pda_msg_send/Click()
if(..())
return
var/mob/living/silicon/ai/AI = usr
AI.cmd_send_pdamesg(usr)
-/obj/screen/ai/pda_msg_show
+/atom/movable/screen/ai/pda_msg_show
name = "PDA - Show Message Log"
icon_state = "pda_receive"
-/obj/screen/ai/pda_msg_show/Click()
+/atom/movable/screen/ai/pda_msg_show/Click()
if(..())
return
var/mob/living/silicon/ai/AI = usr
AI.cmd_show_message_log(usr)
-/obj/screen/ai/image_take
+/atom/movable/screen/ai/image_take
name = "Take Image"
icon_state = "take_picture"
-/obj/screen/ai/image_take/Click()
+/atom/movable/screen/ai/image_take/Click()
if(..())
return
if(isAI(usr))
@@ -140,11 +140,11 @@
var/mob/living/silicon/robot/R = usr
R.aicamera.toggle_camera_mode(usr)
-/obj/screen/ai/image_view
+/atom/movable/screen/ai/image_view
name = "View Images"
icon_state = "view_images"
-/obj/screen/ai/image_view/Click()
+/atom/movable/screen/ai/image_view/Click()
if(..())
return
if(isAI(usr))
@@ -154,31 +154,31 @@
var/mob/living/silicon/robot/R = usr
R.aicamera.viewpictures(usr)
-/obj/screen/ai/sensors
+/atom/movable/screen/ai/sensors
name = "Sensor Augmentation"
icon_state = "ai_sensor"
-/obj/screen/ai/sensors/Click()
+/atom/movable/screen/ai/sensors/Click()
if(..())
return
var/mob/living/silicon/S = usr
S.toggle_sensors()
-/obj/screen/ai/multicam
+/atom/movable/screen/ai/multicam
name = "Multicamera Mode"
icon_state = "multicam"
-/obj/screen/ai/multicam/Click()
+/atom/movable/screen/ai/multicam/Click()
if(..())
return
var/mob/living/silicon/ai/AI = usr
AI.toggle_multicam()
-/obj/screen/ai/add_multicam
+/atom/movable/screen/ai/add_multicam
name = "New Camera"
icon_state = "new_cam"
-/obj/screen/ai/add_multicam/Click()
+/atom/movable/screen/ai/add_multicam/Click()
if(..())
return
var/mob/living/silicon/ai/AI = usr
@@ -190,112 +190,112 @@
/datum/hud/ai/New(mob/owner)
..()
- var/obj/screen/using
+ var/atom/movable/screen/using
// Language menu
- using = new /obj/screen/language_menu
+ using = new /atom/movable/screen/language_menu
using.screen_loc = ui_borg_language_menu
using.hud = src
static_inventory += using
//AI core
- using = new /obj/screen/ai/aicore()
+ using = new /atom/movable/screen/ai/aicore()
using.screen_loc = ui_ai_core
using.hud = src
static_inventory += using
//Camera list
- using = new /obj/screen/ai/camera_list()
+ using = new /atom/movable/screen/ai/camera_list()
using.screen_loc = ui_ai_camera_list
using.hud = src
static_inventory += using
//Track
- using = new /obj/screen/ai/camera_track()
+ using = new /atom/movable/screen/ai/camera_track()
using.screen_loc = ui_ai_track_with_camera
using.hud = src
static_inventory += using
//Camera light
- using = new /obj/screen/ai/camera_light()
+ using = new /atom/movable/screen/ai/camera_light()
using.screen_loc = ui_ai_camera_light
using.hud = src
static_inventory += using
//Crew Monitoring
- using = new /obj/screen/ai/crew_monitor()
+ using = new /atom/movable/screen/ai/crew_monitor()
using.screen_loc = ui_ai_crew_monitor
using.hud = src
static_inventory += using
//Crew Manifest
- using = new /obj/screen/ai/crew_manifest()
+ using = new /atom/movable/screen/ai/crew_manifest()
using.screen_loc = ui_ai_crew_manifest
using.hud = src
static_inventory += using
//Alerts
- using = new /obj/screen/ai/alerts()
+ using = new /atom/movable/screen/ai/alerts()
using.screen_loc = ui_ai_alerts
using.hud = src
static_inventory += using
//Announcement
- using = new /obj/screen/ai/announcement()
+ using = new /atom/movable/screen/ai/announcement()
using.screen_loc = ui_ai_announcement
using.hud = src
static_inventory += using
//Shuttle
- using = new /obj/screen/ai/call_shuttle()
+ using = new /atom/movable/screen/ai/call_shuttle()
using.screen_loc = ui_ai_shuttle
using.hud = src
static_inventory += using
//Laws
- using = new /obj/screen/ai/state_laws()
+ using = new /atom/movable/screen/ai/state_laws()
using.screen_loc = ui_ai_state_laws
using.hud = src
static_inventory += using
//PDA message
- using = new /obj/screen/ai/pda_msg_send()
+ using = new /atom/movable/screen/ai/pda_msg_send()
using.screen_loc = ui_ai_pda_send
using.hud = src
static_inventory += using
//PDA log
- using = new /obj/screen/ai/pda_msg_show()
+ using = new /atom/movable/screen/ai/pda_msg_show()
using.screen_loc = ui_ai_pda_log
using.hud = src
static_inventory += using
//Take image
- using = new /obj/screen/ai/image_take()
+ using = new /atom/movable/screen/ai/image_take()
using.screen_loc = ui_ai_take_picture
using.hud = src
static_inventory += using
//View images
- using = new /obj/screen/ai/image_view()
+ using = new /atom/movable/screen/ai/image_view()
using.screen_loc = ui_ai_view_images
using.hud = src
static_inventory += using
//Medical/Security sensors
- using = new /obj/screen/ai/sensors()
+ using = new /atom/movable/screen/ai/sensors()
using.screen_loc = ui_ai_sensor
using.hud = src
static_inventory += using
//Multicamera mode
- using = new /obj/screen/ai/multicam()
+ using = new /atom/movable/screen/ai/multicam()
using.screen_loc = ui_ai_multicam
using.hud = src
static_inventory += using
//Add multicamera camera
- using = new /obj/screen/ai/add_multicam()
+ using = new /atom/movable/screen/ai/add_multicam()
using.screen_loc = ui_ai_add_multicam
using.hud = src
static_inventory += using
diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm
index 81d8593d4e..ed4c91dd9b 100644
--- a/code/_onclick/hud/alert.dm
+++ b/code/_onclick/hud/alert.dm
@@ -18,7 +18,7 @@
if(!category || QDELETED(src))
return
- var/obj/screen/alert/thealert
+ var/atom/movable/screen/alert/thealert
if(alerts[category])
thealert = alerts[category]
if(thealert.override_alerts)
@@ -69,13 +69,13 @@
thealert.timeout = world.time + thealert.timeout - world.tick_lag
return thealert
-/mob/proc/alert_timeout(obj/screen/alert/alert, category)
+/mob/proc/alert_timeout(atom/movable/screen/alert/alert, category)
if(alert.timeout && alerts[category] == alert && world.time >= alert.timeout)
clear_alert(category)
// Proc to clear an existing alert.
/mob/proc/clear_alert(category, clear_override = FALSE)
- var/obj/screen/alert/alert = alerts[category]
+ var/atom/movable/screen/alert/alert = alerts[category]
if(!alert)
return 0
if(alert.override_alerts && !clear_override)
@@ -87,7 +87,7 @@
client.screen -= alert
qdel(alert)
-/obj/screen/alert
+/atom/movable/screen/alert
icon = 'icons/mob/screen_alert.dmi'
icon_state = "default"
name = "Alert"
@@ -100,72 +100,72 @@
var/mob/mob_viewer //the mob viewing this alert
-/obj/screen/alert/MouseEntered(location,control,params)
+/atom/movable/screen/alert/MouseEntered(location,control,params)
if(!QDELETED(src))
openToolTip(usr,src,params,title = name,content = desc,theme = alerttooltipstyle)
-/obj/screen/alert/MouseExited()
+/atom/movable/screen/alert/MouseExited()
closeToolTip(usr)
//Gas alerts
-/obj/screen/alert/not_enough_oxy
+/atom/movable/screen/alert/not_enough_oxy
name = "Choking (No O2)"
desc = "You're not getting enough oxygen. Find some good air before you pass out! The box in your backpack has an oxygen tank and breath mask in it."
icon_state = "not_enough_oxy"
-/obj/screen/alert/too_much_oxy
+/atom/movable/screen/alert/too_much_oxy
name = "Choking (O2)"
desc = "There's too much oxygen in the air, and you're breathing it in! Find some good air before you pass out!"
icon_state = "too_much_oxy"
-/obj/screen/alert/not_enough_nitro
+/atom/movable/screen/alert/not_enough_nitro
name = "Choking (No N2)"
desc = "You're not getting enough nitrogen. Find some good air before you pass out!"
icon_state = "not_enough_nitro"
-/obj/screen/alert/too_much_nitro
+/atom/movable/screen/alert/too_much_nitro
name = "Choking (N2)"
desc = "There's too much nitrogen in the air, and you're breathing it in! Find some good air before you pass out!"
icon_state = "too_much_nitro"
-/obj/screen/alert/not_enough_co2
+/atom/movable/screen/alert/not_enough_co2
name = "Choking (No CO2)"
desc = "You're not getting enough carbon dioxide. Find some good air before you pass out!"
icon_state = "not_enough_co2"
-/obj/screen/alert/too_much_co2
+/atom/movable/screen/alert/too_much_co2
name = "Choking (CO2)"
desc = "There's too much carbon dioxide in the air, and you're breathing it in! Find some good air before you pass out!"
icon_state = "too_much_co2"
-/obj/screen/alert/not_enough_tox
+/atom/movable/screen/alert/not_enough_tox
name = "Choking (No Plasma)"
desc = "You're not getting enough plasma. Find some good air before you pass out!"
icon_state = "not_enough_tox"
-/obj/screen/alert/too_much_tox
+/atom/movable/screen/alert/too_much_tox
name = "Choking (Plasma)"
desc = "There's highly flammable, toxic plasma in the air and you're breathing it in. Find some fresh air. The box in your backpack has an oxygen tank and gas mask in it."
icon_state = "too_much_tox"
-/obj/screen/alert/not_enough_ch4
+/atom/movable/screen/alert/not_enough_ch4
name = "Choking (No CH4)"
desc = "You're not getting enough methane. Find some good air before you pass out!"
icon_state = "not_enough_ch4"
-/obj/screen/alert/too_much_ch4
+/atom/movable/screen/alert/too_much_ch4
name = "Choking (CH4)"
desc = "There's too much methane in the air, and you're breathing it in! Find some good air before you pass out!"
icon_state = "too_much_ch4"
-/obj/screen/alert/not_enough_ch3br
+/atom/movable/screen/alert/not_enough_ch3br
name = "Choking (No CH3Br)"
desc = "You're not getting enough methyl bromide. Find some good air before you pass out!"
icon_state = "not_enough_tox"
-/obj/screen/alert/too_much_ch3br
+/atom/movable/screen/alert/too_much_ch3br
name = "Choking (CH3Br)"
desc = "There's highly toxic methyl bromide in the air and you're breathing it in. Find some fresh air. The box in your backpack has an oxygen tank and gas mask in it."
icon_state = "too_much_tox"
@@ -173,109 +173,109 @@
//End gas alerts
-/obj/screen/alert/fat
+/atom/movable/screen/alert/fat
name = "Fat"
desc = "You ate too much food, lardass. Run around the station and lose some weight."
icon_state = "fat"
-/obj/screen/alert/hungry
+/atom/movable/screen/alert/hungry
name = "Hungry"
desc = "Some food would be good right about now."
icon_state = "hungry"
-/obj/screen/alert/starving
+/atom/movable/screen/alert/starving
name = "Starving"
desc = "You're severely malnourished. The hunger pains make moving around a chore."
icon_state = "starving"
-/obj/screen/alert/gross
+/atom/movable/screen/alert/gross
name = "Grossed out."
desc = "That was kind of gross..."
icon_state = "gross"
-/obj/screen/alert/verygross
+/atom/movable/screen/alert/verygross
name = "Very grossed out."
desc = "You're not feeling very well..."
icon_state = "gross2"
-/obj/screen/alert/disgusted
+/atom/movable/screen/alert/disgusted
name = "DISGUSTED"
desc = "ABSOLUTELY DISGUSTIN'"
icon_state = "gross3"
-/obj/screen/alert/hot
+/atom/movable/screen/alert/hot
name = "Too Hot"
desc = "The air around you is pretty toasty! Consider putting on some insulating clothing, or moving to a cooler area."
icon_state = "hot"
-/obj/screen/alert/cold
+/atom/movable/screen/alert/cold
name = "Too Cold"
desc = "The air around you is pretty cold! Consider wearing a coat, or moving to a warmer area."
icon_state = "cold"
-/obj/screen/alert/sweat
+/atom/movable/screen/alert/sweat
name = "Sweating"
desc = "You're sweating! Get somewhere cooler and take off any insulating clothing like a fire suit."
icon_state = "sweat"
-/obj/screen/alert/shiver
+/atom/movable/screen/alert/shiver
name = "Shivering"
desc = "You're shivering! Get somewhere warmer and take off any insulating clothing like a space suit."
-/obj/screen/alert/lowpressure
+/atom/movable/screen/alert/lowpressure
name = "Low Pressure"
desc = "The air around you is hazardously thin. A space suit would protect you."
icon_state = "lowpressure"
-/obj/screen/alert/highpressure
+/atom/movable/screen/alert/highpressure
name = "High Pressure"
desc = "The air around you is hazardously thick. A fire suit would protect you."
icon_state = "highpressure"
-/obj/screen/alert/blind
+/atom/movable/screen/alert/blind
name = "Blind"
desc = "You can't see! This may be caused by a genetic defect, eye trauma, being unconscious, \
or something covering your eyes."
icon_state = "blind"
-/obj/screen/alert/high
+/atom/movable/screen/alert/high
name = "High"
desc = "Whoa man, you're tripping balls! Careful you don't get addicted... if you aren't already."
icon_state = "high"
-/obj/screen/alert/mind_control
+/atom/movable/screen/alert/mind_control
name = "Mind Control"
desc = "Your mind has been hijacked! Click to view the mind control command."
icon_state = "mind_control"
var/command
-/obj/screen/alert/mind_control/Click()
+/atom/movable/screen/alert/mind_control/Click()
var/mob/living/L = usr
to_chat(L, "[command]")
-/obj/screen/alert/hypnosis
+/atom/movable/screen/alert/hypnosis
name = "Hypnosis"
desc = "Something's hypnotizing you, but you're not really sure about what."
icon_state = "hypnosis"
var/phrase
-/obj/screen/alert/drunk //Not implemented
+/atom/movable/screen/alert/drunk //Not implemented
name = "Drunk"
desc = "All that alcohol you've been drinking is impairing your speech, motor skills, and mental cognition. Make sure to act like it."
icon_state = "drunk"
-/obj/screen/alert/embeddedobject
+/atom/movable/screen/alert/embeddedobject
name = "Embedded Object"
desc = "Something got lodged into your flesh and is causing major bleeding. It might fall out with time, but surgery is the safest way. \
If you're feeling frisky, examine yourself and click the underlined item to pull the object out."
icon_state = "embeddedobject"
-/obj/screen/alert/embeddedobject/Click()
+/atom/movable/screen/alert/embeddedobject/Click()
if(isliving(usr))
var/mob/living/carbon/M = usr
return M.help_shake_act(M)
-/obj/screen/alert/weightless
+/atom/movable/screen/alert/weightless
name = "Weightless"
desc = "Gravity has ceased affecting you, and you're floating around aimlessly. You'll need something large and heavy, like a \
wall or lattice, to push yourself off if you want to move. A jetpack would enable free range of motion. A pair of \
@@ -283,22 +283,22 @@ magboots would let you walk around normally on the floor. Barring those, you can
or shoot a gun to move around via Newton's 3rd Law of Motion."
icon_state = "weightless"
-/obj/screen/alert/highgravity
+/atom/movable/screen/alert/highgravity
name = "High Gravity"
desc = "You're getting crushed by high gravity, picking up items and movement will be slowed."
icon_state = "paralysis"
-/obj/screen/alert/veryhighgravity
+/atom/movable/screen/alert/veryhighgravity
name = "Crushing Gravity"
desc = "You're getting crushed by high gravity, picking up items and movement will be slowed. You'll also accumulate brute damage!"
icon_state = "paralysis"
-/obj/screen/alert/fire
+/atom/movable/screen/alert/fire
name = "On Fire"
desc = "You're on fire. Stop, drop and roll to put the fire out or move to a vacuum area."
icon_state = "fire"
-/obj/screen/alert/fire/Click()
+/atom/movable/screen/alert/fire/Click()
var/mob/living/L = usr
if(!istype(L) || !L.can_resist())
return
@@ -306,7 +306,7 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
if(CHECK_MOBILITY(L, MOBILITY_MOVE))
return L.resist_fire() //I just want to start a flame in your hearrrrrrtttttt.
-/obj/screen/alert/give // information set when the give alert is made
+/atom/movable/screen/alert/give // information set when the give alert is made
icon_state = "default"
var/mob/living/carbon/giver
var/obj/item/receiving
@@ -321,7 +321,7 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
* * giver - The person giving the alert and item
* * receiving - The item being given by the giver
*/
-/obj/screen/alert/give/proc/setup(mob/living/carbon/taker, mob/living/carbon/giver, obj/item/receiving)
+/atom/movable/screen/alert/give/proc/setup(mob/living/carbon/taker, mob/living/carbon/giver, obj/item/receiving)
name = "[giver] is offering [receiving]"
desc = "[giver] is offering [receiving]. Click this alert to take it."
icon_state = "template"
@@ -331,31 +331,31 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
src.giver = giver
RegisterSignal(taker, COMSIG_MOVABLE_MOVED, .proc/removeAlert)
-/obj/screen/alert/give/proc/removeAlert()
+/atom/movable/screen/alert/give/proc/removeAlert()
to_chat(usr, "You moved out of range of [giver]!")
usr.clear_alert("[giver]")
-/obj/screen/alert/give/Click(location, control, params)
+/atom/movable/screen/alert/give/Click(location, control, params)
. = ..()
var/mob/living/carbon/C = usr
C.take(giver, receiving)
//ALIENS
-/obj/screen/alert/alien_tox
+/atom/movable/screen/alert/alien_tox
name = "Plasma"
desc = "There's flammable plasma in the air. If it lights up, you'll be toast."
icon_state = "alien_tox"
alerttooltipstyle = "alien"
-/obj/screen/alert/alien_fire
+/atom/movable/screen/alert/alien_fire
// This alert is temporarily gonna be thrown for all hot air but one day it will be used for literally being on fire
name = "Too Hot"
desc = "It's too hot! Flee to space or at least away from the flames. Standing on weeds will heal you."
icon_state = "alien_fire"
alerttooltipstyle = "alien"
-/obj/screen/alert/alien_vulnerable
+/atom/movable/screen/alert/alien_vulnerable
name = "Severed Matriarchy"
desc = "Your queen has been killed, you will suffer movement penalties and loss of hivemind. A new queen cannot be made until you recover."
icon_state = "alien_noqueen"
@@ -363,7 +363,7 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
//BLOBS
-/obj/screen/alert/nofactory
+/atom/movable/screen/alert/nofactory
name = "No Factory"
desc = "You have no factory, and are slowly dying!"
icon_state = "blobbernaut_nofactory"
@@ -371,7 +371,7 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
// BLOODCULT
-/obj/screen/alert/bloodsense
+/atom/movable/screen/alert/bloodsense
name = "Blood Sense"
desc = "Allows you to sense blood that is manipulated by dark magicks."
icon_state = "cult_sense"
@@ -380,17 +380,17 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
var/angle = 0
var/mob/living/simple_animal/hostile/construct/Cviewer = null
-/obj/screen/alert/bloodsense/Initialize()
+/atom/movable/screen/alert/bloodsense/Initialize()
. = ..()
narnar = new('icons/mob/screen_alert.dmi', "mini_nar")
START_PROCESSING(SSprocessing, src)
-/obj/screen/alert/bloodsense/Destroy()
+/atom/movable/screen/alert/bloodsense/Destroy()
Cviewer = null
STOP_PROCESSING(SSprocessing, src)
return ..()
-/obj/screen/alert/bloodsense/process()
+/atom/movable/screen/alert/bloodsense/process()
var/atom/blood_target
if(!mob_viewer.mind)
@@ -480,15 +480,15 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
// CLOCKCULT
-/obj/screen/alert/clockwork
+/atom/movable/screen/alert/clockwork
alerttooltipstyle = "clockcult"
-/obj/screen/alert/clockwork/infodump
+/atom/movable/screen/alert/clockwork/infodump
name = "Global Records"
desc = "You shouldn't be seeing this description, because it should be dynamically generated."
icon_state = "clockinfo"
-/obj/screen/alert/clockwork/infodump/MouseEntered(location,control,params)
+/atom/movable/screen/alert/clockwork/infodump/MouseEntered(location,control,params)
if(GLOB.ratvar_awakens)
desc = "CHETR
NYY
HAGEHUGF-NAQ-UBABE
RATVAR."
else
@@ -520,19 +520,19 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
//GUARDIANS
-/obj/screen/alert/cancharge
+/atom/movable/screen/alert/cancharge
name = "Charge Ready"
desc = "You are ready to charge at a location!"
icon_state = "guardian_charge"
alerttooltipstyle = "parasite"
-/obj/screen/alert/canstealth
+/atom/movable/screen/alert/canstealth
name = "Stealth Ready"
desc = "You are ready to enter stealth!"
icon_state = "guardian_canstealth"
alerttooltipstyle = "parasite"
-/obj/screen/alert/instealth
+/atom/movable/screen/alert/instealth
name = "In Stealth"
desc = "You are in stealth and your next attack will do bonus damage!"
icon_state = "guardian_instealth"
@@ -540,52 +540,52 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
//SILICONS
-/obj/screen/alert/nocell
+/atom/movable/screen/alert/nocell
name = "Missing Power Cell"
desc = "Unit has no power cell. No modules available until a power cell is reinstalled. Robotics may provide assistance."
icon_state = "nocell"
-/obj/screen/alert/emptycell
+/atom/movable/screen/alert/emptycell
name = "Out of Power"
desc = "Unit's power cell has no charge remaining. No modules available until power cell is recharged. \
Recharging stations are available in robotics, the dormitory bathrooms, and the AI satellite."
icon_state = "emptycell"
-/obj/screen/alert/lowcell
+/atom/movable/screen/alert/lowcell
name = "Low Charge"
desc = "Unit's power cell is running low. Recharging stations are available in robotics, the dormitory bathrooms, and the AI satellite."
icon_state = "lowcell"
-/obj/screen/alert/etherealcharge
+/atom/movable/screen/alert/etherealcharge
name = "Low Blood Charge"
desc = "Your blood's electric charge is running low, find a source of charge for your blood. Use a recharging station found in robotics or the dormitory bathrooms, or eat some Ethereal-friendly food."
icon_state = "etherealcharge"
-/obj/screen/alert/ethereal_overcharge
+/atom/movable/screen/alert/ethereal_overcharge
name = "Blood Overcharge"
desc = "Your blood's electric charge is becoming dangerously high, find an outlet for your energy. Use Grab Intent on an APC to channel your energy into it."
icon_state = "ethereal_overcharge"
//Need to cover all use cases - emag, illegal upgrade module, malf AI hack, traitor cyborg
-/obj/screen/alert/hacked
+/atom/movable/screen/alert/hacked
name = "Hacked"
desc = "Hazardous non-standard equipment detected. Please ensure any usage of this equipment is in line with unit's laws, if any."
icon_state = "hacked"
-/obj/screen/alert/locked
+/atom/movable/screen/alert/locked
name = "Locked Down"
desc = "Unit has been remotely locked down. Usage of a Robotics Control Console like the one in the Research Director's \
office by your AI master or any qualified human may resolve this matter. Robotics may provide further assistance if necessary."
icon_state = "locked"
-/obj/screen/alert/newlaw
+/atom/movable/screen/alert/newlaw
name = "Law Update"
desc = "Laws have potentially been uploaded to or removed from this unit. Please be aware of any changes \
so as to remain in compliance with the most up-to-date laws."
icon_state = "newlaw"
timeout = 300
-/obj/screen/alert/hackingapc
+/atom/movable/screen/alert/hackingapc
name = "Hacking APC"
desc = "An Area Power Controller is being hacked. When the process is \
complete, you will have exclusive control of it, and you will gain \
@@ -594,7 +594,7 @@ so as to remain in compliance with the most up-to-date laws."
timeout = 600
var/atom/target = null
-/obj/screen/alert/hackingapc/Click()
+/atom/movable/screen/alert/hackingapc/Click()
if(!usr || !usr.client)
return
if(!target)
@@ -606,7 +606,7 @@ so as to remain in compliance with the most up-to-date laws."
//MECHS
-/obj/screen/alert/low_mech_integrity
+/atom/movable/screen/alert/low_mech_integrity
name = "Mech Damaged"
desc = "Mech integrity is low."
icon_state = "low_mech_integrity"
@@ -614,19 +614,19 @@ so as to remain in compliance with the most up-to-date laws."
//GHOSTS
//TODO: expand this system to replace the pollCandidates/CheckAntagonist/"choose quickly"/etc Yes/No messages
-/obj/screen/alert/notify_cloning
+/atom/movable/screen/alert/notify_cloning
name = "Revival"
desc = "Someone is trying to revive you. Re-enter your corpse if you want to be revived!"
icon_state = "template"
timeout = 300
-/obj/screen/alert/notify_cloning/Click()
+/atom/movable/screen/alert/notify_cloning/Click()
if(!usr || !usr.client)
return
var/mob/dead/observer/G = usr
G.reenter_corpse()
-/obj/screen/alert/notify_action
+/atom/movable/screen/alert/notify_action
name = "Body created"
desc = "A body was created. You can enter it."
icon_state = "template"
@@ -634,7 +634,7 @@ so as to remain in compliance with the most up-to-date laws."
var/atom/target = null
var/action = NOTIFY_JUMP
-/obj/screen/alert/notify_action/Click()
+/atom/movable/screen/alert/notify_action/Click()
if(!usr || !usr.client)
return
if(!target)
@@ -654,44 +654,44 @@ so as to remain in compliance with the most up-to-date laws."
//OBJECT-BASED
-/obj/screen/alert/restrained/buckled
+/atom/movable/screen/alert/restrained/buckled
name = "Buckled"
desc = "You've been buckled to something. Click the alert to unbuckle unless you're handcuffed."
icon_state = "buckled"
-/obj/screen/alert/restrained/handcuffed
+/atom/movable/screen/alert/restrained/handcuffed
name = "Handcuffed"
desc = "You're handcuffed and can't act. If anyone drags you, you won't be able to move. Click the alert to free yourself."
-/obj/screen/alert/restrained/legcuffed
+/atom/movable/screen/alert/restrained/legcuffed
name = "Legcuffed"
desc = "You're legcuffed, which slows you down considerably. Click the alert to free yourself."
-/obj/screen/alert/restrained/Click()
+/atom/movable/screen/alert/restrained/Click()
var/mob/living/L = usr
if(!istype(L) || !L.can_resist())
return
L.MarkResistTime()
return L.resist_restraints()
-/obj/screen/alert/restrained/buckled/Click()
+/atom/movable/screen/alert/restrained/buckled/Click()
var/mob/living/L = usr
if(!istype(L) || !L.can_resist())
return
L.MarkResistTime()
return L.resist_buckle()
-/obj/screen/alert/shoes/untied
+/atom/movable/screen/alert/shoes/untied
name = "Untied Shoes"
desc = "Your shoes are untied! Click the alert or your shoes to tie them."
icon_state = "shoealert"
-/obj/screen/alert/shoes/knotted
+/atom/movable/screen/alert/shoes/knotted
name = "Knotted Shoes"
desc = "Someone tied your shoelaces together! Click the alert or your shoes to undo the knot."
icon_state = "shoealert"
-/obj/screen/alert/shoes/Click()
+/atom/movable/screen/alert/shoes/Click()
var/mob/living/carbon/C = usr
if(!istype(C) || !C.can_resist() || C != mob_viewer || !C.shoes)
return
@@ -708,7 +708,7 @@ so as to remain in compliance with the most up-to-date laws."
mymob.client.screen -= alerts[alerts[i]]
return 1
for(var/i = 1, i <= alerts.len, i++)
- var/obj/screen/alert/alert = alerts[alerts[i]]
+ var/atom/movable/screen/alert/alert = alerts[alerts[i]]
if(alert.icon_state == "template")
alert.icon = ui_style
switch(i)
@@ -728,7 +728,7 @@ so as to remain in compliance with the most up-to-date laws."
mymob.client.screen |= alert
return 1
-/obj/screen/alert/Click(location, control, params)
+/atom/movable/screen/alert/Click(location, control, params)
if(!usr || !usr.client)
return
var/paramslist = params2list(params)
@@ -738,7 +738,7 @@ so as to remain in compliance with the most up-to-date laws."
if(master)
return usr.client.Click(master, location, control, params)
-/obj/screen/alert/Destroy()
+/atom/movable/screen/alert/Destroy()
. = ..()
severity = 0
master = null
diff --git a/code/_onclick/hud/alien.dm b/code/_onclick/hud/alien.dm
index 94585cbd52..bf7969a6ba 100644
--- a/code/_onclick/hud/alien.dm
+++ b/code/_onclick/hud/alien.dm
@@ -1,23 +1,23 @@
-/obj/screen/alien
+/atom/movable/screen/alien
icon = 'icons/mob/screen_alien.dmi'
-/obj/screen/alien/leap
+/atom/movable/screen/alien/leap
name = "toggle leap"
icon_state = "leap_off"
-/obj/screen/alien/leap/Click()
+/atom/movable/screen/alien/leap/Click()
if(isalienhunter(usr))
var/mob/living/carbon/alien/humanoid/hunter/AH = usr
AH.toggle_leap()
-/obj/screen/alien/plasma_display
+/atom/movable/screen/alien/plasma_display
icon = 'icons/mob/screen_gen.dmi'
icon_state = "power_display2"
name = "plasma stored"
screen_loc = ui_alienplasmadisplay
-/obj/screen/alien/alien_queen_finder
+/atom/movable/screen/alien/alien_queen_finder
icon = 'icons/mob/screen_alien.dmi'
icon_state = "queen_finder"
name = "queen sense"
@@ -30,7 +30,7 @@
/datum/hud/alien/New(mob/living/carbon/alien/humanoid/owner)
..()
- var/obj/screen/using
+ var/atom/movable/screen/using
//equippable shit
@@ -39,55 +39,55 @@
//begin buttons
- using = new /obj/screen/swap_hand()
+ using = new /atom/movable/screen/swap_hand()
using.icon = ui_style
using.icon_state = "swap_1"
using.screen_loc = ui_swaphand_position(owner,1)
using.hud = src
static_inventory += using
- using = new /obj/screen/swap_hand()
+ using = new /atom/movable/screen/swap_hand()
using.icon = ui_style
using.icon_state = "swap_2"
using.screen_loc = ui_swaphand_position(owner,2)
using.hud = src
static_inventory += using
- action_intent = new /obj/screen/act_intent/alien()
+ action_intent = new /atom/movable/screen/act_intent/alien()
action_intent.icon_state = mymob.a_intent
action_intent.hud = src
static_inventory += action_intent
if(isalienhunter(mymob))
var/mob/living/carbon/alien/humanoid/hunter/H = mymob
- H.leap_icon = new /obj/screen/alien/leap()
+ H.leap_icon = new /atom/movable/screen/alien/leap()
H.leap_icon.screen_loc = ui_alien_storage_r
static_inventory += H.leap_icon
- using = new/obj/screen/language_menu
+ using = new/atom/movable/screen/language_menu
using.screen_loc = ui_alien_language_menu
using.hud = src
static_inventory += using
- using = new /obj/screen/drop()
+ using = new /atom/movable/screen/drop()
using.icon = ui_style
using.screen_loc = ui_drop_throw
using.hud = src
static_inventory += using
- using = new /obj/screen/resist()
+ using = new /atom/movable/screen/resist()
using.icon = ui_style
using.screen_loc = ui_pull_resist
using.hud = src
hotkeybuttons += using
- throw_icon = new /obj/screen/throw_catch()
+ throw_icon = new /atom/movable/screen/throw_catch()
throw_icon.icon = ui_style
throw_icon.screen_loc = ui_drop_throw
throw_icon.hud = src
hotkeybuttons += throw_icon
- pull_icon = new /obj/screen/pull()
+ pull_icon = new /atom/movable/screen/pull()
pull_icon.icon = ui_style
pull_icon.hud = src
pull_icon.update_icon()
@@ -96,25 +96,25 @@
//begin indicators
- healths = new /obj/screen/healths/alien()
+ healths = new /atom/movable/screen/healths/alien()
healths.hud = src
infodisplay += healths
- alien_plasma_display = new /obj/screen/alien/plasma_display()
+ alien_plasma_display = new /atom/movable/screen/alien/plasma_display()
alien_plasma_display.hud = src
infodisplay += alien_plasma_display
if(!isalienqueen(mymob))
- alien_queen_finder = new /obj/screen/alien/alien_queen_finder
+ alien_queen_finder = new /atom/movable/screen/alien/alien_queen_finder
alien_queen_finder.hud = src
infodisplay += alien_queen_finder
- zone_select = new /obj/screen/zone_sel/alien()
+ zone_select = new /atom/movable/screen/zone_sel/alien()
zone_select.hud = src
zone_select.update_icon()
static_inventory += zone_select
- for(var/obj/screen/inventory/inv in (static_inventory + toggleable_inventory))
+ for(var/atom/movable/screen/inventory/inv in (static_inventory + toggleable_inventory))
if(inv.slot_id)
inv.hud = src
inv_slots[inv.slot_id] = inv
diff --git a/code/_onclick/hud/alien_larva.dm b/code/_onclick/hud/alien_larva.dm
index 0f3c6ccf17..17d3ad35e4 100644
--- a/code/_onclick/hud/alien_larva.dm
+++ b/code/_onclick/hud/alien_larva.dm
@@ -3,34 +3,34 @@
/datum/hud/larva/New(mob/owner)
..()
- var/obj/screen/using
+ var/atom/movable/screen/using
- action_intent = new /obj/screen/act_intent/alien()
+ action_intent = new /atom/movable/screen/act_intent/alien()
action_intent.icon_state = mymob.a_intent
action_intent.hud = src
static_inventory += action_intent
- healths = new /obj/screen/healths/alien()
+ healths = new /atom/movable/screen/healths/alien()
healths.hud = src
infodisplay += healths
- alien_queen_finder = new /obj/screen/alien/alien_queen_finder()
+ alien_queen_finder = new /atom/movable/screen/alien/alien_queen_finder()
alien_queen_finder.hud = src
infodisplay += alien_queen_finder
- pull_icon = new /obj/screen/pull()
+ pull_icon = new /atom/movable/screen/pull()
pull_icon.icon = 'icons/mob/screen_alien.dmi'
pull_icon.hud = src
pull_icon.update_icon()
pull_icon.screen_loc = ui_pull_resist
hotkeybuttons += pull_icon
- using = new/obj/screen/language_menu
+ using = new/atom/movable/screen/language_menu
using.screen_loc = ui_alien_language_menu
using.hud = src
static_inventory += using
- zone_select = new /obj/screen/zone_sel/alien()
+ zone_select = new /atom/movable/screen/zone_sel/alien()
zone_select.hud = src
zone_select.update_icon()
static_inventory += zone_select
diff --git a/code/_onclick/hud/blob_overmind.dm b/code/_onclick/hud/blob_overmind.dm
index b9118da5f1..f4d6ffc919 100644
--- a/code/_onclick/hud/blob_overmind.dm
+++ b/code/_onclick/hud/blob_overmind.dm
@@ -1,39 +1,39 @@
-/obj/screen/blob
+/atom/movable/screen/blob
icon = 'icons/mob/blob.dmi'
-/obj/screen/blob/MouseEntered(location,control,params)
+/atom/movable/screen/blob/MouseEntered(location,control,params)
openToolTip(usr,src,params,title = name,content = desc, theme = "blob")
-/obj/screen/blob/MouseExited()
+/atom/movable/screen/blob/MouseExited()
closeToolTip(usr)
-/obj/screen/blob/BlobHelp
+/atom/movable/screen/blob/BlobHelp
icon_state = "ui_help"
name = "Blob Help"
desc = "Help on playing blob!"
-/obj/screen/blob/BlobHelp/Click()
+/atom/movable/screen/blob/BlobHelp/Click()
if(isovermind(usr))
var/mob/camera/blob/B = usr
B.blob_help()
-/obj/screen/blob/JumpToNode
+/atom/movable/screen/blob/JumpToNode
icon_state = "ui_tonode"
name = "Jump to Node"
desc = "Moves your camera to a selected blob node."
-/obj/screen/blob/JumpToNode/Click()
+/atom/movable/screen/blob/JumpToNode/Click()
if(isovermind(usr))
var/mob/camera/blob/B = usr
B.jump_to_node()
-/obj/screen/blob/JumpToCore
+/atom/movable/screen/blob/JumpToCore
icon_state = "ui_tocore"
name = "Jump to Core"
desc = "Moves your camera to your blob core."
-/obj/screen/blob/JumpToCore/MouseEntered(location,control,params)
+/atom/movable/screen/blob/JumpToCore/MouseEntered(location,control,params)
if(hud && hud.mymob && isovermind(hud.mymob))
var/mob/camera/blob/B = hud.mymob
if(!B.placed)
@@ -44,59 +44,59 @@
desc = initial(desc)
..()
-/obj/screen/blob/JumpToCore/Click()
+/atom/movable/screen/blob/JumpToCore/Click()
if(isovermind(usr))
var/mob/camera/blob/B = usr
if(!B.placed)
B.place_blob_core(0)
B.transport_core()
-/obj/screen/blob/Blobbernaut
+/atom/movable/screen/blob/Blobbernaut
icon_state = "ui_blobbernaut"
name = "Produce Blobbernaut (40)"
desc = "Produces a strong, smart blobbernaut from a factory blob for 40 resources.
The factory blob used will become fragile and unable to produce spores."
-/obj/screen/blob/Blobbernaut/Click()
+/atom/movable/screen/blob/Blobbernaut/Click()
if(isovermind(usr))
var/mob/camera/blob/B = usr
B.create_blobbernaut()
-/obj/screen/blob/ResourceBlob
+/atom/movable/screen/blob/ResourceBlob
icon_state = "ui_resource"
name = "Produce Resource Blob (40)"
desc = "Produces a resource blob for 40 resources.
Resource blobs will give you resources every few seconds."
-/obj/screen/blob/ResourceBlob/Click()
+/atom/movable/screen/blob/ResourceBlob/Click()
if(isovermind(usr))
var/mob/camera/blob/B = usr
B.create_resource()
-/obj/screen/blob/NodeBlob
+/atom/movable/screen/blob/NodeBlob
icon_state = "ui_node"
name = "Produce Node Blob (50)"
desc = "Produces a node blob for 50 resources.
Node blobs will expand and activate nearby resource and factory blobs."
-/obj/screen/blob/NodeBlob/Click()
+/atom/movable/screen/blob/NodeBlob/Click()
if(isovermind(usr))
var/mob/camera/blob/B = usr
B.create_node()
-/obj/screen/blob/FactoryBlob
+/atom/movable/screen/blob/FactoryBlob
icon_state = "ui_factory"
name = "Produce Factory Blob (60)"
desc = "Produces a factory blob for 60 resources.
Factory blobs will produce spores every few seconds."
-/obj/screen/blob/FactoryBlob/Click()
+/atom/movable/screen/blob/FactoryBlob/Click()
if(isovermind(usr))
var/mob/camera/blob/B = usr
B.create_factory()
-/obj/screen/blob/ReadaptStrain
+/atom/movable/screen/blob/ReadaptStrain
icon_state = "ui_chemswap"
name = "Readapt Strain (40)"
desc = "Allows you to choose a new strain from 4 random choices for 40 resources."
-/obj/screen/blob/ReadaptStrain/MouseEntered(location,control,params)
+/atom/movable/screen/blob/ReadaptStrain/MouseEntered(location,control,params)
if(hud && hud.mymob && isovermind(hud.mymob))
var/mob/camera/blob/B = hud.mymob
if(B.free_strain_rerolls)
@@ -107,26 +107,26 @@
desc = initial(desc)
..()
-/obj/screen/blob/ReadaptStrain/Click()
+/atom/movable/screen/blob/ReadaptStrain/Click()
if(isovermind(usr))
var/mob/camera/blob/B = usr
B.strain_reroll()
-/obj/screen/blob/RelocateCore
+/atom/movable/screen/blob/RelocateCore
icon_state = "ui_swap"
name = "Relocate Core (80)"
desc = "Swaps a node and your core for 80 resources."
-/obj/screen/blob/RelocateCore/Click()
+/atom/movable/screen/blob/RelocateCore/Click()
if(isovermind(usr))
var/mob/camera/blob/B = usr
B.relocate_core()
/datum/hud/blob_overmind/New(mob/owner)
..()
- var/obj/screen/using
+ var/atom/movable/screen/using
- blobpwrdisplay = new /obj/screen()
+ blobpwrdisplay = new /atom/movable/screen()
blobpwrdisplay.name = "blob power"
blobpwrdisplay.icon_state = "block"
blobpwrdisplay.screen_loc = ui_health
@@ -136,51 +136,51 @@
blobpwrdisplay.hud = src
infodisplay += blobpwrdisplay
- healths = new /obj/screen/healths/blob()
+ healths = new /atom/movable/screen/healths/blob()
healths.hud = src
infodisplay += healths
- using = new /obj/screen/blob/BlobHelp()
+ using = new /atom/movable/screen/blob/BlobHelp()
using.screen_loc = "WEST:6,NORTH:-3"
using.hud = src
static_inventory += using
- using = new /obj/screen/blob/JumpToNode()
+ using = new /atom/movable/screen/blob/JumpToNode()
using.screen_loc = ui_inventory
using.hud = src
static_inventory += using
- using = new /obj/screen/blob/JumpToCore()
+ using = new /atom/movable/screen/blob/JumpToCore()
using.screen_loc = ui_zonesel
using.hud = src
static_inventory += using
- using = new /obj/screen/blob/Blobbernaut()
+ using = new /atom/movable/screen/blob/Blobbernaut()
using.screen_loc = ui_belt
using.hud = src
static_inventory += using
- using = new /obj/screen/blob/ResourceBlob()
+ using = new /atom/movable/screen/blob/ResourceBlob()
using.screen_loc = ui_back
using.hud = src
static_inventory += using
- using = new /obj/screen/blob/NodeBlob()
+ using = new /atom/movable/screen/blob/NodeBlob()
using.screen_loc = ui_hand_position(2)
using.hud = src
static_inventory += using
- using = new /obj/screen/blob/FactoryBlob()
+ using = new /atom/movable/screen/blob/FactoryBlob()
using.screen_loc = ui_hand_position(1)
using.hud = src
static_inventory += using
- using = new /obj/screen/blob/ReadaptStrain()
+ using = new /atom/movable/screen/blob/ReadaptStrain()
using.screen_loc = ui_storage1
using.hud = src
static_inventory += using
- using = new /obj/screen/blob/RelocateCore()
+ using = new /atom/movable/screen/blob/RelocateCore()
using.screen_loc = ui_storage2
using.hud = src
static_inventory += using
diff --git a/code/_onclick/hud/blobbernauthud.dm b/code/_onclick/hud/blobbernauthud.dm
index ed45d5b1f6..430e8e81e7 100644
--- a/code/_onclick/hud/blobbernauthud.dm
+++ b/code/_onclick/hud/blobbernauthud.dm
@@ -2,10 +2,10 @@
/datum/hud/blobbernaut/New(mob/owner)
..()
- blobpwrdisplay = new /obj/screen/healths/blob/naut/core()
+ blobpwrdisplay = new /atom/movable/screen/healths/blob/naut/core()
blobpwrdisplay.hud = src
infodisplay += blobpwrdisplay
- healths = new /obj/screen/healths/blob/naut()
+ healths = new /atom/movable/screen/healths/blob/naut()
healths.hud = src
infodisplay += healths
diff --git a/code/_onclick/hud/clockwork_marauder.dm b/code/_onclick/hud/clockwork_marauder.dm
index b1b24cc58b..de9cb65c75 100644
--- a/code/_onclick/hud/clockwork_marauder.dm
+++ b/code/_onclick/hud/clockwork_marauder.dm
@@ -1,20 +1,20 @@
/datum/hud/marauder
- var/obj/screen/hosthealth
- var/obj/screen/blockchance
- var/obj/screen/counterchance
+ var/atom/movable/screen/hosthealth
+ var/atom/movable/screen/blockchance
+ var/atom/movable/screen/counterchance
/datum/hud/marauder/New(mob/living/simple_animal/hostile/clockwork/guardian/owner)
..()
- var/obj/screen/using
+ var/atom/movable/screen/using
- healths = new /obj/screen/healths/clock()
+ healths = new /atom/movable/screen/healths/clock()
infodisplay += healths
- hosthealth = new /obj/screen/healths/clock()
+ hosthealth = new /atom/movable/screen/healths/clock()
hosthealth.screen_loc = ui_internal
infodisplay += hosthealth
- using = new /obj/screen/marauder/emerge()
+ using = new /atom/movable/screen/marauder/emerge()
using.screen_loc = ui_zonesel
static_inventory += using
@@ -28,15 +28,15 @@
if(client && !hud_used)
hud_used = new /datum/hud/marauder(src, ui_style2icon(client.prefs.UI_style))
-/obj/screen/marauder
+/atom/movable/screen/marauder
icon = 'icons/mob/clockwork_mobs.dmi'
-/obj/screen/marauder/emerge
+/atom/movable/screen/marauder/emerge
icon_state = "clockguard_emerge"
name = "Emerge/Return"
desc = "Emerge or Return."
-/obj/screen/marauder/emerge/Click()
+/atom/movable/screen/marauder/emerge/Click()
if(istype(usr, /mob/living/simple_animal/hostile/clockwork/guardian))
var/mob/living/simple_animal/hostile/clockwork/guardian/G = usr
if(G.is_in_host())
diff --git a/code/_onclick/hud/constructs.dm b/code/_onclick/hud/constructs.dm
index 06e657d136..31f1060f17 100644
--- a/code/_onclick/hud/constructs.dm
+++ b/code/_onclick/hud/constructs.dm
@@ -3,13 +3,13 @@
/datum/hud/constructs/New(mob/owner)
..()
- pull_icon = new /obj/screen/pull()
+ pull_icon = new /atom/movable/screen/pull()
pull_icon.icon = ui_style
pull_icon.hud = src
pull_icon.update_icon()
pull_icon.screen_loc = ui_construct_pull
static_inventory += pull_icon
- healths = new /obj/screen/healths/construct()
+ healths = new /atom/movable/screen/healths/construct()
healths.hud = src
infodisplay += healths
diff --git a/code/_onclick/hud/credits.dm b/code/_onclick/hud/credits.dm
index 31ea453d4a..974f158323 100644
--- a/code/_onclick/hud/credits.dm
+++ b/code/_onclick/hud/credits.dm
@@ -18,7 +18,7 @@
for(var/I in credit_order_for_this_round)
if(!credits)
return
- _credits += new /obj/screen/credit(null, I, src, credits_icon)
+ _credits += new /atom/movable/screen/credit(null, I, src, credits_icon)
sleep(CREDIT_SPAWN_SPEED)
sleep(CREDIT_ROLL_SPEED - CREDIT_SPAWN_SPEED)
remove_verb(src, /client/proc/ClearCredits)
@@ -31,7 +31,7 @@
QDEL_LIST(credits)
credits = null
-/obj/screen/credit
+/atom/movable/screen/credit
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
alpha = 0
screen_loc = "12,1"
@@ -39,7 +39,7 @@
var/client/parent
var/matrix/target
-/obj/screen/credit/Initialize(mapload, credited, client/P, icon/I)
+/atom/movable/screen/credit/Initialize(mapload, credited, client/P, icon/I)
. = ..()
icon = I
parent = P
@@ -57,7 +57,7 @@
QDEL_IN(src, CREDIT_ROLL_SPEED)
P.screen += src
-/obj/screen/credit/Destroy()
+/atom/movable/screen/credit/Destroy()
var/client/P = parent
P.screen -= src
icon = null
@@ -65,5 +65,5 @@
parent = null
return ..()
-/obj/screen/credit/proc/FadeOut()
+/atom/movable/screen/credit/proc/FadeOut()
animate(src, alpha = 0, transform = target, time = CREDIT_EASE_DURATION)
diff --git a/code/_onclick/hud/devil.dm b/code/_onclick/hud/devil.dm
index fd2146424c..574f5dd1fd 100644
--- a/code/_onclick/hud/devil.dm
+++ b/code/_onclick/hud/devil.dm
@@ -4,15 +4,15 @@
/datum/hud/devil/New(mob/owner)
..()
- var/obj/screen/using
+ var/atom/movable/screen/using
- using = new /obj/screen/drop()
+ using = new /atom/movable/screen/drop()
using.icon = ui_style
using.screen_loc = ui_drone_drop
using.hud = src
static_inventory += using
- pull_icon = new /obj/screen/pull()
+ pull_icon = new /atom/movable/screen/pull()
pull_icon.icon = ui_style
pull_icon.hud = src
pull_icon.update_icon()
@@ -21,7 +21,7 @@
build_hand_slots()
- using = new /obj/screen/inventory()
+ using = new /atom/movable/screen/inventory()
using.name = "hand"
using.icon = ui_style
using.icon_state = "swap_1_m"
@@ -31,7 +31,7 @@
using.hud = src
static_inventory += using
- using = new /obj/screen/inventory()
+ using = new /atom/movable/screen/inventory()
using.name = "hand"
using.icon = ui_style
using.icon_state = "swap_2"
@@ -41,15 +41,15 @@
using.hud = src
static_inventory += using
- zone_select = new /obj/screen/zone_sel()
+ zone_select = new /atom/movable/screen/zone_sel()
zone_select.icon = ui_style
zone_select.hud = src
zone_select.update_icon()
- lingchemdisplay = new /obj/screen/ling/chems()
+ lingchemdisplay = new /atom/movable/screen/ling/chems()
lingchemdisplay.hud = src
- devilsouldisplay = new /obj/screen/devil/soul_counter
+ devilsouldisplay = new /atom/movable/screen/devil/soul_counter
devilsouldisplay.hud = src
infodisplay += devilsouldisplay
diff --git a/code/_onclick/hud/drones.dm b/code/_onclick/hud/drones.dm
index bcdfa084d3..849936d4ed 100644
--- a/code/_onclick/hud/drones.dm
+++ b/code/_onclick/hud/drones.dm
@@ -1,8 +1,8 @@
/datum/hud/dextrous/drone/New(mob/owner)
..()
- var/obj/screen/inventory/inv_box
+ var/atom/movable/screen/inventory/inv_box
- inv_box = new /obj/screen/inventory()
+ inv_box = new /atom/movable/screen/inventory()
inv_box.name = "internal storage"
inv_box.icon = ui_style
inv_box.icon_state = "suit_storage"
@@ -11,7 +11,7 @@
inv_box.slot_id = SLOT_GENERC_DEXTROUS_STORAGE
static_inventory += inv_box
- inv_box = new /obj/screen/inventory()
+ inv_box = new /atom/movable/screen/inventory()
inv_box.name = "head/mask"
inv_box.icon = ui_style
inv_box.icon_state = "mask"
@@ -20,7 +20,7 @@
inv_box.slot_id = SLOT_HEAD
static_inventory += inv_box
- for(var/obj/screen/inventory/inv in (static_inventory + toggleable_inventory))
+ for(var/atom/movable/screen/inventory/inv in (static_inventory + toggleable_inventory))
if(inv.slot_id)
inv.hud = src
inv_slots[inv.slot_id] = inv
diff --git a/code/_onclick/hud/fullscreen.dm b/code/_onclick/hud/fullscreen.dm
index 076c949f8e..a7247ccf09 100644
--- a/code/_onclick/hud/fullscreen.dm
+++ b/code/_onclick/hud/fullscreen.dm
@@ -1,5 +1,5 @@
/mob/proc/overlay_fullscreen(category, type, severity)
- var/obj/screen/fullscreen/screen = screens[category]
+ var/atom/movable/screen/fullscreen/screen = screens[category]
if (!screen || screen.type != type)
// needs to be recreated
clear_fullscreen(category, FALSE)
@@ -17,7 +17,7 @@
return screen
/mob/proc/clear_fullscreen(category, animated = 10)
- var/obj/screen/fullscreen/screen = screens[category]
+ var/atom/movable/screen/fullscreen/screen = screens[category]
if(!screen)
return
@@ -31,7 +31,7 @@
client.screen -= screen
qdel(screen)
-/mob/proc/clear_fullscreen_after_animate(obj/screen/fullscreen/screen)
+/mob/proc/clear_fullscreen_after_animate(atom/movable/screen/fullscreen/screen)
if(client)
client.screen -= screen
qdel(screen)
@@ -47,7 +47,7 @@
/mob/proc/reload_fullscreen()
if(client)
- var/obj/screen/fullscreen/screen
+ var/atom/movable/screen/fullscreen/screen
for(var/category in screens)
screen = screens[category]
if(screen.should_show_to(src))
@@ -56,7 +56,7 @@
else
client.screen -= screen
-/obj/screen/fullscreen
+/atom/movable/screen/fullscreen
icon = 'icons/mob/screen_full.dmi'
icon_state = "default"
screen_loc = "CENTER-7,CENTER-7"
@@ -67,89 +67,89 @@
var/severity = 0
var/show_when_dead = FALSE
-/obj/screen/fullscreen/proc/update_for_view(client_view)
+/atom/movable/screen/fullscreen/proc/update_for_view(client_view)
if (screen_loc == "CENTER-7,CENTER-7" && view != client_view)
var/list/actualview = getviewsize(client_view)
view = client_view
transform = matrix(actualview[1]/FULLSCREEN_OVERLAY_RESOLUTION_X, 0, 0, 0, actualview[2]/FULLSCREEN_OVERLAY_RESOLUTION_Y, 0)
-/obj/screen/fullscreen/proc/should_show_to(mob/mymob)
+/atom/movable/screen/fullscreen/proc/should_show_to(mob/mymob)
if(!show_when_dead && mymob.stat == DEAD)
return FALSE
return TRUE
-/obj/screen/fullscreen/Destroy()
+/atom/movable/screen/fullscreen/Destroy()
severity = 0
. = ..()
-/obj/screen/fullscreen/brute
+/atom/movable/screen/fullscreen/brute
icon_state = "brutedamageoverlay"
layer = UI_DAMAGE_LAYER
plane = FULLSCREEN_PLANE
-/obj/screen/fullscreen/oxy
+/atom/movable/screen/fullscreen/oxy
icon_state = "oxydamageoverlay"
layer = UI_DAMAGE_LAYER
plane = FULLSCREEN_PLANE
-/obj/screen/fullscreen/crit
+/atom/movable/screen/fullscreen/crit
icon_state = "passage"
layer = CRIT_LAYER
plane = FULLSCREEN_PLANE
-/obj/screen/fullscreen/crit/vision
+/atom/movable/screen/fullscreen/crit/vision
icon_state = "oxydamageoverlay"
layer = BLIND_LAYER
-/obj/screen/fullscreen/blind
+/atom/movable/screen/fullscreen/blind
icon_state = "blackimageoverlay"
layer = BLIND_LAYER
plane = FULLSCREEN_PLANE
-/obj/screen/fullscreen/curse
+/atom/movable/screen/fullscreen/curse
icon_state = "curse"
layer = CURSE_LAYER
plane = FULLSCREEN_PLANE
-/obj/screen/fullscreen/impaired
+/atom/movable/screen/fullscreen/impaired
icon_state = "impairedoverlay"
-/obj/screen/fullscreen/blurry
+/atom/movable/screen/fullscreen/blurry
icon = 'icons/mob/screen_gen.dmi'
screen_loc = "WEST,SOUTH to EAST,NORTH"
icon_state = "blurry"
-/obj/screen/fullscreen/flash
+/atom/movable/screen/fullscreen/flash
icon = 'icons/mob/screen_gen.dmi'
screen_loc = "WEST,SOUTH to EAST,NORTH"
icon_state = "flash"
-/obj/screen/fullscreen/flash/static
+/atom/movable/screen/fullscreen/flash/static
icon = 'icons/mob/screen_gen.dmi'
screen_loc = "WEST,SOUTH to EAST,NORTH"
icon_state = "noise"
-/obj/screen/fullscreen/high
+/atom/movable/screen/fullscreen/high
icon = 'icons/mob/screen_gen.dmi'
screen_loc = "WEST,SOUTH to EAST,NORTH"
icon_state = "druggy"
-/obj/screen/fullscreen/color_vision
+/atom/movable/screen/fullscreen/color_vision
icon = 'icons/mob/screen_gen.dmi'
screen_loc = "WEST,SOUTH to EAST,NORTH"
icon_state = "flash"
alpha = 80
-/obj/screen/fullscreen/color_vision/green
+/atom/movable/screen/fullscreen/color_vision/green
color = "#00ff00"
-/obj/screen/fullscreen/color_vision/red
+/atom/movable/screen/fullscreen/color_vision/red
color = "#ff0000"
-/obj/screen/fullscreen/color_vision/blue
+/atom/movable/screen/fullscreen/color_vision/blue
color = "#0000ff"
-/obj/screen/fullscreen/cinematic_backdrop
+/atom/movable/screen/fullscreen/cinematic_backdrop
icon = 'icons/mob/screen_gen.dmi'
screen_loc = "WEST,SOUTH to EAST,NORTH"
icon_state = "flash"
@@ -158,7 +158,7 @@
color = "#000000"
show_when_dead = TRUE
-/obj/screen/fullscreen/lighting_backdrop
+/atom/movable/screen/fullscreen/lighting_backdrop
icon = 'icons/mob/screen_gen.dmi'
icon_state = "flash"
transform = matrix(200, 0, 0, 0, 200, 0)
@@ -167,18 +167,18 @@
show_when_dead = TRUE
//Provides darkness to the back of the lighting plane
-/obj/screen/fullscreen/lighting_backdrop/lit
+/atom/movable/screen/fullscreen/lighting_backdrop/lit
invisibility = INVISIBILITY_LIGHTING
layer = BACKGROUND_LAYER+21
color = "#000"
show_when_dead = TRUE
//Provides whiteness in case you don't see lights so everything is still visible
-/obj/screen/fullscreen/lighting_backdrop/unlit
+/atom/movable/screen/fullscreen/lighting_backdrop/unlit
layer = BACKGROUND_LAYER+20
show_when_dead = TRUE
-/obj/screen/fullscreen/see_through_darkness
+/atom/movable/screen/fullscreen/see_through_darkness
icon_state = "nightvision"
plane = LIGHTING_PLANE
layer = LIGHTING_LAYER
diff --git a/code/_onclick/hud/generic_dextrous.dm b/code/_onclick/hud/generic_dextrous.dm
index e9f325fb10..88407bb04c 100644
--- a/code/_onclick/hud/generic_dextrous.dm
+++ b/code/_onclick/hud/generic_dextrous.dm
@@ -1,15 +1,15 @@
//Used for normal mobs that have hands.
/datum/hud/dextrous/New(mob/living/owner)
..()
- var/obj/screen/using
+ var/atom/movable/screen/using
- using = new /obj/screen/drop()
+ using = new /atom/movable/screen/drop()
using.icon = ui_style
using.screen_loc = ui_drone_drop
using.hud = src
static_inventory += using
- pull_icon = new /obj/screen/pull()
+ pull_icon = new /atom/movable/screen/pull()
pull_icon.icon = ui_style
pull_icon.hud = src
pull_icon.update_icon()
@@ -18,14 +18,14 @@
build_hand_slots()
- using = new /obj/screen/swap_hand()
+ using = new /atom/movable/screen/swap_hand()
using.icon = ui_style
using.icon_state = "swap_1_m"
using.screen_loc = ui_swaphand_position(owner,1)
using.hud = src
static_inventory += using
- using = new /obj/screen/swap_hand()
+ using = new /atom/movable/screen/swap_hand()
using.icon = ui_style
using.icon_state = "swap_2"
using.screen_loc = ui_swaphand_position(owner,2)
@@ -35,29 +35,29 @@
if(mymob.possible_a_intents)
if(mymob.possible_a_intents.len == 4)
// All possible intents - full intent selector
- action_intent = new /obj/screen/act_intent/segmented
+ action_intent = new /atom/movable/screen/act_intent/segmented
else
- action_intent = new /obj/screen/act_intent
+ action_intent = new /atom/movable/screen/act_intent
action_intent.icon = ui_style
action_intent.icon_state = mymob.a_intent
action_intent.hud = src
static_inventory += action_intent
- zone_select = new /obj/screen/zone_sel()
+ zone_select = new /atom/movable/screen/zone_sel()
zone_select.icon = ui_style
zone_select.hud = src
zone_select.update_icon()
static_inventory += zone_select
- using = new /obj/screen/area_creator
+ using = new /atom/movable/screen/area_creator
using.icon = ui_style
using.hud = src
static_inventory += using
mymob.client.screen = list()
- for(var/obj/screen/inventory/inv in (static_inventory + toggleable_inventory))
+ for(var/atom/movable/screen/inventory/inv in (static_inventory + toggleable_inventory))
if(inv.slot_id)
inv.hud = src
inv_slots[inv.slot_id] = inv
diff --git a/code/_onclick/hud/ghost.dm b/code/_onclick/hud/ghost.dm
index 0cdac111b0..b9514bff46 100644
--- a/code/_onclick/hud/ghost.dm
+++ b/code/_onclick/hud/ghost.dm
@@ -1,79 +1,79 @@
-/obj/screen/ghost
+/atom/movable/screen/ghost
icon = 'icons/mob/screen_ghost.dmi'
-/obj/screen/ghost/MouseEntered()
+/atom/movable/screen/ghost/MouseEntered()
flick(icon_state + "_anim", src)
-/obj/screen/ghost/jumptomob
+/atom/movable/screen/ghost/jumptomob
name = "Jump to mob"
icon_state = "jumptomob"
-/obj/screen/ghost/jumptomob/Click()
+/atom/movable/screen/ghost/jumptomob/Click()
var/mob/dead/observer/G = usr
G.jumptomob()
-/obj/screen/ghost/orbit
+/atom/movable/screen/ghost/orbit
name = "Orbit"
icon_state = "orbit"
-/obj/screen/ghost/orbit/Click()
+/atom/movable/screen/ghost/orbit/Click()
var/mob/dead/observer/G = usr
G.follow()
-/obj/screen/ghost/reenter_corpse
+/atom/movable/screen/ghost/reenter_corpse
name = "Reenter corpse"
icon_state = "reenter_corpse"
-/obj/screen/ghost/reenter_corpse/Click()
+/atom/movable/screen/ghost/reenter_corpse/Click()
var/mob/dead/observer/G = usr
G.reenter_corpse()
-/obj/screen/ghost/teleport
+/atom/movable/screen/ghost/teleport
name = "Teleport"
icon_state = "teleport"
-/obj/screen/ghost/teleport/Click()
+/atom/movable/screen/ghost/teleport/Click()
var/mob/dead/observer/G = usr
G.dead_tele()
-/obj/screen/ghost/spawners
+/atom/movable/screen/ghost/spawners
name = "Ghost role spawners"
icon_state = "spawners"
-/obj/screen/ghost/spawners/Click()
+/atom/movable/screen/ghost/spawners/Click()
var/mob/dead/observer/G = usr
G.open_spawners_menu()
/datum/hud/ghost/New(mob/owner)
..()
- var/obj/screen/using
+ var/atom/movable/screen/using
- using = new /obj/screen/ghost/jumptomob()
+ using = new /atom/movable/screen/ghost/jumptomob()
using.screen_loc = ui_ghost_jumptomob
using.hud = src
static_inventory += using
- using = new /obj/screen/ghost/orbit()
+ using = new /atom/movable/screen/ghost/orbit()
using.screen_loc = ui_ghost_orbit
using.hud = src
static_inventory += using
- using = new /obj/screen/ghost/reenter_corpse()
+ using = new /atom/movable/screen/ghost/reenter_corpse()
using.screen_loc = ui_ghost_reenter_corpse
using.hud = src
static_inventory += using
- using = new /obj/screen/ghost/teleport()
+ using = new /atom/movable/screen/ghost/teleport()
using.screen_loc = ui_ghost_teleport
using.hud = src
static_inventory += using
- using = new /obj/screen/ghost/spawners()
+ using = new /atom/movable/screen/ghost/spawners()
using.screen_loc = ui_ghost_spawners
using.hud = src
static_inventory += using
- using = new /obj/screen/language_menu
+ using = new /atom/movable/screen/language_menu
using.icon = ui_style
using.hud = src
static_inventory += using
diff --git a/code/_onclick/hud/guardian.dm b/code/_onclick/hud/guardian.dm
index 35b40ee5db..7f360b48dc 100644
--- a/code/_onclick/hud/guardian.dm
+++ b/code/_onclick/hud/guardian.dm
@@ -1,18 +1,18 @@
/datum/hud/guardian/New(mob/living/simple_animal/hostile/guardian/owner)
..()
- var/obj/screen/using
+ var/atom/movable/screen/using
- healths = new /obj/screen/healths/guardian()
+ healths = new /atom/movable/screen/healths/guardian()
healths.hud = src
infodisplay += healths
- using = new /obj/screen/guardian/Manifest()
+ using = new /atom/movable/screen/guardian/Manifest()
using.screen_loc = ui_hand_position(2)
using.hud = src
static_inventory += using
- using = new /obj/screen/guardian/Recall()
+ using = new /atom/movable/screen/guardian/Recall()
using.screen_loc = ui_hand_position(1)
using.hud = src
static_inventory += using
@@ -22,23 +22,23 @@
using.hud = src
static_inventory += using
- using = new /obj/screen/guardian/ToggleLight()
+ using = new /atom/movable/screen/guardian/ToggleLight()
using.screen_loc = ui_inventory
using.hud = src
static_inventory += using
- using = new /obj/screen/guardian/Communicate()
+ using = new /atom/movable/screen/guardian/Communicate()
using.screen_loc = ui_back
using.hud = src
static_inventory += using
/datum/hud/dextrous/guardian/New(mob/living/simple_animal/hostile/guardian/owner) //for a dextrous guardian
..()
- var/obj/screen/using
+ var/atom/movable/screen/using
if(istype(owner, /mob/living/simple_animal/hostile/guardian/dextrous))
- var/obj/screen/inventory/inv_box
+ var/atom/movable/screen/inventory/inv_box
- inv_box = new /obj/screen/inventory()
+ inv_box = new /atom/movable/screen/inventory()
inv_box.name = "internal storage"
inv_box.icon = ui_style
inv_box.icon_state = "suit_storage"
@@ -46,24 +46,24 @@
inv_box.slot_id = SLOT_GENERC_DEXTROUS_STORAGE
static_inventory += inv_box
- using = new /obj/screen/guardian/Communicate()
+ using = new /atom/movable/screen/guardian/Communicate()
using.screen_loc = ui_sstore1
static_inventory += using
else
- using = new /obj/screen/guardian/Communicate()
+ using = new /atom/movable/screen/guardian/Communicate()
using.screen_loc = ui_id
static_inventory += using
- healths = new /obj/screen/healths/guardian()
+ healths = new /atom/movable/screen/healths/guardian()
infodisplay += healths
- using = new /obj/screen/guardian/Manifest()
+ using = new /atom/movable/screen/guardian/Manifest()
using.screen_loc = ui_belt
static_inventory += using
- using = new /obj/screen/guardian/Recall()
+ using = new /atom/movable/screen/guardian/Recall()
using.screen_loc = ui_back
static_inventory += using
@@ -71,7 +71,7 @@
using.screen_loc = ui_storage2
static_inventory += using
- using = new /obj/screen/guardian/ToggleLight()
+ using = new /atom/movable/screen/guardian/ToggleLight()
using.screen_loc = ui_inventory
static_inventory += using
@@ -91,65 +91,65 @@
..()
-/obj/screen/guardian
+/atom/movable/screen/guardian
icon = 'icons/mob/guardian.dmi'
-/obj/screen/guardian/Manifest
+/atom/movable/screen/guardian/Manifest
icon_state = "manifest"
name = "Manifest"
desc = "Spring forth into battle!"
-/obj/screen/guardian/Manifest/Click()
+/atom/movable/screen/guardian/Manifest/Click()
if(isguardian(usr))
var/mob/living/simple_animal/hostile/guardian/G = usr
G.Manifest()
-/obj/screen/guardian/Recall
+/atom/movable/screen/guardian/Recall
icon_state = "recall"
name = "Recall"
desc = "Return to your user."
-/obj/screen/guardian/Recall/Click()
+/atom/movable/screen/guardian/Recall/Click()
if(isguardian(usr))
var/mob/living/simple_animal/hostile/guardian/G = usr
G.Recall()
-/obj/screen/guardian/ToggleMode
+/atom/movable/screen/guardian/ToggleMode
icon_state = "toggle"
name = "Toggle Mode"
desc = "Switch between ability modes."
-/obj/screen/guardian/ToggleMode/Click()
+/atom/movable/screen/guardian/ToggleMode/Click()
if(isguardian(usr))
var/mob/living/simple_animal/hostile/guardian/G = usr
G.ToggleMode()
-/obj/screen/guardian/ToggleMode/Inactive
+/atom/movable/screen/guardian/ToggleMode/Inactive
icon_state = "notoggle" //greyed out so it doesn't look like it'll work
-/obj/screen/guardian/ToggleMode/Assassin
+/atom/movable/screen/guardian/ToggleMode/Assassin
icon_state = "stealth"
name = "Toggle Stealth"
desc = "Enter or exit stealth."
-/obj/screen/guardian/Communicate
+/atom/movable/screen/guardian/Communicate
icon_state = "communicate"
name = "Communicate"
desc = "Communicate telepathically with your user."
-/obj/screen/guardian/Communicate/Click()
+/atom/movable/screen/guardian/Communicate/Click()
if(isguardian(usr))
var/mob/living/simple_animal/hostile/guardian/G = usr
G.Communicate()
-/obj/screen/guardian/ToggleLight
+/atom/movable/screen/guardian/ToggleLight
icon_state = "light"
name = "Toggle Light"
desc = "Glow like star dust."
-/obj/screen/guardian/ToggleLight/Click()
+/atom/movable/screen/guardian/ToggleLight/Click()
if(isguardian(usr))
var/mob/living/simple_animal/hostile/guardian/G = usr
G.ToggleLight()
diff --git a/code/_onclick/hud/hud.dm b/code/_onclick/hud/hud.dm
index 57335a966e..36a3cd1f1a 100644
--- a/code/_onclick/hud/hud.dm
+++ b/code/_onclick/hud/hud.dm
@@ -25,38 +25,38 @@ GLOBAL_LIST_INIT(available_ui_styles, list(
var/inventory_shown = FALSE //Equipped item inventory
var/hotkey_ui_hidden = FALSE //This is to hide the buttons that can be used via hotkeys. (hotkeybuttons list of buttons)
- var/obj/screen/ling/chems/lingchemdisplay
- var/obj/screen/ling/sting/lingstingdisplay
+ var/atom/movable/screen/ling/chems/lingchemdisplay
+ var/atom/movable/screen/ling/sting/lingstingdisplay
- var/obj/screen/blobpwrdisplay
+ var/atom/movable/screen/blobpwrdisplay
- var/obj/screen/alien_plasma_display
- var/obj/screen/alien_queen_finder
+ var/atom/movable/screen/alien_plasma_display
+ var/atom/movable/screen/alien_queen_finder
- var/obj/screen/devil/soul_counter/devilsouldisplay
+ var/atom/movable/screen/devil/soul_counter/devilsouldisplay
- var/obj/screen/action_intent
- var/obj/screen/zone_select
- var/obj/screen/pull_icon
- var/obj/screen/rest_icon
- var/obj/screen/throw_icon
- var/obj/screen/module_store_icon
+ var/atom/movable/screen/action_intent
+ var/atom/movable/screen/zone_select
+ var/atom/movable/screen/pull_icon
+ var/atom/movable/screen/rest_icon
+ var/atom/movable/screen/throw_icon
+ var/atom/movable/screen/module_store_icon
var/list/static_inventory = list() //the screen objects which are static
var/list/toggleable_inventory = list() //the screen objects which can be hidden
- var/list/obj/screen/hotkeybuttons = list() //the buttons that can be used via hotkeys
+ var/list/atom/movable/screen/hotkeybuttons = list() //the buttons that can be used via hotkeys
var/list/infodisplay = list() //the screen objects that display mob info (health, alien plasma, etc...)
var/list/screenoverlays = list() //the screen objects used as whole screen overlays (flash, damageoverlay, etc...)
- var/list/inv_slots[SLOTS_AMT] // /obj/screen/inventory objects, ordered by their slot ID.
- var/list/hand_slots // /obj/screen/inventory/hand objects, assoc list of "[held_index]" = object
- var/list/obj/screen/plane_master/plane_masters = list() // see "appearance_flags" in the ref, assoc list of "[plane]" = object
+ var/list/inv_slots[SLOTS_AMT] // /atom/movable/screen/inventory objects, ordered by their slot ID.
+ var/list/hand_slots // /atom/movable/screen/inventory/hand objects, assoc list of "[held_index]" = object
+ var/list/atom/movable/screen/plane_master/plane_masters = list() // see "appearance_flags" in the ref, assoc list of "[plane]" = object
- var/obj/screen/movable/action_button/hide_toggle/hide_actions_toggle
+ var/atom/movable/screen/movable/action_button/hide_toggle/hide_actions_toggle
var/action_buttons_hidden = FALSE
- var/obj/screen/healths
- var/obj/screen/healthdoll
- var/obj/screen/internals
+ var/atom/movable/screen/healths
+ var/atom/movable/screen/healthdoll
+ var/atom/movable/screen/internals
// subtypes can override this to force a specific UI style
var/ui_style
@@ -75,8 +75,8 @@ GLOBAL_LIST_INIT(available_ui_styles, list(
hand_slots = list()
- for(var/mytype in subtypesof(/obj/screen/plane_master))
- var/obj/screen/plane_master/instance = new mytype()
+ for(var/mytype in subtypesof(/atom/movable/screen/plane_master))
+ var/atom/movable/screen/plane_master/instance = new mytype()
plane_masters["[instance.plane]"] = instance
instance.backdrop(mymob)
@@ -169,7 +169,7 @@ GLOBAL_LIST_INIT(available_ui_styles, list(
//These ones are a part of 'static_inventory', 'toggleable_inventory' or 'hotkeybuttons' but we want them to stay
for(var/h in hand_slots)
- var/obj/screen/hand = hand_slots[h]
+ var/atom/movable/screen/hand = hand_slots[h]
if(hand)
screenmob.client.screen += hand
if(action_intent)
@@ -207,7 +207,7 @@ GLOBAL_LIST_INIT(available_ui_styles, list(
/datum/hud/proc/plane_masters_update()
// Plane masters are always shown to OUR mob, never to observers
for(var/thing in plane_masters)
- var/obj/screen/plane_master/PM = plane_masters[thing]
+ var/atom/movable/screen/plane_master/PM = plane_masters[thing]
PM.backdrop(mymob)
mymob.client.screen += PM
@@ -261,13 +261,13 @@ GLOBAL_LIST_INIT(available_ui_styles, list(
//9/10 this is only called once per mob and only for 2 hands
/datum/hud/proc/build_hand_slots()
for(var/h in hand_slots)
- var/obj/screen/inventory/hand/H = hand_slots[h]
+ var/atom/movable/screen/inventory/hand/H = hand_slots[h]
if(H)
static_inventory -= H
hand_slots = list()
- var/obj/screen/inventory/hand/hand_box
+ var/atom/movable/screen/inventory/hand/hand_box
for(var/i in 1 to mymob.held_items.len)
- hand_box = new /obj/screen/inventory/hand()
+ hand_box = new /atom/movable/screen/inventory/hand()
hand_box.name = mymob.get_held_index_name(i)
hand_box.icon = ui_style
hand_box.icon_state = "hand_[mymob.held_index_to_dir(i)]"
@@ -279,10 +279,10 @@ GLOBAL_LIST_INIT(available_ui_styles, list(
hand_box.update_icon()
var/i = 1
- for(var/obj/screen/swap_hand/SH in static_inventory)
+ for(var/atom/movable/screen/swap_hand/SH in static_inventory)
SH.screen_loc = ui_swaphand_position(mymob,!(i % 2) ? 2: 1)
i++
- for(var/obj/screen/human/equip/E in static_inventory)
+ for(var/atom/movable/screen/human/equip/E in static_inventory)
E.screen_loc = ui_equip_position(mymob)
if(ismob(mymob) && mymob.hud_used == src)
diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm
index 841a3e8303..e4a9dc24e8 100644
--- a/code/_onclick/hud/human.dm
+++ b/code/_onclick/hud/human.dm
@@ -1,11 +1,11 @@
-/obj/screen/human
+/atom/movable/screen/human
icon = 'icons/mob/screen_midnight.dmi'
-/obj/screen/human/toggle
+/atom/movable/screen/human/toggle
name = "toggle"
icon_state = "toggle"
-/obj/screen/human/toggle/Click()
+/atom/movable/screen/human/toggle/Click()
var/mob/targetmob = usr
@@ -23,26 +23,26 @@
targetmob.hud_used.hidden_inventory_update(usr)
-/obj/screen/human/equip
+/atom/movable/screen/human/equip
name = "equip"
icon_state = "act_equip"
-/obj/screen/human/equip/Click()
+/atom/movable/screen/human/equip/Click()
if(ismecha(usr.loc)) // stops inventory actions in a mech
return 1
var/mob/living/carbon/human/H = usr
H.quick_equip()
-/obj/screen/devil
+/atom/movable/screen/devil
invisibility = INVISIBILITY_ABSTRACT
-/obj/screen/devil/soul_counter
+/atom/movable/screen/devil/soul_counter
icon = 'icons/mob/screen_gen.dmi'
name = "souls owned"
icon_state = "Devil-6"
screen_loc = ui_devilsouldisplay
-/obj/screen/devil/soul_counter/proc/update_counter(souls = 0)
+/atom/movable/screen/devil/soul_counter/proc/update_counter(souls = 0)
invisibility = 0
maptext = "
[souls]
"
switch(souls)
@@ -59,53 +59,53 @@
else
icon_state = "Devil-6"
-/obj/screen/devil/soul_counter/proc/clear()
+/atom/movable/screen/devil/soul_counter/proc/clear()
invisibility = INVISIBILITY_ABSTRACT
-/obj/screen/ling
+/atom/movable/screen/ling
invisibility = INVISIBILITY_ABSTRACT
-/obj/screen/ling/sting
+/atom/movable/screen/ling/sting
name = "current sting"
screen_loc = ui_lingstingdisplay
-/obj/screen/ling/sting/Click()
+/atom/movable/screen/ling/sting/Click()
if(isobserver(usr))
return
var/mob/living/carbon/U = usr
U.unset_sting()
-/obj/screen/ling/chems
+/atom/movable/screen/ling/chems
name = "chemical storage"
icon_state = "power_display"
screen_loc = ui_lingchemdisplay
/datum/hud/human/New(mob/living/carbon/human/owner)
..()
- owner.overlay_fullscreen("see_through_darkness", /obj/screen/fullscreen/see_through_darkness)
+ owner.overlay_fullscreen("see_through_darkness", /atom/movable/screen/fullscreen/see_through_darkness)
var/widescreenlayout = FALSE //CIT CHANGE - adds support for different hud layouts depending on widescreen pref
if(owner.client && owner.client.prefs && owner.client.prefs.widescreenpref) //CIT CHANGE - ditto
widescreenlayout = TRUE // CIT CHANGE - ditto
- var/obj/screen/using
- var/obj/screen/inventory/inv_box
+ var/atom/movable/screen/using
+ var/atom/movable/screen/inventory/inv_box
- using = new/obj/screen/language_menu
+ using = new/atom/movable/screen/language_menu
using.icon = ui_style
if(!widescreenlayout) // CIT CHANGE
using.screen_loc = ui_boxlang // CIT CHANGE
using.hud = src
static_inventory += using
- using = new /obj/screen/area_creator
+ using = new /atom/movable/screen/area_creator
using.icon = ui_style
if(!widescreenlayout) // CIT CHANGE
using.screen_loc = ui_boxarea // CIT CHANGE
using.hud = src
static_inventory += using
- using = new /obj/screen/voretoggle() //We fancy Vore now
+ using = new /atom/movable/screen/voretoggle() //We fancy Vore now
using.icon = tg_ui_icon_to_cit_ui(ui_style)
using.screen_loc = ui_voremode
if(!widescreenlayout)
@@ -113,7 +113,7 @@
using.hud = src
static_inventory += using
- action_intent = new /obj/screen/act_intent/segmented
+ action_intent = new /atom/movable/screen/act_intent/segmented
action_intent.icon_state = mymob.a_intent
action_intent.hud = src
static_inventory += action_intent
@@ -132,13 +132,13 @@
resistdelay.screen_loc = ui_resistdelay
static_inventory += resistdelay
- using = new /obj/screen/drop()
+ using = new /atom/movable/screen/drop()
using.icon = ui_style
using.screen_loc = ui_drop_throw
using.hud = src
static_inventory += using
- inv_box = new /obj/screen/inventory()
+ inv_box = new /atom/movable/screen/inventory()
inv_box.name = "i_clothing"
inv_box.icon = ui_style
inv_box.slot_id = SLOT_W_UNIFORM
@@ -146,7 +146,7 @@
inv_box.screen_loc = ui_iclothing
toggleable_inventory += inv_box
- inv_box = new /obj/screen/inventory()
+ inv_box = new /atom/movable/screen/inventory()
inv_box.name = "o_clothing"
inv_box.icon = ui_style
inv_box.slot_id = SLOT_WEAR_SUIT
@@ -156,21 +156,21 @@
build_hand_slots()
- using = new /obj/screen/swap_hand()
+ using = new /atom/movable/screen/swap_hand()
using.icon = ui_style
using.icon_state = "swap_1"
using.screen_loc = ui_swaphand_position(owner,1)
using.hud = src
static_inventory += using
- using = new /obj/screen/swap_hand()
+ using = new /atom/movable/screen/swap_hand()
using.icon = ui_style
using.icon_state = "swap_2"
using.screen_loc = ui_swaphand_position(owner,2)
using.hud = src
static_inventory += using
- inv_box = new /obj/screen/inventory()
+ inv_box = new /atom/movable/screen/inventory()
inv_box.name = "id"
inv_box.icon = ui_style
inv_box.icon_state = "id"
@@ -178,7 +178,7 @@
inv_box.slot_id = SLOT_WEAR_ID
static_inventory += inv_box
- inv_box = new /obj/screen/inventory()
+ inv_box = new /atom/movable/screen/inventory()
inv_box.name = "mask"
inv_box.icon = ui_style
inv_box.icon_state = "mask"
@@ -186,7 +186,7 @@
inv_box.slot_id = SLOT_WEAR_MASK
toggleable_inventory += inv_box
- inv_box = new /obj/screen/inventory()
+ inv_box = new /atom/movable/screen/inventory()
inv_box.name = "neck"
inv_box.icon = ui_style
inv_box.icon_state = "neck"
@@ -194,7 +194,7 @@
inv_box.slot_id = SLOT_NECK
toggleable_inventory += inv_box
- inv_box = new /obj/screen/inventory()
+ inv_box = new /atom/movable/screen/inventory()
inv_box.name = "back"
inv_box.icon = ui_style
inv_box.icon_state = "back"
@@ -202,7 +202,7 @@
inv_box.slot_id = SLOT_BACK
static_inventory += inv_box
- inv_box = new /obj/screen/inventory()
+ inv_box = new /atom/movable/screen/inventory()
inv_box.name = "storage1"
inv_box.icon = ui_style
inv_box.icon_state = "pocket"
@@ -210,7 +210,7 @@
inv_box.slot_id = SLOT_L_STORE
static_inventory += inv_box
- inv_box = new /obj/screen/inventory()
+ inv_box = new /atom/movable/screen/inventory()
inv_box.name = "storage2"
inv_box.icon = ui_style
inv_box.icon_state = "pocket"
@@ -218,7 +218,7 @@
inv_box.slot_id = SLOT_R_STORE
static_inventory += inv_box
- inv_box = new /obj/screen/inventory()
+ inv_box = new /atom/movable/screen/inventory()
inv_box.name = "suit storage"
inv_box.icon = ui_style
inv_box.icon_state = "suit_storage"
@@ -226,32 +226,32 @@
inv_box.slot_id = SLOT_S_STORE
static_inventory += inv_box
- using = new /obj/screen/resist()
+ using = new /atom/movable/screen/resist()
using.icon = ui_style
using.screen_loc = ui_overridden_resist // CIT CHANGE - changes this to overridden resist
using.hud = src
hotkeybuttons += using
- using = new /obj/screen/rest()
+ using = new /atom/movable/screen/rest()
using.icon = ui_style
using.screen_loc = ui_pull_resist
using.hud = src
static_inventory += using
//END OF CIT CHANGES
- using = new /obj/screen/human/toggle()
+ using = new /atom/movable/screen/human/toggle()
using.icon = ui_style
using.screen_loc = ui_inventory
using.hud = src
static_inventory += using
- using = new /obj/screen/human/equip()
+ using = new /atom/movable/screen/human/equip()
using.icon = ui_style
using.screen_loc = ui_equip_position(mymob)
using.hud = src
static_inventory += using
- inv_box = new /obj/screen/inventory()
+ inv_box = new /atom/movable/screen/inventory()
inv_box.name = "gloves"
inv_box.icon = ui_style
inv_box.icon_state = "gloves"
@@ -259,7 +259,7 @@
inv_box.slot_id = SLOT_GLOVES
toggleable_inventory += inv_box
- inv_box = new /obj/screen/inventory()
+ inv_box = new /atom/movable/screen/inventory()
inv_box.name = "eyes"
inv_box.icon = ui_style
inv_box.icon_state = "glasses"
@@ -267,7 +267,7 @@
inv_box.slot_id = SLOT_GLASSES
toggleable_inventory += inv_box
- inv_box = new /obj/screen/inventory()
+ inv_box = new /atom/movable/screen/inventory()
inv_box.name = "ears"
inv_box.icon = ui_style
inv_box.icon_state = "ears"
@@ -275,7 +275,7 @@
inv_box.slot_id = SLOT_EARS
toggleable_inventory += inv_box
- inv_box = new /obj/screen/inventory()
+ inv_box = new /atom/movable/screen/inventory()
inv_box.name = "head"
inv_box.icon = ui_style
inv_box.icon_state = "head"
@@ -283,7 +283,7 @@
inv_box.slot_id = SLOT_HEAD
toggleable_inventory += inv_box
- inv_box = new /obj/screen/inventory()
+ inv_box = new /atom/movable/screen/inventory()
inv_box.name = "shoes"
inv_box.icon = ui_style
inv_box.icon_state = "shoes"
@@ -291,7 +291,7 @@
inv_box.slot_id = SLOT_SHOES
toggleable_inventory += inv_box
- inv_box = new /obj/screen/inventory()
+ inv_box = new /atom/movable/screen/inventory()
inv_box.name = "belt"
inv_box.icon = ui_style
inv_box.icon_state = "belt"
@@ -300,72 +300,72 @@
inv_box.slot_id = SLOT_BELT
static_inventory += inv_box
- throw_icon = new /obj/screen/throw_catch()
+ throw_icon = new /atom/movable/screen/throw_catch()
throw_icon.icon = ui_style
throw_icon.screen_loc = ui_drop_throw
throw_icon.hud = src
hotkeybuttons += throw_icon
- internals = new /obj/screen/internals()
+ internals = new /atom/movable/screen/internals()
internals.hud = src
infodisplay += internals
- healths = new /obj/screen/healths()
+ healths = new /atom/movable/screen/healths()
healths.hud = src
infodisplay += healths
- staminas = new /obj/screen/staminas()
+ staminas = new /atom/movable/screen/staminas()
staminas.hud = src
infodisplay += staminas
if(!CONFIG_GET(flag/disable_stambuffer))
- staminabuffer = new /obj/screen/staminabuffer()
+ staminabuffer = new /atom/movable/screen/staminabuffer()
staminabuffer.hud = src
infodisplay += staminabuffer
//END OF CIT CHANGES
- healthdoll = new /obj/screen/healthdoll()
+ healthdoll = new /atom/movable/screen/healthdoll()
healthdoll.hud = src
infodisplay += healthdoll
- pull_icon = new /obj/screen/pull()
+ pull_icon = new /atom/movable/screen/pull()
pull_icon.icon = ui_style
pull_icon.hud = src
pull_icon.update_icon()
pull_icon.screen_loc = ui_pull_resist
static_inventory += pull_icon
- lingchemdisplay = new /obj/screen/ling/chems()
+ lingchemdisplay = new /atom/movable/screen/ling/chems()
lingchemdisplay.hud = src
infodisplay += lingchemdisplay
- lingstingdisplay = new /obj/screen/ling/sting()
+ lingstingdisplay = new /atom/movable/screen/ling/sting()
lingstingdisplay.hud = src
infodisplay += lingstingdisplay
- devilsouldisplay = new /obj/screen/devil/soul_counter
+ devilsouldisplay = new /atom/movable/screen/devil/soul_counter
devilsouldisplay.hud = src
infodisplay += devilsouldisplay
- blood_display = new /obj/screen/bloodsucker/blood_counter // Blood Volume
+ blood_display = new /atom/movable/screen/bloodsucker/blood_counter // Blood Volume
blood_display.hud = src
infodisplay += blood_display
- vamprank_display = new /obj/screen/bloodsucker/rank_counter // Bloodsucker Rank
+ vamprank_display = new /atom/movable/screen/bloodsucker/rank_counter // Bloodsucker Rank
vamprank_display.hud = src
infodisplay += vamprank_display
- sunlight_display = new /obj/screen/bloodsucker/sunlight_counter // Sunlight
+ sunlight_display = new /atom/movable/screen/bloodsucker/sunlight_counter // Sunlight
sunlight_display.hud = src
infodisplay += sunlight_display
- zone_select = new /obj/screen/zone_sel()
+ zone_select = new /atom/movable/screen/zone_sel()
zone_select.icon = ui_style
zone_select.hud = src
zone_select.update_icon()
static_inventory += zone_select
- for(var/obj/screen/inventory/inv in (static_inventory + toggleable_inventory))
+ for(var/atom/movable/screen/inventory/inv in (static_inventory + toggleable_inventory))
if(inv.slot_id)
inv.hud = src
inv_slots[inv.slot_id] = inv
@@ -374,12 +374,12 @@
update_locked_slots()
/datum/hud/human/proc/assert_move_intent_ui(mob/living/carbon/human/owner = mymob, on_new = FALSE)
- var/obj/screen/using
+ var/atom/movable/screen/using
// delete old ones
- var/list/obj/screen/victims = list()
- victims += locate(/obj/screen/mov_intent) in static_inventory
- victims += locate(/obj/screen/sprintbutton) in static_inventory
- victims += locate(/obj/screen/sprint_buffer) in static_inventory
+ var/list/atom/movable/screen/victims = list()
+ victims += locate(/atom/movable/screen/mov_intent) in static_inventory
+ victims += locate(/atom/movable/screen/sprintbutton) in static_inventory
+ victims += locate(/atom/movable/screen/sprint_buffer) in static_inventory
if(victims)
static_inventory -= victims
if(mymob?.client)
@@ -388,7 +388,7 @@
// make new ones
// walk/run
- using = new /obj/screen/mov_intent
+ using = new /atom/movable/screen/mov_intent
using.icon = tg_ui_icon_to_cit_ui(ui_style) // CIT CHANGE - overrides mov intent icon
using.screen_loc = ui_movi
using.hud = src
@@ -401,7 +401,7 @@
return
// sprint button
- using = new /obj/screen/sprintbutton
+ using = new /atom/movable/screen/sprintbutton
using.icon = tg_ui_icon_to_cit_ui(ui_style)
using.icon_state = ((owner.combat_flags & COMBAT_FLAG_SPRINT_ACTIVE) ? "act_sprint_on" : "act_sprint")
using.screen_loc = ui_movi
@@ -411,7 +411,7 @@
owner?.client?.screen += using
// same as above but buffer.
- sprint_buffer = new /obj/screen/sprint_buffer
+ sprint_buffer = new /atom/movable/screen/sprint_buffer
sprint_buffer.screen_loc = ui_sprintbufferloc
sprint_buffer.hud = src
static_inventory += sprint_buffer
@@ -425,7 +425,7 @@
if(!istype(H) || !H.dna.species)
return
var/datum/species/S = H.dna.species
- for(var/obj/screen/inventory/inv in (static_inventory + toggleable_inventory))
+ for(var/atom/movable/screen/inventory/inv in (static_inventory + toggleable_inventory))
if(inv.slot_id)
if(inv.slot_id in S.no_equip)
inv.alpha = 128
diff --git a/code/_onclick/hud/lavaland_elite.dm b/code/_onclick/hud/lavaland_elite.dm
index a36d9a0f36..f3ca5fec32 100644
--- a/code/_onclick/hud/lavaland_elite.dm
+++ b/code/_onclick/hud/lavaland_elite.dm
@@ -4,13 +4,13 @@
/datum/hud/lavaland_elite/New(mob/living/simple_animal/hostile/asteroid/elite)
..()
- pull_icon = new /obj/screen/pull()
+ pull_icon = new /atom/movable/screen/pull()
pull_icon.icon = ui_style
pull_icon.hud = src
pull_icon.update_icon()
pull_icon.screen_loc = ui_living_pull
static_inventory += pull_icon
- healths = new /obj/screen/healths/lavaland_elite()
+ healths = new /atom/movable/screen/healths/lavaland_elite()
healths.hud = src
infodisplay += healths
diff --git a/code/_onclick/hud/map_popups.dm b/code/_onclick/hud/map_popups.dm
index 2ecfe80ab5..7c40f654ff 100644
--- a/code/_onclick/hud/map_popups.dm
+++ b/code/_onclick/hud/map_popups.dm
@@ -2,7 +2,7 @@
* A screen object, which acts as a container for turfs and other things
* you want to show on the map, which you usually attach to "vis_contents".
*/
-/obj/screen/map_view
+/atom/movable/screen/map_view
// Map view has to be on the lowest plane to enable proper lighting
layer = GAME_PLANE
plane = GAME_PLANE
@@ -12,7 +12,7 @@
* It is also implicitly used to allocate a rectangle on the map, which will
* be used for auto-scaling the map.
*/
-/obj/screen/background
+/atom/movable/screen/background
name = "background"
icon = 'icons/mob/map_backgrounds.dmi'
icon_state = "clear"
@@ -25,7 +25,7 @@
*
* If applicable, "assigned_map" has to be assigned before this proc call.
*/
-/obj/screen/proc/set_position(x, y, px = 0, py = 0)
+/atom/movable/screen/proc/set_position(x, y, px = 0, py = 0)
if(assigned_map)
screen_loc = "[assigned_map]:[x]:[px],[y]:[py]"
else
@@ -36,7 +36,7 @@
*
* If applicable, "assigned_map" has to be assigned before this proc call.
*/
-/obj/screen/proc/fill_rect(x1, y1, x2, y2)
+/atom/movable/screen/proc/fill_rect(x1, y1, x2, y2)
if(assigned_map)
screen_loc = "[assigned_map]:[x1],[y1] to [x2],[y2]"
else
@@ -46,7 +46,7 @@
* Registers screen obj with the client, which makes it visible on the
* assigned map, and becomes a part of the assigned map's lifecycle.
*/
-/client/proc/register_map_obj(obj/screen/screen_obj)
+/client/proc/register_map_obj(atom/movable/screen/screen_obj)
if(!screen_obj.assigned_map)
CRASH("Can't register [screen_obj] without 'assigned_map' property.")
if(!screen_maps[screen_obj.assigned_map])
@@ -68,7 +68,7 @@
/client/proc/clear_map(map_name)
if(!map_name || !(map_name in screen_maps))
return FALSE
- for(var/obj/screen/screen_obj in screen_maps[map_name])
+ for(var/atom/movable/screen/screen_obj in screen_maps[map_name])
screen_maps[map_name] -= screen_obj
if(screen_obj.del_on_map_removal)
qdel(screen_obj)
@@ -122,7 +122,7 @@
var/y_value = world.icon_size * tilesize * height
var/map_name = create_popup(popup_name, x_value, y_value)
- var/obj/screen/background/background = new
+ var/atom/movable/screen/background/background = new
background.assigned_map = map_name
background.fill_rect(1, 1, width, height)
if(bg_icon)
diff --git a/code/_onclick/hud/monkey.dm b/code/_onclick/hud/monkey.dm
index d665330aac..376db7bf96 100644
--- a/code/_onclick/hud/monkey.dm
+++ b/code/_onclick/hud/monkey.dm
@@ -1,28 +1,28 @@
/datum/hud/monkey/New(mob/living/carbon/monkey/owner)
..()
- var/obj/screen/using
- var/obj/screen/inventory/inv_box
+ var/atom/movable/screen/using
+ var/atom/movable/screen/inventory/inv_box
- action_intent = new /obj/screen/act_intent()
+ action_intent = new /atom/movable/screen/act_intent()
action_intent.icon = ui_style
action_intent.icon_state = mymob.a_intent
action_intent.screen_loc = ui_acti
action_intent.hud = src
static_inventory += action_intent
- using = new /obj/screen/mov_intent()
+ using = new /atom/movable/screen/mov_intent()
using.icon = ui_style
using.icon_state = (mymob.m_intent == MOVE_INTENT_RUN ? "running" : "walking")
using.screen_loc = ui_movi
using.hud = src
static_inventory += using
- using = new/obj/screen/language_menu
+ using = new/atom/movable/screen/language_menu
using.icon = ui_style
using.hud = src
static_inventory += using
- using = new /obj/screen/drop()
+ using = new /atom/movable/screen/drop()
using.icon = ui_style
using.screen_loc = ui_drop_throw
using.hud = src
@@ -30,21 +30,21 @@
build_hand_slots()
- using = new /obj/screen/swap_hand()
+ using = new /atom/movable/screen/swap_hand()
using.icon = ui_style
using.icon_state = "swap_1_m" //extra wide!
using.screen_loc = ui_swaphand_position(owner,1)
using.hud = src
static_inventory += using
- using = new /obj/screen/swap_hand()
+ using = new /atom/movable/screen/swap_hand()
using.icon = ui_style
using.icon_state = "swap_2"
using.screen_loc = ui_swaphand_position(owner,2)
using.hud = src
static_inventory += using
- inv_box = new /obj/screen/inventory()
+ inv_box = new /atom/movable/screen/inventory()
inv_box.name = "mask"
inv_box.icon = ui_style
inv_box.icon_state = "mask"
@@ -53,7 +53,7 @@
inv_box.slot_id = SLOT_WEAR_MASK
static_inventory += inv_box
- inv_box = new /obj/screen/inventory()
+ inv_box = new /atom/movable/screen/inventory()
inv_box.name = "neck"
inv_box.icon = ui_style
inv_box.icon_state = "neck"
@@ -62,7 +62,7 @@
inv_box.slot_id = SLOT_NECK
static_inventory += inv_box
- inv_box = new /obj/screen/inventory()
+ inv_box = new /atom/movable/screen/inventory()
inv_box.name = "head"
inv_box.icon = ui_style
inv_box.icon_state = "head"
@@ -71,7 +71,7 @@
inv_box.slot_id = SLOT_HEAD
static_inventory += inv_box
- inv_box = new /obj/screen/inventory()
+ inv_box = new /atom/movable/screen/inventory()
inv_box.name = "back"
inv_box.icon = ui_style
inv_box.icon_state = "back"
@@ -79,37 +79,37 @@
inv_box.slot_id = SLOT_BACK
static_inventory += inv_box
- throw_icon = new /obj/screen/throw_catch()
+ throw_icon = new /atom/movable/screen/throw_catch()
throw_icon.icon = ui_style
throw_icon.screen_loc = ui_drop_throw
throw_icon.hud = src
hotkeybuttons += throw_icon
- internals = new /obj/screen/internals()
+ internals = new /atom/movable/screen/internals()
internals.hud = src
infodisplay += internals
- healths = new /obj/screen/healths()
+ healths = new /atom/movable/screen/healths()
healths.hud = src
infodisplay += healths
- pull_icon = new /obj/screen/pull()
+ pull_icon = new /atom/movable/screen/pull()
pull_icon.icon = ui_style
pull_icon.screen_loc = ui_pull_resist
pull_icon.hud = src
pull_icon.update_icon()
static_inventory += pull_icon
- lingchemdisplay = new /obj/screen/ling/chems()
+ lingchemdisplay = new /atom/movable/screen/ling/chems()
lingchemdisplay.hud = src
infodisplay += lingchemdisplay
- lingstingdisplay = new /obj/screen/ling/sting()
+ lingstingdisplay = new /atom/movable/screen/ling/sting()
lingstingdisplay.hud = src
infodisplay += lingstingdisplay
- zone_select = new /obj/screen/zone_sel()
+ zone_select = new /atom/movable/screen/zone_sel()
zone_select.icon = ui_style
zone_select.hud = src
zone_select.update_icon()
@@ -117,13 +117,13 @@
mymob.client.screen = list()
- using = new /obj/screen/resist()
+ using = new /atom/movable/screen/resist()
using.icon = ui_style
using.screen_loc = ui_pull_resist
using.hud = src
hotkeybuttons += using
- for(var/obj/screen/inventory/inv in (static_inventory + toggleable_inventory))
+ for(var/atom/movable/screen/inventory/inv in (static_inventory + toggleable_inventory))
if(inv.slot_id)
inv.hud = src
inv_slots[inv.slot_id] = inv
diff --git a/code/_onclick/hud/movable_screen_objects.dm b/code/_onclick/hud/movable_screen_objects.dm
index ae11613885..eeb56d67f5 100644
--- a/code/_onclick/hud/movable_screen_objects.dm
+++ b/code/_onclick/hud/movable_screen_objects.dm
@@ -8,7 +8,7 @@
//Movable Screen Object
//Not tied to the grid, places it's center where the cursor is
-/obj/screen/movable
+/atom/movable/screen/movable
var/snap2grid = FALSE
var/moved = FALSE
var/locked = FALSE
@@ -18,11 +18,11 @@
//Snap Screen Object
//Tied to the grid, snaps to the nearest turf
-/obj/screen/movable/snap
+/atom/movable/screen/movable/snap
snap2grid = TRUE
-/obj/screen/movable/MouseDrop(over_object, src_location, over_location, src_control, over_control, params)
+/atom/movable/screen/movable/MouseDrop(over_object, src_location, over_location, src_control, over_control, params)
if(locked) //no! I am locked! begone!
return
var/list/PM = params2list(params)
@@ -56,7 +56,7 @@
set category = "Debug"
set name = "Spawn Movable UI Object"
- var/obj/screen/movable/M = new()
+ var/atom/movable/screen/movable/M = new()
M.name = "Movable UI Object"
M.icon_state = "block"
M.maptext = "Movable"
@@ -75,7 +75,7 @@
set category = "Debug"
set name = "Spawn Snap UI Object"
- var/obj/screen/movable/snap/S = new()
+ var/atom/movable/screen/movable/snap/S = new()
S.name = "Snap UI Object"
S.icon_state = "block"
S.maptext = "Snap"
diff --git a/code/_onclick/hud/parallax.dm b/code/_onclick/hud/parallax.dm
index 5d48f430d7..a98fec03c4 100755
--- a/code/_onclick/hud/parallax.dm
+++ b/code/_onclick/hud/parallax.dm
@@ -7,12 +7,12 @@
if(!length(C.parallax_layers_cached))
C.parallax_layers_cached = list()
- C.parallax_layers_cached += new /obj/screen/parallax_layer/layer_1(null, C.view)
- C.parallax_layers_cached += new /obj/screen/parallax_layer/layer_2(null, C.view)
- C.parallax_layers_cached += new /obj/screen/parallax_layer/planet(null, C.view)
+ C.parallax_layers_cached += new /atom/movable/screen/parallax_layer/layer_1(null, C.view)
+ C.parallax_layers_cached += new /atom/movable/screen/parallax_layer/layer_2(null, C.view)
+ C.parallax_layers_cached += new /atom/movable/screen/parallax_layer/planet(null, C.view)
if(SSparallax.random_layer)
C.parallax_layers_cached += new SSparallax.random_layer
- C.parallax_layers_cached += new /obj/screen/parallax_layer/layer_3(null, C.view)
+ C.parallax_layers_cached += new /atom/movable/screen/parallax_layer/layer_3(null, C.view)
C.parallax_layers = C.parallax_layers_cached.Copy()
@@ -20,9 +20,9 @@
C.parallax_layers.len = C.parallax_layers_max
C.screen |= (C.parallax_layers)
- var/obj/screen/plane_master/PM = screenmob.hud_used.plane_masters["[PLANE_SPACE]"]
+ var/atom/movable/screen/plane_master/PM = screenmob.hud_used.plane_masters["[PLANE_SPACE]"]
if(screenmob != mymob)
- C.screen -= locate(/obj/screen/plane_master/parallax_white) in C.screen
+ C.screen -= locate(/atom/movable/screen/plane_master/parallax_white) in C.screen
C.screen += PM
PM.color = list(
0, 0, 0, 0,
@@ -37,9 +37,9 @@
var/mob/screenmob = viewmob || mymob
var/client/C = screenmob.client
C.screen -= (C.parallax_layers_cached)
- var/obj/screen/plane_master/PM = screenmob.hud_used.plane_masters["[PLANE_SPACE]"]
+ var/atom/movable/screen/plane_master/PM = screenmob.hud_used.plane_masters["[PLANE_SPACE]"]
if(screenmob != mymob)
- C.screen -= locate(/obj/screen/plane_master/parallax_white) in C.screen
+ C.screen -= locate(/atom/movable/screen/plane_master/parallax_white) in C.screen
C.screen += PM
PM.color = initial(PM.color)
C.parallax_layers = null
@@ -90,7 +90,7 @@
if(new_parallax_movedir == FALSE)
var/animate_time = 0
for(var/thing in C.parallax_layers)
- var/obj/screen/parallax_layer/L = thing
+ var/atom/movable/screen/parallax_layer/L = thing
L.icon_state = initial(L.icon_state)
L.update_o(C.view)
var/T = PARALLAX_LOOP_TIME / L.speed
@@ -113,7 +113,7 @@
var/shortesttimer
if(!skip_windups)
for(var/thing in C.parallax_layers)
- var/obj/screen/parallax_layer/L = thing
+ var/atom/movable/screen/parallax_layer/L = thing
var/T = PARALLAX_LOOP_TIME / L.speed
if (isnull(shortesttimer))
@@ -141,7 +141,7 @@
return
C.parallax_animate_timer = FALSE
for(var/thing in C.parallax_layers)
- var/obj/screen/parallax_layer/L = thing
+ var/atom/movable/screen/parallax_layer/L = thing
if (!new_parallax_movedir)
animate(L)
continue
@@ -188,7 +188,7 @@
C.last_parallax_shift = world.time
for(var/thing in C.parallax_layers)
- var/obj/screen/parallax_layer/L = thing
+ var/atom/movable/screen/parallax_layer/L = thing
L.update_status(mymob)
if (L.view_sized != C.view)
L.update_o(C.view)
@@ -233,7 +233,7 @@
var/area/areaobj = get_area(client.eye)
hud_used.set_parallax_movedir(areaobj.parallax_movedir, TRUE)
-/obj/screen/parallax_layer
+/atom/movable/screen/parallax_layer
icon = 'icons/effects/parallax.dmi'
var/speed = 1
var/offset_x = 0
@@ -246,13 +246,13 @@
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
-/obj/screen/parallax_layer/Initialize(mapload, view)
+/atom/movable/screen/parallax_layer/Initialize(mapload, view)
. = ..()
if (!view)
view = world.view
update_o(view)
-/obj/screen/parallax_layer/proc/update_o(view)
+/atom/movable/screen/parallax_layer/proc/update_o(view)
if (!view)
view = world.view
@@ -271,52 +271,52 @@
add_overlay(new_overlays)
view_sized = view
-/obj/screen/parallax_layer/proc/update_status(mob/M)
+/atom/movable/screen/parallax_layer/proc/update_status(mob/M)
return
-/obj/screen/parallax_layer/layer_1
+/atom/movable/screen/parallax_layer/layer_1
icon_state = "layer1"
speed = 0.6
layer = 1
-/obj/screen/parallax_layer/layer_2
+/atom/movable/screen/parallax_layer/layer_2
icon_state = "layer2"
speed = 1
layer = 2
-/obj/screen/parallax_layer/layer_3
+/atom/movable/screen/parallax_layer/layer_3
icon_state = "layer3"
speed = 1.4
layer = 3
-/obj/screen/parallax_layer/random
+/atom/movable/screen/parallax_layer/random
blend_mode = BLEND_OVERLAY
speed = 3
layer = 3
-/obj/screen/parallax_layer/random/space_gas
+/atom/movable/screen/parallax_layer/random/space_gas
icon_state = "space_gas"
-/obj/screen/parallax_layer/random/space_gas/Initialize(mapload, view)
+/atom/movable/screen/parallax_layer/random/space_gas/Initialize(mapload, view)
. = ..()
src.add_atom_colour(SSparallax.random_parallax_color, ADMIN_COLOUR_PRIORITY)
-/obj/screen/parallax_layer/random/asteroids
+/atom/movable/screen/parallax_layer/random/asteroids
icon_state = "asteroids"
-/obj/screen/parallax_layer/planet
+/atom/movable/screen/parallax_layer/planet
icon_state = "planet"
blend_mode = BLEND_OVERLAY
absolute = TRUE //Status of seperation
speed = 3
layer = 30
-/obj/screen/parallax_layer/planet/update_status(mob/M)
+/atom/movable/screen/parallax_layer/planet/update_status(mob/M)
var/client/C = M.client
var/turf/posobj = get_turf(C.eye)
if(!posobj)
return
invisibility = is_station_level(posobj.z) ? 0 : INVISIBILITY_ABSTRACT
-/obj/screen/parallax_layer/planet/update_o()
+/atom/movable/screen/parallax_layer/planet/update_o()
return //Shit won't move
diff --git a/code/_onclick/hud/picture_in_picture.dm b/code/_onclick/hud/picture_in_picture.dm
index 5e474331f6..6cf1bfd6a6 100644
--- a/code/_onclick/hud/picture_in_picture.dm
+++ b/code/_onclick/hud/picture_in_picture.dm
@@ -1,4 +1,4 @@
-/obj/screen/movable/pic_in_pic
+/atom/movable/screen/movable/pic_in_pic
name = "Picture-in-picture"
screen_loc = "CENTER"
plane = FLOOR_PLANE
@@ -7,18 +7,18 @@
var/height = 0
var/list/shown_to = list()
var/list/viewing_turfs = list()
- var/obj/screen/component_button/button_x
- var/obj/screen/component_button/button_expand
- var/obj/screen/component_button/button_shrink
+ var/atom/movable/screen/component_button/button_x
+ var/atom/movable/screen/component_button/button_expand
+ var/atom/movable/screen/component_button/button_shrink
var/mutable_appearance/standard_background
var/const/max_dimensions = 10
-/obj/screen/movable/pic_in_pic/Initialize()
+/atom/movable/screen/movable/pic_in_pic/Initialize()
. = ..()
make_backgrounds()
-/obj/screen/movable/pic_in_pic/Destroy()
+/atom/movable/screen/movable/pic_in_pic/Destroy()
for(var/C in shown_to)
unshow_to(C)
QDEL_NULL(button_x)
@@ -26,7 +26,7 @@
QDEL_NULL(button_expand)
return ..()
-/obj/screen/movable/pic_in_pic/component_click(obj/screen/component_button/component, params)
+/atom/movable/screen/movable/pic_in_pic/component_click(atom/movable/screen/component_button/component, params)
if(component == button_x)
qdel(src)
else if(component == button_expand)
@@ -34,13 +34,13 @@
else if(component == button_shrink)
set_view_size(width-1, height-1)
-/obj/screen/movable/pic_in_pic/proc/make_backgrounds()
+/atom/movable/screen/movable/pic_in_pic/proc/make_backgrounds()
standard_background = new /mutable_appearance()
standard_background.icon = 'icons/misc/pic_in_pic.dmi'
standard_background.icon_state = "background"
standard_background.layer = SPACE_LAYER
-/obj/screen/movable/pic_in_pic/proc/add_buttons()
+/atom/movable/screen/movable/pic_in_pic/proc/add_buttons()
var/static/mutable_appearance/move_tab
if(!move_tab)
move_tab = new /mutable_appearance()
@@ -55,7 +55,7 @@
add_overlay(move_tab)
if(!button_x)
- button_x = new /obj/screen/component_button(null, src)
+ button_x = new /atom/movable/screen/component_button(null, src)
var/mutable_appearance/MA = new /mutable_appearance()
MA.name = "close"
MA.icon = 'icons/misc/pic_in_pic.dmi'
@@ -68,7 +68,7 @@
vis_contents += button_x
if(!button_expand)
- button_expand = new /obj/screen/component_button(null, src)
+ button_expand = new /atom/movable/screen/component_button(null, src)
var/mutable_appearance/MA = new /mutable_appearance()
MA.name = "expand"
MA.icon = 'icons/misc/pic_in_pic.dmi'
@@ -81,7 +81,7 @@
vis_contents += button_expand
if(!button_shrink)
- button_shrink = new /obj/screen/component_button(null, src)
+ button_shrink = new /atom/movable/screen/component_button(null, src)
var/mutable_appearance/MA = new /mutable_appearance()
MA.name = "shrink"
MA.icon = 'icons/misc/pic_in_pic.dmi'
@@ -93,7 +93,7 @@
button_shrink.transform = M
vis_contents += button_shrink
-/obj/screen/movable/pic_in_pic/proc/add_background()
+/atom/movable/screen/movable/pic_in_pic/proc/add_background()
if((width > 0) && (height > 0))
var/matrix/M = matrix()
M.Scale(width + 0.5, height + 0.5)
@@ -101,7 +101,7 @@
standard_background.transform = M
add_overlay(standard_background)
-/obj/screen/movable/pic_in_pic/proc/set_view_size(width, height, do_refresh = TRUE)
+/atom/movable/screen/movable/pic_in_pic/proc/set_view_size(width, height, do_refresh = TRUE)
width = clamp(width, 0, max_dimensions)
height = clamp(height, 0, max_dimensions)
src.width = width
@@ -115,19 +115,19 @@
if(do_refresh)
refresh_view()
-/obj/screen/movable/pic_in_pic/proc/set_view_center(atom/target, do_refresh = TRUE)
+/atom/movable/screen/movable/pic_in_pic/proc/set_view_center(atom/target, do_refresh = TRUE)
center = target
if(do_refresh)
refresh_view()
-/obj/screen/movable/pic_in_pic/proc/refresh_view()
+/atom/movable/screen/movable/pic_in_pic/proc/refresh_view()
vis_contents -= viewing_turfs
if(!width || !height)
return
viewing_turfs = get_visible_turfs()
vis_contents += viewing_turfs
-/obj/screen/movable/pic_in_pic/proc/get_visible_turfs()
+/atom/movable/screen/movable/pic_in_pic/proc/get_visible_turfs()
var/turf/T = get_turf(center)
if(!T)
return list()
@@ -135,12 +135,12 @@
var/turf/upperright = locate(min(world.maxx, lowerleft.x + width - 1), min(world.maxy, lowerleft.y + height - 1), lowerleft.z)
return block(lowerleft, upperright)
-/obj/screen/movable/pic_in_pic/proc/show_to(client/C)
+/atom/movable/screen/movable/pic_in_pic/proc/show_to(client/C)
if(C)
shown_to[C] = 1
C.screen += src
-/obj/screen/movable/pic_in_pic/proc/unshow_to(client/C)
+/atom/movable/screen/movable/pic_in_pic/proc/unshow_to(client/C)
if(C)
shown_to -= C
C.screen -= src
diff --git a/code/_onclick/hud/plane_master.dm b/code/_onclick/hud/plane_master.dm
index 4c736c9a2b..bb6a9cd925 100644
--- a/code/_onclick/hud/plane_master.dm
+++ b/code/_onclick/hud/plane_master.dm
@@ -1,4 +1,4 @@
-/obj/screen/plane_master
+/atom/movable/screen/plane_master
screen_loc = "CENTER"
icon_state = "blank"
appearance_flags = PLANE_MASTER|NO_CLIENT_COLOR
@@ -6,25 +6,25 @@
var/show_alpha = 255
var/hide_alpha = 0
-/obj/screen/plane_master/proc/Show(override)
+/atom/movable/screen/plane_master/proc/Show(override)
alpha = override || show_alpha
-/obj/screen/plane_master/proc/Hide(override)
+/atom/movable/screen/plane_master/proc/Hide(override)
alpha = override || hide_alpha
//Why do plane masters need a backdrop sometimes? Read https://secure.byond.com/forum/?post=2141928
//Trust me, you need one. Period. If you don't think you do, you're doing something extremely wrong.
-/obj/screen/plane_master/proc/backdrop(mob/mymob)
+/atom/movable/screen/plane_master/proc/backdrop(mob/mymob)
///Things rendered on "openspace"; holes in multi-z
-/obj/screen/plane_master/openspace
+/atom/movable/screen/plane_master/openspace
name = "open space plane master"
plane = OPENSPACE_BACKDROP_PLANE
appearance_flags = PLANE_MASTER
blend_mode = BLEND_MULTIPLY
alpha = 255
-/obj/screen/plane_master/openspace/Initialize()
+/atom/movable/screen/plane_master/openspace/Initialize()
. = ..()
filters += filter(type="alpha", render_source=FIELD_OF_VISION_RENDER_TARGET, flags=MASK_INVERSE)
@@ -32,163 +32,143 @@
filters += filter(type = "drop_shadow", color = "#04080FAA", size = -15)
filters += filter(type = "drop_shadow", color = "#04080FAA", size = -20)
-/obj/screen/plane_master/proc/outline(_size, _color)
+/atom/movable/screen/plane_master/proc/outline(_size, _color)
filters += filter(type = "outline", size = _size, color = _color)
-/obj/screen/plane_master/proc/shadow(_size, _offset = 0, _x = 0, _y = 0, _color = "#04080FAA")
+/atom/movable/screen/plane_master/proc/shadow(_size, _offset = 0, _x = 0, _y = 0, _color = "#04080FAA")
filters += filter(type = "drop_shadow", x = _x, y = _y, color = _color, size = _size, offset = _offset)
///Contains just the floor
-/obj/screen/plane_master/floor
+/atom/movable/screen/plane_master/floor
name = "floor plane master"
plane = FLOOR_PLANE
appearance_flags = PLANE_MASTER
blend_mode = BLEND_OVERLAY
-/obj/screen/plane_master/wall
+/atom/movable/screen/plane_master/wall
name = "wall plane master"
plane = WALL_PLANE
appearance_flags = PLANE_MASTER
-/obj/screen/plane_master/wall/backdrop(mob/mymob)
+/atom/movable/screen/plane_master/wall/backdrop(mob/mymob)
if(mymob?.client?.prefs.ambientocclusion)
add_filter("ambient_occlusion", 0, AMBIENT_OCCLUSION(4, "#04080FAA"))
else
remove_filter("ambient_occlusion")
-/obj/screen/plane_master/above_wall
+/atom/movable/screen/plane_master/above_wall
name = "above wall plane master"
plane = ABOVE_WALL_PLANE
appearance_flags = PLANE_MASTER
-/obj/screen/plane_master/above_wall/Initialize()
+/atom/movable/screen/plane_master/above_wall/Initialize()
. = ..()
add_filter("vision_cone", 100, list(type="alpha", render_source=FIELD_OF_VISION_RENDER_TARGET, flags=MASK_INVERSE))
-/obj/screen/plane_master/above_wall/backdrop(mob/mymob)
+/atom/movable/screen/plane_master/above_wall/backdrop(mob/mymob)
if(mymob?.client?.prefs.ambientocclusion)
add_filter("ambient_occlusion", 0, AMBIENT_OCCLUSION(3, "#04080F64"))
else
remove_filter("ambient_occlusion")
///Contains most things in the game world
-/obj/screen/plane_master/game_world
+/atom/movable/screen/plane_master/game_world
name = "game world plane master"
plane = GAME_PLANE
appearance_flags = PLANE_MASTER //should use client color
blend_mode = BLEND_OVERLAY
-/obj/screen/plane_master/game_world/Initialize()
+/atom/movable/screen/plane_master/game_world/Initialize()
. = ..()
add_filter("vision_cone", 100, list(type="alpha", render_source=FIELD_OF_VISION_RENDER_TARGET, flags=MASK_INVERSE))
-/obj/screen/plane_master/game_world/backdrop(mob/mymob)
+/atom/movable/screen/plane_master/game_world/backdrop(mob/mymob)
if(mymob?.client?.prefs.ambientocclusion)
add_filter("ambient_occlusion", 0, AMBIENT_OCCLUSION(4, "#04080FAA"))
else
remove_filter("ambient_occlusion")
///Contains all shadow cone masks, whose image overrides are displayed only to their respective owners.
-/obj/screen/plane_master/field_of_vision
+/atom/movable/screen/plane_master/field_of_vision
name = "field of vision mask plane master"
plane = FIELD_OF_VISION_PLANE
render_target = FIELD_OF_VISION_RENDER_TARGET
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
-/obj/screen/plane_master/field_of_vision/Initialize()
+/atom/movable/screen/plane_master/field_of_vision/Initialize()
. = ..()
filters += filter(type="alpha", render_source=FIELD_OF_VISION_BLOCKER_RENDER_TARGET, flags=MASK_INVERSE)
///Used to display the owner and its adjacent surroundings through the FoV plane mask.
-/obj/screen/plane_master/field_of_vision_blocker
+/atom/movable/screen/plane_master/field_of_vision_blocker
name = "field of vision blocker plane master"
plane = FIELD_OF_VISION_BLOCKER_PLANE
render_target = FIELD_OF_VISION_BLOCKER_RENDER_TARGET
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
///Stores the visible portion of the FoV shadow cone.
-/obj/screen/plane_master/field_of_vision_visual
+/atom/movable/screen/plane_master/field_of_vision_visual
name = "field of vision visual plane master"
plane = FIELD_OF_VISION_VISUAL_PLANE
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
-/obj/screen/plane_master/field_of_vision_visual/Initialize()
+/atom/movable/screen/plane_master/field_of_vision_visual/Initialize()
. = ..()
filters += filter(type="alpha", render_source=FIELD_OF_VISION_BLOCKER_RENDER_TARGET, flags=MASK_INVERSE)
///Contains all lighting objects
-/obj/screen/plane_master/lighting
+/atom/movable/screen/plane_master/lighting
name = "lighting plane master"
plane = LIGHTING_PLANE
blend_mode = BLEND_MULTIPLY
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
-/obj/screen/plane_master/lighting/backdrop(mob/mymob)
- mymob.overlay_fullscreen("lighting_backdrop_lit", /obj/screen/fullscreen/lighting_backdrop/lit)
- mymob.overlay_fullscreen("lighting_backdrop_unlit", /obj/screen/fullscreen/lighting_backdrop/unlit)
+/atom/movable/screen/plane_master/lighting/backdrop(mob/mymob)
+ mymob.overlay_fullscreen("lighting_backdrop_lit", /atom/movable/screen/fullscreen/lighting_backdrop/lit)
+ mymob.overlay_fullscreen("lighting_backdrop_unlit", /atom/movable/screen/fullscreen/lighting_backdrop/unlit)
-/obj/screen/plane_master/lighting/Initialize()
+/*!
+ * This system works by exploiting BYONDs color matrix filter to use layers to handle emissive blockers.
+ *
+ * Emissive overlays are pasted with an atom color that converts them to be entirely some specific color.
+ * Emissive blockers are pasted with an atom color that converts them to be entirely some different color.
+ * Emissive overlays and emissive blockers are put onto the same plane.
+ * The layers for the emissive overlays and emissive blockers cause them to mask eachother similar to normal BYOND objects.
+ * A color matrix filter is applied to the emissive plane to mask out anything that isn't whatever the emissive color is.
+ * This is then used to alpha mask the lighting plane.
+ */
+
+/atom/movable/screen/plane_master/lighting/Initialize()
. = ..()
- filters += filter(type="alpha", render_source = EMISSIVE_RENDER_TARGET, flags = MASK_INVERSE)
- filters += filter(type="alpha", render_source = EMISSIVE_UNBLOCKABLE_RENDER_TARGET, flags = MASK_INVERSE)
+ add_filter("emissives", 1, alpha_mask_filter(render_source = EMISSIVE_RENDER_TARGET, flags = MASK_INVERSE))
+ add_filter("object_lighting", 2, alpha_mask_filter(render_source = O_LIGHTING_VISUAL_RENDER_TARGET, flags = MASK_INVERSE))
+
/**
- * Things placed on this mask the lighting plane. Doesn't render directly.
- *
- * Gets masked by blocking plane. Use for things that you want blocked by
- * mobs, items, etc.
- */
-/obj/screen/plane_master/emissive
+ * Handles emissive overlays and emissive blockers.
+ */
+/atom/movable/screen/plane_master/emissive
name = "emissive plane master"
plane = EMISSIVE_PLANE
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
render_target = EMISSIVE_RENDER_TARGET
-/obj/screen/plane_master/emissive/Initialize()
+/atom/movable/screen/plane_master/emissive/Initialize()
. = ..()
- filters += filter(type="alpha", render_source=EMISSIVE_BLOCKER_RENDER_TARGET, flags=MASK_INVERSE)
- filters += filter(type="alpha", render_source=FIELD_OF_VISION_RENDER_TARGET, flags=MASK_INVERSE)
-
-/**
- * Things placed on this always mask the lighting plane. Doesn't render directly.
- *
- * Always masks the light plane, isn't blocked by anything (except Field of Vision). Use for on mob glows,
- * magic stuff, etc.
- */
-
-/obj/screen/plane_master/emissive_unblockable
- name = "unblockable emissive plane master"
- plane = EMISSIVE_UNBLOCKABLE_PLANE
- mouse_opacity = MOUSE_OPACITY_TRANSPARENT
- render_target = EMISSIVE_UNBLOCKABLE_RENDER_TARGET
-
-/obj/screen/plane_master/emissive_unblockable/Initialize()
- . = ..()
- filters += filter(type="alpha", render_source=FIELD_OF_VISION_RENDER_TARGET, flags=MASK_INVERSE)
-
-/**
- * Things placed on this layer mask the emissive layer. Doesn't render directly
- *
- * You really shouldn't be directly using this, use atom helpers instead
- */
-/obj/screen/plane_master/emissive_blocker
- name = "emissive blocker plane master"
- plane = EMISSIVE_BLOCKER_PLANE
- mouse_opacity = MOUSE_OPACITY_TRANSPARENT
- render_target = EMISSIVE_BLOCKER_RENDER_TARGET
+ add_filter("em_block_masking", 1, color_matrix_filter(GLOB.em_mask_matrix))
///Contains space parallax
-/obj/screen/plane_master/parallax
+/atom/movable/screen/plane_master/parallax
name = "parallax plane master"
plane = PLANE_SPACE_PARALLAX
blend_mode = BLEND_MULTIPLY
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
-/obj/screen/plane_master/parallax_white
+/atom/movable/screen/plane_master/parallax_white
name = "parallax whitifier plane master"
plane = PLANE_SPACE
-/obj/screen/plane_master/camera_static
+/atom/movable/screen/plane_master/camera_static
name = "camera static plane master"
plane = CAMERA_STATIC_PLANE
appearance_flags = PLANE_MASTER
@@ -196,7 +176,7 @@
//Reserved to chat messages, so they are still displayed above the field of vision masking.
-/obj/screen/plane_master/chat_messages
+/atom/movable/screen/plane_master/chat_messages
name = "runechat plane master"
plane = CHAT_PLANE
appearance_flags = PLANE_MASTER
diff --git a/code/_onclick/hud/radial.dm b/code/_onclick/hud/radial.dm
index 7d22b70cbc..3cce288e67 100644
--- a/code/_onclick/hud/radial.dm
+++ b/code/_onclick/hud/radial.dm
@@ -3,49 +3,49 @@
GLOBAL_LIST_EMPTY(radial_menus)
-/obj/screen/radial
+/atom/movable/screen/radial
icon = 'icons/mob/radial.dmi'
layer = ABOVE_HUD_LAYER
plane = ABOVE_HUD_PLANE
var/datum/radial_menu/parent
-/obj/screen/radial/slice
+/atom/movable/screen/radial/slice
icon_state = "radial_slice"
var/choice
var/next_page = FALSE
-/obj/screen/radial/slice/MouseEntered(location, control, params)
+/atom/movable/screen/radial/slice/MouseEntered(location, control, params)
. = ..()
icon_state = "radial_slice_focus"
if(tooltips)
openToolTip(usr, src, params, title = name)
-/obj/screen/radial/slice/MouseExited(location, control, params)
+/atom/movable/screen/radial/slice/MouseExited(location, control, params)
. = ..()
icon_state = "radial_slice"
if(tooltips)
closeToolTip(usr)
-/obj/screen/radial/slice/Click(location, control, params)
+/atom/movable/screen/radial/slice/Click(location, control, params)
if(usr.client == parent.current_user)
if(next_page)
parent.next_page()
else
parent.element_chosen(choice,usr)
-/obj/screen/radial/center
+/atom/movable/screen/radial/center
name = "Close Menu"
icon_state = "radial_center"
-/obj/screen/radial/center/MouseEntered(location, control, params)
+/atom/movable/screen/radial/center/MouseEntered(location, control, params)
. = ..()
icon_state = "radial_center_focus"
-/obj/screen/radial/center/MouseExited(location, control, params)
+/atom/movable/screen/radial/center/MouseExited(location, control, params)
. = ..()
icon_state = "radial_center"
-/obj/screen/radial/center/Click(location, control, params)
+/atom/movable/screen/radial/center/Click(location, control, params)
if(usr.client == parent.current_user)
parent.finished = TRUE
@@ -57,8 +57,8 @@ GLOBAL_LIST_EMPTY(radial_menus)
var/selected_choice
- var/list/obj/screen/elements = list()
- var/obj/screen/radial/center/close_button
+ var/list/atom/movable/screen/elements = list()
+ var/atom/movable/screen/radial/center/close_button
var/client/current_user
var/atom/anchor
var/image/menu_holder
@@ -120,7 +120,7 @@ GLOBAL_LIST_EMPTY(radial_menus)
if(elements.len < max_elements)
var/elements_to_add = max_elements - elements.len
for(var/i in 1 to elements_to_add) //Create all elements
- var/obj/screen/radial/slice/new_element = new /obj/screen/radial/slice
+ var/atom/movable/screen/radial/slice/new_element = new /atom/movable/screen/radial/slice
new_element.tooltips = use_tooltips
new_element.parent = src
elements += new_element
@@ -152,14 +152,14 @@ GLOBAL_LIST_EMPTY(radial_menus)
var/list/page_choices = page_data[current_page]
var/angle_per_element = round(zone / page_choices.len)
for(var/i in 1 to elements.len)
- var/obj/screen/radial/E = elements[i]
+ var/atom/movable/screen/radial/E = elements[i]
var/angle = WRAP(starting_angle + (i - 1) * angle_per_element,0,360)
if(i > page_choices.len)
HideElement(E)
else
SetElement(E,page_choices[i],angle,anim = anim,anim_order = i)
-/datum/radial_menu/proc/HideElement(obj/screen/radial/slice/E)
+/datum/radial_menu/proc/HideElement(atom/movable/screen/radial/slice/E)
E.cut_overlays()
E.alpha = 0
E.name = "None"
@@ -168,7 +168,7 @@ GLOBAL_LIST_EMPTY(radial_menus)
E.choice = null
E.next_page = FALSE
-/datum/radial_menu/proc/SetElement(obj/screen/radial/slice/E,choice_id,angle,anim,anim_order)
+/datum/radial_menu/proc/SetElement(atom/movable/screen/radial/slice/E,choice_id,angle,anim,anim_order)
//Position
var/py = round(cos(angle) * radius) + py_shift
var/px = round(sin(angle) * radius)
diff --git a/code/_onclick/hud/radial_persistent.dm b/code/_onclick/hud/radial_persistent.dm
index 0b5e8dc356..e7f7c664ad 100644
--- a/code/_onclick/hud/radial_persistent.dm
+++ b/code/_onclick/hud/radial_persistent.dm
@@ -2,19 +2,19 @@
A derivative of radial menu which persists onscreen until closed and invokes a callback each time an element is clicked
*/
-/obj/screen/radial/persistent/center
+/atom/movable/screen/radial/persistent/center
name = "Close Menu"
icon_state = "radial_center"
-/obj/screen/radial/persistent/center/Click(location, control, params)
+/atom/movable/screen/radial/persistent/center/Click(location, control, params)
if(usr.client == parent.current_user)
parent.element_chosen(null,usr)
-/obj/screen/radial/persistent/center/MouseEntered(location, control, params)
+/atom/movable/screen/radial/persistent/center/MouseEntered(location, control, params)
. = ..()
icon_state = "radial_center_focus"
-/obj/screen/radial/persistent/center/MouseExited(location, control, params)
+/atom/movable/screen/radial/persistent/center/MouseExited(location, control, params)
. = ..()
icon_state = "radial_center"
@@ -25,7 +25,7 @@
var/datum/callback/select_proc_callback
/datum/radial_menu/persistent/New()
- close_button = new /obj/screen/radial/persistent/center
+ close_button = new /atom/movable/screen/radial/persistent/center
close_button.parent = src
diff --git a/code/_onclick/hud/revenanthud.dm b/code/_onclick/hud/revenanthud.dm
index 9369313941..708b1d4915 100644
--- a/code/_onclick/hud/revenanthud.dm
+++ b/code/_onclick/hud/revenanthud.dm
@@ -2,6 +2,6 @@
/datum/hud/revenant/New(mob/owner)
..()
- healths = new /obj/screen/healths/revenant()
+ healths = new /atom/movable/screen/healths/revenant()
healths.hud = src
infodisplay += healths
diff --git a/code/_onclick/hud/robot.dm b/code/_onclick/hud/robot.dm
index 33a9cec80c..03ad1b1821 100644
--- a/code/_onclick/hud/robot.dm
+++ b/code/_onclick/hud/robot.dm
@@ -1,15 +1,15 @@
-/obj/screen/robot
+/atom/movable/screen/robot
icon = 'icons/mob/screen_cyborg.dmi'
-/obj/screen/robot/module
+/atom/movable/screen/robot/module
name = "cyborg module"
icon_state = "nomod"
-/obj/screen/robot/Click()
+/atom/movable/screen/robot/Click()
if(isobserver(usr))
return 1
-/obj/screen/robot/module/Click()
+/atom/movable/screen/robot/module/Click()
if(..())
return
var/mob/living/silicon/robot/R = usr
@@ -18,51 +18,51 @@
return 1
R.pick_module()
-/obj/screen/robot/module1
+/atom/movable/screen/robot/module1
name = "module1"
icon_state = "inv1"
-/obj/screen/robot/module1/Click()
+/atom/movable/screen/robot/module1/Click()
if(..())
return
var/mob/living/silicon/robot/R = usr
R.toggle_module(1)
-/obj/screen/robot/module2
+/atom/movable/screen/robot/module2
name = "module2"
icon_state = "inv2"
-/obj/screen/robot/module2/Click()
+/atom/movable/screen/robot/module2/Click()
if(..())
return
var/mob/living/silicon/robot/R = usr
R.toggle_module(2)
-/obj/screen/robot/module3
+/atom/movable/screen/robot/module3
name = "module3"
icon_state = "inv3"
-/obj/screen/robot/module3/Click()
+/atom/movable/screen/robot/module3/Click()
if(..())
return
var/mob/living/silicon/robot/R = usr
R.toggle_module(3)
-/obj/screen/robot/radio
+/atom/movable/screen/robot/radio
name = "radio"
icon_state = "radio"
-/obj/screen/robot/radio/Click()
+/atom/movable/screen/robot/radio/Click()
if(..())
return
var/mob/living/silicon/robot/R = usr
R.radio.interact(R)
-/obj/screen/robot/store
+/atom/movable/screen/robot/store
name = "store"
icon_state = "store"
-/obj/screen/robot/store/Click()
+/atom/movable/screen/robot/store/Click()
if(..())
return
var/mob/living/silicon/robot/R = usr
@@ -75,35 +75,35 @@
..()
// i, Robit
var/mob/living/silicon/robot/robit = mymob
- var/obj/screen/using
+ var/atom/movable/screen/using
- using = new/obj/screen/language_menu
+ using = new/atom/movable/screen/language_menu
using.screen_loc = ui_borg_language_menu
static_inventory += using
//Radio
- using = new /obj/screen/robot/radio()
+ using = new /atom/movable/screen/robot/radio()
using.screen_loc = ui_borg_radio
using.hud = src
static_inventory += using
//Module select
if(!robit.inv1)
- robit.inv1 = new /obj/screen/robot/module1()
+ robit.inv1 = new /atom/movable/screen/robot/module1()
robit.inv1.screen_loc = ui_inv1
robit.inv1.hud = src
static_inventory += robit.inv1
if(!robit.inv2)
- robit.inv2 = new /obj/screen/robot/module2()
+ robit.inv2 = new /atom/movable/screen/robot/module2()
robit.inv2.screen_loc = ui_inv2
robit.inv2.hud = src
static_inventory += robit.inv2
if(!robit.inv3)
- robit.inv3 = new /obj/screen/robot/module3()
+ robit.inv3 = new /atom/movable/screen/robot/module3()
robit.inv3.screen_loc = ui_inv3
robit.inv3.hud = src
@@ -111,73 +111,73 @@
//End of module select
- using = new /obj/screen/robot/lamp()
+ using = new /atom/movable/screen/robot/lamp()
using.screen_loc = ui_borg_lamp
using.hud = src
static_inventory += using
robit.lampButton = using
- var/obj/screen/robot/lamp/lampscreen = using
+ var/atom/movable/screen/robot/lamp/lampscreen = using
lampscreen.robot = robit
//Photography stuff
- using = new /obj/screen/ai/image_take()
+ using = new /atom/movable/screen/ai/image_take()
using.screen_loc = ui_borg_camera
using.hud = src
static_inventory += using
//Sec/Med HUDs
- using = new /obj/screen/robot/sensors()
+ using = new /atom/movable/screen/robot/sensors()
using.screen_loc = ui_borg_sensor
using.hud = src
static_inventory += using
//Borg Integrated Tablet
- using = new /obj/screen/robot/modPC()
+ using = new /atom/movable/screen/robot/modPC()
using.screen_loc = ui_borg_tablet
using.hud = src
static_inventory += using
robit.interfaceButton = using
if(robit.modularInterface)
using.vis_contents += robit.modularInterface
- var/obj/screen/robot/modPC/tabletbutton = using
+ var/atom/movable/screen/robot/modPC/tabletbutton = using
tabletbutton.robot = robit
//Alerts
- using = new /obj/screen/robot/alerts()
+ using = new /atom/movable/screen/robot/alerts()
using.screen_loc = ui_borg_alerts
using.hud = src
static_inventory += using
//Thrusters
- using = new /obj/screen/robot/thrusters()
+ using = new /atom/movable/screen/robot/thrusters()
using.screen_loc = ui_borg_thrusters
using.hud = src
static_inventory += using
robit.thruster_button = using
//Intent
- action_intent = new /obj/screen/act_intent/robot()
+ action_intent = new /atom/movable/screen/act_intent/robot()
action_intent.icon_state = mymob.a_intent
action_intent.hud = src
static_inventory += action_intent
//Health
- healths = new /obj/screen/healths/robot()
+ healths = new /atom/movable/screen/healths/robot()
healths.hud = src
infodisplay += healths
//Installed Module
- robit.hands = new /obj/screen/robot/module()
+ robit.hands = new /atom/movable/screen/robot/module()
robit.hands.screen_loc = ui_borg_module
robit.hands.hud = src
static_inventory += robit.hands
//Store
- module_store_icon = new /obj/screen/robot/store()
+ module_store_icon = new /atom/movable/screen/robot/store()
module_store_icon.screen_loc = ui_borg_store
module_store_icon.hud = src
- pull_icon = new /obj/screen/pull()
+ pull_icon = new /atom/movable/screen/pull()
pull_icon.icon = 'icons/mob/screen_cyborg.dmi'
pull_icon.screen_loc = ui_borg_pull
pull_icon.hud = src
@@ -185,7 +185,7 @@
hotkeybuttons += pull_icon
- zone_select = new /obj/screen/zone_sel/robot()
+ zone_select = new /atom/movable/screen/zone_sel/robot()
zone_select.hud = src
zone_select.update_icon()
static_inventory += zone_select
@@ -283,61 +283,61 @@
for(var/obj/item/I in R.held_items)
screenmob.client.screen -= I
-/obj/screen/robot/lamp
+/atom/movable/screen/robot/lamp
name = "headlamp"
icon_state = "lamp_off"
var/mob/living/silicon/robot/robot
-/obj/screen/robot/lamp/Click()
+/atom/movable/screen/robot/lamp/Click()
. = ..()
if(.)
return
robot?.toggle_headlamp()
update_icon()
-/obj/screen/robot/lamp/update_icon()
+/atom/movable/screen/robot/lamp/update_icon()
if(robot?.lamp_enabled)
icon_state = "lamp_on"
else
icon_state = "lamp_off"
-/obj/screen/robot/alerts
+/atom/movable/screen/robot/alerts
name = "Alert Panel"
icon = 'icons/mob/screen_ai.dmi'
icon_state = "alerts"
-/obj/screen/robot/alerts/Click()
+/atom/movable/screen/robot/alerts/Click()
. = ..()
if(.)
return
var/mob/living/silicon/robot/borgo = usr
borgo.robot_alerts()
-/obj/screen/robot/thrusters
+/atom/movable/screen/robot/thrusters
name = "ion thrusters"
icon_state = "ionpulse0"
-/obj/screen/robot/thrusters/Click()
+/atom/movable/screen/robot/thrusters/Click()
if(..())
return
var/mob/living/silicon/robot/R = usr
R.toggle_ionpulse()
-/obj/screen/robot/sensors
+/atom/movable/screen/robot/sensors
name = "Sensor Augmentation"
icon_state = "cyborg_sensor"
-/obj/screen/robot/sensors/Click()
+/atom/movable/screen/robot/sensors/Click()
if(..())
return
var/mob/living/silicon/S = usr
S.toggle_sensors()
-/obj/screen/robot/modPC
+/atom/movable/screen/robot/modPC
name = "Modular Interface"
icon_state = "template"
var/mob/living/silicon/robot/robot
-/obj/screen/robot/modPC/Click()
+/atom/movable/screen/robot/modPC/Click()
. = ..()
if(.)
return
diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm
index b27abad841..bfbdce41fd 100644
--- a/code/_onclick/hud/screen_objects.dm
+++ b/code/_onclick/hud/screen_objects.dm
@@ -6,12 +6,11 @@
They are used with the client/screen list and the screen_loc var.
For more information, see the byond documentation on the screen_loc and screen vars.
*/
-/obj/screen
+/atom/movable/screen
name = ""
icon = 'icons/mob/screen_gen.dmi'
layer = HUD_LAYER
plane = HUD_PLANE
- resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
animate_movement = SLIDE_STEPS
speech_span = SPAN_ROBOT
vis_flags = VIS_INHERIT_PLANE
@@ -34,24 +33,21 @@
*/
var/del_on_map_removal = TRUE
-/obj/screen/take_damage()
- return
-
-/obj/screen/Destroy()
+/atom/movable/screen/Destroy()
master = null
hud = null
return ..()
-/obj/screen/examine(mob/user)
+/atom/movable/screen/examine(mob/user)
return list()
-/obj/screen/orbit()
+/atom/movable/screen/orbit()
return
-/obj/screen/proc/component_click(obj/screen/component_button/component, params)
+/atom/movable/screen/proc/component_click(atom/movable/screen/component_button/component, params)
return
-/obj/screen/text
+/atom/movable/screen/text
icon = null
icon_state = null
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
@@ -59,12 +55,12 @@
maptext_height = 480
maptext_width = 480
-/obj/screen/swap_hand
+/atom/movable/screen/swap_hand
layer = HUD_LAYER
plane = HUD_PLANE
name = "swap hand"
-/obj/screen/swap_hand/Click()
+/atom/movable/screen/swap_hand/Click()
// At this point in client Click() code we have passed the 1/10 sec check and little else
// We don't even know if it's a middle click
// if(world.time <= usr.next_move)
@@ -78,19 +74,19 @@
M.swap_hand()
return 1
-/obj/screen/craft
+/atom/movable/screen/craft
name = "crafting menu"
icon = 'icons/mob/screen_midnight.dmi'
icon_state = "craft"
screen_loc = ui_crafting
-/obj/screen/area_creator
+/atom/movable/screen/area_creator
name = "create new area"
icon = 'icons/mob/screen_midnight.dmi'
icon_state = "area_edit"
screen_loc = ui_building
-/obj/screen/area_creator/Click()
+/atom/movable/screen/area_creator/Click()
if(usr.incapacitated() || (isobserver(usr) && !IsAdminGhost(usr)))
return TRUE
var/area/A = get_area(usr)
@@ -99,18 +95,18 @@
return TRUE
create_area(usr)
-/obj/screen/language_menu
+/atom/movable/screen/language_menu
name = "language menu"
icon = 'icons/mob/screen_midnight.dmi'
icon_state = "talk_wheel"
screen_loc = ui_language_menu
-/obj/screen/language_menu/Click()
+/atom/movable/screen/language_menu/Click()
var/mob/M = usr
var/datum/language_holder/H = M.get_language_holder()
H.open_language_menu(usr)
-/obj/screen/inventory
+/atom/movable/screen/inventory
/// The identifier for the slot. It has nothing to do with ID cards.
var/slot_id
/// Icon when empty. For now used only by humans.
@@ -122,7 +118,7 @@
layer = HUD_LAYER
plane = HUD_PLANE
-/obj/screen/inventory/Click(location, control, params)
+/atom/movable/screen/inventory/Click(location, control, params)
// At this point in client Click() code we have passed the 1/10 sec check and little else
// We don't even know if it's a middle click
// if(world.time <= usr.next_move)
@@ -142,16 +138,16 @@
usr.update_inv_hands()
return TRUE
-/obj/screen/inventory/MouseEntered()
+/atom/movable/screen/inventory/MouseEntered()
..()
add_overlays()
-/obj/screen/inventory/MouseExited()
+/atom/movable/screen/inventory/MouseExited()
..()
cut_overlay(object_overlays)
object_overlays.Cut()
-/obj/screen/inventory/update_icon_state()
+/atom/movable/screen/inventory/update_icon_state()
if(!icon_empty)
icon_empty = icon_state
@@ -161,7 +157,7 @@
else
icon_state = icon_empty
-/obj/screen/inventory/proc/add_overlays()
+/atom/movable/screen/inventory/proc/add_overlays()
var/mob/user = hud?.mymob
if(!user || !slot_id)
@@ -184,12 +180,12 @@
// object_overlay = item_overlay
add_overlay(object_overlays)
-/obj/screen/inventory/hand
+/atom/movable/screen/inventory/hand
var/mutable_appearance/handcuff_overlay
var/static/mutable_appearance/blocked_overlay = mutable_appearance('icons/mob/screen_gen.dmi', "blocked")
var/held_index = 0
-/obj/screen/inventory/hand/update_overlays()
+/atom/movable/screen/inventory/hand/update_overlays()
. = ..()
if(!handcuff_overlay)
@@ -212,7 +208,7 @@
. += "hand_active"
-/obj/screen/inventory/hand/Click(location, control, params)
+/atom/movable/screen/inventory/hand/Click(location, control, params)
// At this point in client Click() code we have passed the 1/10 sec check and little else
// We don't even know if it's a middle click
var/mob/user = hud?.mymob
@@ -234,26 +230,26 @@
return TRUE
-/obj/screen/drop
+/atom/movable/screen/drop
name = "drop"
icon = 'icons/mob/screen_midnight.dmi'
icon_state = "act_drop"
layer = HUD_LAYER
plane = HUD_PLANE
-/obj/screen/drop/Click()
+/atom/movable/screen/drop/Click()
if(usr.stat == CONSCIOUS)
usr.dropItemToGround(usr.get_active_held_item())
-/obj/screen/act_intent
+/atom/movable/screen/act_intent
name = "intent"
icon_state = "help"
screen_loc = ui_acti
-/obj/screen/act_intent/Click(location, control, params)
+/atom/movable/screen/act_intent/Click(location, control, params)
usr.a_intent_change(INTENT_HOTKEY_RIGHT)
-/obj/screen/act_intent/segmented/Click(location, control, params)
+/atom/movable/screen/act_intent/segmented/Click(location, control, params)
if(usr.client.prefs.toggles & INTENT_STYLE)
var/_x = text2num(params2list(params)["icon-x"])
var/_y = text2num(params2list(params)["icon-y"])
@@ -272,20 +268,20 @@
else
return ..()
-/obj/screen/act_intent/alien
+/atom/movable/screen/act_intent/alien
icon = 'icons/mob/screen_alien.dmi'
screen_loc = ui_movi
-/obj/screen/act_intent/robot
+/atom/movable/screen/act_intent/robot
icon = 'icons/mob/screen_cyborg.dmi'
screen_loc = ui_borg_intents
-/obj/screen/internals
+/atom/movable/screen/internals
name = "toggle internals"
icon_state = "internal0"
screen_loc = ui_internal
-/obj/screen/internals/Click()
+/atom/movable/screen/internals/Click()
if(!iscarbon(usr))
return
var/mob/living/carbon/C = usr
@@ -346,71 +342,71 @@
return
C.update_action_buttons_icon()
-/obj/screen/mov_intent
+/atom/movable/screen/mov_intent
name = "run/walk toggle"
icon = 'icons/mob/screen_midnight.dmi'
icon_state = "running"
-/obj/screen/mov_intent/Initialize(mapload)
+/atom/movable/screen/mov_intent/Initialize(mapload)
. = ..()
update_icon()
-/obj/screen/mov_intent/Click()
+/atom/movable/screen/mov_intent/Click()
toggle(usr)
-/obj/screen/mov_intent/update_icon_state()
+/atom/movable/screen/mov_intent/update_icon_state()
switch(hud?.mymob?.m_intent)
if(MOVE_INTENT_WALK)
icon_state = CONFIG_GET(flag/sprint_enabled)? "walking" : "walking_nosprint"
if(MOVE_INTENT_RUN)
icon_state = CONFIG_GET(flag/sprint_enabled)? "running" : "running_nosprint"
-/obj/screen/mov_intent/proc/toggle(mob/user)
+/atom/movable/screen/mov_intent/proc/toggle(mob/user)
if(isobserver(user))
return
user.toggle_move_intent(user)
-/obj/screen/pull
+/atom/movable/screen/pull
name = "stop pulling"
icon = 'icons/mob/screen_midnight.dmi'
icon_state = "pull"
-/obj/screen/pull/Click()
+/atom/movable/screen/pull/Click()
if(isobserver(usr))
return
usr.stop_pulling()
-/obj/screen/pull/update_icon_state()
+/atom/movable/screen/pull/update_icon_state()
if(hud?.mymob?.pulling)
icon_state = "pull"
else
icon_state = "pull0"
-/obj/screen/resist
+/atom/movable/screen/resist
name = "resist"
icon = 'icons/mob/screen_midnight.dmi'
icon_state = "act_resist"
layer = HUD_LAYER
plane = HUD_PLANE
-/obj/screen/resist/Click()
+/atom/movable/screen/resist/Click()
if(isliving(usr))
var/mob/living/L = usr
L.resist()
-/obj/screen/rest
+/atom/movable/screen/rest
name = "rest"
icon = 'icons/mob/screen_midnight.dmi'
icon_state = "act_rest"
layer = HUD_LAYER
plane = HUD_PLANE
-/obj/screen/rest/Click()
+/atom/movable/screen/rest/Click()
if(isliving(usr))
var/mob/living/L = usr
L.lay_down()
-/obj/screen/rest/update_icon_state()
+/atom/movable/screen/rest/update_icon_state()
var/mob/living/user = hud?.mymob
if(!istype(user))
return
@@ -419,17 +415,17 @@
else
icon_state = "act_rest0"
-/obj/screen/throw_catch
+/atom/movable/screen/throw_catch
name = "throw/catch"
icon = 'icons/mob/screen_midnight.dmi'
icon_state = "act_throw_off"
-/obj/screen/throw_catch/Click()
+/atom/movable/screen/throw_catch/Click()
if(iscarbon(usr))
var/mob/living/carbon/C = usr
C.toggle_throw_mode()
-/obj/screen/zone_sel
+/atom/movable/screen/zone_sel
name = "damage zone"
icon_state = "zone_sel"
screen_loc = ui_zonesel
@@ -437,7 +433,7 @@
var/static/list/hover_overlays_cache = list()
var/hovering
-/obj/screen/zone_sel/Click(location, control,params)
+/atom/movable/screen/zone_sel/Click(location, control,params)
if(isobserver(usr))
return
@@ -450,10 +446,10 @@
return set_selected_zone(choice, usr)
-/obj/screen/zone_sel/MouseEntered(location, control, params)
+/atom/movable/screen/zone_sel/MouseEntered(location, control, params)
MouseMove(location, control, params)
-/obj/screen/zone_sel/MouseMove(location, control, params)
+/atom/movable/screen/zone_sel/MouseMove(location, control, params)
if(isobserver(usr))
return
@@ -482,12 +478,12 @@
layer = ABOVE_HUD_LAYER
plane = ABOVE_HUD_PLANE
-/obj/screen/zone_sel/MouseExited(location, control, params)
+/atom/movable/screen/zone_sel/MouseExited(location, control, params)
if(!isobserver(usr) && hovering)
vis_contents -= hover_overlays_cache[hovering]
hovering = null
-/obj/screen/zone_sel/proc/get_zone_at(icon_x, icon_y)
+/atom/movable/screen/zone_sel/proc/get_zone_at(icon_x, icon_y)
switch(icon_y)
if(1 to 9) //Legs
switch(icon_x)
@@ -525,7 +521,7 @@
return BODY_ZONE_PRECISE_EYES
return BODY_ZONE_HEAD
-/obj/screen/zone_sel/proc/set_selected_zone(choice, mob/user)
+/atom/movable/screen/zone_sel/proc/set_selected_zone(choice, mob/user)
if(user != hud?.mymob)
return
@@ -535,21 +531,21 @@
return TRUE
-/obj/screen/zone_sel/update_overlays()
+/atom/movable/screen/zone_sel/update_overlays()
. = ..()
if(!hud?.mymob)
return
. += mutable_appearance(overlay_icon, "[hud.mymob.zone_selected]")
-/obj/screen/zone_sel/alien
+/atom/movable/screen/zone_sel/alien
icon = 'icons/mob/screen_alien.dmi'
overlay_icon = 'icons/mob/screen_alien.dmi'
-/obj/screen/zone_sel/robot
+/atom/movable/screen/zone_sel/robot
icon = 'icons/mob/screen_cyborg.dmi'
-/obj/screen/flash
+/atom/movable/screen/flash
name = "flash"
icon_state = "blank"
blend_mode = BLEND_ADD
@@ -557,7 +553,7 @@
layer = FLASH_LAYER
plane = FULLSCREEN_PLANE
-/obj/screen/damageoverlay
+/atom/movable/screen/damageoverlay
icon = 'icons/mob/screen_full.dmi'
icon_state = "oxydamageoverlay0"
name = "dmg"
@@ -567,87 +563,87 @@
layer = UI_DAMAGE_LAYER
plane = FULLSCREEN_PLANE
-/obj/screen/healths
+/atom/movable/screen/healths
name = "health"
icon_state = "health0"
screen_loc = ui_health
-/obj/screen/healths/alien
+/atom/movable/screen/healths/alien
icon = 'icons/mob/screen_alien.dmi'
screen_loc = ui_alien_health
-/obj/screen/healths/robot
+/atom/movable/screen/healths/robot
icon = 'icons/mob/screen_cyborg.dmi'
screen_loc = ui_borg_health
-/obj/screen/healths/blob
+/atom/movable/screen/healths/blob
name = "blob health"
icon_state = "block"
screen_loc = ui_internal
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
-/obj/screen/healths/blob/naut
+/atom/movable/screen/healths/blob/naut
name = "health"
icon = 'icons/mob/blob.dmi'
icon_state = "nauthealth"
-/obj/screen/healths/blob/naut/core
+/atom/movable/screen/healths/blob/naut/core
name = "overmind health"
screen_loc = ui_health
icon_state = "corehealth"
-/obj/screen/healths/guardian
+/atom/movable/screen/healths/guardian
name = "summoner health"
icon = 'icons/mob/guardian.dmi'
icon_state = "base"
screen_loc = ui_health
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
-/obj/screen/healths/clock
+/atom/movable/screen/healths/clock
icon = 'icons/mob/actions.dmi'
icon_state = "bg_clock"
screen_loc = ui_health
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
-/obj/screen/healths/clock/gear
+/atom/movable/screen/healths/clock/gear
icon = 'icons/mob/clockwork_mobs.dmi'
icon_state = "bg_gear"
screen_loc = ui_internal
-/obj/screen/healths/revenant
+/atom/movable/screen/healths/revenant
name = "essence"
icon = 'icons/mob/actions.dmi'
icon_state = "bg_revenant"
screen_loc = ui_health
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
-/obj/screen/healths/construct
+/atom/movable/screen/healths/construct
icon = 'icons/mob/screen_construct.dmi'
icon_state = "artificer_health0"
screen_loc = ui_construct_health
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
-/obj/screen/healths/lavaland_elite
+/atom/movable/screen/healths/lavaland_elite
icon = 'icons/mob/screen_elite.dmi'
icon_state = "elite_health0"
screen_loc = ui_health
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
-/obj/screen/healthdoll
+/atom/movable/screen/healthdoll
name = "health doll"
screen_loc = ui_healthdoll
-/obj/screen/healthdoll/living
+/atom/movable/screen/healthdoll/living
icon_state = "fullhealth0"
screen_loc = ui_living_healthdoll
var/filtered = FALSE //so we don't repeatedly create the mask of the mob every update
-/obj/screen/mood
+/atom/movable/screen/mood
name = "mood"
icon_state = "mood5"
screen_loc = ui_mood
-/obj/screen/splash
+/atom/movable/screen/splash
icon = 'icons/blank_title.png'
icon_state = ""
screen_loc = "1,1"
@@ -655,7 +651,7 @@
plane = SPLASHSCREEN_PLANE
var/client/holder
-/obj/screen/splash/New(client/C, visible, use_previous_title) //TODO: Make this use INITIALIZE_IMMEDIATE, except its not easy
+/atom/movable/screen/splash/New(client/C, visible, use_previous_title) //TODO: Make this use INITIALIZE_IMMEDIATE, except its not easy
. = ..()
holder = C
@@ -674,7 +670,7 @@
holder.screen += src
-/obj/screen/splash/proc/Fade(out, qdel_after = TRUE)
+/atom/movable/screen/splash/proc/Fade(out, qdel_after = TRUE)
if(QDELETED(src))
return
if(out)
@@ -685,20 +681,20 @@
if(qdel_after)
QDEL_IN(src, 30)
-/obj/screen/splash/Destroy()
+/atom/movable/screen/splash/Destroy()
if(holder)
holder.screen -= src
holder = null
return ..()
-/obj/screen/component_button
- var/obj/screen/parent
+/atom/movable/screen/component_button
+ var/atom/movable/screen/parent
-/obj/screen/component_button/Initialize(mapload, obj/screen/parent)
+/atom/movable/screen/component_button/Initialize(mapload, atom/movable/screen/parent)
. = ..()
src.parent = parent
-/obj/screen/component_button/Click(params)
+/atom/movable/screen/component_button/Click(params)
if(parent)
parent.component_click(src, params)
diff --git a/code/_onclick/hud/screen_objects/clickdelay.dm b/code/_onclick/hud/screen_objects/clickdelay.dm
index e0ad039cdf..c62f051c1a 100644
--- a/code/_onclick/hud/screen_objects/clickdelay.dm
+++ b/code/_onclick/hud/screen_objects/clickdelay.dm
@@ -1,37 +1,37 @@
-/obj/screen/action_bar
+/atom/movable/screen/action_bar
-/obj/screen/action_bar/Destroy()
+/atom/movable/screen/action_bar/Destroy()
STOP_PROCESSING(SShuds, src)
return ..()
-/obj/screen/action_bar/proc/mark_dirty()
+/atom/movable/screen/action_bar/proc/mark_dirty()
var/mob/living/L = hud?.mymob
if(L?.client && update_to_mob(L))
START_PROCESSING(SShuds, src)
-/obj/screen/action_bar/process()
+/atom/movable/screen/action_bar/process()
var/mob/living/L = hud?.mymob
if(!L?.client || !update_to_mob(L))
return PROCESS_KILL
-/obj/screen/action_bar/proc/update_to_mob(mob/living/L)
+/atom/movable/screen/action_bar/proc/update_to_mob(mob/living/L)
return FALSE
-/datum/hud/var/obj/screen/action_bar/clickdelay/clickdelay
+/datum/hud/var/atom/movable/screen/action_bar/clickdelay/clickdelay
-/obj/screen/action_bar/clickdelay
+/atom/movable/screen/action_bar/clickdelay
name = "click delay"
icon = 'icons/effects/progessbar.dmi'
icon_state = "prog_bar_100"
layer = 20 // under hand buttons
-/obj/screen/action_bar/clickdelay/Initialize()
+/atom/movable/screen/action_bar/clickdelay/Initialize()
. = ..()
var/matrix/M = new
M.Scale(2, 1)
transform = M
-/obj/screen/action_bar/clickdelay/update_to_mob(mob/living/L)
+/atom/movable/screen/action_bar/clickdelay/update_to_mob(mob/living/L)
var/estimated = L.EstimatedNextActionTime()
var/diff = estimated - L.last_action
var/left = estimated - world.time
@@ -41,14 +41,14 @@
icon_state = "prog_bar_[round(clamp(((diff - left)/diff) * 100, 0, 100), 5)]"
return TRUE
-/datum/hud/var/obj/screen/action_bar/resistdelay/resistdelay
+/datum/hud/var/atom/movable/screen/action_bar/resistdelay/resistdelay
-/obj/screen/action_bar/resistdelay
+/atom/movable/screen/action_bar/resistdelay
name = "resist delay"
icon = 'icons/effects/progessbar.dmi'
icon_state = "prog_bar_100"
-/obj/screen/action_bar/resistdelay/update_to_mob(mob/living/L)
+/atom/movable/screen/action_bar/resistdelay/update_to_mob(mob/living/L)
var/diff = L.next_resist - L.last_resist
var/left = L.next_resist - world.time
if(left < 0 || diff < 0)
diff --git a/code/_onclick/hud/screen_objects/sprint.dm b/code/_onclick/hud/screen_objects/sprint.dm
index 326bb81745..f8760ddd85 100644
--- a/code/_onclick/hud/screen_objects/sprint.dm
+++ b/code/_onclick/hud/screen_objects/sprint.dm
@@ -1,19 +1,19 @@
-/obj/screen/mov_intent
+/atom/movable/screen/mov_intent
icon = 'modular_citadel/icons/ui/screen_midnight.dmi'
-/obj/screen/sprintbutton
+/atom/movable/screen/sprintbutton
name = "toggle sprint"
icon = 'modular_citadel/icons/ui/screen_midnight.dmi'
icon_state = "act_sprint"
layer = ABOVE_HUD_LAYER - 0.1
var/mutable_appearance/flashy
-/obj/screen/sprintbutton/Click()
+/atom/movable/screen/sprintbutton/Click()
if(ishuman(usr))
var/mob/living/carbon/human/H = usr
H.default_toggle_sprint()
-/obj/screen/sprintbutton/update_icon_state()
+/atom/movable/screen/sprintbutton/update_icon_state()
var/mob/living/user = hud?.mymob
if(!istype(user))
return
@@ -24,7 +24,7 @@
else
icon_state = "act_sprint"
-/obj/screen/sprintbutton/update_overlays()
+/atom/movable/screen/sprintbutton/update_overlays()
. = ..()
var/mob/living/carbon/user = hud?.mymob
if(!istype(user) || !user.client)
@@ -38,20 +38,20 @@
. += flashy
//Sprint buffer onscreen code.
-/datum/hud/var/obj/screen/sprint_buffer/sprint_buffer
+/datum/hud/var/atom/movable/screen/sprint_buffer/sprint_buffer
-/obj/screen/sprint_buffer
+/atom/movable/screen/sprint_buffer
name = "sprint buffer"
icon = 'icons/effects/progessbar.dmi'
icon_state = "prog_bar_100"
-/obj/screen/sprint_buffer/Click()
+/atom/movable/screen/sprint_buffer/Click()
if(isliving(usr))
var/mob/living/L = usr
to_chat(L, "Your sprint buffer's maximum capacity is [L.sprint_buffer_max]. It is currently at [L.sprint_buffer], regenerating at [L.sprint_buffer_regen_ds * 10] per second. \
Sprinting while this is empty will incur a [L.sprint_stamina_cost] stamina cost per tile.")
-/obj/screen/sprint_buffer/proc/update_to_mob(mob/living/L)
+/atom/movable/screen/sprint_buffer/proc/update_to_mob(mob/living/L)
var/amount = 0
if(L.sprint_buffer_max > 0)
amount = round(clamp((L.sprint_buffer / L.sprint_buffer_max) * 100, 0, 100), 5)
diff --git a/code/_onclick/hud/screen_objects/stamina.dm b/code/_onclick/hud/screen_objects/stamina.dm
index 98a387d32d..b4c4807ec8 100644
--- a/code/_onclick/hud/screen_objects/stamina.dm
+++ b/code/_onclick/hud/screen_objects/stamina.dm
@@ -1,21 +1,21 @@
-/datum/hud/var/obj/screen/staminas/staminas
-/datum/hud/var/obj/screen/staminabuffer/staminabuffer
+/datum/hud/var/atom/movable/screen/staminas/staminas
+/datum/hud/var/atom/movable/screen/staminabuffer/staminabuffer
-/obj/screen/staminas
+/atom/movable/screen/staminas
icon = 'modular_citadel/icons/ui/screen_gen.dmi'
name = "stamina"
icon_state = "stamina0"
screen_loc = ui_stamina
mouse_opacity = 1
-/obj/screen/staminas/Click(location,control,params)
+/atom/movable/screen/staminas/Click(location,control,params)
if(isliving(usr))
var/mob/living/L = usr
CONFIG_CACHE_ENTRY_AND_FETCH_VALUE(number/stamina_combat/buffer_max, buffer_max)
to_chat(L, "You have [L.getStaminaLoss()] stamina loss.
\
Your stamina buffer is [round((L.stamina_buffer / buffer_max) * 100, 0.1)]% full.")
-/obj/screen/staminas/update_icon_state()
+/atom/movable/screen/staminas/update_icon_state()
var/mob/living/carbon/user = hud?.mymob
if(!user)
return
@@ -26,21 +26,21 @@
else
icon_state = "stamina[clamp(FLOOR(user.getStaminaLoss() /20, 1), 0, 6)]"
-/obj/screen/staminas/update_overlays()
+/atom/movable/screen/staminas/update_overlays()
. = ..()
var/mob/living/carbon/user = hud?.mymob
if(!user)
return
var/percent = user.getStaminaLoss() / STAMINA_CRIT
if((user.stat == DEAD) || (user.combat_flags & COMBAT_FLAG_HARD_STAMCRIT) || (user.hal_screwyhud in 1 to 2))
- . += list("stamina_alert3")
+ . += list("stamina_alert3")
else if(percent >= 0.85)
. += list("stamina_alert2")
else if(percent >= 0.7)
. += list("stamina_alert1")
//stam buffer
-/obj/screen/staminabuffer
+/atom/movable/screen/staminabuffer
icon = 'modular_citadel/icons/ui/screen_gen.dmi'
name = "stamina buffer"
icon_state = "stambuffer0"
@@ -48,19 +48,19 @@
layer = ABOVE_HUD_LAYER + 0.1
mouse_opacity = 0
-/obj/screen/staminabuffer/proc/mark_dirty()
+/atom/movable/screen/staminabuffer/proc/mark_dirty()
if(update_to_mob())
START_PROCESSING(SShuds, src)
-/obj/screen/staminabuffer/process()
+/atom/movable/screen/staminabuffer/process()
if(!update_to_mob())
return PROCESS_KILL
-/obj/screen/staminabuffer/Destroy()
+/atom/movable/screen/staminabuffer/Destroy()
STOP_PROCESSING(SShuds, src)
return ..()
-/obj/screen/staminabuffer/proc/update_to_mob()
+/atom/movable/screen/staminabuffer/proc/update_to_mob()
var/mob/living/carbon/user = hud?.mymob
user.UpdateStaminaBuffer(FALSE)
CONFIG_CACHE_ENTRY_AND_FETCH_VALUE(number/stamina_combat/buffer_max, buffer_max)
diff --git a/code/_onclick/hud/screen_objects/storage.dm b/code/_onclick/hud/screen_objects/storage.dm
index 1ce1df24c6..55156d9b0d 100644
--- a/code/_onclick/hud/screen_objects/storage.dm
+++ b/code/_onclick/hud/screen_objects/storage.dm
@@ -1,12 +1,12 @@
-/obj/screen/storage
+/atom/movable/screen/storage
name = "storage"
var/insertion_click = FALSE
-/obj/screen/storage/Initialize(mapload, new_master)
+/atom/movable/screen/storage/Initialize(mapload, new_master)
. = ..()
master = new_master
-/obj/screen/storage/Click(location, control, params)
+/atom/movable/screen/storage/Click(location, control, params)
if(!insertion_click)
return ..()
if(hud?.mymob && (hud.mymob != usr))
@@ -18,7 +18,7 @@
master.attackby(null, I, usr, params)
return TRUE
-/obj/screen/storage/boxes
+/atom/movable/screen/storage/boxes
name = "storage"
icon_state = "block"
screen_loc = "7,7 to 10,8"
@@ -26,83 +26,83 @@
plane = HUD_PLANE
insertion_click = TRUE
-/obj/screen/storage/close
+/atom/movable/screen/storage/close
name = "close"
layer = ABOVE_HUD_LAYER
plane = ABOVE_HUD_PLANE
icon_state = "backpack_close"
-/obj/screen/storage/close/Click()
+/atom/movable/screen/storage/close/Click()
var/datum/component/storage/S = master
S.close(usr)
return TRUE
-/obj/screen/storage/left
+/atom/movable/screen/storage/left
icon_state = "storage_start"
insertion_click = TRUE
-/obj/screen/storage/right
+/atom/movable/screen/storage/right
icon_state = "storage_end"
insertion_click = TRUE
-/obj/screen/storage/continuous
+/atom/movable/screen/storage/continuous
icon_state = "storage_continue"
insertion_click = TRUE
-/obj/screen/storage/volumetric_box
+/atom/movable/screen/storage/volumetric_box
icon_state = "stored_continue"
layer = VOLUMETRIC_STORAGE_BOX_LAYER
plane = VOLUMETRIC_STORAGE_BOX_PLANE
var/obj/item/our_item
-/obj/screen/storage/volumetric_box/Initialize(mapload, new_master, obj/item/our_item)
+/atom/movable/screen/storage/volumetric_box/Initialize(mapload, new_master, obj/item/our_item)
src.our_item = our_item
RegisterSignal(our_item, COMSIG_ITEM_MOUSE_ENTER, .proc/on_item_mouse_enter)
RegisterSignal(our_item, COMSIG_ITEM_MOUSE_EXIT, .proc/on_item_mouse_exit)
return ..()
-/obj/screen/storage/volumetric_box/Destroy()
+/atom/movable/screen/storage/volumetric_box/Destroy()
makeItemInactive()
our_item = null
return ..()
-/obj/screen/storage/volumetric_box/Click(location, control, params)
+/atom/movable/screen/storage/volumetric_box/Click(location, control, params)
return our_item.Click(location, control, params)
-/obj/screen/storage/volumetric_box/MouseDrop(atom/over, src_location, over_location, src_control, over_control, params)
+/atom/movable/screen/storage/volumetric_box/MouseDrop(atom/over, src_location, over_location, src_control, over_control, params)
return our_item.MouseDrop(over, src_location, over_location, src_control, over_control, params)
-/obj/screen/storage/volumetric_box/MouseExited(location, control, params)
+/atom/movable/screen/storage/volumetric_box/MouseExited(location, control, params)
makeItemInactive()
-/obj/screen/storage/volumetric_box/MouseEntered(location, control, params)
+/atom/movable/screen/storage/volumetric_box/MouseEntered(location, control, params)
makeItemActive()
-/obj/screen/storage/volumetric_box/proc/on_item_mouse_enter()
+/atom/movable/screen/storage/volumetric_box/proc/on_item_mouse_enter()
makeItemActive()
-/obj/screen/storage/volumetric_box/proc/on_item_mouse_exit()
+/atom/movable/screen/storage/volumetric_box/proc/on_item_mouse_exit()
makeItemInactive()
-/obj/screen/storage/volumetric_box/proc/makeItemInactive()
+/atom/movable/screen/storage/volumetric_box/proc/makeItemInactive()
return
-/obj/screen/storage/volumetric_box/proc/makeItemActive()
+/atom/movable/screen/storage/volumetric_box/proc/makeItemActive()
return
-/obj/screen/storage/volumetric_box/center
+/atom/movable/screen/storage/volumetric_box/center
icon_state = "stored_continue"
- var/obj/screen/storage/volumetric_edge/stored_left/left
- var/obj/screen/storage/volumetric_edge/stored_right/right
- var/obj/screen/storage/item_holder/holder
+ var/atom/movable/screen/storage/volumetric_edge/stored_left/left
+ var/atom/movable/screen/storage/volumetric_edge/stored_right/right
+ var/atom/movable/screen/storage/item_holder/holder
var/pixel_size
-/obj/screen/storage/volumetric_box/center/Initialize(mapload, new_master, our_item)
+/atom/movable/screen/storage/volumetric_box/center/Initialize(mapload, new_master, our_item)
left = new(null, src, our_item)
right = new(null, src, our_item)
return ..()
-/obj/screen/storage/volumetric_box/center/Destroy()
+/atom/movable/screen/storage/volumetric_box/center/Destroy()
QDEL_NULL(left)
QDEL_NULL(right)
vis_contents.Cut()
@@ -110,13 +110,13 @@
QDEL_NULL(holder)
return ..()
-/obj/screen/storage/volumetric_box/center/proc/on_screen_objects()
+/atom/movable/screen/storage/volumetric_box/center/proc/on_screen_objects()
return list(src)
/**
* Sets the size of this box screen object and regenerates its left/right borders. This includes the actual border's size!
*/
-/obj/screen/storage/volumetric_box/center/proc/set_pixel_size(pixels)
+/atom/movable/screen/storage/volumetric_box/center/proc/set_pixel_size(pixels)
if(pixel_size == pixels)
return
pixel_size = pixels
@@ -139,59 +139,59 @@
add_overlay(left)
add_overlay(right)
-/obj/screen/storage/volumetric_box/center/makeItemInactive()
+/atom/movable/screen/storage/volumetric_box/center/makeItemInactive()
if(!holder)
return
holder.layer = VOLUMETRIC_STORAGE_ITEM_LAYER
holder.plane = VOLUMETRIC_STORAGE_ITEM_PLANE
-/obj/screen/storage/volumetric_box/center/makeItemActive()
+/atom/movable/screen/storage/volumetric_box/center/makeItemActive()
if(!holder)
return
holder.our_item.layer = VOLUMETRIC_STORAGE_ACTIVE_ITEM_LAYER //make sure we display infront of the others!
holder.our_item.plane = VOLUMETRIC_STORAGE_ACTIVE_ITEM_PLANE
-/obj/screen/storage/volumetric_edge
+/atom/movable/screen/storage/volumetric_edge
layer = VOLUMETRIC_STORAGE_BOX_LAYER
plane = VOLUMETRIC_STORAGE_BOX_PLANE
-/obj/screen/storage/volumetric_edge/Initialize(mapload, master, our_item)
+/atom/movable/screen/storage/volumetric_edge/Initialize(mapload, master, our_item)
src.master = master
return ..()
-/obj/screen/storage/volumetric_edge/Click(location, control, params)
+/atom/movable/screen/storage/volumetric_edge/Click(location, control, params)
return master.Click(location, control, params)
-/obj/screen/storage/volumetric_edge/MouseDrop(atom/over, src_location, over_location, src_control, over_control, params)
+/atom/movable/screen/storage/volumetric_edge/MouseDrop(atom/over, src_location, over_location, src_control, over_control, params)
return master.MouseDrop(over, src_location, over_location, src_control, over_control, params)
-/obj/screen/storage/volumetric_edge/MouseExited(location, control, params)
+/atom/movable/screen/storage/volumetric_edge/MouseExited(location, control, params)
return master.MouseExited(location, control, params)
-/obj/screen/storage/volumetric_edge/MouseEntered(location, control, params)
+/atom/movable/screen/storage/volumetric_edge/MouseEntered(location, control, params)
return master.MouseEntered(location, control, params)
-/obj/screen/storage/volumetric_edge/stored_left
+/atom/movable/screen/storage/volumetric_edge/stored_left
icon_state = "stored_start"
appearance_flags = APPEARANCE_UI | KEEP_APART | RESET_TRANSFORM // Yes I know RESET_TRANSFORM is in APPEARANCE_UI but we're hard-asserting this incase someone changes it.
-/obj/screen/storage/volumetric_edge/stored_right
+/atom/movable/screen/storage/volumetric_edge/stored_right
icon_state = "stored_end"
appearance_flags = APPEARANCE_UI | KEEP_APART | RESET_TRANSFORM
-/obj/screen/storage/item_holder
+/atom/movable/screen/storage/item_holder
var/obj/item/our_item
vis_flags = NONE
-/obj/screen/storage/item_holder/Initialize(mapload, new_master, obj/item/I)
+/atom/movable/screen/storage/item_holder/Initialize(mapload, new_master, obj/item/I)
. = ..()
our_item = I
vis_contents += I
-/obj/screen/storage/item_holder/Destroy()
+/atom/movable/screen/storage/item_holder/Destroy()
vis_contents.Cut()
our_item = null
return ..()
-/obj/screen/storage/item_holder/Click(location, control, params)
+/atom/movable/screen/storage/item_holder/Click(location, control, params)
return our_item.Click(location, control, params)
diff --git a/code/_onclick/hud/screen_objects/vore.dm b/code/_onclick/hud/screen_objects/vore.dm
index 017f7f3485..91aa8f318c 100644
--- a/code/_onclick/hud/screen_objects/vore.dm
+++ b/code/_onclick/hud/screen_objects/vore.dm
@@ -1,9 +1,9 @@
-/obj/screen/voretoggle
+/atom/movable/screen/voretoggle
name = "toggle vore mode"
icon = 'modular_citadel/icons/ui/screen_midnight.dmi'
icon_state = "nom_off"
-/obj/screen/voretoggle/Click()
+/atom/movable/screen/voretoggle/Click()
if(usr != hud.mymob)
return
var/mob/living/carbon/C = usr
@@ -12,7 +12,7 @@
return
C.toggle_vore_mode()
-/obj/screen/voretoggle/update_icon_state()
+/atom/movable/screen/voretoggle/update_icon_state()
var/mob/living/carbon/user = hud?.mymob
if(!istype(user))
return
diff --git a/code/_onclick/hud/simple_animal.dm b/code/_onclick/hud/simple_animal.dm
index ef46c0d66e..2f7902c965 100644
--- a/code/_onclick/hud/simple_animal.dm
+++ b/code/_onclick/hud/simple_animal.dm
@@ -2,7 +2,7 @@
ui_style = 'icons/mob/screen_gen.dmi'
/datum/hud/living/simple_animal/New(mob/living/owner)
..()
- pull_icon = new /obj/screen/pull()
+ pull_icon = new /atom/movable/screen/pull()
pull_icon.icon = ui_style
pull_icon.update_icon()
pull_icon.screen_loc = ui_living_pull
@@ -10,6 +10,6 @@
static_inventory += pull_icon
//mob health doll! assumes whatever sprite the mob is
- healthdoll = new /obj/screen/healthdoll/living()
+ healthdoll = new /atom/movable/screen/healthdoll/living()
healthdoll.hud = src
infodisplay += healthdoll
diff --git a/code/_onclick/hud/swarmer.dm b/code/_onclick/hud/swarmer.dm
index 80cc01c3b3..6aba23fab5 100644
--- a/code/_onclick/hud/swarmer.dm
+++ b/code/_onclick/hud/swarmer.dm
@@ -1,98 +1,98 @@
-/obj/screen/swarmer
+/atom/movable/screen/swarmer
icon = 'icons/mob/swarmer.dmi'
-/obj/screen/swarmer/FabricateTrap
+/atom/movable/screen/swarmer/FabricateTrap
icon_state = "ui_trap"
name = "Create trap (Costs 5 Resources)"
desc = "Creates a trap that will nonlethally shock any non-swarmer that attempts to cross it. (Costs 5 resources)"
-/obj/screen/swarmer/FabricateTrap/Click()
+/atom/movable/screen/swarmer/FabricateTrap/Click()
if(isswarmer(usr))
var/mob/living/simple_animal/hostile/swarmer/S = usr
S.CreateTrap()
-/obj/screen/swarmer/Barricade
+/atom/movable/screen/swarmer/Barricade
icon_state = "ui_barricade"
name = "Create barricade (Costs 5 Resources)"
desc = "Creates a destructible barricade that will stop any non swarmer from passing it. Also allows disabler beams to pass through. (Costs 5 resources)"
-/obj/screen/swarmer/Barricade/Click()
+/atom/movable/screen/swarmer/Barricade/Click()
if(isswarmer(usr))
var/mob/living/simple_animal/hostile/swarmer/S = usr
S.CreateBarricade()
-/obj/screen/swarmer/Replicate
+/atom/movable/screen/swarmer/Replicate
icon_state = "ui_replicate"
name = "Replicate (Costs 50 Resources)"
desc = "Creates another of our kind."
-/obj/screen/swarmer/Replicate/Click()
+/atom/movable/screen/swarmer/Replicate/Click()
if(isswarmer(usr))
var/mob/living/simple_animal/hostile/swarmer/S = usr
S.CreateSwarmer()
-/obj/screen/swarmer/RepairSelf
+/atom/movable/screen/swarmer/RepairSelf
icon_state = "ui_self_repair"
name = "Repair self"
desc = "Repairs damage to our body."
-/obj/screen/swarmer/RepairSelf/Click()
+/atom/movable/screen/swarmer/RepairSelf/Click()
if(isswarmer(usr))
var/mob/living/simple_animal/hostile/swarmer/S = usr
S.RepairSelf()
-/obj/screen/swarmer/ToggleLight
+/atom/movable/screen/swarmer/ToggleLight
icon_state = "ui_light"
name = "Toggle light"
desc = "Toggles our inbuilt light on or off."
-/obj/screen/swarmer/ToggleLight/Click()
+/atom/movable/screen/swarmer/ToggleLight/Click()
if(isswarmer(usr))
var/mob/living/simple_animal/hostile/swarmer/S = usr
S.ToggleLight()
-/obj/screen/swarmer/ContactSwarmers
+/atom/movable/screen/swarmer/ContactSwarmers
icon_state = "ui_contact_swarmers"
name = "Contact swarmers"
desc = "Sends a message to all other swarmers, should they exist."
-/obj/screen/swarmer/ContactSwarmers/Click()
+/atom/movable/screen/swarmer/ContactSwarmers/Click()
if(isswarmer(usr))
var/mob/living/simple_animal/hostile/swarmer/S = usr
S.ContactSwarmers()
/datum/hud/swarmer/New(mob/owner)
..()
- var/obj/screen/using
+ var/atom/movable/screen/using
- using = new /obj/screen/swarmer/FabricateTrap()
+ using = new /atom/movable/screen/swarmer/FabricateTrap()
using.screen_loc = ui_hand_position(2)
using.hud = src
static_inventory += using
- using = new /obj/screen/swarmer/Barricade()
+ using = new /atom/movable/screen/swarmer/Barricade()
using.screen_loc = ui_hand_position(1)
using.hud = src
static_inventory += using
- using = new /obj/screen/swarmer/Replicate()
+ using = new /atom/movable/screen/swarmer/Replicate()
using.screen_loc = ui_zonesel
using.hud = src
static_inventory += using
- using = new /obj/screen/swarmer/RepairSelf()
+ using = new /atom/movable/screen/swarmer/RepairSelf()
using.screen_loc = ui_storage1
using.hud = src
static_inventory += using
- using = new /obj/screen/swarmer/ToggleLight()
+ using = new /atom/movable/screen/swarmer/ToggleLight()
using.screen_loc = ui_back
using.hud = src
static_inventory += using
- using = new /obj/screen/swarmer/ContactSwarmers()
+ using = new /atom/movable/screen/swarmer/ContactSwarmers()
using.screen_loc = ui_inventory
using.hud = src
static_inventory += using
diff --git a/code/controllers/subsystem/parallax.dm b/code/controllers/subsystem/parallax.dm
index 7096c667e1..86bd517602 100644
--- a/code/controllers/subsystem/parallax.dm
+++ b/code/controllers/subsystem/parallax.dm
@@ -15,7 +15,7 @@ SUBSYSTEM_DEF(parallax)
/datum/controller/subsystem/parallax/PreInit()
. = ..()
if(prob(70)) //70% chance to pick a special extra layer
- random_layer = pick(/obj/screen/parallax_layer/random/space_gas, /obj/screen/parallax_layer/random/asteroids)
+ random_layer = pick(/atom/movable/screen/parallax_layer/random/space_gas, /atom/movable/screen/parallax_layer/random/asteroids)
random_parallax_color = pick(COLOR_TEAL, COLOR_GREEN, COLOR_YELLOW, COLOR_CYAN, COLOR_ORANGE, COLOR_PURPLE)//Special color for random_layer1. Has to be done here so everyone sees the same color. [COLOR_SILVER]
planet_y_offset = rand(100, 160)
planet_x_offset = rand(100, 160)
diff --git a/code/controllers/subsystem/sun.dm b/code/controllers/subsystem/sun.dm
index 746b1be7a9..dba9adac98 100644
--- a/code/controllers/subsystem/sun.dm
+++ b/code/controllers/subsystem/sun.dm
@@ -59,5 +59,3 @@ SUBSYSTEM_DEF(sun)
/datum/controller/subsystem/sun/proc/complete_movement()
SEND_SIGNAL(src, COMSIG_SUN_MOVED, primary_sun, suns)
-
-#undef OCCLUSION_DISTANCE
diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm
index a7a3e87672..dfee659080 100755
--- a/code/controllers/subsystem/ticker.dm
+++ b/code/controllers/subsystem/ticker.dm
@@ -421,7 +421,7 @@ SUBSYSTEM_DEF(ticker)
if (living.client.prefs && living.client.prefs.auto_ooc)
if (living.client.prefs.chat_toggles & CHAT_OOC)
living.client.prefs.chat_toggles ^= CHAT_OOC
- var/obj/screen/splash/S = new(living.client, TRUE)
+ var/atom/movable/screen/splash/S = new(living.client, TRUE)
S.Fade(TRUE)
living.client.init_verbs()
livings += living
diff --git a/code/controllers/subsystem/title.dm b/code/controllers/subsystem/title.dm
index ee2bfd354d..3cc3d9dd99 100644
--- a/code/controllers/subsystem/title.dm
+++ b/code/controllers/subsystem/title.dm
@@ -57,7 +57,7 @@ SUBSYSTEM_DEF(title)
for(var/thing in GLOB.clients)
if(!thing)
continue
- var/obj/screen/splash/S = new(thing, FALSE)
+ var/atom/movable/screen/splash/S = new(thing, FALSE)
S.Fade(FALSE,FALSE)
/datum/controller/subsystem/title/Recover()
diff --git a/code/datums/action.dm b/code/datums/action.dm
index 064829f0df..1a8ea7a60f 100644
--- a/code/datums/action.dm
+++ b/code/datums/action.dm
@@ -11,7 +11,7 @@
var/check_flags = 0
var/required_mobility_flags = MOBILITY_USE
var/processing = FALSE
- var/obj/screen/movable/action_button/button = null
+ var/atom/movable/screen/movable/action_button/button = null
var/buttontooltipstyle = ""
var/transparent_when_unavailable = TRUE
var/use_target_appearance = FALSE
@@ -159,7 +159,7 @@
button.color = rgb(255,255,255,255)
return 1
-/datum/action/proc/ApplyIcon(obj/screen/movable/action_button/current_button, force = FALSE)
+/datum/action/proc/ApplyIcon(atom/movable/screen/movable/action_button/current_button, force = FALSE)
if(icon_icon && button_icon_state && ((current_button.button_icon_state != button_icon_state) || force))
current_button.cut_overlays()
current_button.add_overlay(mutable_appearance(icon_icon, button_icon_state))
@@ -821,7 +821,7 @@
icon_icon = 'icons/mob/actions/actions_items.dmi'
button_icon_state = "storage_gather_switch"
-/datum/action/item_action/storage_gather_mode/ApplyIcon(obj/screen/movable/action_button/current_button)
+/datum/action/item_action/storage_gather_mode/ApplyIcon(atom/movable/screen/movable/action_button/current_button)
. = ..()
var/old_layer = target.layer
var/old_plane = target.plane
diff --git a/code/datums/brain_damage/hypnosis.dm b/code/datums/brain_damage/hypnosis.dm
index f4c4541db9..de5311943c 100644
--- a/code/datums/brain_damage/hypnosis.dm
+++ b/code/datums/brain_damage/hypnosis.dm
@@ -47,7 +47,7 @@
"These words keep echoing in your mind. You find yourself completely fascinated by them.")]")
to_chat(owner, "You've been hypnotized by this sentence. You must follow these words. If it isn't a clear order, you can freely interpret how to do so,\
as long as you act like the words are your highest priority.")
- var/obj/screen/alert/hypnosis/hypno_alert = owner.throw_alert("hypnosis", /obj/screen/alert/hypnosis)
+ var/atom/movable/screen/alert/hypnosis/hypno_alert = owner.throw_alert("hypnosis", /atom/movable/screen/alert/hypnosis)
hypno_alert.desc = "\"[hypnotic_phrase]\"... your mind seems to be fixated on this concept."
..()
diff --git a/code/datums/cinematic.dm b/code/datums/cinematic.dm
index 2648ae1eab..2a8a0ea98a 100644
--- a/code/datums/cinematic.dm
+++ b/code/datums/cinematic.dm
@@ -18,7 +18,7 @@
playing.play(watcher)
qdel(playing)
-/obj/screen/cinematic
+/atom/movable/screen/cinematic
icon = 'icons/effects/station_explosion.dmi'
icon_state = "station_intact"
plane = SPLASHSCREEN_PLANE
@@ -32,7 +32,7 @@
var/list/watching = list() //List of clients watching this
var/list/locked = list() //Who had mob_transforming set during the cinematic
var/is_global = FALSE //Global cinematics will override mob-specific ones
- var/obj/screen/cinematic/screen
+ var/atom/movable/screen/cinematic/screen
var/datum/callback/special_callback //For special effects synced with animation (explosions after the countdown etc)
var/cleanup_time = 300 //How long for the final screen to remain
var/stop_ooc = TRUE //Turns off ooc when played globally.
@@ -74,7 +74,7 @@
ooc_toggled = TRUE
toggle_ooc(FALSE)
- //Place /obj/screen/cinematic into everyone's screens, prevent them from moving
+ //Place /atom/movable/screen/cinematic into everyone's screens, prevent them from moving
for(var/MM in watchers)
var/mob/M = MM
show_to(M, M.client)
@@ -101,7 +101,7 @@
if(!C)
return
watching += C
- M.overlay_fullscreen("cinematic",/obj/screen/fullscreen/cinematic_backdrop)
+ M.overlay_fullscreen("cinematic",/atom/movable/screen/fullscreen/cinematic_backdrop)
C.screen += screen
//Sound helper
diff --git a/code/datums/components/combat_mode.dm b/code/datums/components/combat_mode.dm
index ac18becb67..b61ca33fb8 100644
--- a/code/datums/components/combat_mode.dm
+++ b/code/datums/components/combat_mode.dm
@@ -7,7 +7,7 @@
var/mode_flags = COMBAT_MODE_INACTIVE
var/combatmessagecooldown
var/lastmousedir
- var/obj/screen/combattoggle/hud_icon
+ var/atom/movable/screen/combattoggle/hud_icon
var/hud_loc
/datum/component/combat_mode/Initialize(hud_loc = ui_combat_toggle)
@@ -178,18 +178,18 @@
safe_disable_combat_mode(source)
/// The screen button.
-/obj/screen/combattoggle
+/atom/movable/screen/combattoggle
name = "toggle combat mode"
icon = 'modular_citadel/icons/ui/screen_midnight.dmi'
icon_state = "combat_off"
var/mutable_appearance/flashy
var/combat_on = FALSE ///Wheter combat mode is enabled or not, so we don't have to store a reference.
-/obj/screen/combattoggle/Click()
+/atom/movable/screen/combattoggle/Click()
if(hud && usr == hud.mymob)
SEND_SIGNAL(hud.mymob, COMSIG_TOGGLE_COMBAT_MODE)
-/obj/screen/combattoggle/update_icon_state()
+/atom/movable/screen/combattoggle/update_icon_state()
var/mob/living/user = hud?.mymob
if(!user)
return
@@ -200,7 +200,7 @@
else
icon_state = "combat_off"
-/obj/screen/combattoggle/update_overlays()
+/atom/movable/screen/combattoggle/update_overlays()
. = ..()
var/mob/living/carbon/user = hud?.mymob
if(!(user?.client))
diff --git a/code/datums/components/crafting/crafting.dm b/code/datums/components/crafting/crafting.dm
index 147dd287ca..3ed3e521e4 100644
--- a/code/datums/components/crafting/crafting.dm
+++ b/code/datums/components/crafting/crafting.dm
@@ -5,10 +5,10 @@
/datum/component/personal_crafting/proc/create_mob_button(mob/user, client/CL)
var/datum/hud/H = user.hud_used
for(var/huds in H.static_inventory)
- if(istype(huds, /obj/screen/craft))
+ if(istype(huds, /atom/movable/screen/craft))
return
//We don't want to be stacking multiple crafting huds on relogs
- var/obj/screen/craft/C = new()
+ var/atom/movable/screen/craft/C = new()
C.icon = H.ui_style
H.static_inventory += C
CL.screen += C
@@ -323,7 +323,7 @@
Deletion.Cut(Deletion.len)
qdel(DL)
-/datum/component/personal_crafting/proc/component_ui_interact(obj/screen/craft/image, location, control, params, user)
+/datum/component/personal_crafting/proc/component_ui_interact(atom/movable/screen/craft/image, location, control, params, user)
if(user == parent)
ui_interact(user)
diff --git a/code/datums/components/embedded.dm b/code/datums/components/embedded.dm
index eca38fee34..dcbf40a16b 100644
--- a/code/datums/components/embedded.dm
+++ b/code/datums/components/embedded.dm
@@ -142,7 +142,7 @@
if(harmful)
victim.visible_message("[weapon] embeds itself in [victim]'s [limb.name]!",ignored_mobs=victim)
to_chat(victim, "[weapon] embeds itself in your [limb.name]!")
- victim.throw_alert("embeddedobject", /obj/screen/alert/embeddedobject)
+ victim.throw_alert("embeddedobject", /atom/movable/screen/alert/embeddedobject)
playsound(victim,'sound/weapons/bladeslice.ogg', 40)
weapon.add_mob_blood(victim)//it embedded itself in you, of course it's bloody!
damage = weapon.w_class * impact_pain_mult
diff --git a/code/datums/components/mood.dm b/code/datums/components/mood.dm
index 359c97c507..e100326f7b 100644
--- a/code/datums/components/mood.dm
+++ b/code/datums/components/mood.dm
@@ -13,7 +13,7 @@
var/mood_modifier = 1 //Modifier to allow certain mobs to be less affected by moodlets
var/list/datum/mood_event/mood_events = list()
var/insanity_effect = 0 //is the owner being punished for low mood? If so, how much?
- var/obj/screen/mood/screen_obj
+ var/atom/movable/screen/mood/screen_obj
var/datum/skill_modifier/bad_mood/malus
var/datum/skill_modifier/great_mood/bonus
var/static/malus_id = 0
diff --git a/code/datums/components/storage/storage.dm b/code/datums/components/storage/storage.dm
index cf0b3d6920..752fafe6bd 100644
--- a/code/datums/components/storage/storage.dm
+++ b/code/datums/components/storage/storage.dm
@@ -435,15 +435,15 @@
RevenantThrow(over_object, M, source)
return
if(!M.incapacitated())
- if(!istype(over_object, /obj/screen))
+ if(!istype(over_object, /atom/movable/screen))
dump_content_at(over_object, M)
return
if(A.loc != M)
return
playsound(A, "rustle", 50, 1, -5)
A.do_jiggle()
- if(istype(over_object, /obj/screen/inventory/hand))
- var/obj/screen/inventory/hand/H = over_object
+ if(istype(over_object, /atom/movable/screen/inventory/hand))
+ var/atom/movable/screen/inventory/hand/H = over_object
M.putItemFromInventoryInHandIfPossible(A, H.held_index)
return
A.add_fingerprint(M)
diff --git a/code/datums/components/storage/ui.dm b/code/datums/components/storage/ui.dm
index 044afa2850..820d7067d4 100644
--- a/code/datums/components/storage/ui.dm
+++ b/code/datums/components/storage/ui.dm
@@ -20,8 +20,8 @@
. = list()
var/list/accessible_contents = accessible_items()
var/adjusted_contents = length(accessible_contents)
- var/obj/screen/storage/close/ui_close
- var/obj/screen/storage/boxes/ui_boxes
+ var/atom/movable/screen/storage/close/ui_close
+ var/atom/movable/screen/storage/boxes/ui_boxes
//Numbered contents display
var/list/datum/numbered_display/numbered_contents
@@ -62,7 +62,7 @@
for(var/obj/O in accessible_items())
if(QDELETED(O))
continue
- var/obj/screen/storage/item_holder/D = new(null, src, O)
+ var/atom/movable/screen/storage/item_holder/D = new(null, src, O)
D.mouse_opacity = MOUSE_OPACITY_OPAQUE //This is here so storage items that spawn with contents correctly have the "click around item to equip"
D.screen_loc = "[cx]:[screen_pixel_x],[cy]:[screen_pixel_y]"
O.maptext = ""
@@ -81,9 +81,9 @@
*/
/datum/component/storage/proc/orient2hud_volumetric(mob/user, maxcolumns)
. = list()
- var/obj/screen/storage/left/ui_left
- var/obj/screen/storage/continuous/ui_continuous
- var/obj/screen/storage/close/ui_close
+ var/atom/movable/screen/storage/left/ui_left
+ var/atom/movable/screen/storage/continuous/ui_continuous
+ var/atom/movable/screen/storage/close/ui_close
// Generate ui_item_blocks for missing ones and render+orient.
var/list/atom/contents = accessible_items()
@@ -137,7 +137,7 @@
for(var/i in percentage_by_item)
I = i
var/percent = percentage_by_item[I]
- var/obj/screen/storage/volumetric_box/center/B = new /obj/screen/storage/volumetric_box/center(null, src, I)
+ var/atom/movable/screen/storage/volumetric_box/center/B = new /atom/movable/screen/storage/volumetric_box/center(null, src, I)
var/pixels_to_use = overrun? MINIMUM_PIXELS_PER_ITEM : max(using_horizontal_pixels * percent, MINIMUM_PIXELS_PER_ITEM)
var/addrow = FALSE
if(CEILING(pixels_to_use, 1) >= FLOOR(horizontal_pixels - current_pixel - VOLUMETRIC_STORAGE_EDGE_PADDING, 1))
@@ -255,22 +255,22 @@
* Gets our ui_boxes, making it if it doesn't exist.
*/
/datum/component/storage/proc/get_ui_boxes()
- return new /obj/screen/storage/boxes(null, src)
+ return new /atom/movable/screen/storage/boxes(null, src)
/**
* Gets our ui_left, making it if it doesn't exist.
*/
/datum/component/storage/proc/get_ui_left()
- return new /obj/screen/storage/left(null, src)
+ return new /atom/movable/screen/storage/left(null, src)
/**
* Gets our ui_close, making it if it doesn't exist.
*/
/datum/component/storage/proc/get_ui_close()
- return new /obj/screen/storage/close(null, src)
+ return new /atom/movable/screen/storage/close(null, src)
/**
* Gets our ui_continuous, making it if it doesn't exist.
*/
/datum/component/storage/proc/get_ui_continuous()
- return new /obj/screen/storage/continuous(null, src)
+ return new /atom/movable/screen/storage/continuous(null, src)
diff --git a/code/datums/components/tackle.dm b/code/datums/components/tackle.dm
index 10ff5bda3d..911ca7ecbe 100644
--- a/code/datums/components/tackle.dm
+++ b/code/datums/components/tackle.dm
@@ -370,7 +370,7 @@
user.emote("scream")
user.gain_trauma(/datum/brain_trauma/severe/paralysis/spinesnapped) // oopsie indeed!
shake_camera(user, 7, 7)
- user.overlay_fullscreen("flash", /obj/screen/fullscreen/flash)
+ user.overlay_fullscreen("flash", /atom/movable/screen/fullscreen/flash)
user.clear_fullscreen("flash", 4.5)
if(94 to 98)
@@ -381,7 +381,7 @@
user.gain_trauma_type(BRAIN_TRAUMA_MILD)
user.playsound_local(get_turf(user), 'sound/weapons/flashbang.ogg', 100, TRUE, 8, 0.9)
shake_camera(user, 6, 6)
- user.overlay_fullscreen("flash", /obj/screen/fullscreen/flash)
+ user.overlay_fullscreen("flash", /atom/movable/screen/fullscreen/flash)
user.clear_fullscreen("flash", 3.5)
if(84 to 93)
@@ -394,7 +394,7 @@
user.playsound_local(get_turf(user), 'sound/weapons/flashbang.ogg', 100, TRUE, 8, 0.9)
user.DefaultCombatKnockdown(40)
shake_camera(user, 5, 5)
- user.overlay_fullscreen("flash", /obj/screen/fullscreen/flash)
+ user.overlay_fullscreen("flash", /atom/movable/screen/fullscreen/flash)
user.clear_fullscreen("flash", 2.5)
if(64 to 83)
diff --git a/code/datums/mutable_appearance.dm b/code/datums/mutable_appearance.dm
index 31023b3fc7..968809747b 100644
--- a/code/datums/mutable_appearance.dm
+++ b/code/datums/mutable_appearance.dm
@@ -10,11 +10,14 @@
// And yes this does have to be in the constructor, BYOND ignores it if you set it as a normal var
// Helper similar to image()
-/proc/mutable_appearance(icon, icon_state = "", layer = FLOAT_LAYER, plane = FLOAT_PLANE, color = "#FFFFFF")
+/proc/mutable_appearance(icon, icon_state = "", layer = FLOAT_LAYER, plane = FLOAT_PLANE, alpha = 255, appearance_flags = NONE, color = "#FFFFFF")
var/mutable_appearance/MA = new()
MA.icon = icon
MA.icon_state = icon_state
MA.layer = layer
MA.plane = plane
+ MA.alpha = alpha
+ MA.appearance_flags |= appearance_flags
MA.color = color
return MA
+
diff --git a/code/datums/numbered_display.dm b/code/datums/numbered_display.dm
index fc2035b39f..b714be23fb 100644
--- a/code/datums/numbered_display.dm
+++ b/code/datums/numbered_display.dm
@@ -6,5 +6,5 @@
/datum/numbered_display/New(obj/item/sample, _number = 1, datum/component/storage/parent)
if(!istype(sample))
qdel(src)
- sample_object = new /obj/screen/storage/item_holder(null, parent, sample)
+ sample_object = new /atom/movable/screen/storage/item_holder(null, parent, sample)
number = _number
diff --git a/code/datums/status_effects/buffs.dm b/code/datums/status_effects/buffs.dm
index bf910b3944..ae05134b56 100644
--- a/code/datums/status_effects/buffs.dm
+++ b/code/datums/status_effects/buffs.dm
@@ -3,9 +3,9 @@
/datum/status_effect/shadow_mend
id = "shadow_mend"
duration = 30
- alert_type = /obj/screen/alert/status_effect/shadow_mend
+ alert_type = /atom/movable/screen/alert/status_effect/shadow_mend
-/obj/screen/alert/status_effect/shadow_mend
+/atom/movable/screen/alert/status_effect/shadow_mend
name = "Shadow Mend"
desc = "Shadowy energies wrap around your wounds, sealing them at a price. After healing, you will slowly lose health every three seconds for thirty seconds."
icon_state = "shadow_mend"
@@ -29,9 +29,9 @@
id = "void_price"
duration = 300
tick_interval = 30
- alert_type = /obj/screen/alert/status_effect/void_price
+ alert_type = /atom/movable/screen/alert/status_effect/void_price
-/obj/screen/alert/status_effect/void_price
+/atom/movable/screen/alert/status_effect/void_price
name = "Void Price"
desc = "Black tendrils cinch tightly against you, digging wicked barbs into your flesh."
icon_state = "shadow_mend"
@@ -46,17 +46,17 @@
duration = 200
tick_interval = 0 //tick as fast as possible
status_type = STATUS_EFFECT_REPLACE
- alert_type = /obj/screen/alert/status_effect/vanguard
+ alert_type = /atom/movable/screen/alert/status_effect/vanguard
var/datum/progressbar/progbar
var/stamhealed = 0 //How much stamina did we regenerate?
-/obj/screen/alert/status_effect/vanguard
+/atom/movable/screen/alert/status_effect/vanguard
name = "Vanguard"
desc = "You're absorbing stuns aswell as quickly regenerating stamina, but be careful: 50% of stamina restored and 25% of stuns absorbed will affect you after this effect ends."
icon_state = "vanguard"
alerttooltipstyle = "clockcult"
-/obj/screen/alert/status_effect/vanguard/MouseEntered(location,control,params)
+/atom/movable/screen/alert/status_effect/vanguard/MouseEntered(location,control,params)
var/mob/living/L = usr
var/datum/status_effect/vanguard_shield/E = attached_effect
if(istype(L)) //this is probably more safety than actually needed
@@ -118,9 +118,9 @@
/datum/status_effect/inathneqs_endowment
id = "inathneqs_endowment"
duration = 150
- alert_type = /obj/screen/alert/status_effect/inathneqs_endowment
+ alert_type = /atom/movable/screen/alert/status_effect/inathneqs_endowment
-/obj/screen/alert/status_effect/inathneqs_endowment
+/atom/movable/screen/alert/status_effect/inathneqs_endowment
name = "Inath-neq's Endowment"
desc = "Adrenaline courses through you as the Resonant Cogwheel's energy shields you from all harm!"
icon_state = "inathneqs_endowment"
@@ -149,7 +149,7 @@
/datum/status_effect/cyborg_power_regen
id = "power_regen"
duration = 100
- alert_type = /obj/screen/alert/status_effect/power_regen
+ alert_type = /atom/movable/screen/alert/status_effect/power_regen
var/power_to_give = 0 //how much power is gained each tick
/datum/status_effect/cyborg_power_regen/on_creation(mob/living/new_owner, new_power_per_tick)
@@ -157,7 +157,7 @@
if(. && isnum(new_power_per_tick))
power_to_give = new_power_per_tick
-/obj/screen/alert/status_effect/power_regen
+/atom/movable/screen/alert/status_effect/power_regen
name = "Power Regeneration"
desc = "You are quickly regenerating power!"
icon_state = "power_regen"
@@ -174,16 +174,16 @@
id = "his_grace"
duration = -1
tick_interval = 4
- alert_type = /obj/screen/alert/status_effect/his_grace
+ alert_type = /atom/movable/screen/alert/status_effect/his_grace
var/bloodlust = 0
-/obj/screen/alert/status_effect/his_grace
+/atom/movable/screen/alert/status_effect/his_grace
name = "His Grace"
desc = "His Grace hungers, and you must feed Him."
icon_state = "his_grace"
alerttooltipstyle = "hisgrace"
-/obj/screen/alert/status_effect/his_grace/MouseEntered(location,control,params)
+/atom/movable/screen/alert/status_effect/his_grace/MouseEntered(location,control,params)
desc = initial(desc)
var/datum/status_effect/his_grace/HG = attached_effect
desc += "
Current Bloodthirst: [HG.bloodlust]\
@@ -225,7 +225,7 @@
/datum/status_effect/wish_granters_gift //Fully revives after ten seconds.
id = "wish_granters_gift"
duration = 50
- alert_type = /obj/screen/alert/status_effect/wish_granters_gift
+ alert_type = /atom/movable/screen/alert/status_effect/wish_granters_gift
/datum/status_effect/wish_granters_gift/on_apply()
to_chat(owner, "Death is not your end! The Wish Granter's energy suffuses you, and you begin to rise...")
@@ -236,7 +236,7 @@
owner.revive(full_heal = TRUE, admin_revive = TRUE)
owner.visible_message("[owner] appears to wake from the dead, having healed all wounds!", "You have regenerated.")
-/obj/screen/alert/status_effect/wish_granters_gift
+/atom/movable/screen/alert/status_effect/wish_granters_gift
name = "Wish Granter's Immortality"
desc = "You are being resurrected!"
icon_state = "wish_granter"
@@ -274,7 +274,7 @@
id = "blooddrunk"
duration = 10
tick_interval = 0
- alert_type = /obj/screen/alert/status_effect/blooddrunk
+ alert_type = /atom/movable/screen/alert/status_effect/blooddrunk
var/last_health = 0
var/last_bruteloss = 0
var/last_fireloss = 0
@@ -283,7 +283,7 @@
var/last_cloneloss = 0
var/last_staminaloss = 0
-/obj/screen/alert/status_effect/blooddrunk
+/atom/movable/screen/alert/status_effect/blooddrunk
name = "Blood-Drunk"
desc = "You are drunk on blood! Your pulse thunders in your ears! Nothing can harm you!" //not true, and the item description mentions its actual effect
icon_state = "blooddrunk"
@@ -430,7 +430,7 @@
/datum/status_effect/fleshmend
id = "fleshmend"
duration = 100
- alert_type = /obj/screen/alert/status_effect/fleshmend
+ alert_type = /atom/movable/screen/alert/status_effect/fleshmend
/datum/status_effect/fleshmend/tick()
if(owner.on_fire)
@@ -453,7 +453,7 @@
QDEL_LIST(C.all_scars)
-/obj/screen/alert/status_effect/fleshmend
+/atom/movable/screen/alert/status_effect/fleshmend
name = "Fleshmend"
desc = "Our wounds are rapidly healing. This effect is prevented if we are on fire."
icon_state = "fleshmend"
@@ -562,7 +562,7 @@
var/mob/living/simple_animal/SM = L
SM.adjustHealth(-3.5, forced = TRUE)
-/obj/screen/alert/status_effect/regenerative_core
+/atom/movable/screen/alert/status_effect/regenerative_core
name = "Reinforcing Tendrils"
desc = "You can move faster than your broken body could normally handle!"
icon_state = "regenerative_core"
@@ -572,7 +572,7 @@
id = "Regenerative Core"
duration = 1 MINUTES
status_type = STATUS_EFFECT_REPLACE
- alert_type = /obj/screen/alert/status_effect/regenerative_core
+ alert_type = /atom/movable/screen/alert/status_effect/regenerative_core
var/heal_amount = 25
/datum/status_effect/regenerative_core/on_apply()
@@ -597,9 +597,9 @@
id = "Anatomic Panacea"
duration = 100
tick_interval = 10
- alert_type = /obj/screen/alert/status_effect/panacea
+ alert_type = /atom/movable/screen/alert/status_effect/panacea
-/obj/screen/alert/status_effect/panacea
+/atom/movable/screen/alert/status_effect/panacea
name = "Panacea"
desc = "We purge the impurities from our body."
icon_state = "panacea"
@@ -774,7 +774,7 @@
status_type = STATUS_EFFECT_REFRESH
duration = 15 SECONDS
examine_text = "They don't seem to be all here."
- alert_type = /obj/screen/alert/status_effect/crucible_soul
+ alert_type = /atom/movable/screen/alert/status_effect/crucible_soul
var/turf/location
/datum/status_effect/crucible_soul/on_apply()
@@ -796,7 +796,7 @@
id = "Blessing of Dusk and Dawn"
status_type = STATUS_EFFECT_REFRESH
duration = 60 SECONDS
- alert_type =/obj/screen/alert/status_effect/duskndawn
+ alert_type =/atom/movable/screen/alert/status_effect/duskndawn
/datum/status_effect/duskndawn/on_apply()
. = ..()
@@ -813,7 +813,7 @@
status_type = STATUS_EFFECT_REFRESH
duration = 60 SECONDS
tick_interval = 1 SECONDS
- alert_type = /obj/screen/alert/status_effect/marshal
+ alert_type = /atom/movable/screen/alert/status_effect/marshal
/datum/status_effect/marshal/on_apply()
. = ..()
@@ -849,17 +849,17 @@
carbie.blood_volume += carbie.blood_volume >= BLOOD_VOLUME_NORMAL ? 0 : heal_amt*3
-/obj/screen/alert/status_effect/crucible_soul
+/atom/movable/screen/alert/status_effect/crucible_soul
name = "Blessing of Crucible Soul"
desc = "You phased through the reality, you are halfway to your final destination..."
icon_state = "crucible"
-/obj/screen/alert/status_effect/duskndawn
+/atom/movable/screen/alert/status_effect/duskndawn
name = "Blessing of Dusk and Dawn"
desc = "Many things hide beyond the horizon, with Owl's help i managed to slip past sun's guard and moon's watch."
icon_state = "duskndawn"
-/obj/screen/alert/status_effect/marshal
+/atom/movable/screen/alert/status_effect/marshal
name = "Blessing of Wounded Soldier"
desc = "Some people seek power through redemption, one thing many people don't know is that battle is the ultimate redemption and wounds let you bask in eternal glory."
icon_state = "wounded_soldier"
diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm
index ba5f2e1e18..d6cde67198 100644
--- a/code/datums/status_effects/debuffs.dm
+++ b/code/datums/status_effects/debuffs.dm
@@ -58,7 +58,7 @@
//SLEEPING
/datum/status_effect/incapacitating/sleeping
id = "sleeping"
- alert_type = /obj/screen/alert/status_effect/asleep
+ alert_type = /atom/movable/screen/alert/status_effect/asleep
needs_update_stat = TRUE
var/mob/living/carbon/carbon_owner
var/mob/living/carbon/human/human_owner
@@ -122,7 +122,7 @@
owner.remove_movespeed_modifier(/datum/movespeed_modifier/status_effect/off_balance)
return ..()
-/obj/screen/alert/status_effect/asleep
+/atom/movable/screen/alert/status_effect/asleep
name = "Asleep"
desc = "You've fallen asleep. Wait a bit and you should wake up. Unless you don't, considering how helpless you are."
icon_state = "asleep"
@@ -139,7 +139,7 @@
/datum/status_effect/mesmerize
id = "Mesmerize"
- alert_type = /obj/screen/alert/status_effect/mesmerized
+ alert_type = /atom/movable/screen/alert/status_effect/mesmerized
/datum/status_effect/mesmerize/on_creation(mob/living/new_owner, set_duration)
. = ..()
@@ -156,7 +156,7 @@
duration = set_duration
. = ..()
-/obj/screen/alert/status_effect/mesmerized
+/atom/movable/screen/alert/status_effect/mesmerized
name = "Mesmerized"
desc = "You can't tear your sight from who is in front of you... their gaze is simply too enthralling.."
icon = 'icons/mob/actions/bloodsucker.dmi'
@@ -222,9 +222,9 @@
id = "his_wrath"
duration = -1
tick_interval = 4
- alert_type = /obj/screen/alert/status_effect/his_wrath
+ alert_type = /atom/movable/screen/alert/status_effect/his_wrath
-/obj/screen/alert/status_effect/his_wrath
+/atom/movable/screen/alert/status_effect/his_wrath
name = "His Wrath"
desc = "You fled from His Grace instead of feeding Him, and now you suffer."
icon_state = "his_grace"
@@ -243,11 +243,11 @@
duration = 70
tick_interval = 0 //tick as fast as possible
status_type = STATUS_EFFECT_REPLACE
- alert_type = /obj/screen/alert/status_effect/belligerent
+ alert_type = /atom/movable/screen/alert/status_effect/belligerent
var/leg_damage_on_toggle = 2 //damage on initial application and when the owner tries to toggle to run
var/cultist_damage_on_toggle = 10 //damage on initial application and when the owner tries to toggle to run, but to cultists
-/obj/screen/alert/status_effect/belligerent
+/atom/movable/screen/alert/status_effect/belligerent
name = "Belligerent"
desc = "Kneel, her-eti'c."
icon_state = "belligerent"
@@ -768,7 +768,7 @@
/datum/status_effect/necropolis_curse/proc/apply_curse(set_curse)
curse_flags |= set_curse
if(curse_flags & CURSE_BLINDING)
- owner.overlay_fullscreen("curse", /obj/screen/fullscreen/curse, 1)
+ owner.overlay_fullscreen("curse", /atom/movable/screen/fullscreen/curse, 1)
/datum/status_effect/necropolis_curse/proc/remove_curse(remove_curse)
if(remove_curse & CURSE_BLINDING)
@@ -827,7 +827,7 @@
status_type = STATUS_EFFECT_UNIQUE
tick_interval = 5
duration = 100
- alert_type = /obj/screen/alert/status_effect/kindle
+ alert_type = /atom/movable/screen/alert/status_effect/kindle
var/old_health
var/old_oxyloss
@@ -856,7 +856,7 @@
owner.visible_message("The light in [owner]'s eyes fades!", \
"You snap out of your daze!")
-/obj/screen/alert/status_effect/kindle
+/atom/movable/screen/alert/status_effect/kindle
name = "Dazzling Lights"
desc = "Blinding light dances in your vision, stunning and silencing you. Any damage taken will shorten the light's effects!"
icon_state = "kindle"
@@ -869,7 +869,7 @@
status_type = STATUS_EFFECT_UNIQUE
duration = 600
examine_text = "SUBJECTPRONOUN is drenched in thick, blue ichor!"
- alert_type = /obj/screen/alert/status_effect/ichorial_stain
+ alert_type = /atom/movable/screen/alert/status_effect/ichorial_stain
/datum/status_effect/ichorial_stain/on_apply()
. = ..()
@@ -882,7 +882,7 @@
owner.visible_message("The blue ichor on [owner]'s body dries out!", \
"The ichor on your body is dry - you can now be revived by vitality matrices again!")
-/obj/screen/alert/status_effect/ichorial_stain
+/atom/movable/screen/alert/status_effect/ichorial_stain
name = "Ichorial Stain"
desc = "Your body is covered in blue ichor! You can't be revived by vitality matrices."
icon_state = "ichorial_stain"
@@ -908,7 +908,7 @@
/datum/status_effect/strandling //get it, strand as in durathread strand + strangling = strandling hahahahahahahahahahhahahaha i want to die
id = "strandling"
status_type = STATUS_EFFECT_UNIQUE
- alert_type = /obj/screen/alert/status_effect/strandling
+ alert_type = /atom/movable/screen/alert/status_effect/strandling
/datum/status_effect/strandling/on_apply()
ADD_TRAIT(owner, TRAIT_MAGIC_CHOKE, "dumbmoron")
@@ -918,13 +918,13 @@
REMOVE_TRAIT(owner, TRAIT_MAGIC_CHOKE, "dumbmoron")
return ..()
-/obj/screen/alert/status_effect/strandling
+/atom/movable/screen/alert/status_effect/strandling
name = "Choking strand"
desc = "A magical strand of Durathread is wrapped around your neck, preventing you from breathing! Click this icon to remove the strand."
icon_state = "his_grace"
alerttooltipstyle = "hisgrace"
-/obj/screen/alert/status_effect/strandling/Click(location, control, params)
+/atom/movable/screen/alert/status_effect/strandling/Click(location, control, params)
. = ..()
to_chat(mob_viewer, "You attempt to remove the durathread strand from around your neck.")
if(do_after(mob_viewer, 35, null, mob_viewer))
@@ -961,9 +961,9 @@
tick_interval = 10
examine_text = "SUBJECTPRONOUN seems slow and unfocused."
var/stun = TRUE
- alert_type = /obj/screen/alert/status_effect/trance
+ alert_type = /atom/movable/screen/alert/status_effect/trance
-/obj/screen/alert/status_effect/trance
+/atom/movable/screen/alert/status_effect/trance
name = "Trance"
desc = "Everything feels so distant, and you can feel your thoughts forming loops inside your head..."
icon_state = "high"
@@ -1069,7 +1069,7 @@
id = "dna_melt"
duration = 600
status_type = STATUS_EFFECT_REPLACE
- alert_type = /obj/screen/alert/status_effect/dna_melt
+ alert_type = /atom/movable/screen/alert/status_effect/dna_melt
var/kill_either_way = FALSE //no amount of removing mutations is gonna save you now
/datum/status_effect/dna_melt/on_creation(mob/living/new_owner, set_duration, updating_canmove)
@@ -1084,7 +1084,7 @@
H.something_horrible(kill_either_way)
return ..()
-/obj/screen/alert/status_effect/dna_melt
+/atom/movable/screen/alert/status_effect/dna_melt
name = "Genetic Breakdown"
desc = "I don't feel so good. Your body can't handle the mutations! You have one minute to remove your mutations, or you will be met with a horrible fate."
icon_state = "dna_melt"
diff --git a/code/datums/status_effects/gas.dm b/code/datums/status_effects/gas.dm
index d3d39e625a..26881fe94c 100644
--- a/code/datums/status_effects/gas.dm
+++ b/code/datums/status_effects/gas.dm
@@ -2,11 +2,11 @@
id = "frozen"
duration = 100
status_type = STATUS_EFFECT_UNIQUE
- alert_type = /obj/screen/alert/status_effect/freon
+ alert_type = /atom/movable/screen/alert/status_effect/freon
var/icon/cube
var/can_melt = TRUE
-/obj/screen/alert/status_effect/freon
+/atom/movable/screen/alert/status_effect/freon
name = "Frozen Solid"
desc = "You're frozen inside an ice cube, and cannot move! You can still do stuff, like shooting. Resist out of the cube!"
icon_state = "frozen"
diff --git a/code/datums/status_effects/neutral.dm b/code/datums/status_effects/neutral.dm
index 5f59359193..2c274802b4 100644
--- a/code/datums/status_effects/neutral.dm
+++ b/code/datums/status_effects/neutral.dm
@@ -48,7 +48,7 @@
get_kill()
return ..()
-/obj/screen/alert/status_effect/in_love
+/atom/movable/screen/alert/status_effect/in_love
name = "In Love"
desc = "You feel so wonderfully in love!"
icon_state = "in_love"
@@ -57,7 +57,7 @@
id = "in_love"
duration = -1
status_type = STATUS_EFFECT_UNIQUE
- alert_type = /obj/screen/alert/status_effect/in_love
+ alert_type = /atom/movable/screen/alert/status_effect/in_love
var/mob/living/date
/datum/status_effect/in_love/on_creation(mob/living/new_owner, mob/living/love_interest)
diff --git a/code/datums/status_effects/status_effect.dm b/code/datums/status_effects/status_effect.dm
index 6d0c62a8b2..fe605ba4a6 100644
--- a/code/datums/status_effects/status_effect.dm
+++ b/code/datums/status_effects/status_effect.dm
@@ -12,10 +12,10 @@
var/mob/living/owner //The mob affected by the status effect.
var/on_remove_on_mob_delete = FALSE //if we call on_remove() when the mob is deleted
var/examine_text //If defined, this text will appear when the mob is examined - to use he, she etc. use "SUBJECTPRONOUN" and replace it in the examines themselves
- var/alert_type = /obj/screen/alert/status_effect //the alert thrown by the status effect, contains name and description
+ var/alert_type = /atom/movable/screen/alert/status_effect //the alert thrown by the status effect, contains name and description
/// If this is TRUE, the user will have sprint forcefully disabled while this is active.
var/blocks_sprint = FALSE
- var/obj/screen/alert/status_effect/linked_alert = null //the alert itself, if it exists
+ var/atom/movable/screen/alert/status_effect/linked_alert = null //the alert itself, if it exists
/// How many of the effect can be on one mob, and what happens when you try to add another
var/status_type = STATUS_EFFECT_UNIQUE
@@ -34,7 +34,7 @@
duration = world.time + duration
next_tick = world.time + tick_interval
if(alert_type)
- var/obj/screen/alert/status_effect/A = owner.throw_alert(id, alert_type)
+ var/atom/movable/screen/alert/status_effect/A = owner.throw_alert(id, alert_type)
A.attached_effect = src //so the alert can reference us, if it needs to
linked_alert = A //so we can reference the alert, if we need to
START_PROCESSING(SSstatus_effects, src)
@@ -100,7 +100,7 @@
// ALERT HOOK //
////////////////
-/obj/screen/alert/status_effect
+/atom/movable/screen/alert/status_effect
name = "Curse of Mundanity"
desc = "You don't feel any different..."
var/datum/status_effect/attached_effect
diff --git a/code/datums/status_effects/wound_effects.dm b/code/datums/status_effects/wound_effects.dm
index 2ead3e6e19..74fc55e95b 100644
--- a/code/datums/status_effects/wound_effects.dm
+++ b/code/datums/status_effects/wound_effects.dm
@@ -1,13 +1,13 @@
// The shattered remnants of your broken limbs fill you with determination!
-/obj/screen/alert/status_effect/determined
+/atom/movable/screen/alert/status_effect/determined
name = "Determined"
desc = "The serious wounds you've sustained have put your body into fight-or-flight mode! Now's the time to look for an exit!"
icon_state = "regenerative_core"
/datum/status_effect/determined
id = "determined"
- alert_type = /obj/screen/alert/status_effect/determined
+ alert_type = /atom/movable/screen/alert/status_effect/determined
/datum/status_effect/determined/on_apply()
. = ..()
@@ -21,7 +21,7 @@
id = "limp"
status_type = STATUS_EFFECT_REPLACE
tick_interval = 10
- alert_type = /obj/screen/alert/status_effect/limp
+ alert_type = /atom/movable/screen/alert/status_effect/limp
var/msg_stage = 0//so you dont get the most intense messages immediately
/// The left leg of the limping person
var/obj/item/bodypart/l_leg/left
@@ -49,7 +49,7 @@
UnregisterSignal(owner, list(COMSIG_MOVABLE_MOVED, COMSIG_CARBON_GAIN_WOUND, COMSIG_CARBON_LOSE_WOUND, COMSIG_CARBON_ATTACH_LIMB, COMSIG_CARBON_REMOVE_LIMB))
return ..()
-/obj/screen/alert/status_effect/limp
+/atom/movable/screen/alert/status_effect/limp
name = "Limping"
desc = "One or more of your legs has been wounded, slowing down steps with that leg! Get it fixed, or at least splinted!"
@@ -99,11 +99,11 @@
/////////////////////////
// wound alert
-/obj/screen/alert/status_effect/wound
+/atom/movable/screen/alert/status_effect/wound
name = "Wounded"
desc = "Your body has sustained serious damage, click here to inspect yourself."
-/obj/screen/alert/status_effect/wound/Click()
+/atom/movable/screen/alert/status_effect/wound/Click()
var/mob/living/carbon/C = usr
C.check_self_for_injuries()
diff --git a/code/datums/world_topic.dm b/code/datums/world_topic.dm
index 6b8d1c9ce5..679d2faf11 100644
--- a/code/datums/world_topic.dm
+++ b/code/datums/world_topic.dm
@@ -124,7 +124,7 @@
for(var/mob/dead/observer/O in GLOB.player_list)
if(O.key == expected_key)
if(O.client?.address == addr)
- new /obj/screen/splash(O.client, TRUE)
+ new /atom/movable/screen/splash(O.client, TRUE)
break
/datum/world_topic/adminmsg
diff --git a/code/datums/wounds/_wounds.dm b/code/datums/wounds/_wounds.dm
index 9c5a41de5d..6cab8818ee 100644
--- a/code/datums/wounds/_wounds.dm
+++ b/code/datums/wounds/_wounds.dm
@@ -136,7 +136,7 @@
SEND_SIGNAL(victim, COMSIG_CARBON_GAIN_WOUND, src, limb)
victim.emote("pain")
if(!victim.alerts["wound"]) // only one alert is shared between all of the wounds
- victim.throw_alert("wound", /obj/screen/alert/status_effect/wound)
+ victim.throw_alert("wound", /atom/movable/screen/alert/status_effect/wound)
var/demoted
if(old_wound)
diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm
index 2a21d72119..a28d558454 100644
--- a/code/game/area/areas.dm
+++ b/code/game/area/areas.dm
@@ -553,7 +553,7 @@ GLOBAL_LIST_EMPTY(teleportlocs)
A.power_equip = power_equip
A.power_environ = power_environ
INVOKE_ASYNC(A, .proc/power_change)
- update_icon()
+ update_appearance()
/area/proc/usage(chan)
switch(chan)
diff --git a/code/game/atoms.dm b/code/game/atoms.dm
index 65edf9c98e..48213279f1 100644
--- a/code/game/atoms.dm
+++ b/code/game/atoms.dm
@@ -103,6 +103,9 @@
/// A luminescence-shifted value of the last color calculated for chatmessage overlays
var/chat_color_darkened
+ ///Used for changing icon states for different base sprites.
+ var/base_icon_state
+
///Mobs that are currently do_after'ing this atom, to be cleared from on Destroy()
var/list/targeted_by
@@ -531,37 +534,75 @@
if(!LAZYLEN(.)) // lol ..length
return list("You examine [src] closer, but find nothing of interest...")
+/**
+ * Updates the appearence of the icon
+ *
+ * Mostly delegates to update_name, update_desc, and update_icon
+ *
+ * Arguments:
+ * - updates: A set of bitflags dictating what should be updated. Defaults to [ALL]
+ */
+/atom/proc/update_appearance(updates=ALL)
+ //SHOULD_NOT_SLEEP(TRUE)
+ //SHOULD_CALL_PARENT(TRUE)
+
+ . = NONE
+ updates &= ~SEND_SIGNAL(src, COMSIG_ATOM_UPDATE_APPEARANCE, updates)
+ if(updates & UPDATE_NAME)
+ . |= update_name(updates)
+ if(updates & UPDATE_DESC)
+ . |= update_desc(updates)
+ if(updates & UPDATE_ICON)
+ . |= update_icon(updates)
+
+/// Updates the name of the atom
+/atom/proc/update_name(updates=ALL)
+ //SHOULD_CALL_PARENT(TRUE)
+ return SEND_SIGNAL(src, COMSIG_ATOM_UPDATE_NAME, updates)
+
+/// Updates the description of the atom
+/atom/proc/update_desc(updates=ALL)
+ //SHOULD_CALL_PARENT(TRUE)
+ return SEND_SIGNAL(src, COMSIG_ATOM_UPDATE_DESC, updates)
+
/// Updates the icon of the atom
-/atom/proc/update_icon()
- // I expect we're going to need more return flags and options in this proc
- var/signalOut = SEND_SIGNAL(src, COMSIG_ATOM_UPDATE_ICON)
- . = FALSE
+/atom/proc/update_icon(updates=ALL)
+ SIGNAL_HANDLER
+ //SHOULD_CALL_PARENT(TRUE)
- if(!(signalOut & COMSIG_ATOM_NO_UPDATE_ICON_STATE))
+ . = NONE
+ updates &= ~SEND_SIGNAL(src, COMSIG_ATOM_UPDATE_ICON, updates)
+ if(updates & UPDATE_ICON_STATE)
update_icon_state()
- . = TRUE
+ . |= UPDATE_ICON_STATE
- if(!(signalOut & COMSIG_ATOM_NO_UPDATE_OVERLAYS))
- var/list/new_overlays = update_overlays()
+ if(updates & UPDATE_OVERLAYS)
+ if(LAZYLEN(managed_vis_overlays))
+ SSvis_overlays.remove_vis_overlay(src, managed_vis_overlays)
+
+ var/list/new_overlays = update_overlays(updates)
if(managed_overlays)
cut_overlay(managed_overlays)
managed_overlays = null
if(length(new_overlays))
managed_overlays = new_overlays
add_overlay(new_overlays)
- . = TRUE
+ . |= UPDATE_OVERLAYS
- SEND_SIGNAL(src, COMSIG_ATOM_UPDATED_ICON, signalOut, .)
+ . |= SEND_SIGNAL(src, COMSIG_ATOM_UPDATED_ICON, updates, .)
/// Updates the icon state of the atom
/atom/proc/update_icon_state()
+ //SHOULD_CALL_PARENT(TRUE)
+ return SEND_SIGNAL(src, COMSIG_ATOM_UPDATE_ICON_STATE)
/// Updates the overlays of the atom
/atom/proc/update_overlays()
- SHOULD_CALL_PARENT(TRUE)
+ //SHOULD_CALL_PARENT(TRUE)
. = list()
SEND_SIGNAL(src, COMSIG_ATOM_UPDATE_OVERLAYS, .)
+
/atom/proc/relaymove(mob/living/user)
if(!istype(user))
return //why are you buckling nonliving mobs to atoms?
diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm
index 155a462295..391d3b467d 100644
--- a/code/game/atoms_movable.dm
+++ b/code/game/atoms_movable.dm
@@ -66,7 +66,11 @@
. = ..()
switch(blocks_emissive)
if(EMISSIVE_BLOCK_GENERIC)
- update_emissive_block()
+ var/mutable_appearance/gen_emissive_blocker = mutable_appearance(icon, icon_state, plane = EMISSIVE_PLANE, alpha = src.alpha)
+ gen_emissive_blocker.color = GLOB.em_block_color
+ gen_emissive_blocker.dir = dir
+ gen_emissive_blocker.appearance_flags |= appearance_flags
+ add_overlay(list(gen_emissive_blocker))
if(EMISSIVE_BLOCK_UNIQUE)
render_target = ref(src)
em_block = new(src, render_target)
@@ -111,13 +115,23 @@
/atom/movable/proc/update_emissive_block()
if(blocks_emissive != EMISSIVE_BLOCK_GENERIC)
return
- if(length(managed_vis_overlays))
- for(var/a in managed_vis_overlays)
- var/obj/effect/overlay/vis/vs
- if(vs.plane == EMISSIVE_BLOCKER_PLANE)
- SSvis_overlays.remove_vis_overlay(src, list(vs))
- break
- SSvis_overlays.add_vis_overlay(src, icon, icon_state, EMISSIVE_BLOCKER_LAYER, EMISSIVE_BLOCKER_PLANE, dir)
+ else if (blocks_emissive == EMISSIVE_BLOCK_GENERIC)
+ var/mutable_appearance/gen_emissive_blocker = mutable_appearance(icon, icon_state, plane = EMISSIVE_PLANE, alpha = src.alpha)
+ gen_emissive_blocker.color = GLOB.em_block_color
+ gen_emissive_blocker.dir = dir
+ gen_emissive_blocker.appearance_flags |= appearance_flags
+ return gen_emissive_blocker
+ else if(blocks_emissive == EMISSIVE_BLOCK_UNIQUE)
+ if(!em_block)
+ render_target = ref(src)
+ em_block = new(src, render_target)
+ return em_block
+
+/atom/movable/update_overlays()
+ . = ..()
+ var/emissive_block = update_emissive_block()
+ if(emissive_block)
+ . += emissive_block
/atom/movable/proc/can_zFall(turf/source, levels = 1, turf/target, direction)
if(!direction)
diff --git a/code/game/machinery/_machinery.dm b/code/game/machinery/_machinery.dm
index 2ccf7d317d..133fec28b3 100644
--- a/code/game/machinery/_machinery.dm
+++ b/code/game/machinery/_machinery.dm
@@ -148,11 +148,15 @@ Class Procs:
START_PROCESSING(SSmachines, src)
else
START_PROCESSING(SSfastprocess, src)
- power_change()
RegisterSignal(src, COMSIG_ENTER_AREA, .proc/power_change)
if (occupant_typecache)
occupant_typecache = typecacheof(occupant_typecache)
+ return INITIALIZE_HINT_LATELOAD
+
+/obj/machinery/LateInitialize()
+ . = ..()
+ power_change()
/obj/machinery/Destroy()
GLOB.machines.Remove(src)
@@ -176,6 +180,17 @@ Class Procs:
/obj/machinery/proc/process_atmos()//If you dont use process why are you here
return PROCESS_KILL
+///Called when we want to change the value of the stat variable. Holds bitflags.
+/obj/machinery/proc/set_machine_stat(new_value)
+ if(new_value == stat)
+ return
+ . = stat
+ stat = new_value
+ on_machine_stat_update(stat)
+
+/obj/machinery/proc/on_machine_stat_update(stat)
+ return
+
/obj/machinery/emp_act(severity)
. = ..()
if(use_power && !stat && !(. & EMP_PROTECT_SELF))
@@ -383,8 +398,11 @@ Class Procs:
M.icon_state = "box_1"
/obj/machinery/obj_break(damage_flag)
- if(!(flags_1 & NODECONSTRUCT_1))
+ . = ..()
+ if(!(stat & BROKEN) && !(flags_1 & NODECONSTRUCT_1))
stat |= BROKEN
+ SEND_SIGNAL(src, COMSIG_MACHINERY_BROKEN, damage_flag)
+ update_appearance()
return TRUE
/obj/machinery/contents_explosion(severity, target)
diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm
index 7950d54ad3..35aa822a23 100644
--- a/code/game/machinery/camera/camera.dm
+++ b/code/game/machinery/camera/camera.dm
@@ -407,7 +407,7 @@
/obj/machinery/camera/get_remote_view_fullscreens(mob/user)
if(view_range == short_range) //unfocused
- user.overlay_fullscreen("remote_view", /obj/screen/fullscreen/impaired, 2)
+ user.overlay_fullscreen("remote_view", /atom/movable/screen/fullscreen/impaired, 2)
/obj/machinery/camera/update_remote_sight(mob/living/user)
user.see_invisible = SEE_INVISIBLE_LIVING //can't see ghosts through cameras
diff --git a/code/game/machinery/computer/_computer.dm b/code/game/machinery/computer/_computer.dm
index 0c628ba43e..a2d32e0d4f 100644
--- a/code/game/machinery/computer/_computer.dm
+++ b/code/game/machinery/computer/_computer.dm
@@ -57,8 +57,8 @@
var/overlay_state = icon_screen
if(stat & BROKEN)
overlay_state = "[icon_state]_broken"
- SSvis_overlays.add_vis_overlay(src, icon, overlay_state, layer, plane, dir)
- SSvis_overlays.add_vis_overlay(src, icon, overlay_state, EMISSIVE_LAYER, EMISSIVE_PLANE, dir, alpha=128)
+ . += mutable_appearance(icon, overlay_state)
+ . += emissive_appearance(icon, overlay_state)
/obj/machinery/computer/power_change()
..()
diff --git a/code/game/machinery/computer/camera.dm b/code/game/machinery/computer/camera.dm
index a62d2cd102..a6b774523c 100644
--- a/code/game/machinery/computer/camera.dm
+++ b/code/game/machinery/computer/camera.dm
@@ -16,10 +16,10 @@
// Stuff needed to render the map
var/map_name
- var/obj/screen/map_view/cam_screen
+ var/atom/movable/screen/map_view/cam_screen
/// All the plane masters that need to be applied.
var/list/cam_plane_masters
- var/obj/screen/background/cam_background
+ var/atom/movable/screen/background/cam_background
interaction_flags_machine = INTERACT_MACHINE_ALLOW_SILICON | INTERACT_MACHINE_SET_MACHINE //| INTERACT_MACHINE_REQUIRES_SIGHT
@@ -40,8 +40,8 @@
cam_screen.del_on_map_removal = FALSE
cam_screen.screen_loc = "[map_name]:1,1"
cam_plane_masters = list()
- for(var/plane in subtypesof(/obj/screen/plane_master))
- var/obj/screen/instance = new plane()
+ for(var/plane in subtypesof(/atom/movable/screen/plane_master))
+ var/atom/movable/screen/instance = new plane()
instance.assigned_map = map_name
instance.del_on_map_removal = FALSE
instance.screen_loc = "[map_name]:CENTER"
diff --git a/code/game/machinery/computer/camera_advanced.dm b/code/game/machinery/computer/camera_advanced.dm
index 7d2c851206..9d675bc5dd 100644
--- a/code/game/machinery/computer/camera_advanced.dm
+++ b/code/game/machinery/computer/camera_advanced.dm
@@ -275,7 +275,7 @@
if(final)
playsound(origin, 'sound/machines/terminal_prompt_confirm.ogg', 25, 0)
remote_eye.setLoc(get_turf(final))
- C.overlay_fullscreen("flash", /obj/screen/fullscreen/flash/static)
+ C.overlay_fullscreen("flash", /atom/movable/screen/fullscreen/flash/static)
C.clear_fullscreen("flash", 3) //Shorter flash than normal since it's an ~~advanced~~ console!
else
playsound(origin, 'sound/machines/terminal_prompt_deny.ogg', 25, 0)
diff --git a/code/game/machinery/computer/mechlaunchpad.dm b/code/game/machinery/computer/mechlaunchpad.dm
index 3489ee5d35..86c4a35799 100644
--- a/code/game/machinery/computer/mechlaunchpad.dm
+++ b/code/game/machinery/computer/mechlaunchpad.dm
@@ -123,7 +123,7 @@
var/list/this_pad = list()
this_pad["name"] = pad.display_name
this_pad["id"] = i
- if(pad.machine_stat & NOPOWER)
+ if(pad.stat & NOPOWER)
this_pad["inactive"] = TRUE
pad_list += list(this_pad)
else
@@ -135,7 +135,7 @@
var/obj/machinery/mechpad/current_pad = mechpads[selected_id]
data["pad_name"] = current_pad.display_name
data["selected_pad"] = current_pad
- if(QDELETED(current_pad) || (current_pad.machine_stat & NOPOWER))
+ if(QDELETED(current_pad) || (current_pad.stat & NOPOWER))
data["pad_active"] = FALSE
return data
data["pad_active"] = TRUE
diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm
index e874a2713c..9ff03cd387 100644
--- a/code/game/machinery/doors/door.dm
+++ b/code/game/machinery/doors/door.dm
@@ -9,6 +9,7 @@
layer = OPEN_DOOR_LAYER
power_channel = ENVIRON
max_integrity = 350
+ damage_deflection = 10
armor = list("melee" = 30, "bullet" = 30, "laser" = 20, "energy" = 20, "bomb" = 10, "bio" = 100, "rad" = 100, "fire" = 80, "acid" = 70)
CanAtmosPass = ATMOS_PASS_DENSITY
flags_1 = PREVENT_CLICK_UNDER_1|DEFAULT_RICOCHET_1
@@ -38,7 +39,7 @@
var/locked = FALSE //whether the door is bolted or not.
var/assemblytype //the type of door frame to drop during deconstruction
var/datum/effect_system/spark_spread/spark_system
- var/damage_deflection = 10
+
var/real_explosion_block //ignore this, just use explosion_block
var/red_alert_access = FALSE //if TRUE, this door will always open on red alert
var/poddoor = FALSE
@@ -223,11 +224,6 @@
return 1
return ..()
-/obj/machinery/door/run_obj_armor(damage_amount, damage_type, damage_flag = 0, attack_dir)
- if(damage_flag == "melee" && damage_amount < damage_deflection)
- return 0
- . = ..()
-
/obj/machinery/door/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir)
. = ..()
if(. && obj_integrity > 0)
diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm
index c6b29cf54c..229a2d98d8 100644
--- a/code/game/machinery/firealarm.dm
+++ b/code/game/machinery/firealarm.dm
@@ -79,23 +79,33 @@
if(is_station_level(z))
. += "fire_[GLOB.security_level]"
- SSvis_overlays.add_vis_overlay(src, icon, "fire_[GLOB.security_level]", EMISSIVE_LAYER, EMISSIVE_PLANE, dir)
+ . += mutable_appearance(icon, "fire_[GLOB.security_level]")
+ . += emissive_appearance(icon, "fire_[GLOB.security_level]")
else
. += "fire_[SEC_LEVEL_GREEN]"
- SSvis_overlays.add_vis_overlay(src, icon, "fire_[SEC_LEVEL_GREEN]", EMISSIVE_LAYER, EMISSIVE_PLANE, dir)
+ . += mutable_appearance(icon, "fire_[SEC_LEVEL_GREEN]")
+ . += emissive_appearance(icon, "fire_[SEC_LEVEL_GREEN]")
var/area/A = src.loc
A = A.loc
if(!detecting || !A.fire)
. += "fire_off"
- SSvis_overlays.add_vis_overlay(src, icon, "fire_off", EMISSIVE_LAYER, EMISSIVE_PLANE, dir)
+ . += mutable_appearance(icon, "fire_off")
+ . += emissive_appearance(icon, "fire_off")
else if(obj_flags & EMAGGED)
. += "fire_emagged"
- SSvis_overlays.add_vis_overlay(src, icon, "fire_emagged", EMISSIVE_LAYER, EMISSIVE_PLANE, dir)
+ . += mutable_appearance(icon, "fire_emagged")
+ . += emissive_appearance(icon, "fire_emagged")
else
. += "fire_on"
- SSvis_overlays.add_vis_overlay(src, icon, "fire_on", EMISSIVE_LAYER, EMISSIVE_PLANE, dir)
+ . += mutable_appearance(icon, "fire_on")
+ . += emissive_appearance(icon, "fire_on")
+
+ if(!panel_open && detecting) //It just looks horrible with the panel open
+ . += "fire_detected"
+ . += mutable_appearance(icon, "fire_detected")
+ . += emissive_appearance(icon, "fire_detected") //Pain
/obj/machinery/firealarm/emp_act(severity)
. = ..()
diff --git a/code/game/machinery/lightswitch.dm b/code/game/machinery/lightswitch.dm
index 421e3433ca..03d9dcee4b 100644
--- a/code/game/machinery/lightswitch.dm
+++ b/code/game/machinery/lightswitch.dm
@@ -1,52 +1,70 @@
-// the light switch
-// can have multiple per area
-// can also operate on non-loc area through "otherarea" var
+/// The light switch. Can have multiple per area.
/obj/machinery/light_switch
name = "light switch"
icon = 'icons/obj/power.dmi'
icon_state = "light1"
- plane = ABOVE_WALL_PLANE
+ base_icon_state = "light"
desc = "Make dark."
- var/on = TRUE
var/area/area = null
var/otherarea = null
+/obj/machinery/light_switch/directional/north
+ dir = SOUTH
+ pixel_y = 26
+
+/obj/machinery/light_switch/directional/south
+ dir = NORTH
+ pixel_y = -26
+
+/obj/machinery/light_switch/directional/east
+ dir = WEST
+ pixel_x = 26
+
+/obj/machinery/light_switch/directional/west
+ dir = EAST
+ pixel_x = -26
+
/obj/machinery/light_switch/Initialize()
. = ..()
- area = get_area(src)
-
+ if(istext(area))
+ area = text2path(area)
+ if(ispath(area))
+ area = GLOB.areas_by_type[area]
if(otherarea)
area = locate(text2path("/area/[otherarea]"))
+ if(!area)
+ area = get_area(src)
if(!name)
name = "light switch ([area.name])"
- on = area.lightswitch
- update_icon()
+/obj/machinery/light_switch/update_appearance(updates=ALL)
+ . = ..()
+ luminosity = (stat & NOPOWER) ? 0 : 1
/obj/machinery/light_switch/update_icon_state()
if(stat & NOPOWER)
- icon_state = "light-p"
- else
- if(on)
- icon_state = "light1"
- else
- icon_state = "light0"
+ icon_state = "[base_icon_state]-p"
+ return ..()
+ icon_state = "[base_icon_state][area.lightswitch ? 1 : 0]"
+ return ..()
+
+/obj/machinery/light_switch/update_overlays()
+ . = ..()
+ if(!(stat & NOPOWER))
+ . += emissive_appearance(icon, "[base_icon_state]-glow", alpha = src.alpha)
/obj/machinery/light_switch/examine(mob/user)
. = ..()
- . += "It is [on? "on" : "off"]."
-
+ . += "It is [area.lightswitch ? "on" : "off"]."
/obj/machinery/light_switch/interact(mob/user)
. = ..()
- on = !on
- area.lightswitch = on
- area.update_icon()
+ area.lightswitch = !area.lightswitch
+ area.update_appearance()
for(var/obj/machinery/light_switch/L in area)
- L.on = on
- L.update_icon()
+ L.update_appearance()
area.power_change()
@@ -58,7 +76,7 @@
else
stat |= NOPOWER
- update_icon()
+ update_appearance()
/obj/machinery/light_switch/emp_act(severity)
. = ..()
diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm
index 231075a27d..e346439e03 100644
--- a/code/game/machinery/porta_turret/portable_turret.dm
+++ b/code/game/machinery/porta_turret/portable_turret.dm
@@ -30,7 +30,7 @@
integrity_failure = 0.5
armor = list("melee" = 50, "bullet" = 30, "laser" = 30, "energy" = 30, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 90, "acid" = 90)
/// Base turret icon state
- var/base_icon_state = "standard"
+ base_icon_state = "standard"
/// Scan range of the turret for locating targets
var/scan_range = 7
/// For turrets inside other objects
diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm
index aad011119f..62696a0853 100755
--- a/code/game/machinery/recharger.dm
+++ b/code/game/machinery/recharger.dm
@@ -2,6 +2,7 @@
name = "recharger"
icon = 'icons/obj/stationobjs.dmi'
icon_state = "recharger0"
+ base_icon_state = "recharger"
desc = "A charging dock for energy based weaponry."
use_power = IDLE_POWER_USE
idle_power_usage = 4
@@ -187,16 +188,29 @@
if(B.cell)
B.cell.charge = 0
+/obj/machinery/recharger/update_appearance(updates)
+ . = ..()
+ if((stat & (NOPOWER|BROKEN)) || panel_open || !anchored)
+ luminosity = 0
+ return
+ luminosity = 1
-/obj/machinery/recharger/update_icon_state()
+/obj/machinery/recharger/update_overlays()
+ . = ..()
if(stat & (NOPOWER|BROKEN) || !anchored)
- icon_state = "rechargeroff"
- else if(panel_open)
- icon_state = "rechargeropen"
- else if(charging)
- if(using_power)
- icon_state = "recharger1"
- else
- icon_state = "recharger2"
- else
- icon_state = "recharger0"
+ return
+ if(panel_open)
+ . += mutable_appearance(icon, "[base_icon_state]-open", alpha = src.alpha)
+ return
+
+ if(!charging)
+ . += mutable_appearance(icon, "[base_icon_state]-empty", alpha = src.alpha)
+ . += emissive_appearance(icon, "[base_icon_state]-empty", alpha = src.alpha)
+ return
+ if(using_power)
+ . += mutable_appearance(icon, "[base_icon_state]-charging", alpha = src.alpha)
+ . += emissive_appearance(icon, "[base_icon_state]-charging", alpha = src.alpha)
+ return
+
+ . += mutable_appearance(icon, "[base_icon_state]-full", alpha = src.alpha)
+ . += emissive_appearance(icon, "[base_icon_state]-full", alpha = src.alpha)
diff --git a/code/game/mecha/equipment/weapons/mecha_ammo.dm b/code/game/mecha/equipment/weapons/mecha_ammo.dm
index 83a85ffcba..3253e6cbd6 100644
--- a/code/game/mecha/equipment/weapons/mecha_ammo.dm
+++ b/code/game/mecha/equipment/weapons/mecha_ammo.dm
@@ -12,7 +12,7 @@
var/load_audio = "sound/weapons/gun_magazine_insert_empty_1.ogg"
var/ammo_type
-/obj/item/mecha_ammo/proc/update_name()
+/obj/item/mecha_ammo/update_name()
if(!rounds)
name = "empty ammo box"
desc = "An exosuit ammuniton box that has since been emptied. Please recycle."
diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm
index f8b462961b..86bbf81dd2 100644
--- a/code/game/mecha/mecha.dm
+++ b/code/game/mecha/mecha.dm
@@ -357,22 +357,22 @@
if(0.75 to INFINITY)
occupant.clear_alert("charge")
if(0.5 to 0.75)
- occupant.throw_alert("charge", /obj/screen/alert/lowcell, 1)
+ occupant.throw_alert("charge", /atom/movable/screen/alert/lowcell, 1)
if(0.25 to 0.5)
- occupant.throw_alert("charge", /obj/screen/alert/lowcell, 2)
+ occupant.throw_alert("charge", /atom/movable/screen/alert/lowcell, 2)
if(0.01 to 0.25)
- occupant.throw_alert("charge", /obj/screen/alert/lowcell, 3)
+ occupant.throw_alert("charge", /atom/movable/screen/alert/lowcell, 3)
else
- occupant.throw_alert("charge", /obj/screen/alert/emptycell)
+ occupant.throw_alert("charge", /atom/movable/screen/alert/emptycell)
var/integrity = obj_integrity/max_integrity*100
switch(integrity)
if(30 to 45)
- occupant.throw_alert("mech damage", /obj/screen/alert/low_mech_integrity, 1)
+ occupant.throw_alert("mech damage", /atom/movable/screen/alert/low_mech_integrity, 1)
if(15 to 35)
- occupant.throw_alert("mech damage", /obj/screen/alert/low_mech_integrity, 2)
+ occupant.throw_alert("mech damage", /atom/movable/screen/alert/low_mech_integrity, 2)
if(-INFINITY to 15)
- occupant.throw_alert("mech damage", /obj/screen/alert/low_mech_integrity, 3)
+ occupant.throw_alert("mech damage", /atom/movable/screen/alert/low_mech_integrity, 3)
else
occupant.clear_alert("mech damage")
var/atom/checking = occupant.loc
diff --git a/code/game/objects/buckling.dm b/code/game/objects/buckling.dm
index 27b0aa4e66..afc4312779 100644
--- a/code/game/objects/buckling.dm
+++ b/code/game/objects/buckling.dm
@@ -73,7 +73,7 @@
M.setDir(dir)
buckled_mobs |= M
M.update_mobility()
- M.throw_alert("buckled", /obj/screen/alert/restrained/buckled)
+ M.throw_alert("buckled", /atom/movable/screen/alert/restrained/buckled)
post_buckle_mob(M)
SEND_SIGNAL(src, COMSIG_MOVABLE_BUCKLE, M, force)
diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm
index ee65bd5c96..0570de6bcf 100644
--- a/code/game/objects/items/defib.dm
+++ b/code/game/objects/items/defib.dm
@@ -99,8 +99,8 @@
. = ..()
if(!. && ismob(loc) && loc == usr)
var/mob/M = loc
- if(!M.incapacitated() && istype(over_object, /obj/screen/inventory/hand))
- var/obj/screen/inventory/hand/H = over_object
+ if(!M.incapacitated() && istype(over_object, /atom/movable/screen/inventory/hand))
+ var/atom/movable/screen/inventory/hand/H = over_object
M.putItemFromInventoryInHandIfPossible(src, H.held_index)
/obj/item/defibrillator/attackby(obj/item/W, mob/user, params)
@@ -283,7 +283,7 @@
var/combat = FALSE //If it penetrates armor and gives additional functionality
var/grab_ghost = FALSE
var/tlimit = DEFIB_TIME_LIMIT * 10
- var/base_icon_state = "defibpaddles"
+ base_icon_state = "defibpaddles"
var/disarm_shock_time = 10
var/wielded = FALSE // track wielded status on item
diff --git a/code/game/objects/items/devices/multitool.dm b/code/game/objects/items/devices/multitool.dm
index 5177224835..1e43f0f883 100644
--- a/code/game/objects/items/devices/multitool.dm
+++ b/code/game/objects/items/devices/multitool.dm
@@ -184,7 +184,7 @@
/obj/item/multitool/ai_detect/proc/show_hud(mob/user)
if(user && hud_type)
- var/obj/screen/plane_master/camera_static/PM = user.hud_used.plane_masters["[CAMERA_STATIC_PLANE]"]
+ var/atom/movable/screen/plane_master/camera_static/PM = user.hud_used.plane_masters["[CAMERA_STATIC_PLANE]"]
PM.alpha = 150
var/datum/atom_hud/H = GLOB.huds[hud_type]
if(!H.hudusers[user])
@@ -194,7 +194,7 @@
/obj/item/multitool/ai_detect/proc/remove_hud(mob/user)
if(user && hud_type)
- var/obj/screen/plane_master/camera_static/PM = user.hud_used.plane_masters["[CAMERA_STATIC_PLANE]"]
+ var/atom/movable/screen/plane_master/camera_static/PM = user.hud_used.plane_masters["[CAMERA_STATIC_PLANE]"]
PM.alpha = 255
var/datum/atom_hud/H = GLOB.huds[hud_type]
H.remove_hud_from(user)
diff --git a/code/game/objects/items/devices/portable_chem_mixer.dm b/code/game/objects/items/devices/portable_chem_mixer.dm
index 3e1b20cfc2..c773699b1d 100644
--- a/code/game/objects/items/devices/portable_chem_mixer.dm
+++ b/code/game/objects/items/devices/portable_chem_mixer.dm
@@ -130,8 +130,8 @@
. = ..()
if(ismob(loc))
var/mob/M = loc
- if(!M.incapacitated() && istype(over_object, /obj/screen/inventory/hand))
- var/obj/screen/inventory/hand/H = over_object
+ if(!M.incapacitated() && istype(over_object, /atom/movable/screen/inventory/hand))
+ var/atom/movable/screen/inventory/hand/H = over_object
M.putItemFromInventoryInHandIfPossible(src, H.held_index)
/obj/item/storage/portable_chem_mixer/ui_interact(mob/user, datum/tgui/ui)
diff --git a/code/game/objects/items/gift.dm b/code/game/objects/items/gift.dm
index a9ed94aae9..9f9db64873 100644
--- a/code/game/objects/items/gift.dm
+++ b/code/game/objects/items/gift.dm
@@ -14,7 +14,7 @@ GLOBAL_LIST_INIT(gift_item_blacklist, typecacheof(list(
/obj/mafia_game_board,
/obj/docking_port,
/obj/shapeshift_holder,
- /obj/screen
+ /atom/movable/screen
)))
GLOBAL_LIST_EMPTY(possible_gifts)
diff --git a/code/game/objects/items/plushes.dm b/code/game/objects/items/plushes.dm
index 13ababa0d5..59464d25a7 100644
--- a/code/game/objects/items/plushes.dm
+++ b/code/game/objects/items/plushes.dm
@@ -446,7 +446,7 @@
mood_message = null
cheer_up()
-/obj/item/toy/plush/proc/update_desc()
+/obj/item/toy/plush/update_desc()
desc = normal_desc
if(mood_message)
desc += mood_message
diff --git a/code/game/objects/items/shields.dm b/code/game/objects/items/shields.dm
index 9aed545509..74efe3a196 100644
--- a/code/game/objects/items/shields.dm
+++ b/code/game/objects/items/shields.dm
@@ -548,7 +548,7 @@
force = 3
throwforce = 3
throw_speed = 3
- var/base_icon_state = "eshield" // [base_icon_state]1 for expanded, [base_icon_state]0 for contracted
+ base_icon_state = "eshield" // [base_icon_state]1 for expanded, [base_icon_state]0 for contracted
var/on_force = 10
var/on_throwforce = 8
var/on_throw_speed = 2
diff --git a/code/game/objects/items/stacks/cash.dm b/code/game/objects/items/stacks/cash.dm
index 68762a63c7..382e361e8a 100644
--- a/code/game/objects/items/stacks/cash.dm
+++ b/code/game/objects/items/stacks/cash.dm
@@ -18,7 +18,7 @@
. = ..()
update_desc()
-/obj/item/stack/spacecash/proc/update_desc()
+/obj/item/stack/spacecash/update_desc()
var/total_worth = get_item_credit_value()
desc = "It's worth [total_worth] credit[( total_worth > 1 ) ? "s" : ""]"
diff --git a/code/game/objects/items/tanks/watertank.dm b/code/game/objects/items/tanks/watertank.dm
index 16a91b6358..ad9c8edf8f 100644
--- a/code/game/objects/items/tanks/watertank.dm
+++ b/code/game/objects/items/tanks/watertank.dm
@@ -80,8 +80,8 @@
/obj/item/watertank/MouseDrop(obj/over_object)
var/mob/M = loc
- if(istype(M) && istype(over_object, /obj/screen/inventory/hand))
- var/obj/screen/inventory/hand/H = over_object
+ if(istype(M) && istype(over_object, /atom/movable/screen/inventory/hand))
+ var/atom/movable/screen/inventory/hand/H = over_object
M.putItemFromInventoryInHandIfPossible(src, H.held_index)
return ..()
diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm
index 454016d9e7..547217366b 100644
--- a/code/game/objects/items/toys.dm
+++ b/code/game/objects/items/toys.dm
@@ -889,8 +889,8 @@
M.put_in_hands(src)
to_chat(usr, "You pick up the deck.")
- else if(istype(over_object, /obj/screen/inventory/hand))
- var/obj/screen/inventory/hand/H = over_object
+ else if(istype(over_object, /atom/movable/screen/inventory/hand))
+ var/atom/movable/screen/inventory/hand/H = over_object
if(M.putItemFromInventoryInHandIfPossible(src, H.held_index))
to_chat(usr, "You pick up the deck.")
diff --git a/code/game/objects/obj_defense.dm b/code/game/objects/obj_defense.dm
index cc2e6412eb..78a5c9ece9 100644
--- a/code/game/objects/obj_defense.dm
+++ b/code/game/objects/obj_defense.dm
@@ -22,6 +22,8 @@
//returns the damage value of the attack after processing the obj's various armor protections
/obj/proc/run_obj_armor(damage_amount, damage_type, damage_flag = 0, attack_dir, armour_penetration = 0)
+ if(damage_flag == MELEE && damage_amount < damage_deflection)
+ return 0
switch(damage_type)
if(BRUTE)
if(BURN)
diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm
index ca4428db57..58c571d9e6 100644
--- a/code/game/objects/objs.dm
+++ b/code/game/objects/objs.dm
@@ -20,6 +20,9 @@
var/max_integrity = 500
var/integrity_failure = 0 //0 if we have no special broken behavior, otherwise is a percentage of at what point the obj breaks. 0.5 being 50%
+ ///Damage under this value will be completely ignored
+ var/damage_deflection = 0
+
var/resistance_flags = NONE // INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ON_FIRE | UNACIDABLE | ACID_PROOF
var/persistence_replacement //have something WAY too amazing to live to the next round? Set a new path here. Overuse of this var will make me upset.
diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm
index 00c4b1f7db..4e57a2f717 100644
--- a/code/game/objects/structures/crates_lockers/closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets.dm
@@ -86,7 +86,7 @@
. += "off"
. += "sparking"
//Overlay is similar enough for both that we can use the same mask for both
- SSvis_overlays.add_vis_overlay(src, icon, "locked", EMISSIVE_LAYER, EMISSIVE_PLANE, dir, alpha)
+ . += emissive_appearance(icon, "locked", alpha = src.alpha)
. += locked ? "locked" : "unlocked"
@@ -356,7 +356,7 @@
return
/obj/structure/closet/MouseDrop_T(atom/movable/O, mob/living/user)
- if(!istype(O) || O.anchored || istype(O, /obj/screen))
+ if(!istype(O) || O.anchored || istype(O, /atom/movable/screen))
return
if(!istype(user) || user.incapacitated() || user.lying)
return
@@ -531,7 +531,7 @@
/obj/structure/closet/get_remote_view_fullscreens(mob/user)
if(user.stat == DEAD || !(user.sight & (SEEOBJS|SEEMOBS)))
- user.overlay_fullscreen("remote_view", /obj/screen/fullscreen/impaired, 1)
+ user.overlay_fullscreen("remote_view", /atom/movable/screen/fullscreen/impaired, 1)
/obj/structure/closet/emp_act(severity)
. = ..()
diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm
index aba3b743bb..d03e0fd57e 100644
--- a/code/game/objects/structures/door_assembly.dm
+++ b/code/game/objects/structures/door_assembly.dm
@@ -269,7 +269,7 @@
. += get_airlock_overlay("glass_construction", overlays_file)
. += get_airlock_overlay("panel_c[state+1]", overlays_file)
-/obj/structure/door_assembly/proc/update_name()
+/obj/structure/door_assembly/update_name()
name = ""
switch(state)
if(AIRLOCK_ASSEMBLY_NEEDS_WIRES)
diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm
index 82ca59161c..4980981574 100644
--- a/code/game/objects/structures/morgue.dm
+++ b/code/game/objects/structures/morgue.dm
@@ -139,7 +139,7 @@ GLOBAL_LIST_EMPTY(bodycontainers) //Let them act as spawnpoints for revenants an
/obj/structure/bodycontainer/get_remote_view_fullscreens(mob/user)
if(user.stat == DEAD || !(user.sight & (SEEOBJS|SEEMOBS)))
- user.overlay_fullscreen("remote_view", /obj/screen/fullscreen/impaired, 2)
+ user.overlay_fullscreen("remote_view", /atom/movable/screen/fullscreen/impaired, 2)
/*
* Morgue
*/
diff --git a/code/modules/antagonists/abductor/equipment/gland.dm b/code/modules/antagonists/abductor/equipment/gland.dm
index aed096e9df..d0002d1f4a 100644
--- a/code/modules/antagonists/abductor/equipment/gland.dm
+++ b/code/modules/antagonists/abductor/equipment/gland.dm
@@ -61,7 +61,7 @@
active_mind_control = TRUE
message_admins("[key_name(user)] sent an abductor mind control message to [key_name(owner)]: [command]")
update_gland_hud()
- var/obj/screen/alert/mind_control/mind_alert = owner.throw_alert("mind_control", /obj/screen/alert/mind_control)
+ var/atom/movable/screen/alert/mind_control/mind_alert = owner.throw_alert("mind_control", /atom/movable/screen/alert/mind_control)
mind_alert.command = command
addtimer(CALLBACK(src, .proc/clear_mind_control), mind_control_duration)
return TRUE
diff --git a/code/modules/antagonists/abductor/equipment/glands/mindshock.dm b/code/modules/antagonists/abductor/equipment/glands/mindshock.dm
index fa63e2c82a..cb3bb50b1e 100644
--- a/code/modules/antagonists/abductor/equipment/glands/mindshock.dm
+++ b/code/modules/antagonists/abductor/equipment/glands/mindshock.dm
@@ -43,7 +43,7 @@
message_admins("[key_name(user)] broadcasted an abductor mind control message from [key_name(owner)] to [key_name(H)]: [command]")
- var/obj/screen/alert/mind_control/mind_alert = H.throw_alert("mind_control", /obj/screen/alert/mind_control)
+ var/atom/movable/screen/alert/mind_control/mind_alert = H.throw_alert("mind_control", /atom/movable/screen/alert/mind_control)
mind_alert.command = command
if(LAZYLEN(broadcasted_mobs))
diff --git a/code/modules/antagonists/abductor/equipment/glands/quantum.dm b/code/modules/antagonists/abductor/equipment/glands/quantum.dm
index fc1ddae030..eade62b1bb 100644
--- a/code/modules/antagonists/abductor/equipment/glands/quantum.dm
+++ b/code/modules/antagonists/abductor/equipment/glands/quantum.dm
@@ -35,7 +35,7 @@
if(entangled_mob && ishuman(entangled_mob) && (entangled_mob.stat < DEAD))
to_chat(entangled_mob, "You suddenly feel an irresistible compulsion to follow an order...")
to_chat(entangled_mob, "[command]")
- var/obj/screen/alert/mind_control/mind_alert = entangled_mob.throw_alert("mind_control", /obj/screen/alert/mind_control)
+ var/atom/movable/screen/alert/mind_control/mind_alert = entangled_mob.throw_alert("mind_control", /atom/movable/screen/alert/mind_control)
mind_alert.command = command
message_admins("[key_name(owner)] mirrored an abductor mind control message to [key_name(entangled_mob)]: [command]")
update_gland_hud()
diff --git a/code/modules/antagonists/blob/blob/blobs/factory.dm b/code/modules/antagonists/blob/blob/blobs/factory.dm
index 284a43562e..dfb3c6d71b 100644
--- a/code/modules/antagonists/blob/blob/blobs/factory.dm
+++ b/code/modules/antagonists/blob/blob/blobs/factory.dm
@@ -26,7 +26,7 @@
if(naut)
naut.factory = null
to_chat(naut, "Your factory was destroyed! You feel yourself dying!")
- naut.throw_alert("nofactory", /obj/screen/alert/nofactory)
+ naut.throw_alert("nofactory", /atom/movable/screen/alert/nofactory)
spores = null
return ..()
diff --git a/code/modules/antagonists/bloodsucker/datum_bloodsucker.dm b/code/modules/antagonists/bloodsucker/datum_bloodsucker.dm
index 5af2a49b1b..07c92bfd97 100644
--- a/code/modules/antagonists/bloodsucker/datum_bloodsucker.dm
+++ b/code/modules/antagonists/bloodsucker/datum_bloodsucker.dm
@@ -670,9 +670,9 @@
#define ui_vamprank_display "WEST:6,CENTER-2:-5" // 2 tiles down
/datum/hud
- var/obj/screen/bloodsucker/blood_counter/blood_display
- var/obj/screen/bloodsucker/rank_counter/vamprank_display
- var/obj/screen/bloodsucker/sunlight_counter/sunlight_display
+ var/atom/movable/screen/bloodsucker/blood_counter/blood_display
+ var/atom/movable/screen/bloodsucker/rank_counter/vamprank_display
+ var/atom/movable/screen/bloodsucker/sunlight_counter/sunlight_display
/datum/antagonist/bloodsucker/proc/add_hud()
return
@@ -708,36 +708,36 @@
owner.current.hud_used.vamprank_display.icon_state = (bloodsucker_level_unspent > 0) ? "rank_up" : "rank"
-/obj/screen/bloodsucker
+/atom/movable/screen/bloodsucker
invisibility = INVISIBILITY_ABSTRACT
-/obj/screen/bloodsucker/proc/clear()
+/atom/movable/screen/bloodsucker/proc/clear()
invisibility = INVISIBILITY_ABSTRACT
-/obj/screen/bloodsucker/proc/update_counter(value, valuecolor)
+/atom/movable/screen/bloodsucker/proc/update_counter(value, valuecolor)
invisibility = 0
-/obj/screen/bloodsucker/blood_counter
+/atom/movable/screen/bloodsucker/blood_counter
icon = 'icons/mob/actions/bloodsucker.dmi'
name = "Blood Consumed"
icon_state = "blood_display"
screen_loc = ui_blood_display
-/obj/screen/bloodsucker/blood_counter/update_counter(value, valuecolor)
+/atom/movable/screen/bloodsucker/blood_counter/update_counter(value, valuecolor)
..()
maptext = "[round(value,1)]
"
-/obj/screen/bloodsucker/rank_counter
+/atom/movable/screen/bloodsucker/rank_counter
name = "Bloodsucker Rank"
icon = 'icons/mob/actions/bloodsucker.dmi'
icon_state = "rank"
screen_loc = ui_vamprank_display
-/obj/screen/bloodsucker/rank_counter/update_counter(value, valuecolor)
+/atom/movable/screen/bloodsucker/rank_counter/update_counter(value, valuecolor)
..()
maptext = "[round(value,1)]
"
-/obj/screen/bloodsucker/sunlight_counter
+/atom/movable/screen/bloodsucker/sunlight_counter
icon = 'icons/mob/actions/bloodsucker.dmi'
name = "Solar Flare Timer"
icon_state = "sunlight_night"
@@ -761,7 +761,7 @@
owner.current.hud_used.sunlight_display.icon_state = "sunlight_" + (amDay ? "day":"night")
-/obj/screen/bloodsucker/sunlight_counter/update_counter(value, valuecolor)
+/atom/movable/screen/bloodsucker/sunlight_counter/update_counter(value, valuecolor)
..()
maptext = "[value]
"
diff --git a/code/modules/antagonists/bloodsucker/datum_hunter.dm b/code/modules/antagonists/bloodsucker/datum_hunter.dm
index c0933d8a3c..b221a83a60 100644
--- a/code/modules/antagonists/bloodsucker/datum_hunter.dm
+++ b/code/modules/antagonists/bloodsucker/datum_hunter.dm
@@ -109,13 +109,13 @@
/datum/status_effect/agent_pinpointer/hunter_edition
- alert_type = /obj/screen/alert/status_effect/agent_pinpointer/hunter_edition
+ alert_type = /atom/movable/screen/alert/status_effect/agent_pinpointer/hunter_edition
minimum_range = HUNTER_SCAN_MIN_DISTANCE
tick_interval = HUNTER_SCAN_PING_TIME
duration = 160 // Lasts 10s
range_fuzz_factor = 5//PINPOINTER_EXTRA_RANDOM_RANGE
-/obj/screen/alert/status_effect/agent_pinpointer/hunter_edition
+/atom/movable/screen/alert/status_effect/agent_pinpointer/hunter_edition
name = "Monster Tracking"
desc = "You always know where the hellspawn are."
diff --git a/code/modules/antagonists/bloodsucker/datum_vassal.dm b/code/modules/antagonists/bloodsucker/datum_vassal.dm
index 91e89e71e6..5162897d60 100644
--- a/code/modules/antagonists/bloodsucker/datum_vassal.dm
+++ b/code/modules/antagonists/bloodsucker/datum_vassal.dm
@@ -110,13 +110,13 @@
/datum/status_effect/agent_pinpointer/vassal_edition
id = "agent_pinpointer"
- alert_type = /obj/screen/alert/status_effect/agent_pinpointer/vassal_edition
+ alert_type = /atom/movable/screen/alert/status_effect/agent_pinpointer/vassal_edition
minimum_range = VASSAL_SCAN_MIN_DISTANCE
tick_interval = VASSAL_SCAN_PING_TIME
duration = -1 // runs out fast
range_fuzz_factor = 0
-/obj/screen/alert/status_effect/agent_pinpointer/vassal_edition
+/atom/movable/screen/alert/status_effect/agent_pinpointer/vassal_edition
name = "Blood Bond"
desc = "You always know where your master is."
//icon = 'icons/obj/device.dmi'
diff --git a/code/modules/antagonists/changeling/powers/pheromone_receptors.dm b/code/modules/antagonists/changeling/powers/pheromone_receptors.dm
index 3d54c19350..3bda7335a1 100644
--- a/code/modules/antagonists/changeling/powers/pheromone_receptors.dm
+++ b/code/modules/antagonists/changeling/powers/pheromone_receptors.dm
@@ -30,7 +30,7 @@
//Modified IA pinpointer - Points to the NEAREST changeling, but will only get you within a few tiles of the target.
//You'll still have to rely on intuition and observation to make the identification. Lings can 'hide' in public places.
/datum/status_effect/agent_pinpointer/changeling
- alert_type = /obj/screen/alert/status_effect/agent_pinpointer/changeling
+ alert_type = /atom/movable/screen/alert/status_effect/agent_pinpointer/changeling
minimum_range = CHANGELING_PHEROMONE_MIN_DISTANCE
tick_interval = CHANGELING_PHEROMONE_PING_TIME
range_fuzz_factor = 0
@@ -55,6 +55,6 @@
scan_target = null
-/obj/screen/alert/status_effect/agent_pinpointer/changeling
+/atom/movable/screen/alert/status_effect/agent_pinpointer/changeling
name = "Pheromone Scent"
desc = "The nose always knows."
diff --git a/code/modules/antagonists/clockcult/clock_effects/city_of_cogs_rift.dm b/code/modules/antagonists/clockcult/clock_effects/city_of_cogs_rift.dm
index 1da49efe3c..3609037f58 100644
--- a/code/modules/antagonists/clockcult/clock_effects/city_of_cogs_rift.dm
+++ b/code/modules/antagonists/clockcult/clock_effects/city_of_cogs_rift.dm
@@ -69,7 +69,7 @@
do_sparks(5, TRUE, AM)
if(isliving(AM))
var/mob/living/L = AM
- L.overlay_fullscreen("flash", /obj/screen/fullscreen/flash/static)
+ L.overlay_fullscreen("flash", /atom/movable/screen/fullscreen/flash/static)
L.clear_fullscreen("flash", 5)
var/obj/item/transfer_valve/TTV = locate() in L.GetAllContents()
if(TTV)
diff --git a/code/modules/antagonists/clockcult/clock_items/wraith_spectacles.dm b/code/modules/antagonists/clockcult/clock_items/wraith_spectacles.dm
index 2a916c7a2f..5e25b8de82 100644
--- a/code/modules/antagonists/clockcult/clock_items/wraith_spectacles.dm
+++ b/code/modules/antagonists/clockcult/clock_items/wraith_spectacles.dm
@@ -97,18 +97,18 @@
id = "wraith_spectacles"
duration = -1 //remains until eye damage done reaches 0 while the glasses are not worn
tick_interval = 20
- alert_type = /obj/screen/alert/status_effect/wraith_spectacles
+ alert_type = /atom/movable/screen/alert/status_effect/wraith_spectacles
var/eye_damage_done = 0
var/nearsight_breakpoint = 30
var/blind_breakpoint = 45
-/obj/screen/alert/status_effect/wraith_spectacles
+/atom/movable/screen/alert/status_effect/wraith_spectacles
name = "Wraith Spectacles"
desc = "You shouldn't actually see this, as it should be procedurally generated."
icon_state = "wraithspecs"
alerttooltipstyle = "clockcult"
-/obj/screen/alert/status_effect/wraith_spectacles/MouseEntered(location,control,params)
+/atom/movable/screen/alert/status_effect/wraith_spectacles/MouseEntered(location,control,params)
var/mob/living/carbon/human/L = usr
if(istype(L)) //this is probably more safety than actually needed
var/datum/status_effect/wraith_spectacles/W = attached_effect
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 8fcc36a456..973b615f4a 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
@@ -141,7 +141,7 @@
if(isliving(M.current) && M.current.stat != DEAD)
var/turf/t_turf = isAI(M.current) ? get_step(get_step(src, NORTH),NORTH) : get_turf(src) // AI too fat, must make sure it always ends up a 2 tiles north instead of on the ark.
do_teleport(M.current, t_turf, channel = TELEPORT_CHANNEL_CULT, forced = TRUE)
- M.current.overlay_fullscreen("flash", /obj/screen/fullscreen/flash)
+ M.current.overlay_fullscreen("flash", /atom/movable/screen/fullscreen/flash)
M.current.clear_fullscreen("flash", 5)
playsound(src, 'sound/magic/clockwork/invoke_general.ogg', 50, FALSE)
recalls_remaining--
@@ -311,7 +311,7 @@
var/turf/T = get_turf(M)
if(is_servant_of_ratvar(M) && (!T || T.z != z))
M.forceMove(get_step(src, SOUTH))
- M.overlay_fullscreen("flash", /obj/screen/fullscreen/flash)
+ M.overlay_fullscreen("flash", /atom/movable/screen/fullscreen/flash)
M.clear_fullscreen("flash", 5)
progress_in_seconds += GATEWAY_SUMMON_RATE
switch(progress_in_seconds)
diff --git a/code/modules/antagonists/clockcult/clockcult.dm b/code/modules/antagonists/clockcult/clockcult.dm
index 6f91299cdb..8bf26d6397 100644
--- a/code/modules/antagonists/clockcult/clockcult.dm
+++ b/code/modules/antagonists/clockcult/clockcult.dm
@@ -136,7 +136,7 @@
hierophant_network.span_for_name = "nezbere"
hierophant_network.span_for_message = "brass"
hierophant_network.Grant(current)
- current.throw_alert("clockinfo", /obj/screen/alert/clockwork/infodump)
+ current.throw_alert("clockinfo", /atom/movable/screen/alert/clockwork/infodump)
var/obj/structure/destructible/clockwork/massive/celestial_gateway/G = GLOB.ark_of_the_clockwork_justiciar
if(G && G.active && ishuman(current))
current.add_overlay(mutable_appearance('icons/effects/genetics.dmi', "servitude", -ANTAG_LAYER))
diff --git a/code/modules/antagonists/cult/cult.dm b/code/modules/antagonists/cult/cult.dm
index 0cc0ed133e..a18523069e 100644
--- a/code/modules/antagonists/cult/cult.dm
+++ b/code/modules/antagonists/cult/cult.dm
@@ -124,7 +124,7 @@
communion.Grant(current)
if(ishuman(current))
magic.Grant(current)
- current.throw_alert("bloodsense", /obj/screen/alert/bloodsense)
+ current.throw_alert("bloodsense", /atom/movable/screen/alert/bloodsense)
if(cult_team?.cult_risen)
cult_team.rise(current)
if(cult_team.cult_ascendent)
diff --git a/code/modules/antagonists/devil/true_devil/_true_devil.dm b/code/modules/antagonists/devil/true_devil/_true_devil.dm
index 069080170e..ac1e5630da 100644
--- a/code/modules/antagonists/devil/true_devil/_true_devil.dm
+++ b/code/modules/antagonists/devil/true_devil/_true_devil.dm
@@ -104,7 +104,7 @@
/mob/living/carbon/true_devil/assess_threat(judgement_criteria, lasercolor = "", datum/callback/weaponcheck=null)
return 666
-/mob/living/carbon/true_devil/flash_act(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0, type = /obj/screen/fullscreen/flash, override_protection = 0)
+/mob/living/carbon/true_devil/flash_act(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0, type = /atom/movable/screen/fullscreen/flash, override_protection = 0)
if(mind && has_bane(BANE_LIGHT))
mind.disrupt_spells(-500)
return ..() //flashes don't stop devils UNLESS it's their bane.
diff --git a/code/modules/antagonists/morph/morph.dm b/code/modules/antagonists/morph/morph.dm
index 077c380ef0..8352b8f238 100644
--- a/code/modules/antagonists/morph/morph.dm
+++ b/code/modules/antagonists/morph/morph.dm
@@ -38,7 +38,7 @@
var/atom/movable/form = null
var/morph_time = 0
var/static/list/blacklist_typecache = typecacheof(list(
- /obj/screen,
+ /atom/movable/screen,
/obj/singularity,
/mob/living/simple_animal/hostile/morph,
/obj/effect,
diff --git a/code/modules/antagonists/traitor/IAA/internal_affairs.dm b/code/modules/antagonists/traitor/IAA/internal_affairs.dm
index ff012e556a..4414fe8257 100644
--- a/code/modules/antagonists/traitor/IAA/internal_affairs.dm
+++ b/code/modules/antagonists/traitor/IAA/internal_affairs.dm
@@ -42,12 +42,12 @@
id = "agent_pinpointer"
duration = -1
tick_interval = PINPOINTER_PING_TIME
- alert_type = /obj/screen/alert/status_effect/agent_pinpointer
+ alert_type = /atom/movable/screen/alert/status_effect/agent_pinpointer
var/minimum_range = PINPOINTER_MINIMUM_RANGE
var/range_fuzz_factor = PINPOINTER_EXTRA_RANDOM_RANGE
var/mob/scan_target = null
-/obj/screen/alert/status_effect/agent_pinpointer
+/atom/movable/screen/alert/status_effect/agent_pinpointer
name = "Internal Affairs Integrated Pinpointer"
desc = "Even stealthier than a normal implant."
icon = 'icons/obj/device.dmi'
diff --git a/code/modules/antagonists/wizard/equipment/soulstone.dm b/code/modules/antagonists/wizard/equipment/soulstone.dm
index c328fa232d..d4d70cd053 100644
--- a/code/modules/antagonists/wizard/equipment/soulstone.dm
+++ b/code/modules/antagonists/wizard/equipment/soulstone.dm
@@ -224,7 +224,7 @@
if(target.type == /mob/living/simple_animal/hostile/construct/shade) //Make sure we remember which body belonged to the shade
var/mob/living/simple_animal/hostile/construct/shade/shade = target
newstruct.original_mind = shade.original_mind
- var/obj/screen/alert/bloodsense/BS
+ var/atom/movable/screen/alert/bloodsense/BS
if(newstruct.mind && ((stoner && iscultist(stoner)) || cultoverride) && SSticker?.mode)
SSticker.mode.add_cultist(newstruct.mind, 0)
if(iscultist(stoner) || cultoverride)
@@ -232,7 +232,7 @@
else if(stoner)
to_chat(newstruct, "You are still bound to serve your creator, [stoner], follow [stoner.p_their()] orders and help [stoner.p_them()] complete [stoner.p_their()] goals at all costs.")
newstruct.clear_alert("bloodsense")
- BS = newstruct.throw_alert("bloodsense", /obj/screen/alert/bloodsense)
+ BS = newstruct.throw_alert("bloodsense", /atom/movable/screen/alert/bloodsense)
if(BS)
BS.Cviewer = newstruct
newstruct.cancel_camera()
diff --git a/code/modules/arousal/genitals.dm b/code/modules/arousal/genitals.dm
index 723049a784..ed41cae8ce 100644
--- a/code/modules/arousal/genitals.dm
+++ b/code/modules/arousal/genitals.dm
@@ -150,7 +150,7 @@
/obj/item/organ/genital/proc/update_size()
return
-/obj/item/organ/genital/proc/update_appearance()
+/obj/item/organ/genital/proc/update_appearance_genitals()
if(!owner || owner.stat == DEAD)
aroused_state = FALSE
@@ -187,7 +187,7 @@
. = ..()
if(.)
update()
- RegisterSignal(owner, COMSIG_MOB_DEATH, .proc/update_appearance)
+ RegisterSignal(owner, COMSIG_MOB_DEATH, .proc/update_appearance_genitals)
if(genital_flags & GENITAL_THROUGH_CLOTHES)
owner.exposed_genitals += src
diff --git a/code/modules/arousal/toys/dildos.dm b/code/modules/arousal/toys/dildos.dm
index 2482b93300..4de6877915 100644
--- a/code/modules/arousal/toys/dildos.dm
+++ b/code/modules/arousal/toys/dildos.dm
@@ -20,7 +20,7 @@
var/is_knotted = FALSE
//Lists moved to _cit_helpers.dm as globals so they're not instanced individually
-/obj/item/dildo/proc/update_appearance()
+/obj/item/dildo/update_appearance()
icon_state = "[dildo_type]_[dildo_shape]_[dildo_size]"
var/sizeword = ""
switch(dildo_size)
diff --git a/code/modules/atmospherics/auxgm/breathing_classes.dm b/code/modules/atmospherics/auxgm/breathing_classes.dm
index f04f89a419..4abfab58ee 100644
--- a/code/modules/atmospherics/auxgm/breathing_classes.dm
+++ b/code/modules/atmospherics/auxgm/breathing_classes.dm
@@ -10,9 +10,9 @@
var/list/products = null
var/danger_reagent = null
var/low_alert_category = "not_enough_oxy"
- var/low_alert_datum = /obj/screen/alert/not_enough_oxy
+ var/low_alert_datum = /atom/movable/screen/alert/not_enough_oxy
var/high_alert_category = "too_much_oxy"
- var/high_alert_datum = /obj/screen/alert/too_much_oxy
+ var/high_alert_datum = /atom/movable/screen/alert/too_much_oxy
/datum/breathing_class/oxygen
gases = list(
@@ -32,6 +32,6 @@
GAS_CO2 = 1
)
low_alert_category = "not_enough_tox"
- low_alert_datum = /obj/screen/alert/not_enough_tox
+ low_alert_datum = /atom/movable/screen/alert/not_enough_tox
high_alert_category = "too_much_tox"
- high_alert_datum = /obj/screen/alert/too_much_tox
+ high_alert_datum = /atom/movable/screen/alert/too_much_tox
diff --git a/code/modules/atmospherics/auxgm/gas_types.dm b/code/modules/atmospherics/auxgm/gas_types.dm
index 0da2527b3b..22a42319b3 100644
--- a/code/modules/atmospherics/auxgm/gas_types.dm
+++ b/code/modules/atmospherics/auxgm/gas_types.dm
@@ -10,11 +10,11 @@
breath_alert_info = list(
not_enough_alert = list(
alert_category = "not_enough_nitro",
- alert_type = /obj/screen/alert/not_enough_nitro
+ alert_type = /atom/movable/screen/alert/not_enough_nitro
),
too_much_alert = list(
alert_category = "too_much_nitro",
- alert_type = /obj/screen/alert/too_much_nitro
+ alert_type = /atom/movable/screen/alert/too_much_nitro
)
)
name = "Nitrogen"
@@ -27,11 +27,11 @@
breath_alert_info = list(
not_enough_alert = list(
alert_category = "not_enough_co2",
- alert_type = /obj/screen/alert/not_enough_co2
+ alert_type = /atom/movable/screen/alert/not_enough_co2
),
too_much_alert = list(
alert_category = "too_much_co2",
- alert_type = /obj/screen/alert/too_much_co2
+ alert_type = /atom/movable/screen/alert/too_much_co2
)
)
fusion_power = 3
@@ -138,11 +138,11 @@
breath_alert_info = list(
not_enough_alert = list(
alert_category = "not_enough_ch4",
- alert_type = /obj/screen/alert/not_enough_ch4
+ alert_type = /atom/movable/screen/alert/not_enough_ch4
),
too_much_alert = list(
alert_category = "too_much_ch4",
- alert_type = /obj/screen/alert/too_much_ch4
+ alert_type = /atom/movable/screen/alert/too_much_ch4
)
)
fire_energy_released = FIRE_CARBON_ENERGY_RELEASED
@@ -156,11 +156,11 @@
breath_alert_info = list(
not_enough_alert = list(
alert_category = "not_enough_ch3br",
- alert_type = /obj/screen/alert/not_enough_ch3br
+ alert_type = /atom/movable/screen/alert/not_enough_ch3br
),
too_much_alert = list(
alert_category = "too_much_ch3br",
- alert_type = /obj/screen/alert/too_much_ch3br
+ alert_type = /atom/movable/screen/alert/too_much_ch3br
)
)
fire_products = list(GAS_CO2 = 1, GAS_H2O = 1.5, GAS_BZ = 0.5)
diff --git a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm
index eacb7ed392..efafc1c9a8 100644
--- a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm
+++ b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm
@@ -439,7 +439,7 @@
return // we don't see the pipe network while inside cryo.
/obj/machinery/atmospherics/components/unary/cryo_cell/get_remote_view_fullscreens(mob/user)
- user.overlay_fullscreen("remote_view", /obj/screen/fullscreen/impaired, 1)
+ user.overlay_fullscreen("remote_view", /atom/movable/screen/fullscreen/impaired, 1)
/obj/machinery/atmospherics/components/unary/cryo_cell/can_crawl_through()
return // can't ventcrawl in or out of cryo.
diff --git a/code/modules/buildmode/buildmode.dm b/code/modules/buildmode/buildmode.dm
index 4a56257882..e0703201a1 100644
--- a/code/modules/buildmode/buildmode.dm
+++ b/code/modules/buildmode/buildmode.dm
@@ -17,10 +17,10 @@
var/switch_state = BM_SWITCHSTATE_NONE
var/switch_width = 5
// modeswitch UI
- var/obj/screen/buildmode/mode/modebutton
+ var/atom/movable/screen/buildmode/mode/modebutton
var/list/modeswitch_buttons = list()
// dirswitch UI
- var/obj/screen/buildmode/bdir/dirbutton
+ var/atom/movable/screen/buildmode/bdir/dirbutton
var/list/dirswitch_buttons = list()
/datum/buildmode/New(client/c)
@@ -34,7 +34,7 @@
holder.screen += buttons
holder.click_intercept = src
mode.enter_mode(src)
-
+
/datum/buildmode/proc/quit()
mode.exit_mode(src)
holder.screen -= buttons
@@ -63,16 +63,16 @@
/datum/buildmode/proc/create_buttons()
// keep a reference so we can update it upon mode switch
- modebutton = new /obj/screen/buildmode/mode(src)
+ modebutton = new /atom/movable/screen/buildmode/mode(src)
buttons += modebutton
- buttons += new /obj/screen/buildmode/help(src)
+ buttons += new /atom/movable/screen/buildmode/help(src)
// keep a reference so we can update it upon dir switch
- dirbutton = new /obj/screen/buildmode/bdir(src)
+ dirbutton = new /atom/movable/screen/buildmode/bdir(src)
buttons += dirbutton
- buttons += new /obj/screen/buildmode/quit(src)
+ buttons += new /atom/movable/screen/buildmode/quit(src)
// build the lists of switching buttons
- build_options_grid(subtypesof(/datum/buildmode_mode), modeswitch_buttons, /obj/screen/buildmode/modeswitch)
- build_options_grid(list(SOUTH,EAST,WEST,NORTH,NORTHWEST), dirswitch_buttons, /obj/screen/buildmode/dirswitch)
+ build_options_grid(subtypesof(/datum/buildmode_mode), modeswitch_buttons, /atom/movable/screen/buildmode/modeswitch)
+ build_options_grid(list(SOUTH,EAST,WEST,NORTH,NORTHWEST), dirswitch_buttons, /atom/movable/screen/buildmode/dirswitch)
// this creates a nice offset grid for choosing between buildmode options,
// because going "click click click ah hell" sucks.
@@ -81,7 +81,7 @@
for(var/thing in elements)
var/x = pos_idx % switch_width
var/y = FLOOR(pos_idx / switch_width, 1)
- var/obj/screen/buildmode/B = new buttontype(src, thing)
+ var/atom/movable/screen/buildmode/B = new buttontype(src, thing)
// extra .5 for a nice offset look
B.screen_loc = "NORTH-[(1 + 0.5 + y*1.5)],WEST+[0.5 + x*1.5]"
buttonslist += B
@@ -100,7 +100,7 @@
else
close_switchstates()
open_modeswitch()
-
+
/datum/buildmode/proc/open_modeswitch()
switch_state = BM_SWITCHSTATE_MODE
holder.screen += modeswitch_buttons
@@ -115,7 +115,7 @@
else
close_switchstates()
open_dirswitch()
-
+
/datum/buildmode/proc/open_dirswitch()
switch_state = BM_SWITCHSTATE_DIR
holder.screen += dirswitch_buttons
@@ -155,7 +155,7 @@
new /datum/buildmode(M.client)
message_admins("[key_name_admin(usr)] has entered build mode.")
log_admin("[key_name(usr)] has entered build mode.")
-
+
#undef BM_SWITCHSTATE_NONE
#undef BM_SWITCHSTATE_MODE
#undef BM_SWITCHSTATE_DIR
diff --git a/code/modules/buildmode/buttons.dm b/code/modules/buildmode/buttons.dm
index 6901a0e42e..5c5c0000d1 100644
--- a/code/modules/buildmode/buttons.dm
+++ b/code/modules/buildmode/buttons.dm
@@ -1,23 +1,23 @@
-/obj/screen/buildmode
+/atom/movable/screen/buildmode
icon = 'icons/misc/buildmode.dmi'
var/datum/buildmode/bd
// If we don't do this, we get occluded by item action buttons
layer = ABOVE_HUD_LAYER
-/obj/screen/buildmode/New(bld)
+/atom/movable/screen/buildmode/New(bld)
bd = bld
return ..()
-/obj/screen/buildmode/Destroy()
+/atom/movable/screen/buildmode/Destroy()
bd = null
return ..()
-/obj/screen/buildmode/mode
+/atom/movable/screen/buildmode/mode
name = "Toggle Mode"
icon_state = "buildmode_basic"
screen_loc = "NORTH,WEST"
-/obj/screen/buildmode/mode/Click(location, control, params)
+/atom/movable/screen/buildmode/mode/Click(location, control, params)
var/list/pa = params2list(params)
if(pa.Find("left"))
@@ -27,63 +27,63 @@
update_icon()
return 1
-/obj/screen/buildmode/mode/update_icon_state()
+/atom/movable/screen/buildmode/mode/update_icon_state()
icon_state = bd.mode.get_button_iconstate()
-/obj/screen/buildmode/help
+/atom/movable/screen/buildmode/help
icon_state = "buildhelp"
screen_loc = "NORTH,WEST+1"
name = "Buildmode Help"
-/obj/screen/buildmode/help/Click(location, control, params)
+/atom/movable/screen/buildmode/help/Click(location, control, params)
bd.mode.show_help(usr.client)
return 1
-/obj/screen/buildmode/bdir
+/atom/movable/screen/buildmode/bdir
icon_state = "build"
screen_loc = "NORTH,WEST+2"
name = "Change Dir"
-/obj/screen/buildmode/bdir/update_icon_state()
+/atom/movable/screen/buildmode/bdir/update_icon_state()
dir = bd.build_dir
-/obj/screen/buildmode/bdir/Click()
+/atom/movable/screen/buildmode/bdir/Click()
bd.toggle_dirswitch()
update_icon()
return 1
// used to switch between modes
-/obj/screen/buildmode/modeswitch
+/atom/movable/screen/buildmode/modeswitch
var/datum/buildmode_mode/modetype
-/obj/screen/buildmode/modeswitch/New(bld, mt)
+/atom/movable/screen/buildmode/modeswitch/New(bld, mt)
modetype = mt
icon_state = "buildmode_[initial(modetype.key)]"
name = initial(modetype.key)
return ..(bld)
-/obj/screen/buildmode/modeswitch/Click()
+/atom/movable/screen/buildmode/modeswitch/Click()
bd.change_mode(modetype)
return 1
// used to switch between dirs
-/obj/screen/buildmode/dirswitch
+/atom/movable/screen/buildmode/dirswitch
icon_state = "build"
-/obj/screen/buildmode/dirswitch/New(bld, dir)
+/atom/movable/screen/buildmode/dirswitch/New(bld, dir)
src.dir = dir
name = dir2text(dir)
return ..(bld)
-/obj/screen/buildmode/dirswitch/Click()
+/atom/movable/screen/buildmode/dirswitch/Click()
bd.change_dir(dir)
return 1
-/obj/screen/buildmode/quit
+/atom/movable/screen/buildmode/quit
icon_state = "buildquit"
screen_loc = "NORTH,WEST+3"
name = "Quit Buildmode"
-/obj/screen/buildmode/quit/Click()
+/atom/movable/screen/buildmode/quit/Click()
bd.quit()
return 1
diff --git a/code/modules/cargo/centcom_podlauncher.dm b/code/modules/cargo/centcom_podlauncher.dm
index 05a9eef4f2..e4060de1a2 100644
--- a/code/modules/cargo/centcom_podlauncher.dm
+++ b/code/modules/cargo/centcom_podlauncher.dm
@@ -51,9 +51,9 @@
var/obj/structure/closet/supplypod/centcompod/temp_pod //The temporary pod that is modified by this datum, then cloned. The buildObject() clone of this pod is what is launched
// Stuff needed to render the map
var/map_name
- var/obj/screen/map_view/cam_screen
+ var/atom/movable/screen/map_view/cam_screen
var/list/cam_plane_masters
- var/obj/screen/background/cam_background
+ var/atom/movable/screen/background/cam_background
var/tabIndex = 1
var/renderLighting = FALSE
@@ -92,8 +92,8 @@
cam_screen.del_on_map_removal = TRUE
cam_screen.screen_loc = "[map_name]:1,1"
cam_plane_masters = list()
- for(var/plane in subtypesof(/obj/screen/plane_master))
- var/obj/screen/instance = new plane()
+ for(var/plane in subtypesof(/atom/movable/screen/plane_master))
+ var/atom/movable/screen/instance = new plane()
if (!renderLighting && instance.plane == LIGHTING_PLANE)
instance.alpha = 100
instance.assigned_map = map_name
@@ -581,7 +581,7 @@
var/left_click = pa.Find("left")
if (launcherActivated)
//Clicking on UI elements shouldn't launch a pod
- if(istype(target,/obj/screen))
+ if(istype(target,/atom/movable/screen))
return FALSE
. = TRUE
@@ -616,7 +616,7 @@
sleep(rand()*2) //looks cooler than them all appearing at once. Gives the impression of burst fire.
else if (picking_dropoff_turf)
//Clicking on UI elements shouldn't pick a dropoff turf
- if(istype(target,/obj/screen))
+ if(istype(target,/atom/movable/screen))
return FALSE
. = TRUE
diff --git a/code/modules/client/client_defines.dm b/code/modules/client/client_defines.dm
index a4d94e994c..99f24107c7 100644
--- a/code/modules/client/client_defines.dm
+++ b/code/modules/client/client_defines.dm
@@ -60,7 +60,7 @@
preload_rsc = PRELOAD_RSC
- var/obj/screen/click_catcher/void
+ var/atom/movable/screen/click_catcher/void
//These two vars are used to make a special mouse cursor, with a unique icon for clicking
var/mouse_up_icon = null
@@ -88,7 +88,7 @@
var/datum/player_details/player_details //these persist between logins/logouts during the same round.
- var/list/char_render_holders //Should only be a key-value list of north/south/east/west = obj/screen.
+ var/list/char_render_holders //Should only be a key-value list of north/south/east/west = atom/movable/screen.
/// Last time they used fix macros
var/last_macro_fix = 0
@@ -168,7 +168,7 @@
* Assoc list with all the active maps - when a screen obj is added to
* a map, it's put in here as well.
*
- * Format: list( = list(/obj/screen))
+ * Format: list( = list(/atom/movable/screen))
*/
var/list/screen_maps = list()
diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm
index 8add693d48..571adb406b 100644
--- a/code/modules/client/client_procs.dm
+++ b/code/modules/client/client_procs.dm
@@ -1029,7 +1029,7 @@ GLOBAL_LIST_INIT(blacklisted_builds, list(
var/pos = 0
for(var/D in GLOB.cardinals)
pos++
- var/obj/screen/O = LAZYACCESS(char_render_holders, "[D]")
+ var/atom/movable/screen/O = LAZYACCESS(char_render_holders, "[D]")
if(!O)
O = new
LAZYSET(char_render_holders, "[D]", O)
@@ -1040,7 +1040,7 @@ GLOBAL_LIST_INIT(blacklisted_builds, list(
/client/proc/clear_character_previews()
for(var/index in char_render_holders)
- var/obj/screen/S = char_render_holders[index]
+ var/atom/movable/screen/S = char_render_holders[index]
screen -= S
qdel(S)
char_render_holders = null
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index 0f0bf6a62c..5bc0440b77 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -2840,9 +2840,9 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if("ambientocclusion")
ambientocclusion = !ambientocclusion
if(parent && parent.screen && parent.screen.len)
- var/obj/screen/plane_master/game_world/G = parent.mob.hud_used.plane_masters["[GAME_PLANE]"]
- var/obj/screen/plane_master/above_wall/A = parent.mob.hud_used.plane_masters["[ABOVE_WALL_PLANE]"]
- var/obj/screen/plane_master/wall/W = parent.mob.hud_used.plane_masters["[WALL_PLANE]"]
+ var/atom/movable/screen/plane_master/game_world/G = parent.mob.hud_used.plane_masters["[GAME_PLANE]"]
+ var/atom/movable/screen/plane_master/above_wall/A = parent.mob.hud_used.plane_masters["[ABOVE_WALL_PLANE]"]
+ var/atom/movable/screen/plane_master/wall/W = parent.mob.hud_used.plane_masters["[WALL_PLANE]"]
G.backdrop(parent.mob)
A.backdrop(parent.mob)
W.backdrop(parent.mob)
diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm
index 416c6309d4..56ddb5f5f1 100644
--- a/code/modules/clothing/clothing.dm
+++ b/code/modules/clothing/clothing.dm
@@ -79,8 +79,8 @@
if(ismecha(M.loc)) // stops inventory actions in a mech
return
- if(!. && !M.incapacitated() && loc == M && istype(over_object, /obj/screen/inventory/hand))
- var/obj/screen/inventory/hand/H = over_object
+ if(!. && !M.incapacitated() && loc == M && istype(over_object, /atom/movable/screen/inventory/hand))
+ var/atom/movable/screen/inventory/hand/H = over_object
if(M.putItemFromInventoryInHandIfPossible(src, H.held_index))
add_fingerprint(usr)
diff --git a/code/modules/clothing/shoes/_shoes.dm b/code/modules/clothing/shoes/_shoes.dm
index 49256b490d..7a1e6b14f3 100644
--- a/code/modules/clothing/shoes/_shoes.dm
+++ b/code/modules/clothing/shoes/_shoes.dm
@@ -27,7 +27,7 @@
///How long it takes to lace/unlace these shoes
var/lace_time = 5 SECONDS
///any alerts we have active
- var/obj/screen/alert/our_alert
+ var/atom/movable/screen/alert/our_alert
/obj/item/clothing/shoes/ComponentInitialize()
. = ..()
@@ -93,7 +93,7 @@
user.update_inv_shoes()
equipped_before_drop = TRUE
if(can_be_tied && tied == SHOES_UNTIED)
- our_alert = user.throw_alert("shoealert", /obj/screen/alert/shoes/untied)
+ our_alert = user.throw_alert("shoealert", /atom/movable/screen/alert/shoes/untied)
RegisterSignal(src, COMSIG_SHOES_STEP_ACTION, .proc/check_trip, override=TRUE)
/obj/item/clothing/shoes/proc/restore_offsets(mob/user)
@@ -150,7 +150,7 @@
UnregisterSignal(src, COMSIG_SHOES_STEP_ACTION)
else
if(tied == SHOES_UNTIED && our_guy && user == our_guy)
- our_alert = our_guy.throw_alert("shoealert", /obj/screen/alert/shoes/untied) // if we're the ones unknotting our own laces, of course we know they're untied
+ our_alert = our_guy.throw_alert("shoealert", /atom/movable/screen/alert/shoes/untied) // if we're the ones unknotting our own laces, of course we know they're untied
RegisterSignal(src, COMSIG_SHOES_STEP_ACTION, .proc/check_trip, override=TRUE)
/**
@@ -233,7 +233,7 @@
our_guy.Knockdown(10)
our_guy.visible_message("[our_guy] trips on [our_guy.p_their()] knotted shoelaces and falls! What a klutz!", "You trip on your knotted shoelaces and fall over!")
SEND_SIGNAL(our_guy, COMSIG_ADD_MOOD_EVENT, "trip", /datum/mood_event/tripped) // well we realized they're knotted now!
- our_alert = our_guy.throw_alert("shoealert", /obj/screen/alert/shoes/knotted)
+ our_alert = our_guy.throw_alert("shoealert", /atom/movable/screen/alert/shoes/knotted)
else if(tied == SHOES_UNTIED)
var/wiser = TRUE // did we stumble and realize our laces are undone?
@@ -263,7 +263,7 @@
wiser = FALSE
if(wiser)
SEND_SIGNAL(our_guy, COMSIG_ADD_MOOD_EVENT, "untied", /datum/mood_event/untied) // well we realized they're untied now!
- our_alert = our_guy.throw_alert("shoealert", /obj/screen/alert/shoes/untied)
+ our_alert = our_guy.throw_alert("shoealert", /atom/movable/screen/alert/shoes/untied)
/obj/item/clothing/shoes/on_attack_hand(mob/living/user, act_intent, unarmed_attack_flags)
diff --git a/code/modules/clothing/spacesuits/chronosuit.dm b/code/modules/clothing/spacesuits/chronosuit.dm
index 57659a70c4..6642731d8b 100644
--- a/code/modules/clothing/spacesuits/chronosuit.dm
+++ b/code/modules/clothing/spacesuits/chronosuit.dm
@@ -238,7 +238,7 @@
var/mob/holder = null
var/phase_time = 0
var/phase_time_length = 3
- var/obj/screen/chronos_target/target_ui = null
+ var/atom/movable/screen/chronos_target/target_ui = null
var/obj/item/clothing/suit/space/chronos/chronosuit
/obj/effect/chronos_cam/singularity_act()
@@ -299,13 +299,13 @@
holder.unset_machine()
return ..()
-/obj/screen/chronos_target
+/atom/movable/screen/chronos_target
name = "target display"
screen_loc = "CENTER,CENTER"
color = "#ff3311"
blend_mode = BLEND_SUBTRACT
-/obj/screen/chronos_target/New(loc, var/mob/living/carbon/human/user)
+/atom/movable/screen/chronos_target/New(loc, var/mob/living/carbon/human/user)
if(user)
var/icon/user_icon = getFlatIcon(user)
icon = user_icon
diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm
index 7f81fb9993..adbf48470d 100644
--- a/code/modules/flufftext/Hallucination.dm
+++ b/code/modules/flufftext/Hallucination.dm
@@ -933,46 +933,46 @@ GLOBAL_LIST_INIT(hallucination_list, list(
feedback_details += "Type: [alert_type]"
switch(alert_type)
if("not_enough_oxy")
- target.throw_alert(alert_type, /obj/screen/alert/not_enough_oxy, override = TRUE)
+ target.throw_alert(alert_type, /atom/movable/screen/alert/not_enough_oxy, override = TRUE)
if("not_enough_tox")
- target.throw_alert(alert_type, /obj/screen/alert/not_enough_tox, override = TRUE)
+ target.throw_alert(alert_type, /atom/movable/screen/alert/not_enough_tox, override = TRUE)
if("not_enough_co2")
- target.throw_alert(alert_type, /obj/screen/alert/not_enough_co2, override = TRUE)
+ target.throw_alert(alert_type, /atom/movable/screen/alert/not_enough_co2, override = TRUE)
if("too_much_oxy")
- target.throw_alert(alert_type, /obj/screen/alert/too_much_oxy, override = TRUE)
+ target.throw_alert(alert_type, /atom/movable/screen/alert/too_much_oxy, override = TRUE)
if("too_much_co2")
- target.throw_alert(alert_type, /obj/screen/alert/too_much_co2, override = TRUE)
+ target.throw_alert(alert_type, /atom/movable/screen/alert/too_much_co2, override = TRUE)
if("too_much_tox")
- target.throw_alert(alert_type, /obj/screen/alert/too_much_tox, override = TRUE)
+ target.throw_alert(alert_type, /atom/movable/screen/alert/too_much_tox, override = TRUE)
if("nutrition")
if(prob(50))
- target.throw_alert(alert_type, /obj/screen/alert/fat, override = TRUE)
+ target.throw_alert(alert_type, /atom/movable/screen/alert/fat, override = TRUE)
else
- target.throw_alert(alert_type, /obj/screen/alert/starving, override = TRUE)
+ target.throw_alert(alert_type, /atom/movable/screen/alert/starving, override = TRUE)
if("gravity")
- target.throw_alert(alert_type, /obj/screen/alert/weightless, override = TRUE)
+ target.throw_alert(alert_type, /atom/movable/screen/alert/weightless, override = TRUE)
if("fire")
- target.throw_alert(alert_type, /obj/screen/alert/fire, override = TRUE)
+ target.throw_alert(alert_type, /atom/movable/screen/alert/fire, override = TRUE)
if("temphot")
alert_type = "temp"
- target.throw_alert(alert_type, /obj/screen/alert/hot, 3, override = TRUE)
+ target.throw_alert(alert_type, /atom/movable/screen/alert/hot, 3, override = TRUE)
if("tempcold")
alert_type = "temp"
- target.throw_alert(alert_type, /obj/screen/alert/cold, 3, override = TRUE)
+ target.throw_alert(alert_type, /atom/movable/screen/alert/cold, 3, override = TRUE)
if("pressure")
if(prob(50))
- target.throw_alert(alert_type, /obj/screen/alert/highpressure, 2, override = TRUE)
+ target.throw_alert(alert_type, /atom/movable/screen/alert/highpressure, 2, override = TRUE)
else
- target.throw_alert(alert_type, /obj/screen/alert/lowpressure, 2, override = TRUE)
+ target.throw_alert(alert_type, /atom/movable/screen/alert/lowpressure, 2, override = TRUE)
//BEEP BOOP I AM A ROBOT
if("newlaw")
- target.throw_alert(alert_type, /obj/screen/alert/newlaw, override = TRUE)
+ target.throw_alert(alert_type, /atom/movable/screen/alert/newlaw, override = TRUE)
if("locked")
- target.throw_alert(alert_type, /obj/screen/alert/locked, override = TRUE)
+ target.throw_alert(alert_type, /atom/movable/screen/alert/locked, override = TRUE)
if("hacked")
- target.throw_alert(alert_type, /obj/screen/alert/hacked, override = TRUE)
+ target.throw_alert(alert_type, /atom/movable/screen/alert/hacked, override = TRUE)
if("charge")
- target.throw_alert(alert_type, /obj/screen/alert/emptycell, override = TRUE)
+ target.throw_alert(alert_type, /atom/movable/screen/alert/emptycell, override = TRUE)
sleep(duration)
target.clear_alert(alert_type, clear_override = TRUE)
qdel(src)
@@ -1181,7 +1181,7 @@ GLOBAL_LIST_INIT(hallucination_list, list(
if(target.client)
target.client.images += fire_overlay
to_chat(target, "You're set on fire!")
- target.throw_alert("fire", /obj/screen/alert/fire, override = TRUE)
+ target.throw_alert("fire", /atom/movable/screen/alert/fire, override = TRUE)
sleep(20)
for(var/i in 1 to 3)
if(target.fire_stacks <= 0)
@@ -1203,7 +1203,7 @@ GLOBAL_LIST_INIT(hallucination_list, list(
target.clear_alert("temp", clear_override = TRUE)
else
target.clear_alert("temp", clear_override = TRUE)
- target.throw_alert("temp", /obj/screen/alert/hot, stage, override = TRUE)
+ target.throw_alert("temp", /atom/movable/screen/alert/hot, stage, override = TRUE)
/datum/hallucination/fire/proc/clear_fire()
if(!active)
diff --git a/code/modules/food_and_drinks/food/customizables.dm b/code/modules/food_and_drinks/food/customizables.dm
index 0e2bdc63c8..42f536c4f3 100644
--- a/code/modules/food_and_drinks/food/customizables.dm
+++ b/code/modules/food_and_drinks/food/customizables.dm
@@ -66,7 +66,7 @@
. = ..()
-/obj/item/reagent_containers/food/snacks/customizable/proc/update_name(obj/item/reagent_containers/food/snacks/S)
+/obj/item/reagent_containers/food/snacks/customizable/update_name(obj/item/reagent_containers/food/snacks/S)
for(var/obj/item/I in ingredients)
if(!istype(S, I.type))
customname = "custom"
diff --git a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm
index 5f0c01a5c8..58769cebf1 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm
@@ -59,6 +59,10 @@
else
icon_state = "[initial(icon_state)]-off"
+/obj/machinery/smartfridge/update_overlays()
+ . = ..()
+ if(!stat)
+ . += emissive_appearance(icon, "smartfridge-light-mask", alpha = src.alpha)
/*******************
diff --git a/code/modules/holiday/halloween/jacqueen.dm b/code/modules/holiday/halloween/jacqueen.dm
index 11bd330112..ed7453ad3e 100644
--- a/code/modules/holiday/halloween/jacqueen.dm
+++ b/code/modules/holiday/halloween/jacqueen.dm
@@ -57,7 +57,7 @@
/obj/mafia_game_board,
/obj/docking_port,
/obj/shapeshift_holder,
- /obj/screen
+ /atom/movable/screen
))
/mob/living/simple_animal/jacq/Initialize()
diff --git a/code/modules/hydroponics/gene_modder.dm b/code/modules/hydroponics/gene_modder.dm
index a0c273613f..a6ba5ec461 100644
--- a/code/modules/hydroponics/gene_modder.dm
+++ b/code/modules/hydroponics/gene_modder.dm
@@ -430,7 +430,7 @@
src.pixel_x = rand(-5, 5)
src.pixel_y = rand(-5, 5)
-/obj/item/disk/plantgene/proc/update_name()
+/obj/item/disk/plantgene/update_name()
if(gene)
name = "[gene.get_name()] (plant data disk)"
else
diff --git a/code/modules/lighting/emissive_blocker.dm b/code/modules/lighting/emissive_blocker.dm
index 04c1bb7302..46dc44792b 100644
--- a/code/modules/lighting/emissive_blocker.dm
+++ b/code/modules/lighting/emissive_blocker.dm
@@ -7,9 +7,9 @@
* almost guaranteed to be doing something wrong.
*/
/atom/movable/emissive_blocker
- name = ""
- plane = EMISSIVE_BLOCKER_PLANE
- layer = EMISSIVE_BLOCKER_LAYER
+ name = "emissive blocker"
+ plane = EMISSIVE_PLANE
+ layer = FLOAT_LAYER
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
rad_flags = RAD_NO_CONTAMINATE | RAD_PROTECT_CONTENTS
//Why?
@@ -23,6 +23,8 @@
verbs.Cut() //Cargo culting from lighting object, this maybe affects memory usage?
render_source = source
+ color = GLOB.em_block_color
+
/atom/movable/emissive_blocker/ex_act(severity)
return FALSE
diff --git a/code/modules/lighting/lighting_atom.dm b/code/modules/lighting/lighting_atom.dm
index 71702bef12..f9df19d2ac 100644
--- a/code/modules/lighting/lighting_atom.dm
+++ b/code/modules/lighting/lighting_atom.dm
@@ -132,3 +132,54 @@
/mob/living/proc/mob_light(_color, _range, _power, _duration)
var/obj/effect/dummy/lighting_obj/moblight/mob_light_obj = new (src, _color, _range, _power, _duration)
return mob_light_obj
+
+// Setter for the light power of this atom.
+/atom/proc/set_light_power(new_power)
+ if(new_power == light_power)
+ return
+ if(SEND_SIGNAL(src, COMSIG_ATOM_SET_LIGHT_POWER, new_power) & COMPONENT_BLOCK_LIGHT_UPDATE)
+ return
+ . = light_power
+ light_power = new_power
+ SEND_SIGNAL(src, COMSIG_ATOM_UPDATE_LIGHT_POWER, .)
+
+/// Setter for the light range of this atom.
+/atom/proc/set_light_range(new_range)
+ if(new_range == light_range)
+ return
+ if(SEND_SIGNAL(src, COMSIG_ATOM_SET_LIGHT_RANGE, new_range) & COMPONENT_BLOCK_LIGHT_UPDATE)
+ return
+ . = light_range
+ light_range = new_range
+ SEND_SIGNAL(src, COMSIG_ATOM_UPDATE_LIGHT_RANGE, .)
+
+/// Setter for the light color of this atom.
+/atom/proc/set_light_color(new_color)
+ if(new_color == light_color)
+ return
+ if(SEND_SIGNAL(src, COMSIG_ATOM_SET_LIGHT_COLOR, new_color) & COMPONENT_BLOCK_LIGHT_UPDATE)
+ return
+ . = light_color
+ light_color = new_color
+ SEND_SIGNAL(src, COMSIG_ATOM_UPDATE_LIGHT_COLOR, .)
+/*
+/// Setter for whether or not this atom's light is on.
+/atom/proc/set_light_on(new_value)
+ if(new_value == )
+ return
+ if(SEND_SIGNAL(src, COMSIG_ATOM_SET_LIGHT_ON, new_value) & COMPONENT_BLOCK_LIGHT_UPDATE)
+ return
+ . = light_on
+ light_on = new_value
+ SEND_SIGNAL(src, COMSIG_ATOM_UPDATE_LIGHT_ON, .)
+
+/// Setter for the light flags of this atom.
+/atom/proc/set_light_flags(new_value)
+ if(new_value == light_flags)
+ return
+ if(SEND_SIGNAL(src, COMSIG_ATOM_SET_LIGHT_FLAGS, new_value) & COMPONENT_BLOCK_LIGHT_UPDATE)
+ return
+ . = light_flags
+ light_flags = new_value
+ SEND_SIGNAL(src, COMSIG_ATOM_UPDATE_LIGHT_FLAGS, .)
+*/
diff --git a/code/modules/mob/dead/dead.dm b/code/modules/mob/dead/dead.dm
index 223366c7ab..5647bc2305 100644
--- a/code/modules/mob/dead/dead.dm
+++ b/code/modules/mob/dead/dead.dm
@@ -91,7 +91,7 @@ INITIALIZE_IMMEDIATE(/mob/dead)
var/client/C = client
to_chat(C, "Sending you to [pick].")
- new /obj/screen/splash(C)
+ new /atom/movable/screen/splash(C)
mob_transforming = TRUE
sleep(29) //let the animation play
diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm
index 11f1d58c0c..f7f3450f6e 100644
--- a/code/modules/mob/dead/new_player/new_player.dm
+++ b/code/modules/mob/dead/new_player/new_player.dm
@@ -21,7 +21,7 @@
/mob/dead/new_player/Initialize()
if(client && SSticker.state == GAME_STATE_STARTUP)
- var/obj/screen/splash/S = new(client, TRUE, TRUE)
+ var/atom/movable/screen/splash/S = new(client, TRUE, TRUE)
S.Fade(TRUE)
if(length(GLOB.newplayer_start))
@@ -567,7 +567,7 @@
if(job && !job.override_latejoin_spawn(character))
SSjob.SendToLateJoin(character)
if(!arrivals_docked)
- var/obj/screen/splash/Spl = new(character.client, TRUE)
+ var/atom/movable/screen/splash/Spl = new(character.client, TRUE)
Spl.Fade(TRUE)
character.playsound_local(get_turf(character), 'sound/voice/ApproachingTG.ogg', 25)
diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm
index 6c464c3cd1..429f00161b 100644
--- a/code/modules/mob/dead/observer/observer.dm
+++ b/code/modules/mob/dead/observer/observer.dm
@@ -447,7 +447,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
if(message)
to_chat(src, "[message]")
if(source)
- var/obj/screen/alert/A = throw_alert("[REF(source)]_notify_cloning", /obj/screen/alert/notify_cloning)
+ var/atom/movable/screen/alert/A = throw_alert("[REF(source)]_notify_cloning", /atom/movable/screen/alert/notify_cloning)
if(A)
if(client && client.prefs && client.prefs.UI_style)
A.icon = ui_style2icon(client.prefs.UI_style)
diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm
index f5970d9da2..e9a62d209b 100644
--- a/code/modules/mob/living/carbon/alien/alien.dm
+++ b/code/modules/mob/living/carbon/alien/alien.dm
@@ -78,7 +78,7 @@
if(bodytemperature > BODYTEMP_HEAT_DAMAGE_LIMIT)
//Body temperature is too hot.
- throw_alert("alien_fire", /obj/screen/alert/alien_fire)
+ throw_alert("alien_fire", /atom/movable/screen/alert/alien_fire)
switch(bodytemperature)
if(360 to 400)
apply_damage(HEAT_DAMAGE_LEVEL_1, BURN)
diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm
index 0ce8482ca1..a7044174b0 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm
@@ -7,7 +7,7 @@
meleeKnockdownPower = 75
meleeSlashHumanPower = 20
meleeSlashSAPower = 45
- var/obj/screen/leap_icon = null
+ var/atom/movable/screen/leap_icon = null
/mob/living/carbon/alien/humanoid/hunter/create_internal_organs()
internal_organs += new /obj/item/organ/alien/plasmavessel/small
diff --git a/code/modules/mob/living/carbon/alien/life.dm b/code/modules/mob/living/carbon/alien/life.dm
index cd994dfd10..530d2acd63 100644
--- a/code/modules/mob/living/carbon/alien/life.dm
+++ b/code/modules/mob/living/carbon/alien/life.dm
@@ -20,7 +20,7 @@
if(Toxins_pp > tox_detect_threshold) // Detect toxins in air
adjustPlasma(breath.get_moles(GAS_PLASMA)*250)
- throw_alert("alien_tox", /obj/screen/alert/alien_tox)
+ throw_alert("alien_tox", /atom/movable/screen/alert/alien_tox)
toxins_used = breath.get_moles(GAS_PLASMA)
diff --git a/code/modules/mob/living/carbon/alien/organs.dm b/code/modules/mob/living/carbon/alien/organs.dm
index 8e3966eb03..cae9280c61 100644
--- a/code/modules/mob/living/carbon/alien/organs.dm
+++ b/code/modules/mob/living/carbon/alien/organs.dm
@@ -141,7 +141,7 @@
owner.stuttering += 30
recent_queen_death = 1
- owner.throw_alert("alien_noqueen", /obj/screen/alert/alien_vulnerable)
+ owner.throw_alert("alien_noqueen", /atom/movable/screen/alert/alien_vulnerable)
addtimer(CALLBACK(src, .proc/clear_queen_death), QUEEN_DEATH_DEBUFF_DURATION)
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index 44379660b6..541db47431 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -57,7 +57,7 @@
var/oindex = active_hand_index
active_hand_index = held_index
if(hud_used)
- var/obj/screen/inventory/hand/H
+ var/atom/movable/screen/inventory/hand/H
H = hud_used.hand_slots["[oindex]"]
if(H)
H.update_icon()
@@ -158,7 +158,7 @@
throw_mode_off()
if(!target || !isturf(loc))
return
- if(istype(target, /obj/screen))
+ if(istype(target, /atom/movable/screen))
return
//CIT CHANGES - makes it impossible to throw while in stamina softcrit
@@ -699,7 +699,7 @@
become_blind(EYES_COVERED)
else if(tinttotal >= TINT_DARKENED)
cure_blind(EYES_COVERED)
- overlay_fullscreen("tint", /obj/screen/fullscreen/impaired, 2)
+ overlay_fullscreen("tint", /atom/movable/screen/fullscreen/impaired, 2)
else
cure_blind(EYES_COVERED)
clear_fullscreen("tint", 0)
@@ -775,10 +775,10 @@
visionseverity = 9
if(-INFINITY to -24)
visionseverity = 10
- overlay_fullscreen("critvision", /obj/screen/fullscreen/crit/vision, visionseverity)
+ overlay_fullscreen("critvision", /atom/movable/screen/fullscreen/crit/vision, visionseverity)
else
clear_fullscreen("critvision")
- overlay_fullscreen("crit", /obj/screen/fullscreen/crit, severity)
+ overlay_fullscreen("crit", /atom/movable/screen/fullscreen/crit, severity)
else
clear_fullscreen("crit")
clear_fullscreen("critvision")
@@ -802,7 +802,7 @@
severity = 6
if(45 to INFINITY)
severity = 7
- overlay_fullscreen("oxy", /obj/screen/fullscreen/oxy, severity)
+ overlay_fullscreen("oxy", /atom/movable/screen/fullscreen/oxy, severity)
else
clear_fullscreen("oxy")
@@ -823,7 +823,7 @@
severity = 5
if(85 to INFINITY)
severity = 6
- overlay_fullscreen("brute", /obj/screen/fullscreen/brute, severity)
+ overlay_fullscreen("brute", /atom/movable/screen/fullscreen/brute, severity)
else
clear_fullscreen("brute")
@@ -888,7 +888,7 @@
if(handcuffed)
drop_all_held_items()
stop_pulling()
- throw_alert("handcuffed", /obj/screen/alert/restrained/handcuffed, new_master = src.handcuffed)
+ throw_alert("handcuffed", /atom/movable/screen/alert/restrained/handcuffed, new_master = src.handcuffed)
if(handcuffed.demoralize_criminals)
SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "handcuffed", /datum/mood_event/handcuffed)
else
diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm
index b2c14c30fe..46ba9a5eb0 100644
--- a/code/modules/mob/living/carbon/carbon_defense.dm
+++ b/code/modules/mob/living/carbon/carbon_defense.dm
@@ -361,7 +361,7 @@
return embeds
-/mob/living/carbon/flash_act(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0, type = /obj/screen/fullscreen/flash, override_protection = 0)
+/mob/living/carbon/flash_act(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0, type = /atom/movable/screen/fullscreen/flash, override_protection = 0)
. = ..()
var/damage = override_protection ? intensity : intensity - get_eye_protection()
diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm
index c4d023da58..b135ae9cd8 100644
--- a/code/modules/mob/living/carbon/human/inventory.dm
+++ b/code/modules/mob/living/carbon/human/inventory.dm
@@ -209,7 +209,7 @@
update_tint()
if(G.vision_correction)
if(HAS_TRAIT(src, TRAIT_NEARSIGHT))
- overlay_fullscreen("nearsighted", /obj/screen/fullscreen/impaired, 1)
+ overlay_fullscreen("nearsighted", /atom/movable/screen/fullscreen/impaired, 1)
if(G.vision_flags || G.darkness_view || G.invis_override || G.invis_view || !isnull(G.lighting_alpha))
update_sight()
if(!QDELETED(src))
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index 767250c863..b43cd266be 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -89,15 +89,15 @@
var/datum/species/S = dna.species
if(S.breathid == "o2")
- throw_alert("not_enough_oxy", /obj/screen/alert/not_enough_oxy)
+ throw_alert("not_enough_oxy", /atom/movable/screen/alert/not_enough_oxy)
else if(S.breathid == "tox")
- throw_alert("not_enough_tox", /obj/screen/alert/not_enough_tox)
+ throw_alert("not_enough_tox", /atom/movable/screen/alert/not_enough_tox)
else if(S.breathid == "co2")
- throw_alert("not_enough_co2", /obj/screen/alert/not_enough_co2)
+ throw_alert("not_enough_co2", /atom/movable/screen/alert/not_enough_co2)
else if(S.breathid == "n2")
- throw_alert("not_enough_nitro", /obj/screen/alert/not_enough_nitro)
+ throw_alert("not_enough_nitro", /atom/movable/screen/alert/not_enough_nitro)
else if(S.breathid == "ch3br")
- throw_alert("not_enough_ch3br", /obj/screen/alert/not_enough_ch3br)
+ throw_alert("not_enough_ch3br", /atom/movable/screen/alert/not_enough_ch3br)
return FALSE
else
diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm
index 8405a89ce2..f270e215eb 100644
--- a/code/modules/mob/living/carbon/human/species.dm
+++ b/code/modules/mob/living/carbon/human/species.dm
@@ -1459,13 +1459,13 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
switch(H.nutrition)
if(NUTRITION_LEVEL_FULL to INFINITY)
- H.throw_alert("nutrition", /obj/screen/alert/fat)
+ H.throw_alert("nutrition", /atom/movable/screen/alert/fat)
if(NUTRITION_LEVEL_HUNGRY to NUTRITION_LEVEL_FULL)
H.clear_alert("nutrition")
if(NUTRITION_LEVEL_STARVING to NUTRITION_LEVEL_HUNGRY)
- H.throw_alert("nutrition", /obj/screen/alert/hungry)
+ H.throw_alert("nutrition", /atom/movable/screen/alert/hungry)
if(0 to NUTRITION_LEVEL_STARVING)
- H.throw_alert("nutrition", /obj/screen/alert/starving)
+ H.throw_alert("nutrition", /atom/movable/screen/alert/starving)
/datum/species/proc/update_health_hud(mob/living/carbon/human/H)
return 0
@@ -2169,19 +2169,19 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
H.adjust_bodytemperature(natural*(1/(thermal_protection+1)) + min(thermal_protection * (loc_temp - H.bodytemperature) / BODYTEMP_HEAT_DIVISOR, BODYTEMP_HEATING_MAX))
switch((loc_temp - H.bodytemperature)*thermal_protection)
if(-INFINITY to -50)
- H.throw_alert("tempfeel", /obj/screen/alert/cold, 3)
+ H.throw_alert("tempfeel", /atom/movable/screen/alert/cold, 3)
if(-50 to -35)
- H.throw_alert("tempfeel", /obj/screen/alert/cold, 2)
+ H.throw_alert("tempfeel", /atom/movable/screen/alert/cold, 2)
if(-35 to -20)
- H.throw_alert("tempfeel", /obj/screen/alert/cold, 1)
+ H.throw_alert("tempfeel", /atom/movable/screen/alert/cold, 1)
if(-20 to 0) //This is the sweet spot where air is considered normal
H.clear_alert("tempfeel")
if(0 to 15) //When the air around you matches your body's temperature, you'll start to feel warm.
- H.throw_alert("tempfeel", /obj/screen/alert/hot, 1)
+ H.throw_alert("tempfeel", /atom/movable/screen/alert/hot, 1)
if(15 to 30)
- H.throw_alert("tempfeel", /obj/screen/alert/hot, 2)
+ H.throw_alert("tempfeel", /atom/movable/screen/alert/hot, 2)
if(30 to INFINITY)
- H.throw_alert("tempfeel", /obj/screen/alert/hot, 3)
+ H.throw_alert("tempfeel", /atom/movable/screen/alert/hot, 3)
// +/- 50 degrees from 310K is the 'safe' zone, where no damage is dealt.
if(H.bodytemperature > BODYTEMP_HEAT_DAMAGE_LIMIT && !HAS_TRAIT(H, TRAIT_RESISTHEAT))
@@ -2202,11 +2202,11 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
if (burn_damage)
switch(burn_damage)
if(0 to 2)
- H.throw_alert("temp", /obj/screen/alert/sweat, 1)
+ H.throw_alert("temp", /atom/movable/screen/alert/sweat, 1)
if(2 to 4)
- H.throw_alert("temp", /obj/screen/alert/sweat, 2)
+ H.throw_alert("temp", /atom/movable/screen/alert/sweat, 2)
else
- H.throw_alert("temp", /obj/screen/alert/sweat, 3)
+ H.throw_alert("temp", /atom/movable/screen/alert/sweat, 3)
burn_damage = burn_damage * heatmod * H.physiology.heat_mod
if (H.stat < UNCONSCIOUS && (prob(burn_damage) * 10) / 4) //40% for level 3 damage on humans
H.emote("scream")
@@ -2219,13 +2219,13 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
H.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/cold, multiplicative_slowdown = ((BODYTEMP_COLD_DAMAGE_LIMIT - H.bodytemperature) / COLD_SLOWDOWN_FACTOR))
switch(H.bodytemperature)
if(200 to BODYTEMP_COLD_DAMAGE_LIMIT)
- H.throw_alert("temp", /obj/screen/alert/shiver, 1)
+ H.throw_alert("temp", /atom/movable/screen/alert/shiver, 1)
H.apply_damage(COLD_DAMAGE_LEVEL_1*coldmod*H.physiology.cold_mod, BURN)
if(120 to 200)
- H.throw_alert("temp", /obj/screen/alert/shiver, 2)
+ H.throw_alert("temp", /atom/movable/screen/alert/shiver, 2)
H.apply_damage(COLD_DAMAGE_LEVEL_2*coldmod*H.physiology.cold_mod, BURN)
else
- H.throw_alert("temp", /obj/screen/alert/shiver, 3)
+ H.throw_alert("temp", /atom/movable/screen/alert/shiver, 3)
H.apply_damage(COLD_DAMAGE_LEVEL_3*coldmod*H.physiology.cold_mod, BURN)
else
@@ -2240,21 +2240,21 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
if(HAZARD_HIGH_PRESSURE to INFINITY)
if(!HAS_TRAIT(H, TRAIT_RESISTHIGHPRESSURE))
H.adjustBruteLoss(min(((adjusted_pressure / HAZARD_HIGH_PRESSURE) -1 ) * PRESSURE_DAMAGE_COEFFICIENT, MAX_HIGH_PRESSURE_DAMAGE) * H.physiology.pressure_mod)
- H.throw_alert("pressure", /obj/screen/alert/highpressure, 2)
+ H.throw_alert("pressure", /atom/movable/screen/alert/highpressure, 2)
else
H.clear_alert("pressure")
if(WARNING_HIGH_PRESSURE to HAZARD_HIGH_PRESSURE)
- H.throw_alert("pressure", /obj/screen/alert/highpressure, 1)
+ H.throw_alert("pressure", /atom/movable/screen/alert/highpressure, 1)
if(WARNING_LOW_PRESSURE to WARNING_HIGH_PRESSURE)
H.clear_alert("pressure")
if(HAZARD_LOW_PRESSURE to WARNING_LOW_PRESSURE)
- H.throw_alert("pressure", /obj/screen/alert/lowpressure, 1)
+ H.throw_alert("pressure", /atom/movable/screen/alert/lowpressure, 1)
else
if(HAS_TRAIT(H, TRAIT_RESISTLOWPRESSURE))
H.clear_alert("pressure")
else
H.adjustBruteLoss(LOW_PRESSURE_DAMAGE * H.physiology.pressure_mod)
- H.throw_alert("pressure", /obj/screen/alert/lowpressure, 2)
+ H.throw_alert("pressure", /atom/movable/screen/alert/lowpressure, 2)
//////////
// FIRE //
diff --git a/code/modules/mob/living/carbon/human/species_types/ethereal.dm b/code/modules/mob/living/carbon/human/species_types/ethereal.dm
index d92f4ab14a..ae7a7546e1 100644
--- a/code/modules/mob/living/carbon/human/species_types/ethereal.dm
+++ b/code/modules/mob/living/carbon/human/species_types/ethereal.dm
@@ -124,21 +124,21 @@
brutemod = 1.25
switch(get_charge(H))
if(ETHEREAL_CHARGE_NONE)
- H.throw_alert("ethereal_charge", /obj/screen/alert/etherealcharge, 3)
+ H.throw_alert("ethereal_charge", /atom/movable/screen/alert/etherealcharge, 3)
if(ETHEREAL_CHARGE_NONE to ETHEREAL_CHARGE_LOWPOWER)
- H.throw_alert("ethereal_charge", /obj/screen/alert/etherealcharge, 2)
+ H.throw_alert("ethereal_charge", /atom/movable/screen/alert/etherealcharge, 2)
if(H.health > 10.5)
apply_damage(0.65, TOX, null, null, H)
brutemod = 1.75
if(ETHEREAL_CHARGE_LOWPOWER to ETHEREAL_CHARGE_NORMAL)
- H.throw_alert("ethereal_charge", /obj/screen/alert/etherealcharge, 1)
+ H.throw_alert("ethereal_charge", /atom/movable/screen/alert/etherealcharge, 1)
brutemod = 1.5
if(ETHEREAL_CHARGE_FULL to ETHEREAL_CHARGE_OVERLOAD)
- H.throw_alert("ethereal_overcharge", /obj/screen/alert/ethereal_overcharge, 1)
+ H.throw_alert("ethereal_overcharge", /atom/movable/screen/alert/ethereal_overcharge, 1)
apply_damage(0.2, TOX, null, null, H)
brutemod = 1.5
if(ETHEREAL_CHARGE_OVERLOAD to ETHEREAL_CHARGE_DANGEROUS)
- H.throw_alert("ethereal_overcharge", /obj/screen/alert/ethereal_overcharge, 2)
+ H.throw_alert("ethereal_overcharge", /atom/movable/screen/alert/ethereal_overcharge, 2)
apply_damage(0.65, TOX, null, null, H)
brutemod = 1.75
if(prob(10)) //10% each tick for ethereals to explosively release excess energy if it reaches dangerous levels
diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm
index 2f463fa8bc..7a5bcc9e3a 100644
--- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm
@@ -505,7 +505,7 @@
button_icon_state = "slimeeject"
..()
-/datum/action/innate/integrate_extract/ApplyIcon(obj/screen/movable/action_button/current_button, force)
+/datum/action/innate/integrate_extract/ApplyIcon(atom/movable/screen/movable/action_button/current_button, force)
..(current_button, TRUE)
if(species && species.current_extract)
current_button.add_overlay(mutable_appearance(species.current_extract.icon, species.current_extract.icon_state))
@@ -559,7 +559,7 @@
return TRUE
return FALSE
-/datum/action/innate/use_extract/ApplyIcon(obj/screen/movable/action_button/current_button, force)
+/datum/action/innate/use_extract/ApplyIcon(atom/movable/screen/movable/action_button/current_button, force)
..(current_button, TRUE)
if(species && species.current_extract)
current_button.add_overlay(mutable_appearance(species.current_extract.icon, species.current_extract.icon_state))
diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm
index f18d768df3..52d736f9ce 100644
--- a/code/modules/mob/living/carbon/human/update_icons.dm
+++ b/code/modules/mob/living/carbon/human/update_icons.dm
@@ -128,7 +128,7 @@ There are several things that need to be remembered:
remove_overlay(UNIFORM_LAYER)
if(client && hud_used)
- var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_W_UNIFORM]
+ var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_W_UNIFORM]
inv.update_icon()
if(istype(w_uniform, /obj/item/clothing/under))
@@ -180,7 +180,7 @@ There are several things that need to be remembered:
remove_overlay(ID_LAYER)
if(client && hud_used)
- var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_WEAR_ID]
+ var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_WEAR_ID]
inv.update_icon()
var/mutable_appearance/id_overlay = overlays_standing[ID_LAYER]
@@ -205,7 +205,7 @@ There are several things that need to be remembered:
remove_overlay(GLOVES_LAYER)
if(client && hud_used && hud_used.inv_slots[SLOT_GLOVES])
- var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_GLOVES]
+ var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_GLOVES]
inv.update_icon()
if(!gloves && bloody_hands)
@@ -242,7 +242,7 @@ There are several things that need to be remembered:
return
if(client && hud_used)
- var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_GLASSES]
+ var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_GLASSES]
inv.update_icon()
if(glasses)
@@ -269,7 +269,7 @@ There are several things that need to be remembered:
return
if(client && hud_used)
- var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_EARS]
+ var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_EARS]
inv.update_icon()
if(ears)
@@ -295,7 +295,7 @@ There are several things that need to be remembered:
return
if(client && hud_used)
- var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_SHOES]
+ var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_SHOES]
inv.update_icon()
if(dna.species.mutant_bodyparts["taur"])
@@ -330,7 +330,7 @@ There are several things that need to be remembered:
remove_overlay(SUIT_STORE_LAYER)
if(client && hud_used)
- var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_S_STORE]
+ var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_S_STORE]
inv.update_icon()
if(s_store)
@@ -357,7 +357,7 @@ There are several things that need to be remembered:
return
if(client && hud_used)
- var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_HEAD]
+ var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_HEAD]
inv.update_icon()
if(head)
@@ -394,7 +394,7 @@ There are several things that need to be remembered:
remove_overlay(BELT_LAYER)
if(client && hud_used)
- var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_BELT]
+ var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_BELT]
inv.update_icon()
if(belt)
@@ -416,7 +416,7 @@ There are several things that need to be remembered:
remove_overlay(SUIT_LAYER)
if(client && hud_used)
- var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_WEAR_SUIT]
+ var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_WEAR_SUIT]
inv.update_icon()
if(wear_suit)
@@ -477,7 +477,7 @@ There are several things that need to be remembered:
/mob/living/carbon/human/update_inv_pockets()
if(client && hud_used)
- var/obj/screen/inventory/inv
+ var/atom/movable/screen/inventory/inv
inv = hud_used.inv_slots[SLOT_L_STORE]
inv.update_icon()
@@ -506,7 +506,7 @@ There are several things that need to be remembered:
return
if(client && hud_used)
- var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_WEAR_MASK]
+ var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_WEAR_MASK]
inv.update_icon()
if(wear_mask)
diff --git a/code/modules/mob/living/carbon/inventory.dm b/code/modules/mob/living/carbon/inventory.dm
index 0447de6064..fca7c1f72c 100644
--- a/code/modules/mob/living/carbon/inventory.dm
+++ b/code/modules/mob/living/carbon/inventory.dm
@@ -183,7 +183,7 @@
if(!targets)
return
for(var/mob/living/carbon/C in targets)
- var/obj/screen/alert/give/G = C.throw_alert("[src]", /obj/screen/alert/give)
+ var/atom/movable/screen/alert/give/G = C.throw_alert("[src]", /atom/movable/screen/alert/give)
if(!G)
return
G.setup(C, src, receiving)
diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm
index f42661ca47..6f0f5453da 100644
--- a/code/modules/mob/living/carbon/life.dm
+++ b/code/modules/mob/living/carbon/life.dm
@@ -155,7 +155,7 @@
adjustOxyLoss(1)
failed_last_breath = 1
- throw_alert("not_enough_oxy", /obj/screen/alert/not_enough_oxy)
+ throw_alert("not_enough_oxy", /atom/movable/screen/alert/not_enough_oxy)
return 0
var/safe_oxy_min = 16
@@ -183,7 +183,7 @@
adjustOxyLoss(8)
if(prob(20))
emote("cough")
- throw_alert("too_much_oxy", /obj/screen/alert/too_much_oxy)
+ throw_alert("too_much_oxy", /atom/movable/screen/alert/too_much_oxy)
SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "suffocation", /datum/mood_event/suffocation)
if(O2_partialpressure < safe_oxy_min) //Not enough oxygen
@@ -197,7 +197,7 @@
else
adjustOxyLoss(3)
failed_last_breath = 1
- throw_alert("not_enough_oxy", /obj/screen/alert/not_enough_oxy)
+ throw_alert("not_enough_oxy", /atom/movable/screen/alert/not_enough_oxy)
SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "suffocation", /datum/mood_event/suffocation)
else //Enough oxygen
@@ -231,7 +231,7 @@
if(Toxins_partialpressure > safe_tox_max)
var/ratio = (breath.get_moles(GAS_PLASMA)/safe_tox_max) * 10
adjustToxLoss(clamp(ratio, MIN_TOXIC_GAS_DAMAGE, MAX_TOXIC_GAS_DAMAGE))
- throw_alert("too_much_tox", /obj/screen/alert/too_much_tox)
+ throw_alert("too_much_tox", /atom/movable/screen/alert/too_much_tox)
else
clear_alert("too_much_tox")
diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm
index 9e6431985c..480cbebe11 100644
--- a/code/modules/mob/living/carbon/monkey/life.dm
+++ b/code/modules/mob/living/carbon/monkey/life.dm
@@ -80,13 +80,13 @@
if(bodytemperature > BODYTEMP_HEAT_DAMAGE_LIMIT && !HAS_TRAIT(src, TRAIT_RESISTHEAT))
switch(bodytemperature)
if(360 to 400)
- throw_alert("temp", /obj/screen/alert/hot, 1)
+ throw_alert("temp", /atom/movable/screen/alert/hot, 1)
apply_damage(HEAT_DAMAGE_LEVEL_1, BURN)
if(400 to 460)
- throw_alert("temp", /obj/screen/alert/hot, 2)
+ throw_alert("temp", /atom/movable/screen/alert/hot, 2)
apply_damage(HEAT_DAMAGE_LEVEL_2, BURN)
if(460 to INFINITY)
- throw_alert("temp", /obj/screen/alert/hot, 3)
+ throw_alert("temp", /atom/movable/screen/alert/hot, 3)
if(on_fire)
apply_damage(HEAT_DAMAGE_LEVEL_3, BURN)
else
@@ -96,13 +96,13 @@
if(!istype(loc, /obj/machinery/atmospherics/components/unary/cryo_cell))
switch(bodytemperature)
if(200 to 260)
- throw_alert("temp", /obj/screen/alert/cold, 1)
+ throw_alert("temp", /atom/movable/screen/alert/cold, 1)
apply_damage(COLD_DAMAGE_LEVEL_1, BURN)
if(120 to 200)
- throw_alert("temp", /obj/screen/alert/cold, 2)
+ throw_alert("temp", /atom/movable/screen/alert/cold, 2)
apply_damage(COLD_DAMAGE_LEVEL_2, BURN)
if(-INFINITY to 120)
- throw_alert("temp", /obj/screen/alert/cold, 3)
+ throw_alert("temp", /atom/movable/screen/alert/cold, 3)
apply_damage(COLD_DAMAGE_LEVEL_3, BURN)
else
clear_alert("temp")
@@ -117,16 +117,16 @@
switch(adjusted_pressure)
if(HAZARD_HIGH_PRESSURE to INFINITY)
adjustBruteLoss( min( ( (adjusted_pressure / HAZARD_HIGH_PRESSURE) -1 )*PRESSURE_DAMAGE_COEFFICIENT , MAX_HIGH_PRESSURE_DAMAGE) )
- throw_alert("pressure", /obj/screen/alert/highpressure, 2)
+ throw_alert("pressure", /atom/movable/screen/alert/highpressure, 2)
if(WARNING_HIGH_PRESSURE to HAZARD_HIGH_PRESSURE)
- throw_alert("pressure", /obj/screen/alert/highpressure, 1)
+ throw_alert("pressure", /atom/movable/screen/alert/highpressure, 1)
if(WARNING_LOW_PRESSURE to WARNING_HIGH_PRESSURE)
clear_alert("pressure")
if(HAZARD_LOW_PRESSURE to WARNING_LOW_PRESSURE)
- throw_alert("pressure", /obj/screen/alert/lowpressure, 1)
+ throw_alert("pressure", /atom/movable/screen/alert/lowpressure, 1)
else
adjustBruteLoss( LOW_PRESSURE_DAMAGE )
- throw_alert("pressure", /obj/screen/alert/lowpressure, 2)
+ throw_alert("pressure", /atom/movable/screen/alert/lowpressure, 2)
return
diff --git a/code/modules/mob/living/carbon/monkey/update_icons.dm b/code/modules/mob/living/carbon/monkey/update_icons.dm
index 43f57ea40d..cd1a5896eb 100644
--- a/code/modules/mob/living/carbon/monkey/update_icons.dm
+++ b/code/modules/mob/living/carbon/monkey/update_icons.dm
@@ -51,7 +51,7 @@
overlays_standing[HANDCUFF_LAYER] = legcuffs
apply_overlay(LEGCUFF_LAYER)
- throw_alert("legcuffed", /obj/screen/alert/restrained/legcuffed, new_master = legcuffed)
+ throw_alert("legcuffed", /atom/movable/screen/alert/restrained/legcuffed, new_master = legcuffed)
//monkey HUD updates for items in our inventory
diff --git a/code/modules/mob/living/carbon/status_procs.dm b/code/modules/mob/living/carbon/status_procs.dm
index d602c25331..5b5aa9d5c0 100644
--- a/code/modules/mob/living/carbon/status_procs.dm
+++ b/code/modules/mob/living/carbon/status_procs.dm
@@ -5,8 +5,8 @@
/mob/living/carbon/adjust_drugginess(amount)
druggy = max(druggy+amount, 0)
if(druggy)
- overlay_fullscreen("high", /obj/screen/fullscreen/high)
- throw_alert("high", /obj/screen/alert/high)
+ overlay_fullscreen("high", /atom/movable/screen/fullscreen/high)
+ throw_alert("high", /atom/movable/screen/alert/high)
SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "high", /datum/mood_event/high)
sound_environment_override = SOUND_ENVIRONMENT_DRUGGED
else
@@ -18,8 +18,8 @@
/mob/living/carbon/set_drugginess(amount)
druggy = max(amount, 0)
if(druggy)
- overlay_fullscreen("high", /obj/screen/fullscreen/high)
- throw_alert("high", /obj/screen/alert/high)
+ overlay_fullscreen("high", /atom/movable/screen/fullscreen/high)
+ throw_alert("high", /atom/movable/screen/alert/high)
else
clear_fullscreen("high")
clear_alert("high")
diff --git a/code/modules/mob/living/carbon/update_icons.dm b/code/modules/mob/living/carbon/update_icons.dm
index a1ea18a8b9..43e0db1f08 100644
--- a/code/modules/mob/living/carbon/update_icons.dm
+++ b/code/modules/mob/living/carbon/update_icons.dm
@@ -91,7 +91,7 @@
return
if(client && hud_used)
- var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_WEAR_MASK]
+ var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_WEAR_MASK]
inv?.update_icon()
if(wear_mask)
@@ -105,7 +105,7 @@
remove_overlay(NECK_LAYER)
if(client && hud_used && hud_used.inv_slots[SLOT_NECK])
- var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_NECK]
+ var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_NECK]
inv.update_icon()
if(wear_neck)
@@ -119,7 +119,7 @@
remove_overlay(BACK_LAYER)
if(client && hud_used)
- var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_BACK]
+ var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_BACK]
inv?.update_icon()
if(back)
@@ -135,7 +135,7 @@
return
if(client && hud_used)
- var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_HEAD]
+ var/atom/movable/screen/inventory/inv = hud_used.inv_slots[SLOT_HEAD]
inv?.update_icon()
if(head)
@@ -163,7 +163,7 @@
overlays_standing[LEGCUFF_LAYER] = legcuffs
apply_overlay(LEGCUFF_LAYER)
- throw_alert("legcuffed", /obj/screen/alert/restrained/legcuffed, new_master = legcuffed)
+ throw_alert("legcuffed", /atom/movable/screen/alert/restrained/legcuffed, new_master = legcuffed)
//mob HUD updates for items in our inventory
@@ -171,7 +171,7 @@
/mob/living/carbon/proc/update_hud_handcuffed()
if(hud_used)
for(var/hand in hud_used.hand_slots)
- var/obj/screen/inventory/hand/H = hud_used.hand_slots[hand]
+ var/atom/movable/screen/inventory/hand/H = hud_used.hand_slots[hand]
if(H)
H.update_icon()
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index a3e6b28fd6..5603801dce 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -548,7 +548,7 @@
var/severity = 0
var/healthpercent = (health/maxHealth) * 100
if(hud_used?.healthdoll) //to really put you in the boots of a simplemob
- var/obj/screen/healthdoll/living/livingdoll = hud_used.healthdoll
+ var/atom/movable/screen/healthdoll/living/livingdoll = hud_used.healthdoll
switch(healthpercent)
if(100 to INFINITY)
livingdoll.icon_state = "living0"
@@ -579,7 +579,7 @@
UNLINT(livingdoll.filters += filter(type="alpha", icon = mob_mask))
livingdoll.filters += filter(type="drop_shadow", size = -1)
if(severity > 0)
- overlay_fullscreen("brute", /obj/screen/fullscreen/brute, severity)
+ overlay_fullscreen("brute", /atom/movable/screen/fullscreen/brute, severity)
else
clear_fullscreen("brute")
@@ -869,11 +869,11 @@
clear_alert("gravity")
else
if(has_gravity >= GRAVITY_DAMAGE_TRESHOLD)
- throw_alert("gravity", /obj/screen/alert/veryhighgravity)
+ throw_alert("gravity", /atom/movable/screen/alert/veryhighgravity)
else
- throw_alert("gravity", /obj/screen/alert/highgravity)
+ throw_alert("gravity", /atom/movable/screen/alert/highgravity)
else
- throw_alert("gravity", /obj/screen/alert/weightless)
+ throw_alert("gravity", /atom/movable/screen/alert/weightless)
if(!override && !is_flying())
INVOKE_ASYNC(src, /atom/movable.proc/float, !has_gravity)
@@ -1159,7 +1159,7 @@
visible_message("[src] catches fire!", \
"You're set on fire!")
new/obj/effect/dummy/lighting_obj/moblight/fire(src)
- throw_alert("fire", /obj/screen/alert/fire)
+ throw_alert("fire", /atom/movable/screen/alert/fire)
update_fire()
SEND_SIGNAL(src, COMSIG_LIVING_IGNITED,src)
return TRUE
diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm
index 4c6ede3904..2888507baa 100644
--- a/code/modules/mob/living/living_defense.dm
+++ b/code/modules/mob/living/living_defense.dm
@@ -539,7 +539,7 @@
//called when the mob receives a bright flash
-/mob/living/proc/flash_act(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0, type = /obj/screen/fullscreen/flash, override_protection = 0)
+/mob/living/proc/flash_act(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0, type = /atom/movable/screen/fullscreen/flash, override_protection = 0)
if((override_protection || get_eye_protection() < intensity) && (override_blindness_check || !(HAS_TRAIT(src, TRAIT_BLIND))))
overlay_fullscreen("flash", type)
addtimer(CALLBACK(src, .proc/clear_fullscreen, "flash", 25), 25)
diff --git a/code/modules/mob/living/living_sprint.dm b/code/modules/mob/living/living_sprint.dm
index 728645c3eb..3fbc229385 100644
--- a/code/modules/mob/living/living_sprint.dm
+++ b/code/modules/mob/living/living_sprint.dm
@@ -3,7 +3,7 @@
RegisterSignal(src, SIGNAL_TRAIT(TRAIT_SPRINT_LOCKED), .proc/update_sprint_lock)
/mob/living/proc/update_sprint_icon()
- var/obj/screen/sprintbutton/S = locate() in hud_used?.static_inventory
+ var/atom/movable/screen/sprintbutton/S = locate() in hud_used?.static_inventory
S?.update_icon()
/mob/living/proc/update_hud_sprint_bar()
diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm
index 1f582b68bf..b2b1d2fb5f 100644
--- a/code/modules/mob/living/silicon/ai/ai.dm
+++ b/code/modules/mob/living/silicon/ai/ai.dm
@@ -91,7 +91,7 @@
var/multicam_on = FALSE
- var/obj/screen/movable/pic_in_pic/ai/master_multicam
+ var/atom/movable/screen/movable/pic_in_pic/ai/master_multicam
var/list/multicam_screens = list()
var/list/all_eyes = list()
var/max_multicams = 6
diff --git a/code/modules/mob/living/silicon/ai/multicam.dm b/code/modules/mob/living/silicon/ai/multicam.dm
index ba92932579..54713acac4 100644
--- a/code/modules/mob/living/silicon/ai/multicam.dm
+++ b/code/modules/mob/living/silicon/ai/multicam.dm
@@ -1,34 +1,34 @@
//Picture in picture
-/obj/screen/movable/pic_in_pic/ai
+/atom/movable/screen/movable/pic_in_pic/ai
var/mob/living/silicon/ai/ai
var/mutable_appearance/highlighted_background
var/highlighted = FALSE
var/mob/camera/aiEye/pic_in_pic/aiEye
-/obj/screen/movable/pic_in_pic/ai/Initialize()
+/atom/movable/screen/movable/pic_in_pic/ai/Initialize()
. = ..()
aiEye = new /mob/camera/aiEye/pic_in_pic()
aiEye.screen = src
-/obj/screen/movable/pic_in_pic/ai/Destroy()
+/atom/movable/screen/movable/pic_in_pic/ai/Destroy()
set_ai(null)
QDEL_NULL(aiEye)
return ..()
-/obj/screen/movable/pic_in_pic/ai/Click()
+/atom/movable/screen/movable/pic_in_pic/ai/Click()
..()
if(ai)
ai.select_main_multicam_window(src)
-/obj/screen/movable/pic_in_pic/ai/make_backgrounds()
+/atom/movable/screen/movable/pic_in_pic/ai/make_backgrounds()
..()
highlighted_background = new /mutable_appearance()
highlighted_background.icon = 'icons/misc/pic_in_pic.dmi'
highlighted_background.icon_state = "background_highlight"
highlighted_background.layer = SPACE_LAYER
-/obj/screen/movable/pic_in_pic/ai/add_background()
+/atom/movable/screen/movable/pic_in_pic/ai/add_background()
if((width > 0) && (height > 0))
var/matrix/M = matrix()
M.Scale(width + 0.5, height + 0.5)
@@ -37,35 +37,35 @@
standard_background.transform = M
add_overlay(highlighted ? highlighted_background : standard_background)
-/obj/screen/movable/pic_in_pic/ai/set_view_size(width, height, do_refresh = TRUE)
+/atom/movable/screen/movable/pic_in_pic/ai/set_view_size(width, height, do_refresh = TRUE)
aiEye.static_visibility_range = (round(max(width, height) / 2) + 1)
if(ai)
ai.camera_visibility(aiEye)
..()
-/obj/screen/movable/pic_in_pic/ai/set_view_center(atom/target, do_refresh = TRUE)
+/atom/movable/screen/movable/pic_in_pic/ai/set_view_center(atom/target, do_refresh = TRUE)
..()
aiEye.setLoc(get_turf(target))
-/obj/screen/movable/pic_in_pic/ai/refresh_view()
+/atom/movable/screen/movable/pic_in_pic/ai/refresh_view()
..()
aiEye.setLoc(get_turf(center))
-/obj/screen/movable/pic_in_pic/ai/proc/highlight()
+/atom/movable/screen/movable/pic_in_pic/ai/proc/highlight()
if(highlighted)
return
highlighted = TRUE
cut_overlay(standard_background)
add_overlay(highlighted_background)
-/obj/screen/movable/pic_in_pic/ai/proc/unhighlight()
+/atom/movable/screen/movable/pic_in_pic/ai/proc/unhighlight()
if(!highlighted)
return
highlighted = FALSE
cut_overlay(highlighted_background)
add_overlay(standard_background)
-/obj/screen/movable/pic_in_pic/ai/proc/set_ai(mob/living/silicon/ai/new_ai)
+/atom/movable/screen/movable/pic_in_pic/ai/proc/set_ai(mob/living/silicon/ai/new_ai)
if(ai)
ai.multicam_screens -= src
ai.all_eyes -= aiEye
@@ -120,7 +120,7 @@ GLOBAL_DATUM(ai_camera_room_landmark, /obj/effect/landmark/ai_multicam_room)
invisibility = INVISIBILITY_OBSERVER
mouse_opacity = MOUSE_OPACITY_ICON
icon_state = "ai_pip_camera"
- var/obj/screen/movable/pic_in_pic/ai/screen
+ var/atom/movable/screen/movable/pic_in_pic/ai/screen
var/list/cameras_telegraphed = list()
var/telegraph_cameras = TRUE
var/telegraph_range = 7
@@ -204,7 +204,7 @@ GLOBAL_DATUM(ai_camera_room_landmark, /obj/effect/landmark/ai_multicam_room)
if(!silent)
to_chat(src, "Cannot place more than [max_multicams] multicamera windows.")
return
- var/obj/screen/movable/pic_in_pic/ai/C = new /obj/screen/movable/pic_in_pic/ai()
+ var/atom/movable/screen/movable/pic_in_pic/ai/C = new /atom/movable/screen/movable/pic_in_pic/ai()
C.set_view_size(3, 3, FALSE)
C.set_view_center(get_turf(eyeobj))
C.set_ai(src)
@@ -235,7 +235,7 @@ GLOBAL_DATUM(ai_camera_room_landmark, /obj/effect/landmark/ai_multicam_room)
reset_perspective(GLOB.ai_camera_room_landmark)
if(client)
for(var/V in multicam_screens)
- var/obj/screen/movable/pic_in_pic/P = V
+ var/atom/movable/screen/movable/pic_in_pic/P = V
P.show_to(client)
/mob/living/silicon/ai/proc/end_multicam()
@@ -245,13 +245,13 @@ GLOBAL_DATUM(ai_camera_room_landmark, /obj/effect/landmark/ai_multicam_room)
select_main_multicam_window(null)
if(client)
for(var/V in multicam_screens)
- var/obj/screen/movable/pic_in_pic/P = V
+ var/atom/movable/screen/movable/pic_in_pic/P = V
P.unshow_to(client)
reset_perspective()
to_chat(src, "Multiple-camera viewing mode deactivated.")
-/mob/living/silicon/ai/proc/select_main_multicam_window(obj/screen/movable/pic_in_pic/ai/P)
+/mob/living/silicon/ai/proc/select_main_multicam_window(atom/movable/screen/movable/pic_in_pic/ai/P)
if(master_multicam == P)
return
diff --git a/code/modules/mob/living/silicon/laws.dm b/code/modules/mob/living/silicon/laws.dm
index acaee05cc6..d92f4a5999 100644
--- a/code/modules/mob/living/silicon/laws.dm
+++ b/code/modules/mob/living/silicon/laws.dm
@@ -6,7 +6,7 @@
make_laws()
/mob/living/silicon/proc/post_lawchange(announce = TRUE)
- throw_alert("newlaw", /obj/screen/alert/newlaw)
+ throw_alert("newlaw", /atom/movable/screen/alert/newlaw)
if(announce && last_lawchange_announce != world.time)
to_chat(src, "Your laws have been changed.")
addtimer(CALLBACK(src, .proc/show_laws), 0)
diff --git a/code/modules/mob/living/silicon/robot/life.dm b/code/modules/mob/living/silicon/robot/life.dm
index 9075af2dbd..d1eaeeacc5 100644
--- a/code/modules/mob/living/silicon/robot/life.dm
+++ b/code/modules/mob/living/silicon/robot/life.dm
@@ -58,15 +58,15 @@
if(0.75 to INFINITY)
clear_alert("charge")
if(0.5 to 0.75)
- throw_alert("charge", /obj/screen/alert/lowcell, 1)
+ throw_alert("charge", /atom/movable/screen/alert/lowcell, 1)
if(0.25 to 0.5)
- throw_alert("charge", /obj/screen/alert/lowcell, 2)
+ throw_alert("charge", /atom/movable/screen/alert/lowcell, 2)
if(0.01 to 0.25)
- throw_alert("charge", /obj/screen/alert/lowcell, 3)
+ throw_alert("charge", /atom/movable/screen/alert/lowcell, 3)
else
- throw_alert("charge", /obj/screen/alert/emptycell)
+ throw_alert("charge", /atom/movable/screen/alert/emptycell)
else
- throw_alert("charge", /obj/screen/alert/nocell)
+ throw_alert("charge", /atom/movable/screen/alert/nocell)
//Robots on fire
/mob/living/silicon/robot/handle_fire()
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index 8a400ad02d..9658247da3 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -23,9 +23,9 @@
robot_modules_background.layer = HUD_LAYER //Objects that appear on screen are on layer ABOVE_HUD_LAYER, UI should be just below it.
robot_modules_background.plane = HUD_PLANE
- inv1 = new /obj/screen/robot/module1()
- inv2 = new /obj/screen/robot/module2()
- inv3 = new /obj/screen/robot/module3()
+ inv1 = new /atom/movable/screen/robot/module1()
+ inv2 = new /atom/movable/screen/robot/module2()
+ inv3 = new /atom/movable/screen/robot/module3()
previous_health = health
@@ -598,7 +598,7 @@
if(wires.is_cut(WIRE_LOCKDOWN))
state = TRUE
if(state)
- throw_alert("locked", /obj/screen/alert/locked)
+ throw_alert("locked", /atom/movable/screen/alert/locked)
else
clear_alert("locked")
locked_down = state
@@ -611,7 +611,7 @@
module.rebuild_modules()
update_icons()
if(emagged)
- throw_alert("hacked", /obj/screen/alert/hacked)
+ throw_alert("hacked", /atom/movable/screen/alert/hacked)
else
clear_alert("hacked")
diff --git a/code/modules/mob/living/silicon/robot/robot_defines.dm b/code/modules/mob/living/silicon/robot/robot_defines.dm
index bf3bdcf707..612298e526 100644
--- a/code/modules/mob/living/silicon/robot/robot_defines.dm
+++ b/code/modules/mob/living/silicon/robot/robot_defines.dm
@@ -26,15 +26,15 @@
var/previous_health
//Hud stuff
- var/obj/screen/inv1 = null
- var/obj/screen/inv2 = null
- var/obj/screen/inv3 = null
- var/obj/screen/lamp_button = null
- var/obj/screen/thruster_button = null
- var/obj/screen/hands = null
+ var/atom/movable/screen/inv1 = null
+ var/atom/movable/screen/inv2 = null
+ var/atom/movable/screen/inv3 = null
+ var/atom/movable/screen/lamp_button = null
+ var/atom/movable/screen/thruster_button = null
+ var/atom/movable/screen/hands = null
var/shown_robot_modules = 0 //Used to determine whether they have the module menu shown or not
- var/obj/screen/robot_modules_background
+ var/atom/movable/screen/robot_modules_background
//3 Modules can be activated at any one time.
var/obj/item/robot_module/module = null
@@ -90,14 +90,14 @@
///Lamp brightness. Starts at 3, but can be 1 - 5.
var/lamp_intensity = 3
///Lamp button reference
- var/obj/screen/robot/lamp/lampButton
+ var/atom/movable/screen/robot/lamp/lampButton
var/sight_mode = 0
hud_possible = list(ANTAG_HUD, DIAG_STAT_HUD, DIAG_HUD, DIAG_BATT_HUD, DIAG_TRACK_HUD)
///The reference to the built-in tablet that borgs carry.
var/obj/item/modular_computer/tablet/integrated/modularInterface
- var/obj/screen/robot/modPC/interfaceButton
+ var/atom/movable/screen/robot/modPC/interfaceButton
var/list/upgrades = list()
diff --git a/code/modules/mob/living/silicon/silicon_defense.dm b/code/modules/mob/living/silicon/silicon_defense.dm
index fbd4daa1d3..6c9d508fd8 100644
--- a/code/modules/mob/living/silicon/silicon_defense.dm
+++ b/code/modules/mob/living/silicon/silicon_defense.dm
@@ -144,6 +144,6 @@
P.on_hit(src, 0, def_zone)
return BULLET_ACT_HIT
-/mob/living/silicon/flash_act(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0, type = /obj/screen/fullscreen/flash/static)
+/mob/living/silicon/flash_act(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0, type = /atom/movable/screen/fullscreen/flash/static)
if(affect_silicon)
return ..()
diff --git a/code/modules/mob/living/simple_animal/guardian/guardian.dm b/code/modules/mob/living/simple_animal/guardian/guardian.dm
index 7c7ff3779c..b85c0ee643 100644
--- a/code/modules/mob/living/simple_animal/guardian/guardian.dm
+++ b/code/modules/mob/living/simple_animal/guardian/guardian.dm
@@ -55,7 +55,7 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians
var/cooldown = 0
var/mob/living/carbon/summoner
var/range = 13 //how far from the user the spirit can be
- var/toggle_button_type = /obj/screen/guardian/ToggleMode/Inactive //what sort of toggle button the hud uses
+ var/toggle_button_type = /atom/movable/screen/guardian/ToggleMode/Inactive //what sort of toggle button the hud uses
var/playstyle_string = "You are a standard Guardian. You shouldn't exist!"
var/magic_fluff_string = "You draw the Coder, symbolizing bugs and errors. This shouldn't happen! Submit a bug report!"
var/tech_fluff_string = "BOOT SEQUENCE COMPLETE. ERROR MODULE LOADED. THIS SHOULDN'T HAPPEN. Submit a bug report!"
diff --git a/code/modules/mob/living/simple_animal/guardian/types/assassin.dm b/code/modules/mob/living/simple_animal/guardian/types/assassin.dm
index b5bb91d34f..7083f891b8 100644
--- a/code/modules/mob/living/simple_animal/guardian/types/assassin.dm
+++ b/code/modules/mob/living/simple_animal/guardian/types/assassin.dm
@@ -11,11 +11,11 @@
tech_fluff_string = "Boot sequence complete. Assassin modules loaded. Holoparasite swarm online."
carp_fluff_string = "CARP CARP CARP! Caught one! It's an assassin carp! Just when you thought it was safe to go back to the water... which is unhelpful, because we're in space."
- toggle_button_type = /obj/screen/guardian/ToggleMode/Assassin
+ toggle_button_type = /atom/movable/screen/guardian/ToggleMode/Assassin
var/toggle = FALSE
var/stealthcooldown = 100
- var/obj/screen/alert/canstealthalert
- var/obj/screen/alert/instealthalert
+ var/atom/movable/screen/alert/canstealthalert
+ var/atom/movable/screen/alert/instealthalert
/mob/living/simple_animal/hostile/guardian/assassin/Initialize()
. = ..()
@@ -86,12 +86,12 @@
if(stealthcooldown <= world.time)
if(toggle)
if(!instealthalert)
- instealthalert = throw_alert("instealth", /obj/screen/alert/instealth)
+ instealthalert = throw_alert("instealth", /atom/movable/screen/alert/instealth)
clear_alert("canstealth")
canstealthalert = null
else
if(!canstealthalert)
- canstealthalert = throw_alert("canstealth", /obj/screen/alert/canstealth)
+ canstealthalert = throw_alert("canstealth", /atom/movable/screen/alert/canstealth)
clear_alert("instealth")
instealthalert = null
else
diff --git a/code/modules/mob/living/simple_animal/guardian/types/charger.dm b/code/modules/mob/living/simple_animal/guardian/types/charger.dm
index 9060350df4..ee5a648067 100644
--- a/code/modules/mob/living/simple_animal/guardian/types/charger.dm
+++ b/code/modules/mob/living/simple_animal/guardian/types/charger.dm
@@ -12,14 +12,14 @@
tech_fluff_string = "Boot sequence complete. Charge modules loaded. Holoparasite swarm online."
carp_fluff_string = "CARP CARP CARP! Caught one! It's a charger carp, that likes running at people. But it doesn't have any legs..."
var/charging = 0
- var/obj/screen/alert/chargealert
+ var/atom/movable/screen/alert/chargealert
/mob/living/simple_animal/hostile/guardian/charger/BiologicalLife(seconds, times_fired)
if(!(. = ..()))
return
if(ranged_cooldown <= world.time)
if(!chargealert)
- chargealert = throw_alert("charge", /obj/screen/alert/cancharge)
+ chargealert = throw_alert("charge", /atom/movable/screen/alert/cancharge)
else
clear_alert("charge")
chargealert = null
diff --git a/code/modules/mob/living/simple_animal/guardian/types/protector.dm b/code/modules/mob/living/simple_animal/guardian/types/protector.dm
index 99272a6d3f..b3d9f01ebb 100644
--- a/code/modules/mob/living/simple_animal/guardian/types/protector.dm
+++ b/code/modules/mob/living/simple_animal/guardian/types/protector.dm
@@ -8,7 +8,7 @@
magic_fluff_string = "..And draw the Guardian, a stalwart protector that never leaves the side of its charge."
tech_fluff_string = "Boot sequence complete. Protector modules loaded. Holoparasite swarm online."
carp_fluff_string = "CARP CARP CARP! You caught one! Wait, no... it caught you! The fisher has become the fishy."
- toggle_button_type = /obj/screen/guardian/ToggleMode
+ toggle_button_type = /atom/movable/screen/guardian/ToggleMode
var/toggle = FALSE
/mob/living/simple_animal/hostile/guardian/protector/ex_act(severity)
diff --git a/code/modules/mob/living/simple_animal/guardian/types/ranged.dm b/code/modules/mob/living/simple_animal/guardian/types/ranged.dm
index e2bcdd5684..5df446085a 100644
--- a/code/modules/mob/living/simple_animal/guardian/types/ranged.dm
+++ b/code/modules/mob/living/simple_animal/guardian/types/ranged.dm
@@ -23,7 +23,7 @@
carp_fluff_string = "CARP CARP CARP! Caught one, it's a ranged carp. This fishy can watch people pee in the ocean."
see_invisible = SEE_INVISIBLE_LIVING
see_in_dark = 8
- toggle_button_type = /obj/screen/guardian/ToggleMode
+ toggle_button_type = /atom/movable/screen/guardian/ToggleMode
var/list/snares = list()
var/toggle = FALSE
diff --git a/code/modules/mob/living/simple_animal/guardian/types/support.dm b/code/modules/mob/living/simple_animal/guardian/types/support.dm
index b51552acd2..fc2912ec2f 100644
--- a/code/modules/mob/living/simple_animal/guardian/types/support.dm
+++ b/code/modules/mob/living/simple_animal/guardian/types/support.dm
@@ -10,7 +10,7 @@
magic_fluff_string = "..And draw the CMO, a potent force of life... and death."
carp_fluff_string = "CARP CARP CARP! You caught a support carp. It's a kleptocarp!"
tech_fluff_string = "Boot sequence complete. Support modules active. Holoparasite swarm online."
- toggle_button_type = /obj/screen/guardian/ToggleMode
+ toggle_button_type = /atom/movable/screen/guardian/ToggleMode
var/obj/structure/receiving_pad/beacon
var/beacon_cooldown = 0
var/toggle = FALSE
diff --git a/code/modules/mob/living/simple_animal/hostile/jungle/seedling.dm b/code/modules/mob/living/simple_animal/hostile/jungle/seedling.dm
index 7565a686bf..0f25688b6a 100644
--- a/code/modules/mob/living/simple_animal/hostile/jungle/seedling.dm
+++ b/code/modules/mob/living/simple_animal/hostile/jungle/seedling.dm
@@ -69,7 +69,7 @@
status_type = STATUS_EFFECT_MULTIPLE
alert_type = null
tick_interval = 1
- var/obj/screen/seedling/seedling_screen_object
+ var/atom/movable/screen/seedling/seedling_screen_object
var/atom/target
@@ -81,7 +81,7 @@
/datum/status_effect/seedling_beam_indicator/on_apply()
if(owner.client)
- seedling_screen_object = new /obj/screen/seedling()
+ seedling_screen_object = new /atom/movable/screen/seedling()
owner.client.screen += seedling_screen_object
tick()
return ..()
@@ -98,7 +98,7 @@
final.Turn(target_angle)
seedling_screen_object.transform = final
-/obj/screen/seedling
+/atom/movable/screen/seedling
icon = 'icons/mob/jungle/arachnid.dmi'
icon_state = "seedling_beam_indicator"
screen_loc = "CENTER:-16,CENTER:-16"
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner.dm
index 64e1399e19..1aa0957fee 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner.dm
@@ -339,11 +339,11 @@ Difficulty: Extremely Hard
id = "ice_block_talisman"
duration = 25
status_type = STATUS_EFFECT_REFRESH
- alert_type = /obj/screen/alert/status_effect/ice_block_talisman
+ alert_type = /atom/movable/screen/alert/status_effect/ice_block_talisman
/// Stored icon overlay for the hit mob, removed when effect is removed
var/icon/cube
-/obj/screen/alert/status_effect/ice_block_talisman
+/atom/movable/screen/alert/status_effect/ice_block_talisman
name = "Frozen Solid"
desc = "You're frozen inside an ice cube, and cannot move!"
icon_state = "frozen"
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm
index e347056924..d677f59440 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm
@@ -113,7 +113,7 @@ While using this makes the system rely on OnFire, it still gives options for tim
severity = 7
hud_used.healths.icon_state = "elite_health[severity]"
if(severity > 0)
- overlay_fullscreen("brute", /obj/screen/fullscreen/brute, severity)
+ overlay_fullscreen("brute", /atom/movable/screen/fullscreen/brute, severity)
else
clear_fullscreen("brute")
diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/clown.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/clown.dm
index 5750d1ecb9..e2f83677d8 100644
--- a/code/modules/mob/living/simple_animal/hostile/retaliate/clown.dm
+++ b/code/modules/mob/living/simple_animal/hostile/retaliate/clown.dm
@@ -45,10 +45,10 @@
/mob/living/simple_animal/hostile/retaliate/clown/handle_temperature_damage()
if(bodytemperature < minbodytemp)
adjustBruteLoss(10)
- throw_alert("temp", /obj/screen/alert/cold, 2)
+ throw_alert("temp", /atom/movable/screen/alert/cold, 2)
else if(bodytemperature > maxbodytemp)
adjustBruteLoss(15)
- throw_alert("temp", /obj/screen/alert/hot, 3)
+ throw_alert("temp", /atom/movable/screen/alert/hot, 3)
else
clear_alert("temp")
diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm
index 58e0483f20..65c553b11d 100644
--- a/code/modules/mob/living/simple_animal/simple_animal.dm
+++ b/code/modules/mob/living/simple_animal/simple_animal.dm
@@ -554,7 +554,7 @@
var/oindex = active_hand_index
active_hand_index = hand_index
if(hud_used)
- var/obj/screen/inventory/hand/H
+ var/atom/movable/screen/inventory/hand/H
H = hud_used.hand_slots["[hand_index]"]
if(H)
H.update_icon()
diff --git a/code/modules/mob/living/simple_animal/slime/slime.dm b/code/modules/mob/living/simple_animal/slime/slime.dm
index f6169be902..68de074e07 100644
--- a/code/modules/mob/living/simple_animal/slime/slime.dm
+++ b/code/modules/mob/living/simple_animal/slime/slime.dm
@@ -129,7 +129,7 @@
coretype = text2path("/obj/item/slime_extract/[sanitizedcolour]")
regenerate_icons()
-/mob/living/simple_animal/slime/proc/update_name()
+/mob/living/simple_animal/slime/update_name()
if(slime_name_regex.Find(name))
number = rand(1, 1000)
name = "[colour] [is_adult ? "adult" : "baby"] slime ([number])"
diff --git a/code/modules/mob/living/status_procs.dm b/code/modules/mob/living/status_procs.dm
index 389f5ee5b5..02e88e3741 100644
--- a/code/modules/mob/living/status_procs.dm
+++ b/code/modules/mob/living/status_procs.dm
@@ -599,7 +599,7 @@
/mob/living/proc/become_nearsighted(source)
if(!HAS_TRAIT(src, TRAIT_NEARSIGHT))
- overlay_fullscreen("nearsighted", /obj/screen/fullscreen/impaired, 1)
+ overlay_fullscreen("nearsighted", /atom/movable/screen/fullscreen/impaired, 1)
ADD_TRAIT(src, TRAIT_NEARSIGHT, source)
/mob/living/proc/cure_husk(source)
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index 9070c1e8fb..efb4512bca 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -884,7 +884,7 @@ GLOBAL_VAR_INIT(exploit_warn_spam_prevention, 0)
/mob/proc/sync_lighting_plane_alpha()
if(hud_used)
- var/obj/screen/plane_master/lighting/L = hud_used.plane_masters["[LIGHTING_PLANE]"]
+ var/atom/movable/screen/plane_master/lighting/L = hud_used.plane_masters["[LIGHTING_PLANE]"]
if (L)
L.alpha = lighting_alpha
diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm
index ba2399b831..b77b9913ba 100644
--- a/code/modules/mob/mob_defines.dm
+++ b/code/modules/mob/mob_defines.dm
@@ -142,7 +142,7 @@
var/registered_z
- var/list/alerts = list() // contains /obj/screen/alert only // On /mob so clientless mobs will throw alerts properly
+ var/list/alerts = list() // contains /atom/movable/screen/alert only // On /mob so clientless mobs will throw alerts properly
var/list/screens = list()
var/list/client_colours = list()
var/hud_type = /datum/hud
diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm
index 4b0f505067..5bfc6fe652 100644
--- a/code/modules/mob/mob_helpers.dm
+++ b/code/modules/mob/mob_helpers.dm
@@ -362,7 +362,7 @@ It's fairly easy to fix if dealing with single letters but not so much with comp
if(flashwindow)
window_flash(O.client)
if(source)
- var/obj/screen/alert/notify_action/A = O.throw_alert("[REF(source)]_notify_action", /obj/screen/alert/notify_action)
+ var/atom/movable/screen/alert/notify_action/A = O.throw_alert("[REF(source)]_notify_action", /atom/movable/screen/alert/notify_action)
if(A)
if(O.client.prefs && O.client.prefs.UI_style)
A.icon = ui_style2icon(O.client.prefs.UI_style)
diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm
index f7d8a810ce..bfd4cfcd29 100644
--- a/code/modules/mob/mob_movement.dm
+++ b/code/modules/mob/mob_movement.dm
@@ -267,7 +267,7 @@
//1: r-leg 2: groin 3: l-leg
/client/proc/check_has_body_select()
- return mob && mob.hud_used && mob.hud_used.zone_select && istype(mob.hud_used.zone_select, /obj/screen/zone_sel)
+ return mob && mob.hud_used && mob.hud_used.zone_select && istype(mob.hud_used.zone_select, /atom/movable/screen/zone_sel)
/client/verb/body_toggle_head()
set name = "body-toggle-head"
@@ -285,7 +285,7 @@
else
next_in_line = BODY_ZONE_HEAD
- var/obj/screen/zone_sel/selector = mob.hud_used.zone_select
+ var/atom/movable/screen/zone_sel/selector = mob.hud_used.zone_select
selector.set_selected_zone(next_in_line, mob)
/client/verb/body_r_arm()
@@ -295,7 +295,7 @@
if(!check_has_body_select())
return
- var/obj/screen/zone_sel/selector = mob.hud_used.zone_select
+ var/atom/movable/screen/zone_sel/selector = mob.hud_used.zone_select
selector.set_selected_zone(BODY_ZONE_R_ARM, mob)
/client/verb/body_chest()
@@ -305,7 +305,7 @@
if(!check_has_body_select())
return
- var/obj/screen/zone_sel/selector = mob.hud_used.zone_select
+ var/atom/movable/screen/zone_sel/selector = mob.hud_used.zone_select
selector.set_selected_zone(BODY_ZONE_CHEST, mob)
/client/verb/body_l_arm()
@@ -315,7 +315,7 @@
if(!check_has_body_select())
return
- var/obj/screen/zone_sel/selector = mob.hud_used.zone_select
+ var/atom/movable/screen/zone_sel/selector = mob.hud_used.zone_select
selector.set_selected_zone(BODY_ZONE_L_ARM, mob)
/client/verb/body_r_leg()
@@ -325,7 +325,7 @@
if(!check_has_body_select())
return
- var/obj/screen/zone_sel/selector = mob.hud_used.zone_select
+ var/atom/movable/screen/zone_sel/selector = mob.hud_used.zone_select
selector.set_selected_zone(BODY_ZONE_R_LEG, mob)
/client/verb/body_groin()
@@ -335,7 +335,7 @@
if(!check_has_body_select())
return
- var/obj/screen/zone_sel/selector = mob.hud_used.zone_select
+ var/atom/movable/screen/zone_sel/selector = mob.hud_used.zone_select
selector.set_selected_zone(BODY_ZONE_PRECISE_GROIN, mob)
/client/verb/body_l_leg()
@@ -345,7 +345,7 @@
if(!check_has_body_select())
return
- var/obj/screen/zone_sel/selector = mob.hud_used.zone_select
+ var/atom/movable/screen/zone_sel/selector = mob.hud_used.zone_select
selector.set_selected_zone(BODY_ZONE_L_LEG, mob)
/client/verb/toggle_walk_run()
@@ -364,7 +364,7 @@
return FALSE
m_intent = MOVE_INTENT_RUN
if(hud_used && hud_used.static_inventory)
- for(var/obj/screen/mov_intent/selector in hud_used.static_inventory)
+ for(var/atom/movable/screen/mov_intent/selector in hud_used.static_inventory)
selector.update_icon()
/mob/verb/up()
diff --git a/code/modules/mob/status_procs.dm b/code/modules/mob/status_procs.dm
index fbef8fd244..089484ea9f 100644
--- a/code/modules/mob/status_procs.dm
+++ b/code/modules/mob/status_procs.dm
@@ -52,8 +52,8 @@
/mob/proc/update_blindness()
if(eye_blind) // UNCONSCIOUS or has blind trait, or has temporary blindness
if(stat == CONSCIOUS || stat == SOFT_CRIT)
- throw_alert("blind", /obj/screen/alert/blind)
- overlay_fullscreen("blind", /obj/screen/fullscreen/blind)
+ throw_alert("blind", /atom/movable/screen/alert/blind)
+ overlay_fullscreen("blind", /atom/movable/screen/fullscreen/blind)
// You are blind why should you be able to make out details like color, only shapes near you
// add_client_colour(/datum/client_colour/monochrome/blind)
else // CONSCIOUS no blind trait, no blindness
@@ -91,7 +91,7 @@
var/list/screens = list(hud_used.plane_masters["[GAME_PLANE]"], hud_used.plane_masters["[FLOOR_PLANE]"],
hud_used.plane_masters["[WALL_PLANE]"], hud_used.plane_masters["[ABOVE_WALL_PLANE]"])
for(var/A in screens)
- var/obj/screen/plane_master/P = A
+ var/atom/movable/screen/plane_master/P = A
P.add_filter("blurry_eyes", 2, EYE_BLUR(clamp(eye_blurry*0.1,0.6,3)))
/mob/proc/remove_eyeblur()
@@ -100,7 +100,7 @@
var/list/screens = list(hud_used.plane_masters["[GAME_PLANE]"], hud_used.plane_masters["[FLOOR_PLANE]"],
hud_used.plane_masters["[WALL_PLANE]"], hud_used.plane_masters["[ABOVE_WALL_PLANE]"])
for(var/A in screens)
- var/obj/screen/plane_master/P = A
+ var/atom/movable/screen/plane_master/P = A
P.remove_filter("blurry_eyes")
///Adjust the drugginess of a mob
diff --git a/code/modules/modular_computers/computers/item/computer.dm b/code/modules/modular_computers/computers/item/computer.dm
index 64c99e01bf..635ec2e54c 100644
--- a/code/modules/modular_computers/computers/item/computer.dm
+++ b/code/modules/modular_computers/computers/item/computer.dm
@@ -123,7 +123,7 @@
/obj/item/modular_computer/MouseDrop(obj/over_object, src_location, over_location)
var/mob/M = usr
- if((!istype(over_object, /obj/screen)) && usr.canUseTopic(src, BE_CLOSE))
+ if((!istype(over_object, /atom/movable/screen)) && usr.canUseTopic(src, BE_CLOSE))
return attack_self(M)
return ..()
diff --git a/code/modules/modular_computers/computers/item/laptop.dm b/code/modules/modular_computers/computers/item/laptop.dm
index aee5dd4229..5686dec8d0 100644
--- a/code/modules/modular_computers/computers/item/laptop.dm
+++ b/code/modules/modular_computers/computers/item/laptop.dm
@@ -68,11 +68,11 @@
try_toggle_open(usr)
/obj/item/modular_computer/laptop/MouseDrop(obj/over_object, src_location, over_location)
- if(istype(over_object, /obj/screen/inventory/hand) || over_object == usr)
- var/obj/screen/inventory/hand/H = over_object
+ if(istype(over_object, /atom/movable/screen/inventory/hand) || over_object == usr)
+ var/atom/movable/screen/inventory/hand/H = over_object
var/mob/M = usr
- if(!istype(over_object, /obj/screen/inventory/hand))
+ if(!istype(over_object, /atom/movable/screen/inventory/hand))
M.put_in_active_hand(src)
return
diff --git a/code/modules/modular_computers/file_system/programs/secureye.dm b/code/modules/modular_computers/file_system/programs/secureye.dm
index 78e72640ed..92275b1e8b 100644
--- a/code/modules/modular_computers/file_system/programs/secureye.dm
+++ b/code/modules/modular_computers/file_system/programs/secureye.dm
@@ -21,10 +21,10 @@
// Stuff needed to render the map
var/map_name
- var/obj/screen/map_view/cam_screen
+ var/atom/movable/screen/map_view/cam_screen
/// All the plane masters that need to be applied.
var/list/cam_plane_masters
- var/obj/screen/background/cam_background
+ var/atom/movable/screen/background/cam_background
/datum/computer_file/program/secureye/New()
. = ..()
@@ -42,8 +42,8 @@
cam_screen.del_on_map_removal = FALSE
cam_screen.screen_loc = "[map_name]:1,1"
cam_plane_masters = list()
- for(var/plane in subtypesof(/obj/screen/plane_master))
- var/obj/screen/instance = new plane()
+ for(var/plane in subtypesof(/atom/movable/screen/plane_master))
+ var/atom/movable/screen/instance = new plane()
instance.assigned_map = map_name
instance.del_on_map_removal = FALSE
instance.screen_loc = "[map_name]:CENTER"
diff --git a/code/modules/paperwork/paper_cutter.dm b/code/modules/paperwork/paper_cutter.dm
index f5cb6e1a10..2bb743abbd 100644
--- a/code/modules/paperwork/paper_cutter.dm
+++ b/code/modules/paperwork/paper_cutter.dm
@@ -101,8 +101,8 @@
if(over_object == M)
M.put_in_hands(src)
- else if(istype(over_object, /obj/screen/inventory/hand))
- var/obj/screen/inventory/hand/H = over_object
+ else if(istype(over_object, /atom/movable/screen/inventory/hand))
+ var/atom/movable/screen/inventory/hand/H = over_object
M.putItemFromInventoryInHandIfPossible(src, H.held_index)
add_fingerprint(M)
diff --git a/code/modules/paperwork/paperbin.dm b/code/modules/paperwork/paperbin.dm
index 16a9ed33ed..6775532614 100644
--- a/code/modules/paperwork/paperbin.dm
+++ b/code/modules/paperwork/paperbin.dm
@@ -52,8 +52,8 @@
if(over_object == M)
M.put_in_hands(src)
- else if(istype(over_object, /obj/screen/inventory/hand))
- var/obj/screen/inventory/hand/H = over_object
+ else if(istype(over_object, /atom/movable/screen/inventory/hand))
+ var/atom/movable/screen/inventory/hand/H = over_object
M.putItemFromInventoryInHandIfPossible(src, H.held_index)
add_fingerprint(M)
diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm
index 9a201b7d9c..515349d666 100644
--- a/code/modules/power/apc.dm
+++ b/code/modules/power/apc.dm
@@ -1,44 +1,104 @@
-//update_state
-#define UPSTATE_CELL_IN (1<<0)
-#define UPSTATE_OPENED1 (1<<1)
-#define UPSTATE_OPENED2 (1<<2)
-#define UPSTATE_MAINT (1<<3)
-#define UPSTATE_BROKE (1<<4)
-#define UPSTATE_BLUESCREEN (1<<5)
-#define UPSTATE_WIREEXP (1<<6)
-#define UPSTATE_ALLGOOD (1<<7)
-
-#define APC_RESET_EMP "emp"
-
-//update_overlay
-#define APC_UPOVERLAY_CHARGEING0 (1<<0)
-#define APC_UPOVERLAY_CHARGEING1 (1<<1)
-#define APC_UPOVERLAY_CHARGEING2 (1<<2)
-#define APC_UPOVERLAY_EQUIPMENT0 (1<<3)
-#define APC_UPOVERLAY_EQUIPMENT1 (1<<4)
-#define APC_UPOVERLAY_EQUIPMENT2 (1<<5)
-#define APC_UPOVERLAY_LIGHTING0 (1<<6)
-#define APC_UPOVERLAY_LIGHTING1 (1<<7)
-#define APC_UPOVERLAY_LIGHTING2 (1<<8)
-#define APC_UPOVERLAY_ENVIRON0 (1<<9)
-#define APC_UPOVERLAY_ENVIRON1 (1<<10)
-#define APC_UPOVERLAY_ENVIRON2 (1<<11)
-#define APC_UPOVERLAY_LOCKED (1<<12)
-#define APC_UPOVERLAY_OPERATING (1<<13)
-
-#define APC_ELECTRONICS_MISSING 0 // None
-#define APC_ELECTRONICS_INSTALLED 1 // Installed but not secured
-#define APC_ELECTRONICS_SECURED 2 // Installed and secured
+// APC electronics status:
+/// There are no electronics in the APC.
+#define APC_ELECTRONICS_MISSING 0
+/// The electronics are installed but not secured.
+#define APC_ELECTRONICS_INSTALLED 1
+/// The electronics are installed and secured.
+#define APC_ELECTRONICS_SECURED 2
+// APC cover status:
+/// The APCs cover is closed.
#define APC_COVER_CLOSED 0
+/// The APCs cover is open.
#define APC_COVER_OPENED 1
+/// The APCs cover is missing.
#define APC_COVER_REMOVED 2
+// APC charging status:
+/// The APC is not charging.
#define APC_NOT_CHARGING 0
+/// The APC is charging.
#define APC_CHARGING 1
+/// The APC is fully charged.
#define APC_FULLY_CHARGED 2
#define MAXIMUM_COG_REGAIN 100 //How much charge drained by an integration cog can be priority-recharged in one processing-tick
+// APC channel status:
+/// The APCs power channel is manually set off.
+#define APC_CHANNEL_OFF 0
+/// The APCs power channel is automatically off.
+#define APC_CHANNEL_AUTO_OFF 1
+/// The APCs power channel is manually set on.
+#define APC_CHANNEL_ON 2
+/// The APCs power channel is automatically on.
+#define APC_CHANNEL_AUTO_ON 3
+
+
+// APC autoset enums:
+/// The APC turns automated and manual power channels off.
+#define AUTOSET_FORCE_OFF 0
+/// The APC turns automated power channels off.
+#define AUTOSET_OFF 2
+/// The APC turns automated power channels on.
+#define AUTOSET_ON 1
+
+// External power status:
+/// The APC either isn't attached to a powernet or there is no power on the external powernet.
+#define APC_NO_POWER 0
+/// The APCs external powernet does not have enough power to charge the APC.
+#define APC_LOW_POWER 1
+/// The APCs external powernet has enough power to charge the APC.
+#define APC_HAS_POWER 2
+
+// Ethereals:
+/// How long it takes an ethereal to drain or charge APCs. Also used as a spam limiter.
+#define APC_DRAIN_TIME (7.5 SECONDS)
+/// How much power ethereals gain/drain from APCs.
+#define APC_POWER_GAIN 200
+
+// Wires & EMPs:
+/// The wire value used to reset the APCs wires after one's EMPed.
+#define APC_RESET_EMP "emp"
+
+// update_state
+// Bitshifts: (If you change the status values to be something other than an int or able to exceed 3 you will need to change these too)
+/// The bit shift for the APCs cover status.
+#define UPSTATE_COVER_SHIFT (0)
+ /// The bitflag representing the APCs cover being open for icon purposes.
+ #define UPSTATE_OPENED1 (APC_COVER_OPENED << UPSTATE_COVER_SHIFT)
+ /// The bitflag representing the APCs cover being missing for icon purposes.
+ #define UPSTATE_OPENED2 (APC_COVER_REMOVED << UPSTATE_COVER_SHIFT)
+
+// Bitflags:
+/// The APC has a power cell.
+#define UPSTATE_CELL_IN (1<<2)
+/// The APC is broken or damaged.
+#define UPSTATE_BROKE (1<<3)
+/// The APC is undergoing maintenance.
+#define UPSTATE_MAINT (1<<4)
+/// The APC is emagged or malfed.
+#define UPSTATE_BLUESCREEN (1<<5)
+/// The APCs wires are exposed.
+#define UPSTATE_WIREEXP (1<<6)
+
+// update_overlay
+// Bitflags:
+/// Bitflag indicating that the APCs operating status overlay should be shown.
+#define UPOVERLAY_OPERATING (1<<0)
+/// Bitflag indicating that the APCs locked status overlay should be shown.
+#define UPOVERLAY_LOCKED (1<<1)
+
+// Bitshifts: (If you change the status values to be something other than an int or able to exceed 3 you will need to change these too)
+/// Bit shift for the charging status of the APC.
+#define UPOVERLAY_CHARGING_SHIFT (2)
+/// Bit shift for the equipment status of the APC.
+#define UPOVERLAY_EQUIPMENT_SHIFT (4)
+/// Bit shift for the lighting channel status of the APC.
+#define UPOVERLAY_LIGHTING_SHIFT (6)
+/// Bit shift for the environment channel status of the APC.
+#define UPOVERLAY_ENVIRON_SHIFT (8)
+///Update for hijack overlays
+#define UPOVERLAY_HIJACKED (10)
// the Area Power Controller (APC), formerly Power Distribution Unit (PDU)
// one per area, needs wire connection to power network through a terminal
@@ -51,12 +111,13 @@
name = "area power controller"
desc = "A control terminal for the area's electrical systems."
plane = ABOVE_WALL_PLANE
+
icon_state = "apc0"
use_power = NO_POWER_USE
req_access = null
max_integrity = 300
integrity_failure = 0.17
- var/damage_deflection = 10
+ damage_deflection = 10
resistance_flags = FIRE_PROOF
armor = list("melee" = 40, "bullet" = 40, "laser" = 40, "energy" = 100, "bomb" = 30, "bio" = 100, "rad" = 100, "fire" = 90, "acid" = 50)
req_access = list(ACCESS_ENGINE_EQUIP)
@@ -66,29 +127,29 @@
var/area/area
var/areastring = null
var/obj/item/stock_parts/cell/cell
- var/start_charge = 90 // initial cell charge %
- var/cell_type = /obj/item/stock_parts/cell/upgraded //Base cell has 2500 capacity. Enter the path of a different cell you want to use. cell determines charge rates, max capacity, ect. These can also be changed with other APC vars, but isn't recommended to minimize the risk of accidental usage of dirty editted APCs
+ var/start_charge = 90 // initial cell charge %
+ var/cell_type = /obj/item/stock_parts/cell/upgraded //Base cell has 2500 capacity. Enter the path of a different cell you want to use. cell determines charge rates, max capacity, ect. These can also be changed with other APC vars, but isn't recommended to minimize the risk of accidental usage of dirty editted APCs
var/opened = APC_COVER_CLOSED
- var/shorted = 0
- var/lighting = 3
- var/equipment = 3
- var/environ = 3
+ var/shorted = FALSE
+ var/lighting = APC_CHANNEL_AUTO_ON
+ var/equipment = APC_CHANNEL_AUTO_ON
+ var/environ = APC_CHANNEL_AUTO_ON
var/operating = TRUE
var/charging = APC_NOT_CHARGING
var/chargemode = 1
var/chargecount = 0
var/locked = TRUE
var/coverlocked = TRUE
- var/aidisabled = 0
+ var/aidisabled = FALSE
var/tdir = null
var/obj/machinery/power/terminal/terminal = null
var/lastused_light = 0
var/lastused_equip = 0
var/lastused_environ = 0
var/lastused_total = 0
- var/main_status = 0 // Whether or not there's external power. 0 is "none", 1 is "insufficient", 2 is "charging".
- powernet = 0 // set so that APCs aren't found as powernet nodes //Hackish, Horrible, was like this before I changed it :(
- var/malfhack = 0 //New var for my changes to AI malf. --NeoFite
+ var/main_status = 0
+ powernet = FALSE // set so that APCs aren't found as powernet nodes //Hackish, Horrible, was like this before I changed it :(
+ var/malfhack = FALSE //New var for my changes to AI malf. --NeoFite
var/mob/living/silicon/ai/malfai = null //See above --NeoFite
var/has_electronics = APC_ELECTRONICS_MISSING // 0 - none, 1 - plugged in, 2 - secured by screwdriver
var/overload = 1 //used for the Blackout malf module
@@ -98,9 +159,9 @@
var/obj/item/clockwork/integration_cog/integration_cog //Is there a cog siphoning power?
var/cog_drained = 0 //How much of the cell's charge was drained by an integration cog, recovering this amount takes priority over the normal APC cell recharge calculations, but comes after powering Essentials.
var/longtermpower = 10
- var/auto_name = 0
+ var/auto_name = FALSE
var/failure_timer = 0
- var/force_update = 0
+ var/force_update = FALSE
var/emergency_lights = FALSE
var/nightshift_lights = FALSE
var/nightshift_requires_auth = FALSE
@@ -119,6 +180,9 @@
/obj/machinery/power/apc/syndicate //general syndicate access
req_access = list(ACCESS_SYNDICATE)
+/obj/machinery/power/apc/away //general away mission access
+ req_access = list(ACCESS_AWAY_GENERAL)
+
/obj/machinery/power/apc/highcap/five_k
cell_type = /obj/item/stock_parts/cell/upgraded/plus
@@ -177,7 +241,6 @@
area = A
if(auto_name)
name = "\improper [A.name] APC"
- update_icon()
make_terminal()
update_nightshift_auth_requirement()
@@ -187,8 +250,9 @@
opened = APC_COVER_OPENED
operating = FALSE
name = "\improper [A.name] APC"
- stat |= MAINT
- update_icon()
+ set_machine_stat(stat | MAINT)
+
+ update_appearance()
addtimer(CALLBACK(src, .proc/update), 5)
GLOB.apcs_list += src
@@ -196,21 +260,36 @@
wires = new /datum/wires/apc(src)
// offset 24 pixels in direction of dir
// this allows the APC to be embedded in a wall, yet still inside an area
+ if (building)
+ setDir(ndir)
+ tdir = dir // to fix Vars bug
setDir(SOUTH)
switch(tdir)
if(NORTH)
- pixel_x = 0
+ if((pixel_y != initial(pixel_y)) && (pixel_y != 23))
+ log_mapping("APC: ([src]) at [AREACOORD(src)] with dir ([tdir] | [uppertext(dir2text(tdir))]) has pixel_y value ([pixel_y] - should be 23.)")
pixel_y = 23
if(SOUTH)
- pixel_x = 0
+ if((pixel_y != initial(pixel_y)) && (pixel_y != -23))
+ log_mapping("APC: ([src]) at [AREACOORD(src)] with dir ([tdir] | [uppertext(dir2text(tdir))]) has pixel_y value ([pixel_y] - should be -23.)")
pixel_y = -23
if(EAST)
- pixel_y = 0
+ if((pixel_y != initial(pixel_x)) && (pixel_x != 24))
+ log_mapping("APC: ([src]) at [AREACOORD(src)] with dir ([tdir] | [uppertext(dir2text(tdir))]) has pixel_x value ([pixel_x] - should be 24.)")
pixel_x = 24
if(WEST)
- pixel_y = 0
+ if((pixel_y != initial(pixel_x)) && (pixel_x != -25))
+ log_mapping("APC: ([src]) at [AREACOORD(src)] with dir ([tdir] | [uppertext(dir2text(tdir))]) has pixel_x value ([pixel_x] - should be -25.)")
pixel_x = -25
+ if (building)
+ area = get_area(src)
+ opened = APC_COVER_OPENED
+ operating = FALSE
+ name = "\improper [get_area_name(area, TRUE)] APC"
+ set_machine_stat(stat | MAINT)
+ update_appearance()
+ addtimer(CALLBACK(src, .proc/update), 5)
/obj/machinery/power/apc/Destroy()
GLOB.apcs_list -= src
@@ -221,6 +300,7 @@
area.power_equip = FALSE
area.power_environ = FALSE
area.power_change()
+ area.poweralert(FALSE, src)
if(occupier)
malfvacate(1)
qdel(wires)
@@ -234,7 +314,7 @@
/obj/machinery/power/apc/handle_atom_del(atom/A)
if(A == cell)
cell = null
- update_icon()
+ update_appearance()
updateUsrDialog()
/obj/machinery/power/apc/proc/make_terminal()
@@ -275,157 +355,130 @@
// update the APC icon to show the three base states
// also add overlays for indicator lights
-/obj/machinery/power/apc/update_icon()
- 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
- if(!update)
- icon_update_needed = FALSE
+/obj/machinery/power/apc/update_appearance(updates=check_updates())
+ icon_update_needed = FALSE
+ if(!updates)
return
- if(update & 1) // Updating the icon state
- if(update_state & UPSTATE_ALLGOOD)
- icon_state = "apc0"
- else if(update_state & (UPSTATE_OPENED1|UPSTATE_OPENED2))
- var/basestate = "apc[ cell ? "2" : "1" ]"
- if(update_state & UPSTATE_OPENED1)
- if(update_state & (UPSTATE_MAINT|UPSTATE_BROKE))
- icon_state = "apcmaint" //disabled APC cannot hold cell
- else
- icon_state = basestate
- else if(update_state & UPSTATE_OPENED2)
- if (update_state & UPSTATE_BROKE || malfhack)
- icon_state = "[basestate]-b-nocover"
- else
- icon_state = "[basestate]-nocover"
- else if(update_state & UPSTATE_BROKE)
- icon_state = "apc-b"
- else if(update_state & UPSTATE_BLUESCREEN)
- icon_state = "apcemag"
- else if(update_state & UPSTATE_WIREEXP)
- icon_state = "apcewires"
- else if(update_state & UPSTATE_MAINT)
- icon_state = "apc0"
-
- if(!(update_state & UPSTATE_ALLGOOD))
- SSvis_overlays.remove_vis_overlay(src, managed_vis_overlays)
- var/hijackerreturn
- if (hijacker)
- var/obj/item/implant/hijack/H = hijacker.getImplant(/obj/item/implant/hijack)
- hijackerreturn = H && !H.stealthmode
- if(update & 2)
- SSvis_overlays.remove_vis_overlay(src, managed_vis_overlays)
- if(!(stat & (BROKEN|MAINT)) && update_state & UPSTATE_ALLGOOD)
- SSvis_overlays.add_vis_overlay(src, icon, "apcox-[locked]", layer, plane, dir)
- SSvis_overlays.add_vis_overlay(src, icon, "apcox-[locked]", EMISSIVE_LAYER, EMISSIVE_PLANE, dir)
- SSvis_overlays.add_vis_overlay(src, icon, "apco3-[hijackerreturn ? "3" : charging]", layer, plane, dir)
- SSvis_overlays.add_vis_overlay(src, icon, "apco3-[hijackerreturn ? "3" : charging]", EMISSIVE_LAYER, EMISSIVE_PLANE, dir)
- if(operating)
- SSvis_overlays.add_vis_overlay(src, icon, "apco0-[equipment]", layer, plane, dir)
- SSvis_overlays.add_vis_overlay(src, icon, "apco0-[equipment]", EMISSIVE_LAYER, EMISSIVE_PLANE, dir)
- SSvis_overlays.add_vis_overlay(src, icon, "apco1-[lighting]", layer, plane, dir)
- SSvis_overlays.add_vis_overlay(src, icon, "apco1-[lighting]", EMISSIVE_LAYER, EMISSIVE_PLANE, dir)
- SSvis_overlays.add_vis_overlay(src, icon, "apco2-[environ]", layer, plane, dir)
- SSvis_overlays.add_vis_overlay(src, icon, "apco2-[environ]", EMISSIVE_LAYER, EMISSIVE_PLANE, dir)
-
+ . = ..()
// And now, separately for cleanness, the lighting changing
- if(update_state & UPSTATE_ALLGOOD)
+ if(!update_state)
switch(charging)
if(APC_NOT_CHARGING)
- light_color = LIGHT_COLOR_RED
+ set_light_color(COLOR_SOFT_RED)
if(APC_CHARGING)
- light_color = LIGHT_COLOR_BLUE
+ set_light_color(LIGHT_COLOR_BLUE)
if(APC_FULLY_CHARGED)
- light_color = LIGHT_COLOR_GREEN
- if (hijackerreturn)
- light_color = LIGHT_COLOR_YELLOW
+ set_light_color(LIGHT_COLOR_GREEN)
set_light(lon_range)
- else if(update_state & UPSTATE_BLUESCREEN)
- light_color = LIGHT_COLOR_BLUE
+ return
+
+ if(update_state & UPSTATE_BLUESCREEN)
+ set_light_color(LIGHT_COLOR_BLUE)
set_light(lon_range)
- else
- set_light(0)
+ return
- icon_update_needed = FALSE
+ set_light(0)
+// update the APC icon to show the three base states
+// also add overlays for indicator lights
+/obj/machinery/power/apc/update_icon_state()
+ if(!update_state)
+ icon_state = "apc0"
+ return ..()
+ if(update_state & (UPSTATE_OPENED1|UPSTATE_OPENED2))
+ var/basestate = "apc[cell ? 2 : 1]"
+ if(update_state & UPSTATE_OPENED1)
+ icon_state = (update_state & (UPSTATE_MAINT|UPSTATE_BROKE)) ? "apcmaint" : basestate
+ else if(update_state & UPSTATE_OPENED2)
+ icon_state = "[basestate][((update_state & UPSTATE_BROKE) || malfhack) ? "-b" : null]-nocover"
+ return ..()
+ if(update_state & UPSTATE_BROKE)
+ icon_state = "apc-b"
+ return ..()
+ if(update_state & UPSTATE_BLUESCREEN)
+ icon_state = "apcemag"
+ return ..()
+ if(update_state & UPSTATE_WIREEXP)
+ icon_state = "apcewires"
+ return ..()
+ if(update_state & UPSTATE_MAINT)
+ icon_state = "apc0"
+ return ..()
+
+/obj/machinery/power/apc/update_overlays()
+ . = ..()
+ if((stat & (BROKEN|MAINT)) || update_state)
+ return
+
+ . += mutable_appearance(icon, "apcox-[locked]")
+ . += emissive_appearance(icon, "apcox-[locked]")
+ . += mutable_appearance(icon, "apco3-[hijackerreturn() ? "3" : charging]")
+ . += emissive_appearance(icon, "apco3-[hijackerreturn() ? "3" : charging]")
+ if(!operating)
+ return
+
+ . += mutable_appearance(icon, "apco0-[equipment]")
+ . += emissive_appearance(icon, "apco0-[equipment]")
+ . += mutable_appearance(icon, "apco1-[lighting]")
+ . += emissive_appearance(icon, "apco1-[lighting]")
+ . += mutable_appearance(icon, "apco2-[environ]")
+ . += emissive_appearance(icon, "apco2-[environ]")
+
+/// Checks for what icon updates we will need to handle
/obj/machinery/power/apc/proc/check_updates()
- var/last_update_state = update_state
- var/last_update_overlay = update_overlay
- update_state = 0
- update_overlay = 0
+ SIGNAL_HANDLER
+ . = NONE
- if(cell)
- update_state |= UPSTATE_CELL_IN
+ // Handle icon status:
+ var/new_update_state = NONE
if(stat & BROKEN)
- update_state |= UPSTATE_BROKE
+ new_update_state |= UPSTATE_BROKE
if(stat & MAINT)
- update_state |= UPSTATE_MAINT
+ new_update_state |= UPSTATE_MAINT
+
if(opened)
- if(opened==APC_COVER_OPENED)
- update_state |= UPSTATE_OPENED1
- if(opened==APC_COVER_REMOVED)
- update_state |= UPSTATE_OPENED2
+ new_update_state |= (opened << UPSTATE_COVER_SHIFT)
+ if(cell)
+ new_update_state |= UPSTATE_CELL_IN
+
else if((obj_flags & EMAGGED) || malfai)
- update_state |= UPSTATE_BLUESCREEN
+ new_update_state |= UPSTATE_BLUESCREEN
else if(panel_open)
- update_state |= UPSTATE_WIREEXP
- if(update_state <= 1)
- update_state |= UPSTATE_ALLGOOD
+ new_update_state |= UPSTATE_WIREEXP
+ if(new_update_state != update_state)
+ update_state = new_update_state
+ . |= UPDATE_ICON_STATE
+
+ // Handle overlay status:
+ var/new_update_overlay = NONE
if(operating)
- update_overlay |= APC_UPOVERLAY_OPERATING
-
- if(update_state & UPSTATE_ALLGOOD)
+ new_update_overlay |= UPOVERLAY_OPERATING
+ if(!update_state)
if(locked)
- update_overlay |= APC_UPOVERLAY_LOCKED
+ new_update_overlay |= UPOVERLAY_LOCKED
- if(!charging)
- update_overlay |= APC_UPOVERLAY_CHARGEING0
- else if(charging == APC_CHARGING)
- update_overlay |= APC_UPOVERLAY_CHARGEING1
- else if(charging == APC_FULLY_CHARGED)
- update_overlay |= APC_UPOVERLAY_CHARGEING2
+ new_update_overlay |= (charging << UPOVERLAY_CHARGING_SHIFT)
+ new_update_overlay |= (equipment << UPOVERLAY_EQUIPMENT_SHIFT)
+ new_update_overlay |= (lighting << UPOVERLAY_LIGHTING_SHIFT)
+ new_update_overlay |= (environ << UPOVERLAY_ENVIRON_SHIFT)
+ new_update_overlay |= (hijackerreturn() << UPOVERLAY_HIJACKED)
- if (!equipment)
- update_overlay |= APC_UPOVERLAY_EQUIPMENT0
- else if(equipment == 1)
- update_overlay |= APC_UPOVERLAY_EQUIPMENT1
- else if(equipment == 2)
- update_overlay |= APC_UPOVERLAY_EQUIPMENT2
-
- if(!lighting)
- update_overlay |= APC_UPOVERLAY_LIGHTING0
- else if(lighting == 1)
- update_overlay |= APC_UPOVERLAY_LIGHTING1
- else if(lighting == 2)
- update_overlay |= APC_UPOVERLAY_LIGHTING2
-
- if(!environ)
- update_overlay |= APC_UPOVERLAY_ENVIRON0
- else if(environ==1)
- update_overlay |= APC_UPOVERLAY_ENVIRON1
- else if(environ==2)
- update_overlay |= APC_UPOVERLAY_ENVIRON2
-
- var/results = 0
- var/hijackerreturn
- if (hijacker)
- var/obj/item/implant/hijack/H = hijacker.getImplant(/obj/item/implant/hijack)
- hijackerreturn = H && !H.stealthmode
- if(last_update_state == update_state && last_update_overlay == update_overlay && hijackerreturn == hijackerlast)
- return 0
- if(last_update_state != update_state)
- results += 1
- if(last_update_overlay != update_overlay || hijackerreturn != hijackerlast)
- results += 2
- if (hijackerreturn != hijackerlast)
- hijackerlast = hijackerreturn
- return results
+ if(new_update_overlay != update_overlay)
+ update_overlay = new_update_overlay
+ . |= UPDATE_OVERLAYS
// Used in process so it doesn't update the icon too much
/obj/machinery/power/apc/proc/queue_icon_update()
icon_update_needed = TRUE
+/obj/machinery/power/apc/proc/hijackerreturn()
+ if(!hijacker)
+ return FALSE
+ var/obj/item/implant/hijack/implant = hijacker.getImplant(/obj/item/implant/hijack)
+ if(implant && !implant.stealthmode)
+ return TRUE
//attack with an item - open/close cover, insert cell, or (un)lock interface
/obj/machinery/power/apc/crowbar_act(mob/user, obj/item/W)
@@ -478,7 +531,7 @@
else if (opened!=APC_COVER_REMOVED)
opened = APC_COVER_CLOSED
coverlocked = TRUE //closing cover relocks it
- update_icon()
+ update_appearance()
return
else if (!(stat & BROKEN))
if(coverlocked && !(stat & MAINT)) // locked...
@@ -489,7 +542,7 @@
return
else
opened = APC_COVER_OPENED
- update_icon()
+ update_appearance()
return
/obj/machinery/power/apc/screwdriver_act(mob/living/user, obj/item/W)
@@ -501,11 +554,11 @@
user.visible_message("[user] removes \the [cell] from [src]!","You remove \the [cell].")
var/turf/T = get_turf(user)
cell.forceMove(T)
- cell.update_icon()
+ cell.update_appearance()
cell = null
cog_drained = 0 //No more cell means no more averting celldrain
charging = APC_NOT_CHARGING
- update_icon()
+ update_appearance()
return
else
switch (has_electronics)
@@ -516,28 +569,30 @@
to_chat(user, "You screw the circuit electronics into place.")
if (APC_ELECTRONICS_SECURED)
has_electronics = APC_ELECTRONICS_INSTALLED
- stat |= MAINT
+ set_machine_stat(stat | MAINT)
W.play_tool_sound(src)
to_chat(user, "You unfasten the electronics.")
else
to_chat(user, "There is nothing to secure!")
return
- update_icon()
+ update_appearance()
else if(obj_flags & EMAGGED)
to_chat(user, "The interface is broken!")
return
else
panel_open = !panel_open
to_chat(user, "The wires have been [panel_open ? "exposed" : "unexposed"]")
- update_icon()
+ update_appearance()
/obj/machinery/power/apc/wirecutter_act(mob/living/user, obj/item/W)
+ . = ..()
if (terminal && opened)
terminal.dismantle(user, W)
return TRUE
/obj/machinery/power/apc/welder_act(mob/living/user, obj/item/W)
+ . = ..()
if (opened && !has_electronics && !terminal)
if(!W.tool_start_check(user, amount=3))
return
@@ -563,12 +618,12 @@
if(area.hasSiliconAccessInArea(user) && get_dist(src,user)>1)
return attack_hand(user)
- if (istype(W, /obj/item/stock_parts/cell) && opened)
+ if(istype(W, /obj/item/stock_parts/cell) && opened)
if(cell)
to_chat(user, "There is a power cell already installed!")
return
else
- if (stat & MAINT)
+ if(stat & MAINT)
to_chat(user, "There is no connector for your power cell!")
return
if(!user.transferItemToLoc(W, src))
@@ -578,7 +633,7 @@
"[user.name] has inserted the power cell to [src.name]!",\
"You insert the power cell.")
chargecount = 0
- update_icon()
+ update_appearance()
else if (W.GetID())
togglelock(user)
else if (istype(W, /obj/item/stack/cable_coil) && opened)
@@ -601,16 +656,20 @@
return
user.visible_message("[user.name] adds cables to the APC frame.", \
"You start adding cables to the APC frame...")
- playsound(src.loc, 'sound/items/deconstruct.ogg', 50, 1)
- if(C.use_tool(src, user, 20, 10) && !terminal && opened && has_electronics)
- var/turf/T = get_turf(src)
- var/obj/structure/cable/N = T.get_cable_node()
- if (prob(50) && electrocute_mob(usr, N, N, 1, TRUE))
- do_sparks(5, TRUE, src)
+ playsound(src.loc, 'sound/items/deconstruct.ogg', 50, TRUE)
+ if(do_after(user, 20, target = src))
+ if (C.get_amount() < 10 || !C)
return
- to_chat(user, "You add cables to the APC frame.")
- make_terminal()
- terminal.connect_to_network()
+ if (C.get_amount() >= 10 && !terminal && opened && has_electronics)
+ var/turf/T = get_turf(src)
+ var/obj/structure/cable/N = T.get_cable_node()
+ if (prob(50) && electrocute_mob(usr, N, N, 1, TRUE))
+ do_sparks(5, TRUE, src)
+ return
+ C.use(10)
+ to_chat(user, "You add cables to the APC frame.")
+ make_terminal()
+ terminal.connect_to_network()
else if (istype(W, /obj/item/electronics/apc) && opened)
if (has_electronics)
to_chat(user, "There is already a board inside the [src]!")
@@ -621,7 +680,7 @@
user.visible_message("[user.name] inserts the power control board into [src].", \
"You start to insert the power control board into the frame...")
- playsound(src.loc, 'sound/items/deconstruct.ogg', 50, 1)
+ playsound(src.loc, 'sound/items/deconstruct.ogg', 50, TRUE)
if(do_after(user, 10, target = src))
if(!has_electronics)
has_electronics = APC_ELECTRONICS_INSTALLED
@@ -652,7 +711,7 @@
chargecount = 0
user.visible_message("[user] fabricates a weak power cell and places it into [src].", \
"Your [P.name] whirrs with strain as you create a weak power cell and place it into [src]!")
- update_icon()
+ update_appearance()
else
to_chat(user, "[src] has both electronics and a cell.")
return
@@ -667,7 +726,7 @@
to_chat(user, "You replace missing APC's cover.")
qdel(W)
opened = APC_COVER_OPENED
- update_icon()
+ update_appearance()
return
if (has_electronics)
to_chat(user, "You cannot repair this APC until you remove the electronics still inside!")
@@ -681,7 +740,7 @@
obj_integrity = max_integrity
if (opened==APC_COVER_REMOVED)
opened = APC_COVER_OPENED
- update_icon()
+ update_appearance()
else if(istype(W, /obj/item/clockwork/integration_cog) && is_servant_of_ratvar(user))
if(integration_cog)
to_chat(user, "This APC already has a cog.")
@@ -690,7 +749,7 @@
user.visible_message("[user] slices [src]'s cover lock, and it swings wide open!", \
"You slice [src]'s cover lock apart with [W], and the cover swings open.")
opened = APC_COVER_OPENED
- update_icon()
+ update_appearance()
else
user.visible_message("[user] presses [W] into [src]!", \
"You hold [W] in place within [src], and it slowly begins to warm up...")
@@ -707,7 +766,7 @@
playsound(src, 'sound/machines/clockcult/steam_whoosh.ogg', 50, FALSE)
opened = APC_COVER_CLOSED
locked = TRUE //Clockies get full APC access on cogged APCs, but they can't lock or unlock em unless they steal some ID to give all of them APC access, soo this is pretty much just QoL for them and makes cogs a tiny bit more stealthy
- update_icon()
+ update_appearance()
return
else if(panel_open && !opened && is_wire_tool(W))
wires.interact(user)
@@ -745,7 +804,7 @@
return TRUE
else if(!cell)
if(stat & MAINT)
- to_chat(user, "There's no connector for a power cell.")
+ to_chat(user, span_warning("There's no connector for a power cell."))
return FALSE
var/obj/item/stock_parts/cell/crap/empty/C = new(src)
C.forceMove(src)
@@ -753,7 +812,7 @@
chargecount = 0
user.visible_message("[user] fabricates a weak power cell and places it into [src].", \
"Your [the_rcd.name] whirrs with strain as you create a weak power cell and place it into [src]!")
- update_icon()
+ update_appearance()
return TRUE
else
to_chat(user, "[src] has both electronics and a cell.")
@@ -777,10 +836,10 @@
else if(stat & (BROKEN|MAINT))
to_chat(user, "Nothing happens!")
else
- if((allowed(usr) || area.hasSiliconAccessInArea(usr)) && !wires.is_cut(WIRE_IDSCAN) && !malfhack)
+ if(allowed(usr) && !wires.is_cut(WIRE_IDSCAN) && !malfhack)
locked = !locked
to_chat(user, "You [ locked ? "lock" : "unlock"] the APC interface.")
- update_icon()
+ update_appearance()
updateUsrDialog()
else
to_chat(user, "Access denied.")
@@ -799,13 +858,9 @@
/obj/machinery/power/apc/obj_break(damage_flag)
- if(!(flags_1 & NODECONSTRUCT_1))
- set_broken()
-
-/obj/machinery/power/apc/run_obj_armor(damage_amount, damage_type, damage_flag = 0, attack_dir)
- if(damage_flag == "melee" && damage_amount < damage_deflection)
- return 0
. = ..()
+ if(.)
+ set_broken()
/obj/machinery/power/apc/deconstruct(disassembled = TRUE)
if(!(flags_1 & NODECONSTRUCT_1))
@@ -815,7 +870,7 @@
opened = APC_COVER_REMOVED
coverlocked = FALSE
visible_message("The APC cover is knocked down!")
- update_icon()
+ update_appearance()
/obj/machinery/power/apc/emag_act(mob/user)
. = ..()
@@ -833,7 +888,7 @@
obj_flags |= EMAGGED
locked = FALSE
to_chat(user, "You emag the APC interface.")
- update_icon()
+ update_appearance()
return TRUE
// attack with hand - remove cell (if cover open) or interact with the APC
@@ -883,10 +938,10 @@
if(cell)
user.visible_message("[user] removes \the [cell] from [src]!","You remove \the [cell].")
user.put_in_hands(cell)
- cell.update_icon()
+ cell.update_appearance()
src.cell = null
charging = APC_NOT_CHARGING
- src.update_icon()
+ src.update_appearance()
return
if((stat & MAINT) && !opened) //no board; no interface
return
@@ -975,19 +1030,15 @@
return "[area.name] : [equipment]/[lighting]/[environ] ([lastused_equip+lastused_light+lastused_environ]) : [cell? cell.percent() : "N/C"] ([charging])"
/obj/machinery/power/apc/proc/update()
- var/old_light = area.power_light
- var/old_equip = area.power_equip
- var/old_environ = area.power_environ
if(operating && !shorted && !failure_timer)
- area.power_light = (lighting > 1)
- area.power_equip = (equipment > 1)
- area.power_environ = (environ > 1)
+ area.power_light = (lighting > APC_CHANNEL_AUTO_OFF)
+ area.power_equip = (equipment > APC_CHANNEL_AUTO_OFF)
+ area.power_environ = (environ > APC_CHANNEL_AUTO_OFF)
else
area.power_light = FALSE
area.power_equip = FALSE
area.power_environ = FALSE
- if(old_light != area.power_light || old_equip != area.power_equip || old_environ != area.power_environ)
- area.power_change()
+ area.power_change()
/obj/machinery/power/apc/proc/can_use(mob/user, loud = 0) //used by attack_hand() and Topic()
if(IsAdminGhost(user))
@@ -1032,7 +1083,7 @@
to_chat(usr, "The APC does not respond to the command!")
else
locked = !locked
- update_icon()
+ update_appearance()
. = TRUE
if("cover")
coverlocked = !coverlocked
@@ -1047,20 +1098,20 @@
chargemode = !chargemode
if(!chargemode)
charging = APC_NOT_CHARGING
- update_icon()
+ update_appearance()
. = TRUE
if("channel")
if(params["eqp"])
equipment = setsubsystem(text2num(params["eqp"]))
- update_icon()
+ update_appearance()
update()
else if(params["lgt"])
lighting = setsubsystem(text2num(params["lgt"]))
- update_icon()
+ update_appearance()
update()
else if(params["env"])
environ = setsubsystem(text2num(params["env"]))
- update_icon()
+ update_appearance()
update()
. = TRUE
if("overload")
@@ -1075,7 +1126,7 @@
hijacker.toggleSiliconAccessArea(area)
hijacker = null
set_hijacked_lighting()
- update_icon()
+ update_appearance()
var/obj/item/implant/hijack/H = usr.getImplant(/obj/item/implant/hijack)
H.stealthcooldown = world.time + 2 MINUTES
energy_fail(30 SECONDS * (cell.charge / cell.maxcharge))
@@ -1098,7 +1149,7 @@
malfvacate()
if("reboot")
failure_timer = 0
- update_icon()
+ update_appearance()
update()
if("emergency_lighting")
emergency_lights = !emergency_lights
@@ -1116,7 +1167,7 @@
add_hiddenprint(user) //delete when runtime
log_game("[key_name(user)] turned [operating ? "on" : "off"] the [src] in [AREACOORD(src)]")
update()
- update_icon()
+ update_appearance()
/obj/machinery/power/apc/proc/hijack(mob/living/L)
if (!istype(L))
@@ -1133,7 +1184,7 @@
hijacker.toggleSiliconAccessArea(area)
if (L.toggleSiliconAccessArea(area))
hijacker = L
- update_icon()
+ update_appearance()
set_hijacked_lighting()
H.hijacking = FALSE
being_hijacked = FALSE
@@ -1150,7 +1201,7 @@
if (do_after(L,H.stealthmode ? 12 SECONDS : 5 SECONDS,target=src))
if (L.toggleSiliconAccessArea(area))
hijacker = L
- update_icon()
+ update_appearance()
set_hijacked_lighting()
H.hijacking = FALSE
being_hijacked = FALSE
@@ -1176,8 +1227,8 @@
malf.malfhack = src
malf.malfhacking = addtimer(CALLBACK(malf, /mob/living/silicon/ai/.proc/malfhacked, src), 600, TIMER_STOPPABLE)
- var/obj/screen/alert/hackingapc/A
- A = malf.throw_alert("hackingapc", /obj/screen/alert/hackingapc)
+ var/atom/movable/screen/alert/hackingapc/A
+ A = malf.throw_alert("hackingapc", /atom/movable/screen/alert/hackingapc)
A.target = src
/obj/machinery/power/apc/proc/malfoccupy(mob/living/silicon/ai/malf)
@@ -1207,7 +1258,6 @@
add_verb(occupier, /mob/living/silicon/ai/proc/corereturn)
occupier.cancel_camera()
-
/obj/machinery/power/apc/proc/malfvacate(forced)
if(!occupier)
return
@@ -1251,11 +1301,11 @@
return
transfer_in_progress = TRUE
user.visible_message("[user] slots [card] into [src]...", "Transfer process initiated. Sending request for AI approval...")
- playsound(src, 'sound/machines/click.ogg', 50, 1)
+ playsound(src, 'sound/machines/click.ogg', 50, TRUE)
SEND_SOUND(occupier, sound('sound/misc/notice2.ogg')) //To alert the AI that someone's trying to card them if they're tabbed out
if(alert(occupier, "[user] is attempting to transfer you to \a [card.name]. Do you consent to this?", "APC Transfer", "Yes - Transfer Me", "No - Keep Me Here") == "No - Keep Me Here")
to_chat(user, "AI denied transfer request. Process terminated.")
- playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 1)
+ playsound(src, 'sound/machines/buzz-sigh.ogg', 50, TRUE)
transfer_in_progress = FALSE
return
if(user.loc != T)
@@ -1300,16 +1350,16 @@
/obj/machinery/power/apc/process()
if(icon_update_needed)
- update_icon()
+ update_appearance()
if(stat & (BROKEN|MAINT))
return
- if(!area.requires_power)
+ if(!area || !area.requires_power)
return
if(failure_timer)
update()
queue_icon_update()
failure_timer--
- force_update = 1
+ force_update = TRUE
return
lastused_light = area.usage(STATIC_LIGHT)
@@ -1327,110 +1377,117 @@
var/last_eq = equipment
var/last_en = environ
var/last_ch = charging
+
var/excess = surplus()
+
if(!avail())
- main_status = 0
+ main_status = APC_NO_POWER
else if(excess < 0)
- main_status = 1
+ main_status = APC_LOW_POWER
else
- main_status = 2
+ main_status = APC_HAS_POWER
- var/cur_excess = excess
- var/cur_used = lastused_total
-
- // first: if we have enough power, power the essentials DIRECTLY
-
- var/environ_satisfied = FALSE
- var/equipment_satisfied = FALSE
- var/lighting_satisfied = FALSE
-
- if(cur_excess >= lastused_environ)
- autoset(environ, 1)
- add_load(lastused_environ)
- cur_excess -= lastused_environ
- cur_used -= lastused_environ
- environ_satisfied = TRUE
-
- if(cur_excess >= lastused_equip)
- autoset(equipment, 1)
- add_load(lastused_equip)
- cur_excess -= lastused_equip
- cur_used -= lastused_equip
- equipment_satisfied = TRUE
-
- if(cur_excess >= lastused_light)
- autoset(lighting, 1)
- add_load(lastused_light)
- cur_excess -= lastused_light
- cur_used -= lastused_light
- lighting_satisfied = TRUE
-
- //If drained by an integration cog: Forcefully avert as much of the powerdrain as possible, though a maximum of MAXIMUM_COG_REGAIN
- if(cur_excess && cog_drained && cell)
- var/cog_regain = cell.give(min(min(cog_drained, cur_excess), MAXIMUM_COG_REGAIN))
- cur_excess -= cog_regain
- cog_drained = max(0, cog_drained - cog_regain)
-
- // next: take from or charge to the cell, depending on how much is left
if(cell && !shorted)
- if(cur_excess > 0)
- var/charging_cell = min(min(cur_excess*GLOB.CELLRATE, cell.maxcharge * GLOB.CHARGELEVEL), cell.maxcharge - cell.charge)
- cell.give(charging_cell)
- add_load(charging_cell/GLOB.CELLRATE)
- lastused_total += charging_cell
- longtermpower = min(10,longtermpower + 1)
- if(chargemode && !charging)
- chargecount++
- if(chargecount == 10)
+ // draw power from cell as before to power the area
+ var/cellused = min(cell.charge, lastused_total JOULES) // clamp deduction to a max, amount left in cell
+ cell.use(cellused)
+ //If drained by an integration cog: Forcefully avert as much of the powerdrain as possible, though a maximum of MAXIMUM_COG_REGAIN
+ if(excess && cog_drained)
+ var/cog_regain = cell.give(min(min(cog_drained, excess), MAXIMUM_COG_REGAIN))
+ excess -= cog_regain
+ cog_drained = max(0, cog_drained - cog_regain)
- chargecount = 0
- charging = APC_CHARGING
- else // not enough power available to run the last tick!
- charging = APC_NOT_CHARGING
- chargecount = 0
- longtermpower = max(-10,longtermpower - 2)
- cell.use(min(GLOB.CELLRATE * cur_used, cell.charge))
+ if(excess > lastused_total) // if power excess recharge the cell
+ // by the same amount just used
+ cell.give(cellused)
+ add_load(cellused WATTS) // add the load used to recharge the cell
+ else // no excess, and not enough per-apc
+ if((cell.charge WATTS + excess) >= lastused_total) // can we draw enough from cell+grid to cover last usage?
+ cell.charge = min(cell.maxcharge, cell.charge + excess JOULES) //recharge with what we can
+ add_load(excess) // so draw what we can from the grid
+ charging = APC_NOT_CHARGING
- // set channels based on remaining charge
+ else // not enough power available to run the last tick!
+ charging = APC_NOT_CHARGING
+ chargecount = 0
+ // This turns everything off in the case that there is still a charge left on the battery, just not enough to run the room.
+ equipment = autoset(equipment, AUTOSET_FORCE_OFF)
+ lighting = autoset(lighting, AUTOSET_FORCE_OFF)
+ environ = autoset(environ, AUTOSET_FORCE_OFF)
- var/cell_percent = cell.percent()
- if(cell.charge <= 0) // zero charge, turn all off
- equipment = autoset(equipment, 0)
- lighting = autoset(lighting, 0)
- environ = autoset(environ, 0)
- area.poweralert(0, src)
+ // set channels depending on how much charge we have left
- else if(cell_percent < 15 && longtermpower < 0) // <15%, turn off lighting & equipment
- equipment = autoset(equipment, 2)
- lighting = autoset(lighting, 2)
- environ = autoset(environ, 1)
- area.poweralert(0, src)
- else if(cell_percent < 30 && longtermpower < 0) // <30%, turn off lighting
- equipment = autoset(equipment, 1)
- lighting = autoset(lighting, 2)
- environ = autoset(environ, 1)
- area.poweralert(0, src)
- else // otherwise all can be on
- equipment = autoset(equipment, 1)
- lighting = autoset(lighting, 1)
- environ = autoset(environ, 1)
- area.poweralert(1, src)
- if(cell_percent > 75)
- area.poweralert(1, src)
+ // Allow the APC to operate as normal if the cell can charge
+ if(charging && longtermpower < 10)
+ longtermpower += 1
+ else if(longtermpower > -10)
+ longtermpower -= 2
+ if(cell.charge <= 0) // zero charge, turn all off
+ equipment = autoset(equipment, AUTOSET_FORCE_OFF)
+ lighting = autoset(lighting, AUTOSET_FORCE_OFF)
+ environ = autoset(environ, AUTOSET_FORCE_OFF)
+ area.poweralert(TRUE, src)
+ else if(cell.percent() < 15 && longtermpower < 0) // <15%, turn off lighting & equipment
+ equipment = autoset(equipment, AUTOSET_OFF)
+ lighting = autoset(lighting, AUTOSET_OFF)
+ environ = autoset(environ, AUTOSET_ON)
+ area.poweralert(TRUE, src)
+ else if(cell.percent() < 30 && longtermpower < 0) // <30%, turn off equipment
+ equipment = autoset(equipment, AUTOSET_OFF)
+ lighting = autoset(lighting, AUTOSET_ON)
+ environ = autoset(environ, AUTOSET_ON)
+ area.poweralert(TRUE, src)
+ else // otherwise all can be on
+ equipment = autoset(equipment, AUTOSET_ON)
+ lighting = autoset(lighting, AUTOSET_ON)
+ environ = autoset(environ, AUTOSET_ON)
+ area.poweralert(FALSE, src)
+ if(cell.percent() > 75)
+ area.poweralert(FALSE, src)
+
+ // now trickle-charge the cell
+ if(chargemode && charging == APC_CHARGING && operating)
+ if(excess > 0) // check to make sure we have enough to charge
+ // Max charge is capped to % per second constant
+ var/ch = min(excess JOULES, cell.maxcharge JOULES)
+ add_load(ch WATTS) // Removes the power we're taking from the grid
+ cell.give(ch) // actually recharge the cell
+
+ else
+ charging = APC_NOT_CHARGING // stop charging
+ chargecount = 0
// show cell as fully charged if so
if(cell.charge >= cell.maxcharge)
cell.charge = cell.maxcharge
charging = APC_FULLY_CHARGED
- else // no cell, can still run but not very well
+ if(chargemode)
+ if(!charging)
+ if(excess > cell.maxcharge*GLOB.CHARGELEVEL)
+ chargecount++
+ else
+ chargecount = 0
+
+ if(chargecount == 10)
+
+ chargecount = 0
+ charging = APC_CHARGING
+
+ else // chargemode off
+ charging = APC_NOT_CHARGING
+ chargecount = 0
+
+ else // no cell, switch everything off
+
charging = APC_NOT_CHARGING
chargecount = 0
- environ = autoset(environ, environ_satisfied)
- equipment = autoset(equipment, equipment_satisfied)
- lighting = autoset(lighting, lighting_satisfied)
+ equipment = autoset(equipment, AUTOSET_FORCE_OFF)
+ lighting = autoset(lighting, AUTOSET_FORCE_OFF)
+ environ = autoset(environ, AUTOSET_FORCE_OFF)
+ area.poweralert(TRUE, src)
// update icon & area power if anything changed
@@ -1441,19 +1498,54 @@
else if (last_ch != charging)
queue_icon_update()
-// val 0=off, 1=off(auto) 2=on 3=on(auto)
-// on 0=off, 1=on, 2=autooff
-
+/**
+ * Returns the new status value for an APC channel.
+ *
+ * // val 0=off, 1=off(auto) 2=on 3=on(auto)
+ * // on 0=off, 1=on, 2=autooff
+ * TODO: Make this use bitflags instead. It should take at most three lines, but it's out of scope for now.
+ *
+ * Arguments:
+ * - val: The current status of the power channel.
+ * - [APC_CHANNEL_OFF]: The APCs channel has been manually set to off. This channel will not automatically change.
+ * - [APC_CHANNEL_AUTO_OFF]: The APCs channel is running on automatic and is currently off. Can be automatically set to [APC_CHANNEL_AUTO_ON].
+ * - [APC_CHANNEL_ON]: The APCs channel has been manually set to on. This will be automatically changed only if the APC runs completely out of power or is disabled.
+ * - [APC_CHANNEL_AUTO_ON]: The APCs channel is running on automatic and is currently on. Can be automatically set to [APC_CHANNEL_AUTO_OFF].
+ * - on: An enum dictating how to change the channel's status.
+ * - [AUTOSET_FORCE_OFF]: The APC forces the channel to turn off. This includes manually set channels.
+ * - [AUTOSET_ON]: The APC allows automatic channels to turn back on.
+ * - [AUTOSET_OFF]: The APC turns automatic channels off.
+ */
/obj/machinery/power/apc/proc/autoset(val, on)
- if(val == 3 && (on == 2 || !on)) // if auto-on, return auto-off
- return 1
- else if(val == 2 && !on) // if on, return off
- return 0
- else if(on == 1 && val == 1) // if auto-off, return auto-on
- return 3
- // no, i don't understand these comments either
+ if(on == AUTOSET_FORCE_OFF)
+ if(val == APC_CHANNEL_ON) // if on, return off
+ return APC_CHANNEL_OFF
+ else if(val == APC_CHANNEL_AUTO_ON) // if auto-on, return auto-off
+ return APC_CHANNEL_AUTO_OFF
+ else if(on == AUTOSET_ON)
+ if(val == APC_CHANNEL_AUTO_OFF) // if auto-off, return auto-on
+ return APC_CHANNEL_AUTO_ON
+ else if(on == AUTOSET_OFF)
+ if(val == APC_CHANNEL_AUTO_ON) // if auto-on, return auto-off
+ return APC_CHANNEL_AUTO_OFF
return val
+/**
+ * Used by external forces to set the APCs channel status's.
+ *
+ * Arguments:
+ * - val: The desired value of the subsystem:
+ * - 1: Manually sets the APCs channel to be [APC_CHANNEL_OFF].
+ * - 2: Manually sets the APCs channel to be [APC_CHANNEL_AUTO_ON]. If the APC doesn't have any power this defaults to [APC_CHANNEL_OFF] instead.
+ * - 3: Sets the APCs channel to be [APC_CHANNEL_AUTO_ON]. If the APC doesn't have enough power this defaults to [APC_CHANNEL_AUTO_OFF] instead.
+ */
+/obj/machinery/power/apc/proc/setsubsystem(val)
+ if(cell && cell.charge > 0)
+ return (val == 1) ? APC_CHANNEL_OFF : val
+ if(val == 3)
+ return APC_CHANNEL_AUTO_OFF
+ return APC_CHANNEL_OFF
+
/obj/machinery/power/apc/proc/reset(wire)
switch(wire)
if(WIRE_IDSCAN)
@@ -1461,14 +1553,13 @@
if(WIRE_POWER1, WIRE_POWER2)
if(!wires.is_cut(WIRE_POWER1) && !wires.is_cut(WIRE_POWER2))
shorted = FALSE
- update()
if(WIRE_AI)
if(!wires.is_cut(WIRE_AI))
aidisabled = FALSE
if(APC_RESET_EMP)
- equipment = 3
- environ = 3
- update_icon()
+ equipment = APC_CHANNEL_AUTO_ON
+ environ = APC_CHANNEL_AUTO_ON
+ update_appearance()
update()
// damage and destruction acts
@@ -1481,12 +1572,12 @@
occupier.emp_act(severity)
if(. & EMP_PROTECT_SELF)
return
- lighting = 0
- equipment = 0
- environ = 0
- update_icon()
+ lighting = APC_CHANNEL_OFF
+ equipment = APC_CHANNEL_OFF
+ environ = APC_CHANNEL_OFF
+ update_appearance()
update()
- addtimer(CALLBACK(src, .proc/reset, APC_RESET_EMP), severity*8)
+ addtimer(CALLBACK(src, .proc/reset, APC_RESET_EMP), 600)
/obj/machinery/power/apc/blob_act(obj/structure/blob/B)
set_broken()
@@ -1499,11 +1590,10 @@
/obj/machinery/power/apc/proc/set_broken()
if(malfai && operating)
malfai.malf_picker.processing_time = clamp(malfai.malf_picker.processing_time - 10,0,1000)
- stat |= BROKEN
operating = FALSE
+ obj_break()
if(occupier)
malfvacate(1)
- update_icon()
update()
// overload all the lights in this APC area
@@ -1524,23 +1614,14 @@
/obj/machinery/power/apc/proc/shock(mob/user, prb)
if(!prob(prb))
- return 0
+ return FALSE
do_sparks(5, TRUE, src)
if(isalien(user))
- return 0
+ return FALSE
if(electrocute_mob(user, src, src, 1, TRUE))
- return 1
+ return TRUE
else
- return 0
-
-/obj/machinery/power/apc/proc/setsubsystem(val)
- if(cell && cell.charge > 0)
- return (val==1) ? 0 : val
- else if(val == 3)
- return 1
- else
- return 0
-
+ return FALSE
/obj/machinery/power/apc/proc/energy_fail(duration)
for(var/obj/machinery/M in area.contents)
@@ -1566,12 +1647,8 @@
/obj/machinery/power/apc/proc/set_hijacked_lighting()
set waitfor = FALSE
- var/hijackerreturn
- if (hijacker)
- var/obj/item/implant/hijack/H = hijacker.getImplant(/obj/item/implant/hijack)
- hijackerreturn = H && !H.stealthmode
for(var/obj/machinery/light/L in area)
- L.hijacked = hijackerreturn
+ L.hijacked = hijackerreturn()
L.update(FALSE)
CHECK_TICK
@@ -1587,16 +1664,19 @@
var/normal_requires_auth = CONFIG_GET(flag/nightshift_toggle_requires_auth)
return (configured_level && our_level && ((our_level <= configured_level)? public_requires_auth : normal_requires_auth))
-#undef UPSTATE_CELL_IN
-#undef UPSTATE_OPENED1
-#undef UPSTATE_OPENED2
-#undef UPSTATE_MAINT
-#undef UPSTATE_BROKE
-#undef UPSTATE_BLUESCREEN
-#undef UPSTATE_WIREEXP
-#undef UPSTATE_ALLGOOD
-#undef APC_RESET_EMP
+#undef APC_CHANNEL_OFF
+#undef APC_CHANNEL_AUTO_OFF
+#undef APC_CHANNEL_ON
+#undef APC_CHANNEL_AUTO_ON
+
+#undef AUTOSET_FORCE_OFF
+#undef AUTOSET_OFF
+#undef AUTOSET_ON
+
+#undef APC_NO_POWER
+#undef APC_LOW_POWER
+#undef APC_HAS_POWER
#undef APC_ELECTRONICS_MISSING
#undef APC_ELECTRONICS_INSTALLED
@@ -1610,22 +1690,26 @@
#undef APC_CHARGING
#undef APC_FULLY_CHARGED
-//update_overlay
-#undef APC_UPOVERLAY_CHARGEING0
-#undef APC_UPOVERLAY_CHARGEING1
-#undef APC_UPOVERLAY_CHARGEING2
-#undef APC_UPOVERLAY_EQUIPMENT0
-#undef APC_UPOVERLAY_EQUIPMENT1
-#undef APC_UPOVERLAY_EQUIPMENT2
-#undef APC_UPOVERLAY_LIGHTING0
-#undef APC_UPOVERLAY_LIGHTING1
-#undef APC_UPOVERLAY_LIGHTING2
-#undef APC_UPOVERLAY_ENVIRON0
-#undef APC_UPOVERLAY_ENVIRON1
-#undef APC_UPOVERLAY_ENVIRON2
-#undef APC_UPOVERLAY_LOCKED
-#undef APC_UPOVERLAY_OPERATING
+#undef APC_DRAIN_TIME
+#undef APC_POWER_GAIN
+#undef APC_RESET_EMP
+
+// update_state
+#undef UPSTATE_CELL_IN
+#undef UPSTATE_COVER_SHIFT
+#undef UPSTATE_BROKE
+#undef UPSTATE_MAINT
+#undef UPSTATE_BLUESCREEN
+#undef UPSTATE_WIREEXP
+
+//update_overlay
+#undef UPOVERLAY_OPERATING
+#undef UPOVERLAY_LOCKED
+#undef UPOVERLAY_CHARGING_SHIFT
+#undef UPOVERLAY_EQUIPMENT_SHIFT
+#undef UPOVERLAY_LIGHTING_SHIFT
+#undef UPOVERLAY_ENVIRON_SHIFT
#undef MAXIMUM_COG_REGAIN
/*Power module, used for APC construction*/
diff --git a/code/modules/power/gravitygenerator.dm b/code/modules/power/gravitygenerator.dm
index e37ae56e71..3fe03978bd 100644
--- a/code/modules/power/gravitygenerator.dm
+++ b/code/modules/power/gravitygenerator.dm
@@ -32,7 +32,7 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne
return FALSE
/obj/machinery/gravity_generator/ex_act(severity, target)
- if(severity == 1) // Very sturdy.
+ if(severity >= EXPLODE_DEVASTATE) // Very sturdy.
set_broken()
/obj/machinery/gravity_generator/blob_act(obj/structure/blob/B)
@@ -40,12 +40,13 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne
set_broken()
/obj/machinery/gravity_generator/zap_act(power, zap_flags)
- ..()
+ . = ..()
if(zap_flags & ZAP_MACHINE_EXPLOSIVE)
qdel(src)//like the singulo, tesla deletes it. stops it from exploding over and over
/obj/machinery/gravity_generator/update_icon_state()
icon_state = "[get_status()]_[sprite_number]"
+ return ..()
/obj/machinery/gravity_generator/proc/get_status()
return "off"
@@ -80,14 +81,19 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne
/obj/machinery/gravity_generator/part/get_status()
return main_part?.get_status()
-/obj/machinery/gravity_generator/part/on_attack_hand(mob/user, act_intent = user.a_intent, unarmed_attack_flags)
- return main_part.attack_hand(user)
+/obj/machinery/gravity_generator/part/attack_hand(mob/user, list/modifiers)
+ return main_part.attack_hand(user, modifiers)
/obj/machinery/gravity_generator/part/set_broken()
..()
if(main_part && !(main_part.stat & BROKEN))
main_part.set_broken()
+/// Used to eat args
+/obj/machinery/gravity_generator/part/proc/on_update_icon(obj/machinery/gravity_generator/source, updates, updated)
+ SIGNAL_HANDLER
+ return update_appearance(updates)
+
//
// Generator which spawns with the station.
//
@@ -124,7 +130,7 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne
var/charge_count = 100
var/current_overlay = null
var/broken_state = 0
- var/setting = 1 //Gravity value when on
+ var/setting = 1 //Gravity value when on
/obj/machinery/gravity_generator/main/Destroy() // If we somehow get deleted, remove all of our other parts.
investigate_log("was destroyed!", INVESTIGATE_GRAVITY)
@@ -149,13 +155,13 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne
if(count == 5) // Middle
middle = part
if(count <= 3) // Their sprite is the top part of the generator
- part.density = FALSE
+ part.density= 0
part.layer = WALL_OBJ_LAYER
part.sprite_number = count
part.main_part = src
parts += part
- part.update_icon()
- part.RegisterSignal(src, COMSIG_ATOM_UPDATED_ICON, /atom/proc/update_icon)
+ part.update_appearance()
+ part.RegisterSignal(src, COMSIG_ATOM_UPDATED_ICON, /obj/machinery/gravity_generator/part/proc/on_update_icon)
/obj/machinery/gravity_generator/main/proc/connected_parts()
return parts.len == 8
@@ -178,7 +184,7 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne
if(M.stat & BROKEN)
M.set_fix()
broken_state = FALSE
- update_icon()
+ update_appearance()
set_power()
// Interaction
@@ -188,33 +194,33 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne
switch(broken_state)
if(GRAV_NEEDS_SCREWDRIVER)
if(I.tool_behaviour == TOOL_SCREWDRIVER)
- to_chat(user, "You secure the screws of the framework.")
+ to_chat(user, span_notice("You secure the screws of the framework."))
I.play_tool_sound(src)
broken_state++
- update_icon()
+ update_appearance()
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, "You mend the damaged framework.")
+ to_chat(user, span_notice("You mend the damaged framework."))
broken_state++
- update_icon()
+ update_appearance()
return
if(GRAV_NEEDS_PLASTEEL)
if(istype(I, /obj/item/stack/sheet/plasteel))
var/obj/item/stack/sheet/plasteel/PS = I
if(PS.get_amount() >= 10)
PS.use(10)
- to_chat(user, "You add the plating to the framework.")
+ to_chat(user, span_notice("You add the plating to the framework."))
playsound(src.loc, 'sound/machines/click.ogg', 75, TRUE)
broken_state++
- update_icon()
+ update_appearance()
else
- to_chat(user, "You need 10 sheets of plasteel!")
+ to_chat(user, span_warning("You need 10 sheets of plasteel!"))
return
if(GRAV_NEEDS_WRENCH)
if(I.tool_behaviour == TOOL_WRENCH)
- to_chat(user, "You secure the plating to the framework.")
+ to_chat(user, span_notice("You secure the plating to the framework."))
I.play_tool_sound(src)
set_fix()
return
@@ -238,7 +244,8 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne
return data
/obj/machinery/gravity_generator/main/ui_act(action, params)
- if(..())
+ . = ..()
+ if(.)
return
switch(action)
@@ -270,7 +277,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()
// Set the state of the gravity.
/obj/machinery/gravity_generator/main/proc/set_state(new_state)
@@ -291,7 +298,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()
update_list()
src.updateUsrDialog()
if(alert)
@@ -391,13 +398,16 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne
// Misc
/obj/item/paper/guides/jobs/engi/gravity_gen
- info = {"
-# Gravity Generator Instructions For Dummies
-Surprisingly, gravity isn't that hard to make! All you have to do is inject deadly radioactive minerals into a ball of energy and you have yourself gravity! You can turn the machine on or off when required but you must remember that the generator will EMIT RADIATION when charging or discharging, you can tell it is charging or discharging by the noise it makes, so please WEAR PROTECTIVE CLOTHING.
-### It blew up!
-Don't panic! The gravity generator was designed to be easily repaired. If, somehow, the sturdy framework did not survive then please proceed to panic; otherwise follow these steps.
-1. Secure the screws of the framework with a screwdriver.
-2. Mend the damaged framework with a welding tool.
-3. Add additional plasteel plating.
-4. Secure the additional plating with a wrench.
-"}
+ name = "paper- 'Generate your own gravity!'"
+ info = {"Gravity Generator Instructions For Dummies
+ Surprisingly, gravity isn't that hard to make! All you have to do is inject deadly radioactive minerals into a ball of
+ energy and you have yourself gravity! You can turn the machine on or off when required but you must remember that the generator
+ will EMIT RADIATION when charging or discharging, you can tell it is charging or discharging by the noise it makes, so please WEAR PROTECTIVE CLOTHING.
+
+ It blew up!
+ Don't panic! The gravity generator was designed to be easily repaired. If, somehow, the sturdy framework did not survive then
+ please proceed to panic; otherwise follow these steps.
+ - Secure the screws of the framework with a screwdriver.
+ - Mend the damaged framework with a welding tool.
+ - Add additional plasteel plating.
+ - Secure the additional plating with a wrench.
"}
diff --git a/code/modules/power/power.dm b/code/modules/power/power.dm
index 9bbdcf4f66..c2dd77290a 100644
--- a/code/modules/power/power.dm
+++ b/code/modules/power/power.dm
@@ -104,15 +104,23 @@
/obj/machinery/proc/removeStaticPower(value, powerchannel)
addStaticPower(-value, powerchannel)
-/obj/machinery/proc/power_change() // called whenever the power settings of the containing area change
- // by default, check equipment channel & set flag
- // can override if needed
- if(powered(power_channel))
- stat &= ~NOPOWER
- else
+/obj/machinery/proc/power_change()
+ //SIGNAL_HANDLER
+ //SHOULD_CALL_PARENT(TRUE)
- stat |= NOPOWER
- return
+ if(stat & BROKEN)
+ return
+ if(powered(power_channel))
+ if(stat & NOPOWER)
+ SEND_SIGNAL(src, COMSIG_MACHINERY_POWER_RESTORED)
+ . = TRUE
+ set_machine_stat(stat & ~NOPOWER)
+ else
+ if(!(stat & NOPOWER))
+ SEND_SIGNAL(src, COMSIG_MACHINERY_POWER_LOST)
+ . = TRUE
+ set_machine_stat(stat | NOPOWER)
+ update_appearance()
// 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/solar.dm b/code/modules/power/solar.dm
index 9cc289b06d..907c4e7d65 100644
--- a/code/modules/power/solar.dm
+++ b/code/modules/power/solar.dm
@@ -63,7 +63,7 @@
assembly = S
assembly.glass_type.on_solar_construction(src)
obj_integrity = max_integrity
- update_icon()
+ update_appearance()
/obj/machinery/power/solar/crowbar_act(mob/user, obj/item/I)
playsound(src.loc, 'sound/machines/click.ogg', 50, TRUE)
@@ -86,11 +86,10 @@
/obj/machinery/power/solar/obj_break(damage_flag)
- if(!(stat & BROKEN) && !(flags_1 & NODECONSTRUCT_1))
+ . = ..()
+ if(.)
playsound(loc, 'sound/effects/glassbr3.ogg', 100, TRUE)
- stat |= BROKEN
unset_control()
- update_icon()
/obj/machinery/power/solar/deconstruct(disassembled = TRUE)
if(!(flags_1 & NODECONSTRUCT_1))
@@ -99,7 +98,7 @@
assembly.forceMove(loc)
assembly.give_glass(stat & BROKEN)
else
- playsound(src, "shatter", 70, 1)
+ playsound(src, "shatter", 70, TRUE)
var/shard = assembly?.glass_type ? assembly.glass_type.shard_type : /obj/item/shard
new shard(loc)
new shard(loc)
@@ -110,16 +109,15 @@
var/matrix/turner = matrix()
turner.Turn(azimuth_current)
panel.transform = turner
- if(stat & BROKEN)
- panel.icon_state = "solar_panel-b"
- else
- panel.icon_state = "solar_panel"
+ panel.icon_state = "solar_panel[(stat & BROKEN) ? "-b" : null]"
/obj/machinery/power/solar/proc/queue_turn(azimuth)
needs_to_turn = TRUE
azimuth_target = azimuth
/obj/machinery/power/solar/proc/queue_update_solar_exposure()
+ SIGNAL_HANDLER
+
needs_to_update_solar_exposure = TRUE //updating right away would be wasteful if we're also turning later
/obj/machinery/power/solar/proc/update_turn()
@@ -127,7 +125,7 @@
if(azimuth_current != azimuth_target)
azimuth_current = azimuth_target
occlusion_setup()
- update_icon()
+ update_appearance()
needs_to_update_solar_exposure = TRUE
///trace towards sun to see if we're in shadow
@@ -173,7 +171,7 @@
control.gen += sgen
//Bit of a hack but this whole type is a hack
-/obj/machinery/power/solar/fake/Initialize(turf/loc, obj/item/solar_assembly/S)
+/obj/machinery/power/solar/fake/Initialize(mapload, obj/item/solar_assembly/S)
. = ..()
UnregisterSignal(SSsun, COMSIG_SUN_MOVED)
@@ -199,6 +197,16 @@
var/static/list/allowed_sheets = typecacheof(list(/obj/item/stack/sheet/glass, /obj/item/stack/sheet/rglass,
/obj/item/stack/sheet/plasmaglass, /obj/item/stack/sheet/plasmarglass,
/obj/item/stack/sheet/titaniumglass, /obj/item/stack/sheet/plastitaniumglass))
+ var/random_offset = 6 //amount in pixels an unanchored assembly may be offset by
+
+/obj/item/solar_assembly/Initialize(mapload)
+ . = ..()
+ if(!anchored && !pixel_x && !pixel_y)
+ randomise_offset(random_offset)
+
+/obj/item/solar_assembly/proc/randomise_offset(amount)
+ pixel_x = rand(-amount, amount)
+ pixel_y = rand(-amount, amount)
// Give back the glass type we were supplied with
/obj/item/solar_assembly/proc/give_glass(device_broken)
@@ -212,20 +220,21 @@
glass_type.forceMove(Tsec)
glass_type = null
+/obj/item/solar_assembly/set_anchored(anchorvalue)
+ . = ..()
+ if(isnull(.))
+ return
+ randomise_offset(anchored ? 0 : random_offset)
/obj/item/solar_assembly/attackby(obj/item/W, mob/user, params)
if(W.tool_behaviour == TOOL_WRENCH && isturf(loc))
if(isinspace())
to_chat(user, "You can't secure [src] here.")
return
- anchored = !anchored
- if(anchored)
- user.visible_message("[user] wrenches the solar assembly into place.", "You wrench the solar assembly into place.")
- W.play_tool_sound(src, 75)
- else
- user.visible_message("[user] unwrenches the solar assembly from its place.", "You unwrench the solar assembly from its place.")
- W.play_tool_sound(src, 75)
- return 1
+ set_anchored(!anchored)
+ user.visible_message("[user] [anchored ? null : "un"]wrenches the solar assembly into place.", "You [anchored ? null : "un"]wrench the solar assembly into place.")
+ W.play_tool_sound(src, 75)
+ return TRUE
if(is_type_in_typecache(W, allowed_sheets))
if(!anchored)
@@ -249,16 +258,16 @@
if(istype(W, /obj/item/electronics/tracker))
if(!user.temporarilyRemoveItemFromInventory(W))
return
- tracker = 1
+ tracker = TRUE
qdel(W)
user.visible_message("[user] inserts the electronics into the solar assembly.", "You insert the electronics into the solar assembly.")
return 1
else
if(W.tool_behaviour == TOOL_CROWBAR)
new /obj/item/electronics/tracker(src.loc)
- tracker = 0
+ tracker = FALSE
user.visible_message("[user] takes out the electronics from the solar assembly.", "You take out the electronics from the solar assembly.")
- return 1
+ return TRUE
return ..()
//
@@ -322,11 +331,12 @@
if(stat & NOPOWER)
. += mutable_appearance(icon, "[icon_keyboard]_off")
return
+
. += mutable_appearance(icon, icon_keyboard)
if(stat & BROKEN)
. += mutable_appearance(icon, "[icon_state]_broken")
- else
- . += mutable_appearance(icon, icon_screen)
+ return
+ . += mutable_appearance(icon, icon_screen)
/obj/machinery/power/solar_control/ui_interact(mob/user, datum/tgui/ui)
ui = SStgui.try_update_ui(user, src, ui)
@@ -347,7 +357,8 @@
return data
/obj/machinery/power/solar_control/ui_act(action, params)
- if(..())
+ . = ..()
+ if(.)
return
if(action == "azimuth")
var/adjust = text2num(params["adjust"])
@@ -381,10 +392,10 @@
return TRUE
return FALSE
-/obj/machinery/power/solar_control/attackby(obj/item/I, mob/user, params)
+/obj/machinery/power/solar_control/attackby(obj/item/I, mob/living/user, params)
if(I.tool_behaviour == TOOL_SCREWDRIVER)
- if(I.use_tool(src, user, 20, volume = 50))
- if(src.stat & BROKEN)
+ if(I.use_tool(src, user, 20, volume=50))
+ if (src.stat & BROKEN)
to_chat(user, "The broken glass falls out.")
var/obj/structure/frame/computer/A = new /obj/structure/frame/computer( src.loc )
new /obj/item/shard( src.loc )
@@ -394,7 +405,7 @@
A.circuit = M
A.state = 3
A.icon_state = "3"
- A.anchored = TRUE
+ A.set_anchored(TRUE)
qdel(src)
else
to_chat(user, "You disconnect the monitor.")
@@ -405,7 +416,7 @@
A.circuit = M
A.state = 4
A.icon_state = "4"
- A.anchored = TRUE
+ A.set_anchored(TRUE)
qdel(src)
else if(user.a_intent != INTENT_HARM && !(I.item_flags & NOBLUDGEON))
attack_hand(user)
@@ -423,10 +434,9 @@
playsound(src.loc, 'sound/items/welder.ogg', 100, TRUE)
/obj/machinery/power/solar_control/obj_break(damage_flag)
- if(!(stat & BROKEN) && !(flags_1 & NODECONSTRUCT_1))
+ . = ..()
+ if(.)
playsound(loc, 'sound/effects/glassbr3.ogg', 100, TRUE)
- stat |= BROKEN
- update_icon()
/obj/machinery/power/solar_control/process()
lastgen = gen
@@ -437,6 +447,8 @@
///Ran every time the sun updates.
/obj/machinery/power/solar_control/proc/timed_track()
+ SIGNAL_HANDLER
+
if(track == SOLAR_TRACK_TIMED)
azimuth_target += azimuth_rate
set_panels(azimuth_target)
@@ -453,20 +465,12 @@
for(var/obj/machinery/power/solar/S in connected_panels)
S.queue_turn(azimuth)
-/obj/machinery/power/solar_control/power_change()
- ..()
- update_icon()
-
//
// MISC
//
/obj/item/paper/guides/jobs/engi/solars
- info = {"
-# Welcome!
-At greencorps we love the environment, and space. With this package you are able to help mother nature and produce energy without any usage of fossil fuel or plasma! Singularity energy is dangerous while solar energy is safe, which is why it's better. Now here is how you setup your own solar array.
-You can make a solar panel by wrenching the solar assembly onto a cable node. Adding a glass panel, reinforced or regular glass will do, will finish the construction of your solar panel. It is that easy!Now after setting up 19 more of these solar panels you will want to create a solar tracker to keep track of our mother nature's gift, the sun. These are the same steps as before except you insert the tracker equipment circuit into the assembly before performing the final step of adding the glass. You now have a tracker! Now the last step is to add a computer to calculate the sun's movements and to send commands to the solar panels to change direction with the sun. Setting up the solar computer is the same as setting up any computer, so you should have no trouble in doing that. You do need to put a wire node under the computer, and the wire needs to be connected to the tracker.
-Congratulations, you should have a working solar array. If you are having trouble, here are some tips. Make sure all solar equipment are on a cable node, even the computer. You can always deconstruct your creations if you make a mistake.
That's all to it, be safe, be green!
-"}
+ name = "paper- 'Going green! Setup your own solar array instructions.'"
+ info = "
Welcome
At greencorps we love the environment, and space. With this package you are able to help mother nature and produce energy without any usage of fossil fuel or plasma! Singularity energy is dangerous while solar energy is safe, which is why it's better. Now here is how you setup your own solar array.
You can make a solar panel by wrenching the solar assembly onto a cable node. Adding a glass panel, reinforced or regular glass will do, will finish the construction of your solar panel. It is that easy!
Now after setting up 19 more of these solar panels you will want to create a solar tracker to keep track of our mother nature's gift, the sun. These are the same steps as before except you insert the tracker equipment circuit into the assembly before performing the final step of adding the glass. You now have a tracker! Now the last step is to add a computer to calculate the sun's movements and to send commands to the solar panels to change direction with the sun. Setting up the solar computer is the same as setting up any computer, so you should have no trouble in doing that. You do need to put a wire node under the computer, and the wire needs to be connected to the tracker.
Congratulations, you should have a working solar array. If you are having trouble, here are some tips. Make sure all solar equipment are on a cable node, even the computer. You can always deconstruct your creations if you make a mistake.
That's all to it, be safe, be green!
"
#undef SOLAR_GEN_RATE
diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm
index 16317bf9a3..363d3f6b71 100644
--- a/code/modules/power/supermatter/supermatter.dm
+++ b/code/modules/power/supermatter/supermatter.dm
@@ -116,7 +116,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
///The portion of the gasmix we're on that we should remove
var/gasefficency = 0.15
///Used for changing icon states for diff base sprites
- var/base_icon_state = "darkmatter"
+ base_icon_state = "darkmatter"
///Are we exploding?
var/final_countdown = FALSE
diff --git a/code/modules/projectiles/guns/energy/laser_gatling.dm b/code/modules/projectiles/guns/energy/laser_gatling.dm
index 716cc6f31d..a0274d76d7 100644
--- a/code/modules/projectiles/guns/energy/laser_gatling.dm
+++ b/code/modules/projectiles/guns/energy/laser_gatling.dm
@@ -68,8 +68,8 @@
if(!M.incapacitated())
- if(istype(over_object, /obj/screen/inventory/hand))
- var/obj/screen/inventory/hand/H = over_object
+ if(istype(over_object, /atom/movable/screen/inventory/hand))
+ var/atom/movable/screen/inventory/hand/H = over_object
M.putItemFromInventoryInHandIfPossible(src, H.held_index)
/obj/item/minigunpack/update_icon_state()
diff --git a/code/modules/projectiles/guns/misc/beam_rifle.dm b/code/modules/projectiles/guns/misc/beam_rifle.dm
index 9d9f6aeb83..2ef974a450 100644
--- a/code/modules/projectiles/guns/misc/beam_rifle.dm
+++ b/code/modules/projectiles/guns/misc/beam_rifle.dm
@@ -280,7 +280,7 @@
/obj/item/gun/energy/beam_rifle/onMouseDown(object, location, params, mob/mob)
if(istype(mob))
set_user(mob)
- if(istype(object, /obj/screen) && !istype(object, /obj/screen/click_catcher))
+ if(istype(object, /atom/movable/screen) && !istype(object, /atom/movable/screen/click_catcher))
return
if((object in mob.contents) || (object == mob))
return
@@ -288,7 +288,7 @@
return ..()
/obj/item/gun/energy/beam_rifle/onMouseUp(object, location, params, mob/M)
- if(istype(object, /obj/screen) && !istype(object, /obj/screen/click_catcher))
+ if(istype(object, /atom/movable/screen) && !istype(object, /atom/movable/screen/click_catcher))
return
process_aim()
if(fire_check() && can_trigger_gun(M))
diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm
index 0655faa1e8..7dd8cac452 100644
--- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm
@@ -827,7 +827,7 @@
if(prob(33)) // 1/3rd of the time, let's make it stack with the previous matrix! Mwhahahaha!
for(var/whole_screen in screens)
- var/obj/screen/plane_master/PM = whole_screen
+ var/atom/movable/screen/plane_master/PM = whole_screen
newmatrix = skew * PM.transform
for(var/whole_screen in screens)
diff --git a/code/modules/recycling/disposal/bin.dm b/code/modules/recycling/disposal/bin.dm
index ef3a053027..7fc57ee3a7 100644
--- a/code/modules/recycling/disposal/bin.dm
+++ b/code/modules/recycling/disposal/bin.dm
@@ -401,12 +401,15 @@
//check for items in disposal - occupied light
if(contents.len > 0)
. += "dispover-full"
+ . += emissive_appearance(icon, "dispover-full", alpha = src.alpha)
//charging and ready light
if(pressure_charging)
. += "dispover-charge"
+ . += emissive_appearance(icon, "dispover-charge-glow", alpha = src.alpha)
else if(full_pressure)
. += "dispover-ready"
+ . += emissive_appearance(icon, "dispover-ready-glow", alpha = src.alpha)
/obj/machinery/disposal/bin/proc/do_flush()
set waitfor = FALSE
@@ -462,7 +465,7 @@
/obj/machinery/disposal/bin/get_remote_view_fullscreens(mob/user)
if(user.stat == DEAD || !(user.sight & (SEEOBJS|SEEMOBS)))
- user.overlay_fullscreen("remote_view", /obj/screen/fullscreen/impaired, 2)
+ user.overlay_fullscreen("remote_view", /atom/movable/screen/fullscreen/impaired, 2)
//Delivery Chute
diff --git a/code/modules/research/nanites/nanite_program_hub.dm b/code/modules/research/nanites/nanite_program_hub.dm
index 85a117f53f..9a625cd0c7 100644
--- a/code/modules/research/nanites/nanite_program_hub.dm
+++ b/code/modules/research/nanites/nanite_program_hub.dm
@@ -28,11 +28,10 @@
/obj/machinery/nanite_program_hub/update_overlays()
. = ..()
- SSvis_overlays.remove_vis_overlay(src, managed_vis_overlays)
if((stat & (NOPOWER|MAINT|BROKEN)) || panel_open)
return
- SSvis_overlays.add_vis_overlay(src, icon, "nanite_program_hub_on", layer, plane)
- SSvis_overlays.add_vis_overlay(src, icon, "nanite_program_hub_on", EMISSIVE_LAYER, EMISSIVE_PLANE)
+ . += mutable_appearance(icon, "nanite_program_hub_on")
+ . += emissive_appearance(icon, "nanite_program_hub_on")
/obj/machinery/nanite_program_hub/attackby(obj/item/I, mob/user)
if(istype(I, /obj/item/disk/nanite_program))
@@ -148,3 +147,7 @@
disk.program = null
disk.name = initial(disk.name)
. = TRUE
+
+/obj/machinery/nanite_program_hub/admin/Initialize()
+ . = ..()
+ linked_techweb = SSresearch.admin_tech
diff --git a/code/modules/research/nanites/nanite_programmer.dm b/code/modules/research/nanites/nanite_programmer.dm
index f23a44909c..d858063cb1 100644
--- a/code/modules/research/nanites/nanite_programmer.dm
+++ b/code/modules/research/nanites/nanite_programmer.dm
@@ -13,11 +13,10 @@
/obj/machinery/nanite_programmer/update_overlays()
. = ..()
- SSvis_overlays.remove_vis_overlay(src, managed_vis_overlays)
if((stat & (NOPOWER|MAINT|BROKEN)) || panel_open)
return
- SSvis_overlays.add_vis_overlay(src, icon, "nanite_programmer_on", layer, plane)
- SSvis_overlays.add_vis_overlay(src, icon, "nanite_programmer_on", EMISSIVE_LAYER, EMISSIVE_PLANE)
+ . += mutable_appearance(icon, "nanite_programmer_on")
+ . += emissive_appearance(icon, "nanite_programmer_on")
/obj/machinery/nanite_programmer/attackby(obj/item/I, mob/user)
if(istype(I, /obj/item/disk/nanite_program))
diff --git a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm
index 8254e20761..0c34a251ae 100644
--- a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm
+++ b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm
@@ -1,4 +1,4 @@
-/obj/screen/alert/status_effect/rainbow_protection
+/atom/movable/screen/alert/status_effect/rainbow_protection
name = "Rainbow Protection"
desc = "You are defended from harm, but so are those you might seek to injure!"
icon_state = "slime_rainbowshield"
@@ -6,7 +6,7 @@
/datum/status_effect/rainbow_protection
id = "rainbow_protection"
duration = 100
- alert_type = /obj/screen/alert/status_effect/rainbow_protection
+ alert_type = /atom/movable/screen/alert/status_effect/rainbow_protection
var/originalcolor
/datum/status_effect/rainbow_protection/on_apply()
@@ -29,7 +29,7 @@
"You no longer feel protected...")
return ..()
-/obj/screen/alert/status_effect/slimeskin
+/atom/movable/screen/alert/status_effect/slimeskin
name = "Adamantine Slimeskin"
desc = "You are covered in a thick, non-neutonian gel."
icon_state = "slime_stoneskin"
@@ -37,7 +37,7 @@
/datum/status_effect/slimeskin
id = "slimeskin"
duration = 300
- alert_type = /obj/screen/alert/status_effect/slimeskin
+ alert_type = /atom/movable/screen/alert/status_effect/slimeskin
var/originalcolor
/datum/status_effect/slimeskin/on_apply()
@@ -91,14 +91,14 @@
owner.forceMove(target.loc)
return ..()
-/obj/screen/alert/status_effect/freon/stasis
+/atom/movable/screen/alert/status_effect/freon/stasis
desc = "You're frozen inside of a protective ice cube! While inside, you can't do anything, but are immune to harm! Resist to get out."
/datum/status_effect/frozenstasis
id = "slime_frozen"
status_type = STATUS_EFFECT_UNIQUE
duration = -1 //Will remove self when block breaks.
- alert_type = /obj/screen/alert/status_effect/freon/stasis
+ alert_type = /atom/movable/screen/alert/status_effect/freon/stasis
var/obj/structure/ice_stasis/cube
/datum/status_effect/frozenstasis/on_apply()
@@ -162,7 +162,7 @@
qdel(clone)
return ..()
-/obj/screen/alert/status_effect/clone_decay
+/atom/movable/screen/alert/status_effect/clone_decay
name = "Clone Decay"
desc = "You are simply a construct, and cannot maintain this form forever. You will be returned to your original body if you should fall."
icon_state = "slime_clonedecay"
@@ -171,7 +171,7 @@
id = "slime_clonedecay"
status_type = STATUS_EFFECT_UNIQUE
duration = -1
- alert_type = /obj/screen/alert/status_effect/clone_decay
+ alert_type = /atom/movable/screen/alert/status_effect/clone_decay
/datum/status_effect/slime_clone_decay/tick()
owner.adjustToxLoss(1, 0)
@@ -180,7 +180,7 @@
owner.adjustFireLoss(1, 0)
owner.color = "#007BA7"
-/obj/screen/alert/status_effect/bloodchill
+/atom/movable/screen/alert/status_effect/bloodchill
name = "Bloodchilled"
desc = "You feel a shiver down your spine after getting hit with a glob of cold blood. You'll move slower and get frostbite for a while!"
icon_state = "bloodchill"
@@ -188,7 +188,7 @@
/datum/status_effect/bloodchill
id = "bloodchill"
duration = 100
- alert_type = /obj/screen/alert/status_effect/bloodchill
+ alert_type = /atom/movable/screen/alert/status_effect/bloodchill
/datum/status_effect/bloodchill/on_apply()
owner.add_movespeed_modifier(/datum/movespeed_modifier/status_effect/bloodchill)
@@ -202,7 +202,7 @@
owner.remove_movespeed_modifier(/datum/movespeed_modifier/status_effect/bloodchill)
return ..()
-/obj/screen/alert/status_effect/bloodchill
+/atom/movable/screen/alert/status_effect/bloodchill
name = "Bloodchilled"
desc = "You feel a shiver down your spine after getting hit with a glob of cold blood. You'll move slower and get frostbite for a while!"
icon_state = "bloodchill"
@@ -210,7 +210,7 @@
/datum/status_effect/bonechill
id = "bonechill"
duration = 80
- alert_type = /obj/screen/alert/status_effect/bonechill
+ alert_type = /atom/movable/screen/alert/status_effect/bonechill
/datum/status_effect/bonechill/on_apply()
owner.add_movespeed_modifier(/datum/movespeed_modifier/status_effect/bonechill)
@@ -226,7 +226,7 @@
owner.remove_movespeed_modifier(/datum/movespeed_modifier/status_effect/bonechill)
return ..()
-/obj/screen/alert/status_effect/bonechill
+/atom/movable/screen/alert/status_effect/bonechill
name = "Bonechilled"
desc = "You feel a shiver down your spine after hearing the haunting noise of bone rattling. You'll move slower and get frostbite for a while!"
icon_state = "bloodchill"
@@ -661,7 +661,7 @@
return ..()
//Bluespace has an icon because it's kinda active.
-/obj/screen/alert/status_effect/bluespaceslime
+/atom/movable/screen/alert/status_effect/bluespaceslime
name = "Stabilized Bluespace Extract"
desc = "You shouldn't see this, since we set it to change automatically!"
icon_state = "slime_bluespace_on"
@@ -674,7 +674,7 @@
/datum/status_effect/stabilized/bluespace
id = "stabilizedbluespace"
colour = "bluespace"
- alert_type = /obj/screen/alert/status_effect/bluespaceslime
+ alert_type = /atom/movable/screen/alert/status_effect/bluespaceslime
var/healthcheck
/datum/status_effect/stabilized/bluespace/tick()
diff --git a/code/modules/ruins/spaceruin_code/hilbertshotel.dm b/code/modules/ruins/spaceruin_code/hilbertshotel.dm
index 66872ae818..7109c87999 100644
--- a/code/modules/ruins/spaceruin_code/hilbertshotel.dm
+++ b/code/modules/ruins/spaceruin_code/hilbertshotel.dm
@@ -302,7 +302,7 @@ GLOBAL_VAR_INIT(hhmysteryRoomNumber, 1337)
user.reset_perspective(parentSphere)
user.set_machine(src)
var/datum/action/peepholeCancel/PHC = new
- user.overlay_fullscreen("remote_view", /obj/screen/fullscreen/impaired, 1)
+ user.overlay_fullscreen("remote_view", /atom/movable/screen/fullscreen/impaired, 1)
PHC.Grant(user)
return TRUE
diff --git a/code/modules/shuttle/navigation_computer.dm b/code/modules/shuttle/navigation_computer.dm
index 36abcb41dc..a215b58b55 100644
--- a/code/modules/shuttle/navigation_computer.dm
+++ b/code/modules/shuttle/navigation_computer.dm
@@ -356,7 +356,7 @@
playsound(console, 'sound/machines/terminal_prompt_confirm.ogg', 25, 0)
remote_eye.setLoc(T)
to_chat(target, "Jumped to [selected]")
- C.overlay_fullscreen("flash", /obj/screen/fullscreen/flash/static)
+ C.overlay_fullscreen("flash", /atom/movable/screen/fullscreen/flash/static)
C.clear_fullscreen("flash", 3)
else
playsound(console, 'sound/machines/terminal_prompt_deny.ogg', 25, 0)
diff --git a/code/modules/spells/spell_types/aimed.dm b/code/modules/spells/spell_types/aimed.dm
index 8fab4a221d..aa2a2e4083 100644
--- a/code/modules/spells/spell_types/aimed.dm
+++ b/code/modules/spells/spell_types/aimed.dm
@@ -4,7 +4,7 @@
var/projectile_type = /obj/item/projectile/magic/teleport
var/deactive_msg = "You discharge your projectile..."
var/active_msg = "You charge your projectile!"
- var/base_icon_state = "projectile"
+ base_icon_state = "projectile"
var/active_icon_state = "projectile"
var/list/projectile_var_overrides = list()
var/projectile_amount = 1 //Projectiles per cast.
diff --git a/code/modules/surgery/bodyparts/dismemberment.dm b/code/modules/surgery/bodyparts/dismemberment.dm
index 88b6f0f662..6b5b4a14aa 100644
--- a/code/modules/surgery/bodyparts/dismemberment.dm
+++ b/code/modules/surgery/bodyparts/dismemberment.dm
@@ -237,7 +237,7 @@
C.handcuffed = null
C.update_handcuffed()
if(C.hud_used)
- var/obj/screen/inventory/hand/R = C.hud_used.hand_slots["[held_index]"]
+ var/atom/movable/screen/inventory/hand/R = C.hud_used.hand_slots["[held_index]"]
if(R)
R.update_icon()
if(C.gloves)
@@ -255,7 +255,7 @@
C.handcuffed = null
C.update_handcuffed()
if(C.hud_used)
- var/obj/screen/inventory/hand/L = C.hud_used.hand_slots["[held_index]"]
+ var/atom/movable/screen/inventory/hand/L = C.hud_used.hand_slots["[held_index]"]
if(L)
L.update_icon()
if(C.gloves)
@@ -340,7 +340,7 @@
if(C.dna.species.mutanthands && !is_pseudopart)
C.put_in_hand(new C.dna.species.mutanthands(), held_index)
if(C.hud_used)
- var/obj/screen/inventory/hand/hand = C.hud_used.hand_slots["[held_index]"]
+ var/atom/movable/screen/inventory/hand/hand = C.hud_used.hand_slots["[held_index]"]
if(hand)
hand.update_icon()
C.update_inv_gloves()
diff --git a/code/modules/surgery/bodyparts/parts.dm b/code/modules/surgery/bodyparts/parts.dm
index 8c7553d8e3..3a08a764d3 100644
--- a/code/modules/surgery/bodyparts/parts.dm
+++ b/code/modules/surgery/bodyparts/parts.dm
@@ -90,7 +90,7 @@
if(held_index)
owner.dropItemToGround(owner.get_item_for_held_index(held_index))
if(owner.hud_used)
- var/obj/screen/inventory/hand/L = owner.hud_used.hand_slots["[held_index]"]
+ var/atom/movable/screen/inventory/hand/L = owner.hud_used.hand_slots["[held_index]"]
if(L)
L.update_icon()
@@ -152,7 +152,7 @@
if(held_index)
owner.dropItemToGround(owner.get_item_for_held_index(held_index))
if(owner.hud_used)
- var/obj/screen/inventory/hand/R = owner.hud_used.hand_slots["[held_index]"]
+ var/atom/movable/screen/inventory/hand/R = owner.hud_used.hand_slots["[held_index]"]
if(R)
R.update_icon()
diff --git a/code/modules/surgery/organs/eyes.dm b/code/modules/surgery/organs/eyes.dm
index 09f0a901a3..9861a1b639 100644
--- a/code/modules/surgery/organs/eyes.dm
+++ b/code/modules/surgery/organs/eyes.dm
@@ -41,7 +41,7 @@
return
switch(eye_damaged)
if(BLURRY_VISION_ONE, BLURRY_VISION_TWO)
- owner.overlay_fullscreen("eye_damage", /obj/screen/fullscreen/impaired, eye_damaged)
+ owner.overlay_fullscreen("eye_damage", /atom/movable/screen/fullscreen/impaired, eye_damaged)
if(BLIND_VISION_THREE)
owner.become_blind(EYE_DAMAGE)
if(ishuman(owner))
@@ -106,7 +106,7 @@
else if(eye_damaged == BLIND_VISION_THREE)
owner.become_blind(EYE_DAMAGE)
if(eye_damaged && eye_damaged != BLIND_VISION_THREE)
- owner.overlay_fullscreen("eye_damage", /obj/screen/fullscreen/impaired, eye_damaged)
+ owner.overlay_fullscreen("eye_damage", /atom/movable/screen/fullscreen/impaired, eye_damaged)
else
owner.clear_fullscreen("eye_damage")
diff --git a/code/modules/surgery/organs/stomach.dm b/code/modules/surgery/organs/stomach.dm
index defb062f1a..f436b31513 100644
--- a/code/modules/surgery/organs/stomach.dm
+++ b/code/modules/surgery/organs/stomach.dm
@@ -62,13 +62,13 @@
H.clear_alert("disgust")
SEND_SIGNAL(H, COMSIG_CLEAR_MOOD_EVENT, "disgust")
if(DISGUST_LEVEL_GROSS to DISGUST_LEVEL_VERYGROSS)
- H.throw_alert("disgust", /obj/screen/alert/gross)
+ H.throw_alert("disgust", /atom/movable/screen/alert/gross)
SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "disgust", /datum/mood_event/gross)
if(DISGUST_LEVEL_VERYGROSS to DISGUST_LEVEL_DISGUSTED)
- H.throw_alert("disgust", /obj/screen/alert/verygross)
+ H.throw_alert("disgust", /atom/movable/screen/alert/verygross)
SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "disgust", /datum/mood_event/verygross)
if(DISGUST_LEVEL_DISGUSTED to INFINITY)
- H.throw_alert("disgust", /obj/screen/alert/disgusted)
+ H.throw_alert("disgust", /atom/movable/screen/alert/disgusted)
SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "disgust", /datum/mood_event/disgusted)
/obj/item/organ/stomach/Remove(special = FALSE)
diff --git a/code/modules/tooltip/tooltip.dm b/code/modules/tooltip/tooltip.dm
index f9efd7d9c1..ca1b163968 100644
--- a/code/modules/tooltip/tooltip.dm
+++ b/code/modules/tooltip/tooltip.dm
@@ -13,7 +13,7 @@ Configuration:
Usage:
- Define mouse event procs on your (probably HUD) object and simply call the show and hide procs respectively:
- /obj/screen/hud
+ /atom/movable/screen/hud
MouseEntered(location, control, params)
usr.client.tooltip.show(params, title = src.name, content = src.desc)
diff --git a/code/modules/vending/_vending.dm b/code/modules/vending/_vending.dm
index b86ab6023a..eab1c55ca9 100644
--- a/code/modules/vending/_vending.dm
+++ b/code/modules/vending/_vending.dm
@@ -243,10 +243,8 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
. = ..()
if(!light_mask)
return
-
- SSvis_overlays.remove_vis_overlay(src, managed_vis_overlays)
if(!(stat & BROKEN) && powered())
- SSvis_overlays.add_vis_overlay(src, icon, light_mask, EMISSIVE_LAYER, EMISSIVE_PLANE)
+ . += emissive_appearance(icon, light_mask)
/obj/machinery/vending/obj_break(damage_flag)
. = ..()
diff --git a/modular_citadel/code/modules/mob/living/carbon/carbon.dm b/modular_citadel/code/modules/mob/living/carbon/carbon.dm
index 3a683ca2ff..bea34c27a2 100644
--- a/modular_citadel/code/modules/mob/living/carbon/carbon.dm
+++ b/modular_citadel/code/modules/mob/living/carbon/carbon.dm
@@ -6,11 +6,11 @@
if(SEND_SIGNAL(src, COMSIG_COMBAT_MODE_CHECK, COMBAT_MODE_TOGGLED))
return FALSE //let's not override the main draw of the game these days
voremode = !voremode
- var/obj/screen/voretoggle/T = locate() in hud_used?.static_inventory
+ var/atom/movable/screen/voretoggle/T = locate() in hud_used?.static_inventory
T?.update_icon_state()
return TRUE
/mob/living/carbon/proc/disable_vore_mode()
voremode = FALSE
- var/obj/screen/voretoggle/T = locate() in hud_used?.static_inventory
+ var/atom/movable/screen/voretoggle/T = locate() in hud_used?.static_inventory
T?.update_icon_state()
diff --git a/tgstation.dme b/tgstation.dme
index 3a0b6b6250..65c5b7acab 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -178,6 +178,7 @@
#include "code\__HELPERS\icon_smoothing.dm"
#include "code\__HELPERS\icons.dm"
#include "code\__HELPERS\level_traits.dm"
+#include "code\__HELPERS\lighting.dm"
#include "code\__HELPERS\matrices.dm"
#include "code\__HELPERS\mobs.dm"
#include "code\__HELPERS\mouse_control.dm"