Refactors process_flags to use mob biotypes (#20601)

* why do i keep doing this

* unused defines

* uh oh fix

* missed a spot

* why won't you die
This commit is contained in:
SapphicOverload
2023-10-13 01:00:13 -04:00
committed by GitHub
parent d6149c6ac0
commit b53139af62
45 changed files with 85 additions and 99 deletions

View File

@@ -79,6 +79,10 @@
#define MOB_REPTILE (1<<8)
#define MOB_SPIRIT (1<<9)
/// All the biotypes that matter
#define ALL_NON_ROBOTIC (MOB_ORGANIC|MOB_INORGANIC|MOB_UNDEAD)
#define ALL_BIOTYPES (MOB_ORGANIC|MOB_INORGANIC|MOB_ROBOTIC|MOB_UNDEAD)
//Organ defines for carbon mobs
#define ORGAN_ORGANIC 1
#define ORGAN_ROBOTIC 2
@@ -101,10 +105,6 @@
#define DEVIL_BODYPART "devil"
/*see __DEFINES/inventory.dm for bodypart bitflag defines*/
// Processing flags, defines the types of mobs are compatible with certain reagents, organs, and symptoms
#define ORGANIC (1<<0)
#define SYNTHETIC (1<<1)
// Health/damage defines for carbon mobs
#define HUMAN_MAX_OXYLOSS 3
#define HUMAN_CRIT_MAX_OXYLOSS (SSmobs.wait/30)

View File

@@ -32,7 +32,7 @@ Bonus
"Resistance 9" = "Causes permanent deafness, instead of intermittent.",
"Stealth 4" = "The symptom remains hidden until active.",
)
process_flags = ORGANIC | SYNTHETIC
compatible_biotypes = ALL_BIOTYPES
/datum/symptom/deafness/Start(datum/disease/advance/A)
. = ..()

View File

@@ -121,7 +121,7 @@ Bonus
"Stage Speed 8" = "Increases explosion radius and explosion damage to the host when the host is wet.",
"Transmission 8" = "Additionally synthesizes chlorine trifluoride and napalm inside the host. More chemicals are synthesized if the resistance 9 threshold has been met."
)
process_flags = ORGANIC | SYNTHETIC //is funny
compatible_biotypes = ALL_BIOTYPES //is funny
/datum/symptom/alkali/Start(datum/disease/advance/A)
. = ..()

View File

@@ -32,7 +32,7 @@ Bonus
"Stage Speed 7" = "Increases the amount of hallucinations.",
"Stealth 4" = "The virus mimics positive symptoms.",
)
process_flags = ORGANIC | SYNTHETIC
compatible_biotypes = ALL_BIOTYPES
/datum/symptom/hallucigen/Start(datum/disease/advance/A)
. = ..()

View File

@@ -380,7 +380,7 @@
"Transmission 6" = "Increases temperature adjustment rate.",
"Stage Speed 7" = "Increases healing speed.",
)
process_flags = ORGANIC | SYNTHETIC //only really for temp stabilize
compatible_biotypes = ALL_BIOTYPES //only really for temp stabilize
/datum/symptom/heal/plasma/Start(datum/disease/advance/A)
. = ..()

View File

@@ -14,7 +14,7 @@
"Transmission 5" = "Increases the virus' growth rate while nanites are present.",
"Stage Speed 7" = "Increases the replication boost."
)
process_flags = ORGANIC | SYNTHETIC
compatible_biotypes = ALL_BIOTYPES
/datum/symptom/nano_boost/Start(datum/disease/advance/A)
. = ..()
@@ -51,7 +51,7 @@
"Stage Speed 5" = "Increases the virus' growth rate while nanites are present.",
"Resistance 7" = "Severely increases the rate at which the nanites are destroyed."
)
process_flags = ORGANIC | SYNTHETIC
compatible_biotypes = ALL_BIOTYPES
/datum/symptom/nano_destroy/Start(datum/disease/advance/A)
. = ..()

View File

@@ -21,7 +21,7 @@
var/list/cached_tentacle_turfs
var/turf/last_location
var/tentacle_recheck_cooldown = 100
process_flags = ORGANIC | SYNTHETIC
compatible_biotypes = ALL_BIOTYPES
/datum/symptom/necroseed/Start(datum/disease/advance/A)
. = ..()

View File

@@ -15,7 +15,7 @@
"Transmission 12" = "Makes the host irradiate others around them as well.",
"Stage Speed 8" = "Host takes radiation damage faster."
)
process_flags = ORGANIC | SYNTHETIC
compatible_biotypes = ALL_BIOTYPES
/datum/symptom/radiation/Start(datum/disease/advance/A)
. = ..()

View File

@@ -24,7 +24,7 @@
transmittable = 3
level = 5
severity = 0
process_flags = ORGANIC | SYNTHETIC //i don't think this needs to be here, but just in case
compatible_biotypes = ALL_BIOTYPES //i don't think this needs to be here, but just in case
/datum/symptom/inorganic_adaptation/Start(datum/disease/advance/A)
. = ..()

View File

@@ -29,7 +29,7 @@
var/neutered = FALSE
var/list/thresholds
var/naturally_occuring = TRUE //if this symptom can appear from /datum/disease/advance/GenerateSymptoms()
var/process_flags = ORGANIC //some symptoms don't affect robotic mobs
var/compatible_biotypes = MOB_ORGANIC //most symptoms only affect organic mobs
/datum/symptom/New()
var/list/S = SSdisease.list_symptoms
@@ -57,7 +57,7 @@
return FALSE
if(world.time < next_activation)
return FALSE
if(process_flags & A.affected_mob.get_process_flags())
if(compatible_biotypes & A.affected_mob.mob_biotypes)
next_activation = world.time + rand(symptom_delay_min * 10, symptom_delay_max * 10)
return TRUE

View File

@@ -157,7 +157,7 @@
var/species_type = prefs.read_preference(/datum/preference/choiced/species)
var/datum/species/species = new species_type
var/disallowed_trait = (NOMOUTH in species.species_traits) || !(species.process_flags & ORGANIC)// Cant drink or process alcohol
var/disallowed_trait = (NOMOUTH in species.species_traits) || !(species.inherent_biotypes & MOB_ORGANIC)// Cant drink or process alcohol
qdel(species)
if(disallowed_trait)
@@ -572,7 +572,7 @@
var/species_type = prefs.read_preference(/datum/preference/choiced/species)
var/datum/species/species = new species_type
var/disallowed_trait = !(species.process_flags & ORGANIC) //if you can't process organic chems you couldn't get addicted in the first place
var/disallowed_trait = !(species.inherent_biotypes & MOB_ORGANIC) //if you can't process organic chems you couldn't get addicted in the first place
qdel(species)
if(disallowed_trait)
@@ -641,7 +641,7 @@
var/species_type = prefs.read_preference(/datum/preference/choiced/species)
var/datum/species/species = new species_type
var/disallowed_trait = !(species.process_flags & ORGANIC)
var/disallowed_trait = !(species.inherent_biotypes & MOB_ORGANIC)
qdel(species)
if(disallowed_trait)
@@ -734,7 +734,7 @@
var/species_type = prefs.read_preference(/datum/preference/choiced/species)
var/datum/species/species = new species_type
var/disallowed_trait = !(species.process_flags & ORGANIC) // why would robots be allergic to things
var/disallowed_trait = !(species.inherent_biotypes & MOB_ORGANIC) // why would robots be allergic to things
qdel(species)
if(disallowed_trait)

View File

@@ -4,7 +4,7 @@
icon = 'icons/obj/abductor.dmi'
icon_state = "gland"
status = ORGAN_ROBOTIC
process_flags = ORGANIC | SYNTHETIC
compatible_biotypes = ALL_BIOTYPES
beating = TRUE
var/true_name = "baseline placebo referencer"
var/cooldown_low = 30 SECONDS

View File

@@ -24,7 +24,7 @@
icon_state = "roro core 2"
visual = FALSE
item_flags = NOBLUDGEON
process_flags = ORGANIC | SYNTHETIC
compatible_biotypes = ALL_BIOTYPES
slot = "hivecore"
force = 0
actions_types = list(/datum/action/item_action/organ_action/use)

View File

@@ -703,7 +703,7 @@ GLOBAL_LIST_EMPTY(aide_list)
name = "Flight Potion"
description = "Strange mutagenic compound of unknown origins."
reagent_state = LIQUID
process_flags = ORGANIC | SYNTHETIC
compatible_biotypes = ALL_BIOTYPES
color = "#FFEBEB"
/datum/reagent/flightpotion/reaction_mob(mob/living/M, methods = TOUCH, reac_volume, show_message = 1)

View File

@@ -191,7 +191,7 @@
return
// This should be a better check but this covers 99.9% of cases
if(!(process_flags & C.get_process_flags()))
if(!(compatible_biotypes & C.mob_biotypes))
to_chat(user, span_warner("This brain is incompatiable with this beings biology!"))
return
@@ -278,7 +278,7 @@
icon = 'icons/obj/assemblies.dmi'
icon_state = "posibrain-ipc"
organ_flags = ORGAN_SYNTHETIC
process_flags = SYNTHETIC
compatible_biotypes = MOB_ROBOTIC
/obj/item/organ/brain/positron/emp_act(severity)
if(prob(25))

View File

@@ -1176,10 +1176,6 @@
return FALSE
return ..()
/// Returns the type of organs, reagents, and symptoms this mob is compatible with
/mob/living/carbon/human/get_process_flags()
return dna?.species?.process_flags // uses the process flags of whichever species we are
/mob/living/carbon/human/species
var/race = null

View File

@@ -138,8 +138,6 @@ GLOBAL_LIST_EMPTY(features_by_species)
///the icon used for the wings + details icon of a different source colour
var/wings_icon = "Angel"
var/wings_detail
/// Used for reagents, organs, and virus symptoms. We're going to assume you're a meatbag unless you say otherwise.
var/process_flags = ORGANIC
/// What kind of gibs to spawn
var/species_gibs = "human"
/// Can this species use numbers in its name?
@@ -1315,7 +1313,7 @@ GLOBAL_LIST_EMPTY(features_by_species)
H.reagents.del_reagent(chem.type)
return TRUE
//This handles dumping unprocessable reagents.
if(!(chem.process_flags & H.get_process_flags()))
if(!(chem.compatible_biotypes & H.mob_biotypes))
chem.holder.remove_reagent(chem.type, chem.metabolization_rate)
return TRUE
return FALSE

View File

@@ -37,7 +37,6 @@
staminamod = 0.8
siemens_coeff = 1.75
action_speed_coefficient = 0.9 // designed for labor, they should be good at it
process_flags = SYNTHETIC
species_gibs = "robotic"
attack_sound = 'sound/items/trayhit1.ogg'
screamsound = 'goon/sound/robot_scream.ogg'

View File

@@ -19,7 +19,6 @@
limbs_id = "synth"
toxmod = 0
clonemod = 0
process_flags = SYNTHETIC
species_gibs = "robotic"
attack_sound = 'sound/items/trayhit1.ogg'
screamsound = 'goon/sound/robot_scream.ogg'

View File

@@ -17,7 +17,6 @@
mutantstomach = /obj/item/organ/stomach/cell
mutantears = /obj/item/organ/ears/robot
mutantlungs = /obj/item/organ/lungs/ipc
process_flags = SYNTHETIC //can now process chems that a robot would be able to process, because they're robots
var/disguise_fail_health = 75 //When their health gets to this level their synthflesh partially falls off
var/datum/species/fake_species //a species to do most of our work for us, unless we're damaged
var/list/initial_species_traits //for getting these values back for assume_disguise()

View File

@@ -347,7 +347,7 @@
/mob/living/carbon/proc/handle_organs()
for(var/V in internal_organs)
var/obj/item/organ/O = V
if(O.process_flags & get_process_flags()) // assume carbons are organic by default
if(O.compatible_biotypes & mob_biotypes) // assume carbons are organic by default
O.on_life()
/mob/living/carbon/handle_diseases()

View File

@@ -1036,10 +1036,6 @@
/mob/living/proc/get_permeability(def_zone, linear = FALSE)
return 1
/// Returns the type of organs, reagents, and symptoms this mob is compatible with
/mob/living/proc/get_process_flags()
return (mob_biotypes & MOB_ROBOTIC) ? SYNTHETIC : ORGANIC // makes assumptions, override if you want something specific
/mob/living/proc/harvest(mob/living/user) //used for extra objects etc. in butchering
return

View File

@@ -601,7 +601,7 @@
return 0
/datum/reagents/proc/reaction_check(mob/living/M, datum/reagent/R)
return (R.process_flags & M.get_process_flags())
return (R.compatible_biotypes & M.mob_biotypes)
/**
* Applies the relevant reaction_ proc for every reagent in this holder

View File

@@ -60,8 +60,8 @@ GLOBAL_LIST_INIT(name2reagent, build_name2reagent())
var/addiction_stage = 0
/// Alternative names used for the drug
var/addiction_name = null
/// What can process this? ORGANIC, SYNTHETIC, or ORGANIC | SYNTHETIC?. We'll assume by default that it affects organics.
var/process_flags = ORGANIC
/// What biotypes can process this? We'll assume by default that it affects organics (and undead, for plasmemes)
var/compatible_biotypes = ALL_NON_ROBOTIC
/// How flammable is this material?
var/accelerant_quality = 0
/// You fucked up and this is now triggering its overdose effects, purge that shit quick.

View File

@@ -754,7 +754,7 @@
nutriment_factor = 5 * REAGENTS_METABOLISM
color = "#97ee63"
taste_description = "pure electricity"
process_flags = ORGANIC | SYNTHETIC
compatible_biotypes = ALL_BIOTYPES
/datum/reagent/consumable/liquidelectricity/reaction_turf(turf/T, reac_volume)//splash the electric "blood" all over the place
if(!istype(T))
@@ -941,4 +941,4 @@
description = "A creamy paste made from ground peanuts."
nutriment_factor = 15 * REAGENTS_METABOLISM
color = "#D9A066" // rgb: 217, 160, 102
taste_description = "peanuts"
taste_description = "peanuts"

View File

@@ -442,10 +442,10 @@
reagent_state = LIQUID
color = "#F1C40F"
metabolization_rate = 0.5 * REAGENTS_METABOLISM
process_flags = SYNTHETIC
compatible_biotypes = MOB_ROBOTIC
/datum/reagent/medicine/system_cleaner/reaction_mob(mob/living/L, methods=TOUCH, reac_volume)
if(!(L.get_process_flags() & ORGANIC))
if(!(L.mob_biotypes & MOB_ORGANIC))
for(var/thing in L.diseases) // can clean viruses from fully synthetic hosts
var/datum/disease/D = thing
D.cure()
@@ -463,7 +463,7 @@
description = "Repairs brain damage in synthetics."
color = "#727272"
taste_description = "metallic"
process_flags = SYNTHETIC
compatible_biotypes = MOB_ROBOTIC
/datum/reagent/medicine/liquid_solder/on_mob_life(mob/living/M)
var/obj/item/organ/O = M.getorganslot(ORGAN_SLOT_BRAIN)
@@ -486,7 +486,7 @@
metabolization_rate = 0.25 * REAGENTS_METABOLISM
var/healing = 0.5
overdose_threshold = 30
process_flags = ORGANIC | SYNTHETIC
compatible_biotypes = ALL_BIOTYPES
/datum/reagent/medicine/omnizine/on_mob_life(mob/living/carbon/M)
M.adjustToxLoss(-healing*REM, 0)
@@ -1895,7 +1895,7 @@
color = "#ff00d4"
metabolization_rate = 0.5 * REAGENTS_METABOLISM
taste_description = "acidic oil"
process_flags = ORGANIC | SYNTHETIC
compatible_biotypes = ALL_BIOTYPES
var/nanite_reduction = -50
/datum/reagent/medicine/naniteremover/on_mob_life(mob/living/carbon/M)

View File

@@ -128,7 +128,7 @@
glass_name = "glass of water"
glass_desc = "The father of all refreshments."
shot_glass_icon_state = "shotglassclear"
process_flags = ORGANIC | SYNTHETIC
compatible_biotypes = ALL_BIOTYPES
default_container = /obj/item/reagent_containers/glass/beaker/waterbottle/large
/*
@@ -345,7 +345,7 @@
description = "YOUR FLESH! IT BURNS!"
taste_description = "burning"
accelerant_quality = 20
process_flags = ORGANIC | SYNTHETIC
compatible_biotypes = ALL_BIOTYPES
/datum/reagent/hellwater/on_mob_life(mob/living/carbon/M)
M.fire_stacks = min(5,M.fire_stacks + 3)
@@ -360,7 +360,7 @@
description = "Strange liquid that defies the laws of physics"
taste_description = "glass"
color = "#1f8016"
process_flags = ORGANIC | SYNTHETIC
compatible_biotypes = ALL_BIOTYPES
/datum/reagent/eldritch/on_mob_life(mob/living/carbon/M)
if(IS_HERETIC(M) || IS_HERETIC_MONSTER(M))
@@ -392,7 +392,7 @@
description = "Lubricant is a substance introduced between two moving surfaces to reduce the friction and wear between them. giggity."
color = "#009CA8" // rgb: 0, 156, 168
taste_description = "cherry" // by popular demand
process_flags = ORGANIC | SYNTHETIC
compatible_biotypes = ALL_BIOTYPES
metabolization_rate = 2 * REAGENTS_METABOLISM // Double speed
@@ -1053,7 +1053,7 @@
color = "#B8B8C0" // rgb: 184, 184, 192
taste_description = "the inside of a reactor"
var/irradiation_level = 1
process_flags = ORGANIC | SYNTHETIC
compatible_biotypes = ALL_BIOTYPES
/datum/reagent/uranium/on_mob_life(mob/living/carbon/M)
M.apply_effect(irradiation_level/M.metabolism_efficiency,EFFECT_IRRADIATE,0)
@@ -1074,7 +1074,7 @@
color = "#C7C7C7" // rgb: 199,199,199
taste_description = "the colour blue and regret"
irradiation_level = 2*REM
process_flags = ORGANIC | SYNTHETIC
compatible_biotypes = ALL_BIOTYPES
/datum/reagent/bluespace
name = "Bluespace Dust"
@@ -1082,7 +1082,7 @@
reagent_state = SOLID
color = "#0000CC"
taste_description = "fizzling blue"
process_flags = ORGANIC | SYNTHETIC
compatible_biotypes = ALL_BIOTYPES
/datum/reagent/bluespace/reaction_mob(mob/living/M, methods=TOUCH, reac_volume)
if((methods & (TOUCH|VAPOR)) && (reac_volume > 5))
@@ -1108,7 +1108,7 @@
reagent_state = SOLID
color = "#db0735"
taste_description = "bitter evil"
process_flags = ORGANIC | SYNTHETIC
compatible_biotypes = ALL_BIOTYPES
metabolization_rate = 0.2 * REAGENTS_METABOLISM
can_synth = FALSE
@@ -1153,7 +1153,7 @@
glass_name = "glass of Dr. Gibb"
glass_desc = "Dr. Gibb. Not as dangerous as the glass_name might imply."
accelerant_quality = 10
process_flags = ORGANIC | SYNTHETIC
compatible_biotypes = ALL_BIOTYPES
/datum/reagent/fuel/reaction_mob(mob/living/M, methods=TOUCH, reac_volume)//Splashing people with welding fuel to make them easy to ignite!
if(methods & (TOUCH|VAPOR))
@@ -1470,7 +1470,7 @@
metabolization_rate = REAGENTS_METABOLISM * 0.5 // Because nitrium/freon/hyper-nob are handled through gas breathing, metabolism must be lower for breathcode to keep up
color = "90560B"
can_synth = FALSE
process_flags = ORGANIC | SYNTHETIC // works in open air, don't think it cares what kind of body it's in
compatible_biotypes = ALL_BIOTYPES // works in open air, don't think it cares what kind of body it's in
taste_description = "searingly cold"
/datum/reagent/hypernoblium/on_mob_add(mob/living/L)
@@ -1495,7 +1495,7 @@
metabolization_rate = REAGENTS_METABOLISM * 0.5 // handled through gas breathing, metabolism must be lower for breathcode to keep up
color = "000000"
can_synth = FALSE
process_flags = ORGANIC | SYNTHETIC // BURN IT ALLLLLL
compatible_biotypes = ALL_BIOTYPES // BURN IT ALLLLLL
taste_description = "searingly hot"
self_consuming = TRUE
var/flame_timer = 0
@@ -1740,7 +1740,7 @@
reagent_state = LIQUID
color = "#C8A5DC"
taste_description = "oil"
process_flags = SYNTHETIC
compatible_biotypes = ALL_BIOTYPES
/datum/reagent/oil/on_mob_life(mob/living/carbon/M)
M.adjustFireLoss(-2*REM, FALSE, FALSE, BODYPART_ROBOTIC)
@@ -1753,7 +1753,7 @@
color = "#C8A5DC"
taste_description = "bitterness"
taste_mult = 1.5
process_flags = ORGANIC | SYNTHETIC
compatible_biotypes = ALL_BIOTYPES
/datum/reagent/stable_plasma/on_mob_life(mob/living/carbon/C)
C.adjustPlasma(10)

View File

@@ -5,7 +5,7 @@
reagent_state = SOLID
color = "#550000"
taste_description = "sweet tasting metal"
process_flags = ORGANIC | SYNTHETIC
compatible_biotypes = ALL_BIOTYPES
/datum/reagent/thermite/reaction_turf(turf/T, reac_volume)
if(reac_volume >= 1)
@@ -37,7 +37,7 @@
metabolization_rate = 4
taste_description = "burning"
accelerant_quality = 20
process_flags = ORGANIC | SYNTHETIC
compatible_biotypes = ALL_BIOTYPES
/datum/reagent/clf3/on_mob_life(mob/living/carbon/M)
M.adjust_fire_stacks(2)
@@ -139,7 +139,7 @@
taste_description = "burning"
self_consuming = TRUE
accelerant_quality = 20
process_flags = ORGANIC | SYNTHETIC
compatible_biotypes = ALL_BIOTYPES
/datum/reagent/phlogiston/reaction_mob(mob/living/M, methods=TOUCH, reac_volume)
M.adjust_fire_stacks(1)
@@ -163,7 +163,7 @@
taste_description = "burning"
self_consuming = TRUE
accelerant_quality = 20
process_flags = ORGANIC | SYNTHETIC
compatible_biotypes = ALL_BIOTYPES
/datum/reagent/napalm/on_mob_life(mob/living/carbon/M)
M.adjust_fire_stacks(1)
@@ -181,7 +181,7 @@
metabolization_rate = 0.5 * REAGENTS_METABOLISM
taste_description = "bitterness"
self_consuming = TRUE
process_flags = ORGANIC | SYNTHETIC
compatible_biotypes = ALL_BIOTYPES
/datum/reagent/cryostylane/on_mob_life(mob/living/carbon/M) //TODO: code freezing into an ice cube
@@ -217,7 +217,7 @@
metabolization_rate = 0.5 * REAGENTS_METABOLISM
taste_description = "charged metal"
self_consuming = TRUE
process_flags = ORGANIC | SYNTHETIC
compatible_biotypes = ALL_BIOTYPES
var/shock_timer = 0
/datum/reagent/teslium/on_mob_metabolize(mob/living/L)
@@ -302,7 +302,7 @@ datum/reagent/frigorific_mixture
metabolization_rate = 0.5 * REAGENTS_METABOLISM
taste_description = "bitterness"
self_consuming = TRUE
process_flags = ORGANIC | SYNTHETIC
compatible_biotypes = ALL_BIOTYPES
/datum/reagent/frigorific_mixture/on_mob_life(mob/living/carbon/M) //TODO: code freezing into an ice cube

View File

@@ -60,7 +60,7 @@
color = "#8228A0"
toxpwr = 3
accelerant_quality = 10
process_flags = ORGANIC | SYNTHETIC
compatible_biotypes = ALL_BIOTYPES
/datum/reagent/toxin/plasma/on_mob_life(mob/living/carbon/C)
if(holder.has_reagent(/datum/reagent/medicine/epinephrine))
@@ -445,7 +445,7 @@
color = "#787878"
metabolization_rate = 0.125 * REAGENTS_METABOLISM
toxpwr = 0
process_flags = ORGANIC | SYNTHETIC
compatible_biotypes = ALL_BIOTYPES
var/radpower = 40
/datum/reagent/toxin/polonium/on_mob_life(mob/living/carbon/M)
@@ -797,7 +797,7 @@
metabolization_rate = 1.2 * REAGENTS_METABOLISM
toxpwr = 0.5
taste_description = "spinning"
process_flags = ORGANIC | SYNTHETIC
compatible_biotypes = ALL_BIOTYPES
/datum/reagent/toxin/rotatium/on_mob_life(mob/living/carbon/M)
return ..() //dont forget to reenable this
@@ -848,7 +848,7 @@
var/acidpwr = 10 //the amount of protection removed from the armour
taste_description = "acid"
self_consuming = TRUE
process_flags = ORGANIC | SYNTHETIC
compatible_biotypes = ALL_BIOTYPES
/datum/reagent/toxin/acid/reaction_mob(mob/living/carbon/C, methods=TOUCH, reac_volume, show_message = 1, permeability = 1)
if(!istype(C))

View File

@@ -105,7 +105,7 @@
return -1
var/obj/item/organ/O = tool
if(!(O.process_flags & target.get_process_flags()))
if(!(O.compatible_biotypes & target.mob_biotypes))
to_chat(user, span_notice("[target] is not compatible with [O]!"))
return -1

View File

@@ -58,7 +58,7 @@
desc = "One of the most advanced cybernetic organs ever created."
icon_state = "implant-filter"
organ_flags = ORGAN_SYNTHETIC
process_flags = ORGANIC | SYNTHETIC // THE GREATEST INVENTION IN THE HISTORY OF CYBERNETICS
compatible_biotypes = ALL_BIOTYPES // THE GREATEST INVENTION IN THE HISTORY OF CYBERNETICS
now_failing = span_warning("NOT AGAIN!")
now_fixed = span_info("Thank god that's over.")

View File

@@ -424,7 +424,7 @@
desc = "An internal power cord hooked up to a battery. Useful if you run on volts."
contents = newlist(/obj/item/apc_powercord)
slot = ORGAN_SLOT_STOMACH_AID //so ipcs don't get shafted for nothing
process_flags = SYNTHETIC
compatible_biotypes = MOB_ROBOTIC
zone = BODY_ZONE_CHEST
/obj/item/organ/cyberimp/arm/power_cord/SetSlotFromZone() // don't swap the zone

View File

@@ -5,7 +5,7 @@
visual = FALSE
status = ORGAN_ROBOTIC
organ_flags = ORGAN_SYNTHETIC
process_flags = ORGANIC | SYNTHETIC // everyone can use cybernetic implants
compatible_biotypes = ALL_BIOTYPES // everyone can use cybernetic implants
var/implant_color = "#FFFFFF"
var/implant_overlay
var/syndicate_implant = FALSE //Makes the implant invisible to health analyzers and medical HUDs.

View File

@@ -94,7 +94,7 @@
icon = 'icons/obj/clothing/hats.dmi'
icon_state = "kitty"
visual = TRUE
process_flags = ORGANIC | SYNTHETIC // meowchine... turn back now
compatible_biotypes = ALL_BIOTYPES // meowchine... turn back now
damage_multiplier = 2
/obj/item/organ/ears/cat/Insert(mob/living/carbon/human/H, special = 0, drop_if_replaced = TRUE)
@@ -120,7 +120,7 @@
damage_multiplier = 0.8
status = ORGAN_ROBOTIC
organ_flags = ORGAN_SYNTHETIC
process_flags = ORGANIC | SYNTHETIC
compatible_biotypes = ALL_BIOTYPES
/obj/item/organ/ears/penguin
name = "penguin ears"
@@ -154,7 +154,7 @@
gender = PLURAL
status = ORGAN_ROBOTIC
organ_flags = ORGAN_SYNTHETIC
process_flags = SYNTHETIC // for IPCs
compatible_biotypes = MOB_ROBOTIC // for IPCs
/obj/item/organ/ears/robot/emp_act(severity)
switch(severity)

View File

@@ -165,7 +165,7 @@
desc = "Your vision is augmented."
status = ORGAN_ROBOTIC
organ_flags = ORGAN_SYNTHETIC
process_flags = ORGANIC | SYNTHETIC
compatible_biotypes = ALL_BIOTYPES
/obj/item/organ/eyes/robotic/emp_act(severity)
. = ..()

View File

@@ -129,7 +129,7 @@
toxTolerance = -1
toxLethality = 0
status = ORGAN_ROBOTIC
process_flags = SYNTHETIC
compatible_biotypes = ALL_BIOTYPES
/obj/item/organ/liver/cybernetic/upgraded/ipc/emp_act(severity)
if(prob(10))

View File

@@ -503,7 +503,7 @@
desc = "A radiator in the shape of a lung used to exchange heat to cool down"
icon_state = "lungs-c"
organ_flags = ORGAN_SYNTHETIC
process_flags = SYNTHETIC // no more humans with IPC lungs, that's just silly
compatible_biotypes = MOB_ROBOTIC // no more humans with IPC lungs, that's just silly
status = ORGAN_ROBOTIC
COOLDOWN_DECLARE(last_message)

View File

@@ -7,8 +7,8 @@
throwforce = 0
var/zone = BODY_ZONE_CHEST
var/slot
// Does this organ work in organics, synthetics, or both? Assume it's a flesh-compatible organ by default.
var/process_flags = ORGANIC
// What biotypes is this organ compatible with? Assume it's a flesh-compatible organ by default.
var/compatible_biotypes = MOB_ORGANIC|MOB_INORGANIC|MOB_UNDEAD
// DO NOT add slots with matching names to different zones - it will break internal_organs_slot list!
var/organ_flags = 0
var/maxHealth = STANDARD_ORGAN_THRESHOLD
@@ -90,7 +90,7 @@
if(!C)
return
life_tick++
if((C.stat == DEAD || !(process_flags & owner.get_process_flags())) && !HAS_TRAIT(C, TRAIT_PRESERVED_ORGANS)) // organic organs decompose inside incompatible bodies
if((C.stat == DEAD || !(compatible_biotypes & owner.mob_biotypes)) && !HAS_TRAIT(C, TRAIT_PRESERVED_ORGANS)) // organic organs decompose inside incompatible bodies
if(damage >= maxHealth)
organ_flags |= ORGAN_FAILING
damage = maxHealth

View File

@@ -139,7 +139,7 @@
desc = "A micro-cell, for IPC use only. Do not swallow."
status = ORGAN_ROBOTIC
organ_flags = ORGAN_SYNTHETIC
process_flags = SYNTHETIC
compatible_biotypes = MOB_ROBOTIC
var/stored_charge = NUTRITION_LEVEL_WELL_FED
var/emp_message = span_warning("Alert: EMP Detected. Cycling battery.")
@@ -172,7 +172,7 @@
desc = "A crystal-like organ that stores the electric charge of ethereals."
status = ORGAN_ORGANIC
organ_flags = NONE
process_flags = ORGANIC
compatible_biotypes = ALL_NON_ROBOTIC
/obj/item/organ/stomach/cell/ethereal/Insert(mob/living/carbon/M, special = 0)
..()

View File

@@ -7,7 +7,7 @@
visual = TRUE
zone = BODY_ZONE_PRECISE_GROIN
slot = ORGAN_SLOT_TAIL
process_flags = ORGANIC | SYNTHETIC // pretty much entirely cosmetic, if someone wants to make crimes against nature then sure
compatible_biotypes = ALL_BIOTYPES // pretty much entirely cosmetic, if someone wants to make crimes against nature then sure
/// The sprite accessory this tail gives to the human it's attached to. If null, it will inherit its value from the human's DNA once attached.
var/tail_type = "None"

View File

@@ -123,7 +123,7 @@
desc = "A mysterious structure that allows for instant communication between users. Pretty impressive until you need to eat something."
icon_state = "tongueayylmao"
say_mod = "gibbers"
process_flags = ORGANIC | SYNTHETIC // fuck it, alien technology
compatible_biotypes = ALL_BIOTYPES // fuck it, alien technology
taste_sensitivity = NO_TASTE_SENSITIVITY // ayys cannot taste anything.
modifies_speech = TRUE
var/mothership
@@ -255,7 +255,7 @@
name = "robotic voicebox"
desc = "A voice synthesizer that can interface with organic lifeforms."
status = ORGAN_ROBOTIC
process_flags = ORGANIC | SYNTHETIC
compatible_biotypes = ALL_BIOTYPES
organ_flags = ORGAN_SYNTHETIC
icon_state = "tonguerobot"
say_mod = "states"

View File

@@ -7,7 +7,7 @@
name = "vocal cords"
icon_state = "appendix"
visual = FALSE
process_flags = ORGANIC | SYNTHETIC
compatible_biotypes = ALL_BIOTYPES
zone = BODY_ZONE_PRECISE_MOUTH
slot = ORGAN_SLOT_VOICE
gender = PLURAL
@@ -32,7 +32,7 @@
desc = "Fragments of adamantine exist in all golems, stemming from their origins as purely magical constructs. These are used to \"hear\" messages from their leaders."
zone = BODY_ZONE_HEAD
slot = ORGAN_SLOT_ADAMANTINE_RESONATOR
process_flags = ORGANIC | SYNTHETIC
compatible_biotypes = ALL_BIOTYPES
icon_state = "adamantine_resonator"
visual = FALSE

View File

@@ -6,7 +6,7 @@
//preternis eyes need to be powered by a preternis to function, in a non preternis they slowly power down to blindness
status = ORGAN_ROBOTIC
organ_flags = ORGAN_SYNTHETIC
process_flags = ORGANIC | SYNTHETIC
compatible_biotypes = ALL_BIOTYPES
low_threshold_passed = span_info("Your Preternis eyes switch to battery saver mode.")
high_threshold_passed = span_info("Your Preternis eyes only show a sliver of battery life left!")
@@ -39,10 +39,10 @@
. = ..()
if(!owner)
return
if((owner.get_process_flags() & SYNTHETIC) && !powered)
if((owner.mob_biotypes & MOB_ROBOTIC) && !powered)
powered = TRUE
to_chat(owner, span_notice("A battery icon disappears from your vision as your [src] switch to external power."))
if(!(owner.get_process_flags() & SYNTHETIC) && powered) //these eyes depend on being inside a preternis for power
if(!(owner.mob_biotypes & MOB_ROBOTIC) && powered) //these eyes depend on being inside a preternis for power
powered = FALSE
to_chat(owner, span_boldwarning("Your [src] flash warnings that they've lost their power source, and are running on emergency power!"))
if(powered)
@@ -105,7 +105,7 @@
name = "preternis cell-stomach"
desc = "Calling it a stomach is perhaps a bit generous. It's better at grinding rocks than dissolving food. Also works as a power cell."
icon_state = "stomach-c"
process_flags = ORGANIC | SYNTHETIC // also works as a stomach, so organics can use it too
compatible_biotypes = ALL_BIOTYPES // also works as a stomach, so organics can use it too
/obj/item/organ/stomach/cell/preternis/on_life()
. = ..()

View File

@@ -16,7 +16,6 @@
toxic_food = NONE
liked_food = FRIED | SUGAR | JUNKFOOD
disliked_food = GROSS | VEGETABLES
process_flags = ORGANIC | SYNTHETIC
burnmod = 1.2 //The plasteel has a really high heat capacity, however, it's not great at dispersing the heat to concentrated heat is gonna burn
coldmod = 3 //The plasteel around them saps their body heat quickly if it gets cold
heatmod = 2 //Once the heat gets through it's gonna BURN

View File

@@ -3,7 +3,7 @@
desc = "A specialized heart constructed from nanites that helps coordinate nanites allowing them to regenerate quicker inside the body without any ill effects. Caution this organ will fall apart without nanites to sustain itself!"
icon_state = "heart-nanites"
organ_flags = ORGAN_SYNTHETIC
process_flags = ORGANIC | SYNTHETIC
compatible_biotypes = ALL_BIOTYPES
var/nanite_boost = 1
/obj/item/organ/heart/nanite/emp_act()