mirror of
https://github.com/SPLURT-Station/S.P.L.U.R.T-Station-13.git
synced 2025-12-10 09:54:52 +00:00
push
This commit is contained in:
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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())
|
||||
|
||||
@@ -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),
|
||||
)
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
@@ -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)
|
||||
. = ..()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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] == "!")
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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]."),
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 |
Reference in New Issue
Block a user