mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-12 11:13:16 +00:00
Replaces ORGAN_SPLINTED
This commit is contained in:
@@ -35,9 +35,8 @@
|
|||||||
#define ORGAN_BLEEDING (1<<1)
|
#define ORGAN_BLEEDING (1<<1)
|
||||||
#define ORGAN_BROKEN (1<<2)
|
#define ORGAN_BROKEN (1<<2)
|
||||||
#define ORGAN_DESTROYED (1<<3)
|
#define ORGAN_DESTROYED (1<<3)
|
||||||
#define ORGAN_SPLINTED (1<<4)
|
#define ORGAN_DEAD (1<<4)
|
||||||
#define ORGAN_DEAD (1<<5)
|
#define ORGAN_MUTATED (1<<5)
|
||||||
#define ORGAN_MUTATED (1<<6)
|
|
||||||
|
|
||||||
#define DROPLIMB_EDGE 0
|
#define DROPLIMB_EDGE 0
|
||||||
#define DROPLIMB_BLUNT 1
|
#define DROPLIMB_BLUNT 1
|
||||||
|
|||||||
@@ -329,7 +329,7 @@
|
|||||||
organStatus["broken"] = E.broken_description
|
organStatus["broken"] = E.broken_description
|
||||||
if(E.status & ORGAN_ROBOT)
|
if(E.status & ORGAN_ROBOT)
|
||||||
organStatus["robotic"] = 1
|
organStatus["robotic"] = 1
|
||||||
if(E.status & ORGAN_SPLINTED)
|
if(E.splinted)
|
||||||
organStatus["splinted"] = 1
|
organStatus["splinted"] = 1
|
||||||
if(E.status & ORGAN_BLEEDING)
|
if(E.status & ORGAN_BLEEDING)
|
||||||
organStatus["bleeding"] = 1
|
organStatus["bleeding"] = 1
|
||||||
@@ -483,7 +483,7 @@
|
|||||||
break
|
break
|
||||||
if(istype(e, /obj/item/organ/external/chest) && occupant.is_lung_ruptured())
|
if(istype(e, /obj/item/organ/external/chest) && occupant.is_lung_ruptured())
|
||||||
lung_ruptured = "Lung ruptured:"
|
lung_ruptured = "Lung ruptured:"
|
||||||
if(e.status & ORGAN_SPLINTED)
|
if(e.splinted)
|
||||||
splint = "Splinted:"
|
splint = "Splinted:"
|
||||||
if(e.status & ORGAN_BLEEDING)
|
if(e.status & ORGAN_BLEEDING)
|
||||||
bled = "Bleeding:"
|
bled = "Bleeding:"
|
||||||
|
|||||||
@@ -161,7 +161,7 @@ REAGENT SCANNER
|
|||||||
continue
|
continue
|
||||||
var/limb = e.name
|
var/limb = e.name
|
||||||
if(e.status & ORGAN_BROKEN)
|
if(e.status & ORGAN_BROKEN)
|
||||||
if(((e.name == "l_arm") || (e.name == "r_arm") || (e.name == "l_leg") || (e.name == "r_leg")) && (!(e.status & ORGAN_SPLINTED)))
|
if(((e.name == "l_arm") || (e.name == "r_arm") || (e.name == "l_leg") || (e.name == "r_leg")) && (!e.splinted))
|
||||||
user << "<span class='warning'>Unsecured fracture in subject [limb]. Splinting recommended for transport.</span>"
|
user << "<span class='warning'>Unsecured fracture in subject [limb]. Splinting recommended for transport.</span>"
|
||||||
if(e.has_infected_wound())
|
if(e.has_infected_wound())
|
||||||
user << "<span class='warning'>Infected wound detected in subject [limb]. Disinfection recommended.</span>"
|
user << "<span class='warning'>Infected wound detected in subject [limb]. Disinfection recommended.</span>"
|
||||||
|
|||||||
@@ -264,7 +264,7 @@
|
|||||||
if(!(affecting.organ_tag in splintable_organs))
|
if(!(affecting.organ_tag in splintable_organs))
|
||||||
user << "<span class='danger'>You can't use \the [src] to apply a splint there!</span>"
|
user << "<span class='danger'>You can't use \the [src] to apply a splint there!</span>"
|
||||||
return
|
return
|
||||||
if(affecting.status & ORGAN_SPLINTED)
|
if(affecting.splinted)
|
||||||
user << "<span class='danger'>[M]'s [limb] is already splinted!</span>"
|
user << "<span class='danger'>[M]'s [limb] is already splinted!</span>"
|
||||||
return
|
return
|
||||||
if (M != user)
|
if (M != user)
|
||||||
|
|||||||
@@ -82,7 +82,7 @@
|
|||||||
|
|
||||||
if(user.wear_suit == src)
|
if(user.wear_suit == src)
|
||||||
for(var/obj/item/organ/external/E in user.organs)
|
for(var/obj/item/organ/external/E in user.organs)
|
||||||
if(E.apply_splint(src))
|
if(E.is_broken() && E.apply_splint(src))
|
||||||
user << "You feel [src] constrict about your [E.name], supporting it."
|
user << "You feel [src] constrict about your [E.name], supporting it."
|
||||||
supporting_limbs |= E
|
supporting_limbs |= E
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -251,8 +251,8 @@
|
|||||||
//splints
|
//splints
|
||||||
for(var/organ in list(BP_L_LEG, BP_R_LEG, BP_L_ARM, BP_R_ARM))
|
for(var/organ in list(BP_L_LEG, BP_R_LEG, BP_L_ARM, BP_R_ARM))
|
||||||
var/obj/item/organ/external/o = get_organ(organ)
|
var/obj/item/organ/external/o = get_organ(organ)
|
||||||
if(o && o.status & ORGAN_SPLINTED)
|
if(o && o.splinted && o.splinted.loc == o)
|
||||||
msg += "<span class='warning'>[T.He] [T.has] a splint on [T.his] [o.name]!</span>\n"
|
msg += "<span class='warning'>[T.He] [T.has] \a [o.splinted] on [T.his] [o.name]!</span>\n"
|
||||||
|
|
||||||
if(suiciding)
|
if(suiciding)
|
||||||
msg += "<span class='warning'>[T.He] appears to have commited suicide... there is no hope of recovery.</span>\n"
|
msg += "<span class='warning'>[T.He] appears to have commited suicide... there is no hope of recovery.</span>\n"
|
||||||
|
|||||||
@@ -1013,7 +1013,7 @@
|
|||||||
/mob/living/carbon/human/proc/handle_embedded_objects()
|
/mob/living/carbon/human/proc/handle_embedded_objects()
|
||||||
|
|
||||||
for(var/obj/item/organ/external/organ in src.organs)
|
for(var/obj/item/organ/external/organ in src.organs)
|
||||||
if(organ.status & ORGAN_SPLINTED) //Splints prevent movement.
|
if(organ.splinted) //Splints prevent movement.
|
||||||
continue
|
continue
|
||||||
for(var/obj/item/O in organ.implants)
|
for(var/obj/item/O in organ.implants)
|
||||||
if(!istype(O,/obj/item/weapon/implant) && prob(5)) //Moving with things stuck in you could be bad.
|
if(!istype(O,/obj/item/weapon/implant) && prob(5)) //Moving with things stuck in you could be bad.
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
var/obj/item/organ/external/E = get_organ(organ_name)
|
var/obj/item/organ/external/E = get_organ(organ_name)
|
||||||
if(!E || E.is_stump())
|
if(!E || E.is_stump())
|
||||||
tally += 4
|
tally += 4
|
||||||
if(E.status & ORGAN_SPLINTED)
|
if(E.splinted)
|
||||||
tally += 0.5
|
tally += 0.5
|
||||||
else if(E.status & ORGAN_BROKEN)
|
else if(E.status & ORGAN_BROKEN)
|
||||||
tally += 1.5
|
tally += 1.5
|
||||||
@@ -57,7 +57,7 @@
|
|||||||
var/obj/item/organ/external/E = get_organ(organ_name)
|
var/obj/item/organ/external/E = get_organ(organ_name)
|
||||||
if(!E || E.is_stump())
|
if(!E || E.is_stump())
|
||||||
tally += 4
|
tally += 4
|
||||||
else if(E.status & ORGAN_SPLINTED)
|
else if(E.splinted)
|
||||||
tally += 0.5
|
tally += 0.5
|
||||||
else if(E.status & ORGAN_BROKEN)
|
else if(E.status & ORGAN_BROKEN)
|
||||||
tally += 1.5
|
tally += 1.5
|
||||||
|
|||||||
@@ -142,10 +142,10 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
for (var/obj/item/organ/external/E in organs)
|
for (var/obj/item/organ/external/E in organs)
|
||||||
if(!E || !E.can_grasp || (E.status & ORGAN_SPLINTED))
|
if(!E || !E.can_grasp)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if(E.is_broken() || E.is_dislocated())
|
if((E.is_broken() || E.is_dislocated()) && !E.splinted)
|
||||||
switch(E.body_part)
|
switch(E.body_part)
|
||||||
if(HAND_LEFT, ARM_LEFT)
|
if(HAND_LEFT, ARM_LEFT)
|
||||||
if(!l_hand)
|
if(!l_hand)
|
||||||
|
|||||||
@@ -125,11 +125,11 @@
|
|||||||
if(can_reach_splints)
|
if(can_reach_splints)
|
||||||
var/removed_splint
|
var/removed_splint
|
||||||
for(var/obj/item/organ/external/o in organs)
|
for(var/obj/item/organ/external/o in organs)
|
||||||
if (o && o.status & ORGAN_SPLINTED)
|
if (o && o.splinted)
|
||||||
var/obj/item/S = o.splinted
|
var/obj/item/S = o.splinted
|
||||||
if(istype(S) && S.loc == o) //can only remove splints that are actually worn on the organ (deals with hardsuit splints)
|
if(istype(S) && S.loc == o) //can only remove splints that are actually worn on the organ (deals with hardsuit splints)
|
||||||
S.add_fingerprint(user)
|
S.add_fingerprint(user)
|
||||||
if(o.remove_splints())
|
if(o.remove_splint())
|
||||||
user.put_in_active_hand(S)
|
user.put_in_active_hand(S)
|
||||||
removed_splint = 1
|
removed_splint = 1
|
||||||
if(removed_splint)
|
if(removed_splint)
|
||||||
|
|||||||
@@ -519,7 +519,7 @@
|
|||||||
for(var/name in H.organs_by_name)
|
for(var/name in H.organs_by_name)
|
||||||
var/obj/item/organ/external/e = H.organs_by_name[name]
|
var/obj/item/organ/external/e = H.organs_by_name[name]
|
||||||
if(e && H.lying)
|
if(e && H.lying)
|
||||||
if(((e.status & ORGAN_BROKEN && !(e.status & ORGAN_SPLINTED)) || e.status & ORGAN_BLEEDING) && (H.getBruteLoss() + H.getFireLoss() >= 100))
|
if(((e.status & ORGAN_BROKEN && !(e.splinted)) || e.status & ORGAN_BLEEDING) && (H.getBruteLoss() + H.getFireLoss() >= 100))
|
||||||
return 1
|
return 1
|
||||||
break
|
break
|
||||||
return 0
|
return 0
|
||||||
|
|||||||
@@ -254,7 +254,6 @@ var/list/organ_cache = list()
|
|||||||
robotic = ORGAN_ROBOT
|
robotic = ORGAN_ROBOT
|
||||||
src.status &= ~ORGAN_BROKEN
|
src.status &= ~ORGAN_BROKEN
|
||||||
src.status &= ~ORGAN_BLEEDING
|
src.status &= ~ORGAN_BLEEDING
|
||||||
src.status &= ~ORGAN_SPLINTED
|
|
||||||
src.status &= ~ORGAN_CUT_AWAY
|
src.status &= ~ORGAN_CUT_AWAY
|
||||||
|
|
||||||
/obj/item/organ/proc/mechassist() //Used to add things like pacemakers, etc
|
/obj/item/organ/proc/mechassist() //Used to add things like pacemakers, etc
|
||||||
|
|||||||
@@ -529,11 +529,11 @@ This function completely restores a damaged organ to perfect condition.
|
|||||||
//external organs handle brokenness a bit differently when it comes to damage. Instead brute_dam is checked inside process()
|
//external organs handle brokenness a bit differently when it comes to damage. Instead brute_dam is checked inside process()
|
||||||
//this also ensures that an external organ cannot be "broken" without broken_description being set.
|
//this also ensures that an external organ cannot be "broken" without broken_description being set.
|
||||||
/obj/item/organ/external/is_broken()
|
/obj/item/organ/external/is_broken()
|
||||||
return ((status & ORGAN_CUT_AWAY) || ((status & ORGAN_BROKEN) && !(status & ORGAN_SPLINTED)))
|
return ((status & ORGAN_CUT_AWAY) || ((status & ORGAN_BROKEN) && !(splinted)))
|
||||||
|
|
||||||
//Determines if we even need to process this organ.
|
//Determines if we even need to process this organ.
|
||||||
/obj/item/organ/external/proc/need_process()
|
/obj/item/organ/external/proc/need_process()
|
||||||
if(status & (ORGAN_CUT_AWAY|ORGAN_BLEEDING|ORGAN_BROKEN|ORGAN_DESTROYED|ORGAN_SPLINTED|ORGAN_DEAD|ORGAN_MUTATED))
|
if(status & (ORGAN_CUT_AWAY|ORGAN_BLEEDING|ORGAN_BROKEN|ORGAN_DESTROYED|ORGAN_DEAD|ORGAN_MUTATED))
|
||||||
return 1
|
return 1
|
||||||
if((brute_dam || burn_dam) && (robotic < ORGAN_ROBOT)) //Robot limbs don't autoheal and thus don't need to process when damaged
|
if((brute_dam || burn_dam) && (robotic < ORGAN_ROBOT)) //Robot limbs don't autoheal and thus don't need to process when damaged
|
||||||
return 1
|
return 1
|
||||||
@@ -1011,25 +1011,11 @@ Note that amputating the affected organ does in fact remove the infection from t
|
|||||||
// This is mostly for the ninja suit to stop ninja being so crippled by breaks.
|
// This is mostly for the ninja suit to stop ninja being so crippled by breaks.
|
||||||
// TODO: consider moving this to a suit proc or process() or something during
|
// TODO: consider moving this to a suit proc or process() or something during
|
||||||
// hardsuit rewrite.
|
// hardsuit rewrite.
|
||||||
if(!(status & ORGAN_SPLINTED) && owner && istype(owner.wear_suit, /obj/item/clothing/suit/space))
|
|
||||||
|
if(!(splinted) && owner && istype(owner.wear_suit, /obj/item/clothing/suit/space))
|
||||||
var/obj/item/clothing/suit/space/suit = owner.wear_suit
|
var/obj/item/clothing/suit/space/suit = owner.wear_suit
|
||||||
suit.check_limb_support()
|
suit.check_limb_support()
|
||||||
|
|
||||||
/obj/item/organ/external/proc/apply_splint(var/atom/movable/splint)
|
|
||||||
if(!splinted)
|
|
||||||
splinted = splint
|
|
||||||
status |= ORGAN_SPLINTED
|
|
||||||
return 1
|
|
||||||
return 0
|
|
||||||
|
|
||||||
/obj/item/organ/external/proc/remove_splint()
|
|
||||||
if(splinted)
|
|
||||||
if(splinted.loc == src)
|
|
||||||
splinted.dropInto(owner? owner.loc : src.loc)
|
|
||||||
splinted = null
|
|
||||||
status &= ~(ORGAN_SPLINTED)
|
|
||||||
return 1
|
|
||||||
return 0
|
|
||||||
|
|
||||||
/obj/item/organ/external/proc/mend_fracture()
|
/obj/item/organ/external/proc/mend_fracture()
|
||||||
if(robotic >= ORGAN_ROBOT)
|
if(robotic >= ORGAN_ROBOT)
|
||||||
@@ -1040,6 +1026,20 @@ Note that amputating the affected organ does in fact remove the infection from t
|
|||||||
status &= ~ORGAN_BROKEN
|
status &= ~ORGAN_BROKEN
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
/obj/item/organ/external/proc/apply_splint(var/atom/movable/splint)
|
||||||
|
if(!splinted)
|
||||||
|
splinted = splint
|
||||||
|
return 1
|
||||||
|
return 0
|
||||||
|
|
||||||
|
/obj/item/organ/external/proc/remove_splint()
|
||||||
|
if(splinted)
|
||||||
|
if(splinted.loc == src)
|
||||||
|
splinted.dropInto(owner? owner.loc : src.loc)
|
||||||
|
splinted = null
|
||||||
|
return 1
|
||||||
|
return 0
|
||||||
|
|
||||||
/obj/item/organ/external/robotize(var/company, var/skip_prosthetics = 0, var/keep_organs = 0)
|
/obj/item/organ/external/robotize(var/company, var/skip_prosthetics = 0, var/keep_organs = 0)
|
||||||
|
|
||||||
if(robotic >= ORGAN_ROBOT)
|
if(robotic >= ORGAN_ROBOT)
|
||||||
@@ -1063,6 +1063,7 @@ Note that amputating the affected organ does in fact remove the infection from t
|
|||||||
|
|
||||||
dislocated = -1
|
dislocated = -1
|
||||||
cannot_break = 1
|
cannot_break = 1
|
||||||
|
remove_splint()
|
||||||
get_icon()
|
get_icon()
|
||||||
unmutate()
|
unmutate()
|
||||||
|
|
||||||
|
|||||||
@@ -140,7 +140,6 @@
|
|||||||
user.visible_message("\blue [user] has mended the damaged bones in [target]'s [affected.name] with \the [tool]." , \
|
user.visible_message("\blue [user] has mended the damaged bones in [target]'s [affected.name] with \the [tool]." , \
|
||||||
"\blue You have mended the damaged bones in [target]'s [affected.name] with \the [tool]." )
|
"\blue You have mended the damaged bones in [target]'s [affected.name] with \the [tool]." )
|
||||||
affected.status &= ~ORGAN_BROKEN
|
affected.status &= ~ORGAN_BROKEN
|
||||||
affected.status &= ~ORGAN_SPLINTED
|
|
||||||
affected.stage = 0
|
affected.stage = 0
|
||||||
|
|
||||||
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||||
|
|||||||
Reference in New Issue
Block a user