ports ligament surgeries

This commit is contained in:
XDTM
2018-12-09 14:50:12 +01:00
committed by Linzolle
parent 2c70bd097c
commit 8ad11d7250
10 changed files with 109 additions and 6 deletions
@@ -0,0 +1,41 @@
/datum/surgery/advanced/bioware/ligament_hook
name = "Ligament Hook"
desc = "A surgical procedure which reshapes the connections between torso and limbs, making it so limbs can be attached manually if severed. \
However this weakens the connection, making them easier to detach as well."
steps = list(/datum/surgery_step/incise,
/datum/surgery_step/retract_skin,
/datum/surgery_step/clamp_bleeders,
/datum/surgery_step/incise,
/datum/surgery_step/incise,
/datum/surgery_step/reshape_ligaments,
/datum/surgery_step/close)
possible_locs = list(BODY_ZONE_CHEST)
bioware_target = BIOWARE_LIGAMENTS
/datum/surgery_step/reshape_ligaments
name = "reshape ligaments"
accept_hand = TRUE
time = 125
/datum/surgery_step/reshape_ligaments/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
user.visible_message("[user] starts reshaping [target]'s ligaments into a hook-like shape.", "<span class='notice'>You start reshaping [target]'s ligaments into a hook-like shape.</span>")
/datum/surgery_step/reshape_ligaments/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
user.visible_message("[user] reshapes [target]'s ligaments into a connective hook!", "<span class='notice'>You reshape [target]'s ligaments into a connective hook!</span>")
new /datum/bioware/hooked_ligaments(target)
return TRUE
/datum/bioware/hooked_ligaments
name = "Hooked Ligaments"
desc = "The ligaments and nerve endings that connect the torso to the limbs are formed into a hook-like shape, so limbs can be attached without requiring surgery, but are easier to sever."
mod_type = BIOWARE_LIGAMENTS
/datum/bioware/hooked_ligaments/on_gain()
..()
owner.add_trait(TRAIT_LIMBATTACHMENT, "ligament_hook")
owner.add_trait(TRAIT_EASYDISMEMBER, "ligament_hook")
/datum/bioware/hooked_ligaments/on_lose()
..()
owner.remove_trait(TRAIT_LIMBATTACHMENT, "ligament_hook")
owner.remove_trait(TRAIT_EASYDISMEMBER, "ligament_hook")
@@ -0,0 +1,41 @@
/datum/surgery/advanced/bioware/ligament_reinforcement
name = "Ligament Reinforcement"
desc = "A surgical procedure which adds a protective tissue and bone cage around the connections between the torso and limbs, preventing dismemberment. \
However, the nerve connections as a result are more easily interrupted, making it easier to disable limbs with damage."
steps = list(/datum/surgery_step/incise,
/datum/surgery_step/retract_skin,
/datum/surgery_step/clamp_bleeders,
/datum/surgery_step/incise,
/datum/surgery_step/incise,
/datum/surgery_step/reinforce_ligaments,
/datum/surgery_step/close)
possible_locs = list(BODY_ZONE_CHEST)
bioware_target = BIOWARE_LIGAMENTS
/datum/surgery_step/reinforce_ligaments
name = "reinforce ligaments"
accept_hand = TRUE
time = 125
/datum/surgery_step/reinforce_ligaments/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
user.visible_message("[user] starts reinforce [target]'s ligaments.", "<span class='notice'>You start reinforcing [target]'s ligaments.</span>")
/datum/surgery_step/reinforce_ligaments/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
user.visible_message("[user] reinforces [target]'s ligaments!", "<span class='notice'>You reinforce [target]'s ligaments!</span>")
new /datum/bioware/reinforced_ligaments(target)
return TRUE
/datum/bioware/reinforced_ligaments
name = "Reinforced Ligaments"
desc = "The ligaments and nerve endings that connect the torso to the limbs are protected by a mix of bone and tissues, and are much harder to separate from the body, but are also easier to disable."
mod_type = BIOWARE_LIGAMENTS
/datum/bioware/reinforced_ligaments/on_gain()
..()
owner.add_trait(TRAIT_NODISMEMBER, "reinforced_ligaments")
owner.add_trait(TRAIT_EASYLIMBDISABLE, "reinforced_ligaments")
/datum/bioware/reinforced_ligaments/on_lose()
..()
owner.remove_trait(TRAIT_NODISMEMBER, "reinforced_ligaments")
owner.remove_trait(TRAIT_EASYLIMBDISABLE, "reinforced_ligaments")
+1 -1
View File
@@ -231,7 +231,7 @@
return BODYPART_DISABLED_PARALYSIS
if(can_dismember() && !HAS_TRAIT(owner, TRAIT_NODISMEMBER))
. = disabled //inertia, to avoid limbs healing 0.1 damage and being re-enabled
if((get_damage(TRUE) >= max_damage))
if((get_damage(TRUE) >= max_damage) || (owner.has_trait(TRAIT_EASYLIMBDISABLE) && (get_damage(TRUE) >= (max_damage * 0.6)))) //Easy limb disable disables the limb at 40% health instead of 0%
return BODYPART_DISABLED_DAMAGE
if(disabled && (get_damage(TRUE) <= (max_damage * 0.5)))
return BODYPART_NOT_DISABLED