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