diff --git a/code/__DEFINES/chemistry.dm b/code/__DEFINES/chemistry.dm index a3b3b1a4768f..3077f5f5fc71 100644 --- a/code/__DEFINES/chemistry.dm +++ b/code/__DEFINES/chemistry.dm @@ -313,11 +313,15 @@ /// Amount of phosphorus that equals 1 radius of white phosphorus smoke #define CHEM_FIRE_PHOSPHORUS_PER_RADIUS 10 -/// The minimum amount of phoron required to turn shrapnel into incendiary shrapnel +/// The minimum amount of chems required to turn shrapnel into a special type #define EXPLOSION_PHORON_THRESHOLD 10 +#define EXPLOSION_ACID_THRESHOLD 10 +#define EXPLOSION_NEURO_THRESHOLD 30 #define EXPLOSION_MIN_FALLOFF 25 #define EXPLOSION_BASE_SHARDS 4 -/// The maximum amount of shards is divided by this number if the shards are incendiary -#define INCENDIARY_SHARDS_MAX_REDUCTION 4 +/// The maximum amount of shards is divided by this number if the shards are of special type +#define INCENDIARY_SHARDS_MAX_REDUCTION 2 +#define HORNET_SHARDS_MAX_REDUCTION 2 +#define NEURO_SHARDS_MAX_REDUCTION 2 diff --git a/code/datums/ammo/shrapnel.dm b/code/datums/ammo/shrapnel.dm index 836e142489e1..04fef59cf468 100644 --- a/code/datums/ammo/shrapnel.dm +++ b/code/datums/ammo/shrapnel.dm @@ -44,7 +44,7 @@ shell_speed = AMMO_SPEED_TIER_3//she fast af boi penetration = ARMOR_PENETRATION_TIER_5 /// inflicts this many holo stacks per bullet hit - var/holo_stacks = 10 + var/holo_stacks = 20 /// modifies the default cap limit of 100 by this amount var/bonus_damage_cap_increase = 0 /// multiplies the default drain of 5 holo stacks per second by this amount @@ -70,6 +70,19 @@ BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_incendiary) )) +/datum/ammo/bullet/shrapnel/neuro + name = "neurotoxin coated shrapnel" + icon_state = "neurotoxin" + flags_ammo_behavior = AMMO_STOPPED_BY_COVER + + shell_speed = AMMO_SPEED_TIER_1 + damage = 30 + penetration = ARMOR_PENETRATION_TIER_4 + +/datum/ammo/bullet/shrapnel/neuro/on_hit_mob(mob/living/mob, obj/projectile/projectile) + if(mob.slowed < 6) + mob.adjust_effect(0.8, SLOW) + /datum/ammo/bullet/shrapnel/metal name = "metal shrapnel" icon_state = "shrapnelshot_bit" diff --git a/code/modules/reagents/Chemistry-Holder.dm b/code/modules/reagents/Chemistry-Holder.dm index de365de8e2a6..a0d3139a9782 100644 --- a/code/modules/reagents/Chemistry-Holder.dm +++ b/code/modules/reagents/Chemistry-Holder.dm @@ -628,17 +628,25 @@ return if(my_atom) //It exists outside of null space. - for(var/datum/reagent/R in reagent_list) // if you want to do extra stuff when other chems are present, do it here - if(R.id == "iron") - shards += floor(R.volume) - else if(R.id == "phoron" && R.volume >= EXPLOSION_PHORON_THRESHOLD) + for(var/datum/reagent/reagent in reagent_list) // if you want to do extra stuff when other chems are present, do it here + if(reagent.id == "iron") + shards += floor(reagent.volume) + else if(reagent.id == "phoron" && reagent.volume >= EXPLOSION_PHORON_THRESHOLD) shard_type = /datum/ammo/bullet/shrapnel/incendiary + else if(reagent.id == "sulphuric acid" && reagent.volume >= EXPLOSION_ACID_THRESHOLD) + shard_type = /datum/ammo/bullet/shrapnel/hornet_rounds + else if(reagent.id == "neurotoxinplasma" && reagent.volume >= EXPLOSION_NEURO_THRESHOLD) + shard_type = /datum/ammo/bullet/shrapnel/neuro // some upper limits if(shards > max_ex_shards) shards = max_ex_shards if(istype(shard_type, /datum/ammo/bullet/shrapnel/incendiary) && shards > max_ex_shards / INCENDIARY_SHARDS_MAX_REDUCTION) // less max incendiary shards shards = max_ex_shards / INCENDIARY_SHARDS_MAX_REDUCTION + if(istype(shard_type, /datum/ammo/bullet/shrapnel/hornet_rounds) && shards > max_ex_shards / HORNET_SHARDS_MAX_REDUCTION) + shards = max_ex_shards / HORNET_SHARDS_MAX_REDUCTION + if(istype(shard_type, /datum/ammo/bullet/shrapnel/neuro) && shards > max_ex_shards / NEURO_SHARDS_MAX_REDUCTION) + shards = max_ex_shards / NEURO_SHARDS_MAX_REDUCTION if(ex_power > max_ex_power) ex_power = max_ex_power if(ex_falloff < EXPLOSION_MIN_FALLOFF)