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

Kemonomimi species & animalistic trait #27

Closed
Closed
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
6 changes: 3 additions & 3 deletions code/__DEFINES/is_helpers.dm
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ GLOBAL_LIST_INIT(turfs_pass_meteor, typecacheof(list(
//Human sub-species
#define isabductor(A) (is_species(A, /datum/species/abductor))
#define isgolem(A) (is_species(A, /datum/species/golem))
#define islizard(A) (is_species(A, /datum/species/lizard))
#define islizard(A) (is_species(A, /datum/species/lizard) || HAS_TRAIT(A, TRAIT_REPTILE)) // Doppler edit, animal trait - old code: #define islizard(A) (is_species(A, /datum/species/lizard))
#define isashwalker(A) (is_species(A, /datum/species/lizard/ashwalker))
#define isplasmaman(A) (is_species(A, /datum/species/plasmaman))
#define ispodperson(A) (is_species(A, /datum/species/pod))
Expand All @@ -111,11 +111,11 @@ GLOBAL_LIST_INIT(turfs_pass_meteor, typecacheof(list(
#define iszombie(A) (is_species(A, /datum/species/zombie))
#define isskeleton(A) (is_species(A, /datum/species/skeleton))
#define ismoth(A) (is_species(A, /datum/species/moth))
#define isfelinid(A) (is_species(A, /datum/species/human/felinid))
#define isfelinid(A) (is_species(A, /datum/species/human/felinid) || HAS_TRAIT(A, TRAIT_FELINE)) // Doppler edit, animal trait - old code: #define isfelinid(A) (is_species(A, /datum/species/human/felinid))
#define isethereal(A) (is_species(A, /datum/species/ethereal))
#define isvampire(A) (is_species(A,/datum/species/vampire))
#define isdullahan(A) (is_species(A, /datum/species/dullahan))
#define ismonkey(A) (is_species(A, /datum/species/monkey))
#define ismonkey(A) (is_species(A, /datum/species/monkey) || HAS_TRAIT(A, TRAIT_SIMIAN)) // Doppler edit, animal trait - old code: #define ismonkey(A) (is_species(A, /datum/species/monkey))
#define isandroid(A) (is_species(A, /datum/species/android))
#define isnightmare(A) (is_species(A, /datum/species/shadow/nightmare))

Expand Down
6 changes: 3 additions & 3 deletions code/__DEFINES/~doppler_defines/is_helpers.dm
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//Species
#define isprimitivedemihuman(A) (is_species(A, /datum/species/human/felinid/primitive))
//Customization bases
#define isfeline(A) (isfelinid(A) || HAS_TRAIT(A, TRAIT_FELINE))
#define isprimitivedemihuman(A) (is_species(A, /datum/species/human/kemonomimi/primitive))
#define isslugcat(A) (is_species(A, /datum/species/slugcat))

2 changes: 2 additions & 0 deletions code/__DEFINES/~doppler_defines/mobs.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
// Defines for Species IDs. Used to refer to the name of a species, for things like bodypart names or species preferences.
#define SPECIES_KEMONOMIMI "kemonomimi"
5 changes: 0 additions & 5 deletions code/__DEFINES/~doppler_defines/traits.dm
Original file line number Diff line number Diff line change
@@ -1,11 +1,6 @@
/// trait that lets you do xenoarch magnification
#define TRAIT_XENOARCH_QUALIFIED "trait_xenoarch_qualified"

/// Traits granted by glassblowing
#define TRAIT_GLASSBLOWING "glassblowing"

/// Trait that is applied whenever someone or something is glassblowing
#define TRAIT_CURRENTLY_GLASSBLOWING "currently_glassblowing"

// felinid traits
#define TRAIT_FELINE "feline_aspect"
21 changes: 21 additions & 0 deletions code/__DEFINES/~doppler_defines/traits/declarations.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
// TRAIT_ANIMALISTIC choices
#define TRAIT_FELINE "cat" // confirms the isfelinid is_helper
#define TRAIT_CANINE "dog"
#define TRAIT_REPTILE "lizard" // confirms the islizard is_helper
#define TRAIT_LEPORID "bunny"
#define TRAIT_AVIAN "bird"
#define TRAIT_MURIDAE "mouse"
#define TRAIT_PISCINE "fish"
#define TRAIT_SIMIAN "monkey" // confirms the ismonkey is_helper

/// Every animal trait available for picking roundstart on appropriate species
GLOBAL_LIST_INIT(animalistic_traits, list(
TRAIT_FELINE,
TRAIT_CANINE,
TRAIT_REPTILE,
TRAIT_LEPORID,
TRAIT_AVIAN,
TRAIT_MURIDAE,
TRAIT_PISCINE,
TRAIT_SIMIAN,
))
2 changes: 2 additions & 0 deletions code/__DEFINES/~doppler_defines/traits/sources.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
/// Trait which lets species pick from a list of animal traits, used by kemonomimi and anthromorphs
#define TRAIT_ANIMALISTIC "animalistic"
1 change: 0 additions & 1 deletion code/_globalvars/traits/_traits.dm
Original file line number Diff line number Diff line change
Expand Up @@ -661,7 +661,6 @@ GLOBAL_LIST_INIT(traits_by_type, list(
// DOPPLER EDIT ADDITION START - DOPPLER TRAITS
/obj/item/clothing/suit/jacket/doppler = list(
"TRAIT_CURRENTLY_GLASSBLOWING" = TRAIT_CURRENTLY_GLASSBLOWING,
"TRAIT_FELINE" = TRAIT_FELINE,
"TRAIT_GLASSBLOWING" = TRAIT_GLASSBLOWING,
"TRAIT_XENOARCH_QUALIFIED" = TRAIT_XENOARCH_QUALIFIED,
),
Expand Down
1 change: 0 additions & 1 deletion code/_globalvars/traits/admin_tooling.dm
Original file line number Diff line number Diff line change
Expand Up @@ -360,7 +360,6 @@ GLOBAL_LIST_INIT(admin_visible_traits, list(
// DOPPLER EDIT ADDITION START - DOPPLER TRAITS
/obj/item/clothing/suit/jacket/doppler = list(
"TRAIT_CURRENTLY_GLASSBLOWING" = TRAIT_CURRENTLY_GLASSBLOWING,
"TRAIT_FELINE" = TRAIT_FELINE,
"TRAIT_GLASSBLOWING" = TRAIT_GLASSBLOWING,
"TRAIT_XENOARCH_QUALIFIED" = TRAIT_XENOARCH_QUALIFIED,
),
Expand Down
3 changes: 0 additions & 3 deletions code/controllers/subsystem/processing/quirks.dm
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,6 @@ GLOBAL_LIST_INIT_TYPED(quirk_blacklist, /list/datum/quirk, list(
list(/datum/quirk/photophobia, /datum/quirk/nyctophobia),
list(/datum/quirk/item_quirk/settler, /datum/quirk/freerunning),
list(/datum/quirk/numb, /datum/quirk/selfaware),
//DOPPLER EDIT ADDITION BEGIN
list(/datum/quirk/feline_aspect)
//DOPPLER EDIT ADDITION END
))

GLOBAL_LIST_INIT(quirk_string_blacklist, generate_quirk_string_blacklist())
Expand Down
2 changes: 1 addition & 1 deletion code/controllers/subsystem/sprite_accessories.dm
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ SUBSYSTEM_DEF(accessories) // just 'accessories' for brevity
socks_list = init_sprite_accessory_subtypes(/datum/sprite_accessory/socks)[DEFAULT_SPRITE_LIST]

lizard_markings_list = init_sprite_accessory_subtypes(/datum/sprite_accessory/lizard_markings)[DEFAULT_SPRITE_LIST]
tails_list_human = init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/human, add_blank = TRUE)[DEFAULT_SPRITE_LIST]
tails_list_human = init_sprite_accessory_subtypes(/datum/sprite_accessory/tails, add_blank = TRUE)[DEFAULT_SPRITE_LIST] // DOPPLER EDIT, old code: tails_list_human = init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/human, add_blank = TRUE)[DEFAULT_SPRITE_LIST]
tails_list_lizard = init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/lizard)[DEFAULT_SPRITE_LIST]
tails_list_monkey = init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/monkey)[DEFAULT_SPRITE_LIST]
snouts_list = init_sprite_accessory_subtypes(/datum/sprite_accessory/snouts)[DEFAULT_SPRITE_LIST]
Expand Down
2 changes: 1 addition & 1 deletion code/game/machinery/computer/dna_console.dm
Original file line number Diff line number Diff line change
Expand Up @@ -341,7 +341,7 @@
data["subjectStatus"] = scanner_occupant.stat
data["subjectHealth"] = scanner_occupant.health
data["subjectEnzymes"] = scanner_occupant.dna.unique_enzymes
data["isMonkey"] = ismonkey(scanner_occupant)
data["isMonkey"] = (ismonkey(scanner_occupant) && !HAS_TRAIT(scanner_occupant, TRAIT_SIMIAN)) // Doppler station edit, animal trait. Lets the machine work on trait-havers - old code: data["isMonkey"] = ismonkey(scanner_occupant)
data["subjectUNI"] = scanner_occupant.dna.unique_identity
data["subjectUF"] = scanner_occupant.dna.unique_features
data["storage"]["occupant"] = tgui_occupant_mutations
Expand Down
30 changes: 9 additions & 21 deletions code/modules/client/preferences/species_features/lizard.dm
Original file line number Diff line number Diff line change
Expand Up @@ -51,27 +51,14 @@
var/icon/final_icon = icon('icons/mob/human/species/lizard/bodyparts.dmi', "lizard_chest_m")

if (sprite_accessory.icon_state != "none")
/// DOPPLER SHIFT REMOVAL BEGIN
/*var/icon/body_markings_icon = icon(
var/icon/body_markings_icon = icon(
'icons/mob/human/species/lizard/lizard_misc.dmi',
"male_[sprite_accessory.icon_state]_chest",
)

final_icon.Blend(body_markings_icon, ICON_OVERLAY)*/
/// DOPPLER SHIFT REMOVAL END
/// DOPPLER SHIFT ADDITION BEGIN
var/icon/markings_icon_1 = icon(sprite_accessory.icon, "male_[sprite_accessory.icon_state]_chest")
markings_icon_1.Blend(COLOR_RED, ICON_MULTIPLY)
var/icon/markings_icon_2 = icon(sprite_accessory.icon, "male_[sprite_accessory.icon_state]_chest_2")
markings_icon_2.Blend(COLOR_VIBRANT_LIME, ICON_MULTIPLY)
var/icon/markings_icon_3 = icon(sprite_accessory.icon, "male_[sprite_accessory.icon_state]_chest_3")
markings_icon_3.Blend(COLOR_BLUE, ICON_MULTIPLY)
final_icon.Blend(markings_icon_1, ICON_OVERLAY)
final_icon.Blend(markings_icon_2, ICON_OVERLAY)
final_icon.Blend(markings_icon_3, ICON_OVERLAY)
/// DOPPLER SHIFT ADDITION END
final_icon.Blend(body_markings_icon, ICON_OVERLAY)

//final_icon.Blend(COLOR_VIBRANT_LIME, ICON_MULTIPLY) /// DOPPLER SHIFT REMOVAL
final_icon.Blend(COLOR_VIBRANT_LIME, ICON_MULTIPLY)
final_icon.Crop(10, 8, 22, 23)
final_icon.Scale(26, 32)
final_icon.Crop(-2, 1, 29, 32)
Expand All @@ -80,7 +67,7 @@

/datum/preference/choiced/lizard_body_markings/apply_to_human(mob/living/carbon/human/target, value)
target.dna.features["lizard_markings"] = value

/* DOPPLER EDIT REMOVAL START
/datum/preference/choiced/lizard_frills
savefile_key = "feature_lizard_frills"
savefile_identifier = PREFERENCE_CHARACTER
Expand Down Expand Up @@ -112,7 +99,7 @@

/datum/preference/choiced/lizard_horns/apply_to_human(mob/living/carbon/human/target, value)
target.dna.features["horns"] = value

DOPPLER EDIT REMOVAL END */
/datum/preference/choiced/lizard_legs
savefile_key = "feature_lizard_legs"
savefile_identifier = PREFERENCE_CHARACTER
Expand Down Expand Up @@ -162,7 +149,7 @@
var/datum/species/species_type = preferences.read_preference(/datum/preference/choiced/species)

return initial(species_type.digitigrade_customization) & DIGITIGRADE_OPTIONAL

/* DOPPLER EDIT REMOVAL START
/datum/preference/choiced/lizard_snout
savefile_key = "feature_lizard_snout"
savefile_identifier = PREFERENCE_CHARACTER
Expand All @@ -178,7 +165,7 @@

/datum/preference/choiced/lizard_snout/apply_to_human(mob/living/carbon/human/target, value)
target.dna.features["snout"] = value

DOPPLER EDIT REMOVAL END */
/datum/preference/choiced/lizard_spines
savefile_key = "feature_lizard_spines"
savefile_identifier = PREFERENCE_CHARACTER
Expand All @@ -190,7 +177,7 @@

/datum/preference/choiced/lizard_spines/apply_to_human(mob/living/carbon/human/target, value)
target.dna.features["spines"] = value

/* DOPPLER EDIT REMOVAL START
/datum/preference/choiced/lizard_tail
savefile_key = "feature_lizard_tail"
savefile_identifier = PREFERENCE_CHARACTER
Expand All @@ -205,3 +192,4 @@

/datum/preference/choiced/lizard_tail/create_default_value()
return /datum/sprite_accessory/tails/lizard/smooth::name
DOPPLER EDIT REMOVAL END */
2 changes: 1 addition & 1 deletion code/modules/mob/living/carbon/human/_species.dm
Original file line number Diff line number Diff line change
Expand Up @@ -573,7 +573,7 @@ GLOBAL_LIST_EMPTY(features_by_species)
sample_overlay = new overlay_path()
organs_to_randomize[overlay_path] = sample_overlay

new_features["[sample_overlay.feature_key]"] = sample_overlay.get_random_appearance().name
new_features["[sample_overlay.feature_key]"] = /datum/sprite_accessory/blank::name // DOPPLER EDIT - no more random features, old code: new_features["[sample_overlay.feature_key]"] = sample_overlay.get_random_appearance().name

return new_features

Expand Down
9 changes: 6 additions & 3 deletions code/modules/mob/living/carbon/human/dummy.dm
Original file line number Diff line number Diff line change
Expand Up @@ -96,9 +96,12 @@ INITIALIZE_IMMEDIATE(/mob/living/carbon/human/dummy)

/// Takes in an accessory list and returns the first entry from that list, ensuring that we dont return SPRITE_ACCESSORY_NONE in the process.
/proc/get_consistent_feature_entry(list/accessory_feature_list)
var/consistent_entry = (accessory_feature_list- SPRITE_ACCESSORY_NONE)[1]
ASSERT(!isnull(consistent_entry))
return consistent_entry
// DOPPLER EDIT START
// var/consistent_entry = (accessory_feature_list- SPRITE_ACCESSORY_NONE)[1]
// ASSERT(!isnull(consistent_entry))
// return consistent_entry
return SPRITE_ACCESSORY_NONE
// DOPPLER EDIT END

/proc/create_consistent_human_dna(mob/living/carbon/human/target)
target.dna.features["mcolor"] = COLOR_VIBRANT_LIME
Expand Down
6 changes: 3 additions & 3 deletions code/modules/mob/living/carbon/human/human_helpers.dm
Original file line number Diff line number Diff line change
Expand Up @@ -301,17 +301,17 @@
*/
/mob/living/carbon/human/proc/get_mob_height()
if(HAS_TRAIT(src, TRAIT_DWARF))
if(ismonkey(src))
if(ismonkey(src) && !HAS_TRAIT(src, TRAIT_SIMIAN)) // Doppler edit, animal trait. our helper would like to exlude these - old code: if(ismonkey(src))
return MONKEY_HEIGHT_DWARF
else
return HUMAN_HEIGHT_DWARF
if(HAS_TRAIT(src, TRAIT_TOO_TALL))
if(ismonkey(src))
if(ismonkey(src) && !HAS_TRAIT(src, TRAIT_SIMIAN)) // Doppler edit, animal trait - old code: if(ismonkey(src))
return MONKEY_HEIGHT_TALL
else
return HUMAN_HEIGHT_TALLEST

else if(ismonkey(src))
else if(ismonkey(src) && !HAS_TRAIT(src, TRAIT_SIMIAN)) // Doppler edit, animal trait - old code: else if(ismonkey(src))
return MONKEY_HEIGHT_MEDIUM

return mob_height
Expand Down
7 changes: 0 additions & 7 deletions code/modules/surgery/organs/external/tails.dm
Original file line number Diff line number Diff line change
Expand Up @@ -40,13 +40,6 @@
receiver.add_mood_event("tail_regained", /datum/mood_event/tail_regained_wrong)

/obj/item/organ/external/tail/on_bodypart_insert(obj/item/bodypart/bodypart)
/// DOPPLER SHIFT ADDITION BEGIN
// damnit TG your own code fails CI for reasons unclear - TODO, stack trace this to eventually figure out how it's ending up with null owners
if(bodypart == null)
return ..()
if(bodypart.owner == null)
return ..()
/// DOPPLER SHIFT ADDITION END
var/obj/item/organ/external/spines/our_spines = bodypart.owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_SPINES)
if(our_spines)
try_insert_tail_spines(bodypart)
Expand Down
26 changes: 0 additions & 26 deletions code/~doppler_earliest_defines.dm

This file was deleted.

3 changes: 0 additions & 3 deletions modular_doppler/customization/code/accessory_overrides.dm

This file was deleted.

Loading
Loading