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 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
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,
))
8 changes: 4 additions & 4 deletions code/game/machinery/dna_infuser/organ_sets/fish_organs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -224,7 +224,7 @@

safe_oxygen_min = 0 //We don't breathe this
///The required partial pressure of water_vapor for not suffocating.
var/safe_water_level = parent_type::safe_oxygen_min
// var/safe_water_level = parent_type::safe_oxygen_min // DOPPLER EDIT REMOVAL - moved to parent type

/// Bodypart overlay applied to the chest where the lungs are in
var/datum/bodypart_overlay/simple/gills/gills
Expand All @@ -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 All @@ -261,7 +261,7 @@
owner.clear_alert(ALERT_NOT_ENOUGH_WATER)

/// Requires the spaceman to have either water vapor or be wet.
/obj/item/organ/internal/lungs/fish/proc/breathe_water(mob/living/carbon/breather, datum/gas_mixture/breath, water_pp, old_water_pp)
/obj/item/organ/internal/lungs/proc/breathe_water(mob/living/carbon/breather, datum/gas_mixture/breath, water_pp, old_water_pp) // DOPPLER EDIT, old code: /obj/item/organ/internal/lungs/fish/proc/breathe_water(mob/living/carbon/breather, datum/gas_mixture/breath, water_pp, old_water_pp)
var/need_to_breathe = !HAS_TRAIT(src, TRAIT_SPACEBREATHING) && !HAS_TRAIT(breather, TRAIT_IS_WET)
if(water_pp < safe_water_level && need_to_breathe)
on_low_water(breather, breath, water_pp)
Expand All @@ -278,7 +278,7 @@
breather.adjustOxyLoss(-5)

/// Called when there isn't enough water to breath
/obj/item/organ/internal/lungs/fish/proc/on_low_water(mob/living/carbon/breather, datum/gas_mixture/breath, water_pp)
/obj/item/organ/internal/lungs/proc/on_low_water(mob/living/carbon/breather, datum/gas_mixture/breath, water_pp) // DOPPLER EDIT, old code: /obj/item/organ/internal/lungs/fish/proc/on_low_water(mob/living/carbon/breather, datum/gas_mixture/breath, water_pp)
breather.throw_alert(ALERT_NOT_ENOUGH_WATER, /atom/movable/screen/alert/not_enough_water)
var/gas_breathed = handle_suffocation(breather, water_pp, safe_water_level, breath.gases[/datum/gas/water_vapor][MOLES])
if(water_pp)
Expand Down
2 changes: 1 addition & 1 deletion code/modules/mob/living/brain/brain_item.dm
Original file line number Diff line number Diff line change
Expand Up @@ -472,7 +472,7 @@
/obj/item/organ/internal/brain/lizard //A bit smaller than average
name = "lizard brain"
desc = "This juicy piece of meat has a oversized brain stem and cerebellum, with not much of a limbic system to speak of at all. You would expect it's owner to be pretty cold blooded."
organ_traits = list(TRAIT_TACKLING_TAILED_DEFENDER)
// organ_traits = list(TRAIT_TACKLING_TAILED_DEFENDER) // DOPPLER EDIT REMOVAL

/obj/item/organ/internal/brain/abductor
name = "grey brain"
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
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
should_draw_greyscale = FALSE
head_flags = HEAD_LIPS|HEAD_EYESPRITES|HEAD_EYEHOLES|HEAD_DEBRAIN //what the fuck, moths have lips?
teeth_count = 0
bodypart_traits = list(TRAIT_ANTENNAE)
// bodypart_traits = list(TRAIT_ANTENNAE) // DOPPLER EDIT REMOVAL

/obj/item/bodypart/chest/moth
icon = 'icons/mob/human/species/moth/bodyparts.dmi'
Expand All @@ -17,7 +17,7 @@
is_dimorphic = TRUE
should_draw_greyscale = FALSE
wing_types = list(/obj/item/organ/external/wings/functional/moth/megamoth, /obj/item/organ/external/wings/functional/moth/mothra)
bodypart_traits = list(TRAIT_TACKLING_WINGED_ATTACKER)
// bodypart_traits = list(TRAIT_TACKLING_WINGED_ATTACKER) // DOPPLER EDIT REMOVAL

/obj/item/bodypart/chest/moth/get_butt_sprite()
return icon('icons/mob/butts.dmi', BUTT_SPRITE_FUZZY)
Expand Down
1 change: 1 addition & 0 deletions code/modules/surgery/organs/external/_visual_organs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,7 @@ Unlike normal organs, we're actually inside a persons limbs at all times
preference = "feature_moth_antennae"
dna_block = DNA_MOTH_ANTENNAE_BLOCK
restyle_flags = EXTERNAL_RESTYLE_FLESH
organ_traits = list(TRAIT_ANTENNAE) // DOPPLER EDIT ADDITION

bodypart_overlay = /datum/bodypart_overlay/mutant/antennae

Expand Down
1 change: 1 addition & 0 deletions code/modules/surgery/organs/external/tails.dm
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

dna_block = DNA_TAIL_BLOCK
restyle_flags = EXTERNAL_RESTYLE_FLESH
organ_traits = list(TRAIT_TACKLING_TAILED_DEFENDER) // DOPPLER EDIT ADDITION

// defaults to cat, but the parent type shouldn't be created regardless
bodypart_overlay = /datum/bodypart_overlay/mutant/tail/cat
Expand Down
1 change: 1 addition & 0 deletions code/modules/surgery/organs/external/wings/wings.dm
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
zone = BODY_ZONE_CHEST
slot = ORGAN_SLOT_EXTERNAL_WINGS

organ_traits = list(TRAIT_TACKLING_WINGED_ATTACKER) // DOPPLER EDIT ADDITION
use_mob_sprite_as_obj_sprite = TRUE
bodypart_overlay = /datum/bodypart_overlay/mutant/wings

Expand Down
3 changes: 3 additions & 0 deletions code/modules/surgery/organs/internal/lungs/_lungs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,9 @@
//These thresholds are checked against what amounts to total_mix_pressure * (gas_type_mols/total_mols)
var/safe_oxygen_min = 16 // Minimum safe partial pressure of O2, in kPa
var/safe_oxygen_max = 0
// DOPPLER ADDITION START
var/safe_water_level = 16
// DOPPLER ADDITION END
var/safe_nitro_min = 0
var/safe_co2_max = 10 // Yes it's an arbitrary value who cares?
var/safe_plasma_min = 0
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!")
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
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,7 @@
//
/obj/item/organ/external/tail/fish
preference = "feature_fish_tail"
organ_traits = list(TRAIT_TACKLING_TAILED_DEFENDER, TRAIT_FLOPPING)

/// Cybernetic tail
//
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@
/obj/item/organ/internal/ears/bug
preference = "feature_bug_ears"
bodypart_overlay = /datum/bodypart_overlay/mutant/ears/bug_ears
organ_traits = list(TRAIT_ANTENNAE)

/datum/bodypart_overlay/mutant/ears/bug_ears/get_global_feature_list()
return SSaccessories.ears_list_bug
Expand Down
47 changes: 44 additions & 3 deletions modular_doppler/modular_customization/organs/internal/tongue.dm
Original file line number Diff line number Diff line change
@@ -1,9 +1,47 @@
/// 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 = "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, movement_flags)
. = ..()
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, movement_flags)
. = ..()
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 +78,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 = "frog tongue"
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
Loading
Loading