Skip to content
This repository was archived by the owner on May 22, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
53895e4
Switching to another computer
Jun 24, 2022
f7584ea
half way there
Jun 24, 2022
4bfc43a
Should compile now but will be missing icons
Jun 24, 2022
2f738f9
)
Jun 24, 2022
b1bf3a5
ident
Jun 24, 2022
9e25fd8
Add 1/3 DMIs
Jun 24, 2022
81f1cef
Fix taste
Jun 24, 2022
c23a87d
Apply changes
Jun 24, 2022
10604ea
Sprites n stuff and revive delay
Jun 24, 2022
885953f
add organ sprites
Jun 24, 2022
16c33b9
More IPC Screens and Antennas
Jun 25, 2022
afee109
L + Ring + Fix
Jun 25, 2022
2227c84
2 New Eye Screens
Jun 25, 2022
7c5d1af
Fixes
Jun 26, 2022
0d2f712
Fixes
Jun 26, 2022
b4ebc81
:) + :( + Reorginization
Jun 27, 2022
ccf877e
Hand Sprites (Needs Spriters Work)
Jun 28, 2022
5f0e248
Make the hands look much less retarted
Jun 28, 2022
b6efdfb
Ports Morpheus Cyberkinetics Chassis from Shiptest
Jun 28, 2022
d0905f9
remove debug print
Jun 30, 2022
0c03eff
A bunch of fixes
Jun 30, 2022
2c132e6
get out of there code
Jun 30, 2022
50adcfd
Its not an upgrader cyberheart
Jun 30, 2022
2844158
Replaces some color screens with Greyscale variants
Jul 1, 2022
f89b963
Merge remote-tracking branch 'upstream/master' into ipcs
Jul 9, 2022
d84824d
Update code/modules/mob/living/carbon/human/species_types/IPC.dm
Jul 9, 2022
e4d2260
Jesus christ burn hits hard
Jul 9, 2022
c42251c
makes the head decapitable for IPCs
Jul 10, 2022
9693768
Retard managed to commit a map
Jul 10, 2022
8aee276
NO_DEFIB trait and makes emotes work
Jul 11, 2022
c8df279
revive code
Jul 12, 2022
cb36586
Update IPC.dm
Jul 12, 2022
fe4a56e
Update objective.dm
Jul 13, 2022
5b2839a
IPC Revival Board + Hair Fix
Jul 15, 2022
03cd2c9
Gives attach limb a return for limb reattachment
Jul 15, 2022
103ef05
well fuck you too then
Jul 15, 2022
63112c5
Merge branch 'master' into ipcs
JamieD1 Jul 16, 2022
135a6fc
IPC Organs no longer decay
Jul 17, 2022
9d3bfe3
Hopefully makes IPC revival work less buggily
Jul 17, 2022
63c3262
Custom hud icon
Jul 17, 2022
0bdd39a
Makes IPCs genderless
Jul 17, 2022
68943d4
fixes
Jul 19, 2022
c253847
Fix starving popup
Jul 19, 2022
c40ebfc
Crit fixes and adjustments
Jul 19, 2022
e7a297a
Adjustments & Cleanups
Jul 20, 2022
11385c5
Update defib.dm
Jul 23, 2022
da1328b
Merge remote-tracking branch 'upstream/master' into ipcs
Jul 24, 2022
3a98eac
merge icons
Jul 24, 2022
4c02203
Update negative.dm
Jul 26, 2022
c5467cd
should fix the rest of quirks + noblood
Jul 26, 2022
b8a687e
Merge branch 'master' into ipcs
Jul 28, 2022
297dd85
FUCK
Jul 28, 2022
a77cc81
Merge branch 'ipcs' of https://github.com/redmoogle/Yogstation into ipcs
Jul 28, 2022
de7d439
Fixes organ duplication
Jul 29, 2022
80a290f
Removes hemophiliac for noblood people
Jul 29, 2022
ea9906a
Merge branch 'master' into ipcs
Jul 30, 2022
99f1b26
no defibbing ipcs fuck you
Aug 2, 2022
33bf40a
moment moment
Aug 2, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions code/__DEFINES/DNA.dm
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,12 @@
#define HAS_FLESH 23
/// if we have bones (can suffer bone wounds)
#define HAS_BONE 24
/// Can't be husked.
#define NOHUSK 25
/// limbs start out as robotic; but also use organic icons. If you want to use the default ones, you'll have to use on_species_gain
#define ROBOTIC_LIMBS 26
/// have no mouth to ingest/eat with
#define NOMOUTH 27

//organ slots
#define ORGAN_SLOT_BRAIN "brain"
Expand Down
1 change: 1 addition & 0 deletions code/__DEFINES/is_helpers.dm
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@ GLOBAL_LIST_INIT(turfs_without_ground, typecacheof(list(
#define isvampire(A) (is_species(A,/datum/species/vampire))
#define ispreternis(A) (is_species(A,/datum/species/preternis))
#define isszlachta(A) (is_species(A, /datum/species/szlachta))
#define isipc(A) (is_species(A, /datum/species/ipc))

//more carbon mobs
#define ismonkey(A) (istype(A, /mob/living/carbon/monkey))
Expand Down
9 changes: 9 additions & 0 deletions code/__DEFINES/mobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,14 @@
#define DEVIL_BODYPART "devil"
/*see __DEFINES/inventory.dm for bodypart bitflag defines*/

//Reagent Metabolization flags, defines the type of reagents that affect this mob
#define PROCESS_ORGANIC 1 //Only processes reagents with "ORGANIC" or "ORGANIC | SYNTHETIC"
#define PROCESS_SYNTHETIC 2 //Only processes reagents with "SYNTHETIC" or "ORGANIC | SYNTHETIC"

// Reagent type flags, defines the types of mobs this reagent will affect
#define ORGANIC 1
#define SYNTHETIC 2

// Health/damage defines for carbon mobs
#define HUMAN_MAX_OXYLOSS 3
#define HUMAN_CRIT_MAX_OXYLOSS (SSmobs.wait/30)
Expand Down Expand Up @@ -180,6 +188,7 @@
//Nutrition levels for humans
#define NUTRITION_LEVEL_FAT 600
#define NUTRITION_LEVEL_FULL 550
#define NUTRITION_LEVEL_MOSTLY_FULL 500
#define NUTRITION_LEVEL_WELL_FED 450
#define NUTRITION_LEVEL_FED 350
#define NUTRITION_LEVEL_HUNGRY 250
Expand Down
2 changes: 2 additions & 0 deletions code/__DEFINES/traits.dm
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,8 @@
#define TRAIT_COAGULATING "coagulating" //from coagulant reagents, this doesn't affect the bleeding itself but does affect the bleed warning messages
#define TRAIT_NOPULSE "nopulse" // Your heart doesn't beat
#define TRAIT_MASQUERADE "masquerade" // Falsifies Health analyzer blood levels
#define TRAIT_NOCLONE "noclone" // No cloning
#define TRAIT_NODEFIB "nodefib" // No defibbing
#define TRAIT_COLDBLOODED "coldblooded" // Your body is literal room temperature. Does not make you immune to the temp
#define TRAIT_EAT_MORE "eat_more" //You get hungry three times as fast
#define TRAIT_MESONS "mesons"
Expand Down
3 changes: 3 additions & 0 deletions code/__HELPERS/global_lists.dm
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,9 @@
init_sprite_accessory_subtypes(/datum/sprite_accessory/ethereal_mark, GLOB.ethereal_mark_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/pod_hair, GLOB.pod_hair_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/pod_flower, GLOB.pod_flower_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/ipc_screens, GLOB.ipc_screens_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/ipc_antennas, GLOB.ipc_antennas_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/ipc_chassis, GLOB.ipc_chassis_list)



Expand Down
18 changes: 17 additions & 1 deletion code/__HELPERS/mobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,12 @@
init_sprite_accessory_subtypes(/datum/sprite_accessory/pod_hair, GLOB.pod_hair_list)
if(!GLOB.pod_flower_list.len)
init_sprite_accessory_subtypes(/datum/sprite_accessory/pod_flower, GLOB.pod_flower_list)
if(!GLOB.ipc_screens_list.len)
init_sprite_accessory_subtypes(/datum/sprite_accessory/ipc_screens, GLOB.ipc_screens_list)
if(!GLOB.ipc_antennas_list.len)
init_sprite_accessory_subtypes(/datum/sprite_accessory/ipc_antennas, GLOB.ipc_antennas_list)
if(!GLOB.ipc_chassis_list.len)
init_sprite_accessory_subtypes(/datum/sprite_accessory/ipc_chassis, GLOB.ipc_chassis_list)

//For now we will always return none for tail_human and ears. this shit was unreadable if you do somethign like this make it at least readable
return(list(
Expand All @@ -108,7 +114,10 @@
"dome" = pick(GLOB.dome_list),
"dorsal_tubes" = pick(GLOB.dorsal_tubes_list),
"ethereal_mark" = pick(GLOB.ethereal_mark_list),
"pod_hair" = pick(GLOB.pod_hair_list)
"pod_hair" = pick(GLOB.pod_hair_list),
"ipc_screen" = pick(GLOB.ipc_screens_list),
"ipc_antenna" = pick(GLOB.ipc_antennas_list),
"ipc_chassis" = pick(GLOB.ipc_chassis_list)
))

/proc/random_hair_style(gender)
Expand Down Expand Up @@ -180,6 +189,13 @@
if(!findname(.))
break

/proc/random_unique_ipc_name(attempts_to_find_unique_name=10)
for(var/i in 1 to attempts_to_find_unique_name)
. = capitalize(ipc_name())

if(!findname(.))
break

/proc/random_skin_tone()
return pick(GLOB.skin_tones)

Expand Down
3 changes: 3 additions & 0 deletions code/__HELPERS/names.dm
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@
/proc/moth_name()
return "[pick(GLOB.moth_first)] [pick(GLOB.moth_last)]"

/proc/ipc_name()
return "[pick(GLOB.posibrain_names)]-[rand(100, 999)]"

GLOBAL_VAR(command_name)
/proc/command_name()
if (GLOB.command_name)
Expand Down
3 changes: 3 additions & 0 deletions code/_globalvars/lists/flavor_misc.dm
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,9 @@ GLOBAL_LIST_EMPTY(r_wings_list)
GLOBAL_LIST_EMPTY(moth_wings_list)
GLOBAL_LIST_EMPTY(moth_wingsopen_list)
GLOBAL_LIST_EMPTY(caps_list)
GLOBAL_LIST_EMPTY(ipc_screens_list)
GLOBAL_LIST_EMPTY(ipc_antennas_list)
GLOBAL_LIST_EMPTY(ipc_chassis_list)

GLOBAL_LIST_EMPTY(ethereal_mark_list) //ethereal face marks
GLOBAL_LIST_INIT(color_list_ethereal, list("F Class(Green)" = "97ee63", "F2 Class (Light Green)" = "00fa9a", "F3 Class (Dark Green)" = "37835b", "M Class (Red)" = "9c3030", "M1 Class (Purple)" = "ee82ee", "G Class (Yellow)" = "fbdf56", "O Class (Blue)" = "3399ff", "A Class (Cyan)" = "00ffff"))
Expand Down
5 changes: 4 additions & 1 deletion code/datums/emotes.dm
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
var/message_robot = "" //Message displayed if the user is a robot
var/message_AI = "" //Message displayed if the user is an AI
var/message_monkey = "" //Message displayed if the user is a monkey
var/message_ipc = "" // Message to display if the user is an IPC
var/message_simple = "" //Message to display if the user is a simple_animal
var/message_param = "" //Message to display if a param was given
var/emote_type = EMOTE_VISIBLE //Whether the emote is visible or audible
Expand Down Expand Up @@ -117,6 +118,8 @@
. = message_AI
else if(ismonkey(user) && message_monkey)
. = message_monkey
else if(isipc(user) && message_ipc)
. = message_ipc
else if(isanimal(user) && message_simple)
. = message_simple

Expand Down Expand Up @@ -193,4 +196,4 @@
if(M.stat == DEAD && M.client && (M.client.prefs.chat_toggles & CHAT_GHOSTSIGHT) && !(M in viewers(T, null)))
M.show_message("[FOLLOW_LINK(M, src)] [ghost_text]")

visible_message(text, visible_message_flags = EMOTE_MESSAGE)
visible_message(text, visible_message_flags = EMOTE_MESSAGE)
30 changes: 30 additions & 0 deletions code/datums/traits/good.dm
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,11 @@
lose_text = span_notice("You can taste again!")
medical_record_text = "Patient suffers from ageusia and is incapable of tasting food or reagents."

/datum/quirk/no_taste/check_quirk(datum/preferences/prefs)
if(prefs.pref_species && (NOMOUTH in prefs.pref_species.species_traits)) // Cant drink
return "You don't have the ability to eat!"
return FALSE

/datum/quirk/alcohol_tolerance
name = "Alcohol Tolerance"
desc = "You become drunk more slowly and suffer fewer drawbacks from alcohol."
Expand All @@ -19,6 +24,11 @@
lose_text = span_danger("You don't feel as resistant to alcohol anymore. Somehow.")
medical_record_text = "Patient demonstrates a high tolerance for alcohol."

/datum/quirk/alcohol_tolerance/check_quirk(datum/preferences/prefs)
if(prefs.pref_species && (NOMOUTH in prefs.pref_species.species_traits)) // Cant drink
return "You don't have the ability to drink!"
return FALSE

/datum/quirk/apathetic
name = "Apathetic"
desc = "You just don't care as much as other people. That's nice to have in a place like this, I guess."
Expand Down Expand Up @@ -46,6 +56,11 @@
lose_text = span_danger("You no longer feel like drinking would ease your pain.")
medical_record_text = "Patient has unusually efficient liver metabolism and can slowly regenerate wounds by drinking alcoholic beverages."

/datum/quirk/drunkhealing/check_quirk(datum/preferences/prefs)
if(prefs.pref_species && (NOMOUTH in prefs.pref_species.species_traits)) // Cant drink
return "You don't have the ability to drink!"
return FALSE

/datum/quirk/empath
name = "Empath"
desc = "Whether it's a sixth sense or careful study of body language, it only takes you a quick glance at someone to understand how they feel."
Expand Down Expand Up @@ -191,6 +206,11 @@
species.toxic_food = initial(species.toxic_food)
species.liked_food = initial(species.liked_food)

/datum/quirk/toxic_tastes/check_quirk(datum/preferences/prefs)
if(prefs.pref_species && (NOMOUTH in prefs.pref_species.species_traits)) // Cant eat
return "You don't have the ability to eat!"
return FALSE

/datum/quirk/tagger
name = "Tagger"
desc = "You're an experienced artist. While drawing graffiti, you can get twice as many uses out of drawing supplies."
Expand All @@ -216,6 +236,11 @@
lose_text = span_danger("You no longer feel HONGRY.")
medical_record_text = "Patient demonstrates a disturbing capacity for eating."

/datum/quirk/voracious/check_quirk(datum/preferences/prefs)
if(prefs.pref_species && (NOMOUTH in prefs.pref_species.species_traits)) // Cant eat
return "You don't have the ability to eat!"
return FALSE

/datum/quirk/efficient_metabolism //about 25% slower hunger
name = "Efficient Metabolism"
desc = "Your metabolism is unusually efficient, allowing you to better process your food and go longer periods without eating."
Expand Down Expand Up @@ -262,3 +287,8 @@

/datum/quirk/cyberorgan/post_add()
to_chat(quirk_holder, "<span class='boldannounce'>Your [slot_string] has been replaced with an upgraded cybernetic variant.</span>")

/datum/quirk/cyberorgan/check_quirk(datum/preferences/prefs)
if(prefs.pref_species && istype(prefs.pref_species, /datum/species/ipc)) // IPCs are already cybernetic
return "You already have cybebrnetic organs!"
return FALSE
15 changes: 15 additions & 0 deletions code/datums/traits/negative.dm
Original file line number Diff line number Diff line change
Expand Up @@ -256,6 +256,11 @@
lose_text = span_danger("You're no longer severely affected by alcohol.")
medical_record_text = "Patient demonstrates a low tolerance for alcohol. (Wimp)"

/datum/quirk/light_drinker/check_quirk(datum/preferences/prefs)
if(prefs.pref_species && (NOMOUTH in prefs.pref_species.species_traits)) // Cant drink
return "You don't have the ability to drink!"
return FALSE

/datum/quirk/nearsighted //t. errorage
name = "Nearsighted"
desc = "You are nearsighted without prescription glasses, but spawn with a pair."
Expand Down Expand Up @@ -623,6 +628,11 @@
reagent_instance = new reagent_type()
H.reagents.addiction_list.Add(reagent_instance)

/datum/quirk/junkie/check_quirk(datum/preferences/prefs)
if(prefs.pref_species && (prefs.pref_species.reagent_tag == PROCESS_SYNTHETIC)) //can't lose blood if your species doesn't have any
return "You dont process normal chemicals!"
return FALSE

/datum/quirk/junkie/smoker
name = "Smoker"
desc = "Sometimes you just really want a smoke. Probably not great for your lungs."
Expand Down Expand Up @@ -728,6 +738,11 @@
cooldown = TRUE
addtimer(VARSET_CALLBACK(src, cooldown, FALSE), cooldown_time)

/datum/quirk/allergic/check_quirk(datum/preferences/prefs)
if(prefs.pref_species && (prefs.pref_species.reagent_tag == PROCESS_SYNTHETIC)) //can't lose blood if your species doesn't have any
return "You dont process normal chemicals!"
return FALSE

/datum/quirk/kleptomaniac
name = "Kleptomaniac"
desc = "You have an uncontrollable urge to pick up things you see. Even things that don't belong to you."
Expand Down
25 changes: 25 additions & 0 deletions code/datums/traits/neutral.dm
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,11 @@
if(!(initial(species.disliked_food) & MEAT))
species.disliked_food &= ~MEAT

/datum/quirk/vegetarian/check_quirk(datum/preferences/prefs)
if(prefs.pref_species && (NOMOUTH in prefs.pref_species.species_traits)) // Cant eat
return "You don't have the ability to eat!"
return FALSE

/datum/quirk/pineapple_liker
name = "Ananas Affinity"
desc = "You find yourself greatly enjoying fruits of the ananas genus. You can't seem to ever get enough of their sweet goodness!"
Expand All @@ -43,6 +48,11 @@
var/datum/species/species = H.dna.species
species.liked_food &= ~PINEAPPLE

/datum/quirk/pineapple_liker/check_quirk(datum/preferences/prefs)
if(prefs.pref_species && (NOMOUTH in prefs.pref_species.species_traits)) // Cant eat
return "You don't have the ability to eat!"
return FALSE

/datum/quirk/pineapple_hater
name = "Ananas Aversion"
desc = "You find yourself greatly detesting fruits of the ananas genus. Serious, how the hell can anyone say these things are good? And what kind of madman would even dare putting it on a pizza!?"
Expand All @@ -62,6 +72,11 @@
var/datum/species/species = H.dna.species
species.disliked_food &= ~PINEAPPLE

/datum/quirk/pineapple_hater/check_quirk(datum/preferences/prefs)
if(prefs.pref_species && (NOMOUTH in prefs.pref_species.species_traits)) // Cant eat
return "You don't have the ability to eat!"
return FALSE

/datum/quirk/deviant_tastes
name = "Deviant Tastes"
desc = "You dislike food that most people enjoy, and find delicious what they don't."
Expand All @@ -84,6 +99,11 @@
species.liked_food = initial(species.liked_food)
species.disliked_food = initial(species.disliked_food)

/datum/quirk/deviant_tastes/check_quirk(datum/preferences/prefs)
if(prefs.pref_species && (NOMOUTH in prefs.pref_species.species_traits)) // Cant eat
return "You don't have the ability to eat!"
return FALSE

/datum/quirk/monochromatic
name = "Monochromacy"
desc = "You suffer from full colorblindness, and perceive nearly the entire world in blacks and whites."
Expand Down Expand Up @@ -147,3 +167,8 @@
SEND_SIGNAL(H.back, COMSIG_TRY_STORAGE_SHOW, H)

to_chat(quirk_holder, span_boldnotice("Your bottle of hair dye spray is [where]."))

/datum/quirk/colorist/check_quirk(datum/preferences/prefs)
if(prefs.pref_species && !(HAIR in prefs.pref_species.species_traits)) // No Hair
return "You don't have hair!"
return FALSE
24 changes: 22 additions & 2 deletions code/game/gamemodes/objective.dm
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,9 @@ GLOBAL_LIST_EMPTY(objectives)
/datum/objective/proc/admin_edit(mob/admin)
return

/datum/objective/proc/is_valid_target(possible_target)
return TRUE

//Shared by few objective types
/datum/objective/proc/admin_simple_target_pick(mob/admin)
var/list/possible_targets = list("Free objective","Random")
Expand Down Expand Up @@ -125,7 +128,7 @@ GLOBAL_LIST_EMPTY(objectives)
if(O.late_joiner)
try_target_late_joiners = TRUE
for(var/datum/mind/possible_target in get_crewmember_minds())
if(!(possible_target in owners) && ishuman(possible_target.current) && (possible_target.current.stat != DEAD) && is_unique_objective(possible_target,dupe_search_range))
if(is_valid_target(possible_target) && !(possible_target in owners) && ishuman(possible_target.current) && (possible_target.current.stat != DEAD) && is_unique_objective(possible_target,dupe_search_range))
//yogs start -- Quiet Rounds
var/mob/living/carbon/human/guy = possible_target.current
if(possible_target.antag_datums || !(guy.client && (guy.client.prefs.yogtoggles & QUIET_ROUND)))
Expand Down Expand Up @@ -220,7 +223,8 @@ GLOBAL_LIST_EMPTY(objectives)
if(target && target.current)
if(ishuman(target.current))
var/mob/living/carbon/human/H = target.current
explanation_text = "Assassinate [target.name], the [lowertext(H.dna.species.name)] [!target_role_type ? target.assigned_role : target.special_role]."
// This should just check for an uppercase flag
explanation_text = "Assassinate [target.name], the [isipc(H) ? H.dna.species.name : lowertext(H.dna.species.name)] [!target_role_type ? target.assigned_role : target.special_role]."
else
explanation_text = "Assassinate [target.name], the [!target_role_type ? target.assigned_role : target.special_role]."
else
Expand Down Expand Up @@ -515,6 +519,18 @@ GLOBAL_LIST_EMPTY(objectives)
return FALSE
return TRUE

/datum/objective/escape/escape_with_identity/is_valid_target(possible_target)
var/list/datum/mind/owners = get_owners()
for(var/datum/mind/M in owners)
if(!M)
continue
if(!M.has_antag_datum(/datum/antagonist/changeling))
continue
var/datum/mind/T = possible_target
if(!istype(T) || isipc(T.current))
return FALSE
return TRUE

/datum/objective/escape/escape_with_identity
name = "escape with identity"
var/target_real_name // Has to be stored because the target's real_name can change over the course of the round
Expand Down Expand Up @@ -1093,6 +1109,8 @@ GLOBAL_LIST_EMPTY(possible_items_special)
for(var/datum/mind/M in SSticker.minds)
if(M in lings)
continue
if(isipc(M.current))
continue
if(department_head in get_department_heads(M.assigned_role))
if(ling_count)
ling_count--
Expand Down Expand Up @@ -1122,6 +1140,8 @@ GLOBAL_LIST_EMPTY(possible_items_special)
for(var/datum/mind/head in heads)
if(head in lings) //Looking at you HoP.
continue
if(isipc(head.current))
continue
if(needed_heads)
department_minds += head
department_real_names += head.current.real_name
Expand Down
5 changes: 4 additions & 1 deletion code/game/machinery/computer/cloning.dm
Original file line number Diff line number Diff line change
Expand Up @@ -611,7 +611,10 @@
has_bank_account = I.registered_account
if(isbrain(mob_occupant))
dna = B.stored_dna


if(HAS_TRAIT(mob_occupant, TRAIT_NOCLONE))
scantemp = "<font class='bad'>Unable to locate valid genetic data.</font>"
return FALSE
if(!istype(dna))
scantemp = "<font class='bad'>Unable to locate valid genetic data.</font>"
return FALSE
Expand Down
1 change: 1 addition & 0 deletions code/game/mecha/mech_fabricator.dm
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@
"Cybernetics",
"Implants",
"Control Interfaces",
"IPC Components",
"Misc"
)

Expand Down
Loading