mirror of
https://github.com/CHOMPstation/CHOMPstation.git
synced 2026-07-16 01:22:43 +01:00
Merge branch 'master' of https://github.com/VOREStation/Polaris into aro-sync-05-25-2018
# Conflicts: # code/__defines/misc.dm # code/controllers/master_controller.dm # code/game/machinery/computer3/computers/card.dm # code/game/objects/items/devices/communicator/UI.dm # code/game/objects/items/stacks/medical.dm # code/game/objects/structures/signs.dm # code/modules/admin/admin_verbs.dm # code/modules/client/client defines.dm # code/modules/client/client procs.dm # code/modules/clothing/clothing.dm # code/modules/clothing/under/accessories/holster.dm # code/modules/events/radiation_storm.dm # code/modules/mining/machine_processing.dm # code/modules/mob/living/carbon/human/species/station/prometheans.dm # code/modules/mob/living/living.dm # code/modules/mob/living/simple_animal/animals/bear.dm # code/modules/mob/living/simple_animal/animals/cat.dm # code/modules/mob/living/simple_animal/animals/parrot.dm # code/modules/mob/mob.dm # code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm # code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm # code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm # code/modules/reagents/reagent_dispenser.dm # config/example/config.txt # html/changelogs/.all_changelog.yml # interface/skin.dmf # maps/southern_cross/southern_cross-1.dmm # vorestation.dme
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
GLOBAL_LIST_BOILERPLATE(all_brain_organs, /obj/item/organ/internal/brain)
|
||||
|
||||
/obj/item/organ/internal/brain
|
||||
name = "brain"
|
||||
health = 400 //They need to live awhile longer than other organs. Is this even used by organ code anymore?
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
var/brute_dam = 0 // Actual current brute damage.
|
||||
var/burn_dam = 0 // Actual current burn damage.
|
||||
var/last_dam = -1 // used in healing/processing calculations.
|
||||
var/spread_dam = 0
|
||||
|
||||
// Appearance vars.
|
||||
var/nonsolid // Snowflake warning, reee. Used for slime limbs.
|
||||
@@ -253,7 +254,7 @@
|
||||
//Continued damage to vital organs can kill you, and robot organs don't count towards total damage so no need to cap them.
|
||||
return (vital || (robotic >= ORGAN_ROBOT) || brute_dam + burn_dam + additional_damage < max_damage)
|
||||
|
||||
/obj/item/organ/external/take_damage(brute, burn, sharp, edge, used_weapon = null, list/forbidden_limbs = list())
|
||||
/obj/item/organ/external/take_damage(brute, burn, sharp, edge, used_weapon = null, list/forbidden_limbs = list(), permutation = 0)
|
||||
brute = round(brute * brute_mod, 0.1)
|
||||
burn = round(burn * burn_mod, 0.1)
|
||||
|
||||
@@ -280,6 +281,8 @@
|
||||
// If the limbs can break, make sure we don't exceed the maximum damage a limb can take before breaking
|
||||
// Non-vital organs are limited to max_damage. You can't kill someone by bludeonging their arm all the way to 200 -- you can
|
||||
// push them faster into paincrit though, as the additional damage is converted into shock.
|
||||
var/brute_overflow = 0
|
||||
var/burn_overflow = 0
|
||||
if(is_damageable(brute + burn) || !config.limbs_can_break)
|
||||
if(brute)
|
||||
if(can_cut)
|
||||
@@ -306,20 +309,22 @@
|
||||
createwound( CUT, min(brute,can_inflict) )
|
||||
else
|
||||
createwound( BRUISE, min(brute,can_inflict) )
|
||||
var/temp = can_inflict
|
||||
//How much mroe damage can we inflict
|
||||
can_inflict = max(0, can_inflict - brute)
|
||||
//How much more damage can we inflict
|
||||
brute_overflow = max(0, brute - can_inflict)
|
||||
//How much brute damage is left to inflict
|
||||
spillover += max(0, brute - temp)
|
||||
spillover += max(0, brute - can_inflict)
|
||||
|
||||
can_inflict = max_damage * config.organ_health_multiplier - (brute_dam + burn_dam) //Refresh the can_inflict var, so burn doesn't overload the limb if it is set to take both.
|
||||
|
||||
if (burn > 0 && can_inflict)
|
||||
//Inflict all burn damage we can
|
||||
createwound(BURN, min(burn,can_inflict))
|
||||
//How much burn damage is left to inflict
|
||||
spillover += max(0, burn - can_inflict)
|
||||
burn_overflow = max(0, burn - can_inflict)
|
||||
spillover += burn_overflow
|
||||
|
||||
//If there are still hurties to dispense
|
||||
if (spillover)
|
||||
//If there is pain to dispense.
|
||||
if(spillover)
|
||||
owner.shock_stage += spillover * config.organ_damage_spillover_multiplier
|
||||
|
||||
// sync the organ's damage with its wounds
|
||||
@@ -348,12 +353,19 @@
|
||||
|
||||
if(edge_eligible && brute >= max_damage / DROPLIMB_THRESHOLD_EDGE && prob(brute))
|
||||
droplimb(0, DROPLIMB_EDGE)
|
||||
else if(burn >= max_damage / DROPLIMB_THRESHOLD_DESTROY && prob(burn/3))
|
||||
else if((burn >= max_damage / DROPLIMB_THRESHOLD_DESTROY) || (nonsolid && burn >= 5 && (burn_dam + burn >= max_damage)) && prob(burn/3))
|
||||
droplimb(0, DROPLIMB_BURN)
|
||||
else if(brute >= max_damage / DROPLIMB_THRESHOLD_DESTROY && prob(brute))
|
||||
else if((brute >= max_damage / DROPLIMB_THRESHOLD_DESTROY && prob(brute)) || (nonsolid && brute >= 5 && (brute_dam + brute >= max_damage) && prob(brute/2)))
|
||||
droplimb(0, DROPLIMB_BLUNT)
|
||||
else if(brute >= max_damage / DROPLIMB_THRESHOLD_TEAROFF && prob(brute/3))
|
||||
droplimb(0, DROPLIMB_EDGE)
|
||||
else if(spread_dam && owner && parent && (brute_overflow || burn_overflow) && (brute_overflow >= 5 || burn_overflow >= 5) && !permutation) //No infinite damage loops.
|
||||
if(children && children.len)
|
||||
spawn()
|
||||
for(var/obj/item/organ/external/C in children)
|
||||
if(!C.is_stump())
|
||||
C.take_damage(brute_overflow / children.len / 3, burn_overflow / children.len / 3, 0, 0, null, forbidden_limbs, 1) //Splits the damage to each individual 'child', incase multiple exist.
|
||||
parent.take_damage(brute_overflow / 3, burn_overflow / 3, 0, 0, null, forbidden_limbs, 1)
|
||||
|
||||
return update_icon()
|
||||
|
||||
|
||||
@@ -2,46 +2,57 @@
|
||||
nonsolid = 1
|
||||
max_damage = 50
|
||||
encased = 0
|
||||
spread_dam = 1
|
||||
|
||||
/obj/item/organ/external/groin/unbreakable/slime
|
||||
nonsolid = 1
|
||||
max_damage = 30
|
||||
spread_dam = 1
|
||||
|
||||
/obj/item/organ/external/arm/unbreakable/slime
|
||||
nonsolid = 1
|
||||
max_damage = 5
|
||||
max_damage = 20
|
||||
spread_dam = 1
|
||||
|
||||
/obj/item/organ/external/arm/right/unbreakable/slime
|
||||
nonsolid = 1
|
||||
max_damage = 5
|
||||
max_damage = 20
|
||||
spread_dam = 1
|
||||
|
||||
/obj/item/organ/external/leg/unbreakable/slime
|
||||
nonsolid = 1
|
||||
max_damage = 5
|
||||
max_damage = 20
|
||||
spread_dam = 1
|
||||
|
||||
/obj/item/organ/external/leg/right/unbreakable/slime
|
||||
nonsolid = 1
|
||||
max_damage = 5
|
||||
max_damage = 20
|
||||
spread_dam = 1
|
||||
|
||||
/obj/item/organ/external/foot/unbreakable/slime
|
||||
nonsolid = 1
|
||||
max_damage = 5
|
||||
max_damage = 20
|
||||
spread_dam = 1
|
||||
|
||||
/obj/item/organ/external/foot/right/unbreakable/slime
|
||||
nonsolid = 1
|
||||
max_damage = 5
|
||||
max_damage = 20
|
||||
spread_dam = 1
|
||||
|
||||
/obj/item/organ/external/hand/unbreakable/slime
|
||||
nonsolid = 1
|
||||
max_damage = 5
|
||||
max_damage = 20
|
||||
spread_dam = 1
|
||||
|
||||
/obj/item/organ/external/hand/right/unbreakable/slime
|
||||
nonsolid = 1
|
||||
max_damage = 5
|
||||
max_damage = 20
|
||||
spread_dam = 1
|
||||
|
||||
/obj/item/organ/external/head/unbreakable/slime //They don't need this anymore.
|
||||
nonsolid = 1
|
||||
cannot_gib = 0
|
||||
vital = 0
|
||||
max_damage = 5
|
||||
encased = 0
|
||||
max_damage = 30
|
||||
encased = 0
|
||||
spread_dam = 1
|
||||
|
||||
Reference in New Issue
Block a user