mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-01-24 00:02:06 +00:00
Fixes #1790 Fixes #1791 Fixes a number of issues with robot sprites, chem master machine, and surgery steps The issue with borg sprites was caused by duplicate calls to ..() Ive standardised robot module parent calls to the top of the function Fixed the chemmaster not depositing pills in bottles properly. I added a new add_to_storage proc to storage.dm which is just a simple, safe means of putting stuff in stuff. it handles the checking. Fixed some issues with surgery. A few surgery steps had incorrect "open" var ranges defined which was causing organ repair surgery to be interfered with Also removed screwdriver from the list of bone mending tools, and added duct tape instead as the ghetto alternative. And allowed energyswords + chainswords to be used for cutting open ribs. theyre already useable for amputation Fixed an incorrect return var for surgery that was making surgeons able to attack their patients on help intent. Shouldnt happen anymore And also fixed the experimental welder being un-makeable at the protolathe.
222 lines
7.7 KiB
Plaintext
222 lines
7.7 KiB
Plaintext
//Procedures in this file: Generic ribcage opening steps, Removing alien embryo, Fixing internal organs.
|
|
//////////////////////////////////////////////////////////////////
|
|
// GENERIC RIBCAGE SURGERY //
|
|
//////////////////////////////////////////////////////////////////
|
|
/datum/surgery_step/open_encased
|
|
priority = 2
|
|
can_infect = 1
|
|
blood_level = 1
|
|
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
|
|
|
if (!hasorgans(target))
|
|
return 0
|
|
|
|
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
|
return affected && !(affected.status & ORGAN_ROBOT) && affected.encased && affected.open >= 2
|
|
|
|
|
|
/datum/surgery_step/open_encased/saw
|
|
allowed_tools = list(
|
|
/obj/item/weapon/circular_saw = 100,
|
|
/obj/item/weapon/melee/energy = 100,
|
|
/obj/item/weapon/melee/chainsword = 70,
|
|
/obj/item/weapon/material/hatchet = 75
|
|
)
|
|
|
|
min_duration = 50
|
|
max_duration = 70
|
|
|
|
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
|
if (!hasorgans(target))
|
|
return
|
|
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
|
return ..() && affected && affected.open == 2
|
|
|
|
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
|
|
|
if (!hasorgans(target))
|
|
return
|
|
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
|
|
|
user.visible_message("[user] begins to cut through [target]'s [affected.encased] with \the [tool].", \
|
|
"You begin to cut through [target]'s [affected.encased] with \the [tool].")
|
|
target.custom_pain("Something hurts horribly in your [affected.name]!",1)
|
|
..()
|
|
|
|
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
|
|
|
if (!hasorgans(target))
|
|
return
|
|
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
|
|
|
user.visible_message("\blue [user] has cut [target]'s [affected.encased] open with \the [tool].", \
|
|
"\blue You have cut [target]'s [affected.encased] open with \the [tool].")
|
|
affected.open = 2.5
|
|
|
|
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
|
|
|
if (!hasorgans(target))
|
|
return
|
|
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
|
|
|
user.visible_message("\red [user]'s hand slips, cracking [target]'s [affected.encased] with \the [tool]!" , \
|
|
"\red Your hand slips, cracking [target]'s [affected.encased] with \the [tool]!" )
|
|
|
|
affected.createwound(CUT, 20)
|
|
affected.fracture()
|
|
|
|
|
|
/datum/surgery_step/open_encased/retract
|
|
allowed_tools = list(
|
|
/obj/item/weapon/retractor = 100, \
|
|
/obj/item/weapon/crowbar = 75
|
|
)
|
|
|
|
min_duration = 30
|
|
max_duration = 40
|
|
|
|
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
|
if (!hasorgans(target))
|
|
return
|
|
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
|
return ..() && affected && affected.open == 2.5
|
|
|
|
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
|
|
|
if (!hasorgans(target))
|
|
return
|
|
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
|
|
|
var/msg = "[user] starts to force open the [affected.encased] in [target]'s [affected.name] with \the [tool]."
|
|
var/self_msg = "You start to force open the [affected.encased] in [target]'s [affected.name] with \the [tool]."
|
|
user.visible_message(msg, self_msg)
|
|
target.custom_pain("Something hurts horribly in your [affected.name]!",1)
|
|
..()
|
|
|
|
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
|
|
|
if (!hasorgans(target))
|
|
return
|
|
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
|
|
|
var/msg = "\blue [user] forces open [target]'s [affected.encased] with \the [tool]."
|
|
var/self_msg = "\blue You force open [target]'s [affected.encased] with \the [tool]."
|
|
user.visible_message(msg, self_msg)
|
|
|
|
affected.open = 3
|
|
|
|
// Whoops!
|
|
if(prob(10))
|
|
affected.fracture()
|
|
|
|
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
|
|
|
if (!hasorgans(target))
|
|
return
|
|
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
|
|
|
var/msg = "\red [user]'s hand slips, cracking [target]'s [affected.encased]!"
|
|
var/self_msg = "\red Your hand slips, cracking [target]'s [affected.encased]!"
|
|
user.visible_message(msg, self_msg)
|
|
|
|
affected.createwound(BRUISE, 20)
|
|
affected.fracture()
|
|
|
|
/datum/surgery_step/open_encased/close
|
|
allowed_tools = list(
|
|
/obj/item/weapon/retractor = 100, \
|
|
/obj/item/weapon/crowbar = 75
|
|
)
|
|
|
|
min_duration = 20
|
|
max_duration = 40
|
|
|
|
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
|
|
|
if (!hasorgans(target))
|
|
return
|
|
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
|
return ..() && affected && affected.open == 3
|
|
|
|
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
|
|
|
if (!hasorgans(target))
|
|
return
|
|
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
|
|
|
var/msg = "[user] starts bending [target]'s [affected.encased] back into place with \the [tool]."
|
|
var/self_msg = "You start bending [target]'s [affected.encased] back into place with \the [tool]."
|
|
user.visible_message(msg, self_msg)
|
|
target.custom_pain("Something hurts horribly in your [affected.name]!",1)
|
|
..()
|
|
|
|
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
|
|
|
if (!hasorgans(target))
|
|
return
|
|
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
|
|
|
var/msg = "\blue [user] bends [target]'s [affected.encased] back into place with \the [tool]."
|
|
var/self_msg = "\blue You bend [target]'s [affected.encased] back into place with \the [tool]."
|
|
user.visible_message(msg, self_msg)
|
|
|
|
affected.open = 2.5
|
|
|
|
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
|
|
|
if (!hasorgans(target))
|
|
return
|
|
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
|
|
|
var/msg = "\red [user]'s hand slips, bending [target]'s [affected.encased] the wrong way!"
|
|
var/self_msg = "\red Your hand slips, bending [target]'s [affected.encased] the wrong way!"
|
|
user.visible_message(msg, self_msg)
|
|
|
|
affected.createwound(BRUISE, 20)
|
|
affected.fracture()
|
|
|
|
if(affected.internal_organs && affected.internal_organs.len)
|
|
if(prob(40))
|
|
var/obj/item/organ/O = pick(affected.internal_organs) //TODO weight by organ size
|
|
user.visible_message("<span class='danger'>A wayward piece of [target]'s [affected.encased] pierces \his [O.name]!</span>")
|
|
O.bruise()
|
|
|
|
/datum/surgery_step/open_encased/mend
|
|
allowed_tools = list(
|
|
/obj/item/weapon/bonegel = 100, \
|
|
/obj/item/weapon/tape_roll = 60
|
|
)
|
|
|
|
min_duration = 20
|
|
max_duration = 40
|
|
|
|
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
|
|
|
if (!hasorgans(target))
|
|
return
|
|
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
|
return ..() && affected && affected.open == 2.5
|
|
|
|
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
|
|
|
if (!hasorgans(target))
|
|
return
|
|
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
|
|
|
var/msg = "[user] starts applying \the [tool] to [target]'s [affected.encased]."
|
|
var/self_msg = "You start applying \the [tool] to [target]'s [affected.encased]."
|
|
user.visible_message(msg, self_msg)
|
|
target.custom_pain("Something hurts horribly in your [affected.name]!",1)
|
|
..()
|
|
|
|
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
|
|
|
if (!hasorgans(target))
|
|
return
|
|
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
|
|
|
var/msg = "\blue [user] applied \the [tool] to [target]'s [affected.encased]."
|
|
var/self_msg = "\blue You applied \the [tool] to [target]'s [affected.encased]."
|
|
user.visible_message(msg, self_msg)
|
|
|
|
affected.open = 2 |