Cleans up some unused files / vars (#11496)

This commit is contained in:
Cameron Lennox
2025-08-23 15:20:12 -04:00
committed by GitHub
parent cf9f26e357
commit 18b5644926
10 changed files with 0 additions and 1258 deletions

View File

@@ -1,112 +0,0 @@
/obj/item/geiger/wall
name = "mounted geiger counter"
desc = "A wall mounted device used for detecting and measuring radiation in an area."
icon = 'icons/obj/devices_yw.dmi'
icon_state = "geiger_wall"
item_state = "geiger_wall"
anchored = 1
scanning = 1
radiation_count = 0
plane = TURF_PLANE
layer = ABOVE_TURF_LAYER
w_class = ITEMSIZE_LARGE
flags = NOBLOODY
var/circuit = /obj/item/circuitboard/geiger
var/number = 0
var/last_tick //used to delay the powercheck
var/wiresexposed = 0
/obj/item/geiger/wall/Initialize(mapload)
. = ..()
START_PROCESSING(SSobj, src)
soundloop = new(list(src), FALSE)
/obj/item/geiger/wall/Destroy()
STOP_PROCESSING(SSobj, src)
QDEL_NULL(soundloop)
return ..()
/*
/obj/item/geiger/wall/process()
get_radiation()
/obj/item/geiger/wall/proc/get_radiation()
if(!scanning)
return
radiation_count = SSradiation.get_rads_at_turf(get_turf(src))
update_icon()
update_sound()
/obj/item/geiger/wall/examine(mob/user)
..(user)
get_radiation()
to_chat(user, span_warning("[scanning ? "Ambient" : "Stored"] radiation level: [radiation_count ? radiation_count : "0"]Bq."))
/obj/item/geiger/wall/rad_act(amount)
if(!amount || !scanning)
return FALSE
if(amount > radiation_count)
radiation_count = amount
update_icon()
update_sound()
*/
/obj/item/geiger/wall/attack_self(var/mob/user)
scanning = !scanning
update_icon()
update_sound()
to_chat(user, span_notice("[icon2html(src,user.client)] You switch [scanning ? "on" : "off"] \the [src]."))
/obj/item/geiger/wall/update_icon()
if(!scanning)
icon_state = "geiger_wall-p"
return 1
switch(radiation_count)
if(null)
icon_state = "geiger_level_1"
if(-INFINITY to RAD_LEVEL_LOW)
icon_state = "geiger_level_1"
if(RAD_LEVEL_LOW to RAD_LEVEL_MODERATE)
icon_state = "geiger_level_2"
if(RAD_LEVEL_MODERATE to RAD_LEVEL_HIGH)
icon_state = "geiger_level_3"
if(RAD_LEVEL_HIGH to RAD_LEVEL_VERY_HIGH)
icon_state = "geiger_level_4"
if(RAD_LEVEL_VERY_HIGH to INFINITY)
icon_state = "geiger_level_5"
/*
/obj/item/geiger/wall/process()
if(((world.timeofday - last_tick) > 30) || ((world.timeofday - last_tick) < 0))
last_tick = world.timeofday
if(!src.loc)
scanning = 0
else
var/area/A = get_area(src)
if(!A)
scanning = 0
else
scanning = A.powered(EQUIP) // set "on" to the power status
if(!scanning)
if(wiresexposed)
icon_state = "geiger_wall-p_open"
else
icon_state = "geiger_wall-p"
else
if(wiresexposed)
icon_state = "geiger_wall-p_open"
else
icon_state = initial(icon_state) */
/obj/item/geiger/wall/attack_ai(mob/user as mob)
src.add_fingerprint(user)
spawn (0)
attack_self(user)
/obj/item/geiger/wall/attack_hand(mob/user as mob)
src.add_fingerprint(user)
spawn (0)
attack_self(user)

View File

@@ -1,4 +0,0 @@
/obj/item/clothing/suit/straight_jacket //An addition from yawn wider
sprite_sheets = list(
SPECIES_TESHARI = 'icons/vore/custom_onmob_yw.dmi'
)

View File

@@ -1,32 +0,0 @@
//CHOMP reagent vore belly sloshing
/* This is an ELEMENT now
// Handle footstep sounds
/mob/living/carbon/human/handle_vorefootstep(var/m_intent, var/turf/T)
if(!CONFIG_GET(number/vorefootstep_volume) || !T.vorefootstep_sounds || !T.vorefootstep_sounds.len || !vore_footstep_volume)
return
// Future Upgrades - Multi species support
var/list/vorefootstep_sounds = T.vorefootstep_sounds["human"]
if(!vorefootstep_sounds)
return
var/S = pick(vorefootstep_sounds)
if(!S) return
var/volume = CONFIG_GET(number/vorefootstep_volume) * (vore_footstep_volume/100)
// Reduce volume while walking or barefoot, but not so much since tummy slosh
if(!shoes || m_intent == I_WALK)
volume = CONFIG_GET(number/vorefootstep_volume) * (vore_footstep_volume/100) * 0.75
else if(shoes)
var/obj/item/clothing/shoes/feet = shoes
if(istype(feet))
volume = feet.step_volume_mod * CONFIG_GET(number/vorefootstep_volume) * (vore_footstep_volume/100) * 0.75
if(!has_organ(BP_L_FOOT) && !has_organ(BP_R_FOOT))
return // no feet = no slosh? Might prevent some entities from sloshing around
if(buckled || lying || throwing)
return // people flying, lying down or sitting do not slosh
if(!get_gravity(src) && prob(75))
return // Far less likely to make noise in no gravity
playsound(T, S, volume, FALSE, preference = /datum/client_preference/digestion_noises)
return
*/

View File

@@ -1,289 +0,0 @@
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////// CADYN'S BALLISTICS ////////////////////////////////////////////////////////////////////////// ORIGINAL FROM CHOMPSTATION ////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/mob/living/proc/handle_ballistics(var/obj/item/projectile/bullet/P, var/def_zone)
var/list/updated_organ_weight = list()
var/ballistic_armor = getarmor(def_zone, "bullet")
var/melee_armor = getarmor(def_zone, "melee")
var/obj/item/organ/external/hit_organ
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 = src.get_organ(ext_organ)
for(var/int_organ in ballistic_variables["organ_hit_weight"][ext_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)
updated_organ_weight[ref_ext_organ] = input
//log_and_message_admins("Beginning handle_ballistics")
var/penetration_chance = armor_penetration_probability(ballistic_armor,P)
if(!prob(penetration_chance)) //Boo-hoo we got deflected. Do boring agony/bruises stuff.
//log_and_message_admins("Bullet deflected")
var/pain_hit = hit_organ ? "into your [hit_organ]" : "into you"
var/hurt_value = P.velocity * P.grains / (BULLET_DEFLECTED_PAIN_DIVISOR * (1 + ballistic_armor/BULLET_DEFLECTED_BULLET_DIVISOR + melee_armor/BULLET_DEFLECTED_MELEE_DIVISOR)) //Better armor spreads out the energy better.
var/hurt_value_pain = hurt_value ** BULLET_DEFLECTED_PAIN_EXPONENT
var/hurt_value_bruise = max(0,hurt_value-BULLET_DEFLECTED_BRUISE_SUBTRACT)
var/absorber = ballistic_armor ? "armor" : "body" //There is a super tiny chance that small rounds can get deflected without armor, so this is just incase.
to_chat(src,span_warning("You feel the energy of the bullet painfully transfered [pain_hit] as your [absorber] deflects it!"))
apply_damage(hurt_value_pain,HALLOSS,def_zone)
if(hurt_value_bruise)
apply_damage(hurt_value_bruise,BRUTE,def_zone)
P.sub_velocity(P.velocity)
return 2
else //Now the FUN begins
//log_and_message_admins("Bullet penetrated")
var/area_over_mass = P.diam * P.diam / P.grains
//Most of these calculations don't involve energies because I'm treating flesh and organic tissue as a fluid since it's squishy and stuff.
//Since drag is proportional to velocity, we can do things on an m*v basis instead of an mv^2 basis.
//Obviously bones are more solid, so we do actual energy calculations for that.
var/conversion_efficiency = P.hollow_point ? GLOB.HOLLOW_POINT_CONVERSION_EFF : 1
var/vel_loss_multiplier = P.hollow_point ? GLOB.HOLLOW_POINT_VELLOSS_BONUS : 1
var/energy_dumped_organic = 0
var/vel_lost_armor = ballistic_armor >= GLOB.ARMOR_LOSS_MIN_ARMOR ? GLOB.ARMOR_LOSS_COEFFICIENT * area_over_mass * ((1 + GLOB.ARMOR_LOSS_MIN_MULT) - penetration_chance/100) : 0
P.sub_velocity(vel_lost_armor)
var/energy_past = P.energy
var/internal_loss = vel_loss_multiplier * GLOB.INTERNAL_LOSS_COEFFICIENT * area_over_mass
var/vel_lost_skin = vel_loss_multiplier * GLOB.SKIN_LOSS_COEFFICIENT * area_over_mass
P.sub_velocity(vel_lost_skin + internal_loss)
energy_dumped_organic += (energy_past - P.energy)
if(prob(PROB_LEAVE_EARLY_FIRST) || !P.velocity)
energy_to_damage(energy_dumped_organic * conversion_efficiency,def_zone,P)
return 1
if(hit_organ)
//log_and_message_admins("organ_handle_ballistics called. hit_organ = [hit_organ], energy_dumped_organic = [energy_dumped_organic], internal_loss = [internal_loss], ballistic_armor = [ballistic_armor], P.velocity = [P.velocity], P.energy = [P.energy]")
return organ_handle_ballistics(P,hit_organ,energy_dumped_organic,internal_loss,ballistic_armor,updated_organ_weight)
else
//log_and_message_admins("general_handle_ballistics called.")
return general_handle_ballistics(P,def_zone,energy_dumped_organic,internal_loss,ballistic_armor)
/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))
//log_and_message_admins("Bone hit, bone_chance1. energy_to_fracture = [energy_to_fracture]")
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)
//log_and_message_admins("Insufficient projectile energy. Stopping projectile.")
energy_to_damage(energy_dumped_organic * conversion_efficiency,hit_organ.organ_tag,P)
return 2
else
//log_and_message_admins("Sufficient projectile energy to pass through bone.")
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(!(hit_organ.status & ORGAN_BROKEN))
//log_and_message_admins("Fracturing [hit_organ]")
hit_organ.fracture()
//log_and_message_admins("Bone checking done. hit_organ = [hit_organ], energy_dumped_organic = [energy_dumped_organic], internal_loss = [internal_loss], ballistic_armor = [ballistic_armor], P.velocity = [P.velocity], P.energy = [P.energy]")
if(hit_organ.internal_organs.len && prob(ballistic_variables["organ_hit_chance"][hit_organ.organ_tag]) && updated_organ_weight[hit_organ] && updated_organ_weight[hit_organ].len)
//log_and_message_admins("Organ was hit by bullet.")
energy_past = P.energy
P.sub_velocity(internal_loss)
damage_organ_energy((energy_past - P.energy) * conversion_efficiency, pickweight(updated_organ_weight[hit_organ]))
if(!P.velocity)
//log_and_message_admins("Organ stopped bullet.")
energy_to_damage(energy_dumped_organic * conversion_efficiency,hit_organ.organ_tag,P)
return 2
//log_and_message_admins("Organ check done, hit_organ = [hit_organ], energy_dumped_organic = [energy_dumped_organic], internal_loss = [internal_loss], ballistic_armor = [ballistic_armor], P.velocity = [P.velocity], P.energy = [P.energy]")
energy_past = P.energy
P.sub_velocity(internal_loss)
energy_dumped_organic += energy_past - P.energy
if(!P.velocity || (hit_organ.organ_tag in ballistic_variables["organ_leave_early"]) || prob(PROB_LEAVE_EARLY_SECOND))
energy_to_damage(energy_dumped_organic * conversion_efficiency,hit_organ.organ_tag,P)
return P.velocity ? -1 : 2
//log_and_message_admins("Internal_loss 2 stopped bullet")
//log_and_message_admins("Internal_loss 2 completed, hit_organ = [hit_organ], energy_dumped_organic = [energy_dumped_organic], internal_loss = [internal_loss], ballistic_armor = [ballistic_armor], P.velocity = [P.velocity], P.energy = [P.energy]")
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))
//log_and_message_admins("Bone hit, bone_chance1. energy_to_fracture = [energy_to_fracture]")
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)
//log_and_message_admins("Insufficient projectile energy. Stopping projectile.")
energy_to_damage(energy_dumped_organic * conversion_efficiency,hit_organ.organ_tag,P)
return 2
else
//log_and_message_admins("Sufficient projectile energy to pass through bone.")
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(!(hit_organ.status & ORGAN_BROKEN))
//log_and_message_admins("Fracturing [hit_organ]")
hit_organ.fracture()
energy_past = P.energy
P.sub_velocity(internal_loss)
energy_dumped_organic += energy_past - P.energy
if(!P.velocity)
//log_and_message_admins("Internal_loss 3 stopped bullet")
energy_to_damage(energy_dumped_organic * conversion_efficiency,hit_organ.organ_tag,P)
return 2
//log_and_message_admins("Internal_loss 3 completed. hit_organ = [hit_organ], energy_dumped_organic = [energy_dumped_organic], internal_loss = [internal_loss], ballistic_armor = [ballistic_armor], P.velocity = [P.velocity], P.energy = [P.energy]")
var/penetration_chance = armor_penetration_probability(ballistic_armor,P)
if(prob(penetration_chance))
//log_and_message_admins("Projectile exiting.")
energy_to_damage(energy_dumped_organic * conversion_efficiency,hit_organ.organ_tag,P)
return -1
else
//log_and_message_admins("Projectile continuing inside body")
energy_dumped_organic += P.energy / 3
P.sub_velocity(P.velocity)
energy_to_damage(energy_dumped_organic * conversion_efficiency,hit_organ.organ_tag,P)
return 2
/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
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)) * 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)
energy_to_damage(energy_dumped_organic * conversion_efficiency,def_zone,P)
return 2
else
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((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)
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 || (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)) * 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)
energy_to_damage(energy_dumped_organic * conversion_efficiency,def_zone,P)
return 2
else
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.
energy_past = P.energy
P.sub_velocity(internal_loss)
energy_dumped_organic += energy_past - P.energy
if(!P.velocity)
energy_to_damage(energy_dumped_organic * conversion_efficiency,def_zone,P)
return 2
var/penetration_chance = armor_penetration_probability(ballistic_armor,P)
if(prob(penetration_chance))
energy_to_damage(energy_dumped_organic * conversion_efficiency,def_zone,P)
return -1
else
energy_dumped_organic += P.energy / 3
P.sub_velocity(P.velocity)
energy_to_damage(energy_dumped_organic * conversion_efficiency,def_zone,P)
return 2
/proc/ballistics_falloff_equation(var/damage,var/exponent,var/coefficient)
return damage ** exponent + damage * coefficient
/mob/living/proc/damage_organ_energy(var/energy,var/obj/item/organ/internal/target)
var/damage = round(ballistics_falloff_equation(energy*GLOB.ENERGY_DAMAGE_ORGAN_FACTOR / ENERGY_DAMAGE_ORGAN_FALLOFF_POINT, ENERGY_DAMAGE_EXPONENT, ENERGY_DAMAGE_COEFFICIENT) * ENERGY_DAMAGE_ORGAN_FALLOFF_POINT)
//log_and_message_admins("damage_organ_energy([energy]) : [target].take_damage([damage])")
target.take_damage(damage)
return
/mob/living/proc/energy_to_damage(var/energy,var/def_zone,var/obj/item/projectile/bullet/P)
var/damage = round(ballistics_falloff_equation(energy*GLOB.ENERGY_DAMAGE_FLESH_FACTOR / ENERGY_DAMAGE_FLESH_FALLOFF_POINT, ENERGY_DAMAGE_EXPONENT, ENERGY_DAMAGE_COEFFICIENT) * ENERGY_DAMAGE_FLESH_FALLOFF_POINT)
//log_and_message_admins("energy_to_damage([energy]) : apply_damage([damage], BRUTE, [def_zone])")
apply_damage(damage, BRUTE, def_zone, used_weapon = P, sharp = is_sharp(P), edge = has_edge(P))
return
/mob/living/proc/armor_penetration_probability(var/armor, var/obj/item/projectile/bullet/P)
var/bullet_ap_value = (1+((P.armor_penetration)/BULLET_AP_DIVISOR))
var/ap_value = P.velocity * bullet_ap_value * (P.grains / P.diam)**(2/3) / AP_DIVISOR
var/armor_value = ARMOR_Y_INTERCEPT + ARMOR_SLOPE * armor
var/penetration_chance = 100 / (1 + PENETRATION_PROBABILITY_EXP_BASE**(-PENETRATION_PROBABILITY_EXP_MULT*(ap_value - armor_value)))
return penetration_chance
/mob/living/bullet_act(var/obj/item/projectile/P, var/def_zone)
//log_and_message_admins("bullet_act_ch")
var/obj/item/projectile/bullet/B = P
if(P.check_armour == "bullet" && istype(B) && !B.old_bullet_act)
//log_and_message_admins("is bullet")
return handle_ballistics(P,def_zone)
else
//log_and_message_admins("is not bullet")
return ..()
/mob/living
var/list/ballistic_variables = list(\
"bone_chance_unencased" = list(BP_HEAD = 5, BP_TORSO = 20, 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 = 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(mapload)
. = ..()
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

@@ -1,563 +0,0 @@
//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)

View File

@@ -1,248 +0,0 @@
#define BULLET_PENETRATED 1<<0
#define BULLET_BONECHECK1_TRUE 1<<1
#define BULLET_ORGANCHECK_TRUE 1<<2
#define BULLET_BONECHECK2_TRUE 1<<3
#define BULLET_PASSED_LEAVE_EARLY 1<<4
#define BULLET_PASSED_BONECHECK1 1<<5
#define BULLET_PASSED_ORGANCHECK 1<<6
#define BULLET_PASSED_INTERNALCHECK2 1<<7
#define BULLET_PASSED_BONECHECK2 1<<8
#define BULLET_PASSED_INTERNALCHECK3 1<<9
#define BULLET_TESTS 150
/mob/living/carbon/human/monkey/testerboyo
name = "testerboyo"
var/the_big_armor = 0
/mob/living/carbon/human/monkey/testerboyo/getarmor(var/def_zone,var/type)
return the_big_armor
/proc/test_all_ballistics()
var/mob/living/carbon/human/monkey/testerboyo/tester = new()
var/obj/item/projectile/bullet/pistol/test1 = new()
var/obj/item/projectile/bullet/pistol/ap/test2 = new()
var/obj/item/projectile/bullet/pistol/hp/test3 = new()
var/obj/item/projectile/bullet/pistol/medium/test4 = new()
var/obj/item/projectile/bullet/pistol/medium/ap/test5 = new()
var/obj/item/projectile/bullet/pistol/medium/hp/test6 = new()
var/obj/item/projectile/bullet/pistol/strong/test7 = new()
var/obj/item/projectile/bullet/shotgun/test8 = new()
var/obj/item/projectile/bullet/shotgun/buckshot/test9 = new()
var/obj/item/projectile/bullet/rifle/a762/test10 = new()
var/obj/item/projectile/bullet/rifle/a762/ap/test11 = new()
var/obj/item/projectile/bullet/rifle/a762/hp/test12 = new()
var/obj/item/projectile/bullet/rifle/a545/test13 = new()
var/obj/item/projectile/bullet/rifle/a545/ap/test14 = new()
var/obj/item/projectile/bullet/rifle/a545/hp/test15 = new()
var/obj/item/projectile/bullet/rifle/a145/test16 = new()
var/obj/item/projectile/bullet/rifle/a145/highvel/test17 = new()
var/obj/item/projectile/bullet/rifle/a44rifle/test18 = new()
var/obj/item/projectile/bullet/rifle/a95/test19 = new()
var/obj/item/projectile/bullet/rifle/a762/lmg/test20 = new()
test_ballistics(test1,tester)
test_ballistics(test2,tester)
test_ballistics(test3,tester)
test_ballistics(test4,tester)
test_ballistics(test5,tester)
test_ballistics(test6,tester)
test_ballistics(test7,tester)
test_ballistics(test8,tester)
test_ballistics(test9,tester)
test_ballistics(test10,tester)
test_ballistics(test11,tester)
test_ballistics(test12,tester)
test_ballistics(test13,tester)
test_ballistics(test14,tester)
test_ballistics(test15,tester)
test_ballistics(test16,tester)
test_ballistics(test17,tester)
test_ballistics(test18,tester)
test_ballistics(test19,tester)
test_ballistics(test20,tester)
qdel(tester)
qdel(test1)
qdel(test2)
qdel(test3)
qdel(test4)
qdel(test5)
qdel(test6)
qdel(test7)
qdel(test8)
qdel(test9)
qdel(test10)
qdel(test11)
qdel(test12)
qdel(test13)
qdel(test14)
qdel(test15)
qdel(test16)
qdel(test17)
qdel(test18)
qdel(test19)
qdel(test20)
/proc/test_ballistics(var/obj/item/projectile/bullet/P,var/mob/living/carbon/human/monkey/testerboyo/tester)
var/list/data = list()
for(var/armor_level in list(0,5,10,20,50,80))
data["[armor_level]"] = list()
data["[armor_level]"]["average"] = list()
tester.the_big_armor = armor_level
var/bp_num = 0
for(var/body_part in list(BP_TORSO,BP_HEAD,BP_R_LEG,BP_R_ARM,BP_R_HAND))
bp_num++
data["[armor_level]"][body_part] = list()
for(var/i = 0,i<BULLET_TESTS,i++)
P.velocity = initial(P.velocity)
P.sub_velocity(0)
var/out = tester.handle_ballistics(P,body_part)
for(var/x = 0,x<10,x++)
var/input = (out["chex"] & (1<<x)) ? 1 : 0
data["[armor_level]"][body_part]["[x]"] += input
data["[armor_level]"]["average"]["[x]"] += input
data["[armor_level]"][body_part]["10"] += out["energy"]
data["[armor_level]"][body_part]["10"] /= BULLET_TESTS
data["[armor_level]"]["average"]["10"] += data["[armor_level]"][body_part]["10"]
for(var/x = 0,x<11,x++)
data["[armor_level]"]["average"]["[x]"] /= bp_num
for(var/entry in data["[armor_level]"])
var/string_to_send = "[P.type]: Armor level [armor_level]: [entry]:"
for(var/x = 0,x<11,x++)
string_to_send += " [x]:[data["[armor_level]"][entry]["[x]"]]"
log_and_message_admins(string_to_send)
/proc/lazy_return_testing(var/chex,var/energy)
return list("chex" = chex, "energy" = energy)
/mob/living/carbon/human/monkey/testerboyo/handle_ballistics(var/obj/item/projectile/bullet/P, var/def_zone)
var/chex = 0
var/list/updated_organ_weight = list()
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)
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)
for(var/int_organ in ballistic_variables["organ_hit_weight"][ext_organ])
var/ref_int_organ = H.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)
updated_organ_weight[ref_ext_organ] = input
var/penetration_chance = armor_penetration_probability(ballistic_armor,P)
if(!prob(penetration_chance)) //Boo-hoo we got deflected. Do boring agony/bruises stuff.
var/pain_hit = hit_organ ? "into your [hit_organ]" : "into you"
var/hurt_value = P.velocity * P.grains / (BULLET_DEFLECTED_PAIN_DIVISOR * (1 + ballistic_armor/BULLET_DEFLECTED_BULLET_DIVISOR + melee_armor/BULLET_DEFLECTED_MELEE_DIVISOR)) //Better armor spreads out the energy better.
var/hurt_value_pain = hurt_value ** BULLET_DEFLECTED_PAIN_EXPONENT
var/hurt_value_bruise = max(0,hurt_value-BULLET_DEFLECTED_BRUISE_SUBTRACT)
var/absorber = ballistic_armor ? "armor" : "body" //There is a super tiny chance that small rounds can get deflected without armor, so this is just incase.
to_chat(src,span_warning("You feel the energy of the bullet painfully transfered [pain_hit] as your [absorber] deflects it!"))
apply_damage(hurt_value_pain,HALLOSS,def_zone)
if(hurt_value_bruise)
apply_damage(hurt_value_bruise,BRUTE,def_zone)
P.sub_velocity(P.velocity)
return lazy_return_testing(chex,0)
else //Now the FUN begins
chex |= BULLET_PENETRATED
var/area_over_mass = P.diam * P.diam / P.grains
//Most of these calculations don't involve energies because I'm treating flesh and organic tissue as a fluid since it's squishy and stuff.
//Since drag is proportional to velocity, we can do things on an m*v basis instead of an mv^2 basis.
//Obviously bones are more solid, so we do actual energy calculations for that.
//var/conversion_efficiency = P.hollow_point ? 0.925 : 1
var/vel_loss_multiplier = P.hollow_point ? GLOB.HOLLOW_POINT_VELLOSS_BONUS : 1
var/energy_dumped_organic = 0
var/vel_lost_armor = ballistic_armor >= GLOB.ARMOR_LOSS_MIN_ARMOR ? GLOB.ARMOR_LOSS_COEFFICIENT * area_over_mass * ((1 + GLOB.ARMOR_LOSS_MIN_MULT) - penetration_chance/100) : 0
P.sub_velocity(vel_lost_armor)
var/energy_past = P.energy
var/internal_loss = vel_loss_multiplier * GLOB.INTERNAL_LOSS_COEFFICIENT * area_over_mass
var/vel_lost_skin = vel_loss_multiplier * GLOB.SKIN_LOSS_COEFFICIENT * area_over_mass
P.sub_velocity(vel_lost_skin + internal_loss)
energy_dumped_organic += (energy_past - P.energy)
if(prob(PROB_LEAVE_EARLY_FIRST) || !P.velocity)
return lazy_return_testing(chex,energy_dumped_organic)
if(hit_organ)
chex |= BULLET_PASSED_LEAVE_EARLY
return organ_handle_ballistics(P,hit_organ,energy_dumped_organic,internal_loss,ballistic_armor,updated_organ_weight,chex)
else
return general_handle_ballistics(P,def_zone,energy_dumped_organic,internal_loss,ballistic_armor)
/mob/living/carbon/human/monkey/testerboyo/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/chex)
//var/conversion_efficiency = P.hollow_point ? 0.8 : 1
var/energy_past
var/area_over_mass = P.diam * P.diam / P.grains
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(prob(bone_chance))
chex |= BULLET_BONECHECK1_TRUE
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))
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)
return lazy_return_testing(chex,energy_dumped_organic)
else
P.sub_energy(energy_to_fracture)
energy_dumped_organic += energy_to_fracture / 3 //About a third of the energy that goes into fracturing the bone also goes into fucking up tissues.
chex |= BULLET_PASSED_BONECHECK1
if(hit_organ.internal_organs.len && P.velocity > area_over_mass*ORGAN_LOSS_COEFFICIENT && prob(ballistic_variables["organ_hit_chance"][hit_organ.organ_tag]) && updated_organ_weight[hit_organ] && updated_organ_weight[hit_organ].len)
chex |= BULLET_ORGANCHECK_TRUE
energy_past = P.energy
P.sub_velocity(internal_loss)
if(!P.velocity)
return lazy_return_testing(chex,energy_dumped_organic)
chex |= BULLET_PASSED_ORGANCHECK
energy_past = P.energy
P.sub_velocity(internal_loss)
energy_dumped_organic += energy_past - P.energy
if(!P.velocity || (hit_organ.organ_tag in ballistic_variables["organ_leave_early"]) || prob(PROB_LEAVE_EARLY_SECOND))
return lazy_return_testing(chex,energy_dumped_organic)
chex |= BULLET_PASSED_INTERNALCHECK2
if(prob(bone_chance))
chex |= BULLET_BONECHECK2_TRUE
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))
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)
return lazy_return_testing(chex,energy_dumped_organic)
else
P.sub_energy(energy_to_fracture)
energy_dumped_organic += energy_to_fracture / 3 //About a third of the energy that goes into fracturing the bone also goes into fucking up tissues.
chex |= BULLET_PASSED_BONECHECK2
energy_past = P.energy
P.sub_velocity(internal_loss)
energy_dumped_organic += energy_past - P.energy
if(!P.velocity)
return lazy_return_testing(chex,energy_dumped_organic)
chex |= BULLET_PASSED_INTERNALCHECK3
var/penetration_chance = armor_penetration_probability(ballistic_armor,P)
if(prob(penetration_chance))
return lazy_return_testing(chex,energy_dumped_organic)
else
energy_dumped_organic += P.energy / 3
P.sub_velocity(P.velocity)
return lazy_return_testing(chex,energy_dumped_organic)
#undef BULLET_PENETRATED
#undef BULLET_BONECHECK1_TRUE
#undef BULLET_ORGANCHECK_TRUE
#undef BULLET_BONECHECK2_TRUE
#undef BULLET_PASSED_LEAVE_EARLY
#undef BULLET_PASSED_BONECHECK1
#undef BULLET_PASSED_ORGANCHECK
#undef BULLET_PASSED_INTERNALCHECK2
#undef BULLET_PASSED_BONECHECK2
#undef BULLET_PASSED_INTERNALCHECK3
#undef BULLET_TESTS

View File

@@ -1,2 +0,0 @@
/obj/item/gun
var/holy = 0 //For Divinely blessed guns

View File

@@ -32,4 +32,3 @@
/obj/item/gun/projectile/shotgun/doublebarrel/sawn/alt/holy /obj/item/gun/projectile/shotgun/doublebarrel/sawn/alt/holy
ammo_type = /obj/item/ammo_casing/a12g/silver ammo_type = /obj/item/ammo_casing/a12g/silver
holy = 1

View File

@@ -1,7 +1,3 @@
/obj/item/projectile
/// If this projectile is holy. Silver bullets, etc. Currently no effects.
var/holy = 0
/obj/item/projectile/bullet/pellet/shotgun/silver /obj/item/projectile/bullet/pellet/shotgun/silver
name = "shrapnel" name = "shrapnel"
fire_sound = 'sound/weapons/weaponsounds_shotgunshot.ogg' fire_sound = 'sound/weapons/weaponsounds_shotgunshot.ogg'
@@ -11,4 +7,3 @@
pellets = 6 pellets = 6
range_step = 1 range_step = 1
spread_step = 20 spread_step = 20
holy = 1

View File

@@ -3383,7 +3383,6 @@
#include "code\modules\mob\living\carbon\human\human_helpers_vr.dm" #include "code\modules\mob\living\carbon\human\human_helpers_vr.dm"
#include "code\modules\mob\living\carbon\human\human_modular_limbs.dm" #include "code\modules\mob\living\carbon\human\human_modular_limbs.dm"
#include "code\modules\mob\living\carbon\human\human_movement.dm" #include "code\modules\mob\living\carbon\human\human_movement.dm"
#include "code\modules\mob\living\carbon\human\human_movement_ch.dm"
#include "code\modules\mob\living\carbon\human\human_organs.dm" #include "code\modules\mob\living\carbon\human\human_organs.dm"
#include "code\modules\mob\living\carbon\human\human_powers.dm" #include "code\modules\mob\living\carbon\human\human_powers.dm"
#include "code\modules\mob\living\carbon\human\human_powers_vr.dm" #include "code\modules\mob\living\carbon\human\human_powers_vr.dm"
@@ -4192,7 +4191,6 @@
#include "code\modules\projectiles\broken.dm" #include "code\modules\projectiles\broken.dm"
#include "code\modules\projectiles\dnalocking.dm" #include "code\modules\projectiles\dnalocking.dm"
#include "code\modules\projectiles\gun.dm" #include "code\modules\projectiles\gun.dm"
#include "code\modules\projectiles\gun_ch.dm"
#include "code\modules\projectiles\projectile.dm" #include "code\modules\projectiles\projectile.dm"
#include "code\modules\projectiles\projectile_ch.dm" #include "code\modules\projectiles\projectile_ch.dm"
#include "code\modules\projectiles\ammunition\ammo_boxes.dm" #include "code\modules\projectiles\ammunition\ammo_boxes.dm"