Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/master' into Cosmetic-Items
Browse files Browse the repository at this point in the history
  • Loading branch information
SomeRandomOwl committed Sep 6, 2024
2 parents 060113a + 0b7da5e commit 2aaf357
Show file tree
Hide file tree
Showing 66 changed files with 2,356 additions and 17 deletions.
5 changes: 4 additions & 1 deletion code/__DEFINES/DNA.dm
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,9 @@
#define DNA_MOTH_MARKINGS_BLOCK 13
#define DNA_MUSHROOM_CAPS_BLOCK 14
#define DNA_POD_HAIR_BLOCK 15
/// DOPPLER SHIFT ADDITION BEGIN
#define DNA_BREASTS_BLOCK 16
/// DOPPLER SHIFT ADDITION END

// Hey! Listen up if you're here because you're adding a species feature!
//
Expand All @@ -68,7 +71,7 @@
// (Which means having a DNA block for a feature tied to a mob without DNA is entirely pointless.)

/// Total amount of DNA blocks, must be equal to the highest DNA block number
#define DNA_FEATURE_BLOCKS 15
#define DNA_FEATURE_BLOCKS 16 /// DOPPLER SHIFT EDIT: 16, up from 15

#define DNA_SEQUENCE_LENGTH 4
#define DNA_MUTATION_BLOCKS 8
Expand Down
31 changes: 29 additions & 2 deletions code/__DEFINES/mobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -681,12 +681,20 @@ GLOBAL_LIST_INIT(human_heights_to_offsets, list(
#define MUTATIONS_LAYER 35
/// Mutantrace features (tail when looking south) that must appear behind the body parts
#define BODY_BEHIND_LAYER 34
/// DOPPLER SHIFT ADDITION BEGIN
#define BODY_BEHIND_LAYER_2 33.99
#define BODY_BEHIND_LAYER_3 33.98
/// DOPPLER SHIFT ADDITION END
/// Layer for bodyparts that should appear behind every other bodypart - Mostly, legs when facing WEST or EAST
#define BODYPARTS_LOW_LAYER 33
/// Layer for most bodyparts, appears above BODYPARTS_LOW_LAYER and below BODYPARTS_HIGH_LAYER
#define BODYPARTS_LAYER 32
/// Mutantrace features (snout, body markings) that must appear above the body parts
#define BODY_ADJ_LAYER 31
/// DOPPLER SHIFT ADDITION BEGIN
#define BODY_ADJ_LAYER_2 30.99
#define BODY_ADJ_LAYER_3 30.98
/// DOPPLER SHIFT ADDITION END
/// Underwear, undershirts, socks, eyes, lips(makeup)
#define BODY_LAYER 30
/// Mutations that should appear above body, body_adj and bodyparts layer (e.g. laser eyes)
Expand Down Expand Up @@ -737,6 +745,10 @@ GLOBAL_LIST_INIT(human_heights_to_offsets, list(
#define HANDS_LAYER 7
/// Body front layer. Usually used for mutant bodyparts that need to be in front of stuff (e.g. cat ears)
#define BODY_FRONT_LAYER 6
/// DOPPLER SHIFT ADDITION BEGIN
#define BODY_FRONT_LAYER_2 5.99
#define BODY_FRONT_LAYER_3 5.98
/// DOPPLER SHIFT ADDITION END
/// Special body layer that actually require to be above the hair (e.g. lifted welding goggles)
#define ABOVE_BODY_FRONT_GLASSES_LAYER 5
/// Special body layer for the rare cases where something on the head needs to be above everything else (e.g. flowers)
Expand Down Expand Up @@ -798,10 +810,25 @@ GLOBAL_LIST_INIT(layers_to_offset, list(
//Bitflags for the layers a bodypart overlay can draw on (can be drawn on multiple layers)
/// Draws overlay on the BODY_FRONT_LAYER
#define EXTERNAL_FRONT (1 << 0)
/// Draws overlay on the BODY_ADJ_LAYER
/// DOPPLER SHIFT REMOVAL BEGIN
/*/// Draws overlay on the BODY_ADJ_LAYER
#define EXTERNAL_ADJACENT (1 << 1)
/// Draws overlay on the BODY_BEHIND_LAYER
#define EXTERNAL_BEHIND (1 << 2)
#define EXTERNAL_BEHIND (1 << 2) */
/// DOPPLER SHIFT REMOVAL END
/// DOPPLER SHIFT ADDITION BEGIN
//Front extra-color layers.
#define EXTERNAL_FRONT_2 (1 << 1)
#define EXTERNAL_FRONT_3 (1 << 2)
//Updated adjacent & extra-color layers.
#define EXTERNAL_ADJACENT (1 << 3)
#define EXTERNAL_ADJACENT_2 (1 << 4)
#define EXTERNAL_ADJACENT_3 (1 << 5)
//Updated behind & extra-color layers.
#define EXTERNAL_BEHIND (1 << 6)
#define EXTERNAL_BEHIND_2 (1 << 7)
#define EXTERNAL_BEHIND_3 (1 << 8)
/// DOPPLER SHIFT ADDITION END
/// Draws organ on all EXTERNAL layers
#define ALL_EXTERNAL_OVERLAYS EXTERNAL_FRONT | EXTERNAL_ADJACENT | EXTERNAL_BEHIND

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
// Why we need bespoke organ slots for these isn't entirely within my understanding but I assume there's a good reason
#define ORGAN_SLOT_EXTERNAL_BREASTS "breasts"
2 changes: 2 additions & 0 deletions code/__DEFINES/~doppler_defines/keybindings.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
#define COMSIG_KB_MOB_PIXEL_SHIFT_DOWN "keybinding_mob_pixel_shift_down"
#define COMSIG_KB_MOB_PIXEL_SHIFT_UP "keybinding_mob_pixel_shift_up"
8 changes: 8 additions & 0 deletions code/__DEFINES/~doppler_defines/living.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
///from base of living/set_pull_offset(): (mob/living/pull_target, grab_state)
#define COMSIG_LIVING_SET_PULL_OFFSET "living_set_pull_offset"
///from base of living/reset_pull_offsets(): (mob/living/pull_target, override)
#define COMSIG_LIVING_RESET_PULL_OFFSETS "living_reset_pull_offsets"
///from base of living/CanAllowThrough(): (atom/movable/mover, border_dir)
#define COMSIG_LIVING_CAN_ALLOW_THROUGH "living_can_allow_through"
///Allow to movable atoms to pass through this living mob
#define COMPONENT_LIVING_PASSABLE (1<<0)
2 changes: 2 additions & 0 deletions code/__DEFINES/~doppler_defines/species.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
// Slugcats, from Talon III.
#define SPECIES_SLUGCAT "slugcat"
35 changes: 34 additions & 1 deletion code/datums/bodypart_overlays/bodypart_overlay.dm
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,12 @@
///Sometimes we need multiple layers, for like the back, middle and front of the person (EXTERNAL_FRONT, EXTERNAL_ADJACENT, EXTERNAL_BEHIND)
var/layers
///List of all possible layers. Used for looping through in drawing
var/static/list/all_layers = list(EXTERNAL_FRONT, EXTERNAL_ADJACENT, EXTERNAL_BEHIND)
//var/static/list/all_layers = list(EXTERNAL_FRONT, EXTERNAL_ADJACENT, EXTERNAL_BEHIND) /// DOPPLER SHIFT REMOVAL
/// DOPPLER SHIFT ADDITION BEGIN
var/static/list/all_layers = list(EXTERNAL_FRONT,EXTERNAL_FRONT_2,EXTERNAL_FRONT_3,
EXTERNAL_ADJACENT,EXTERNAL_ADJACENT_2,EXTERNAL_ADJACENT_3,
EXTERNAL_BEHIND,EXTERNAL_BEHIND_2,EXTERNAL_BEHIND_3)
/// DOPPLER SHIFT ADDITION END

///Key of the icon states of all the sprite_datums for easy caching
var/cache_key = ""
Expand Down Expand Up @@ -57,6 +62,20 @@
return "ADJ"
if(-BODY_FRONT_LAYER)
return "FRONT"
/// DOPPLER SHIFT ADDITION BEGIN
if(-BODY_BEHIND_LAYER_2)
return "BEHIND_2"
if(-BODY_BEHIND_LAYER_3)
return "BEHIND_3"
if(-BODY_ADJ_LAYER_2)
return "ADJ_2"
if(-BODY_ADJ_LAYER_3)
return "ADJ_3"
if(-BODY_FRONT_LAYER_2)
return "FRONT_2"
if(-BODY_FRONT_LAYER_3)
return "FRONT_3"
/// DOPPLER SHIFT ADDITION END

///Converts a bitflag to the right layer. I'd love to make this a static index list, but byond made an attempt on my life when i did
/datum/bodypart_overlay/proc/bitflag_to_layer(layer)
Expand All @@ -67,6 +86,20 @@
return -BODY_ADJ_LAYER
if(EXTERNAL_FRONT)
return -BODY_FRONT_LAYER
/// DOPPLER SHIFT ADDITION BEGIN
if(EXTERNAL_BEHIND_2)
return -BODY_BEHIND_LAYER_2
if(EXTERNAL_BEHIND_3)
return -BODY_BEHIND_LAYER_3
if(EXTERNAL_ADJACENT_2)
return -BODY_ADJ_LAYER_2
if(EXTERNAL_ADJACENT_3)
return -BODY_ADJ_LAYER_3
if(EXTERNAL_FRONT_2)
return -BODY_FRONT_LAYER_2
if(EXTERNAL_FRONT_3)
return -BODY_FRONT_LAYER_3
/// DOPPLER SHIFT ADDITION END

///Check whether we can draw the overlays. You generally don't want lizard snouts to draw over an EVA suit
/datum/bodypart_overlay/proc/can_draw_on_bodypart(mob/living/carbon/human/human)
Expand Down
2 changes: 1 addition & 1 deletion code/datums/bodypart_overlays/mutant_bodypart_overlay.dm
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@
var/gender = (limb?.limb_gender == FEMALE) ? "f" : "m"
var/list/icon_state_builder = list()
icon_state_builder += sprite_datum.gender_specific ? gender : "m" //Male is default because sprite accessories are so ancient they predate the concept of not hardcoding gender
icon_state_builder += feature_key
icon_state_builder += feature_key_sprite ? feature_key_sprite : feature_key /// DOPPLER SHIFT EDIT: try to use the sprite key first, normal key otherwise
icon_state_builder += get_base_icon_state()
icon_state_builder += mutant_bodyparts_layertext(image_layer)

Expand Down
12 changes: 12 additions & 0 deletions code/datums/dna.dm
Original file line number Diff line number Diff line change
Expand Up @@ -236,6 +236,10 @@ GLOBAL_LIST_INIT(total_uf_len_by_block, populate_total_uf_len_by_block())
L[DNA_MUSHROOM_CAPS_BLOCK] = construct_block(SSaccessories.caps_list.Find(features["caps"]), length(SSaccessories.caps_list))
if(features["pod_hair"])
L[DNA_POD_HAIR_BLOCK] = construct_block(SSaccessories.pod_hair_list.Find(features["pod_hair"]), length(SSaccessories.pod_hair_list))
/// DOPPLER SHIFT ADDITION BEGIN
if(features["breasts"])
L[DNA_BREASTS_BLOCK] = construct_block(SSaccessories.breasts_list.Find(features["breasts"]), length(SSaccessories.breasts_list))
/// DOPPLER SHIFT ADDITION END

for(var/blocknum in 1 to DNA_FEATURE_BLOCKS)
. += L[blocknum] || random_string(GET_UI_BLOCK_LEN(blocknum), GLOB.hex_characters)
Expand Down Expand Up @@ -380,6 +384,10 @@ GLOBAL_LIST_INIT(total_uf_len_by_block, populate_total_uf_len_by_block())
set_uni_feature_block(blocknumber, construct_block(SSaccessories.caps_list.Find(features["caps"]), length(SSaccessories.caps_list)))
if(DNA_POD_HAIR_BLOCK)
set_uni_feature_block(blocknumber, construct_block(SSaccessories.pod_hair_list.Find(features["pod_hair"]), length(SSaccessories.pod_hair_list)))
/// DOPPLER SHIFT ADDITION BEGIN
if(DNA_BREASTS_BLOCK)
set_uni_feature_block(blocknumber, construct_block(SSaccessories.breasts_list.Find(features["breasts"]), length(SSaccessories.breasts_list)))
/// DOPPLER SHIFT ADDITION END

//Please use add_mutation or activate_mutation instead
/datum/dna/proc/force_give(datum/mutation/human/human_mutation)
Expand Down Expand Up @@ -681,6 +689,10 @@ GLOBAL_LIST_INIT(total_uf_len_by_block, populate_total_uf_len_by_block())
dna.features["caps"] = SSaccessories.caps_list[deconstruct_block(get_uni_feature_block(features, DNA_MUSHROOM_CAPS_BLOCK), length(SSaccessories.caps_list))]
if(dna.features["pod_hair"])
dna.features["pod_hair"] = SSaccessories.pod_hair_list[deconstruct_block(get_uni_feature_block(features, DNA_POD_HAIR_BLOCK), length(SSaccessories.pod_hair_list))]
/// DOPPLER SHIFT ADDITION BEGIN
if(dna.features["breasts"])
dna.features["breasts"] = SSaccessories.breasts_list[deconstruct_block(get_uni_feature_block(features, DNA_BREASTS_BLOCK), length(SSaccessories.breasts_list))]
/// DOPPLER SHIFT ADDITION END

for(var/obj/item/organ/organ in organs)
organ.mutate_feature(features, src)
Expand Down
12 changes: 8 additions & 4 deletions code/datums/sprite_accessories.dm
Original file line number Diff line number Diff line change
Expand Up @@ -1724,9 +1724,11 @@
/datum/sprite_accessory/lizard_markings
icon = 'icons/mob/human/species/lizard/lizard_markings.dmi'

/datum/sprite_accessory/lizard_markings/none
/// DOPPLER SHIFT REMOVAL BEGIN
/*/datum/sprite_accessory/lizard_markings/none
name = "None"
icon_state = "none"
icon_state = "none"*/
/// DOPPLER SHIFT REMOVAL END

/datum/sprite_accessory/lizard_markings/dtiger
name = "Dark Tiger Body"
Expand All @@ -1752,10 +1754,12 @@
icon = 'icons/mob/human/species/lizard/lizard_tails.dmi'
spine_key = SPINE_KEY_LIZARD

/datum/sprite_accessory/tails/lizard/none
/// DOPPLER SHIFT REMOVAL BEGIN
/*/datum/sprite_accessory/tails/lizard/none
name = SPRITE_ACCESSORY_NONE
icon_state = "none"
natural_spawn = FALSE
natural_spawn = FALSE*/
/// DOPPLER SHIFT REMOVAL END

/datum/sprite_accessory/tails/lizard/smooth
name = "Smooth"
Expand Down
35 changes: 35 additions & 0 deletions code/modules/client/preferences.dm
Original file line number Diff line number Diff line change
Expand Up @@ -267,6 +267,41 @@ GLOBAL_LIST_EMPTY(preferences_datums)
return FALSE

return TRUE
/// DOPPLER SHIFT ADDITION BEGIN
if ("set_tricolor_preference")
var/requested_preference_key = params["preference"]
var/index_key = params["value"]

var/datum/preference/requested_preference = GLOB.preference_entries_by_key[requested_preference_key]
if (isnull(requested_preference))
return FALSE

if (!istype(requested_preference, /datum/preference/tri_color))
return FALSE

var/default_value_list = read_preference(requested_preference.type)
if (!islist(default_value_list))
return FALSE
var/default_value = default_value_list[index_key]

// Yielding
var/new_color = input(
usr,
"Select new color",
null,
default_value || COLOR_WHITE,
) as color | null

if (!new_color)
return FALSE

default_value_list[index_key] = new_color

if (!update_preference(requested_preference, default_value_list))
return FALSE

return TRUE
/// DOPPLER SHIFT ADDITION END

for (var/datum/preference_middleware/preference_middleware as anything in middleware)
var/delegation = preference_middleware.action_delegations[action]
Expand Down
34 changes: 29 additions & 5 deletions code/modules/client/preferences/species_features/lizard.dm
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,22 @@

if (!isnull(sprite_accessory))
var/icon/accessory_icon = icon(sprite_accessory.icon, "m_[key]_[sprite_accessory.icon_state]_ADJ", EAST)
/// DOPPLER SHIFT ADDITION BEGIN
accessory_icon.Blend(COLOR_RED, ICON_MULTIPLY)
var/icon/accessory_icon_2 = icon(sprite_accessory.icon, "m_[key]_[sprite_accessory.icon_state]_ADJ_2", EAST)
accessory_icon_2.Blend(COLOR_VIBRANT_LIME, ICON_MULTIPLY)
var/icon/accessory_icon_3 = icon(sprite_accessory.icon, "m_[key]_[sprite_accessory.icon_state]_ADJ_3", EAST)
accessory_icon_3.Blend(COLOR_BLUE, ICON_MULTIPLY)
/// DOPPLER SHIFT ADDITION END
final_icon.Blend(accessory_icon, ICON_OVERLAY)
/// DOPPLER SHIFT ADDITION BEGIN
final_icon.Blend(accessory_icon_2, ICON_OVERLAY)
final_icon.Blend(accessory_icon_3, ICON_OVERLAY)
/// DOPPLER SHIFT ADDITION END

final_icon.Crop(11, 20, 23, 32)
final_icon.Scale(32, 32)
final_icon.Blend(COLOR_VIBRANT_LIME, ICON_MULTIPLY)
//final_icon.Blend(COLOR_VIBRANT_LIME, ICON_MULTIPLY) /// DOPPLER SHIFT REMOVAL

return final_icon

Expand All @@ -40,14 +51,27 @@
var/icon/final_icon = icon('icons/mob/human/species/lizard/bodyparts.dmi', "lizard_chest_m")

if (sprite_accessory.icon_state != "none")
var/icon/body_markings_icon = icon(
/// DOPPLER SHIFT REMOVAL BEGIN
/*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)

final_icon.Blend(COLOR_VIBRANT_LIME, ICON_MULTIPLY)
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(COLOR_VIBRANT_LIME, ICON_MULTIPLY) /// DOPPLER SHIFT REMOVAL
final_icon.Crop(10, 8, 22, 23)
final_icon.Scale(26, 32)
final_icon.Crop(-2, 1, 29, 32)
Expand Down
7 changes: 7 additions & 0 deletions code/modules/surgery/organs/external/tails.dm
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,13 @@
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
11 changes: 8 additions & 3 deletions code/modules/surgery/organs/internal/eyes/_eyes.dm
Original file line number Diff line number Diff line change
Expand Up @@ -129,15 +129,20 @@
if(isnull(eye_icon_state))
return list()

var/mutable_appearance/eye_left = mutable_appearance('icons/mob/human/human_face.dmi', "[eye_icon_state]_l", -BODY_LAYER)
var/mutable_appearance/eye_right = mutable_appearance('icons/mob/human/human_face.dmi', "[eye_icon_state]_r", -BODY_LAYER)
/// DOPPLER SHIFT ADDITION BEGIN
var/obj/item/bodypart/head/my_head = parent.get_bodypart(BODY_ZONE_HEAD)
var/eye_icon = my_head?.eyes_icon || 'icons/mob/human/human_face.dmi'
/// DOPPLER SHIFT ADDITION END

var/mutable_appearance/eye_left = mutable_appearance(eye_icon, "[eye_icon_state]_l", -BODY_LAYER) /// DOPPLER SHIFT EDIT: using eye_icon instead of human_face.dmi
var/mutable_appearance/eye_right = mutable_appearance(eye_icon, "[eye_icon_state]_r", -BODY_LAYER) /// DOPPLER SHIFT EDIT: using eye_icon instead of human_face.dmi
var/list/overlays = list(eye_left, eye_right)

var/obscured = parent.check_obscured_slots(TRUE)
if(overlay_ignore_lighting && !(obscured & ITEM_SLOT_EYES))
overlays += emissive_appearance(eye_left.icon, eye_left.icon_state, parent, -BODY_LAYER, alpha = eye_left.alpha)
overlays += emissive_appearance(eye_right.icon, eye_right.icon_state, parent, -BODY_LAYER, alpha = eye_right.alpha)
var/obj/item/bodypart/head/my_head = parent.get_bodypart(BODY_ZONE_HEAD)
//var/obj/item/bodypart/head/my_head = parent.get_bodypart(BODY_ZONE_HEAD) /// DOPPLER SHIFT REMOVAL
if(my_head)
if(my_head.head_flags & HEAD_EYECOLOR)
eye_right.color = eye_color_right
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
26 changes: 26 additions & 0 deletions code/~doppler_earliest_defines.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
/// Hi! This file is here to work around some order-of-operations issues consistent humans & a couple other things have.
/// If our overrides aren't loaded in early enough default TG stuff will end up in the critical [1] slot and break things.
/datum/sprite_accessory/lizard_markings/none
icon = 'modular_doppler/customization/icons/fallbacks.dmi'
name = "No Markings"
icon_state = "none"

/datum/sprite_accessory/snouts/none
icon = 'modular_doppler/customization/icons/fallbacks.dmi'
name = "No Snout"
icon_state = "none"

/datum/sprite_accessory/frills/none
icon = 'modular_doppler/customization/icons/fallbacks.dmi'
name = "No Frills"
icon_state = "none"

/datum/sprite_accessory/horns/none
icon = 'modular_doppler/customization/icons/fallbacks.dmi'
name = "No Horns"
icon_state = "none"

/datum/sprite_accessory/tails/lizard/none
icon = 'modular_doppler/customization/icons/fallbacks.dmi'
name = "No Tail"
icon_state = "none"
1 change: 1 addition & 0 deletions config/game_options.txt
Original file line number Diff line number Diff line change
Expand Up @@ -364,6 +364,7 @@ ROUNDSTART_RACES lizard
ROUNDSTART_RACES moth
ROUNDSTART_RACES plasmaman
#ROUNDSTART_RACES shadow
ROUNDSTART_RACES slugcat

## Races that are better than humans in some ways, but worse in others
ROUNDSTART_RACES ethereal
Expand Down
3 changes: 3 additions & 0 deletions modular_doppler/customization/code/accessory_overrides.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
/datum/bodypart_overlay/mutant
/// Annoying annoying annoyed annoyance - this is to avoid a massive headache trying to work around tails
var/feature_key_sprite = null
Loading

0 comments on commit 2aaf357

Please sign in to comment.