diff --git a/baystation12.dme b/baystation12.dme
index 5955d6a228..786b36daa8 100644
--- a/baystation12.dme
+++ b/baystation12.dme
@@ -1277,6 +1277,7 @@
#include "code\modules\organs\organ_external.dm"
#include "code\modules\organs\organ_icon.dm"
#include "code\modules\organs\organ_internal.dm"
+#include "code\modules\organs\organ_stump.dm"
#include "code\modules\organs\pain.dm"
#include "code\modules\organs\wound.dm"
#include "code\modules\overmap\_defines.dm"
diff --git a/code/game/antagonist/alien/borer.dm b/code/game/antagonist/alien/borer.dm
index 6f227c3ce0..9fe4226e5b 100644
--- a/code/game/antagonist/alien/borer.dm
+++ b/code/game/antagonist/alien/borer.dm
@@ -28,7 +28,7 @@ var/datum/antagonist/xenos/borer/borers
borer.host_brain.name = host.name
borer.host_brain.real_name = host.real_name
var/obj/item/organ/external/head = host.get_organ("head")
- head.implants += borer
+ if(head) head.implants += borer
/datum/antagonist/xenos/borer/proc/get_hosts()
var/list/possible_hosts = list()
diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm
index b8ddcdedee..eb9256eee0 100644
--- a/code/game/gamemodes/objective.dm
+++ b/code/game/gamemodes/objective.dm
@@ -457,10 +457,14 @@ datum/objective/harm
var/mob/living/carbon/human/H = target.current
for(var/obj/item/organ/external/E in H.organs)
if(E.status & ORGAN_BROKEN)
- already_completed = 1
return 1
- if(E.status & ORGAN_DESTROYED && !E.amputated)
- already_completed = 1
+ for(var/limb_type in H.species.has_limbs) //todo check prefs for robotic limbs and amputations.
+ var/found
+ for(var/obj/item/organ/external/E in H.organs)
+ if(limb_type == E.type)
+ found = 1
+ break
+ if(!found)
return 1
var/obj/item/organ/external/head/head = H.get_organ("head")
diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm
index 25f977e1a7..51e1ec7510 100644
--- a/code/game/machinery/adv_med.dm
+++ b/code/game/machinery/adv_med.dm
@@ -404,9 +404,9 @@
if(!AN && !open && !infected & !imp)
AN = "None:"
if(!(e.status & ORGAN_DESTROYED))
- dat += "
[e.display_name] | [e.burn_dam] | [e.brute_dam] | [robot][bled][AN][splint][open][infected][imp][internal_bleeding][lung_ruptured] | "
+ dat += "[e.name] | [e.burn_dam] | [e.brute_dam] | [robot][bled][AN][splint][open][infected][imp][internal_bleeding][lung_ruptured] | "
else
- dat += "[e.display_name] | - | - | Not Found | "
+ dat += "[e.name] | - | - | Not Found | "
dat += ""
for(var/obj/item/organ/i in occ["internal_organs"])
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index e8b2773c7e..57b77d4890 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -124,7 +124,7 @@
if (user.hand)
temp = H.organs_by_name["l_hand"]
if(temp && !temp.is_usable())
- user << "You try to move your [temp.display_name], but cannot!"
+ user << "You try to move your [temp.name], but cannot!"
return
if (istype(src.loc, /obj/item/weapon/storage))
diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm
index c687014771..5687d896d1 100755
--- a/code/game/objects/items/devices/PDA/PDA.dm
+++ b/code/game/objects/items/devices/PDA/PDA.dm
@@ -1207,7 +1207,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
user.show_message("\blue Localized Damage, Brute/Burn:",1)
if(length(damaged)>0)
for(var/obj/item/organ/external/org in damaged)
- user.show_message(text("\blue \t []: []\blue-[]",capitalize(org.display_name),(org.brute_dam > 0)?"\red [org.brute_dam]":0,(org.burn_dam > 0)?"\red [org.burn_dam]":0),1)
+ user.show_message(text("\blue \t []: []\blue-[]",capitalize(org.name),(org.brute_dam > 0)?"\red [org.brute_dam]":0,(org.burn_dam > 0)?"\red [org.burn_dam]":0),1)
else
user.show_message("\blue \t Limbs are OK.",1)
diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm
index ca8df7a48e..4b95f1bdf8 100644
--- a/code/game/objects/items/devices/scanners.dm
+++ b/code/game/objects/items/devices/scanners.dm
@@ -125,7 +125,7 @@ REAGENT SCANNER
if(length(damaged)>0)
for(var/obj/item/organ/external/org in damaged)
user.show_message(text("\blue \t []: [][]\blue - []", \
- "[capitalize(org.display_name)][org.status & ORGAN_ROBOT ? "(Cybernetic)" : ""]", \
+ "[capitalize(org.name)][org.status & ORGAN_ROBOT ? "(Cybernetic)" : ""]", \
(org.brute_dam > 0) ? "\red [org.brute_dam]" :0, \
(org.status & ORGAN_BLEEDING)?"\red \[Bleeding\]":"\t", \
(org.burn_dam > 0) ? "[org.burn_dam]" :0),1)
@@ -181,7 +181,7 @@ REAGENT SCANNER
var/mob/living/carbon/human/H = M
for(var/name in H.organs_by_name)
var/obj/item/organ/external/e = H.organs_by_name[name]
- var/limb = e.display_name
+ var/limb = e.name
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)))
user << "\red Unsecured fracture in subject [limb]. Splinting recommended for transport."
diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm
index 1a2fe3459a..3a8d8f25eb 100644
--- a/code/game/objects/items/stacks/medical.dm
+++ b/code/game/objects/items/stacks/medical.dm
@@ -25,7 +25,7 @@
var/mob/living/carbon/human/H = M
var/obj/item/organ/external/affecting = H.get_organ(user.zone_sel.selecting)
- if(affecting.display_name == "head")
+ if(affecting.name == "head")
if(H.head && istype(H.head,/obj/item/clothing/head/helmet/space))
user << "\red You can't apply [src] through [H.head]!"
return 1
@@ -67,29 +67,29 @@
if(affecting.open == 0)
if(!affecting.bandage())
- user << "\red The wounds on [M]'s [affecting.display_name] have already been bandaged."
+ user << "\red The wounds on [M]'s [affecting.name] have already been bandaged."
return 1
else
for (var/datum/wound/W in affecting.wounds)
if (W.internal)
continue
if (W.current_stage <= W.max_bleeding_stage)
- user.visible_message( "\blue [user] bandages [W.desc] on [M]'s [affecting.display_name].", \
- "\blue You bandage [W.desc] on [M]'s [affecting.display_name]." )
+ user.visible_message( "\blue [user] bandages [W.desc] on [M]'s [affecting.name].", \
+ "\blue You bandage [W.desc] on [M]'s [affecting.name]." )
//H.add_side_effect("Itch")
else if (istype(W,/datum/wound/bruise))
- user.visible_message( "\blue [user] places bruise patch over [W.desc] on [M]'s [affecting.display_name].", \
- "\blue You place bruise patch over [W.desc] on [M]'s [affecting.display_name]." )
+ user.visible_message( "\blue [user] places bruise patch over [W.desc] on [M]'s [affecting.name].", \
+ "\blue You place bruise patch over [W.desc] on [M]'s [affecting.name]." )
else
- user.visible_message( "\blue [user] places bandaid over [W.desc] on [M]'s [affecting.display_name].", \
- "\blue You place bandaid over [W.desc] on [M]'s [affecting.display_name]." )
+ user.visible_message( "\blue [user] places bandaid over [W.desc] on [M]'s [affecting.name].", \
+ "\blue You place bandaid over [W.desc] on [M]'s [affecting.name]." )
use(1)
else
if (can_operate(H)) //Checks if mob is lying down on table for surgery
if (do_surgery(H,user,src))
return
else
- user << "The [affecting.display_name] is cut open, you'll need more than a bandage!"
+ user << "The [affecting.name] is cut open, you'll need more than a bandage!"
/obj/item/stack/medical/ointment
name = "ointment"
@@ -110,18 +110,18 @@
if(affecting.open == 0)
if(!affecting.salve())
- user << "\red The wounds on [M]'s [affecting.display_name] have already been salved."
+ user << "\red The wounds on [M]'s [affecting.name] have already been salved."
return 1
else
- user.visible_message( "\blue [user] salves wounds on [M]'s [affecting.display_name].", \
- "\blue You salve wounds on [M]'s [affecting.display_name]." )
+ user.visible_message( "\blue [user] salves wounds on [M]'s [affecting.name].", \
+ "\blue You salve wounds on [M]'s [affecting.name]." )
use(1)
else
if (can_operate(H)) //Checks if mob is lying down on table for surgery
if (do_surgery(H,user,src))
return
else
- user << "The [affecting.display_name] is cut open, you'll need more than a bandage!"
+ user << "The [affecting.name] is cut open, you'll need more than a bandage!"
/obj/item/stack/medical/advanced/bruise_pack
name = "advanced trauma kit"
@@ -144,22 +144,22 @@
var/disinfected = affecting.disinfect()
if(!(bandaged || disinfected))
- user << "\red The wounds on [M]'s [affecting.display_name] have already been treated."
+ user << "\red The wounds on [M]'s [affecting.name] have already been treated."
return 1
else
for (var/datum/wound/W in affecting.wounds)
if (W.internal)
continue
if (W.current_stage <= W.max_bleeding_stage)
- user.visible_message( "\blue [user] cleans [W.desc] on [M]'s [affecting.display_name] and seals edges with bioglue.", \
- "\blue You clean and seal [W.desc] on [M]'s [affecting.display_name]." )
+ user.visible_message( "\blue [user] cleans [W.desc] on [M]'s [affecting.name] and seals edges with bioglue.", \
+ "\blue You clean and seal [W.desc] on [M]'s [affecting.name]." )
//H.add_side_effect("Itch")
else if (istype(W,/datum/wound/bruise))
- user.visible_message( "\blue [user] places medicine patch over [W.desc] on [M]'s [affecting.display_name].", \
- "\blue You place medicine patch over [W.desc] on [M]'s [affecting.display_name]." )
+ user.visible_message( "\blue [user] places medicine patch over [W.desc] on [M]'s [affecting.name].", \
+ "\blue You place medicine patch over [W.desc] on [M]'s [affecting.name]." )
else
- user.visible_message( "\blue [user] smears some bioglue over [W.desc] on [M]'s [affecting.display_name].", \
- "\blue You smear some bioglue over [W.desc] on [M]'s [affecting.display_name]." )
+ user.visible_message( "\blue [user] smears some bioglue over [W.desc] on [M]'s [affecting.name].", \
+ "\blue You smear some bioglue over [W.desc] on [M]'s [affecting.name]." )
if (bandaged)
affecting.heal_damage(heal_brute,0)
use(1)
@@ -168,7 +168,7 @@
if (do_surgery(H,user,src))
return
else
- user << "The [affecting.display_name] is cut open, you'll need more than a bandage!"
+ user << "The [affecting.name] is cut open, you'll need more than a bandage!"
/obj/item/stack/medical/advanced/ointment
name = "advanced burn kit"
@@ -189,11 +189,11 @@
if(affecting.open == 0)
if(!affecting.salve())
- user << "\red The wounds on [M]'s [affecting.display_name] have already been salved."
+ user << "\red The wounds on [M]'s [affecting.name] have already been salved."
return 1
else
- user.visible_message( "\blue [user] covers wounds on [M]'s [affecting.display_name] with regenerative membrane.", \
- "\blue You cover wounds on [M]'s [affecting.display_name] with regenerative membrane." )
+ user.visible_message( "\blue [user] covers wounds on [M]'s [affecting.name] with regenerative membrane.", \
+ "\blue You cover wounds on [M]'s [affecting.name] with regenerative membrane." )
affecting.heal_damage(0,heal_burn)
use(1)
else
@@ -201,7 +201,7 @@
if (do_surgery(H,user,src))
return
else
- user << "The [affecting.display_name] is cut open, you'll need more than a bandage!"
+ user << "The [affecting.name] is cut open, you'll need more than a bandage!"
/obj/item/stack/medical/splint
name = "medical splints"
@@ -217,7 +217,7 @@
if (istype(M, /mob/living/carbon/human))
var/mob/living/carbon/human/H = M
var/obj/item/organ/external/affecting = H.get_organ(user.zone_sel.selecting)
- var/limb = affecting.display_name
+ var/limb = affecting.name
if(!((affecting.name == "l_arm") || (affecting.name == "r_arm") || (affecting.name == "l_leg") || (affecting.name == "r_leg")))
user << "\red You can't apply a splint there!"
return
diff --git a/code/game/objects/items/stacks/nanopaste.dm b/code/game/objects/items/stacks/nanopaste.dm
index 2e422ea1a9..f85bc336be 100644
--- a/code/game/objects/items/stacks/nanopaste.dm
+++ b/code/game/objects/items/stacks/nanopaste.dm
@@ -33,8 +33,8 @@
S.heal_damage(15, 15, robo_repair = 1)
H.updatehealth()
use(1)
- user.visible_message("\The [user] applies some nanite paste at[user != M ? " \the [M]'s" : " \the"][S.display_name] with \the [src].",\
- "You apply some nanite paste at [user == M ? "your" : "[M]'s"] [S.display_name].")
+ user.visible_message("\The [user] applies some nanite paste at[user != M ? " \the [M]'s" : " \the"][S.name] with \the [src].",\
+ "You apply some nanite paste at [user == M ? "your" : "[M]'s"] [S.name].")
else
user << "Nothing to fix here."
else
diff --git a/code/game/objects/items/weapons/autopsy.dm b/code/game/objects/items/weapons/autopsy.dm
index 1ecbedae7d..dc6787a73b 100644
--- a/code/game/objects/items/weapons/autopsy.dm
+++ b/code/game/objects/items/weapons/autopsy.dm
@@ -64,9 +64,9 @@
if(!D.organs_scanned[O.name])
if(D.organ_names == "")
- D.organ_names = O.display_name
+ D.organ_names = O.name
else
- D.organ_names += ", [O.display_name]"
+ D.organ_names += ", [O.name]"
del D.organs_scanned[O.name]
D.organs_scanned[O.name] = W.copy()
@@ -199,7 +199,7 @@
usr << "You have to cut the limb open first!"
return
for(var/mob/O in viewers(M))
- O.show_message("\red [user.name] scans the wounds on [M.name]'s [S.display_name] with \the [src.name]", 1)
+ O.show_message("\red [user.name] scans the wounds on [M.name]'s [S.name] with \the [src.name]", 1)
src.add_data(S)
diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm
index 8317689c78..86ba9cf811 100644
--- a/code/game/objects/items/weapons/handcuffs.dm
+++ b/code/game/objects/items/weapons/handcuffs.dm
@@ -96,8 +96,8 @@ var/last_chew = 0
var/obj/item/organ/external/O = H.organs_by_name[H.hand?"l_hand":"r_hand"]
if (!O) return
- var/s = "\red [H.name] chews on \his [O.display_name]!"
- H.visible_message(s, "\red You chew on your [O.display_name]!")
+ var/s = "\red [H.name] chews on \his [O.name]!"
+ H.visible_message(s, "\red You chew on your [O.name]!")
H.attack_log += text("\[[time_stamp()]\] [s] ([H.ckey])")
log_attack("[s] ([H.ckey])")
diff --git a/code/game/objects/items/weapons/implants/implant.dm b/code/game/objects/items/weapons/implants/implant.dm
index 3d97ff93b2..10c4bb722f 100644
--- a/code/game/objects/items/weapons/implants/implant.dm
+++ b/code/game/objects/items/weapons/implants/implant.dm
@@ -35,7 +35,7 @@
return 0
proc/meltdown() //breaks it down, making implant unrecongizible
- imp_in << "\red You feel something melting inside [part ? "your [part.display_name]" : "you"]!"
+ imp_in << "\red You feel something melting inside [part ? "your [part.name]" : "you"]!"
if (part)
part.take_damage(burn = 15, used_weapon = "Electronics meltdown")
else
@@ -171,7 +171,7 @@ Implant Specifics:
"}
if(ishuman(imp_in))
if (elevel == "Localized Limb")
if(part) //For some reason, small_boom() didn't work. So have this bit of working copypaste.
- imp_in.visible_message("\red Something beeps inside [imp_in][part ? "'s [part.display_name]" : ""]!")
+ imp_in.visible_message("\red Something beeps inside [imp_in][part ? "'s [part.name]" : ""]!")
playsound(loc, 'sound/items/countdown.ogg', 75, 1, -3)
sleep(25)
if (istype(part,/obj/item/organ/external/chest) || \
@@ -182,7 +182,7 @@ Implant Specifics:
"}
del(src)
else
explosion(get_turf(imp_in), -1, -1, 2, 3)
- part.droplimb(1)
+ part.droplimb()
del(src)
if (elevel == "Destroy Body")
explosion(get_turf(T), -1, 0, 1, 6)
@@ -236,7 +236,7 @@ Implant Specifics:
"}
proc/small_boom()
if (ishuman(imp_in) && part)
- imp_in.visible_message("\red Something beeps inside [imp_in][part ? "'s [part.display_name]" : ""]!")
+ imp_in.visible_message("\red Something beeps inside [imp_in][part ? "'s [part.name]" : ""]!")
playsound(loc, 'sound/items/countdown.ogg', 75, 1, -3)
spawn(25)
if (ishuman(imp_in) && part)
@@ -247,7 +247,7 @@ Implant Specifics:
"}
istype(part,/obj/item/organ/external/head))
part.createwound(BRUISE, 60) //mangle them instead
else
- part.droplimb(1)
+ part.droplimb()
explosion(get_turf(imp_in), -1, -1, 2, 3)
del(src)
diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm
index ee3617bc55..28c421b100 100644
--- a/code/game/objects/items/weapons/stunbaton.dm
+++ b/code/game/objects/items/weapons/stunbaton.dm
@@ -136,10 +136,10 @@
var/obj/item/organ/external/affecting = H.get_organ(target_zone)
if (affecting)
if(!status)
- L.visible_message("[L] has been prodded in the [affecting.display_name] with [src] by [user]. Luckily it was off.")
+ L.visible_message("[L] has been prodded in the [affecting.name] with [src] by [user]. Luckily it was off.")
return 1
else
- H.visible_message("[L] has been prodded in the [affecting.display_name] with [src] by [user]!")
+ H.visible_message("[L] has been prodded in the [affecting.name] with [src] by [user]!")
else
if(!status)
L.visible_message("[L] has been prodded with [src] by [user]. Luckily it was off.")
diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm
index 4310e7ff75..4967a4bee0 100644
--- a/code/game/objects/items/weapons/tools.dm
+++ b/code/game/objects/items/weapons/tools.dm
@@ -472,7 +472,7 @@
if(S.brute_dam)
S.heal_damage(15,0,0,1)
- user.visible_message("\red \The [user] patches some dents on \the [M]'s [S.display_name] with \the [src].")
+ user.visible_message("\red \The [user] patches some dents on \the [M]'s [S.name] with \the [src].")
return
else
user << "Nothing to fix!"
diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm
index 2a998998fa..900baea3f3 100644
--- a/code/game/objects/structures.dm
+++ b/code/game/objects/structures.dm
@@ -148,7 +148,7 @@
affecting = H.get_organ("head")
if(affecting)
- M << "You land heavily on your [affecting.display_name]!"
+ M << "You land heavily on your [affecting.name]!"
affecting.take_damage(damage, 0)
if(affecting.parent)
affecting.parent.add_autopsy_data("Misadventure", damage)
diff --git a/code/game/objects/structures/extinguisher.dm b/code/game/objects/structures/extinguisher.dm
index b9135176f8..4ee9b728a6 100644
--- a/code/game/objects/structures/extinguisher.dm
+++ b/code/game/objects/structures/extinguisher.dm
@@ -37,7 +37,7 @@
if (user.hand)
temp = H.organs_by_name["l_hand"]
if(temp && !temp.is_usable())
- user << "You try to move your [temp.display_name], but cannot!"
+ user << "You try to move your [temp.name], but cannot!"
return
if(has_extinguisher)
user.put_in_hands(has_extinguisher)
diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm
index 778f5bc65b..5aa52bb73f 100644
--- a/code/game/objects/structures/watercloset.dm
+++ b/code/game/objects/structures/watercloset.dm
@@ -352,7 +352,7 @@
if (user.hand)
temp = user:organs_by_name["l_hand"]
if(temp && !temp.is_usable())
- user << "You try to move your [temp.display_name], but cannot!"
+ user << "You try to move your [temp.name], but cannot!"
return
if(isrobot(user) || isAI(user))
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index d0d2ee9065..ae3efc0e71 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -1693,8 +1693,13 @@ datum/preferences
var/obj/item/organ/external/O = character.organs_by_name[name]
if(O)
if(status == "amputated")
- O.amputated = 1
- O.status |= ORGAN_DESTROYED
+ character.organs_by_name[O.limb_name] = null
+ character.organs -= O
+ if(O.children) // This might need to become recursive.
+ for(var/obj/item/organ/external/child in O.children)
+ character.organs_by_name[child.limb_name] = null
+ character.organs -= child
+
else if(status == "cyborg")
O.status |= ORGAN_ROBOT
else
diff --git a/code/modules/clothing/spacesuits/spacesuits.dm b/code/modules/clothing/spacesuits/spacesuits.dm
index a597ffab99..15c4a68308 100644
--- a/code/modules/clothing/spacesuits/spacesuits.dm
+++ b/code/modules/clothing/spacesuits/spacesuits.dm
@@ -89,5 +89,5 @@
// Otherwise, remove the splints.
for(var/obj/item/organ/external/E in supporting_limbs)
E.status &= ~ ORGAN_SPLINTED
- user << "The suit stops supporting your [E.display_name]."
+ user << "The suit stops supporting your [E.name]."
supporting_limbs = list()
diff --git a/code/modules/hydroponics/seed.dm b/code/modules/hydroponics/seed.dm
index 8809849adb..6734510a5b 100644
--- a/code/modules/hydroponics/seed.dm
+++ b/code/modules/hydroponics/seed.dm
@@ -116,13 +116,13 @@
if(get_trait(TRAIT_CARNIVOROUS))
if(get_trait(TRAIT_CARNIVOROUS) == 2)
if(affecting)
- target << "\The [fruit]'s thorns pierce your [affecting.display_name] greedily!"
+ target << "\The [fruit]'s thorns pierce your [affecting.name] greedily!"
else
target << "\The [fruit]'s thorns pierce your flesh greedily!"
damage = get_trait(TRAIT_POTENCY)/2
else
if(affecting)
- target << "\The [fruit]'s thorns dig deeply into your [affecting.display_name]!"
+ target << "\The [fruit]'s thorns dig deeply into your [affecting.name]!"
else
target << "\The [fruit]'s thorns dig deeply into your flesh!"
damage = get_trait(TRAIT_POTENCY)/5
diff --git a/code/modules/mob/living/carbon/brain/brain_item.dm b/code/modules/mob/living/carbon/brain/brain_item.dm
index a240225846..d2aa61e635 100644
--- a/code/modules/mob/living/carbon/brain/brain_item.dm
+++ b/code/modules/mob/living/carbon/brain/brain_item.dm
@@ -44,19 +44,18 @@
else
user << "This one seems particularly lifeless. Perhaps it will regain some of its luster later.."
-/obj/item/organ/brain/removed(var/mob/living/target,var/mob/living/user)
+/obj/item/organ/brain/removed(var/mob/living/user)
..()
- var/mob/living/simple_animal/borer/borer = target.has_brain_worms()
+ var/mob/living/simple_animal/borer/borer = owner.has_brain_worms()
if(borer)
borer.detatch() //Should remove borer if the brain is removed - RR
- var/mob/living/carbon/human/H = target
var/obj/item/organ/brain/B = src
- if(istype(B) && istype(H))
- B.transfer_identity(target)
+ if(istype(B) && istype(owner))
+ B.transfer_identity(owner)
/obj/item/organ/brain/replaced(var/mob/living/target)
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index 3f08ce3bc1..8a8c2f8454 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -66,7 +66,7 @@
if (H.hand)
temp = H.organs_by_name["l_hand"]
if(temp && !temp.is_usable())
- H << "\red You can't use your [temp.display_name]"
+ H << "\red You can't use your [temp.name]"
return
for(var/datum/disease/D in viruses)
@@ -187,7 +187,7 @@
status = "weirdly shapen."
if(status == "")
status = "OK"
- src.show_message(text("\t []My [] is [].",status=="OK"?"\blue ":"\red ",org.display_name,status),1)
+ src.show_message(text("\t []My [] is [].",status=="OK"?"\blue ":"\red ",org.name,status),1)
if((SKELETON in H.mutations) && (!H.w_uniform) && (!H.wear_suit))
H.play_xylophone()
else if (on_fire)
diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm
index 3db0610781..7be42b5a51 100644
--- a/code/modules/mob/living/carbon/human/death.dm
+++ b/code/modules/mob/living/carbon/human/death.dm
@@ -6,12 +6,11 @@
I.throw_at(get_edge_target_turf(src,pick(alldirs)),rand(1,3),30)
for(var/obj/item/organ/external/E in src.organs)
- if(istype(E, /obj/item/organ/external/chest))
+ if(E.cannot_amputate)
+ E.removed()
+ del(E)
continue
- // Only make the limb drop if it's not too damaged
- if(prob(100 - E.get_damage()))
- // Override the current limb status and don't cause an explosion
- E.droplimb(1,1)
+ E.droplimb()
..(species.gibbed_anim)
gibs(loc, viruses, dna, null, species.flesh_color, species.blood_color)
diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm
index f7437565c7..fecda9cc0a 100644
--- a/code/modules/mob/living/carbon/human/examine.dm
+++ b/code/modules/mob/living/carbon/human/examine.dm
@@ -200,7 +200,7 @@
for(var/organ in list("l_leg","r_leg","l_arm","r_arm"))
var/obj/item/organ/external/o = get_organ(organ)
if(o && o.status & ORGAN_SPLINTED)
- msg += "[t_He] [t_has] a splint on [t_his] [o.display_name]!\n"
+ msg += "[t_He] [t_has] a splint on [t_his] [o.name]!\n"
if(suiciding)
msg += "[t_He] appears to have commited suicide... there is no hope of recovery.\n"
@@ -254,30 +254,30 @@
for(var/obj/item/organ/external/temp in organs)
if(temp)
if(temp.status & ORGAN_DESTROYED)
- is_destroyed["[temp.display_name]"] = 1
- wound_flavor_text["[temp.display_name]"] = "[t_He] is missing [t_his] [temp.display_name].\n"
+ is_destroyed["[temp.name]"] = 1
+ wound_flavor_text["[temp.name]"] = "[t_He] is missing [t_his] [temp.name].\n"
continue
if(temp.status & ORGAN_ROBOT)
if(!(temp.brute_dam + temp.burn_dam))
if(!species.flags & IS_SYNTHETIC)
- wound_flavor_text["[temp.display_name]"] = "[t_He] has a robot [temp.display_name]!\n"
+ wound_flavor_text["[temp.name]"] = "[t_He] has a robot [temp.name]!\n"
continue
else
- wound_flavor_text["[temp.display_name]"] = "[t_He] has a robot [temp.display_name]. It has"
+ wound_flavor_text["[temp.name]"] = "[t_He] has a robot [temp.name]. It has"
if(temp.brute_dam) switch(temp.brute_dam)
if(0 to 20)
- wound_flavor_text["[temp.display_name]"] += " some dents"
+ wound_flavor_text["[temp.name]"] += " some dents"
if(21 to INFINITY)
- wound_flavor_text["[temp.display_name]"] += pick(" a lot of dents"," severe denting")
+ wound_flavor_text["[temp.name]"] += pick(" a lot of dents"," severe denting")
if(temp.brute_dam && temp.burn_dam)
- wound_flavor_text["[temp.display_name]"] += " and"
+ wound_flavor_text["[temp.name]"] += " and"
if(temp.burn_dam) switch(temp.burn_dam)
if(0 to 20)
- wound_flavor_text["[temp.display_name]"] += " some burns"
+ wound_flavor_text["[temp.name]"] += " some burns"
if(21 to INFINITY)
- wound_flavor_text["[temp.display_name]"] += pick(" a lot of burns"," severe melting")
- if(wound_flavor_text["[temp.display_name]"])
- wound_flavor_text["[temp.display_name]"] += "!\n"
+ wound_flavor_text["[temp.name]"] += pick(" a lot of burns"," severe melting")
+ if(wound_flavor_text["[temp.name]"])
+ wound_flavor_text["[temp.name]"] += "!\n"
else if(temp.wounds.len > 0)
var/list/wound_descriptors = list()
for(var/datum/wound/W in temp.wounds)
@@ -325,14 +325,14 @@
else if(flavor_text.len > 1 && text > 1)
flavor_text_string += ","
flavor_text_string += flavor_text[text]
- flavor_text_string += " on [t_his] [temp.display_name].
"
- wound_flavor_text["[temp.display_name]"] = flavor_text_string
+ flavor_text_string += " on [t_his] [temp.name].
"
+ wound_flavor_text["[temp.name]"] = flavor_text_string
else
- wound_flavor_text["[temp.display_name]"] = ""
+ wound_flavor_text["[temp.name]"] = ""
if(temp.status & ORGAN_BLEEDING)
- is_bleeding["[temp.display_name]"] = 1
+ is_bleeding["[temp.name]"] = 1
else
- wound_flavor_text["[temp.display_name]"] = ""
+ wound_flavor_text["[temp.name]"] = ""
//Handles the text strings being added to the actual description.
//If they have something that covers the limb, and it is not missing, put flavortext. If it is covered but bleeding, add other flavortext.
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index 31670bcd0d..767d25c26b 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -938,8 +938,6 @@
O.status &= ~ORGAN_SPLINTED
O.status &= ~ORGAN_CUT_AWAY
O.status &= ~ORGAN_ATTACHABLE
- if (!O.amputated)
- O.status &= ~ORGAN_DESTROYED
O.wounds.Cut()
O.heal_damage(1000,1000,1,1)
@@ -1060,11 +1058,11 @@
var/msg = null
switch(rand(1,3))
if(1)
- msg ="A spike of pain jolts your [organ.display_name] as you bump [O] inside."
+ msg ="A spike of pain jolts your [organ.name] as you bump [O] inside."
if(2)
- msg ="Your movement jostles [O] in your [organ.display_name] painfully."
+ msg ="Your movement jostles [O] in your [organ.name] painfully."
if(3)
- msg ="[O] in your [organ.display_name] twists painfully as you move."
+ msg ="[O] in your [organ.name] twists painfully as you move."
src << msg
organ.take_damage(rand(1,3), 0, 0)
diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm
index 7fb1fc6058..cb2e1aec47 100644
--- a/code/modules/mob/living/carbon/human/human_attackhand.dm
+++ b/code/modules/mob/living/carbon/human/human_attackhand.dm
@@ -5,8 +5,8 @@
var/obj/item/organ/external/temp = H.organs_by_name["r_hand"]
if(H.hand)
temp = H.organs_by_name["l_hand"]
- if(temp && !temp.is_usable())
- H << "\red You can't use your [temp.display_name]."
+ if(!temp || !temp.is_usable())
+ H << "\red You can't use your hand."
return
..()
@@ -100,6 +100,10 @@
var/hit_zone = H.zone_sel.selecting
var/obj/item/organ/external/affecting = get_organ(hit_zone)
+ if(!affecting || affecting.status & ORGAN_DESTROYED)
+ M << "They are missing that limb!"
+ return
+
switch(src.a_intent)
if("help")
// We didn't see this coming, so we get the full blow
@@ -157,7 +161,7 @@
miss_type = 1
if(!miss_type && block)
- attack_message = "[H] went for [src]'s [affecting.display_name] but was blocked!"
+ attack_message = "[H] went for [src]'s [affecting.name] but was blocked!"
miss_type = 2
// See what attack they use
diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm
index 41f6b0681f..4eaf4e4560 100644
--- a/code/modules/mob/living/carbon/human/human_damage.dm
+++ b/code/modules/mob/living/carbon/human/human_damage.dm
@@ -170,21 +170,21 @@
if (candidates.len)
var/obj/item/organ/external/O = pick(candidates)
O.mutate()
- src << "Something is not right with your [O.display_name]..."
+ src << "Something is not right with your [O.name]..."
return
else
if (prob(heal_prob))
for (var/obj/item/organ/external/O in organs)
if (O.status & ORGAN_MUTATED)
O.unmutate()
- src << "Your [O.display_name] is shaped normally again."
+ src << "Your [O.name] is shaped normally again."
return
if (getCloneLoss() < 1)
for (var/obj/item/organ/external/O in organs)
if (O.status & ORGAN_MUTATED)
O.unmutate()
- src << "Your [O.display_name] is shaped normally again."
+ src << "Your [O.name] is shaped normally again."
BITSET(hud_updateflag, HEALTH_HUD)
// Defined here solely to take species flags into account without having to recast at mob/living level.
diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm
index 088a369c53..7f002de788 100644
--- a/code/modules/mob/living/carbon/human/human_defense.dm
+++ b/code/modules/mob/living/carbon/human/human_defense.dm
@@ -70,10 +70,10 @@ emp_act
u_equip(c_hand)
if (affected.status & ORGAN_ROBOT)
- emote("me", 1, "drops what they were holding, their [affected.display_name] malfunctioning!")
+ emote("me", 1, "drops what they were holding, their [affected.name] malfunctioning!")
else
var/emote_scream = pick("screams in pain and ", "lets out a sharp cry and ", "cries out and ")
- emote("me", 1, "[(species && species.flags & NO_PAIN) ? "" : emote_scream ]drops what they were holding in their [affected.display_name]!")
+ emote("me", 1, "[(species && species.flags & NO_PAIN) ? "" : emote_scream ]drops what they were holding in their [affected.name]!")
..(stun_amount, agony_amount, def_zone)
@@ -189,12 +189,12 @@ emp_act
return 0
var/obj/item/organ/external/affecting = get_organ(target_zone)
- if (!affecting)
- return 0
- if(affecting.status & ORGAN_DESTROYED)
- user << "What [affecting.display_name]?"
- return 0
- var/hit_area = affecting.display_name
+
+ if (!affecting || affecting.status & ORGAN_DESTROYED || istype(affecting, /obj/item/organ/external/stump))
+ user << "They are missing that limb!"
+ return
+
+ var/hit_area = affecting.name
if((user != src) && check_shields(I.force, "the [I.name]"))
return 0
@@ -204,9 +204,9 @@ emp_act
user << "\red That limb isn't robotic."
return
if(affecting.sabotaged)
- user << "\red [src]'s [affecting.display_name] is already sabotaged!"
+ user << "\red [src]'s [affecting.name] is already sabotaged!"
else
- user << "\red You sneakily slide [I] into the dataport on [src]'s [affecting.display_name] and short out the safeties."
+ user << "\red You sneakily slide [I] into the dataport on [src]'s [affecting.name] and short out the safeties."
var/obj/item/weapon/card/emag/emag = I
emag.uses--
affecting.sabotaged = 1
@@ -328,7 +328,7 @@ emp_act
return
var/obj/item/organ/external/affecting = get_organ(zone)
- var/hit_area = affecting.display_name
+ var/hit_area = affecting.name
src.visible_message("\red [src] has been hit in the [hit_area] by [O].")
var/armor = run_armor_check(affecting, "melee", "Your armor has protected your [hit_area].", "Your armor has softened hit to your [hit_area].") //I guess "melee" is the best fit here
diff --git a/code/modules/mob/living/carbon/human/human_organs.dm b/code/modules/mob/living/carbon/human/human_organs.dm
index 7f1b796bed..0255a23d37 100644
--- a/code/modules/mob/living/carbon/human/human_organs.dm
+++ b/code/modules/mob/living/carbon/human/human_organs.dm
@@ -41,7 +41,7 @@
//Moving around with fractured ribs won't do you any good
if (E.is_broken() && E.internal_organs && prob(15))
var/obj/item/organ/I = pick(E.internal_organs)
- custom_pain("You feel broken bones moving in your [E.display_name]!", 1)
+ custom_pain("You feel broken bones moving in your [E.name]!", 1)
I.take_damage(rand(3,5))
//Moving makes open wounds get infected much faster
diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm
index d53710d395..45fae61460 100644
--- a/code/modules/mob/living/carbon/human/species/species.dm
+++ b/code/modules/mob/living/carbon/human/species/species.dm
@@ -105,6 +105,20 @@
"eyes" = /obj/item/organ/eyes
)
+ var/list/has_limbs = list(
+ /obj/item/organ/external/chest,
+ /obj/item/organ/external/groin,
+ /obj/item/organ/external/head,
+ /obj/item/organ/external/arm,
+ /obj/item/organ/external/arm/right,
+ /obj/item/organ/external/leg,
+ /obj/item/organ/external/leg/right,
+ /obj/item/organ/external/hand,
+ /obj/item/organ/external/hand/right,
+ /obj/item/organ/external/foot,
+ /obj/item/organ/external/foot/right
+ )
+
/datum/species/New()
if(hud_type)
hud = new hud_type()
@@ -156,18 +170,8 @@
H.organs_by_name = list()
H.internal_organs_by_name = list()
- //This is a basic humanoid limb setup.
- H.organs_by_name["chest"] = new/obj/item/organ/external/chest(H)
- H.organs_by_name["groin"] = new/obj/item/organ/external/groin(H)
- H.organs_by_name["head"] = new/obj/item/organ/external/head(H)
- H.organs_by_name["l_arm"] = new/obj/item/organ/external/arm(H)
- H.organs_by_name["r_arm"] = new/obj/item/organ/external/arm/right(H)
- H.organs_by_name["r_leg"] = new/obj/item/organ/external/leg(H)
- H.organs_by_name["l_leg"] = new/obj/item/organ/external/leg/right(H)
- H.organs_by_name["l_hand"] = new/obj/item/organ/external/hand(H)
- H.organs_by_name["r_hand"] = new/obj/item/organ/external/hand/right(H)
- H.organs_by_name["l_foot"] = new/obj/item/organ/external/foot(H)
- H.organs_by_name["r_foot"] = new/obj/item/organ/external/foot/right(H)
+ for(var/limb_type in has_limbs)
+ new limb_type(H)
for(var/organ in has_organ)
var/organ_type = has_organ[organ]
diff --git a/code/modules/mob/living/carbon/human/species/species_attack.dm b/code/modules/mob/living/carbon/human/species/species_attack.dm
index 76f87ea10c..c3312b9a7a 100644
--- a/code/modules/mob/living/carbon/human/species/species_attack.dm
+++ b/code/modules/mob/living/carbon/human/species/species_attack.dm
@@ -28,7 +28,7 @@
attack_damage = Clamp(attack_damage, 1, 5)
if(target == user)
- user.visible_message("[user] [pick(attack_verb)] \himself in the [affecting.display_name]!")
+ user.visible_message("[user] [pick(attack_verb)] \himself in the [affecting.name]!")
return 0
switch(zone)
@@ -47,9 +47,9 @@
else
// ----- BODY ----- //
switch(attack_damage)
- if(1 to 2) user.visible_message("[user] scratched [target]'s [affecting.display_name]!")
- if(3 to 4) user.visible_message("[user] [pick(attack_verb)] [pick("", "", "the side of")] [target]'s [affecting.display_name]!")
- if(5) user.visible_message("[user] tears \his [pick(attack_noun)] [pick("deep into", "into", "across")] [target]'s [affecting.display_name]!")
+ if(1 to 2) user.visible_message("[user] scratched [target]'s [affecting.name]!")
+ if(3 to 4) user.visible_message("[user] [pick(attack_verb)] [pick("", "", "the side of")] [target]'s [affecting.name]!")
+ if(5) user.visible_message("[user] tears \his [pick(attack_noun)] [pick("deep into", "into", "across")] [target]'s [affecting.name]!")
/datum/unarmed_attack/claws/strong
attack_verb = list("slashed")
diff --git a/code/modules/mob/living/carbon/human/species/xenomorphs/alien_species.dm b/code/modules/mob/living/carbon/human/species/xenomorphs/alien_species.dm
index 94987c005c..b55ea779fe 100644
--- a/code/modules/mob/living/carbon/human/species/xenomorphs/alien_species.dm
+++ b/code/modules/mob/living/carbon/human/species/xenomorphs/alien_species.dm
@@ -124,7 +124,7 @@
if (E.status & ORGAN_BROKEN)
if (prob(mend_prob))
if (E.mend_fracture())
- H << "You feel something mend itself inside your [E.display_name]."
+ H << "You feel something mend itself inside your [E.name]."
return 1
return 0
diff --git a/code/modules/mob/living/carbon/human/unarmed_attack.dm b/code/modules/mob/living/carbon/human/unarmed_attack.dm
index 4ae6b2f1a6..148baf6618 100644
--- a/code/modules/mob/living/carbon/human/unarmed_attack.dm
+++ b/code/modules/mob/living/carbon/human/unarmed_attack.dm
@@ -75,7 +75,7 @@
/datum/unarmed_attack/proc/show_attack(var/mob/living/carbon/human/user, var/mob/living/carbon/human/target, var/zone, var/attack_damage)
var/obj/item/organ/external/affecting = target.get_organ(zone)
- user.visible_message("[user] [pick(attack_verb)] [target] in the [affecting.display_name]!")
+ user.visible_message("[user] [pick(attack_verb)] [target] in the [affecting.name]!")
playsound(user.loc, attack_sound, 25, 1, -1)
/datum/unarmed_attack/bite
@@ -101,7 +101,7 @@
/datum/unarmed_attack/punch/show_attack(var/mob/living/carbon/human/user, var/mob/living/carbon/human/target, var/zone, var/attack_damage)
var/obj/item/organ/external/affecting = target.get_organ(zone)
- var/organ = affecting.display_name
+ var/organ = affecting.name
attack_damage = Clamp(attack_damage, 1, 5) // We expect damage input of 1 to 5 for this proc. But we leave this check juuust in case.
@@ -172,7 +172,7 @@
/datum/unarmed_attack/kick/show_attack(var/mob/living/carbon/human/user, var/mob/living/carbon/human/target, var/zone, var/attack_damage)
var/obj/item/organ/external/affecting = target.get_organ(zone)
- var/organ = affecting.display_name
+ var/organ = affecting.name
attack_damage = Clamp(attack_damage, 1, 5)
@@ -214,7 +214,7 @@
/datum/unarmed_attack/stomp/show_attack(var/mob/living/carbon/human/user, var/mob/living/carbon/human/target, var/zone, var/attack_damage)
var/obj/item/organ/external/affecting = target.get_organ(zone)
- var/organ = affecting.display_name
+ var/organ = affecting.name
var/obj/item/clothing/shoes = user.shoes
attack_damage = Clamp(attack_damage, 1, 5)
diff --git a/code/modules/mob/living/carbon/shock.dm b/code/modules/mob/living/carbon/shock.dm
index d9b926be64..e0115d81ba 100644
--- a/code/modules/mob/living/carbon/shock.dm
+++ b/code/modules/mob/living/carbon/shock.dm
@@ -38,7 +38,7 @@
for(var/obj/item/organ/external/organ in M.organs)
if (!organ)
continue
- if((organ.status & ORGAN_DESTROYED) && !organ.amputated)
+ if(istype(organ, /obj/item/organ/external/stump))
src.traumatic_shock += 60
else if(organ.status & ORGAN_BROKEN || organ.open)
src.traumatic_shock += 30
diff --git a/code/modules/mob/living/silicon/robot/analyzer.dm b/code/modules/mob/living/silicon/robot/analyzer.dm
index 7aabd28977..cb86e52302 100644
--- a/code/modules/mob/living/silicon/robot/analyzer.dm
+++ b/code/modules/mob/living/silicon/robot/analyzer.dm
@@ -67,7 +67,7 @@
if(length(damaged)>0)
for(var/obj/item/organ/external/org in damaged)
user.show_message(text("\blue \t []: [] - []", \
- capitalize(org.display_name), \
+ capitalize(org.name), \
(org.brute_dam > 0) ? "\red [org.brute_dam]" :0, \
(org.burn_dam > 0) ? "[org.burn_dam]" :0),1)
else
diff --git a/code/modules/organs/organ.dm b/code/modules/organs/organ.dm
index 9562fcb41d..206b030a03 100644
--- a/code/modules/organs/organ.dm
+++ b/code/modules/organs/organ.dm
@@ -179,7 +179,7 @@ var/list/organ_cache = list()
var/obj/item/organ/external/parent = owner.get_organ(parent_organ)
if (!silent)
- owner.custom_pain("Something inside your [parent.display_name] hurts a lot.", 1)
+ owner.custom_pain("Something inside your [parent.name] hurts a lot.", 1)
/obj/item/organ/proc/robotize() //Being used to make robutt hearts, etc
robotic = 2
@@ -244,10 +244,11 @@ var/list/organ_cache = list()
if(!organ_blood || !organ_blood.data["blood_DNA"])
owner.vessel.trans_to(src, 5, 1, 1)
- if(owner && user && vital)
- user.attack_log += "\[[time_stamp()]\] removed a vital organ ([src]) from [owner.name] ([owner.ckey]) (INTENT: [uppertext(user.a_intent)])"
- owner.attack_log += "\[[time_stamp()]\] had a vital organ ([src]) removed by [user.name] ([user.ckey]) (INTENT: [uppertext(user.a_intent)])"
- msg_admin_attack("[user.name] ([user.ckey]) removed a vital organ ([src]) from [owner.name] ([owner.ckey]) (INTENT: [uppertext(user.a_intent)]) (JMP)")
+ if(owner && vital)
+ if(user)
+ user.attack_log += "\[[time_stamp()]\] removed a vital organ ([src]) from [owner.name] ([owner.ckey]) (INTENT: [uppertext(user.a_intent)])"
+ owner.attack_log += "\[[time_stamp()]\] had a vital organ ([src]) removed by [user.name] ([user.ckey]) (INTENT: [uppertext(user.a_intent)])"
+ msg_admin_attack("[user.name] ([user.ckey]) removed a vital organ ([src]) from [owner.name] ([owner.ckey]) (INTENT: [uppertext(user.a_intent)]) (JMP)")
owner.death()
/obj/item/organ/proc/replaced(var/mob/living/carbon/human/target,var/obj/item/organ/external/affected)
diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm
index e5ba05eef2..e7d5b0b5e7 100644
--- a/code/modules/organs/organ_external.dm
+++ b/code/modules/organs/organ_external.dm
@@ -13,16 +13,16 @@
var/max_size = 0
var/last_dam = -1
var/icon/mob_icon
+ var/icon/item_icon
var/gendered_icon = 0
var/limb_name
var/disfigured = 1
+ var/cannot_amputate
- var/display_name
var/list/wounds = list()
var/number_wounds = 0 // cache the number of wounds, which is NOT wounds.len!
- var/tmp/perma_injury = 0
- var/tmp/amputated = 0 //Whether this has been cleanly amputated, thus causing no pain
+ var/perma_injury = 0
var/obj/item/organ/external/parent
var/list/obj/item/organ/external/children
@@ -110,13 +110,16 @@
/obj/item/organ/external/New(var/mob/living/carbon/holder, var/internal)
..()
- if(owner && parent_organ && istype(owner, /mob/living/carbon/human))
+ if(owner)
var/mob/living/carbon/human/H = owner
- var/obj/item/organ/external/parent = H.organs_by_name[src.parent_organ]
- if(parent)
- if(!parent.children)
- parent.children = list()
- parent.children.Add(src)
+ if(istype(H))
+ H.organs_by_name[limb_name] = src
+ if(parent_organ)
+ parent = H.organs_by_name[src.parent_organ]
+ if(parent)
+ if(!parent.children)
+ parent.children = list()
+ parent.children.Add(src)
/****************************************************
DAMAGE PROCS
@@ -143,11 +146,12 @@
burn *= bumod //~2/3 damage for ROBOLIMBS
// High brute damage or sharp objects may damage internal organs
- if(internal_organs && ( (sharp && brute >= 5) || brute >= 10) && prob(5))
+ if(internal_organs && ((brute_dam >= max_damage) || (sharp && brute >= 5) || brute >= 10) && prob(5))
// Damage an internal organ
- var/obj/item/organ/I = pick(internal_organs)
- I.take_damage(brute / 2)
- brute -= brute / 2
+ if(internal_organs && internal_organs.len)
+ var/obj/item/organ/I = pick(internal_organs)
+ I.take_damage(brute / 2)
+ brute -= brute / 2
if(status & ORGAN_BROKEN && prob(40) && brute)
if (!(owner.species && (owner.species.flags & NO_PAIN)))
@@ -190,29 +194,18 @@
//If there are still hurties to dispense
if (burn || brute)
if (status & ORGAN_ROBOT)
- droplimb(1) //Robot limbs just kinda fail at full damage.
+ droplimb() //Robot limbs just kinda fail at full damage.
else
- //List organs we can pass it to
- var/list/obj/item/organ/external/possible_points = list()
- if(parent)
- possible_points += parent
- if(children)
- possible_points += children
- if(forbidden_limbs.len)
- possible_points -= forbidden_limbs
- if(possible_points.len)
- //And pass the pain around
- var/obj/item/organ/external/target = pick(possible_points)
- target.take_damage(brute, burn, sharp, edge, used_weapon, forbidden_limbs + src)
+ owner.shock_stage += brute+burn
// sync the organ's damage with its wounds
src.update_damages()
//If limb took enough damage, try to cut or tear it off
- if(body_part != UPPER_TORSO && body_part != LOWER_TORSO) //as hilarious as it is, getting hit on the chest too much shouldn't effectively gib you.
+ if(body_part != UPPER_TORSO) //as hilarious as it is, getting hit on the chest too much shouldn't effectively gib you.
if(config.limbs_can_break && brute_dam >= max_damage * config.organ_health_multiplier)
if( (edge && prob(5 * brute)) || (brute > 20 && prob(brute)) )
- droplimb(1)
+ droplimb()
return
owner.updatehealth()
@@ -284,7 +277,7 @@ This function completely restores a damaged organ to perfect condition.
if(damage > 15 && type != BURN && local_damage > 30 && prob(damage) && !(status & ORGAN_ROBOT))
var/datum/wound/internal_bleeding/I = new (min(damage - 15, 15))
wounds += I
- owner.custom_pain("You feel something rip in your [display_name]!", 1)
+ owner.custom_pain("You feel something rip in your [name]!", 1)
// first check whether we can widen an existing wound
if(wounds.len > 0 && prob(max(50+(number_wounds-1)*10,90)))
@@ -300,8 +293,8 @@ This function completely restores a damaged organ to perfect condition.
W.open_wound(damage)
if(prob(25))
//maybe have a separate message for BRUISE type damage?
- owner.visible_message("\red The wound on [owner.name]'s [display_name] widens with a nasty ripping noise.",\
- "\red The wound on your [display_name] widens with a nasty ripping noise.",\
+ owner.visible_message("\red The wound on [owner.name]'s [name] widens with a nasty ripping noise.",\
+ "\red The wound on your [name] widens with a nasty ripping noise.",\
"You hear a nasty ripping noise, as if flesh is being torn apart.")
return
@@ -467,7 +460,7 @@ Note that amputating the affected organ does in fact remove the infection from t
if(germ_level >= INFECTION_LEVEL_THREE && antibiotics < 30) //overdosing is necessary to stop severe infections
if (!(status & ORGAN_DEAD))
status |= ORGAN_DEAD
- owner << "You can't feel your [display_name] anymore..."
+ owner << "You can't feel your [name] anymore..."
owner.update_body(1)
germ_level++
@@ -497,7 +490,7 @@ Note that amputating the affected organ does in fact remove the infection from t
owner.vessel.remove_reagent("blood", wound_update_accuracy * W.damage/40) //line should possibly be moved to handle_blood, so all the bleeding stuff is in one place.
if(prob(1 * wound_update_accuracy))
- owner.custom_pain("You feel a stabbing pain in your [display_name]!",1)
+ owner.custom_pain("You feel a stabbing pain in your [name]!",1)
// slow healing
var/heal_amt = 0
@@ -598,35 +591,25 @@ Note that amputating the affected organ does in fact remove the infection from t
DISMEMBERMENT
****************************************************/
-//Recursive setting of all child organs to amputated
-/obj/item/organ/external/proc/setAmputatedTree()
- for(var/obj/item/organ/external/O in children)
- O.amputated=amputated
- O.setAmputatedTree()
-
//Handles dismemberment
-/obj/item/organ/external/proc/droplimb(var/override = 0,var/no_explode = 0,var/amputation=0)
+/obj/item/organ/external/proc/droplimb(var/clean)
- if(status & ORGAN_DESTROYED)
- if(body_part == UPPER_TORSO)
- return
+ if(cannot_amputate)
+ return
- //if(clean) //todo
+ if(!clean)
+ owner.visible_message(
+ "\The [owner]'s [src.name] flies off in an arc!",\
+ "Your [src.name] goes flying off!",\
+ "You hear a terrible sound of ripping tendons and flesh.")
- owner.visible_message(
- "\The [owner]'s [src.name] flies off in an arc!",\
- "Your [src.name] goes flying off!",\
- "You hear a terrible sound of ripping tendons and flesh.")
-
- if(parent)
- parent.children -= src
src.removed()
if(parent)
- spawn(1)
- parent.take_damage(20,0,50,0) // Leave a bloody stump to remember us by.
- parent.update_health()
- parent = null
+ parent.children -= src
+ if(!clean)
+ new /obj/item/organ/external/stump(owner, 0, src)
+ parent = null
update_health()
owner.update_body()
@@ -638,16 +621,18 @@ Note that amputating the affected organ does in fact remove the infection from t
M.Turn(rand(180))
src.transform = M
- // Throw limb around.
- if(src && istype(loc,/turf))
- throw_at(get_edge_target_turf(src,pick(alldirs)),rand(1,3),30)
+ if(!clean)
+ // Throw limb around.
+ if(src && istype(loc,/turf))
+ throw_at(get_edge_target_turf(src,pick(alldirs)),rand(1,3),30)
/****************************************************
HELPERS
****************************************************/
-/obj/item/organ/replaced()
+/obj/item/organ/external/replaced()
get_icon()
+ icon = mob_icon
return ..()
/obj/item/organ/external/proc/release_restraints()
@@ -706,7 +691,7 @@ Note that amputating the affected organ does in fact remove the infection from t
owner.visible_message(\
"\red You hear a loud cracking sound coming from \the [owner].",\
- "\red Something feels like it shattered in your [display_name]!",\
+ "\red Something feels like it shattered in your [name]!",\
"You hear a sickening crack.")
if(owner.species && !(owner.species.flags & NO_PAIN))
@@ -734,7 +719,7 @@ Note that amputating the affected organ does in fact remove the infection from t
if(isnull(suit.supporting_limbs))
return
- owner << "You feel \the [suit] constrict about your [display_name], supporting it."
+ owner << "You feel \the [suit] constrict about your [name], supporting it."
status |= ORGAN_SPLINTED
suit.supporting_limbs |= src
return
@@ -816,15 +801,15 @@ Note that amputating the affected organ does in fact remove the infection from t
status |= ORGAN_DESTROYED
owner.bad_external_organs -= src
+ icon = item_icon
+
for(var/implant in implants) //todo: check if this can be left alone
del(implant)
- wounds.Cut() //todo: wound on the parent organ
-
// Attached organs also fly off.
for(var/obj/item/organ/external/O in children)
O.removed()
- O.loc = src //TODO: generate entire limb icons from contents.
+ O.loc = src
// Grab all the internal giblets too.
for(var/obj/item/organ/organ in internal_organs)
@@ -867,6 +852,7 @@ Note that amputating the affected organ does in fact remove the infection from t
joint = "neck"
dislocated = -1
gendered_icon = 1
+ cannot_amputate = 1
/obj/item/organ/external/groin
name = "lower body"
diff --git a/code/modules/organs/organ_icon.dm b/code/modules/organs/organ_icon.dm
index f25d497739..7fbdf3bf1d 100644
--- a/code/modules/organs/organ_icon.dm
+++ b/code/modules/organs/organ_icon.dm
@@ -56,7 +56,9 @@ var/global/list/limb_icon_cache = list()
mob_icon.Blend(rgb(owner.r_skin, owner.g_skin, owner.b_skin), ICON_ADD)
dir = EAST
+ item_icon = icon(mob_icon,icon_state,SOUTH)
icon = mob_icon
+
return mob_icon
/obj/item/organ/external/head/get_icon(var/skeletal)
diff --git a/code/modules/organs/organ_internal.dm b/code/modules/organs/organ_internal.dm
index 62eace6392..c552631abf 100644
--- a/code/modules/organs/organ_internal.dm
+++ b/code/modules/organs/organ_internal.dm
@@ -176,15 +176,15 @@
icon_state = "appendix"
parent_organ = "groin"
-/obj/item/organ/appendix/removed(var/mob/living/target,var/mob/living/user)
+/obj/item/organ/appendix/removed()
..()
var/inflamed = 0
- for(var/datum/disease/appendicitis/appendicitis in target.viruses)
+ for(var/datum/disease/appendicitis/appendicitis in owner.viruses)
inflamed = 1
appendicitis.cure()
- target.resistances += appendicitis
+ owner.resistances += appendicitis
if(inflamed)
icon_state = "appendixinflamed"
diff --git a/code/modules/organs/organ_stump.dm b/code/modules/organs/organ_stump.dm
new file mode 100644
index 0000000000..1a673b84e5
--- /dev/null
+++ b/code/modules/organs/organ_stump.dm
@@ -0,0 +1,35 @@
+/obj/item/organ/external/stump
+ name = "limb stump"
+ icon_name = ""
+ dislocated = -1
+ cannot_amputate = 1
+
+/obj/item/organ/external/stump/New(var/mob/living/carbon/holder, var/internal, var/obj/item/organ/external/limb)
+ if(istype(limb))
+ limb_name = limb.limb_name
+ body_part = limb.body_part
+ amputation_point = limb.amputation_point
+ joint = limb.joint
+ parent_organ = limb.parent_organ
+ wounds = limb.wounds
+ ..(holder, internal)
+ if(istype(limb))
+ max_damage = limb.max_damage
+
+/obj/item/organ/external/stump/process()
+ damage = max_damage
+
+/obj/item/organ/external/stump/handle_rejection()
+ return
+
+/obj/item/organ/external/stump/rejuvenate()
+ return
+
+/obj/item/organ/external/stump/is_damaged()
+ return 1
+
+/obj/item/organ/external/stump/is_bruised()
+ return 1
+
+/obj/item/organ/external/stump/is_broken()
+ return 1
diff --git a/code/modules/organs/pain.dm b/code/modules/organs/pain.dm
index c1521650af..e500125a2c 100644
--- a/code/modules/organs/pain.dm
+++ b/code/modules/organs/pain.dm
@@ -90,7 +90,6 @@ mob/living/carbon/human/proc/handle_pain()
var/obj/item/organ/external/damaged_organ = null
for(var/obj/item/organ/external/E in organs)
// amputated limbs don't cause pain
- if(E.amputated) continue
if(E.status & ORGAN_DEAD) continue
var/dam = E.get_damage()
// make the choice of the organ depend on damage,
@@ -99,13 +98,13 @@ mob/living/carbon/human/proc/handle_pain()
damaged_organ = E
maxdam = dam
if(damaged_organ)
- pain(damaged_organ.display_name, maxdam, 0)
+ pain(damaged_organ.name, maxdam, 0)
// Damage to internal organs hurts a lot.
for(var/obj/item/organ/I in internal_organs)
if(I.damage > 2) if(prob(2))
var/obj/item/organ/external/parent = get_organ(I.parent_organ)
- src.custom_pain("You feel a sharp pain in your [parent.display_name]", 1)
+ src.custom_pain("You feel a sharp pain in your [parent.name]", 1)
var/toxDamageMessage = null
var/toxMessageProb = 1
diff --git a/code/modules/paperwork/paperbin.dm b/code/modules/paperwork/paperbin.dm
index 7a89f12508..a2219b262a 100644
--- a/code/modules/paperwork/paperbin.dm
+++ b/code/modules/paperwork/paperbin.dm
@@ -28,7 +28,7 @@
if (H.hand)
temp = H.organs_by_name["l_hand"]
if(temp && !temp.is_usable())
- user << "You try to move your [temp.display_name], but cannot!"
+ user << "You try to move your [temp.name], but cannot!"
return
var/response = ""
if(!papers.len > 0)
diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm
index 175dc4f1e6..f652ebe9ec 100644
--- a/code/modules/power/cable.dm
+++ b/code/modules/power/cable.dm
@@ -527,7 +527,7 @@ obj/structure/cable/proc/cableColor(var/colorC)
if(S.burn_dam > 0 && use(1))
S.heal_damage(0,15,0,1)
- user.visible_message("\red \The [user] repairs some burn damage on \the [M]'s [S.display_name] with \the [src].")
+ user.visible_message("\red \The [user] repairs some burn damage on \the [M]'s [S.name] with \the [src].")
return
else
user << "Nothing to fix!"
diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm
index e802cdeffb..2e68c80d98 100644
--- a/code/modules/reagents/reagent_containers/syringes.dm
+++ b/code/modules/reagents/reagent_containers/syringes.dm
@@ -237,12 +237,11 @@
var/target_zone = ran_zone(check_zone(user.zone_sel.selecting, target))
var/obj/item/organ/external/affecting = target:get_organ(target_zone)
- if (!affecting)
+ if (!affecting || affecting.status & ORGAN_DESTROYED || istype(affecting, /obj/item/organ/external/stump))
+ user << "They are missing that limb!"
return
- if(affecting.status & ORGAN_DESTROYED)
- user << "What [affecting.display_name]?"
- return
- var/hit_area = affecting.display_name
+
+ var/hit_area = affecting.name
var/mob/living/carbon/human/H = target
if((user != target) && H.check_shields(7, "the [src.name]"))
diff --git a/code/modules/surgery/bones.dm b/code/modules/surgery/bones.dm
index d48c39a80a..cb7af6267b 100644
--- a/code/modules/surgery/bones.dm
+++ b/code/modules/surgery/bones.dm
@@ -23,21 +23,21 @@
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)
if (affected.stage == 0)
- user.visible_message("[user] starts applying medication to the damaged bones in [target]'s [affected.display_name] with \the [tool]." , \
- "You start applying medication to the damaged bones in [target]'s [affected.display_name] with \the [tool].")
- target.custom_pain("Something in your [affected.display_name] is causing you a lot of pain!",1)
+ user.visible_message("[user] starts applying medication to the damaged bones in [target]'s [affected.name] with \the [tool]." , \
+ "You start applying medication to the damaged bones in [target]'s [affected.name] with \the [tool].")
+ target.custom_pain("Something in your [affected.name] is causing you a lot of pain!",1)
..()
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
- user.visible_message("\blue [user] applies some [tool] to [target]'s bone in [affected.display_name]", \
- "\blue You apply some [tool] to [target]'s bone in [affected.display_name] with \the [tool].")
+ user.visible_message("\blue [user] applies some [tool] to [target]'s bone in [affected.name]", \
+ "\blue You apply some [tool] to [target]'s bone in [affected.name] with \the [tool].")
affected.stage = 1
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
- user.visible_message("\red [user]'s hand slips, smearing [tool] in the incision in [target]'s [affected.display_name]!" , \
- "\red Your hand slips, smearing [tool] in the incision in [target]'s [affected.display_name]!")
+ user.visible_message("\red [user]'s hand slips, smearing [tool] in the incision in [target]'s [affected.name]!" , \
+ "\red Your hand slips, smearing [tool] in the incision in [target]'s [affected.name]!")
/datum/surgery_step/set_bone
allowed_tools = list(
@@ -56,26 +56,26 @@
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)
- user.visible_message("[user] is beginning to set the bone in [target]'s [affected.display_name] in place with \the [tool]." , \
- "You are beginning to set the bone in [target]'s [affected.display_name] in place with \the [tool].")
- target.custom_pain("The pain in your [affected.display_name] is going to make you pass out!",1)
+ user.visible_message("[user] is beginning to set the bone in [target]'s [affected.name] in place with \the [tool]." , \
+ "You are beginning to set the bone in [target]'s [affected.name] in place with \the [tool].")
+ target.custom_pain("The pain in your [affected.name] is going to make you pass out!",1)
..()
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
if (affected.status & ORGAN_BROKEN)
- user.visible_message("\blue [user] sets the bone in [target]'s [affected.display_name] in place with \the [tool].", \
- "\blue You set the bone in [target]'s [affected.display_name] in place with \the [tool].")
+ user.visible_message("\blue [user] sets the bone in [target]'s [affected.name] in place with \the [tool].", \
+ "\blue You set the bone in [target]'s [affected.name] in place with \the [tool].")
affected.stage = 2
else
- user.visible_message("\blue [user] sets the bone in [target]'s [affected.display_name]\red in the WRONG place with \the [tool].", \
- "\blue You set the bone in [target]'s [affected.display_name]\red in the WRONG place with \the [tool].")
+ user.visible_message("\blue [user] sets the bone in [target]'s [affected.name]\red in the WRONG place with \the [tool].", \
+ "\blue You set the bone in [target]'s [affected.name]\red in the WRONG place with \the [tool].")
affected.fracture()
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
- user.visible_message("\red [user]'s hand slips, damaging the bone in [target]'s [affected.display_name] with \the [tool]!" , \
- "\red Your hand slips, damaging the bone in [target]'s [affected.display_name] with \the [tool]!")
+ user.visible_message("\red [user]'s hand slips, damaging the bone in [target]'s [affected.name] with \the [tool]!" , \
+ "\red Your hand slips, damaging the bone in [target]'s [affected.name] with \the [tool]!")
affected.createwound(BRUISE, 5)
/datum/surgery_step/mend_skull
@@ -131,14 +131,14 @@
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)
- user.visible_message("[user] starts to finish mending the damaged bones in [target]'s [affected.display_name] with \the [tool].", \
- "You start to finish mending the damaged bones in [target]'s [affected.display_name] with \the [tool].")
+ user.visible_message("[user] starts to finish mending the damaged bones in [target]'s [affected.name] with \the [tool].", \
+ "You start to finish mending the damaged bones in [target]'s [affected.name] with \the [tool].")
..()
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
- user.visible_message("\blue [user] has mended the damaged bones in [target]'s [affected.display_name] with \the [tool]." , \
- "\blue You have mended the damaged bones in [target]'s [affected.display_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]." )
affected.status &= ~ORGAN_BROKEN
affected.status &= ~ORGAN_SPLINTED
affected.stage = 0
@@ -146,5 +146,5 @@
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
- user.visible_message("\red [user]'s hand slips, smearing [tool] in the incision in [target]'s [affected.display_name]!" , \
- "\red Your hand slips, smearing [tool] in the incision in [target]'s [affected.display_name]!")
\ No newline at end of file
+ user.visible_message("\red [user]'s hand slips, smearing [tool] in the incision in [target]'s [affected.name]!" , \
+ "\red Your hand slips, smearing [tool] in the incision in [target]'s [affected.name]!")
\ No newline at end of file
diff --git a/code/modules/surgery/encased.dm b/code/modules/surgery/encased.dm
index 288d756aa6..1d5597a7c3 100644
--- a/code/modules/surgery/encased.dm
+++ b/code/modules/surgery/encased.dm
@@ -38,7 +38,7 @@
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.display_name]!",1)
+ 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)
@@ -85,10 +85,10 @@
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.display_name] with \the [tool]."
- var/self_msg = "You start to force open the [affected.encased] in [target]'s [affected.display_name] with \the [tool]."
+ 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.display_name]!",1)
+ 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)
@@ -145,7 +145,7 @@
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.display_name]!",1)
+ 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)
@@ -202,7 +202,7 @@
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.display_name]!",1)
+ 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)
diff --git a/code/modules/surgery/generic.dm b/code/modules/surgery/generic.dm
index 0586fbc505..d8057fa26b 100644
--- a/code/modules/surgery/generic.dm
+++ b/code/modules/surgery/generic.dm
@@ -41,15 +41,15 @@
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)
- user.visible_message("[user] starts the bloodless incision on [target]'s [affected.display_name] with \the [tool].", \
- "You start the bloodless incision on [target]'s [affected.display_name] with \the [tool].")
- target.custom_pain("You feel a horrible, searing pain in your [affected.display_name]!",1)
+ user.visible_message("[user] starts the bloodless incision on [target]'s [affected.name] with \the [tool].", \
+ "You start the bloodless incision on [target]'s [affected.name] with \the [tool].")
+ target.custom_pain("You feel a horrible, searing pain in your [affected.name]!",1)
..()
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
- user.visible_message("\blue [user] has made a bloodless incision on [target]'s [affected.display_name] with \the [tool].", \
- "\blue You have made a bloodless incision on [target]'s [affected.display_name] with \the [tool].",)
+ user.visible_message("\blue [user] has made a bloodless incision on [target]'s [affected.name] with \the [tool].", \
+ "\blue You have made a bloodless incision on [target]'s [affected.name] with \the [tool].",)
//Could be cleaner ...
affected.open = 1
@@ -62,8 +62,8 @@
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
- user.visible_message("\red [user]'s hand slips as the blade sputters, searing a long gash in [target]'s [affected.display_name] with \the [tool]!", \
- "\red Your hand slips as the blade sputters, searing a long gash in [target]'s [affected.display_name] with \the [tool]!")
+ user.visible_message("\red [user]'s hand slips as the blade sputters, searing a long gash in [target]'s [affected.name] with \the [tool]!", \
+ "\red Your hand slips as the blade sputters, searing a long gash in [target]'s [affected.name] with \the [tool]!")
affected.createwound(CUT, 7.5)
affected.createwound(BURN, 12.5)
@@ -82,15 +82,15 @@
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)
- user.visible_message("[user] starts to construct a prepared incision on and within [target]'s [affected.display_name] with \the [tool].", \
- "You start to construct a prepared incision on and within [target]'s [affected.display_name] with \the [tool].")
- target.custom_pain("You feel a horrible, searing pain in your [affected.display_name] as it is pushed apart!",1)
+ user.visible_message("[user] starts to construct a prepared incision on and within [target]'s [affected.name] with \the [tool].", \
+ "You start to construct a prepared incision on and within [target]'s [affected.name] with \the [tool].")
+ target.custom_pain("You feel a horrible, searing pain in your [affected.name] as it is pushed apart!",1)
..()
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
- user.visible_message("\blue [user] has constructed a prepared incision on and within [target]'s [affected.display_name] with \the [tool].", \
- "\blue You have constructed a prepared incision on and within [target]'s [affected.display_name] with \the [tool].",)
+ user.visible_message("\blue [user] has constructed a prepared incision on and within [target]'s [affected.name] with \the [tool].", \
+ "\blue You have constructed a prepared incision on and within [target]'s [affected.name] with \the [tool].",)
affected.open = 1
if(istype(target) && !(target.species.flags & NO_BLOOD))
@@ -102,8 +102,8 @@
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
- user.visible_message("\red [user]'s hand jolts as the system sparks, ripping a gruesome hole in [target]'s [affected.display_name] with \the [tool]!", \
- "\red Your hand jolts as the system sparks, ripping a gruesome hole in [target]'s [affected.display_name] with \the [tool]!")
+ user.visible_message("\red [user]'s hand jolts as the system sparks, ripping a gruesome hole in [target]'s [affected.name] with \the [tool]!", \
+ "\red Your hand jolts as the system sparks, ripping a gruesome hole in [target]'s [affected.name] with \the [tool]!")
affected.createwound(CUT, 20)
affected.createwound(BURN, 15)
@@ -124,15 +124,15 @@
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)
- user.visible_message("[user] starts the incision on [target]'s [affected.display_name] with \the [tool].", \
- "You start the incision on [target]'s [affected.display_name] with \the [tool].")
- target.custom_pain("You feel a horrible pain as if from a sharp knife in your [affected.display_name]!",1)
+ user.visible_message("[user] starts the incision on [target]'s [affected.name] with \the [tool].", \
+ "You start the incision on [target]'s [affected.name] with \the [tool].")
+ target.custom_pain("You feel a horrible pain as if from a sharp knife in your [affected.name]!",1)
..()
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
- user.visible_message("\blue [user] has made an incision on [target]'s [affected.display_name] with \the [tool].", \
- "\blue You have made an incision on [target]'s [affected.display_name] with \the [tool].",)
+ user.visible_message("\blue [user] has made an incision on [target]'s [affected.name] with \the [tool].", \
+ "\blue You have made an incision on [target]'s [affected.name] with \the [tool].",)
affected.open = 1
if(istype(target) && !(target.species.flags & NO_BLOOD))
@@ -142,8 +142,8 @@
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
- user.visible_message("\red [user]'s hand slips, slicing open [target]'s [affected.display_name] in the wrong place with \the [tool]!", \
- "\red Your hand slips, slicing open [target]'s [affected.display_name] in the wrong place with \the [tool]!")
+ user.visible_message("\red [user]'s hand slips, slicing open [target]'s [affected.name] in the wrong place with \the [tool]!", \
+ "\red Your hand slips, slicing open [target]'s [affected.name] in the wrong place with \the [tool]!")
affected.createwound(CUT, 10)
/datum/surgery_step/generic/clamp_bleeders
@@ -163,22 +163,22 @@
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)
- user.visible_message("[user] starts clamping bleeders in [target]'s [affected.display_name] with \the [tool].", \
- "You start clamping bleeders in [target]'s [affected.display_name] with \the [tool].")
- target.custom_pain("The pain in your [affected.display_name] is maddening!",1)
+ user.visible_message("[user] starts clamping bleeders in [target]'s [affected.name] with \the [tool].", \
+ "You start clamping bleeders in [target]'s [affected.name] with \the [tool].")
+ target.custom_pain("The pain in your [affected.name] is maddening!",1)
..()
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
- user.visible_message("\blue [user] clamps bleeders in [target]'s [affected.display_name] with \the [tool].", \
- "\blue You clamp bleeders in [target]'s [affected.display_name] with \the [tool].")
+ user.visible_message("\blue [user] clamps bleeders in [target]'s [affected.name] with \the [tool].", \
+ "\blue You clamp bleeders in [target]'s [affected.name] with \the [tool].")
affected.clamp()
spread_germs_to_organ(affected, user)
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
- user.visible_message("\red [user]'s hand slips, tearing blood vessals and causing massive bleeding in [target]'s [affected.display_name] with \the [tool]!", \
- "\red Your hand slips, tearing blood vessels and causing massive bleeding in [target]'s [affected.display_name] with \the [tool]!",)
+ user.visible_message("\red [user]'s hand slips, tearing blood vessals and causing massive bleeding in [target]'s [affected.name] with \the [tool]!", \
+ "\red Your hand slips, tearing blood vessels and causing massive bleeding in [target]'s [affected.name] with \the [tool]!",)
affected.createwound(CUT, 10)
/datum/surgery_step/generic/retract_skin
@@ -198,8 +198,8 @@
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)
- var/msg = "[user] starts to pry open the incision on [target]'s [affected.display_name] with \the [tool]."
- var/self_msg = "You start to pry open the incision on [target]'s [affected.display_name] with \the [tool]."
+ var/msg = "[user] starts to pry open the incision on [target]'s [affected.name] with \the [tool]."
+ var/self_msg = "You start to pry open the incision on [target]'s [affected.name] with \the [tool]."
if (target_zone == "chest")
msg = "[user] starts to separate the ribcage and rearrange the organs in [target]'s torso with \the [tool]."
self_msg = "You start to separate the ribcage and rearrange the organs in [target]'s torso with \the [tool]."
@@ -207,13 +207,13 @@
msg = "[user] starts to pry open the incision and rearrange the organs in [target]'s lower abdomen with \the [tool]."
self_msg = "You start to pry open the incision and rearrange the organs in [target]'s lower abdomen with \the [tool]."
user.visible_message(msg, self_msg)
- target.custom_pain("It feels like the skin on your [affected.display_name] is on fire!",1)
+ target.custom_pain("It feels like the skin on your [affected.name] is on fire!",1)
..()
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
- var/msg = "\blue [user] keeps the incision open on [target]'s [affected.display_name] with \the [tool]."
- var/self_msg = "\blue You keep the incision open on [target]'s [affected.display_name] with \the [tool]."
+ var/msg = "\blue [user] keeps the incision open on [target]'s [affected.name] with \the [tool]."
+ var/self_msg = "\blue You keep the incision open on [target]'s [affected.name] with \the [tool]."
if (target_zone == "chest")
msg = "\blue [user] keeps the ribcage open on [target]'s torso with \the [tool]."
self_msg = "\blue You keep the ribcage open on [target]'s torso with \the [tool]."
@@ -225,8 +225,8 @@
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
- var/msg = "\red [user]'s hand slips, tearing the edges of the incision on [target]'s [affected.display_name] with \the [tool]!"
- var/self_msg = "\red Your hand slips, tearing the edges of the incision on [target]'s [affected.display_name] with \the [tool]!"
+ var/msg = "\red [user]'s hand slips, tearing the edges of the incision on [target]'s [affected.name] with \the [tool]!"
+ var/self_msg = "\red Your hand slips, tearing the edges of the incision on [target]'s [affected.name] with \the [tool]!"
if (target_zone == "chest")
msg = "\red [user]'s hand slips, damaging several organs in [target]'s torso with \the [tool]!"
self_msg = "\red Your hand slips, damaging several organs in [target]'s torso with \the [tool]!"
@@ -254,23 +254,23 @@
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)
- user.visible_message("[user] is beginning to cauterize the incision on [target]'s [affected.display_name] with \the [tool]." , \
- "You are beginning to cauterize the incision on [target]'s [affected.display_name] with \the [tool].")
- target.custom_pain("Your [affected.display_name] is being burned!",1)
+ user.visible_message("[user] is beginning to cauterize the incision on [target]'s [affected.name] with \the [tool]." , \
+ "You are beginning to cauterize the incision on [target]'s [affected.name] with \the [tool].")
+ target.custom_pain("Your [affected.name] is being burned!",1)
..()
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
- user.visible_message("\blue [user] cauterizes the incision on [target]'s [affected.display_name] with \the [tool].", \
- "\blue You cauterize the incision on [target]'s [affected.display_name] with \the [tool].")
+ user.visible_message("\blue [user] cauterizes the incision on [target]'s [affected.name] with \the [tool].", \
+ "\blue You cauterize the incision on [target]'s [affected.name] with \the [tool].")
affected.open = 0
affected.germ_level = 0
affected.status &= ~ORGAN_BLEEDING
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
- user.visible_message("\red [user]'s hand slips, leaving a small burn on [target]'s [affected.display_name] with \the [tool]!", \
- "\red Your hand slips, leaving a small burn on [target]'s [affected.display_name] with \the [tool]!")
+ user.visible_message("\red [user]'s hand slips, leaving a small burn on [target]'s [affected.name] with \the [tool]!", \
+ "\red Your hand slips, leaving a small burn on [target]'s [affected.name] with \the [tool]!")
target.apply_damage(3, BURN, affected)
/datum/surgery_step/generic/amputate
@@ -292,24 +292,24 @@
return 0
if (affected.status & ORGAN_DESTROYED)
return 0
- return target_zone != "chest" && target_zone != "groin" && target_zone != "head"
+ return !affected.cannot_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)
- user.visible_message("[user] is beginning to amputate [target]'s [affected.display_name] with \the [tool]." , \
+ user.visible_message("[user] is beginning to amputate [target]'s [affected.name] with \the [tool]." , \
"You are beginning to cut through [target]'s [affected.amputation_point] with \the [tool].")
target.custom_pain("Your [affected.amputation_point] is being ripped apart!",1)
..()
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
- user.visible_message("\blue [user] amputates [target]'s [affected.display_name] with \the [tool].", \
- "\blue You amputate [target]'s [affected.display_name] with \the [tool].")
- affected.droplimb(1,1,1)
+ user.visible_message("\blue [user] amputates [target]'s [affected.name] at the [affected.amputation_point] with \the [tool].", \
+ "\blue You amputate [target]'s [affected.name] with \the [tool].")
+ affected.droplimb(1)
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
- user.visible_message("\red [user]'s hand slips, sawwing through the bone in [target]'s [affected.display_name] with \the [tool]!", \
- "\red Your hand slips, sawwing through the bone in [target]'s [affected.display_name] with \the [tool]!")
+ user.visible_message("\red [user]'s hand slips, sawing through the bone in [target]'s [affected.name] with \the [tool]!", \
+ "\red Your hand slips, sawwing through the bone in [target]'s [affected.name] with \the [tool]!")
affected.createwound(CUT, 30)
affected.fracture()
diff --git a/code/modules/surgery/headreattach.dm b/code/modules/surgery/headreattach.dm
index 28759cbc73..0039ed6a55 100644
--- a/code/modules/surgery/headreattach.dm
+++ b/code/modules/surgery/headreattach.dm
@@ -47,8 +47,8 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
if (affected.parent)
affected = affected.parent
- user.visible_message("\red [user]'s hand slips, ripping [target]'s [affected.display_name] open!", \
- "\red Your hand slips, ripping [target]'s [affected.display_name] open!")
+ user.visible_message("\red [user]'s hand slips, ripping [target]'s [affected.name] open!", \
+ "\red Your hand slips, ripping [target]'s [affected.name] open!")
affected.createwound(CUT, 10)
@@ -69,7 +69,7 @@
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)
user.visible_message("[user] is beginning to reshape [target]'s esophagal and vocal region with \the [tool].", \
- "You start to reshape [target]'s [affected.display_name] esophagal and vocal region with \the [tool].")
+ "You start to reshape [target]'s [affected.name] esophagal and vocal region with \the [tool].")
..()
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
@@ -142,8 +142,6 @@
"\blue You have finished adjusting the area around [target]'s neck with \the [tool].")
target.op_stage.head_reattach = 0
affected.status |= ORGAN_ATTACHABLE
- affected.amputated = 1
- affected.setAmputatedTree()
affected.open = 0
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
@@ -151,7 +149,7 @@
if (affected.parent)
affected = affected.parent
user.visible_message("\red [user]'s hand slips, searing [target]'s neck!", \
- "\red Your hand slips, searing [target]'s [affected.display_name]!")
+ "\red Your hand slips, searing [target]'s [affected.name]!")
target.apply_damage(10, BURN, affected)
@@ -176,7 +174,6 @@
user.visible_message("\blue [user] has attached [target]'s head to the body.", \
"\blue You have attached [target]'s head to the body.")
affected.status = 0
- affected.amputated = 0
target.update_body()
target.updatehealth()
target.UpdateDamageIcon()
diff --git a/code/modules/surgery/implant.dm b/code/modules/surgery/implant.dm
index 801bc10cc3..61a70fde53 100644
--- a/code/modules/surgery/implant.dm
+++ b/code/modules/surgery/implant.dm
@@ -62,8 +62,8 @@
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/chest/affected = target.get_organ(target_zone)
- user.visible_message("\red [user]'s hand slips, scraping tissue inside [target]'s [affected.display_name] with \the [tool]!", \
- "\red Your hand slips, scraping tissue inside [target]'s [affected.display_name] with \the [tool]!")
+ user.visible_message("\red [user]'s hand slips, scraping tissue inside [target]'s [affected.name] with \the [tool]!", \
+ "\red Your hand slips, scraping tissue inside [target]'s [affected.name] with \the [tool]!")
affected.createwound(CUT, 20)
/datum/surgery_step/cavity/close_space
@@ -98,8 +98,8 @@
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/chest/affected = target.get_organ(target_zone)
- user.visible_message("\red [user]'s hand slips, scraping tissue inside [target]'s [affected.display_name] with \the [tool]!", \
- "\red Your hand slips, scraping tissue inside [target]'s [affected.display_name] with \the [tool]!")
+ user.visible_message("\red [user]'s hand slips, scraping tissue inside [target]'s [affected.name] with \the [tool]!", \
+ "\red Your hand slips, scraping tissue inside [target]'s [affected.name] with \the [tool]!")
affected.createwound(CUT, 20)
/datum/surgery_step/cavity/place_item
@@ -130,7 +130,7 @@
user << "\red You tear some blood vessels trying to fit such a big object in this cavity."
var/datum/wound/internal_bleeding/I = new (10)
affected.wounds += I
- affected.owner.custom_pain("You feel something rip in your [affected.display_name]!", 1)
+ affected.owner.custom_pain("You feel something rip in your [affected.name]!", 1)
user.drop_item()
affected.hidden = tool
tool.loc = target
@@ -138,8 +138,8 @@
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/chest/affected = target.get_organ(target_zone)
- user.visible_message("\red [user]'s hand slips, scraping tissue inside [target]'s [affected.display_name] with \the [tool]!", \
- "\red Your hand slips, scraping tissue inside [target]'s [affected.display_name] with \the [tool]!")
+ user.visible_message("\red [user]'s hand slips, scraping tissue inside [target]'s [affected.name] with \the [tool]!", \
+ "\red Your hand slips, scraping tissue inside [target]'s [affected.name] with \the [tool]!")
affected.createwound(CUT, 20)
//////////////////////////////////////////////////////////////////
@@ -162,8 +162,8 @@
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)
- user.visible_message("[user] starts poking around inside the incision on [target]'s [affected.display_name] with \the [tool].", \
- "You start poking around inside the incision on [target]'s [affected.display_name] with \the [tool]" )
+ user.visible_message("[user] starts poking around inside the incision on [target]'s [affected.name] with \the [tool].", \
+ "You start poking around inside the incision on [target]'s [affected.name] with \the [tool]" )
target.custom_pain("The pain in your chest is living hell!",1)
..()
@@ -186,8 +186,8 @@
find_prob +=50
if (prob(find_prob))
- user.visible_message("\blue [user] takes something out of incision on [target]'s [affected.display_name] with \the [tool].", \
- "\blue You take [obj] out of incision on [target]'s [affected.display_name]s with \the [tool]." )
+ user.visible_message("\blue [user] takes something out of incision on [target]'s [affected.name] with \the [tool].", \
+ "\blue You take [obj] out of incision on [target]'s [affected.name]s with \the [tool]." )
affected.implants -= obj
BITSET(target.hud_updateflag, IMPLOYAL_HUD)
@@ -206,11 +206,11 @@
imp.imp_in = null
imp.implanted = 0
else
- user.visible_message("\blue [user] removes \the [tool] from [target]'s [affected.display_name].", \
- "\blue There's something inside [target]'s [affected.display_name], but you just missed it this time." )
+ user.visible_message("\blue [user] removes \the [tool] from [target]'s [affected.name].", \
+ "\blue There's something inside [target]'s [affected.name], but you just missed it this time." )
else if (affected.hidden)
- user.visible_message("\blue [user] takes something out of incision on [target]'s [affected.display_name] with \the [tool].", \
- "\blue You take something out of incision on [target]'s [affected.display_name]s with \the [tool]." )
+ user.visible_message("\blue [user] takes something out of incision on [target]'s [affected.name] with \the [tool].", \
+ "\blue You take something out of incision on [target]'s [affected.name]s with \the [tool]." )
affected.hidden.loc = get_turf(target)
if(!affected.hidden.blood_DNA)
affected.hidden.blood_DNA = list()
@@ -219,20 +219,20 @@
affected.hidden = null
else
- user.visible_message("\blue [user] could not find anything inside [target]'s [affected.display_name], and pulls \the [tool] out.", \
- "\blue You could not find anything inside [target]'s [affected.display_name]." )
+ user.visible_message("\blue [user] could not find anything inside [target]'s [affected.name], and pulls \the [tool] out.", \
+ "\blue You could not find anything inside [target]'s [affected.name]." )
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/chest/affected = target.get_organ(target_zone)
- user.visible_message("\red [user]'s hand slips, scraping tissue inside [target]'s [affected.display_name] with \the [tool]!", \
- "\red Your hand slips, scraping tissue inside [target]'s [affected.display_name] with \the [tool]!")
+ user.visible_message("\red [user]'s hand slips, scraping tissue inside [target]'s [affected.name] with \the [tool]!", \
+ "\red Your hand slips, scraping tissue inside [target]'s [affected.name] with \the [tool]!")
affected.createwound(CUT, 20)
if (affected.implants.len)
var/fail_prob = 10
fail_prob += 100 - tool_quality(tool)
if (prob(fail_prob))
var/obj/item/weapon/implant/imp = affected.implants[1]
- user.visible_message("\red Something beeps inside [target]'s [affected.display_name]!")
+ user.visible_message("\red Something beeps inside [target]'s [affected.name]!")
playsound(imp.loc, 'sound/items/countdown.ogg', 75, 1, -3)
spawn(25)
imp.activate()
diff --git a/code/modules/surgery/organs_internal.dm b/code/modules/surgery/organs_internal.dm
index 8107a0548a..56dfcd4ae4 100644
--- a/code/modules/surgery/organs_internal.dm
+++ b/code/modules/surgery/organs_internal.dm
@@ -94,7 +94,7 @@
user.visible_message("[user] starts treating damage to [target]'s [I.name] with [tool_name].", \
"You start treating damage to [target]'s [I.name] with [tool_name]." )
- target.custom_pain("The pain in your [affected.display_name] is living hell!",1)
+ target.custom_pain("The pain in your [affected.name] is living hell!",1)
..()
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
@@ -121,8 +121,8 @@
return
var/obj/item/organ/external/affected = target.get_organ(target_zone)
- user.visible_message("\red [user]'s hand slips, getting mess and tearing the inside of [target]'s [affected.display_name] with \the [tool]!", \
- "\red Your hand slips, getting mess and tearing the inside of [target]'s [affected.display_name] with \the [tool]!")
+ user.visible_message("\red [user]'s hand slips, getting mess and tearing the inside of [target]'s [affected.name] with \the [tool]!", \
+ "\red Your hand slips, getting mess and tearing the inside of [target]'s [affected.name] with \the [tool]!")
var/dam_amt = 2
if (istype(tool, /obj/item/stack/medical/advanced/bruise_pack))
@@ -172,7 +172,7 @@
user.visible_message("[user] starts mending the damage to [target]'s [I.name]'s mechanisms.", \
"You start mending the damage to [target]'s [I.name]'s mechanisms." )
- target.custom_pain("The pain in your [affected.display_name] is living hell!",1)
+ target.custom_pain("The pain in your [affected.name] is living hell!",1)
..()
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
@@ -195,8 +195,8 @@
return
var/obj/item/organ/external/affected = target.get_organ(target_zone)
- user.visible_message("\red [user]'s hand slips, gumming up the mechanisms inside of [target]'s [affected.display_name] with \the [tool]!", \
- "\red Your hand slips, gumming up the mechanisms inside of [target]'s [affected.display_name] with \the [tool]!")
+ user.visible_message("\red [user]'s hand slips, gumming up the mechanisms inside of [target]'s [affected.name] with \the [tool]!", \
+ "\red Your hand slips, gumming up the mechanisms inside of [target]'s [affected.name] with \the [tool]!")
target.adjustToxLoss(5)
affected.createwound(CUT, 5)
@@ -244,7 +244,7 @@
user.visible_message("[user] starts to separate [target]'s [target.op_stage.current_organ] with \the [tool].", \
"You start to separate [target]'s [target.op_stage.current_organ] with \the [tool]." )
- target.custom_pain("The pain in your [affected.display_name] is living hell!",1)
+ target.custom_pain("The pain in your [affected.name] is living hell!",1)
..()
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
@@ -257,8 +257,8 @@
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
- user.visible_message("\red [user]'s hand slips, slicing an artery inside [target]'s [affected.display_name] with \the [tool]!", \
- "\red Your hand slips, slicing an artery inside [target]'s [affected.display_name] with \the [tool]!")
+ user.visible_message("\red [user]'s hand slips, slicing an artery inside [target]'s [affected.name] with \the [tool]!", \
+ "\red Your hand slips, slicing an artery inside [target]'s [affected.name] with \the [tool]!")
affected.createwound(CUT, rand(30,50), 1)
/datum/surgery_step/internal/remove_organ
@@ -311,8 +311,8 @@
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
- user.visible_message("\red [user]'s hand slips, damaging the flesh in [target]'s [affected.display_name] with \the [tool]!", \
- "\red Your hand slips, damaging the flesh in [target]'s [affected.display_name] with \the [tool]!")
+ user.visible_message("\red [user]'s hand slips, damaging the flesh in [target]'s [affected.name] with \the [tool]!", \
+ "\red Your hand slips, damaging the flesh in [target]'s [affected.name] with \the [tool]!")
affected.createwound(BRUISE, 20)
/datum/surgery_step/internal/replace_organ
@@ -357,7 +357,7 @@
if(O && affected.name == O.parent_organ)
organ_compatible = 1
else
- user << "\red \The [O.organ_tag] [o_do] normally go in \the [affected.display_name]."
+ user << "\red \The [O.organ_tag] [o_do] normally go in \the [affected.name]."
return 2
else
user << "\red You're pretty sure [target.species.name_plural] don't normally have [o_a][O.organ_tag]."
@@ -367,15 +367,15 @@
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)
- user.visible_message("[user] starts transplanting \the [tool] into [target]'s [affected.display_name].", \
- "You start transplanting \the [tool] into [target]'s [affected.display_name].")
- target.custom_pain("Someone's rooting around in your [affected.display_name]!",1)
+ user.visible_message("[user] starts transplanting \the [tool] into [target]'s [affected.name].", \
+ "You start transplanting \the [tool] into [target]'s [affected.name].")
+ target.custom_pain("Someone's rooting around in your [affected.name]!",1)
..()
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
- user.visible_message("\blue [user] has transplanted \the [tool] into [target]'s [affected.display_name].", \
- "\blue You have transplanted \the [tool] into [target]'s [affected.display_name].")
+ user.visible_message("\blue [user] has transplanted \the [tool] into [target]'s [affected.name].", \
+ "\blue You have transplanted \the [tool] into [target]'s [affected.name].")
user.drop_item(tool)
var/obj/item/organ/O = tool
if(istype(O))
@@ -433,8 +433,8 @@
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
- user.visible_message("\red [user]'s hand slips, damaging the flesh in [target]'s [affected.display_name] with \the [tool]!", \
- "\red Your hand slips, damaging the flesh in [target]'s [affected.display_name] with \the [tool]!")
+ user.visible_message("\red [user]'s hand slips, damaging the flesh in [target]'s [affected.name] with \the [tool]!", \
+ "\red Your hand slips, damaging the flesh in [target]'s [affected.name] with \the [tool]!")
affected.createwound(BRUISE, 20)
//////////////////////////////////////////////////////////////////
diff --git a/code/modules/surgery/other.dm b/code/modules/surgery/other.dm
index 5b3519d46f..92b28b3fca 100644
--- a/code/modules/surgery/other.dm
+++ b/code/modules/surgery/other.dm
@@ -31,15 +31,15 @@
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)
- user.visible_message("[user] starts patching the damaged vein in [target]'s [affected.display_name] with \the [tool]." , \
- "You start patching the damaged vein in [target]'s [affected.display_name] with \the [tool].")
- target.custom_pain("The pain in [affected.display_name] is unbearable!",1)
+ user.visible_message("[user] starts patching the damaged vein in [target]'s [affected.name] with \the [tool]." , \
+ "You start patching the damaged vein in [target]'s [affected.name] with \the [tool].")
+ target.custom_pain("The pain in [affected.name] is unbearable!",1)
..()
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
- user.visible_message("\blue [user] has patched the damaged vein in [target]'s [affected.display_name] with \the [tool].", \
- "\blue You have patched the damaged vein in [target]'s [affected.display_name] with \the [tool].")
+ user.visible_message("\blue [user] has patched the damaged vein in [target]'s [affected.name] with \the [tool].", \
+ "\blue You have patched the damaged vein in [target]'s [affected.name] with \the [tool].")
for(var/datum/wound/W in affected.wounds) if(W.internal)
affected.wounds -= W
@@ -48,8 +48,8 @@
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
- user.visible_message("\red [user]'s hand slips, smearing [tool] in the incision in [target]'s [affected.display_name]!" , \
- "\red Your hand slips, smearing [tool] in the incision in [target]'s [affected.display_name]!")
+ user.visible_message("\red [user]'s hand slips, smearing [tool] in the incision in [target]'s [affected.name]!" , \
+ "\red Your hand slips, smearing [tool] in the incision in [target]'s [affected.name]!")
affected.take_damage(5, 0)
/datum/surgery_step/fix_dead_tissue //Debridement
@@ -79,21 +79,21 @@
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)
- user.visible_message("[user] starts cutting away necrotic tissue in [target]'s [affected.display_name] with \the [tool]." , \
- "You start cutting away necrotic tissue in [target]'s [affected.display_name] with \the [tool].")
- target.custom_pain("The pain in [affected.display_name] is unbearable!",1)
+ user.visible_message("[user] starts cutting away necrotic tissue in [target]'s [affected.name] with \the [tool]." , \
+ "You start cutting away necrotic tissue in [target]'s [affected.name] with \the [tool].")
+ target.custom_pain("The pain in [affected.name] is unbearable!",1)
..()
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
- user.visible_message("\blue [user] has cut away necrotic tissue in [target]'s [affected.display_name] with \the [tool].", \
- "\blue You have cut away necrotic tissue in [target]'s [affected.display_name] with \the [tool].")
+ user.visible_message("\blue [user] has cut away necrotic tissue in [target]'s [affected.name] with \the [tool].", \
+ "\blue You have cut away necrotic tissue in [target]'s [affected.name] with \the [tool].")
affected.open = 3
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
- user.visible_message("\red [user]'s hand slips, slicing an artery inside [target]'s [affected.display_name] with \the [tool]!", \
- "\red Your hand slips, slicing an artery inside [target]'s [affected.display_name] with \the [tool]!")
+ user.visible_message("\red [user]'s hand slips, slicing an artery inside [target]'s [affected.name] with \the [tool]!", \
+ "\red Your hand slips, slicing an artery inside [target]'s [affected.name] with \the [tool]!")
affected.createwound(CUT, 20, 1)
/datum/surgery_step/treat_necrosis
@@ -131,9 +131,9 @@
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)
- user.visible_message("[user] starts applying medication to the affected tissue in [target]'s [affected.display_name] with \the [tool]." , \
- "You start applying medication to the affected tissue in [target]'s [affected.display_name] with \the [tool].")
- target.custom_pain("Something in your [affected.display_name] is causing you a lot of pain!",1)
+ user.visible_message("[user] starts applying medication to the affected tissue in [target]'s [affected.name] with \the [tool]." , \
+ "You start applying medication to the affected tissue in [target]'s [affected.name] with \the [tool].")
+ target.custom_pain("Something in your [affected.name] is causing you a lot of pain!",1)
..()
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
@@ -151,8 +151,8 @@
if(container.reagents.has_reagent("peridaxon"))
affected.status &= ~ORGAN_DEAD
- user.visible_message("\blue [user] applies [trans] units of the solution to affected tissue in [target]'s [affected.display_name]", \
- "\blue You apply [trans] units of the solution to affected tissue in [target]'s [affected.display_name] with \the [tool].")
+ user.visible_message("\blue [user] applies [trans] units of the solution to affected tissue in [target]'s [affected.name]", \
+ "\blue You apply [trans] units of the solution to affected tissue in [target]'s [affected.name] with \the [tool].")
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
@@ -165,8 +165,8 @@
var/trans = container.reagents.trans_to(target, container.amount_per_transfer_from_this)
container.reagents.reaction(target, INGEST) //technically it's contact, but the reagents are being applied to internal tissue
- user.visible_message("\red [user]'s hand slips, applying [trans] units of the solution to the wrong place in [target]'s [affected.display_name] with the [tool]!" , \
- "\red Your hand slips, applying [trans] units of the solution to the wrong place in [target]'s [affected.display_name] with the [tool]!")
+ user.visible_message("\red [user]'s hand slips, applying [trans] units of the solution to the wrong place in [target]'s [affected.name] with the [tool]!" , \
+ "\red Your hand slips, applying [trans] units of the solution to the wrong place in [target]'s [affected.name] with the [tool]!")
//no damage or anything, just wastes medicine
diff --git a/code/modules/surgery/robolimbs.dm b/code/modules/surgery/robolimbs.dm
index 8b9f3be6d9..d4e5127bdc 100644
--- a/code/modules/surgery/robolimbs.dm
+++ b/code/modules/surgery/robolimbs.dm
@@ -36,22 +36,22 @@
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)
- user.visible_message("[user] starts cutting away flesh where [target]'s [affected.display_name] used to be with \the [tool].", \
- "You start cutting away flesh where [target]'s [affected.display_name] used to be with \the [tool].")
+ user.visible_message("[user] starts cutting away flesh where [target]'s [affected.name] used to be with \the [tool].", \
+ "You start cutting away flesh where [target]'s [affected.name] used to be with \the [tool].")
..()
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
- user.visible_message("\blue [user] cuts away flesh where [target]'s [affected.display_name] used to be with \the [tool].", \
- "\blue You cut away flesh where [target]'s [affected.display_name] used to be with \the [tool].")
+ user.visible_message("\blue [user] cuts away flesh where [target]'s [affected.name] used to be with \the [tool].", \
+ "\blue You cut away flesh where [target]'s [affected.name] used to be with \the [tool].")
affected.status |= ORGAN_CUT_AWAY
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
if (affected.parent)
affected = affected.parent
- user.visible_message("\red [user]'s hand slips, cutting [target]'s [affected.display_name] open!", \
- "\red Your hand slips, cutting [target]'s [affected.display_name] open!")
+ user.visible_message("\red [user]'s hand slips, cutting [target]'s [affected.name] open!", \
+ "\red Your hand slips, cutting [target]'s [affected.name] open!")
affected.createwound(CUT, 10)
@@ -71,22 +71,22 @@
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)
- user.visible_message("[user] is beginning to reposition flesh and nerve endings where where [target]'s [affected.display_name] used to be with [tool].", \
- "You start repositioning flesh and nerve endings where [target]'s [affected.display_name] used to be with [tool].")
+ user.visible_message("[user] is beginning to reposition flesh and nerve endings where where [target]'s [affected.name] used to be with [tool].", \
+ "You start repositioning flesh and nerve endings where [target]'s [affected.name] used to be with [tool].")
..()
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
- user.visible_message("\blue [user] has finished repositioning flesh and nerve endings where [target]'s [affected.display_name] used to be with [tool].", \
- "\blue You have finished repositioning flesh and nerve endings where [target]'s [affected.display_name] used to be with [tool].")
+ user.visible_message("\blue [user] has finished repositioning flesh and nerve endings where [target]'s [affected.name] used to be with [tool].", \
+ "\blue You have finished repositioning flesh and nerve endings where [target]'s [affected.name] used to be with [tool].")
affected.open = 3
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
if (affected.parent)
affected = affected.parent
- user.visible_message("\red [user]'s hand slips, tearing flesh on [target]'s [affected.display_name]!", \
- "\red Your hand slips, tearing flesh on [target]'s [affected.display_name]!")
+ user.visible_message("\red [user]'s hand slips, tearing flesh on [target]'s [affected.name]!", \
+ "\red Your hand slips, tearing flesh on [target]'s [affected.name]!")
target.apply_damage(10, BRUTE, affected, sharp=1)
@@ -108,25 +108,23 @@
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)
- user.visible_message("[user] starts adjusting the area around [target]'s [affected.display_name] with \the [tool].", \
- "You start adjusting the area around [target]'s [affected.display_name] with \the [tool].")
+ user.visible_message("[user] starts adjusting the area around [target]'s [affected.name] with \the [tool].", \
+ "You start adjusting the area around [target]'s [affected.name] with \the [tool].")
..()
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
- user.visible_message("\blue [user] has finished adjusting the area around [target]'s [affected.display_name] with \the [tool].", \
- "\blue You have finished adjusting the area around [target]'s [affected.display_name] with \the [tool].")
+ user.visible_message("\blue [user] has finished adjusting the area around [target]'s [affected.name] with \the [tool].", \
+ "\blue You have finished adjusting the area around [target]'s [affected.name] with \the [tool].")
affected.status |= ORGAN_ATTACHABLE
- affected.amputated = 1
- affected.setAmputatedTree()
affected.open = 0
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
if (affected.parent)
affected = affected.parent
- user.visible_message("\red [user]'s hand slips, searing [target]'s [affected.display_name]!", \
- "\red Your hand slips, searing [target]'s [affected.display_name]!")
+ user.visible_message("\red [user]'s hand slips, searing [target]'s [affected.name]!", \
+ "\red Your hand slips, searing [target]'s [affected.name]!")
target.apply_damage(10, BURN, affected)
@@ -147,14 +145,14 @@
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)
- user.visible_message("[user] starts attaching \the [tool] where [target]'s [affected.display_name] used to be.", \
- "You start attaching \the [tool] where [target]'s [affected.display_name] used to be.")
+ user.visible_message("[user] starts attaching \the [tool] where [target]'s [affected.name] used to be.", \
+ "You start attaching \the [tool] where [target]'s [affected.name] used to be.")
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/robot_parts/L = tool
var/obj/item/organ/external/affected = target.get_organ(target_zone)
- user.visible_message("\blue [user] has attached \the [tool] where [target]'s [affected.display_name] used to be.", \
- "\blue You have attached \the [tool] where [target]'s [affected.display_name] used to be.")
+ user.visible_message("\blue [user] has attached \the [tool] where [target]'s [affected.name] used to be.", \
+ "\blue You have attached \the [tool] where [target]'s [affected.name] used to be.")
affected.germ_level = 0
affected.robotize()
if(L.sabotaged)
@@ -168,6 +166,6 @@
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
- user.visible_message("\red [user]'s hand slips, damaging connectors on [target]'s [affected.display_name]!", \
- "\red Your hand slips, damaging connectors on [target]'s [affected.display_name]!")
+ user.visible_message("\red [user]'s hand slips, damaging connectors on [target]'s [affected.name]!", \
+ "\red Your hand slips, damaging connectors on [target]'s [affected.name]!")
target.apply_damage(10, BRUTE, affected, sharp=1)
diff --git a/code/modules/virus2/effect.dm b/code/modules/virus2/effect.dm
index 5d6abc3e97..3153bd4f9b 100644
--- a/code/modules/virus2/effect.dm
+++ b/code/modules/virus2/effect.dm
@@ -81,11 +81,11 @@
var/mob/living/carbon/human/H = mob
var/obj/item/organ/external/O = pick(H.organs)
if(prob(25))
- mob << "Your [O.display_name] feels as if it might fall off!"
+ mob << "Your [O.name] feels as if it might fall off!"
if(prob(10))
spawn(50)
if(O)
- O.droplimb(1)
+ O.droplimb()
else
if(prob(75))
mob << "Your whole body feels like it might fall apart!"
@@ -156,7 +156,7 @@
var/obj/item/organ/external/E = H.organs_by_name[organ]
if (!(E.status & ORGAN_DEAD))
E.status |= ORGAN_DEAD
- H << "You can't feel your [E.display_name] anymore..."
+ H << "You can't feel your [E.name] anymore..."
for (var/obj/item/organ/external/C in E.children)
C.status |= ORGAN_DEAD
H.update_body(1)