mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-21 22:47:19 +00:00
Replaces some of the hardcoded HUD icons defined at mob level with a pair of mob procs throw_alert() and clear_alert(). Alerts will appear on the top-right side of the screen.
You can shift-click alerts to get a description of what's wrong and sometimes a tip on how to solve the alert.
Alerts can be given a master, which overlays the master on top of a box and forwards clicks of the alert to that master. Getting buckled will put an alert of what you're buckled to, for example. If it's a chair, you just click the alert and you're unbuckled. The idea I'm shooting for is to replace resist entirely with this kind of stuff.
Making a new alert and using it is a little complicated. This explanation will suck, but this is simpler than I'm making it sound, I promise. Throw_alert() has 4 args, category, id, severity, and obj/new_master. If you don't supply an id, category will be used as id. Only 1 alert per category is allowed; any duplicate will be replaced. Additionally clear_alert() clears alerts by category. Id MUST match a type path of /obj/screen/alert/[id]. That type path is where the alert's name and desc come from. The icon_state of the alert will either be "template" if new_master is set or [id][severity] otherwise. new_master is totally optional.
Examples:
throw_alert("oxy") -- takes name/desc of obj/screen/alert/oxy, icon_state = "oxy" -- clear_alert("oxy")
throw_alert("nutrition","fat") -- takes name/desc of obj/screen/alert/fat, icon_state = "fat" -- clear_alert("nutrition")
throw_alert("nutrition","starving") -- takes name/desc of obj/screen/alert/starving, icon_state = "starving" -- clear_alert("nutrition")
throw_alert("temp","cold",1) -- takes name/desc of obj/screen/alert/cold, icon_state = "cold1" -- clear_alert("temp")
throw_alert("temp","cold",3) -- takes name/desc of obj/screen/alert/cold, icon_state = "cold3" -- clear_alert("temp")
If you pass a new_master, id is only used to get name/desc and still must match a path, but the icon_state is "template" and icon is from the mob's ui preference instead of icons/mob/screen_alert.dmi.
Several unused icons removed, like borg oxygen and temperature alerts. Also some icons were used but now are not and were removed, like the nutrition icon for being well-fed and cyborg charge icon for being fully charged.
373 lines
10 KiB
Plaintext
373 lines
10 KiB
Plaintext
/obj/screen/human
|
|
icon = 'icons/mob/screen_midnight.dmi'
|
|
|
|
/obj/screen/human/toggle
|
|
name = "toggle"
|
|
icon_state = "toggle"
|
|
|
|
/obj/screen/human/toggle/Click()
|
|
if(usr.hud_used.inventory_shown)
|
|
usr.hud_used.inventory_shown = 0
|
|
usr.client.screen -= usr.hud_used.other
|
|
else
|
|
usr.hud_used.inventory_shown = 1
|
|
usr.client.screen += usr.hud_used.other
|
|
|
|
usr.hud_used.hidden_inventory_update()
|
|
|
|
/obj/screen/human/equip
|
|
name = "equip"
|
|
icon_state = "act_equip"
|
|
|
|
/obj/screen/human/equip/Click()
|
|
if(istype(usr.loc,/obj/mecha)) // stops inventory actions in a mech
|
|
return 1
|
|
var/mob/living/carbon/human/H = usr
|
|
H.quick_equip()
|
|
|
|
/obj/screen/ling
|
|
invisibility = 101
|
|
|
|
/obj/screen/ling/sting
|
|
name = "current sting"
|
|
|
|
/obj/screen/ling/sting/Click()
|
|
var/mob/living/carbon/U = usr
|
|
U.unset_sting()
|
|
|
|
/obj/screen/ling/chems
|
|
name = "chemical storage"
|
|
icon_state = "power_display"
|
|
|
|
|
|
/datum/hud/proc/human_hud(ui_style = 'icons/mob/screen_midnight.dmi')
|
|
adding = list()
|
|
other = list()
|
|
hotkeybuttons = list() //These can be disabled for hotkey users
|
|
|
|
var/obj/screen/using
|
|
var/obj/screen/inventory/inv_box
|
|
|
|
using = new /obj/screen/act_intent()
|
|
using.icon_state = mymob.a_intent
|
|
using.screen_loc = ui_acti
|
|
adding += using
|
|
action_intent = using
|
|
|
|
using = new /obj/screen/mov_intent()
|
|
using.icon = ui_style
|
|
using.icon_state = (mymob.m_intent == "run" ? "running" : "walking")
|
|
using.screen_loc = ui_movi
|
|
adding += using
|
|
move_intent = using
|
|
|
|
using = new /obj/screen/drop()
|
|
using.icon = ui_style
|
|
using.screen_loc = ui_drop_throw
|
|
hotkeybuttons += using
|
|
|
|
inv_box = new /obj/screen/inventory()
|
|
inv_box.name = "i_clothing"
|
|
inv_box.icon = ui_style
|
|
inv_box.slot_id = slot_w_uniform
|
|
inv_box.icon_state = "uniform"
|
|
inv_box.screen_loc = ui_iclothing
|
|
inv_box.layer = 19
|
|
other += inv_box
|
|
|
|
inv_box = new /obj/screen/inventory()
|
|
inv_box.name = "o_clothing"
|
|
inv_box.icon = ui_style
|
|
inv_box.slot_id = slot_wear_suit
|
|
inv_box.icon_state = "suit"
|
|
inv_box.screen_loc = ui_oclothing
|
|
inv_box.layer = 19
|
|
other += inv_box
|
|
|
|
inv_box = new /obj/screen/inventory()
|
|
inv_box.name = "r_hand"
|
|
inv_box.icon = ui_style
|
|
inv_box.icon_state = "hand_r_inactive"
|
|
if(mymob && !mymob.hand) //This being 0 or null means the right hand is in use
|
|
inv_box.icon_state = "hand_r_active"
|
|
inv_box.screen_loc = ui_rhand
|
|
inv_box.slot_id = slot_r_hand
|
|
inv_box.layer = 19
|
|
r_hand_hud_object = inv_box
|
|
adding += inv_box
|
|
|
|
inv_box = new /obj/screen/inventory()
|
|
inv_box.name = "l_hand"
|
|
inv_box.icon = ui_style
|
|
inv_box.icon_state = "hand_l_inactive"
|
|
if(mymob && mymob.hand) //This being 1 means the left hand is in use
|
|
inv_box.icon_state = "hand_l_active"
|
|
inv_box.screen_loc = ui_lhand
|
|
inv_box.slot_id = slot_l_hand
|
|
inv_box.layer = 19
|
|
l_hand_hud_object = inv_box
|
|
adding += inv_box
|
|
|
|
using = new /obj/screen/inventory()
|
|
using.name = "hand"
|
|
using.icon = ui_style
|
|
using.icon_state = "swap_1"
|
|
using.screen_loc = ui_swaphand1
|
|
using.layer = 19
|
|
adding += using
|
|
|
|
using = new /obj/screen/inventory()
|
|
using.name = "hand"
|
|
using.icon = ui_style
|
|
using.icon_state = "swap_2"
|
|
using.screen_loc = ui_swaphand2
|
|
using.layer = 19
|
|
adding += using
|
|
|
|
inv_box = new /obj/screen/inventory()
|
|
inv_box.name = "id"
|
|
inv_box.icon = ui_style
|
|
inv_box.icon_state = "id"
|
|
inv_box.screen_loc = ui_id
|
|
inv_box.slot_id = slot_wear_id
|
|
inv_box.layer = 19
|
|
adding += inv_box
|
|
|
|
inv_box = new /obj/screen/inventory()
|
|
inv_box.name = "mask"
|
|
inv_box.icon = ui_style
|
|
inv_box.icon_state = "mask"
|
|
inv_box.screen_loc = ui_mask
|
|
inv_box.slot_id = slot_wear_mask
|
|
inv_box.layer = 19
|
|
other += inv_box
|
|
|
|
inv_box = new /obj/screen/inventory()
|
|
inv_box.name = "back"
|
|
inv_box.icon = ui_style
|
|
inv_box.icon_state = "back"
|
|
inv_box.screen_loc = ui_back
|
|
inv_box.slot_id = slot_back
|
|
inv_box.layer = 19
|
|
adding += inv_box
|
|
|
|
inv_box = new /obj/screen/inventory()
|
|
inv_box.name = "storage1"
|
|
inv_box.icon = ui_style
|
|
inv_box.icon_state = "pocket"
|
|
inv_box.screen_loc = ui_storage1
|
|
inv_box.slot_id = slot_l_store
|
|
inv_box.layer = 19
|
|
adding += inv_box
|
|
|
|
inv_box = new /obj/screen/inventory()
|
|
inv_box.name = "storage2"
|
|
inv_box.icon = ui_style
|
|
inv_box.icon_state = "pocket"
|
|
inv_box.screen_loc = ui_storage2
|
|
inv_box.slot_id = slot_r_store
|
|
inv_box.layer = 19
|
|
adding += inv_box
|
|
|
|
inv_box = new /obj/screen/inventory()
|
|
inv_box.name = "suit storage"
|
|
inv_box.icon = ui_style
|
|
inv_box.icon_state = "suit_storage"
|
|
inv_box.screen_loc = ui_sstore1
|
|
inv_box.slot_id = slot_s_store
|
|
inv_box.layer = 19
|
|
adding += inv_box
|
|
|
|
using = new /obj/screen/resist()
|
|
using.icon = ui_style
|
|
using.screen_loc = ui_pull_resist
|
|
hotkeybuttons += using
|
|
|
|
using = new /obj/screen/human/toggle()
|
|
using.icon = ui_style
|
|
using.screen_loc = ui_inventory
|
|
adding += using
|
|
|
|
using = new /obj/screen/human/equip()
|
|
using.icon = ui_style
|
|
using.screen_loc = ui_equip
|
|
adding += using
|
|
|
|
inv_box = new /obj/screen/inventory()
|
|
inv_box.name = "gloves"
|
|
inv_box.icon = ui_style
|
|
inv_box.icon_state = "gloves"
|
|
inv_box.screen_loc = ui_gloves
|
|
inv_box.slot_id = slot_gloves
|
|
inv_box.layer = 19
|
|
other += inv_box
|
|
|
|
inv_box = new /obj/screen/inventory()
|
|
inv_box.name = "eyes"
|
|
inv_box.icon = ui_style
|
|
inv_box.icon_state = "glasses"
|
|
inv_box.screen_loc = ui_glasses
|
|
inv_box.slot_id = slot_glasses
|
|
inv_box.layer = 19
|
|
other += inv_box
|
|
|
|
inv_box = new /obj/screen/inventory()
|
|
inv_box.name = "ears"
|
|
inv_box.icon = ui_style
|
|
inv_box.icon_state = "ears"
|
|
inv_box.screen_loc = ui_ears
|
|
inv_box.slot_id = slot_ears
|
|
inv_box.layer = 19
|
|
other += inv_box
|
|
|
|
inv_box = new /obj/screen/inventory()
|
|
inv_box.name = "head"
|
|
inv_box.icon = ui_style
|
|
inv_box.icon_state = "head"
|
|
inv_box.screen_loc = ui_head
|
|
inv_box.slot_id = slot_head
|
|
inv_box.layer = 19
|
|
other += inv_box
|
|
|
|
inv_box = new /obj/screen/inventory()
|
|
inv_box.name = "shoes"
|
|
inv_box.icon = ui_style
|
|
inv_box.icon_state = "shoes"
|
|
inv_box.screen_loc = ui_shoes
|
|
inv_box.slot_id = slot_shoes
|
|
inv_box.layer = 19
|
|
other += inv_box
|
|
|
|
inv_box = new /obj/screen/inventory()
|
|
inv_box.name = "belt"
|
|
inv_box.icon = ui_style
|
|
inv_box.icon_state = "belt"
|
|
inv_box.screen_loc = ui_belt
|
|
inv_box.slot_id = slot_belt
|
|
inv_box.layer = 19
|
|
adding += inv_box
|
|
|
|
mymob.throw_icon = new /obj/screen/throw_catch()
|
|
mymob.throw_icon.icon = ui_style
|
|
mymob.throw_icon.screen_loc = ui_drop_throw
|
|
hotkeybuttons += mymob.throw_icon
|
|
|
|
|
|
mymob.internals = new /obj/screen/internals()
|
|
mymob.internals.screen_loc = ui_internal
|
|
|
|
mymob.healths = new /obj/screen()
|
|
mymob.healths.icon_state = "health0"
|
|
mymob.healths.name = "health"
|
|
mymob.healths.screen_loc = ui_health
|
|
|
|
mymob.healthdoll = new /obj/screen()
|
|
mymob.healthdoll.name = "health doll"
|
|
mymob.healthdoll.screen_loc = ui_healthdoll
|
|
|
|
mymob.pullin = new /obj/screen/pull()
|
|
mymob.pullin.icon = ui_style
|
|
mymob.pullin.icon_state = "pull0"
|
|
mymob.pullin.screen_loc = ui_pull_resist
|
|
hotkeybuttons += mymob.pullin
|
|
|
|
lingchemdisplay = new /obj/screen/ling/chems()
|
|
lingchemdisplay.screen_loc = ui_lingchemdisplay
|
|
|
|
lingstingdisplay = new /obj/screen/ling/sting()
|
|
lingstingdisplay.screen_loc = ui_lingstingdisplay
|
|
|
|
mymob.blind = new /obj/screen()
|
|
mymob.blind.icon = 'icons/mob/screen_full.dmi'
|
|
mymob.blind.icon_state = "blackimageoverlay"
|
|
mymob.blind.name = " "
|
|
mymob.blind.screen_loc = "CENTER-7,CENTER-7"
|
|
mymob.blind.mouse_opacity = 0
|
|
mymob.blind.layer = 0
|
|
|
|
mymob.damageoverlay = new /obj/screen()
|
|
mymob.damageoverlay.icon = 'icons/mob/screen_full.dmi'
|
|
mymob.damageoverlay.icon_state = "oxydamageoverlay0"
|
|
mymob.damageoverlay.name = "dmg"
|
|
mymob.damageoverlay.blend_mode = BLEND_MULTIPLY
|
|
mymob.damageoverlay.screen_loc = "CENTER-7,CENTER-7"
|
|
mymob.damageoverlay.mouse_opacity = 0
|
|
mymob.damageoverlay.layer = 18.1 //The black screen overlay sets layer to 18 to display it, this one has to be just on top.
|
|
|
|
mymob.flash = new /obj/screen()
|
|
mymob.flash.icon_state = "blank"
|
|
mymob.flash.name = "flash"
|
|
mymob.flash.blend_mode = BLEND_ADD
|
|
mymob.flash.screen_loc = "WEST,SOUTH to EAST,NORTH"
|
|
mymob.flash.layer = 17
|
|
|
|
mymob.zone_sel = new /obj/screen/zone_sel()
|
|
mymob.zone_sel.icon = ui_style
|
|
mymob.zone_sel.update_icon()
|
|
|
|
mymob.client.screen = null
|
|
|
|
mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.internals, mymob.healths, mymob.healthdoll, mymob.pullin, mymob.blind, mymob.flash, mymob.damageoverlay, lingchemdisplay, lingstingdisplay) //, mymob.hands, mymob.rest, mymob.sleep) //, mymob.mach )
|
|
mymob.client.screen += adding + hotkeybuttons
|
|
inventory_shown = 0;
|
|
|
|
|
|
/mob/living/carbon/human/verb/toggle_hotkey_verbs()
|
|
set category = "OOC"
|
|
set name = "Toggle hotkey buttons"
|
|
set desc = "This disables or enables the user interface buttons which can be used with hotkeys."
|
|
|
|
if(hud_used.hotkey_ui_hidden)
|
|
client.screen += hud_used.hotkeybuttons
|
|
hud_used.hotkey_ui_hidden = 0
|
|
else
|
|
client.screen -= hud_used.hotkeybuttons
|
|
hud_used.hotkey_ui_hidden = 1
|
|
|
|
|
|
/mob/living/carbon/human/update_action_buttons()
|
|
var/num = 1
|
|
if(!hud_used) return
|
|
if(!client) return
|
|
|
|
if(hud_used.hud_shown != 1) //Hud toggled to minimal
|
|
return
|
|
|
|
client.screen -= hud_used.item_action_list
|
|
|
|
for(var/obj/item/I in src)
|
|
if(I.action_button_name)
|
|
if(hud_used.item_action_list.len < num)
|
|
var/obj/screen/item_action/N = new(hud_used)
|
|
hud_used.item_action_list += N
|
|
|
|
var/obj/screen/item_action/A = hud_used.item_action_list[num]
|
|
|
|
A.icon = ui_style2icon(client.prefs.UI_style)
|
|
A.icon_state = "template"
|
|
|
|
A.overlays = list()
|
|
var/image/img = image(I.icon, A, I.icon_state)
|
|
img.pixel_x = 0
|
|
img.pixel_y = 0
|
|
A.overlays += img
|
|
|
|
A.name = I.action_button_name
|
|
A.owner = I
|
|
|
|
client.screen += hud_used.item_action_list[num]
|
|
|
|
switch(num)
|
|
if(1)
|
|
A.screen_loc = ui_action_slot1
|
|
if(2)
|
|
A.screen_loc = ui_action_slot2
|
|
if(3)
|
|
A.screen_loc = ui_action_slot3
|
|
if(4)
|
|
A.screen_loc = ui_action_slot4
|
|
if(5)
|
|
A.screen_loc = ui_action_slot5
|
|
break //5 slots available, so no more can be added.
|
|
num++
|