*---------*\nThis is "
if(src.icon)
msg += "\icon[src.icon] " //fucking BYOND: this should stop dreamseeker crashing if we -somehow- examine somebody before their icon is generated
- else
- switch(get_visible_gender())
- if(MALE)
- t_He = "He"
- t_his = "his"
- t_him = "him"
- if(FEMALE)
- t_He = "She"
- t_his = "her"
- t_him = "her"
- if(NEUTER)
- t_He = "They"
- t_his = "their"
- t_him = "them"
- t_has = "have"
- t_is = "are"
+
+ switch(get_visible_gender())
+ if(MALE)
+ t_He = "He"
+ t_his = "his"
+ t_him = "him"
+ if(FEMALE)
+ t_He = "She"
+ t_his = "her"
+ t_him = "her"
+ if(NEUTER)
+ t_He = "They"
+ t_his = "their"
+ t_him = "them"
+ t_has = "have"
+ t_is = "are"
if(mutantrace == "lizard")
examine_text = "one of those lizard-like Soghuns"
@@ -128,6 +128,12 @@
else
msg += "[t_He] [t_is] \icon[src.handcuffed] handcuffed!\n"
+ //splints
+ for(var/organ in list("l_leg","r_leg","l_arm","r_arm"))
+ var/datum/organ/external/o = organs["[organ]"]
+ if(o.status & SPLINTED)
+ msg += "[t_He] [t_has] a splint on his [o.getDisplayName()]!\n"
+
//belt
if (src.belt)
if (src.belt.blood_DNA)
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index ec02dc0bde8..c60d670e45e 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -285,7 +285,10 @@
for(var/organ in list("l_leg","l_foot","r_leg","r_foot"))
var/datum/organ/external/o = organs["[organ]"]
if(o.status & BROKEN)
- tally += 6
+ if(o.status & SPLINTED)
+ tally += 3
+ else
+ tally += 6
if(wear_suit)
tally += wear_suit.slowdown
@@ -848,7 +851,26 @@
var/turf/location = M.loc
if (istype(location, /turf/simulated))
location.add_blood(M)
-
+ if(ishuman(M))
+ var/mob/living/carbon/H = M
+ var/blood_volume = round(H:vessel.get_reagent_amount("blood"))
+ if(blood_volume > 0)
+ H:vessel.remove_reagent("blood",1)
+ if(prob(5))
+ M.adjustBruteLoss(1)
+ visible_message("\red \The [M]'s wounds open more from being dragged!")
+ if(M.pull_damage())
+ if(prob(25))
+ M.adjustBruteLoss(2)
+ visible_message("\red \The [M]'s wounds worsen terribly from being dragged!")
+ var/turf/location = M.loc
+ if (istype(location, /turf/simulated))
+ location.add_blood(M)
+ if(ishuman(M))
+ var/mob/living/carbon/H = M
+ var/blood_volume = round(H:vessel.get_reagent_amount("blood"))
+ if(blood_volume > 0)
+ H:vessel.remove_reagent("blood",1)
step(pulling, get_dir(pulling.loc, T))
M.pulling = t
@@ -1077,6 +1099,15 @@
else
clothing_overlays += image("icon" = 'mob.dmi', "icon_state" = "[h1]2", "layer" = CUFFED_LAYER)
+ // Splints
+ for(var/organ in list("l_leg","r_leg","l_arm","r_arm"))
+ var/datum/organ/external/o = organs["[organ]"]
+ if (o.status & SPLINTED)
+ if (!lying)
+ clothing_overlays += image("icon" = 'mob.dmi', "icon_state" = "[o]_splint", "layer" = CUFFED_LAYER)
+ else
+ clothing_overlays += image("icon" = 'mob.dmi', "icon_state" = "[o]_splint2", "layer" = CUFFED_LAYER)
+
if (r_hand)
clothing_overlays += image("icon" = 'items_righthand.dmi', "icon_state" = r_hand.item_state ? r_hand.item_state : r_hand.icon_state, "layer" = INHANDS_LAYER)
r_hand.screen_loc = ui_rhand
@@ -1592,6 +1623,16 @@
//SN src = null
del(src)
return
+ if("splints")
+ var/count = 0
+ for(var/organ in list("l_leg","r_leg","l_arm","r_arm"))
+ var/datum/organ/external/o = target.organs["[organ]"]
+ if(o.status & SPLINTED)
+ count = 1
+ break
+ if(count == 0)
+ del(src)
+ return
if("id")
if ((!( target.wear_id ) || !( target.w_uniform )))
//SN src = null
@@ -1699,6 +1740,8 @@
message = text("\red [] is trying to take off \a [] from []'s back!", source, target.back, target)
if("handcuff")
message = text("\red [] is trying to unhandcuff []!", source, target)
+ if("splints")
+ message = text("\red [] is trying to remove []'s splints!", source, target)
if("uniform")
target.attack_log += text("\[[time_stamp()]\] Has had their uniform removed by [source.name] ([source.ckey])")
source.attack_log += text("\[[time_stamp()]\] Attempted to remove [target.name]'s ([target.ckey]) uniform")
@@ -2184,14 +2227,24 @@ It can still be worn/put on as normal.
source.drop_item()
target.handcuffed = item
item.loc = target
+ if("splints")
+ for(var/organ in list("l_leg","r_leg","l_arm","r_arm"))
+ var/datum/organ/external/o = target.organs["[organ]"]
+ if (o.status & SPLINTED)
+ var/obj/item/W = new /obj/item/stack/medical/splint/single()
+ o.status &= ~SPLINTED
+ if (W)
+ W.loc = target.loc
+ W.layer = initial(W.layer)
+ W.add_fingerprint(source)
if("CPR")
if (target.cpr_time + 30 >= world.time)
//SN src = null
del(src)
return
- if ((target.health >= -99.0 && target.stat == 1))
+ if ((target.health <= config.health_threshold_crit && target.stat == 1))
target.cpr_time = world.time
- var/suff = min(target.getOxyLoss(), 7)
+ var/suff = min(target.getOxyLoss(), 2)
target.adjustOxyLoss(-suff)
target.losebreath = 0
target.updatehealth()
@@ -2314,6 +2367,7 @@ It can still be worn/put on as normal.
Suit Storage: [(s_store ? s_store : "Nothing")] [(istype(wear_mask, /obj/item/clothing/mask) && istype(s_store, /obj/item/weapon/tank) && !( internal )) ? text(" Set Internal", src) : ""]
[(handcuffed ? text("Handcuffed") : text("Not Handcuffed"))]
[(internal ? text("Remove Internal") : "")]
+
Remove Splints
Empty Pockets
Refresh
Close
diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm
index 3a72f0647d8..bf857af0743 100644
--- a/code/modules/mob/living/carbon/human/human_attackhand.dm
+++ b/code/modules/mob/living/carbon/human/human_attackhand.dm
@@ -62,11 +62,10 @@
switch(M.a_intent)
if("help")
- if(health > 0)
+ if(health > config.health_threshold_crit)
help_shake_act(M)
return 1
- if(M.health < -75) return 0
-
+// if(M.health < -75) return 0
if((M.head && (M.head.flags & HEADCOVERSMOUTH)) || (M.wear_mask && (M.wear_mask.flags & MASKCOVERSMOUTH)))
M << "\blue Remove your mask!"
return 0
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index 97b80f7ced3..3dd12284478 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -931,16 +931,24 @@
if(E.status & BROKEN || E.status & DESTROYED)
if(E.name == "l_hand" || E.name == "l_arm")
if(hand && equipped())
- drop_item()
- emote("scream")
+ if(E.status & SPLINTED && prob(10))
+ drop_item()
+ emote("scream")
+ else
+ drop_item()
+ emote("scream")
else if(E.name == "r_hand" || E.name == "r_arm")
if(!hand && equipped())
- drop_item()
- emote("scream")
+ if(E.status & SPLINTED && prob(10))
+ drop_item()
+ emote("scream")
+ else
+ drop_item()
+ emote("scream")
else if(E.name == "l_leg" || E.name == "l_foot" \
|| E.name == "r_leg" || E.name == "r_foot" && !lying)
- leg_tally-- // let it fail even if just foot&leg
-
+ if(!E.status & SPLINTED)
+ leg_tally-- // let it fail even if just foot&leg
// can't stand
if(leg_tally == 0 && !paralysis && !(lying || resting))
emote("scream")
diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm
index 855ad0d3a7e..b04101a9d40 100644
--- a/code/modules/mob/living/carbon/monkey/life.dm
+++ b/code/modules/mob/living/carbon/monkey/life.dm
@@ -434,15 +434,24 @@
if(E.status & BROKEN || E.status & DESTROYED)
if(E.name == "l_hand" || E.name == "l_arm")
if(hand && equipped())
- drop_item()
- emote("scream")
+ if(E.status & SPLINTED && prob(7))
+ drop_item()
+ emote("scream")
+ else
+ drop_item()
+ emote("scream")
else if(E.name == "r_hand" || E.name == "r_arm")
if(!hand && equipped())
- drop_item()
- emote("scream")
+ if(E.status & SPLINTED && prob(7))
+ drop_item()
+ emote("scream")
+ else
+ drop_item()
+ emote("scream")
else if(E.name == "l_leg" || E.name == "l_foot" \
|| E.name == "r_leg" || E.name == "r_foot" && !lying)
- leg_tally-- // let it fail even if just foot&leg
+ if(!E.status & SPLINTED)
+ leg_tally-- // let it fail even if just foot&leg
// can't stand
if(leg_tally == 0 && !paralysis && !(lying || resting))
diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm
index a697c531202..e598b0be3f8 100644
--- a/code/modules/mob/living/carbon/monkey/monkey.dm
+++ b/code/modules/mob/living/carbon/monkey/monkey.dm
@@ -739,6 +739,16 @@
if (!( target.handcuffed ))
del(src)
return
+ if("splints")
+ var/count = 0
+ for(var/organ in list("l_leg","r_leg","l_arm","r_arm"))
+ var/datum/organ/external/o = target.organs["[organ]"]
+ if(o.status & SPLINTED)
+ count = 1
+ break
+ if(count == 0)
+ del(src)
+ return
if("internal")
if ((!( (istype(target.wear_mask, /obj/item/clothing/mask) && istype(target.back, /obj/item/weapon/tank) && !( target.internal )) ) && !( target.internal )))
del(src)
@@ -764,6 +774,8 @@
message = text("\red [] is trying to take off a [] from []'s back!", source, target.back, target)
if("handcuff")
message = text("\red [] is trying to unhandcuff []!", source, target)
+ if("splints")
+ message = text("\red [] is trying to remove []'s splints!", source, target)
if("internal")
if (target.internal)
message = text("\red [] is trying to remove []'s internals", source, target)
@@ -875,6 +887,16 @@
source.drop_item()
target.handcuffed = item
item.loc = target
+ if("splints")
+ for(var/organ in list("l_leg","r_leg","l_arm","r_arm"))
+ var/datum/organ/external/o = target.organs["[organ]"]
+ if (o.status & SPLINTED)
+ var/obj/item/W = new /obj/item/stack/medical/splint/single()
+ o.status &= ~SPLINTED
+ if (W)
+ W.loc = target.loc
+ W.layer = initial(W.layer)
+ W.add_fingerprint(source)
if("internal")
if (target.internal)
target.internal.add_fingerprint(source)
diff --git a/code/modules/mob/living/carbon/shock.dm b/code/modules/mob/living/carbon/shock.dm
index be199abfb1c..fea6ef34abc 100644
--- a/code/modules/mob/living/carbon/shock.dm
+++ b/code/modules/mob/living/carbon/shock.dm
@@ -26,6 +26,8 @@
src.traumatic_shock += 60
else if(organ.status & BROKEN || organ.open)
src.traumatic_shock += 30
+ if(organ.status & SPLINTED)
+ src.traumatic_shock -= 20
if(src.traumatic_shock < 0)
src.traumatic_shock = 0
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index c4028a43fba..5f0ad20254e 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -182,6 +182,7 @@
if(!istype(affecting, /datum/organ/external)) continue
affecting.heal_damage(1000, 1000) //fixes getting hit after ingestion, killing you when game updates organ health
affecting.status &= ~BROKEN
+ affecting.status &= ~SPLINTED
affecting.status &= ~DESTROYED
del affecting.wound_descs
H.UpdateDamageIcon()
@@ -213,6 +214,7 @@
e.status &= ~BLEEDING
e.open = 0
e.status &= ~BROKEN
+ e.status &= ~SPLINTED
e.status &= ~DESTROYED
e.perma_injury = 0
e.update_icon()
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index cd0902eaada..57a886a0d94 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -681,6 +681,18 @@
ul_SetLuminosity(LuminosityRed, LuminosityGreen, LuminosityBlue)//Current hardcode max at 7, should likely be a const somewhere else
return 1
+/mob/proc/pull_damage()
+ if(ishuman(src))
+ var/mob/living/carbon/human/H = src
+ if(H.health - H.halloss <= config.health_threshold_crit)
+ for(var/name in H.organs)
+ var/datum/organ/external/e = H.organs[name]
+ if((H.lying) && ((e.status & BROKEN && !e.status & SPLINTED) || e.status & BLEEDING) && (H.getBruteLoss() + H.getFireLoss() >= 100))
+ return 1
+ break
+ return 0
+
+
/mob/MouseDrop(mob/M as mob)
..()
if(M != usr) return
@@ -718,6 +730,8 @@
M.LAssailant = null
else
M.LAssailant = usr
+ if(M.pull_damage())
+ usr << "\red Pulling \the [M] in their current condition would probably be a bad idea."
if(istype(src, /obj/machinery/artifact))
var/obj/machinery/artifact/A = src
A.attack_hand(usr)
diff --git a/code/modules/mob/organ/organ.dm b/code/modules/mob/organ/organ.dm
index 6ffc7c576b9..655a828750b 100644
--- a/code/modules/mob/organ/organ.dm
+++ b/code/modules/mob/organ/organ.dm
@@ -315,6 +315,8 @@ var/list/wound_progressions = list(
if(override)
status |= DESTROYED
if(status & DESTROYED)
+ if(status & SPLINTED)
+ status &= ~SPLINTED
if(implant)
for(var/implants in implant)
del(implants)
@@ -499,4 +501,4 @@ var/list/wound_progressions = list(
INTERNAL ORGANS
****************************************************/
/datum/organ/internal
- name = "internal"
+ name = "internal"
\ No newline at end of file
diff --git a/code/setup.dm b/code/setup.dm
index 8ed5104a711..843bfbbbc26 100644
--- a/code/setup.dm
+++ b/code/setup.dm
@@ -470,4 +470,5 @@ var/list/liftable_structures = list(\
#define BANDAGED 16
#define BROKEN 32
#define DESTROYED 64
-#define ROBOT 128
\ No newline at end of file
+#define ROBOT 128
+#define SPLINTED 256
\ No newline at end of file
diff --git a/config/alienwhitelist.txt b/config/alienwhitelist.txt
index c8d17badd12..7b9e72d3b6f 100644
--- a/config/alienwhitelist.txt
+++ b/config/alienwhitelist.txt
@@ -1,6 +1,7 @@
botanistpower - Tajaran
bluefishie - Skrell
densane - Skrell
+dopeghoti - Tajaran
duntadaman - Skrell
fenrisian - Tajaran
forsamori - Tajaran
diff --git a/html/changelog.html b/html/changelog.html
index 18faae2f9de..e57f388534a 100644
--- a/html/changelog.html
+++ b/html/changelog.html
@@ -57,6 +57,21 @@ Stuff which is in development and not yet visible to players or just code relate
should be listed in the changelog upon commit though. Thanks. -->
+
+
25 June 2012
+
Erthilo updated:
+
+ - People in critical (less than -50 health) from external trauma (100+ damage from brute and/or burn) bleeding, and with unsplinted limbs, will send a message to anyone trying to drag them, to warn them it would be a bad idea trying to move them. They will suffer a lot more damage if dragged while lying down.
The correct procedure is therefore, A) Bring a roller bed, or B) Splint all limbs, stop all bleeding with gauze, and then drag them.
+ - Dragging someone while injured (brute) will have a small chance of injuring them further that increases depending on how damaged they are. This coincides with the blood spatters that are already generated.
+ - Added splints that can be applied to broken arms and legs, and will reduce effects of broken limbs. These can be removed the same way as handcuffs. They show up on the mob and on examine.
+ - Added an autoinjector that can only hold five units, but acts like a hypospray.
+ - Added an advanced medical kit that Medical Doctors spawn with that has Advanced Trauma Kits, Advanced Burn Kits, autoinjectors, and splints.
+ - Health Scanners now show unsplinted fractures ONLY in arms or legs.
+ - Blood is now actually lost from the person being dragged.
+ - Fixed CPR being performed at weird health levels.
+
+
+
23 June 2012
SkyMarshal updated:
@@ -67,10 +82,6 @@ should be listed in the changelog upon commit though. Thanks. -->
The auto-targeting-mode for guns will now provide a different type of flavor text when it makes you fire, to make the situations that it occurs in to be less ambiguous.
UltraLight is in, but has some lighting bugs still remaining. This is the next thing I intend to tackle, bare with it please.
-
-
-
-
23 June 2012
TG updated:
- Updated toilets. You can now crowbar open the cistern and hide stuff in there.
diff --git a/icons/mob/items_lefthand.dmi b/icons/mob/items_lefthand.dmi
index c88d1d416e8..25e0331d237 100644
Binary files a/icons/mob/items_lefthand.dmi and b/icons/mob/items_lefthand.dmi differ
diff --git a/icons/mob/items_righthand.dmi b/icons/mob/items_righthand.dmi
index c27d40238a1..61319b20f9e 100644
Binary files a/icons/mob/items_righthand.dmi and b/icons/mob/items_righthand.dmi differ
diff --git a/icons/mob/mob.dmi b/icons/mob/mob.dmi
index 03310535fc5..83d63314f5a 100644
Binary files a/icons/mob/mob.dmi and b/icons/mob/mob.dmi differ
diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi
index 751eb525faa..65ae440b59b 100644
Binary files a/icons/obj/device.dmi and b/icons/obj/device.dmi differ
diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi
index e3f5eab968e..69c55d472b1 100644
Binary files a/icons/obj/items.dmi and b/icons/obj/items.dmi differ
diff --git a/icons/obj/syringe.dmi b/icons/obj/syringe.dmi
index 370f4d97205..3b3567c0102 100644
Binary files a/icons/obj/syringe.dmi and b/icons/obj/syringe.dmi differ