diff --git a/code/__defines/damage_organs.dm b/code/__defines/damage_organs.dm
index 56ecbf4f966..d69a535cf50 100644
--- a/code/__defines/damage_organs.dm
+++ b/code/__defines/damage_organs.dm
@@ -66,7 +66,7 @@
#define INFECTION_LEVEL_TWO 500
#define INFECTION_LEVEL_THREE 1000
-//Blood levels. These are percentages based on the species blood_volume far.
+//Blood levels. These are percentages based on the species blood_volume var.
#define BLOOD_VOLUME_SAFE 85
#define BLOOD_VOLUME_OKAY 70
#define BLOOD_VOLUME_BAD 60
@@ -77,4 +77,4 @@
// proportion of their max blood volume to be lost
// (e.g. 0.6 == 60% lost if 200 burn damage is taken).
#define FLUIDLOSS_WIDE_BURN 0.4 //for burns from heat applied over a wider area, like from fire
-#define FLUIDLOSS_CONC_BURN 0.6 //for concentrated burns, like from lasers
+#define FLUIDLOSS_CONC_BURN 0.2 //for concentrated burns, like from lasers
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index 9f35126b248..46da51e86f5 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -81,8 +81,9 @@
..()
/mob/living/carbon/attack_hand(mob/M as mob)
- if(!istype(M, /mob/living/carbon)) return
- if (!M.can_use_hand())
+ if(!istype(M, /mob/living/carbon))
+ return
+ if(!M.can_use_hand())
return
if(M.a_intent != I_HELP)
@@ -115,29 +116,26 @@
willfully_sleeping = FALSE
for(var/datum/disease/D in viruses)
-
if(D.spread_by_touch())
-
M.contract_disease(D, 0, 1, CONTACT_HANDS)
for(var/datum/disease/D in M.viruses)
-
if(D.spread_by_touch())
-
contract_disease(D, 0, 1, CONTACT_HANDS)
return
/mob/living/carbon/electrocute_act(var/shock_damage, var/obj/source, var/siemens_coeff = 1.0, var/def_zone = null, var/tesla_shock = 0, var/ground_zero)
- if(status_flags & GODMODE) return 0 //godmode
- if (!tesla_shock)
+ if(status_flags & GODMODE)
+ return 0 //godmode
+ if(!tesla_shock)
shock_damage *= siemens_coeff
- if (shock_damage<1)
+ if(shock_damage<1)
return 0
src.apply_damage(shock_damage, BURN, def_zone, used_weapon="Electrocution")
playsound(loc, "sparks", 50, 1, -1)
- if (shock_damage > 15 || tesla_shock)
+ if(shock_damage > 15 || tesla_shock)
src.visible_message(
span("warning", "[src] was shocked by the [source]!"), \
span("danger", "You feel a powerful shock course through your body!"), \
@@ -151,9 +149,7 @@
span("warning", "You feel a mild shock course through your body."), \
span("warning", "You hear a light zapping.") \
)
-
spark(loc, 5, alldirs)
-
return shock_damage
/mob/proc/swap_hand()
@@ -166,7 +162,7 @@
if(item_in_hand:wielded == 1)
to_chat(usr, span("warning", "Your other hand is too busy holding the [item_in_hand.name]"))
return
- src.hand = !( src.hand )
+ src.hand = !src.hand
if(hud_used.l_hand_hud_object && hud_used.r_hand_hud_object)
if(hand) //This being 1 means the left hand is in use
hud_used.l_hand_hud_object.icon_state = "l_hand_active"
@@ -181,10 +177,8 @@
return
/mob/living/carbon/proc/activate_hand(var/selhand) //0 or "r" or "right" for right hand; 1 or "l" or "left" for left hand.
-
if(istext(selhand))
selhand = lowertext(selhand)
-
if(selhand == "right" || selhand == "r")
selhand = 0
if(selhand == "left" || selhand == "l")
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index bea02e6889a..d0d62880985 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -1367,9 +1367,7 @@
span("warning", "A spike of pain jolts your [organ.name] as you bump [O] inside."), \
span("warning", "Your movement jostles [O] in your [organ.name] painfully."), \
span("warning", "Your movement jostles [O] in your [organ.name] painfully."))
- to_chat(src, msg)
-
- organ.take_damage(rand(1, 3), sharp = TRUE, edge = TRUE, used_weapon = O)
+ custom_pain(msg, 10, 10, organ)
/mob/living/carbon/human/verb/check_pulse()
set category = "Object"
diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm
index 3883bb6733d..f710251a7e0 100644
--- a/code/modules/mob/living/carbon/human/human_damage.dm
+++ b/code/modules/mob/living/carbon/human/human_damage.dm
@@ -22,14 +22,16 @@
return amount
/mob/living/carbon/human/adjustBrainLoss(var/amount)
- if(status_flags & GODMODE) return 0 //godmode
+ if(status_flags & GODMODE)
+ return 0 //godmode
if(should_have_organ(BP_BRAIN))
var/obj/item/organ/internal/brain/sponge = internal_organs_by_name[BP_BRAIN]
if(sponge)
sponge.take_internal_damage(amount)
/mob/living/carbon/human/setBrainLoss(var/amount)
- if(status_flags & GODMODE) return 0 //godmode
+ if(status_flags & GODMODE)
+ return 0 //godmode
if(should_have_organ(BP_BRAIN))
var/obj/item/organ/internal/brain/sponge = internal_organs_by_name[BP_BRAIN]
if(sponge)
@@ -37,7 +39,8 @@
updatehealth()
/mob/living/carbon/human/getBrainLoss()
- if(status_flags & GODMODE) return 0 //godmode
+ if(status_flags & GODMODE)
+ return 0 //godmode
if(should_have_organ(BP_BRAIN))
var/obj/item/organ/internal/brain/sponge = internal_organs_by_name[BP_BRAIN]
if(sponge)
@@ -114,15 +117,18 @@
BITSET(hud_updateflag, HEALTH_HUD)
/mob/living/carbon/human/Stun(amount)
- if(HULK in mutations) return
+ if(HULK in mutations)
+ return
..()
/mob/living/carbon/human/Weaken(amount)
- if(HULK in mutations) return
+ if(HULK in mutations)
+ return
..()
/mob/living/carbon/human/Paralyse(amount)
- if(HULK in mutations) return
+ if(HULK in mutations)
+ return
// Notify our AI if they can now control the suit.
if(wearing_rig && !stat && paralysis < amount) //We are passing out right this second.
wearing_rig.notify_ai("Warning: user consciousness failure. Mobility control passed to integrated intelligence system.")
@@ -386,7 +392,7 @@ This function restores all organs.
/mob/living/carbon/human/proc/get_organ(var/zone)
if(!zone) zone = BP_CHEST
- if (zone in list( BP_EYES, BP_MOUTH ))
+ if (zone in list(BP_EYES, BP_MOUTH))
zone = BP_HEAD
return organs_by_name[zone]
@@ -401,7 +407,7 @@ This function restores all organs.
//Handle other types of damage
if(damagetype != BRUTE && damagetype != BURN)
if(!stat && damagetype == PAIN && (can_feel_pain()))
- if ((damage > 25 && prob(20)) || (damage > 50 && prob(60)))
+ if((damage > 25 && prob(20)) || (damage > 50 && prob(60)))
emote("scream")
..(damage, damagetype, def_zone, blocked)
@@ -436,12 +442,11 @@ This function restores all organs.
damage *= species.brute_mod
if(organ.take_damage(damage, 0, sharp, edge, used_weapon, damage_flags = damage_flags))
UpdateDamageIcon()
+
if(BURN)
damageoverlaytemp = 20
if(damage > 0)
damage *= species.burn_mod
-
-
if(organ.take_damage(0, damage, sharp, edge, used_weapon, damage_flags = damage_flags))
UpdateDamageIcon()
@@ -451,20 +456,17 @@ This function restores all organs.
return 1
/mob/living/carbon/human/apply_radiation(var/rads)
- if (species && rads > 0)
+ if(species && rads > 0)
rads = rads * species.radiation_mod
..(rads)
/mob/living/carbon/human/proc/get_shock()
-
- if (!can_feel_pain())
+ if(!can_feel_pain())
return 0
var/traumatic_shock = getHalLoss() // Pain.
traumatic_shock -= chem_effects[CE_PAINKILLER]
- if(stat == UNCONSCIOUS)
- traumatic_shock *= 0.6
return max(0,traumatic_shock)
/mob/living/carbon/human/remove_blood_simple(var/blood)
diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm
index 1214a4a7d62..c77d7242ca7 100644
--- a/code/modules/mob/living/carbon/human/human_defense.dm
+++ b/code/modules/mob/living/carbon/human/human_defense.dm
@@ -288,11 +288,6 @@ emp_act
if(prob(effective_force) && head && !istype(head, /obj/item/clothing/head/helmet))
visible_message("[src] [species.knockout_message]")
apply_effect(20, PARALYZE, blocked)
- else
- //Easier to score a stun but lasts less time
- if(prob(effective_force + 10))
- visible_message("[src] has been knocked down!")
- apply_effect(6, WEAKEN, blocked)
//Apply blood
if(!(I.flags & NOBLOODY))
diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm
index 43c70ad48c3..19caf47a924 100644
--- a/code/modules/mob/living/carbon/human/human_movement.dm
+++ b/code/modules/mob/living/carbon/human/human_movement.dm
@@ -58,7 +58,8 @@
tally += 1.5
if (can_feel_pain())
- if(shock_stage >= 10) tally += 3
+ if(shock_stage >= 10)
+ tally += 3
if(is_asystole())
tally += 10 //heart attacks are kinda distracting
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index a4db1e9b120..b2eb85621cd 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -61,7 +61,7 @@
//Updates the number of stored chemicals for powers
handle_changeling()
- //Organs and blood
+ //Organs
handle_organs()
stabilize_body_temperature() //Body temperature adjusts itself (self-regulation)
@@ -749,10 +749,10 @@
for(var/atom/a in hallucinations)
qdel(a)
- if(get_shock() >= species.total_health)
+ if(get_shock() >= (species.total_health * 0.75))
if(!stat)
to_chat(src, "[species.halloss_message_self]")
- src.visible_message("[src] [species.halloss_message].")
+ src.visible_message("[src] [species.halloss_message]")
Paralyse(10)
if(paralysis || sleeping)
diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm
index 63b29d0f86b..350c87eddc9 100644
--- a/code/modules/mob/living/damage_procs.dm
+++ b/code/modules/mob/living/damage_procs.dm
@@ -28,7 +28,6 @@
updatehealth()
return 1
-
/mob/living/proc/apply_damages(var/brute = 0, var/burn = 0, var/tox = 0, var/oxy = 0, var/clone = 0, var/halloss = 0, var/def_zone = null, var/blocked = 0)
if(blocked >= 100) return 0
if(brute) apply_damage(brute, BRUTE, def_zone, blocked)
@@ -39,8 +38,6 @@
if(halloss) apply_damage(halloss, PAIN, def_zone, blocked)
return 1
-
-
/mob/living/proc/apply_effect(var/effect = 0,var/effecttype = STUN, var/blocked = 0)
if(!effect || (blocked >= 100)) return 0
switch(effecttype)
diff --git a/code/modules/organs/internal/heart.dm b/code/modules/organs/internal/heart.dm
index c9f593cb05d..97470e6c77c 100644
--- a/code/modules/organs/internal/heart.dm
+++ b/code/modules/organs/internal/heart.dm
@@ -154,7 +154,7 @@
blood_max += ((W.damage / 40) * species.bleed_mod)
if(temp.status & ORGAN_ARTERY_CUT)
- var/bleed_amount = Floor(owner.vessel.total_volume / (temp.applied_pressure || !open_wound ? 450 : 300))
+ var/bleed_amount = Floor(owner.vessel.total_volume / (temp.applied_pressure || !open_wound ? 450 : 250))
if(bleed_amount)
if(open_wound)
blood_max += bleed_amount
diff --git a/code/modules/organs/internal/liver.dm b/code/modules/organs/internal/liver.dm
index ad1a683106d..d2e0d194802 100644
--- a/code/modules/organs/internal/liver.dm
+++ b/code/modules/organs/internal/liver.dm
@@ -7,7 +7,7 @@
robotic_sprite = "liver-prosthetic"
toxin_type = CE_HEPATOTOXIC
min_bruised_damage = 25
- min_broken_damage = 45
+ min_broken_damage = 55
max_damage = 70
relative_size = 60
@@ -28,7 +28,7 @@
//Detox can heal small amounts of damage
if (damage < max_damage && !owner.chem_effects[CE_TOXIN])
- heal_damage(0.2 * owner.chem_effects[CE_ANTITOXIN])
+ heal_damage(0.3 * owner.chem_effects[CE_ANTITOXIN])
// Get the effectiveness of the liver.
var/filter_effect = 3
diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm
index e36eec7ab13..e3fa88bac87 100644
--- a/code/modules/organs/organ_external.dm
+++ b/code/modules/organs/organ_external.dm
@@ -251,10 +251,10 @@
var/laser = (damage_flags & DAM_LASER)
- add_pain(0.6*burn + 0.4*brute)
+ add_pain(0.8*burn + 0.5*brute)
if(status & ORGAN_BROKEN && prob(40) && brute)
- if (owner && (owner.can_feel_pain()))
+ if(owner && (owner.can_feel_pain()))
owner.emote("scream") //getting hit on broken hand hurts
if(used_weapon)
add_autopsy_data("[used_weapon]", brute + burn)
@@ -262,7 +262,10 @@
// High brute damage or sharp objects may damage internal organs
if(length(internal_organs))
if(damage_internal_organs(brute, burn, sharp, damage_flags))
- brute /= 2
+ var/brute_div = 2 //We want melee weapons to not be affected by this.
+ if(damage_flags & DAM_BULLET)
+ brute_div = 1.25
+ brute /= brute_div
burn /= 2
var/can_cut = (prob(brute*2) || sharp) && !(status & ORGAN_ROBOT)
@@ -320,7 +323,7 @@
// sync the organ's damage with its wounds
update_damages()
- if (owner)
+ if(owner)
owner.updatehealth() //droplimb will call updatehealth() again if it does end up being called
return update_icon()
@@ -342,7 +345,7 @@
var/organ_damage_threshold = 10
if(sharp)
- organ_damage_threshold *= 0.5
+ organ_damage_threshold *= 0.3
if(laser)
organ_damage_threshold *= 2
@@ -479,8 +482,10 @@ This function completely restores a damaged organ to perfect condition.
if((type in list(BURN, LASER)) && (damage > 5 || damage + burn_dam >= 15) && !BP_IS_ROBOTIC(src))
var/fluid_loss_severity
switch(type)
- if(BURN) fluid_loss_severity = FLUIDLOSS_WIDE_BURN
- if(LASER) fluid_loss_severity = FLUIDLOSS_CONC_BURN
+ if(BURN)
+ fluid_loss_severity = FLUIDLOSS_WIDE_BURN
+ if(LASER)
+ fluid_loss_severity = FLUIDLOSS_CONC_BURN
var/fluid_loss = (damage/(owner.maxHealth - config.health_threshold_dead)) * DEFAULT_BLOOD_AMOUNT * fluid_loss_severity
owner.remove_blood_simple(fluid_loss)
@@ -1016,7 +1021,7 @@ Note that amputating the affected organ does in fact remove the infection from t
perma_injury = brute_dam
// Fractures have a chance of getting you out of restraints
- if (prob(25))
+ if(prob(25))
release_restraints()
// This is mostly for the ninja suit to stop ninja being so crippled by breaks.
@@ -1345,7 +1350,7 @@ Note that amputating the affected organ does in fact remove the infection from t
amount -= (owner.chem_effects[CE_PAINKILLER]/3)
if(amount <= 0)
return
- pain = max(0,min(max_damage,pain+amount))
+ pain = max(0, min(max_damage, pain + amount))
if(owner && ((amount > 15 && prob(20)) || (amount > 30 && prob(60))))
owner.emote("scream")
return pain-last_pain
diff --git a/code/modules/organs/pain.dm b/code/modules/organs/pain.dm
index 05d01f72905..ddd1d4d71c3 100644
--- a/code/modules/organs/pain.dm
+++ b/code/modules/organs/pain.dm
@@ -59,7 +59,11 @@ mob/var/next_pain_time = 0
// Excessive halloss is horrible, just give them enough to make it visible.
if(!nohalloss && power)
- adjustHalLoss(Ceiling(power/2))
+ if(!affecting)
+ adjustHalLoss(Ceiling(power/2))
+ else
+ affecting.add_pain(Ceiling(power/2))
+
flash_pain(min(round(2*power)+55, 255))
@@ -77,14 +81,17 @@ mob/var/next_pain_time = 0
next_pain_time = world.time + (100-power)
-mob/living/carbon/human/proc/handle_pain()
+/mob/living/carbon/human/proc/handle_pain()
// not when sleeping
- if(!can_feel_pain()) return
+ if(!can_feel_pain())
+ return
- if(stat >= 2) return
+ if(stat >= DEAD)
+ return
if(analgesic > 70)
return
+
var/maxdam = 0
var/obj/item/organ/external/damaged_organ = null
for(var/obj/item/organ/external/E in organs)
@@ -112,7 +119,7 @@ mob/living/carbon/human/proc/handle_pain()
else if (I.is_damaged())
painmessage = "You feel discomfort in your [parent.name]."
if(painmessage)
- src.custom_pain(painmessage, I.is_bruised())
+ custom_pain(painmessage, 5, 5)
//The less hardcoded values, the better.
var/toxDamageMessage = null
@@ -135,4 +142,4 @@ mob/living/carbon/human/proc/handle_pain()
toxDamageMessage = "Your body aches all over, it's driving you mad!"
if(toxDamageMessage && prob(toxMessageProb))
- src.custom_pain(toxDamageMessage, getToxLoss() >= 15)
\ No newline at end of file
+ custom_pain(toxDamageMessage, 5, 5)
\ No newline at end of file
diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm
index 60dbe596dd0..fc330ce3c62 100644
--- a/code/modules/projectiles/gun.dm
+++ b/code/modules/projectiles/gun.dm
@@ -411,7 +411,7 @@
addtimer(CALLBACK(src, /atom/.proc/set_light, 0), 2)
if(recoil)
- addtimer(CALLBACK(src, /proc/shake_camera, user, recoil+1, recoil), 0, TIMER_UNIQUE)
+ addtimer(CALLBACK(GLOBAL_PROC, /proc/shake_camera, user, recoil+1, recoil), 0, TIMER_UNIQUE)
update_icon()
diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm
index f256e5c573e..bf4abdfe4e6 100644
--- a/code/modules/projectiles/guns/projectile/automatic.dm
+++ b/code/modules/projectiles/guns/projectile/automatic.dm
@@ -127,7 +127,6 @@
fire_delay_wielded = 6
accuracy_wielded = 2
-
/obj/item/gun/projectile/automatic/rifle/sts35
name = "assault rifle"
desc = "A durable, rugged looking automatic weapon of a make popular on the frontier worlds. Uses 7.62mm rounds. It is unmarked."
diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm
index 35d8e219c99..b2a7d5d9c8c 100644
--- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm
+++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm
@@ -12,12 +12,11 @@
fallback_specific_heat = 0.75
var/target_organ // needs to be null by default
- var/strength = 4 // How much damage it deals per unit
+ var/strength = 2 // How much damage it deals per unit
/datum/reagent/toxin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
if(strength && alien != IS_DIONA)
var/dam = (strength * removed)
- M.add_chemical_effect(CE_TOXIN, dam)
if(target_organ && ishuman(M))
var/mob/living/carbon/human/H = M
var/obj/item/organ/internal/I = H.internal_organs_by_name[target_organ]
@@ -31,7 +30,7 @@
I.take_internal_damage(dam, silent=TRUE)
dam = 0
if(dam)
- M.adjustToxLoss(target_organ ? (dam * 0.75) : dam)
+ M.adjustToxLoss(target_organ ? (dam * 0.5) : dam)
/datum/reagent/toxin/plasticide
name = "Plasticide"
diff --git a/html/changelogs/mattatlas-godhelpme.yml b/html/changelogs/mattatlas-godhelpme.yml
new file mode 100644
index 00000000000..bd3b353acf3
--- /dev/null
+++ b/html/changelogs/mattatlas-godhelpme.yml
@@ -0,0 +1,50 @@
+################################
+# Example Changelog File
+#
+# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
+#
+# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
+# When it is, any changes listed below will disappear.
+#
+# Valid Prefixes:
+# bugfix
+# wip (For works in progress)
+# tweak
+# soundadd
+# sounddel
+# rscadd (general adding of nice things)
+# rscdel (general deleting of nice things)
+# imageadd
+# imagedel
+# maptweak
+# spellcheck (typo fixes)
+# experiment
+# balance
+# admin
+# backend
+# security
+# refactor
+#################################
+
+# Your name.
+author: MattAtlas
+
+# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
+delete-after: True
+
+# Any changes you've made. See valid prefix list above.
+# INDENT WITH TWO SPACES. NOT TABS. SPACES.
+# SCREW THIS UP AND IT WON'T WORK.
+# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
+# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
+changes:
+ - experiment: "Lowered the threshold at which you fall down in paincrit."
+ - experiment: "Melee weapons no longer have a chance to RNG knockdown when aiming for the chest."
+ - experiment: "Being unconscious no longer removes some of your pain."
+ - tweak: "Shrapnel no longer causes direct damage. It now adds pain to the organ the shrapnel is in."
+ - tweak: "Lasers now evaporate less blood, but deal more pain."
+ - tweak: "Arterial bleeding is now MUCH nastier."
+ - tweak: "Ballistics now suffer a lower damage penalty after damaging organs."
+ - tweak: "Toxins have been nerfed overall."
+ - tweak: "Buffed the liver's breaking threshold."
+ - tweak: "Ballistics now inflict slightly more pain."