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

A bunch of features for various Animalistic trait types #188

Merged
merged 8 commits into from
Oct 23, 2024
Merged
Show file tree
Hide file tree
Changes from 3 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
4 changes: 2 additions & 2 deletions code/__DEFINES/~doppler_defines/is_helpers.dm
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
//Species
#define isprimitive(A) (is_species(A, /datum/species/genemod/primitive))
#define isprimitive(A) (is_species(A, /datum/species/human/genemod/primitive))
//Customization bases
#define isinsectoid(A) (is_species(A, /datum/species/insectoid))
#define issnail(A) (is_species(A, /datum/species/snail))
#define ishemophage(A) (is_species(A, /datum/species/genemod/hemophage))
#define ishemophage(A) (is_species(A, /datum/species/human/genemod/hemophage))
#define isramatan(A) (is_species(A, /datum/species/ramatan))
//Species blood colors
#define hasgreenblood(A) (isinsectoid(A) || issnail(A) || isflyperson(A) || isalien(A) || HAS_TRAIT(A, TRAIT_GREEN_BLOOD))
Expand Down
2 changes: 1 addition & 1 deletion code/__DEFINES/~doppler_defines/mutant_blacklists.dm
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@ GLOBAL_LIST_INIT(species_blacklist_no_mutant, list(

GLOBAL_LIST_INIT(species_blacklist_no_humanoid, list(
/datum/species/golem,
/datum/species/genemod/primitive,
/datum/species/human/genemod/primitive,
))
27 changes: 15 additions & 12 deletions code/__DEFINES/~doppler_defines/mutant_variations.dm
Original file line number Diff line number Diff line change
@@ -1,27 +1,30 @@
/// The defines of each animal type who have their respective organ and list of sprite accessories beholding to them
// The string has to much the type name of the organ they represent, i.e. /obj/item/organ/external/tail/dog
#define NO_VARIATION "none"
#define ALIEN "alien"
#define BIRD "bird"
#define BUG "bug"
#define BUNNY "bunny"
#define CAT "cat"
#define CYBERNETIC "cybernetic"
#define DEER "deer"
#define DOG "dog"
#define FISH "fish"
#define FOX "fox"
#define FROG "frog"
#define HUMANOID "humanoid"
#define LIZARD "lizard"
#define BUNNY "bunny"
#define BIRD "bird"
#define MOUSE "mouse"
#define FISH "fish"
#define MONKEY "monkey"
#define DEER "deer"
#define BUG "bug"
#define CYBERNETIC "cybernetic"
#define HUMANOID "humanoid"
#define ALIEN "alien"
#define MOUSE "mouse"

/// This list gets read by the dropdown pref when a player chooses what type of sprite accessory to access
GLOBAL_LIST_INIT(mutant_variations, list(
ALIEN,
BIRD,
BUG,
BUNNY,
CAT,
CYBERNETIC,
DEER,
DOG,
FISH,
Expand All @@ -30,21 +33,21 @@ GLOBAL_LIST_INIT(mutant_variations, list(
LIZARD,
MONKEY,
MOUSE,
CYBERNETIC,
ALIEN,
))

/// This list gets read by the animalistic preference for genemod and anthros
GLOBAL_LIST_INIT(genemod_variations, list(
NO_VARIATION,
BIRD,
BUG,
BUNNY,
CAT,
DEER,
DOG,
FISH,
FOX,
FROG,
LIZARD,
MONKEY,
MOUSE,
NO_VARIATION,
))
Original file line number Diff line number Diff line change
Expand Up @@ -240,7 +240,7 @@
gills = new()
AddElement(/datum/element/noticable_organ, "%PRONOUN_Theyve a set of gills on %PRONOUN_their neck.", BODY_ZONE_PRECISE_MOUTH)
AddComponent(/datum/component/bubble_icon_override, "fish", BUBBLE_ICON_PRIORITY_ORGAN)
AddComponent(/datum/component/speechmod, replacements = strings("crustacean_replacement.json", "crustacean"))
// AddComponent(/datum/component/speechmod, replacements = strings("crustacean_replacement.json", "crustacean")) // DOPPLER EDIT REMOVAL - really funny i wish we could keep this

/obj/item/organ/internal/lungs/fish/Destroy()
QDEL_NULL(gills)
Expand Down
1 change: 1 addition & 0 deletions code/modules/research/techweb/nodes/medbay_nodes.dm
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@
"plumbing_rcd_service",
"plunger",
"fluid_ducts",
"vaporizer", // DOPPLER ADDITION
)
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_1_POINTS)
announce_channels = list(RADIO_CHANNEL_MEDICAL)
Expand Down
8 changes: 4 additions & 4 deletions modular_doppler/hearthkin/primitive_genemod/code/objects.dm
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
var/being_used = FALSE

/obj/item/anointing_oil/attack(mob/living/target_mob, mob/living/user, params)
if (!is_species(user, /datum/species/genemod/primitive))
if (!is_species(user, /datum/species/human/genemod/primitive))
to_chat(user, span_warning("You have no idea what this disgusting concoction is used for."))
return
if(being_used || !ismob(target_mob)) //originally this was going to check if the mob was friendly, but if an icecat wants to name some terror mob while it's tearing chunks out of them, why not?
Expand Down Expand Up @@ -48,7 +48,7 @@

/obj/item/anointing_oil/examine(mob/user)
. = ..()
if(is_species(user, /datum/species/genemod/primitive))
if(is_species(user, /datum/species/human/genemod/primitive))
. += span_info("Using this on the local wildlife will allow you to give them a name.")

/datum/crafting_recipe/anointing_oil
Expand All @@ -74,7 +74,7 @@
w_class = WEIGHT_CLASS_TINY

/obj/item/frozen_breath/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers)
if (!is_species(user, /datum/species/genemod/primitive))
if (!is_species(user, /datum/species/human/genemod/primitive))
to_chat(user, span_warning("You have no idea how to use this freezing concoction."))
return

Expand All @@ -94,7 +94,7 @@

/obj/item/frozen_breath/examine(mob/user)
. = ..()
if(is_species(user, /datum/species/genemod/primitive))
if(is_species(user, /datum/species/human/genemod/primitive))
. += span_info("Using this on a pair of organic lungs transforms them into hardy lungs. This will remove any other special features from the old lungs, if there were any.")

/datum/crafting_recipe/frozen_breath
Expand Down
4 changes: 2 additions & 2 deletions modular_doppler/hearthkin/primitive_genemod/code/spawner.dm
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
prompt_name = "icemoon dweller"
icon = 'icons/mob/simple/lavaland/nest.dmi'
icon_state = "hole"
mob_species = /datum/species/genemod/primitive
mob_species = /datum/species/human/genemod/primitive
outfit = /datum/outfit/primitive_genemod
density = FALSE
you_are_text = "You are an icemoon dweller."
Expand All @@ -20,7 +20,7 @@
/// The team the spawner will assign players to and use to keep track of people that have already used the spawner
var/datum/team/primitive_genemods/team

restricted_species = list(/datum/species/genemod/primitive)
restricted_species = list(/datum/species/human/genemod/primitive)
infinite_use = TRUE
deletes_on_zero_uses_left = FALSE

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
/datum/loadout_item/accessory/wetmaker
name = "Stardress hydro-vaporizer"
item_path = /obj/item/clothing/accessory/vaporizer
additional_displayed_text = list("A must-have for water-breathers!")
66 changes: 66 additions & 0 deletions modular_doppler/modular_cosmetics/code/accessories/accessories.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@

// Accessory for Akula species, it makes them wet and happy! :)
/obj/item/clothing/accessory/vaporizer
name = "\improper Stardress hydro-vaporizer"
desc = "An expensive device manufactured for the civilian work-force of the Azulean military power. \
Relying on an internal battery, the coil mechanism synthesizes a hydrogen oxygen mixture, \
which can then be used to moisturize the wearer's skin. \n\n\
<i>A label on its back warns about the potential dangers of electro-magnetic pulses.</i> \
<b>ctrl-click</b> in-hand to hide the device while worn."
icon_state = "wetmaker"
base_icon_state = "wetmaker"
icon = 'modular_doppler/modular_cosmetics/icons/obj/accessories/accessories.dmi'
worn_icon = 'modular_doppler/modular_cosmetics/icons/mob/accessories/accessories.dmi'
obj_flags = UNIQUE_RENAME
attachment_slot = NONE

/obj/item/clothing/accessory/vaporizer/Initialize(mapload)
. = ..()
AddComponent(/datum/component/wetsuit)

/obj/item/clothing/accessory/vaporizer/item_ctrl_click(mob/user)
. = ..()
if(!ishuman(user))
return CLICK_ACTION_BLOCKING
var/mob/living/carbon/human/wearer = user
if(wearer.get_active_held_item() != src)
to_chat(wearer, span_warning("You must hold the [src] in your hand to do this!"))
return CLICK_ACTION_BLOCKING
if(icon_state == "[base_icon_state]")
icon_state = "[base_icon_state]_hidden"
worn_icon_state = "[base_icon_state]_hidden"
balloon_alert(wearer, "hidden")
else
icon_state = "[base_icon_state]"
worn_icon_state = "[base_icon_state]"
balloon_alert(wearer, "shown")
update_icon() // update that mf
return CLICK_ACTION_SUCCESS

/obj/item/clothing/accessory/vaporizer/emp_act(severity)
. = ..()
var/obj/item/clothing/under/attached_to = loc
var/mob/living/carbon/human/wearer = attached_to.loc
if(!istype(wearer) || !istype(attached_to))
return
var/turf/open/tile = get_turf(wearer)
if(istype(tile))
tile.atmos_spawn_air("[GAS_WATER_VAPOR]=50;[TURF_TEMPERATURE(1000)]")
wearer.balloon_alert(wearer, "overloaded!")
wearer.visible_message("<span class='danger'>[wearer] [wearer.p_their()] [src] overloads, exploding in a cloud of hot steam!</span>")
wearer.set_jitter_if_lower(10 SECONDS)
playsound(wearer, 'sound/effects/spray.ogg', 80)
detach(attached_to) // safely remove wetsuit status effect
qdel(src)

/datum/design/vaporizer
name = "Hydro-Vaporizer"
id = "vaporizer"
build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE
materials = list(/datum/material/gold = SMALL_MATERIAL_AMOUNT*2.5, /datum/material/silver =SMALL_MATERIAL_AMOUNT*5)
build_path = /obj/item/clothing/accessory/vaporizer
category = list(
RND_CATEGORY_INITIAL,
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL,
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SERVICE
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
. = ..()
/// Weirdness Check Zone
if(randomize_features)
if(istype(species, /datum/species/genemod))
if(istype(species, /datum/species/human/genemod))
var/skin_tone = pick(GLOB.skin_tones)
features["mcolor"] = skintone2hex(skin_tone) //spoof
if(species.id != /datum/species/human/felinid::id)
Expand Down
48 changes: 45 additions & 3 deletions modular_doppler/modular_customization/organs/internal/tongue.dm
Original file line number Diff line number Diff line change
@@ -1,9 +1,48 @@
/// Bug tongue
//
/obj/item/organ/internal/tongue/bug
name = "bug tongue"
desc = "A fleshy muscle mostly used for chittering."
icon = 'icons/obj/medical/organs/fly_organs.dmi'
say_mod = "buzzes"
say_mod = "chitters"

/// Cat tongue
//
/obj/item/organ/internal/tongue/cat/Insert(mob/living/carbon/signer, special = FALSE, movement_flags = DELETE_IF_REPLACED)
. = ..()
signer.verb_ask = "mrrps"
signer.verb_exclaim = "mrrowls"
signer.verb_whisper = "purrs"
signer.verb_yell = "yowls"

/obj/item/organ/internal/tongue/cat/Remove(mob/living/carbon/speaker, special = FALSE)
. = ..()
speaker.verb_ask = initial(verb_ask)
speaker.verb_exclaim = initial(verb_exclaim)
speaker.verb_whisper = initial(verb_whisper)
speaker.verb_yell = initial(verb_yell)

/// Dog tongue
//
/obj/item/organ/internal/tongue/dog
name = "dog tongue"
desc = "A fleshy muscle mostly used for barking."
say_mod = "barks"
say_mod = "woofs"

/obj/item/organ/internal/tongue/dog/Insert(mob/living/carbon/signer, special = FALSE, movement_flags = DELETE_IF_REPLACED)
. = ..()
signer.verb_ask = "arfs"
signer.verb_exclaim = "wans"
signer.verb_whisper = "whimpers"
signer.verb_yell = "barks"

/obj/item/organ/internal/tongue/dog/Remove(mob/living/carbon/speaker, special = FALSE)
. = ..()
speaker.verb_ask = initial(verb_ask)
speaker.verb_exclaim = initial(verb_exclaim)
speaker.verb_whisper = initial(verb_whisper)
speaker.verb_yell = initial(verb_yell)

/// Bird tongue
//
Expand Down Expand Up @@ -40,6 +79,9 @@
desc = "A fleshy muscle mostly used for gnashing."
say_mod = "gnashes"

/// Monkey tongue
/// Frog tongue
//
/obj/item/organ/internal/tongue/monkey
/obj/item/organ/internal/tongue/frog
name = "fish tongue"
carpotoxin marked this conversation as resolved.
Show resolved Hide resolved
desc = "A fleshy muscle mostly used for ribbiting."
say_mod = "ribbits"
Original file line number Diff line number Diff line change
Expand Up @@ -17,22 +17,26 @@
return icon('icons/mob/simple/animal.dmi', "chicken_brown", EAST)
if(BUNNY)
return icon('icons/mob/simple/rabbit.dmi', "rabbit_white", WEST)
if(BUG)
return icon('icons/mob/simple/animal.dmi', "cockroach", EAST)
if(CAT)
return icon('icons/mob/simple/pets.dmi', "cat2", EAST)
return icon('icons/mob/simple/pets.dmi', "cat2", WEST)
if(DEER)
return icon('icons/mob/simple/animal.dmi', "deer-doe", WEST)
return icon('icons/mob/simple/animal.dmi', "deer-doe", EAST)
if(DOG)
return icon('icons/mob/simple/pets.dmi', "corgi", EAST)
return icon('icons/mob/simple/pets.dmi', "corgi", WEST)
if(FISH)
return icon('icons/mob/simple/carp.dmi', "carp", WEST)
return icon('icons/mob/simple/carp.dmi', "carp", EAST)
if(FOX)
return icon('icons/mob/simple/pets.dmi', "fox", EAST)
return icon('icons/mob/simple/pets.dmi', "fox", WEST)
if(FROG)
return icon('icons/mob/simple/animal.dmi', "frog", EAST)
if(LIZARD)
return icon('icons/mob/simple/animal.dmi', "lizard", EAST)
return icon('icons/mob/simple/animal.dmi', "lizard", WEST)
if(MONKEY)
return icon('icons/mob/human/human.dmi', "monkey", WEST)
return icon('icons/mob/human/human.dmi', "monkey", EAST)
if(MOUSE)
return icon('icons/mob/simple/animal.dmi', "mouse_white", EAST)
return icon('icons/mob/simple/animal.dmi', "mouse_white", WEST)
else
return icon('icons/effects/crayondecal.dmi', "x")

Expand Down
24 changes: 24 additions & 0 deletions modular_doppler/modular_quirks/nitrogen_breather/accessories.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
/obj/item/clothing/accessory/breathing
name = "breathing dogtag"
desc = "Dogtag that lists what you breathe."
icon_state = "allergy"
above_suit = FALSE
minimize_when_attached = TRUE
attachment_slot = CHEST
var/breath_type

/obj/item/clothing/accessory/breathing/examine(mob/user)
. = ..()
. += "The dogtag reads: I breathe [breath_type]."

/obj/item/clothing/accessory/breathing/accessory_equipped(obj/item/clothing/under/uniform, user)
. = ..()
RegisterSignal(uniform, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine))

/obj/item/clothing/accessory/breathing/accessory_dropped(obj/item/clothing/under/uniform, user)
. = ..()
UnregisterSignal(uniform, COMSIG_ATOM_EXAMINE)

/obj/item/clothing/accessory/breathing/proc/on_examine(datum/source, mob/user, list/examine_list)
SIGNAL_HANDLER
examine_list += "The dogtag reads: I breathe [breath_type]."
Loading
Loading