*---------*\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 ec02dc0bde..c60d670e45 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 3a72f0647d..bf857af074 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 97b80f7ced..3dd1228447 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 855ad0d3a7..b04101a9d4 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 a697c53120..e598b0be3f 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 be199abfb1..fea6ef34ab 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 c4028a43fb..5f0ad20254 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 cd0902eaad..57a886a0d9 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 6ffc7c576b..655a828750 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 8ed5104a71..843bfbbbc2 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 c8d17badd1..7b9e72d3b6 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 18faae2f9d..e57f388534 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 c88d1d416e..25e0331d23 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 c27d40238a..61319b20f9 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 03310535fc..83d63314f5 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 751eb525fa..65ae440b59 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 e3f5eab968..69c55d472b 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 370f4d9720..3b3567c010 100644
Binary files a/icons/obj/syringe.dmi and b/icons/obj/syringe.dmi differ