mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-26 14:31:59 +01:00
Reducing overall lethality and nerfing lasers a bit. (#9691)
This commit is contained in:
@@ -336,11 +336,6 @@
|
||||
#define isContactLevel(Z) ((Z) in current_map.contact_levels)
|
||||
#define isNotContactLevel(Z) !isContactLevel(Z)
|
||||
|
||||
//Affects the chance that armor will block an attack. Should be between 0 and 1.
|
||||
//If set to 0, then armor will always prevent the same amount of damage, always, with no randomness whatsoever.
|
||||
//Of course, this will affect code that checks for blocked < 100, as blocked will be less likely to actually be 100.
|
||||
#define ARMOR_BLOCK_CHANCE_MULT 1.0
|
||||
|
||||
//Cargo Container Types
|
||||
#define CARGO_CONTAINER_CRATE "crate"
|
||||
#define CARGO_CONTAINER_FREEZER "freezer"
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
|
||||
/decl/emote/audible/choke
|
||||
key ="choke"
|
||||
emote_message_3p = "USER chokes."
|
||||
emote_message_3p = "USER chokes!"
|
||||
conscious = 0
|
||||
|
||||
/decl/emote/audible/gnarl
|
||||
|
||||
@@ -296,7 +296,7 @@
|
||||
if(prob(50))
|
||||
emote("gasp")
|
||||
else
|
||||
emote("chokes!")
|
||||
emote("choke")
|
||||
|
||||
|
||||
message = "[prefix][jointext(words," ")]"
|
||||
|
||||
@@ -19,25 +19,17 @@
|
||||
var/armor = getarmor(def_zone, attack_flag)
|
||||
|
||||
if(armor_pen >= armor)
|
||||
return 0 //effective_armor is going to be 0, fullblock is going to be 0, blocked is going to 0, let's save ourselves the trouble
|
||||
return 0 //effective_armor is going to be 0
|
||||
|
||||
var/effective_armor = (armor - armor_pen)/100
|
||||
var/fullblock = (effective_armor*effective_armor) * ARMOR_BLOCK_CHANCE_MULT
|
||||
var/blocked = (armor - armor_pen)
|
||||
|
||||
if(fullblock >= 1 || prob(fullblock*100))
|
||||
if(blocked >= 100)
|
||||
if(absorb_text)
|
||||
show_message("<span class='warning'>[absorb_text]</span>")
|
||||
else
|
||||
show_message("<span class='warning'>Your armor absorbs the blow!</span>")
|
||||
return 100
|
||||
|
||||
//this makes it so that X armor blocks X% damage, when including the chance of hard block.
|
||||
//I double checked and this formula will also ensure that a higher effective_armor
|
||||
//will always result in higher (non-fullblock) damage absorption too, which is also a nice property
|
||||
//In particular, blocked will increase from 0 to 50 as effective_armor increases from 0 to 0.999 (if it is 1 then we never get here because ofc)
|
||||
//and the average damage absorption = (blocked/100)*(1-fullblock) + 1.0*(fullblock) = effective_armor
|
||||
var/blocked = (effective_armor - fullblock)/(1 - fullblock)*100
|
||||
|
||||
if(blocked > 20)
|
||||
//Should we show this every single time?
|
||||
if(soften_text)
|
||||
|
||||
@@ -122,7 +122,6 @@
|
||||
var/damprob
|
||||
//Effects of bloodloss
|
||||
switch(blood_volume)
|
||||
|
||||
if(BLOOD_VOLUME_SAFE to INFINITY)
|
||||
if(can_heal)
|
||||
damage = max(damage-1, 0)
|
||||
@@ -130,20 +129,20 @@
|
||||
if(prob(1))
|
||||
to_chat(owner, "<span class='warning'>You feel [pick("dizzy","woozy","faint")]...</span>")
|
||||
damprob = owner.chem_effects[CE_STABLE] ? 30 : 60
|
||||
if(!past_damage_threshold(4) && prob(damprob))
|
||||
if(!past_damage_threshold(2) && prob(damprob))
|
||||
take_internal_damage(1)
|
||||
if(BLOOD_VOLUME_BAD to BLOOD_VOLUME_OKAY)
|
||||
owner.eye_blurry = max(owner.eye_blurry,6)
|
||||
damprob = owner.chem_effects[CE_STABLE] ? 40 : 80
|
||||
if(!past_damage_threshold(6) && prob(damprob))
|
||||
take_internal_damage(2)
|
||||
if(!past_damage_threshold(4) && prob(damprob))
|
||||
take_internal_damage(1)
|
||||
if(!owner.paralysis && prob(10))
|
||||
owner.Paralyse(rand(1,3))
|
||||
to_chat(owner, "<span class='warning'>You feel extremely [pick("dizzy","woozy","faint")]...</span>")
|
||||
if(BLOOD_VOLUME_SURVIVE to BLOOD_VOLUME_BAD)
|
||||
owner.eye_blurry = max(owner.eye_blurry,6)
|
||||
damprob = owner.chem_effects[CE_STABLE] ? 60 : 100
|
||||
if(!past_damage_threshold(8) && prob(damprob))
|
||||
if(!past_damage_threshold(6) && prob(damprob))
|
||||
take_internal_damage(1)
|
||||
if(!owner.paralysis && prob(15))
|
||||
owner.Paralyse(rand(3, 5))
|
||||
|
||||
@@ -174,7 +174,8 @@
|
||||
blood_max *= 0.8
|
||||
|
||||
if(world.time >= next_blood_squirt && istype(owner.loc, /turf) && do_spray.len)
|
||||
owner.visible_message("<span class='danger'>Blood squirts from \the [owner]'s [pick(do_spray)]!</span>", "<span class='danger'><font size=3>Blood is squirting out of your [pick(do_spray)]!</font></span>")
|
||||
owner.visible_message("<span class='danger'>Blood squirts from \the [owner]'s [pick(do_spray)]!</span>", \
|
||||
"<span class='danger'><font size=3>Blood sprays out of your [pick(do_spray)]!</font></span>")
|
||||
owner.eye_blurry = 2
|
||||
owner.Stun(1)
|
||||
next_blood_squirt = world.time + 100
|
||||
|
||||
@@ -9,11 +9,11 @@
|
||||
parent_organ = BP_CHEST
|
||||
robotic_name = "gas exchange system"
|
||||
robotic_sprite = "lungs-prosthetic"
|
||||
min_bruised_damage = 25
|
||||
min_bruised_damage = 30
|
||||
min_broken_damage = 45
|
||||
toxin_type = CE_PNEUMOTOXIC
|
||||
|
||||
max_damage = 70
|
||||
max_damage = 80
|
||||
relative_size = 60
|
||||
|
||||
var/breathing = 0
|
||||
|
||||
@@ -325,7 +325,10 @@
|
||||
var/laser = (damage_flags & DAM_LASER)
|
||||
var/sharp = (damage_flags & DAM_SHARP)
|
||||
|
||||
if(laser || BP_IS_ROBOTIC(src))
|
||||
if(laser)
|
||||
return FALSE
|
||||
|
||||
if(BP_IS_ROBOTIC(src))
|
||||
damage_amt += burn
|
||||
cur_damage += burn_dam
|
||||
|
||||
@@ -335,8 +338,6 @@
|
||||
var/organ_damage_threshold = 10
|
||||
if(sharp)
|
||||
organ_damage_threshold *= 0.5
|
||||
if(laser)
|
||||
organ_damage_threshold *= 2
|
||||
|
||||
if(!(cur_damage + damage_amt >= max_damage) && !(damage_amt >= organ_damage_threshold))
|
||||
return FALSE
|
||||
@@ -360,7 +361,7 @@
|
||||
organ_hit_chance = min(organ_hit_chance, 100)
|
||||
if(prob(organ_hit_chance))
|
||||
var/obj/item/organ/internal/victim = pickweight(victims)
|
||||
damage_amt -= max(damage_amt*victim.damage_reduction, 0)
|
||||
damage_amt = max(damage_amt*victim.damage_reduction, 0)
|
||||
victim.take_internal_damage(damage_amt)
|
||||
return TRUE
|
||||
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
################################
|
||||
# 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, MikoMyazaki2
|
||||
|
||||
# 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: "Lasers no longer do organ damage."
|
||||
- experiment: "Armor blocking is now fully percentage based. No more random 100% blocks."
|
||||
- tweak: "Brain damage from bloodloss is now much slower."
|
||||
- tweak: "Lungs now have slightly more health."
|
||||
Reference in New Issue
Block a user