mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-30 11:01:35 +00:00
## About The Pull Request - Gloves and Shoes are now referred to in "pairs" rather than as "some". - Meaning you now see "That's a pair of gloves" rather than "That's some gloves" - Makes it a tad easier to edit portions of an atom's examine text. - Gives reinforced windows a more proper description. - (I was examining random things to test and noticed its current description was INCREDIBLY out of place) - Fixes an extra space in bloody hand examination.  ## Why It's Good For The Game It's the little things that you tend to notice. When referring to shoes, you _generally_ will say "a pair of shoes" rather than "some shoes". It's just a tad more proper. ## Changelog 🆑 Melbert spellcheck: Shoes and Gloves are now referred to as "a pair of" rather than "some". spellcheck: Reinforced Window's description is less out of place. spellcheck: Fixed an empty space in examining a human's bloody hands. code: It's a tad easier to exit an atom's examine text now. /🆑
110 lines
4.1 KiB
Plaintext
110 lines
4.1 KiB
Plaintext
/atom
|
|
///If non-null, overrides a/an/some in all cases
|
|
var/article
|
|
|
|
/**
|
|
* Called when a mob examines (shift click or verb) this atom
|
|
*
|
|
* Default behaviour is to get the name and icon of the object and it's reagents where
|
|
* the [TRANSPARENT] flag is set on the reagents holder
|
|
*
|
|
* Produces a signal [COMSIG_ATOM_EXAMINE]
|
|
*/
|
|
/atom/proc/examine(mob/user)
|
|
var/examine_string = get_examine_string(user, thats = TRUE)
|
|
if(examine_string)
|
|
. = list("[examine_string].")
|
|
else
|
|
. = list()
|
|
|
|
. += get_name_chaser(user)
|
|
if(desc)
|
|
. += desc
|
|
|
|
if(custom_materials)
|
|
var/list/materials_list = list()
|
|
for(var/custom_material in custom_materials)
|
|
var/datum/material/current_material = GET_MATERIAL_REF(custom_material)
|
|
materials_list += "[current_material.name]"
|
|
. += "<u>It is made out of [english_list(materials_list)]</u>."
|
|
|
|
if(reagents)
|
|
var/user_sees_reagents = user.can_see_reagents()
|
|
var/reagent_sigreturn = SEND_SIGNAL(src, COMSIG_ATOM_REAGENT_EXAMINE, user, ., user_sees_reagents)
|
|
if(!(reagent_sigreturn & STOP_GENERIC_REAGENT_EXAMINE))
|
|
if(reagents.flags & TRANSPARENT)
|
|
if(reagents.total_volume)
|
|
. += "It contains <b>[reagents.total_volume]</b> units of various reagents[user_sees_reagents ? ":" : "."]"
|
|
if(user_sees_reagents || (reagent_sigreturn & ALLOW_GENERIC_REAGENT_EXAMINE)) //Show each individual reagent for detailed examination
|
|
for(var/datum/reagent/current_reagent as anything in reagents.reagent_list)
|
|
. += "• [round(current_reagent.volume, CHEMICAL_VOLUME_ROUNDING)] units of [current_reagent.name]"
|
|
if(reagents.is_reacting)
|
|
. += span_warning("It is currently reacting!")
|
|
. += span_notice("The solution's pH is [round(reagents.ph, 0.01)] and has a temperature of [reagents.chem_temp]K.")
|
|
|
|
else
|
|
. += "It contains:<br>Nothing."
|
|
else if(reagents.flags & AMOUNT_VISIBLE)
|
|
if(reagents.total_volume)
|
|
. += span_notice("It has [reagents.total_volume] unit\s left.")
|
|
else
|
|
. += span_danger("It's empty.")
|
|
|
|
SEND_SIGNAL(src, COMSIG_ATOM_EXAMINE, user, .)
|
|
|
|
/**
|
|
* Called when a mob examines (shift click or verb) this atom twice (or more) within EXAMINE_MORE_WINDOW (default 1 second)
|
|
*
|
|
* This is where you can put extra information on something that may be superfluous or not important in critical gameplay
|
|
* moments, while allowing people to manually double-examine to take a closer look
|
|
*
|
|
* Produces a signal [COMSIG_ATOM_EXAMINE_MORE]
|
|
*/
|
|
/atom/proc/examine_more(mob/user)
|
|
SHOULD_CALL_PARENT(TRUE)
|
|
RETURN_TYPE(/list)
|
|
|
|
. = list()
|
|
SEND_SIGNAL(src, COMSIG_ATOM_EXAMINE_MORE, user, .)
|
|
SEND_SIGNAL(user, COMSIG_MOB_EXAMINING_MORE, src, .)
|
|
|
|
/**
|
|
* Get the name of this object for examine
|
|
*
|
|
* You can override what is returned from this proc by registering to listen for the
|
|
* [COMSIG_ATOM_GET_EXAMINE_NAME] signal
|
|
*/
|
|
/atom/proc/get_examine_name(mob/user)
|
|
var/list/override = list(article, null, "<b>[name]</b>")
|
|
SEND_SIGNAL(src, COMSIG_ATOM_GET_EXAMINE_NAME, user, override)
|
|
|
|
if(!isnull(override[EXAMINE_POSITION_ARTICLE]))
|
|
override -= null // IF there is no "before", don't try to join it
|
|
return jointext(override, " ")
|
|
if(!isnull(override[EXAMINE_POSITION_BEFORE]))
|
|
override -= null // There is no article, don't try to join it
|
|
return "\a [jointext(override, " ")]"
|
|
return "\a <b>[src]</b>"
|
|
|
|
///Generate the full examine string of this atom (including icon for goonchat)
|
|
/atom/proc/get_examine_string(mob/user, thats = FALSE)
|
|
return "[icon2html(src, user)] [thats? "That's ":""][get_examine_name(user)]"
|
|
|
|
/**
|
|
* Returns an extended list of examine strings for any contained ID cards.
|
|
*
|
|
* Arguments:
|
|
* * user - The user who is doing the examining.
|
|
*/
|
|
/atom/proc/get_id_examine_strings(mob/user)
|
|
. = list()
|
|
return
|
|
|
|
///Used to insert text after the name but before the description in examine()
|
|
/atom/proc/get_name_chaser(mob/user, list/name_chaser = list())
|
|
return name_chaser
|
|
|
|
/// Used by mobs to determine the name for someone wearing a mask, or with a disfigured or missing face. By default just returns the atom's name. add_id_name will control whether or not we append "(as [id_name])".
|
|
/atom/proc/get_visible_name(add_id_name)
|
|
return name
|