mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-12 18:03:13 +00:00
Conflicts: code/ATMOSPHERICS/components/unary_devices/cryo.dm code/_onclick/hud/alert.dm code/_onclick/hud/hud.dm code/datums/mutations.dm code/datums/wires/robot.dm code/game/atoms.dm code/game/gamemodes/blob/overmind.dm code/game/machinery/alarm.dm code/game/machinery/machinery.dm code/game/machinery/suit_storage_unit.dm code/game/objects/items/weapons/tanks/tanks.dm code/game/objects/items/weapons/tools.dm code/game/objects/structures/morgue.dm code/modules/admin/verbs/adminjump.dm code/modules/atmospherics/machinery/atmosmachinery.dm code/modules/mob/inventory.dm code/modules/mob/living/carbon/alien/humanoid/death.dm code/modules/mob/living/carbon/alien/larva/death.dm code/modules/mob/living/carbon/brain/death.dm code/modules/mob/living/carbon/carbon.dm code/modules/mob/living/carbon/human/death.dm code/modules/mob/living/carbon/human/human.dm code/modules/mob/living/carbon/human/human_damage.dm code/modules/mob/living/carbon/human/life.dm code/modules/mob/living/carbon/human/species.dm code/modules/mob/living/carbon/human/species_types.dm code/modules/mob/living/carbon/life.dm code/modules/mob/living/carbon/monkey/death.dm code/modules/mob/living/life.dm code/modules/mob/living/living.dm code/modules/mob/living/silicon/ai/ai.dm code/modules/mob/living/silicon/ai/death.dm code/modules/mob/living/silicon/ai/life.dm code/modules/mob/living/silicon/pai/death.dm code/modules/mob/living/silicon/pai/pai.dm code/modules/mob/living/silicon/robot/death.dm code/modules/mob/living/silicon/robot/life.dm code/modules/mob/living/silicon/robot/robot.dm code/modules/mob/living/silicon/silicon.dm code/modules/mob/living/simple_animal/guardian/guardian.dm code/modules/mob/login.dm code/modules/mob/mob.dm code/modules/projectiles/gun.dm code/modules/reagents/chemistry/reagents/blob_reagents.dm tgstation.dme
63 lines
2.6 KiB
Plaintext
63 lines
2.6 KiB
Plaintext
/datum/surgery
|
|
var/name = "surgery"
|
|
var/status = 1
|
|
var/list/steps = list() //Steps in a surgery
|
|
var/step_in_progress = 0 //Actively performing a Surgery
|
|
var/can_cancel = 1 //Can cancel this surgery after step 1 with cautery
|
|
var/list/species = list(/mob/living/carbon/human) //Acceptable Species
|
|
var/location = "chest" //Surgery location
|
|
var/requires_organic_bodypart = 1 //Prevents you from performing an operation on robotic limbs
|
|
var/list/possible_locs = list() //Multiple locations -- c0
|
|
var/ignore_clothes = 0 //This surgery ignores clothes
|
|
var/obj/item/organ/organ //Operable body part
|
|
|
|
|
|
/datum/surgery/proc/can_start(mob/user, mob/living/carbon/target)
|
|
// if 0 surgery wont show up in list
|
|
// put special restrictions here
|
|
return 1
|
|
|
|
|
|
/datum/surgery/proc/next_step(mob/user, mob/living/carbon/target)
|
|
if(step_in_progress)
|
|
return
|
|
|
|
var/datum/surgery_step/S = get_surgery_step()
|
|
if(S)
|
|
if(S.try_op(user, target, user.zone_selected, user.get_active_hand(), src))
|
|
return 1
|
|
return 0
|
|
|
|
/datum/surgery/proc/get_surgery_step()
|
|
var/step_type = steps[status]
|
|
return new step_type
|
|
|
|
|
|
/datum/surgery/proc/complete(mob/living/carbon/human/target)
|
|
target.surgeries -= src
|
|
src = null
|
|
|
|
|
|
|
|
//INFO
|
|
//Check /mob/living/carbon/attackby for how surgery progresses, and also /mob/living/carbon/attack_hand.
|
|
//As of Feb 21 2013 they are in code/modules/mob/living/carbon/carbon.dm, lines 459 and 51 respectively.
|
|
//Other important variables are var/list/surgeries (/mob/living) and var/list/internal_organs (/mob/living/carbon)
|
|
// var/list/organs (/mob/living/carbon/human) is the LIMBS of a Mob.
|
|
//Surgical procedures are initiated by attempt_initiate_surgery(), which is called by surgical drapes and bedsheets.
|
|
// /code/modules/surgery/multiple_location_example.dm contains steps to setup a multiple location operation.
|
|
|
|
|
|
//TODO
|
|
//specific steps for some surgeries (fluff text)
|
|
//R&D researching new surgeries (especially for non-humans)
|
|
//more interesting failure options
|
|
//randomised complications
|
|
//more surgeries!
|
|
//add a probability modifier for the state of the surgeon- health, twitching, etc. blindness, god forbid.
|
|
//helper for converting a zone_sel.selecting to body part (for damage)
|
|
|
|
|
|
//RESOLVED ISSUES //"Todo" jobs that have been completed
|
|
//combine hands/feet into the arms - Hands/feet were removed - RR
|
|
//surgeries (not steps) that can be initiated on any body part (corresponding with damage locations) - Call this one done, see multiple_location_example.dm - RR |