diff --git a/code/game/objects/items/devices/scanners/health_analyzer.dm b/code/game/objects/items/devices/scanners/health_analyzer.dm
index 894f20c1534..1f75ec1b4d7 100644
--- a/code/game/objects/items/devices/scanners/health_analyzer.dm
+++ b/code/game/objects/items/devices/scanners/health_analyzer.dm
@@ -389,22 +389,22 @@
if (blood_type.restoration_chem == /datum/reagent/iron)
recommendation += "[/datum/reagent/medicine/salglu_solution::name]"
if (length(recommendation))
- recommendation += "[blood_type.get_blood_name()] transufion"
+ recommendation += "[blood_type.get_blood_name()] transfusion"
else
- recommendation += "immediate [blood_type.get_blood_name()] transufion"
+ recommendation += "immediate [blood_type.get_blood_name()] transfusion"
level_format = conditional_tooltip(level_format, "Recommendation: [english_list(recommendation, and_text = " or ")].", tochat)
else
level_format = "[blood_percent]%, [cached_blood_volume] cl"
if (blood_type.get_type())
- blood_type_format = "type: [blood_type.get_type()]"
+ blood_type_format = "[blood_type.get_type()]"
if(tochat && length(blood_type.compatible_types))
var/list/compatible_types_readable = list()
for(var/datum/blood_type/comp_blood_type as anything in blood_type.compatible_types)
compatible_types_readable |= initial(comp_blood_type.name)
blood_type_format = span_tooltip("Can receive from types [english_list(compatible_types_readable)].", blood_type_format)
- render_list += "[blood_type.get_blood_name()] level: [level_format], [blood_type_format]
"
+ render_list += "[blood_type.get_blood_name()] level: [level_format] [blood_type_format]
"
var/blood_alcohol_content = target.get_blood_alcohol_content()
if(blood_alcohol_content > 0)
@@ -414,6 +414,27 @@
else
render_list += "[blood_type?.get_blood_name() || "Blood"] alcohol content: [blood_alcohol_content]%
"
+ // Ethereal Charge
+ if(istype(target.get_organ_slot(ORGAN_SLOT_STOMACH), /obj/item/organ/stomach/ethereal))
+ var/obj/item/organ/stomach/ethereal/battery_stomach = target.get_organ_slot(ORGAN_SLOT_STOMACH)
+ var/charge = battery_stomach.cell.charge
+ var/charge_dangerous = charge > ETHEREAL_CHARGE_FULL || charge < ETHEREAL_CHARGE_LOWPOWER
+ var/charge_format = "[display_power(charge)] / [display_power(ETHEREAL_CHARGE_FULL)]"
+
+ if(charge_dangerous)
+ var/recommendation = "Recommendation: "
+ switch(charge)
+ if(-INFINITY to ETHEREAL_CHARGE_LOWPOWER)
+ recommendation += "charging by LE-fortified food"
+ if(ETHEREAL_CHARGE_FULL to ETHEREAL_CHARGE_OVERLOAD)
+ recommendation += "discharge into nearest undercapacity APC"
+ if(ETHEREAL_CHARGE_OVERLOAD to ETHEREAL_CHARGE_DANGEROUS)
+ recommendation += "preparation for violent electrocardiac discharge event"
+ recommendation = uppertext(recommendation)
+ charge_format = span_tooltip("[recommendation] followed with toxins treatment.", charge_format)
+
+ render_list += "Electrical charge: [charge_format]
"
+
//Diseases
var/disease_hr = FALSE
for(var/datum/disease/disease as anything in target.diseases)
diff --git a/code/modules/surgery/organs/internal/stomach/stomach_ethereal.dm b/code/modules/surgery/organs/internal/stomach/stomach_ethereal.dm
index aea5173ae86..6255b5dec3d 100644
--- a/code/modules/surgery/organs/internal/stomach/stomach_ethereal.dm
+++ b/code/modules/surgery/organs/internal/stomach/stomach_ethereal.dm
@@ -25,11 +25,13 @@
. = ..()
RegisterSignal(stomach_owner, COMSIG_PROCESS_BORGCHARGER_OCCUPANT, PROC_REF(charge))
RegisterSignal(stomach_owner, COMSIG_LIVING_ELECTROCUTE_ACT, PROC_REF(on_electrocute))
+ RegisterSignal(stomach_owner, COMSIG_ATOM_TOOL_ACT(TOOL_MULTITOOL), PROC_REF(on_multitool_act))
/obj/item/organ/stomach/ethereal/on_mob_remove(mob/living/carbon/stomach_owner)
. = ..()
UnregisterSignal(stomach_owner, COMSIG_PROCESS_BORGCHARGER_OCCUPANT)
UnregisterSignal(stomach_owner, COMSIG_LIVING_ELECTROCUTE_ACT)
+ UnregisterSignal(stomach_owner, COMSIG_ATOM_TOOL_ACT(TOOL_MULTITOOL))
stomach_owner.clear_mood_event("charge")
stomach_owner.clear_alert(ALERT_ETHEREAL_CHARGE)
stomach_owner.clear_alert(ALERT_ETHEREAL_OVERCHARGE)
@@ -49,6 +51,24 @@
adjust_charge(shock_damage * siemens_coeff * 2)
to_chat(owner, span_notice("You absorb some of the shock into your body!"))
+/obj/item/organ/stomach/ethereal/proc/on_multitool_act(atom/source, mob/user, obj/item/tool)
+ SIGNAL_HANDLER
+
+ return multitool_act(user, tool)
+
+/obj/item/organ/stomach/ethereal/multitool_act(mob/living/user, obj/item/tool)
+ . = ..()
+ // Intentionally formatted in the exact same way as multitooling a cable for comedic effect.
+ // It's as if the multitool is mistaking the ethereal/biological battery for a cable.
+ var/power_info
+ if(cell.charge > 0)
+ power_info = span_danger("Total power: [display_power(cell.charge)]\nLoad: [(owner && (owner.stat != DEAD)) ? display_power(ETHEREAL_DISCHARGE_RATE) : 0]\nExcess power: [display_power(max(0, (cell.charge - ETHEREAL_CHARGE_FULL)))]")
+ else
+ power_info = span_danger("The [owner ? owner.name : name] is not powered.")
+
+ to_chat(user, power_info)
+ return ITEM_INTERACT_SUCCESS
+
/**Changes the energy of the crystal stomach.
* Args:
* - amount: The change of the energy, in joules.
diff --git a/strings/tips.txt b/strings/tips.txt
index 7b7137fa0b2..84e366ffb5b 100644
--- a/strings/tips.txt
+++ b/strings/tips.txt
@@ -325,6 +325,7 @@ You can use :I / .I to speak through any intercom within arm's reach. This allow
You can use :L / .L or :R / .R to speak through an item being held in your left or right hand respectively. This allows you to talk into a station-bounced radio without manually turning on its microphone, or even to pretend to be a toy!
You can use a machine in the vault to deposit cash or rob Cargo's department funds.
You can use a multitool in your hand to track the area's local APC.
+You can use a multitool on an ethereal to check their charge!
You can use a screwdriver to remove an encryption key from a radio headset. The key can then be installed into your own headset, an intercom, or even a station-bounced radio, allowing you to eavesdrop on secure communications.
You can use an upgraded microwave to charge your PDA!
You don't need to destroy a Spacecoin machine to make your funds stop draining. Swiping your ID on it will stop the withdrawal.