diff --git a/code/__DEFINES/DNA.dm b/code/__DEFINES/DNA.dm index 3e7154b8e1fa..759ff992d075 100644 --- a/code/__DEFINES/DNA.dm +++ b/code/__DEFINES/DNA.dm @@ -140,6 +140,7 @@ #define ORGAN_SLOT_EXTERNAL_ANIME_HEAD "anime_head" #define ORGAN_SLOT_EXTERNAL_ANIME_CHEST "anime_chest" #define ORGAN_SLOT_EXTERNAL_ANIME_BOTTOM "anime_bottom" +#define ORGAN_SLOT_EXTERNAL_FLORAN_LEAVES "floran_leaves" /// Xenomorph organ slots #define ORGAN_SLOT_XENO_ACIDGLAND "acid_gland" diff --git a/code/__DEFINES/external_organs.dm b/code/__DEFINES/external_organs.dm index 766feb141491..ce71b0913d8a 100644 --- a/code/__DEFINES/external_organs.dm +++ b/code/__DEFINES/external_organs.dm @@ -6,6 +6,9 @@ #define ORGAN_COLOR_HAIR (1<<2) ///uses the parents anime color #define ORGAN_COLOR_ANIME (1<<3) +///uses the parents mutcolor secondary +#define ORGAN_COLOR_MUTSECONDARY (1<<4) + ///Tail wagging #define WAG_ABLE (1<<0) #define WAG_WAGGING (1<<1) diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index 87bf13cca894..37611368f8b1 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -81,7 +81,7 @@ GLOBAL_LIST_INIT(turfs_openspace, typecacheof(list( #define isgolem(A) (is_species(A, /datum/species/golem)) #define islizard(A) (is_species(A, /datum/species/lizard)) #define isplasmaman(A) (is_species(A, /datum/species/plasmaman)) -#define issimian(A) (is_species(A, /datum/species/simian)) +#define issimian(A) (is_species(A, /datum/species/simian)) //Monkestation Addition #define ispodperson(A) (is_species(A, /datum/species/pod)) #define isflyperson(A) (is_species(A, /datum/species/fly)) #define isjellyperson(A) (is_species(A, /datum/species/jelly)) @@ -97,7 +97,8 @@ GLOBAL_LIST_INIT(turfs_openspace, typecacheof(list( #define isandroid(A) (is_species(A, /datum/species/android)) #define isnightmare(A) (is_species(A, /datum/species/shadow/nightmare)) #define isipc(A) (is_species(A, /datum/species/ipc)) -#define isgoblin(A) (is_species(A, /datum/species/goblin))//monkestation addition +#define isgoblin(A) (is_species(A, /datum/species/goblin)) //Monkestation Addition +#define isfloran(A) (is_species(A, /datum/species/floran)) //Monkestation Addition //More carbon mobs diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index dbf3a02c5286..f4dc7d7b6106 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -128,8 +128,9 @@ #define SPECIES_ZOMBIE_KROKODIL "krokodil_zombie" #define SPECIES_OOZELING "oozeling" #define SPECIES_IPC "ipc" -#define SPECIES_SIMIAN "simian" -#define SPECIES_GOBLIN "goblin"//monkestation addition +#define SPECIES_SIMIAN "simian" //Monkestation Addition +#define SPECIES_GOBLIN "goblin" //Monkestation Addition +#define SPECIES_FLORAN "floran" //Monkestation Addition // Like species IDs, but not specifically attached a species. #define BODYPART_ID_ALIEN "alien" #define BODYPART_ID_ROBOTIC "robotic" diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm index 6eb8fe60fb93..b7d8de1bc404 100644 --- a/code/__HELPERS/global_lists.dm +++ b/code/__HELPERS/global_lists.dm @@ -44,6 +44,7 @@ init_sprite_accessory_subtypes(/datum/sprite_accessory/arachnid_appendages, GLOB.arachnid_appendages_list) //Monkestation Addition init_sprite_accessory_subtypes(/datum/sprite_accessory/arachnid_chelicerae, GLOB.arachnid_chelicerae_list) //Monkestation Addition init_sprite_accessory_subtypes(/datum/sprite_accessory/goblin_ears, GLOB.goblin_ears_list) //Monkestation Addition + init_sprite_accessory_subtypes(/datum/sprite_accessory/floran_leaves, GLOB.floran_leaves_list) //Monkestation Addition //Species for(var/spath in subtypesof(/datum/species)) diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index fa28f3c40cfb..e8f8d96b9a41 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -110,6 +110,8 @@ init_sprite_accessory_subtypes(/datum/sprite_accessory/arachnid_chelicerae, GLOB.arachnid_chelicerae_list) if(!GLOB.goblin_ears_list.len) init_sprite_accessory_subtypes(/datum/sprite_accessory/goblin_ears, GLOB.goblin_ears_list) + if(!GLOB.floran_leaves_list.len) + init_sprite_accessory_subtypes(/datum/sprite_accessory/floran_leaves, GLOB.floran_leaves_list) //Monkestation Addition End //For now we will always return none for tail_human and ears. | "For now" he says. @@ -142,7 +144,8 @@ "arachnid_appendages" = pick(GLOB.arachnid_appendages_list), //Monkestation Addition "arachnid_chelicerae" = pick(GLOB.arachnid_chelicerae_list), //Monkestation Addition "animecolor" = "#[pick("7F","FF")][pick("7F","FF")][pick("7F","FF")]", //Monkestation Addition - "goblin_ears" = pick(GLOB.goblin_ears_list) //Monkestation Addition + "goblin_ears" = pick(GLOB.goblin_ears_list), //Monkestation Addition + "floran_leaves" = pick(GLOB.floran_leaves_list), //Monkestation Addition )) /proc/random_hairstyle(gender) diff --git a/code/_globalvars/lists/flavor_misc.dm b/code/_globalvars/lists/flavor_misc.dm index 15e107a01d2f..015f8926734b 100644 --- a/code/_globalvars/lists/flavor_misc.dm +++ b/code/_globalvars/lists/flavor_misc.dm @@ -50,6 +50,7 @@ GLOBAL_LIST_EMPTY(anime_bottom_list) //Monkestation Addition GLOBAL_LIST_EMPTY(arachnid_appendages_list) //Monkestation Addition GLOBAL_LIST_EMPTY(arachnid_chelicerae_list) //Monkestation Addition GLOBAL_LIST_EMPTY(goblin_ears_list) //Monkestation Addition +GLOBAL_LIST_EMPTY(floran_leaves_list) //Monkestation Addition GLOBAL_LIST_INIT(color_list_ethereal, list( "Blue" = "#3399ff", @@ -58,6 +59,7 @@ GLOBAL_LIST_INIT(color_list_ethereal, list( "Cyan Blue" = "#00ffff", "Dark Blue" = "#6666ff", "Dark Fuschia" = "#cc0066", + "Dark Green" = "#37835b", "Dark Red" = "#9c3030", "Dull Yellow" = "#fbdf56", diff --git a/code/datums/bodypart_overlays/mutant_bodypart_overlay.dm b/code/datums/bodypart_overlays/mutant_bodypart_overlay.dm index 345356f85b36..16cc42756c1f 100644 --- a/code/datums/bodypart_overlays/mutant_bodypart_overlay.dm +++ b/code/datums/bodypart_overlays/mutant_bodypart_overlay.dm @@ -140,6 +140,11 @@ return var/mob/living/carbon/human/human_owner = ownerlimb.owner draw_color = human_owner.dna.features["animecolor"] + if(ORGAN_COLOR_MUTSECONDARY) + if(!ishuman(ownerlimb.owner)) + return + var/mob/living/carbon/human/human_owner = ownerlimb.owner + draw_color = human_owner.dna.features["mcolor_secondary"] return TRUE diff --git a/code/modules/mob/living/carbon/human/dummy.dm b/code/modules/mob/living/carbon/human/dummy.dm index 68b2694deca6..1949da4353c0 100644 --- a/code/modules/mob/living/carbon/human/dummy.dm +++ b/code/modules/mob/living/carbon/human/dummy.dm @@ -109,6 +109,7 @@ INITIALIZE_IMMEDIATE(/mob/living/carbon/human/dummy) target.dna.features["arachnid_appendages"] = "Long" //Monkestation Addition target.dna.features["arachnid_chelicerae"] = "Basic" //Monkestation Addition target.dna.features["goblin_ears"] = "Normal" //Monkestation Addition + target.dna.features["floran_leaves"] = "Furnivour" //Monkestation Addition /// Provides a dummy that is consistently bald, white, naked, etc. /mob/living/carbon/human/dummy/consistent diff --git a/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_floran.png b/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_floran.png new file mode 100644 index 000000000000..945f46a2153b Binary files /dev/null and b/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_floran.png differ diff --git a/config/game_options.txt b/config/game_options.txt index 94e6203385ca..68a8f1f1d132 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -355,6 +355,7 @@ ROUNDSTART_RACES arachnid ## Races that are better than humans in some ways, but worse in others ROUNDSTART_RACES ethereal ROUNDSTART_RACES goblin +ROUNDSTART_RACES floran #ROUNDSTART_RACES jelly #ROUNDSTART_RACES abductor #ROUNDSTART_RACES synth diff --git a/icons/mob/species/human/human_face.dmi b/icons/mob/species/human/human_face.dmi index ab6c4ad22f2f..02960bb8859f 100644 Binary files a/icons/mob/species/human/human_face.dmi and b/icons/mob/species/human/human_face.dmi differ diff --git a/monkestation/code/modules/client/preferences/species_features/floran.dm b/monkestation/code/modules/client/preferences/species_features/floran.dm new file mode 100644 index 000000000000..41f85e09b18e --- /dev/null +++ b/monkestation/code/modules/client/preferences/species_features/floran.dm @@ -0,0 +1,16 @@ +/datum/preference/choiced/floran_leaves + savefile_key = "feature_floran_leaves" + savefile_identifier = PREFERENCE_CHARACTER + category = PREFERENCE_CATEGORY_FEATURES + main_feature_name = "Floran Leaves" + should_generate_icons = TRUE + +/datum/preference/choiced/floran_leaves/init_possible_values() + return possible_values_for_sprite_accessory_list_for_body_part( + GLOB.floran_leaves_list, + "floran_leaves", + list("ADJ"), + ) + +/datum/preference/choiced/floran_leaves/apply_to_human(mob/living/carbon/human/target, value) + target.dna.features["floran_leaves"] = value diff --git a/monkestation/code/modules/mob/dead/new_player/sprite_accessories/floran_leaves.dm b/monkestation/code/modules/mob/dead/new_player/sprite_accessories/floran_leaves.dm new file mode 100644 index 000000000000..6f7e85ee8fe1 --- /dev/null +++ b/monkestation/code/modules/mob/dead/new_player/sprite_accessories/floran_leaves.dm @@ -0,0 +1,24 @@ +/datum/sprite_accessory/floran_leaves + icon = 'monkestation/icons/mob/species/floran/floran_leaves.dmi' + color_src = MUTCOLORS_SECONDARY + //Should be MUTCOLORS_SECONDARY, but while its not working it will be the inverse of MUTCOLORS + +/datum/sprite_accessory/floran_leaves/furnivour + name = "Furnivour" + icon_state = "furnivour" + +/datum/sprite_accessory/floran_leaves/leaf + name = "Leaf" + icon_state = "leaf" + +/datum/sprite_accessory/floran_leaves/pelt + name = "Pelt" + icon_state = "pelt" + +/datum/sprite_accessory/floran_leaves/savage + name = "Savage" + icon_state = "savage" + +/datum/sprite_accessory/floran_leaves/survivalist + name = "Survivalist" + icon_state = "survivalist" diff --git a/monkestation/code/modules/mob/living/carbon/human/species_type/floran.dm b/monkestation/code/modules/mob/living/carbon/human/species_type/floran.dm new file mode 100644 index 000000000000..529b5838cf5d --- /dev/null +++ b/monkestation/code/modules/mob/living/carbon/human/species_type/floran.dm @@ -0,0 +1,149 @@ +/datum/species/floran + name = "\improper Floran" + plural_form = "Florans" + id = SPECIES_FLORAN + sexes = FALSE + species_traits = list( + MUTCOLORS, + MUTCOLORS_SECONDARY, + NO_UNDERWEAR, + ) + inherent_traits = list( + TRAIT_PLANT_SAFE, + TRAIT_NO_JUMPSUIT, + ) + external_organs = list( + /obj/item/organ/external/pod_hair = "None", + /obj/item/organ/external/floran_leaves = "Furnivour", + ) + inherent_biotypes = MOB_ORGANIC | MOB_HUMANOID | MOB_PLANT + inherent_factions = list(FACTION_PLANTS, FACTION_VINES) + burnmod = 1.8 + heatmod = 0.67 //Same as lizard people + coldmod = 1.5 //Same as lizard people + speedmod = -0.1 //Same as arachnids + payday_modifier = 0.75 + meat = /obj/item/food/meat/slab/human/mutant/plant + exotic_blood = /datum/reagent/water + // disliked_food = VEGETABLES | FRUIT | GRAIN + liked_food = MEAT | BUGS | GORE + changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | RACE_SWAP | ERT_SPAWN | SLIME_EXTRACT + species_language_holder = /datum/language_holder/plant + + bodypart_overrides = list( + BODY_ZONE_L_ARM = /obj/item/bodypart/arm/left/floran, + BODY_ZONE_R_ARM = /obj/item/bodypart/arm/right/floran, + BODY_ZONE_HEAD = /obj/item/bodypart/head/floran, + BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left/floran, + BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/floran, + BODY_ZONE_CHEST = /obj/item/bodypart/chest/floran, + ) + mutanttongue = /obj/item/organ/internal/tongue/lizard + mutanteyes = /obj/item/organ/internal/eyes/floran + + ass_image = 'icons/ass/asspodperson.png' + +/datum/species/floran/spec_life(mob/living/carbon/human/H, seconds_per_tick, times_fired) + if(H.stat == DEAD) + return + + var/light_amount = 0 + if(isturf(H.loc)) + var/turf/T = H.loc + light_amount = min(1, T.get_lumcount()) - 0.5 + if(light_amount > 0.3) + H.heal_overall_damage(brute = 0.5 * seconds_per_tick, burn = 0.5 * seconds_per_tick, required_bodytype = BODYTYPE_ORGANIC) //Lowered to 0.25 + H.adjustToxLoss(-0.5 * seconds_per_tick) + H.adjustOxyLoss(-0.5 * seconds_per_tick) + +/datum/species/floran/on_species_gain(mob/living/carbon/new_floran, datum/species/old_species, pref_load) + . = ..() + if(ishuman(new_floran)) + update_mail_goodies(new_floran) + +/datum/species/floran/update_quirk_mail_goodies(mob/living/carbon/human/recipient, datum/quirk/quirk, list/mail_goodies = list()) + if(istype(quirk, /datum/quirk/blooddeficiency)) + mail_goodies += list( + /obj/item/reagent_containers/blood/podperson + ) + return ..() + +/datum/species/floran/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H, seconds_per_tick, times_fired) + if(chem.type == /datum/reagent/toxin/plantbgone) + H.adjustToxLoss(3 * REM * seconds_per_tick) + H.reagents.remove_reagent(chem.type, REAGENTS_METABOLISM * seconds_per_tick) + return TRUE + if(chem.type == /datum/reagent/potassium) //Floran "blood" is water, water does not like potassium + to_chat(H, span_danger("You feel your skin bubble and pop painfully!")) + H.adjustBruteLoss(10*REM, FALSE) + return TRUE + return ..() + +/datum/species/floran/randomize_features(mob/living/carbon/human_mob) + randomize_external_organs(human_mob) + +/datum/species/floran/get_scream_sound(mob/living/carbon/human/human) + return pick( + 'sound/voice/lizard/lizard_scream_1.ogg', + 'sound/voice/lizard/lizard_scream_2.ogg', + 'sound/voice/lizard/lizard_scream_3.ogg', + 'monkestation/sound/voice/screams/lizard/lizard_scream_5.ogg', + ) + +/datum/species/floran/get_laugh_sound(mob/living/carbon/human/human) + return 'monkestation/sound/voice/laugh/lizard/lizard_laugh.ogg' + +/datum/species/floran/get_species_description() + return "Plant-based humanoids, they are extremely violent carnivores with no central government or power structure, \ + split into numerous tribes spread across the universe, each led by a Greenfinger. \ + Though they are biologically a single-sex race, they may adapt sexually dimorphic physical traits and male/female identities if they so choose. \ + Their speech is often simplistic, and they tend to hisss their sibilantsss. \ + Their primary drives are hunting, acquiring trophies, fighting, eating meat, and more hunting. \ + It is speculated that their general casual view towards killing and consuming other intelligent species stems from not viewing \"meat\" as \"alive\" in \ + the same sense they are. However, as the Floran spread throughout the galaxy, more and more individuals are recognizing a need to integrate, \ + make friends, and maybe not stab anyone that slightly inconveniences them. (E.I. THIS IS NOT AN EXCUSE TO RDM)" + +/datum/species/floran/create_pref_unique_perks() + var/list/to_add = list() + + to_add += list( + list( + SPECIES_PERK_TYPE = SPECIES_POSITIVE_PERK, + SPECIES_PERK_ICON = "", + SPECIES_PERK_NAME = "Carnivore", + SPECIES_PERK_DESC = "As a vicious carnivore, your claws do more damage to your prey.", + ), + list( + SPECIES_PERK_TYPE = SPECIES_POSITIVE_PERK, + SPECIES_PERK_ICON = "", + SPECIES_PERK_NAME = "Photosynthesis", + SPECIES_PERK_DESC = "Your green skin slowly heals itself while it is illuminated.", + ), + list( + SPECIES_PERK_TYPE = SPECIES_NEGATIVE_PERK, + SPECIES_PERK_ICON = "", + SPECIES_PERK_NAME = "Flammable Skin", + SPECIES_PERK_DESC = "Your flammable skin is highly susceptible to burn damage.", + ), + ) + + return to_add + + +/obj/item/organ/external/floran_leaves + name = "floran leaves" + desc = "you shouldn't see this" + organ_flags = ORGAN_UNREMOVABLE + icon_state = "floran_leaves" + icon = 'monkestation/icons/obj/medical/organs/organs.dmi' + + preference = "feature_floran_leaves" + zone = BODY_ZONE_CHEST + slot = ORGAN_SLOT_EXTERNAL_FLORAN_LEAVES + + use_mob_sprite_as_obj_sprite = TRUE + bodypart_overlay = /datum/bodypart_overlay/mutant/floran_leaves + +/datum/bodypart_overlay/mutant/floran_leaves + layers = EXTERNAL_ADJACENT + feature_key = "floran_leaves" diff --git a/monkestation/code/modules/surgery/bodyparts/floran_bodyparts.dm b/monkestation/code/modules/surgery/bodyparts/floran_bodyparts.dm new file mode 100644 index 000000000000..fc0ff0273c7d --- /dev/null +++ b/monkestation/code/modules/surgery/bodyparts/floran_bodyparts.dm @@ -0,0 +1,37 @@ +/obj/item/bodypart/head/floran + icon_greyscale = 'monkestation/icons/mob/species/floran/bodyparts.dmi' + limb_id = SPECIES_FLORAN + is_dimorphic = FALSE + +/obj/item/bodypart/chest/floran + icon_greyscale = 'monkestation/icons/mob/species/floran/bodyparts.dmi' + limb_id = SPECIES_FLORAN + is_dimorphic = FALSE + +/obj/item/bodypart/arm/left/floran + icon_greyscale = 'monkestation/icons/mob/species/floran/bodyparts.dmi' + limb_id = SPECIES_FLORAN + unarmed_attack_verb = "slash" + unarmed_damage_high = 15 + unarmed_damage_low = 5 + unarmed_attack_effect = ATTACK_EFFECT_CLAW + unarmed_attack_sound = 'sound/weapons/slice.ogg' + unarmed_miss_sound = 'sound/weapons/slashmiss.ogg' + +/obj/item/bodypart/arm/right/floran + icon_greyscale = 'monkestation/icons/mob/species/floran/bodyparts.dmi' + limb_id = SPECIES_FLORAN + unarmed_attack_verb = "slash" + unarmed_damage_high = 15 + unarmed_damage_low = 5 + unarmed_attack_effect = ATTACK_EFFECT_CLAW + unarmed_attack_sound = 'sound/weapons/slice.ogg' + unarmed_miss_sound = 'sound/weapons/slashmiss.ogg' + +/obj/item/bodypart/leg/left/floran + icon_greyscale = 'monkestation/icons/mob/species/floran/bodyparts.dmi' + limb_id = SPECIES_FLORAN + +/obj/item/bodypart/leg/right/floran + icon_greyscale = 'monkestation/icons/mob/species/floran/bodyparts.dmi' + limb_id = SPECIES_FLORAN diff --git a/monkestation/code/modules/surgery/organs/external/floran_accessories.dm b/monkestation/code/modules/surgery/organs/external/floran_accessories.dm new file mode 100644 index 000000000000..d47a91e3b263 --- /dev/null +++ b/monkestation/code/modules/surgery/organs/external/floran_accessories.dm @@ -0,0 +1,42 @@ +/obj/item/organ/external/floran_leaves + name = "floran leaves" + desc = "you shouldn't see this" + organ_flags = ORGAN_UNREMOVABLE + icon_state = "floran_leaves" + icon = 'monkestation/icons/obj/medical/organs/organs.dmi' + + preference = "feature_floran_leaves" + zone = BODY_ZONE_CHEST + slot = ORGAN_SLOT_EXTERNAL_FLORAN_LEAVES + + use_mob_sprite_as_obj_sprite = TRUE + bodypart_overlay = /datum/bodypart_overlay/mutant/floran_leaves + +/datum/bodypart_overlay/mutant/floran_leaves + layers = EXTERNAL_ADJACENT + feature_key = "floran_leaves" + // color_source = ORGAN_COLOR_MUTSECONDARY + + var/color_swapped_layer = EXTERNAL_ADJACENT//Remove when MUTCOLORS_SECONDARY works + var/color_inverse_base = 255//Remove when MUTCOLORS_SECONDARY works + +/datum/bodypart_overlay/mutant/floran_leaves/get_global_feature_list() + return GLOB.floran_leaves_list + +/datum/bodypart_overlay/mutant/floran_leaves/color_image(image/overlay, draw_layer, obj/item/bodypart/limb)//Remove when MUTCOLORS_SECONDARY works + if(draw_layer != bitflag_to_layer(color_swapped_layer)) + return ..() + + if(draw_color) + var/list/rgb_list = rgb2num(draw_color) + overlay.color = rgb(color_inverse_base - rgb_list[1], color_inverse_base - rgb_list[2], color_inverse_base - rgb_list[3]) + else + overlay.color = null + +/datum/bodypart_overlay/mutant/floran_leaves/get_base_icon_state() + return sprite_datum.icon_state + +/datum/bodypart_overlay/mutant/floran_leaves/can_draw_on_bodypart(mob/living/carbon/human/human) + . = ..() + if(human.wear_suit && (human.wear_suit.flags_inv & HIDEJUMPSUIT)) + return FALSE diff --git a/monkestation/code/modules/surgery/organs/internal/eyes.dm b/monkestation/code/modules/surgery/organs/internal/eyes.dm index 17c5e85de90c..b9f478525ec3 100644 --- a/monkestation/code/modules/surgery/organs/internal/eyes.dm +++ b/monkestation/code/modules/surgery/organs/internal/eyes.dm @@ -15,3 +15,10 @@ low_light_cutoff = list(20, 15, 0) medium_light_cutoff = list(35, 30, 0) high_light_cutoff = list(50, 40, 0) + +/obj/item/organ/internal/eyes/floran + name = "phytoid eyes" + desc = "They look like big berries..." + icon = 'monkestation/icons/obj/medical/organs/organs.dmi' + eye_icon_state = "floraneyes" + icon_state = "floran_eyeballs" diff --git a/monkestation/icons/mob/species/floran/bodyparts.dmi b/monkestation/icons/mob/species/floran/bodyparts.dmi new file mode 100644 index 000000000000..9151db05ad9d Binary files /dev/null and b/monkestation/icons/mob/species/floran/bodyparts.dmi differ diff --git a/monkestation/icons/mob/species/floran/floran_leaves.dmi b/monkestation/icons/mob/species/floran/floran_leaves.dmi new file mode 100644 index 000000000000..e4b5a1c4a9c7 Binary files /dev/null and b/monkestation/icons/mob/species/floran/floran_leaves.dmi differ diff --git a/monkestation/icons/obj/medical/organs/organs.dmi b/monkestation/icons/obj/medical/organs/organs.dmi index 1555c1b3fc25..05102aa69188 100644 Binary files a/monkestation/icons/obj/medical/organs/organs.dmi and b/monkestation/icons/obj/medical/organs/organs.dmi differ diff --git a/tgstation.dme b/tgstation.dme index c966c20bdb97..8fd48249dbd2 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -5804,6 +5804,7 @@ #include "monkestation\code\modules\client\preferences\alt_jobs\_job.dm" #include "monkestation\code\modules\client\preferences\alt_jobs\titles.dm" #include "monkestation\code\modules\client\preferences\species_features\arachnid.dm" +#include "monkestation\code\modules\client\preferences\species_features\floran.dm" #include "monkestation\code\modules\client\preferences\species_features\goblin.dm" #include "monkestation\code\modules\client\preferences\species_features\ipc.dm" #include "monkestation\code\modules\client\preferences\species_features\secondary_mut_color.dm" @@ -6008,6 +6009,7 @@ #include "monkestation\code\modules\mob\dead\new_player\sprite_accessories\arachnid_appendages.dm" #include "monkestation\code\modules\mob\dead\new_player\sprite_accessories\arachnid_chelicerae.dm" #include "monkestation\code\modules\mob\dead\new_player\sprite_accessories\clockwork_sprites.dm" +#include "monkestation\code\modules\mob\dead\new_player\sprite_accessories\floran_leaves.dm" #include "monkestation\code\modules\mob\dead\new_player\sprite_accessories\goblin_accessories.dm" #include "monkestation\code\modules\mob\dead\new_player\sprite_accessories\hair.dm" #include "monkestation\code\modules\mob\dead\new_player\sprite_accessories\ipc_antenna.dm" @@ -6041,6 +6043,7 @@ #include "monkestation\code\modules\mob\living\carbon\human\species_type\arachnid.dm" #include "monkestation\code\modules\mob\living\carbon\human\species_type\dullahan.dm" #include "monkestation\code\modules\mob\living\carbon\human\species_type\ethereal.dm" +#include "monkestation\code\modules\mob\living\carbon\human\species_type\floran.dm" #include "monkestation\code\modules\mob\living\carbon\human\species_type\flypeople.dm" #include "monkestation\code\modules\mob\living\carbon\human\species_type\goblin.dm" #include "monkestation\code\modules\mob\living\carbon\human\species_type\golems.dm" @@ -6310,11 +6313,13 @@ #include "monkestation\code\modules\storytellers\storytellers\warrior.dm" #include "monkestation\code\modules\surgery\bodyparts\arachnid_bodyparts.dm" #include "monkestation\code\modules\surgery\bodyparts\clockwork_bodyparts.dm" +#include "monkestation\code\modules\surgery\bodyparts\floran_bodyparts.dm" #include "monkestation\code\modules\surgery\bodyparts\ipc_bodyparts.dm" #include "monkestation\code\modules\surgery\bodyparts\oozeling_bodyparts.dm" #include "monkestation\code\modules\surgery\bodyparts\simian_bodyparts.dm" #include "monkestation\code\modules\surgery\organs\augments.dm" #include "monkestation\code\modules\surgery\organs\external\anime.dm" +#include "monkestation\code\modules\surgery\organs\external\floran_accessories.dm" #include "monkestation\code\modules\surgery\organs\external\goblin_accessories.dm" #include "monkestation\code\modules\surgery\organs\external\ipc.dm" #include "monkestation\code\modules\surgery\organs\external\simian.dm"