diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index aaf98516fa8..08b75f3857d 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -39,11 +39,10 @@ #define IS_PLANT 128 #define CAN_BE_FAT 256 #define NO_INTORGANS 512 -#define NO_POISON 1024 -#define RADIMMUNE 2048 -#define ALL_RPARTS 4096 -#define NOGUNS 8192 -#define NOTRANSSTING 16384 +#define RADIMMUNE 1024 +#define ALL_RPARTS 2048 +#define NOGUNS 4096 +#define NOTRANSSTING 8192 //Species clothing flags #define HAS_UNDERWEAR 1 diff --git a/code/game/gamemodes/shadowling/shadowling.dm b/code/game/gamemodes/shadowling/shadowling.dm index 8e8957d55af..9a38af1abd3 100644 --- a/code/game/gamemodes/shadowling/shadowling.dm +++ b/code/game/gamemodes/shadowling/shadowling.dm @@ -304,6 +304,7 @@ Made by Xhuis flags = NO_BLOOD | NO_BREATHE | RADIMMUNE | NOGUNS //Can't use guns due to muzzle flash burn_mod = 1.5 //1.5x burn damage, 2x is excessive + oxy_mod = 0 hot_env_multiplier = 1.5 silent_steps = 1 @@ -341,6 +342,7 @@ Made by Xhuis flags = NO_BLOOD | NO_BREATHE | RADIMMUNE burn_mod = 1.1 + oxy_mod = 0 hot_env_multiplier = 1.1 /datum/species/shadow/ling/lesser/handle_life(var/mob/living/carbon/human/H) diff --git a/code/modules/mob/living/carbon/brain/brain_item.dm b/code/modules/mob/living/carbon/brain/brain_item.dm index e3ffe2074a7..064605001dd 100644 --- a/code/modules/mob/living/carbon/brain/brain_item.dm +++ b/code/modules/mob/living/carbon/brain/brain_item.dm @@ -116,12 +116,6 @@ mmi_icon_state = "slime_mmi" // parent_organ = "chest" Hello I am from the ministry of rubber forehead aliens how are you -/obj/item/organ/internal/brain/slime/take_damage(var/amount, var/silent = 1) - //Slimes are 150% more vulnerable to brain damage - damage = between(0, src.damage + (1.5*amount), max_damage) //Since they take the damage twice, this is +150% - return ..() - - /obj/item/organ/internal/brain/golem name = "Runic mind" desc = "A tightly furled roll of paper, covered with indecipherable runes." diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 6942617a10a..827f0ded62e 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -35,9 +35,9 @@ . = ..() if(.) if(nutrition && stat != DEAD) - nutrition -= HUNGER_FACTOR/10 + nutrition -= hunger_drain / 10 if(m_intent == "run") - nutrition -= HUNGER_FACTOR/10 + nutrition -= hunger_drain / 10 if((FAT in mutations) && m_intent == "run" && bodytemperature <= 360) bodytemperature += 2 @@ -942,7 +942,7 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump, var/fullness = nutrition + 10 if(istype(toEat, /obj/item/weapon/reagent_containers/food/snacks)) for(var/datum/reagent/consumable/C in reagents.reagent_list) //we add the nutrition value of what we're currently digesting - fullness += C.nutriment_factor * C.volume / C.metabolization_rate + fullness += C.nutriment_factor * C.volume / (C.metabolization_rate * metabolism_efficiency * digestion_ratio) if(user == src) if(istype(toEat, /obj/item/weapon/reagent_containers/food/drinks)) if(!selfDrink(toEat)) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index b429c34f734..ae88df869d9 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1539,6 +1539,9 @@ else see_invisible = SEE_INVISIBLE_LIVING + hunger_drain = species.hunger_drain + digestion_ratio = species.digestion_ratio + if(species.base_color && default_colour) //Apply colour. r_skin = color2R(species.base_color) diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index 0e2e95bc778..4cf009ec44f 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -28,13 +28,15 @@ med_hud_set_status() handle_hud_icons() -/mob/living/carbon/human/adjustBrainLoss(var/amount) +/mob/living/carbon/human/adjustBrainLoss(amount) if(status_flags & GODMODE) return 0 //godmode if(species && species.has_organ["brain"]) var/obj/item/organ/internal/brain/sponge = get_int_organ(/obj/item/organ/internal/brain) if(sponge) + if(species) + amount = amount * species.brain_mod sponge.take_damage(amount, 1) brainloss = sponge.damage else @@ -42,14 +44,16 @@ else brainloss = 0 -/mob/living/carbon/human/setBrainLoss(var/amount) +/mob/living/carbon/human/setBrainLoss(amount) if(status_flags & GODMODE) return 0 //godmode if(species && species.has_organ["brain"]) var/obj/item/organ/internal/brain/sponge = get_int_organ(/obj/item/organ/internal/brain) if(sponge) - sponge.damage = min(max(amount, 0),(maxHealth*2)) + if(species) + amount = amount * species.brain_mod + sponge.damage = min(max(amount, 0), (maxHealth*2)) brainloss = sponge.damage else brainloss = 200 @@ -84,25 +88,25 @@ return amount -/mob/living/carbon/human/adjustBruteLoss(var/amount) - if(species && species.brute_mod) - amount = amount*species.brute_mod +/mob/living/carbon/human/adjustBruteLoss(amount) + if(species) + amount = amount * species.brute_mod if(amount > 0) take_overall_damage(amount, 0) else heal_overall_damage(-amount, 0) -/mob/living/carbon/human/adjustFireLoss(var/amount) - if(species && species.burn_mod) - amount = amount*species.burn_mod +/mob/living/carbon/human/adjustFireLoss(amount) + if(species) + amount = amount * species.burn_mod if(amount > 0) take_overall_damage(0, amount) else heal_overall_damage(0, -amount) -/mob/living/carbon/human/proc/adjustBruteLossByPart(var/amount, var/organ_name, var/obj/damage_source = null) - if(species && species.brute_mod) - amount = amount*species.brute_mod +/mob/living/carbon/human/proc/adjustBruteLossByPart(amount, organ_name, obj/damage_source = null) + if(species) + amount = amount * species.brute_mod if(organ_name in organs_by_name) var/obj/item/organ/external/O = get_organ(organ_name) @@ -114,9 +118,9 @@ O.heal_damage(-amount, 0, internal=0, robo_repair=(O.status & ORGAN_ROBOT)) -/mob/living/carbon/human/proc/adjustFireLossByPart(var/amount, var/organ_name, var/obj/damage_source = null) - if(species && species.burn_mod) - amount = amount*species.burn_mod +/mob/living/carbon/human/proc/adjustFireLossByPart(amount, organ_name, obj/damage_source = null) + if(species) + amount = amount * species.burn_mod if(organ_name in organs_by_name) var/obj/item/organ/external/O = get_organ(organ_name) @@ -134,13 +138,11 @@ wearing_rig.notify_ai("Warning: user consciousness failure. Mobility control passed to integrated intelligence system.") ..() -/mob/living/carbon/human/adjustCloneLoss(var/amount) +/mob/living/carbon/human/adjustCloneLoss(amount) + if(species) + amount = amount * species.clone_mod ..() - if(species.flags & (NO_DNA)) - cloneloss = 0 - return - var/heal_prob = max(0, 80 - getCloneLoss()) var/mut_prob = min(80, getCloneLoss() + 10) if(amount > 0) //cloneloss is being added @@ -176,44 +178,30 @@ // Defined here solely to take species flags into account without having to recast at mob/living level. -/mob/living/carbon/human/getOxyLoss() - if(species.flags & NO_BREATHE) - oxyloss = 0 - return ..() +/mob/living/carbon/human/adjustOxyLoss(amount) + if(species) + amount = amount * species.oxy_mod + ..() -/mob/living/carbon/human/adjustOxyLoss(var/amount) - if(species.flags & NO_BREATHE) - oxyloss = 0 - else - ..() +/mob/living/carbon/human/setOxyLoss(amount) + if(species) + amount = amount * species.oxy_mod + ..() -/mob/living/carbon/human/setOxyLoss(var/amount) - if(species.flags & NO_BREATHE) - oxyloss = 0 //this literally overrides three procs, excessive much? - else - ..() +/mob/living/carbon/human/adjustToxLoss(amount) + if(species) + amount = amount * species.tox_mod + ..() -/mob/living/carbon/human/getToxLoss() - if(species.flags & NO_POISON) - toxloss = 0 - return ..() - -/mob/living/carbon/human/adjustToxLoss(var/amount) - if(species.flags & NO_POISON) - toxloss = 0 - else - ..() - -/mob/living/carbon/human/setToxLoss(var/amount) - if(species.flags & NO_POISON) - toxloss = 0 //this *also* overrides three procs, definately excessive - else - ..() +/mob/living/carbon/human/setToxLoss(amount) + if(species) + amount = amount * species.tox_mod + ..() //////////////////////////////////////////// //Returns a list of damaged organs -/mob/living/carbon/human/proc/get_damaged_organs(var/brute, var/burn, var/flags = AFFECT_ALL_ORGANS) +/mob/living/carbon/human/proc/get_damaged_organs(brute, burn, flags = AFFECT_ALL_ORGANS) var/list/obj/item/organ/external/parts = list() for(var/obj/item/organ/external/O in organs) if((brute && O.brute_dam) || (burn && O.burn_dam)) @@ -235,7 +223,7 @@ //Heals ONE external organ, organ gets randomly selected from damaged ones. //It automatically updates damage overlays if necesary //It automatically updates health status -/mob/living/carbon/human/heal_organ_damage(var/brute, var/burn) +/mob/living/carbon/human/heal_organ_damage(brute, burn) var/list/obj/item/organ/external/parts = get_damaged_organs(brute,burn) if(!parts.len) return @@ -247,7 +235,7 @@ //Damages ONE external organ, organ gets randomly selected from damagable ones. //It automatically updates damage overlays if necesary //It automatically updates health status -/mob/living/carbon/human/take_organ_damage(var/brute, var/burn, var/sharp = 0, var/edge = 0) +/mob/living/carbon/human/take_organ_damage(brute, burn, sharp = 0, edge = 0) var/list/obj/item/organ/external/parts = get_damageable_organs() if(!parts.len) return @@ -259,7 +247,7 @@ //Heal MANY external organs, in random order -/mob/living/carbon/human/heal_overall_damage(var/brute, var/burn, var/internal=0, var/robotic=0) +/mob/living/carbon/human/heal_overall_damage(brute, burn, internal=0, robotic=0) var/list/obj/item/organ/external/parts = get_damaged_organs(brute,burn) var/update = 0 @@ -282,7 +270,7 @@ UpdateDamageIcon() // damage MANY external organs, in random order -/mob/living/carbon/human/take_overall_damage(var/brute, var/burn, var/sharp = 0, var/edge = 0, var/used_weapon = null) +/mob/living/carbon/human/take_overall_damage(brute, burn, sharp = 0, edge = 0, used_weapon = null) if(status_flags & GODMODE) return //godmode var/list/obj/item/organ/external/parts = get_damageable_organs() @@ -337,7 +325,7 @@ This function restores all organs. return 0 -/mob/living/carbon/human/proc/get_organ(var/zone) +/mob/living/carbon/human/proc/get_organ(zone) if(!zone) zone = "chest" if(zone in list("eyes", "mouth")) @@ -345,7 +333,7 @@ This function restores all organs. return organs_by_name[zone] -/mob/living/carbon/human/apply_damage(var/damage = 0, var/damagetype = BRUTE, var/def_zone = null, var/blocked = 0, var/sharp = 0, var/edge = 0, var/obj/used_weapon = null) +/mob/living/carbon/human/apply_damage(damage = 0, damagetype = BRUTE, def_zone = null, blocked = 0, sharp = 0, edge = 0, obj/used_weapon = null) //Handle other types of damage if((damagetype != BRUTE) && (damagetype != BURN)) ..(damage, damagetype, def_zone, blocked) @@ -373,7 +361,7 @@ This function restores all organs. switch(damagetype) if(BRUTE) damageoverlaytemp = 20 - if(species && species.brute_mod) + if(species) damage = damage * species.brute_mod if(organ.take_damage(damage, 0, sharp, edge, used_weapon)) @@ -398,7 +386,7 @@ This function restores all organs. if(BURN) damageoverlaytemp = 20 - if(species && species.burn_mod) + if(species) damage = damage * species.burn_mod if(organ.take_damage(0, damage, sharp, edge, used_weapon)) @@ -406,4 +394,4 @@ This function restores all organs. // Will set our damageoverlay icon to the next level, which will then be set back to the normal level the next mob.Life(). updatehealth() - return 1 + return 1 \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 0be4298dadc..8448c786302 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -675,14 +675,14 @@ // nutrition decrease if(nutrition > 0 && stat != DEAD) // THEY HUNGER - var/hunger_rate = HUNGER_FACTOR + var/hunger_rate = hunger_drain if(satiety > 0) satiety-- if(satiety < 0) satiety++ if(prob(round(-satiety/40))) Jitter(5) - hunger_rate = 3 * HUNGER_FACTOR + hunger_rate = 3 * hunger_drain nutrition = max(0, nutrition - hunger_rate) if(nutrition > NUTRITION_LEVEL_FULL) diff --git a/code/modules/mob/living/carbon/human/species/abductor.dm b/code/modules/mob/living/carbon/human/species/abductor.dm index bb1f3dd2067..3bcade9f00d 100644 --- a/code/modules/mob/living/carbon/human/species/abductor.dm +++ b/code/modules/mob/living/carbon/human/species/abductor.dm @@ -11,6 +11,9 @@ eyes = "blank_eyes" flags = HAS_LIPS | NO_BLOOD | NO_BREATHE + + oxy_mod = 0 + virus_immune = 1 clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT | HAS_SOCKS dietflags = DIET_OMNI diff --git a/code/modules/mob/living/carbon/human/species/apollo.dm b/code/modules/mob/living/carbon/human/species/apollo.dm index 5642eedbcbe..faeecdfcc5f 100644 --- a/code/modules/mob/living/carbon/human/species/apollo.dm +++ b/code/modules/mob/living/carbon/human/species/apollo.dm @@ -37,10 +37,12 @@ "antennae" = /obj/item/organ/internal/wryn/hivenode ) - flags = IS_WHITELISTED | HAS_LIPS | NO_BREATHE | HAS_SKIN_COLOR | NO_SCAN | NO_SCAN | HIVEMIND + flags = IS_WHITELISTED | HAS_LIPS | NO_BREATHE | HAS_SKIN_COLOR | NO_SCAN | HIVEMIND clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT | HAS_SOCKS dietflags = DIET_HERB //bees feed off nectar, so bee people feed off plants too + oxy_mod = 0 + reagent_tag = PROCESS_ORG base_color = "#704300" flesh_color = "#704300" @@ -97,6 +99,7 @@ language = "Sol Common" burn_mod = 4 // holy shite, poor guys wont survive half a second cooking smores brute_mod = 2 // damn, double wham, double dam + oxy_mod = 0 flags = IS_WHITELISTED | NO_BREATHE | NO_BLOOD | NO_PAIN | HAS_LIPS | NO_SCAN dietflags = DIET_OMNI //still human at their core, so they maintain their eating habits and diet diff --git a/code/modules/mob/living/carbon/human/species/golem.dm b/code/modules/mob/living/carbon/human/species/golem.dm index 1e255ea50cc..1bb4ba8e214 100644 --- a/code/modules/mob/living/carbon/human/species/golem.dm +++ b/code/modules/mob/living/carbon/human/species/golem.dm @@ -7,6 +7,9 @@ default_language = "Galactic Common" flags = NO_BREATHE | NO_BLOOD | RADIMMUNE | NOGUNS + + oxy_mod = 0 + virus_immune = 1 dietflags = DIET_OMNI //golems can eat anything because they are magic or something reagent_tag = PROCESS_ORG diff --git a/code/modules/mob/living/carbon/human/species/shadow.dm b/code/modules/mob/living/carbon/human/species/shadow.dm index fa7dadfebcb..ca26348d188 100644 --- a/code/modules/mob/living/carbon/human/species/shadow.dm +++ b/code/modules/mob/living/carbon/human/species/shadow.dm @@ -16,6 +16,9 @@ ) flags = NO_BLOOD | NO_BREATHE | RADIMMUNE + + oxy_mod = 0 + virus_immune = 1 dietflags = DIET_OMNI //the mutation process allowed you to now digest all foods regardless of initial race reagent_tag = PROCESS_ORG diff --git a/code/modules/mob/living/carbon/human/species/skeleton.dm b/code/modules/mob/living/carbon/human/species/skeleton.dm index 7a4f1bae4eb..4a3b087e93d 100644 --- a/code/modules/mob/living/carbon/human/species/skeleton.dm +++ b/code/modules/mob/living/carbon/human/species/skeleton.dm @@ -14,6 +14,9 @@ flesh_color = "#E6E6C6" flags = NO_BREATHE | NO_BLOOD | RADIMMUNE + + oxy_mod = 0 + virus_immune = 1 //why is this a var and not a flag? dietflags = DIET_OMNI reagent_tag = PROCESS_ORG diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index e4b513cdc4a..e2238057533 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -43,6 +43,8 @@ var/body_temperature = 310.15 //non-IS_SYNTHETIC species will try to stabilize at this temperature. (also affects temperature processing) var/reagent_tag //Used for metabolizing reagents. + var/hunger_drain = HUNGER_FACTOR + var/digestion_ratio = 1 //How quickly the species digests/absorbs reagents. var/siemens_coeff = 1 //base electrocution coefficient @@ -66,8 +68,13 @@ "sa_sleep" = 5 ) - var/brute_mod = null // Physical damage reduction/malus. - var/burn_mod = null // Burn damage reduction/malus. + var/brute_mod = 1 // Physical damage reduction/amplification + var/burn_mod = 1 // Burn damage reduction/amplification + var/tox_mod = 1 // Toxin damage reduction/amplification + var/oxy_mod = 1 // Oxy damage reduction/amplification + var/clone_mod = 1 // Clone damage reduction/amplification + var/brain_mod = 1 // Brain damage damage reduction/amplification + var/stun_mod = 1 // If a species is more/less impacated by stuns/weakens/paralysis var/total_health = 100 var/punchdamagelow = 0 //lowest possible punch damage @@ -657,4 +664,4 @@ It'll return null if the organ doesn't correspond, so include null checks when u H.see_invisible = SEE_INVISIBLE_MINIMUM if(H.see_override) //Override all - H.see_invisible = H.see_override + H.see_invisible = H.see_override \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species/station.dm b/code/modules/mob/living/carbon/human/species/station.dm index 32e246254b6..5bde6ce8e5b 100644 --- a/code/modules/mob/living/carbon/human/species/station.dm +++ b/code/modules/mob/living/carbon/human/species/station.dm @@ -506,6 +506,9 @@ cold_level_3 = 200 cold_env_multiplier = 3 + oxy_mod = 0 + brain_mod = 2.5 + flags = IS_WHITELISTED | NO_BREATHE | HAS_LIPS | NO_INTORGANS | NO_SCAN clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT | HAS_SOCKS bodyflags = HAS_SKIN_COLOR | NO_EYES @@ -756,6 +759,8 @@ clothing_flags = HAS_SOCKS dietflags = 0 //Diona regenerate nutrition in light, no diet necessary + oxy_mod = 0 + body_temperature = T0C + 15 //make the plant people have a bit lower body temperature, why not blood_color = "#004400" flesh_color = "#907E4A" @@ -850,9 +855,12 @@ eyes = "blank_eyes" brute_mod = 2.5 // 100% * 2.5 * 0.6 (robolimbs) ~= 150% burn_mod = 2.5 // So they take 50% extra damage from brute/burn overall. + tox_mod = 0 + clone_mod = 0 + oxy_mod = 0 death_message = "gives one shrill beep before falling limp, their monitor flashing blue before completely shutting off..." - flags = IS_WHITELISTED | NO_BREATHE | NO_SCAN | NO_BLOOD | NO_PAIN | NO_DNA | NO_POISON | RADIMMUNE | ALL_RPARTS | NOTRANSSTING + flags = IS_WHITELISTED | NO_BREATHE | NO_SCAN | NO_BLOOD | NO_PAIN | NO_DNA | RADIMMUNE | ALL_RPARTS| NOTRANSSTING clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT | HAS_SOCKS bodyflags = HAS_SKIN_COLOR | HAS_HEAD_MARKINGS | HAS_HEAD_ACCESSORY dietflags = 0 //IPCs can't eat, so no diet @@ -1007,4 +1015,4 @@ H.apply_damage(hot_env_multiplier*HEAT_GAS_DAMAGE_LEVEL_2, BURN, "head", used_weapon = "Excessive Heat") if(heat_level_3_breathe to INFINITY) - H.apply_damage(hot_env_multiplier*HEAT_GAS_DAMAGE_LEVEL_3, BURN, "head", used_weapon = "Excessive Heat") + H.apply_damage(hot_env_multiplier*HEAT_GAS_DAMAGE_LEVEL_3, BURN, "head", used_weapon = "Excessive Heat") \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/status_procs.dm b/code/modules/mob/living/carbon/human/status_procs.dm new file mode 100644 index 00000000000..5ca23f89f4f --- /dev/null +++ b/code/modules/mob/living/carbon/human/status_procs.dm @@ -0,0 +1,19 @@ +/mob/living/carbon/human/SetStunned(amount, updating = 1, force = 0) + if(species) + amount = amount * species.stun_mod + ..() + +/mob/living/carbon/human/SetWeakened(amount, updating = 1, force = 0) + if(species) + amount = amount * species.stun_mod + ..() + +/mob/living/carbon/human/SetParalysis(amount, updating = 1, force = 0) + if(species) + amount = amount * species.stun_mod + ..() + +/mob/living/carbon/human/SetSleeping(amount, updating = 1) + if(species) + amount = amount * species.stun_mod + ..() \ No newline at end of file diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index 3d4638f43ce..0ec5f16c787 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -33,6 +33,7 @@ var/floating = 0 var/mob_size = MOB_SIZE_HUMAN var/metabolism_efficiency = 1 //more or less efficiency to metabolize helpful/harmful reagents and regulate body temperature.. + var/digestion_ratio = 1 //controls how quickly reagents metabolize; largely governered by species attributes. var/nightvision = 0 var/bloodcrawl = 0 //0 No blood crawling, 1 blood crawling, 2 blood crawling+mob devour diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_spiders.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_spiders.dm index 67683d39b39..7adcc187109 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_spiders.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_spiders.dm @@ -158,7 +158,7 @@ var/global/list/ts_spiderlist = list() var/can_poison = 1 if(ishuman(G)) var/mob/living/carbon/human/H = G - if(!(H.species.reagent_tag & PROCESS_ORG) || (H.species.flags & NO_POISON)) + if(!(H.species.reagent_tag & PROCESS_ORG) || (!H.species.tox_mod)) can_poison = 0 spider_specialattack(G,can_poison) else diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 1d6a7eb43fe..d783520b3f6 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -69,6 +69,7 @@ var/charges = 0.0 var/nutrition = NUTRITION_LEVEL_FED + 50 //Carbon var/satiety = 0 //Carbon + var/hunger_drain = HUNGER_FACTOR // how quickly the mob gets hungry; largely utilized by species. var/overeatduration = 0 // How long this guy is overeating //Carbon var/intent = null//Living diff --git a/code/modules/reagents/chemistry/reagents.dm b/code/modules/reagents/chemistry/reagents.dm index 1e043d88b7c..0f6e202ba07 100644 --- a/code/modules/reagents/chemistry/reagents.dm +++ b/code/modules/reagents/chemistry/reagents.dm @@ -73,7 +73,7 @@ /datum/reagent/proc/on_mob_life(mob/living/M) current_cycle++ - holder.remove_reagent(id, metabolization_rate * M.metabolism_efficiency) //By default it slowly disappears. + holder.remove_reagent(id, metabolization_rate * M.metabolism_efficiency * M.digestion_ratio) //By default it slowly disappears. /datum/reagent/proc/on_mob_death(mob/living/M) //use this to have chems have a "death-triggered" effect return diff --git a/code/modules/reagents/chemistry/reagents/medicine.dm b/code/modules/reagents/chemistry/reagents/medicine.dm index de539ef52ba..fc966c7fba3 100644 --- a/code/modules/reagents/chemistry/reagents/medicine.dm +++ b/code/modules/reagents/chemistry/reagents/medicine.dm @@ -4,7 +4,7 @@ /datum/reagent/medicine/on_mob_life(mob/living/M) current_cycle++ - holder.remove_reagent(id, metabolization_rate / M.metabolism_efficiency) //medicine reagents stay longer if you have a better metabolism + holder.remove_reagent(id, (metabolization_rate / M.metabolism_efficiency) * M.digestion_ratio) //medicine reagents stay longer if you have a better metabolism /datum/reagent/medicine/hydrocodone name = "Hydrocodone" diff --git a/paradise.dme b/paradise.dme index 8d0b4576bf8..93d922f35fc 100644 --- a/paradise.dme +++ b/paradise.dme @@ -1539,6 +1539,7 @@ #include "code\modules\mob\living\carbon\human\login.dm" #include "code\modules\mob\living\carbon\human\npcs.dm" #include "code\modules\mob\living\carbon\human\say.dm" +#include "code\modules\mob\living\carbon\human\status_procs.dm" #include "code\modules\mob\living\carbon\human\update_icons.dm" #include "code\modules\mob\living\carbon\human\whisper.dm" #include "code\modules\mob\living\carbon\human\interactive\functions.dm" @@ -1608,8 +1609,8 @@ #include "code\modules\mob\living\silicon\robot\robot.dm" #include "code\modules\mob\living\silicon\robot\robot_damage.dm" #include "code\modules\mob\living\silicon\robot\robot_items.dm" -#include "code\modules\mob\living\silicon\robot\robot_modules.dm" #include "code\modules\mob\living\silicon\robot\robot_module_actions.dm" +#include "code\modules\mob\living\silicon\robot\robot_modules.dm" #include "code\modules\mob\living\silicon\robot\robot_movement.dm" #include "code\modules\mob\living\silicon\robot\update_status.dm" #include "code\modules\mob\living\silicon\robot\drone\drone.dm"