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:
Arokha Sieyes
2018-05-25 13:23:47 -04:00
291 changed files with 324089 additions and 16301 deletions
+2
View File
@@ -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?
+22 -10
View File
@@ -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()
+21 -10
View File
@@ -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