This commit is contained in:
Ghommie
2019-11-19 18:00:56 +01:00
parent a52e292cc8
commit dd101ef221
113 changed files with 519 additions and 552 deletions
+2 -1
View File
@@ -138,6 +138,7 @@
name = "valentine - To: [recipient] From: [sender]" name = "valentine - To: [recipient] From: [sender]"
/obj/item/valentine/examine(mob/user) /obj/item/valentine/examine(mob/user)
. = ..()
if(in_range(user, src) || isobserver(user)) if(in_range(user, src) || isobserver(user))
if( !(ishuman(user) || isobserver(user) || issilicon(user)) ) if( !(ishuman(user) || isobserver(user) || issilicon(user)) )
user << browse("<HTML><HEAD><TITLE>[name]</TITLE></HEAD><BODY>[stars(message)]</BODY></HTML>", "window=[name]") user << browse("<HTML><HEAD><TITLE>[name]</TITLE></HEAD><BODY>[stars(message)]</BODY></HTML>", "window=[name]")
@@ -146,7 +147,7 @@
user << browse("<HTML><HEAD><TITLE>[name]</TITLE></HEAD><BODY>[message]</BODY></HTML>", "window=[name]") user << browse("<HTML><HEAD><TITLE>[name]</TITLE></HEAD><BODY>[message]</BODY></HTML>", "window=[name]")
onclose(user, "[name]") onclose(user, "[name]")
else else
to_chat(user, "<span class='notice'>It is too far away.</span>") . += "<span class='notice'>It is too far away.</span>"
/obj/item/valentine/attack_self(mob/user) /obj/item/valentine/attack_self(mob/user)
user.examinate(src) user.examinate(src)
@@ -22,7 +22,7 @@
var/customname = "custom" var/customname = "custom"
/obj/item/reagent_containers/food/snacks/customizable/examine(mob/user) /obj/item/reagent_containers/food/snacks/customizable/examine(mob/user)
..() . = ..()
var/ingredients_listed = "" var/ingredients_listed = ""
for(var/obj/item/reagent_containers/food/snacks/ING in ingredients) for(var/obj/item/reagent_containers/food/snacks/ING in ingredients)
ingredients_listed += "[ING.name], " ingredients_listed += "[ING.name], "
@@ -33,7 +33,7 @@
size = "big" size = "big"
if(ingredients.len>8) if(ingredients.len>8)
size = "monster" size = "monster"
to_chat(user, "It contains [ingredients.len?"[ingredients_listed]":"no ingredient, "]making a [size]-sized [initial(name)].") . += "It contains [ingredients.len?"[ingredients_listed]":"no ingredient, "]making a [size]-sized [initial(name)]."
/obj/item/reagent_containers/food/snacks/customizable/attackby(obj/item/I, mob/user, params) /obj/item/reagent_containers/food/snacks/customizable/attackby(obj/item/I, mob/user, params)
if(!istype(I, /obj/item/reagent_containers/food/snacks/customizable) && istype(I, /obj/item/reagent_containers/food/snacks)) if(!istype(I, /obj/item/reagent_containers/food/snacks/customizable) && istype(I, /obj/item/reagent_containers/food/snacks))
+4 -4
View File
@@ -151,15 +151,15 @@ All foods are distributed among various categories. Use common sense.
return 0 return 0
/obj/item/reagent_containers/food/snacks/examine(mob/user) /obj/item/reagent_containers/food/snacks/examine(mob/user)
..() . = ..()
if(bitecount == 0) if(bitecount == 0)
return return
else if(bitecount == 1) else if(bitecount == 1)
to_chat(user, "[src] was bitten by someone!") . += "[src] was bitten by someone!"
else if(bitecount <= 3) else if(bitecount <= 3)
to_chat(user, "[src] was bitten [bitecount] times!") . += "[src] was bitten [bitecount] times!"
else else
to_chat(user, "[src] was bitten multiple times!") . += "[src] was bitten multiple times!"
/obj/item/reagent_containers/food/snacks/attackby(obj/item/W, mob/user, params) /obj/item/reagent_containers/food/snacks/attackby(obj/item/W, mob/user, params)
@@ -447,11 +447,11 @@
if (pancakeCount) if (pancakeCount)
var/obj/item/reagent_containers/food/snacks/S = contents[pancakeCount] var/obj/item/reagent_containers/food/snacks/S = contents[pancakeCount]
bitecount = S.bitecount bitecount = S.bitecount
..() . = ..()
if (pancakeCount) if (pancakeCount)
for(var/obj/item/reagent_containers/food/snacks/pancakes/ING in contents) for(var/obj/item/reagent_containers/food/snacks/pancakes/ING in contents)
ingredients_listed += "[ING.name], " ingredients_listed += "[ING.name], "
to_chat(user, "It contains [contents.len?"[ingredients_listed]":"no ingredient, "]on top of a [initial(name)].") . += "It contains [contents.len?"[ingredients_listed]":"no ingredient, "]on top of a [initial(name)]."
bitecount = originalBites bitecount = originalBites
/obj/item/reagent_containers/food/snacks/pancakes/attackby(obj/item/I, mob/living/user, params) /obj/item/reagent_containers/food/snacks/pancakes/attackby(obj/item/I, mob/living/user, params)
@@ -67,9 +67,9 @@ God bless America.
fry_speed = oil_efficiency fry_speed = oil_efficiency
/obj/machinery/deepfryer/examine() /obj/machinery/deepfryer/examine()
..() . = ..()
if(frying) if(frying)
to_chat(usr, "You can make out \a [frying] in the oil.") . += "You can make out \a [frying] in the oil."
/obj/machinery/deepfryer/attackby(obj/item/I, mob/user) /obj/machinery/deepfryer/attackby(obj/item/I, mob/user)
if(istype(I, /obj/item/reagent_containers/pill)) if(istype(I, /obj/item/reagent_containers/pill))
@@ -53,20 +53,20 @@
/obj/machinery/microwave/examine(mob/user) /obj/machinery/microwave/examine(mob/user)
. = ..() . = ..()
if(!operating) if(!operating)
to_chat(user, "<span class='notice'>Alt-click [src] to turn it on.</span>") . += "<span class='notice'>Alt-click [src] to turn it on.</span>"
if(!in_range(user, src) && !issilicon(user) && !isobserver(user)) if(!in_range(user, src) && !issilicon(user) && !isobserver(user))
to_chat(user, "<span class='warning'>You're too far away to examine [src]'s contents and display!</span>") . += "<span class='warning'>You're too far away to examine [src]'s contents and display!</span>"
return return
if(operating) if(operating)
to_chat(user, "<span class='notice'>\The [src] is operating.</span>") . += "<span class='notice'>\The [src] is operating.</span>"
return return
if(length(ingredients)) if(length(ingredients))
if(issilicon(user)) if(issilicon(user))
to_chat(user, "<span class='notice'>\The [src] camera shows:</span>") . += "<span class='notice'>\The [src] camera shows:</span>"
else else
to_chat(user, "<span class='notice'>\The [src] contains:</span>") . += "<span class='notice'>\The [src] contains:</span>"
var/list/items_counts = new var/list/items_counts = new
for(var/i in ingredients) for(var/i in ingredients)
if(istype(i, /obj/item/stack)) if(istype(i, /obj/item/stack))
@@ -76,14 +76,14 @@
var/atom/movable/AM = i var/atom/movable/AM = i
items_counts[AM.name]++ items_counts[AM.name]++
for(var/O in items_counts) for(var/O in items_counts)
to_chat(user, "<span class='notice'>- [items_counts[O]]x [O].</span>") . += "<span class='notice'>- [items_counts[O]]x [O].</span>"
else else
to_chat(user, "<span class='notice'>\The [src] is empty.</span>") . += "<span class='notice'>\The [src] is empty.</span>"
if(!(stat & (NOPOWER|BROKEN))) if(!(stat & (NOPOWER|BROKEN)))
to_chat(user, "<span class='notice'>The status display reads:</span>") . += "<span class='notice'>The status display reads:</span>"
to_chat(user, "<span class='notice'>- Capacity: <b>[max_n_of_items]</b> items.<span>") . += "<span class='notice'>- Capacity: <b>[max_n_of_items]</b> items.<span>"
to_chat(user, "<span class='notice'>- Cook time reduced by <b>[(efficiency - 1) * 25]%</b>.<span>") . += "<span class='notice'>- Cook time reduced by <b>[(efficiency - 1) * 25]%</b>.<span>"
/obj/machinery/microwave/update_icon() /obj/machinery/microwave/update_icon()
if(broken) if(broken)
+2 -2
View File
@@ -319,9 +319,9 @@
pizza_preferences = list() pizza_preferences = list()
/obj/item/pizzabox/infinite/examine(mob/user) /obj/item/pizzabox/infinite/examine(mob/user)
..() . = ..()
if(isobserver(user)) if(isobserver(user))
to_chat(user, "<span class='deadsay'>This pizza box is anomalous, and will produce infinite pizza.</span>") . += "<span class='deadsay'>This pizza box is anomalous, and will produce infinite pizza.</span>"
/obj/item/pizzabox/infinite/attack_self(mob/living/user) /obj/item/pizzabox/infinite/attack_self(mob/living/user)
QDEL_NULL(pizza) QDEL_NULL(pizza)
+5 -5
View File
@@ -107,14 +107,14 @@
var/buffertext = "A funny bit of text." var/buffertext = "A funny bit of text."
/obj/item/toy/cards/singlecard/cas/examine(mob/user) /obj/item/toy/cards/singlecard/cas/examine(mob/user)
..() . = ..()
if (flipped) if (flipped)
to_chat(user, "<span class='notice'>The card is face down.</span>") . += "<span class='notice'>The card is face down.</span>"
else if (blank) else if (blank)
to_chat(user, "<span class='notice'>The card is blank. Write on it with a pen.</span>") . += "<span class='notice'>The card is blank. Write on it with a pen.</span>"
else else
to_chat(user, "<span class='notice'>The card reads: [name]</span>") . += "<span class='notice'>The card reads: [name]</span>"
to_chat(user, "<span class='notice'>Alt-click to flip it.</span>") . += "<span class='notice'>Alt-click to flip it.</span>"
/obj/item/toy/cards/singlecard/cas/Flip() /obj/item/toy/cards/singlecard/cas/Flip()
set name = "Flip Card" set name = "Flip Card"
@@ -123,26 +123,25 @@
/obj/structure/beebox/examine(mob/user) /obj/structure/beebox/examine(mob/user)
..() . = ..()
if(!queen_bee) if(!queen_bee)
to_chat(user, "<span class='warning'>There is no queen bee! There won't bee any honeycomb without a queen!</span>") . += "<span class='warning'>There is no queen bee! There won't bee any honeycomb without a queen!</span>"
var/half_bee = get_max_bees()*0.5 var/half_bee = get_max_bees()*0.5
if(half_bee && (bees.len >= half_bee)) if(half_bee && (bees.len >= half_bee))
to_chat(user, "<span class='notice'>This place is aBUZZ with activity... there are lots of bees!</span>") . += "<span class='notice'>This place is aBUZZ with activity... there are lots of bees!</span>"
to_chat(user, "<span class='notice'>[bee_resources]/100 resource supply.</span>") . += "<span class='notice'>[bee_resources]/100 resource supply.</span>"
to_chat(user, "<span class='notice'>[bee_resources]% towards a new honeycomb.</span>") . += "<span class='notice'>[bee_resources]% towards a new honeycomb.</span>"
to_chat(user, "<span class='notice'>[bee_resources*2]% towards a new bee.</span>") . += "<span class='notice'>[bee_resources*2]% towards a new bee.</span>"
if(honeycombs.len) if(honeycombs.len)
var/plural = honeycombs.len > 1 var/plural = honeycombs.len > 1
to_chat(user, "<span class='notice'>There [plural? "are" : "is"] [honeycombs.len] uncollected honeycomb[plural ? "s":""] in the apiary.</span>") . += "<span class='notice'>There [plural? "are" : "is"] [honeycombs.len] uncollected honeycomb[plural ? "s":""] in the apiary.</span>"
if(honeycombs.len >= get_max_honeycomb()) if(honeycombs.len >= get_max_honeycomb())
to_chat(user, "<span class='warning'>There's no room for more honeycomb!</span>") . += "<span class='warning'>There's no room for more honeycomb!</span>"
/obj/structure/beebox/attackby(obj/item/I, mob/user, params) /obj/structure/beebox/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/honey_frame)) if(istype(I, /obj/item/honey_frame))
@@ -16,7 +16,7 @@
/obj/structure/fermenting_barrel/examine(mob/user) /obj/structure/fermenting_barrel/examine(mob/user)
. = ..() . = ..()
to_chat(user, "<span class='notice'>It is currently [open?"open, letting you pour liquids in.":"closed, letting you draw liquids from the tap."]</span>") . += "<span class='notice'>It is currently [open?"open, letting you pour liquids in.":"closed, letting you draw liquids from the tap."]</span>"
/obj/structure/fermenting_barrel/proc/makeWine(obj/item/reagent_containers/food/snacks/grown/fruit) /obj/structure/fermenting_barrel/proc/makeWine(obj/item/reagent_containers/food/snacks/grown/fruit)
if(fruit.reagents) if(fruit.reagents)
+3 -3
View File
@@ -439,7 +439,7 @@
to_chat(user, "<span class='notice'>You flip the write-protect tab to [src.read_only ? "protected" : "unprotected"].</span>") to_chat(user, "<span class='notice'>You flip the write-protect tab to [src.read_only ? "protected" : "unprotected"].</span>")
/obj/item/disk/plantgene/examine(mob/user) /obj/item/disk/plantgene/examine(mob/user)
..() . = ..()
if(gene && (istype(gene, /datum/plant_gene/core/potency))) if(gene && (istype(gene, /datum/plant_gene/core/potency)))
to_chat(user,"<span class='notice'>Percent is relative to potency, not maximum volume of the plant.</span>") . += "<span class='notice'>Percent is relative to potency, not maximum volume of the plant.</span>"
to_chat(user, "The write-protect tab is set to [src.read_only ? "protected" : "unprotected"].") . += "The write-protect tab is set to [src.read_only ? "protected" : "unprotected"]."
+2 -2
View File
@@ -56,11 +56,11 @@
return 0 return 0
/obj/item/reagent_containers/food/snacks/grown/examine(user) /obj/item/reagent_containers/food/snacks/grown/examine(user)
..() . = ..()
if(seed) if(seed)
for(var/datum/plant_gene/trait/T in seed.genes) for(var/datum/plant_gene/trait/T in seed.genes)
if(T.examine_line) if(T.examine_line)
to_chat(user, T.examine_line) . += T.examine_line
/obj/item/reagent_containers/food/snacks/grown/attackby(obj/item/O, mob/user, params) /obj/item/reagent_containers/food/snacks/grown/attackby(obj/item/O, mob/user, params)
..() ..()
+12 -13
View File
@@ -294,32 +294,31 @@
/obj/machinery/hydroponics/examine(user) /obj/machinery/hydroponics/examine(user)
..() . = ..()
if(myseed) if(myseed)
to_chat(user, "<span class='info'>It has <span class='name'>[myseed.plantname]</span> planted.</span>") . += "<span class='info'>It has <span class='name'>[myseed.plantname]</span> planted.</span>"
if (dead) if (dead)
to_chat(user, "<span class='warning'>It's dead!</span>") . += "<span class='warning'>It's dead!</span>"
else if (harvest) else if (harvest)
to_chat(user, "<span class='info'>It's ready to harvest.</span>") . += "<span class='info'>It's ready to harvest.</span>"
else if (plant_health <= (myseed.endurance / 2)) else if (plant_health <= (myseed.endurance / 2))
to_chat(user, "<span class='warning'>It looks unhealthy.</span>") . += "<span class='warning'>It looks unhealthy.</span>"
else else
to_chat(user, "<span class='info'>It's empty.</span>") . += "<span class='info'>It's empty.</span>"
if(!self_sustaining) if(!self_sustaining)
to_chat(user, "<span class='info'>Water: [waterlevel]/[maxwater].</span>") . += "<span class='info'>Water: [waterlevel]/[maxwater].</span>"
to_chat(user, "<span class='info'>Nutrient: [nutrilevel]/[maxnutri].</span>") . += "<span class='info'>Nutrient: [nutrilevel]/[maxnutri].</span>"
if(self_sufficiency_progress > 0) if(self_sufficiency_progress > 0)
var/percent_progress = round(self_sufficiency_progress * 100 / self_sufficiency_req) var/percent_progress = round(self_sufficiency_progress * 100 / self_sufficiency_req)
to_chat(user, "<span class='info'>Treatment for self-sustenance are [percent_progress]% complete.</span>") . += "<span class='info'>Treatment for self-sustenance are [percent_progress]% complete.</span>"
else else
to_chat(user, "<span class='info'>It doesn't require any water or nutrients.</span>") . += "<span class='info'>It doesn't require any water or nutrients.</span>"
if(weedlevel >= 5) if(weedlevel >= 5)
to_chat(user, "<span class='warning'>It's filled with weeds!</span>") . += "<span class='warning'>It's filled with weeds!</span>"
if(pestlevel >= 5) if(pestlevel >= 5)
to_chat(user, "<span class='warning'>It's filled with tiny worms!</span>") . += "<span class='warning'>It's filled with tiny worms!</span>"
to_chat(user, "" )
/obj/machinery/hydroponics/proc/weedinvasion() // If a weed growth is sufficient, this happens. /obj/machinery/hydroponics/proc/weedinvasion() // If a weed growth is sufficient, this happens.
@@ -70,16 +70,16 @@
/obj/item/electronic_assembly/examine(mob/user) /obj/item/electronic_assembly/examine(mob/user)
. = ..() . = ..()
if(can_anchor) if(can_anchor)
to_chat(user, "<span class='notice'>The anchoring bolts [anchored ? "are" : "can be"] <b>wrenched</b> in place and the maintenance panel [opened ? "can be" : "is"] <b>screwed</b> in place.</span>") . += "<span class='notice'>The anchoring bolts [anchored ? "are" : "can be"] <b>wrenched</b> in place and the maintenance panel [opened ? "can be" : "is"] <b>screwed</b> in place.</span>"
else else
to_chat(user, "<span class='notice'>The maintenance panel [opened ? "can be" : "is"] <b>screwed</b> in place.</span>") . += "<span class='notice'>The maintenance panel [opened ? "can be" : "is"] <b>screwed</b> in place.</span>"
if((isobserver(user) && ckeys_allowed_to_scan[user.ckey]) || IsAdminGhost(user)) if((isobserver(user) && ckeys_allowed_to_scan[user.ckey]) || IsAdminGhost(user))
to_chat(user, "You can <a href='?src=[REF(src)];ghostscan=1'>scan</a> this circuit.") . += "You can <a href='?src=[REF(src)];ghostscan=1'>scan</a> this circuit."
for(var/I in assembly_components) for(var/I in assembly_components)
var/obj/item/integrated_circuit/IC = I var/obj/item/integrated_circuit/IC = I
IC.external_examine(user) . += IC.external_examine(user)
if(opened) if(opened)
interact(user) interact(user)
@@ -26,8 +26,8 @@
var/displayed_name = "" var/displayed_name = ""
var/demands_object_input = FALSE var/demands_object_input = FALSE
var/can_input_object_when_closed = FALSE var/can_input_object_when_closed = FALSE
/* /*
Integrated circuits are essentially modular machines. Each circuit has a specific function, and combining them inside Electronic Assemblies allows Integrated circuits are essentially modular machines. Each circuit has a specific function, and combining them inside Electronic Assemblies allows
a creative player the means to solve many problems. Circuits are held inside an electronic assembly, and are wired using special tools. a creative player the means to solve many problems. Circuits are held inside an electronic assembly, and are wired using special tools.
@@ -35,8 +35,8 @@ a creative player the means to solve many problems. Circuits are held inside an
/obj/item/integrated_circuit/examine(mob/user) /obj/item/integrated_circuit/examine(mob/user)
interact(user) interact(user)
external_examine(user)
. = ..() . = ..()
. += external_examine(user)
// Can be called via electronic_assembly/attackby() // Can be called via electronic_assembly/attackby()
/obj/item/integrated_circuit/proc/additem(var/obj/item/I, var/mob/living/user) /obj/item/integrated_circuit/proc/additem(var/obj/item/I, var/mob/living/user)
@@ -62,7 +62,7 @@ a creative player the means to solve many problems. Circuits are held inside an
// This should be used when someone is examining from an 'outside' perspective, e.g. reading a screen or LED. // This should be used when someone is examining from an 'outside' perspective, e.g. reading a screen or LED.
/obj/item/integrated_circuit/proc/external_examine(mob/user) /obj/item/integrated_circuit/proc/external_examine(mob/user)
any_examine(user) return any_examine(user)
/obj/item/integrated_circuit/proc/any_examine(mob/user) /obj/item/integrated_circuit/proc/any_examine(mob/user)
return return
@@ -19,7 +19,7 @@
. = ..() . = ..()
/obj/item/integrated_circuit/memory/examine(mob/user) /obj/item/integrated_circuit/memory/examine(mob/user)
..() . = ..()
var/i var/i
for(i = 1, i <= outputs.len, i++) for(i = 1, i <= outputs.len, i++)
var/datum/integrated_io/O = outputs[i] var/datum/integrated_io/O = outputs[i]
@@ -30,7 +30,7 @@
data = "[d]" data = "[d]"
else if(!isnull(O.data)) else if(!isnull(O.data))
data = O.data data = O.data
to_chat(user, "\The [src] has [data] saved to address [i].") . += "\The [src] has [data] saved to address [i]."
/obj/item/integrated_circuit/memory/do_work() /obj/item/integrated_circuit/memory/do_work()
for(var/i = 1 to inputs.len) for(var/i = 1 to inputs.len)
@@ -23,7 +23,7 @@
if(displayed_name && displayed_name != name) if(displayed_name && displayed_name != name)
shown_label = " labeled '[displayed_name]'" shown_label = " labeled '[displayed_name]'"
to_chat(user, "There is \a [src][shown_label], which displays [!isnull(stuff_to_display) ? "'[stuff_to_display]'" : "nothing"].") return "There is \a [src][shown_label], which displays [!isnull(stuff_to_display) ? "'[stuff_to_display]'" : "nothing"]."
/obj/item/integrated_circuit/output/screen/do_work() /obj/item/integrated_circuit/output/screen/do_work()
var/datum/integrated_io/I = inputs[1] var/datum/integrated_io/I = inputs[1]
@@ -345,14 +345,13 @@
set_pin_data(IC_INPUT, 1, FALSE) set_pin_data(IC_INPUT, 1, FALSE)
/obj/item/integrated_circuit/output/led/external_examine(mob/user) /obj/item/integrated_circuit/output/led/external_examine(mob/user)
var/text_output = "There is " . = "There is "
if(name == displayed_name) if(name == displayed_name)
text_output += "\an [name]" . += "\an [name]"
else else
text_output += "\an ["\improper[name]"] labeled '[displayed_name]'" . += "\an ["\improper[name]"] labeled '[displayed_name]'"
text_output += " which is currently [get_pin_data(IC_INPUT, 1) ? "lit <font color=[led_color]>*</font>" : "unlit"]." . += " which is currently [get_pin_data(IC_INPUT, 1) ? "lit <font color=[led_color]>*</font>" : "unlit"]."
to_chat(user, text_output)
/obj/item/integrated_circuit/output/diagnostic_hud /obj/item/integrated_circuit/output/diagnostic_hud
name = "AR interface" name = "AR interface"
+6 -6
View File
@@ -25,18 +25,18 @@
var/list/allowed_books = list(/obj/item/book, /obj/item/spellbook, /obj/item/storage/book) //Things allowed in the bookcase var/list/allowed_books = list(/obj/item/book, /obj/item/spellbook, /obj/item/storage/book) //Things allowed in the bookcase
/obj/structure/bookcase/examine(mob/user) /obj/structure/bookcase/examine(mob/user)
..() . = ..()
if(!anchored) if(!anchored)
to_chat(user, "<span class='notice'>The <i>bolts</i> on the bottom are unsecured.</span>") . += "<span class='notice'>The <i>bolts</i> on the bottom are unsecured.</span>"
if(anchored) if(anchored)
to_chat(user, "<span class='notice'>It's secured in place with <b>bolts</b>.</span>") . += "<span class='notice'>It's secured in place with <b>bolts</b>.</span>"
switch(state) switch(state)
if(0) if(0)
to_chat(user, "<span class='notice'>There's a <b>small crack</b> visible on the back panel.</span>") . += "<span class='notice'>There's a <b>small crack</b> visible on the back panel.</span>"
if(1) if(1)
to_chat(user, "<span class='notice'>There's space inside for a <i>wooden</i> shelf.</span>") . += "<span class='notice'>There's space inside for a <i>wooden</i> shelf.</span>"
if(2) if(2)
to_chat(user, "<span class='notice'>There's a <b>small crack</b> visible on the shelf.</span>") . += "<span class='notice'>There's a <b>small crack</b> visible on the shelf.</span>"
/obj/structure/bookcase/Initialize(mapload) /obj/structure/bookcase/Initialize(mapload)
. = ..() . = ..()
+2 -2
View File
@@ -16,7 +16,7 @@
/obj/item/soapstone/examine(mob/user) /obj/item/soapstone/examine(mob/user)
. = ..() . = ..()
if(remaining_uses != -1) if(remaining_uses != -1)
to_chat(user, "It has [remaining_uses] uses left.") . += "It has [remaining_uses] uses left."
/obj/item/soapstone/afterattack(atom/target, mob/user, proximity) /obj/item/soapstone/afterattack(atom/target, mob/user, proximity)
. = ..() . = ..()
@@ -193,7 +193,7 @@
update_icon() update_icon()
/obj/structure/chisel_message/examine(mob/user) /obj/structure/chisel_message/examine(mob/user)
..() . = ..()
ui_interact(user) ui_interact(user)
/obj/structure/chisel_message/Destroy() /obj/structure/chisel_message/Destroy()
@@ -38,12 +38,12 @@
return ..() return ..()
/obj/item/twohanded/kinetic_crusher/examine(mob/living/user) /obj/item/twohanded/kinetic_crusher/examine(mob/living/user)
..() . = ..()
to_chat(user, "<span class='notice'>Mark a large creature with the destabilizing force, then hit them in melee to do <b>[force_wielded + detonation_damage]</b> damage.</span>") . += "<span class='notice'>Mark a large creature with the destabilizing force, then hit them in melee to do <b>[force_wielded + detonation_damage]</b> damage.</span>"
to_chat(user, "<span class='notice'>Does <b>[force_wielded + detonation_damage + backstab_bonus]</b> damage if the target is backstabbed, instead of <b>[force_wielded + detonation_damage]</b>.</span>") . += "<span class='notice'>Does <b>[force_wielded + detonation_damage + backstab_bonus]</b> damage if the target is backstabbed, instead of <b>[force_wielded + detonation_damage]</b>.</span>"
for(var/t in trophies) for(var/t in trophies)
var/obj/item/crusher_trophy/T = t var/obj/item/crusher_trophy/T = t
to_chat(user, "<span class='notice'>It has \a [T] attached, which causes [T.effect_desc()].</span>") . += "<span class='notice'>It has \a [T] attached, which causes [T.effect_desc()].</span>"
/obj/item/twohanded/kinetic_crusher/attackby(obj/item/I, mob/living/user) /obj/item/twohanded/kinetic_crusher/attackby(obj/item/I, mob/living/user)
if(istype(I, /obj/item/crowbar)) if(istype(I, /obj/item/crowbar))
@@ -202,8 +202,8 @@
var/denied_type = /obj/item/crusher_trophy var/denied_type = /obj/item/crusher_trophy
/obj/item/crusher_trophy/examine(mob/living/user) /obj/item/crusher_trophy/examine(mob/living/user)
..() . = ..()
to_chat(user, "<span class='notice'>Causes [effect_desc()] when attached to a kinetic crusher.</span>") . += "<span class='notice'>Causes [effect_desc()] when attached to a kinetic crusher.</span>"
/obj/item/crusher_trophy/proc/effect_desc() /obj/item/crusher_trophy/proc/effect_desc()
return "errors" return "errors"
@@ -59,8 +59,8 @@
malfunctioning = 1 malfunctioning = 1
/obj/item/lazarus_injector/examine(mob/user) /obj/item/lazarus_injector/examine(mob/user)
..() . = ..()
if(!loaded) if(!loaded)
to_chat(user, "<span class='info'>[src] is empty.</span>") . += "<span class='info'>[src] is empty.</span>"
if(malfunctioning) if(malfunctioning)
to_chat(user, "<span class='info'>The display on [src] seems to be flickering.</span>") . += "<span class='info'>The display on [src] seems to be flickering.</span>"
@@ -36,9 +36,9 @@ GLOBAL_LIST_INIT(marker_beacon_colors, list(
update_icon() update_icon()
/obj/item/stack/marker_beacon/examine(mob/user) /obj/item/stack/marker_beacon/examine(mob/user)
..() . = ..()
to_chat(user, "<span class='notice'>Use in-hand to place a [singular_name].</span>") . += "<span class='notice'>Use in-hand to place a [singular_name].</span>"
to_chat(user, "<span class='notice'>Alt-click to select a color. Current color is [picked_color].</span>") . += "<span class='notice'>Alt-click to select a color. Current color is [picked_color].</span>"
/obj/item/stack/marker_beacon/update_icon() /obj/item/stack/marker_beacon/update_icon()
icon_state = "[initial(icon_state)][lowertext(picked_color)]" icon_state = "[initial(icon_state)][lowertext(picked_color)]"
@@ -93,8 +93,8 @@ GLOBAL_LIST_INIT(marker_beacon_colors, list(
qdel(src) qdel(src)
/obj/structure/marker_beacon/examine(mob/user) /obj/structure/marker_beacon/examine(mob/user)
..() . = ..()
to_chat(user, "<span class='notice'>Alt-click to select a color. Current color is [picked_color].</span>") . += "<span class='notice'>Alt-click to select a color. Current color is [picked_color].</span>"
/obj/structure/marker_beacon/update_icon() /obj/structure/marker_beacon/update_icon()
while(!picked_color || !GLOB.marker_beacon_colors[picked_color]) while(!picked_color || !GLOB.marker_beacon_colors[picked_color])
@@ -33,8 +33,8 @@
/obj/item/survivalcapsule/examine(mob/user) /obj/item/survivalcapsule/examine(mob/user)
. = ..() . = ..()
get_template() get_template()
to_chat(user, "This capsule has the [template.name] stored.") . += "This capsule has the [template.name] stored."
to_chat(user, template.description) . += template.description
/obj/item/survivalcapsule/attack_self() /obj/item/survivalcapsule/attack_self()
//Can't grab when capsule is New() because templates aren't loaded then //Can't grab when capsule is New() because templates aren't loaded then
+1 -1
View File
@@ -14,7 +14,7 @@ GLOBAL_LIST_EMPTY(total_extraction_beacons)
/obj/item/extraction_pack/examine() /obj/item/extraction_pack/examine()
. = ..() . = ..()
usr.show_message("It has [uses_left] use\s remaining.", 1) . += "It has [uses_left] use\s remaining."
/obj/item/extraction_pack/attack_self(mob/user) /obj/item/extraction_pack/attack_self(mob/user)
var/list/possible_beacons = list() var/list/possible_beacons = list()
@@ -645,10 +645,10 @@
total_mass_on = 5 total_mass_on = 5
/obj/item/melee/transforming/cleaving_saw/examine(mob/user) /obj/item/melee/transforming/cleaving_saw/examine(mob/user)
..() . = ..()
to_chat(user, "<span class='notice'>It is [active ? "open, and will cleave enemies in a wide arc":"closed, and can be used for rapid consecutive attacks that cause beastly enemies to bleed"].<br>\ . += "<span class='notice'>It is [active ? "open, and will cleave enemies in a wide arc":"closed, and can be used for rapid consecutive attacks that cause beastly enemies to bleed"].<br>\
Both modes will build up existing bleed effects, doing a burst of high damage if the bleed is built up high enough.<br>\ Both modes will build up existing bleed effects, doing a burst of high damage if the bleed is built up high enough.<br>\
Transforming it immediately after an attack causes the next attack to come out faster.</span>") Transforming it immediately after an attack causes the next attack to come out faster.</span>"
/obj/item/melee/transforming/cleaving_saw/suicide_act(mob/user) /obj/item/melee/transforming/cleaving_saw/suicide_act(mob/user)
user.visible_message("<span class='suicide'>[user] is [active ? "closing [src] on [user.p_their()] neck" : "opening [src] into [user.p_their()] chest"]! It looks like [user.p_theyre()] trying to commit suicide!</span>") user.visible_message("<span class='suicide'>[user] is [active ? "closing [src] on [user.p_their()] neck" : "opening [src] into [user.p_their()] chest"]! It looks like [user.p_theyre()] trying to commit suicide!</span>")
@@ -1073,8 +1073,8 @@
var/friendly_fire_check = FALSE //if the blasts we make will consider our faction against the faction of hit targets var/friendly_fire_check = FALSE //if the blasts we make will consider our faction against the faction of hit targets
/obj/item/hierophant_club/examine(mob/user) /obj/item/hierophant_club/examine(mob/user)
..() . = ..()
to_chat(user, "<span class='hierophant_warning'>The[beacon ? " beacon is not currently":"re is a beacon"] attached.</span>") . += "<span class='hierophant_warning'>The[beacon ? " beacon is not currently":"re is a beacon"] attached.</span>"
/obj/item/hierophant_club/suicide_act(mob/living/user) /obj/item/hierophant_club/suicide_act(mob/living/user)
say("Xverwpsgexmrk...", forced = "hierophant club suicide") say("Xverwpsgexmrk...", forced = "hierophant club suicide")
+2 -2
View File
@@ -181,8 +181,8 @@ GLOBAL_LIST_EMPTY(silo_access_logs)
flick("silo_active", src) flick("silo_active", src)
/obj/machinery/ore_silo/examine(mob/user) /obj/machinery/ore_silo/examine(mob/user)
..() . = ..()
to_chat(user, "<span class='notice'>[src] can be linked to techfabs, circuit printers and protolathes with a multitool.</span>") . += "<span class='notice'>[src] can be linked to techfabs, circuit printers and protolathes with a multitool.</span>"
/datum/ore_silo_log /datum/ore_silo_log
var/name // for VV var/name // for VV
+2 -2
View File
@@ -260,8 +260,8 @@
..() ..()
/obj/item/card/mining_point_card/examine(mob/user) /obj/item/card/mining_point_card/examine(mob/user)
..() . = ..()
to_chat(user, "There's [points] point\s on the card.") . += "There's [points] point\s on the card."
///Conscript kit ///Conscript kit
/obj/item/card/mining_access_card /obj/item/card/mining_access_card
+7 -7
View File
@@ -68,22 +68,22 @@
check_friendly_fire = 0 check_friendly_fire = 0
/mob/living/simple_animal/hostile/mining_drone/examine(mob/user) /mob/living/simple_animal/hostile/mining_drone/examine(mob/user)
..() . = ..()
var/t_He = p_they(TRUE) var/t_He = p_they(TRUE)
var/t_him = p_them() var/t_him = p_them()
var/t_s = p_s() var/t_s = p_s()
if(health < maxHealth) if(health < maxHealth)
if(health >= maxHealth * 0.5) if(health >= maxHealth * 0.5)
to_chat(user, "<span class='warning'>[t_He] look[t_s] slightly dented.</span>") . += "<span class='warning'>[t_He] look[t_s] slightly dented.</span>"
else else
to_chat(user, "<span class='boldwarning'>[t_He] look[t_s] severely dented!</span>") . += "<span class='boldwarning'>[t_He] look[t_s] severely dented!</span>"
to_chat(user, "<span class='notice'>Using a mining scanner on [t_him] will instruct [t_him] to drop stored ore. <b>[max(0, LAZYLEN(contents) - 1)] Stored Ore</b>\n\ . += "<span class='notice'>Using a mining scanner on [t_him] will instruct [t_him] to drop stored ore. <b>[max(0, LAZYLEN(contents) - 1)] Stored Ore</b>\n\
Field repairs can be done with a welder.") Field repairs can be done with a welder."
if(stored_gun && stored_gun.max_mod_capacity) if(stored_gun && stored_gun.max_mod_capacity)
to_chat(user, "<b>[stored_gun.get_remaining_mod_capacity()]%</b> mod capacity remaining.") . += "<b>[stored_gun.get_remaining_mod_capacity()]%</b> mod capacity remaining."
for(var/A in stored_gun.get_modkits()) for(var/A in stored_gun.get_modkits())
var/obj/item/borg/upgrade/modkit/M = A var/obj/item/borg/upgrade/modkit/M = A
to_chat(user, "<span class='notice'>There is \a [M] installed, using <b>[M.cost]%</b> capacity.</span>") . += "<span class='notice'>There is \a [M] installed, using <b>[M.cost]%</b> capacity.</span>"
/mob/living/simple_animal/hostile/mining_drone/welder_act(mob/living/user, obj/item/I) /mob/living/simple_animal/hostile/mining_drone/welder_act(mob/living/user, obj/item/I)
. = TRUE . = TRUE
+2 -2
View File
@@ -348,9 +348,9 @@ GLOBAL_LIST_INIT(sand_recipes, list(\
pixel_y = rand(0,8)-8 pixel_y = rand(0,8)-8
/obj/item/coin/examine(mob/user) /obj/item/coin/examine(mob/user)
..() . = ..()
if(value) if(value)
to_chat(user, "<span class='info'>It's worth [value] credit\s.</span>") . += "<span class='info'>It's worth [value] credit\s.</span>"
/obj/item/coin/gold /obj/item/coin/gold
name = "gold coin" name = "gold coin"
+1 -1
View File
@@ -29,7 +29,7 @@
/obj/structure/ore_box/examine(mob/living/user) /obj/structure/ore_box/examine(mob/living/user)
if(Adjacent(user) && istype(user)) if(Adjacent(user) && istype(user))
show_contents(user) show_contents(user)
. = ..() return ..()
/obj/structure/ore_box/attack_hand(mob/user) /obj/structure/ore_box/attack_hand(mob/user)
. = ..() . = ..()
+2 -2
View File
@@ -862,9 +862,9 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
change_mob_type( /mob/living/carbon/human , null, null, TRUE) //always delmob, ghosts shouldn't be left lingering change_mob_type( /mob/living/carbon/human , null, null, TRUE) //always delmob, ghosts shouldn't be left lingering
/mob/dead/observer/examine(mob/user) /mob/dead/observer/examine(mob/user)
..() . = ..()
if(!invisibility) if(!invisibility)
to_chat(user, "It seems extremely obvious.") . += "It seems extremely obvious."
/mob/dead/observer/proc/set_invisibility(value) /mob/dead/observer/proc/set_invisibility(value)
invisibility = value invisibility = value
+4 -4
View File
@@ -188,17 +188,17 @@
qdel(src) qdel(src)
/obj/item/mmi/examine(mob/user) /obj/item/mmi/examine(mob/user)
..() . = ..()
if(brainmob) if(brainmob)
var/mob/living/brain/B = brainmob var/mob/living/brain/B = brainmob
if(!B.key || !B.mind || B.stat == DEAD) if(!B.key || !B.mind || B.stat == DEAD)
to_chat(user, "<span class='warning'>The MMI indicates the brain is completely unresponsive.</span>") . += "<span class='warning'>The MMI indicates the brain is completely unresponsive.</span>"
else if(!B.client) else if(!B.client)
to_chat(user, "<span class='warning'>The MMI indicates the brain is currently inactive; it might change.</span>") . += "<span class='warning'>The MMI indicates the brain is currently inactive; it might change.</span>"
else else
to_chat(user, "<span class='notice'>The MMI indicates the brain is active.</span>") . += "<span class='notice'>The MMI indicates the brain is active.</span>"
/obj/item/mmi/relaymove(mob/user) /obj/item/mmi/relaymove(mob/user)
return //so that the MMI won't get a warning about not being able to move if it tries to move return //so that the MMI won't get a warning about not being able to move if it tries to move
+1 -1
View File
@@ -157,7 +157,7 @@
/obj/item/organ/brain/examine(mob/user)//BUG_PROBABLE_CAUSE to_chats changed to . += /obj/item/organ/brain/examine(mob/user)
. = ..() . = ..()
if(user.suiciding) if(user.suiciding)
+1 -1
View File
@@ -161,7 +161,7 @@ GLOBAL_VAR(posibrain_notify_cooldown)
else else
msg = "[dead_message]" msg = "[dead_message]"
to_chat(user, msg) . += msg
/obj/item/mmi/posibrain/Initialize() /obj/item/mmi/posibrain/Initialize()
. = ..() . = ..()
@@ -71,16 +71,16 @@
Leap(M) Leap(M)
/obj/item/clothing/mask/facehugger/examine(mob/user) /obj/item/clothing/mask/facehugger/examine(mob/user)
..() . = ..()
if(!real)//So that giant red text about probisci doesn't show up. if(!real)//So that giant red text about probisci doesn't show up.
return return
switch(stat) switch(stat)
if(DEAD,UNCONSCIOUS) if(DEAD,UNCONSCIOUS)
to_chat(user, "<span class='boldannounce'>[src] is not moving.</span>") . += "<span class='boldannounce'>[src] is not moving.</span>"
if(CONSCIOUS) if(CONSCIOUS)
to_chat(user, "<span class='boldannounce'>[src] seems to be active!</span>") . += "<span class='boldannounce'>[src] seems to be active!</span>"
if (sterile) if (sterile)
to_chat(user, "<span class='boldannounce'>It looks like the proboscis has been removed.</span>") . += "<span class='boldannounce'>It looks like the proboscis has been removed.</span>"
/obj/item/clothing/mask/facehugger/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) /obj/item/clothing/mask/facehugger/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
+29 -27
View File
@@ -6,39 +6,39 @@
var/t_has = p_have() var/t_has = p_have()
var/t_is = p_are() var/t_is = p_are()
var/msg = "<span class='info'>*---------*\nThis is [icon2html(src, user)] \a <EM>[src]</EM>!\n" . = list("<span class='info'>*---------*\nThis is [icon2html(src, user)] \a <EM>[src]</EM>!")
if (handcuffed) if (handcuffed)
msg += "<span class='warning'>[t_He] [t_is] [icon2html(handcuffed, user)] handcuffed!</span>\n" . += "<span class='warning'>[t_He] [t_is] [icon2html(handcuffed, user)] handcuffed!</span>"
if (head) if (head)
msg += "[t_He] [t_is] wearing [head.get_examine_string(user)] on [t_his] head. \n" . += "[t_He] [t_is] wearing [head.get_examine_string(user)] on [t_his] head."
if (wear_mask) if (wear_mask)
msg += "[t_He] [t_is] wearing [wear_mask.get_examine_string(user)] on [t_his] face.\n" . += "[t_He] [t_is] wearing [wear_mask.get_examine_string(user)] on [t_his] face."
if (wear_neck) if (wear_neck)
msg += "[t_He] [t_is] wearing [wear_neck.get_examine_string(user)] around [t_his] neck.\n" . += "[t_He] [t_is] wearing [wear_neck.get_examine_string(user)] around [t_his] neck."
for(var/obj/item/I in held_items) for(var/obj/item/I in held_items)
if(!(I.item_flags & ABSTRACT)) if(!(I.item_flags & ABSTRACT))
msg += "[t_He] [t_is] holding [I.get_examine_string(user)] in [t_his] [get_held_index_name(get_held_index_of_item(I))].\n" . += "[t_He] [t_is] holding [I.get_examine_string(user)] in [t_his] [get_held_index_name(get_held_index_of_item(I))]."
if (back) if (back)
msg += "[t_He] [t_has] [back.get_examine_string(user)] on [t_his] back.\n" . += "[t_He] [t_has] [back.get_examine_string(user)] on [t_his] back."
var/appears_dead = 0 var/appears_dead = 0
if (stat == DEAD) if (stat == DEAD)
appears_dead = 1 appears_dead = 1
if(getorgan(/obj/item/organ/brain)) if(getorgan(/obj/item/organ/brain))
msg += "<span class='deadsay'>[t_He] [t_is] limp and unresponsive, with no signs of life.</span>\n" . += "<span class='deadsay'>[t_He] [t_is] limp and unresponsive, with no signs of life.</span>"
else if(get_bodypart(BODY_ZONE_HEAD)) else if(get_bodypart(BODY_ZONE_HEAD))
msg += "<span class='deadsay'>It appears that [t_his] brain is missing...</span>\n" . += "<span class='deadsay'>It appears that [t_his] brain is missing...</span>"
var/list/missing = get_missing_limbs() var/list/missing = get_missing_limbs()
for(var/t in missing) for(var/t in missing)
if(t==BODY_ZONE_HEAD) if(t==BODY_ZONE_HEAD)
msg += "<span class='deadsay'><B>[t_His] [parse_zone(t)] is missing!</B></span>\n" . += "<span class='deadsay'><B>[t_His] [parse_zone(t)] is missing!</B></span>"
continue continue
msg += "<span class='warning'><B>[t_His] [parse_zone(t)] is missing!</B></span>\n" . += "<span class='warning'><B>[t_His] [parse_zone(t)] is missing!</B></span>"
msg += "<span class='warning'>" var/list/msg = list("<span class='warning'>")
var/temp = getBruteLoss() var/temp = getBruteLoss()
if(!(user == src && src.hal_screwyhud == SCREWYHUD_HEALTHY)) //fake healthy if(!(user == src && src.hal_screwyhud == SCREWYHUD_HEALTHY)) //fake healthy
if(temp) if(temp)
@@ -80,35 +80,37 @@
msg += "</span>" msg += "</span>"
. += msg.Join("")
if(!appears_dead) if(!appears_dead)
if(stat == UNCONSCIOUS) if(stat == UNCONSCIOUS)
msg += "[t_He] [t_is]n't responding to anything around [t_him] and seems to be asleep.\n" . += "[t_He] [t_is]n't responding to anything around [t_him] and seems to be asleep."
else if(InCritical()) else if(InCritical())
msg += "[t_His] breathing is shallow and labored.\n" . += "[t_His] breathing is shallow and labored."
if(digitalcamo) if(digitalcamo)
msg += "[t_He] [t_is] moving [t_his] body in an unnatural and blatantly unsimian manner.\n" . += "[t_He] [t_is] moving [t_his] body in an unnatural and blatantly unsimian manner."
if(combatmode) if(combatmode)
msg += "[t_He] [t_is] visibly tense[resting ? "." : ", and [t_is] standing in combative stance."]\n" . += "[t_He] [t_is] visibly tense[resting ? "." : ", and [t_is] standing in combative stance."]"
msg += common_trait_examine()
var/trait_exam = common_trait_examine()
if (!isnull(trait_exam))
. += trait_exam
var/datum/component/mood/mood = src.GetComponent(/datum/component/mood) var/datum/component/mood/mood = src.GetComponent(/datum/component/mood)
if(mood) if(mood)
switch(mood.shown_mood) switch(mood.shown_mood)
if(-INFINITY to MOOD_LEVEL_SAD4) if(-INFINITY to MOOD_LEVEL_SAD4)
msg += "[t_He] look[p_s()] depressed.\n" . += "[t_He] look[p_s()] depressed."
if(MOOD_LEVEL_SAD4 to MOOD_LEVEL_SAD3) if(MOOD_LEVEL_SAD4 to MOOD_LEVEL_SAD3)
msg += "[t_He] look[p_s()] very sad.\n" . += "[t_He] look[p_s()] very sad."
if(MOOD_LEVEL_SAD3 to MOOD_LEVEL_SAD2) if(MOOD_LEVEL_SAD3 to MOOD_LEVEL_SAD2)
msg += "[t_He] look[p_s()] a bit down.\n" . += "[t_He] look[p_s()] a bit down."
if(MOOD_LEVEL_HAPPY2 to MOOD_LEVEL_HAPPY3) if(MOOD_LEVEL_HAPPY2 to MOOD_LEVEL_HAPPY3)
msg += "[t_He] look[p_s()] quite happy.\n" . += "[t_He] look[p_s()] quite happy."
if(MOOD_LEVEL_HAPPY3 to MOOD_LEVEL_HAPPY4) if(MOOD_LEVEL_HAPPY3 to MOOD_LEVEL_HAPPY4)
msg += "[t_He] look[p_s()] very happy.\n" . += "[t_He] look[p_s()] very happy."
if(MOOD_LEVEL_HAPPY4 to INFINITY) if(MOOD_LEVEL_HAPPY4 to INFINITY)
msg += "[t_He] look[p_s()] ecstatic.\n" . += "[t_He] look[p_s()] ecstatic."
msg += "*---------*</span>" . += "*---------*</span>"
to_chat(user, msg)
return msg
+67 -74
View File
@@ -13,7 +13,7 @@
if(HAS_TRAIT(L, TRAIT_PROSOPAGNOSIA)) if(HAS_TRAIT(L, TRAIT_PROSOPAGNOSIA))
obscure_name = TRUE obscure_name = TRUE
var/msg = "<span class='info'>*---------*\nThis is <EM>[!obscure_name ? name : "Unknown"]</EM>!\n" . = list("<span class='info'>*---------*\nThis is <EM>[!obscure_name ? name : "Unknown"]</EM>!)"
var/list/obscured = check_obscured_slots() var/list/obscured = check_obscured_slots()
var/skipface = (wear_mask && (wear_mask.flags_inv & HIDEFACE)) || (head && (head.flags_inv & HIDEFACE)) var/skipface = (wear_mask && (wear_mask.flags_inv & HIDEFACE)) || (head && (head.flags_inv & HIDEFACE))
@@ -22,11 +22,11 @@
var/mob/living/carbon/human/H = src var/mob/living/carbon/human/H = src
var/datum/species/pref_species = H.dna.species var/datum/species/pref_species = H.dna.species
if(get_visible_name() == "Unknown") // same as flavor text, but hey it works. if(get_visible_name() == "Unknown") // same as flavor text, but hey it works.
msg += "You can't make out what species they are.\n" . += "You can't make out what species they are."
else if(skipface) else if(skipface)
msg += "You can't make out what species they are.\n" . += "You can't make out what species they are."
else else
msg += "[t_He] [t_is] a [H.dna.custom_species ? H.dna.custom_species : pref_species.name]!\n" . += "[t_He] [t_is] a [H.dna.custom_species ? H.dna.custom_species : pref_species.name]!"
//uniform //uniform
if(w_uniform && !(SLOT_W_UNIFORM in obscured)) if(w_uniform && !(SLOT_W_UNIFORM in obscured))
@@ -37,121 +37,115 @@
if(U.attached_accessory) if(U.attached_accessory)
accessory_msg += " with [icon2html(U.attached_accessory, user)] \a [U.attached_accessory]" accessory_msg += " with [icon2html(U.attached_accessory, user)] \a [U.attached_accessory]"
msg += "[t_He] [t_is] wearing [w_uniform.get_examine_string(user)][accessory_msg].\n" . += "[t_He] [t_is] wearing [w_uniform.get_examine_string(user)][accessory_msg]."
//head //head
if(head) if(head)
msg += "[t_He] [t_is] wearing [head.get_examine_string(user)] on [t_his] head.\n" . += "[t_He] [t_is] wearing [head.get_examine_string(user)] on [t_his] head."
//suit/armor //suit/armor
if(wear_suit) if(wear_suit)
msg += "[t_He] [t_is] wearing [wear_suit.get_examine_string(user)].\n" . += "[t_He] [t_is] wearing [wear_suit.get_examine_string(user)]."
//suit/armor storage //suit/armor storage
if(s_store && !(SLOT_S_STORE in obscured)) if(s_store && !(SLOT_S_STORE in obscured))
msg += "[t_He] [t_is] carrying [s_store.get_examine_string(user)] on [t_his] [wear_suit.name].\n" . += "[t_He] [t_is] carrying [s_store.get_examine_string(user)] on [t_his] [wear_suit.name]."
//back //back
if(back) if(back)
msg += "[t_He] [t_has] [back.get_examine_string(user)] on [t_his] back.\n" . += "[t_He] [t_has] [back.get_examine_string(user)] on [t_his] back."
//Hands //Hands
for(var/obj/item/I in held_items) for(var/obj/item/I in held_items)
if(!(I.item_flags & ABSTRACT)) if(!(I.item_flags & ABSTRACT))
msg += "[t_He] [t_is] holding [I.get_examine_string(user)] in [t_his] [get_held_index_name(get_held_index_of_item(I))].\n" . += "[t_He] [t_is] holding [I.get_examine_string(user)] in [t_his] [get_held_index_name(get_held_index_of_item(I))]."
//gloves //gloves
if(gloves && !(SLOT_GLOVES in obscured)) if(gloves && !(SLOT_GLOVES in obscured))
msg += "[t_He] [t_has] [gloves.get_examine_string(user)] on [t_his] hands.\n" . += "[t_He] [t_has] [gloves.get_examine_string(user)] on [t_his] hands."
else if(length(blood_DNA)) else if(length(blood_DNA))
var/hand_number = get_num_arms(FALSE) var/hand_number = get_num_arms(FALSE)
if(hand_number) if(hand_number)
msg += "<span class='warning'>[t_He] [t_has] [hand_number > 1 ? "" : "a"] blood-stained hand[hand_number > 1 ? "s" : ""]!</span>\n" . += "<span class='warning'>[t_He] [t_has] [hand_number > 1 ? "" : "a"] blood-stained hand[hand_number > 1 ? "s" : ""]!</span>"
//handcuffed?
//handcuffed? //handcuffed?
if(handcuffed) if(handcuffed)
if(istype(handcuffed, /obj/item/restraints/handcuffs/cable)) if(istype(handcuffed, /obj/item/restraints/handcuffs/cable))
msg += "<span class='warning'>[t_He] [t_is] [icon2html(handcuffed, user)] restrained with cable!</span>\n" . += "<span class='warning'>[t_He] [t_is] [icon2html(handcuffed, user)] restrained with cable!</span>"
else else
msg += "<span class='warning'>[t_He] [t_is] [icon2html(handcuffed, user)] handcuffed!</span>\n" . += "<span class='warning'>[t_He] [t_is] [icon2html(handcuffed, user)] handcuffed!</span>"
//belt //belt
if(belt) if(belt)
msg += "[t_He] [t_has] [belt.get_examine_string(user)] about [t_his] waist.\n" . += "[t_He] [t_has] [belt.get_examine_string(user)] about [t_his] waist."
//shoes //shoes
if(shoes && !(SLOT_SHOES in obscured)) if(shoes && !(SLOT_SHOES in obscured))
msg += "[t_He] [t_is] wearing [shoes.get_examine_string(user)] on [t_his] feet.\n" . += "[t_He] [t_is] wearing [shoes.get_examine_string(user)] on [t_his] feet."
//mask //mask
if(wear_mask && !(SLOT_WEAR_MASK in obscured)) if(wear_mask && !(SLOT_WEAR_MASK in obscured))
msg += "[t_He] [t_has] [wear_mask.get_examine_string(user)] on [t_his] face.\n" . += "[t_He] [t_has] [wear_mask.get_examine_string(user)] on [t_his] face."
if(wear_neck && !(SLOT_NECK in obscured)) if(wear_neck && !(SLOT_NECK in obscured))
msg += "[t_He] [t_is] wearing [wear_neck.get_examine_string(user)] around [t_his] neck.\n" . += "[t_He] [t_is] wearing [wear_neck.get_examine_string(user)] around [t_his] neck."
//eyes //eyes
if(!(SLOT_GLASSES in obscured)) if(!(SLOT_GLASSES in obscured))
if(glasses) if(glasses)
msg += "[t_He] [t_has] [glasses.get_examine_string(user)] covering [t_his] eyes.\n" . += "[t_He] [t_has] [glasses.get_examine_string(user)] covering [t_his] eyes."
else if(eye_color == BLOODCULT_EYE && iscultist(src) && HAS_TRAIT(src, TRAIT_CULT_EYES)) else if(eye_color == BLOODCULT_EYE && iscultist(src) && HAS_TRAIT(src, TRAIT_CULT_EYES))
msg += "<span class='warning'><B>[t_His] eyes are glowing an unnatural red!</B></span>\n" . += "<span class='warning'><B>[t_His] eyes are glowing an unnatural red!</B></span>"
//ears //ears
if(ears && !(SLOT_EARS in obscured)) if(ears && !(SLOT_EARS in obscured))
msg += "[t_He] [t_has] [ears.get_examine_string(user)] on [t_his] ears.\n" . += "[t_He] [t_has] [ears.get_examine_string(user)] on [t_his] ears."
//ID //ID
if(wear_id) if(wear_id)
msg += "[t_He] [t_is] wearing [wear_id.get_examine_string(user)].\n" . += "[t_He] [t_is] wearing [wear_id.get_examine_string(user)]."
//Status effects //Status effects
msg += status_effect_examines() var/effects_exam = status_effect_examines()
if(!isnull(effects_exam))
. += effects_exam
//CIT CHANGES START HERE - adds genital details to examine text //CIT CHANGES START HERE - adds genital details to examine text
if(LAZYLEN(internal_organs)) if(LAZYLEN(internal_organs))
for(var/obj/item/organ/genital/dicc in internal_organs) for(var/obj/item/organ/genital/dicc in internal_organs)
if(istype(dicc) && dicc.is_exposed()) if(istype(dicc) && dicc.is_exposed())
msg += "[dicc.desc]\n" . += "[dicc.desc]"
msg += attempt_vr(src,"examine_bellies",args) //vore Code var/cursed_stuff = attempt_vr(src,"examine_bellies",args) //vore Code
if(!isnull(cursed_stuff))
. += cursed_stuff
//END OF CIT CHANGES //END OF CIT CHANGES
//Jitters //Jitters
switch(jitteriness) switch(jitteriness)
if(300 to INFINITY) if(300 to INFINITY)
msg += "<span class='warning'><B>[t_He] [t_is] convulsing violently!</B></span>\n" . += "<span class='warning'><B>[t_He] [t_is] convulsing violently!</B></span>"
if(200 to 300) if(200 to 300)
msg += "<span class='warning'>[t_He] [t_is] extremely jittery.</span>\n" . += "<span class='warning'>[t_He] [t_is] extremely jittery.</span>"
if(100 to 200) if(100 to 200)
msg += "<span class='warning'>[t_He] [t_is] twitching ever so slightly.</span>\n" . += "<span class='warning'>[t_He] [t_is] twitching ever so slightly.</span>"
var/appears_dead = 0 var/appears_dead = 0
if(stat == DEAD || (HAS_TRAIT(src, TRAIT_FAKEDEATH))) if(stat == DEAD || (HAS_TRAIT(src, TRAIT_FAKEDEATH)))
appears_dead = 1 appears_dead = 1
if(suiciding) if(suiciding)
msg += "<span class='warning'>[t_He] appear[p_s()] to have committed suicide... there is no hope of recovery.</span>\n" . += "<span class='warning'>[t_He] appear[p_s()] to have committed suicide... there is no hope of recovery.</span>"
if(hellbound) if(hellbound)
msg += "<span class='warning'>[t_His] soul seems to have been ripped out of [t_his] body. Revival is impossible.</span>\n" . += "<span class='warning'>[t_His] soul seems to have been ripped out of [t_his] body. Revival is impossible.</span>"
msg += "<span class='deadsay'>[t_He] [t_is] limp and unresponsive; there are no signs of life" . += ""
if(getorgan(/obj/item/organ/brain)) if(getorgan(/obj/item/organ/brain) && !key && !get_ghost(FALSE, TRUE)))
if(!key) . += "<span class='deadsay'>[t_He] [t_is] limp and unresponsive; there are no signs of life and [t_his] soul has departed...</span>"
var/foundghost = 0
if(mind)
for(var/mob/dead/observer/G in GLOB.player_list)
if(G.mind == mind)
foundghost = 1
if (G.can_reenter_corpse == 0)
foundghost = 0
break
if(!foundghost) if(!foundghost)
msg += " and [t_his] soul has departed" else
msg += "...</span>\n" . += "<span class='deadsay'>[t_He] [t_is] limp and unresponsive; there are no signs of life...</span>"
if(get_bodypart(BODY_ZONE_HEAD) && !getorgan(/obj/item/organ/brain)) if(get_bodypart(BODY_ZONE_HEAD) && !getorgan(/obj/item/organ/brain))
msg += "<span class='deadsay'>It appears that [t_his] brain is missing...</span>\n" . += "<span class='deadsay'>It appears that [t_his] brain is missing...</span>"
var/temp = getBruteLoss() //no need to calculate each of these twice var/temp = getBruteLoss() //no need to calculate each of these twice
msg += "<span class='warning'>" //Everything below gets this span var/list/msg = list("<span class='warning'>") //Everything below gets this span
var/list/missing = list(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG) var/list/missing = list(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG)
var/list/disabled = list() var/list/disabled = list()
@@ -169,8 +163,7 @@
if(!(BP.get_damage(include_stamina = FALSE) >= BP.max_damage)) //Stamina is disabling the limb if(!(BP.get_damage(include_stamina = FALSE) >= BP.max_damage)) //Stamina is disabling the limb
damage_text = "limp and lifeless" damage_text = "limp and lifeless"
else else
var/more_brute = BP.brute_dam >= BP.burn_dam damage_text = (BP.brute_dam >= BP.burn_dam) ? BP.heavy_brute_msg : BP.heavy_burn_msg
damage_text = more_brute ? "broken and mangled" : "burnt and blistered"
msg += "<B>[capitalize(t_his)] [BP.name] is [damage_text]!</B>\n" msg += "<B>[capitalize(t_his)] [BP.name] is [damage_text]!</B>\n"
//stores missing limbs //stores missing limbs
@@ -334,7 +327,13 @@
if(digitalcamo) if(digitalcamo)
msg += "[t_He] [t_is] moving [t_his] body in an unnatural and blatantly inhuman manner.\n" msg += "[t_He] [t_is] moving [t_his] body in an unnatural and blatantly inhuman manner.\n"
msg += common_trait_examine()
if (length(msg)) //End of default warning span
. += "<span class='warning'>[msg.Join("")]</span>"
var/trait_exam = common_trait_examine()
if (!isnull(trait_exam))
. += trait_exam
var/traitstring = get_trait_string() var/traitstring = get_trait_string()
if(ishuman(user)) if(ishuman(user))
@@ -345,28 +344,25 @@
if(perpname) if(perpname)
var/datum/data/record/R = find_record("name", perpname, GLOB.data_core.general) var/datum/data/record/R = find_record("name", perpname, GLOB.data_core.general)
if(R) if(R)
msg += "<span class='deptradio'>Rank:</span> [R.fields["rank"]]<br>" . += "<span class='deptradio'>Rank:</span> [R.fields["rank"]]\n<a href='?src=[REF(src)];hud=1;photo_front=1'>\[Front photo\]</a><a href='?src=[REF(src)];hud=1;photo_side=1'>\[Side photo\]</a>"
msg += "<a href='?src=[REF(src)];hud=1;photo_front=1'>\[Front photo\]</a> "
msg += "<a href='?src=[REF(src)];hud=1;photo_side=1'>\[Side photo\]</a><br>"
if(istype(H.glasses, /obj/item/clothing/glasses/hud/health) || istype(CIH, /obj/item/organ/cyberimp/eyes/hud/medical)) if(istype(H.glasses, /obj/item/clothing/glasses/hud/health) || istype(CIH, /obj/item/organ/cyberimp/eyes/hud/medical))
var/cyberimp_detect var/cyberimp_detect
for(var/obj/item/organ/cyberimp/CI in internal_organs) for(var/obj/item/organ/cyberimp/CI in internal_organs)
if(CI.status == ORGAN_ROBOTIC && !CI.syndicate_implant) if(CI.status == ORGAN_ROBOTIC && !CI.syndicate_implant)
cyberimp_detect += "[name] is modified with a [CI.name].<br>" cyberimp_detect += "[name] is modified with a [CI.name]."
if(cyberimp_detect) if(cyberimp_detect)
msg += "Detected cybernetic modifications:<br>" . += "Detected cybernetic modifications:"
msg += cyberimp_detect . += cyberimp_detect
if(R) if(R)
var/health_r = R.fields["p_stat"] var/health_r = R.fields["p_stat"]
msg += "<a href='?src=[REF(src)];hud=m;p_stat=1'>\[[health_r]\]</a>" . += "<a href='?src=[REF(src)];hud=m;p_stat=1'>\[[health_r]\]</a>"
health_r = R.fields["m_stat"] health_r = R.fields["m_stat"]
msg += "<a href='?src=[REF(src)];hud=m;m_stat=1'>\[[health_r]\]</a><br>" . += "<a href='?src=[REF(src)];hud=m;m_stat=1'>\[[health_r]\]</a>"
R = find_record("name", perpname, GLOB.data_core.medical) R = find_record("name", perpname, GLOB.data_core.medical)
if(R) if(R)
msg += "<a href='?src=[REF(src)];hud=m;evaluation=1'>\[Medical evaluation\]</a><br>" . += "<a href='?src=[REF(src)];hud=m;evaluation=1'>\[Medical evaluation\]</a>"
if(traitstring) if(traitstring)
msg += "<span class='info'>Detected physiological traits:<br></span>" . += "<span class='info'>Detected physiological traits:\n[traitstring]"
msg += "<span class='info'>[traitstring]</span><br>"
@@ -379,25 +375,22 @@
if(R) if(R)
criminal = R.fields["criminal"] criminal = R.fields["criminal"]
msg += "<span class='deptradio'>Criminal status:</span> <a href='?src=[REF(src)];hud=s;status=1'>\[[criminal]\]</a>\n" . += jointext(list("<span class='deptradio'>Criminal status:</span> <a href='?src=[REF(src)];hud=s;status=1'>\[[criminal]\]</a>",
msg += "<span class='deptradio'>Security record:</span> <a href='?src=[REF(src)];hud=s;view=1'>\[View\]</a> " "<span class='deptradio'>Security record:</span> <a href='?src=[REF(src)];hud=s;view=1'>\[View\]</a>",
msg += "<a href='?src=[REF(src)];hud=s;add_crime=1'>\[Add crime\]</a> " "<a href='?src=[REF(src)];hud=s;add_crime=1'>\[Add crime\]</a>",
msg += "<a href='?src=[REF(src)];hud=s;view_comment=1'>\[View comment log\]</a> " "<a href='?src=[REF(src)];hud=s;view_comment=1'>\[View comment log\]</a>",
msg += "<a href='?src=[REF(src)];hud=s;add_comment=1'>\[Add comment\]</a>\n" "<a href='?src=[REF(src)];hud=s;add_comment=1'>\[Add comment\]</a>"), "")
else if(isobserver(user) && traitstring) else if(isobserver(user) && traitstring)
msg += "<span class='info'><b>Traits:</b> [traitstring]</span><br>" . += "<span class='info'><b>Traits:</b> [traitstring]</span>"
if(print_flavor_text()) if(print_flavor_text())
if(get_visible_name() == "Unknown") //Are we sure we know who this is? Don't show flavor text unless we can recognize them. Prevents certain metagaming with impersonation. if(get_visible_name() == "Unknown") //Are we sure we know who this is? Don't show flavor text unless we can recognize them. Prevents certain metagaming with impersonation.
msg += "...?<br>" . += "...?"
else if(skipface) //Sometimes we're not unknown, but impersonating someone in a hardsuit, let's not reveal our flavor text then either. else if(skipface) //Sometimes we're not unknown, but impersonating someone in a hardsuit, let's not reveal our flavor text then either.
msg += "...?<br>" . += "...?"
else else
msg += "[print_flavor_text()]\n" . += "[print_flavor_text()]"
msg += "*---------*</span>" . += "*---------*</span>"
to_chat(user, msg)
return msg
/mob/living/proc/status_effect_examines(pronoun_replacement) //You can include this in any mob's examine() to show the examine texts of status effects! /mob/living/proc/status_effect_examines(pronoun_replacement) //You can include this in any mob's examine() to show the examine texts of status effects!
var/list/dat = list() var/list/dat = list()
+12 -14
View File
@@ -1,26 +1,24 @@
/mob/living/silicon/ai/examine(mob/user) /mob/living/silicon/ai/examine(mob/user)
var/msg = "<span class='info'>*---------*\nThis is [icon2html(src, user)] <EM>[src]</EM>!\n" . = list("<span class='info'>*---------*\nThis is [icon2html(src, user)] <EM>[src]</EM>!")
if (stat == DEAD) if (stat == DEAD)
msg += "<span class='deadsay'>It appears to be powered-down.</span>\n" . += "<span class='deadsay'>It appears to be powered-down.</span>"
else else
msg += "<span class='warning'>" . += "<span class='warning'>"
if (getBruteLoss()) if (getBruteLoss())
if (getBruteLoss() < 30) if (getBruteLoss() < 30)
msg += "It looks slightly dented.\n" . += "It looks slightly dented."
else else
msg += "<B>It looks severely dented!</B>\n" . += "<B>It looks severely dented!</B>"
if (getFireLoss()) if (getFireLoss())
if (getFireLoss() < 30) if (getFireLoss() < 30)
msg += "It looks slightly charred.\n" . += "It looks slightly charred."
else else
msg += "<B>Its casing is melted and heat-warped!</B>\n" . += "<B>Its casing is melted and heat-warped!</B>"
msg += "</span>" . += "</span>"
if(deployed_shell) if(deployed_shell)
msg += "The wireless networking light is blinking.\n" . += "The wireless networking light is blinking."
else if (!shunted && !client) else if (!shunted && !client)
msg += "[src]Core.exe has stopped responding! NTOS is searching for a solution to the problem...\n" . += "[src]Core.exe has stopped responding! NTOS is searching for a solution to the problem..."
msg += "*---------*</span>" . += "*---------*</span>"
to_chat(user, msg) . += ..()
..()
return msg
+4 -2
View File
@@ -1,4 +1,6 @@
/mob/living/silicon/examine(mob/user) //Displays a silicon's laws to ghosts /mob/living/silicon/examine(mob/user) //Displays a silicon's laws to ghosts
. = ..()
if(laws && isobserver(user)) if(laws && isobserver(user))
to_chat(user, "<b>[src] has the following laws:</b>") . += "<b>[src] has the following laws:</b>"
laws.show_laws(user) for(var/law in laws.get_law_list(include_zeroth = TRUE))
. += law
+2 -2
View File
@@ -266,8 +266,8 @@
return TRUE return TRUE
/mob/living/silicon/pai/examine(mob/user) /mob/living/silicon/pai/examine(mob/user)
..() . = ..()
to_chat(user, "A personal AI in holochassis mode. Its master ID string seems to be [master].") . += "A personal AI in holochassis mode. Its master ID string seems to be [master]."
/mob/living/silicon/pai/Life() /mob/living/silicon/pai/Life()
if(stat == DEAD) if(stat == DEAD)
@@ -1,55 +1,53 @@
/mob/living/silicon/robot/examine(mob/user) /mob/living/silicon/robot/examine(mob/user)
var/msg = "<span class='info'>*---------*\nThis is [icon2html(src, user)] \a <EM>[src]</EM>, a [src.module.name]!\n" . = list("<span class='info'>*---------*\nThis is [icon2html(src, user)] \a <EM>[src]</EM>, a [src.module.name]!")
if(desc) if(desc)
msg += "[desc]\n" . += "[desc]"
var/obj/act_module = get_active_held_item() var/obj/act_module = get_active_held_item()
if(act_module) if(act_module)
msg += "It is holding [icon2html(act_module, user)] \a [act_module].\n" . += "It is holding [icon2html(act_module, user)] \a [act_module]."
msg += status_effect_examines() var/effects_exam = status_effect_examines()
msg += "<span class='warning'>" if(!isnull(effects_exam))
if (src.getBruteLoss()) . += effects_exam
if (src.getBruteLoss() < maxHealth*0.5) if (getBruteLoss())
msg += "It looks slightly dented.\n" if (getBruteLoss() < maxHealth*0.5)
. += "<span class='warning'>It looks slightly dented.</span>"
else else
msg += "<B>It looks severely dented!</B>\n" . += "<span class='warning'><B>It looks severely dented!</B></span>"
if (getFireLoss() || getToxLoss()) if (getFireLoss() || getToxLoss())
var/overall_fireloss = getFireLoss() + getToxLoss() var/overall_fireloss = getFireLoss() + getToxLoss()
if (overall_fireloss < maxHealth * 0.5) if (overall_fireloss < maxHealth * 0.5)
msg += "It looks slightly charred.\n" . += "<span class='warning'>It looks slightly charred.</span>"
else else
msg += "<B>It looks severely burnt and heat-warped!</B>\n" . += "<span class='warning'>It looks slightly charred.</span>"
if (src.health < -maxHealth*0.5) if (health < -maxHealth*0.5)
msg += "It looks barely operational.\n" . += "<span class='warning'>It looks barely operational.</span>"
if (src.fire_stacks < 0) if (fire_stacks < 0)
msg += "It's covered in water.\n" . += "<span class='warning'>It's covered in water.</span>"
else if (src.fire_stacks > 0) else if (fire_stacks > 0)
msg += "It's coated in something flammable.\n" . += "<span class='warning'>It's coated in something flammable.</span>"
msg += "</span>"
if(opened) if(opened)
msg += "<span class='warning'>Its cover is open and the power cell is [cell ? "installed" : "missing"].</span>\n" . += "<span class='warning'>Its cover is open and the power cell is [cell ? "installed" : "missing"].</span>"
else else
msg += "Its cover is closed[locked ? "" : ", and looks unlocked"].\n" . += "Its cover is closed[locked ? "" : ", and looks unlocked"]."
if(cell && cell.charge <= 0) if(cell && cell.charge <= 0)
msg += "<span class='warning'>Its battery indicator is blinking red!</span>\n" . += "<span class='warning'>Its battery indicator is blinking red!</span>"
if(is_servant_of_ratvar(src) && get_dist(user, src) <= 1 && !stat) //To counter pseudo-stealth by using headlamps if(is_servant_of_ratvar(src) && get_dist(user, src) <= 1 && !stat) //To counter pseudo-stealth by using headlamps
msg += "<span class='warning'>Its eyes are glowing a blazing yellow!</span>\n" . += "<span class='warning'>Its eyes are glowing a blazing yellow!</span>"
switch(stat) switch(stat)
if(CONSCIOUS) if(CONSCIOUS)
if(shell) if(shell)
msg += "It appears to be an [deployed ? "active" : "empty"] AI shell.\n" . += "It appears to be an [deployed ? "active" : "empty"] AI shell."
else if(!client) else if(!client)
msg += "It appears to be in stand-by mode.\n" //afk . += "It appears to be in stand-by mode." //afk
if(UNCONSCIOUS) if(UNCONSCIOUS)
msg += "<span class='warning'>It doesn't seem to be responding.</span>\n" . += "<span class='warning'>It doesn't seem to be responding.</span>"
if(DEAD) if(DEAD)
msg += "<span class='deadsay'>It looks like its system is corrupted and requires a reset.</span>\n" . += "<span class='deadsay'>It looks like its system is corrupted and requires a reset.</span>"
msg += "*---------*</span>" . += "*---------*</span>"
to_chat(user, msg) . += ..()
..()
return msg
@@ -206,14 +206,14 @@
return TRUE return TRUE
/mob/living/simple_animal/bot/examine(mob/user) /mob/living/simple_animal/bot/examine(mob/user)
..() . = ..()
if(health < maxHealth) if(health < maxHealth)
if(health > maxHealth/3) if(health > maxHealth/3)
to_chat(user, "[src]'s parts look loose.") . += "[src]'s parts look loose."
else else
to_chat(user, "[src]'s parts look very loose!") . += "[src]'s parts look very loose!"
else else
to_chat(user, "[src] is in pristine condition.") . += "[src] is in pristine condition."
/mob/living/simple_animal/bot/adjustHealth(amount, updating_health = TRUE, forced = FALSE) /mob/living/simple_animal/bot/adjustHealth(amount, updating_health = TRUE, forced = FALSE)
if(amount>0 && prob(10)) if(amount>0 && prob(10))
@@ -69,18 +69,13 @@
/mob/living/simple_animal/hostile/construct/examine(mob/user) /mob/living/simple_animal/hostile/construct/examine(mob/user)
var/t_He = p_they(TRUE) var/t_He = p_they(TRUE)
var/t_s = p_s() var/t_s = p_s()
var/msg = "<span class='cult'>*---------*\nThis is [icon2html(src, user)] \a <b>[src]</b>!\n" . = list("<span class='cult'>*---------*\nThis is [icon2html(src, user)] \a <b>[src]</b>!\n[desc]")
msg += "[desc]\n"
if(health < maxHealth) if(health < maxHealth)
msg += "<span class='warning'>"
if(health >= maxHealth/2) if(health >= maxHealth/2)
msg += "[t_He] look[t_s] slightly dented.\n" . += "<span class='warning'>[t_He] look[t_s] slightly dented.</span>"
else else
msg += "<b>[t_He] look[t_s] severely dented!</b>\n" . += "<span class='warning'><b>[t_He] look[t_s] severely dented!</b></span>"
msg += "</span>" . += "*---------*</span>"
msg += "*---------*</span>"
to_chat(user, msg)
/mob/living/simple_animal/hostile/construct/attack_animal(mob/living/simple_animal/M) /mob/living/simple_animal/hostile/construct/attack_animal(mob/living/simple_animal/M)
if(isconstruct(M)) //is it a construct? if(isconstruct(M)) //is it a construct?
@@ -165,44 +165,43 @@
/mob/living/simple_animal/drone/examine(mob/user) /mob/living/simple_animal/drone/examine(mob/user)
var/msg = "<span class='info'>*---------*\nThis is [icon2html(src, user)] \a <b>[src]</b>!\n" . = list("<span class='info'>*---------*\nThis is [icon2html(src, user)] \a <b>[src]</b>!")
//Hands //Hands
for(var/obj/item/I in held_items) for(var/obj/item/I in held_items)
if(!(I.item_flags & ABSTRACT)) if(!(I.item_flags & ABSTRACT))
msg += "It has [I.get_examine_string(user)] in its [get_held_index_name(get_held_index_of_item(I))].\n" . += "It has [I.get_examine_string(user)] in its [get_held_index_name(get_held_index_of_item(I))]."
//Internal storage //Internal storage
if(internal_storage && !(internal_storage.item_flags & ABSTRACT)) if(internal_storage && !(internal_storage.item_flags & ABSTRACT))
msg += "It is holding [internal_storage.get_examine_string(user)] in its internal storage.\n" . += "It is holding [internal_storage.get_examine_string(user)] in its internal storage."
//Cosmetic hat - provides no function other than looks //Cosmetic hat - provides no function other than looks
if(head && !(head.item_flags & ABSTRACT)) if(head && !(head.item_flags & ABSTRACT))
msg += "It is wearing [head.get_examine_string(user)] on its head.\n" . += "It is wearing [head.get_examine_string(user)] on its head."
//Braindead //Braindead
if(!client && stat != DEAD) if(!client && stat != DEAD)
msg += "Its status LED is blinking at a steady rate.\n" . += "Its status LED is blinking at a steady rate."
//Hacked //Hacked
if(hacked) if(hacked)
msg += "<span class='warning'>Its display is glowing red!</span>\n" . += "<span class='warning'>Its display is glowing red!</span>"
//Damaged //Damaged
if(health != maxHealth) if(health != maxHealth)
if(health > maxHealth * 0.33) //Between maxHealth and about a third of maxHealth, between 30 and 10 for normal drones if(health > maxHealth * 0.33) //Between maxHealth and about a third of maxHealth, between 30 and 10 for normal drones
msg += "<span class='warning'>Its screws are slightly loose.</span>\n" . += "<span class='warning'>Its screws are slightly loose.</span>"
else //otherwise, below about 33% else //otherwise, below about 33%
msg += "<span class='boldwarning'>Its screws are very loose!</span>\n" . += "<span class='boldwarning'>Its screws are very loose!</span>"
//Dead //Dead
if(stat == DEAD) if(stat == DEAD)
if(client) if(client)
msg += "<span class='deadsay'>A message repeatedly flashes on its display: \"REBOOT -- REQUIRED\".</span>\n" . += "<span class='deadsay'>A message repeatedly flashes on its display: \"REBOOT -- REQUIRED\".</span>"
else else
msg += "<span class='deadsay'>A message repeatedly flashes on its display: \"ERROR -- OFFLINE\".</span>\n" . += "<span class='deadsay'>A message repeatedly flashes on its display: \"ERROR -- OFFLINE\".</span>"
msg += "*---------*</span>" . += "*---------*</span>"
to_chat(user, msg)
/mob/living/simple_animal/drone/assess_threat(judgement_criteria, lasercolor = "", datum/callback/weaponcheck=null) //Secbots won't hunt maintenance drones. /mob/living/simple_animal/drone/assess_threat(judgement_criteria, lasercolor = "", datum/callback/weaponcheck=null) //Secbots won't hunt maintenance drones.
@@ -18,18 +18,16 @@
/mob/living/simple_animal/hostile/guardian/dextrous/examine(mob/user) /mob/living/simple_animal/hostile/guardian/dextrous/examine(mob/user)
if(dextrous) if(dextrous)
var/msg = "<span class='info'>*---------*\nThis is [icon2html(src)] \a <b>[src]</b>!\n" . = list("<span class='info'>*---------*\nThis is [icon2html(src)] \a <b>[src]</b>!\n[desc]")
msg += "[desc]\n"
for(var/obj/item/I in held_items) for(var/obj/item/I in held_items)
if(!(I.item_flags & ABSTRACT)) if(!(I.item_flags & ABSTRACT))
msg += "It has [I.get_examine_string(user)] in its [get_held_index_name(get_held_index_of_item(I))].\n" . += "It has [I.get_examine_string(user)] in its [get_held_index_name(get_held_index_of_item(I))]."
if(internal_storage && !(internal_storage.item_flags & ABSTRACT)) if(internal_storage && !(internal_storage.item_flags & ABSTRACT))
msg += "It is holding [internal_storage.get_examine_string(user)] in its internal storage.\n" . += "It is holding [internal_storage.get_examine_string(user)] in its internal storage."
msg += "*---------*</span>" . += "*---------*</span>"
to_chat(user, msg)
else else
..() return ..()
/mob/living/simple_animal/hostile/guardian/dextrous/Recall(forced) /mob/living/simple_animal/hostile/guardian/dextrous/Recall(forced)
if(!summoner || loc == summoner || (cooldown > world.time && !forced)) if(!summoner || loc == summoner || (cooldown > world.time && !forced))
@@ -90,6 +90,6 @@
detonate(user) detonate(user)
/obj/guardian_bomb/examine(mob/user) /obj/guardian_bomb/examine(mob/user)
stored_obj.examine(user) . = stored_obj.examine(user)
if(get_dist(user,src)<=2) if(get_dist(user,src)<=2)
to_chat(user, "<span class='holoparasite'>It glows with a strange <font color=\"[spawner.namedatum.colour]\">light</font>!</span>") . += "<span class='holoparasite'>It glows with a strange <font color=\"[spawner.namedatum.colour]\">light</font>!</span>"
@@ -77,11 +77,9 @@
/mob/living/simple_animal/hostile/poison/bees/examine(mob/user) /mob/living/simple_animal/hostile/poison/bees/examine(mob/user)
..() . = ..()
if(!beehome) if(!beehome)
to_chat(user, "<span class='warning'>This bee is homeless!</span>") . += "<span class='warning'>This bee is homeless!</span>"
/mob/living/simple_animal/hostile/poison/bees/proc/generate_bee_visuals() /mob/living/simple_animal/hostile/poison/bees/proc/generate_bee_visuals()
cut_overlays() cut_overlays()
@@ -295,7 +293,7 @@
forceMove(beehome.drop_location()) forceMove(beehome.drop_location())
else else
..() ..()
/mob/living/simple_animal/hostile/poison/bees/short /mob/living/simple_animal/hostile/poison/bees/short
desc = "These bees seem unstable and won't survive for long." desc = "These bees seem unstable and won't survive for long."
@@ -130,7 +130,7 @@
qdel(copy) qdel(copy)
/mob/living/simple_animal/hostile/boss/paper_wizard/copy/examine(mob/user) /mob/living/simple_animal/hostile/boss/paper_wizard/copy/examine(mob/user)
..() . = ..()
qdel(src) //I see through your ruse! qdel(src) //I see through your ruse!
//fancy effects //fancy effects
@@ -44,9 +44,8 @@
/mob/living/simple_animal/hostile/illusion/examine(mob/user) /mob/living/simple_animal/hostile/illusion/examine(mob/user)
if(parent_mob) if(parent_mob)
parent_mob.examine(user) return parent_mob.examine(user)
else return ..()
return ..()
/mob/living/simple_animal/hostile/illusion/AttackingTarget() /mob/living/simple_animal/hostile/illusion/AttackingTarget()
@@ -373,8 +373,8 @@ Difficulty: Very Hard
/obj/machinery/anomalous_crystal/examine(mob/user) /obj/machinery/anomalous_crystal/examine(mob/user)
. = ..() . = ..()
if(isobserver(user)) if(isobserver(user))
to_chat(user, observer_desc) . += observer_desc
to_chat(user, "It is activated by [activation_method].") . += "It is activated by [activation_method]."
/obj/machinery/anomalous_crystal/Hear(message, atom/movable/speaker, message_langs, raw_message, radio_freq, spans, message_mode) /obj/machinery/anomalous_crystal/Hear(message, atom/movable/speaker, message_langs, raw_message, radio_freq, spans, message_mode)
..() ..()
@@ -38,11 +38,11 @@
var/static/mutable_appearance/cap_dead var/static/mutable_appearance/cap_dead
/mob/living/simple_animal/hostile/mushroom/examine(mob/user) /mob/living/simple_animal/hostile/mushroom/examine(mob/user)
..() . = ..()
if(health >= maxHealth) if(health >= maxHealth)
to_chat(user, "<span class='info'>It looks healthy.</span>") . += "<span class='info'>It looks healthy.</span>"
else else
to_chat(user, "<span class='info'>It looks like it's been roughed up.</span>") . += "<span class='info'>It looks like it's been roughed up.</span>"
/mob/living/simple_animal/hostile/mushroom/Life() /mob/living/simple_animal/hostile/mushroom/Life()
..() ..()
@@ -119,9 +119,9 @@
/mob/living/simple_animal/parrot/examine(mob/user) /mob/living/simple_animal/parrot/examine(mob/user)
..() . = ..()
if(stat) if(stat)
to_chat(user, pick("This parrot is no more.", "This is a late parrot.", "This is an ex-parrot.")) . += pick("This parrot is no more.", "This is a late parrot.", "This is an ex-parrot.")
/mob/living/simple_animal/parrot/death(gibbed) /mob/living/simple_animal/parrot/death(gibbed)
if(held_item) if(held_item)
@@ -61,7 +61,7 @@
var/mood = "" // To show its face var/mood = "" // To show its face
var/mutator_used = FALSE //So you can't shove a dozen mutators into a single slime var/mutator_used = FALSE //So you can't shove a dozen mutators into a single slime
var/force_stasis = FALSE var/force_stasis = FALSE
do_footstep = TRUE do_footstep = TRUE
var/static/regex/slime_name_regex = new("\\w+ (baby|adult) slime \\(\\d+\\)") var/static/regex/slime_name_regex = new("\\w+ (baby|adult) slime \\(\\d+\\)")
@@ -408,37 +408,32 @@
return return
/mob/living/simple_animal/slime/examine(mob/user) /mob/living/simple_animal/slime/examine(mob/user)
. = list("<span class='info'>*---------*\nThis is [icon2html(src, user)] \a <EM>[src]</EM>!")
var/msg = "<span class='info'>*---------*\nThis is [icon2html(src, user)] \a <EM>[src]</EM>!\n"
if (src.stat == DEAD) if (src.stat == DEAD)
msg += "<span class='deadsay'>It is limp and unresponsive.</span>\n" . += "<span class='deadsay'>It is limp and unresponsive.</span>"
else else
if (stat == UNCONSCIOUS) // Slime stasis if (stat == UNCONSCIOUS) // Slime stasis
msg += "<span class='deadsay'>It appears to be alive but unresponsive.</span>\n" . += "<span class='deadsay'>It appears to be alive but unresponsive.</span>"
if (src.getBruteLoss()) if (getBruteLoss())
msg += "<span class='warning'>" if (getBruteLoss() < 40)
if (src.getBruteLoss() < 40) msg += "<span class='warning'>It has some punctures in its flesh!"
msg += "It has some punctures in its flesh!"
else else
msg += "<B>It has severe punctures and tears in its flesh!</B>" msg += "<span class='danger'>It has severe punctures and tears in its flesh!</span>"
msg += "</span>\n"
switch(powerlevel) switch(powerlevel)
if(2 to 3) if(2 to 3)
msg += "It is flickering gently with a little electrical activity.\n" . += "It is flickering gently with a little electrical activity."
if(4 to 5) if(4 to 5)
msg += "It is glowing gently with moderate levels of electrical activity.\n" . += "It is glowing gently with moderate levels of electrical activity."
if(6 to 9) if(6 to 9)
msg += "<span class='warning'>It is glowing brightly with high levels of electrical activity.</span>\n" . += "<span class='warning'>It is glowing brightly with high levels of electrical activity.</span>"
if(10) if(10)
msg += "<span class='warning'><B>It is radiating with massive levels of electrical activity!</B></span>\n" . += "<span class='warning'><B>It is radiating with massive levels of electrical activity!</B></span>"
msg += "*---------*</span>" . += "*---------*</span>"
to_chat(user, msg)
return
/mob/living/simple_animal/slime/proc/discipline_slime(mob/user) /mob/living/simple_animal/slime/proc/discipline_slime(mob/user)
if(stat) if(stat)
+2 -1
View File
@@ -319,7 +319,8 @@
return return
face_atom(A) face_atom(A)
A.examine(src) var/list/result = A.examine(src)
to_chat(src, result.Join("\n"))
//same as above //same as above
//note: ghosts can point, this is intended //note: ghosts can point, this is intended
@@ -202,11 +202,11 @@
return TRUE return TRUE
/obj/item/modular_computer/examine(mob/user) /obj/item/modular_computer/examine(mob/user)
..() . = ..()
if(obj_integrity <= integrity_failure) if(obj_integrity <= integrity_failure)
to_chat(user, "<span class='danger'>It is heavily damaged!</span>") . += "<span class='danger'>It is heavily damaged!</span>"
else if(obj_integrity < max_integrity) else if(obj_integrity < max_integrity)
to_chat(user, "<span class='warning'>It is damaged.</span>") . += "<span class='warning'>It is damaged.</span>"
/obj/item/modular_computer/update_icon() /obj/item/modular_computer/update_icon()
cut_overlays() cut_overlays()
@@ -22,9 +22,9 @@
var/slowdown_open = TRUE var/slowdown_open = TRUE
/obj/item/modular_computer/laptop/examine(mob/user) /obj/item/modular_computer/laptop/examine(mob/user)
..() . = ..()
if(screen_on) if(screen_on)
to_chat(user, "<span class='notice'>Alt-click to close it.</span>") . += "<span class='notice'>Alt-click to close it.</span>"
/obj/item/modular_computer/laptop/Initialize() /obj/item/modular_computer/laptop/Initialize()
. = ..() . = ..()
@@ -47,8 +47,8 @@
_has_ai = TRUE _has_ai = TRUE
/obj/machinery/modular_computer/console/preset/research/examine(mob/user) /obj/machinery/modular_computer/console/preset/research/examine(mob/user)
..() . = ..()
to_chat(user, "<span class='notice'>Alt-click to eject the intelliCard.</span>") . += "<span class='notice'>Alt-click to eject the intelliCard.</span>"
/obj/machinery/modular_computer/console/preset/research/install_programs() /obj/machinery/modular_computer/console/preset/research/install_programs()
var/obj/item/computer_hardware/hard_drive/hard_drive = cpu.all_components[MC_HDD] var/obj/item/computer_hardware/hard_drive/hard_drive = cpu.all_components[MC_HDD]
@@ -67,8 +67,8 @@
_has_printer = TRUE _has_printer = TRUE
/obj/machinery/modular_computer/console/preset/command/examine(mob/user) /obj/machinery/modular_computer/console/preset/command/examine(mob/user)
..() . = ..()
to_chat(user, "<span class='notice'>Alt-click [src] to eject the identification card.</span>") . += "<span class='notice'>Alt-click [src] to eject the identification card.</span>"
/obj/machinery/modular_computer/console/preset/command/install_programs() /obj/machinery/modular_computer/console/preset/command/install_programs()
var/obj/item/computer_hardware/hard_drive/hard_drive = cpu.all_components[MC_HDD] var/obj/item/computer_hardware/hard_drive/hard_drive = cpu.all_components[MC_HDD]
@@ -76,11 +76,11 @@
/obj/item/computer_hardware/examine(var/mob/user) /obj/item/computer_hardware/examine(var/mob/user)
. = ..() . = ..()
if(damage > damage_failure) if(damage > damage_failure)
to_chat(user, "<span class='danger'>It seems to be severely damaged!</span>") . += "<span class='danger'>It seems to be severely damaged!</span>"
else if(damage > damage_malfunction) else if(damage > damage_malfunction)
to_chat(user, "<span class='warning'>It seems to be damaged!</span>") . += "<span class='warning'>It seems to be damaged!</span>"
else if(damage) else if(damage)
to_chat(user, "<span class='notice'>It seems to be slightly damaged.</span>") . += "<span class='notice'>It seems to be slightly damaged.</span>"
// Component-side compatibility check. // Component-side compatibility check.
/obj/item/computer_hardware/proc/can_install(obj/item/modular_computer/M, mob/living/user = null) /obj/item/computer_hardware/proc/can_install(obj/item/modular_computer/M, mob/living/user = null)
@@ -11,9 +11,9 @@
/obj/item/computer_hardware/ai_slot/examine(mob/user) /obj/item/computer_hardware/ai_slot/examine(mob/user)
..() . = ..()
if(stored_card) if(stored_card)
to_chat(user, "There appears to be an intelliCard loaded. There appears to be a pinhole protecting a manual eject button. A screwdriver could probably press it.") . += "There appears to be an intelliCard loaded. There appears to be a pinhole protecting a manual eject button. A screwdriver could probably press it."
/obj/item/computer_hardware/ai_slot/on_install(obj/item/modular_computer/M, mob/living/user = null) /obj/item/computer_hardware/ai_slot/on_install(obj/item/modular_computer/M, mob/living/user = null)
M.add_verb(device_type) M.add_verb(device_type)
@@ -117,6 +117,6 @@
return return
/obj/item/computer_hardware/card_slot/examine(mob/user) /obj/item/computer_hardware/card_slot/examine(mob/user)
..() . = ..()
if(stored_card || stored_card2) if(stored_card || stored_card2)
to_chat(user, "There appears to be something loaded in the card slots.") . += "There appears to be something loaded in the card slots."
@@ -19,8 +19,8 @@
store_file(new/datum/computer_file/program/filemanager(src)) // File manager, allows text editor functions and basic file manipulation. store_file(new/datum/computer_file/program/filemanager(src)) // File manager, allows text editor functions and basic file manipulation.
/obj/item/computer_hardware/hard_drive/examine(user) /obj/item/computer_hardware/hard_drive/examine(user)
..() . = ..()
to_chat(user, "<span class='notice'>It has [max_capacity] GQ of storage capacity.</span>") . += "<span class='notice'>It has [max_capacity] GQ of storage capacity.</span>"
/obj/item/computer_hardware/hard_drive/diagnostics(var/mob/user) /obj/item/computer_hardware/hard_drive/diagnostics(var/mob/user)
..() ..()
@@ -121,7 +121,7 @@
return ..() return ..()
/obj/item/computer_hardware/hard_drive/Initialize() /obj/item/computer_hardware/hard_drive/Initialize()
. = ..() . = ..()
install_default_programs() install_default_programs()
@@ -13,8 +13,8 @@
to_chat(user, "Paper level: [stored_paper]/[max_paper].") to_chat(user, "Paper level: [stored_paper]/[max_paper].")
/obj/item/computer_hardware/printer/examine(mob/user) /obj/item/computer_hardware/printer/examine(mob/user)
..() . = ..()
to_chat(user, "<span class='notice'>Paper level: [stored_paper]/[max_paper].</span>") . += "<span class='notice'>Paper level: [stored_paper]/[max_paper].</span>"
/obj/item/computer_hardware/printer/proc/print_text(var/text_to_print, var/paper_title = "") /obj/item/computer_hardware/printer/proc/print_text(var/text_to_print, var/paper_title = "")
+2 -2
View File
@@ -78,6 +78,6 @@
candrain=!candrain candrain=!candrain
/obj/item/clothing/gloves/space_ninja/examine(mob/user) /obj/item/clothing/gloves/space_ninja/examine(mob/user)
..() . = ..()
if(HAS_TRAIT_FROM(src, TRAIT_NODROP, NINJA_SUIT_TRAIT)) if(HAS_TRAIT_FROM(src, TRAIT_NODROP, NINJA_SUIT_TRAIT))
to_chat(user, "The energy drain mechanism is <B>[candrain?"active":"inactive"]</B>.") . += "The energy drain mechanism is <B>[candrain?"active":"inactive"]</B>."
+3 -3
View File
@@ -149,12 +149,12 @@ Contents:
/obj/item/clothing/suit/space/space_ninja/examine(mob/user) /obj/item/clothing/suit/space/space_ninja/examine(mob/user)
..() . = ..()
if(s_initialized && user == affecting) if(s_initialized && user == affecting)
to_chat(user, "All systems operational. Current energy capacity: <B>[DisplayEnergy(cell.charge)]</B>.\n\ . += "All systems operational. Current energy capacity: <B>[DisplayEnergy(cell.charge)]</B>.\n\
The CLOAK-tech device is <B>[stealth?"active":"inactive"]</B>.\n\ The CLOAK-tech device is <B>[stealth?"active":"inactive"]</B>.\n\
There are <B>[s_bombs]</B> smoke bomb\s remaining.\n\ There are <B>[s_bombs]</B> smoke bomb\s remaining.\n\
There are <B>[a_boost]</B> adrenaline booster\s remaining.") There are <B>[a_boost]</B> adrenaline booster\s remaining."
/obj/item/clothing/suit/space/space_ninja/ui_action_click(mob/user, action) /obj/item/clothing/suit/space/space_ninja/ui_action_click(mob/user, action)
if(istype(action, /datum/action/item_action/initialize_ninja_suit)) if(istype(action, /datum/action/item_action/initialize_ninja_suit))
+3 -3
View File
@@ -90,12 +90,12 @@
/obj/item/paper/examine(mob/user) /obj/item/paper/examine(mob/user)
..() . = ..()
to_chat(user, "<span class='notice'>Alt-click to fold it.</span>") . += "<span class='notice'>Alt-click to fold it.</span>"
if(oui_canview(user)) if(oui_canview(user))
ui.render(user) ui.render(user)
else else
to_chat(user, "<span class='warning'>You're too far away to read it!</span>") . += "<span class='warning'>You're too far away to read it!</span>"
/obj/item/paper/proc/show_content(mob/user) /obj/item/paper/proc/show_content(mob/user)
user.examinate(src) user.examinate(src)
+3 -3
View File
@@ -116,11 +116,11 @@
return ..() return ..()
/obj/item/paper_bin/examine(mob/user) /obj/item/paper_bin/examine(mob/user)
..() . = ..()
if(total_paper) if(total_paper)
to_chat(user, "It contains " + (total_paper > 1 ? "[total_paper] papers" : " one paper")+".") . += "It contains [total_paper > 1 ? "[total_paper] papers" : " one paper"]."
else else
to_chat(user, "It doesn't contain anything.") . += "It doesn't contain anything."
/obj/item/paper_bin/update_icon() /obj/item/paper_bin/update_icon()
+2 -2
View File
@@ -118,8 +118,8 @@
H.emote("scream") H.emote("scream")
/obj/item/paper/examine(mob/user) /obj/item/paper/examine(mob/user)
..() . = ..()
to_chat(user, "<span class='notice'>Alt-click [src] to fold it into a paper plane.</span>") . += "<span class='notice'>Alt-click [src] to fold it into a paper plane.</span>"
/obj/item/paper/AltClick(mob/living/carbon/user, obj/item/I) /obj/item/paper/AltClick(mob/living/carbon/user, obj/item/I)
if(!istype(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user), NO_TK)) if(!istype(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user), NO_TK))
+3 -3
View File
@@ -43,7 +43,7 @@
/obj/item/camera/examine(mob/user) /obj/item/camera/examine(mob/user)
. = ..() . = ..()
to_chat(user, "<span class='notice'>Alt-click to change its focusing, allowing you to set how big of an area it will capture.</span>") . += "<span class='notice'>Alt-click to change its focusing, allowing you to set how big of an area it will capture.</span>"
/obj/item/camera/AltClick(mob/user) /obj/item/camera/AltClick(mob/user)
if(!user.canUseTopic(src, BE_CLOSE)) if(!user.canUseTopic(src, BE_CLOSE))
@@ -81,8 +81,8 @@
..() ..()
/obj/item/camera/examine(mob/user) /obj/item/camera/examine(mob/user)
..() . = ..()
to_chat(user, "It has [pictures_left] photos left.") . += "It has [pictures_left] photos left."
//user can be atom or mob //user can be atom or mob
/obj/item/camera/proc/can_target(atom/target, mob/user, prox_flag) /obj/item/camera/proc/can_target(atom/target, mob/user, prox_flag)
+4 -4
View File
@@ -40,8 +40,8 @@
/obj/item/wallframe/picture/examine(mob/user) /obj/item/wallframe/picture/examine(mob/user)
if(user.is_holding(src) && displayed) if(user.is_holding(src) && displayed)
displayed.show(user) displayed.show(user)
else return list()
..() return ..()
/obj/item/wallframe/picture/update_icon() /obj/item/wallframe/picture/update_icon()
cut_overlays() cut_overlays()
@@ -109,8 +109,8 @@
/obj/structure/sign/picture_frame/examine(mob/user) /obj/structure/sign/picture_frame/examine(mob/user)
if(in_range(src, user) && framed) if(in_range(src, user) && framed)
framed.show(user) framed.show(user)
else return list()
..() return ..()
/obj/structure/sign/picture_frame/attackby(obj/item/I, mob/user, params) /obj/structure/sign/picture_frame/attackby(obj/item/I, mob/user, params)
if(can_decon && (istype(I, /obj/item/screwdriver) || istype(I, /obj/item/wrench))) if(can_decon && (istype(I, /obj/item/screwdriver) || istype(I, /obj/item/wrench)))
+2 -3
View File
@@ -62,12 +62,11 @@
..() ..()
/obj/item/photo/examine(mob/user) /obj/item/photo/examine(mob/user)
..() . = ..()
if(in_range(src, user)) if(in_range(src, user))
show(user) show(user)
else else
to_chat(user, "<span class='warning'>You need to get closer to get a good look at this photo!</span>") . += "<span class='warning'>You need to get closer to get a good look at this photo!</span>"
/obj/item/photo/proc/show(mob/user) /obj/item/photo/proc/show(mob/user)
if(!istype(picture) || !picture.picture_image) if(!istype(picture) || !picture.picture_image)
+11 -11
View File
@@ -243,33 +243,33 @@
addtimer(CALLBACK(src, .proc/update), 5) addtimer(CALLBACK(src, .proc/update), 5)
/obj/machinery/power/apc/examine(mob/user) /obj/machinery/power/apc/examine(mob/user)
..() . = ..()
if(stat & BROKEN) if(stat & BROKEN)
return return
if(opened) if(opened)
if(has_electronics && terminal) if(has_electronics && terminal)
to_chat(user, "The cover is [opened==APC_COVER_REMOVED?"removed":"open"] and the power cell is [ cell ? "installed" : "missing"].") . += "The cover is [opened==APC_COVER_REMOVED?"removed":"open"] and the power cell is [ cell ? "installed" : "missing"]."
else else
to_chat(user, "It's [ !terminal ? "not" : "" ] wired up.") . += "It's [ !terminal ? "not" : "" ] wired up."
to_chat(user, "The electronics are[!has_electronics?"n't":""] installed.") . += "The electronics are[!has_electronics?"n't":""] installed."
if(user.Adjacent(src) && integration_cog) if(user.Adjacent(src) && integration_cog)
to_chat(user, "<span class='warning'>[src]'s innards have been replaced by strange brass machinery!</span>") . += "<span class='warning'>[src]'s innards have been replaced by strange brass machinery!</span>"
else else
if (stat & MAINT) if (stat & MAINT)
to_chat(user, "The cover is closed. Something is wrong with it. It doesn't work.") . += "The cover is closed. Something is wrong with it. It doesn't work."
else if (malfhack) else if (malfhack)
to_chat(user, "The cover is broken. It may be hard to force it open.") . += "The cover is broken. It may be hard to force it open."
else else
to_chat(user, "The cover is closed.") . += "The cover is closed."
if(integration_cog && is_servant_of_ratvar(user)) if(integration_cog && is_servant_of_ratvar(user))
to_chat(user, "<span class='brass'>There is an integration cog installed!</span>") . += "<span class='brass'>There is an integration cog installed!</span>"
to_chat(user, "<span class='notice'>Alt-Click the APC to [ locked ? "unlock" : "lock"] the interface.</span>") . += "<span class='notice'>Alt-Click the APC to [ locked ? "unlock" : "lock"] the interface.</span>"
if(issilicon(user)) if(issilicon(user))
to_chat(user, "<span class='notice'>Ctrl-Click the APC to switch the breaker [ operating ? "off" : "on"].</span>") . += "<span class='notice'>Ctrl-Click the APC to switch the breaker [ operating ? "off" : "on"].</span>"
// update the APC icon to show the three base states // update the APC icon to show the three base states
// also add overlays for indicator lights // also add overlays for indicator lights
+3 -3
View File
@@ -94,11 +94,11 @@
return power_used return power_used
/obj/item/stock_parts/cell/examine(mob/user) /obj/item/stock_parts/cell/examine(mob/user)
..() . = ..()
if(rigged) if(rigged)
to_chat(user, "<span class='danger'>This power cell seems to be faulty!</span>") . += "<span class='danger'>This power cell seems to be faulty!</span>"
else else
to_chat(user, "The charge meter reads [round(src.percent() )]%.") . += "The charge meter reads [round(src.percent() )]%."
/obj/item/stock_parts/cell/suicide_act(mob/user) /obj/item/stock_parts/cell/suicide_act(mob/user)
user.visible_message("<span class='suicide'>[user] is licking the electrodes of [src]! It looks like [user.p_theyre()] trying to commit suicide!</span>") user.visible_message("<span class='suicide'>[user] is licking the electrodes of [src]! It looks like [user.p_theyre()] trying to commit suicide!</span>")
+13 -14
View File
@@ -66,22 +66,21 @@
return cell return cell
/obj/structure/light_construct/examine(mob/user) /obj/structure/light_construct/examine(mob/user)
..() . = ..()
switch(src.stage) switch(src.stage)
if(1) if(1)
to_chat(user, "It's an empty frame.") . += "It's an empty frame."
if(2) if(2)
to_chat(user, "It's wired.") . += "It's wired."
if(3) if(3)
to_chat(user, "The casing is closed.") . += "The casing is closed."
if(cell_connectors) if(cell_connectors)
if(cell) if(cell)
to_chat(user, "You see [cell] inside the casing.") . += "You see [cell] inside the casing."
else else
to_chat(user, "The casing has no power cell for backup power.") . += "The casing has no power cell for backup power."
else else
to_chat(user, "<span class='danger'>This casing doesn't support power cells for backup power.</span>") . += "<span class='danger'>This casing doesn't support power cells for backup power.</span>"
return
/obj/structure/light_construct/attackby(obj/item/W, mob/user, params) /obj/structure/light_construct/attackby(obj/item/W, mob/user, params)
add_fingerprint(user) add_fingerprint(user)
@@ -393,18 +392,18 @@
// examine verb // examine verb
/obj/machinery/light/examine(mob/user) /obj/machinery/light/examine(mob/user)
..() . = ..()
switch(status) switch(status)
if(LIGHT_OK) if(LIGHT_OK)
to_chat(user, "It is turned [on? "on" : "off"].") . += "It is turned [on? "on" : "off"]."
if(LIGHT_EMPTY) if(LIGHT_EMPTY)
to_chat(user, "The [fitting] has been removed.") . += "The [fitting] has been removed."
if(LIGHT_BURNED) if(LIGHT_BURNED)
to_chat(user, "The [fitting] is burnt out.") . += "The [fitting] is burnt out."
if(LIGHT_BROKEN) if(LIGHT_BROKEN)
to_chat(user, "The [fitting] has been smashed.") . += "The [fitting] has been smashed."
if(cell) if(cell)
to_chat(user, "Its backup power charge meter reads [round((cell.charge / cell.maxcharge) * 100, 0.1)]%.") . += "Its backup power charge meter reads [round((cell.charge / cell.maxcharge) * 100, 0.1)]%."
+2 -2
View File
@@ -27,8 +27,8 @@
is_secret_monitor = TRUE is_secret_monitor = TRUE
/obj/machinery/computer/monitor/secret/examine(mob/user) /obj/machinery/computer/monitor/secret/examine(mob/user)
..() . = ..()
to_chat(user, "<span class='notice'>It's operating system seems quite outdated... It doesn't seem like it'd be compatible with the latest remote NTOS monitoring systems.</span>") . += "<span class='notice'>It's operating system seems quite outdated... It doesn't seem like it'd be compatible with the latest remote NTOS monitoring systems.</span>"
/obj/machinery/computer/monitor/Initialize() /obj/machinery/computer/monitor/Initialize()
. = ..() . = ..()
+5 -5
View File
@@ -56,8 +56,8 @@
soundloop.stop() soundloop.stop()
/obj/machinery/power/port_gen/examine(mob/user) /obj/machinery/power/port_gen/examine(mob/user)
..() . = ..()
to_chat(user, "It is[!active?"n't":""] running.") . += "It is[!active?"n't":""] running."
/obj/machinery/power/port_gen/pacman /obj/machinery/power/port_gen/pacman
name = "\improper P.A.C.M.A.N.-type portable generator" name = "\improper P.A.C.M.A.N.-type portable generator"
@@ -99,10 +99,10 @@
consumption = consumption_coeff consumption = consumption_coeff
/obj/machinery/power/port_gen/pacman/examine(mob/user) /obj/machinery/power/port_gen/pacman/examine(mob/user)
..() . = ..()
to_chat(user, "<span class='notice'>The generator has [sheets] units of [sheet_name] fuel left, producing [power_gen] per cycle.</span>") . += "<span class='notice'>The generator has [sheets] units of [sheet_name] fuel left, producing [power_gen] per cycle.</span>"
if(crit_fail) if(crit_fail)
to_chat(user, "<span class='danger'>The generator seems to have broken down.</span>") . += "<span class='danger'>The generator seems to have broken down.</span>"
/obj/machinery/power/port_gen/pacman/HasFuel() /obj/machinery/power/port_gen/pacman/HasFuel()
if(sheets >= 1 / (time_per_sheet / power_output) - sheet_left) if(sheets >= 1 / (time_per_sheet / power_output) - sheet_left)
+4 -4
View File
@@ -171,14 +171,14 @@
. = ..() . = ..()
if(active) if(active)
if(!bitcoinmining) if(!bitcoinmining)
to_chat(user, "<span class='notice'>[src]'s display states that it has stored <b>[DisplayPower(stored_power)]</b>, and is processing <b>[DisplayPower((RAD_COLLECTOR_OUTPUT)*((60 SECONDS)/SSmachines.wait))]</b> per minute. <br>The <b>plasma</b> within it's tank is being irradiated into <b>tritium</b>.</span>") . += "<span class='notice'>[src]'s display states that it has stored <b>[DisplayPower(stored_power)]</b>, and is processing <b>[DisplayPower((RAD_COLLECTOR_OUTPUT)*((60 SECONDS)/SSmachines.wait))]</b> per minute. <br>The <b>plasma</b> within it's tank is being irradiated into <b>tritium</b>.</span>"
else else
to_chat(user, "<span class='notice'>[src]'s display states that it's producing a total of <b>[(last_push*RAD_COLLECTOR_MINING_CONVERSION_RATE)*((60 SECONDS)/SSmachines.wait)]</b> research points per minute. <br>The <b>tritium</b> and <b>oxygen</b> within it's tank is being combusted into <b>carbon dioxide</b>.</span>") . += "<span class='notice'>[src]'s display states that it's producing a total of <b>[(last_push*RAD_COLLECTOR_MINING_CONVERSION_RATE)*((60 SECONDS)/SSmachines.wait)]</b> research points per minute. <br>The <b>tritium</b> and <b>oxygen</b> within it's tank is being combusted into <b>carbon dioxide</b>.</span>"
else else
if(!bitcoinmining) if(!bitcoinmining)
to_chat(user,"<span class='notice'><b>[src]'s display displays the words:</b> \"Power production mode. Please insert <b>Plasma</b>. Use a multitool to change production modes.\"</span>") . += "<span class='notice'><b>[src]'s display displays the words:</b> \"Power production mode. Please insert <b>Plasma</b>. Use a multitool to change production modes.\"</span>"
else else
to_chat(user,"<span class='notice'><b>[src]'s display displays the words:</b> \"Research point production mode. Please insert <b>Tritium</b> and <b>Oxygen</b>. Use a multitool to change production modes.\"</span>") . += "<span class='notice'><b>[src]'s display displays the words:</b> \"Research point production mode. Please insert <b>Tritium</b> and <b>Oxygen</b>. Use a multitool to change production modes.\"</span>"
/obj/machinery/power/rad_collector/obj_break(damage_flag) /obj/machinery/power/rad_collector/obj_break(damage_flag)
if(!(stat & BROKEN) && !(flags_1 & NODECONSTRUCT_1)) if(!(stat & BROKEN) && !(flags_1 & NODECONSTRUCT_1))
@@ -36,15 +36,14 @@
var/strength = null var/strength = null
/obj/structure/particle_accelerator/examine(mob/user) /obj/structure/particle_accelerator/examine(mob/user)
..() . = ..()
switch(construction_state) switch(construction_state)
if(PA_CONSTRUCTION_UNSECURED) if(PA_CONSTRUCTION_UNSECURED)
to_chat(user, "Looks like it's not attached to the flooring.") . += "Looks like it's not attached to the flooring."
if(PA_CONSTRUCTION_UNWIRED) if(PA_CONSTRUCTION_UNWIRED)
to_chat(user, "It is missing some cables.") . += "It is missing some cables."
if(PA_CONSTRUCTION_PANEL_OPEN) if(PA_CONSTRUCTION_PANEL_OPEN)
to_chat(user, "The panel is open.") . += "The panel is open."
/obj/structure/particle_accelerator/Destroy() /obj/structure/particle_accelerator/Destroy()
construction_state = PA_CONSTRUCTION_UNSECURED construction_state = PA_CONSTRUCTION_UNSECURED
@@ -257,14 +257,14 @@
popup.open() popup.open()
/obj/machinery/particle_accelerator/control_box/examine(mob/user) /obj/machinery/particle_accelerator/control_box/examine(mob/user)
..() . = ..()
switch(construction_state) switch(construction_state)
if(PA_CONSTRUCTION_UNSECURED) if(PA_CONSTRUCTION_UNSECURED)
to_chat(user, "Looks like it's not attached to the flooring.") . += "Looks like it's not attached to the flooring."
if(PA_CONSTRUCTION_UNWIRED) if(PA_CONSTRUCTION_UNWIRED)
to_chat(user, "It is missing some cables.") . += "It is missing some cables."
if(PA_CONSTRUCTION_PANEL_OPEN) if(PA_CONSTRUCTION_PANEL_OPEN)
to_chat(user, "The panel is open.") . += "The panel is open."
/obj/machinery/particle_accelerator/control_box/attackby(obj/item/W, mob/user, params) /obj/machinery/particle_accelerator/control_box/attackby(obj/item/W, mob/user, params)
+2 -2
View File
@@ -39,9 +39,9 @@
var/obj/machinery/power/terminal/terminal = null var/obj/machinery/power/terminal/terminal = null
/obj/machinery/power/smes/examine(user) /obj/machinery/power/smes/examine(user)
..() . = ..()
if(!terminal) if(!terminal)
to_chat(user, "<span class='warning'>This SMES has no power terminal!</span>") . += "<span class='warning'>This SMES has no power terminal!</span>"
/obj/machinery/power/smes/Initialize() /obj/machinery/power/smes/Initialize()
. = ..() . = ..()
+5 -11
View File
@@ -187,17 +187,11 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
return ..() return ..()
/obj/machinery/power/supermatter_crystal/examine(mob/user) /obj/machinery/power/supermatter_crystal/examine(mob/user)
..() . = ..()
if(!ishuman(user)) if (iscarbon(user))
return var/mob/living/carbon/C = user
if (!istype(C.glasses, /obj/item/clothing/glasses/meson) && (get_dist(user, src) < HALLUCINATION_RANGE(power)))
var/range = HALLUCINATION_RANGE(power) . += "<span class='danger'>You get headaches just from looking at it.</span>"
for(var/mob/living/carbon/human/H in viewers(range, src))
if(H != user)
continue
if(!istype(H.glasses, /obj/item/clothing/glasses/meson))
to_chat(H, "<span class='danger'>You get headaches just from looking at it.</span>")
return
/obj/machinery/power/supermatter_crystal/proc/get_status() /obj/machinery/power/supermatter_crystal/proc/get_status()
var/turf/T = get_turf(src) var/turf/T = get_turf(src)
+2 -2
View File
@@ -71,9 +71,9 @@
energy = 0 // ensure we dont have miniballs of miniballs energy = 0 // ensure we dont have miniballs of miniballs
/obj/singularity/energy_ball/examine(mob/user) /obj/singularity/energy_ball/examine(mob/user)
..() . = ..()
if(orbiting_balls.len) if(orbiting_balls.len)
to_chat(user, "The amount of orbiting mini-balls is [orbiting_balls.len].") . += "The amount of orbiting mini-balls is [orbiting_balls.len]."
/obj/singularity/energy_ball/proc/move_the_basket_ball(var/move_amount) /obj/singularity/energy_ball/proc/move_the_basket_ball(var/move_amount)
+3 -3
View File
@@ -86,11 +86,11 @@
qdel(src) qdel(src)
/obj/item/gun/examine(mob/user) /obj/item/gun/examine(mob/user)
..() . = ..()
if(pin) if(pin)
to_chat(user, "It has \a [pin] installed.") . += "It has \a [pin] installed."
else else
to_chat(user, "It doesn't have a firing pin installed, and won't fire.") . += "It doesn't have a firing pin installed, and won't fire."
/obj/item/gun/equipped(mob/living/user, slot) /obj/item/gun/equipped(mob/living/user, slot)
. = ..() . = ..()
+2 -2
View File
@@ -139,8 +139,8 @@
/obj/item/gun/ballistic/examine(mob/user) /obj/item/gun/ballistic/examine(mob/user)
..() . = ..()
to_chat(user, "It has [get_ammo()] round\s remaining.") . += "It has [get_ammo()] round\s remaining."
/obj/item/gun/ballistic/proc/get_ammo(countchambered = 1) /obj/item/gun/ballistic/proc/get_ammo(countchambered = 1)
var/boolets = 0 //mature var names for mature people var/boolets = 0 //mature var names for mature people
@@ -309,9 +309,9 @@
pin = /obj/item/firing_pin pin = /obj/item/firing_pin
/obj/item/gun/ballistic/automatic/l6_saw/examine(mob/user) /obj/item/gun/ballistic/automatic/l6_saw/examine(mob/user)
..() . = ..()
if(cover_open && magazine) if(cover_open && magazine)
to_chat(user, "<span class='notice'>It seems like you could use an <b>empty hand</b> to remove the magazine.</span>") . += "<span class='notice'>It seems like you could use an <b>empty hand</b> to remove the magazine.</span>"
/obj/item/gun/ballistic/automatic/l6_saw/attack_self(mob/user) /obj/item/gun/ballistic/automatic/l6_saw/attack_self(mob/user)
cover_open = !cover_open cover_open = !cover_open
@@ -81,8 +81,8 @@
return boolets return boolets
/obj/item/gun/ballistic/revolver/examine(mob/user) /obj/item/gun/ballistic/revolver/examine(mob/user)
..() . = ..()
to_chat(user, "[get_ammo(0,0)] of those are live rounds.") . += "[get_ammo(0,0)] of those are live rounds."
/obj/item/gun/ballistic/revolver/detective /obj/item/gun/ballistic/revolver/detective
name = "\improper .38 Mars Special" name = "\improper .38 Mars Special"
@@ -74,9 +74,9 @@
chambered = AC chambered = AC
/obj/item/gun/ballistic/shotgun/examine(mob/user) /obj/item/gun/ballistic/shotgun/examine(mob/user)
..() . = ..()
if (chambered) if (chambered)
to_chat(user, "A [chambered.BB ? "live" : "spent"] one is in the chamber.") . += "A [chambered.BB ? "live" : "spent"] one is in the chamber."
/obj/item/gun/ballistic/shotgun/lethal /obj/item/gun/ballistic/shotgun/lethal
mag_type = /obj/item/ammo_box/magazine/internal/shot/lethal mag_type = /obj/item/ammo_box/magazine/internal/shot/lethal
@@ -143,8 +143,8 @@
. = ..() . = ..()
/obj/item/gun/ballistic/shotgun/boltaction/examine(mob/user) /obj/item/gun/ballistic/shotgun/boltaction/examine(mob/user)
..() . = ..()
to_chat(user, "The bolt is [bolt_open ? "open" : "closed"].") . += "The bolt is [bolt_open ? "open" : "closed"].")
/obj/item/gun/ballistic/shotgun/boltaction/enchanted /obj/item/gun/ballistic/shotgun/boltaction/enchanted
name = "enchanted bolt action rifle" name = "enchanted bolt action rifle"
@@ -231,8 +231,8 @@
. = ..() . = ..()
/obj/item/gun/ballistic/shotgun/automatic/combat/compact/examine(mob/user) /obj/item/gun/ballistic/shotgun/automatic/combat/compact/examine(mob/user)
..() . = ..()
to_chat(user, "<span class='notice'>Alt-click to toggle the stock.</span>") . += "<span class='notice'>Alt-click to toggle the stock.</span>"
/obj/item/gun/ballistic/shotgun/automatic/combat/compact/proc/toggle_stock(mob/living/user) /obj/item/gun/ballistic/shotgun/automatic/combat/compact/proc/toggle_stock(mob/living/user)
stock = !stock stock = !stock
@@ -263,9 +263,8 @@
var/obj/item/ammo_box/magazine/internal/shot/alternate_magazine var/obj/item/ammo_box/magazine/internal/shot/alternate_magazine
/obj/item/gun/ballistic/shotgun/automatic/dual_tube/examine(mob/user) /obj/item/gun/ballistic/shotgun/automatic/dual_tube/examine(mob/user)
..()
to_chat(user, "<span class='notice'>Alt-click to pump it.</span>")
. = ..() . = ..()
. += "<span class='notice'>Alt-click to pump it.</span>")
/obj/item/gun/ballistic/shotgun/automatic/dual_tube/Initialize() /obj/item/gun/ballistic/shotgun/automatic/dual_tube/Initialize()
. = ..() . = ..()
@@ -61,12 +61,12 @@
cut_overlays() cut_overlays()
/obj/item/gun/energy/kinetic_accelerator/examine(mob/user) /obj/item/gun/energy/kinetic_accelerator/examine(mob/user)
..() . = ..()
if(max_mod_capacity) if(max_mod_capacity)
to_chat(user, "<b>[get_remaining_mod_capacity()]%</b> mod capacity remaining.") . += "<b>[get_remaining_mod_capacity()]%</b> mod capacity remaining."
for(var/A in get_modkits()) for(var/A in get_modkits())
var/obj/item/borg/upgrade/modkit/M = A var/obj/item/borg/upgrade/modkit/M = A
to_chat(user, "<span class='notice'>There is \a [M] installed, using <b>[M.cost]%</b> capacity.</span>") . += "<span class='notice'>There is \a [M] installed, using <b>[M.cost]%</b> capacity.</span>"
/obj/item/gun/energy/kinetic_accelerator/crowbar_act(mob/living/user, obj/item/I) /obj/item/gun/energy/kinetic_accelerator/crowbar_act(mob/living/user, obj/item/I)
. = TRUE . = TRUE
@@ -276,8 +276,8 @@
var/minebot_exclusive = FALSE var/minebot_exclusive = FALSE
/obj/item/borg/upgrade/modkit/examine(mob/user) /obj/item/borg/upgrade/modkit/examine(mob/user)
..() . = ..()
to_chat(user, "<span class='notice'>Occupies <b>[cost]%</b> of mod capacity.</span>") . += "<span class='notice'>Occupies <b>[cost]%</b> of mod capacity.</span>"
/obj/item/borg/upgrade/modkit/attackby(obj/item/A, mob/user) /obj/item/borg/upgrade/modkit/attackby(obj/item/A, mob/user)
if(istype(A, /obj/item/gun/energy/kinetic_accelerator) && !issilicon(user)) if(istype(A, /obj/item/gun/energy/kinetic_accelerator) && !issilicon(user))
@@ -135,9 +135,9 @@
AddComponent(/datum/component/butchering, 25, 105, 0, 'sound/weapons/plasma_cutter.ogg') AddComponent(/datum/component/butchering, 25, 105, 0, 'sound/weapons/plasma_cutter.ogg')
/obj/item/gun/energy/plasmacutter/examine(mob/user) /obj/item/gun/energy/plasmacutter/examine(mob/user)
..() . = ..()
if(cell) if(cell)
to_chat(user, "<span class='notice'>[src] is [round(cell.percent())]% charged.</span>") . += "<span class='notice'>[src] is [round(cell.percent())]% charged.</span>"
/obj/item/gun/energy/plasmacutter/attackby(obj/item/I, mob/user) /obj/item/gun/energy/plasmacutter/attackby(obj/item/I, mob/user)
if(istype(I, /obj/item/stack/sheet/mineral/plasma)) if(istype(I, /obj/item/stack/sheet/mineral/plasma))
+2 -2
View File
@@ -18,8 +18,8 @@
return ..() return ..()
/obj/item/gun/magic/wand/examine(mob/user) /obj/item/gun/magic/wand/examine(mob/user)
..() . = ..()
to_chat(user, "Has [charges] charge\s remaining.") . += "Has [charges] charge\s remaining."
/obj/item/gun/magic/wand/update_icon() /obj/item/gun/magic/wand/update_icon()
icon_state = "[initial(icon_state)][charges ? "" : "-drained"]" icon_state = "[initial(icon_state)][charges ? "" : "-drained"]"
@@ -13,8 +13,8 @@
materials = list(MAT_METAL=2000) materials = list(MAT_METAL=2000)
/obj/item/gun/grenadelauncher/examine(mob/user) /obj/item/gun/grenadelauncher/examine(mob/user)
..() . = ..()
to_chat(user, "[grenades.len] / [max_grenades] grenades loaded.") . += "[grenades.len] / [max_grenades] grenades loaded."
/obj/item/gun/grenadelauncher/attackby(obj/item/I, mob/user, params) /obj/item/gun/grenadelauncher/attackby(obj/item/I, mob/user, params)
@@ -30,8 +30,8 @@
recharge_newshot() recharge_newshot()
/obj/item/gun/syringe/examine(mob/user) /obj/item/gun/syringe/examine(mob/user)
..() . = ..()
to_chat(user, "Can hold [max_syringes] syringe\s. Has [syringes.len] syringe\s remaining.") . += "Can hold [max_syringes] syringe\s. Has [syringes.len] syringe\s remaining."
/obj/item/gun/syringe/attack_self(mob/living/user) /obj/item/gun/syringe/attack_self(mob/living/user)
if(!syringes.len) if(!syringes.len)
@@ -88,20 +88,21 @@
return ..() return ..()
/obj/machinery/chem_dispenser/examine(mob/user) /obj/machinery/chem_dispenser/examine(mob/user)
..() . = ..()
if(panel_open) if(panel_open)
to_chat(user, "<span class='notice'>[src]'s maintenance hatch is open!</span>") . += "<span class='notice'>[src]'s maintenance hatch is open!</span>"
if(in_range(user, src) || isobserver(user)) if(in_range(user, src) || isobserver(user))
to_chat(user, "<span class='notice'>The status display reads: <br>Recharging <b>[recharge_amount]</b> power units per interval.<br>Power efficiency increased by <b>[(powerefficiency*1000)-100]%</b>.<span>") . += "<span class='notice'>The status display reads: <br>Recharging <b>[recharge_amount]</b> power units per interval.<br>Power efficiency increased by <b>[(powerefficiency*1000)-100]%</b>.<span>"
switch(macrotier) switch(macrotier)
if(1) if(1)
to_chat(user, "<span class='notice'>Macro granularity at <b>5u</b>.<span>") . += "<span class='notice'>Macro granularity at <b>5u</b>.<span>"
if(2) if(2)
to_chat(user, "<span class='notice'>Macro granularity at <b>3u</b>.<span>") . += "<span class='notice'>Macro granularity at <b>3u</b>.<span>"
if(3) if(3)
to_chat(user, "<span class='notice'>Macro granularity at <b>2u</b>.<span>") . += "<span class='notice'>Macro granularity at <b>2u</b>.<span>"
if(4) if(4)
to_chat(user, "<span class='notice'>Macro granularity at <b>1u</b>.<span>") . += "<span class='notice'>Macro granularity at <b>1u</b>.<span>"
/obj/machinery/chem_dispenser/process() /obj/machinery/chem_dispenser/process()
if (recharge_counter >= 4) if (recharge_counter >= 4)
if(!is_operational()) if(!is_operational())
@@ -191,27 +191,27 @@
/obj/machinery/reagentgrinder/examine(mob/user) /obj/machinery/reagentgrinder/examine(mob/user)
. = ..() . = ..()
if(!in_range(user, src) && !issilicon(user) && !isobserver(user)) if(!in_range(user, src) && !issilicon(user) && !isobserver(user))
to_chat(user, "<span class='warning'>You're too far away to examine [src]'s contents and display!</span>") . += "<span class='warning'>You're too far away to examine [src]'s contents and display!</span>"
return return
if(operating) if(operating)
to_chat(user, "<span class='warning'>\The [src] is operating.</span>") . += "<span class='warning'>\The [src] is operating.</span>"
return return
if(beaker || length(holdingitems)) if(beaker || length(holdingitems))
to_chat(user, "<span class='notice'>\The [src] contains:</span>") . += "<span class='notice'>\The [src] contains:</span>"
if(beaker) if(beaker)
to_chat(user, "<span class='notice'>- \A [beaker].</span>") . += "<span class='notice'>- \A [beaker].</span>"
for(var/i in holdingitems) for(var/i in holdingitems)
var/obj/item/O = i var/obj/item/O = i
to_chat(user, "<span class='notice'>- \A [O.name].</span>") . += "<span class='notice'>- \A [O.name].</span>"
if(!(stat & (NOPOWER|BROKEN))) if(!(stat & (NOPOWER|BROKEN)))
to_chat(user, "<span class='notice'>The status display reads:</span>") . += "<span class='notice'>The status display reads:</span>"
to_chat(user, "<span class='notice'>- Grinding reagents at <b>[speed*100]%</b>.<span>") . += "<span class='notice'>- Grinding reagents at <b>[speed*100]%</b>.<span>"
if(beaker) if(beaker)
for(var/datum/reagent/R in beaker.reagents.reagent_list) for(var/datum/reagent/R in beaker.reagents.reagent_list)
to_chat(user, "<span class='notice'>- [R.volume] units of [R.name].</span>") . += "<span class='notice'>- [R.volume] units of [R.name].</span>"
/obj/machinery/reagentgrinder/proc/eject(mob/user) /obj/machinery/reagentgrinder/proc/eject(mob/user)
for(var/i in holdingitems) for(var/i in holdingitems)
@@ -173,7 +173,7 @@ GLOBAL_LIST_INIT(food_reagents, build_reagents_to_food()) //reagentid = related
/obj/item/paper/secretrecipe/examine(mob/user) //Extra secret /obj/item/paper/secretrecipe/examine(mob/user) //Extra secret
if(isobserver(user)) if(isobserver(user))
return return list()
. = ..() . = ..()
/obj/item/paper/secretrecipe/Initialize() /obj/item/paper/secretrecipe/Initialize()
@@ -124,9 +124,8 @@ Borg Hypospray
return return
/obj/item/reagent_containers/borghypo/examine(mob/user) /obj/item/reagent_containers/borghypo/examine(mob/user)
usr = user . = ..()
..() . += DescribeContents() //Because using the standardized reagents datum was just too cool for whatever fuckwit wrote this
DescribeContents() //Because using the standardized reagents datum was just too cool for whatever fuckwit wrote this
/obj/item/reagent_containers/borghypo/proc/DescribeContents() /obj/item/reagent_containers/borghypo/proc/DescribeContents()
var/empty = 1 var/empty = 1
@@ -134,11 +133,11 @@ Borg Hypospray
for(var/datum/reagents/RS in reagent_list) for(var/datum/reagents/RS in reagent_list)
var/datum/reagent/R = locate() in RS.reagent_list var/datum/reagent/R = locate() in RS.reagent_list
if(R) if(R)
to_chat(usr, "<span class='notice'>It currently has [R.volume] unit\s of [R.name] stored.</span>") . += "<span class='notice'>It currently has [R.volume] unit\s of [R.name] stored.</span>"
empty = 0 empty = 0
if(empty) if(empty)
to_chat(usr, "<span class='warning'>It is currently empty! Allow some time for the internal syntheszier to produce more.</span>") . += "<span class='warning'>It is currently empty! Allow some time for the internal syntheszier to produce more.</span>"
/obj/item/reagent_containers/borghypo/hacked /obj/item/reagent_containers/borghypo/hacked
icon_state = "borghypo_s" icon_state = "borghypo_s"
@@ -121,11 +121,11 @@
icon_state = "[initial(icon_state)]0" icon_state = "[initial(icon_state)]0"
/obj/item/reagent_containers/hypospray/medipen/examine() /obj/item/reagent_containers/hypospray/medipen/examine()
..() . = ..()
if(reagents && reagents.reagent_list.len) if(reagents && reagents.reagent_list.len)
to_chat(usr, "<span class='notice'>It is currently loaded.</span>") . += "<span class='notice'>It is currently loaded.</span>"
else else
to_chat(usr, "<span class='notice'>It is spent.</span>") . += "<span class='notice'>It is spent.</span>"
/obj/item/reagent_containers/hypospray/medipen/stimulants /obj/item/reagent_containers/hypospray/medipen/stimulants
name = "illegal stimpack medipen" name = "illegal stimpack medipen"
@@ -296,10 +296,10 @@
/obj/item/hypospray/mkii/examine(mob/user) /obj/item/hypospray/mkii/examine(mob/user)
. = ..() . = ..()
if(vial) if(vial)
to_chat(user, "[vial] has [vial.reagents.total_volume]u remaining.") . += "[vial] has [vial.reagents.total_volume]u remaining."
else else
to_chat(user, "It has no vial loaded in.") . += "It has no vial loaded in."
to_chat(user, "[src] is set to [mode ? "Inject" : "Spray"] contents on application.") . += "[src] is set to [mode ? "Inject" : "Spray"] contents on application."
/obj/item/hypospray/mkii/proc/unload_hypo(obj/item/I, mob/user) /obj/item/hypospray/mkii/proc/unload_hypo(obj/item/I, mob/user)
if((istype(I, /obj/item/reagent_containers/glass/bottle/vial))) if((istype(I, /obj/item/reagent_containers/glass/bottle/vial)))
@@ -23,7 +23,7 @@
/obj/item/reagent_containers/rag/examine(mob/user) /obj/item/reagent_containers/rag/examine(mob/user)
. = ..() . = ..()
if(reagents.total_volume) if(reagents.total_volume)
to_chat(user, "<span class='notice'>Alt-Click to squeeze the liquids out of it.</span>") . += "<span class='notice'>Alt-Click to squeeze the liquids out of it.</span>"
/obj/item/reagent_containers/rag/afterattack(atom/A as obj|turf|area, mob/user,proximity) /obj/item/reagent_containers/rag/afterattack(atom/A as obj|turf|area, mob/user,proximity)
. = ..() . = ..()
+4 -4
View File
@@ -71,13 +71,13 @@
var/paper_cups = 25 //Paper cups left from the cooler var/paper_cups = 25 //Paper cups left from the cooler
/obj/structure/reagent_dispensers/water_cooler/examine(mob/user) /obj/structure/reagent_dispensers/water_cooler/examine(mob/user)
..() . = ..()
if (paper_cups > 1) if (paper_cups > 1)
to_chat(user, "There are [paper_cups] paper cups left.") . += "There are [paper_cups] paper cups left."
else if (paper_cups == 1) else if (paper_cups == 1)
to_chat(user, "There is one paper cup left.") . += "There is one paper cup left."
else else
to_chat(user, "There are no paper cups left.") . += "There are no paper cups left."
/obj/structure/reagent_dispensers/water_cooler/attack_hand(mob/living/user) /obj/structure/reagent_dispensers/water_cooler/attack_hand(mob/living/user)
. = ..() . = ..()
@@ -50,13 +50,13 @@
sortTypes |= n sortTypes |= n
/obj/structure/disposalpipe/sorting/mail/examine(mob/user) /obj/structure/disposalpipe/sorting/mail/examine(mob/user)
..() . = ..()
if(sortTypes.len) if(sortTypes.len)
to_chat(user, "It is tagged with the following tags:") . += "It is tagged with the following tags:"
for(var/t in sortTypes) for(var/t in sortTypes)
to_chat(user, "\t[GLOB.TAGGERLOCATIONS[t]].") . += "\t[GLOB.TAGGERLOCATIONS[t]]."
else else
to_chat(user, "It has no sorting tags set.") . += "It has no sorting tags set."
/obj/structure/disposalpipe/sorting/mail/attackby(obj/item/I, mob/user, params) /obj/structure/disposalpipe/sorting/mail/attackby(obj/item/I, mob/user, params)
@@ -18,7 +18,7 @@
/obj/item/nanite_hijacker/examine(mob/user) /obj/item/nanite_hijacker/examine(mob/user)
. = ..() . = ..()
if(disk) if(disk)
to_chat(user, "<span class='notice'>Alt-click [src] to eject the disk.</span>") . += "<span class='notice'>Alt-click [src] to eject the disk.</span>"
/obj/item/nanite_hijacker/attackby(obj/item/I, mob/user) /obj/item/nanite_hijacker/attackby(obj/item/I, mob/user)
if(istype(I, /obj/item/disk/nanite_program)) if(istype(I, /obj/item/disk/nanite_program))

Some files were not shown because too many files have changed in this diff Show More