I missed an earlier port.

This commit is contained in:
Fermi
2019-09-17 01:08:37 +01:00
parent de19b4f805
commit c23d6f0113
88 changed files with 777 additions and 202 deletions
@@ -56,7 +56,7 @@
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>",
"[user] completes the surgery on [target]'s brain.")
target.adjustBrainLoss(40)
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 class='warning'>You suddenly notice that the brain you were working on is not there anymore.</span>")
return FALSE
+3 -2
View File
@@ -51,11 +51,12 @@
return TRUE
/datum/surgery_step/lobotomize/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
if(target.getorganslot(ORGAN_SLOT_BRAIN))
var/obj/item/organ/brain/B = target.getorganslot(ORGAN_SLOT_BRAIN)
if(B)
display_results(user, target, "<span class='warning'>You remove the wrong part, causing more damage!</span>",
"[user] successfully lobotomizes [target]!",
"[user] completes the surgery on [target]'s brain.")
target.adjustBrainLoss(80)
B.applyOrganDamage(80)
switch(rand(1,3))
if(1)
target.gain_trauma_type(BRAIN_TRAUMA_MILD, TRAUMA_RESILIENCE_MAGIC)
+2 -2
View File
@@ -63,7 +63,7 @@
user.visible_message("...[target] wakes up, alive and aware!", "<span class='notice'><b>IT'S ALIVE!</b></span>")
target.visible_message("...[target] wakes up, alive and aware!")
target.emote("gasp")
target.adjustBrainLoss(50, 199) //MAD SCIENCE
target.adjustOrganLoss(ORGAN_SLOT_BRAIN, 50, 199) //MAD SCIENCE
return TRUE
else
user.visible_message("...[target.p_they()] convulses, then lies still.")
@@ -75,5 +75,5 @@
"[user] send a powerful shock to [target]'s brain with [tool], but [target.p_they()] doesn't react.",
"[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, 1)
target.adjustBrainLoss(15, 199)
target.adjustOrganLoss(ORGAN_SLOT_BRAIN, 15, 199)
return FALSE
+2 -2
View File
@@ -31,7 +31,7 @@
"[user] completes the surgery on [target]'s brain.")
if(target.mind && target.mind.has_antag_datum(/datum/antagonist/brainwashed))
target.mind.remove_antag_datum(/datum/antagonist/brainwashed)
target.adjustBrainLoss(-60)
target.setOrganLoss(ORGAN_SLOT_BRAIN, target.getOrganLoss(ORGAN_SLOT_BRAIN) - 60) //we set damage in this case in order to clear the "failing" flag
target.cure_all_traumas(TRAUMA_RESILIENCE_SURGERY)
return TRUE
@@ -40,7 +40,7 @@
display_results(user, target, "<span class='warning'>You screw up, causing more damage!</span>",
"<span class='warning'>[user] screws up, causing brain damage!</span>",
"[user] completes the surgery on [target]'s brain.")
target.adjustBrainLoss(60)
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 class='warning'>You suddenly notice that the brain you were working on is not there anymore.</span>")
+77
View File
@@ -0,0 +1,77 @@
/datum/surgery/coronary_bypass
name = "Coronary Bypass"
steps = list(/datum/surgery_step/incise, /datum/surgery_step/retract_skin, /datum/surgery_step/saw, /datum/surgery_step/clamp_bleeders,
/datum/surgery_step/incise_heart, /datum/surgery_step/coronary_bypass, /datum/surgery_step/close)
possible_locs = list(BODY_ZONE_CHEST)
/datum/surgery/coronary_bypass/can_start(mob/user, mob/living/carbon/target)
var/obj/item/organ/heart/H = target.getorganslot(ORGAN_SLOT_HEART)
if(H)
if(H.damage > 60 && !H.operated)
return TRUE
return FALSE
//an incision but with greater bleed, and a 90% base success chance
/datum/surgery_step/incise_heart
name = "incise heart"
implements = list(/obj/item/scalpel = 90, /obj/item/melee/transforming/energy/sword = 45, /obj/item/kitchen/knife = 45,
/obj/item/shard = 25)
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>",
"[user] begins to make an incision in [target]'s heart.",
"[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)
if(ishuman(target))
var/mob/living/carbon/human/H = target
if (!(NOBLOOD in H.dna.species.species_traits))
display_results(user, target, "<span class='notice'>Blood pools around the incision in [H]'s heart.</span>",
"Blood pools around the incision in [H]'s heart.",
"")
H.bleed_rate += 10
H.adjustBruteLoss(10)
return TRUE
/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/H = 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 [H]'s chest!</span>",
"<span class='warning'>[user] screws up, causing blood to spurt out of [H]'s chest!</span>")
H.bleed_rate += 20
H.adjustOrganLoss(ORGAN_SLOT_HEART, 10)
H.adjustBruteLoss(10)
//grafts a coronary bypass onto the individual's heart, success chance is 90% base again
/datum/surgery_step/coronary_bypass
name = "graft coronary bypass"
implements = list(/obj/item/hemostat = 90, TOOL_WIRECUTTER = 35, /obj/item/stack/packageWrap = 15, /obj/item/stack/cable_coil = 5)
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>",
"[user] begins to graft something onto [target]'s heart!",
"[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)
target.setOrganLoss(ORGAN_SLOT_HEART, 60)
var/obj/item/organ/heart/heart = target.getorganslot(ORGAN_SLOT_HEART)
if(heart) //slightly worrying if we lost our heart mid-operation, but that's life
heart.operated = TRUE
display_results(user, target, "<span class='notice'>You successfully graft a bypass onto [target]'s heart.</span>",
"[user] finishes grafting something onto [target]'s heart.",
"[user] finishes grafting something onto [target]'s heart.")
return TRUE
/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/H = 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 [H]'s chest profusely!</span>",
"<span class='warning'>[user] screws up, causing blood to spurt out of [H]'s chest profusely!</span>")
H.adjustOrganLoss(ORGAN_SLOT_HEART, 20)
H.bleed_rate += 30
return FALSE
+1 -1
View File
@@ -37,7 +37,7 @@
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>")
target.adjustBrainLoss(70)
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>",
+46
View File
@@ -0,0 +1,46 @@
/datum/surgery/lobectomy
name = "Lobectomy" //not to be confused with lobotomy
steps = list(/datum/surgery_step/incise, /datum/surgery_step/retract_skin, /datum/surgery_step/saw, /datum/surgery_step/clamp_bleeders,
/datum/surgery_step/lobectomy, /datum/surgery_step/close)
possible_locs = list(BODY_ZONE_CHEST)
/datum/surgery/lobectomy/can_start(mob/user, mob/living/carbon/target)
var/obj/item/organ/lungs/L = target.getorganslot(ORGAN_SLOT_LUNGS)
if(L)
if(L.damage > 60 && !L.operated)
return TRUE
return FALSE
//lobectomy, removes the most damaged lung lobe with a 95% base success chance
/datum/surgery_step/lobectomy
name = "excise damaged lung node"
implements = list(/obj/item/scalpel = 95, /obj/item/melee/transforming/energy/sword = 65, /obj/item/kitchen/knife = 45,
/obj/item/shard = 35)
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>",
"[user] begins to make an incision in [target].",
"[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)
if(ishuman(target))
var/mob/living/carbon/human/H = target
var/obj/item/organ/lungs/L = H.getorganslot(ORGAN_SLOT_LUNGS)
L.operated = TRUE
H.setOrganLoss(ORGAN_SLOT_LUNGS, 60)
display_results(user, target, "<span class='notice'>You successfully excise [H]'s most damaged lobe.</span>",
"Successfully removes a piece of [H]'s lungs.",
"")
return TRUE
/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/H = target
display_results(user, target, "<span class='warning'>You screw up, failing to excise [H]'s damaged lobe!</span>",
"<span class='warning'>[user] screws up!</span>",
"<span class='warning'>[user] screws up!</span>")
H.losebreath += 4
H.adjustOrganLoss(ORGAN_SLOT_LUNGS, 10)
return FALSE
+16 -2
View File
@@ -3,7 +3,21 @@
icon_state = "appendix"
zone = BODY_ZONE_PRECISE_GROIN
slot = ORGAN_SLOT_APPENDIX
var/inflamed = 0
healing_factor = STANDARD_ORGAN_HEALING
decay_factor = STANDARD_ORGAN_DECAY
now_failing = "<span class='warning'>An explosion of pain erupts in your lower right abdomen!</span>"
now_fixed = "<span class='info'>The pain in your abdomen has subsided.</span>"
var/inflamed
/obj/item/organ/appendix/on_life()
..()
if(!(organ_flags & ORGAN_FAILING))
return
var/mob/living/carbon/M = owner
if(M)
M.adjustToxLoss(4, TRUE, TRUE) //forced to ensure people don't use it to gain tox as slime person
/obj/item/organ/appendix/update_icon()
if(inflamed)
@@ -16,7 +30,7 @@
/obj/item/organ/appendix/Remove(mob/living/carbon/M, special = 0)
for(var/datum/disease/appendicitis/A in M.diseases)
A.cure()
inflamed = 1
inflamed = TRUE
update_icon()
..()
+3 -2
View File
@@ -121,7 +121,7 @@
playsound(get_turf(owner), 'sound/mecha/mechmove03.ogg', 50, 1)
/obj/item/organ/cyberimp/arm/ui_action_click()
if(crit_fail || (!holder && !contents.len))
if(crit_fail || (organ_flags & ORGAN_FAILING) || (!holder && !contents.len))
to_chat(owner, "<span class='warning'>The implant doesn't respond. It seems to be broken...</span>")
return
@@ -145,7 +145,7 @@
. = ..()
if(. & EMP_PROTECT_SELF)
return
if(prob(30/severity) && owner && !crit_fail)
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>")
playsound(get_turf(owner), 'sound/weapons/flashbang.ogg', 100, 1)
@@ -154,6 +154,7 @@
owner.IgniteMob()
owner.adjustFireLoss(25)
crit_fail = 1
organ_flags |= ORGAN_FAILING
/obj/item/organ/cyberimp/arm/gun/laser
@@ -144,7 +144,7 @@
/obj/item/organ/cyberimp/chest/thrusters/proc/toggle(silent = FALSE)
if(!on)
if(crit_fail)
if(crit_fail || (organ_flags & ORGAN_FAILING))
if(!silent)
to_chat(owner, "<span class='warning'>Your thrusters set seems to be broken!</span>")
return 0
@@ -4,6 +4,7 @@
name = "cybernetic implant"
desc = "A state-of-the-art implant that improves a baseline's functionality."
status = ORGAN_ROBOTIC
organ_flags = ORGAN_SYNTHETIC
var/implant_color = "#FFFFFF"
var/implant_overlay
var/syndicate_implant = FALSE //Makes the implant invisible to health analyzers and medical HUDs.
@@ -102,7 +103,7 @@
/obj/item/organ/cyberimp/brain/anti_stun/on_life()
..()
if(crit_fail)
if((crit_fail || !(organ_flags & ORGAN_FAILING)) && amount > 0)
return
owner.adjustStaminaLoss(-3.5) //Citadel edit, makes it more useful in Stamina based combat
if(owner.AmountStun() > STUN_SET_AMOUNT)
@@ -112,13 +113,15 @@
/obj/item/organ/cyberimp/brain/anti_stun/emp_act(severity)
. = ..()
if(crit_fail || . & EMP_PROTECT_SELF)
if(crit_fail || (organ_flags & ORGAN_FAILING) || . & EMP_PROTECT_SELF)
return
crit_fail = TRUE
organ_flags |= ORGAN_FAILING
addtimer(CALLBACK(src, .proc/reboot), 90 / severity)
/obj/item/organ/cyberimp/brain/anti_stun/proc/reboot()
crit_fail = FALSE
organ_flags &= ~ORGAN_FAILING
//[[[[MOUTH]]]]
+8
View File
@@ -6,6 +6,14 @@
slot = ORGAN_SLOT_EARS
gender = PLURAL
healing_factor = STANDARD_ORGAN_HEALING
decay_factor = STANDARD_ORGAN_DECAY
low_threshold_passed = "<span class='info'>Your ears begin to resonate with an internal ring sometimes.</span>"
now_failing = "<span class='warning'>You are unable to hear at all!</span>"
now_fixed = "<span class='info'>Noise slowly begins filling your ears once more.</span>"
low_threshold_cleared = "<span class='info'>The ringing in your ears has died down.</span>"
// `deaf` measures "ticks" of deafness. While > 0, the person is unable
// to hear anything.
var/deaf = 0
+1 -1
View File
@@ -289,7 +289,7 @@
H.hallucination += 10
H.reagents.add_reagent("bz_metabolites",5)
if(prob(33))
H.adjustBrainLoss(3, 150)
H.adjustOrganLoss(ORGAN_SLOT_BRAIN, 3, 150)
else if(bz_pp > 0.01)
H.hallucination += 5
+1 -1
View File
@@ -991,7 +991,7 @@
if (HAS_TRAIT(H, TRAIT_DEAF))//How the heck you managed to get here I have no idea, but just in case!
speaktrigger += "I can barely hear you! "
//And the brain damage. And the brain damage. And the brain damage. And the brain damage. And the brain damage.
switch(H.getBrainLoss())
switch(H.getOrganLoss(ORGAN_SLOT_BRAIN))
if(20 to 40)
speaktrigger += "I have a mild head ache, "
if(40 to 80)