diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 1d6816d4445..00160477134 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -244,6 +244,17 @@ else var/atom/target = get_edge_target_turf(src, get_dir(src, get_step_away(src, src))) throw_at(target, 200, 4) + + var/limbs_affected = pick(2,3,4) + var/datum/organ/external/processing_dismember + + while(limbs_affected != 0) + processing_dismember = pick(organs) + if(processing_dismember.name != "chest" && processing_dismember.name != "groin") + processing_dismember.dismember_limb() + limbs_affected -= 1 + + //return // var/atom/target = get_edge_target_turf(user, get_dir(src, get_step_away(user, src))) //user.throw_at(target, 200, 4) @@ -258,6 +269,25 @@ b_loss = b_loss/1.5 f_loss = f_loss/1.5 + var/limbs_affected = pick(0, 1, 2) + var/datum/organ/external/processing_dismember + + while(limbs_affected != 0) + processing_dismember = pick(organs) + if(processing_dismember.name != "chest" && processing_dismember.name != "groin" && processing_dismember.name != "head") + processing_dismember.dismember_limb() + limbs_affected -= 1 + + else + var/limbs_affected = pick(1, 2, 3) + var/datum/organ/external/processing_dismember + + while(limbs_affected != 0) + processing_dismember = pick(organs) + if(processing_dismember.name != "chest" && processing_dismember.name != "groin") + processing_dismember.dismember_limb() + limbs_affected -= 1 + if (!istype(l_ear, /obj/item/clothing/ears/earmuffs) && !istype(r_ear, /obj/item/clothing/ears/earmuffs)) ear_damage += 30 ear_deaf += 120 @@ -268,6 +298,18 @@ b_loss += 30 if (prob(getarmor(null, "bomb"))) b_loss = b_loss/2 + + else + + var/limbs_affected = pick(0, 1) + var/datum/organ/external/processing_dismember + + while(limbs_affected != 0) + processing_dismember = pick(organs) + if(processing_dismember.name != "chest" && processing_dismember.name != "groin" && processing_dismember.name != "head") + processing_dismember.dismember_limb() + limbs_affected -= 1 + if (!istype(l_ear, /obj/item/clothing/ears/earmuffs) && !istype(r_ear, /obj/item/clothing/ears/earmuffs)) ear_damage += 15 ear_deaf += 60 diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index abfdc6a69bd..bf7789d968b 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -265,7 +265,7 @@ emp_act if(armor >= 2) return 0 if(!I.force) return 0 var/Iforce = I.force //to avoid runtimes on the forcesay checks at the bottom. Some items might delete themselves if you drop them. (stunning yourself, ninja swords) - + apply_damage(I.force, I.damtype, affecting, armor, sharp=weapon_sharp, edge=weapon_edge, used_weapon=I) var/bloody = 0 @@ -313,8 +313,13 @@ emp_act if(Iforce > 10 || Iforce >= 5 && prob(33)) - forcesay(hit_appends) //forcesay checks stat already - + forcesay(hit_appends) //forcesay checks stat already + + if (I.damtype == BRUTE) + if((I.edge && prob(2 * I.force)) || (I.force > 20 && prob(I.force))) + if(affecting.brute_dam >= affecting.max_damage * config.organ_health_multiplier) + affecting.dismember_limb() + //Melee weapon embedded object code. if (I.damtype == BRUTE && !I.is_robot_module()) var/damage = I.force @@ -465,7 +470,7 @@ emp_act var/penetrated_dam = max(0,(damage - max(0,(SS.breach_threshold - SS.damage)))) if(penetrated_dam) SS.create_breaches(damtype, penetrated_dam) - + /mob/living/carbon/human/mech_melee_attack(obj/mecha/M) if(M.occupant.a_intent == "harm") if(M.damtype == "brute") diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index d7f7d20aacc..f656b3d30aa 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -158,12 +158,13 @@ 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(config.limbs_can_break && brute_dam >= max_damage * config.organ_health_multiplier) if( (edge && prob(5 * brute)) || (brute > 20 && prob(2 * brute)) ) droplimb(1) return - + */ owner.updatehealth() var/result = update_icon() @@ -290,6 +291,12 @@ This function completely restores a damaged organ to perfect condition. return 1 return 0 +/datum/organ/external/proc/dismember_limb() + 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(config.limbs_can_break) + droplimb(1) + return + /datum/organ/external/process() //Dismemberment if(status & ORGAN_DESTROYED) diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm index 5cbcf53707e..3c622752418 100644 --- a/code/modules/projectiles/guns/projectile/automatic.dm +++ b/code/modules/projectiles/guns/projectile/automatic.dm @@ -67,7 +67,7 @@ slot_flags = 0 origin_tech = "combat=5;materials=1;syndicate=2" mag_type = "/obj/item/ammo_box/magazine/m762" - fire_sound = 'sound/weapons/Gunshot_smg.ogg' + fire_sound = 'sound/weapons/Gunshot3.ogg' var/cover_open = 0 @@ -123,7 +123,7 @@ w_class = 3.0 origin_tech = "combat=5;materials=4;syndicate=6" mag_type = "/obj/item/ammo_box/magazine/m12g" - fire_sound = 'sound/weapons/Gunshot.ogg' + fire_sound = 'sound/weapons/Gunshot4.ogg' /obj/item/weapon/gun/projectile/automatic/bulldog/New() ..() diff --git a/code/modules/projectiles/guns/projectile/pistol.dm b/code/modules/projectiles/guns/projectile/pistol.dm index 91e8d67fbda..355dc0b909c 100644 --- a/code/modules/projectiles/guns/projectile/pistol.dm +++ b/code/modules/projectiles/guns/projectile/pistol.dm @@ -81,6 +81,7 @@ silenced = 0 origin_tech = "combat=2;materials=2;syndicate=2" mag_type = "/obj/item/ammo_box/magazine/m10mm" + fire_sound = 'sound/weapons/Gunshot2.ogg' /obj/item/weapon/gun/projectile/automatic/pistol/attack_hand(mob/user as mob) if(loc == user) diff --git a/icons/mob/in-hand/swords.dmi b/icons/mob/in-hand/swords.dmi index ab694938e29..99e42e7e522 100644 Binary files a/icons/mob/in-hand/swords.dmi and b/icons/mob/in-hand/swords.dmi differ diff --git a/icons/obj/weapons.dmi b/icons/obj/weapons.dmi index 79e7b8cb110..af1866d85a3 100644 Binary files a/icons/obj/weapons.dmi and b/icons/obj/weapons.dmi differ