This commit is contained in:
SandPoot
2025-01-26 18:06:36 -03:00
parent 44e507dfef
commit cae94afdb7
37 changed files with 152 additions and 126 deletions

View File

@@ -30,6 +30,7 @@
#define COLOR_YELLOW "#FFFF00"
#define COLOR_VIVID_YELLOW "#FBFF23"
#define COLOR_VERY_SOFT_YELLOW "#FAE48E"
#define COLOR_GOLD "#FFD700"
#define COLOR_OLIVE "#808000"
#define COLOR_VIBRANT_LIME "#00FF00"

View File

@@ -94,11 +94,12 @@
#define ui_palette_scroll_offset(north_offset) ("WEST+1:8,NORTH-[6+north_offset]:28")
//Middle right (status indicators)
#define ui_healthdoll "EAST-1:28,CENTER-2:13"
#define ui_health "EAST-1:28,CENTER-1:15"
#define ui_internal "EAST-1:28,CENTER+1:19"//CIT CHANGE - moves internal icon up a little bit to accommodate for the stamina meter
#define ui_mood "EAST-1:28,CENTER-3:10"
// #define ui_spacesuit "EAST-1:28,CENTER-4:10"
#define ui_healthdoll "EAST-1:28,CENTER-2:17"
#define ui_health "EAST-1:28,CENTER-1:19"
#define ui_internal "EAST-1:28,CENTER+1:21" // RIP, although nobody will remember this, unsmart coders have used this for other stuff. DO NOT REMOVE UNLESS RENAMING OR REPLACING.
#define ui_mood "EAST-1:28,CENTER:21"
#define ui_stamina "EAST-1:28,CENTER-3:14"
// #define ui_spacesuit "EAST-1:28,CENTER-4:14"
//Pop-up inventory
#define ui_shoes "WEST+1:8,SOUTH:5"
@@ -208,7 +209,6 @@
#define ui_ghost_spawners "SOUTH: 6, CENTER+1:24" // LEGACY. SAME LOC AS PAI
//UI position overrides for 1:1 screen layout. (default is 7:5)
#define ui_stamina "EAST-1:28,CENTER:17" // replacing internals button
#define ui_overridden_resist "EAST-3:24,SOUTH+1:7"
#define ui_clickdelay "CENTER,SOUTH+1:-31"
#define ui_resistdelay "EAST-3:24,SOUTH+1:4"
@@ -231,6 +231,8 @@
#define SCRN_OBJ_IN_LIST "list"
/// In the collapseable palette
#define SCRN_OBJ_IN_PALETTE "palette"
///Inserted first in the list
#define SCRN_OBJ_INSERT_FIRST "first"
/// The filter name for the hover outline
#define HOVER_OUTLINE_FILTER "hover_outline"

View File

@@ -5,10 +5,11 @@
var/datum/hud/our_hud
var/actiontooltipstyle = ""
screen_loc = null
mouse_over_pointer = MOUSE_HAND_POINTER
var/button_icon_state
var/appearance_cache
var/mutable_appearance/button_overlay
/// Where we are currently placed on the hud. SCRN_OBJ_DEFAULT asks the linked action what it thinks
var/location = SCRN_OBJ_DEFAULT
/// A unique bitflag, combined with the name of our linked action this lets us persistently remember any user changes to our position
@@ -199,6 +200,7 @@
icon = 'icons/hud/64x16_actions.dmi'
icon_state = "screen_gen_palette"
screen_loc = ui_action_palette
mouse_over_pointer = MOUSE_HAND_POINTER
var/datum/hud/our_hud
var/expanded = FALSE
/// Id of any currently running timers that set our color matrix
@@ -324,6 +326,7 @@ GLOBAL_LIST_INIT(palette_removed_matrix, list(1.4,0,0,0, 0.7,0.4,0,0, 0.4,0,0.6,
/atom/movable/screen/palette_scroll
icon = 'icons/mob/screen_gen.dmi'
screen_loc = ui_palette_scroll
mouse_over_pointer = MOUSE_HAND_POINTER
/// How should we move the palette's actions?
/// Positive scrolls down the list, negative scrolls back
var/scroll_direction = 0

View File

@@ -1,5 +1,6 @@
/atom/movable/screen/ai
icon = 'icons/mob/screen_ai.dmi'
mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/ai/Click()
if(isobserver(usr) || usr.incapacitated())

View File

@@ -91,6 +91,8 @@
name = "Alert"
desc = "Something seems to have gone wrong with this alert, so report this bug please"
mouse_opacity = MOUSE_OPACITY_ICON
/// do we glow to represent we do stuff when clicked
var/clickable_glow = FALSE
var/timeout = 0 //If set to a number, this alert will clear itself after that many deciseconds
var/severity = 0
var/alerttooltipstyle = ""
@@ -100,6 +102,12 @@
/// Boolean. If TRUE, the Click() proc will attempt to Click() on the master first if there is a master.
var/click_master = TRUE
/atom/movable/screen/alert/Initialize(mapload, datum/hud/hud_owner)
. = ..()
if(clickable_glow)
add_filter("clickglow", 2, outline_filter(color = COLOR_GOLD, size = 1))
mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/alert/MouseEntered(location,control,params)
if(!QDELETED(src))
openToolTip(usr,src,params,title = name,content = desc,theme = alerttooltipstyle)
@@ -247,6 +255,7 @@ or something covering your eyes."
name = "Mind Control"
desc = "Your mind has been hijacked! Click to view the mind control command."
icon_state = "mind_control"
clickable_glow = TRUE
var/command
/atom/movable/screen/alert/mind_control/Click()
@@ -271,6 +280,7 @@ or something covering your eyes."
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"
clickable_glow = TRUE
/atom/movable/screen/alert/embeddedobject/Click()
if(isliving(usr) && usr == owner)
@@ -299,6 +309,7 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
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"
clickable_glow = TRUE
/atom/movable/screen/alert/fire/Click()
var/mob/living/L = usr
@@ -310,8 +321,29 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
/atom/movable/screen/alert/give // information set when the give alert is made
icon_state = "default"
clickable_glow = TRUE
var/mob/living/carbon/offerer
var/obj/item/receiving
/// Additional text displayed in the description of the alert.
var/additional_desc_text = "Click this alert to take it, or shift click it to examine it."
/// Text to override what appears in screentips for the alert
var/screentip_override_text
/// Whether the offered item can be examined by shift-clicking the alert
var/examinable = TRUE
/atom/movable/screen/alert/give/Initialize(mapload, datum/hud/hud_owner)
. = ..()
register_context()
/atom/movable/screen/alert/give/Destroy()
offerer = null
receiving = null
return ..()
/atom/movable/screen/alert/give/add_context(atom/source, list/context, obj/item/held_item, mob/user)
LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_ANY, screentip_override_text || "Take [receiving.name]")
LAZYSET(context[SCREENTIP_CONTEXT_SHIFT_LMB], INTENT_ANY, "Examine")
return CONTEXTUAL_SCREENTIP_SET
/**
* Handles assigning most of the variables for the alert that pops up when an item is offered
@@ -341,6 +373,16 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
CRASH("User for [src] is of type \[[usr.type]\]. This should never happen.")
handle_transfer()
/atom/movable/screen/alert/give/examine(mob/user)
if(!examinable)
return ..()
return list(
span_boldnotice(name),
span_info("[offerer] is offering you the following item (click the alert to take it!):"),
"<hr>[jointext(receiving.examine(user), "\n")]",
)
/// An overrideable proc used simply to hand over the item when claimed, this is a proc so that high-fives can override them since nothing is actually transferred
/atom/movable/screen/alert/give/proc/handle_transfer()
var/mob/living/carbon/taker = owner
@@ -354,6 +396,11 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
to_chat(owner, span_warning("You moved out of range of [offerer]!"))
owner.clear_alert("[offerer]")
/atom/movable/screen/alert/give/highfive
additional_desc_text = "Click this alert to slap it."
screentip_override_text = "High Five"
examinable = FALSE
/atom/movable/screen/alert/give/highfive/setup(mob/living/carbon/taker, mob/living/carbon/offerer, obj/item/receiving)
. = ..()
name = "[offerer] is offering a high-five!"
@@ -404,6 +451,9 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
/// Families handshakes
/atom/movable/screen/alert/give/secret_handshake
icon_state = "default"
additional_desc_text = "Click this alert to accept."
screentip_override_text = "Handshake"
examinable = FALSE
/atom/movable/screen/alert/give/secret_handshake/setup(mob/living/carbon/taker, mob/living/carbon/offerer, obj/item/receiving)
name = "[offerer] is offering a Handshake"
@@ -666,7 +716,8 @@ so as to remain in compliance with the most up-to-date laws."
complete, you will have exclusive control of it, and you will gain \
additional processing time to unlock more malfunction abilities."
icon_state = "hackingapc"
timeout = 600
timeout = 60 SECONDS
clickable_glow = TRUE
var/atom/target = null
/atom/movable/screen/alert/hackingapc/Click()
@@ -693,7 +744,8 @@ so as to remain in compliance with the most up-to-date laws."
name = "Revival"
desc = "Someone is trying to revive you. Re-enter your corpse if you want to be revived!"
icon_state = "template"
timeout = 300
timeout = 30 SECONDS
clickable_glow = TRUE
/atom/movable/screen/alert/notify_cloning/Click()
if(!usr || !usr.client || usr != owner)
@@ -705,7 +757,8 @@ so as to remain in compliance with the most up-to-date laws."
name = "Body created"
desc = "A body was created. You can enter it."
icon_state = "template"
timeout = 300
timeout = 30 SECONDS
clickable_glow = TRUE
var/atom/target = null
var/action = NOTIFY_JUMP
@@ -729,6 +782,9 @@ so as to remain in compliance with the most up-to-date laws."
//OBJECT-BASED
/atom/movable/screen/alert/restrained
clickable_glow = TRUE
/atom/movable/screen/alert/restrained/buckled
name = "Buckled"
desc = "You've been buckled to something. Click the alert to unbuckle unless you're handcuffed."
@@ -765,6 +821,7 @@ so as to remain in compliance with the most up-to-date laws."
name = "Knotted Shoes"
desc = "Someone tied your shoelaces together! Click the alert or your shoes to undo the knot."
icon_state = "shoealert"
clickable_glow = TRUE
/atom/movable/screen/alert/shoes/Click()
var/mob/living/carbon/C = usr
@@ -814,9 +871,9 @@ so as to remain in compliance with the most up-to-date laws."
return FALSE
if(usr != owner)
return FALSE
var/paramslist = params2list(params)
if(paramslist["shift"]) // screen objects don't do the normal Click() stuff so we'll cheat
to_chat(usr, "<span class='boldnotice'>[name]</span> - <span class='info'>[desc]</span>")
var/modifiers = params2list(params)
if(LAZYACCESS(modifiers, SHIFT_CLICK)) // screen objects don't do the normal Click() stuff so we'll cheat
to_chat(usr, "<blockquote class='info'>[jointext(examine(usr), "\n")]</blockquote>")
return FALSE
if(master && click_master)
return usr.client.Click(master, location, control, params)
@@ -829,3 +886,9 @@ so as to remain in compliance with the most up-to-date laws."
master = null
owner = null
screen_loc = ""
/atom/movable/screen/alert/examine(mob/user)
return list(
span_boldnotice(name),
span_info(desc),
)

View File

@@ -1,6 +1,7 @@
/atom/movable/screen/blob
icon = 'icons/mob/blob.dmi'
mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/blob/MouseEntered(location,control,params)
openToolTip(usr,src,params,title = name,content = desc, theme = "blob")

View File

@@ -1,5 +1,6 @@
/atom/movable/screen/ghost
icon = 'icons/mob/screen_ghost.dmi'
mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/ghost/MouseEntered()
flick(icon_state + "_anim", src)

View File

@@ -93,6 +93,7 @@
/atom/movable/screen/guardian
icon = 'icons/mob/guardian.dmi'
mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/guardian/Manifest
icon_state = "manifest"

View File

@@ -87,7 +87,6 @@ GLOBAL_LIST_INIT(available_ui_styles, list(
var/atom/movable/screen/healths
var/atom/movable/screen/healthdoll
var/atom/movable/screen/internals
var/atom/movable/screen/wanted/wanted_lvl
// subtypes can override this to force a specific UI style
@@ -148,7 +147,6 @@ GLOBAL_LIST_INIT(available_ui_styles, list(
healths = null
healthdoll = null
wanted_lvl = null
internals = null
lingchemdisplay = null
devilsouldisplay = null
lingstingdisplay = null
@@ -365,6 +363,9 @@ GLOBAL_LIST_INIT(available_ui_styles, list(
listed_actions.insert_action(button)
if(SCRN_OBJ_IN_PALETTE)
palette_actions.insert_action(button)
if(SCRN_OBJ_INSERT_FIRST)
listed_actions.insert_action(button, index = 1)
position = SCRN_OBJ_IN_LIST
else // If we don't have it as a define, this is a screen_loc, and we should be floating
floating_actions += button
button.screen_loc = position

View File

@@ -4,6 +4,7 @@
/atom/movable/screen/human/toggle
name = "toggle"
icon_state = "toggle"
mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/human/toggle/Click()
@@ -26,6 +27,7 @@
/atom/movable/screen/human/equip
name = "equip"
icon_state = "act_equip"
mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/human/equip/Click()
if(ismecha(usr.loc)) // stops inventory actions in a mech
@@ -68,6 +70,7 @@
/atom/movable/screen/ling/sting
name = "current sting"
screen_loc = ui_lingstingdisplay
mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/ling/sting/Click()
if(isobserver(usr))
@@ -412,10 +415,6 @@
throw_icon.hud = src
hotkeybuttons += throw_icon
internals = new /atom/movable/screen/internals()
internals.hud = src
infodisplay += internals
healths = new /atom/movable/screen/healths()
healths.hud = src
infodisplay += healths

View File

@@ -85,10 +85,6 @@
throw_icon.hud = src
hotkeybuttons += throw_icon
internals = new /atom/movable/screen/internals()
internals.hud = src
infodisplay += internals
healths = new /atom/movable/screen/healths()
healths.hud = src
infodisplay += healths

View File

@@ -62,8 +62,9 @@
screen_loc = "TOP,CENTER:-61"
/atom/movable/screen/lobby/button
mouse_over_pointer = MOUSE_HAND_POINTER
///Is the button currently enabled?
var/enabled = TRUE
VAR_PROTECTED/enabled = TRUE
///Is the button currently being hovered over with the mouse?
var/highlighted = FALSE
/// The ref of the mob that owns this button. Only the owner can click on it.
@@ -113,6 +114,7 @@
return FALSE
enabled = status
update_appearance(UPDATE_ICON)
mouse_over_pointer = enabled ? MOUSE_HAND_POINTER : MOUSE_INACTIVE_POINTER
return TRUE
///Prefs menu
@@ -184,10 +186,10 @@
icon = 'icons/hud/lobby/join.dmi'
icon_state = "" //Default to not visible
base_icon_state = "join_game"
enabled = FALSE
/atom/movable/screen/lobby/button/join/Initialize(mapload)
. = ..()
set_button_status(FALSE)
switch(SSticker.current_state)
if(GAME_STATE_PREGAME, GAME_STATE_STARTUP)
RegisterSignal(SSticker, COMSIG_TICKER_ENTER_SETTING_UP, PROC_REF(show_join_button))
@@ -248,13 +250,13 @@
icon = 'icons/hud/lobby/observe.dmi'
icon_state = "observe_disabled"
base_icon_state = "observe"
enabled = FALSE
/atom/movable/screen/lobby/button/observe/Initialize(mapload)
. = ..()
if(SSticker.current_state > GAME_STATE_STARTUP)
set_button_status(TRUE)
else
set_button_status(FALSE)
RegisterSignal(SSticker, COMSIG_TICKER_ENTER_PREGAME, PROC_REF(enable_observing))
/atom/movable/screen/lobby/button/observe/Click(location, control, params)

View File

@@ -1,5 +1,6 @@
/atom/movable/screen/robot
icon = 'icons/mob/screen_cyborg.dmi'
mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/robot/module
name = "cyborg module"

View File

@@ -57,6 +57,7 @@
/atom/movable/screen/swap_hand
plane = HUD_PLANE
name = "swap hand"
mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/swap_hand/Click()
// At this point in client Click() code we have passed the 1/10 sec check and little else
@@ -85,12 +86,14 @@
icon = 'icons/mob/screen_midnight.dmi'
icon_state = "craft"
screen_loc = ui_crafting
mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/area_creator
name = "create new area"
icon = 'icons/mob/screen_midnight.dmi'
icon_state = "area_edit"
screen_loc = ui_building
mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/area_creator/Click()
if(usr.incapacitated() || (isobserver(usr) && !IsAdminGhost(usr)))
@@ -106,11 +109,11 @@
icon = 'icons/mob/screen_midnight.dmi'
icon_state = "talk_wheel"
screen_loc = ui_language_menu
mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/language_menu/Click()
var/mob/M = usr
var/datum/language_holder/H = M.get_language_holder()
H.open_language_menu(usr)
usr.get_language_holder().open_language_menu(usr)
/atom/movable/screen/inventory
/// The identifier for the slot. It has nothing to do with ID cards.
@@ -172,7 +175,7 @@
var/image/item_overlay = image(holding)
item_overlay.alpha = 92
if(!user.can_equip(holding, slot_id, disable_warning = TRUE, bypass_equip_delay_self = TRUE))
if(!holding.mob_can_equip(user, slot_id, disable_warning = TRUE, bypass_equip_delay_self = TRUE))
item_overlay.color = "#FF0000"
else
item_overlay.color = "#00ff00"
@@ -247,6 +250,7 @@
icon = 'icons/mob/screen_midnight.dmi'
icon_state = "act_drop"
plane = HUD_PLANE
mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/drop/Click()
if(usr.stat == CONSCIOUS)
@@ -256,6 +260,7 @@
name = "intent"
icon_state = "help"
screen_loc = ui_acti
mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/act_intent/Click(location, control, params)
usr.a_intent_change(INTENT_HOTKEY_RIGHT)
@@ -287,76 +292,11 @@
icon = 'icons/mob/screen_cyborg.dmi'
screen_loc = ui_borg_intents
/atom/movable/screen/internals
name = "toggle internals"
icon_state = "internal0"
screen_loc = ui_internal
/atom/movable/screen/internals/Click()
if(!iscarbon(usr))
return
var/mob/living/carbon/C = usr
if(C.incapacitated())
return
if(C.internal)
C.internal = null
to_chat(C, span_notice("You are no longer running on internals."))
icon_state = "internal0"
else
if(!C.getorganslot(ORGAN_SLOT_BREATHING_TUBE))
if(HAS_TRAIT(C, TRAIT_NO_INTERNALS))
to_chat(C, span_warning("Due to cumbersome equipment or anatomy, you are currently unable to use internals!"))
return
var/obj/item/clothing/check
var/internals = FALSE
for(check in GET_INTERNAL_SLOTS(C))
if(istype(check, /obj/item/clothing/mask))
var/obj/item/clothing/mask/M = check
if(M.mask_adjusted)
M.adjustmask(C)
if((check.clothing_flags & ALLOWINTERNALS))
internals = TRUE
if(!internals)
to_chat(C, span_warning("You are not wearing an internals mask!"))
return
var/obj/item/I = C.is_holding_item_of_type(/obj/item/tank)
if(I)
to_chat(C, span_notice("You are now running on internals from [I] in your [C.get_held_index_name(C.get_held_index_of_item(I))]."))
C.internal = I
else if(ishuman(C))
var/mob/living/carbon/human/H = C
if(istype(H.s_store, /obj/item/tank))
to_chat(H, span_notice("You are now running on internals from [H.s_store] on your [H.wear_suit.name]."))
H.internal = H.s_store
else if(istype(H.belt, /obj/item/tank))
to_chat(H, span_notice("You are now running on internals from [H.belt] on your belt."))
H.internal = H.belt
else if(istype(H.l_store, /obj/item/tank))
to_chat(H, span_notice("You are now running on internals from [H.l_store] in your left pocket."))
H.internal = H.l_store
else if(istype(H.r_store, /obj/item/tank))
to_chat(H, span_notice("You are now running on internals from [H.r_store] in your right pocket."))
H.internal = H.r_store
//Separate so CO2 jetpacks are a little less cumbersome.
if(!C.internal && istype(C.back, /obj/item/tank))
to_chat(C, span_notice("You are now running on internals from [C.back] on your back."))
C.internal = C.back
if(C.internal)
icon_state = "internal1"
else
to_chat(C, span_warning("You don't have an oxygen tank!"))
return
C.update_action_buttons_icon()
/atom/movable/screen/mov_intent
name = "run/walk toggle"
icon = 'icons/mob/screen_midnight.dmi'
icon_state = "running"
mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/mov_intent/Initialize(mapload)
. = ..()
@@ -366,7 +306,10 @@
toggle(usr)
/atom/movable/screen/mov_intent/update_icon_state()
switch(hud?.mymob?.m_intent)
if(!hud || !hud.mymob || !isliving(hud.mymob))
return
var/mob/living/living_hud_owner = hud.mymob
switch(living_hud_owner.m_intent)
if(MOVE_INTENT_WALK)
icon_state = CONFIG_GET(flag/sprint_enabled)? "walking" : "walking_nosprint"
if(MOVE_INTENT_RUN)
@@ -382,6 +325,8 @@
name = "stop pulling"
icon = 'icons/mob/screen_midnight.dmi'
icon_state = "pull"
base_icon_state = "pull"
mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/pull/Click()
if(isobserver(usr))
@@ -389,17 +334,14 @@
usr.stop_pulling()
/atom/movable/screen/pull/update_icon_state()
if(hud?.mymob?.pulling)
icon_state = "pull"
else
icon_state = "pull0"
icon_state = "[base_icon_state][hud?.mymob?.pulling ? null : 0]"
return ..()
/atom/movable/screen/resist
name = "resist"
icon = 'icons/mob/screen_midnight.dmi'
icon_state = "act_resist"
plane = HUD_PLANE
mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/resist/Click()
if(isliving(usr))
@@ -411,7 +353,7 @@
icon = 'icons/mob/screen_midnight.dmi'
icon_state = "act_rest"
base_icon_state = "act_rest"
plane = HUD_PLANE
mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/rest/Click()
if(isliving(usr))
@@ -429,6 +371,7 @@
name = "throw/catch"
icon = 'icons/mob/screen_midnight.dmi'
icon_state = "act_throw_off"
mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/throw_catch/Click()
if(iscarbon(usr))
@@ -439,6 +382,7 @@
name = "damage zone"
icon_state = "zone_sel"
screen_loc = ui_zonesel
mouse_over_pointer = MOUSE_HAND_POINTER
var/overlay_icon = 'icons/mob/screen_gen.dmi'
var/static/list/hover_overlays_cache = list()
var/hovering
@@ -641,6 +585,7 @@
/atom/movable/screen/healthdoll
name = "health doll"
screen_loc = ui_healthdoll
mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/healthdoll/Click()
if (iscarbon(usr))
@@ -656,6 +601,7 @@
name = "mood"
icon_state = "mood5"
screen_loc = ui_mood
mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/mood/attack_tk()
return
@@ -708,6 +654,7 @@
/atom/movable/screen/component_button
mouse_over_pointer = MOUSE_HAND_POINTER
var/atom/movable/screen/parent
/atom/movable/screen/component_button/Initialize(mapload, atom/movable/screen/parent)

View File

@@ -5,7 +5,7 @@
name = "toggle sprint"
icon = 'modular_citadel/icons/ui/screen_midnight.dmi'
icon_state = "act_sprint"
layer = ABOVE_HUD_LAYER - 0.1
mouse_over_pointer = MOUSE_HAND_POINTER
var/mutable_appearance/flashy
/atom/movable/screen/sprintbutton/Click()
@@ -44,6 +44,7 @@
name = "sprint buffer"
icon = 'icons/effects/progessbar.dmi'
icon_state = "prog_bar_100"
mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/sprint_buffer/Click()
if(isliving(usr))

View File

@@ -1,19 +1,20 @@
/datum/hud/var/atom/movable/screen/staminas/staminas
/datum/hud/var/atom/movable/screen/staminabuffer/staminabuffer
/datum/hud
var/atom/movable/screen/staminas/staminas
var/atom/movable/screen/staminabuffer/staminabuffer
/atom/movable/screen/staminas
icon = 'modular_citadel/icons/ui/screen_gen.dmi'
name = "stamina"
icon_state = "stamina0"
screen_loc = ui_stamina
mouse_opacity = 1
mouse_over_pointer = MOUSE_HAND_POINTER
/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, "<span class='notice'>You have <b>[L.getStaminaLoss()]</b> stamina loss.<br>\
<br>Your stamina buffer is <b>[round((L.stamina_buffer / buffer_max) * 100, 0.1)]%</b> full.</span>")
to_chat(L, "<blockquote class='info'><span class='notice'>You have <b>[L.getStaminaLoss()]</b> stamina loss.<br>\
<br>Your stamina buffer is <b>[round((L.stamina_buffer / buffer_max) * 100, 0.1)]%</b> full.</span></blockquote>")
/atom/movable/screen/staminas/update_icon_state()
var/mob/living/carbon/user = hud?.mymob

View File

@@ -2,6 +2,7 @@
name = "toggle vore mode"
icon = 'modular_citadel/icons/ui/screen_midnight.dmi'
icon_state = "nom_off"
mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/voretoggle/Click()
if(usr != hud.mymob)

View File

@@ -39,6 +39,7 @@
var/icon_icon = 'icons/mob/actions.dmi'
/// This is the icon state for the icon that appears on the button
var/button_icon_state = "default"
var/button_overlay_state
/datum/action/New(Target)
link_to(Target)
@@ -177,6 +178,11 @@
ApplyIcon(button, force)
if(button_overlay_state)
button.cut_overlay(button.button_overlay)
button.button_overlay = mutable_appearance(icon = 'icons/mob/actions.dmi', icon_state = button_overlay_state)
button.add_overlay(button.button_overlay)
if(!IsAvailable(TRUE))
button.color = transparent_when_unavailable ? rgb(128,0,0,128) : rgb(128,0,0)
else
@@ -362,6 +368,8 @@
/datum/action/item_action/set_internals
name = "Set Internals"
default_button_position = SCRN_OBJ_INSERT_FIRST
button_overlay_state = "ab_goldborder"
/datum/action/item_action/set_internals/UpdateButton(atom/movable/screen/movable/action_button/button, status_only = FALSE, force)
if(!..()) // no button available

View File

@@ -182,6 +182,7 @@
name = "toggle combat mode"
icon = 'modular_citadel/icons/ui/screen_midnight.dmi'
icon_state = "combat_off"
mouse_over_pointer = MOUSE_HAND_POINTER
var/mutable_appearance/flashy
var/combat_on = FALSE ///Wheter combat mode is enabled or not, so we don't have to store a reference.

View File

@@ -971,6 +971,7 @@
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"
clickable_glow = TRUE
/atom/movable/screen/alert/status_effect/strandling/Click(location, control, params)
. = ..()

View File

@@ -102,6 +102,7 @@
/atom/movable/screen/alert/status_effect/wound
name = "Wounded"
desc = "Your body has sustained serious damage, click here to inspect yourself."
clickable_glow = TRUE
/atom/movable/screen/alert/status_effect/wound/Click()
var/mob/living/carbon/C = usr

View File

@@ -647,6 +647,11 @@
/// Gets or creates the relevant language holder. For mindless atoms, gets the local one. For atom with mind, gets the mind one.
/atom/movable/proc/get_language_holder(get_minds = TRUE)
RETURN_TYPE(/datum/language_holder)
if(QDELING(src))
CRASH("get_language_holder() called on a QDELing atom, \
this will try to re-instantiate the language holder that's about to be deleted, which is bad.")
if(!language_holder)
language_holder = new initial_language_holder(src)
return language_holder

View File

@@ -291,7 +291,6 @@ Credit where due:
W.update_label()
if(plasmaman && !visualsOnly) //If we need to breathe from the plasma tank, we should probably start doing that
H.internal = H.get_item_for_held_index(2)
H.update_internals_hud_icon(1)
PDA.owner = H.real_name
PDA.ownjob = "Assistant"
PDA.update_label()

View File

@@ -176,7 +176,6 @@ GLOBAL_VAR_INIT(hsboxspawn, TRUE)
P.back.plane = ABOVE_HUD_PLANE
P.update_inv_back()
P.internal = P.back
P.update_internals_hud_icon(1)
if("hsbscrubber") // This is beyond its normal capability but this is sandbox and you spawned one, I assume you need it
var/obj/hsb = new/obj/machinery/portable_atmospherics/scrubber{volume_rate=50*ONE_ATMOSPHERE;on=1}(usr.loc)

View File

@@ -14,6 +14,7 @@
use_power = IDLE_POWER_USE
idle_power_usage = 2
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
mouse_over_pointer = MOUSE_HAND_POINTER
/obj/machinery/button/Initialize(mapload, ndir = 0, built = 0)
if(istext(id) && mapload && id[1] == "!")

View File

@@ -10,6 +10,7 @@
idle_power_usage = 2
active_power_usage = 4
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
mouse_over_pointer = MOUSE_HAND_POINTER
var/idSelf
/obj/machinery/doorButtons/attackby(obj/O, mob/user)

View File

@@ -21,6 +21,7 @@
max_integrity = 250
integrity_failure = 0.4
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, RAD = 100, FIRE = 90, ACID = 30)
mouse_over_pointer = MOUSE_HAND_POINTER
use_power = IDLE_POWER_USE
idle_power_usage = 2
active_power_usage = 6

View File

@@ -5,6 +5,7 @@
icon_state = "light1"
base_icon_state = "light"
desc = "Make dark."
mouse_over_pointer = MOUSE_HAND_POINTER
var/area/area = null
var/otherarea = null

View File

@@ -34,7 +34,6 @@
if(H.internal == src)
to_chat(H, "<span class='notice'>You close [src] valve.</span>")
H.internal = null
H.update_internals_hud_icon(0)
else
if(!H.getorganslot(ORGAN_SLOT_BREATHING_TUBE))
if(HAS_TRAIT(H, TRAIT_NO_INTERNALS))
@@ -60,7 +59,6 @@
else
to_chat(H, "<span class='notice'>You open [src] valve.</span>")
H.internal = src
H.update_internals_hud_icon(1)
H.update_action_buttons_icon()

View File

@@ -878,7 +878,6 @@
/datum/outfit/ghostcafe/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source)
H.internal = H.get_item_for_held_index(1)
H.update_internals_hud_icon(1)
/obj/item/storage/box/syndie_kit/chameleon/ghostcafe
name = "ghost cafe costuming kit"

View File

@@ -1,5 +1,6 @@
/atom/movable/screen/buildmode
icon = 'icons/misc/buildmode.dmi'
mouse_over_pointer = MOUSE_HAND_POINTER
var/datum/buildmode/bd
// If we don't do this, we get occluded by item action buttons
layer = ABOVE_HUD_LAYER

View File

@@ -793,10 +793,6 @@
else
hud_used.healths.icon_state = "health7"
/mob/living/carbon/proc/update_internals_hud_icon(internal_state = 0)
if(hud_used && hud_used.internals)
hud_used.internals.icon_state = "internal[internal_state]"
/mob/living/carbon/update_stat()
if(status_flags & GODMODE)
return

View File

@@ -285,12 +285,9 @@ GLOBAL_LIST_INIT(strippable_human_items, create_strippable_list(list(
if(carbon_source.internal)
carbon_source.internal = null
// This isn't meant to be FALSE, it correlates to the icon's name.
carbon_source.update_internals_hud_icon(0)
else if (!QDELETED(item))
if(internals || carbon_source.getorganslot(ORGAN_SLOT_BREATHING_TUBE))
carbon_source.internal = item
carbon_source.update_internals_hud_icon(1)
carbon_source.visible_message(
span_danger("[user] [isnull(carbon_source.internal) ? "closes": "opens"] the valve on [source]'s [item.name]."),

View File

@@ -253,7 +253,6 @@
if((C.flags_inv & (HIDEHAIR|HIDEFACIALHAIR)) || (initial(C.flags_inv) & (HIDEHAIR|HIDEFACIALHAIR)))
update_hair()
if(toggle_off && internal && !getorganslot(ORGAN_SLOT_BREATHING_TUBE))
update_internals_hud_icon(0)
internal = null
if(C.flags_inv & HIDEEYES)
update_inv_glasses()

View File

@@ -69,7 +69,6 @@
H.equipOutfit(O, visualsOnly)
H.internal = H.get_item_for_held_index(2)
H.update_internals_hud_icon(1)
return FALSE
/datum/species/plasmaman/random_name(gender,unique,lastname)

View File

@@ -329,12 +329,9 @@
if(internal)
if(internal.loc != src)
internal = null
update_internals_hud_icon(0)
else if (!internals && !getorganslot(ORGAN_SLOT_BREATHING_TUBE))
internal = null
update_internals_hud_icon(0)
else
update_internals_hud_icon(1)
. = internal.remove_air_volume(volume_needed)
if(!.)
return FALSE //to differentiate between no internals and active, but empty internals

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.8 KiB

After

Width:  |  Height:  |  Size: 9.2 KiB