mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-23 21:18:37 +01:00
Refactors most spans into span procs (#59645)
Converts most spans into span procs. Mostly used regex for this and sorted out any compile time errors afterwards so there could be some bugs. Was initially going to do defines, but ninja said to make it into a proc, and if there's any overhead, they can easily be changed to defines. Makes it easier to control the formatting and prevents typos when creating spans as it'll runtime if you misspell instead of silently failing. Reduces the code you need to write when writing spans, as you don't need to close the span as that's automatically handled by the proc. (Note from Lemon: This should be converted to defines once we update the minimum version to 514. Didn't do it now because byond pain and such)
This commit is contained in:
@@ -25,26 +25,26 @@
|
||||
time = 125
|
||||
|
||||
/datum/surgery_step/fold_cortex/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You start folding [target]'s outer cerebral cortex into a fractal pattern.</span>",
|
||||
"<span class='notice'>[user] starts folding [target]'s outer cerebral cortex into a fractal pattern.</span>",
|
||||
"<span class='notice'>[user] begins to perform surgery on [target]'s brain.</span>")
|
||||
display_results(user, target, span_notice("You start folding [target]'s outer cerebral cortex into a fractal pattern."),
|
||||
span_notice("[user] starts folding [target]'s outer cerebral cortex into a fractal pattern."),
|
||||
span_notice("[user] begins to perform surgery on [target]'s brain."))
|
||||
|
||||
/datum/surgery_step/fold_cortex/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
|
||||
display_results(user, target, "<span class='notice'>You fold [target]'s outer cerebral cortex into a fractal pattern!</span>",
|
||||
"<span class='notice'>[user] folds [target]'s outer cerebral cortex into a fractal pattern!</span>",
|
||||
"<span class='notice'>[user] completes the surgery on [target]'s brain.</span>")
|
||||
display_results(user, target, span_notice("You fold [target]'s outer cerebral cortex into a fractal pattern!"),
|
||||
span_notice("[user] folds [target]'s outer cerebral cortex into a fractal pattern!"),
|
||||
span_notice("[user] completes the surgery on [target]'s brain."))
|
||||
new /datum/bioware/cortex_fold(target)
|
||||
return ..()
|
||||
|
||||
/datum/surgery_step/fold_cortex/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
if(target.getorganslot(ORGAN_SLOT_BRAIN))
|
||||
display_results(user, target, "<span class='warning'>You screw up, damaging the brain!</span>",
|
||||
"<span class='warning'>[user] screws up, damaging the brain!</span>",
|
||||
"<span class='notice'>[user] completes the surgery on [target]'s brain.</span>")
|
||||
display_results(user, target, span_warning("You screw up, damaging the brain!"),
|
||||
span_warning("[user] screws up, damaging the brain!"),
|
||||
span_notice("[user] completes the surgery on [target]'s brain."))
|
||||
target.adjustOrganLoss(ORGAN_SLOT_BRAIN, 60)
|
||||
target.gain_trauma_type(BRAIN_TRAUMA_SEVERE, TRAUMA_RESILIENCE_LOBOTOMY)
|
||||
else
|
||||
user.visible_message("<span class='warning'>[user] suddenly notices that the brain [user.p_they()] [user.p_were()] working on is not there anymore.</span>", "<span class='warning'>You suddenly notice that the brain you were working on is not there anymore.</span>")
|
||||
user.visible_message(span_warning("[user] suddenly notices that the brain [user.p_they()] [user.p_were()] working on is not there anymore."), span_warning("You suddenly notice that the brain you were working on is not there anymore."))
|
||||
return FALSE
|
||||
|
||||
/datum/bioware/cortex_fold
|
||||
|
||||
@@ -25,26 +25,26 @@
|
||||
time = 125
|
||||
|
||||
/datum/surgery_step/imprint_cortex/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You start carving [target]'s outer cerebral cortex into a self-imprinting pattern.</span>",
|
||||
"<span class='notice'>[user] starts carving [target]'s outer cerebral cortex into a self-imprinting pattern.</span>",
|
||||
"<span class='notice'>[user] begins to perform surgery on [target]'s brain.</span>")
|
||||
display_results(user, target, span_notice("You start carving [target]'s outer cerebral cortex into a self-imprinting pattern."),
|
||||
span_notice("[user] starts carving [target]'s outer cerebral cortex into a self-imprinting pattern."),
|
||||
span_notice("[user] begins to perform surgery on [target]'s brain."))
|
||||
|
||||
/datum/surgery_step/imprint_cortex/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
|
||||
display_results(user, target, "<span class='notice'>You reshape [target]'s outer cerebral cortex into a self-imprinting pattern!</span>",
|
||||
"<span class='notice'>[user] reshapes [target]'s outer cerebral cortex into a self-imprinting pattern!</span>",
|
||||
"<span class='notice'>[user] completes the surgery on [target]'s brain.</span>")
|
||||
display_results(user, target, span_notice("You reshape [target]'s outer cerebral cortex into a self-imprinting pattern!"),
|
||||
span_notice("[user] reshapes [target]'s outer cerebral cortex into a self-imprinting pattern!"),
|
||||
span_notice("[user] completes the surgery on [target]'s brain."))
|
||||
new /datum/bioware/cortex_imprint(target)
|
||||
return ..()
|
||||
|
||||
/datum/surgery_step/imprint_cortex/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
if(target.getorganslot(ORGAN_SLOT_BRAIN))
|
||||
display_results(user, target, "<span class='warning'>You screw up, damaging the brain!</span>",
|
||||
"<span class='warning'>[user] screws up, damaging the brain!</span>",
|
||||
"<span class='notice'>[user] completes the surgery on [target]'s brain.</span>")
|
||||
display_results(user, target, span_warning("You screw up, damaging the brain!"),
|
||||
span_warning("[user] screws up, damaging the brain!"),
|
||||
span_notice("[user] completes the surgery on [target]'s brain."))
|
||||
target.adjustOrganLoss(ORGAN_SLOT_BRAIN, 60)
|
||||
target.gain_trauma_type(BRAIN_TRAUMA_SEVERE, TRAUMA_RESILIENCE_LOBOTOMY)
|
||||
else
|
||||
user.visible_message("<span class='warning'>[user] suddenly notices that the brain [user.p_they()] [user.p_were()] working on is not there anymore.</span>", "<span class='warning'>You suddenly notice that the brain you were working on is not there anymore.</span>")
|
||||
user.visible_message(span_warning("[user] suddenly notices that the brain [user.p_they()] [user.p_were()] working on is not there anymore."), span_warning("You suddenly notice that the brain you were working on is not there anymore."))
|
||||
return FALSE
|
||||
|
||||
/datum/bioware/cortex_imprint
|
||||
|
||||
@@ -19,14 +19,14 @@
|
||||
time = 125
|
||||
|
||||
/datum/surgery_step/reshape_ligaments/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You start reshaping [target]'s ligaments into a hook-like shape.</span>",
|
||||
"<span class='notice'>[user] starts reshaping [target]'s ligaments into a hook-like shape.</span>",
|
||||
"<span class='notice'>[user] starts manipulating [target]'s ligaments.</span>")
|
||||
display_results(user, target, span_notice("You start reshaping [target]'s ligaments into a hook-like shape."),
|
||||
span_notice("[user] starts reshaping [target]'s ligaments into a hook-like shape."),
|
||||
span_notice("[user] starts manipulating [target]'s ligaments."))
|
||||
|
||||
/datum/surgery_step/reshape_ligaments/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
|
||||
display_results(user, target, "<span class='notice'>You reshape [target]'s ligaments into a connective hook!</span>",
|
||||
"<span class='notice'>[user] reshapes [target]'s ligaments into a connective hook!</span>",
|
||||
"<span class='notice'>[user] finishes manipulating [target]'s ligaments.</span>")
|
||||
display_results(user, target, span_notice("You reshape [target]'s ligaments into a connective hook!"),
|
||||
span_notice("[user] reshapes [target]'s ligaments into a connective hook!"),
|
||||
span_notice("[user] finishes manipulating [target]'s ligaments."))
|
||||
new /datum/bioware/hooked_ligaments(target)
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -19,14 +19,14 @@
|
||||
time = 125
|
||||
|
||||
/datum/surgery_step/reinforce_ligaments/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You start reinforcing [target]'s ligaments.</span>",
|
||||
"<span class='notice'>[user] starts reinforce [target]'s ligaments.</span>",
|
||||
"<span class='notice'>[user] starts manipulating [target]'s ligaments.</span>")
|
||||
display_results(user, target, span_notice("You start reinforcing [target]'s ligaments."),
|
||||
span_notice("[user] starts reinforce [target]'s ligaments."),
|
||||
span_notice("[user] starts manipulating [target]'s ligaments."))
|
||||
|
||||
/datum/surgery_step/reinforce_ligaments/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
|
||||
display_results(user, target, "<span class='notice'>You reinforce [target]'s ligaments!</span>",
|
||||
"<span class='notice'>[user] reinforces [target]'s ligaments!</span>",
|
||||
"<span class='notice'>[user] finishes manipulating [target]'s ligaments.</span>")
|
||||
display_results(user, target, span_notice("You reinforce [target]'s ligaments!"),
|
||||
span_notice("[user] reinforces [target]'s ligaments!"),
|
||||
span_notice("[user] finishes manipulating [target]'s ligaments."))
|
||||
new /datum/bioware/reinforced_ligaments(target)
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -18,14 +18,14 @@
|
||||
time = 125
|
||||
|
||||
/datum/surgery_step/muscled_veins/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You start wrapping muscles around [target]'s circulatory system.</span>",
|
||||
"<span class='notice'>[user] starts wrapping muscles around [target]'s circulatory system.</span>",
|
||||
"<span class='notice'>[user] starts manipulating [target]'s circulatory system.</span>")
|
||||
display_results(user, target, span_notice("You start wrapping muscles around [target]'s circulatory system."),
|
||||
span_notice("[user] starts wrapping muscles around [target]'s circulatory system."),
|
||||
span_notice("[user] starts manipulating [target]'s circulatory system."))
|
||||
|
||||
/datum/surgery_step/muscled_veins/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
|
||||
display_results(user, target, "<span class='notice'>You reshape [target]'s circulatory system, adding a muscled membrane!</span>",
|
||||
"<span class='notice'>[user] reshapes [target]'s circulatory system, adding a muscled membrane!</span>",
|
||||
"<span class='notice'>[user] finishes manipulating [target]'s circulatory system.</span>")
|
||||
display_results(user, target, span_notice("You reshape [target]'s circulatory system, adding a muscled membrane!"),
|
||||
span_notice("[user] reshapes [target]'s circulatory system, adding a muscled membrane!"),
|
||||
span_notice("[user] finishes manipulating [target]'s circulatory system."))
|
||||
new /datum/bioware/muscled_veins(target)
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -18,14 +18,14 @@
|
||||
time = 155
|
||||
|
||||
/datum/surgery_step/ground_nerves/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You start rerouting [target]'s nerves.</span>",
|
||||
"<span class='notice'>[user] starts rerouting [target]'s nerves.</span>",
|
||||
"<span class='notice'>[user] starts manipulating [target]'s nervous system.</span>")
|
||||
display_results(user, target, span_notice("You start rerouting [target]'s nerves."),
|
||||
span_notice("[user] starts rerouting [target]'s nerves."),
|
||||
span_notice("[user] starts manipulating [target]'s nervous system."))
|
||||
|
||||
/datum/surgery_step/ground_nerves/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
|
||||
display_results(user, target, "<span class='notice'>You successfully reroute [target]'s nervous system!</span>",
|
||||
"<span class='notice'>[user] successfully reroutes [target]'s nervous system!</span>",
|
||||
"<span class='notice'>[user] finishes manipulating [target]'s nervous system.</span>")
|
||||
display_results(user, target, span_notice("You successfully reroute [target]'s nervous system!"),
|
||||
span_notice("[user] successfully reroutes [target]'s nervous system!"),
|
||||
span_notice("[user] finishes manipulating [target]'s nervous system."))
|
||||
new /datum/bioware/grounded_nerves(target)
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -18,14 +18,14 @@
|
||||
time = 155
|
||||
|
||||
/datum/surgery_step/splice_nerves/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You start splicing together [target]'s nerves.</span>",
|
||||
"<span class='notice'>[user] starts splicing together [target]'s nerves.</span>",
|
||||
"<span class='notice'>[user] starts manipulating [target]'s nervous system.</span>")
|
||||
display_results(user, target, span_notice("You start splicing together [target]'s nerves."),
|
||||
span_notice("[user] starts splicing together [target]'s nerves."),
|
||||
span_notice("[user] starts manipulating [target]'s nervous system."))
|
||||
|
||||
/datum/surgery_step/splice_nerves/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
|
||||
display_results(user, target, "<span class='notice'>You successfully splice [target]'s nervous system!</span>",
|
||||
"<span class='notice'>[user] successfully splices [target]'s nervous system!</span>",
|
||||
"<span class='notice'>[user] finishes manipulating [target]'s nervous system.</span>")
|
||||
display_results(user, target, span_notice("You successfully splice [target]'s nervous system!"),
|
||||
span_notice("[user] successfully splices [target]'s nervous system!"),
|
||||
span_notice("[user] finishes manipulating [target]'s nervous system."))
|
||||
new /datum/bioware/spliced_nerves(target)
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -18,14 +18,14 @@
|
||||
time = 125
|
||||
|
||||
/datum/surgery_step/thread_veins/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You start weaving [target]'s circulatory system.</span>",
|
||||
"<span class='notice'>[user] starts weaving [target]'s circulatory system.</span>",
|
||||
"<span class='notice'>[user] starts manipulating [target]'s circulatory system.</span>")
|
||||
display_results(user, target, span_notice("You start weaving [target]'s circulatory system."),
|
||||
span_notice("[user] starts weaving [target]'s circulatory system."),
|
||||
span_notice("[user] starts manipulating [target]'s circulatory system."))
|
||||
|
||||
/datum/surgery_step/thread_veins/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
|
||||
display_results(user, target, "<span class='notice'>You weave [target]'s circulatory system into a resistant mesh!</span>",
|
||||
"<span class='notice'>[user] weaves [target]'s circulatory system into a resistant mesh!</span>",
|
||||
"<span class='notice'>[user] finishes manipulating [target]'s circulatory system.</span>")
|
||||
display_results(user, target, span_notice("You weave [target]'s circulatory system into a resistant mesh!"),
|
||||
span_notice("[user] weaves [target]'s circulatory system into a resistant mesh!"),
|
||||
span_notice("[user] finishes manipulating [target]'s circulatory system."))
|
||||
new /datum/bioware/threaded_veins(target)
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -39,21 +39,21 @@
|
||||
objective = stripped_input(user, "Choose the objective to imprint on your victim's brain.", "Brainwashing", null, MAX_MESSAGE_LEN)
|
||||
if(!objective)
|
||||
return -1
|
||||
display_results(user, target, "<span class='notice'>You begin to brainwash [target]...</span>",
|
||||
"<span class='notice'>[user] begins to fix [target]'s brain.</span>",
|
||||
"<span class='notice'>[user] begins to perform surgery on [target]'s brain.</span>")
|
||||
display_results(user, target, span_notice("You begin to brainwash [target]..."),
|
||||
span_notice("[user] begins to fix [target]'s brain."),
|
||||
span_notice("[user] begins to perform surgery on [target]'s brain."))
|
||||
|
||||
/datum/surgery_step/brainwash/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
|
||||
if(!target.mind)
|
||||
to_chat(user, "<span class='warning'>[target] doesn't respond to the brainwashing, as if [target.p_they()] lacked a mind...</span>")
|
||||
to_chat(user, span_warning("[target] doesn't respond to the brainwashing, as if [target.p_they()] lacked a mind..."))
|
||||
return FALSE
|
||||
if(HAS_TRAIT(target, TRAIT_MINDSHIELD))
|
||||
to_chat(user, "<span class='warning'>You hear a faint buzzing from a device inside [target]'s brain, and the brainwashing is erased.</span>")
|
||||
to_chat(user, span_warning("You hear a faint buzzing from a device inside [target]'s brain, and the brainwashing is erased."))
|
||||
return FALSE
|
||||
display_results(user, target, "<span class='notice'>You succeed in brainwashing [target].</span>",
|
||||
"<span class='notice'>[user] successfully fixes [target]'s brain!</span>",
|
||||
"<span class='notice'>[user] completes the surgery on [target]'s brain.</span>")
|
||||
to_chat(target, "<span class='userdanger'>A new compulsion fills your mind... you feel forced to obey it!</span>")
|
||||
display_results(user, target, span_notice("You succeed in brainwashing [target]."),
|
||||
span_notice("[user] successfully fixes [target]'s brain!"),
|
||||
span_notice("[user] completes the surgery on [target]'s brain."))
|
||||
to_chat(target, span_userdanger("A new compulsion fills your mind... you feel forced to obey it!"))
|
||||
brainwash(target, objective)
|
||||
message_admins("[ADMIN_LOOKUPFLW(user)] surgically brainwashed [ADMIN_LOOKUPFLW(target)] with the objective '[objective]'.")
|
||||
target.log_message("has been brainwashed with the objective '[objective]' by [key_name(user)] using brainwashing surgery.", LOG_ATTACK)
|
||||
@@ -63,10 +63,10 @@
|
||||
|
||||
/datum/surgery_step/brainwash/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
if(target.getorganslot(ORGAN_SLOT_BRAIN))
|
||||
display_results(user, target, "<span class='warning'>You screw up, bruising the brain tissue!</span>",
|
||||
"<span class='warning'>[user] screws up, causing brain damage!</span>",
|
||||
"<span class='notice'>[user] completes the surgery on [target]'s brain.</span>")
|
||||
display_results(user, target, span_warning("You screw up, bruising the brain tissue!"),
|
||||
span_warning("[user] screws up, causing brain damage!"),
|
||||
span_notice("[user] completes the surgery on [target]'s brain."))
|
||||
target.adjustOrganLoss(ORGAN_SLOT_BRAIN, 40)
|
||||
else
|
||||
user.visible_message("<span class='warning'>[user] suddenly notices that the brain [user.p_they()] [user.p_were()] working on is not there anymore.</span>", "<span class='warning'>You suddenly notice that the brain you were working on is not there anymore.</span>")
|
||||
user.visible_message(span_warning("[user] suddenly notices that the brain [user.p_they()] [user.p_were()] working on is not there anymore."), span_warning("You suddenly notice that the brain you were working on is not there anymore."))
|
||||
return FALSE
|
||||
|
||||
@@ -37,14 +37,14 @@
|
||||
return TRUE
|
||||
|
||||
/datum/surgery_step/lobotomize/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You begin to perform a lobotomy on [target]'s brain...</span>",
|
||||
"<span class='notice'>[user] begins to perform a lobotomy on [target]'s brain.</span>",
|
||||
"<span class='notice'>[user] begins to perform surgery on [target]'s brain.</span>")
|
||||
display_results(user, target, span_notice("You begin to perform a lobotomy on [target]'s brain..."),
|
||||
span_notice("[user] begins to perform a lobotomy on [target]'s brain."),
|
||||
span_notice("[user] begins to perform surgery on [target]'s brain."))
|
||||
|
||||
/datum/surgery_step/lobotomize/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
|
||||
display_results(user, target, "<span class='notice'>You succeed in lobotomizing [target].</span>",
|
||||
"<span class='notice'>[user] successfully lobotomizes [target]!</span>",
|
||||
"<span class='notice'>[user] completes the surgery on [target]'s brain.</span>")
|
||||
display_results(user, target, span_notice("You succeed in lobotomizing [target]."),
|
||||
span_notice("[user] successfully lobotomizes [target]!"),
|
||||
span_notice("[user] completes the surgery on [target]'s brain."))
|
||||
target.cure_all_traumas(TRAUMA_RESILIENCE_LOBOTOMY)
|
||||
if(target.mind && target.mind.has_antag_datum(/datum/antagonist/brainwashed))
|
||||
target.mind.remove_antag_datum(/datum/antagonist/brainwashed)
|
||||
@@ -63,9 +63,9 @@
|
||||
/datum/surgery_step/lobotomize/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
var/obj/item/organ/brain/target_brain = target.getorganslot(ORGAN_SLOT_BRAIN)
|
||||
if(target_brain)
|
||||
display_results(user, target, "<span class='warning'>You remove the wrong part, causing more damage!</span>",
|
||||
"<span class='notice'>[user] successfully lobotomizes [target]!</span>",
|
||||
"<span class='notice'>[user] completes the surgery on [target]'s brain.</span>")
|
||||
display_results(user, target, span_warning("You remove the wrong part, causing more damage!"),
|
||||
span_notice("[user] successfully lobotomizes [target]!"),
|
||||
span_notice("[user] completes the surgery on [target]'s brain."))
|
||||
target_brain.applyOrganDamage(80)
|
||||
switch(rand(1,3))
|
||||
if(1)
|
||||
@@ -78,5 +78,5 @@
|
||||
if(3)
|
||||
target.gain_trauma_type(BRAIN_TRAUMA_SPECIAL, TRAUMA_RESILIENCE_MAGIC)
|
||||
else
|
||||
user.visible_message("<span class='warning'>[user] suddenly notices that the brain [user.p_they()] [user.p_were()] working on is not there anymore.</span>", "<span class='warning'>You suddenly notice that the brain you were working on is not there anymore.</span>")
|
||||
user.visible_message(span_warning("[user] suddenly notices that the brain [user.p_they()] [user.p_were()] working on is not there anymore."), span_warning("You suddenly notice that the brain you were working on is not there anymore."))
|
||||
return FALSE
|
||||
|
||||
@@ -27,14 +27,14 @@
|
||||
require_all_chems = FALSE
|
||||
|
||||
/datum/surgery_step/bionecrosis/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You begin to grow a romerol tumor on [target]'s brain...</span>",
|
||||
"<span class='notice'>[user] begins to tinker with [target]'s brain...</span>",
|
||||
"<span class='notice'>[user] begins to perform surgery on [target]'s brain.</span>")
|
||||
display_results(user, target, span_notice("You begin to grow a romerol tumor on [target]'s brain..."),
|
||||
span_notice("[user] begins to tinker with [target]'s brain..."),
|
||||
span_notice("[user] begins to perform surgery on [target]'s brain."))
|
||||
|
||||
/datum/surgery_step/bionecrosis/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
|
||||
display_results(user, target, "<span class='notice'>You succeed in growing a romerol tumor on [target]'s brain.</span>",
|
||||
"<span class='notice'>[user] successfully grows a romerol tumor on [target]'s brain!</span>",
|
||||
"<span class='notice'>[user] completes the surgery on [target]'s brain.</span>")
|
||||
display_results(user, target, span_notice("You succeed in growing a romerol tumor on [target]'s brain."),
|
||||
span_notice("[user] successfully grows a romerol tumor on [target]'s brain!"),
|
||||
span_notice("[user] completes the surgery on [target]'s brain."))
|
||||
if(!target.getorganslot(ORGAN_SLOT_ZOMBIE))
|
||||
var/obj/item/organ/zombie_infection/z_infection = new()
|
||||
z_infection.Insert(target)
|
||||
|
||||
@@ -28,20 +28,20 @@
|
||||
time = 40
|
||||
|
||||
/datum/surgery_step/pacify/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You begin to pacify [target]...</span>",
|
||||
"<span class='notice'>[user] begins to fix [target]'s brain.</span>",
|
||||
"<span class='notice'>[user] begins to perform surgery on [target]'s brain.</span>")
|
||||
display_results(user, target, span_notice("You begin to pacify [target]..."),
|
||||
span_notice("[user] begins to fix [target]'s brain."),
|
||||
span_notice("[user] begins to perform surgery on [target]'s brain."))
|
||||
|
||||
/datum/surgery_step/pacify/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
|
||||
display_results(user, target, "<span class='notice'>You succeed in neurologically pacifying [target].</span>",
|
||||
"<span class='notice'>[user] successfully fixes [target]'s brain!</span>",
|
||||
"<span class='notice'>[user] completes the surgery on [target]'s brain.</span>")
|
||||
display_results(user, target, span_notice("You succeed in neurologically pacifying [target]."),
|
||||
span_notice("[user] successfully fixes [target]'s brain!"),
|
||||
span_notice("[user] completes the surgery on [target]'s brain."))
|
||||
target.gain_trauma(/datum/brain_trauma/severe/pacifism, TRAUMA_RESILIENCE_LOBOTOMY)
|
||||
return ..()
|
||||
|
||||
/datum/surgery_step/pacify/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You screw up, rewiring [target]'s brain the wrong way around...</span>",
|
||||
"<span class='warning'>[user] screws up, causing brain damage!</span>",
|
||||
"<span class='notice'>[user] completes the surgery on [target]'s brain.</span>")
|
||||
display_results(user, target, span_notice("You screw up, rewiring [target]'s brain the wrong way around..."),
|
||||
span_warning("[user] screws up, causing brain damage!"),
|
||||
span_notice("[user] completes the surgery on [target]'s brain."))
|
||||
target.gain_trauma_type(BRAIN_TRAUMA_SEVERE, TRAUMA_RESILIENCE_LOBOTOMY)
|
||||
return FALSE
|
||||
|
||||
@@ -35,14 +35,14 @@
|
||||
return TRUE
|
||||
|
||||
/datum/surgery_step/viral_bond/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You start heating [target]'s bone marrow with [tool]...</span>",
|
||||
"<span class='notice'>[user] starts heating [target]'s bone marrow with [tool]...</span>",
|
||||
"<span class='notice'>[user] starts heating something in [target]'s chest with [tool]...</span>")
|
||||
display_results(user, target, span_notice("You start heating [target]'s bone marrow with [tool]..."),
|
||||
span_notice("[user] starts heating [target]'s bone marrow with [tool]..."),
|
||||
span_notice("[user] starts heating something in [target]'s chest with [tool]..."))
|
||||
|
||||
/datum/surgery_step/viral_bond/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results)
|
||||
display_results(user, target, "<span class='notice'>[target]'s bone marrow begins pulsing slowly. The viral bonding is complete.</span>",
|
||||
"<span class='notice'>[target]'s bone marrow begins pulsing slowly.</span>",
|
||||
"<span class='notice'>[user] finishes the operation.</span>")
|
||||
display_results(user, target, span_notice("[target]'s bone marrow begins pulsing slowly. The viral bonding is complete."),
|
||||
span_notice("[target]'s bone marrow begins pulsing slowly."),
|
||||
span_notice("[user] finishes the operation."))
|
||||
for(var/datum/disease/infected_disease as anything in target.diseases)
|
||||
infected_disease.carrier = TRUE
|
||||
return TRUE
|
||||
|
||||
@@ -25,16 +25,16 @@
|
||||
require_all_chems = FALSE
|
||||
|
||||
/datum/surgery_step/wing_reconstruction/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You begin to fix [target]'s charred wing membranes...</span>",
|
||||
"<span class='notice'>[user] begins to fix [target]'s charred wing membranes.</span>",
|
||||
"<span class='notice'>[user] begins to perform surgery on [target]'s charred wing membranes.</span>")
|
||||
display_results(user, target, span_notice("You begin to fix [target]'s charred wing membranes..."),
|
||||
span_notice("[user] begins to fix [target]'s charred wing membranes."),
|
||||
span_notice("[user] begins to perform surgery on [target]'s charred wing membranes."))
|
||||
|
||||
/datum/surgery_step/wing_reconstruction/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
|
||||
if(ishuman(target))
|
||||
var/mob/living/carbon/human/human_target = target
|
||||
display_results(user, target, "<span class='notice'>You succeed in reconstructing [target]'s wings.</span>",
|
||||
"<span class='notice'>[user] successfully reconstructs [target]'s wings!</span>",
|
||||
"<span class='notice'>[user] completes the surgery on [target]'s wings.</span>")
|
||||
display_results(user, target, span_notice("You succeed in reconstructing [target]'s wings."),
|
||||
span_notice("[user] successfully reconstructs [target]'s wings!"),
|
||||
span_notice("[user] completes the surgery on [target]'s wings."))
|
||||
if(human_target.dna.features["original_moth_wings"] != null)
|
||||
human_target.dna.features["moth_wings"] = human_target.dna.features["original_moth_wings"]
|
||||
else
|
||||
|
||||
@@ -26,14 +26,14 @@
|
||||
time = 64
|
||||
|
||||
/datum/surgery_step/sever_limb/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You begin to sever [target]'s [parse_zone(target_zone)]...</span>",
|
||||
"<span class='notice'>[user] begins to sever [target]'s [parse_zone(target_zone)]!</span>",
|
||||
"<span class='notice'>[user] begins to sever [target]'s [parse_zone(target_zone)]!</span>")
|
||||
display_results(user, target, span_notice("You begin to sever [target]'s [parse_zone(target_zone)]..."),
|
||||
span_notice("[user] begins to sever [target]'s [parse_zone(target_zone)]!"),
|
||||
span_notice("[user] begins to sever [target]'s [parse_zone(target_zone)]!"))
|
||||
|
||||
/datum/surgery_step/sever_limb/success(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
|
||||
display_results(user, target, "<span class='notice'>You sever [target]'s [parse_zone(target_zone)].</span>",
|
||||
"<span class='notice'>[user] severs [target]'s [parse_zone(target_zone)]!</span>",
|
||||
"<span class='notice'>[user] severs [target]'s [parse_zone(target_zone)]!</span>")
|
||||
display_results(user, target, span_notice("You sever [target]'s [parse_zone(target_zone)]."),
|
||||
span_notice("[user] severs [target]'s [parse_zone(target_zone)]!"),
|
||||
span_notice("[user] severs [target]'s [parse_zone(target_zone)]!"))
|
||||
if(surgery.operated_bodypart)
|
||||
var/obj/item/bodypart/target_limb = surgery.operated_bodypart
|
||||
target_limb.drop_limb()
|
||||
|
||||
@@ -23,21 +23,21 @@
|
||||
time = 2.5 SECONDS
|
||||
|
||||
/datum/surgery_step/filter_blood/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You begin filtering [target]'s blood...</span>",
|
||||
"<span class='notice'>[user] uses [tool] to filter [target]'s blood.</span>",
|
||||
"<span class='notice'>[user] uses [tool] on [target]'s chest.</span>")
|
||||
display_results(user, target, span_notice("You begin filtering [target]'s blood..."),
|
||||
span_notice("[user] uses [tool] to filter [target]'s blood."),
|
||||
span_notice("[user] uses [tool] on [target]'s chest."))
|
||||
|
||||
/datum/surgery_step/filter_blood/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
|
||||
if(target.reagents?.total_volume)
|
||||
for(var/datum/reagent/chem as anything in target.reagents.reagent_list)
|
||||
target.reagents.remove_reagent(chem.type, min(chem.volume * 0.22, 10))
|
||||
display_results(user, target, "<span class='notice'>\The [tool] pings as it finishes filtering [target]'s blood.</span>",
|
||||
"<span class='notice'>\The [tool] pings as it stops pumping [target]'s blood.</span>",
|
||||
display_results(user, target, span_notice("\The [tool] pings as it finishes filtering [target]'s blood."),
|
||||
span_notice("\The [tool] pings as it stops pumping [target]'s blood."),
|
||||
"\The [tool] pings as it stops pumping.")
|
||||
return ..()
|
||||
|
||||
/datum/surgery_step/filter_blood/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='warning'>You screw up, bruising [target]'s chest!</span>",
|
||||
"<span class='warning'>[user] screws up, brusing [target]'s chest!</span>",
|
||||
"<span class='warning'>[user] screws up!</span>")
|
||||
display_results(user, target, span_warning("You screw up, bruising [target]'s chest!"),
|
||||
span_warning("[user] screws up, brusing [target]'s chest!"),
|
||||
span_warning("[user] screws up!"))
|
||||
target.adjustBruteLoss(5)
|
||||
|
||||
@@ -129,18 +129,18 @@
|
||||
/obj/item/bodypart/examine(mob/user)
|
||||
. = ..()
|
||||
if(brute_dam > DAMAGE_PRECISION)
|
||||
. += "<span class='warning'>This limb has [brute_dam > 30 ? "severe" : "minor"] bruising.</span>"
|
||||
. += span_warning("This limb has [brute_dam > 30 ? "severe" : "minor"] bruising.")
|
||||
if(burn_dam > DAMAGE_PRECISION)
|
||||
. += "<span class='warning'>This limb has [burn_dam > 30 ? "severe" : "minor"] burns.</span>"
|
||||
. += span_warning("This limb has [burn_dam > 30 ? "severe" : "minor"] burns.")
|
||||
|
||||
if(locate(/datum/wound/blunt) in wounds)
|
||||
. += "<span class='warning'>The bones in this limb appear badly cracked.</span>"
|
||||
. += span_warning("The bones in this limb appear badly cracked.")
|
||||
if(locate(/datum/wound/slash) in wounds)
|
||||
. += "<span class='warning'>The flesh on this limb appears badly lacerated.</span>"
|
||||
. += span_warning("The flesh on this limb appears badly lacerated.")
|
||||
if(locate(/datum/wound/pierce) in wounds)
|
||||
. += "<span class='warning'>The flesh on this limb appears badly perforated.</span>"
|
||||
. += span_warning("The flesh on this limb appears badly perforated.")
|
||||
if(locate(/datum/wound/burn) in wounds)
|
||||
. += "<span class='warning'>The flesh on this limb appears badly cooked.</span>"
|
||||
. += span_warning("The flesh on this limb appears badly cooked.")
|
||||
|
||||
/obj/item/bodypart/blob_act()
|
||||
take_damage(max_damage)
|
||||
@@ -153,14 +153,14 @@
|
||||
if(!human_victim.get_bodypart(body_zone) && !animal_origin)
|
||||
user.temporarilyRemoveItemFromInventory(src, TRUE)
|
||||
if(!attach_limb(victim))
|
||||
to_chat(user, "<span class='warning'>[human_victim]'s body rejects [src]!</span>")
|
||||
to_chat(user, span_warning("[human_victim]'s body rejects [src]!"))
|
||||
forceMove(human_victim.loc)
|
||||
if(human_victim == user)
|
||||
human_victim.visible_message("<span class='warning'>[human_victim] jams [src] into [human_victim.p_their()] empty socket!</span>",\
|
||||
"<span class='notice'>You force [src] into your empty socket, and it locks into place!</span>")
|
||||
human_victim.visible_message(span_warning("[human_victim] jams [src] into [human_victim.p_their()] empty socket!"),\
|
||||
span_notice("You force [src] into your empty socket, and it locks into place!"))
|
||||
else
|
||||
human_victim.visible_message("<span class='warning'>[user] jams [src] into [human_victim]'s empty socket!</span>",\
|
||||
"<span class='notice'>[user] forces [src] into your empty socket, and it locks into place!</span>")
|
||||
human_victim.visible_message(span_warning("[user] jams [src] into [human_victim]'s empty socket!"),\
|
||||
span_notice("[user] forces [src] into your empty socket, and it locks into place!"))
|
||||
return
|
||||
..()
|
||||
|
||||
@@ -168,11 +168,11 @@
|
||||
if(weapon.get_sharpness())
|
||||
add_fingerprint(user)
|
||||
if(!contents.len)
|
||||
to_chat(user, "<span class='warning'>There is nothing left inside [src]!</span>")
|
||||
to_chat(user, span_warning("There is nothing left inside [src]!"))
|
||||
return
|
||||
playsound(loc, 'sound/weapons/slice.ogg', 50, TRUE, -1)
|
||||
user.visible_message("<span class='warning'>[user] begins to cut open [src].</span>",\
|
||||
"<span class='notice'>You begin to cut open [src]...</span>")
|
||||
user.visible_message(span_warning("[user] begins to cut open [src]."),\
|
||||
span_notice("You begin to cut open [src]..."))
|
||||
if(do_after(user, 54, target = src))
|
||||
drop_organs(user, TRUE)
|
||||
else
|
||||
@@ -937,7 +937,7 @@
|
||||
dam_mul *= iter_wound.damage_mulitplier_penalty
|
||||
|
||||
if(!LAZYLEN(wounds) && current_gauze && !replaced) // no more wounds = no need for the gauze anymore
|
||||
owner.visible_message("<span class='notice'>\The [current_gauze] on [owner]'s [name] falls away.</span>", "<span class='notice'>The [current_gauze] on your [name] falls away.</span>")
|
||||
owner.visible_message(span_notice("\The [current_gauze] on [owner]'s [name] falls away."), span_notice("The [current_gauze] on your [name] falls away."))
|
||||
QDEL_NULL(current_gauze)
|
||||
|
||||
wound_damage_multiplier = dam_mul
|
||||
@@ -1009,7 +1009,7 @@
|
||||
return
|
||||
current_gauze.absorption_capacity -= seep_amt
|
||||
if(current_gauze.absorption_capacity <= 0)
|
||||
owner.visible_message("<span class='danger'>\The [current_gauze] on [owner]'s [name] falls away in rags.</span>", "<span class='warning'>\The [current_gauze] on your [name] falls away in rags.</span>", vision_distance=COMBAT_MESSAGE_RANGE)
|
||||
owner.visible_message(span_danger("\The [current_gauze] on [owner]'s [name] falls away in rags."), span_warning("\The [current_gauze] on your [name] falls away in rags."), vision_distance=COMBAT_MESSAGE_RANGE)
|
||||
QDEL_NULL(current_gauze)
|
||||
SEND_SIGNAL(src, COMSIG_BODYPART_GAUZE_DESTROYED)
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
var/obj/item/bodypart/affecting = limb_owner.get_bodypart(BODY_ZONE_CHEST)
|
||||
affecting.receive_damage(clamp(brute_dam/2 * affecting.body_damage_coeff, 15, 50), clamp(burn_dam/2 * affecting.body_damage_coeff, 0, 50), wound_bonus=CANT_WOUND) //Damage the chest based on limb's existing damage
|
||||
if(!silent)
|
||||
limb_owner.visible_message("<span class='danger'><B>[limb_owner]'s [name] is violently dismembered!</B></span>")
|
||||
limb_owner.visible_message(span_danger("<B>[limb_owner]'s [name] is violently dismembered!</B>"))
|
||||
INVOKE_ASYNC(limb_owner, /mob.proc/emote, "scream")
|
||||
playsound(get_turf(limb_owner), 'sound/effects/dismember.ogg', 80, TRUE)
|
||||
SEND_SIGNAL(limb_owner, COMSIG_ADD_MOOD_EVENT, "dismembered", /datum/mood_event/dismembered)
|
||||
@@ -118,7 +118,7 @@
|
||||
if(phantom_owner.dna)
|
||||
for(var/datum/mutation/human/mutation as anything in phantom_owner.dna.mutations) //some mutations require having specific limbs to be kept.
|
||||
if(mutation.limb_req && mutation.limb_req == body_zone)
|
||||
to_chat(phantom_owner, "<span class='warning'>You feel your [mutation] deactivating from the loss of your [body_zone]!</span>")
|
||||
to_chat(phantom_owner, span_warning("You feel your [mutation] deactivating from the loss of your [body_zone]!"))
|
||||
phantom_owner.dna.force_lose(mutation)
|
||||
|
||||
for(var/obj/item/organ/organ as anything in phantom_owner.internal_organs) //internal organs inside the dismembered limb are dropped.
|
||||
|
||||
@@ -71,29 +71,29 @@
|
||||
. = ..()
|
||||
if(status == BODYPART_ORGANIC)
|
||||
if(!brain)
|
||||
. += "<span class='info'>The brain has been removed from [src].</span>"
|
||||
. += span_info("The brain has been removed from [src].")
|
||||
else if(brain.suicided || brainmob?.suiciding)
|
||||
. += "<span class='info'>There's a miserable expression on [real_name]'s face; they must have really hated life. There's no hope of recovery.</span>"
|
||||
. += span_info("There's a miserable expression on [real_name]'s face; they must have really hated life. There's no hope of recovery.")
|
||||
else if(brainmob?.health <= HEALTH_THRESHOLD_DEAD)
|
||||
. += "<span class='info'>It's leaking some kind of... clear fluid? The brain inside must be in pretty bad shape.</span>"
|
||||
. += span_info("It's leaking some kind of... clear fluid? The brain inside must be in pretty bad shape.")
|
||||
else if(brainmob)
|
||||
if(brainmob.key || brainmob.get_ghost(FALSE, TRUE))
|
||||
. += "<span class='info'>Its muscles are twitching slightly... It seems to have some life still in it.</span>"
|
||||
. += span_info("Its muscles are twitching slightly... It seems to have some life still in it.")
|
||||
else
|
||||
. += "<span class='info'>It's completely lifeless. Perhaps there'll be a chance for them later.</span>"
|
||||
. += span_info("It's completely lifeless. Perhaps there'll be a chance for them later.")
|
||||
else if(brain?.decoy_override)
|
||||
. += "<span class='info'>It's completely lifeless. Perhaps there'll be a chance for them later.</span>"
|
||||
. += span_info("It's completely lifeless. Perhaps there'll be a chance for them later.")
|
||||
else
|
||||
. += "<span class='info'>It's completely lifeless.</span>"
|
||||
. += span_info("It's completely lifeless.")
|
||||
|
||||
if(!eyes)
|
||||
. += "<span class='info'>[real_name]'s eyes have been removed.</span>"
|
||||
. += span_info("[real_name]'s eyes have been removed.")
|
||||
|
||||
if(!ears)
|
||||
. += "<span class='info'>[real_name]'s ears have been removed.</span>"
|
||||
. += span_info("[real_name]'s ears have been removed.")
|
||||
|
||||
if(!tongue)
|
||||
. += "<span class='info'>[real_name]'s tongue has been removed.</span>"
|
||||
. += span_info("[real_name]'s tongue has been removed.")
|
||||
|
||||
|
||||
/obj/item/bodypart/head/can_dismember(obj/item/item)
|
||||
@@ -108,14 +108,14 @@
|
||||
for(var/obj/item/head_item in src)
|
||||
if(head_item == brain)
|
||||
if(user)
|
||||
user.visible_message("<span class='warning'>[user] saws [src] open and pulls out a brain!</span>", "<span class='notice'>You saw [src] open and pull out a brain.</span>")
|
||||
user.visible_message(span_warning("[user] saws [src] open and pulls out a brain!"), span_notice("You saw [src] open and pull out a brain."))
|
||||
if(brainmob)
|
||||
brainmob.container = null
|
||||
brainmob.forceMove(brain)
|
||||
brain.brainmob = brainmob
|
||||
brainmob = null
|
||||
if(violent_removal && prob(rand(80, 100))) //ghetto surgery can damage the brain.
|
||||
to_chat(user, "<span class='warning'>[brain] was damaged in the process!</span>")
|
||||
to_chat(user, span_warning("[brain] was damaged in the process!"))
|
||||
brain.setOrganDamage(brain.maxHealth)
|
||||
brain.forceMove(head_turf)
|
||||
brain = null
|
||||
|
||||
@@ -117,7 +117,7 @@
|
||||
if(bodypart_disabled)
|
||||
owner.set_usable_hands(owner.usable_hands - 1)
|
||||
if(owner.stat < UNCONSCIOUS)
|
||||
to_chat(owner, "<span class='userdanger'>Your lose control of your [name]!</span>")
|
||||
to_chat(owner, span_userdanger("Your lose control of your [name]!"))
|
||||
if(held_index)
|
||||
owner.dropItemToGround(owner.get_item_for_held_index(held_index))
|
||||
else if(!bodypart_disabled)
|
||||
@@ -212,7 +212,7 @@
|
||||
if(bodypart_disabled)
|
||||
owner.set_usable_hands(owner.usable_hands - 1)
|
||||
if(owner.stat < UNCONSCIOUS)
|
||||
to_chat(owner, "<span class='userdanger'>Your lose control of your [name]!</span>")
|
||||
to_chat(owner, span_userdanger("Your lose control of your [name]!"))
|
||||
if(held_index)
|
||||
owner.dropItemToGround(owner.get_item_for_held_index(held_index))
|
||||
else if(!bodypart_disabled)
|
||||
@@ -304,7 +304,7 @@
|
||||
if(bodypart_disabled)
|
||||
owner.set_usable_legs(owner.usable_legs - 1)
|
||||
if(owner.stat < UNCONSCIOUS)
|
||||
to_chat(owner, "<span class='userdanger'>Your lose control of your [name]!</span>")
|
||||
to_chat(owner, span_userdanger("Your lose control of your [name]!"))
|
||||
else if(!bodypart_disabled)
|
||||
owner.set_usable_legs(owner.usable_legs + 1)
|
||||
|
||||
@@ -395,7 +395,7 @@
|
||||
if(bodypart_disabled)
|
||||
owner.set_usable_legs(owner.usable_legs - 1)
|
||||
if(owner.stat < UNCONSCIOUS)
|
||||
to_chat(owner, "<span class='userdanger'>Your lose control of your [name]!</span>")
|
||||
to_chat(owner, span_userdanger("Your lose control of your [name]!"))
|
||||
else if(!bodypart_disabled)
|
||||
owner.set_usable_legs(owner.usable_legs + 1)
|
||||
|
||||
|
||||
@@ -140,23 +140,23 @@
|
||||
/obj/item/bodypart/chest/robot/attackby(obj/item/weapon, mob/user, params)
|
||||
if(istype(weapon, /obj/item/stock_parts/cell))
|
||||
if(cell)
|
||||
to_chat(user, "<span class='warning'>You have already inserted a cell!</span>")
|
||||
to_chat(user, span_warning("You have already inserted a cell!"))
|
||||
return
|
||||
else
|
||||
if(!user.transferItemToLoc(weapon, src))
|
||||
return
|
||||
cell = weapon
|
||||
to_chat(user, "<span class='notice'>You insert the cell.</span>")
|
||||
to_chat(user, span_notice("You insert the cell."))
|
||||
else if(istype(weapon, /obj/item/stack/cable_coil))
|
||||
if(wired)
|
||||
to_chat(user, "<span class='warning'>You have already inserted wire!</span>")
|
||||
to_chat(user, span_warning("You have already inserted wire!"))
|
||||
return
|
||||
var/obj/item/stack/cable_coil/coil = weapon
|
||||
if (coil.use(1))
|
||||
wired = TRUE
|
||||
to_chat(user, "<span class='notice'>You insert the wire.</span>")
|
||||
to_chat(user, span_notice("You insert the wire."))
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You need one length of coil to wire it!</span>")
|
||||
to_chat(user, span_warning("You need one length of coil to wire it!"))
|
||||
else
|
||||
return ..()
|
||||
|
||||
@@ -166,7 +166,7 @@
|
||||
return
|
||||
. = TRUE
|
||||
cutter.play_tool_sound(src)
|
||||
to_chat(user, "<span class='notice'>You cut the wires out of [src].</span>")
|
||||
to_chat(user, span_notice("You cut the wires out of [src]."))
|
||||
new /obj/item/stack/cable_coil(drop_location(), 1)
|
||||
wired = FALSE
|
||||
|
||||
@@ -174,10 +174,10 @@
|
||||
..()
|
||||
. = TRUE
|
||||
if(!cell)
|
||||
to_chat(user, "<span class='warning'>There's no power cell installed in [src]!</span>")
|
||||
to_chat(user, span_warning("There's no power cell installed in [src]!"))
|
||||
return
|
||||
screwtool.play_tool_sound(src)
|
||||
to_chat(user, "<span class='notice'>Remove [cell] from [src].</span>")
|
||||
to_chat(user, span_notice("Remove [cell] from [src]."))
|
||||
cell.forceMove(drop_location())
|
||||
cell = null
|
||||
|
||||
@@ -186,14 +186,14 @@
|
||||
. = ..()
|
||||
if(cell)
|
||||
. += {"It has a [cell] inserted.\n
|
||||
<span class='info'>You can use a <b>screwdriver</b> to remove [cell].</span>"}
|
||||
[span_info("You can use a <b>screwdriver</b> to remove [cell].")]"}
|
||||
else
|
||||
. += "<span class='info'>It has an empty port for a <b>power cell</b>.</span>"
|
||||
. += span_info("It has an empty port for a <b>power cell</b>.")
|
||||
if(wired)
|
||||
. += "Its all wired up[cell ? " and ready for usage" : ""].\n"+\
|
||||
"<span class='info'>You can use <b>wirecutters</b> to remove the wiring.</span>"
|
||||
span_info("You can use <b>wirecutters</b> to remove the wiring.")
|
||||
else
|
||||
. += "<span class='info'>It has a couple spots that still need to be <b>wired</b>.</span>"
|
||||
. += span_info("It has a couple spots that still need to be <b>wired</b>.")
|
||||
|
||||
/obj/item/bodypart/chest/robot/drop_organs(mob/user, violent_removal)
|
||||
if(wired)
|
||||
@@ -244,25 +244,25 @@
|
||||
/obj/item/bodypart/head/robot/examine(mob/user)
|
||||
. = ..()
|
||||
if(!flash1 && !flash2)
|
||||
. += "<span class='info'>It has two empty eye sockets for <b>flashes</b>.</span>"
|
||||
. += span_info("It has two empty eye sockets for <b>flashes</b>.")
|
||||
else
|
||||
var/single_flash = FALSE
|
||||
if(!flash1 || !flash2)
|
||||
single_flash = TRUE
|
||||
. += {"One of its eye sockets is currently occupied by a flash.\n
|
||||
<span class='info'>It has an empty eye socket for another <b>flash</b>.</span>"}
|
||||
[span_info("It has an empty eye socket for another <b>flash</b>.")]"}
|
||||
else
|
||||
. += "It has two eye sockets occupied by flashes."
|
||||
. += "<span class='notice'>You can remove the seated flash[single_flash ? "":"es"] with a <b>crowbar</b>.</span>"
|
||||
. += span_notice("You can remove the seated flash[single_flash ? "":"es"] with a <b>crowbar</b>.")
|
||||
|
||||
/obj/item/bodypart/head/robot/attackby(obj/item/weapon, mob/user, params)
|
||||
if(istype(weapon, /obj/item/assembly/flash/handheld))
|
||||
var/obj/item/assembly/flash/handheld/flash = weapon
|
||||
if(flash1 && flash2)
|
||||
to_chat(user, "<span class='warning'>You have already inserted the eyes!</span>")
|
||||
to_chat(user, span_warning("You have already inserted the eyes!"))
|
||||
return
|
||||
else if(flash.burnt_out)
|
||||
to_chat(user, "<span class='warning'>You can't use a broken flash!</span>")
|
||||
to_chat(user, span_warning("You can't use a broken flash!"))
|
||||
return
|
||||
else
|
||||
if(!user.transferItemToLoc(flash, src))
|
||||
@@ -271,7 +271,7 @@
|
||||
flash2 = flash
|
||||
else
|
||||
flash1 = flash
|
||||
to_chat(user, "<span class='notice'>You insert the flash into the eye socket.</span>")
|
||||
to_chat(user, span_notice("You insert the flash into the eye socket."))
|
||||
return
|
||||
return ..()
|
||||
|
||||
@@ -279,7 +279,7 @@
|
||||
..()
|
||||
if(flash1 || flash2)
|
||||
prytool.play_tool_sound(src)
|
||||
to_chat(user, "<span class='notice'>You remove the flash from [src].</span>")
|
||||
to_chat(user, span_notice("You remove the flash from [src]."))
|
||||
if(flash1)
|
||||
flash1.forceMove(drop_location())
|
||||
flash1 = null
|
||||
@@ -287,7 +287,7 @@
|
||||
flash2.forceMove(drop_location())
|
||||
flash2 = null
|
||||
else
|
||||
to_chat(user, "<span class='warning'>There is no flash to remove from [src].</span>")
|
||||
to_chat(user, span_warning("There is no flash to remove from [src]."))
|
||||
return TRUE
|
||||
|
||||
|
||||
|
||||
@@ -58,24 +58,24 @@
|
||||
|
||||
/datum/surgery_step/repair_bone_hairline/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
if(surgery.operated_wound)
|
||||
display_results(user, target, "<span class='notice'>You begin to repair the fracture in [target]'s [parse_zone(user.zone_selected)]...</span>",
|
||||
"<span class='notice'>[user] begins to repair the fracture in [target]'s [parse_zone(user.zone_selected)] with [tool].</span>",
|
||||
"<span class='notice'>[user] begins to repair the fracture in [target]'s [parse_zone(user.zone_selected)].</span>")
|
||||
display_results(user, target, span_notice("You begin to repair the fracture in [target]'s [parse_zone(user.zone_selected)]..."),
|
||||
span_notice("[user] begins to repair the fracture in [target]'s [parse_zone(user.zone_selected)] with [tool]."),
|
||||
span_notice("[user] begins to repair the fracture in [target]'s [parse_zone(user.zone_selected)]."))
|
||||
else
|
||||
user.visible_message("<span class='notice'>[user] looks for [target]'s [parse_zone(user.zone_selected)].</span>", "<span class='notice'>You look for [target]'s [parse_zone(user.zone_selected)]...</span>")
|
||||
user.visible_message(span_notice("[user] looks for [target]'s [parse_zone(user.zone_selected)]."), span_notice("You look for [target]'s [parse_zone(user.zone_selected)]..."))
|
||||
|
||||
/datum/surgery_step/repair_bone_hairline/success(mob/living/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
|
||||
if(surgery.operated_wound)
|
||||
if(istype(tool, /obj/item/stack))
|
||||
var/obj/item/stack/used_stack = tool
|
||||
used_stack.use(1)
|
||||
display_results(user, target, "<span class='notice'>You successfully repair the fracture in [target]'s [parse_zone(target_zone)].</span>",
|
||||
"<span class='notice'>[user] successfully repairs the fracture in [target]'s [parse_zone(target_zone)] with [tool]!</span>",
|
||||
"<span class='notice'>[user] successfully repairs the fracture in [target]'s [parse_zone(target_zone)]!</span>")
|
||||
display_results(user, target, span_notice("You successfully repair the fracture in [target]'s [parse_zone(target_zone)]."),
|
||||
span_notice("[user] successfully repairs the fracture in [target]'s [parse_zone(target_zone)] with [tool]!"),
|
||||
span_notice("[user] successfully repairs the fracture in [target]'s [parse_zone(target_zone)]!"))
|
||||
log_combat(user, target, "repaired a hairline fracture in", addition="COMBAT_MODE: [uppertext(user.combat_mode)]")
|
||||
qdel(surgery.operated_wound)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>[target] has no hairline fracture there!</span>")
|
||||
to_chat(user, span_warning("[target] has no hairline fracture there!"))
|
||||
return ..()
|
||||
|
||||
/datum/surgery_step/repair_bone_hairline/failure(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery, fail_prob = 0)
|
||||
@@ -98,23 +98,23 @@
|
||||
|
||||
/datum/surgery_step/reset_compound_fracture/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
if(surgery.operated_wound)
|
||||
display_results(user, target, "<span class='notice'>You begin to reset the bone in [target]'s [parse_zone(user.zone_selected)]...</span>",
|
||||
"<span class='notice'>[user] begins to reset the bone in [target]'s [parse_zone(user.zone_selected)] with [tool].</span>",
|
||||
"<span class='notice'>[user] begins to reset the bone in [target]'s [parse_zone(user.zone_selected)].</span>")
|
||||
display_results(user, target, span_notice("You begin to reset the bone in [target]'s [parse_zone(user.zone_selected)]..."),
|
||||
span_notice("[user] begins to reset the bone in [target]'s [parse_zone(user.zone_selected)] with [tool]."),
|
||||
span_notice("[user] begins to reset the bone in [target]'s [parse_zone(user.zone_selected)]."))
|
||||
else
|
||||
user.visible_message("<span class='notice'>[user] looks for [target]'s [parse_zone(user.zone_selected)].</span>", "<span class='notice'>You look for [target]'s [parse_zone(user.zone_selected)]...</span>")
|
||||
user.visible_message(span_notice("[user] looks for [target]'s [parse_zone(user.zone_selected)]."), span_notice("You look for [target]'s [parse_zone(user.zone_selected)]..."))
|
||||
|
||||
/datum/surgery_step/reset_compound_fracture/success(mob/living/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
|
||||
if(surgery.operated_wound)
|
||||
if(istype(tool, /obj/item/stack))
|
||||
var/obj/item/stack/used_stack = tool
|
||||
used_stack.use(1)
|
||||
display_results(user, target, "<span class='notice'>You successfully reset the bone in [target]'s [parse_zone(target_zone)].</span>",
|
||||
"<span class='notice'>[user] successfully resets the bone in [target]'s [parse_zone(target_zone)] with [tool]!</span>",
|
||||
"<span class='notice'>[user] successfully resets the bone in [target]'s [parse_zone(target_zone)]!</span>")
|
||||
display_results(user, target, span_notice("You successfully reset the bone in [target]'s [parse_zone(target_zone)]."),
|
||||
span_notice("[user] successfully resets the bone in [target]'s [parse_zone(target_zone)] with [tool]!"),
|
||||
span_notice("[user] successfully resets the bone in [target]'s [parse_zone(target_zone)]!"))
|
||||
log_combat(user, target, "reset a compound fracture in", addition="COMBAT MODE: [uppertext(user.combat_mode)]")
|
||||
else
|
||||
to_chat(user, "<span class='warning'>[target] has no compound fracture there!</span>")
|
||||
to_chat(user, span_warning("[target] has no compound fracture there!"))
|
||||
return ..()
|
||||
|
||||
/datum/surgery_step/reset_compound_fracture/failure(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery, fail_prob = 0)
|
||||
@@ -136,24 +136,24 @@
|
||||
|
||||
/datum/surgery_step/repair_bone_compound/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
if(surgery.operated_wound)
|
||||
display_results(user, target, "<span class='notice'>You begin to repair the fracture in [target]'s [parse_zone(user.zone_selected)]...</span>",
|
||||
"<span class='notice'>[user] begins to repair the fracture in [target]'s [parse_zone(user.zone_selected)] with [tool].</span>",
|
||||
"<span class='notice'>[user] begins to repair the fracture in [target]'s [parse_zone(user.zone_selected)].</span>")
|
||||
display_results(user, target, span_notice("You begin to repair the fracture in [target]'s [parse_zone(user.zone_selected)]..."),
|
||||
span_notice("[user] begins to repair the fracture in [target]'s [parse_zone(user.zone_selected)] with [tool]."),
|
||||
span_notice("[user] begins to repair the fracture in [target]'s [parse_zone(user.zone_selected)]."))
|
||||
else
|
||||
user.visible_message("<span class='notice'>[user] looks for [target]'s [parse_zone(user.zone_selected)].</span>", "<span class='notice'>You look for [target]'s [parse_zone(user.zone_selected)]...</span>")
|
||||
user.visible_message(span_notice("[user] looks for [target]'s [parse_zone(user.zone_selected)]."), span_notice("You look for [target]'s [parse_zone(user.zone_selected)]..."))
|
||||
|
||||
/datum/surgery_step/repair_bone_compound/success(mob/living/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
|
||||
if(surgery.operated_wound)
|
||||
if(istype(tool, /obj/item/stack))
|
||||
var/obj/item/stack/used_stack = tool
|
||||
used_stack.use(1)
|
||||
display_results(user, target, "<span class='notice'>You successfully repair the fracture in [target]'s [parse_zone(target_zone)].</span>",
|
||||
"<span class='notice'>[user] successfully repairs the fracture in [target]'s [parse_zone(target_zone)] with [tool]!</span>",
|
||||
"<span class='notice'>[user] successfully repairs the fracture in [target]'s [parse_zone(target_zone)]!</span>")
|
||||
display_results(user, target, span_notice("You successfully repair the fracture in [target]'s [parse_zone(target_zone)]."),
|
||||
span_notice("[user] successfully repairs the fracture in [target]'s [parse_zone(target_zone)] with [tool]!"),
|
||||
span_notice("[user] successfully repairs the fracture in [target]'s [parse_zone(target_zone)]!"))
|
||||
log_combat(user, target, "repaired a compound fracture in", addition="COMBAT MODE: [uppertext(user.combat_mode)]")
|
||||
qdel(surgery.operated_wound)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>[target] has no compound fracture there!</span>")
|
||||
to_chat(user, span_warning("[target] has no compound fracture there!"))
|
||||
return ..()
|
||||
|
||||
/datum/surgery_step/repair_bone_compound/failure(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery, fail_prob = 0)
|
||||
|
||||
@@ -28,14 +28,14 @@
|
||||
return TRUE
|
||||
|
||||
/datum/surgery_step/fix_brain/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You begin to fix [target]'s brain...</span>",
|
||||
"<span class='notice'>[user] begins to fix [target]'s brain.</span>",
|
||||
"<span class='notice'>[user] begins to perform surgery on [target]'s brain.</span>")
|
||||
display_results(user, target, span_notice("You begin to fix [target]'s brain..."),
|
||||
span_notice("[user] begins to fix [target]'s brain."),
|
||||
span_notice("[user] begins to perform surgery on [target]'s brain."))
|
||||
|
||||
/datum/surgery_step/fix_brain/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
|
||||
display_results(user, target, "<span class='notice'>You succeed in fixing [target]'s brain.</span>",
|
||||
"<span class='notice'>[user] successfully fixes [target]'s brain!</span>",
|
||||
"<span class='notice'>[user] completes the surgery on [target]'s brain.</span>")
|
||||
display_results(user, target, span_notice("You succeed in fixing [target]'s brain."),
|
||||
span_notice("[user] successfully fixes [target]'s brain!"),
|
||||
span_notice("[user] completes the surgery on [target]'s brain."))
|
||||
if(target.mind?.has_antag_datum(/datum/antagonist/brainwashed))
|
||||
target.mind.remove_antag_datum(/datum/antagonist/brainwashed)
|
||||
target.setOrganLoss(ORGAN_SLOT_BRAIN, target.getOrganLoss(ORGAN_SLOT_BRAIN) - 50) //we set damage in this case in order to clear the "failing" flag
|
||||
@@ -46,11 +46,11 @@
|
||||
|
||||
/datum/surgery_step/fix_brain/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
if(target.getorganslot(ORGAN_SLOT_BRAIN))
|
||||
display_results(user, target, "<span class='warning'>You screw up, causing more damage!</span>",
|
||||
"<span class='warning'>[user] screws up, causing brain damage!</span>",
|
||||
"<span class='notice'>[user] completes the surgery on [target]'s brain.</span>")
|
||||
display_results(user, target, span_warning("You screw up, causing more damage!"),
|
||||
span_warning("[user] screws up, causing brain damage!"),
|
||||
span_notice("[user] completes the surgery on [target]'s brain."))
|
||||
target.adjustOrganLoss(ORGAN_SLOT_BRAIN, 60)
|
||||
target.gain_trauma_type(BRAIN_TRAUMA_SEVERE, TRAUMA_RESILIENCE_LOBOTOMY)
|
||||
else
|
||||
user.visible_message("<span class='warning'>[user] suddenly notices that the brain [user.p_they()] [user.p_were()] working on is not there anymore.</span>", "<span class='warning'>You suddenly notice that the brain you were working on is not there anymore.</span>")
|
||||
user.visible_message(span_warning("[user] suddenly notices that the brain [user.p_they()] [user.p_were()] working on is not there anymore."), span_warning("You suddenly notice that the brain you were working on is not there anymore."))
|
||||
return FALSE
|
||||
|
||||
@@ -60,23 +60,23 @@
|
||||
if(surgery.operated_wound)
|
||||
var/datum/wound/burn/burn_wound = surgery.operated_wound
|
||||
if(burn_wound.infestation <= 0)
|
||||
to_chat(user, "<span class='notice'>[target]'s [parse_zone(user.zone_selected)] has no infected flesh to remove!</span>")
|
||||
to_chat(user, span_notice("[target]'s [parse_zone(user.zone_selected)] has no infected flesh to remove!"))
|
||||
surgery.status++
|
||||
repeatable = FALSE
|
||||
return
|
||||
display_results(user, target, "<span class='notice'>You begin to excise infected flesh from [target]'s [parse_zone(user.zone_selected)]...</span>",
|
||||
"<span class='notice'>[user] begins to excise infected flesh from [target]'s [parse_zone(user.zone_selected)] with [tool].</span>",
|
||||
"<span class='notice'>[user] begins to excise infected flesh from [target]'s [parse_zone(user.zone_selected)].</span>")
|
||||
display_results(user, target, span_notice("You begin to excise infected flesh from [target]'s [parse_zone(user.zone_selected)]..."),
|
||||
span_notice("[user] begins to excise infected flesh from [target]'s [parse_zone(user.zone_selected)] with [tool]."),
|
||||
span_notice("[user] begins to excise infected flesh from [target]'s [parse_zone(user.zone_selected)]."))
|
||||
else
|
||||
user.visible_message("<span class='notice'>[user] looks for [target]'s [parse_zone(user.zone_selected)].</span>", "<span class='notice'>You look for [target]'s [parse_zone(user.zone_selected)]...</span>")
|
||||
user.visible_message(span_notice("[user] looks for [target]'s [parse_zone(user.zone_selected)]."), span_notice("You look for [target]'s [parse_zone(user.zone_selected)]..."))
|
||||
|
||||
/datum/surgery_step/debride/success(mob/living/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
|
||||
var/datum/wound/burn/burn_wound = surgery.operated_wound
|
||||
if(burn_wound)
|
||||
var/progress_text = get_progress(user, target, burn_wound)
|
||||
display_results(user, target, "<span class='notice'>You successfully excise some of the infected flesh from [target]'s [parse_zone(target_zone)][progress_text].</span>",
|
||||
"<span class='notice'>[user] successfully excises some of the infected flesh from [target]'s [parse_zone(target_zone)] with [tool]!</span>",
|
||||
"<span class='notice'>[user] successfully excises some of the infected flesh from [target]'s [parse_zone(target_zone)]!</span>")
|
||||
display_results(user, target, span_notice("You successfully excise some of the infected flesh from [target]'s [parse_zone(target_zone)][progress_text]."),
|
||||
span_notice("[user] successfully excises some of the infected flesh from [target]'s [parse_zone(target_zone)] with [tool]!"),
|
||||
span_notice("[user] successfully excises some of the infected flesh from [target]'s [parse_zone(target_zone)]!"))
|
||||
log_combat(user, target, "excised infected flesh in", addition="COMBAT MODE: [uppertext(user.combat_mode)]")
|
||||
surgery.operated_bodypart.receive_damage(brute=3, wound_bonus=CANT_WOUND)
|
||||
burn_wound.infestation -= infestation_removed
|
||||
@@ -84,14 +84,14 @@
|
||||
if(burn_wound.infestation <= 0)
|
||||
repeatable = FALSE
|
||||
else
|
||||
to_chat(user, "<span class='warning'>[target] has no infected flesh there!</span>")
|
||||
to_chat(user, span_warning("[target] has no infected flesh there!"))
|
||||
return ..()
|
||||
|
||||
/datum/surgery_step/debride/failure(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery, fail_prob = 0)
|
||||
..()
|
||||
display_results(user, target, "<span class='notice'>You carve away some of the healthy flesh from [target]'s [parse_zone(target_zone)].</span>",
|
||||
"<span class='notice'>[user] carves away some of the healthy flesh from [target]'s [parse_zone(target_zone)] with [tool]!</span>",
|
||||
"<span class='notice'>[user] carves away some of the healthy flesh from [target]'s [parse_zone(target_zone)]!</span>")
|
||||
display_results(user, target, span_notice("You carve away some of the healthy flesh from [target]'s [parse_zone(target_zone)]."),
|
||||
span_notice("[user] carves away some of the healthy flesh from [target]'s [parse_zone(target_zone)] with [tool]!"),
|
||||
span_notice("[user] carves away some of the healthy flesh from [target]'s [parse_zone(target_zone)]!"))
|
||||
surgery.operated_bodypart.receive_damage(brute=rand(4,8), sharpness=TRUE)
|
||||
|
||||
/datum/surgery_step/debride/initiate(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, try_to_fail = FALSE)
|
||||
@@ -118,25 +118,25 @@
|
||||
/datum/surgery_step/dress/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
var/datum/wound/burn/burn_wound = surgery.operated_wound
|
||||
if(burn_wound)
|
||||
display_results(user, target, "<span class='notice'>You begin to dress the burns on [target]'s [parse_zone(user.zone_selected)]...</span>",
|
||||
"<span class='notice'>[user] begins to dress the burns on [target]'s [parse_zone(user.zone_selected)] with [tool].</span>",
|
||||
"<span class='notice'>[user] begins to dress the burns on [target]'s [parse_zone(user.zone_selected)].</span>")
|
||||
display_results(user, target, span_notice("You begin to dress the burns on [target]'s [parse_zone(user.zone_selected)]..."),
|
||||
span_notice("[user] begins to dress the burns on [target]'s [parse_zone(user.zone_selected)] with [tool]."),
|
||||
span_notice("[user] begins to dress the burns on [target]'s [parse_zone(user.zone_selected)]."))
|
||||
else
|
||||
user.visible_message("<span class='notice'>[user] looks for [target]'s [parse_zone(user.zone_selected)].</span>", "<span class='notice'>You look for [target]'s [parse_zone(user.zone_selected)]...</span>")
|
||||
user.visible_message(span_notice("[user] looks for [target]'s [parse_zone(user.zone_selected)]."), span_notice("You look for [target]'s [parse_zone(user.zone_selected)]..."))
|
||||
|
||||
/datum/surgery_step/dress/success(mob/living/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
|
||||
var/datum/wound/burn/burn_wound = surgery.operated_wound
|
||||
if(burn_wound)
|
||||
display_results(user, target, "<span class='notice'>You successfully wrap [target]'s [parse_zone(target_zone)] with [tool].</span>",
|
||||
"<span class='notice'>[user] successfully wraps [target]'s [parse_zone(target_zone)] with [tool]!</span>",
|
||||
"<span class='notice'>[user] successfully wraps [target]'s [parse_zone(target_zone)]!</span>")
|
||||
display_results(user, target, span_notice("You successfully wrap [target]'s [parse_zone(target_zone)] with [tool]."),
|
||||
span_notice("[user] successfully wraps [target]'s [parse_zone(target_zone)] with [tool]!"),
|
||||
span_notice("[user] successfully wraps [target]'s [parse_zone(target_zone)]!"))
|
||||
log_combat(user, target, "dressed burns in", addition="COMBAT MODE: [uppertext(user.combat_mode)]")
|
||||
burn_wound.sanitization += sanitization_added
|
||||
burn_wound.flesh_healing += flesh_healing_added
|
||||
var/obj/item/bodypart/the_part = target.get_bodypart(target_zone)
|
||||
the_part.apply_gauze(tool)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>[target] has no burns there!</span>")
|
||||
to_chat(user, span_warning("[target] has no burns there!"))
|
||||
return ..()
|
||||
|
||||
/datum/surgery_step/dress/failure(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery, fail_prob = 0)
|
||||
|
||||
@@ -29,35 +29,35 @@
|
||||
var/obj/item/bodypart/chest/target_chest = target.get_bodypart(BODY_ZONE_CHEST)
|
||||
item_for_cavity = target_chest.cavity_item
|
||||
if(tool)
|
||||
display_results(user, target, "<span class='notice'>You begin to insert [tool] into [target]'s [target_zone]...</span>",
|
||||
"<span class='notice'>[user] begins to insert [tool] into [target]'s [target_zone].</span>",
|
||||
"<span class='notice'>[user] begins to insert [tool.w_class > WEIGHT_CLASS_SMALL ? tool : "something"] into [target]'s [target_zone].</span>")
|
||||
display_results(user, target, span_notice("You begin to insert [tool] into [target]'s [target_zone]..."),
|
||||
span_notice("[user] begins to insert [tool] into [target]'s [target_zone]."),
|
||||
span_notice("[user] begins to insert [tool.w_class > WEIGHT_CLASS_SMALL ? tool : "something"] into [target]'s [target_zone]."))
|
||||
else
|
||||
display_results(user, target, "<span class='notice'>You check for items in [target]'s [target_zone]...</span>",
|
||||
"<span class='notice'>[user] checks for items in [target]'s [target_zone].</span>",
|
||||
"<span class='notice'>[user] looks for something in [target]'s [target_zone].</span>")
|
||||
display_results(user, target, span_notice("You check for items in [target]'s [target_zone]..."),
|
||||
span_notice("[user] checks for items in [target]'s [target_zone]."),
|
||||
span_notice("[user] looks for something in [target]'s [target_zone]."))
|
||||
|
||||
/datum/surgery_step/handle_cavity/success(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery = FALSE)
|
||||
var/obj/item/bodypart/chest/target_chest = target.get_bodypart(BODY_ZONE_CHEST)
|
||||
if(tool)
|
||||
if(item_for_cavity || tool.w_class > WEIGHT_CLASS_NORMAL || HAS_TRAIT(tool, TRAIT_NODROP) || istype(tool, /obj/item/organ))
|
||||
to_chat(user, "<span class='warning'>You can't seem to fit [tool] in [target]'s [target_zone]!</span>")
|
||||
to_chat(user, span_warning("You can't seem to fit [tool] in [target]'s [target_zone]!"))
|
||||
return FALSE
|
||||
else
|
||||
display_results(user, target, "<span class='notice'>You stuff [tool] into [target]'s [target_zone].</span>",
|
||||
"<span class='notice'>[user] stuffs [tool] into [target]'s [target_zone]!</span>",
|
||||
"<span class='notice'>[user] stuffs [tool.w_class > WEIGHT_CLASS_SMALL ? tool : "something"] into [target]'s [target_zone].</span>")
|
||||
display_results(user, target, span_notice("You stuff [tool] into [target]'s [target_zone]."),
|
||||
span_notice("[user] stuffs [tool] into [target]'s [target_zone]!"),
|
||||
span_notice("[user] stuffs [tool.w_class > WEIGHT_CLASS_SMALL ? tool : "something"] into [target]'s [target_zone]."))
|
||||
user.transferItemToLoc(tool, target, TRUE)
|
||||
target_chest.cavity_item = tool
|
||||
return ..()
|
||||
else
|
||||
if(item_for_cavity)
|
||||
display_results(user, target, "<span class='notice'>You pull [item_for_cavity] out of [target]'s [target_zone].</span>",
|
||||
"<span class='notice'>[user] pulls [item_for_cavity] out of [target]'s [target_zone]!</span>",
|
||||
"<span class='notice'>[user] pulls [item_for_cavity.w_class > WEIGHT_CLASS_SMALL ? item_for_cavity : "something"] out of [target]'s [target_zone].</span>")
|
||||
display_results(user, target, span_notice("You pull [item_for_cavity] out of [target]'s [target_zone]."),
|
||||
span_notice("[user] pulls [item_for_cavity] out of [target]'s [target_zone]!"),
|
||||
span_notice("[user] pulls [item_for_cavity.w_class > WEIGHT_CLASS_SMALL ? item_for_cavity : "something"] out of [target]'s [target_zone]."))
|
||||
user.put_in_hands(item_for_cavity)
|
||||
target_chest.cavity_item = null
|
||||
return ..()
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You don't find anything in [target]'s [target_zone].</span>")
|
||||
to_chat(user, span_warning("You don't find anything in [target]'s [target_zone]."))
|
||||
return FALSE
|
||||
|
||||
@@ -22,17 +22,17 @@
|
||||
time = 16
|
||||
|
||||
/datum/surgery_step/extract_core/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You begin to extract a core from [target]...</span>",
|
||||
"<span class='notice'>[user] begins to extract a core from [target].</span>",
|
||||
"<span class='notice'>[user] begins to extract a core from [target].</span>")
|
||||
display_results(user, target, span_notice("You begin to extract a core from [target]..."),
|
||||
span_notice("[user] begins to extract a core from [target]."),
|
||||
span_notice("[user] begins to extract a core from [target]."))
|
||||
|
||||
/datum/surgery_step/extract_core/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
|
||||
var/mob/living/simple_animal/slime/target_slime = target
|
||||
if(target_slime.cores > 0)
|
||||
target_slime.cores--
|
||||
display_results(user, target, "<span class='notice'>You successfully extract a core from [target]. [target_slime.cores] core\s remaining.</span>",
|
||||
"<span class='notice'>[user] successfully extracts a core from [target]!</span>",
|
||||
"<span class='notice'>[user] successfully extracts a core from [target]!</span>")
|
||||
display_results(user, target, span_notice("You successfully extract a core from [target]. [target_slime.cores] core\s remaining."),
|
||||
span_notice("[user] successfully extracts a core from [target]!"),
|
||||
span_notice("[user] successfully extracts a core from [target]!"))
|
||||
|
||||
new target_slime.coretype(target_slime.loc)
|
||||
|
||||
@@ -42,5 +42,5 @@
|
||||
else
|
||||
return FALSE
|
||||
else
|
||||
to_chat(user, "<span class='warning'>There aren't any cores left in [target]!</span>")
|
||||
to_chat(user, span_warning("There aren't any cores left in [target]!"))
|
||||
return ..()
|
||||
|
||||
@@ -29,16 +29,16 @@
|
||||
time = 16
|
||||
|
||||
/datum/surgery_step/incise_heart/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You begin to make an incision in [target]'s heart...</span>",
|
||||
"<span class='notice'>[user] begins to make an incision in [target]'s heart.</span>",
|
||||
"<span class='notice'>[user] begins to make an incision in [target]'s heart.</span>")
|
||||
display_results(user, target, span_notice("You begin to make an incision in [target]'s heart..."),
|
||||
span_notice("[user] begins to make an incision in [target]'s heart."),
|
||||
span_notice("[user] begins to make an incision in [target]'s heart."))
|
||||
|
||||
/datum/surgery_step/incise_heart/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
|
||||
if(ishuman(target))
|
||||
var/mob/living/carbon/human/target_human = target
|
||||
if (!(NOBLOOD in target_human.dna.species.species_traits))
|
||||
display_results(user, target, "<span class='notice'>Blood pools around the incision in [target_human]'s heart.</span>",
|
||||
"<span class='notice'>Blood pools around the incision in [target_human]'s heart.</span>",
|
||||
display_results(user, target, span_notice("Blood pools around the incision in [target_human]'s heart."),
|
||||
span_notice("Blood pools around the incision in [target_human]'s heart."),
|
||||
"")
|
||||
var/obj/item/bodypart/target_bodypart = target_human.get_bodypart(target_zone)
|
||||
target_bodypart.generic_bleedstacks += 10
|
||||
@@ -48,9 +48,9 @@
|
||||
/datum/surgery_step/incise_heart/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
if(ishuman(target))
|
||||
var/mob/living/carbon/human/target_human = target
|
||||
display_results(user, target, "<span class='warning'>You screw up, cutting too deeply into the heart!</span>",
|
||||
"<span class='warning'>[user] screws up, causing blood to spurt out of [target_human]'s chest!</span>",
|
||||
"<span class='warning'>[user] screws up, causing blood to spurt out of [target_human]'s chest!</span>")
|
||||
display_results(user, target, span_warning("You screw up, cutting too deeply into the heart!"),
|
||||
span_warning("[user] screws up, causing blood to spurt out of [target_human]'s chest!"),
|
||||
span_warning("[user] screws up, causing blood to spurt out of [target_human]'s chest!"))
|
||||
var/obj/item/bodypart/target_bodypart = target_human.get_bodypart(target_zone)
|
||||
target_bodypart.generic_bleedstacks += 10
|
||||
target_human.adjustOrganLoss(ORGAN_SLOT_HEART, 10)
|
||||
@@ -67,26 +67,26 @@
|
||||
time = 90
|
||||
|
||||
/datum/surgery_step/coronary_bypass/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You begin to graft a bypass onto [target]'s heart...</span>",
|
||||
"<span class='notice'>[user] begins to graft something onto [target]'s heart!</span>",
|
||||
"<span class='notice'>[user] begins to graft something onto [target]'s heart!</span>")
|
||||
display_results(user, target, span_notice("You begin to graft a bypass onto [target]'s heart..."),
|
||||
span_notice("[user] begins to graft something onto [target]'s heart!"),
|
||||
span_notice("[user] begins to graft something onto [target]'s heart!"))
|
||||
|
||||
/datum/surgery_step/coronary_bypass/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
|
||||
target.setOrganLoss(ORGAN_SLOT_HEART, 60)
|
||||
var/obj/item/organ/heart/target_heart = target.getorganslot(ORGAN_SLOT_HEART)
|
||||
if(target_heart) //slightly worrying if we lost our heart mid-operation, but that's life
|
||||
target_heart.operated = TRUE
|
||||
display_results(user, target, "<span class='notice'>You successfully graft a bypass onto [target]'s heart.</span>",
|
||||
"<span class='notice'>[user] finishes grafting something onto [target]'s heart.</span>",
|
||||
"<span class='notice'>[user] finishes grafting something onto [target]'s heart.</span>")
|
||||
display_results(user, target, span_notice("You successfully graft a bypass onto [target]'s heart."),
|
||||
span_notice("[user] finishes grafting something onto [target]'s heart."),
|
||||
span_notice("[user] finishes grafting something onto [target]'s heart."))
|
||||
return ..()
|
||||
|
||||
/datum/surgery_step/coronary_bypass/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
if(ishuman(target))
|
||||
var/mob/living/carbon/human/target_human = target
|
||||
display_results(user, target, "<span class='warning'>You screw up in attaching the graft, and it tears off, tearing part of the heart!</span>",
|
||||
"<span class='warning'>[user] screws up, causing blood to spurt out of [target_human]'s chest profusely!</span>",
|
||||
"<span class='warning'>[user] screws up, causing blood to spurt out of [target_human]'s chest profusely!</span>")
|
||||
display_results(user, target, span_warning("You screw up in attaching the graft, and it tears off, tearing part of the heart!"),
|
||||
span_warning("[user] screws up, causing blood to spurt out of [target_human]'s chest profusely!"),
|
||||
span_warning("[user] screws up, causing blood to spurt out of [target_human]'s chest profusely!"))
|
||||
target_human.adjustOrganLoss(ORGAN_SLOT_HEART, 20)
|
||||
var/obj/item/bodypart/target_bodypart = target_human.get_bodypart(target_zone)
|
||||
target_bodypart.generic_bleedstacks += 30
|
||||
|
||||
@@ -11,9 +11,9 @@
|
||||
time = 16
|
||||
|
||||
/datum/surgery_step/insert_pill/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You begin to wedge [tool] in [target]'s [parse_zone(target_zone)]...</span>",
|
||||
"<span class='notice'>[user] begins to wedge \the [tool] in [target]'s [parse_zone(target_zone)].</span>",
|
||||
"<span class='notice'>[user] begins to wedge something in [target]'s [parse_zone(target_zone)].</span>")
|
||||
display_results(user, target, span_notice("You begin to wedge [tool] in [target]'s [parse_zone(target_zone)]..."),
|
||||
span_notice("[user] begins to wedge \the [tool] in [target]'s [parse_zone(target_zone)]."),
|
||||
span_notice("[user] begins to wedge something in [target]'s [parse_zone(target_zone)]."))
|
||||
|
||||
/datum/surgery_step/insert_pill/success(mob/user, mob/living/carbon/target, target_zone, obj/item/reagent_containers/pill/tool, datum/surgery/surgery, default_display_results = FALSE)
|
||||
if(!istype(tool))
|
||||
@@ -26,9 +26,9 @@
|
||||
pill_action.target = tool
|
||||
pill_action.Grant(target) //The pill never actually goes in an inventory slot, so the owner doesn't inherit actions from it
|
||||
|
||||
display_results(user, target, "<span class='notice'>You wedge [tool] into [target]'s [parse_zone(target_zone)].</span>",
|
||||
"<span class='notice'>[user] wedges \the [tool] into [target]'s [parse_zone(target_zone)]!</span>",
|
||||
"<span class='notice'>[user] wedges something into [target]'s [parse_zone(target_zone)]!</span>")
|
||||
display_results(user, target, span_notice("You wedge [tool] into [target]'s [parse_zone(target_zone)]."),
|
||||
span_notice("[user] wedges \the [tool] into [target]'s [parse_zone(target_zone)]!"),
|
||||
span_notice("[user] wedges something into [target]'s [parse_zone(target_zone)]!"))
|
||||
return ..()
|
||||
|
||||
/datum/action/item_action/hands_free/activate_pill
|
||||
@@ -37,7 +37,7 @@
|
||||
/datum/action/item_action/hands_free/activate_pill/Trigger()
|
||||
if(!..())
|
||||
return FALSE
|
||||
to_chat(owner, "<span class='notice'>You grit your teeth and burst the implanted [target.name]!</span>")
|
||||
to_chat(owner, span_notice("You grit your teeth and burst the implanted [target.name]!"))
|
||||
log_combat(owner, null, "swallowed an implanted pill", target)
|
||||
if(target.reagents.total_volume)
|
||||
target.reagents.trans_to(owner, target.reagents.total_volume, transfered_by = owner, methods = INGEST)
|
||||
|
||||
@@ -22,21 +22,21 @@
|
||||
/datum/surgery/eye_surgery/can_start(mob/user, mob/living/carbon/target)
|
||||
var/obj/item/organ/eyes/target_eyes = target.getorganslot(ORGAN_SLOT_EYES)
|
||||
if(!target_eyes)
|
||||
to_chat(user, "<span class='warning'>It's hard to do surgery on someone's eyes when [target.p_they()] [target.p_do()]n't have any.</span>")
|
||||
to_chat(user, span_warning("It's hard to do surgery on someone's eyes when [target.p_they()] [target.p_do()]n't have any."))
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/datum/surgery_step/fix_eyes/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You begin to fix [target]'s eyes...</span>",
|
||||
"<span class='notice'>[user] begins to fix [target]'s eyes.</span>",
|
||||
"<span class='notice'>[user] begins to perform surgery on [target]'s eyes.</span>")
|
||||
display_results(user, target, span_notice("You begin to fix [target]'s eyes..."),
|
||||
span_notice("[user] begins to fix [target]'s eyes."),
|
||||
span_notice("[user] begins to perform surgery on [target]'s eyes."))
|
||||
|
||||
/datum/surgery_step/fix_eyes/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
|
||||
var/obj/item/organ/eyes/target_eyes = target.getorganslot(ORGAN_SLOT_EYES)
|
||||
user.visible_message("<span class='notice'>[user] successfully fixes [target]'s eyes!</span>", "<span class='notice'>You succeed in fixing [target]'s eyes.</span>")
|
||||
display_results(user, target, "<span class='notice'>You succeed in fixing [target]'s eyes.</span>",
|
||||
"<span class='notice'>[user] successfully fixes [target]'s eyes!</span>",
|
||||
"<span class='notice'>[user] completes the surgery on [target]'s eyes.</span>")
|
||||
user.visible_message(span_notice("[user] successfully fixes [target]'s eyes!"), span_notice("You succeed in fixing [target]'s eyes."))
|
||||
display_results(user, target, span_notice("You succeed in fixing [target]'s eyes."),
|
||||
span_notice("[user] successfully fixes [target]'s eyes!"),
|
||||
span_notice("[user] completes the surgery on [target]'s eyes."))
|
||||
target.cure_blind(list(EYE_DAMAGE))
|
||||
target.set_blindness(0)
|
||||
target.cure_nearsighted(list(EYE_DAMAGE))
|
||||
@@ -46,12 +46,12 @@
|
||||
|
||||
/datum/surgery_step/fix_eyes/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
if(target.getorgan(/obj/item/organ/brain))
|
||||
display_results(user, target, "<span class='warning'>You accidentally stab [target] right in the brain!</span>",
|
||||
"<span class='warning'>[user] accidentally stabs [target] right in the brain!</span>",
|
||||
"<span class='warning'>[user] accidentally stabs [target] right in the brain!</span>")
|
||||
display_results(user, target, span_warning("You accidentally stab [target] right in the brain!"),
|
||||
span_warning("[user] accidentally stabs [target] right in the brain!"),
|
||||
span_warning("[user] accidentally stabs [target] right in the brain!"))
|
||||
target.adjustOrganLoss(ORGAN_SLOT_BRAIN, 70)
|
||||
else
|
||||
display_results(user, target, "<span class='warning'>You accidentally stab [target] right in the brain! Or would have, if [target] had a brain.</span>",
|
||||
"<span class='warning'>[user] accidentally stabs [target] right in the brain! Or would have, if [target] had a brain.</span>",
|
||||
"<span class='warning'>[user] accidentally stabs [target] right in the brain!</span>")
|
||||
display_results(user, target, span_warning("You accidentally stab [target] right in the brain! Or would have, if [target] had a brain."),
|
||||
span_warning("[user] accidentally stabs [target] right in the brain! Or would have, if [target] had a brain."),
|
||||
span_warning("[user] accidentally stabs [target] right in the brain!"))
|
||||
return FALSE
|
||||
|
||||
@@ -30,21 +30,21 @@
|
||||
time = 52
|
||||
|
||||
/datum/surgery_step/gastrectomy/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You begin to cut out a damaged piece of [target]'s stomach...</span>",
|
||||
"<span class='notice'>[user] begins to make an incision in [target].</span>",
|
||||
"<span class='notice'>[user] begins to make an incision in [target].</span>")
|
||||
display_results(user, target, span_notice("You begin to cut out a damaged piece of [target]'s stomach..."),
|
||||
span_notice("[user] begins to make an incision in [target]."),
|
||||
span_notice("[user] begins to make an incision in [target]."))
|
||||
|
||||
/datum/surgery_step/gastrectomy/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
|
||||
var/mob/living/carbon/human/target_human = target
|
||||
target_human.setOrganLoss(ORGAN_SLOT_STOMACH, 20) // Stomachs have a threshold for being able to even digest food, so I might tweak this number
|
||||
display_results(user, target, "<span class='notice'>You successfully remove the damaged part of [target]'s stomach.</span>",
|
||||
"<span class='notice'>[user] successfully removes the damaged part of [target]'s stomach.</span>",
|
||||
"<span class='notice'>[user] successfully removes the damaged part of [target]'s stomach.</span>")
|
||||
display_results(user, target, span_notice("You successfully remove the damaged part of [target]'s stomach."),
|
||||
span_notice("[user] successfully removes the damaged part of [target]'s stomach."),
|
||||
span_notice("[user] successfully removes the damaged part of [target]'s stomach."))
|
||||
return ..()
|
||||
|
||||
/datum/surgery_step/gastrectomy/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery)
|
||||
var/mob/living/carbon/human/target_human = target
|
||||
target_human.adjustOrganLoss(ORGAN_SLOT_STOMACH, 15)
|
||||
display_results(user, target, "<span class='warning'>You cut the wrong part of [target]'s stomach!</span>",
|
||||
"<span class='warning'>[user] cuts the wrong part of [target]'s stomach!</span>",
|
||||
"<span class='warning'>[user] cuts the wrong part of [target]'s stomach!</span>")
|
||||
display_results(user, target, span_warning("You cut the wrong part of [target]'s stomach!"),
|
||||
span_warning("[user] cuts the wrong part of [target]'s stomach!"),
|
||||
span_warning("[user] cuts the wrong part of [target]'s stomach!"))
|
||||
|
||||
@@ -60,9 +60,9 @@
|
||||
if(istype(surgery,/datum/surgery/healing))
|
||||
var/datum/surgery/healing/the_surgery = surgery
|
||||
if(!the_surgery.antispam)
|
||||
display_results(user, target, "<span class='notice'>You attempt to patch some of [target]'s [woundtype].</span>",
|
||||
"<span class='notice'>[user] attempts to patch some of [target]'s [woundtype].</span>",
|
||||
"<span class='notice'>[user] attempts to patch some of [target]'s [woundtype].</span>")
|
||||
display_results(user, target, span_notice("You attempt to patch some of [target]'s [woundtype]."),
|
||||
span_notice("[user] attempts to patch some of [target]'s [woundtype]."),
|
||||
span_notice("[user] attempts to patch some of [target]'s [woundtype]."))
|
||||
|
||||
/datum/surgery_step/heal/initiate(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, try_to_fail = FALSE)
|
||||
if(!..())
|
||||
@@ -91,7 +91,7 @@
|
||||
|
||||
user_msg += get_progress(user, target, brute_healed, burn_healed)
|
||||
|
||||
display_results(user, target, "<span class='notice'>[user_msg].</span>",
|
||||
display_results(user, target, span_notice("[user_msg]."),
|
||||
"[target_msg].",
|
||||
"[target_msg].")
|
||||
if(istype(surgery, /datum/surgery/healing))
|
||||
@@ -100,9 +100,9 @@
|
||||
return ..()
|
||||
|
||||
/datum/surgery_step/heal/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='warning'>You screwed up!</span>",
|
||||
"<span class='warning'>[user] screws up!</span>",
|
||||
"<span class='notice'>[user] fixes some of [target]'s wounds.</span>", TRUE)
|
||||
display_results(user, target, span_warning("You screwed up!"),
|
||||
span_warning("[user] screws up!"),
|
||||
span_notice("[user] fixes some of [target]'s wounds."), TRUE)
|
||||
var/brute_dealt = brutehealing * 0.8
|
||||
var/burn_dealt = burnhealing * 0.8
|
||||
brute_dealt += round((target.getBruteLoss() * (brute_multiplier * 0.5)),0.1)
|
||||
@@ -320,7 +320,7 @@
|
||||
burn_multiplier = 0.4
|
||||
|
||||
/datum/surgery_step/heal/combo/upgraded/femto/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='warning'>You screwed up!</span>",
|
||||
"<span class='warning'>[user] screws up!</span>",
|
||||
"<span class='notice'>[user] fixes some of [target]'s wounds.</span>", TRUE)
|
||||
display_results(user, target, span_warning("You screwed up!"),
|
||||
span_warning("[user] screws up!"),
|
||||
span_notice("[user] fixes some of [target]'s wounds."), TRUE)
|
||||
target.take_bodypart_damage(5,5)
|
||||
|
||||
@@ -29,21 +29,21 @@
|
||||
time = 52
|
||||
|
||||
/datum/surgery_step/hepatectomy/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You begin to cut out a damaged piece of [target]'s liver...</span>",
|
||||
"<span class='notice'>[user] begins to make an incision in [target].</span>",
|
||||
"<span class='notice'>[user] begins to make an incision in [target].</span>")
|
||||
display_results(user, target, span_notice("You begin to cut out a damaged piece of [target]'s liver..."),
|
||||
span_notice("[user] begins to make an incision in [target]."),
|
||||
span_notice("[user] begins to make an incision in [target]."))
|
||||
|
||||
/datum/surgery_step/hepatectomy/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
|
||||
var/mob/living/carbon/human/human_target = target
|
||||
human_target.setOrganLoss(ORGAN_SLOT_LIVER, 10) //not bad, not great
|
||||
display_results(user, target, "<span class='notice'>You successfully remove the damaged part of [target]'s liver.</span>",
|
||||
"<span class='notice'>[user] successfully removes the damaged part of [target]'s liver.</span>",
|
||||
"<span class='notice'>[user] successfully removes the damaged part of [target]'s liver.</span>")
|
||||
display_results(user, target, span_notice("You successfully remove the damaged part of [target]'s liver."),
|
||||
span_notice("[user] successfully removes the damaged part of [target]'s liver."),
|
||||
span_notice("[user] successfully removes the damaged part of [target]'s liver."))
|
||||
return ..()
|
||||
|
||||
/datum/surgery_step/hepatectomy/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery)
|
||||
var/mob/living/carbon/human/human_target = target
|
||||
human_target.adjustOrganLoss(ORGAN_SLOT_LIVER, 15)
|
||||
display_results(user, target, "<span class='warning'>You cut the wrong part of [target]'s liver!</span>",
|
||||
"<span class='warning'>[user] cuts the wrong part of [target]'s liver!</span>",
|
||||
"<span class='warning'>[user] cuts the wrong part of [target]'s liver!</span>")
|
||||
display_results(user, target, span_warning("You cut the wrong part of [target]'s liver!"),
|
||||
span_warning("[user] cuts the wrong part of [target]'s liver!"),
|
||||
span_warning("[user] cuts the wrong part of [target]'s liver!"))
|
||||
|
||||
@@ -25,19 +25,19 @@
|
||||
implant = object
|
||||
break
|
||||
if(implant)
|
||||
display_results(user, target, "<span class='notice'>You begin to extract [implant] from [target]'s [target_zone]...</span>",
|
||||
"<span class='notice'>[user] begins to extract [implant] from [target]'s [target_zone].</span>",
|
||||
"<span class='notice'>[user] begins to extract something from [target]'s [target_zone].</span>")
|
||||
display_results(user, target, span_notice("You begin to extract [implant] from [target]'s [target_zone]..."),
|
||||
span_notice("[user] begins to extract [implant] from [target]'s [target_zone]."),
|
||||
span_notice("[user] begins to extract something from [target]'s [target_zone]."))
|
||||
else
|
||||
display_results(user, target, "<span class='notice'>You look for an implant in [target]'s [target_zone]...</span>",
|
||||
"<span class='notice'>[user] looks for an implant in [target]'s [target_zone].</span>",
|
||||
"<span class='notice'>[user] looks for something in [target]'s [target_zone].</span>")
|
||||
display_results(user, target, span_notice("You look for an implant in [target]'s [target_zone]..."),
|
||||
span_notice("[user] looks for an implant in [target]'s [target_zone]."),
|
||||
span_notice("[user] looks for something in [target]'s [target_zone]."))
|
||||
|
||||
/datum/surgery_step/extract_implant/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
|
||||
if(implant)
|
||||
display_results(user, target, "<span class='notice'>You successfully remove [implant] from [target]'s [target_zone].</span>",
|
||||
"<span class='notice'>[user] successfully removes [implant] from [target]'s [target_zone]!</span>",
|
||||
"<span class='notice'>[user] successfully removes something from [target]'s [target_zone]!</span>")
|
||||
display_results(user, target, span_notice("You successfully remove [implant] from [target]'s [target_zone]."),
|
||||
span_notice("[user] successfully removes [implant] from [target]'s [target_zone]!"),
|
||||
span_notice("[user] successfully removes something from [target]'s [target_zone]!"))
|
||||
implant.removed(target)
|
||||
|
||||
var/obj/item/implantcase/case
|
||||
@@ -50,14 +50,14 @@
|
||||
case.imp = implant
|
||||
implant.forceMove(case)
|
||||
case.update_appearance()
|
||||
display_results(user, target, "<span class='notice'>You place [implant] into [case].</span>",
|
||||
"<span class='notice'>[user] places [implant] into [case]!</span>",
|
||||
"<span class='notice'>[user] places it into [case]!</span>")
|
||||
display_results(user, target, span_notice("You place [implant] into [case]."),
|
||||
span_notice("[user] places [implant] into [case]!"),
|
||||
span_notice("[user] places it into [case]!"))
|
||||
else
|
||||
qdel(implant)
|
||||
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You can't find anything in [target]'s [target_zone]!</span>")
|
||||
to_chat(user, span_warning("You can't find anything in [target]'s [target_zone]!"))
|
||||
return ..()
|
||||
|
||||
/datum/surgery/implant_removal/mechanic
|
||||
|
||||
@@ -15,24 +15,24 @@
|
||||
|
||||
/datum/surgery_step/replace_limb/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
if(NOAUGMENTS in target.dna.species.species_traits)
|
||||
to_chat(user, "<span class='warning'>[target] cannot be augmented!</span>")
|
||||
to_chat(user, span_warning("[target] cannot be augmented!"))
|
||||
return -1
|
||||
if(istype(tool, /obj/item/borg/apparatus/organ_storage) && istype(tool.contents[1], /obj/item/bodypart))
|
||||
tool = tool.contents[1]
|
||||
var/obj/item/bodypart/aug = tool
|
||||
if(aug.status != BODYPART_ROBOTIC)
|
||||
to_chat(user, "<span class='warning'>That's not an augment, silly!</span>")
|
||||
to_chat(user, span_warning("That's not an augment, silly!"))
|
||||
return -1
|
||||
if(aug.body_zone != target_zone)
|
||||
to_chat(user, "<span class='warning'>[tool] isn't the right type for [parse_zone(target_zone)].</span>")
|
||||
to_chat(user, span_warning("[tool] isn't the right type for [parse_zone(target_zone)]."))
|
||||
return -1
|
||||
target_limb = surgery.operated_bodypart
|
||||
if(target_limb)
|
||||
display_results(user, target, "<span class='notice'>You begin to augment [target]'s [parse_zone(user.zone_selected)]...</span>",
|
||||
"<span class='notice'>[user] begins to augment [target]'s [parse_zone(user.zone_selected)] with [aug].</span>",
|
||||
"<span class='notice'>[user] begins to augment [target]'s [parse_zone(user.zone_selected)].</span>")
|
||||
display_results(user, target, span_notice("You begin to augment [target]'s [parse_zone(user.zone_selected)]..."),
|
||||
span_notice("[user] begins to augment [target]'s [parse_zone(user.zone_selected)] with [aug]."),
|
||||
span_notice("[user] begins to augment [target]'s [parse_zone(user.zone_selected)]."))
|
||||
else
|
||||
user.visible_message("<span class='notice'>[user] looks for [target]'s [parse_zone(user.zone_selected)].</span>", "<span class='notice'>You look for [target]'s [parse_zone(user.zone_selected)]...</span>")
|
||||
user.visible_message(span_notice("[user] looks for [target]'s [parse_zone(user.zone_selected)]."), span_notice("You look for [target]'s [parse_zone(user.zone_selected)]..."))
|
||||
|
||||
|
||||
//ACTUAL SURGERIES
|
||||
@@ -59,10 +59,10 @@
|
||||
tool = tool.contents[1]
|
||||
if(istype(tool) && user.temporarilyRemoveItemFromInventory(tool))
|
||||
tool.replace_limb(target, TRUE)
|
||||
display_results(user, target, "<span class='notice'>You successfully augment [target]'s [parse_zone(target_zone)].</span>",
|
||||
"<span class='notice'>[user] successfully augments [target]'s [parse_zone(target_zone)] with [tool]!</span>",
|
||||
"<span class='notice'>[user] successfully augments [target]'s [parse_zone(target_zone)]!</span>")
|
||||
display_results(user, target, span_notice("You successfully augment [target]'s [parse_zone(target_zone)]."),
|
||||
span_notice("[user] successfully augments [target]'s [parse_zone(target_zone)] with [tool]!"),
|
||||
span_notice("[user] successfully augments [target]'s [parse_zone(target_zone)]!"))
|
||||
log_combat(user, target, "augmented", addition="by giving him new [parse_zone(target_zone)] COMBAT MODE: [uppertext(user.combat_mode)]")
|
||||
else
|
||||
to_chat(user, "<span class='warning'>[target] has no organic [parse_zone(target_zone)] there!</span>")
|
||||
to_chat(user, span_warning("[target] has no organic [parse_zone(target_zone)] there!"))
|
||||
return ..()
|
||||
|
||||
@@ -24,15 +24,15 @@
|
||||
time = 64
|
||||
|
||||
/datum/surgery_step/cut_fat/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
user.visible_message("<span class='notice'>[user] begins to cut away [target]'s excess fat.</span>", "<span class='notice'>You begin to cut away [target]'s excess fat...</span>")
|
||||
display_results(user, target, "<span class='notice'>You begin to cut away [target]'s excess fat...</span>",
|
||||
"<span class='notice'>[user] begins to cut away [target]'s excess fat.</span>",
|
||||
"<span class='notice'>[user] begins to cut [target]'s [target_zone] with [tool].</span>")
|
||||
user.visible_message(span_notice("[user] begins to cut away [target]'s excess fat."), span_notice("You begin to cut away [target]'s excess fat..."))
|
||||
display_results(user, target, span_notice("You begin to cut away [target]'s excess fat..."),
|
||||
span_notice("[user] begins to cut away [target]'s excess fat."),
|
||||
span_notice("[user] begins to cut [target]'s [target_zone] with [tool]."))
|
||||
|
||||
/datum/surgery_step/cut_fat/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results)
|
||||
display_results(user, target, "<span class='notice'>You cut [target]'s excess fat loose.</span>",
|
||||
"<span class='notice'>[user] cuts [target]'s excess fat loose!</span>",
|
||||
"<span class='notice'>[user] finishes the cut on [target]'s [target_zone].</span>")
|
||||
display_results(user, target, span_notice("You cut [target]'s excess fat loose."),
|
||||
span_notice("[user] cuts [target]'s excess fat loose!"),
|
||||
span_notice("[user] finishes the cut on [target]'s [target_zone]."))
|
||||
return TRUE
|
||||
|
||||
//remove fat
|
||||
@@ -45,14 +45,14 @@
|
||||
time = 32
|
||||
|
||||
/datum/surgery_step/remove_fat/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You begin to extract [target]'s loose fat...</span>",
|
||||
"<span class='notice'>[user] begins to extract [target]'s loose fat!</span>",
|
||||
"<span class='notice'>[user] begins to extract something from [target]'s [target_zone].</span>")
|
||||
display_results(user, target, span_notice("You begin to extract [target]'s loose fat..."),
|
||||
span_notice("[user] begins to extract [target]'s loose fat!"),
|
||||
span_notice("[user] begins to extract something from [target]'s [target_zone]."))
|
||||
|
||||
/datum/surgery_step/remove_fat/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
|
||||
display_results(user, target, "<span class='notice'>You extract [target]'s fat.</span>",
|
||||
"<span class='notice'>[user] extracts [target]'s fat!</span>",
|
||||
"<span class='notice'>[user] extracts [target]'s fat!</span>")
|
||||
display_results(user, target, span_notice("You extract [target]'s fat."),
|
||||
span_notice("[user] extracts [target]'s fat!"),
|
||||
span_notice("[user] extracts [target]'s fat!"))
|
||||
target.overeatduration = 0 //patient is unfatted
|
||||
var/removednutriment = target.nutrition
|
||||
target.set_nutrition(NUTRITION_LEVEL_WELL_FED)
|
||||
|
||||
@@ -28,9 +28,9 @@
|
||||
time = 42
|
||||
|
||||
/datum/surgery_step/lobectomy/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You begin to make an incision in [target]'s lungs...</span>",
|
||||
"<span class='notice'>[user] begins to make an incision in [target].</span>",
|
||||
"<span class='notice'>[user] begins to make an incision in [target].</span>")
|
||||
display_results(user, target, span_notice("You begin to make an incision in [target]'s lungs..."),
|
||||
span_notice("[user] begins to make an incision in [target]."),
|
||||
span_notice("[user] begins to make an incision in [target]."))
|
||||
|
||||
/datum/surgery_step/lobectomy/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
|
||||
if(ishuman(target))
|
||||
@@ -38,17 +38,17 @@
|
||||
var/obj/item/organ/lungs/target_lungs = human_target.getorganslot(ORGAN_SLOT_LUNGS)
|
||||
target_lungs.operated = TRUE
|
||||
human_target.setOrganLoss(ORGAN_SLOT_LUNGS, 60)
|
||||
display_results(user, target, "<span class='notice'>You successfully excise [human_target]'s most damaged lobe.</span>",
|
||||
"<span class='notice'>Successfully removes a piece of [human_target]'s lungs.</span>",
|
||||
display_results(user, target, span_notice("You successfully excise [human_target]'s most damaged lobe."),
|
||||
span_notice("Successfully removes a piece of [human_target]'s lungs."),
|
||||
"")
|
||||
return ..()
|
||||
|
||||
/datum/surgery_step/lobectomy/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
if(ishuman(target))
|
||||
var/mob/living/carbon/human/human_target = target
|
||||
display_results(user, target, "<span class='warning'>You screw up, failing to excise [human_target]'s damaged lobe!</span>",
|
||||
"<span class='warning'>[user] screws up!</span>",
|
||||
"<span class='warning'>[user] screws up!</span>")
|
||||
display_results(user, target, span_warning("You screw up, failing to excise [human_target]'s damaged lobe!"),
|
||||
span_warning("[user] screws up!"),
|
||||
span_warning("[user] screws up!"))
|
||||
human_target.losebreath += 4
|
||||
human_target.adjustOrganLoss(ORGAN_SLOT_LUNGS, 10)
|
||||
return FALSE
|
||||
|
||||
@@ -9,9 +9,9 @@
|
||||
time = 24
|
||||
|
||||
/datum/surgery_step/mechanic_open/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You begin to unscrew the shell of [target]'s [parse_zone(target_zone)]...</span>",
|
||||
"<span class='notice'>[user] begins to unscrew the shell of [target]'s [parse_zone(target_zone)].</span>",
|
||||
"<span class='notice'>[user] begins to unscrew the shell of [target]'s [parse_zone(target_zone)].</span>")
|
||||
display_results(user, target, span_notice("You begin to unscrew the shell of [target]'s [parse_zone(target_zone)]..."),
|
||||
span_notice("[user] begins to unscrew the shell of [target]'s [parse_zone(target_zone)]."),
|
||||
span_notice("[user] begins to unscrew the shell of [target]'s [parse_zone(target_zone)]."))
|
||||
|
||||
/datum/surgery_step/mechanic_open/tool_check(mob/user, obj/item/tool)
|
||||
if(implement_type == /obj/item && !tool.get_sharpness())
|
||||
@@ -30,9 +30,9 @@
|
||||
time = 24
|
||||
|
||||
/datum/surgery_step/mechanic_close/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You begin to screw the shell of [target]'s [parse_zone(target_zone)]...</span>",
|
||||
"<span class='notice'>[user] begins to screw the shell of [target]'s [parse_zone(target_zone)].</span>",
|
||||
"<span class='notice'>[user] begins to screw the shell of [target]'s [parse_zone(target_zone)].</span>")
|
||||
display_results(user, target, span_notice("You begin to screw the shell of [target]'s [parse_zone(target_zone)]..."),
|
||||
span_notice("[user] begins to screw the shell of [target]'s [parse_zone(target_zone)]."),
|
||||
span_notice("[user] begins to screw the shell of [target]'s [parse_zone(target_zone)]."))
|
||||
|
||||
/datum/surgery_step/mechanic_close/tool_check(mob/user, obj/item/tool)
|
||||
if(implement_type == /obj/item && !tool.get_sharpness())
|
||||
@@ -49,9 +49,9 @@
|
||||
time = 24
|
||||
|
||||
/datum/surgery_step/prepare_electronics/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You begin to prepare electronics in [target]'s [parse_zone(target_zone)]...</span>",
|
||||
"<span class='notice'>[user] begins to prepare electronics in [target]'s [parse_zone(target_zone)].</span>",
|
||||
"<span class='notice'>[user] begins to prepare electronics in [target]'s [parse_zone(target_zone)].</span>")
|
||||
display_results(user, target, span_notice("You begin to prepare electronics in [target]'s [parse_zone(target_zone)]..."),
|
||||
span_notice("[user] begins to prepare electronics in [target]'s [parse_zone(target_zone)]."),
|
||||
span_notice("[user] begins to prepare electronics in [target]'s [parse_zone(target_zone)]."))
|
||||
|
||||
//unwrench
|
||||
/datum/surgery_step/mechanic_unwrench
|
||||
@@ -62,9 +62,9 @@
|
||||
time = 24
|
||||
|
||||
/datum/surgery_step/mechanic_unwrench/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You begin to unwrench some bolts in [target]'s [parse_zone(target_zone)]...</span>",
|
||||
"<span class='notice'>[user] begins to unwrench some bolts in [target]'s [parse_zone(target_zone)].</span>",
|
||||
"<span class='notice'>[user] begins to unwrench some bolts in [target]'s [parse_zone(target_zone)].</span>")
|
||||
display_results(user, target, span_notice("You begin to unwrench some bolts in [target]'s [parse_zone(target_zone)]..."),
|
||||
span_notice("[user] begins to unwrench some bolts in [target]'s [parse_zone(target_zone)]."),
|
||||
span_notice("[user] begins to unwrench some bolts in [target]'s [parse_zone(target_zone)]."))
|
||||
|
||||
//wrench
|
||||
/datum/surgery_step/mechanic_wrench
|
||||
@@ -75,9 +75,9 @@
|
||||
time = 24
|
||||
|
||||
/datum/surgery_step/mechanic_wrench/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You begin to wrench some bolts in [target]'s [parse_zone(target_zone)]...</span>",
|
||||
"<span class='notice'>[user] begins to wrench some bolts in [target]'s [parse_zone(target_zone)].</span>",
|
||||
"<span class='notice'>[user] begins to wrench some bolts in [target]'s [parse_zone(target_zone)].</span>")
|
||||
display_results(user, target, span_notice("You begin to wrench some bolts in [target]'s [parse_zone(target_zone)]..."),
|
||||
span_notice("[user] begins to wrench some bolts in [target]'s [parse_zone(target_zone)]."),
|
||||
span_notice("[user] begins to wrench some bolts in [target]'s [parse_zone(target_zone)]."))
|
||||
|
||||
//open hatch
|
||||
/datum/surgery_step/open_hatch
|
||||
@@ -86,6 +86,6 @@
|
||||
time = 10
|
||||
|
||||
/datum/surgery_step/open_hatch/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You begin to open the hatch holders in [target]'s [parse_zone(target_zone)]...</span>",
|
||||
"<span class='notice'>[user] begins to open the hatch holders in [target]'s [parse_zone(target_zone)].</span>",
|
||||
"<span class='notice'>[user] begins to open the hatch holders in [target]'s [parse_zone(target_zone)].</span>")
|
||||
display_results(user, target, span_notice("You begin to open the hatch holders in [target]'s [parse_zone(target_zone)]..."),
|
||||
span_notice("[user] begins to open the hatch holders in [target]'s [parse_zone(target_zone)]."),
|
||||
span_notice("[user] begins to open the hatch holders in [target]'s [parse_zone(target_zone)]."))
|
||||
|
||||
@@ -77,30 +77,30 @@
|
||||
target_organ = null
|
||||
if(istype(tool, /obj/item/borg/apparatus/organ_storage))
|
||||
if(!tool.contents.len)
|
||||
to_chat(user, "<span class='warning'>There is nothing inside [tool]!</span>")
|
||||
to_chat(user, span_warning("There is nothing inside [tool]!"))
|
||||
return -1
|
||||
target_organ = tool.contents[1]
|
||||
if(!isorgan(target_organ))
|
||||
if (target_zone == BODY_ZONE_PRECISE_EYES)
|
||||
target_zone = check_zone(target_zone)
|
||||
to_chat(user, "<span class='warning'>You cannot put [target_organ] into [target]'s [parse_zone(target_zone)]!</span>")
|
||||
to_chat(user, span_warning("You cannot put [target_organ] into [target]'s [parse_zone(target_zone)]!"))
|
||||
return -1
|
||||
tool = target_organ
|
||||
if(isorgan(tool))
|
||||
current_type = "insert"
|
||||
target_organ = tool
|
||||
if(target_zone != target_organ.zone || target.getorganslot(target_organ.slot))
|
||||
to_chat(user, "<span class='warning'>There is no room for [target_organ] in [target]'s [parse_zone(target_zone)]!</span>")
|
||||
to_chat(user, span_warning("There is no room for [target_organ] in [target]'s [parse_zone(target_zone)]!"))
|
||||
return -1
|
||||
var/obj/item/organ/meatslab = tool
|
||||
if(!meatslab.useable)
|
||||
to_chat(user, "<span class='warning'>[target_organ] seems to have been chewed on, you can't use this!</span>")
|
||||
to_chat(user, span_warning("[target_organ] seems to have been chewed on, you can't use this!"))
|
||||
return -1
|
||||
if (target_zone == BODY_ZONE_PRECISE_EYES)
|
||||
target_zone = check_zone(target_zone)
|
||||
display_results(user, target, "<span class='notice'>You begin to insert [tool] into [target]'s [parse_zone(target_zone)]...</span>",
|
||||
"<span class='notice'>[user] begins to insert [tool] into [target]'s [parse_zone(target_zone)].</span>",
|
||||
"<span class='notice'>[user] begins to insert something into [target]'s [parse_zone(target_zone)].</span>")
|
||||
display_results(user, target, span_notice("You begin to insert [tool] into [target]'s [parse_zone(target_zone)]..."),
|
||||
span_notice("[user] begins to insert [tool] into [target]'s [parse_zone(target_zone)]."),
|
||||
span_notice("[user] begins to insert something into [target]'s [parse_zone(target_zone)]."))
|
||||
|
||||
else if(implement_type in implements_extract)
|
||||
current_type = "extract"
|
||||
@@ -108,7 +108,7 @@
|
||||
if (target_zone == BODY_ZONE_PRECISE_EYES)
|
||||
target_zone = check_zone(target_zone)
|
||||
if(!organs.len)
|
||||
to_chat(user, "<span class='warning'>There are no removable organs in [target]'s [parse_zone(target_zone)]!</span>")
|
||||
to_chat(user, span_warning("There are no removable organs in [target]'s [parse_zone(target_zone)]!"))
|
||||
return -1
|
||||
else
|
||||
for(var/obj/item/organ/organ in organs)
|
||||
@@ -122,11 +122,11 @@
|
||||
if(!target_organ)
|
||||
return -1
|
||||
if(target_organ.organ_flags & ORGAN_UNREMOVABLE)
|
||||
to_chat(user, "<span class='warning'>[target_organ] is too well connected to take out!</span>")
|
||||
to_chat(user, span_warning("[target_organ] is too well connected to take out!"))
|
||||
return -1
|
||||
display_results(user, target, "<span class='notice'>You begin to extract [target_organ] from [target]'s [parse_zone(target_zone)]...</span>",
|
||||
"<span class='notice'>[user] begins to extract [target_organ] from [target]'s [parse_zone(target_zone)].</span>",
|
||||
"<span class='notice'>[user] begins to extract something from [target]'s [parse_zone(target_zone)].</span>")
|
||||
display_results(user, target, span_notice("You begin to extract [target_organ] from [target]'s [parse_zone(target_zone)]..."),
|
||||
span_notice("[user] begins to extract [target_organ] from [target]'s [parse_zone(target_zone)]."),
|
||||
span_notice("[user] begins to extract something from [target]'s [parse_zone(target_zone)]."))
|
||||
else
|
||||
return -1
|
||||
|
||||
@@ -145,20 +145,20 @@
|
||||
target_organ = tool
|
||||
user.temporarilyRemoveItemFromInventory(target_organ, TRUE)
|
||||
target_organ.Insert(target)
|
||||
display_results(user, target, "<span class='notice'>You insert [tool] into [target]'s [parse_zone(target_zone)].</span>",
|
||||
"<span class='notice'>[user] inserts [tool] into [target]'s [parse_zone(target_zone)]!</span>",
|
||||
"<span class='notice'>[user] inserts something into [target]'s [parse_zone(target_zone)]!</span>")
|
||||
display_results(user, target, span_notice("You insert [tool] into [target]'s [parse_zone(target_zone)]."),
|
||||
span_notice("[user] inserts [tool] into [target]'s [parse_zone(target_zone)]!"),
|
||||
span_notice("[user] inserts something into [target]'s [parse_zone(target_zone)]!"))
|
||||
|
||||
else if(current_type == "extract")
|
||||
if(target_organ && target_organ.owner == target)
|
||||
display_results(user, target, "<span class='notice'>You successfully extract [target_organ] from [target]'s [parse_zone(target_zone)].</span>",
|
||||
"<span class='notice'>[user] successfully extracts [target_organ] from [target]'s [parse_zone(target_zone)]!</span>",
|
||||
"<span class='notice'>[user] successfully extracts something from [target]'s [parse_zone(target_zone)]!</span>")
|
||||
display_results(user, target, span_notice("You successfully extract [target_organ] from [target]'s [parse_zone(target_zone)]."),
|
||||
span_notice("[user] successfully extracts [target_organ] from [target]'s [parse_zone(target_zone)]!"),
|
||||
span_notice("[user] successfully extracts something from [target]'s [parse_zone(target_zone)]!"))
|
||||
log_combat(user, target, "surgically removed [target_organ.name] from", addition="COMBAT MODE: [uppertext(user.combat_mode)]")
|
||||
target_organ.Remove(target)
|
||||
target_organ.forceMove(get_turf(target))
|
||||
else
|
||||
display_results(user, target, "<span class='warning'>You can't extract anything from [target]'s [parse_zone(target_zone)]!</span>",
|
||||
"<span class='notice'>[user] can't seem to extract anything from [target]'s [parse_zone(target_zone)]!</span>",
|
||||
"<span class='notice'>[user] can't seem to extract anything from [target]'s [parse_zone(target_zone)]!</span>")
|
||||
display_results(user, target, span_warning("You can't extract anything from [target]'s [parse_zone(target_zone)]!"),
|
||||
span_notice("[user] can't seem to extract anything from [target]'s [parse_zone(target_zone)]!"),
|
||||
span_notice("[user] can't seem to extract anything from [target]'s [parse_zone(target_zone)]!"))
|
||||
return FALSE
|
||||
|
||||
@@ -11,9 +11,9 @@
|
||||
time = 16
|
||||
|
||||
/datum/surgery_step/incise/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You begin to make an incision in [target]'s [parse_zone(target_zone)]...</span>",
|
||||
"<span class='notice'>[user] begins to make an incision in [target]'s [parse_zone(target_zone)].</span>",
|
||||
"<span class='notice'>[user] begins to make an incision in [target]'s [parse_zone(target_zone)].</span>")
|
||||
display_results(user, target, span_notice("You begin to make an incision in [target]'s [parse_zone(target_zone)]..."),
|
||||
span_notice("[user] begins to make an incision in [target]'s [parse_zone(target_zone)]."),
|
||||
span_notice("[user] begins to make an incision in [target]'s [parse_zone(target_zone)]."))
|
||||
|
||||
/datum/surgery_step/incise/tool_check(mob/user, obj/item/tool)
|
||||
if(implement_type == /obj/item && !tool.get_sharpness())
|
||||
@@ -25,8 +25,8 @@
|
||||
if ishuman(target)
|
||||
var/mob/living/carbon/human/human_target = target
|
||||
if (!(NOBLOOD in human_target.dna.species.species_traits))
|
||||
display_results(user, target, "<span class='notice'>Blood pools around the incision in [human_target]'s [parse_zone(target_zone)].</span>",
|
||||
"<span class='notice'>Blood pools around the incision in [human_target]'s [parse_zone(target_zone)].</span>",
|
||||
display_results(user, target, span_notice("Blood pools around the incision in [human_target]'s [parse_zone(target_zone)]."),
|
||||
span_notice("Blood pools around the incision in [human_target]'s [parse_zone(target_zone)]."),
|
||||
"")
|
||||
var/obj/item/bodypart/target_bodypart = target.get_bodypart(target_zone)
|
||||
if(target_bodypart)
|
||||
@@ -34,9 +34,9 @@
|
||||
return ..()
|
||||
|
||||
/datum/surgery_step/incise/nobleed/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You begin to <i>carefully</i> make an incision in [target]'s [parse_zone(target_zone)]...</span>",
|
||||
"<span class='notice'>[user] begins to <i>carefully</i> make an incision in [target]'s [parse_zone(target_zone)].</span>",
|
||||
"<span class='notice'>[user] begins to <i>carefully</i> make an incision in [target]'s [parse_zone(target_zone)].</span>")
|
||||
display_results(user, target, span_notice("You begin to <i>carefully</i> make an incision in [target]'s [parse_zone(target_zone)]..."),
|
||||
span_notice("[user] begins to <i>carefully</i> make an incision in [target]'s [parse_zone(target_zone)]."),
|
||||
span_notice("[user] begins to <i>carefully</i> make an incision in [target]'s [parse_zone(target_zone)]."))
|
||||
|
||||
//clamp bleeders
|
||||
/datum/surgery_step/clamp_bleeders
|
||||
@@ -49,9 +49,9 @@
|
||||
time = 24
|
||||
|
||||
/datum/surgery_step/clamp_bleeders/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You begin to clamp bleeders in [target]'s [parse_zone(target_zone)]...</span>",
|
||||
"<span class='notice'>[user] begins to clamp bleeders in [target]'s [parse_zone(target_zone)].</span>",
|
||||
"<span class='notice'>[user] begins to clamp bleeders in [target]'s [parse_zone(target_zone)].</span>")
|
||||
display_results(user, target, span_notice("You begin to clamp bleeders in [target]'s [parse_zone(target_zone)]..."),
|
||||
span_notice("[user] begins to clamp bleeders in [target]'s [parse_zone(target_zone)]."),
|
||||
span_notice("[user] begins to clamp bleeders in [target]'s [parse_zone(target_zone)]."))
|
||||
|
||||
/datum/surgery_step/clamp_bleeders/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results)
|
||||
if(locate(/datum/surgery_step/saw) in surgery.steps)
|
||||
@@ -74,9 +74,9 @@
|
||||
time = 24
|
||||
|
||||
/datum/surgery_step/retract_skin/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You begin to retract the skin in [target]'s [parse_zone(target_zone)]...</span>",
|
||||
"<span class='notice'>[user] begins to retract the skin in [target]'s [parse_zone(target_zone)].</span>",
|
||||
"<span class='notice'>[user] begins to retract the skin in [target]'s [parse_zone(target_zone)].</span>")
|
||||
display_results(user, target, span_notice("You begin to retract the skin in [target]'s [parse_zone(target_zone)]..."),
|
||||
span_notice("[user] begins to retract the skin in [target]'s [parse_zone(target_zone)]."),
|
||||
span_notice("[user] begins to retract the skin in [target]'s [parse_zone(target_zone)]."))
|
||||
|
||||
|
||||
|
||||
@@ -91,9 +91,9 @@
|
||||
time = 24
|
||||
|
||||
/datum/surgery_step/close/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You begin to mend the incision in [target]'s [parse_zone(target_zone)]...</span>",
|
||||
"<span class='notice'>[user] begins to mend the incision in [target]'s [parse_zone(target_zone)].</span>",
|
||||
"<span class='notice'>[user] begins to mend the incision in [target]'s [parse_zone(target_zone)].</span>")
|
||||
display_results(user, target, span_notice("You begin to mend the incision in [target]'s [parse_zone(target_zone)]..."),
|
||||
span_notice("[user] begins to mend the incision in [target]'s [parse_zone(target_zone)]."),
|
||||
span_notice("[user] begins to mend the incision in [target]'s [parse_zone(target_zone)]."))
|
||||
|
||||
/datum/surgery_step/close/tool_check(mob/user, obj/item/tool)
|
||||
if(implement_type == TOOL_WELDER || implement_type == /obj/item)
|
||||
@@ -126,9 +126,9 @@
|
||||
time = 54
|
||||
|
||||
/datum/surgery_step/saw/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You begin to saw through the bone in [target]'s [parse_zone(target_zone)]...</span>",
|
||||
"<span class='notice'>[user] begins to saw through the bone in [target]'s [parse_zone(target_zone)].</span>",
|
||||
"<span class='notice'>[user] begins to saw through the bone in [target]'s [parse_zone(target_zone)].</span>")
|
||||
display_results(user, target, span_notice("You begin to saw through the bone in [target]'s [parse_zone(target_zone)]..."),
|
||||
span_notice("[user] begins to saw through the bone in [target]'s [parse_zone(target_zone)]."),
|
||||
span_notice("[user] begins to saw through the bone in [target]'s [parse_zone(target_zone)]."))
|
||||
|
||||
/datum/surgery_step/saw/tool_check(mob/user, obj/item/tool)
|
||||
if(implement_type == /obj/item && !(tool.get_sharpness() && (tool.force >= 10)))
|
||||
@@ -137,9 +137,9 @@
|
||||
|
||||
/datum/surgery_step/saw/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results)
|
||||
target.apply_damage(50, BRUTE, "[target_zone]", wound_bonus=CANT_WOUND)
|
||||
display_results(user, target, "<span class='notice'>You saw [target]'s [parse_zone(target_zone)] open.</span>",
|
||||
"<span class='notice'>[user] saws [target]'s [parse_zone(target_zone)] open!</span>",
|
||||
"<span class='notice'>[user] saws [target]'s [parse_zone(target_zone)] open!</span>")
|
||||
display_results(user, target, span_notice("You saw [target]'s [parse_zone(target_zone)] open."),
|
||||
span_notice("[user] saws [target]'s [parse_zone(target_zone)] open!"),
|
||||
span_notice("[user] saws [target]'s [parse_zone(target_zone)] open!"))
|
||||
return ..()
|
||||
|
||||
//drill bone
|
||||
@@ -154,12 +154,12 @@
|
||||
time = 30
|
||||
|
||||
/datum/surgery_step/drill/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You begin to drill into the bone in [target]'s [parse_zone(target_zone)]...</span>",
|
||||
"<span class='notice'>[user] begins to drill into the bone in [target]'s [parse_zone(target_zone)].</span>",
|
||||
"<span class='notice'>[user] begins to drill into the bone in [target]'s [parse_zone(target_zone)].</span>")
|
||||
display_results(user, target, span_notice("You begin to drill into the bone in [target]'s [parse_zone(target_zone)]..."),
|
||||
span_notice("[user] begins to drill into the bone in [target]'s [parse_zone(target_zone)]."),
|
||||
span_notice("[user] begins to drill into the bone in [target]'s [parse_zone(target_zone)]."))
|
||||
|
||||
/datum/surgery_step/drill/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
|
||||
display_results(user, target, "<span class='notice'>You drill into [target]'s [parse_zone(target_zone)].</span>",
|
||||
"<span class='notice'>[user] drills into [target]'s [parse_zone(target_zone)]!</span>",
|
||||
"<span class='notice'>[user] drills into [target]'s [parse_zone(target_zone)]!</span>")
|
||||
display_results(user, target, span_notice("You drill into [target]'s [parse_zone(target_zone)]."),
|
||||
span_notice("[user] drills into [target]'s [parse_zone(target_zone)]!"),
|
||||
span_notice("[user] drills into [target]'s [parse_zone(target_zone)]!"))
|
||||
return ..()
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
|
||||
/obj/item/organ/cyberimp/arm/examine(mob/user)
|
||||
. = ..()
|
||||
. += "<span class='info'>[src] is assembled in the [zone == BODY_ZONE_R_ARM ? "right" : "left"] arm configuration. You can use a screwdriver to reassemble it.</span>"
|
||||
. += span_info("[src] is assembled in the [zone == BODY_ZONE_R_ARM ? "right" : "left"] arm configuration. You can use a screwdriver to reassemble it.")
|
||||
|
||||
/obj/item/organ/cyberimp/arm/screwdriver_act(mob/living/user, obj/item/screwtool)
|
||||
. = ..()
|
||||
@@ -65,7 +65,7 @@
|
||||
else
|
||||
zone = BODY_ZONE_R_ARM
|
||||
SetSlotFromZone()
|
||||
to_chat(user, "<span class='notice'>You modify [src] to be installed on the [zone == BODY_ZONE_R_ARM ? "right" : "left"] arm.</span>")
|
||||
to_chat(user, span_notice("You modify [src] to be installed on the [zone == BODY_ZONE_R_ARM ? "right" : "left"] arm."))
|
||||
update_appearance()
|
||||
|
||||
/obj/item/organ/cyberimp/arm/Insert(mob/living/carbon/arm_owner, special = FALSE, drop_if_replaced = TRUE)
|
||||
@@ -92,7 +92,7 @@
|
||||
if(. & EMP_PROTECT_SELF)
|
||||
return
|
||||
if(prob(15/severity) && owner)
|
||||
to_chat(owner, "<span class='warning'>The electromagnetic pulse causes [src] to malfunction!</span>")
|
||||
to_chat(owner, span_warning("The electromagnetic pulse causes [src] to malfunction!"))
|
||||
// give the owner an idea about why his implant is glitching
|
||||
Retract()
|
||||
|
||||
@@ -115,9 +115,9 @@
|
||||
if(!active_item || (active_item in src))
|
||||
return
|
||||
|
||||
owner.visible_message("<span class='notice'>[owner] retracts [active_item] back into [owner.p_their()] [zone == BODY_ZONE_R_ARM ? "right" : "left"] arm.</span>",
|
||||
"<span class='notice'>[active_item] snaps back into your [zone == BODY_ZONE_R_ARM ? "right" : "left"] arm.</span>",
|
||||
"<span class='hear'>You hear a short mechanical noise.</span>")
|
||||
owner.visible_message(span_notice("[owner] retracts [active_item] back into [owner.p_their()] [zone == BODY_ZONE_R_ARM ? "right" : "left"] arm."),
|
||||
span_notice("[active_item] snaps back into your [zone == BODY_ZONE_R_ARM ? "right" : "left"] arm."),
|
||||
span_hear("You hear a short mechanical noise."))
|
||||
|
||||
owner.transferItemToLoc(active_item, src, TRUE)
|
||||
active_item = null
|
||||
@@ -145,23 +145,23 @@
|
||||
for(var/i in 1 to hand_items.len) //Can't just use *in* here.
|
||||
var/hand_item = hand_items[i]
|
||||
if(!owner.dropItemToGround(hand_item))
|
||||
failure_message += "<span class='warning'>Your [hand_item] interferes with [src]!</span>"
|
||||
failure_message += span_warning("Your [hand_item] interferes with [src]!")
|
||||
continue
|
||||
to_chat(owner, "<span class='notice'>You drop [hand_item] to activate [src]!</span>")
|
||||
to_chat(owner, span_notice("You drop [hand_item] to activate [src]!"))
|
||||
success = owner.put_in_hand(active_item, owner.get_empty_held_index_for_side(side))
|
||||
break
|
||||
if(!success)
|
||||
for(var/i in failure_message)
|
||||
to_chat(owner, i)
|
||||
return
|
||||
owner.visible_message("<span class='notice'>[owner] extends [active_item] from [owner.p_their()] [zone == BODY_ZONE_R_ARM ? "right" : "left"] arm.</span>",
|
||||
"<span class='notice'>You extend [active_item] from your [zone == BODY_ZONE_R_ARM ? "right" : "left"] arm.</span>",
|
||||
"<span class='hear'>You hear a short mechanical noise.</span>")
|
||||
owner.visible_message(span_notice("[owner] extends [active_item] from [owner.p_their()] [zone == BODY_ZONE_R_ARM ? "right" : "left"] arm."),
|
||||
span_notice("You extend [active_item] from your [zone == BODY_ZONE_R_ARM ? "right" : "left"] arm."),
|
||||
span_hear("You hear a short mechanical noise."))
|
||||
playsound(get_turf(owner), 'sound/mecha/mechmove03.ogg', 50, TRUE)
|
||||
|
||||
/obj/item/organ/cyberimp/arm/ui_action_click()
|
||||
if((organ_flags & ORGAN_FAILING) || (!active_item && !contents.len))
|
||||
to_chat(owner, "<span class='warning'>The implant doesn't respond. It seems to be broken...</span>")
|
||||
to_chat(owner, span_warning("The implant doesn't respond. It seems to be broken..."))
|
||||
return
|
||||
|
||||
if(!active_item || (active_item in src))
|
||||
@@ -190,9 +190,9 @@
|
||||
return
|
||||
if(prob(30/severity) && owner && !(organ_flags & ORGAN_FAILING))
|
||||
Retract()
|
||||
owner.visible_message("<span class='danger'>A loud bang comes from [owner]\'s [zone == BODY_ZONE_R_ARM ? "right" : "left"] arm!</span>")
|
||||
owner.visible_message(span_danger("A loud bang comes from [owner]\'s [zone == BODY_ZONE_R_ARM ? "right" : "left"] arm!"))
|
||||
playsound(get_turf(owner), 'sound/weapons/flashbang.ogg', 100, TRUE)
|
||||
to_chat(owner, "<span class='userdanger'>You feel an explosion erupt inside your [zone == BODY_ZONE_R_ARM ? "right" : "left"] arm as your implant breaks!</span>")
|
||||
to_chat(owner, span_userdanger("You feel an explosion erupt inside your [zone == BODY_ZONE_R_ARM ? "right" : "left"] arm as your implant breaks!"))
|
||||
owner.adjust_fire_stacks(20)
|
||||
owner.IgniteMob()
|
||||
owner.adjustFireLoss(25)
|
||||
@@ -238,7 +238,7 @@
|
||||
if(istype(/obj/item/kitchen/knife/combat/cyborg, potential_knife))
|
||||
return FALSE
|
||||
|
||||
to_chat(user, "<span class='notice'>You unlock [src]'s integrated knife!</span>")
|
||||
to_chat(user, span_notice("You unlock [src]'s integrated knife!"))
|
||||
items_list += WEAKREF(new /obj/item/kitchen/knife/combat/cyborg(src))
|
||||
return TRUE
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
|
||||
if(owner.nutrition <= hunger_threshold)
|
||||
synthesizing = TRUE
|
||||
to_chat(owner, "<span class='notice'>You feel less hungry...</span>")
|
||||
to_chat(owner, span_notice("You feel less hungry..."))
|
||||
owner.adjust_nutrition(25 * delta_time)
|
||||
addtimer(CALLBACK(src, .proc/synth_cool), 50)
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
if(!owner || . & EMP_PROTECT_SELF)
|
||||
return
|
||||
owner.reagents.add_reagent(/datum/reagent/toxin/bad_food, poison_amount / severity)
|
||||
to_chat(owner, "<span class='warning'>You feel like your insides are burning.</span>")
|
||||
to_chat(owner, span_warning("You feel like your insides are burning."))
|
||||
|
||||
|
||||
/obj/item/organ/cyberimp/chest/nutriment/plus
|
||||
@@ -63,7 +63,7 @@
|
||||
else
|
||||
COOLDOWN_START(src, reviver_cooldown, revive_cost)
|
||||
reviving = FALSE
|
||||
to_chat(owner, "<span class='notice'>Your reviver implant shuts down and starts recharging. It will be ready again in [DisplayTimeText(revive_cost)].</span>")
|
||||
to_chat(owner, span_notice("Your reviver implant shuts down and starts recharging. It will be ready again in [DisplayTimeText(revive_cost)]."))
|
||||
return
|
||||
|
||||
if(!COOLDOWN_FINISHED(src, reviver_cooldown) || owner.suiciding)
|
||||
@@ -73,7 +73,7 @@
|
||||
if(UNCONSCIOUS, HARD_CRIT)
|
||||
revive_cost = 0
|
||||
reviving = TRUE
|
||||
to_chat(owner, "<span class='notice'>You feel a faint buzzing as your reviver implant starts patching your wounds...</span>")
|
||||
to_chat(owner, span_notice("You feel a faint buzzing as your reviver implant starts patching your wounds..."))
|
||||
|
||||
|
||||
/obj/item/organ/cyberimp/chest/reviver/proc/heal()
|
||||
@@ -104,7 +104,7 @@
|
||||
var/mob/living/carbon/human/human_owner = owner
|
||||
if(human_owner.stat != DEAD && prob(50 / severity) && human_owner.can_heartattack())
|
||||
human_owner.set_heartattack(TRUE)
|
||||
to_chat(human_owner, "<span class='userdanger'>You feel a horrible agony in your chest!</span>")
|
||||
to_chat(human_owner, span_userdanger("You feel a horrible agony in your chest!"))
|
||||
addtimer(CALLBACK(src, .proc/undo_heart_attack), 600 / severity)
|
||||
|
||||
/obj/item/organ/cyberimp/chest/reviver/proc/undo_heart_attack()
|
||||
@@ -113,7 +113,7 @@
|
||||
return
|
||||
human_owner.set_heartattack(FALSE)
|
||||
if(human_owner.stat == CONSCIOUS)
|
||||
to_chat(human_owner, "<span class='notice'>You feel your heart beating again!</span>")
|
||||
to_chat(human_owner, span_notice("You feel your heart beating again!"))
|
||||
|
||||
|
||||
/obj/item/organ/cyberimp/chest/thrusters
|
||||
@@ -149,7 +149,7 @@
|
||||
if(!on)
|
||||
if((organ_flags & ORGAN_FAILING))
|
||||
if(!silent)
|
||||
to_chat(owner, "<span class='warning'>Your thrusters set seems to be broken!</span>")
|
||||
to_chat(owner, span_warning("Your thrusters set seems to be broken!"))
|
||||
return FALSE
|
||||
if(allow_thrust(0.01))
|
||||
on = TRUE
|
||||
@@ -158,14 +158,14 @@
|
||||
owner.add_movespeed_modifier(/datum/movespeed_modifier/jetpack/cybernetic)
|
||||
RegisterSignal(owner, COMSIG_MOVABLE_PRE_MOVE, .proc/pre_move_react)
|
||||
if(!silent)
|
||||
to_chat(owner, "<span class='notice'>You turn your thrusters set on.</span>")
|
||||
to_chat(owner, span_notice("You turn your thrusters set on."))
|
||||
else
|
||||
ion_trail.stop()
|
||||
UnregisterSignal(owner, COMSIG_MOVABLE_MOVED)
|
||||
owner.remove_movespeed_modifier(/datum/movespeed_modifier/jetpack/cybernetic)
|
||||
UnregisterSignal(owner, COMSIG_MOVABLE_PRE_MOVE)
|
||||
if(!silent)
|
||||
to_chat(owner, "<span class='notice'>You turn your thrusters set off.</span>")
|
||||
to_chat(owner, span_notice("You turn your thrusters set off."))
|
||||
on = FALSE
|
||||
update_appearance()
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
return
|
||||
var/stun_amount = 200/severity
|
||||
owner.Stun(stun_amount)
|
||||
to_chat(owner, "<span class='warning'>Your body seizes up!</span>")
|
||||
to_chat(owner, span_warning("Your body seizes up!"))
|
||||
|
||||
|
||||
/obj/item/organ/cyberimp/brain/anti_drop
|
||||
@@ -55,17 +55,17 @@
|
||||
|
||||
var/list/hold_list = owner.get_empty_held_indexes()
|
||||
if(LAZYLEN(hold_list) == owner.held_items.len)
|
||||
to_chat(owner, "<span class='notice'>You are not holding any items, your hands relax...</span>")
|
||||
to_chat(owner, span_notice("You are not holding any items, your hands relax..."))
|
||||
active = FALSE
|
||||
stored_items = list()
|
||||
else
|
||||
for(var/obj/item/stored_item in stored_items)
|
||||
to_chat(owner, "<span class='notice'>Your [owner.get_held_index_name(owner.get_held_index_of_item(stored_item))]'s grip tightens.</span>")
|
||||
to_chat(owner, span_notice("Your [owner.get_held_index_name(owner.get_held_index_of_item(stored_item))]'s grip tightens."))
|
||||
ADD_TRAIT(stored_item, TRAIT_NODROP, IMPLANT_TRAIT)
|
||||
|
||||
else
|
||||
release_items()
|
||||
to_chat(owner, "<span class='notice'>Your hands relax...</span>")
|
||||
to_chat(owner, span_notice("Your hands relax..."))
|
||||
|
||||
|
||||
/obj/item/organ/cyberimp/brain/anti_drop/emp_act(severity)
|
||||
@@ -79,7 +79,7 @@
|
||||
for(var/obj/item/stored_item in stored_items)
|
||||
throw_target = pick(oview(range))
|
||||
stored_item.throw_at(throw_target, range, 2)
|
||||
to_chat(owner, "<span class='warning'>Your [owner.get_held_index_name(owner.get_held_index_of_item(stored_item))] spasms and throws the [stored_item.name]!</span>")
|
||||
to_chat(owner, span_warning("Your [owner.get_held_index_name(owner.get_held_index_of_item(stored_item))] spasms and throws the [stored_item.name]!"))
|
||||
stored_items = list()
|
||||
|
||||
|
||||
@@ -155,7 +155,7 @@
|
||||
if(!owner || . & EMP_PROTECT_SELF)
|
||||
return
|
||||
if(prob(60/severity))
|
||||
to_chat(owner, "<span class='warning'>Your breathing tube suddenly closes!</span>")
|
||||
to_chat(owner, span_warning("Your breathing tube suddenly closes!"))
|
||||
owner.losebreath += 2
|
||||
|
||||
//BOX O' IMPLANTS
|
||||
|
||||
@@ -39,13 +39,13 @@
|
||||
|
||||
/obj/item/autosurgeon/organ/attack_self(mob/user)//when the object it used...
|
||||
if(!uses)
|
||||
to_chat(user, "<span class='alert'>[src] has already been used. The tools are dull and won't reactivate.</span>")
|
||||
to_chat(user, span_alert("[src] has already been used. The tools are dull and won't reactivate."))
|
||||
return
|
||||
else if(!storedorgan)
|
||||
to_chat(user, "<span class='alert'>[src] currently has no implant stored.</span>")
|
||||
to_chat(user, span_alert("[src] currently has no implant stored."))
|
||||
return
|
||||
storedorgan.Insert(user)//insert stored organ into the user
|
||||
user.visible_message("<span class='notice'>[user] presses a button on [src], and you hear a short mechanical noise.</span>", "<span class='notice'>You feel a sharp sting as [src] plunges into your body.</span>")
|
||||
user.visible_message(span_notice("[user] presses a button on [src], and you hear a short mechanical noise."), span_notice("You feel a sharp sting as [src] plunges into your body."))
|
||||
playsound(get_turf(user), 'sound/weapons/circsawhit.ogg', 50, TRUE)
|
||||
storedorgan = null
|
||||
name = initial(name)
|
||||
@@ -57,15 +57,15 @@
|
||||
/obj/item/autosurgeon/organ/attackby(obj/item/weapon, mob/user, params)
|
||||
if(istype(weapon, organ_type))
|
||||
if(storedorgan)
|
||||
to_chat(user, "<span class='alert'>[src] already has an implant stored.</span>")
|
||||
to_chat(user, span_alert("[src] already has an implant stored."))
|
||||
return
|
||||
else if(!uses)
|
||||
to_chat(user, "<span class='alert'>[src] has already been used up.</span>")
|
||||
to_chat(user, span_alert("[src] has already been used up."))
|
||||
return
|
||||
if(!user.transferItemToLoc(weapon, src))
|
||||
return
|
||||
storedorgan = weapon
|
||||
to_chat(user, "<span class='notice'>You insert the [weapon] into [src].</span>")
|
||||
to_chat(user, span_notice("You insert the [weapon] into [src]."))
|
||||
else
|
||||
return ..()
|
||||
|
||||
@@ -73,13 +73,13 @@
|
||||
if(..())
|
||||
return TRUE
|
||||
if(!storedorgan)
|
||||
to_chat(user, "<span class='warning'>There's no implant in [src] for you to remove!</span>")
|
||||
to_chat(user, span_warning("There's no implant in [src] for you to remove!"))
|
||||
else
|
||||
var/atom/drop_loc = user.drop_location()
|
||||
for(var/atom/movable/stored_implant as anything in src)
|
||||
stored_implant.forceMove(drop_loc)
|
||||
|
||||
to_chat(user, "<span class='notice'>You remove the [storedorgan] from [src].</span>")
|
||||
to_chat(user, span_notice("You remove the [storedorgan] from [src]."))
|
||||
screwtool.play_tool_sound(src)
|
||||
storedorgan = null
|
||||
if(uses != INFINITE)
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
/obj/item/organ/ears/on_life(delta_time, times_fired)
|
||||
// only inform when things got worse, needs to happen before we heal
|
||||
if((damage > low_threshold && prev_damage < low_threshold) || (damage > high_threshold && prev_damage < high_threshold))
|
||||
to_chat(owner, "<span class='warning'>The ringing in your ears grows louder, blocking out any external noises for a moment.</span>")
|
||||
to_chat(owner, span_warning("The ringing in your ears grows louder, blocking out any external noises for a moment."))
|
||||
|
||||
. = ..()
|
||||
// if we have non-damage related deafness like mutations, quirks or clothing (earmuffs), don't bother processing here. Ear healing from earmuffs or chems happen elsewhere
|
||||
@@ -88,13 +88,13 @@
|
||||
/obj/item/organ/ears/penguin/Insert(mob/living/carbon/human/ear_owner, special = 0, drop_if_replaced = TRUE)
|
||||
. = ..()
|
||||
if(istype(ear_owner))
|
||||
to_chat(ear_owner, "<span class='notice'>You suddenly feel like you've lost your balance.</span>")
|
||||
to_chat(ear_owner, span_notice("You suddenly feel like you've lost your balance."))
|
||||
ear_owner.AddElement(/datum/element/waddling)
|
||||
|
||||
/obj/item/organ/ears/penguin/Remove(mob/living/carbon/human/ear_owner, special = 0)
|
||||
. = ..()
|
||||
if(istype(ear_owner))
|
||||
to_chat(ear_owner, "<span class='notice'>Your sense of balance comes back to you.</span>")
|
||||
to_chat(ear_owner, span_notice("Your sense of balance comes back to you."))
|
||||
ear_owner.RemoveElement(/datum/element/waddling)
|
||||
|
||||
/obj/item/organ/ears/bronze
|
||||
|
||||
@@ -159,7 +159,7 @@
|
||||
return
|
||||
if(prob(10 * severity))
|
||||
return
|
||||
to_chat(owner, "<span class='warning'>Static obfuscates your vision!</span>")
|
||||
to_chat(owner, span_warning("Static obfuscates your vision!"))
|
||||
owner.flash_act(visual = 1)
|
||||
|
||||
/obj/item/organ/eyes/robotic/basic
|
||||
@@ -174,7 +174,7 @@
|
||||
return
|
||||
if(prob(10 * severity))
|
||||
damage += 20 * severity
|
||||
to_chat(owner, "<span class='warning'>Your eyes start to fizzle in their sockets!</span>")
|
||||
to_chat(owner, span_warning("Your eyes start to fizzle in their sockets!"))
|
||||
do_sparks(2, TRUE, owner)
|
||||
owner.emote("scream")
|
||||
|
||||
@@ -334,13 +334,13 @@
|
||||
/obj/item/organ/eyes/robotic/glow/proc/activate(silent = FALSE)
|
||||
start_visuals()
|
||||
if(!silent)
|
||||
to_chat(owner, "<span class='warning'>Your [src] clicks and makes a whining noise, before shooting out a beam of light!</span>")
|
||||
to_chat(owner, span_warning("Your [src] clicks and makes a whining noise, before shooting out a beam of light!"))
|
||||
cycle_mob_overlay()
|
||||
|
||||
/obj/item/organ/eyes/robotic/glow/proc/deactivate(silent = FALSE)
|
||||
clear_visuals()
|
||||
if(!silent)
|
||||
to_chat(owner, "<span class='warning'>Your [src] shuts off!</span>")
|
||||
to_chat(owner, span_warning("Your [src] shuts off!"))
|
||||
remove_mob_overlay()
|
||||
|
||||
/obj/item/organ/eyes/robotic/glow/proc/update_visuals(datum/source, olddir, newdir)
|
||||
@@ -482,7 +482,7 @@
|
||||
var/turf/owner_turf = get_turf(owner)
|
||||
var/lums = owner_turf.get_lumcount()
|
||||
if(lums > 0.5) //we allow a little more than usual so we can produce light from the adapted eyes
|
||||
to_chat(owner, "<span class='danger'>Your eyes! They burn in the light!</span>")
|
||||
to_chat(owner, span_danger("Your eyes! They burn in the light!"))
|
||||
applyOrganDamage(10) //blind quickly
|
||||
playsound(owner, 'sound/machines/grill/grillsizzle.ogg', 50)
|
||||
else
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
..()
|
||||
if(!beating)
|
||||
user.visible_message("<span class='notice'>[user] squeezes [src] to \
|
||||
make it beat again!</span>","<span class='notice'>You squeeze [src] to make it beat again!</span>")
|
||||
make it beat again!</span>",span_notice("You squeeze [src] to make it beat again!"))
|
||||
Restart()
|
||||
addtimer(CALLBACK(src, .proc/stop_if_unowned), 80)
|
||||
|
||||
@@ -75,7 +75,7 @@
|
||||
if(heart_owner.health <= heart_owner.crit_threshold && beat != BEAT_SLOW)
|
||||
beat = BEAT_SLOW
|
||||
heart_owner.playsound_local(get_turf(heart_owner), slowbeat, 40, 0, channel = CHANNEL_HEARTBEAT, use_reverb = FALSE)
|
||||
to_chat(owner, "<span class='notice'>You feel your heart slow down...</span>")
|
||||
to_chat(owner, span_notice("You feel your heart slow down..."))
|
||||
if(beat == BEAT_SLOW && heart_owner.health > heart_owner.crit_threshold)
|
||||
heart_owner.stop_sound_channel(CHANNEL_HEARTBEAT)
|
||||
beat = BEAT_NONE
|
||||
@@ -90,8 +90,8 @@
|
||||
|
||||
if(organ_flags & ORGAN_FAILING && !(HAS_TRAIT(src, TRAIT_STABLEHEART))) //heart broke, stopped beating, death imminent... unless you have veins that pump blood without a heart
|
||||
if(owner.stat == CONSCIOUS)
|
||||
owner.visible_message("<span class='danger'>[owner] clutches at [owner.p_their()] chest as if [owner.p_their()] heart is stopping!</span>", \
|
||||
"<span class='userdanger'>You feel a terrible pain in your chest, as if your heart has stopped!</span>")
|
||||
owner.visible_message(span_danger("[owner] clutches at [owner.p_their()] chest as if [owner.p_their()] heart is stopping!"), \
|
||||
span_userdanger("You feel a terrible pain in your chest, as if your heart has stopped!"))
|
||||
owner.set_heartattack(TRUE)
|
||||
failed = TRUE
|
||||
|
||||
@@ -130,7 +130,7 @@
|
||||
var/mob/living/carbon/human/accursed_human = owner
|
||||
if(accursed_human.dna && !(NOBLOOD in accursed_human.dna.species.species_traits))
|
||||
accursed_human.blood_volume = max(accursed_human.blood_volume - blood_loss, 0)
|
||||
to_chat(accursed_human, "<span class='userdanger'>You have to keep pumping your blood!</span>")
|
||||
to_chat(accursed_human, span_userdanger("You have to keep pumping your blood!"))
|
||||
if(add_colour)
|
||||
accursed_human.add_client_colour(/datum/client_colour/cursed_heart_blood) //bloody screen so real
|
||||
add_colour = FALSE
|
||||
@@ -140,7 +140,7 @@
|
||||
/obj/item/organ/heart/cursed/Insert(mob/living/carbon/accursed, special = 0)
|
||||
..()
|
||||
if(owner)
|
||||
to_chat(owner, "<span class='userdanger'>Your heart has been replaced with a cursed one, you have to pump this one manually otherwise you'll die!</span>")
|
||||
to_chat(owner, span_userdanger("Your heart has been replaced with a cursed one, you have to pump this one manually otherwise you'll die!"))
|
||||
|
||||
/obj/item/organ/heart/cursed/Remove(mob/living/carbon/accursed, special = 0)
|
||||
..()
|
||||
@@ -156,12 +156,12 @@
|
||||
var/obj/item/organ/heart/cursed/cursed_heart = target
|
||||
|
||||
if(world.time < (cursed_heart.last_pump + (cursed_heart.pump_delay-10))) //no spam
|
||||
to_chat(owner, "<span class='userdanger'>Too soon!</span>")
|
||||
to_chat(owner, span_userdanger("Too soon!"))
|
||||
return
|
||||
|
||||
cursed_heart.last_pump = world.time
|
||||
playsound(owner,'sound/effects/singlebeat.ogg',40,TRUE)
|
||||
to_chat(owner, "<span class='notice'>Your heart beats.</span>")
|
||||
to_chat(owner, span_notice("Your heart beats."))
|
||||
|
||||
var/mob/living/carbon/human/accursed = owner
|
||||
if(istype(accursed))
|
||||
@@ -222,8 +222,8 @@
|
||||
if(prob(emp_vulnerability/severity)) //Chance of permanent effects
|
||||
organ_flags |= ORGAN_SYNTHETIC_EMP //Starts organ faliure - gonna need replacing soon.
|
||||
Stop()
|
||||
owner.visible_message("<span class='danger'>[owner] clutches at [owner.p_their()] chest as if [owner.p_their()] heart is stopping!</span>", \
|
||||
"<span class='userdanger'>You feel a terrible pain in your chest, as if your heart has stopped!</span>")
|
||||
owner.visible_message(span_danger("[owner] clutches at [owner.p_their()] chest as if [owner.p_their()] heart is stopping!"), \
|
||||
span_userdanger("You feel a terrible pain in your chest, as if your heart has stopped!"))
|
||||
addtimer(CALLBACK(src, .proc/Restart), 10 SECONDS)
|
||||
|
||||
/obj/item/organ/heart/cybernetic/on_life(delta_time, times_fired)
|
||||
@@ -250,7 +250,7 @@
|
||||
. = ..()
|
||||
if(owner.health < 5 && COOLDOWN_FINISHED(src, adrenaline_cooldown))
|
||||
COOLDOWN_START(src, adrenaline_cooldown, rand(25 SECONDS, 1 MINUTES))
|
||||
to_chat(owner, "<span class='userdanger'>You feel yourself dying, but you refuse to give up!</span>")
|
||||
to_chat(owner, span_userdanger("You feel yourself dying, but you refuse to give up!"))
|
||||
owner.heal_overall_damage(15, 15, 0, BODYPART_ORGANIC)
|
||||
if(owner.reagents.get_reagent_amount(/datum/reagent/medicine/ephedrine) < 20)
|
||||
owner.reagents.add_reagent(/datum/reagent/medicine/ephedrine, 10)
|
||||
@@ -313,11 +313,11 @@
|
||||
|
||||
switch(timeleft(crystalize_timer_id))
|
||||
if(0 to CRYSTALIZE_STAGE_ENGULFING)
|
||||
examine_list += "<span class='warning'>Crystals are almost engulfing [examined_human]! </span>"
|
||||
examine_list += span_warning("Crystals are almost engulfing [examined_human]! ")
|
||||
if(CRYSTALIZE_STAGE_ENGULFING to CRYSTALIZE_STAGE_ENCROACHING)
|
||||
examine_list += "<span class='notice'>Crystals are starting to cover [examined_human]. </span>"
|
||||
examine_list += span_notice("Crystals are starting to cover [examined_human]. ")
|
||||
if(CRYSTALIZE_STAGE_SMALL to INFINITY)
|
||||
examine_list += "<span class='notice'>Some crystals are coming out of [examined_human]. </span>"
|
||||
examine_list += span_notice("Some crystals are coming out of [examined_human]. ")
|
||||
|
||||
///On stat changes, if the victim is no longer dead but they're crystalizing, cancel it, if they become dead, start the crystalizing process if possible
|
||||
/obj/item/organ/heart/ethereal/proc/on_stat_change(mob/living/victim, new_stat)
|
||||
@@ -335,8 +335,8 @@
|
||||
if(!COOLDOWN_FINISHED(src, crystalize_cooldown))
|
||||
return //lol double rip
|
||||
|
||||
to_chat(victim, "<span class='nicegreen'>Crystals start forming around your dead body.</span>")
|
||||
victim.visible_message("<span class='notice'>Crystals start forming around [victim].</span>")
|
||||
to_chat(victim, span_nicegreen("Crystals start forming around your dead body."))
|
||||
victim.visible_message(span_notice("Crystals start forming around [victim]."))
|
||||
ADD_TRAIT(victim, TRAIT_CORPSELOCKED, SPECIES_TRAIT)
|
||||
|
||||
crystalize_timer_id = addtimer(CALLBACK(src, .proc/crystalize, victim), CRYSTALIZE_PRE_WAIT_TIME, TIMER_STOPPABLE)
|
||||
@@ -348,8 +348,8 @@
|
||||
///Ran when disarmed, prevents the ethereal from reviving
|
||||
/obj/item/organ/heart/ethereal/proc/reset_crystalizing(mob/living/defender, mob/living/attacker, zone)
|
||||
SIGNAL_HANDLER
|
||||
to_chat(defender, "<span class='notice'>The crystals on your corpse are gently broken off, and will need some time to recover.</span>")
|
||||
defender.visible_message("<span class='notice'>The crystals on [defender] are gently broken off.</span>")
|
||||
to_chat(defender, span_notice("The crystals on your corpse are gently broken off, and will need some time to recover."))
|
||||
defender.visible_message(span_notice("The crystals on [defender] are gently broken off."))
|
||||
deltimer(crystalize_timer_id)
|
||||
crystalize_timer_id = addtimer(CALLBACK(src, .proc/crystalize, defender), CRYSTALIZE_DISARM_WAIT_TIME, TIMER_STOPPABLE) //Lets us restart the timer on disarm
|
||||
|
||||
@@ -363,7 +363,7 @@
|
||||
return //Should probably not happen, but lets be safe.
|
||||
|
||||
if(ismob(location) || isitem(location)) //Stops crystallization if they are eaten by a dragon, turned into a legion, consumed by his grace, etc.
|
||||
to_chat(ethereal, "<span class='userwarning'>You were unable to finish your crystallization, for obvious reasons.</span>")
|
||||
to_chat(ethereal, span_warning("You were unable to finish your crystallization, for obvious reasons."))
|
||||
stop_crystalization_process(ethereal, FALSE)
|
||||
return
|
||||
COOLDOWN_START(src, crystalize_cooldown, INFINITY) //Prevent cheeky double-healing until we get out, this is against stupid admemery
|
||||
@@ -405,8 +405,8 @@
|
||||
|
||||
var/mob/living/carbon/human/ethereal = source
|
||||
|
||||
to_chat(ethereal, "<span class='userwarning'>The crystals on your body have completely broken</span>")
|
||||
ethereal.visible_message("<span class='notice'>The crystals on [ethereal] are completely shattered and stopped growing</span>")
|
||||
to_chat(ethereal, span_warning("The crystals on your body have completely broken"))
|
||||
ethereal.visible_message(span_notice("The crystals on [ethereal] are completely shattered and stopped growing"))
|
||||
|
||||
stop_crystalization_process(ethereal)
|
||||
|
||||
@@ -430,8 +430,8 @@
|
||||
/obj/structure/ethereal_crystal/Initialize(mapload, obj/item/organ/heart/ethereal/ethereal_heart)
|
||||
. = ..()
|
||||
src.ethereal_heart = ethereal_heart
|
||||
ethereal_heart.owner.visible_message("<span class='notice'>The crystals fully encase [ethereal_heart.owner]!</span>")
|
||||
to_chat(ethereal_heart.owner, "<span class='notice'>You are encased in a huge crystal!</span>")
|
||||
ethereal_heart.owner.visible_message(span_notice("The crystals fully encase [ethereal_heart.owner]!"))
|
||||
to_chat(ethereal_heart.owner, span_notice("You are encased in a huge crystal!"))
|
||||
playsound(get_turf(src), 'sound/effects/ethereal_crystalization.ogg', 50)
|
||||
ethereal_heart.owner.forceMove(src) //put that ethereal in
|
||||
add_atom_colour(ethereal_heart.ethereal_color, FIXED_COLOUR_PRIORITY)
|
||||
@@ -459,7 +459,7 @@
|
||||
ethereal_heart.owner.forceMove(get_turf(src))
|
||||
REMOVE_TRAIT(ethereal_heart.owner, TRAIT_CORPSELOCKED, SPECIES_TRAIT)
|
||||
deltimer(crystal_heal_timer)
|
||||
visible_message("<span class='notice'>The crystals shatters, causing [ethereal_heart.owner] to fall out</span>")
|
||||
visible_message(span_notice("The crystals shatters, causing [ethereal_heart.owner] to fall out"))
|
||||
return ..()
|
||||
|
||||
/obj/structure/ethereal_crystal/update_overlays()
|
||||
@@ -471,7 +471,7 @@
|
||||
|
||||
/obj/structure/ethereal_crystal/proc/heal_ethereal()
|
||||
ethereal_heart.owner.revive(TRUE, FALSE)
|
||||
to_chat(ethereal_heart.owner, "<span class='notice'>You burst out of the crystal with vigour... </span><span class='userdanger'>But at a cost.</span>")
|
||||
to_chat(ethereal_heart.owner, span_notice("You burst out of the crystal with vigour... </span><span class='userdanger'>But at a cost."))
|
||||
var/datum/brain_trauma/picked_trauma
|
||||
if(prob(10)) //10% chance for a severe trauma
|
||||
picked_trauma = pick(subtypesof(/datum/brain_trauma/severe))
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
if(HAS_TRAIT(src, TRAIT_CULINARY_METABOLISM))
|
||||
. += "The high iron content and slight smell of garlic, implies that this is the liver of a <em>cook</em>."
|
||||
if(HAS_TRAIT(src, TRAIT_COMEDY_METABOLISM))
|
||||
. += "A smell of bananas, a slippery sheen and <span class='clown'>honking</span> when depressed, implies that this is the liver of a <em>clown</em>."
|
||||
. += "A smell of bananas, a slippery sheen and [span_clown("honking")] when depressed, implies that this is the liver of a <em>clown</em>."
|
||||
if(HAS_TRAIT(src, TRAIT_MEDICAL_METABOLISM))
|
||||
. += "Marks of stress and a faint whiff of medicinal alcohol, imply that this is the liver of a <em>medical worker</em>."
|
||||
if(HAS_TRAIT(src, TRAIT_GREYTIDE_METABOLISM))
|
||||
@@ -99,7 +99,7 @@
|
||||
liver_owner.reagents.metabolize(liver_owner, delta_time, times_fired, can_overdose=TRUE)
|
||||
|
||||
if(provide_pain_message && damage > 10 && DT_PROB(damage/6, delta_time)) //the higher the damage the higher the probability
|
||||
to_chat(liver_owner, "<span class='warning'>You feel a dull pain in your abdomen.</span>")
|
||||
to_chat(liver_owner, span_warning("You feel a dull pain in your abdomen."))
|
||||
|
||||
|
||||
if(damage > maxHealth)//cap liver damage
|
||||
@@ -170,11 +170,11 @@
|
||||
return
|
||||
switch(failure_time)
|
||||
if(0 to 3 * LIVER_FAILURE_STAGE_SECONDS - 1)
|
||||
examine_list += "<span class='notice'>[owner]'s eyes are slightly yellow.</span>"
|
||||
examine_list += span_notice("[owner]'s eyes are slightly yellow.")
|
||||
if(3 * LIVER_FAILURE_STAGE_SECONDS to 4 * LIVER_FAILURE_STAGE_SECONDS - 1)
|
||||
examine_list += "<span class='notice'>[owner]'s eyes are completely yellow, and he is visibly suffering.</span>"
|
||||
examine_list += span_notice("[owner]'s eyes are completely yellow, and he is visibly suffering.")
|
||||
if(4 * LIVER_FAILURE_STAGE_SECONDS to INFINITY)
|
||||
examine_list += "<span class='danger'>[owner]'s eyes are completely yellow and swelling with pus. [owner.p_they()] don't look like they will be alive for much longer.</span>"
|
||||
examine_list += span_danger("[owner]'s eyes are completely yellow and swelling with pus. [owner.p_they()] don't look like they will be alive for much longer.")
|
||||
|
||||
/obj/item/organ/liver/on_death(delta_time, times_fired)
|
||||
. = ..()
|
||||
|
||||
@@ -300,7 +300,7 @@
|
||||
breather.emote("burp")
|
||||
if (prob(nitryl_pp) && nitryl_pp>10)
|
||||
breather.adjustOrganLoss(ORGAN_SLOT_LUNGS, nitryl_pp/2)
|
||||
to_chat(breather, "<span class='notice'>You feel a burning sensation in your chest</span>")
|
||||
to_chat(breather, span_notice("You feel a burning sensation in your chest"))
|
||||
gas_breathed = breath_gases[/datum/gas/nitryl][MOLES]
|
||||
if (gas_breathed > gas_stimulation_min)
|
||||
breather.reagents.add_reagent(/datum/reagent/nitryl,1)
|
||||
@@ -310,12 +310,12 @@
|
||||
// Freon
|
||||
var/freon_pp = breath.get_breath_partial_pressure(breath_gases[/datum/gas/freon][MOLES])
|
||||
if (prob(freon_pp))
|
||||
to_chat(breather, "<span class='alert'>Your mouth feels like it's burning!</span>")
|
||||
to_chat(breather, span_alert("Your mouth feels like it's burning!"))
|
||||
if (freon_pp >40)
|
||||
breather.emote("gasp")
|
||||
breather.adjustFireLoss(15)
|
||||
if (prob(freon_pp/2))
|
||||
to_chat(breather, "<span class='alert'>Your throat closes up!</span>")
|
||||
to_chat(breather, span_alert("Your throat closes up!"))
|
||||
breather.silent = max(breather.silent, 3)
|
||||
else
|
||||
breather.adjustFireLoss(freon_pp/4)
|
||||
@@ -329,7 +329,7 @@
|
||||
var/healium_pp = breath.get_breath_partial_pressure(breath_gases[/datum/gas/healium][MOLES])
|
||||
if(healium_pp > gas_stimulation_min)
|
||||
if(prob(15))
|
||||
to_chat(breather, "<span class='alert'>Your head starts spinning and your lungs burn!</span>")
|
||||
to_chat(breather, span_alert("Your head starts spinning and your lungs burn!"))
|
||||
healium_euphoria = EUPHORIA_ACTIVE
|
||||
breather.emote("gasp")
|
||||
else
|
||||
@@ -395,22 +395,22 @@
|
||||
// At lower pp, give out a little warning
|
||||
SEND_SIGNAL(owner, COMSIG_CLEAR_MOOD_EVENT, "smell")
|
||||
if(prob(5))
|
||||
to_chat(owner, "<span class='notice'>There is an unpleasant smell in the air.</span>")
|
||||
to_chat(owner, span_notice("There is an unpleasant smell in the air."))
|
||||
if(5 to 15)
|
||||
//At somewhat higher pp, warning becomes more obvious
|
||||
if(prob(15))
|
||||
to_chat(owner, "<span class='warning'>You smell something horribly decayed inside this room.</span>")
|
||||
to_chat(owner, span_warning("You smell something horribly decayed inside this room."))
|
||||
SEND_SIGNAL(owner, COMSIG_ADD_MOOD_EVENT, "smell", /datum/mood_event/disgust/bad_smell)
|
||||
if(15 to 30)
|
||||
//Small chance to vomit. By now, people have internals on anyway
|
||||
if(prob(5))
|
||||
to_chat(owner, "<span class='warning'>The stench of rotting carcasses is unbearable!</span>")
|
||||
to_chat(owner, span_warning("The stench of rotting carcasses is unbearable!"))
|
||||
SEND_SIGNAL(owner, COMSIG_ADD_MOOD_EVENT, "smell", /datum/mood_event/disgust/nauseating_stench)
|
||||
owner.vomit()
|
||||
if(30 to INFINITY)
|
||||
//Higher chance to vomit. Let the horror start
|
||||
if(prob(15))
|
||||
to_chat(owner, "<span class='warning'>The stench of rotting carcasses is unbearable!</span>")
|
||||
to_chat(owner, span_warning("The stench of rotting carcasses is unbearable!"))
|
||||
SEND_SIGNAL(owner, COMSIG_ADD_MOOD_EVENT, "smell", /datum/mood_event/disgust/nauseating_stench)
|
||||
owner.vomit()
|
||||
else
|
||||
@@ -468,7 +468,7 @@
|
||||
breather.apply_damage_type(cold_level_1_damage*cold_modifier, cold_damage_type)
|
||||
if(breath_temperature < cold_level_1_threshold)
|
||||
if(prob(20))
|
||||
to_chat(breather, "<span class='warning'>You feel [cold_message] in your [name]!</span>")
|
||||
to_chat(breather, span_warning("You feel [cold_message] in your [name]!"))
|
||||
|
||||
if(!HAS_TRAIT(breather, TRAIT_RESISTHEAT)) // HEAT DAMAGE
|
||||
var/heat_modifier = breather.dna.species.heatmod
|
||||
@@ -480,7 +480,7 @@
|
||||
breather.apply_damage_type(heat_level_3_damage*heat_modifier, heat_damage_type)
|
||||
if(breath_temperature > heat_level_1_threshold)
|
||||
if(prob(20))
|
||||
to_chat(breather, "<span class='warning'>You feel [hot_message] in your [name]!</span>")
|
||||
to_chat(breather, span_warning("You feel [hot_message] in your [name]!"))
|
||||
|
||||
// The air you breathe out should match your body temperature
|
||||
breath.temperature = breather.bodytemperature
|
||||
@@ -495,7 +495,7 @@
|
||||
if(do_i_cough)
|
||||
owner.emote("cough")
|
||||
if(organ_flags & ORGAN_FAILING && owner.stat == CONSCIOUS)
|
||||
owner.visible_message("<span class='danger'>[owner] grabs [owner.p_their()] throat, struggling for breath!</span>", "<span class='userdanger'>You suddenly feel like you can't breathe!</span>")
|
||||
owner.visible_message(span_danger("[owner] grabs [owner.p_their()] throat, struggling for breath!"), span_userdanger("You suddenly feel like you can't breathe!"))
|
||||
failed = TRUE
|
||||
|
||||
/obj/item/organ/lungs/get_availability(datum/species/owner_species)
|
||||
|
||||
@@ -132,17 +132,17 @@
|
||||
/obj/item/organ/examine(mob/user)
|
||||
. = ..()
|
||||
|
||||
. += "<span class='notice'>It should be inserted in the [parse_zone(zone)].</span>"
|
||||
. += span_notice("It should be inserted in the [parse_zone(zone)].")
|
||||
|
||||
if(organ_flags & ORGAN_FAILING)
|
||||
if(status == ORGAN_ROBOTIC)
|
||||
. += "<span class='warning'>[src] seems to be broken.</span>"
|
||||
. += span_warning("[src] seems to be broken.")
|
||||
return
|
||||
. += "<span class='warning'>[src] has decayed for too long, and has turned a sickly color. It probably won't work without repairs.</span>"
|
||||
. += span_warning("[src] has decayed for too long, and has turned a sickly color. It probably won't work without repairs.")
|
||||
return
|
||||
|
||||
if(damage > high_threshold)
|
||||
. += "<span class='warning'>[src] is starting to look discolored.</span>"
|
||||
. += span_warning("[src] is starting to look discolored.")
|
||||
|
||||
/obj/item/organ/Initialize()
|
||||
. = ..()
|
||||
|
||||
@@ -106,13 +106,13 @@
|
||||
//The stomach is damage has nutriment but low on theshhold, lo prob of vomit
|
||||
if(DT_PROB(0.0125 * damage * nutri_vol * nutri_vol, delta_time))
|
||||
body.vomit(damage)
|
||||
to_chat(body, "<span class='warning'>Your stomach reels in pain as you're incapable of holding down all that food!</span>")
|
||||
to_chat(body, span_warning("Your stomach reels in pain as you're incapable of holding down all that food!"))
|
||||
return
|
||||
|
||||
// the change of vomit is now high
|
||||
if(damage > high_threshold && DT_PROB(0.05 * damage * nutri_vol * nutri_vol, delta_time))
|
||||
body.vomit(damage)
|
||||
to_chat(body, "<span class='warning'>Your stomach reels in pain as you're incapable of holding down all that food!</span>")
|
||||
to_chat(body, span_warning("Your stomach reels in pain as you're incapable of holding down all that food!"))
|
||||
|
||||
/obj/item/organ/stomach/get_availability(datum/species/owner_species)
|
||||
return !(NOSTOMACH in owner_species.inherent_traits)
|
||||
@@ -125,7 +125,7 @@
|
||||
disgusted.stuttering += 1
|
||||
disgusted.add_confusion(2)
|
||||
if(DT_PROB(5, delta_time) && !disgusted.stat)
|
||||
to_chat(disgusted, "<span class='warning'>You feel kind of iffy...</span>")
|
||||
to_chat(disgusted, span_warning("You feel kind of iffy..."))
|
||||
disgusted.jitteriness = max(disgusted.jitteriness - 3, 0)
|
||||
if(disgusted.disgust >= DISGUST_LEVEL_VERYGROSS)
|
||||
if(DT_PROB(pukeprob, delta_time)) //iT hAndLeS mOrE ThaN PukInG
|
||||
@@ -174,7 +174,7 @@
|
||||
var/mob/living/carbon/body = owner
|
||||
if(milk.volume > 50)
|
||||
reagents.remove_reagent(milk.type, milk.volume - 5)
|
||||
to_chat(owner, "<span class='warning'>The excess milk is dripping off your bones!</span>")
|
||||
to_chat(owner, span_warning("The excess milk is dripping off your bones!"))
|
||||
body.heal_bodypart_damage(milk_brute_healing * REAGENTS_EFFECT_MULTIPLIER * delta_time, milk_burn_healing * REAGENTS_EFFECT_MULTIPLIER * delta_time)
|
||||
|
||||
for(var/datum/wound/iter_wound as anything in body.all_wounds)
|
||||
@@ -218,7 +218,7 @@
|
||||
if(flags & SHOCK_ILLUSION)
|
||||
return
|
||||
adjust_charge(shock_damage * siemens_coeff * 2)
|
||||
to_chat(owner, "<span class='notice'>You absorb some of the shock into your body!</span>")
|
||||
to_chat(owner, span_notice("You absorb some of the shock into your body!"))
|
||||
|
||||
/obj/item/organ/stomach/ethereal/proc/adjust_charge(amount)
|
||||
crystal_charge = clamp(crystal_charge + amount, ETHEREAL_CHARGE_NONE, ETHEREAL_CHARGE_DANGEROUS)
|
||||
|
||||
@@ -119,19 +119,19 @@
|
||||
/datum/action/item_action/organ_action/statue/Trigger()
|
||||
. = ..()
|
||||
if(!iscarbon(owner))
|
||||
to_chat(owner, "<span class='warning'>Your body rejects the powers of the tongue!</span>")
|
||||
to_chat(owner, span_warning("Your body rejects the powers of the tongue!"))
|
||||
return
|
||||
var/mob/living/carbon/becoming_statue = owner
|
||||
if(becoming_statue.health < 1)
|
||||
to_chat(becoming_statue, "<span class='danger'>You are too weak to become a statue!</span>")
|
||||
to_chat(becoming_statue, span_danger("You are too weak to become a statue!"))
|
||||
return
|
||||
if(!COOLDOWN_FINISHED(src, ability_cooldown))
|
||||
to_chat(becoming_statue, "<span class='warning'>You just used the ability, wait a little bit!</span>")
|
||||
to_chat(becoming_statue, span_warning("You just used the ability, wait a little bit!"))
|
||||
return
|
||||
var/is_statue = becoming_statue.loc == statue
|
||||
to_chat(becoming_statue, "<span class='notice'>You begin to [is_statue ? "break free from the statue" : "make a glorious pose as you become a statue"]!</span>")
|
||||
to_chat(becoming_statue, span_notice("You begin to [is_statue ? "break free from the statue" : "make a glorious pose as you become a statue"]!"))
|
||||
if(!do_after(becoming_statue, (is_statue ? 5 : 30), target = get_turf(becoming_statue)))
|
||||
to_chat(becoming_statue, "<span class='warning'>Your transformation is interrupted!</span>")
|
||||
to_chat(becoming_statue, span_warning("Your transformation is interrupted!"))
|
||||
COOLDOWN_START(src, ability_cooldown, 3 SECONDS)
|
||||
return
|
||||
COOLDOWN_START(src, ability_cooldown, 10 SECONDS)
|
||||
@@ -142,12 +142,12 @@
|
||||
statue.set_custom_materials(list(/datum/material/silver=MINERAL_MATERIAL_AMOUNT*5))
|
||||
|
||||
if(is_statue)
|
||||
statue.visible_message("<span class='danger'>[statue] becomes animated!</span>")
|
||||
statue.visible_message(span_danger("[statue] becomes animated!"))
|
||||
becoming_statue.forceMove(get_turf(statue))
|
||||
statue.moveToNullspace()
|
||||
UnregisterSignal(becoming_statue, COMSIG_MOVABLE_MOVED)
|
||||
else
|
||||
becoming_statue.visible_message("<span class='notice'>[becoming_statue] hardens into a silver statue.</span>", "<span class='notice'>You have become a silver statue!</span>")
|
||||
becoming_statue.visible_message(span_notice("[becoming_statue] hardens into a silver statue."), span_notice("You have become a silver statue!"))
|
||||
statue.set_visuals(becoming_statue.appearance)
|
||||
statue.forceMove(get_turf(becoming_statue))
|
||||
becoming_statue.forceMove(statue)
|
||||
@@ -162,7 +162,7 @@
|
||||
UnregisterSignal(mover, COMSIG_MOVABLE_MOVED)
|
||||
|
||||
/datum/action/item_action/organ_action/statue/proc/statue_destroyed(datum/source)
|
||||
to_chat(owner, "<span class='userdanger'>Your existence as a living creature snaps as your statue form crumbles!</span>")
|
||||
to_chat(owner, span_userdanger("Your existence as a living creature snaps as your statue form crumbles!"))
|
||||
if(iscarbon(owner))
|
||||
//drop everything, just in case
|
||||
var/mob/living/carbon/dying_carbon = owner
|
||||
@@ -228,27 +228,27 @@
|
||||
return
|
||||
|
||||
if(tongue.mothership == mothership)
|
||||
to_chat(tongue_holder, "<span class='notice'>[src] is already attuned to the same channel as your own.</span>")
|
||||
to_chat(tongue_holder, span_notice("[src] is already attuned to the same channel as your own."))
|
||||
|
||||
tongue_holder.visible_message("<span class='notice'>[tongue_holder] holds [src] in their hands, and concentrates for a moment.</span>", "<span class='notice'>You attempt to modify the attenuation of [src].</span>")
|
||||
tongue_holder.visible_message(span_notice("[tongue_holder] holds [src] in their hands, and concentrates for a moment."), span_notice("You attempt to modify the attenuation of [src]."))
|
||||
if(do_after(tongue_holder, delay=15, target=src))
|
||||
to_chat(tongue_holder, "<span class='notice'>You attune [src] to your own channel.</span>")
|
||||
to_chat(tongue_holder, span_notice("You attune [src] to your own channel."))
|
||||
mothership = tongue.mothership
|
||||
|
||||
/obj/item/organ/tongue/abductor/examine(mob/examining_mob)
|
||||
. = ..()
|
||||
if(HAS_TRAIT(examining_mob, TRAIT_ABDUCTOR_TRAINING) || (examining_mob.mind && HAS_TRAIT(examining_mob.mind, TRAIT_ABDUCTOR_TRAINING)) || isobserver(examining_mob))
|
||||
. += "<span class='notice'>It can be attuned to a different channel by using it inhand.</span>"
|
||||
. += span_notice("It can be attuned to a different channel by using it inhand.")
|
||||
if(!mothership)
|
||||
. += "<span class='notice'>It is not attuned to a specific mothership.</span>"
|
||||
. += span_notice("It is not attuned to a specific mothership.")
|
||||
else
|
||||
. += "<span class='notice'>It is attuned to [mothership].</span>"
|
||||
. += span_notice("It is attuned to [mothership].")
|
||||
|
||||
/obj/item/organ/tongue/abductor/handle_speech(datum/source, list/speech_args)
|
||||
//Hacks
|
||||
var/message = speech_args[SPEECH_MESSAGE]
|
||||
var/mob/living/carbon/human/user = source
|
||||
var/rendered = "<span class='abductor'><b>[user.real_name]:</b> [message]</span>"
|
||||
var/rendered = span_abductor("<b>[user.real_name]:</b> [message]")
|
||||
user.log_talk(message, LOG_SAY, tag="abductor")
|
||||
for(var/mob/living/carbon/human/living_mob in GLOB.alive_mob_list)
|
||||
var/obj/item/organ/tongue/abductor/tongue = living_mob.getorganslot(ORGAN_SLOT_TONGUE)
|
||||
@@ -463,8 +463,8 @@
|
||||
speech_args[SPEECH_MESSAGE] = new_message
|
||||
|
||||
if(exclamation_found && question_found)
|
||||
signer.visible_message("<span class='notice'>[signer] lowers one of [signer.p_their()] eyebrows, raising the other.</span>")
|
||||
signer.visible_message(span_notice("[signer] lowers one of [signer.p_their()] eyebrows, raising the other."))
|
||||
else if(exclamation_found)
|
||||
signer.visible_message("<span class='notice'>[signer] raises [signer.p_their()] eyebrows.</span>")
|
||||
signer.visible_message(span_notice("[signer] raises [signer.p_their()] eyebrows."))
|
||||
else if(question_found)
|
||||
signer.visible_message("<span class='notice'>[signer] lowers [signer.p_their()] eyebrows.</span>")
|
||||
signer.visible_message(span_notice("[signer] lowers [signer.p_their()] eyebrows."))
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
owner.say(".x[message]")
|
||||
|
||||
/obj/item/organ/vocal_cords/adamantine/handle_speech(message)
|
||||
var/msg = "<span class='resonate'><span class='name'>[owner.real_name]</span> <span class='message'>resonates, \"[message]\"</span></span>"
|
||||
var/msg = span_resonate(span_name("[owner.real_name]</span> <span class='message'>resonates, \"[message]\""))
|
||||
for(var/player in GLOB.player_list)
|
||||
if(iscarbon(player))
|
||||
var/mob/living/carbon/speaker = player
|
||||
@@ -86,7 +86,7 @@
|
||||
. = ..()
|
||||
if(!IsAvailable())
|
||||
if(world.time < cords.next_command)
|
||||
to_chat(owner, "<span class='notice'>You must wait [DisplayTimeText(cords.next_command - world.time)] before Speaking again.</span>")
|
||||
to_chat(owner, span_notice("You must wait [DisplayTimeText(cords.next_command - world.time)] before Speaking again."))
|
||||
return
|
||||
var/command = input(owner, "Speak with the Voice of God", "Command")
|
||||
if(QDELETED(src) || QDELETED(owner))
|
||||
@@ -97,12 +97,12 @@
|
||||
|
||||
/obj/item/organ/vocal_cords/colossus/can_speak_with()
|
||||
if(world.time < next_command)
|
||||
to_chat(owner, "<span class='notice'>You must wait [DisplayTimeText(next_command - world.time)] before Speaking again.</span>")
|
||||
to_chat(owner, span_notice("You must wait [DisplayTimeText(next_command - world.time)] before Speaking again."))
|
||||
return FALSE
|
||||
if(!owner)
|
||||
return FALSE
|
||||
if(!owner.can_speak_vocal())
|
||||
to_chat(owner, "<span class='warning'>You are unable to speak!</span>")
|
||||
to_chat(owner, span_warning("You are unable to speak!"))
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
|
||||
@@ -17,17 +17,17 @@
|
||||
time = 64
|
||||
|
||||
/datum/surgery_step/reshape_face/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
user.visible_message("<span class='notice'>[user] begins to alter [target]'s appearance.</span>", "<span class='notice'>You begin to alter [target]'s appearance...</span>")
|
||||
display_results(user, target, "<span class='notice'>You begin to alter [target]'s appearance...</span>",
|
||||
"<span class='notice'>[user] begins to alter [target]'s appearance.</span>",
|
||||
"<span class='notice'>[user] begins to make an incision in [target]'s face.</span>")
|
||||
user.visible_message(span_notice("[user] begins to alter [target]'s appearance."), span_notice("You begin to alter [target]'s appearance..."))
|
||||
display_results(user, target, span_notice("You begin to alter [target]'s appearance..."),
|
||||
span_notice("[user] begins to alter [target]'s appearance."),
|
||||
span_notice("[user] begins to make an incision in [target]'s face."))
|
||||
|
||||
/datum/surgery_step/reshape_face/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
|
||||
if(HAS_TRAIT_FROM(target, TRAIT_DISFIGURED, TRAIT_GENERIC))
|
||||
REMOVE_TRAIT(target, TRAIT_DISFIGURED, TRAIT_GENERIC)
|
||||
display_results(user, target, "<span class='notice'>You successfully restore [target]'s appearance.</span>",
|
||||
"<span class='notice'>[user] successfully restores [target]'s appearance!</span>",
|
||||
"<span class='notice'>[user] finishes the operation on [target]'s face.</span>")
|
||||
display_results(user, target, span_notice("You successfully restore [target]'s appearance."),
|
||||
span_notice("[user] successfully restores [target]'s appearance!"),
|
||||
span_notice("[user] finishes the operation on [target]'s face."))
|
||||
else
|
||||
var/list/names = list()
|
||||
if(!isabductor(user))
|
||||
@@ -43,17 +43,17 @@
|
||||
var/oldname = target.real_name
|
||||
target.real_name = chosen_name
|
||||
var/newname = target.real_name //something about how the code handles names required that I use this instead of target.real_name
|
||||
display_results(user, target, "<span class='notice'>You alter [oldname]'s appearance completely, [target.p_they()] is now [newname].</span>",
|
||||
"<span class='notice'>[user] alters [oldname]'s appearance completely, [target.p_they()] is now [newname]!</span>",
|
||||
"<span class='notice'>[user] finishes the operation on [target]'s face.</span>")
|
||||
display_results(user, target, span_notice("You alter [oldname]'s appearance completely, [target.p_they()] is now [newname]."),
|
||||
span_notice("[user] alters [oldname]'s appearance completely, [target.p_they()] is now [newname]!"),
|
||||
span_notice("[user] finishes the operation on [target]'s face."))
|
||||
if(ishuman(target))
|
||||
var/mob/living/carbon/human/human_target = target
|
||||
human_target.sec_hud_set_ID()
|
||||
return ..()
|
||||
|
||||
/datum/surgery_step/reshape_face/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='warning'>You screw up, leaving [target]'s appearance disfigured!</span>",
|
||||
"<span class='notice'>[user] screws up, disfiguring [target]'s appearance!</span>",
|
||||
"<span class='notice'>[user] finishes the operation on [target]'s face.</span>")
|
||||
display_results(user, target, span_warning("You screw up, leaving [target]'s appearance disfigured!"),
|
||||
span_notice("[user] screws up, disfiguring [target]'s appearance!"),
|
||||
span_notice("[user] finishes the operation on [target]'s face."))
|
||||
ADD_TRAIT(target, TRAIT_DISFIGURED, TRAIT_GENERIC)
|
||||
return FALSE
|
||||
|
||||
@@ -33,42 +33,42 @@
|
||||
/datum/surgery_step/add_prosthetic/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
if(istype(tool, /obj/item/borg/apparatus/organ_storage))
|
||||
if(!tool.contents.len)
|
||||
to_chat(user, "<span class='warning'>There is nothing inside [tool]!</span>")
|
||||
to_chat(user, span_warning("There is nothing inside [tool]!"))
|
||||
return -1
|
||||
var/obj/item/organ_storage_contents = tool.contents[1]
|
||||
if(!isbodypart(organ_storage_contents))
|
||||
to_chat(user, "<span class='warning'>[organ_storage_contents] cannot be attached!</span>")
|
||||
to_chat(user, span_warning("[organ_storage_contents] cannot be attached!"))
|
||||
return -1
|
||||
tool = organ_storage_contents
|
||||
if(istype(tool, /obj/item/bodypart))
|
||||
var/obj/item/bodypart/bodypart_to_attach = tool
|
||||
if(ismonkey(target))// monkey patient only accept organic monkey limbs
|
||||
if(bodypart_to_attach.status == BODYPART_ROBOTIC || bodypart_to_attach.animal_origin != MONKEY_BODYPART)
|
||||
to_chat(user, "<span class='warning'>[bodypart_to_attach] doesn't match the patient's morphology.</span>")
|
||||
to_chat(user, span_warning("[bodypart_to_attach] doesn't match the patient's morphology."))
|
||||
return -1
|
||||
if(bodypart_to_attach.status != BODYPART_ROBOTIC)
|
||||
organ_rejection_dam = 10
|
||||
if(ishuman(target))
|
||||
if(bodypart_to_attach.animal_origin)
|
||||
to_chat(user, "<span class='warning'>[bodypart_to_attach] doesn't match the patient's morphology.</span>")
|
||||
to_chat(user, span_warning("[bodypart_to_attach] doesn't match the patient's morphology."))
|
||||
return -1
|
||||
var/mob/living/carbon/human/human_target = target
|
||||
if(human_target.dna.species.id != bodypart_to_attach.species_id)
|
||||
organ_rejection_dam = 30
|
||||
|
||||
if(target_zone == bodypart_to_attach.body_zone) //so we can't replace a leg with an arm, or a human arm with a monkey arm.
|
||||
display_results(user, target, "<span class='notice'>You begin to replace [target]'s [parse_zone(target_zone)] with [tool]...</span>",
|
||||
"<span class='notice'>[user] begins to replace [target]'s [parse_zone(target_zone)] with [tool].</span>",
|
||||
"<span class='notice'>[user] begins to replace [target]'s [parse_zone(target_zone)].</span>")
|
||||
display_results(user, target, span_notice("You begin to replace [target]'s [parse_zone(target_zone)] with [tool]..."),
|
||||
span_notice("[user] begins to replace [target]'s [parse_zone(target_zone)] with [tool]."),
|
||||
span_notice("[user] begins to replace [target]'s [parse_zone(target_zone)]."))
|
||||
else
|
||||
to_chat(user, "<span class='warning'>[tool] isn't the right type for [parse_zone(target_zone)].</span>")
|
||||
to_chat(user, span_warning("[tool] isn't the right type for [parse_zone(target_zone)]."))
|
||||
return -1
|
||||
else if(target_zone == BODY_ZONE_L_ARM || target_zone == BODY_ZONE_R_ARM)
|
||||
display_results(user, target, "<span class='notice'>You begin to attach [tool] onto [target]...</span>",
|
||||
"<span class='notice'>[user] begins to attach [tool] onto [target]'s [parse_zone(target_zone)].</span>",
|
||||
"<span class='notice'>[user] begins to attach something onto [target]'s [parse_zone(target_zone)].</span>")
|
||||
display_results(user, target, span_notice("You begin to attach [tool] onto [target]..."),
|
||||
span_notice("[user] begins to attach [tool] onto [target]'s [parse_zone(target_zone)]."),
|
||||
span_notice("[user] begins to attach something onto [target]'s [parse_zone(target_zone)]."))
|
||||
else
|
||||
to_chat(user, "<span class='warning'>[tool] must be installed onto an arm.</span>")
|
||||
to_chat(user, span_warning("[tool] must be installed onto an arm."))
|
||||
return -1
|
||||
|
||||
/datum/surgery_step/add_prosthetic/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
|
||||
@@ -81,29 +81,29 @@
|
||||
if(istype(tool, /obj/item/bodypart) && user.temporarilyRemoveItemFromInventory(tool))
|
||||
var/obj/item/bodypart/limb_to_attach = tool
|
||||
if(!limb_to_attach.attach_limb(target))
|
||||
display_results(user, target, "<span class='warning'>You fail in replacing [target]'s [parse_zone(target_zone)]! Their body has rejected [limb_to_attach]!</span>",
|
||||
"<span class='warning'>[user] fails to replace [target]'s [parse_zone(target_zone)]!</span>",
|
||||
"<span class='warning'>[user] fails to replaces [target]'s [parse_zone(target_zone)]!</span>")
|
||||
display_results(user, target, span_warning("You fail in replacing [target]'s [parse_zone(target_zone)]! Their body has rejected [limb_to_attach]!"),
|
||||
span_warning("[user] fails to replace [target]'s [parse_zone(target_zone)]!"),
|
||||
span_warning("[user] fails to replaces [target]'s [parse_zone(target_zone)]!"))
|
||||
return
|
||||
if(organ_rejection_dam)
|
||||
target.adjustToxLoss(organ_rejection_dam)
|
||||
display_results(user, target, "<span class='notice'>You succeed in replacing [target]'s [parse_zone(target_zone)].</span>",
|
||||
"<span class='notice'>[user] successfully replaces [target]'s [parse_zone(target_zone)] with [tool]!</span>",
|
||||
"<span class='notice'>[user] successfully replaces [target]'s [parse_zone(target_zone)]!</span>")
|
||||
display_results(user, target, span_notice("You succeed in replacing [target]'s [parse_zone(target_zone)]."),
|
||||
span_notice("[user] successfully replaces [target]'s [parse_zone(target_zone)] with [tool]!"),
|
||||
span_notice("[user] successfully replaces [target]'s [parse_zone(target_zone)]!"))
|
||||
return
|
||||
else
|
||||
var/obj/item/bodypart/limb_to_attach = target.newBodyPart(target_zone, FALSE, FALSE)
|
||||
limb_to_attach.is_pseudopart = TRUE
|
||||
if(!limb_to_attach.attach_limb(target))
|
||||
display_results(user, target, "<span class='warning'>You fail in attaching [target]'s [parse_zone(target_zone)]! Their body has rejected [limb_to_attach]!</span>",
|
||||
"<span class='warning'>[user] fails to attach [target]'s [parse_zone(target_zone)]!</span>",
|
||||
"<span class='warning'>[user] fails to attach [target]'s [parse_zone(target_zone)]!</span>")
|
||||
display_results(user, target, span_warning("You fail in attaching [target]'s [parse_zone(target_zone)]! Their body has rejected [limb_to_attach]!"),
|
||||
span_warning("[user] fails to attach [target]'s [parse_zone(target_zone)]!"),
|
||||
span_warning("[user] fails to attach [target]'s [parse_zone(target_zone)]!"))
|
||||
limb_to_attach.forceMove(target.loc)
|
||||
return
|
||||
user.visible_message("<span class='notice'>[user] finishes attaching [tool]!</span>", "<span class='notice'>You attach [tool].</span>")
|
||||
display_results(user, target, "<span class='notice'>You attach [tool].</span>",
|
||||
"<span class='notice'>[user] finishes attaching [tool]!</span>",
|
||||
"<span class='notice'>[user] finishes the attachment procedure!</span>")
|
||||
user.visible_message(span_notice("[user] finishes attaching [tool]!"), span_notice("You attach [tool]."))
|
||||
display_results(user, target, span_notice("You attach [tool]."),
|
||||
span_notice("[user] finishes attaching [tool]!"),
|
||||
span_notice("[user] finishes the attachment procedure!"))
|
||||
qdel(tool)
|
||||
if(istype(tool, /obj/item/chainsaw))
|
||||
var/obj/item/mounted_chainsaw/new_arm = new(target)
|
||||
|
||||
@@ -41,27 +41,27 @@
|
||||
/datum/surgery_step/repair_innards/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
var/datum/wound/pierce/pierce_wound = surgery.operated_wound
|
||||
if(!pierce_wound)
|
||||
user.visible_message("<span class='notice'>[user] looks for [target]'s [parse_zone(user.zone_selected)].</span>", "<span class='notice'>You look for [target]'s [parse_zone(user.zone_selected)]...</span>")
|
||||
user.visible_message(span_notice("[user] looks for [target]'s [parse_zone(user.zone_selected)]."), span_notice("You look for [target]'s [parse_zone(user.zone_selected)]..."))
|
||||
return
|
||||
|
||||
if(pierce_wound.blood_flow <= 0)
|
||||
to_chat(user, "<span class='notice'>[target]'s [parse_zone(user.zone_selected)] has no puncture to repair!</span>")
|
||||
to_chat(user, span_notice("[target]'s [parse_zone(user.zone_selected)] has no puncture to repair!"))
|
||||
surgery.status++
|
||||
return
|
||||
|
||||
display_results(user, target, "<span class='notice'>You begin to realign the torn blood vessels in [target]'s [parse_zone(user.zone_selected)]...</span>",
|
||||
"<span class='notice'>[user] begins to realign the torn blood vessels in [target]'s [parse_zone(user.zone_selected)] with [tool].</span>",
|
||||
"<span class='notice'>[user] begins to realign the torn blood vessels in [target]'s [parse_zone(user.zone_selected)].</span>")
|
||||
display_results(user, target, span_notice("You begin to realign the torn blood vessels in [target]'s [parse_zone(user.zone_selected)]..."),
|
||||
span_notice("[user] begins to realign the torn blood vessels in [target]'s [parse_zone(user.zone_selected)] with [tool]."),
|
||||
span_notice("[user] begins to realign the torn blood vessels in [target]'s [parse_zone(user.zone_selected)]."))
|
||||
|
||||
/datum/surgery_step/repair_innards/success(mob/living/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
|
||||
var/datum/wound/pierce/pierce_wound = surgery.operated_wound
|
||||
if(!pierce_wound)
|
||||
to_chat(user, "<span class='warning'>[target] has no puncture wound there!</span>")
|
||||
to_chat(user, span_warning("[target] has no puncture wound there!"))
|
||||
return ..()
|
||||
|
||||
display_results(user, target, "<span class='notice'>You successfully realign some of the blood vessels in [target]'s [parse_zone(target_zone)].</span>",
|
||||
"<span class='notice'>[user] successfully realigns some of the blood vessels in [target]'s [parse_zone(target_zone)] with [tool]!</span>",
|
||||
"<span class='notice'>[user] successfully realigns some of the blood vessels in [target]'s [parse_zone(target_zone)]!</span>")
|
||||
display_results(user, target, span_notice("You successfully realign some of the blood vessels in [target]'s [parse_zone(target_zone)]."),
|
||||
span_notice("[user] successfully realigns some of the blood vessels in [target]'s [parse_zone(target_zone)] with [tool]!"),
|
||||
span_notice("[user] successfully realigns some of the blood vessels in [target]'s [parse_zone(target_zone)]!"))
|
||||
log_combat(user, target, "excised infected flesh in", addition="COMBAT MODE: [uppertext(user.combat_mode)]")
|
||||
surgery.operated_bodypart.receive_damage(brute=3, wound_bonus=CANT_WOUND)
|
||||
pierce_wound.blood_flow -= 0.25
|
||||
@@ -69,9 +69,9 @@
|
||||
|
||||
/datum/surgery_step/repair_innards/failure(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery, fail_prob = 0)
|
||||
. = ..()
|
||||
display_results(user, target, "<span class='notice'>You jerk apart some of the blood vessels in [target]'s [parse_zone(target_zone)].</span>",
|
||||
"<span class='notice'>[user] jerks apart some of the blood vessels in [target]'s [parse_zone(target_zone)] with [tool]!</span>",
|
||||
"<span class='notice'>[user] jerk apart some of the blood vessels in [target]'s [parse_zone(target_zone)]!</span>")
|
||||
display_results(user, target, span_notice("You jerk apart some of the blood vessels in [target]'s [parse_zone(target_zone)]."),
|
||||
span_notice("[user] jerks apart some of the blood vessels in [target]'s [parse_zone(target_zone)] with [tool]!"),
|
||||
span_notice("[user] jerk apart some of the blood vessels in [target]'s [parse_zone(target_zone)]!"))
|
||||
surgery.operated_bodypart.receive_damage(brute=rand(4,8), sharpness=SHARP_EDGED, wound_bonus = 10)
|
||||
|
||||
///// Sealing the vessels back together
|
||||
@@ -93,28 +93,28 @@
|
||||
/datum/surgery_step/seal_veins/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
var/datum/wound/pierce/pierce_wound = surgery.operated_wound
|
||||
if(!pierce_wound)
|
||||
user.visible_message("<span class='notice'>[user] looks for [target]'s [parse_zone(user.zone_selected)].</span>", "<span class='notice'>You look for [target]'s [parse_zone(user.zone_selected)]...</span>")
|
||||
user.visible_message(span_notice("[user] looks for [target]'s [parse_zone(user.zone_selected)]."), span_notice("You look for [target]'s [parse_zone(user.zone_selected)]..."))
|
||||
return
|
||||
display_results(user, target, "<span class='notice'>You begin to meld some of the split blood vessels in [target]'s [parse_zone(user.zone_selected)]...</span>",
|
||||
"<span class='notice'>[user] begins to meld some of the split blood vessels in [target]'s [parse_zone(user.zone_selected)] with [tool].</span>",
|
||||
"<span class='notice'>[user] begins to meld some of the split blood vessels in [target]'s [parse_zone(user.zone_selected)].</span>")
|
||||
display_results(user, target, span_notice("You begin to meld some of the split blood vessels in [target]'s [parse_zone(user.zone_selected)]..."),
|
||||
span_notice("[user] begins to meld some of the split blood vessels in [target]'s [parse_zone(user.zone_selected)] with [tool]."),
|
||||
span_notice("[user] begins to meld some of the split blood vessels in [target]'s [parse_zone(user.zone_selected)]."))
|
||||
|
||||
/datum/surgery_step/seal_veins/success(mob/living/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
|
||||
var/datum/wound/pierce/pierce_wound = surgery.operated_wound
|
||||
if(!pierce_wound)
|
||||
to_chat(user, "<span class='warning'>[target] has no puncture there!</span>")
|
||||
to_chat(user, span_warning("[target] has no puncture there!"))
|
||||
return ..()
|
||||
|
||||
display_results(user, target, "<span class='notice'>You successfully meld some of the split blood vessels in [target]'s [parse_zone(target_zone)] with [tool].</span>",
|
||||
"<span class='notice'>[user] successfully melds some of the split blood vessels in [target]'s [parse_zone(target_zone)] with [tool]!</span>",
|
||||
"<span class='notice'>[user] successfully melds some of the split blood vessels in [target]'s [parse_zone(target_zone)]!</span>")
|
||||
display_results(user, target, span_notice("You successfully meld some of the split blood vessels in [target]'s [parse_zone(target_zone)] with [tool]."),
|
||||
span_notice("[user] successfully melds some of the split blood vessels in [target]'s [parse_zone(target_zone)] with [tool]!"),
|
||||
span_notice("[user] successfully melds some of the split blood vessels in [target]'s [parse_zone(target_zone)]!"))
|
||||
log_combat(user, target, "dressed burns in", addition="COMBAT MODE: [uppertext(user.combat_mode)]")
|
||||
pierce_wound.blood_flow -= 0.5
|
||||
if(pierce_wound.blood_flow > 0)
|
||||
surgery.status = REALIGN_INNARDS
|
||||
to_chat(user, "<span class='notice'><i>There still seems to be misaligned blood vessels to finish...<i></span>")
|
||||
to_chat(user, span_notice("<i>There still seems to be misaligned blood vessels to finish...<i>"))
|
||||
else
|
||||
to_chat(user, "<span class='green'>You've repaired all the internal damage in [target]'s [parse_zone(target_zone)]!</span>")
|
||||
to_chat(user, span_green("You've repaired all the internal damage in [target]'s [parse_zone(target_zone)]!"))
|
||||
return ..()
|
||||
|
||||
#undef REALIGN_INNARDS
|
||||
|
||||
@@ -40,48 +40,48 @@
|
||||
if(istype(tool, /obj/item/shockpaddles))
|
||||
var/obj/item/shockpaddles/paddles = tool
|
||||
if((paddles.req_defib && !paddles.defib.powered) || !paddles.wielded || paddles.cooldown || paddles.busy)
|
||||
to_chat(user, "<span class='warning'>You need to wield both paddles, and [paddles.defib] must be powered!</span>")
|
||||
to_chat(user, span_warning("You need to wield both paddles, and [paddles.defib] must be powered!"))
|
||||
return FALSE
|
||||
if(istype(tool, /obj/item/melee/baton))
|
||||
var/obj/item/melee/baton/baton = tool
|
||||
if(!baton.turned_on)
|
||||
to_chat(user, "<span class='warning'>[baton] needs to be active!</span>")
|
||||
to_chat(user, span_warning("[baton] needs to be active!"))
|
||||
return FALSE
|
||||
if(istype(tool, /obj/item/gun/energy))
|
||||
var/obj/item/gun/energy/egun = tool
|
||||
if(egun.chambered && istype(egun.chambered, /obj/item/ammo_casing/energy/electrode))
|
||||
return TRUE
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You need an electrode for this!</span>")
|
||||
to_chat(user, span_warning("You need an electrode for this!"))
|
||||
return FALSE
|
||||
|
||||
/datum/surgery_step/revive/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You prepare to give [target]'s brain the spark of life with [tool].</span>",
|
||||
"<span class='notice'>[user] prepares to shock [target]'s brain with [tool].</span>",
|
||||
"<span class='notice'>[user] prepares to shock [target]'s brain with [tool].</span>")
|
||||
display_results(user, target, span_notice("You prepare to give [target]'s brain the spark of life with [tool]."),
|
||||
span_notice("[user] prepares to shock [target]'s brain with [tool]."),
|
||||
span_notice("[user] prepares to shock [target]'s brain with [tool]."))
|
||||
target.notify_ghost_cloning("Someone is trying to zap your brain.", source = target)
|
||||
|
||||
/datum/surgery_step/revive/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results)
|
||||
display_results(user, target, "<span class='notice'>You successfully shock [target]'s brain with [tool]...</span>",
|
||||
"<span class='notice'>[user] send a powerful shock to [target]'s brain with [tool]...</span>",
|
||||
"<span class='notice'>[user] send a powerful shock to [target]'s brain with [tool]...</span>")
|
||||
display_results(user, target, span_notice("You successfully shock [target]'s brain with [tool]..."),
|
||||
span_notice("[user] send a powerful shock to [target]'s brain with [tool]..."),
|
||||
span_notice("[user] send a powerful shock to [target]'s brain with [tool]..."))
|
||||
playsound(get_turf(target), 'sound/magic/lightningbolt.ogg', 50, TRUE)
|
||||
target.grab_ghost()
|
||||
target.adjustOxyLoss(-50, 0)
|
||||
target.updatehealth()
|
||||
if(target.revive(full_heal = FALSE, admin_revive = FALSE))
|
||||
target.visible_message("<span class='notice'>...[target] wakes up, alive and aware!</span>")
|
||||
target.visible_message(span_notice("...[target] wakes up, alive and aware!"))
|
||||
target.emote("gasp")
|
||||
target.adjustOrganLoss(ORGAN_SLOT_BRAIN, 50, 199) //MAD SCIENCE
|
||||
return TRUE
|
||||
else
|
||||
target.visible_message("<span class='warning'>...[target.p_they()] convulses, then lies still.</span>")
|
||||
target.visible_message(span_warning("...[target.p_they()] convulses, then lies still."))
|
||||
return FALSE
|
||||
|
||||
/datum/surgery_step/revive/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You shock [target]'s brain with [tool], but [target.p_they()] doesn't react.</span>",
|
||||
"<span class='notice'>[user] send a powerful shock to [target]'s brain with [tool], but [target.p_they()] doesn't react.</span>",
|
||||
"<span class='notice'>[user] send a powerful shock to [target]'s brain with [tool], but [target.p_they()] doesn't react.</span>")
|
||||
display_results(user, target, span_notice("You shock [target]'s brain with [tool], but [target.p_they()] doesn't react."),
|
||||
span_notice("[user] send a powerful shock to [target]'s brain with [tool], but [target.p_they()] doesn't react."),
|
||||
span_notice("[user] send a powerful shock to [target]'s brain with [tool], but [target.p_they()] doesn't react."))
|
||||
playsound(get_turf(target), 'sound/magic/lightningbolt.ogg', 50, TRUE)
|
||||
target.adjustOrganLoss(ORGAN_SLOT_BRAIN, 15, 180)
|
||||
return FALSE
|
||||
|
||||
@@ -30,15 +30,15 @@
|
||||
time = 20
|
||||
|
||||
/datum/surgery_step/stomach_pump/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You begin pumping [target]'s stomach...</span>",
|
||||
"<span class='notice'>[user] begins to pump [target]'s stomach.</span>",
|
||||
"<span class='notice'>[user] begins to press on [target]'s chest.</span>")
|
||||
display_results(user, target, span_notice("You begin pumping [target]'s stomach..."),
|
||||
span_notice("[user] begins to pump [target]'s stomach."),
|
||||
span_notice("[user] begins to press on [target]'s chest."))
|
||||
|
||||
/datum/surgery_step/stomach_pump/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
|
||||
if(ishuman(target))
|
||||
var/mob/living/carbon/human/target_human = target
|
||||
display_results(user, target, "<span class='notice'>[user] forces [target_human] to vomit, cleansing their stomach of some chemicals!</span>",
|
||||
"<span class='notice'>[user] forces [target_human] to vomit, cleansing their stomach of some chemicals!</span>",
|
||||
display_results(user, target, span_notice("[user] forces [target_human] to vomit, cleansing their stomach of some chemicals!"),
|
||||
span_notice("[user] forces [target_human] to vomit, cleansing their stomach of some chemicals!"),
|
||||
"[user] forces [target_human] to vomit!")
|
||||
target_human.vomit(20, FALSE, TRUE, 1, TRUE, FALSE, purge_ratio = 0.67) //higher purge ratio than regular vomiting
|
||||
return ..()
|
||||
@@ -46,8 +46,8 @@
|
||||
/datum/surgery_step/stomach_pump/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
if(ishuman(target))
|
||||
var/mob/living/carbon/human/target_human = target
|
||||
display_results(user, target, "<span class='warning'>You screw up, brusing [target_human]'s chest!</span>",
|
||||
"<span class='warning'>[user] screws up, brusing [target_human]'s chest!</span>",
|
||||
"<span class='warning'>[user] screws up!</span>")
|
||||
display_results(user, target, span_warning("You screw up, brusing [target_human]'s chest!"),
|
||||
span_warning("[user] screws up, brusing [target_human]'s chest!"),
|
||||
span_warning("[user] screws up!"))
|
||||
target_human.adjustOrganLoss(ORGAN_SLOT_STOMACH, 5)
|
||||
target_human.adjustBruteLoss(5)
|
||||
|
||||
@@ -104,7 +104,7 @@
|
||||
if(step.try_op(user, target, user.zone_selected, tool, src, try_to_fail))
|
||||
return TRUE
|
||||
if(tool && tool.item_flags & SURGICAL_TOOL) //Just because you used the wrong tool it doesn't mean you meant to whack the patient with it
|
||||
to_chat(user, "<span class='warning'>This step requires a different tool!</span>")
|
||||
to_chat(user, span_warning("This step requires a different tool!"))
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
if(get_location_accessible(target, target_zone) || surgery.ignore_clothes)
|
||||
initiate(user, target, target_zone, tool, surgery, try_to_fail)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You need to expose [target]'s [parse_zone(target_zone)] to perform surgery on it!</span>")
|
||||
to_chat(user, span_warning("You need to expose [target]'s [parse_zone(target_zone)] to perform surgery on it!"))
|
||||
return TRUE //returns TRUE so we don't stab the guy in the dick or wherever.
|
||||
|
||||
if(repeatable)
|
||||
@@ -114,15 +114,15 @@
|
||||
return advance
|
||||
|
||||
/datum/surgery_step/proc/preop(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You begin to perform surgery on [target]...</span>",
|
||||
"<span class='notice'>[user] begins to perform surgery on [target].</span>",
|
||||
"<span class='notice'>[user] begins to perform surgery on [target].</span>")
|
||||
display_results(user, target, span_notice("You begin to perform surgery on [target]..."),
|
||||
span_notice("[user] begins to perform surgery on [target]."),
|
||||
span_notice("[user] begins to perform surgery on [target]."))
|
||||
|
||||
/datum/surgery_step/proc/success(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = TRUE)
|
||||
if(default_display_results)
|
||||
display_results(user, target, "<span class='notice'>You succeed.</span>",
|
||||
"<span class='notice'>[user] succeeds!</span>",
|
||||
"<span class='notice'>[user] finishes.</span>")
|
||||
display_results(user, target, span_notice("You succeed."),
|
||||
span_notice("[user] succeeds!"),
|
||||
span_notice("[user] finishes."))
|
||||
return TRUE
|
||||
|
||||
/datum/surgery_step/proc/failure(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery, fail_prob = 0)
|
||||
@@ -135,9 +135,9 @@
|
||||
if(75 to 99)
|
||||
screwedmessage = " This is practically impossible in these conditions..."
|
||||
|
||||
display_results(user, target, "<span class='warning'>You screw up![screwedmessage]</span>",
|
||||
"<span class='warning'>[user] screws up!</span>",
|
||||
"<span class='notice'>[user] finishes.</span>", TRUE) //By default the patient will notice if the wrong thing has been cut
|
||||
display_results(user, target, span_warning("You screw up![screwedmessage]"),
|
||||
span_warning("[user] screws up!"),
|
||||
span_notice("[user] finishes."), TRUE) //By default the patient will notice if the wrong thing has been cut
|
||||
return FALSE
|
||||
|
||||
/datum/surgery_step/proc/tool_check(mob/user, obj/item/tool)
|
||||
@@ -174,4 +174,4 @@
|
||||
user.visible_message(detailed_message, self_message, vision_distance = 1, ignored_mobs = target_detailed ? null : target)
|
||||
if(!target_detailed)
|
||||
var/you_feel = pick("a brief pain", "your body tense up", "an unnerving sensation")
|
||||
target.show_message(vague_message, MSG_VISUAL, "<span class='notice'>You feel [you_feel] as you are operated on.</span>")
|
||||
target.show_message(vague_message, MSG_VISUAL, span_notice("You feel [you_feel] as you are operated on."))
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
toolspeed = 1
|
||||
|
||||
/obj/item/cautery/ignition_effect(atom/A, mob/user)
|
||||
. = "<span class='notice'>[user] touches the end of [src] to \the [A], igniting it with a puff of smoke.</span>"
|
||||
. = span_notice("[user] touches the end of [src] to \the [A], igniting it with a puff of smoke.")
|
||||
|
||||
/obj/item/cautery/augment
|
||||
desc = "A heated element that cauterizes wounds."
|
||||
@@ -80,11 +80,11 @@
|
||||
playsound(get_turf(user), 'sound/weapons/tap.ogg', 50, TRUE)
|
||||
if(tool_behaviour == TOOL_CAUTERY)
|
||||
tool_behaviour = TOOL_DRILL
|
||||
to_chat(user, "<span class='notice'>You dilate the lenses of [src], it is now in drilling mode.</span>")
|
||||
to_chat(user, span_notice("You dilate the lenses of [src], it is now in drilling mode."))
|
||||
icon_state = "surgicaldrill_a"
|
||||
else
|
||||
tool_behaviour = TOOL_CAUTERY
|
||||
to_chat(user, "<span class='notice'>You focus the lenses of [src], it is now in mending mode.</span>")
|
||||
to_chat(user, span_notice("You focus the lenses of [src], it is now in mending mode."))
|
||||
icon_state = "cautery_a"
|
||||
|
||||
/obj/item/cautery/advanced/examine()
|
||||
@@ -117,7 +117,7 @@
|
||||
AddElement(/datum/element/eyestab)
|
||||
|
||||
/obj/item/surgicaldrill/suicide_act(mob/user)
|
||||
user.visible_message("<span class='suicide'>[user] rams [src] into [user.p_their()] chest! It looks like [user.p_theyre()] trying to commit suicide!</span>")
|
||||
user.visible_message(span_suicide("[user] rams [src] into [user.p_their()] chest! It looks like [user.p_theyre()] trying to commit suicide!"))
|
||||
addtimer(CALLBACK(user, /mob/living/carbon.proc/gib, null, null, TRUE, TRUE), 25)
|
||||
user.SpinAnimation(3, 10)
|
||||
playsound(user, 'sound/machines/juicer.ogg', 20, TRUE)
|
||||
@@ -165,7 +165,7 @@
|
||||
toolspeed = 0.5
|
||||
|
||||
/obj/item/scalpel/suicide_act(mob/user)
|
||||
user.visible_message("<span class='suicide'>[user] is slitting [user.p_their()] [pick("wrists", "throat", "stomach")] with [src]! It looks like [user.p_theyre()] trying to commit suicide!</span>")
|
||||
user.visible_message(span_suicide("[user] is slitting [user.p_their()] [pick("wrists", "throat", "stomach")] with [src]! It looks like [user.p_theyre()] trying to commit suicide!"))
|
||||
return (BRUTELOSS)
|
||||
|
||||
|
||||
@@ -234,13 +234,13 @@
|
||||
if(!proximity)
|
||||
return
|
||||
if(istype(O, /obj/item/disk/surgery))
|
||||
to_chat(user, "<span class='notice'>You load the surgery protocol from [O] into [src].</span>")
|
||||
to_chat(user, span_notice("You load the surgery protocol from [O] into [src]."))
|
||||
var/obj/item/disk/surgery/D = O
|
||||
if(do_after(user, 10, target = O))
|
||||
advanced_surgeries |= D.surgeries
|
||||
return TRUE
|
||||
if(istype(O, /obj/machinery/computer/operating))
|
||||
to_chat(user, "<span class='notice'>You copy surgery protocols from [O] into [src].</span>")
|
||||
to_chat(user, span_notice("You copy surgery protocols from [O] into [src]."))
|
||||
var/obj/machinery/computer/operating/OC = O
|
||||
if(do_after(user, 10, target = O))
|
||||
advanced_surgeries |= OC.advanced_surgeries
|
||||
@@ -265,13 +265,13 @@
|
||||
playsound(get_turf(user), 'sound/machines/click.ogg', 50, TRUE)
|
||||
if(tool_behaviour == TOOL_SCALPEL)
|
||||
tool_behaviour = TOOL_SAW
|
||||
to_chat(user, "<span class='notice'>You increase the power of [src], now it can cut bones.</span>")
|
||||
to_chat(user, span_notice("You increase the power of [src], now it can cut bones."))
|
||||
set_light_range(2)
|
||||
force += 1 //we don't want to ruin sharpened stuff
|
||||
icon_state = "saw_a"
|
||||
else
|
||||
tool_behaviour = TOOL_SCALPEL
|
||||
to_chat(user, "<span class='notice'>You lower the power of [src], it can no longer cut bones.</span>")
|
||||
to_chat(user, span_notice("You lower the power of [src], it can no longer cut bones."))
|
||||
set_light_range(1)
|
||||
force -= 1
|
||||
icon_state = "scalpel_a"
|
||||
@@ -291,11 +291,11 @@
|
||||
playsound(get_turf(user), 'sound/items/change_drill.ogg', 50, TRUE)
|
||||
if(tool_behaviour == TOOL_RETRACTOR)
|
||||
tool_behaviour = TOOL_HEMOSTAT
|
||||
to_chat(user, "<span class='notice'>You configure the gears of [src], they are now in hemostat mode.</span>")
|
||||
to_chat(user, span_notice("You configure the gears of [src], they are now in hemostat mode."))
|
||||
icon_state = "hemostat_a"
|
||||
else
|
||||
tool_behaviour = TOOL_RETRACTOR
|
||||
to_chat(user, "<span class='notice'>You configure the gears of [src], they are now in retractor mode.</span>")
|
||||
to_chat(user, span_notice("You configure the gears of [src], they are now in retractor mode."))
|
||||
icon_state = "retractor_a"
|
||||
|
||||
/obj/item/retractor/advanced/examine()
|
||||
@@ -331,7 +331,7 @@
|
||||
var/mob/living/carbon/patient = M
|
||||
|
||||
if(HAS_TRAIT(patient, TRAIT_NODISMEMBER))
|
||||
to_chat(user, "<span class='warning'>The patient's limbs look too sturdy to amputate.</span>")
|
||||
to_chat(user, span_warning("The patient's limbs look too sturdy to amputate."))
|
||||
return
|
||||
|
||||
var/candidate_name
|
||||
@@ -341,20 +341,20 @@
|
||||
if(user.zone_selected == BODY_ZONE_PRECISE_GROIN)
|
||||
tail_snip_candidate = patient.getorganslot(ORGAN_SLOT_TAIL)
|
||||
if(!tail_snip_candidate)
|
||||
to_chat(user, "<span class='warning'>[patient] does not have a tail.</span>")
|
||||
to_chat(user, span_warning("[patient] does not have a tail."))
|
||||
return
|
||||
candidate_name = tail_snip_candidate.name
|
||||
|
||||
else
|
||||
limb_snip_candidate = patient.get_bodypart(check_zone(user.zone_selected))
|
||||
if(!limb_snip_candidate)
|
||||
to_chat(user, "<span class='warning'>[patient] is already missing that limb, what more do you want?</span>")
|
||||
to_chat(user, span_warning("[patient] is already missing that limb, what more do you want?"))
|
||||
return
|
||||
candidate_name = limb_snip_candidate.name
|
||||
|
||||
var/amputation_speed_mod = 1
|
||||
|
||||
patient.visible_message("<span class='danger'>[user] begins to secure [src] around [patient]'s [candidate_name].</span>", "<span class='userdanger'>[user] begins to secure [src] around your [candidate_name]!</span>")
|
||||
patient.visible_message(span_danger("[user] begins to secure [src] around [patient]'s [candidate_name]."), span_userdanger("[user] begins to secure [src] around your [candidate_name]!"))
|
||||
playsound(get_turf(patient), 'sound/items/ratchet.ogg', 20, TRUE)
|
||||
if(patient.stat >= UNCONSCIOUS || HAS_TRAIT(patient, TRAIT_INCAPACITATED)) //if you're incapacitated (due to paralysis, a stun, being in staminacrit, etc.), critted, unconscious, or dead, it's much easier to properly line up a snip
|
||||
amputation_speed_mod *= 0.5
|
||||
@@ -368,10 +368,10 @@
|
||||
tail_snip_candidate.forceMove(get_turf(patient))
|
||||
else
|
||||
limb_snip_candidate.dismember()
|
||||
user.visible_message("<span class='danger'>[src] violently slams shut, amputating [patient]'s [candidate_name].</span>", "<span class='notice'>You amputate [patient]'s [candidate_name] with [src].</span>")
|
||||
user.visible_message(span_danger("[src] violently slams shut, amputating [patient]'s [candidate_name]."), span_notice("You amputate [patient]'s [candidate_name] with [src]."))
|
||||
|
||||
/obj/item/shears/suicide_act(mob/living/carbon/user)
|
||||
user.visible_message("<span class='suicide'>[user] is pinching [user.p_them()]self with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!</span>")
|
||||
user.visible_message(span_suicide("[user] is pinching [user.p_them()]self with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!"))
|
||||
var/timer = 1 SECONDS
|
||||
for(var/obj/item/bodypart/thing in user.bodyparts)
|
||||
if(thing.body_part == CHEST)
|
||||
|
||||
Reference in New Issue
Block a user