Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Species-nuking-port #2775

Merged
merged 19 commits into from
Aug 22, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
44 changes: 21 additions & 23 deletions code/__DEFINES/DNA.dm
Original file line number Diff line number Diff line change
Expand Up @@ -66,39 +66,37 @@
#define CLONER_FRESH_CLONE "fresh"
#define CLONER_MATURE_CLONE "mature"



//species traits for mutantraces
#define MUTCOLORS 1
#define HAIR 2
#define FACEHAIR 3
#define EYECOLOR 4
#define LIPS 5
#define NOTRANSSTING 7
#define NOZOMBIE 8
#define NO_UNDERWEAR 9
#define NO_DNA_COPY 10
#define DRINKSBLOOD 11
#define SKINTONES 12
#define ANIME 13
#define MUTCOLORS_SECONDARY 14
#define SPECIES_FUR 15
#define NOTRANSSTING 2
#define NOZOMBIE 3
#define NO_UNDERWEAR 4
#define NO_DNA_COPY 5
#define DRINKSBLOOD 6
#define ANIME 7
#define MUTCOLORS_SECONDARY 8
#define SPECIES_FUR 9
#define SKINTONES 10

/// Use this if you want to change the race's color without the player being able to pick their own color. AKA special color shifting
#define DYNCOLORS 16
#define AGENDER 17
#define DYNCOLORS 7
#define AGENDER 8
/// Do not draw eyes or eyeless overlay
#define NOEYESPRITES 18
#define NOEYESPRITES 9
///If we have a limb-specific overlay sprite
#define HAS_MARKINGS 19
#define HAS_MARKINGS 10
/// Do not draw blood overlay
#define NOBLOODOVERLAY 20
#define NOBLOODOVERLAY 11
///No augments, for monkeys in specific because they will turn into fucking freakazoids https://cdn.discordapp.com/attachments/326831214667235328/791313258912153640/102707682-fa7cad80-4294-11eb-8f13-8c689468aeb0.png
#define NOAUGMENTS 21
#define NOAUGMENTS 12
///will be assigned a universal vampire themed last name shared by their department. this is preferenced!
#define BLOOD_CLANS 22
#define BLOOD_CLANS 13

#define REVIVESBYHEALING 23
#define NOHUSK 24
#define NOMOUTH 25
#define REVIVESBYHEALING 14
#define NOHUSK 15
#define NOMOUTH 16

//organ slots
#define ORGAN_SLOT_ADAMANTINE_RESONATOR "adamantine_resonator"
Expand Down
9 changes: 9 additions & 0 deletions code/__DEFINES/sprite_accessories.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
// ~color source defines for sprite accessories
/// Color of the sprite accessory will match the owner's mutant color, which is granted by certain species
#define MUTANT_COLOR "mutant_color"
/// Color of the sprite accessory will match the owner's hair color
#define HAIR_COLOR "hair_color"
/// Color of the sprite accessory will match the owner's facial hair color
#define FACIAL_HAIR_COLOR "facial_hair_color"
/// Color of the sprite accessory will match the owner's (left) eye color
#define EYE_COLOR "eye_color"
18 changes: 18 additions & 0 deletions code/__DEFINES/surgery.dm
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,24 @@
///Bodypart does not get replaced during set_species()
#define BP_BLOCK_CHANGE_SPECIES (1<<0)

// Flags for the head_flags var on /obj/item/bodypart/head
/// Head can have hair
#define HEAD_HAIR (1<<0)
/// Head can have facial hair
#define HEAD_FACIAL_HAIR (1<<1)
/// Head can have lips
#define HEAD_LIPS (1<<2)
/// Head can have eye sprites
#define HEAD_EYESPRITES (1<<3)
/// Head will have colored eye sprites
#define HEAD_EYECOLOR (1<<4)
/// Head can have eyeholes when missing eyes
#define HEAD_EYEHOLES (1<<5)
/// Head can have debrain overlay
#define HEAD_DEBRAIN (1<<6)
/// All head flags, default for most heads
#define HEAD_ALL_FEATURES (HEAD_HAIR|HEAD_FACIAL_HAIR|HEAD_LIPS|HEAD_EYESPRITES|HEAD_EYECOLOR|HEAD_EYEHOLES|HEAD_DEBRAIN)

/// When the surgery step fails :(
#define SURGERY_STEP_FAIL -1

Expand Down
2 changes: 2 additions & 0 deletions code/__DEFINES/traits.dm
Original file line number Diff line number Diff line change
Expand Up @@ -245,6 +245,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
#define TRAIT_VIRUSIMMUNE "virus_immunity"
#define TRAIT_PIERCEIMMUNE "pierce_immunity"
#define TRAIT_NODISMEMBER "dismember_immunity"
/// This carbon doesn't show an overlay when they have no brain
#define TRAIT_NO_DEBRAIN_OVERLAY "no_debrain_overlay"
#define TRAIT_NOFIRE "nonflammable"
#define TRAIT_NOFIRE_SPREAD "no_fire_spreading"
/// Prevents plasmamen from self-igniting if only their helmet is missing
Expand Down
10 changes: 10 additions & 0 deletions code/_globalvars/bitfields.dm
Original file line number Diff line number Diff line change
Expand Up @@ -401,6 +401,16 @@ DEFINE_BITFIELD(change_exempt_flags, list(
"BP_BLOCK_CHANGE_SPECIES" = BP_BLOCK_CHANGE_SPECIES,
))

DEFINE_BITFIELD(head_flags, list(
"HEAD_HAIR" = HEAD_HAIR,
"HEAD_FACIAL_HAIR" = HEAD_FACIAL_HAIR,
"HEAD_LIPS" = HEAD_LIPS,
"HEAD_EYESPRITES" = HEAD_EYESPRITES,
"HEAD_EYECOLOR" = HEAD_EYECOLOR,
"HEAD_EYEHOLES" = HEAD_EYEHOLES,
"HEAD_DEBRAIN" = HEAD_DEBRAIN,
))

DEFINE_BITFIELD(supports_variations_flags, list(
"CLOTHING_NO_VARIATION" = CLOTHING_NO_VARIATION,
"CLOTHING_DIGITIGRADE_VARIATION" = CLOTHING_DIGITIGRADE_VARIATION,
Expand Down
1 change: 1 addition & 0 deletions code/_globalvars/traits.dm
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_VIRUSIMMUNE" = TRAIT_VIRUSIMMUNE,
"TRAIT_PIERCEIMMUNE" = TRAIT_PIERCEIMMUNE,
"TRAIT_NODISMEMBER" = TRAIT_NODISMEMBER,
"TRAIT_NO_DEBRAIN_OVERLAY" = TRAIT_NO_DEBRAIN_OVERLAY,
"TRAIT_NOFIRE" = TRAIT_NOFIRE,
"TRAIT_NOGUNS" = TRAIT_NOGUNS,
"TRAIT_NOHUNGER" = TRAIT_NOHUNGER,
Expand Down
10 changes: 5 additions & 5 deletions code/datums/mutations/body.dm
Original file line number Diff line number Diff line change
Expand Up @@ -502,6 +502,7 @@
. = ..()
if(.)//cant add
return TRUE

var/obj/item/organ/internal/brain/brain = owner.get_organ_slot(ORGAN_SLOT_BRAIN)
if(brain)
brain.zone = BODY_ZONE_CHEST
Expand All @@ -510,19 +511,18 @@
if(head)
owner.visible_message(span_warning("[owner]'s head splatters with a sickening crunch!"), ignored_mobs = list(owner))
new /obj/effect/gibspawner/generic(get_turf(owner), owner)
head.dismember(BRUTE)
head.dismember(dam_type = BRUTE, silent = TRUE)
head.drop_organs()
qdel(head)
owner.regenerate_icons()
RegisterSignal(owner, COMSIG_ATTEMPT_CARBON_ATTACH_LIMB, PROC_REF(abortattachment))
RegisterSignal(owner, COMSIG_ATTEMPT_CARBON_ATTACH_LIMB, PROC_REF(abort_attachment))

/datum/mutation/human/headless/on_losing()
. = ..()
if(.)
return TRUE
var/obj/item/organ/internal/brain/brain = owner.get_organ_slot(ORGAN_SLOT_BRAIN)
if(brain) //so this doesn't instantly kill you. we could delete the brain, but it lets people cure brain issues they /really/ shouldn't be
brain.zone = BODY_ZONE_HEAD
brain.zone = initial(brain.zone)
UnregisterSignal(owner, COMSIG_ATTEMPT_CARBON_ATTACH_LIMB)
var/successful = owner.regenerate_limb(BODY_ZONE_HEAD)
if(!successful)
Expand All @@ -534,7 +534,7 @@
new /obj/effect/gibspawner/generic(get_turf(owner), owner)


/datum/mutation/human/headless/proc/abortattachment(datum/source, obj/item/bodypart/new_limb, special) //you aren't getting your head back
/datum/mutation/human/headless/proc/abort_attachment(datum/source, obj/item/bodypart/new_limb, special) //you aren't getting your head back
SIGNAL_HANDLER

if(istype(new_limb, /obj/item/bodypart/head))
Expand Down
Loading
Loading