diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index cb13034af5..83076373e4 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -38,9 +38,9 @@ emp_act return -1 // complete projectile permutation //Shrapnel - if (P.can_embed()) + if(P.can_embed()) var/armor = getarmor_organ(organ, "bullet") - if(P.embed && prob(20 + max(P.damage - armor, -10))) + if(prob(20 + max(P.damage - armor, -10))) var/obj/item/weapon/shard/shrapnel/SP = new() SP.name = (P.name != "shrapnel")? "[P.name] shrapnel" : "shrapnel" SP.desc = "[SP.desc] It looks like it was fired from [P.shot_from]." diff --git a/code/modules/projectiles/ammunition/bullets.dm b/code/modules/projectiles/ammunition/bullets.dm index 98ca3ca41f..f0a406e467 100644 --- a/code/modules/projectiles/ammunition/bullets.dm +++ b/code/modules/projectiles/ammunition/bullets.dm @@ -118,14 +118,14 @@ /obj/item/ammo_casing/a145 name = "shell casing" - desc = "A 14.5mm AP shell." + desc = "A 14.5mm shell." icon_state = "lcasing" spent_icon = "lcasing-spent" caliber = "14.5mm" projectile_type = /obj/item/projectile/bullet/rifle/a145 /obj/item/ammo_casing/a556 - desc = "A 5.56 bullet casing." + desc = "A 5.56mm bullet casing." caliber = "a556" projectile_type = /obj/item/projectile/bullet/rifle/a556 diff --git a/code/modules/projectiles/guns/launcher/syringe_gun.dm b/code/modules/projectiles/guns/launcher/syringe_gun.dm index 8ae6ccbd45..75c015d579 100644 --- a/code/modules/projectiles/guns/launcher/syringe_gun.dm +++ b/code/modules/projectiles/guns/launcher/syringe_gun.dm @@ -1,6 +1,6 @@ /obj/item/weapon/syringe_cartridge name = "syringe gun cartridge" - desc = "An impact-triggered compressed gas cartridge that can fitted to a syringe for rapid injection." + desc = "An impact-triggered compressed gas cartridge that can be fitted to a syringe for rapid injection." icon = 'icons/obj/ammo.dmi' icon_state = "syringe-cartridge" var/icon_flight = "syringe-cartridge-flight" //so it doesn't look so weird when shot @@ -25,6 +25,7 @@ user.remove_from_mob(syringe) syringe.loc = src sharp = 1 + name = "syringe dart" update_icon() /obj/item/weapon/syringe_cartridge/attack_self(mob/user) @@ -33,6 +34,7 @@ user.put_in_hands(syringe) syringe = null sharp = initial(sharp) + name = initial(name) update_icon() /obj/item/weapon/syringe_cartridge/proc/prime() diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm index 91129e6979..e331482d97 100644 --- a/code/modules/projectiles/guns/projectile/automatic.dm +++ b/code/modules/projectiles/guns/projectile/automatic.dm @@ -70,15 +70,16 @@ /obj/item/weapon/gun/projectile/automatic/z8 name = "\improper Z8 Bulldog" - desc = "An older model bullpup carbine, made by the now defunct Zendai Foundries. Uses armor piercing 5.56 rounds. Makes you feel like a space marine when you hold it." + desc = "An older model bullpup carbine, made by the now defunct Zendai Foundries. Uses armor piercing 5.56mm rounds. Makes you feel like a space marine when you hold it." icon_state = "carbine" item_state = "shotgun" - w_class = 4.0 + w_class = 4 force = 10 caliber = "a556" origin_tech = "combat=8;materials=3" ammo_type = "/obj/item/ammo_casing/a556" fire_sound = 'sound/weapons/Gunshot.ogg' + slot_flags = SLOT_BACK load_method = MAGAZINE magazine_type = /obj/item/ammo_magazine/a556 @@ -92,13 +93,13 @@ /obj/item/weapon/gun/projectile/automatic/sts35 name = "\improper STS-35 automatic rifle" - desc = "A durable, rugged looking automatic weapon of make popular on the frontier, despite it's bulk. Uses 7.62mm rounds. It is unmarked." + desc = "A durable, rugged looking automatic weapon of a make popular on the frontier. Uses 7.62mm rounds. It is unmarked." icon_state = "assltrifle" item_state = "shotgun" w_class = 4 force = 10 caliber = "a762" - origin_tech = "combat=5;materials=1;syndicate=8" + origin_tech = "combat=6;materials=1;syndicate=4" slot_flags = SLOT_BACK load_method = MAGAZINE magazine_type = /obj/item/ammo_magazine/c762 @@ -117,7 +118,7 @@ slot_flags = 0 max_shells = 50 caliber = "a762" - origin_tech = "combat=5;materials=1;syndicate=2" + origin_tech = "combat=6;materials=1;syndicate=2" slot_flags = SLOT_BACK ammo_type = "/obj/item/ammo_casing/a762" fire_sound = 'sound/weapons/Gunshot_smg.ogg' diff --git a/code/modules/projectiles/guns/projectile/sniper.dm b/code/modules/projectiles/guns/projectile/sniper.dm index a6fd3917c1..8364876563 100644 --- a/code/modules/projectiles/guns/projectile/sniper.dm +++ b/code/modules/projectiles/guns/projectile/sniper.dm @@ -1,6 +1,6 @@ /obj/item/weapon/gun/projectile/heavysniper name = "\improper PTRS-7 rifle" - desc = "A portable anti-armour rifle fitted with a scope. Originally designed to used against armoured exosuits, it is capable of punching through non-reinforced walls with ease. Fires 14.5mm AP shells." + desc = "A portable anti-armour rifle fitted with a scope. Originally designed to used against armoured exosuits, it is capable of punching through non-reinforced walls with ease. Fires armor piercing 14.5mm shells." icon_state = "heavysniper" item_state = "shotgun" w_class = 4 diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index cbac10aaef..9b710409a1 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -66,14 +66,10 @@ return //Checks if the projectile is eligible for embedding. Not that it necessarily will. -//Mainly used to ensure that projectiles won't embed if they are penetrating the mob. /obj/item/projectile/proc/can_embed() //embed must be enabled and damage type must be brute if(!embed || damage_type != BRUTE) return 0 - //can't embed if the projectile is penetrating through the mob - if(penetrating > 0 && damage > 20 && prob(damage)) - return 0 return 1 //return 1 if the projectile should be allowed to pass through after all, 0 if not. @@ -209,9 +205,9 @@ for(var/mob/M in A) attack_mob(M, distance) - //penetrating projectiles can pass through things that otherwise would not let them + //penetrating projectiles can pass through things that otherwise would not let them if(!passthrough && penetrating > 0) - if(check_penetrate(A)) + if(check_penetrate(A)) passthrough = 1 penetrating-- @@ -314,4 +310,4 @@ trace.firer = user var/output = trace.process() //Test it! del(trace) //No need for it anymore - return output //Send it back to the gun! + return output //Send it back to the gun! \ No newline at end of file diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index 49197bec17..50d3c04f46 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -7,12 +7,26 @@ check_armour = "bullet" embed = 1 sharp = 1 + var/mob_passthrough_check = 0 /obj/item/projectile/bullet/on_hit(var/atom/target, var/blocked = 0) if (..(target, blocked)) var/mob/living/L = target shake_camera(L, 3, 2) +/obj/item/projectile/bullet/attack_mob(var/mob/living/target_mob, var/distance, var/miss_modifier) + if(penetrating > 0 && damage > 20 && prob(damage)) + mob_passthrough_check = 1 + else + mob_passthrough_check = 0 + ..() + +/obj/item/projectile/bullet/can_embed() + //prevent embedding if the projectile is passing through the mob + if(mob_passthrough_check) + return 0 + return ..() + /obj/item/projectile/bullet/check_penetrate(var/atom/A) if(!A || !A.density) return 1 //if whatever it was got destroyed when we hit it, then I guess we can just keep going @@ -20,10 +34,10 @@ return 1 //mecha have their own penetration handling if(ismob(A)) - if(iscarbon(A)) - //squishy mobs absorb KE - if(can_embed()) return 0 - damage *= 0.7 + if(!mob_passthrough_check) + return 0 + if(iscarbon(A)) + damage *= 0.7 //squishy mobs absorb KE return 1 var/chance = 0 diff --git a/icons/mob/back.dmi b/icons/mob/back.dmi index 893b58c663..8322b7b4f5 100644 Binary files a/icons/mob/back.dmi and b/icons/mob/back.dmi differ