mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-07-16 18:36:43 +01:00
33b8164013
Adds: - Dosimeter, keeps track of how many rads a person has absorbed as well as showing the dose after armour. - Adds a message to shelter in maint to the supermatter explosion. - Adds a flag that makes damage not apply to robotic limbs, useful for preventing radiation burns to metal parts. Should also be added to chemicals that deal brute damage, such as arithrazine and the the burns from chemical exposure to chlorine, but that's another PR. - Added radiation resistance values to makeshift armour. As it only covers the chest, this isn't very useful, but better than nothing. Balance: - Re-scaled radiation damage. - Radiation now maxes out at 1000, from the previous 100. - Radiation damage when at maximum rads is converted directly into burn damage. - Radiation sources decay slowly, so all the old numbers were maxing people's radiation values instantaneously. - Re-scaled organ damage from radiation. Previously you would take no organ damage till 75% rads, then lose your liver almost immediately. Now organ damage ramps up from 500-1000, with 750-1000 being about 1/3rd the organ damage of 75-100. - Added debilitating, but not lethal, effects to moderate and high radiation levels. Lots of pain events instead of straight damage. - Reduced speed and stamina for high radiation doses. - Hyronalin and Arithrazine both remove much more radiation. The intent: People should now be able to work in low radiation zones, without using the radiation suit for short periods of time. The geiger counter is no longer an 'if this is ticking you are at max rads' detector. With the engineering voidsuit, 75% rads, I could stand next to a charged supermatter ~50rads a second, for about 2 minutes before I hit lethal radiation levels. If people stay in a radiation zone, or are exposed to extreme radiation 100+ rads a second, radiation is much more lethal, but not by just killing your organs. Conventional medicine will help a lot. --------- Signed-off-by: FenodyreeAv <fenodyree.av@gmail.com> Co-authored-by: Batrachophreno <Batrochophreno@gmail.com>
112 lines
4.2 KiB
Plaintext
112 lines
4.2 KiB
Plaintext
// Damage things. TODO: Merge these down to reduce on defines.
|
|
// Way to waste perfectly good damage-type names (DAMAGE_BRUTE) on this... If you were really worried about case sensitivity, you could have just used lowertext(damagetype) in the proc.
|
|
#define DAMAGE_BRUTE "brute"
|
|
#define DAMAGE_BURN "fire"
|
|
#define DAMAGE_TOXIN "toxin"
|
|
#define DAMAGE_OXY "oxy"
|
|
#define DAMAGE_CLONE "clone"
|
|
#define DAMAGE_PAIN "pain"
|
|
#define DAMAGE_RADIATION "radiation"
|
|
|
|
// Injury types for wounds
|
|
#define INJURY_TYPE_CUT "cut"
|
|
#define INJURY_TYPE_BRUISE "bruise"
|
|
#define INJURY_TYPE_BURN "burn"
|
|
#define INJURY_TYPE_PIERCE "pierce"
|
|
#define INJURY_TYPE_LASER "laser"
|
|
|
|
#define DAMAGE_FLAG_EDGE 1
|
|
#define DAMAGE_FLAG_SHARP 2
|
|
#define DAMAGE_FLAG_LASER 4
|
|
#define DAMAGE_FLAG_BULLET 8
|
|
#define DAMAGE_FLAG_EXPLODE 16
|
|
#define DAMAGE_FLAG_DISPERSED 32 // Makes apply_damage calls without specified zone distribute damage rather than randomly choose organ (for humans)
|
|
#define DAMAGE_FLAG_BIO 64
|
|
#define DAMAGE_FLAG_PSIONIC 128
|
|
#define DAMAGE_FLAG_IGNORE_PROSTHETICS 256 // Ignores prosthetics when applying damage, for things like radiation poisoning and toxins.
|
|
|
|
#define STUN "stun"
|
|
#define WEAKEN "weaken"
|
|
#define PARALYZE "paralize"
|
|
#define SLUR "slur"
|
|
#define STUTTER "stutter"
|
|
#define EYE_BLUR "eye_blur"
|
|
#define DROWSY "drowsy"
|
|
#define INCINERATE "incinerate"
|
|
|
|
#define FIRE_DAMAGE_MODIFIER 0.0215 // Higher values result in more external fire damage to the skin. (default 0.0215)
|
|
#define AIR_DAMAGE_MODIFIER 2.025 // More means less damage from hot air scalding lungs, less = more damage. (default 2.025)
|
|
|
|
// Organ status defines.
|
|
#define ORGAN_CUT_AWAY (1<<0)
|
|
#define ORGAN_BLEEDING (1<<1)
|
|
#define ORGAN_BROKEN (1<<2)
|
|
#define ORGAN_DESTROYED (1<<3)
|
|
#define ORGAN_ROBOT (1<<4)
|
|
#define ORGAN_SPLINTED (1<<5)
|
|
#define ORGAN_DEAD (1<<6)
|
|
#define ORGAN_MUTATED (1<<7)
|
|
#define ORGAN_ASSISTED (1<<8)
|
|
#define ORGAN_ADV_ROBOT (1<<9)
|
|
#define ORGAN_PLANT (1<<10)
|
|
#define ORGAN_ARTERY_CUT (1<<11)
|
|
#define ORGAN_LIFELIKE (1<<12) // Robotic, made to appear organic.
|
|
#define ORGAN_NYMPH (1<<13)
|
|
#define ORGAN_ZOMBIFIED (1<<14)
|
|
|
|
// the largest bitflag, in the WORLD
|
|
#define ORGAN_DAMAGE_STATES ORGAN_CUT_AWAY|ORGAN_BLEEDING|ORGAN_BROKEN|ORGAN_DESTROYED|ORGAN_SPLINTED|ORGAN_DEAD|ORGAN_MUTATED|ORGAN_ARTERY_CUT
|
|
|
|
// Limb behaviour defines.
|
|
///Can this organ be amputated?
|
|
#define ORGAN_CAN_AMPUTATE BITFLAG(0)
|
|
///Can this organ break?
|
|
#define ORGAN_CAN_BREAK BITFLAG(1)
|
|
///Can this organ grasp things?
|
|
#define ORGAN_CAN_GRASP BITFLAG(2)
|
|
///Can this organ allow you to stand?
|
|
#define ORGAN_CAN_STAND BITFLAG(3)
|
|
///Can this organ be maimed?
|
|
#define ORGAN_CAN_MAIM BITFLAG(4)
|
|
///Does this organ have tendons?
|
|
#define ORGAN_HAS_TENDON BITFLAG(5)
|
|
/// Does this organ heal from overkill?
|
|
#define ORGAN_HEALS_OVERKILL BITFLAG(6)
|
|
|
|
#define TENDON_BRUISED (1<<0)
|
|
#define TENDON_CUT (1<<1)
|
|
|
|
#define DROPLIMB_EDGE 0
|
|
#define DROPLIMB_BLUNT 1
|
|
#define DROPLIMB_BURN 2
|
|
|
|
// Damage above this value must be repaired with surgery.
|
|
#define ROBOLIMB_SELF_REPAIR_CAP 30
|
|
|
|
//Germs and infections.
|
|
#define GERM_LEVEL_AMBIENT 110 // Maximum germ level you can reach by standing still.
|
|
#define GERM_LEVEL_MOVE_CAP 200 // Maximum germ level you can reach by running around.
|
|
|
|
#define INFECTION_LEVEL_ONE 100
|
|
#define INFECTION_LEVEL_TWO 500
|
|
#define INFECTION_LEVEL_THREE 1000
|
|
|
|
//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
|
|
#define BLOOD_VOLUME_SURVIVE 30
|
|
|
|
// These control the amount of blood lost from burns. The loss is calculated so
|
|
// that dealing just enough burn damage to kill the player will cause the given
|
|
// 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.3 //for burns from heat applied over a wider area, like from fire
|
|
#define FLUIDLOSS_CONC_BURN 0.2 //for concentrated burns, like from lasers
|
|
|
|
// The bandage levels a limb can have, basically how badly bandaged up their are
|
|
#define BANDAGE_LEVEL_NONE 0
|
|
#define BANDAGE_LEVEL_LIGHT 1
|
|
#define BANDAGE_LEVEL_MEDIUM 2
|
|
#define BANDAGE_LEVEL_HEAVY 3
|