mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-20 03:25:49 +01:00
Back up to date.
This commit is contained in:
@@ -47,7 +47,7 @@
|
||||
|
||||
/datum/surgery_step/glue_bone/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
if (affected.stage == 0)
|
||||
if(affected.stage == 0)
|
||||
user.visible_message("[user] starts applying medication to the damaged bones in [target]'s [affected.name] with \the [tool]." , \
|
||||
"You start applying medication to the damaged bones in [target]'s [affected.name] with \the [tool].")
|
||||
target.custom_pain("Something in your [affected.name] is causing you a lot of pain!",1)
|
||||
@@ -90,7 +90,7 @@
|
||||
|
||||
/datum/surgery_step/set_bone/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
if (affected.status & ORGAN_BROKEN)
|
||||
if(affected.status & ORGAN_BROKEN)
|
||||
user.visible_message("<span class='notice'> [user] sets the bone in [target]'s [affected.name] in place with \the [tool].</span>", \
|
||||
"<span class='notice'> You set the bone in [target]'s [affected.name] in place with \the [tool].</span>")
|
||||
affected.stage = 2
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
/datum/surgery_step/open_encased/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
|
||||
|
||||
if (!hasorgans(target))
|
||||
if(!hasorgans(target))
|
||||
return 0
|
||||
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
@@ -27,14 +27,14 @@
|
||||
time = 54
|
||||
|
||||
/datum/surgery_step/open_encased/saw/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
|
||||
if (!hasorgans(target))
|
||||
if(!hasorgans(target))
|
||||
return
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
return ..() && affected && affected.open == 2
|
||||
|
||||
/datum/surgery_step/open_encased/saw/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
|
||||
|
||||
if (!hasorgans(target))
|
||||
if(!hasorgans(target))
|
||||
return
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
|
||||
/datum/surgery_step/open_encased/saw/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
|
||||
|
||||
if (!hasorgans(target))
|
||||
if(!hasorgans(target))
|
||||
return
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
|
||||
/datum/surgery_step/open_encased/saw/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
|
||||
|
||||
if (!hasorgans(target))
|
||||
if(!hasorgans(target))
|
||||
return
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
|
||||
@@ -80,14 +80,14 @@
|
||||
time = 24
|
||||
|
||||
/datum/surgery_step/open_encased/retract/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
|
||||
if (!hasorgans(target))
|
||||
if(!hasorgans(target))
|
||||
return
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
return ..() && affected && affected.open == 2.5
|
||||
|
||||
/datum/surgery_step/open_encased/retract/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
|
||||
|
||||
if (!hasorgans(target))
|
||||
if(!hasorgans(target))
|
||||
return
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
|
||||
@@ -99,7 +99,7 @@
|
||||
|
||||
/datum/surgery_step/open_encased/retract/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
|
||||
|
||||
if (!hasorgans(target))
|
||||
if(!hasorgans(target))
|
||||
return
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
|
||||
@@ -113,7 +113,7 @@
|
||||
|
||||
/datum/surgery_step/open_encased/retract/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
|
||||
|
||||
if (!hasorgans(target))
|
||||
if(!hasorgans(target))
|
||||
return
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
|
||||
@@ -138,14 +138,14 @@
|
||||
|
||||
/datum/surgery_step/open_encased/close/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
|
||||
|
||||
if (!hasorgans(target))
|
||||
if(!hasorgans(target))
|
||||
return
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
return ..() && affected && affected.open == 3
|
||||
|
||||
/datum/surgery_step/open_encased/close/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
|
||||
|
||||
if (!hasorgans(target))
|
||||
if(!hasorgans(target))
|
||||
return
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
|
||||
@@ -157,7 +157,7 @@
|
||||
|
||||
/datum/surgery_step/open_encased/close/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
|
||||
|
||||
if (!hasorgans(target))
|
||||
if(!hasorgans(target))
|
||||
return
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
|
||||
@@ -171,7 +171,7 @@
|
||||
|
||||
/datum/surgery_step/open_encased/close/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
|
||||
|
||||
if (!hasorgans(target))
|
||||
if(!hasorgans(target))
|
||||
return
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
|
||||
@@ -195,14 +195,14 @@
|
||||
|
||||
/datum/surgery_step/open_encased/mend/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
|
||||
|
||||
if (!hasorgans(target))
|
||||
if(!hasorgans(target))
|
||||
return
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
return ..() && affected && affected.open == 2.5
|
||||
|
||||
/datum/surgery_step/open_encased/mend/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
|
||||
|
||||
if (!hasorgans(target))
|
||||
if(!hasorgans(target))
|
||||
return
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
|
||||
@@ -214,7 +214,7 @@
|
||||
|
||||
/datum/surgery_step/open_encased/mend/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
|
||||
|
||||
if (!hasorgans(target))
|
||||
if(!hasorgans(target))
|
||||
return
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
|
||||
|
||||
@@ -24,10 +24,10 @@
|
||||
can_infect = 0
|
||||
|
||||
/datum/surgery_step/face/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
|
||||
if (!hasorgans(target))
|
||||
if(!hasorgans(target))
|
||||
return 0
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
if (!affected || (affected.status & ORGAN_ROBOT))
|
||||
if(!affected || (affected.status & ORGAN_ROBOT))
|
||||
return 0
|
||||
return target_zone == "mouth"
|
||||
|
||||
@@ -159,7 +159,7 @@
|
||||
"<span class='notice'> You cauterize the incision on [target]'s face and neck with \the [tool].</span>")
|
||||
affected.open = 0
|
||||
affected.status &= ~ORGAN_BLEEDING
|
||||
//if (target.op_stage.face == 3)//I NEED TO REPLACE THE OPSTAGE SHIT!
|
||||
//if(target.op_stage.face == 3)//I NEED TO REPLACE THE OPSTAGE SHIT!
|
||||
var/obj/item/organ/external/head/h = affected
|
||||
h.disfigured = 0
|
||||
h.update_icon()
|
||||
|
||||
@@ -7,16 +7,16 @@
|
||||
can_infect = 1
|
||||
|
||||
/datum/surgery_step/generic/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
|
||||
if (target_zone == "eyes") //there are specific steps for eye surgery
|
||||
if(target_zone == "eyes") //there are specific steps for eye surgery
|
||||
return 0
|
||||
if (!hasorgans(target))
|
||||
if(!hasorgans(target))
|
||||
return 0
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
if (affected == null)
|
||||
if(affected == null)
|
||||
return 0
|
||||
if (affected.status & ORGAN_DESTROYED)
|
||||
if(affected.status & ORGAN_DESTROYED)
|
||||
return 0
|
||||
if (affected.status & ORGAN_ROBOT)
|
||||
if(affected.status & ORGAN_ROBOT)
|
||||
return 0
|
||||
return 1
|
||||
|
||||
@@ -130,10 +130,10 @@
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
var/msg = "[user] starts to pry open the incision on [target]'s [affected.name] with \the [tool]."
|
||||
var/self_msg = "You start to pry open the incision on [target]'s [affected.name] with \the [tool]."
|
||||
if (target_zone == "chest")
|
||||
if(target_zone == "chest")
|
||||
msg = "[user] starts to separate the ribcage and rearrange the organs in [target]'s torso with \the [tool]."
|
||||
self_msg = "You start to separate the ribcage and rearrange the organs in [target]'s torso with \the [tool]."
|
||||
if (target_zone == "groin")
|
||||
if(target_zone == "groin")
|
||||
msg = "[user] starts to pry open the incision and rearrange the organs in [target]'s lower abdomen with \the [tool]."
|
||||
self_msg = "You start to pry open the incision and rearrange the organs in [target]'s lower abdomen with \the [tool]."
|
||||
user.visible_message(msg, self_msg)
|
||||
@@ -144,10 +144,10 @@
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
var/msg = "<span class='notice'> [user] keeps the incision open on [target]'s [affected.name] with \the [tool].</span>"
|
||||
var/self_msg = "<span class='notice'> You keep the incision open on [target]'s [affected.name] with \the [tool].</span>"
|
||||
if (target_zone == "chest")
|
||||
if(target_zone == "chest")
|
||||
msg = "<span class='notice'> [user] keeps the ribcage open on [target]'s torso with \the [tool].</span>"
|
||||
self_msg = "<span class='notice'> You keep the ribcage open on [target]'s torso with \the [tool]."
|
||||
if (target_zone == "groin")
|
||||
if(target_zone == "groin")
|
||||
msg = "<span class='notice'> [user] keeps the incision open on [target]'s lower abdomen with \the [tool].</span>"
|
||||
self_msg = "<span class='notice'> You keep the incision open on [target]'s lower abdomen with \the [tool].</span>"
|
||||
user.visible_message(msg, self_msg)
|
||||
@@ -158,10 +158,10 @@
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
var/msg = "<span class='warning'> [user]'s hand slips, tearing the edges of incision on [target]'s [affected.name] with \the [tool]!</span>"
|
||||
var/self_msg = "<span class='warning'> Your hand slips, tearing the edges of incision on [target]'s [affected.name] with \the [tool]!</span>"
|
||||
if (target_zone == "chest")
|
||||
if(target_zone == "chest")
|
||||
msg = "<span class='warning'> [user]'s hand slips, damaging several organs [target]'s torso with \the [tool]!</span>"
|
||||
self_msg = "<span class='warning'> Your hand slips, damaging several organs [target]'s torso with \the [tool]!</span>"
|
||||
if (target_zone == "groin")
|
||||
if(target_zone == "groin")
|
||||
msg = "<span class='warning'> [user]'s hand slips, damaging several organs [target]'s lower abdomen with \the [tool]</span>"
|
||||
self_msg = "<span class='warning'> Your hand slips, damaging several organs [target]'s lower abdomen with \the [tool]!</span>"
|
||||
user.visible_message(msg, self_msg)
|
||||
@@ -239,14 +239,14 @@
|
||||
time = 100
|
||||
|
||||
/datum/surgery_step/generic/amputate/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
|
||||
if (target_zone == "eyes") //there are specific steps for eye surgery
|
||||
if(target_zone == "eyes") //there are specific steps for eye surgery
|
||||
return 0
|
||||
if (!hasorgans(target))
|
||||
if(!hasorgans(target))
|
||||
return 0
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
if (affected == null)
|
||||
if(affected == null)
|
||||
return 0
|
||||
if (affected.status & ORGAN_DESTROYED)
|
||||
if(affected.status & ORGAN_DESTROYED)
|
||||
return 0
|
||||
return !affected.cannot_amputate
|
||||
|
||||
|
||||
@@ -42,22 +42,22 @@
|
||||
return affected && affected.open == (affected.encased ? 3 : 2) && !(affected.status & ORGAN_BLEEDING)
|
||||
|
||||
/datum/surgery_step/cavity/proc/get_max_wclass(obj/item/organ/external/affected)
|
||||
switch (affected.limb_name)
|
||||
if ("head")
|
||||
switch(affected.limb_name)
|
||||
if("head")
|
||||
return 1
|
||||
if ("chest")
|
||||
if("chest")
|
||||
return 3
|
||||
if ("groin")
|
||||
if("groin")
|
||||
return 2
|
||||
return 0
|
||||
|
||||
/datum/surgery_step/cavity/proc/get_cavity(obj/item/organ/external/affected)
|
||||
switch (affected.limb_name)
|
||||
if ("head")
|
||||
switch(affected.limb_name)
|
||||
if("head")
|
||||
return "cranial"
|
||||
if ("chest")
|
||||
if("chest")
|
||||
return "thoracic"
|
||||
if ("groin")
|
||||
if("groin")
|
||||
return "abdominal"
|
||||
return ""
|
||||
|
||||
@@ -142,7 +142,7 @@
|
||||
|
||||
|
||||
/datum/surgery_step/cavity/place_item/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
|
||||
if (!ishuman(target))
|
||||
if(!ishuman(target))
|
||||
return 0
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
var/can_fit = affected && !affected.hidden && affected.cavity && tool.w_class <= get_max_wclass(affected)
|
||||
@@ -292,10 +292,10 @@
|
||||
/datum/surgery_step/cavity/implant_removal/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
|
||||
..()
|
||||
var/obj/item/organ/external/chest/affected = target.get_organ(target_zone)
|
||||
if (affected.implants.len)
|
||||
if(affected.implants.len)
|
||||
var/fail_prob = 10
|
||||
fail_prob += 100 - tool_quality(tool)
|
||||
if (prob(fail_prob))
|
||||
if(prob(fail_prob))
|
||||
var/obj/item/weapon/implant/imp = affected.implants[1]
|
||||
user.visible_message("<span class='warning'> Something beeps inside [target]'s [affected.name]!</span>")
|
||||
playsound(imp.loc, 'sound/items/countdown.ogg', 75, 1, -3)
|
||||
|
||||
@@ -68,10 +68,10 @@
|
||||
/datum/surgery_step/limb/
|
||||
can_infect = 0
|
||||
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
if (!hasorgans(target))
|
||||
if(!hasorgans(target))
|
||||
return 0
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
if (affected)
|
||||
if(affected)
|
||||
return 0
|
||||
var/list/organ_data = target.species.has_limbs["[target_zone]"]
|
||||
return !isnull(organ_data)
|
||||
@@ -95,6 +95,11 @@
|
||||
E.replaced(target)
|
||||
E.forceMove(target)
|
||||
if(target.get_species() == "Machine")//as this is the only step needed for ipc put togethers
|
||||
if(!(E.dna) && E.robotic == 2 && target.dna)
|
||||
E.dna = target.dna.Clone()
|
||||
if(!E.blood_DNA)
|
||||
E.blood_DNA = list()
|
||||
E.blood_DNA[target.dna.unique_enzymes] = target.dna.b_type
|
||||
if(target_zone == "head")
|
||||
var/obj/item/organ/external/head/H = target.get_organ("head")
|
||||
var/datum/robolimb/robohead = all_robolimbs[H.model]
|
||||
@@ -172,8 +177,8 @@
|
||||
/datum/surgery_step/limb/mechanize/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
if(..())
|
||||
var/obj/item/robot_parts/p = tool
|
||||
if (p.part)
|
||||
if (!(target_zone in p.part))
|
||||
if(p.part)
|
||||
if(!(target_zone in p.part))
|
||||
return 0
|
||||
return isnull(target.get_organ(target_zone))
|
||||
|
||||
|
||||
@@ -1,14 +1,8 @@
|
||||
/****************************************************
|
||||
BLOOD SYSTEM
|
||||
****************************************************/
|
||||
//Blood levels
|
||||
var/const/BLOOD_VOLUME_SAFE = 501
|
||||
var/const/BLOOD_VOLUME_OKAY = 336
|
||||
var/const/BLOOD_VOLUME_BAD = 224
|
||||
var/const/BLOOD_VOLUME_SURVIVE = 122
|
||||
|
||||
/mob/living/carbon/human/var/datum/reagents/vessel //Container for blood and BLOOD ONLY. Do not transfer other chems here.
|
||||
/mob/living/carbon/human/var/var/pale = 0 //Should affect how mob sprite is drawn, but currently doesn't.
|
||||
|
||||
//Initializes blood vessels
|
||||
/mob/living/carbon/human/proc/make_blood()
|
||||
@@ -60,12 +54,8 @@ var/const/BLOOD_VOLUME_SURVIVE = 122
|
||||
blood_volume = round(vessel.get_reagent_amount(blood_reagent))
|
||||
if(blood_volume < max_blood && blood_volume)
|
||||
vessel.add_reagent(blood_reagent, 0.1) // regenerate blood VERY slowly
|
||||
if (reagents.has_reagent("nutriment")) //Getting food speeds it up
|
||||
if(reagents.has_reagent(blood_reagent))
|
||||
vessel.add_reagent(blood_reagent, 0.4)
|
||||
reagents.remove_reagent("nutriment", 0.1)
|
||||
else if (reagents.has_reagent(blood_reagent))
|
||||
vessel.add_reagent(blood_reagent, 0.4)
|
||||
reagents.remove_reagent(blood_reagent, 0.4)
|
||||
|
||||
else
|
||||
blood_volume = round(vessel.get_reagent_amount("blood"))
|
||||
@@ -73,14 +63,13 @@ var/const/BLOOD_VOLUME_SURVIVE = 122
|
||||
if(blood_volume < max_blood && blood_volume)
|
||||
var/datum/reagent/blood/B = locate() in vessel.reagent_list //Grab some blood
|
||||
if(B) // Make sure there's some blood at all
|
||||
|
||||
if(src.mind) //Handles vampires "eating" blood that isn't their own.
|
||||
if(src.mind in ticker.mode.vampires)
|
||||
if(mind) //Handles vampires "eating" blood that isn't their own.
|
||||
if(mind in ticker.mode.vampires)
|
||||
for(var/datum/reagent/blood/BL in vessel.reagent_list)
|
||||
if(src.nutrition >= 450)
|
||||
if(nutrition >= 450)
|
||||
break //We don't want blood tranfusions making vampires fat.
|
||||
if(BL.data["donor"] != src)
|
||||
src.nutrition += (15 * REAGENTS_METABOLISM)
|
||||
nutrition += (15 * REAGENTS_METABOLISM)
|
||||
BL.volume -= REAGENTS_METABOLISM
|
||||
if(BL.volume <= 0)
|
||||
qdel(BL)
|
||||
@@ -93,86 +82,49 @@ var/const/BLOOD_VOLUME_SURVIVE = 122
|
||||
break
|
||||
|
||||
vessel.add_reagent("blood", 0.1) // regenerate blood VERY slowly
|
||||
if (reagents.has_reagent("nutriment")) //Getting food speeds it up
|
||||
vessel.add_reagent("blood", 0.4)
|
||||
reagents.remove_reagent("nutriment", 0.1)
|
||||
if (reagents.has_reagent("iron")) //Hematogen candy anyone?
|
||||
vessel.add_reagent("blood", 0.8)
|
||||
reagents.remove_reagent("iron", 0.1)
|
||||
if (reagents.has_reagent("salglu_solution")) //saline is good for blood regeneration
|
||||
if(prob(33))
|
||||
vessel.add_reagent("blood", 1.0)
|
||||
|
||||
// Damaged heart virtually reduces the blood volume, as the blood isn't
|
||||
// being pumped properly anymore.
|
||||
var/obj/item/organ/internal/heart/heart = get_int_organ(/obj/item/organ/internal/heart)
|
||||
|
||||
if(heart)
|
||||
if(heart.damage > 1 && heart.damage < heart.min_bruised_damage)
|
||||
blood_volume *= 0.8
|
||||
else if(heart.damage >= heart.min_bruised_damage && heart.damage < heart.min_broken_damage)
|
||||
blood_volume *= 0.6
|
||||
else if(heart.damage >= heart.min_broken_damage && heart.damage < INFINITY)
|
||||
blood_volume *= 0.3
|
||||
|
||||
//Effects of bloodloss
|
||||
var/oxy_immune = species.flags & NO_BREATHE //Some species have blood, but don't breathe; they should still suffer the effects of bloodloss.
|
||||
|
||||
switch(blood_volume)
|
||||
if(BLOOD_VOLUME_SAFE to 10000)
|
||||
if(pale)
|
||||
pale = 0
|
||||
update_body()
|
||||
if(BLOOD_VOLUME_OKAY to BLOOD_VOLUME_SAFE)
|
||||
if(!pale)
|
||||
pale = 1
|
||||
update_body()
|
||||
var/word = pick("dizzy","woosey","faint")
|
||||
to_chat(src, "\red You feel [word]")
|
||||
if(prob(1))
|
||||
var/word = pick("dizzy","woosey","faint")
|
||||
to_chat(src, "\red You feel [word]")
|
||||
if(oxyloss < 20)
|
||||
oxyloss += 3
|
||||
if(prob(5))
|
||||
to_chat(src, "<span class='warning'>You feel [pick("dizzy","woozy","faint")].</span>")
|
||||
if(oxy_immune)
|
||||
adjustToxLoss(round((BLOOD_VOLUME_NORMAL - blood_volume) * 0.01, 1))
|
||||
else
|
||||
adjustOxyLoss(round((BLOOD_VOLUME_NORMAL - blood_volume) * 0.01, 1))
|
||||
if(BLOOD_VOLUME_BAD to BLOOD_VOLUME_OKAY)
|
||||
if(!pale)
|
||||
pale = 1
|
||||
update_body()
|
||||
eye_blurry += 6
|
||||
if(oxyloss < 50)
|
||||
oxyloss += 10
|
||||
oxyloss += 1
|
||||
if(prob(15))
|
||||
Paralyse(rand(1,3))
|
||||
var/word = pick("dizzy","woosey","faint")
|
||||
to_chat(src, "\red You feel very [word]")
|
||||
if(oxy_immune)
|
||||
adjustToxLoss(round((BLOOD_VOLUME_NORMAL - blood_volume) * 0.02, 1))
|
||||
else
|
||||
adjustOxyLoss(round((BLOOD_VOLUME_NORMAL - blood_volume) * 0.02, 1))
|
||||
if(prob(5))
|
||||
eye_blurry = max(eye_blurry, 6)
|
||||
var/word = pick("dizzy","woozy","faint")
|
||||
to_chat(src, "<span class='warning'>You feel very [word].</span>")
|
||||
if(BLOOD_VOLUME_SURVIVE to BLOOD_VOLUME_BAD)
|
||||
if(!pale)
|
||||
pale = 1
|
||||
update_body()
|
||||
if(oxyloss > 20)
|
||||
eye_blurry += 6
|
||||
oxyloss += 12
|
||||
if(oxy_immune)
|
||||
adjustToxLoss(5)
|
||||
else
|
||||
adjustOxyLoss(5)
|
||||
if(prob(15))
|
||||
Paralyse(rand(1,3))
|
||||
var/word = pick("dizzy","woosey","faint")
|
||||
to_chat(src, "\red You feel extremely [word]")
|
||||
var/word = pick("dizzy","woozy","faint")
|
||||
to_chat(src, "<span class='warning'>You feel extremely [word].</span>")
|
||||
if(0 to BLOOD_VOLUME_SURVIVE)
|
||||
death()
|
||||
|
||||
// Without enough blood you slowly go hungry.
|
||||
if(blood_volume < BLOOD_VOLUME_SAFE)
|
||||
if(nutrition >= 300)
|
||||
nutrition -= 10
|
||||
else if(nutrition >= 200)
|
||||
nutrition -= 3
|
||||
|
||||
//Bleeding out
|
||||
var/blood_max = 0
|
||||
for(var/obj/item/organ/external/temp in organs)
|
||||
if(!(temp.status & ORGAN_BLEEDING) || temp.status & ORGAN_ROBOT)
|
||||
continue
|
||||
for(var/datum/wound/W in temp.wounds) if(W.bleeding())
|
||||
blood_max += W.damage / 4
|
||||
if (temp.open)
|
||||
for(var/datum/wound/W in temp.wounds)
|
||||
if(W.bleeding())
|
||||
blood_max += W.damage / 4
|
||||
if(temp.open)
|
||||
blood_max += 2 //Yer stomach is cut open
|
||||
drip(blood_max)
|
||||
|
||||
@@ -188,7 +140,7 @@ var/const/BLOOD_VOLUME_SURVIVE = 122
|
||||
var/amm = 0.1 * amt
|
||||
var/turf/T = get_turf(src)
|
||||
|
||||
if(src.species.exotic_blood)
|
||||
if(species.exotic_blood)
|
||||
vessel.remove_reagent(species.exotic_blood,amm)
|
||||
if(vessel.total_volume)
|
||||
var/fraction = amm / vessel.total_volume
|
||||
@@ -197,7 +149,7 @@ var/const/BLOOD_VOLUME_SURVIVE = 122
|
||||
|
||||
else
|
||||
vessel.remove_reagent("blood",amm)
|
||||
blood_splatter(src,src)
|
||||
blood_splatter(src, src)
|
||||
|
||||
|
||||
/****************************************************
|
||||
@@ -263,13 +215,13 @@ var/const/BLOOD_VOLUME_SURVIVE = 122
|
||||
/mob/living/carbon/proc/inject_blood(obj/item/weapon/reagent_containers/container, var/amount)
|
||||
var/datum/reagent/blood/injected = get_blood(container.reagents)
|
||||
|
||||
if (!istype(injected))
|
||||
if(!istype(injected))
|
||||
return
|
||||
|
||||
var/list/chems = list()
|
||||
chems = params2list(injected.data["trace_chem"])
|
||||
for(var/C in chems)
|
||||
src.reagents.add_reagent(C, (text2num(chems[C]) / 560) * amount)//adds trace chemicals to owner's blood
|
||||
src.reagents.add_reagent(C, (text2num(chems[C]) / BLOOD_VOLUME_NORMAL) * amount)//adds trace chemicals to owner's blood
|
||||
reagents.update_total()
|
||||
|
||||
container.reagents.remove_reagent("blood", amount)
|
||||
@@ -286,7 +238,7 @@ var/const/BLOOD_VOLUME_SURVIVE = 122
|
||||
|
||||
var/datum/reagent/blood/our = get_blood(vessel)
|
||||
|
||||
if (!istype(injected) || !istype(our))
|
||||
if(!istype(injected) || !istype(our))
|
||||
return
|
||||
if(blood_incompatible(injected.data["blood_type"],our.data["blood_type"]) )
|
||||
reagents.add_reagent("toxin",amount * 0.5)
|
||||
|
||||
@@ -22,7 +22,7 @@ var/list/organ_cache = list()
|
||||
// links chemical IDs to number of ticks for which they'll stay in the blood
|
||||
germ_level = 0
|
||||
var/datum/dna/dna
|
||||
var/datum/species/species
|
||||
var/datum/species/species = "Human"
|
||||
|
||||
// Stuff for tracking if this is on a tile with an open freezer or not
|
||||
var/last_freezer_update_time = 0
|
||||
@@ -53,6 +53,9 @@ var/list/organ_cache = list()
|
||||
if(!blood_DNA)
|
||||
blood_DNA = list()
|
||||
blood_DNA[dna.unique_enzymes] = dna.b_type
|
||||
else
|
||||
if(istext(species))
|
||||
species = all_species[species]
|
||||
|
||||
/obj/item/organ/proc/set_dna(var/datum/dna/new_dna)
|
||||
if(new_dna)
|
||||
@@ -84,7 +87,7 @@ var/list/organ_cache = list()
|
||||
return
|
||||
|
||||
//Process infections
|
||||
if ((status & ORGAN_ROBOT) || sterile ||(owner && owner.species && (owner.species.flags & IS_PLANT)))
|
||||
if((status & ORGAN_ROBOT) || sterile ||(owner && owner.species && (owner.species.flags & IS_PLANT)))
|
||||
germ_level = 0
|
||||
return
|
||||
|
||||
@@ -149,10 +152,10 @@ var/list/organ_cache = list()
|
||||
//** Handle the effects of infections
|
||||
var/antibiotics = owner.reagents.get_reagent_amount("spaceacillin")
|
||||
|
||||
if (germ_level > 0 && germ_level < INFECTION_LEVEL_ONE/2 && prob(30))
|
||||
if(germ_level > 0 && germ_level < INFECTION_LEVEL_ONE/2 && prob(30))
|
||||
germ_level--
|
||||
|
||||
if (germ_level >= INFECTION_LEVEL_ONE/2)
|
||||
if(germ_level >= INFECTION_LEVEL_ONE/2)
|
||||
//aiming for germ level to go from ambient to INFECTION_LEVEL_TWO in an average of 15 minutes
|
||||
if(antibiotics < 5 && prob(round(germ_level/6)))
|
||||
germ_level++
|
||||
@@ -161,13 +164,13 @@ var/list/organ_cache = list()
|
||||
var/fever_temperature = (owner.species.heat_level_1 - owner.species.body_temperature - 5)* min(germ_level/INFECTION_LEVEL_TWO, 1) + owner.species.body_temperature
|
||||
owner.bodytemperature += between(0, (fever_temperature - T20C)/BODYTEMP_COLD_DIVISOR + 1, fever_temperature - owner.bodytemperature)
|
||||
|
||||
if (germ_level >= INFECTION_LEVEL_TWO)
|
||||
if(germ_level >= INFECTION_LEVEL_TWO)
|
||||
var/obj/item/organ/external/parent = owner.get_organ(parent_organ)
|
||||
//spread germs
|
||||
if (antibiotics < 5 && parent.germ_level < germ_level && ( parent.germ_level < INFECTION_LEVEL_ONE*2 || prob(30) ))
|
||||
if(antibiotics < 5 && parent.germ_level < germ_level && ( parent.germ_level < INFECTION_LEVEL_ONE*2 || prob(30) ))
|
||||
parent.germ_level++
|
||||
|
||||
if (prob(3)) //about once every 30 seconds
|
||||
if(prob(3)) //about once every 30 seconds
|
||||
take_damage(1,silent=prob(30))
|
||||
|
||||
/obj/item/organ/proc/receive_chem(chemical as obj)
|
||||
@@ -178,7 +181,7 @@ var/list/organ_cache = list()
|
||||
germ_level = 0
|
||||
if(status & ORGAN_ROBOT) //Robotic organs stay robotic.
|
||||
status = ORGAN_ROBOT
|
||||
else if (status & ORGAN_ASSISTED) //Assisted organs stay assisted.
|
||||
else if(status & ORGAN_ASSISTED) //Assisted organs stay assisted.
|
||||
status = ORGAN_ASSISTED
|
||||
else
|
||||
status = 0
|
||||
@@ -198,12 +201,12 @@ var/list/organ_cache = list()
|
||||
/obj/item/organ/proc/handle_antibiotics()
|
||||
var/antibiotics = owner.reagents.get_reagent_amount("spaceacillin")
|
||||
|
||||
if (!germ_level || antibiotics <= 0.4)
|
||||
if(!germ_level || antibiotics <= 0.4)
|
||||
return
|
||||
|
||||
if (germ_level < INFECTION_LEVEL_ONE)
|
||||
if(germ_level < INFECTION_LEVEL_ONE)
|
||||
germ_level = 0 //cure instantly
|
||||
else if (germ_level < INFECTION_LEVEL_TWO)
|
||||
else if(germ_level < INFECTION_LEVEL_TWO)
|
||||
germ_level -= 24 //at germ_level == 500, this should cure the infection in 15 seconds
|
||||
else
|
||||
germ_level -= 8 // at germ_level == 1000, this will cure the infection in 1 minute, 15 seconds
|
||||
@@ -257,11 +260,11 @@ var/list/organ_cache = list()
|
||||
/obj/item/organ/emp_act(severity)
|
||||
if(!(status & ORGAN_ROBOT))
|
||||
return
|
||||
switch (severity)
|
||||
if (1.0)
|
||||
switch(severity)
|
||||
if(1.0)
|
||||
take_damage(0,20)
|
||||
return
|
||||
if (2.0)
|
||||
if(2.0)
|
||||
take_damage(0,7)
|
||||
return
|
||||
if(3.0)
|
||||
@@ -271,10 +274,10 @@ var/list/organ_cache = list()
|
||||
if(!robotic)
|
||||
return
|
||||
if(robotic == 2)
|
||||
switch (severity)
|
||||
if (1.0)
|
||||
switch(severity)
|
||||
if(1.0)
|
||||
take_damage(20,1)
|
||||
if (2.0)
|
||||
if(2.0)
|
||||
take_damage(7,1)
|
||||
if(3.0)
|
||||
take_damage(3,1)
|
||||
@@ -319,7 +322,7 @@ var/list/organ_cache = list()
|
||||
owner = target
|
||||
processing_objects -= src
|
||||
affected.internal_organs |= src
|
||||
if (!target.get_int_organ(src))
|
||||
if(!target.get_int_organ(src))
|
||||
target.internal_organs += src
|
||||
src.loc = target
|
||||
if(robotic)
|
||||
@@ -335,8 +338,8 @@ Returns 0 if it isn't
|
||||
I use this so that this can be made better once the organ overhaul rolls out -- Crazylemon
|
||||
*/
|
||||
/obj/item/organ/proc/is_primary_organ(var/mob/living/carbon/human/O = null)
|
||||
if (isnull(O))
|
||||
if(isnull(O))
|
||||
O = owner
|
||||
if (!istype(owner)) // You're not the primary organ of ANYTHING, bucko
|
||||
if(!istype(owner)) // You're not the primary organ of ANYTHING, bucko
|
||||
return 0
|
||||
return src == O.get_int_organ(organ_tag)
|
||||
|
||||
@@ -210,7 +210,7 @@
|
||||
//How much damage can we actually cause?
|
||||
var/can_inflict = max_damage * config.organ_health_multiplier - (brute_dam + burn_dam)
|
||||
if(can_inflict)
|
||||
if (brute > 0)
|
||||
if(brute > 0)
|
||||
//Inflict all burte damage we can
|
||||
if(can_cut)
|
||||
createwound( CUT, min(brute,can_inflict) )
|
||||
@@ -222,14 +222,14 @@
|
||||
//How much brute damage is left to inflict
|
||||
brute = max(0, brute - temp)
|
||||
|
||||
if (burn > 0 && can_inflict)
|
||||
if(burn > 0 && can_inflict)
|
||||
//Inflict all burn damage we can
|
||||
createwound(BURN, min(burn,can_inflict))
|
||||
//How much burn damage is left to inflict
|
||||
burn = max(0, burn - can_inflict)
|
||||
//If there are still hurties to dispense
|
||||
if (burn || brute)
|
||||
if (fail_at_full_damage == 1 && body_part != UPPER_TORSO && body_part != LOWER_TORSO)
|
||||
if(burn || brute)
|
||||
if(fail_at_full_damage == 1 && body_part != UPPER_TORSO && body_part != LOWER_TORSO)
|
||||
droplimb(1) //Clean loss, just drop the limb and be done
|
||||
else
|
||||
//List organs we can pass it to
|
||||
@@ -310,7 +310,7 @@ This function completely restores a damaged organ to perfect condition.
|
||||
damage_state = "00"
|
||||
if(status & ORGAN_ROBOT) //Robotic organs stay robotic.
|
||||
status = ORGAN_ROBOT
|
||||
else if (status & ORGAN_ASSISTED) //Assisted organs stay assisted.
|
||||
else if(status & ORGAN_ASSISTED) //Assisted organs stay assisted.
|
||||
status = ORGAN_ASSISTED
|
||||
else
|
||||
status = 0
|
||||
@@ -358,8 +358,8 @@ This function completely restores a damaged organ to perfect condition.
|
||||
if((type == CUT || type == BRUISE) && damage >= 5)
|
||||
//we need to make sure that the wound we are going to worsen is compatible with the type of damage...
|
||||
var/list/compatible_wounds = list()
|
||||
for (var/datum/wound/W in wounds)
|
||||
if (W.can_worsen(type, damage))
|
||||
for(var/datum/wound/W in wounds)
|
||||
if(W.can_worsen(type, damage))
|
||||
compatible_wounds += W
|
||||
|
||||
if(compatible_wounds.len)
|
||||
@@ -412,7 +412,7 @@ This function completely restores a damaged organ to perfect condition.
|
||||
if(!wound_cleanup_timer)
|
||||
wound_cleanup_timer = addtimer(src, "cleanup_wounds", SecondsToTicks(600), 1, wounds)
|
||||
|
||||
if (update_icon())
|
||||
if(update_icon())
|
||||
owner.UpdateDamageIcon(1)
|
||||
return 0
|
||||
|
||||
@@ -482,13 +482,13 @@ Note that amputating the affected organ does in fact remove the infection from t
|
||||
var/antibiotics = owner.reagents.get_reagent_amount("spaceacillin")
|
||||
for(var/datum/wound/W in wounds)
|
||||
//Open wounds can become infected
|
||||
if (owner.germ_level > W.germ_level && W.infection_check())
|
||||
if(owner.germ_level > W.germ_level && W.infection_check())
|
||||
W.germ_level++
|
||||
|
||||
if (antibiotics < 5)
|
||||
if(antibiotics < 5)
|
||||
for(var/datum/wound/W in wounds)
|
||||
//Infected wounds raise the organ's germ level
|
||||
if (W.germ_level > germ_level)
|
||||
if(W.germ_level > germ_level)
|
||||
germ_level++
|
||||
break //limit increase to a maximum of one per second
|
||||
|
||||
@@ -502,37 +502,37 @@ Note that amputating the affected organ does in fact remove the infection from t
|
||||
if(germ_level >= INFECTION_LEVEL_TWO)
|
||||
//spread the infection to internal organs
|
||||
var/obj/item/organ/internal/target_organ = null //make internal organs become infected one at a time instead of all at once
|
||||
for (var/obj/item/organ/internal/I in internal_organs)
|
||||
if (I.germ_level > 0 && I.germ_level < min(germ_level, INFECTION_LEVEL_TWO)) //once the organ reaches whatever we can give it, or level two, switch to a different one
|
||||
if (!target_organ || I.germ_level > target_organ.germ_level) //choose the organ with the highest germ_level
|
||||
for(var/obj/item/organ/internal/I in internal_organs)
|
||||
if(I.germ_level > 0 && I.germ_level < min(germ_level, INFECTION_LEVEL_TWO)) //once the organ reaches whatever we can give it, or level two, switch to a different one
|
||||
if(!target_organ || I.germ_level > target_organ.germ_level) //choose the organ with the highest germ_level
|
||||
target_organ = I
|
||||
|
||||
if (!target_organ)
|
||||
if(!target_organ)
|
||||
//figure out which organs we can spread germs to and pick one at random
|
||||
var/list/candidate_organs = list()
|
||||
for (var/obj/item/organ/internal/I in internal_organs)
|
||||
if (I.germ_level < germ_level)
|
||||
for(var/obj/item/organ/internal/I in internal_organs)
|
||||
if(I.germ_level < germ_level)
|
||||
candidate_organs |= I
|
||||
if (candidate_organs.len)
|
||||
if(candidate_organs.len)
|
||||
target_organ = pick(candidate_organs)
|
||||
|
||||
if (target_organ)
|
||||
if(target_organ)
|
||||
target_organ.germ_level++
|
||||
|
||||
//spread the infection to child and parent organs
|
||||
if (children)
|
||||
for (var/obj/item/organ/external/child in children)
|
||||
if (child.germ_level < germ_level && !(child.status & ORGAN_ROBOT))
|
||||
if (child.germ_level < INFECTION_LEVEL_ONE*2 || prob(30))
|
||||
if(children)
|
||||
for(var/obj/item/organ/external/child in children)
|
||||
if(child.germ_level < germ_level && !(child.status & ORGAN_ROBOT))
|
||||
if(child.germ_level < INFECTION_LEVEL_ONE*2 || prob(30))
|
||||
child.germ_level++
|
||||
|
||||
if (parent)
|
||||
if (parent.germ_level < germ_level && !(parent.status & ORGAN_ROBOT))
|
||||
if (parent.germ_level < INFECTION_LEVEL_ONE*2 || prob(30))
|
||||
if(parent)
|
||||
if(parent.germ_level < germ_level && !(parent.status & ORGAN_ROBOT))
|
||||
if(parent.germ_level < INFECTION_LEVEL_ONE*2 || prob(30))
|
||||
parent.germ_level++
|
||||
|
||||
if(germ_level >= INFECTION_LEVEL_THREE && antibiotics < 30) //overdosing is necessary to stop severe infections
|
||||
if (!(status & ORGAN_DEAD))
|
||||
if(!(status & ORGAN_DEAD))
|
||||
status |= ORGAN_DEAD
|
||||
to_chat(owner, "<span class='notice'>You can't feel your [name] anymore...</span>")
|
||||
owner.update_body(1)
|
||||
@@ -567,7 +567,7 @@ Note that amputating the affected organ does in fact remove the infection from t
|
||||
var/heal_amt = 0
|
||||
|
||||
// if damage >= 50 AFTER treatment then it's probably too severe to heal within the timeframe of a round.
|
||||
if (W.can_autoheal() && W.wound_damage() < 50)
|
||||
if(W.can_autoheal() && W.wound_damage() < 50)
|
||||
heal_amt += 0.5
|
||||
|
||||
//we only update wounds once in [wound_update_accuracy] ticks so have to emulate realtime
|
||||
@@ -587,7 +587,7 @@ Note that amputating the affected organ does in fact remove the infection from t
|
||||
|
||||
// sync the organ's damage with its wounds
|
||||
src.update_damages()
|
||||
if (update_icon())
|
||||
if(update_icon())
|
||||
owner.UpdateDamageIcon(1)
|
||||
|
||||
//Updates brute_damn and burn_damn from wound damages. Updates BLEEDING status.
|
||||
@@ -620,7 +620,7 @@ Note that amputating the affected organ does in fact remove the infection from t
|
||||
|
||||
number_wounds += W.amount
|
||||
|
||||
if (open && !clamped && (H && !(H.species.flags & NO_BLOOD)))
|
||||
if(open && !clamped && (H && !(H.species.flags & NO_BLOOD)))
|
||||
status |= ORGAN_BLEEDING
|
||||
|
||||
//Bone fractures
|
||||
@@ -638,18 +638,18 @@ Note that amputating the affected organ does in fact remove the infection from t
|
||||
|
||||
if(burn_dam ==0)
|
||||
tburn =0
|
||||
else if (burn_dam < (max_damage * 0.25 / 2))
|
||||
else if(burn_dam < (max_damage * 0.25 / 2))
|
||||
tburn = 1
|
||||
else if (burn_dam < (max_damage * 0.75 / 2))
|
||||
else if(burn_dam < (max_damage * 0.75 / 2))
|
||||
tburn = 2
|
||||
else
|
||||
tburn = 3
|
||||
|
||||
if (brute_dam == 0)
|
||||
if(brute_dam == 0)
|
||||
tbrute = 0
|
||||
else if (brute_dam < (max_damage * 0.25 / 2))
|
||||
else if(brute_dam < (max_damage * 0.25 / 2))
|
||||
tbrute = 1
|
||||
else if (brute_dam < (max_damage * 0.75 / 2))
|
||||
else if(brute_dam < (max_damage * 0.75 / 2))
|
||||
tbrute = 2
|
||||
else
|
||||
tbrute = 3
|
||||
@@ -744,12 +744,12 @@ Note that amputating the affected organ does in fact remove the infection from t
|
||||
holder = owner
|
||||
if(!holder)
|
||||
return
|
||||
if (holder.handcuffed && body_part in list(ARM_LEFT, ARM_RIGHT, HAND_LEFT, HAND_RIGHT))
|
||||
if(holder.handcuffed && body_part in list(ARM_LEFT, ARM_RIGHT, HAND_LEFT, HAND_RIGHT))
|
||||
holder.visible_message(\
|
||||
"\The [holder.handcuffed.name] falls off of [holder.name].",\
|
||||
"\The [holder.handcuffed.name] falls off you.")
|
||||
holder.unEquip(holder.handcuffed)
|
||||
if (holder.legcuffed && body_part in list(FOOT_LEFT, FOOT_RIGHT, LEG_LEFT, LEG_RIGHT))
|
||||
if(holder.legcuffed && body_part in list(FOOT_LEFT, FOOT_RIGHT, LEG_LEFT, LEG_RIGHT))
|
||||
holder.visible_message(\
|
||||
"\The [holder.legcuffed.name] falls off of [holder.name].",\
|
||||
"\The [holder.legcuffed.name] falls off you.")
|
||||
@@ -809,7 +809,7 @@ Note that amputating the affected organ does in fact remove the infection from t
|
||||
perma_injury = brute_dam
|
||||
|
||||
// Fractures have a chance of getting you out of restraints
|
||||
if (prob(25))
|
||||
if(prob(25))
|
||||
release_restraints()
|
||||
|
||||
/obj/item/organ/external/proc/mend_fracture()
|
||||
@@ -845,7 +845,7 @@ Note that amputating the affected organ does in fact remove the infection from t
|
||||
|
||||
cannot_break = 1
|
||||
get_icon()
|
||||
for (var/obj/item/organ/external/T in children)
|
||||
for(var/obj/item/organ/external/T in children)
|
||||
if(T)
|
||||
T.robotize()
|
||||
|
||||
@@ -939,7 +939,7 @@ Note that amputating the affected organ does in fact remove the infection from t
|
||||
qdel(src)
|
||||
|
||||
/obj/item/organ/external/proc/disfigure(var/type = "brute")
|
||||
if (disfigured)
|
||||
if(disfigured)
|
||||
return
|
||||
if(owner)
|
||||
if(type == "brute")
|
||||
@@ -953,9 +953,9 @@ Note that amputating the affected organ does in fact remove the infection from t
|
||||
disfigured = 1
|
||||
|
||||
/obj/item/organ/external/is_primary_organ(var/mob/living/carbon/human/O = null)
|
||||
if (isnull(O))
|
||||
if(isnull(O))
|
||||
O = owner
|
||||
if (!istype(O)) // You're not the primary organ of ANYTHING, bucko
|
||||
if(!istype(O)) // You're not the primary organ of ANYTHING, bucko
|
||||
return 0
|
||||
return src == O.organs_by_name[limb_name]
|
||||
|
||||
|
||||
@@ -116,18 +116,18 @@ var/global/list/limb_icon_cache = list()
|
||||
return mob_icon
|
||||
|
||||
/obj/item/organ/external/proc/get_icon(var/skeletal)
|
||||
|
||||
var/gender
|
||||
if(istext(species))
|
||||
species = all_species[species]
|
||||
if(force_icon)
|
||||
mob_icon = new /icon(force_icon, "[icon_name]")
|
||||
if(species && species.name == "Machine") //snowflake for IPC's, sorry.
|
||||
if(species && species.name == "Machine") //snowflake for IPC's, sorry.
|
||||
if(s_col && s_col.len >= 3)
|
||||
mob_icon.Blend(rgb(s_col[1], s_col[2], s_col[3]), ICON_ADD)
|
||||
else
|
||||
if(!dna)
|
||||
mob_icon = new /icon('icons/mob/human_races/r_human.dmi', "[icon_name][gendered_icon ? "_f" : ""]")
|
||||
else
|
||||
|
||||
if(gendered_icon)
|
||||
if(dna.GetUIState(DNA_UI_GENDER))
|
||||
gender = "f"
|
||||
@@ -139,7 +139,7 @@ var/global/list/limb_icon_cache = list()
|
||||
else if(status & ORGAN_ROBOT)
|
||||
mob_icon = new /icon('icons/mob/human_races/robotic.dmi', "[icon_name][gender ? "_[gender]" : ""]")
|
||||
else
|
||||
if (status & ORGAN_MUTATED)
|
||||
if(status & ORGAN_MUTATED)
|
||||
mob_icon = new /icon(species.deform, "[icon_name][gender ? "_[gender]" : ""]")
|
||||
else
|
||||
mob_icon = new /icon(species.icobase, "[icon_name][gender ? "_[gender]" : ""]")
|
||||
@@ -165,7 +165,7 @@ var/global/list/limb_icon_cache = list()
|
||||
// adjusted to set damage_state to brute/burn code only (without r_name0 as before)
|
||||
/obj/item/organ/external/update_icon()
|
||||
var/n_is = damage_state_text()
|
||||
if (n_is != damage_state)
|
||||
if(n_is != damage_state)
|
||||
damage_state = n_is
|
||||
return 1
|
||||
return 0
|
||||
|
||||
@@ -191,6 +191,70 @@
|
||||
S.icon_state = "heart-off"
|
||||
return S
|
||||
|
||||
/obj/item/organ/internal/heart/cursed
|
||||
name = "cursed heart"
|
||||
desc = "it needs to be pumped..."
|
||||
icon_state = "cursedheart-off"
|
||||
icon_base = "cursedheart"
|
||||
origin_tech = "biotech=5"
|
||||
organ_action_name = "pump your blood"
|
||||
var/last_pump = 0
|
||||
var/pump_delay = 30 //you can pump 1 second early, for lag, but no more (otherwise you could spam heal)
|
||||
var/blood_loss = 100 //600 blood is human default, so 5 failures (below 122 blood is where humans die because reasons?)
|
||||
|
||||
//How much to heal per pump, negative numbers would HURT the player
|
||||
var/heal_brute = 0
|
||||
var/heal_burn = 0
|
||||
var/heal_oxy = 0
|
||||
|
||||
|
||||
/obj/item/organ/internal/heart/cursed/attack(mob/living/carbon/human/H, mob/living/carbon/human/user, obj/target)
|
||||
if(H == user && istype(H))
|
||||
if(H.species.flags & NO_BLOOD || H.species.exotic_blood)
|
||||
to_chat(H, "<span class = 'userdanger'>\The [src] is not compatible with your form!</span>")
|
||||
return
|
||||
playsound(user,'sound/effects/singlebeat.ogg', 40, 1)
|
||||
user.drop_item()
|
||||
insert(user)
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/organ/internal/heart/cursed/on_life()
|
||||
if(world.time > (last_pump + pump_delay))
|
||||
if(ishuman(owner) && owner.client) //While this entire item exists to make people suffer, they can't control disconnects.
|
||||
var/mob/living/carbon/human/H = owner
|
||||
H.vessel.remove_reagent("blood", blood_loss)
|
||||
to_chat(H, "<span class='userdanger'>You have to keep pumping your blood!</span>")
|
||||
if(H.client)
|
||||
H.client.color = "red" //bloody screen so real
|
||||
else
|
||||
last_pump = world.time //lets be extra fair *sigh*
|
||||
|
||||
/obj/item/organ/internal/heart/cursed/insert(mob/living/carbon/M, 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>")
|
||||
|
||||
//You are now brea- pumping blood manually
|
||||
/obj/item/organ/internal/heart/cursed/ui_action_click()
|
||||
if(world.time < (last_pump + (pump_delay-10))) //no spam
|
||||
to_chat(owner, "<span class='userdanger'>Too soon!</span>")
|
||||
return
|
||||
|
||||
last_pump = world.time
|
||||
playsound(owner, 'sound/effects/singlebeat.ogg', 40, 1)
|
||||
to_chat(owner, "<span class='notice'>Your heart beats.</span>")
|
||||
|
||||
var/mob/living/carbon/human/H = owner
|
||||
if(istype(H))
|
||||
H.vessel.add_reagent("blood", (blood_loss*0.5))//gain half the blood back from a failure
|
||||
if(owner.client)
|
||||
owner.client.color = ""
|
||||
|
||||
H.adjustBruteLoss(-heal_brute)
|
||||
H.adjustFireLoss(-heal_burn)
|
||||
H.adjustOxyLoss(-heal_oxy)
|
||||
|
||||
/obj/item/organ/internal/lungs
|
||||
name = "lungs"
|
||||
icon_state = "lungs"
|
||||
@@ -212,7 +276,7 @@
|
||||
|
||||
if(!owner)
|
||||
return
|
||||
if (germ_level > INFECTION_LEVEL_ONE)
|
||||
if(germ_level > INFECTION_LEVEL_ONE)
|
||||
if(prob(5))
|
||||
owner.emote("cough") //respitory tract infection
|
||||
|
||||
@@ -302,10 +366,10 @@
|
||||
if(!owner)
|
||||
return
|
||||
|
||||
if (germ_level > INFECTION_LEVEL_ONE)
|
||||
if(germ_level > INFECTION_LEVEL_ONE)
|
||||
if(prob(1))
|
||||
to_chat(owner, "<span class='warning'> Your skin itches.</span>")
|
||||
if (germ_level > INFECTION_LEVEL_TWO)
|
||||
if(germ_level > INFECTION_LEVEL_TWO)
|
||||
if(prob(1))
|
||||
spawn owner.vomit()
|
||||
|
||||
@@ -314,7 +378,7 @@
|
||||
//High toxins levels are dangerous
|
||||
if(owner.getToxLoss() >= 60 && !owner.reagents.has_reagent("charcoal"))
|
||||
//Healthy liver suffers on its own
|
||||
if (src.damage < min_broken_damage)
|
||||
if(src.damage < min_broken_damage)
|
||||
src.damage += 0.2 * PROCESS_ACCURACY
|
||||
//Damaged one shares the fun
|
||||
else
|
||||
@@ -323,7 +387,7 @@
|
||||
O.damage += 0.2 * PROCESS_ACCURACY
|
||||
|
||||
//Detox can heal small amounts of damage
|
||||
if (src.damage && src.damage < src.min_bruised_damage && owner.reagents.has_reagent("charcoal"))
|
||||
if(src.damage && src.damage < src.min_bruised_damage && owner.reagents.has_reagent("charcoal"))
|
||||
src.damage -= 0.2 * PROCESS_ACCURACY
|
||||
|
||||
if(src.damage < 0)
|
||||
@@ -476,13 +540,22 @@
|
||||
var/mob/living/carbon/human/H = owner
|
||||
if(isobj(H.shoes))
|
||||
var/thingy = H.shoes
|
||||
H.unEquip(H.shoes)
|
||||
walk_away(thingy,H,15,2)
|
||||
spawn(20)
|
||||
if(thingy)
|
||||
walk(thingy,0)
|
||||
if(H.unEquip(H.shoes))
|
||||
walk_away(thingy,H,15,2)
|
||||
spawn(20)
|
||||
if(thingy)
|
||||
walk(thingy,0)
|
||||
..()
|
||||
|
||||
/obj/item/organ/internal/honktumor/cursed
|
||||
|
||||
/obj/item/organ/internal/honktumor/cursed/remove(mob/living/carbon/M, special = 0, clean_remove = 0)
|
||||
..()
|
||||
if(!clean_remove)
|
||||
visible_message("<span class='warning'>[src] vanishes into dust, and a [M] emits a loud honk!</span>", "<span class='notice'>You hear a loud honk.</span>")
|
||||
insert(M) //You're not getting away that easily!
|
||||
else
|
||||
qdel(src)
|
||||
|
||||
/obj/item/organ/internal/beard
|
||||
name = "beard organ"
|
||||
@@ -493,7 +566,6 @@
|
||||
parent_organ = "head"
|
||||
slot = "hair_organ"
|
||||
|
||||
|
||||
/obj/item/organ/internal/beard/on_life()
|
||||
|
||||
if(!owner)
|
||||
@@ -516,4 +588,4 @@
|
||||
head_organ.r_facial = 216
|
||||
head_organ.g_facial = 192
|
||||
head_organ.b_facial = 120
|
||||
H.update_fhair()
|
||||
H.update_fhair()
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
amputation_point = "trunk"
|
||||
encased = null
|
||||
gendered_icon = 0
|
||||
species = "Diona"
|
||||
|
||||
/obj/item/organ/external/groin/diona
|
||||
name = "fork"
|
||||
@@ -32,6 +33,7 @@
|
||||
cannot_break = 1
|
||||
amputation_point = "lower trunk"
|
||||
gendered_icon = 0
|
||||
species = "Diona"
|
||||
|
||||
/obj/item/organ/external/arm/diona
|
||||
name = "left upper tendril"
|
||||
@@ -39,6 +41,7 @@
|
||||
min_broken_damage = 20
|
||||
cannot_break = 1
|
||||
amputation_point = "upper left trunk"
|
||||
species = "Diona"
|
||||
|
||||
/obj/item/organ/external/arm/right/diona
|
||||
name = "right upper tendril"
|
||||
@@ -46,6 +49,7 @@
|
||||
min_broken_damage = 20
|
||||
cannot_break = 1
|
||||
amputation_point = "upper right trunk"
|
||||
species = "Diona"
|
||||
|
||||
/obj/item/organ/external/leg/diona
|
||||
name = "left lower tendril"
|
||||
@@ -53,6 +57,7 @@
|
||||
min_broken_damage = 20
|
||||
cannot_break = 1
|
||||
amputation_point = "lower left fork"
|
||||
species = "Diona"
|
||||
|
||||
/obj/item/organ/external/leg/right/diona
|
||||
name = "right lower tendril"
|
||||
@@ -60,6 +65,7 @@
|
||||
min_broken_damage = 20
|
||||
cannot_break = 1
|
||||
amputation_point = "lower right fork"
|
||||
species = "Diona"
|
||||
|
||||
/obj/item/organ/external/foot/diona
|
||||
name = "left foot"
|
||||
@@ -67,6 +73,7 @@
|
||||
min_broken_damage = 10
|
||||
cannot_break = 1
|
||||
amputation_point = "branch"
|
||||
species = "Diona"
|
||||
|
||||
/obj/item/organ/external/foot/right/diona
|
||||
name = "right foot"
|
||||
@@ -74,16 +81,19 @@
|
||||
min_broken_damage = 10
|
||||
cannot_break = 1
|
||||
amputation_point = "branch"
|
||||
species = "Diona"
|
||||
|
||||
/obj/item/organ/external/hand/diona
|
||||
name = "left grasper"
|
||||
cannot_break = 1
|
||||
amputation_point = "branch"
|
||||
species = "Diona"
|
||||
|
||||
/obj/item/organ/external/hand/right/diona
|
||||
name = "right grasper"
|
||||
cannot_break = 1
|
||||
amputation_point = "branch"
|
||||
species = "Diona"
|
||||
|
||||
/obj/item/organ/external/head/diona
|
||||
max_damage = 50
|
||||
@@ -92,6 +102,7 @@
|
||||
encased = null
|
||||
amputation_point = "upper trunk"
|
||||
gendered_icon = 0
|
||||
species = "Diona"
|
||||
|
||||
//DIONA ORGANS.
|
||||
/* /obj/item/organ/external/diona/removed()
|
||||
@@ -113,6 +124,7 @@
|
||||
origin_tech = "biotech=3"
|
||||
parent_organ = "chest"
|
||||
slot = "heart"
|
||||
species = "Diona"
|
||||
|
||||
/obj/item/organ/internal/brain/diona
|
||||
name = "gas bladder"
|
||||
@@ -122,6 +134,7 @@
|
||||
organ_tag = "brain" // Turns into a nymph instantly, no transplanting possible.
|
||||
origin_tech = "biotech=3"
|
||||
slot = "brain"
|
||||
species = "Diona"
|
||||
|
||||
/obj/item/organ/internal/kidneys/diona
|
||||
name = "polyp segment"
|
||||
@@ -131,6 +144,7 @@
|
||||
origin_tech = "biotech=3"
|
||||
parent_organ = "groin"
|
||||
slot = "kidneys"
|
||||
species = "Diona"
|
||||
|
||||
/obj/item/organ/internal/appendix/diona
|
||||
name = "anchoring ligament"
|
||||
@@ -140,6 +154,7 @@
|
||||
origin_tech = "biotech=3"
|
||||
parent_organ = "groin"
|
||||
slot = "appendix"
|
||||
species = "Diona"
|
||||
|
||||
/obj/item/organ/internal/diona_receptor
|
||||
name = "receptor node"
|
||||
@@ -149,7 +164,7 @@
|
||||
origin_tech = "biotech=3"
|
||||
parent_organ = "head"
|
||||
slot = "eyes"
|
||||
|
||||
species = "Diona"
|
||||
|
||||
/obj/item/organ/internal/diona_receptor/surgeryize()
|
||||
if(!owner)
|
||||
@@ -170,6 +185,7 @@
|
||||
icon_state = "claw"
|
||||
slot = "liver"
|
||||
alcohol_intensity = 0.5
|
||||
species = "Diona"
|
||||
|
||||
//TODO:Make absorb light on insert.
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
icon = 'icons/obj/surgery_drask.dmi'
|
||||
icon_state = "innards"
|
||||
desc = "A greenish, slightly translucent organ. It is extremely cold."
|
||||
species = "Drask"
|
||||
|
||||
/obj/item/organ/internal/heart/drask
|
||||
name = "drask heart"
|
||||
@@ -13,6 +14,7 @@
|
||||
organ_tag = "heart"
|
||||
parent_organ = "head"
|
||||
slot = "heart"
|
||||
species = "Drask"
|
||||
|
||||
/obj/item/organ/internal/lungs/drask
|
||||
name = "lungs"
|
||||
@@ -22,6 +24,7 @@
|
||||
organ_tag = "lungs"
|
||||
parent_organ = "chest"
|
||||
slot = "lungs"
|
||||
species = "Drask"
|
||||
|
||||
/obj/item/organ/internal/liver/drask
|
||||
name = "metabolic strainer"
|
||||
@@ -32,6 +35,7 @@
|
||||
parent_organ = "groin"
|
||||
slot = "kidneys"
|
||||
alcohol_intensity = 0.8
|
||||
species = "Drask"
|
||||
|
||||
/obj/item/organ/internal/brain/drask
|
||||
name = "brain"
|
||||
@@ -41,6 +45,7 @@
|
||||
slot = "brain"
|
||||
mmi_icon = 'icons/obj/surgery_drask.dmi'
|
||||
mmi_icon_state = "mmi_full"
|
||||
species = "Drask"
|
||||
|
||||
/obj/item/organ/internal/eyes/drask
|
||||
name = "eyes"
|
||||
@@ -51,3 +56,4 @@
|
||||
parent_organ = "head"
|
||||
slot = "eyes"
|
||||
desc = "Drask eyes. They look even stranger disembodied"
|
||||
species = "Drask"
|
||||
|
||||
@@ -1,2 +1,16 @@
|
||||
/obj/item/organ/internal/liver/grey
|
||||
alcohol_intensity = 1.6
|
||||
species = "Grey"
|
||||
|
||||
/obj/item/organ/internal/brain/grey
|
||||
icon_state = "brain-x"
|
||||
mmi_icon_state = "mmi_alien"
|
||||
species = "Grey"
|
||||
|
||||
/obj/item/organ/internal/brain/grey/insert(var/mob/living/carbon/M, var/special = 0)
|
||||
..()
|
||||
M.add_language("Psionic Communication")
|
||||
|
||||
/obj/item/organ/internal/brain/grey/remove(var/mob/living/carbon/M, var/special = 0)
|
||||
..()
|
||||
M.remove_language("Psionic Communication")
|
||||
|
||||
@@ -1,2 +1,3 @@
|
||||
/obj/item/organ/internal/liver/kidan
|
||||
alcohol_intensity = 0.5
|
||||
species = "Kidan"
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
min_broken_damage = 30
|
||||
encased = null
|
||||
status = ORGAN_ROBOT
|
||||
species = "Machine"
|
||||
|
||||
/obj/item/organ/external/head/ipc/New()
|
||||
robotize("Morpheus Cyberkinetics")
|
||||
@@ -14,6 +15,7 @@
|
||||
/obj/item/organ/external/chest/ipc
|
||||
encased = null
|
||||
status = ORGAN_ROBOT
|
||||
species = "Machine"
|
||||
|
||||
/obj/item/organ/external/chest/ipc/New()
|
||||
robotize("Morpheus Cyberkinetics")
|
||||
@@ -22,6 +24,7 @@
|
||||
/obj/item/organ/external/groin/ipc
|
||||
encased = null
|
||||
status = ORGAN_ROBOT
|
||||
species = "Machine"
|
||||
|
||||
/obj/item/organ/external/groin/ipc/New()
|
||||
robotize("Morpheus Cyberkinetics")
|
||||
@@ -30,6 +33,7 @@
|
||||
/obj/item/organ/external/arm/ipc
|
||||
encased = null
|
||||
status = ORGAN_ROBOT
|
||||
species = "Machine"
|
||||
|
||||
/obj/item/organ/external/arm/ipc/New()
|
||||
robotize("Morpheus Cyberkinetics")
|
||||
@@ -38,6 +42,7 @@
|
||||
/obj/item/organ/external/arm/right/ipc
|
||||
encased = null
|
||||
status = ORGAN_ROBOT
|
||||
species = "Machine"
|
||||
|
||||
/obj/item/organ/external/arm/right/ipc/New()
|
||||
robotize("Morpheus Cyberkinetics")
|
||||
@@ -45,6 +50,7 @@
|
||||
/obj/item/organ/external/leg/ipc
|
||||
encased = null
|
||||
status = ORGAN_ROBOT
|
||||
species = "Machine"
|
||||
|
||||
/obj/item/organ/external/leg/ipc/New()
|
||||
robotize("Morpheus Cyberkinetics")
|
||||
@@ -53,7 +59,7 @@
|
||||
/obj/item/organ/external/leg/right/ipc
|
||||
encased = null
|
||||
status = ORGAN_ROBOT
|
||||
|
||||
species = "Machine"
|
||||
|
||||
/obj/item/organ/external/leg/right/ipc/New()
|
||||
robotize("Morpheus Cyberkinetics")
|
||||
@@ -62,7 +68,7 @@
|
||||
/obj/item/organ/external/foot/ipc
|
||||
encased = null
|
||||
status = ORGAN_ROBOT
|
||||
|
||||
species = "Machine"
|
||||
|
||||
/obj/item/organ/external/foot/ipc/New()
|
||||
robotize("Morpheus Cyberkinetics")
|
||||
@@ -71,7 +77,7 @@
|
||||
/obj/item/organ/external/foot/right/ipc
|
||||
encased = null
|
||||
status = ORGAN_ROBOT
|
||||
|
||||
species = "Machine"
|
||||
|
||||
/obj/item/organ/external/foot/right/ipc/New()
|
||||
robotize("Morpheus Cyberkinetics")
|
||||
@@ -80,6 +86,7 @@
|
||||
/obj/item/organ/external/hand/ipc
|
||||
encased = null
|
||||
status = ORGAN_ROBOT
|
||||
species = "Machine"
|
||||
|
||||
/obj/item/organ/external/hand/ipc/New()
|
||||
robotize("Morpheus Cyberkinetics")
|
||||
@@ -88,6 +95,7 @@
|
||||
/obj/item/organ/external/hand/right/ipc
|
||||
encased = null
|
||||
status = ORGAN_ROBOT
|
||||
species = "Machine"
|
||||
|
||||
/obj/item/organ/external/hand/right/ipc/New()
|
||||
robotize("Morpheus Cyberkinetics")
|
||||
@@ -103,6 +111,7 @@
|
||||
slot = "heart"
|
||||
vital = 1
|
||||
status = ORGAN_ROBOT
|
||||
species = "Machine"
|
||||
|
||||
/obj/item/organ/internal/cell/New()
|
||||
robotize()
|
||||
@@ -123,6 +132,7 @@
|
||||
icon_state = "camera"
|
||||
slot = "eyes"
|
||||
status = ORGAN_ROBOT
|
||||
species = "Machine"
|
||||
// dead_icon = "camera_broken"
|
||||
|
||||
/obj/item/organ/internal/optical_sensor/New()
|
||||
@@ -154,6 +164,7 @@
|
||||
max_damage = 200
|
||||
slot = "brain"
|
||||
status = ORGAN_ROBOT
|
||||
species = "Machine"
|
||||
var/obj/item/device/mmi/stored_mmi
|
||||
|
||||
/obj/item/organ/internal/brain/mmi_holder/proc/update_from_mmi()
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
name = "nucleation organ"
|
||||
icon = 'icons/obj/surgery.dmi'
|
||||
desc = "A crystalized human organ. /red It has a strangely iridescent glow."
|
||||
species = "Nucleation"
|
||||
|
||||
/obj/item/organ/internal/nucleation/resonant_crystal
|
||||
name = "resonant crystal"
|
||||
@@ -10,6 +11,7 @@
|
||||
organ_tag = "resonant crystal"
|
||||
parent_organ = "head"
|
||||
slot = "res_crystal"
|
||||
species = "Nucleation"
|
||||
|
||||
/obj/item/organ/internal/nucleation/strange_crystal
|
||||
name = "strange crystal"
|
||||
@@ -17,7 +19,7 @@
|
||||
organ_tag = "strange crystal"
|
||||
parent_organ = "chest"
|
||||
slot = "heart"
|
||||
|
||||
species = "Nucleation"
|
||||
|
||||
/obj/item/organ/internal/eyes/luminescent_crystal
|
||||
name = "luminescent eyes"
|
||||
@@ -26,6 +28,7 @@
|
||||
light_color = "#1C1C00"
|
||||
parent_organ = "head"
|
||||
slot = "eyes"
|
||||
species = "Nucleation"
|
||||
|
||||
/obj/item/organ/internal/eyes/luminescent_crystal/New()
|
||||
set_light(2)
|
||||
@@ -35,3 +38,4 @@
|
||||
icon_state = "crystal-brain"
|
||||
organ_tag = "crystalized brain"
|
||||
slot = "brain"
|
||||
species = "Nucleation"
|
||||
|
||||
@@ -1,2 +1,3 @@
|
||||
/obj/item/organ/internal/liver/skrell
|
||||
alcohol_intensity = 4
|
||||
species = "Skrell"
|
||||
|
||||
@@ -187,9 +187,9 @@
|
||||
|
||||
/obj/item/organ/external/head/take_damage(brute, burn, sharp, edge, used_weapon = null, list/forbidden_limbs = list())
|
||||
..(brute, burn, sharp, edge, used_weapon, forbidden_limbs)
|
||||
if (!disfigured)
|
||||
if (brute_dam > 40)
|
||||
if (prob(50))
|
||||
if(!disfigured)
|
||||
if(brute_dam > 40)
|
||||
if(prob(50))
|
||||
disfigure("brute")
|
||||
if (burn_dam > 40)
|
||||
if(burn_dam > 40)
|
||||
disfigure("burn")
|
||||
|
||||
@@ -1,2 +1,3 @@
|
||||
/obj/item/organ/internal/liver/tajaran
|
||||
alcohol_intensity = 1.4
|
||||
species = "Tajaran"
|
||||
|
||||
@@ -1,2 +1,3 @@
|
||||
/obj/item/organ/internal/liver/unathi
|
||||
alcohol_intensity = 0.8
|
||||
species = "Unathi"
|
||||
|
||||
@@ -1,2 +1,3 @@
|
||||
/obj/item/organ/internal/liver/vox
|
||||
alcohol_intensity = 1.6
|
||||
species = "Vox"
|
||||
|
||||
@@ -1,2 +1,3 @@
|
||||
/obj/item/organ/internal/liver/vulpkanin
|
||||
alcohol_intensity = 1.4
|
||||
species = "Vulpkanin"
|
||||
|
||||
@@ -5,4 +5,5 @@
|
||||
icon = 'icons/mob/human_races/r_wryn.dmi'
|
||||
icon_state = "antennae"
|
||||
parent_organ = "head"
|
||||
slot = "hivenode"
|
||||
slot = "hivenode"
|
||||
species = "Wryn"
|
||||
|
||||
@@ -97,15 +97,15 @@
|
||||
|
||||
// Checks whether other other can be merged into src.
|
||||
proc/can_merge(var/datum/wound/other)
|
||||
if (other.type != src.type) return 0
|
||||
if (other.current_stage != src.current_stage) return 0
|
||||
if (other.damage_type != src.damage_type) return 0
|
||||
if (!(other.can_autoheal()) != !(src.can_autoheal())) return 0
|
||||
if (!(other.bandaged) != !(src.bandaged)) return 0
|
||||
if (!(other.clamped) != !(src.clamped)) return 0
|
||||
if (!(other.salved) != !(src.salved)) return 0
|
||||
if (!(other.disinfected) != !(src.disinfected)) return 0
|
||||
//if (other.germ_level != src.germ_level) return 0
|
||||
if(other.type != src.type) return 0
|
||||
if(other.current_stage != src.current_stage) return 0
|
||||
if(other.damage_type != src.damage_type) return 0
|
||||
if(!(other.can_autoheal()) != !(src.can_autoheal())) return 0
|
||||
if(!(other.bandaged) != !(src.bandaged)) return 0
|
||||
if(!(other.clamped) != !(src.clamped)) return 0
|
||||
if(!(other.salved) != !(src.salved)) return 0
|
||||
if(!(other.disinfected) != !(src.disinfected)) return 0
|
||||
//if(other.germ_level != src.germ_level) return 0
|
||||
return 1
|
||||
|
||||
proc/merge_wound(var/datum/wound/other)
|
||||
@@ -118,24 +118,24 @@
|
||||
// checks if wound is considered open for external infections
|
||||
// untreated cuts (and bleeding bruises) and burns are possibly infectable, chance higher if wound is bigger
|
||||
proc/infection_check()
|
||||
if (damage < 10) //small cuts, tiny bruises, and moderate burns shouldn't be infectable.
|
||||
if(damage < 10) //small cuts, tiny bruises, and moderate burns shouldn't be infectable.
|
||||
return 0
|
||||
if (is_treated() && damage < 25) //anything less than a flesh wound (or equivalent) isn't infectable if treated properly
|
||||
if(is_treated() && damage < 25) //anything less than a flesh wound (or equivalent) isn't infectable if treated properly
|
||||
return 0
|
||||
if (disinfected)
|
||||
if(disinfected)
|
||||
germ_level = 0 //reset this, just in case
|
||||
return 0
|
||||
|
||||
if (damage_type == BRUISE && !bleeding()) //bruises only infectable if bleeding
|
||||
if(damage_type == BRUISE && !bleeding()) //bruises only infectable if bleeding
|
||||
return 0
|
||||
|
||||
var/dam_coef = round(damage/10)
|
||||
switch (damage_type)
|
||||
if (BRUISE)
|
||||
switch(damage_type)
|
||||
if(BRUISE)
|
||||
return prob(dam_coef*5)
|
||||
if (BURN)
|
||||
if(BURN)
|
||||
return prob(dam_coef*10)
|
||||
if (CUT)
|
||||
if(CUT)
|
||||
return prob(dam_coef*20)
|
||||
|
||||
return 0
|
||||
@@ -174,32 +174,32 @@
|
||||
// returns whether this wound can absorb the given amount of damage.
|
||||
// this will prevent large amounts of damage being trapped in less severe wound types
|
||||
proc/can_worsen(damage_type, damage)
|
||||
if (src.damage_type != damage_type)
|
||||
if(src.damage_type != damage_type)
|
||||
return 0 //incompatible damage types
|
||||
|
||||
if (src.amount > 1)
|
||||
if(src.amount > 1)
|
||||
return 0
|
||||
|
||||
//with 1.5*, a shallow cut will be able to carry at most 30 damage,
|
||||
//37.5 for a deep cut
|
||||
//52.5 for a flesh wound, etc.
|
||||
var/max_wound_damage = 1.5*src.damage_list[1]
|
||||
if (src.damage + damage > max_wound_damage)
|
||||
if(src.damage + damage > max_wound_damage)
|
||||
return 0
|
||||
|
||||
return 1
|
||||
|
||||
proc/bleeding()
|
||||
if (src.internal)
|
||||
if(src.internal)
|
||||
return 0 // internal wounds don't bleed in the sense of this function
|
||||
|
||||
if (current_stage > max_bleeding_stage)
|
||||
if(current_stage > max_bleeding_stage)
|
||||
return 0
|
||||
|
||||
if (bandaged||clamped)
|
||||
if(bandaged||clamped)
|
||||
return 0
|
||||
|
||||
if (wound_damage() <= 30 && bleed_timer <= 0)
|
||||
if(wound_damage() <= 30 && bleed_timer <= 0)
|
||||
return 0 //Bleed timer has run out. Wounds with more than 30 damage don't stop bleeding on their own.
|
||||
|
||||
return (damage_type == BRUISE && wound_damage() >= 20 || damage_type == CUT && wound_damage() >= 5)
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
|
||||
/datum/surgery_step/internal/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
|
||||
|
||||
if (!hasorgans(target))
|
||||
if(!hasorgans(target))
|
||||
return 0
|
||||
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
@@ -156,11 +156,11 @@
|
||||
else if(implement_type in implements_mend)
|
||||
current_type = "mend"
|
||||
var/tool_name = "\the [tool]"
|
||||
if (istype(tool, /obj/item/stack/medical/advanced/bruise_pack))
|
||||
if(istype(tool, /obj/item/stack/medical/advanced/bruise_pack))
|
||||
tool_name = "regenerative membrane"
|
||||
else if (istype(tool, /obj/item/stack/medical/bruise_pack))
|
||||
else if(istype(tool, /obj/item/stack/medical/bruise_pack))
|
||||
tool_name = "the bandaid"
|
||||
else if (istype(tool, /obj/item/stack/nanopaste))
|
||||
else if(istype(tool, /obj/item/stack/nanopaste))
|
||||
tool_name = "\the [tool]" //what else do you call nanopaste medically?
|
||||
|
||||
if(!hasorgans(target))
|
||||
@@ -188,14 +188,14 @@
|
||||
/datum/surgery_step/internal/manipulate_organs/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
|
||||
if(current_type == "mend")
|
||||
var/tool_name = "\the [tool]"
|
||||
if (istype(tool, /obj/item/stack/medical/advanced/bruise_pack))
|
||||
if(istype(tool, /obj/item/stack/medical/advanced/bruise_pack))
|
||||
tool_name = "regenerative membrane"
|
||||
if (istype(tool, /obj/item/stack/medical/bruise_pack))
|
||||
if(istype(tool, /obj/item/stack/medical/bruise_pack))
|
||||
tool_name = "the bandaid"
|
||||
if (istype(tool, /obj/item/stack/nanopaste))
|
||||
if(istype(tool, /obj/item/stack/nanopaste))
|
||||
tool_name = "\the [tool]" //what else do you call nanopaste medically?
|
||||
|
||||
if (!hasorgans(target))
|
||||
if(!hasorgans(target))
|
||||
return
|
||||
for(var/obj/item/organ/internal/I in affected.internal_organs)
|
||||
if(I)
|
||||
@@ -259,17 +259,17 @@
|
||||
|
||||
/datum/surgery_step/internal/manipulate_organs/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
|
||||
if(current_type == "mend")
|
||||
if (!hasorgans(target))
|
||||
if(!hasorgans(target))
|
||||
return
|
||||
|
||||
user.visible_message("<span class='warning'> [user]'s hand slips, getting mess and tearing the inside of [target]'s [affected.name] with \the [tool]!</span>", \
|
||||
"<span class='warning'> Your hand slips, getting mess and tearing the inside of [target]'s [affected.name] with \the [tool]!</span>")
|
||||
var/dam_amt = 2
|
||||
|
||||
if (istype(tool, /obj/item/stack/medical/advanced/bruise_pack))
|
||||
if(istype(tool, /obj/item/stack/medical/advanced/bruise_pack))
|
||||
target.adjustToxLoss(5)
|
||||
|
||||
else if (istype(tool, /obj/item/stack/medical/bruise_pack) || istype(tool, /obj/item/stack/nanopaste))
|
||||
else if(istype(tool, /obj/item/stack/medical/bruise_pack) || istype(tool, /obj/item/stack/nanopaste))
|
||||
dam_amt = 5
|
||||
target.adjustToxLoss(10)
|
||||
affected.createwound(CUT, 5)
|
||||
@@ -400,10 +400,10 @@
|
||||
/datum/surgery_step/retract_carapace/begin_step(mob/living/user, mob/living/carbon/target, target_zone, obj/item/tool,datum/surgery/surgery)
|
||||
var/msg = "[user] starts to pry open the incision on [target]'s [target_zone] with \the [tool]."
|
||||
var/self_msg = "You start to pry open the incision on [target]'s [target_zone] with \the [tool]."
|
||||
if (target_zone == "chest")
|
||||
if(target_zone == "chest")
|
||||
msg = "[user] starts to separate the ribcage and rearrange the organs in [target]'s torso with \the [tool]."
|
||||
self_msg = "You start to separate the ribcage and rearrange the organs in [target]'s torso with \the [tool]."
|
||||
if (target_zone == "groin")
|
||||
if(target_zone == "groin")
|
||||
msg = "[user] starts to pry open the incision and rearrange the organs in [target]'s lower abdomen with \the [tool]."
|
||||
self_msg = "You start to pry open the incision and rearrange the organs in [target]'s lower abdomen with \the [tool]."
|
||||
user.visible_message(msg, self_msg)
|
||||
@@ -412,10 +412,10 @@
|
||||
/datum/surgery_step/retract_carapace/end_step(mob/living/user, mob/living/carbon/target, target_zone, obj/item/tool,datum/surgery/surgery)
|
||||
var/msg = "<span class='notice'> [user] keeps the incision open on [target]'s [target_zone] with \the [tool]</span>."
|
||||
var/self_msg = "<span class='notice'> You keep the incision open on [target]'s [target_zone] with \the [tool].</span>"
|
||||
if (target_zone == "chest")
|
||||
if(target_zone == "chest")
|
||||
msg = "<span class='notice'> [user] keeps the ribcage open on [target]'s torso with \the [tool].</span>"
|
||||
self_msg = "<span class='notice'> You keep the ribcage open on [target]'s torso with \the [tool].</span>"
|
||||
if (target_zone == "groin")
|
||||
if(target_zone == "groin")
|
||||
msg = "<span class='notice'> [user] keeps the incision open on [target]'s lower abdomen with \the [tool].</span>"
|
||||
self_msg = "<span class='notice'> You keep the incision open on [target]'s lower abdomen with \the [tool].</span>"
|
||||
user.visible_message(msg, self_msg)
|
||||
@@ -424,10 +424,10 @@
|
||||
/datum/surgery_step/generic/retract_carapace/fail_step(mob/living/user, mob/living/carbon/target, target_zone, obj/item/tool,datum/surgery/surgery)
|
||||
var/msg = "<span class='warning'> [user]'s hand slips, tearing the edges of incision on [target]'s [target_zone] with \the [tool]!</span>"
|
||||
var/self_msg = "<span class='warning'> Your hand slips, tearing the edges of incision on [target]'s [target_zone] with \the [tool]!</span>"
|
||||
if (target_zone == "chest")
|
||||
if(target_zone == "chest")
|
||||
msg = "<span class='warning'> [user]'s hand slips, damaging several organs [target]'s torso with \the [tool]!</span>"
|
||||
self_msg = "<span class='warning'> Your hand slips, damaging several organs [target]'s torso with \the [tool]!</span>"
|
||||
if (target_zone == "groin")
|
||||
if(target_zone == "groin")
|
||||
msg = "<span class='warning'> [user]'s hand slips, damaging several organs [target]'s lower abdomen with \the [tool]</span>"
|
||||
self_msg = "<span class='warning'> Your hand slips, damaging several organs [target]'s lower abdomen with \the [tool]!</span>"
|
||||
user.visible_message(msg, self_msg)
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
for(var/datum/wound/W in affected.wounds) if(W.internal)
|
||||
affected.wounds -= W
|
||||
affected.update_damages()
|
||||
if (ishuman(user) && prob(40))
|
||||
if(ishuman(user) && prob(40))
|
||||
var/mob/living/carbon/human/U = user
|
||||
U.bloody_hands(target, 0)
|
||||
|
||||
@@ -97,7 +97,7 @@
|
||||
if(!hasorgans(target))
|
||||
return 0
|
||||
|
||||
if (target_zone == "mouth" || target_zone == "eyes")
|
||||
if(target_zone == "mouth" || target_zone == "eyes")
|
||||
return 0
|
||||
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
@@ -143,7 +143,7 @@
|
||||
time = 24
|
||||
|
||||
/datum/surgery_step/fix_dead_tissue/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
|
||||
if (!istype(tool, /obj/item/weapon/reagent_containers))
|
||||
if(!istype(tool, /obj/item/weapon/reagent_containers))
|
||||
return 0
|
||||
|
||||
var/obj/item/weapon/reagent_containers/container = tool
|
||||
@@ -153,7 +153,7 @@
|
||||
if(!hasorgans(target))
|
||||
return 0
|
||||
|
||||
if (target_zone == "mouth" || target_zone == "eyes")
|
||||
if(target_zone == "mouth" || target_zone == "eyes")
|
||||
return 0
|
||||
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
@@ -169,13 +169,13 @@
|
||||
/datum/surgery_step/fix_dead_tissue/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
|
||||
if (!istype(tool, /obj/item/weapon/reagent_containers))
|
||||
if(!istype(tool, /obj/item/weapon/reagent_containers))
|
||||
return
|
||||
|
||||
var/obj/item/weapon/reagent_containers/container = tool
|
||||
|
||||
var/trans = container.reagents.trans_to(target, container.amount_per_transfer_from_this)
|
||||
if (trans > 0)
|
||||
if(trans > 0)
|
||||
container.reagents.reaction(target, INGEST) //technically it's contact, but the reagents are being applied to internal tissue
|
||||
|
||||
if(container.reagents.has_reagent("mitocholide"))
|
||||
@@ -189,7 +189,7 @@
|
||||
/datum/surgery_step/fix_dead_tissue/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
|
||||
if (!istype(tool, /obj/item/weapon/reagent_containers))
|
||||
if(!istype(tool, /obj/item/weapon/reagent_containers))
|
||||
return
|
||||
|
||||
var/obj/item/weapon/reagent_containers/container = tool
|
||||
@@ -232,7 +232,7 @@
|
||||
time = 30
|
||||
|
||||
/datum/surgery_step/internal/dethrall/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
|
||||
if (!hasorgans(target))
|
||||
if(!hasorgans(target))
|
||||
return
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
return ..() && affected && is_thrall(target) && affected.open_enough_for_surgery() && target_zone == target.named_organ_parent("brain")
|
||||
|
||||
@@ -48,26 +48,26 @@
|
||||
can_infect = 0
|
||||
|
||||
/datum/surgery_step/robotics/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
|
||||
if (isslime(target))
|
||||
if(isslime(target))
|
||||
return 0
|
||||
if (target_zone == "eyes") //there are specific steps for eye surgery
|
||||
if(target_zone == "eyes") //there are specific steps for eye surgery
|
||||
return 0
|
||||
if (!hasorgans(target))
|
||||
if(!hasorgans(target))
|
||||
return 0
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
if (affected == null)
|
||||
if(affected == null)
|
||||
return 0
|
||||
if (affected.status & ORGAN_DESTROYED)
|
||||
if(affected.status & ORGAN_DESTROYED)
|
||||
return 0
|
||||
return 1
|
||||
|
||||
/datum/surgery_step/robotics/external
|
||||
|
||||
/datum/surgery_step/robotics/external/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
|
||||
if (!..())
|
||||
if(!..())
|
||||
return 0
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
if (!(affected.status & ORGAN_ROBOT))
|
||||
if(!(affected.status & ORGAN_ROBOT))
|
||||
return 0
|
||||
return 1
|
||||
|
||||
@@ -373,7 +373,7 @@
|
||||
|
||||
else if(implement_type in implements_mend)
|
||||
current_type = "mend"
|
||||
if (!hasorgans(target))
|
||||
if(!hasorgans(target))
|
||||
return
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
|
||||
@@ -396,7 +396,7 @@
|
||||
/datum/surgery_step/robotics/manipulate_robotic_organs/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
|
||||
if(current_type == "mend")
|
||||
|
||||
if (!hasorgans(target))
|
||||
if(!hasorgans(target))
|
||||
return
|
||||
for(var/obj/item/organ/internal/I in affected.internal_organs)
|
||||
if(I && I.damage > 0)
|
||||
@@ -418,13 +418,13 @@
|
||||
|
||||
if(I && istype(I))
|
||||
I.status &= ~ORGAN_CUT_AWAY
|
||||
else if (current_type == "install")
|
||||
else if(current_type == "install")
|
||||
user.visible_message("<span class='notice'> [user] has installed \the [tool] into [target]'s [affected.name].</span>", \
|
||||
"<span class='notice'> You have installed \the [tool] into [target]'s [affected.name].</span>")
|
||||
|
||||
var/obj/item/device/mmi/M = tool
|
||||
var/obj/item/organ/internal/brain/mmi_holder/holder = new()
|
||||
if (istype(M, /obj/item/device/mmi/posibrain))
|
||||
if(istype(M, /obj/item/device/mmi/posibrain))
|
||||
holder.robotize()
|
||||
|
||||
holder.insert(target)
|
||||
@@ -461,7 +461,7 @@
|
||||
/datum/surgery_step/robotics/manipulate_robotic_organs/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
|
||||
|
||||
if(current_type == "mend")
|
||||
if (!hasorgans(target))
|
||||
if(!hasorgans(target))
|
||||
return
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
|
||||
@@ -483,7 +483,7 @@
|
||||
user.visible_message("<span class='warning'> [user]'s hand slips, disconnecting \the [tool].</span>", \
|
||||
"<span class='warning'> Your hand slips, disconnecting \the [tool].</span>")
|
||||
|
||||
else if (current_type == "install")
|
||||
else if(current_type == "install")
|
||||
user.visible_message("<span class='warning'> [user]'s hand slips!</span>.", \
|
||||
"<span class='warning'> Your hand slips!</span>")
|
||||
else if(current_type == "finish")
|
||||
@@ -549,7 +549,7 @@
|
||||
|
||||
var/obj/item/device/mmi/M = tool
|
||||
var/obj/item/organ/internal/brain/mmi_holder/holder = new()
|
||||
if (istype(M, /obj/item/device/mmi/posibrain))
|
||||
if(istype(M, /obj/item/device/mmi/posibrain))
|
||||
holder.robotize()
|
||||
|
||||
holder.insert(target)
|
||||
|
||||
@@ -130,8 +130,8 @@
|
||||
|
||||
//returns how well tool is suited for this step
|
||||
/datum/surgery_step/proc/tool_quality(obj/item/tool)
|
||||
for (var/T in allowed_tools)
|
||||
if (istype(tool,T))
|
||||
for(var/T in allowed_tools)
|
||||
if(istype(tool,T))
|
||||
return allowed_tools[T]
|
||||
return 0
|
||||
|
||||
@@ -160,13 +160,13 @@
|
||||
/datum/surgery_step/proc/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
|
||||
if(ishuman(target))
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
if (can_infect && affected)
|
||||
if(can_infect && affected)
|
||||
spread_germs_to_organ(affected, user)
|
||||
if (ishuman(user) && !(istype(target,/mob/living/carbon/alien)) && prob(60))
|
||||
if(ishuman(user) && !(istype(target,/mob/living/carbon/alien)) && prob(60))
|
||||
var/mob/living/carbon/human/H = user
|
||||
if (blood_level)
|
||||
if(blood_level)
|
||||
H.bloody_hands(target,0)
|
||||
if (blood_level > 1)
|
||||
if(blood_level > 1)
|
||||
H.bloody_body(target,0)
|
||||
return
|
||||
|
||||
@@ -192,7 +192,7 @@
|
||||
/proc/sort_surgeries()
|
||||
var/gap = surgery_steps.len
|
||||
var/swapped = 1
|
||||
while (gap > 1 || swapped)
|
||||
while(gap > 1 || swapped)
|
||||
swapped = 0
|
||||
if(gap > 1)
|
||||
gap = round(gap / 1.247330950103979)
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
icon_state = "retractor"
|
||||
materials = list(MAT_METAL=6000, MAT_GLASS=3000)
|
||||
flags = CONDUCT
|
||||
w_class = 2.0
|
||||
w_class = 2
|
||||
origin_tech = "materials=1;biotech=1"
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
icon_state = "hemostat"
|
||||
materials = list(MAT_METAL=5000, MAT_GLASS=2500)
|
||||
flags = CONDUCT
|
||||
w_class = 1.0
|
||||
w_class = 1
|
||||
origin_tech = "materials=1;biotech=1"
|
||||
attack_verb = list("attacked", "pinched")
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
icon_state = "cautery"
|
||||
materials = list(MAT_METAL=2500, MAT_GLASS=750)
|
||||
flags = CONDUCT
|
||||
w_class = 1.0
|
||||
w_class = 1
|
||||
origin_tech = "materials=1;biotech=1"
|
||||
attack_verb = list("burnt")
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
force = 15.0
|
||||
sharp = 1
|
||||
edge = 1
|
||||
w_class = 3.0
|
||||
w_class = 3
|
||||
origin_tech = "materials=1;biotech=1"
|
||||
attack_verb = list("drilled")
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
force = 10.0
|
||||
sharp = 1
|
||||
edge = 1
|
||||
w_class = 1.0
|
||||
w_class = 1
|
||||
throwforce = 5.0
|
||||
throw_speed = 3
|
||||
throw_range = 5
|
||||
@@ -124,7 +124,7 @@
|
||||
force = 15.0
|
||||
sharp = 1
|
||||
edge = 1
|
||||
w_class = 3.0
|
||||
w_class = 3
|
||||
throwforce = 9.0
|
||||
throw_speed = 3
|
||||
throw_range = 5
|
||||
@@ -138,7 +138,7 @@
|
||||
icon = 'icons/obj/surgery.dmi'
|
||||
icon_state = "bone-gel"
|
||||
force = 0
|
||||
w_class = 2.0
|
||||
w_class = 2
|
||||
throwforce = 1.0
|
||||
origin_tech = "materials=1;biotech=1"
|
||||
|
||||
@@ -149,7 +149,7 @@
|
||||
force = 0
|
||||
throwforce = 1.0
|
||||
origin_tech = "materials=1;biotech=1"
|
||||
w_class = 2.0
|
||||
w_class = 2
|
||||
|
||||
/obj/item/weapon/bonesetter
|
||||
name = "bone setter"
|
||||
@@ -159,7 +159,7 @@
|
||||
throwforce = 9.0
|
||||
throw_speed = 3
|
||||
throw_range = 5
|
||||
w_class = 2.0
|
||||
w_class = 2
|
||||
attack_verb = list("attacked", "hit", "bludgeoned")
|
||||
origin_tech = "materials=1;biotech=1"
|
||||
|
||||
@@ -168,6 +168,6 @@
|
||||
desc = "Nanotrasen brand surgical drapes provide optimal safety and infection control."
|
||||
icon = 'icons/obj/surgery.dmi'
|
||||
icon_state = "surgical_drapes"
|
||||
w_class = 1.0
|
||||
w_class = 1
|
||||
origin_tech = "biotech=1"
|
||||
attack_verb = list("slapped")
|
||||
|
||||
Reference in New Issue
Block a user