Removes a bunch of organ booleans, organ flag cleanup. (#7786)

This commit is contained in:
Matt Atlas
2019-12-28 12:45:29 +01:00
committed by GitHub
parent 05d3ecefc9
commit 126c7ec1a8
13 changed files with 106 additions and 82 deletions

View File

@@ -135,7 +135,7 @@
return
for (var/obj/item/organ/external/E in organs)
if(!E || !E.can_grasp || (E.status & ORGAN_SPLINTED))
if(!E || !(E.limb_flags & ORGAN_CAN_GRASP) || (E.status & ORGAN_SPLINTED))
continue
if(E.is_broken() || E.is_dislocated())
@@ -151,7 +151,7 @@
var/emote_scream = pick("screams in pain and ", "lets out a sharp cry and ", "cries out and ")
emote("me", 1, "[(species.flags & NO_PAIN) ? "" : emote_scream ]drops what they were holding in their [E.name]!")
else if(!(E.status & ORGAN_ROBOT) && CE_DROPITEM in chem_effects && prob(chem_effects[CE_DROPITEM]))
to_chat(src, span("warning", "Your [E.name] goes limp and unresponsive for a moment, dropping what it was holding!"))
emote("me", 1, "drops what they were holding in their [E.name]!")

View File

@@ -77,7 +77,7 @@
body_temperature = T0C + 15 //make the plant people have a bit lower body temperature, why not
appearance_flags = HAS_HAIR_COLOR | HAS_SKIN_TONE | HAS_SKIN_PRESET
flags = NO_BREATHE | NO_SCAN | IS_PLANT | NO_BLOOD | NO_PAIN | NO_SLIP | NO_CHUBBY | NO_ARTERIES | NO_TENDONS
flags = NO_BREATHE | NO_SCAN | IS_PLANT | NO_BLOOD | NO_PAIN | NO_SLIP | NO_CHUBBY | NO_ARTERIES
spawn_flags = CAN_JOIN | IS_WHITELISTED | NO_AGE_MINIMUM
character_color_presets = list("Default Bark" = "#000000", "Light Bark" = "#141414", "Brown Bark" = "#2b1d0e", "Green Bark" = "#001400")

View File

@@ -88,7 +88,7 @@
var/mob/living/carbon/human/H = .
if(prob(poison_per_bite))
var/obj/item/organ/external/O = pick(H.organs)
if(!(O.status & (ORGAN_ROBOT|ORGAN_ADV_ROBOT)) && !O.cannot_amputate)
if(!(O.status & (ORGAN_ROBOT|ORGAN_ADV_ROBOT)) && (O.limb_flags & ORGAN_CAN_AMPUTATE))
var/eggs = new /obj/effect/spider/eggcluster(O, src)
O.implants += eggs
to_chat(H, "<span class='warning'>The [src] injects something into your [O.name]!</span>")

View File

@@ -20,7 +20,7 @@
var/model
var/damage_state = "00"
//Damage variables
//Damage variables.
var/brute_mod = 1
var/brute_dam = 0 // Actual current brute damage.
var/brute_ratio = 0 // Ratio of current brute damage to max damage.
@@ -34,6 +34,9 @@
var/pain = 0 // How much the limb hurts.
var/pain_disability_threshold // Point at which a limb becomes unusable due to pain.
//Organ behaviour.
var/limb_flags = ORGAN_CAN_AMPUTATE | ORGAN_CAN_BREAK | ORGAN_CAN_MAIM
var/max_size = 0
var/icon/mob_icon
var/gendered_icon = 0
@@ -41,8 +44,6 @@
var/limb_name
var/disfigured = 0
var/cannot_amputate
var/cannot_break
var/s_tone
var/skin_color
@@ -64,7 +65,6 @@
var/cavity = 0
var/sabotaged = 0 // If a prosthetic limb is emagged, it will detonate when it fails.
var/encased // Needs to be opened with a saw to access the organs.
var/has_tendon = FALSE //Does this limb have a tendon?
var/joint = "joint" // Descriptive string used in dislocation.
var/artery_name = "artery" //Name of the artery. Cartoid, etc.
var/tendon_name = "tendon" //Name of the limb's tendon. Achilles heel, etc.
@@ -72,13 +72,10 @@
var/dislocated = 0 // If you target a joint, you can dislocate the limb, causing temporary damage to the organ.
var/wound_update_accuracy = 1 // how often wounds should be updated, a higher number means less often
var/can_grasp //It would be more appropriate if these two were named "affects_grasp" and "affects_stand" at this point
var/can_stand
var/body_hair
var/painted = 0
var/maim_bonus = 0.75 //For special projectile gibbing calculation, dubbed "maiming"
var/can_be_maimed = TRUE //Can this limb be 'maimed'?
var/list/genetic_markings // Markings (body_markings) to apply to the icon
var/list/temporary_markings // Same as above, but not preserved when cloning
@@ -210,7 +207,7 @@
sync_colour_to_human(owner)
if ((status & ORGAN_PLANT))
cannot_break = 1
limb_flags &= ~ORGAN_CAN_BREAK
get_icon()
@@ -378,7 +375,7 @@
/obj/item/organ/external/proc/handle_limb_gibbing(var/used_weapon,var/brute,var/burn)
//If limb took enough damage, try to cut or tear it off
if(owner && loc == owner && !is_stump())
if(!cannot_amputate && config.limbs_can_break)
if((limb_flags & ORGAN_CAN_AMPUTATE) && config.limbs_can_break)
if((brute_dam + burn_dam) >= (max_damage * config.organ_health_multiplier))
@@ -835,7 +832,7 @@ Note that amputating the affected organ does in fact remove the infection from t
//Handles dismemberment
/obj/item/organ/external/proc/droplimb(var/clean, var/disintegrate = DROPLIMB_EDGE, var/ignore_children = null)
if(cannot_amputate || !owner)
if(!(limb_flags & ORGAN_CAN_AMPUTATE) || !owner)
return
switch(disintegrate)
@@ -1001,7 +998,7 @@ Note that amputating the affected organ does in fact remove the infection from t
/obj/item/organ/external/proc/fracture()
if(status & ORGAN_ROBOT)
return //ORGAN_BROKEN doesn't have the same meaning for robot limbs
if((status & ORGAN_BROKEN) || cannot_break)
if((status & ORGAN_BROKEN) || !(limb_flags & ORGAN_CAN_BREAK))
return
if(owner)
@@ -1056,7 +1053,7 @@ Note that amputating the affected organ does in fact remove the infection from t
burn_mod = R.burn_mod
dislocated = -1 //TODO, make robotic limbs a separate type, remove snowflake
cannot_break = 1
limb_flags &= ~ORGAN_CAN_BREAK
get_icon()
unmutate()
for (var/obj/item/organ/external/T in children)
@@ -1065,7 +1062,7 @@ Note that amputating the affected organ does in fact remove the infection from t
/obj/item/organ/external/mechassist()
..()
cannot_break = 0
limb_flags |= ORGAN_CAN_BREAK
/obj/item/organ/external/proc/robotize_advanced()
status |= ORGAN_ADV_ROBOT
@@ -1275,7 +1272,7 @@ Note that amputating the affected organ does in fact remove the infection from t
return TRUE
/obj/item/organ/external/proc/sever_tendon()
if(!has_tendon || (status & ORGAN_ROBOT) || (status & ORGAN_TENDON_CUT) || species.flags & NO_TENDONS)
if(!(limb_flags & ORGAN_HAS_TENDON) || (status & ORGAN_ROBOT) || (status & ORGAN_TENDON_CUT))
return FALSE
else
status |= ORGAN_TENDON_CUT
@@ -1351,4 +1348,4 @@ Note that amputating the affected organ does in fact remove the infection from t
pain = max(0,min(max_damage,pain+amount))
if(owner && ((amount > 15 && prob(20)) || (amount > 30 && prob(60))))
owner.emote("scream")
return pain-last_pain
return pain-last_pain

View File

@@ -2,7 +2,6 @@
name = "limb stump"
icon_name = ""
dislocated = -1
can_be_maimed = FALSE
/obj/item/organ/external/stump/Initialize(mapload, var/internal, var/obj/item/organ/external/limb)
if(istype(limb))

View File

@@ -23,7 +23,7 @@
/obj/item/organ/external/diona
name = "tendril"
cannot_break = 1
limb_flags = 0
/obj/item/organ/external/chest/diona
name = "core trunk"
@@ -34,9 +34,8 @@
w_class = 5
body_part = UPPER_TORSO
vital = 1
cannot_amputate = 1
parent_organ = null
cannot_break = 1
limb_flags = 0
dislocated = -1
joint = "structural ligament"
amputation_point = "branch"
@@ -50,7 +49,7 @@
w_class = 4
body_part = LOWER_TORSO
parent_organ = BP_CHEST
cannot_break = 1
limb_flags = ORGAN_CAN_MAIM | ORGAN_CAN_AMPUTATE
dislocated = -1
joint = "structural ligament"
amputation_point = "branch"
@@ -64,8 +63,7 @@
w_class = 3
body_part = ARM_LEFT
parent_organ = BP_CHEST
can_grasp = 1
cannot_break = 1
limb_flags = ORGAN_CAN_MAIM | ORGAN_CAN_AMPUTATE | ORGAN_CAN_GRASP
dislocated = -1
joint = "structural ligament"
amputation_point = "branch"
@@ -75,7 +73,7 @@
limb_name = "r_arm"
icon_name = "r_arm"
body_part = ARM_RIGHT
cannot_break = 1
limb_flags = ORGAN_CAN_MAIM | ORGAN_CAN_AMPUTATE | ORGAN_CAN_GRASP
dislocated = -1
joint = "structural ligament"
amputation_point = "branch"
@@ -90,8 +88,7 @@
body_part = LEG_LEFT
icon_position = LEFT
parent_organ = BP_GROIN
can_stand = 1
cannot_break = 1
limb_flags = ORGAN_CAN_MAIM | ORGAN_CAN_AMPUTATE | ORGAN_CAN_STAND
dislocated = -1
joint = "structural ligament"
amputation_point = "branch"
@@ -102,7 +99,7 @@
icon_name = "r_leg"
body_part = LEG_RIGHT
icon_position = RIGHT
cannot_break = 1
limb_flags = ORGAN_CAN_MAIM | ORGAN_CAN_AMPUTATE | ORGAN_CAN_STAND
dislocated = -1
joint = "structural ligament"
amputation_point = "branch"
@@ -117,8 +114,7 @@
body_part = FOOT_LEFT
icon_position = LEFT
parent_organ = BP_L_LEG
can_stand = 1
cannot_break = 1
limb_flags = ORGAN_CAN_MAIM | ORGAN_CAN_AMPUTATE | ORGAN_CAN_STAND
dislocated = -1
joint = "structural ligament"
amputation_point = "branch"
@@ -132,7 +128,7 @@
parent_organ = BP_R_LEG
joint = "right ankle"
amputation_point = "right ankle"
cannot_break = 1
limb_flags = ORGAN_CAN_MAIM | ORGAN_CAN_AMPUTATE | ORGAN_CAN_STAND
dislocated = -1
joint = "structural ligament"
amputation_point = "branch"
@@ -146,8 +142,7 @@
w_class = 2
body_part = HAND_LEFT
parent_organ = BP_L_ARM
can_grasp = 1
cannot_break = 1
limb_flags = ORGAN_CAN_MAIM | ORGAN_CAN_AMPUTATE | ORGAN_CAN_GRASP
dislocated = -1
joint = "structural ligament"
amputation_point = "branch"
@@ -158,7 +153,7 @@
icon_name = "r_hand"
body_part = HAND_RIGHT
parent_organ = BP_R_ARM
cannot_break = 1
limb_flags = ORGAN_CAN_MAIM | ORGAN_CAN_AMPUTATE | ORGAN_CAN_GRASP
dislocated = -1
joint = "structural ligament"
amputation_point = "branch"
@@ -172,7 +167,7 @@
w_class = 3
body_part = HEAD
parent_organ = BP_CHEST
cannot_break = 1
limb_flags = ORGAN_CAN_MAIM | ORGAN_CAN_AMPUTATE
dislocated = -1
joint = "structural ligament"
amputation_point = "branch"

View File

@@ -16,10 +16,9 @@
artery_name = "internal thoracic artery"
dislocated = -1
gendered_icon = 1
cannot_amputate = 1
limb_flags = ORGAN_CAN_BREAK
parent_organ = null
encased = "ribcage"
can_be_maimed = FALSE
/obj/item/organ/external/groin
name = "lower body"
@@ -47,11 +46,10 @@
body_part = ARM_LEFT
parent_organ = BP_CHEST
joint = "left elbow"
has_tendon = TRUE
limb_flags = ORGAN_CAN_AMPUTATE | ORGAN_CAN_BREAK | ORGAN_CAN_MAIM | ORGAN_HAS_TENDON | ORGAN_CAN_GRASP
tendon_name = "palmaris longus tendon"
artery_name = "basilic vein"
amputation_point = "left shoulder"
can_grasp = 1
/obj/item/organ/external/arm/right
limb_name = "r_arm"
@@ -59,7 +57,6 @@
icon_name = "r_arm"
body_part = ARM_RIGHT
joint = "right elbow"
has_tendon = TRUE
tendon_name = "cruciate ligament"
artery_name = "brachial artery"
amputation_point = "right shoulder"
@@ -75,11 +72,10 @@
icon_position = LEFT
parent_organ = BP_GROIN
joint = "left knee"
has_tendon = TRUE
tendon_name = "quadriceps tendon"
artery_name = "femoral artery"
amputation_point = "left hip"
can_stand = 1
limb_flags = ORGAN_CAN_AMPUTATE | ORGAN_CAN_BREAK | ORGAN_CAN_MAIM | ORGAN_HAS_TENDON
/obj/item/organ/external/leg/right
limb_name = "r_leg"
@@ -102,7 +98,7 @@
parent_organ = BP_L_LEG
joint = "left ankle"
amputation_point = "left ankle"
can_stand = 1
limb_flags = ORGAN_CAN_AMPUTATE | ORGAN_CAN_BREAK | ORGAN_CAN_MAIM | ORGAN_CAN_STAND
maim_bonus = 1
/obj/item/organ/external/foot/removed()
@@ -130,10 +126,9 @@
body_part = HAND_LEFT
parent_organ = BP_L_ARM
joint = "left wrist"
has_tendon = TRUE
tendon_name = "carpal ligament"
amputation_point = "left wrist"
can_grasp = 1
limb_flags = ORGAN_CAN_AMPUTATE | ORGAN_CAN_BREAK | ORGAN_CAN_MAIM | ORGAN_CAN_GRASP | ORGAN_HAS_TENDON
maim_bonus = 1
/obj/item/organ/external/hand/removed()

View File

@@ -1,54 +1,44 @@
// Slime limbs.
/obj/item/organ/external/chest/unbreakable
cannot_break = 1
dislocated = -1
limb_flags = 0
/obj/item/organ/external/groin/unbreakable
cannot_break = 1
dislocated = -1
can_be_maimed = FALSE
limb_flags = ORGAN_CAN_AMPUTATE
/obj/item/organ/external/arm/unbreakable
cannot_break = 1
dislocated = -1
can_be_maimed = FALSE
limb_flags = ORGAN_CAN_AMPUTATE | ORGAN_CAN_GRASP
/obj/item/organ/external/arm/right/unbreakable
cannot_break = 1
dislocated = -1
can_be_maimed = FALSE
limb_flags = ORGAN_CAN_AMPUTATE | ORGAN_CAN_GRASP
/obj/item/organ/external/leg/unbreakable
cannot_break = 1
dislocated = -1
can_be_maimed = FALSE
limb_flags = ORGAN_CAN_AMPUTATE
/obj/item/organ/external/leg/right/unbreakable
cannot_break = 1
dislocated = -1
can_be_maimed = FALSE
limb_flags = ORGAN_CAN_AMPUTATE
/obj/item/organ/external/foot/unbreakable
cannot_break = 1
dislocated = -1
can_be_maimed = FALSE
limb_flags = ORGAN_CAN_AMPUTATE | ORGAN_CAN_STAND
/obj/item/organ/external/foot/right/unbreakable
cannot_break = 1
dislocated = -1
can_be_maimed = FALSE
limb_flags = ORGAN_CAN_AMPUTATE | ORGAN_CAN_STAND
/obj/item/organ/external/hand/unbreakable
cannot_break = 1
dislocated = -1
can_be_maimed = FALSE
limb_flags = ORGAN_CAN_AMPUTATE | ORGAN_CAN_GRASP
/obj/item/organ/external/hand/right/unbreakable
cannot_break = 1
dislocated = -1
can_be_maimed = FALSE
limb_flags = ORGAN_CAN_AMPUTATE | ORGAN_CAN_GRASP
/obj/item/organ/external/head/unbreakable
cannot_break = 1
dislocated = -1
can_be_maimed = FALSE
limb_flags = ORGAN_CAN_AMPUTATE

View File

@@ -364,34 +364,34 @@ obj/item/organ/vaurca/neuralsocket/process()
T.assume_air(leaked_gas)
/obj/item/organ/external/chest/vaurca
cannot_break = TRUE
limb_flags = 0
/obj/item/organ/external/groin/vaurca
cannot_break = TRUE
limb_flags = ORGAN_CAN_AMPUTATE | ORGAN_CAN_MAIM
/obj/item/organ/external/arm/vaurca
cannot_break = TRUE
limb_flags = ORGAN_CAN_AMPUTATE | ORGAN_CAN_MAIM
/obj/item/organ/external/arm/right/vaurca
cannot_break = TRUE
limb_flags = ORGAN_CAN_AMPUTATE | ORGAN_CAN_MAIM
/obj/item/organ/external/leg/vaurca
cannot_break = TRUE
limb_flags = ORGAN_CAN_AMPUTATE | ORGAN_CAN_MAIM
/obj/item/organ/external/leg/right/vaurca
cannot_break = TRUE
limb_flags = ORGAN_CAN_AMPUTATE | ORGAN_CAN_MAIM
/obj/item/organ/external/foot/vaurca
cannot_break = TRUE
limb_flags = ORGAN_CAN_AMPUTATE | ORGAN_CAN_MAIM | ORGAN_CAN_STAND
/obj/item/organ/external/foot/right/vaurca
cannot_break = TRUE
limb_flags = ORGAN_CAN_AMPUTATE | ORGAN_CAN_MAIM | ORGAN_CAN_STAND
/obj/item/organ/external/hand/vaurca
cannot_break = TRUE
limb_flags = ORGAN_CAN_AMPUTATE | ORGAN_CAN_MAIM | ORGAN_CAN_GRASP
/obj/item/organ/external/hand/right/vaurca
cannot_break = TRUE
limb_flags = ORGAN_CAN_AMPUTATE | ORGAN_CAN_MAIM | ORGAN_CAN_GRASP
/obj/item/organ/external/head/vaurca
cannot_break = TRUE
limb_flags = ORGAN_CAN_AMPUTATE | ORGAN_CAN_MAIM

View File

@@ -350,7 +350,7 @@
to_chat(user, "<span class='warning'>The blades aren't spinning, you can't cut anything!</span>")
return 0
return !affected.cannot_amputate
return (affected.limb_flags & ORGAN_CAN_AMPUTATE)
/datum/surgery_step/generic/amputate/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)