Merge pull request #1234 from cadyn/ballistics-v4

Ballistics v4
This commit is contained in:
Razgriz
2021-02-06 22:59:44 -07:00
committed by GitHub
17 changed files with 1652 additions and 23 deletions

View File

@@ -52,14 +52,13 @@ GLOBAL_VAR_INIT(ENERGY_DAMAGE_ORGAN_FACTOR,0.035)
var/ballistic_armor = getarmor(def_zone, "bullet")
var/melee_armor = getarmor(def_zone, "melee")
var/obj/item/organ/external/hit_organ
var/mob/living/carbon/human/H = src
if(istype(H))
hit_organ = H.get_organ(def_zone)
if(organs.len)
hit_organ = src.get_organ(def_zone)
for(var/ext_organ in ballistic_variables["organ_hit_weight"])
var/list/input = list()
var/obj/item/organ/external/ref_ext_organ = H.get_organ(ext_organ)
var/obj/item/organ/external/ref_ext_organ = src.get_organ(ext_organ)
for(var/int_organ in ballistic_variables["organ_hit_weight"][ext_organ])
var/ref_int_organ = H.internal_organs_by_name[int_organ]
var/ref_int_organ = src.internal_organs_by_name[int_organ]
if(ref_ext_organ && ref_int_organ && (ref_int_organ in ref_ext_organ.internal_organs))
input[ref_int_organ] = ballistic_variables["organ_hit_weight"][ext_organ][int_organ]
if(input.len)
@@ -112,12 +111,16 @@ GLOBAL_VAR_INIT(ENERGY_DAMAGE_ORGAN_FACTOR,0.035)
/mob/living/proc/organ_handle_ballistics(var/obj/item/projectile/bullet/P,var/obj/item/organ/external/hit_organ,var/energy_dumped_organic,var/internal_loss,var/ballistic_armor,var/list/updated_organ_weight)
var/conversion_efficiency = P.hollow_point ? GLOB.HOLLOW_POINT_CONVERSION_EFF : 1
conversion_efficiency *= ballistic_variables["flesh_factors"]["damage_mult"]
internal_loss *= ballistic_variables["flesh_factors"]["velloss_mult"]
var/energy_past
var/bone_chance = BONE_HIT_CHANCE_UNENCASED
if(hit_organ.encased)
bone_chance = BONE_HIT_CHANCE_ENCASED
else
bone_chance = ballistic_variables["bone_chance_unencased"][hit_organ.organ_tag]
if(hit_organ.cannot_break)
bone_chance = 0
//log_and_message_admins("Bone hit chance is [bone_chance], organ is [hit_organ]")
if(prob(bone_chance))
var/energy_to_fracture = max(GLOB.BONE_JOULES_MIN, hit_organ.min_broken_damage * (GAUSSIAN_RANDOM()*GLOB.BONE_JOULES_PERHP_DEV + GLOB.BONE_JOULES_PERHP_AVG))
@@ -192,12 +195,22 @@ GLOBAL_VAR_INIT(ENERGY_DAMAGE_ORGAN_FACTOR,0.035)
/mob/living/proc/general_handle_ballistics(var/obj/item/projectile/bullet/P,var/def_zone,var/energy_dumped_organic,var/internal_loss,var/ballistic_armor)
var/conversion_efficiency = P.hollow_point ? GLOB.HOLLOW_POINT_CONVERSION_EFF : 1
conversion_efficiency *= ballistic_variables["flesh_factors"]["damage_mult"]
internal_loss *= ballistic_variables["flesh_factors"]["velloss_mult"]
var/energy_past
var/bone_chance = BONE_HIT_CHANCE_UNENCASED
//if(def_zone in ballistic_variables["bone_chance_unencased"])
//bone_chance = ballistic_variables["bone_chance_unencased"][def_zone]
var/bone_strength = 1
var/est_organ = def_zone
if(!est_organ)
est_organ = BP_TORSO
if(est_organ in list(O_EYES, O_MOUTH))
est_organ = BP_HEAD
if(est_organ in ballistic_variables["bone_chance_unencased"])
bone_chance = ballistic_variables["bone_chance_unencased"][est_organ]
if(est_organ in ballistic_variables["bone_strength"])
bone_strength = ballistic_variables["bone_strength"][est_organ]
if(prob(bone_chance))
var/energy_to_fracture = max(GLOB.BONE_JOULES_MIN, BONE_HP_AVG * (GAUSSIAN_RANDOM()*GLOB.BONE_JOULES_PERHP_DEV + GLOB.BONE_JOULES_PERHP_AVG))
var/energy_to_fracture = max(GLOB.BONE_JOULES_MIN, BONE_HP_AVG * (GAUSSIAN_RANDOM()*GLOB.BONE_JOULES_PERHP_DEV + GLOB.BONE_JOULES_PERHP_AVG)) * bone_strength
if(energy_to_fracture>=P.energy) //We don't have enough energy to get through the bone. This is the end for us!
energy_dumped_organic += P.energy/2 //About half of our remaining energy will go into fucking up this boi, the rest is absorbed by the bone
P.sub_velocity(P.velocity)
@@ -207,22 +220,25 @@ GLOBAL_VAR_INIT(ENERGY_DAMAGE_ORGAN_FACTOR,0.035)
P.sub_energy(energy_to_fracture)
energy_dumped_organic += P.energy / 3 //About a third of the energy that goes into fracturing the bone also goes into fucking up tissues.
if(prob(HIT_VITAL_ORGAN_CHANCE))
if((est_organ in ballistic_variables["organ_hit_chance"]) && prob(ballistic_variables["organ_hit_chance"][est_organ]))
energy_past = P.energy
P.sub_velocity(internal_loss)
energy_dumped_organic += (energy_past - P.energy) * 1.5
var/energy_mult = 1.5
if(est_organ in ballistic_variables["organ_multiplier"])
energy_mult = ballistic_variables["organ_multiplier"][est_organ]
energy_dumped_organic += (energy_past - P.energy) * energy_mult
if(!P.velocity)
energy_to_damage(energy_dumped_organic * conversion_efficiency,def_zone,P)
return 2
energy_past = P.energy
P.sub_velocity(internal_loss)
energy_dumped_organic += energy_past - P.energy
if(!P.velocity || (def_zone in ballistic_variables["organ_leave_early"]) || prob(PROB_LEAVE_EARLY_SECOND))
if(!P.velocity || (est_organ in ballistic_variables["organ_leave_early"]) || prob(PROB_LEAVE_EARLY_SECOND))
energy_to_damage(energy_dumped_organic * conversion_efficiency,def_zone,P)
return P.velocity ? -1 : 2
if(prob(bone_chance))
var/energy_to_fracture = max(GLOB.BONE_JOULES_MIN, BONE_HP_AVG * (GAUSSIAN_RANDOM()*GLOB.BONE_JOULES_PERHP_DEV + GLOB.BONE_JOULES_PERHP_AVG))
var/energy_to_fracture = max(GLOB.BONE_JOULES_MIN, BONE_HP_AVG * (GAUSSIAN_RANDOM()*GLOB.BONE_JOULES_PERHP_DEV + GLOB.BONE_JOULES_PERHP_AVG)) * bone_strength
if(energy_to_fracture>=P.energy) //We don't have enough energy to get through the bone. This is the end for us!
energy_dumped_organic += P.energy/2 //About half of our remaining energy will go into fucking up this boi, the rest is absorbed by the bone
P.sub_velocity(P.velocity)
@@ -302,4 +318,17 @@ GLOBAL_VAR_INIT(ENERGY_DAMAGE_ORGAN_FACTOR,0.035)
/*Diona organs*/O_POLYP = 10, O_ANCHOR = 15, \
/*Replicant organs*/O_VENTC = 20, \
/*Xeno organs*/ O_EGG = 25) ), \
"organ_hit_chance" = list(BP_HEAD = 95, BP_TORSO = 90, BP_GROIN = 90) )
"organ_hit_chance" = list(BP_HEAD = 95, BP_TORSO = 90, BP_GROIN = 90), \
"bone_strength" = list(BP_HEAD = 1.3, BP_TORSO = 1.15, BP_GROIN = 1, BP_L_FOOT = 0.7, BP_R_FOOT = 0.7, BP_L_LEG = 1.2, BP_R_LEG = 1.2, BP_L_ARM = 1, BP_R_ARM = 1, BP_L_HAND = 0.55, BP_R_HAND = 0.55), \
"organ_multiplier" = list(BP_HEAD = 2, BP_TORSO = 1.75, BP_GROIN = 1.25)/*Only used for simple mobs*/, \
"flesh_factors" = list("damage_mult" = 1,"velloss_mult" = 1))
/mob/living/Initialize()
. = ..()
if(islist(ballistic_variables))
ballistic_variables = widelist(ballistic_variables)
/mob/living/proc/b_test_proc()
var/nameof = NAMEOF(src,ballistic_variables)
log_world(nameof)
return nameof

View File

@@ -0,0 +1,563 @@
//Simple mobs
/mob/living/simple_mob
//These are the basic base settings for simple_mobs that pretty much says "most living things kinda approximate around these values", special cases will be accounted for in following overrides.
ballistic_variables = list(\
"bone_chance_unencased" = list(BP_HEAD = 80, BP_TORSO = 80, BP_GROIN = 20, BP_L_FOOT = 80, BP_R_FOOT = 80, BP_L_LEG = 35, BP_R_LEG = 35, BP_L_ARM = 65, BP_R_ARM = 65, BP_L_HAND = 80, BP_R_HAND = 80), \
"organ_leave_early" = list("l_arm", "r_arm", "l_hand", "r_hand", "l_foot", "r_foot"), \
"organ_hit_weight" = list(\
BP_HEAD = list(\
/*Standard organs*/O_BRAIN = 90, O_EYES = 5, \
/*Diona organs*/O_RESPONSE = 10, O_RESPONSE = 15, O_GBLADDER = 15, \
/*Replicant organs*/O_VRLINK = 20, \
/*Xeno organs*/O_ACID = 10, O_RESIN = 10), \
BP_TORSO = list(\
/*Standard organs*/O_HEART = 5, O_LUNGS = 50, O_SPLEEN = 15, O_VOICE = 10, \
/*Synth organs*/O_CELL = 5, O_PUMP = 15, O_HEATSINK = 35, O_CYCLER = 15, O_DIAGNOSTIC = 10, \
/*Promethean organs*/O_REGBRUTE = 20, O_REGBURN = 20, O_REGOXY = 20, O_REGTOX = 20, \
/*Diona organs*/O_STRATA = 35, O_BRAIN = 20, O_NUTRIENT = 10, \
/*Replicant organs*/O_AREJECT = 35, \
/*Xeno organs*/O_PLASMA = 10, O_HIVE = 10), \
BP_GROIN = list(\
/*Standard organs*/O_INTESTINES = 50, O_STOMACH = 20, O_LIVER = 20, O_KIDNEYS = 15, O_APPENDIX = 5, \
/*Diona organs*/O_POLYP = 10, O_ANCHOR = 15, \
/*Replicant organs*/O_VENTC = 20, \
/*Xeno organs*/ O_EGG = 25) ), \
"organ_hit_chance" = list(BP_HEAD = 95, BP_TORSO = 90, BP_GROIN = 90), \
"bone_strength" = list(BP_HEAD = 1.3, BP_TORSO = 1.15, BP_GROIN = 1, BP_L_FOOT = 0.7, BP_R_FOOT = 0.7, BP_L_LEG = 1.2, BP_R_LEG = 1.2, BP_L_ARM = 1, BP_R_ARM = 1, BP_L_HAND = 0.55, BP_R_HAND = 0.55), \
"organ_multiplier" = list(BP_HEAD = 4, BP_TORSO = 3.5, BP_GROIN = 2.5)/*Only used for simple mobs*/, \
"flesh_factors" = list("damage_mult" = 1,"velloss_mult" = 1))
/mob/living/simple_mob/animal/giant_spider
//Spiders have an exoskeleton and no internal skeleton, so there'll be just 97% chance of hitting bone (3% for stuff like eyes and orifices), but the bone is much easier to punch through.
ballistic_variables = list(\
"bone_chance_unencased" = list(BP_HEAD = 97, BP_TORSO = 97, BP_GROIN = 97, BP_L_FOOT = 97, BP_R_FOOT = 97, BP_L_LEG = 97, BP_R_LEG = 97, BP_L_ARM = 97, BP_R_ARM = 97, BP_L_HAND = 97, BP_R_HAND = 97), \
"organ_leave_early" = list("l_arm", "r_arm", "l_hand", "r_hand", "l_foot", "r_foot"), \
"organ_hit_weight" = list(\
BP_HEAD = list(\
/*Standard organs*/O_BRAIN = 90, O_EYES = 5, \
/*Diona organs*/O_RESPONSE = 10, O_RESPONSE = 15, O_GBLADDER = 15, \
/*Replicant organs*/O_VRLINK = 20, \
/*Xeno organs*/O_ACID = 10, O_RESIN = 10), \
BP_TORSO = list(\
/*Standard organs*/O_HEART = 5, O_LUNGS = 50, O_SPLEEN = 15, O_VOICE = 10, \
/*Synth organs*/O_CELL = 5, O_PUMP = 15, O_HEATSINK = 35, O_CYCLER = 15, O_DIAGNOSTIC = 10, \
/*Promethean organs*/O_REGBRUTE = 20, O_REGBURN = 20, O_REGOXY = 20, O_REGTOX = 20, \
/*Diona organs*/O_STRATA = 35, O_BRAIN = 20, O_NUTRIENT = 10, \
/*Replicant organs*/O_AREJECT = 35, \
/*Xeno organs*/O_PLASMA = 10, O_HIVE = 10), \
BP_GROIN = list(\
/*Standard organs*/O_INTESTINES = 50, O_STOMACH = 20, O_LIVER = 20, O_KIDNEYS = 15, O_APPENDIX = 5, \
/*Diona organs*/O_POLYP = 10, O_ANCHOR = 15, \
/*Replicant organs*/O_VENTC = 20, \
/*Xeno organs*/ O_EGG = 25) ), \
"organ_hit_chance" = list(BP_HEAD = 95, BP_TORSO = 90, BP_GROIN = 90), \
"bone_strength" = list(BP_HEAD = 0.35, BP_TORSO = 0.3, BP_GROIN = 0.25, BP_L_FOOT = 0.15, BP_R_FOOT = 0.15, BP_L_LEG = 0.2, BP_R_LEG = 0.2, BP_L_ARM = 0.2, BP_R_ARM = 0.2, BP_L_HAND = 0.15, BP_R_HAND = 0.15), \
"organ_multiplier" = list(BP_HEAD = 3.6, BP_TORSO = 3.5, BP_GROIN = 3)/*Only used for simple mobs*/, \
"flesh_factors" = list("damage_mult" = 1,"velloss_mult" = 1))
/mob/living/simple_mob/metroid
//Metroids aren't real but we can make some guesses, and they sure as hell don't have any bones. They also don't have any arms or feet, so we're gonna pretend like those are referring to the parts of the metroid slime that have no organs in them.
ballistic_variables = list(\
"bone_chance_unencased" = list(BP_HEAD = 0, BP_TORSO = 0, BP_GROIN = 0, BP_L_FOOT = 0, BP_R_FOOT = 0, BP_L_LEG = 0, BP_R_LEG = 0, BP_L_ARM = 0, BP_R_ARM = 0, BP_L_HAND = 0, BP_R_HAND = 0), \
"organ_leave_early" = list("l_arm", "r_arm", "l_hand", "r_hand", "l_foot", "r_foot"), \
"organ_hit_weight" = list(\
BP_HEAD = list(\
/*Standard organs*/O_BRAIN = 90, O_EYES = 5, \
/*Diona organs*/O_RESPONSE = 10, O_RESPONSE = 15, O_GBLADDER = 15, \
/*Replicant organs*/O_VRLINK = 20, \
/*Xeno organs*/O_ACID = 10, O_RESIN = 10), \
BP_TORSO = list(\
/*Standard organs*/O_HEART = 5, O_LUNGS = 50, O_SPLEEN = 15, O_VOICE = 10, \
/*Synth organs*/O_CELL = 5, O_PUMP = 15, O_HEATSINK = 35, O_CYCLER = 15, O_DIAGNOSTIC = 10, \
/*Promethean organs*/O_REGBRUTE = 20, O_REGBURN = 20, O_REGOXY = 20, O_REGTOX = 20, \
/*Diona organs*/O_STRATA = 35, O_BRAIN = 20, O_NUTRIENT = 10, \
/*Replicant organs*/O_AREJECT = 35, \
/*Xeno organs*/O_PLASMA = 10, O_HIVE = 10), \
BP_GROIN = list(\
/*Standard organs*/O_INTESTINES = 50, O_STOMACH = 20, O_LIVER = 20, O_KIDNEYS = 15, O_APPENDIX = 5, \
/*Diona organs*/O_POLYP = 10, O_ANCHOR = 15, \
/*Replicant organs*/O_VENTC = 20, \
/*Xeno organs*/ O_EGG = 25) ), \
"organ_hit_chance" = list(BP_HEAD = 90, BP_TORSO = 95, BP_GROIN = 95), \
"bone_strength" = list(BP_HEAD = 0, BP_TORSO = 0, BP_GROIN = 0, BP_L_FOOT = 0, BP_R_FOOT = 0, BP_L_LEG = 0, BP_R_LEG = 0, BP_L_ARM = 0, BP_R_ARM = 0, BP_L_HAND = 0, BP_R_HAND = 0), \
"organ_multiplier" = list(BP_HEAD = 3.6, BP_TORSO = 3.5, BP_GROIN = 3.4)/*Only used for simple mobs*/, \
"flesh_factors" = list("damage_mult" = 1.175,"velloss_mult" = 1.3))
/mob/living/simple_mob/mechanical
//Okay, so my equations weren't really meant for stuff made out of metal, but we should be able to make it work anyways. We'll just make bone represent armor instead.
ballistic_variables = list(\
"bone_chance_unencased" = list(BP_HEAD = 85, BP_TORSO = 90, BP_GROIN = 90, BP_L_FOOT = 95, BP_R_FOOT = 95, BP_L_LEG = 95, BP_R_LEG = 95, BP_L_ARM = 95, BP_R_ARM = 95, BP_L_HAND = 95, BP_R_HAND = 95), \
"organ_leave_early" = list("l_arm", "r_arm", "l_hand", "r_hand", "l_foot", "r_foot"), \
"organ_hit_weight" = list(\
BP_HEAD = list(\
/*Standard organs*/O_BRAIN = 90, O_EYES = 5, \
/*Diona organs*/O_RESPONSE = 10, O_RESPONSE = 15, O_GBLADDER = 15, \
/*Replicant organs*/O_VRLINK = 20, \
/*Xeno organs*/O_ACID = 10, O_RESIN = 10), \
BP_TORSO = list(\
/*Standard organs*/O_HEART = 5, O_LUNGS = 50, O_SPLEEN = 15, O_VOICE = 10, \
/*Synth organs*/O_CELL = 5, O_PUMP = 15, O_HEATSINK = 35, O_CYCLER = 15, O_DIAGNOSTIC = 10, \
/*Promethean organs*/O_REGBRUTE = 20, O_REGBURN = 20, O_REGOXY = 20, O_REGTOX = 20, \
/*Diona organs*/O_STRATA = 35, O_BRAIN = 20, O_NUTRIENT = 10, \
/*Replicant organs*/O_AREJECT = 35, \
/*Xeno organs*/O_PLASMA = 10, O_HIVE = 10), \
BP_GROIN = list(\
/*Standard organs*/O_INTESTINES = 50, O_STOMACH = 20, O_LIVER = 20, O_KIDNEYS = 15, O_APPENDIX = 5, \
/*Diona organs*/O_POLYP = 10, O_ANCHOR = 15, \
/*Replicant organs*/O_VENTC = 20, \
/*Xeno organs*/ O_EGG = 25) ), \
"organ_hit_chance" = list(BP_HEAD = 80, BP_TORSO = 80, BP_GROIN = 80), \
"bone_strength" = list(BP_HEAD = 2.5, BP_TORSO = 3, BP_GROIN = 2.75, BP_L_FOOT = 1.5, BP_R_FOOT = 1.5, BP_L_LEG = 2, BP_R_LEG = 2, BP_L_ARM = 1.75, BP_R_ARM = 1.75, BP_L_HAND = 1.35, BP_R_HAND = 1.35), \
"organ_multiplier" = list(BP_HEAD = 3, BP_TORSO = 2.5, BP_GROIN = 2.5)/*Only used for simple mobs*/, \
"flesh_factors" = list("damage_mult" = 1,"velloss_mult" = 1))
/mob/living/simple_mob/tomato
//Going to copy from metroids, since they're honestly kind of similar, just blob shaped mushy creatures.
ballistic_variables = list(\
"bone_chance_unencased" = list(BP_HEAD = 0, BP_TORSO = 0, BP_GROIN = 0, BP_L_FOOT = 0, BP_R_FOOT = 0, BP_L_LEG = 0, BP_R_LEG = 0, BP_L_ARM = 0, BP_R_ARM = 0, BP_L_HAND = 0, BP_R_HAND = 0), \
"organ_leave_early" = list("l_arm", "r_arm", "l_hand", "r_hand", "l_foot", "r_foot"), \
"organ_hit_weight" = list(\
BP_HEAD = list(\
/*Standard organs*/O_BRAIN = 90, O_EYES = 5, \
/*Diona organs*/O_RESPONSE = 10, O_RESPONSE = 15, O_GBLADDER = 15, \
/*Replicant organs*/O_VRLINK = 20, \
/*Xeno organs*/O_ACID = 10, O_RESIN = 10), \
BP_TORSO = list(\
/*Standard organs*/O_HEART = 5, O_LUNGS = 50, O_SPLEEN = 15, O_VOICE = 10, \
/*Synth organs*/O_CELL = 5, O_PUMP = 15, O_HEATSINK = 35, O_CYCLER = 15, O_DIAGNOSTIC = 10, \
/*Promethean organs*/O_REGBRUTE = 20, O_REGBURN = 20, O_REGOXY = 20, O_REGTOX = 20, \
/*Diona organs*/O_STRATA = 35, O_BRAIN = 20, O_NUTRIENT = 10, \
/*Replicant organs*/O_AREJECT = 35, \
/*Xeno organs*/O_PLASMA = 10, O_HIVE = 10), \
BP_GROIN = list(\
/*Standard organs*/O_INTESTINES = 50, O_STOMACH = 20, O_LIVER = 20, O_KIDNEYS = 15, O_APPENDIX = 5, \
/*Diona organs*/O_POLYP = 10, O_ANCHOR = 15, \
/*Replicant organs*/O_VENTC = 20, \
/*Xeno organs*/ O_EGG = 25) ), \
"organ_hit_chance" = list(BP_HEAD = 90, BP_TORSO = 95, BP_GROIN = 95), \
"bone_strength" = list(BP_HEAD = 0, BP_TORSO = 0, BP_GROIN = 0, BP_L_FOOT = 0, BP_R_FOOT = 0, BP_L_LEG = 0, BP_R_LEG = 0, BP_L_ARM = 0, BP_R_ARM = 0, BP_L_HAND = 0, BP_R_HAND = 0), \
"organ_multiplier" = list(BP_HEAD = 3.6, BP_TORSO = 3.5, BP_GROIN = 3.4)/*Only used for simple mobs*/, \
"flesh_factors" = list("damage_mult" = 1.175,"velloss_mult" = 1.3))
/mob/living/simple_mob/animal/space/tree
//It's uh, a tree? Gonna say here that the bark will act as a shitty equivalent to bones but be 100% encasing
ballistic_variables = list(\
"bone_chance_unencased" = list(BP_HEAD = 100, BP_TORSO = 100, BP_GROIN = 100, BP_L_FOOT = 100, BP_R_FOOT = 100, BP_L_LEG = 100, BP_R_LEG = 100, BP_L_ARM = 100, BP_R_ARM = 100, BP_L_HAND = 100, BP_R_HAND = 100), \
"organ_leave_early" = list("l_arm", "r_arm", "l_hand", "r_hand", "l_foot", "r_foot"), \
"organ_hit_weight" = list(\
BP_HEAD = list(\
/*Standard organs*/O_BRAIN = 90, O_EYES = 5, \
/*Diona organs*/O_RESPONSE = 10, O_RESPONSE = 15, O_GBLADDER = 15, \
/*Replicant organs*/O_VRLINK = 20, \
/*Xeno organs*/O_ACID = 10, O_RESIN = 10), \
BP_TORSO = list(\
/*Standard organs*/O_HEART = 5, O_LUNGS = 50, O_SPLEEN = 15, O_VOICE = 10, \
/*Synth organs*/O_CELL = 5, O_PUMP = 15, O_HEATSINK = 35, O_CYCLER = 15, O_DIAGNOSTIC = 10, \
/*Promethean organs*/O_REGBRUTE = 20, O_REGBURN = 20, O_REGOXY = 20, O_REGTOX = 20, \
/*Diona organs*/O_STRATA = 35, O_BRAIN = 20, O_NUTRIENT = 10, \
/*Replicant organs*/O_AREJECT = 35, \
/*Xeno organs*/O_PLASMA = 10, O_HIVE = 10), \
BP_GROIN = list(\
/*Standard organs*/O_INTESTINES = 50, O_STOMACH = 20, O_LIVER = 20, O_KIDNEYS = 15, O_APPENDIX = 5, \
/*Diona organs*/O_POLYP = 10, O_ANCHOR = 15, \
/*Replicant organs*/O_VENTC = 20, \
/*Xeno organs*/ O_EGG = 25) ), \
"organ_hit_chance" = list(BP_HEAD = 95, BP_TORSO = 90, BP_GROIN = 90), \
"bone_strength" = list(BP_HEAD = 0.075, BP_TORSO = 0.15, BP_GROIN = 0.2, BP_L_FOOT = 0.075, BP_R_FOOT = 0.075, BP_L_LEG = 0.1, BP_R_LEG = 0.1, BP_L_ARM = 0.075, BP_R_ARM = 0.075, BP_L_HAND = 0.05, BP_R_HAND = 0.05), \
"organ_multiplier" = list(BP_HEAD = 4, BP_TORSO = 3.5, BP_GROIN = 2.5)/*Only used for simple mobs*/, \
"flesh_factors" = list("damage_mult" = 1,"velloss_mult" = 1))
/mob/living/simple_mob/slime
//Slimes are also just getting copied from metroids, so scroll up for explanation.
ballistic_variables = list(\
"bone_chance_unencased" = list(BP_HEAD = 0, BP_TORSO = 0, BP_GROIN = 0, BP_L_FOOT = 0, BP_R_FOOT = 0, BP_L_LEG = 0, BP_R_LEG = 0, BP_L_ARM = 0, BP_R_ARM = 0, BP_L_HAND = 0, BP_R_HAND = 0), \
"organ_leave_early" = list("l_arm", "r_arm", "l_hand", "r_hand", "l_foot", "r_foot"), \
"organ_hit_weight" = list(\
BP_HEAD = list(\
/*Standard organs*/O_BRAIN = 90, O_EYES = 5, \
/*Diona organs*/O_RESPONSE = 10, O_RESPONSE = 15, O_GBLADDER = 15, \
/*Replicant organs*/O_VRLINK = 20, \
/*Xeno organs*/O_ACID = 10, O_RESIN = 10), \
BP_TORSO = list(\
/*Standard organs*/O_HEART = 5, O_LUNGS = 50, O_SPLEEN = 15, O_VOICE = 10, \
/*Synth organs*/O_CELL = 5, O_PUMP = 15, O_HEATSINK = 35, O_CYCLER = 15, O_DIAGNOSTIC = 10, \
/*Promethean organs*/O_REGBRUTE = 20, O_REGBURN = 20, O_REGOXY = 20, O_REGTOX = 20, \
/*Diona organs*/O_STRATA = 35, O_BRAIN = 20, O_NUTRIENT = 10, \
/*Replicant organs*/O_AREJECT = 35, \
/*Xeno organs*/O_PLASMA = 10, O_HIVE = 10), \
BP_GROIN = list(\
/*Standard organs*/O_INTESTINES = 50, O_STOMACH = 20, O_LIVER = 20, O_KIDNEYS = 15, O_APPENDIX = 5, \
/*Diona organs*/O_POLYP = 10, O_ANCHOR = 15, \
/*Replicant organs*/O_VENTC = 20, \
/*Xeno organs*/ O_EGG = 25) ), \
"organ_hit_chance" = list(BP_HEAD = 90, BP_TORSO = 95, BP_GROIN = 95), \
"bone_strength" = list(BP_HEAD = 0, BP_TORSO = 0, BP_GROIN = 0, BP_L_FOOT = 0, BP_R_FOOT = 0, BP_L_LEG = 0, BP_R_LEG = 0, BP_L_ARM = 0, BP_R_ARM = 0, BP_L_HAND = 0, BP_R_HAND = 0), \
"organ_multiplier" = list(BP_HEAD = 3.6, BP_TORSO = 3.5, BP_GROIN = 3.4)/*Only used for simple mobs*/, \
"flesh_factors" = list("damage_mult" = 1.175,"velloss_mult" = 1.3))
/mob/living/simple_mob/vore/pitcher_plant
//Uhhh, well, pitcher plants are kinda funny because they're mostly hollow. Gonna pretty much just say that they have no organs and no bones here. Maybe later on we can add a special function for bullets to also act on whatever is inside.
ballistic_variables = list(\
"bone_chance_unencased" = list(BP_HEAD = 0, BP_TORSO = 0, BP_GROIN = 0, BP_L_FOOT = 0, BP_R_FOOT = 0, BP_L_LEG = 0, BP_R_LEG = 0, BP_L_ARM = 0, BP_R_ARM = 0, BP_L_HAND = 0, BP_R_HAND = 0), \
"organ_leave_early" = list("l_arm", "r_arm", "l_hand", "r_hand", "l_foot", "r_foot"), \
"organ_hit_weight" = list(\
BP_HEAD = list(\
/*Standard organs*/O_BRAIN = 90, O_EYES = 5, \
/*Diona organs*/O_RESPONSE = 10, O_RESPONSE = 15, O_GBLADDER = 15, \
/*Replicant organs*/O_VRLINK = 20, \
/*Xeno organs*/O_ACID = 10, O_RESIN = 10), \
BP_TORSO = list(\
/*Standard organs*/O_HEART = 5, O_LUNGS = 50, O_SPLEEN = 15, O_VOICE = 10, \
/*Synth organs*/O_CELL = 5, O_PUMP = 15, O_HEATSINK = 35, O_CYCLER = 15, O_DIAGNOSTIC = 10, \
/*Promethean organs*/O_REGBRUTE = 20, O_REGBURN = 20, O_REGOXY = 20, O_REGTOX = 20, \
/*Diona organs*/O_STRATA = 35, O_BRAIN = 20, O_NUTRIENT = 10, \
/*Replicant organs*/O_AREJECT = 35, \
/*Xeno organs*/O_PLASMA = 10, O_HIVE = 10), \
BP_GROIN = list(\
/*Standard organs*/O_INTESTINES = 50, O_STOMACH = 20, O_LIVER = 20, O_KIDNEYS = 15, O_APPENDIX = 5, \
/*Diona organs*/O_POLYP = 10, O_ANCHOR = 15, \
/*Replicant organs*/O_VENTC = 20, \
/*Xeno organs*/ O_EGG = 25) ), \
"organ_hit_chance" = list(BP_HEAD = 0, BP_TORSO = 0, BP_GROIN = 0), \
"bone_strength" = list(BP_HEAD = 0, BP_TORSO = 0, BP_GROIN = 0, BP_L_FOOT = 0, BP_R_FOOT = 0, BP_L_LEG = 0, BP_R_LEG = 0, BP_L_ARM = 0, BP_R_ARM = 0, BP_L_HAND = 0, BP_R_HAND = 0), \
"organ_multiplier" = list(BP_HEAD = 0, BP_TORSO = 0, BP_GROIN = 0)/*Only used for simple mobs*/, \
"flesh_factors" = list("damage_mult" = 1,"velloss_mult" = 1))
/mob/living/simple_mob/vore/bee
//Bees also have exoskeletons, so copying from spiders pretty much.
ballistic_variables = list(\
"bone_chance_unencased" = list(BP_HEAD = 97, BP_TORSO = 97, BP_GROIN = 97, BP_L_FOOT = 97, BP_R_FOOT = 97, BP_L_LEG = 97, BP_R_LEG = 97, BP_L_ARM = 97, BP_R_ARM = 97, BP_L_HAND = 97, BP_R_HAND = 97), \
"organ_leave_early" = list("l_arm", "r_arm", "l_hand", "r_hand", "l_foot", "r_foot"), \
"organ_hit_weight" = list(\
BP_HEAD = list(\
/*Standard organs*/O_BRAIN = 90, O_EYES = 5, \
/*Diona organs*/O_RESPONSE = 10, O_RESPONSE = 15, O_GBLADDER = 15, \
/*Replicant organs*/O_VRLINK = 20, \
/*Xeno organs*/O_ACID = 10, O_RESIN = 10), \
BP_TORSO = list(\
/*Standard organs*/O_HEART = 5, O_LUNGS = 50, O_SPLEEN = 15, O_VOICE = 10, \
/*Synth organs*/O_CELL = 5, O_PUMP = 15, O_HEATSINK = 35, O_CYCLER = 15, O_DIAGNOSTIC = 10, \
/*Promethean organs*/O_REGBRUTE = 20, O_REGBURN = 20, O_REGOXY = 20, O_REGTOX = 20, \
/*Diona organs*/O_STRATA = 35, O_BRAIN = 20, O_NUTRIENT = 10, \
/*Replicant organs*/O_AREJECT = 35, \
/*Xeno organs*/O_PLASMA = 10, O_HIVE = 10), \
BP_GROIN = list(\
/*Standard organs*/O_INTESTINES = 50, O_STOMACH = 20, O_LIVER = 20, O_KIDNEYS = 15, O_APPENDIX = 5, \
/*Diona organs*/O_POLYP = 10, O_ANCHOR = 15, \
/*Replicant organs*/O_VENTC = 20, \
/*Xeno organs*/ O_EGG = 25) ), \
"organ_hit_chance" = list(BP_HEAD = 95, BP_TORSO = 90, BP_GROIN = 90), \
"bone_strength" = list(BP_HEAD = 0.35, BP_TORSO = 0.3, BP_GROIN = 0.25, BP_L_FOOT = 0.15, BP_R_FOOT = 0.15, BP_L_LEG = 0.2, BP_R_LEG = 0.2, BP_L_ARM = 0.2, BP_R_ARM = 0.2, BP_L_HAND = 0.15, BP_R_HAND = 0.15), \
"organ_multiplier" = list(BP_HEAD = 3.6, BP_TORSO = 3.5, BP_GROIN = 3)/*Only used for simple mobs*/, \
"flesh_factors" = list("damage_mult" = 1,"velloss_mult" = 1))
/mob/living/simple_mob/vore/aggressive/corrupthound
//These are mechanical, so copying from mechanical.
ballistic_variables = list(\
"bone_chance_unencased" = list(BP_HEAD = 85, BP_TORSO = 90, BP_GROIN = 90, BP_L_FOOT = 95, BP_R_FOOT = 95, BP_L_LEG = 95, BP_R_LEG = 95, BP_L_ARM = 95, BP_R_ARM = 95, BP_L_HAND = 95, BP_R_HAND = 95), \
"organ_leave_early" = list("l_arm", "r_arm", "l_hand", "r_hand", "l_foot", "r_foot"), \
"organ_hit_weight" = list(\
BP_HEAD = list(\
/*Standard organs*/O_BRAIN = 90, O_EYES = 5, \
/*Diona organs*/O_RESPONSE = 10, O_RESPONSE = 15, O_GBLADDER = 15, \
/*Replicant organs*/O_VRLINK = 20, \
/*Xeno organs*/O_ACID = 10, O_RESIN = 10), \
BP_TORSO = list(\
/*Standard organs*/O_HEART = 5, O_LUNGS = 50, O_SPLEEN = 15, O_VOICE = 10, \
/*Synth organs*/O_CELL = 5, O_PUMP = 15, O_HEATSINK = 35, O_CYCLER = 15, O_DIAGNOSTIC = 10, \
/*Promethean organs*/O_REGBRUTE = 20, O_REGBURN = 20, O_REGOXY = 20, O_REGTOX = 20, \
/*Diona organs*/O_STRATA = 35, O_BRAIN = 20, O_NUTRIENT = 10, \
/*Replicant organs*/O_AREJECT = 35, \
/*Xeno organs*/O_PLASMA = 10, O_HIVE = 10), \
BP_GROIN = list(\
/*Standard organs*/O_INTESTINES = 50, O_STOMACH = 20, O_LIVER = 20, O_KIDNEYS = 15, O_APPENDIX = 5, \
/*Diona organs*/O_POLYP = 10, O_ANCHOR = 15, \
/*Replicant organs*/O_VENTC = 20, \
/*Xeno organs*/ O_EGG = 25) ), \
"organ_hit_chance" = list(BP_HEAD = 80, BP_TORSO = 80, BP_GROIN = 80), \
"bone_strength" = list(BP_HEAD = 2.5, BP_TORSO = 3, BP_GROIN = 2.75, BP_L_FOOT = 1.5, BP_R_FOOT = 1.5, BP_L_LEG = 2, BP_R_LEG = 2, BP_L_ARM = 1.75, BP_R_ARM = 1.75, BP_L_HAND = 1.35, BP_R_HAND = 1.35), \
"organ_multiplier" = list(BP_HEAD = 3, BP_TORSO = 2.5, BP_GROIN = 2.5)/*Only used for simple mobs*/, \
"flesh_factors" = list("damage_mult" = 1,"velloss_mult" = 1))
/mob/living/simple_mob/vore/aggressive/frog
//Frogs actually have some interesting anatomy. Giant head, small brain, large holes in the skull for eyes.
ballistic_variables = list(\
"bone_chance_unencased" = list(BP_HEAD = 65, BP_TORSO = 70, BP_GROIN = 20, BP_L_FOOT = 80, BP_R_FOOT = 80, BP_L_LEG = 35, BP_R_LEG = 35, BP_L_ARM = 65, BP_R_ARM = 65, BP_L_HAND = 80, BP_R_HAND = 80), \
"organ_leave_early" = list("l_arm", "r_arm", "l_hand", "r_hand", "l_foot", "r_foot"), \
"organ_hit_weight" = list(\
BP_HEAD = list(\
/*Standard organs*/O_BRAIN = 90, O_EYES = 5, \
/*Diona organs*/O_RESPONSE = 10, O_RESPONSE = 15, O_GBLADDER = 15, \
/*Replicant organs*/O_VRLINK = 20, \
/*Xeno organs*/O_ACID = 10, O_RESIN = 10), \
BP_TORSO = list(\
/*Standard organs*/O_HEART = 5, O_LUNGS = 50, O_SPLEEN = 15, O_VOICE = 10, \
/*Synth organs*/O_CELL = 5, O_PUMP = 15, O_HEATSINK = 35, O_CYCLER = 15, O_DIAGNOSTIC = 10, \
/*Promethean organs*/O_REGBRUTE = 20, O_REGBURN = 20, O_REGOXY = 20, O_REGTOX = 20, \
/*Diona organs*/O_STRATA = 35, O_BRAIN = 20, O_NUTRIENT = 10, \
/*Replicant organs*/O_AREJECT = 35, \
/*Xeno organs*/O_PLASMA = 10, O_HIVE = 10), \
BP_GROIN = list(\
/*Standard organs*/O_INTESTINES = 50, O_STOMACH = 20, O_LIVER = 20, O_KIDNEYS = 15, O_APPENDIX = 5, \
/*Diona organs*/O_POLYP = 10, O_ANCHOR = 15, \
/*Replicant organs*/O_VENTC = 20, \
/*Xeno organs*/ O_EGG = 25) ), \
"organ_hit_chance" = list(BP_HEAD = 50, BP_TORSO = 90, BP_GROIN = 90), \
"bone_strength" = list(BP_HEAD = 1.3, BP_TORSO = 1.15, BP_GROIN = 1, BP_L_FOOT = 0.7, BP_R_FOOT = 0.7, BP_L_LEG = 1.2, BP_R_LEG = 1.2, BP_L_ARM = 1, BP_R_ARM = 1, BP_L_HAND = 0.55, BP_R_HAND = 0.55), \
"organ_multiplier" = list(BP_HEAD = 4, BP_TORSO = 3.5, BP_GROIN = 2.9)/*Only used for simple mobs*/, \
"flesh_factors" = list("damage_mult" = 1,"velloss_mult" = 1))
/mob/living/simple_mob/animal/space/jelly
//Copying from metroids again
ballistic_variables = list(\
"bone_chance_unencased" = list(BP_HEAD = 0, BP_TORSO = 0, BP_GROIN = 0, BP_L_FOOT = 0, BP_R_FOOT = 0, BP_L_LEG = 0, BP_R_LEG = 0, BP_L_ARM = 0, BP_R_ARM = 0, BP_L_HAND = 0, BP_R_HAND = 0), \
"organ_leave_early" = list("l_arm", "r_arm", "l_hand", "r_hand", "l_foot", "r_foot"), \
"organ_hit_weight" = list(\
BP_HEAD = list(\
/*Standard organs*/O_BRAIN = 90, O_EYES = 5, \
/*Diona organs*/O_RESPONSE = 10, O_RESPONSE = 15, O_GBLADDER = 15, \
/*Replicant organs*/O_VRLINK = 20, \
/*Xeno organs*/O_ACID = 10, O_RESIN = 10), \
BP_TORSO = list(\
/*Standard organs*/O_HEART = 5, O_LUNGS = 50, O_SPLEEN = 15, O_VOICE = 10, \
/*Synth organs*/O_CELL = 5, O_PUMP = 15, O_HEATSINK = 35, O_CYCLER = 15, O_DIAGNOSTIC = 10, \
/*Promethean organs*/O_REGBRUTE = 20, O_REGBURN = 20, O_REGOXY = 20, O_REGTOX = 20, \
/*Diona organs*/O_STRATA = 35, O_BRAIN = 20, O_NUTRIENT = 10, \
/*Replicant organs*/O_AREJECT = 35, \
/*Xeno organs*/O_PLASMA = 10, O_HIVE = 10), \
BP_GROIN = list(\
/*Standard organs*/O_INTESTINES = 50, O_STOMACH = 20, O_LIVER = 20, O_KIDNEYS = 15, O_APPENDIX = 5, \
/*Diona organs*/O_POLYP = 10, O_ANCHOR = 15, \
/*Replicant organs*/O_VENTC = 20, \
/*Xeno organs*/ O_EGG = 25) ), \
"organ_hit_chance" = list(BP_HEAD = 90, BP_TORSO = 95, BP_GROIN = 95), \
"bone_strength" = list(BP_HEAD = 0, BP_TORSO = 0, BP_GROIN = 0, BP_L_FOOT = 0, BP_R_FOOT = 0, BP_L_LEG = 0, BP_R_LEG = 0, BP_L_ARM = 0, BP_R_ARM = 0, BP_L_HAND = 0, BP_R_HAND = 0), \
"organ_multiplier" = list(BP_HEAD = 3.6, BP_TORSO = 3.5, BP_GROIN = 3.4)/*Only used for simple mobs*/, \
"flesh_factors" = list("damage_mult" = 1.175,"velloss_mult" = 1.3))
/mob/living/simple_mob/vore/sect_queen
//Exoskeleton, so, gonna copy from spiders and give a small bonus to the bone strength for the sheer size.
ballistic_variables = list(\
"bone_chance_unencased" = list(BP_HEAD = 97, BP_TORSO = 97, BP_GROIN = 97, BP_L_FOOT = 97, BP_R_FOOT = 97, BP_L_LEG = 97, BP_R_LEG = 97, BP_L_ARM = 97, BP_R_ARM = 97, BP_L_HAND = 97, BP_R_HAND = 97), \
"organ_leave_early" = list("l_arm", "r_arm", "l_hand", "r_hand", "l_foot", "r_foot"), \
"organ_hit_weight" = list(\
BP_HEAD = list(\
/*Standard organs*/O_BRAIN = 90, O_EYES = 5, \
/*Diona organs*/O_RESPONSE = 10, O_RESPONSE = 15, O_GBLADDER = 15, \
/*Replicant organs*/O_VRLINK = 20, \
/*Xeno organs*/O_ACID = 10, O_RESIN = 10), \
BP_TORSO = list(\
/*Standard organs*/O_HEART = 5, O_LUNGS = 50, O_SPLEEN = 15, O_VOICE = 10, \
/*Synth organs*/O_CELL = 5, O_PUMP = 15, O_HEATSINK = 35, O_CYCLER = 15, O_DIAGNOSTIC = 10, \
/*Promethean organs*/O_REGBRUTE = 20, O_REGBURN = 20, O_REGOXY = 20, O_REGTOX = 20, \
/*Diona organs*/O_STRATA = 35, O_BRAIN = 20, O_NUTRIENT = 10, \
/*Replicant organs*/O_AREJECT = 35, \
/*Xeno organs*/O_PLASMA = 10, O_HIVE = 10), \
BP_GROIN = list(\
/*Standard organs*/O_INTESTINES = 50, O_STOMACH = 20, O_LIVER = 20, O_KIDNEYS = 15, O_APPENDIX = 5, \
/*Diona organs*/O_POLYP = 10, O_ANCHOR = 15, \
/*Replicant organs*/O_VENTC = 20, \
/*Xeno organs*/ O_EGG = 25) ), \
"organ_hit_chance" = list(BP_HEAD = 95, BP_TORSO = 90, BP_GROIN = 90), \
"bone_strength" = list(BP_HEAD = 0.45, BP_TORSO = 0.4, BP_GROIN = 0.35, BP_L_FOOT = 0.25, BP_R_FOOT = 0.25, BP_L_LEG = 0.3, BP_R_LEG = 0.3, BP_L_ARM = 0.3, BP_R_ARM = 0.3, BP_L_HAND = 0.25, BP_R_HAND = 0.25), \
"organ_multiplier" = list(BP_HEAD = 3.6, BP_TORSO = 3.5, BP_GROIN = 3)/*Only used for simple mobs*/, \
"flesh_factors" = list("damage_mult" = 1,"velloss_mult" = 1))
/mob/living/simple_mob/vore/oregrub
//They seem mushy and blobby, so gonna copy from metroids.
ballistic_variables = list(\
"bone_chance_unencased" = list(BP_HEAD = 0, BP_TORSO = 0, BP_GROIN = 0, BP_L_FOOT = 0, BP_R_FOOT = 0, BP_L_LEG = 0, BP_R_LEG = 0, BP_L_ARM = 0, BP_R_ARM = 0, BP_L_HAND = 0, BP_R_HAND = 0), \
"organ_leave_early" = list("l_arm", "r_arm", "l_hand", "r_hand", "l_foot", "r_foot"), \
"organ_hit_weight" = list(\
BP_HEAD = list(\
/*Standard organs*/O_BRAIN = 90, O_EYES = 5, \
/*Diona organs*/O_RESPONSE = 10, O_RESPONSE = 15, O_GBLADDER = 15, \
/*Replicant organs*/O_VRLINK = 20, \
/*Xeno organs*/O_ACID = 10, O_RESIN = 10), \
BP_TORSO = list(\
/*Standard organs*/O_HEART = 5, O_LUNGS = 50, O_SPLEEN = 15, O_VOICE = 10, \
/*Synth organs*/O_CELL = 5, O_PUMP = 15, O_HEATSINK = 35, O_CYCLER = 15, O_DIAGNOSTIC = 10, \
/*Promethean organs*/O_REGBRUTE = 20, O_REGBURN = 20, O_REGOXY = 20, O_REGTOX = 20, \
/*Diona organs*/O_STRATA = 35, O_BRAIN = 20, O_NUTRIENT = 10, \
/*Replicant organs*/O_AREJECT = 35, \
/*Xeno organs*/O_PLASMA = 10, O_HIVE = 10), \
BP_GROIN = list(\
/*Standard organs*/O_INTESTINES = 50, O_STOMACH = 20, O_LIVER = 20, O_KIDNEYS = 15, O_APPENDIX = 5, \
/*Diona organs*/O_POLYP = 10, O_ANCHOR = 15, \
/*Replicant organs*/O_VENTC = 20, \
/*Xeno organs*/ O_EGG = 25) ), \
"organ_hit_chance" = list(BP_HEAD = 90, BP_TORSO = 95, BP_GROIN = 95), \
"bone_strength" = list(BP_HEAD = 0, BP_TORSO = 0, BP_GROIN = 0, BP_L_FOOT = 0, BP_R_FOOT = 0, BP_L_LEG = 0, BP_R_LEG = 0, BP_L_ARM = 0, BP_R_ARM = 0, BP_L_HAND = 0, BP_R_HAND = 0), \
"organ_multiplier" = list(BP_HEAD = 3.6, BP_TORSO = 3.5, BP_GROIN = 3.4)/*Only used for simple mobs*/, \
"flesh_factors" = list("damage_mult" = 1.175,"velloss_mult" = 1.3))
/mob/living/simple_mob/vore/solargrub
//Solargrubs also seem mushy and blobby, let's continue copying from metroids.
ballistic_variables = list(\
"bone_chance_unencased" = list(BP_HEAD = 0, BP_TORSO = 0, BP_GROIN = 0, BP_L_FOOT = 0, BP_R_FOOT = 0, BP_L_LEG = 0, BP_R_LEG = 0, BP_L_ARM = 0, BP_R_ARM = 0, BP_L_HAND = 0, BP_R_HAND = 0), \
"organ_leave_early" = list("l_arm", "r_arm", "l_hand", "r_hand", "l_foot", "r_foot"), \
"organ_hit_weight" = list(\
BP_HEAD = list(\
/*Standard organs*/O_BRAIN = 90, O_EYES = 5, \
/*Diona organs*/O_RESPONSE = 10, O_RESPONSE = 15, O_GBLADDER = 15, \
/*Replicant organs*/O_VRLINK = 20, \
/*Xeno organs*/O_ACID = 10, O_RESIN = 10), \
BP_TORSO = list(\
/*Standard organs*/O_HEART = 5, O_LUNGS = 50, O_SPLEEN = 15, O_VOICE = 10, \
/*Synth organs*/O_CELL = 5, O_PUMP = 15, O_HEATSINK = 35, O_CYCLER = 15, O_DIAGNOSTIC = 10, \
/*Promethean organs*/O_REGBRUTE = 20, O_REGBURN = 20, O_REGOXY = 20, O_REGTOX = 20, \
/*Diona organs*/O_STRATA = 35, O_BRAIN = 20, O_NUTRIENT = 10, \
/*Replicant organs*/O_AREJECT = 35, \
/*Xeno organs*/O_PLASMA = 10, O_HIVE = 10), \
BP_GROIN = list(\
/*Standard organs*/O_INTESTINES = 50, O_STOMACH = 20, O_LIVER = 20, O_KIDNEYS = 15, O_APPENDIX = 5, \
/*Diona organs*/O_POLYP = 10, O_ANCHOR = 15, \
/*Replicant organs*/O_VENTC = 20, \
/*Xeno organs*/ O_EGG = 25) ), \
"organ_hit_chance" = list(BP_HEAD = 90, BP_TORSO = 95, BP_GROIN = 95), \
"bone_strength" = list(BP_HEAD = 0, BP_TORSO = 0, BP_GROIN = 0, BP_L_FOOT = 0, BP_R_FOOT = 0, BP_L_LEG = 0, BP_R_LEG = 0, BP_L_ARM = 0, BP_R_ARM = 0, BP_L_HAND = 0, BP_R_HAND = 0), \
"organ_multiplier" = list(BP_HEAD = 3.6, BP_TORSO = 3.5, BP_GROIN = 3.4)/*Only used for simple mobs*/, \
"flesh_factors" = list("damage_mult" = 1.175,"velloss_mult" = 1.3))
/mob/living/simple_mob/vore/slug
//Slugs are also mushy and blobby, gonna copy from metroids as well.
ballistic_variables = list(\
"bone_chance_unencased" = list(BP_HEAD = 0, BP_TORSO = 0, BP_GROIN = 0, BP_L_FOOT = 0, BP_R_FOOT = 0, BP_L_LEG = 0, BP_R_LEG = 0, BP_L_ARM = 0, BP_R_ARM = 0, BP_L_HAND = 0, BP_R_HAND = 0), \
"organ_leave_early" = list("l_arm", "r_arm", "l_hand", "r_hand", "l_foot", "r_foot"), \
"organ_hit_weight" = list(\
BP_HEAD = list(\
/*Standard organs*/O_BRAIN = 90, O_EYES = 5, \
/*Diona organs*/O_RESPONSE = 10, O_RESPONSE = 15, O_GBLADDER = 15, \
/*Replicant organs*/O_VRLINK = 20, \
/*Xeno organs*/O_ACID = 10, O_RESIN = 10), \
BP_TORSO = list(\
/*Standard organs*/O_HEART = 5, O_LUNGS = 50, O_SPLEEN = 15, O_VOICE = 10, \
/*Synth organs*/O_CELL = 5, O_PUMP = 15, O_HEATSINK = 35, O_CYCLER = 15, O_DIAGNOSTIC = 10, \
/*Promethean organs*/O_REGBRUTE = 20, O_REGBURN = 20, O_REGOXY = 20, O_REGTOX = 20, \
/*Diona organs*/O_STRATA = 35, O_BRAIN = 20, O_NUTRIENT = 10, \
/*Replicant organs*/O_AREJECT = 35, \
/*Xeno organs*/O_PLASMA = 10, O_HIVE = 10), \
BP_GROIN = list(\
/*Standard organs*/O_INTESTINES = 50, O_STOMACH = 20, O_LIVER = 20, O_KIDNEYS = 15, O_APPENDIX = 5, \
/*Diona organs*/O_POLYP = 10, O_ANCHOR = 15, \
/*Replicant organs*/O_VENTC = 20, \
/*Xeno organs*/ O_EGG = 25) ), \
"organ_hit_chance" = list(BP_HEAD = 90, BP_TORSO = 95, BP_GROIN = 95), \
"bone_strength" = list(BP_HEAD = 0, BP_TORSO = 0, BP_GROIN = 0, BP_L_FOOT = 0, BP_R_FOOT = 0, BP_L_LEG = 0, BP_R_LEG = 0, BP_L_ARM = 0, BP_R_ARM = 0, BP_L_HAND = 0, BP_R_HAND = 0), \
"organ_multiplier" = list(BP_HEAD = 3.6, BP_TORSO = 3.5, BP_GROIN = 3.4)/*Only used for simple mobs*/, \
"flesh_factors" = list("damage_mult" = 1.175,"velloss_mult" = 1.3))
/mob/living/simple_mob/vore/aggressive/mimic
//Hmm, To be honest I imagine mimics having an exoskeleton, so I'm gonna copy from spiders and make a few changes for organ stuff.
ballistic_variables = list(\
"bone_chance_unencased" = list(BP_HEAD = 97, BP_TORSO = 97, BP_GROIN = 97, BP_L_FOOT = 97, BP_R_FOOT = 97, BP_L_LEG = 97, BP_R_LEG = 97, BP_L_ARM = 97, BP_R_ARM = 97, BP_L_HAND = 97, BP_R_HAND = 97), \
"organ_leave_early" = list("l_arm", "r_arm", "l_hand", "r_hand", "l_foot", "r_foot"), \
"organ_hit_weight" = list(\
BP_HEAD = list(\
/*Standard organs*/O_BRAIN = 90, O_EYES = 5, \
/*Diona organs*/O_RESPONSE = 10, O_RESPONSE = 15, O_GBLADDER = 15, \
/*Replicant organs*/O_VRLINK = 20, \
/*Xeno organs*/O_ACID = 10, O_RESIN = 10), \
BP_TORSO = list(\
/*Standard organs*/O_HEART = 5, O_LUNGS = 50, O_SPLEEN = 15, O_VOICE = 10, \
/*Synth organs*/O_CELL = 5, O_PUMP = 15, O_HEATSINK = 35, O_CYCLER = 15, O_DIAGNOSTIC = 10, \
/*Promethean organs*/O_REGBRUTE = 20, O_REGBURN = 20, O_REGOXY = 20, O_REGTOX = 20, \
/*Diona organs*/O_STRATA = 35, O_BRAIN = 20, O_NUTRIENT = 10, \
/*Replicant organs*/O_AREJECT = 35, \
/*Xeno organs*/O_PLASMA = 10, O_HIVE = 10), \
BP_GROIN = list(\
/*Standard organs*/O_INTESTINES = 50, O_STOMACH = 20, O_LIVER = 20, O_KIDNEYS = 15, O_APPENDIX = 5, \
/*Diona organs*/O_POLYP = 10, O_ANCHOR = 15, \
/*Replicant organs*/O_VENTC = 20, \
/*Xeno organs*/ O_EGG = 25) ), \
"organ_hit_chance" = list(BP_HEAD = 60, BP_TORSO = 80, BP_GROIN = 90), \
"bone_strength" = list(BP_HEAD = 0.35, BP_TORSO = 0.3, BP_GROIN = 0.25, BP_L_FOOT = 0.15, BP_R_FOOT = 0.15, BP_L_LEG = 0.2, BP_R_LEG = 0.2, BP_L_ARM = 0.2, BP_R_ARM = 0.2, BP_L_HAND = 0.15, BP_R_HAND = 0.15), \
"organ_multiplier" = list(BP_HEAD = 3.5, BP_TORSO = 3.5, BP_GROIN = 3.5)/*Only used for simple mobs*/, \
"flesh_factors" = list("damage_mult" = 1,"velloss_mult" = 1))
/mob/living/simple_mob/vore/solarmoth
//Solarmoths are getting directly copied from spiders, again because of exoskeleton
ballistic_variables = list(\
"bone_chance_unencased" = list(BP_HEAD = 97, BP_TORSO = 97, BP_GROIN = 97, BP_L_FOOT = 97, BP_R_FOOT = 97, BP_L_LEG = 97, BP_R_LEG = 97, BP_L_ARM = 97, BP_R_ARM = 97, BP_L_HAND = 97, BP_R_HAND = 97), \
"organ_leave_early" = list("l_arm", "r_arm", "l_hand", "r_hand", "l_foot", "r_foot"), \
"organ_hit_weight" = list(\
BP_HEAD = list(\
/*Standard organs*/O_BRAIN = 90, O_EYES = 5, \
/*Diona organs*/O_RESPONSE = 10, O_RESPONSE = 15, O_GBLADDER = 15, \
/*Replicant organs*/O_VRLINK = 20, \
/*Xeno organs*/O_ACID = 10, O_RESIN = 10), \
BP_TORSO = list(\
/*Standard organs*/O_HEART = 5, O_LUNGS = 50, O_SPLEEN = 15, O_VOICE = 10, \
/*Synth organs*/O_CELL = 5, O_PUMP = 15, O_HEATSINK = 35, O_CYCLER = 15, O_DIAGNOSTIC = 10, \
/*Promethean organs*/O_REGBRUTE = 20, O_REGBURN = 20, O_REGOXY = 20, O_REGTOX = 20, \
/*Diona organs*/O_STRATA = 35, O_BRAIN = 20, O_NUTRIENT = 10, \
/*Replicant organs*/O_AREJECT = 35, \
/*Xeno organs*/O_PLASMA = 10, O_HIVE = 10), \
BP_GROIN = list(\
/*Standard organs*/O_INTESTINES = 50, O_STOMACH = 20, O_LIVER = 20, O_KIDNEYS = 15, O_APPENDIX = 5, \
/*Diona organs*/O_POLYP = 10, O_ANCHOR = 15, \
/*Replicant organs*/O_VENTC = 20, \
/*Xeno organs*/ O_EGG = 25) ), \
"organ_hit_chance" = list(BP_HEAD = 95, BP_TORSO = 90, BP_GROIN = 90), \
"bone_strength" = list(BP_HEAD = 0.35, BP_TORSO = 0.3, BP_GROIN = 0.25, BP_L_FOOT = 0.15, BP_R_FOOT = 0.15, BP_L_LEG = 0.2, BP_R_LEG = 0.2, BP_L_ARM = 0.2, BP_R_ARM = 0.2, BP_L_HAND = 0.15, BP_R_HAND = 0.15), \
"organ_multiplier" = list(BP_HEAD = 3.6, BP_TORSO = 3.5, BP_GROIN = 3)/*Only used for simple mobs*/, \
"flesh_factors" = list("damage_mult" = 1,"velloss_mult" = 1))
/mob/living/simple_mob/blob
//Apparently these are considered slimes in code, so gonna copy from metroid for them.
ballistic_variables = list(\
"bone_chance_unencased" = list(BP_HEAD = 0, BP_TORSO = 0, BP_GROIN = 0, BP_L_FOOT = 0, BP_R_FOOT = 0, BP_L_LEG = 0, BP_R_LEG = 0, BP_L_ARM = 0, BP_R_ARM = 0, BP_L_HAND = 0, BP_R_HAND = 0), \
"organ_leave_early" = list("l_arm", "r_arm", "l_hand", "r_hand", "l_foot", "r_foot"), \
"organ_hit_weight" = list(\
BP_HEAD = list(\
/*Standard organs*/O_BRAIN = 90, O_EYES = 5, \
/*Diona organs*/O_RESPONSE = 10, O_RESPONSE = 15, O_GBLADDER = 15, \
/*Replicant organs*/O_VRLINK = 20, \
/*Xeno organs*/O_ACID = 10, O_RESIN = 10), \
BP_TORSO = list(\
/*Standard organs*/O_HEART = 5, O_LUNGS = 50, O_SPLEEN = 15, O_VOICE = 10, \
/*Synth organs*/O_CELL = 5, O_PUMP = 15, O_HEATSINK = 35, O_CYCLER = 15, O_DIAGNOSTIC = 10, \
/*Promethean organs*/O_REGBRUTE = 20, O_REGBURN = 20, O_REGOXY = 20, O_REGTOX = 20, \
/*Diona organs*/O_STRATA = 35, O_BRAIN = 20, O_NUTRIENT = 10, \
/*Replicant organs*/O_AREJECT = 35, \
/*Xeno organs*/O_PLASMA = 10, O_HIVE = 10), \
BP_GROIN = list(\
/*Standard organs*/O_INTESTINES = 50, O_STOMACH = 20, O_LIVER = 20, O_KIDNEYS = 15, O_APPENDIX = 5, \
/*Diona organs*/O_POLYP = 10, O_ANCHOR = 15, \
/*Replicant organs*/O_VENTC = 20, \
/*Xeno organs*/ O_EGG = 25) ), \
"organ_hit_chance" = list(BP_HEAD = 90, BP_TORSO = 95, BP_GROIN = 95), \
"bone_strength" = list(BP_HEAD = 0, BP_TORSO = 0, BP_GROIN = 0, BP_L_FOOT = 0, BP_R_FOOT = 0, BP_L_LEG = 0, BP_R_LEG = 0, BP_L_ARM = 0, BP_R_ARM = 0, BP_L_HAND = 0, BP_R_HAND = 0), \
"organ_multiplier" = list(BP_HEAD = 3.6, BP_TORSO = 3.5, BP_GROIN = 3.4)/*Only used for simple mobs*/, \
"flesh_factors" = list("damage_mult" = 1.175,"velloss_mult" = 1.3))
//Species
/datum/species/shapeshifter/promethean/handle_post_spawn(var/mob/living/carbon/human/H)
.=..()
//Honestly this is mostly for balancing purposes, since prometheans have no bones and weirder organs it fucks with the numbers, so giving them a bit more flesh damage
H.ballistic_variables = list(\
"bone_chance_unencased" = list(BP_HEAD = 0, BP_TORSO = 0, BP_GROIN = 0, BP_L_FOOT = 0, BP_R_FOOT = 0, BP_L_LEG = 0, BP_R_LEG = 0, BP_L_ARM = 0, BP_R_ARM = 0, BP_L_HAND = 0, BP_R_HAND = 0), \
"organ_leave_early" = list("l_arm", "r_arm", "l_hand", "r_hand", "l_foot", "r_foot"), \
"organ_hit_weight" = list(\
BP_HEAD = list(\
/*Standard organs*/O_BRAIN = 90, O_EYES = 5, \
/*Diona organs*/O_RESPONSE = 10, O_RESPONSE = 15, O_GBLADDER = 15, \
/*Replicant organs*/O_VRLINK = 20, \
/*Xeno organs*/O_ACID = 10, O_RESIN = 10), \
BP_TORSO = list(\
/*Standard organs*/O_HEART = 5, O_LUNGS = 50, O_SPLEEN = 15, O_VOICE = 10, \
/*Synth organs*/O_CELL = 5, O_PUMP = 15, O_HEATSINK = 35, O_CYCLER = 15, O_DIAGNOSTIC = 10, \
/*Promethean organs*/O_REGBRUTE = 20, O_REGBURN = 20, O_REGOXY = 20, O_REGTOX = 20, \
/*Diona organs*/O_STRATA = 35, O_BRAIN = 20, O_NUTRIENT = 10, \
/*Replicant organs*/O_AREJECT = 35, \
/*Xeno organs*/O_PLASMA = 10, O_HIVE = 10), \
BP_GROIN = list(\
/*Standard organs*/O_INTESTINES = 50, O_STOMACH = 20, O_LIVER = 20, O_KIDNEYS = 15, O_APPENDIX = 5, \
/*Diona organs*/O_POLYP = 10, O_ANCHOR = 15, \
/*Replicant organs*/O_VENTC = 20, \
/*Xeno organs*/ O_EGG = 25) ), \
"organ_hit_chance" = list(BP_TORSO = 85), \
"bone_strength" = list(BP_HEAD = 0, BP_TORSO = 0, BP_GROIN = 0, BP_L_FOOT = 0, BP_R_FOOT = 0, BP_L_LEG = 0, BP_R_LEG = 0, BP_L_ARM = 0, BP_R_ARM = 0, BP_L_HAND = 0, BP_R_HAND = 0), \
"organ_multiplier" = list(BP_HEAD = 3.6, BP_TORSO = 3.5, BP_GROIN = 3.4)/*Only used for simple mobs*/, \
"flesh_factors" = list("damage_mult" = 1.175,"velloss_mult" = 1.3))
H.ballistic_variables = widelist(H.ballistic_variables)