diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm
index 3c9bbf6f998..bead0a13859 100644
--- a/code/defines/obj/weapon.dm
+++ b/code/defines/obj/weapon.dm
@@ -347,6 +347,28 @@
m_amt = 100
origin_tech = "magnets=2;syndicate=3"*/
+/obj/item/weapon/shard/shrapnel
+ name = "shrapnel"
+ icon = 'icons/obj/shards.dmi'
+ icon_state = "shrapnellarge"
+ desc = "A bunch of tiny bits of shattered metal."
+
+/obj/item/weapon/shard/shrapnel/New()
+
+ src.icon_state = pick("shrapnellarge", "shrapnelmedium", "shrapnelsmall")
+ switch(src.icon_state)
+ if("shrapnelsmall")
+ src.pixel_x = rand(-12, 12)
+ src.pixel_y = rand(-12, 12)
+ if("shrapnelmedium")
+ src.pixel_x = rand(-8, 8)
+ src.pixel_y = rand(-8, 8)
+ if("shrapnellarge")
+ src.pixel_x = rand(-5, 5)
+ src.pixel_y = rand(-5, 5)
+ else
+ return
+
/obj/item/weapon/SWF_uplink
name = "station-bounced radio"
desc = "used to comunicate it appears."
diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm
index 85248f5dc60..72d00d89edc 100644
--- a/code/game/machinery/adv_med.dm
+++ b/code/game/machinery/adv_med.dm
@@ -284,10 +284,10 @@
var/internal_bleeding = ""
var/lung_ruptured = ""
for(var/datum/wound/W in e.wounds) if(W.internal)
- internal_bleeding = "
Internal Bleeding"
+ internal_bleeding = "
Internal bleeding"
break
if(istype(e, /datum/organ/external/chest) && occupant.is_lung_ruptured())
- lung_ruptured = "Lung Ruptured:"
+ lung_ruptured = "Lung ruptured:"
if(e.status & ORGAN_SPLINTED)
splint = "Splinted:"
if(e.status & ORGAN_BLEEDING)
@@ -297,7 +297,7 @@
if(e.open)
open = "Open:"
if(e.implants.len)
- imp = "Implanted:"
+ imp = "Unknown body present:"
if(!AN && !open && !infected & !imp)
AN = "None:"
if(!(e.status & ORGAN_DESTROYED))
diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm
index 159f380e0b2..fc0d098ad9c 100644
--- a/code/modules/mob/living/carbon/human/human_damage.dm
+++ b/code/modules/mob/living/carbon/human/human_damage.dm
@@ -223,13 +223,20 @@
// Will set our damageoverlay icon to the next level, which will then be set back to the normal level the next mob.Life().
updatehealth()
+ //Embedded projectile code.
if(!organ) return
- if(!istype(used_weapon,/obj/item/weapon)) return
-
- var/obj/item/weapon/W = used_weapon
- if(damage > 20 && (prob(damage/W.w_class) || sharp))
- W.loc = organ
- organ.implants += W
- visible_message("\The [W] sticks in the wound!")
- W.add_blood(src)
- return 1
+ if(istype(used_weapon,/obj/item/weapon))
+ var/obj/item/weapon/W = used_weapon
+ if(damage > 20 && (prob(damage/W.w_class) || sharp)) //The larger it is, the harder it needs to hit to stick.
+ W.loc = organ
+ organ.implants += W
+ visible_message("\The [W] sticks in the wound!")
+ W.add_blood(src)
+ else if(istype(used_weapon,/obj/item/projectile)) //We don't want to use the actual projectile item, so we spawn some shrapnel.
+ if(prob(50) && damagetype == BRUTE)
+ var/obj/item/weapon/shard/shrapnel/S = new()
+ S.loc = organ
+ organ.implants += S
+ visible_message("The projectile sticks in the wound!")
+ S.add_blood(src)
+ return 1
\ No newline at end of file
diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm
index 5070f5ea332..a3bc884c171 100644
--- a/code/modules/mob/living/living_defense.dm
+++ b/code/modules/mob/living/living_defense.dm
@@ -57,7 +57,7 @@
P.on_hit(src,2)
return 2
if(!P.nodamage)
- apply_damage((P.damage/(absorb+1)), P.damage_type, def_zone, used_weapon = "Projectile([P.name])")
+ apply_damage((P.damage/(absorb+1)), P.damage_type, def_zone, absorb, 0, P)
P.on_hit(src, absorb)
return absorb
diff --git a/icons/obj/shards.dmi b/icons/obj/shards.dmi
index 5ae1402c368..bf7f28168fa 100644
Binary files a/icons/obj/shards.dmi and b/icons/obj/shards.dmi differ