diff --git a/config/game_options.txt b/config/game_options.txt index ca298a397ceb..48483e39fe8a 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -359,7 +359,8 @@ ROUNDSTART_RACES abductor #ROUNDSTART_RACES reploid - Removed temporarily until features done ROUNDSTART_RACES pod ROUNDSTART_RACES ornithid -ROUNDSTART_RACES skrell +ROUNDSTART_RACES high_skrell +ROUNDSTART_RACES deep_skrell ## Races that are straight upgrades. If these are on expect powergamers to always pick them ROUNDSTART_RACES skeleton diff --git a/maplestation.dme b/maplestation.dme index 1b96439c65b1..8ef68ee9e102 100644 --- a/maplestation.dme +++ b/maplestation.dme @@ -6688,9 +6688,11 @@ #include "maplestation_modules\code\modules\mob\living\carbon\human\rad_rework\simple_rad.dm" #include "maplestation_modules\code\modules\mob\living\carbon\human\species_types\abductor.dm" #include "maplestation_modules\code\modules\mob\living\carbon\human\species_types\android.dm" +#include "maplestation_modules\code\modules\mob\living\carbon\human\species_types\deep_skrell.dm" #include "maplestation_modules\code\modules\mob\living\carbon\human\species_types\ethereal.dm" #include "maplestation_modules\code\modules\mob\living\carbon\human\species_types\felinid.dm" #include "maplestation_modules\code\modules\mob\living\carbon\human\species_types\flypeople.dm" +#include "maplestation_modules\code\modules\mob\living\carbon\human\species_types\high_skrell.dm" #include "maplestation_modules\code\modules\mob\living\carbon\human\species_types\jellypeople.dm" #include "maplestation_modules\code\modules\mob\living\carbon\human\species_types\lizardpeople.dm" #include "maplestation_modules\code\modules\mob\living\carbon\human\species_types\monkey.dm" @@ -6702,7 +6704,6 @@ #include "maplestation_modules\code\modules\mob\living\carbon\human\species_types\shadowpeople.dm" #include "maplestation_modules\code\modules\mob\living\carbon\human\species_types\silverscale.dm" #include "maplestation_modules\code\modules\mob\living\carbon\human\species_types\skeletons.dm" -#include "maplestation_modules\code\modules\mob\living\carbon\human\species_types\skrell.dm" #include "maplestation_modules\code\modules\mob\living\carbon\human\species_types\species.dm" #include "maplestation_modules\code\modules\mob\living\carbon\human\species_types\vampire.dm" #include "maplestation_modules\code\modules\mob\living\carbon\human\species_types\animid\_animid_def.dm" diff --git a/maplestation_modules/code/__DEFINES/DNA.dm b/maplestation_modules/code/__DEFINES/DNA.dm index c4249c288de3..ce3532838071 100644 --- a/maplestation_modules/code/__DEFINES/DNA.dm +++ b/maplestation_modules/code/__DEFINES/DNA.dm @@ -1,7 +1,8 @@ //the real memes //Species Defines -#define SPECIES_SKRELL "skrell" +#define SPECIES_HIGH_SKRELL "high_skrell" +#define SPECIES_DEEP_SKRELL "deep_skrell" #define SPECIES_REPLOID "reploid" #define SPECIES_SYNTH "synth" #define SPECIES_ORNITHID "ornithid" diff --git a/maplestation_modules/code/__DEFINES/traits.dm b/maplestation_modules/code/__DEFINES/traits.dm index 32514177eae2..50949f335559 100644 --- a/maplestation_modules/code/__DEFINES/traits.dm +++ b/maplestation_modules/code/__DEFINES/traits.dm @@ -4,3 +4,7 @@ #define TRAIT_FEATHERED "feathers" /// Gives positive mood on drinking anything caffeinated, kinda generic so people can like coffee, tea, energy drinks, whatever. #define TRAIT_CAFFEINE_LOVER "caffeine_lover" +/// Allows items to replace the backpack slot. +#define TRAIT_BACKPACK_REPLACEMENT +/// Gives negative mood for wearing gloves +#define TRAIT_WEBBED_HANDS "webbed_hands" diff --git a/maplestation_modules/code/modules/mob/living/carbon/human/species_types/deep_skrell.dm b/maplestation_modules/code/modules/mob/living/carbon/human/species_types/deep_skrell.dm new file mode 100644 index 000000000000..310b503f2138 --- /dev/null +++ b/maplestation_modules/code/modules/mob/living/carbon/human/species_types/deep_skrell.dm @@ -0,0 +1,295 @@ +// -- Modular deep skrell species -- +/// GLOB list of head tentacle sprites / options +GLOBAL_LIST_EMPTY(deep_head_tentacles_list) + +// The datum for deep_skrell. +/datum/species/deep_skrell + name = "Deep Skrell" + plural_form = "Deep Skrells" + id = SPECIES_DEEP_SKRELL + inherent_traits = list(TRAIT_MUTANT_COLORS, TRAIT_LIGHT_DRINKER, TRAIT_EMPATH, TRAIT_BADTOUCH, TRAIT_NIGHT_VISION, TRAIT_WEBBED_HANDS) + payday_modifier = 0.75 + changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC | RACE_SWAP | ERT_SPAWN | SLIME_EXTRACT + species_language_holder = /datum/language_holder/skrell + exotic_bloodtype = /datum/blood_type/crew/skrell + species_pain_mod = 1.2 + + + bodypart_overrides = list( + BODY_ZONE_L_ARM = /obj/item/bodypart/arm/left/skrell, + BODY_ZONE_R_ARM = /obj/item/bodypart/arm/right/skrell, + BODY_ZONE_HEAD = /obj/item/bodypart/head/deep_skrell, + BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left/skrell, + BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/skrell, + BODY_ZONE_CHEST = /obj/item/bodypart/chest/deep_skrell, + ) + + mutanteyes = /obj/item/organ/eyes/deep_skrell + mutanttongue = /obj/item/organ/tongue/deep_skrell + mutantbrain = /obj/item/organ/brain/skrell + mutantlungs = /obj/item/organ/lungs/skrell + mutantheart = /obj/item/organ/heart/skrell + mutantliver = /obj/item/organ/liver/skrell + mutantstomach = /obj/item/organ/stomach/skrell + mutantears = /obj/item/organ/ears/skrell + mutant_organs = list( /obj/item/organ/head_tentacles = "Long") + +/datum/species/deep_skrell/get_species_description() + return "deep_skrell are a semi-aquatic species hailing from tropical worlds." + +/datum/species/deep_skrell/get_species_lore() + return list("deep_skrell lore.") + +/datum/species/deep_skrell/create_pref_unique_perks() + var/list/perks = list() + + perks += list(list( + SPECIES_PERK_TYPE = SPECIES_NEGATIVE_PERK, + SPECIES_PERK_ICON = "wine-bottle", + SPECIES_PERK_NAME = "Light Drinkers", + SPECIES_PERK_DESC = "skrell naturally don't get along with alcohol \ + and find themselves getting inebriated very easily.", + )) + return perks + +/datum/species/deep_skrell/create_pref_blood_perks() + var/list/perks = list() + + perks += list(list( + SPECIES_PERK_TYPE = SPECIES_NEUTRAL_PERK, + SPECIES_PERK_ICON = "tint", + SPECIES_PERK_NAME = "Exotic Blood", + SPECIES_PERK_DESC = "The Skrell have a unique \"S\" type blood. Instead of \ + regaining blood from iron, they regenerate it from copper.", + )) + + return perks + +// Preset deep_skrell species +/mob/living/carbon/human/species/deep_skrell + race = /datum/species/deep_skrell + +// Organ for deep_skrell head tentacles. +/obj/item/organ/head_tentacles + zone = BODY_ZONE_HEAD + slot = ORGAN_SLOT_EXTERNAL_HEAD_TENTACLES + dna_block = DNA_HEAD_TENTACLES_BLOCK + preference = "feature_head_tentacles" + bodypart_overlay = /datum/bodypart_overlay/mutant/head_tentacles + +/datum/bodypart_overlay/mutant/head_tentacles + layers = EXTERNAL_FRONT | EXTERNAL_ADJACENT + feature_key = "head_tentacles" + +/datum/bodypart_overlay/mutant/head_tentacles/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner) + return IS_ORGANIC_LIMB(bodypart_owner) && !(bodypart_owner.owner?.obscured_slots & HIDEHAIR) + +/datum/bodypart_overlay/mutant/head_tentacles/get_global_feature_list() + return GLOB.head_tentacles_list + +/datum/species/human/deep_skrell/handle_chemical(datum/reagent/chem, mob/living/carbon/human/affected, seconds_per_tick, times_fired) + . = ..() + if(. & COMSIG_MOB_STOP_REAGENT_CHECK) + return + if(istype(chem, /datum/reagent/toxin/carpotoxin)) + var/datum/reagent/toxin/carpotoxin/fish = chem + fish.toxpwr = 0 + + +/obj/item/bodypart/arm/left/skrell + limb_id = SPECIES_DEEP_SKRELL + brute_modifier = 0.8 + burn_modifier = 1.5 + unarmed_attack_verbs = list("slash") + grappled_attack_verb = "lacerate" + unarmed_attack_effect = ATTACK_EFFECT_CLAW + unarmed_attack_sound = 'sound/weapons/slice.ogg' + unarmed_miss_sound = 'sound/weapons/slashmiss.ogg' + icon_greyscale = 'maplestation_modules/icons/mob/skrell_parts_greyscale.dmi' + +/obj/item/bodypart/arm/right/skrell + limb_id = SPECIES_DEEP_SKRELL + brute_modifier = 0.8 + burn_modifier = 1.5 + unarmed_attack_verbs = list("slash") + grappled_attack_verb = "lacerate" + unarmed_attack_effect = ATTACK_EFFECT_CLAW + unarmed_attack_sound = 'sound/weapons/slice.ogg' + unarmed_miss_sound = 'sound/weapons/slashmiss.ogg' + icon_greyscale = 'maplestation_modules/icons/mob/skrell_parts_greyscale.dmi' + +/obj/item/bodypart/head/deep_skrell + limb_id = SPECIES_DEEP_SKRELL + brute_modifier = 0.8 + burn_modifier = 1.5 + is_dimorphic = 0 + icon_greyscale = 'maplestation_modules/icons/mob/skrell_parts_greyscale.dmi' + head_flags = HEAD_EYESPRITES|HEAD_EYEHOLES|HEAD_DEBRAIN + +/obj/item/bodypart/leg/left/skrell + limb_id = SPECIES_DEEP_SKRELL + brute_modifier = 0.8 + burn_modifier = 1.5 + icon_greyscale = 'maplestation_modules/icons/mob/skrell_parts_greyscale.dmi' + +/obj/item/bodypart/leg/right/skrell + limb_id = SPECIES_DEEP_SKRELL + brute_modifier = 0.8 + burn_modifier = 1.5 + icon_greyscale = 'maplestation_modules/icons/mob/skrell_parts_greyscale.dmi' + +/obj/item/bodypart/chest/deep_skrell + limb_id = SPECIES_DEEP_SKRELL + brute_modifier = 0.8 + burn_modifier = 1. + is_dimorphic = 0 + icon_greyscale = 'maplestation_modules/icons/mob/skrell_parts_greyscale.dmi' + + +/obj/item/organ/brain/Skrell/on_mob_insert(mob/living/carbon/organ_owner, special) + .=..() + if(ishuman(organ_owner)) + return + + + var/mob/living/carbon/human/human_owner = owner + if (organ_owner.mob_mood) + organ_owner.mob_mood.mood_modifier += 0.75 + +/obj/item/organ/brain/Skrell/on_mob_remove(mob/living/carbon/organ_owner, special) + .=..() + if(ishuman(organ_owner) || QDELETED (organ_owner)) + return + + + if (organ_owner.mob_mood) + organ_owner.mob_mood.mood_modifier -= 0.75 + +/obj/item/organ/liver/Skrell/on_mob_insert(mob/living/carbon/organ_owner, special) + .=..() + if(ishuman(organ_owner)) + return + + + var/mob/living/carbon/human/human_owner = owner + human_owner.physiology.tox_mod *= 1.75 + +/obj/item/organ/liver/Skrell/on_mob_remove(mob/living/carbon/organ_owner, special) + .=..() + if(ishuman(organ_owner) || QDELETED (organ_owner)) + return + + + var/mob/living/carbon/human/human_owner = owner + human_owner.physiology.tox_mod *= 0.75 + +/obj/item/organ/eyes/deep_skrell + name = "Deep Skrellian eyes" + desc = "The four large eyes of a Deep Skrell." + icon_state = "eyes_deep" + icon = 'maplestation_modules/icons/mob/skrell_organs.dmi' + eye_overlay_file = 'maplestation_modules/icons/mob/skrell_eyes.dmi' + eye_icon_state = "deep_eyes" + visual = TRUE + zone = BODY_ZONE_PRECISE_EYES + slot = ORGAN_SLOT_EYES + flash_protect = FLASH_PROTECTION_SENSITIVE + +/datum/species/deep_skrell/on_species_gain(mob/living/carbon/new_deep_skrell, datum/species/old_species, pref_load) + . = ..() + var/obj/item/storage/backpack/bag = new_deep_skrell.get_item_by_slot(ITEM_SLOT_BACK) + if(!istype(bag, /obj/item/storage/back_tentacles)) + if(new_deep_skrell.dropItemToGround(bag)) //returns TRUE even if its null + new_deep_skrell.equip_to_slot_or_del(new /obj/item/storage/back_tentacles(new_deep_skrell), ITEM_SLOT_BACK) +/// i stole snail code + +/datum/species/deep_skrell/on_species_loss(mob/living/carbon/former_deep_skrell, datum/species/new_species, pref_load) + . = ..() + var/obj/item/storage/backpack/bag = former_deep_skrell.get_item_by_slot(ITEM_SLOT_BACK) + if(istype(bag, /obj/item/storage/back_tentacles)) + bag.emptyStorage() + former_deep_skrell.temporarilyRemoveItemFromInventory(bag, TRUE) + qdel(bag) + +/obj/item/storage/back_tentacles + name = "Back tentacles" + desc = "Your back tentacles! You're able to hold items with them!" + icon_state = "back_tent_obj" + icon = 'maplestation_modules/icons/mob/skrell_back_tentacles.dmi' + worn_icon = 'maplestation_modules/icons/mob/skrell_back_tentacles.dmi' + resistance_flags = INDESTRUCTIBLE | ACID_PROOF | FIRE_PROOF | LAVA_PROOF | UNACIDABLE + item_flags = ABSTRACT | DROPDEL + w_class = WEIGHT_CLASS_BULKY + slot_flags = ITEM_SLOT_BACK + color = null +/obj/item/storage/back_tentacles/equipped(/mob/living/carbon/human/user, slot) + if(ishuman(user) + color = user.dna.features["mcolor"] + return ..() + storage_type = /datum/storage/backpack + +/obj/item/storage/back_tentacles/visual_equipped(mob/living/carbon/human/user, slot) + + +/obj/item/storage/back_tentacles/Initialize(mapload) + . = ..() + ADD_TRAIT(src, TRAIT_NODROP, TRAIT_BACKPACK_REPLACEMENT) + +/datum/species/deep_skrell/proc/on_death(mob/living/died, gibbed) + SIGNAL_HANDLER + died.drop_all_contents() + +/datum/quirk/webbedhands + name = "Webbed Hands" + desc = "Your fingers are connected by a waterproof webbing. Useful for swimming! Less so for wearing gloves..." + value = -6 + quirk_flags = QUIRK_HUMAN_ONLY|QUIRK_MOODLET_BASED + gain_text = span_danger("Your fingers have grown webbing!") + lose_text = span_notice("The webbing has retracted back into your hands.") + medical_record_text = "Patient has webbed hands." + mob_trait = WEBBED_HANDS + hardcore_value = 4 + var/datum/weakref/gloves + +/datum/quirk/gloves/add(client/client_source) + var/mob/living/carbon/human/human_holder = quirk_holder + var/obj/item/clothing/gloves/equipped_gloves = human_holder.back + if(istype(equipped_gloves)) + quirk_holder.add_mood_event("webbed_hands", /datum/mood_event/webbed_hands) + RegisterSignal(human_holder.back, COMSIG_ITEM_POST_UNEQUIP, PROC_REF(on_unequipped_gloves)) + else + RegisterSignal(quirk_holder, COMSIG_MOB_EQUIPPED_ITEM, PROC_REF(on_equipped_item)) + +/datum/quirk/webbedhands/remove() + UnregisterSignal(quirk_holder, COMSIG_MOB_EQUIPPED_ITEM) + + var/obj/item/clothing/equipped_gloves = gloves?.resolve() + if(equipped_gloves) + UnregisterSignal(equipped_gloves, COMSIG_ITEM_POST_UNEQUIP) + quirk_holder.clear_mood_event("webbed_hands") + +/// Signal handler for when the quirk_holder equips an item. If it's gloves, adds the webbed_hands mood event. +/datum/quirk/badback/proc/on_equipped_item(mob/living/source, obj/item/equipped_item, slot) + SIGNAL_HANDLER + + if(!(slot & ITEM_SLOT_HANDS) || !istype(equipped_item, /obj/item/clothing/gloves)) + return + + quirk_holder.add_mood_event("webbed_hands", /datum/mood_event/webbed_hands) + RegisterSignal(equipped_item, COMSIG_ITEM_POST_UNEQUIP, PROC_REF(on_unequipped_backpack)) + UnregisterSignal(quirk_holder, COMSIG_MOB_EQUIPPED_ITEM) + gloves = WEAKREF(equipped_item) + +/// Signal handler for when the quirk_holder unequips an equipped gloves. Removes the webbed_hands mood event. +/datum/quirk/badback/proc/on_unequipped_gloves(obj/item/source, force, atom/newloc, no_move, invdrop, silent) + SIGNAL_HANDLER + + UnregisterSignal(source, COMSIG_ITEM_POST_UNEQUIP) + quirk_holder.clear_mood_event("webbed_hands") + gloves = null + RegisterSignal(quirk_holder, COMSIG_MOB_EQUIPPED_ITEM, PROC_REF(on_equipped_item)) + +/datum/mood_event/webbed_hands + description = "Gloves compress the webbing between your fingers painfully!" + mood_change = -13 + diff --git a/maplestation_modules/code/modules/mob/living/carbon/human/species_types/high_skrell.dm b/maplestation_modules/code/modules/mob/living/carbon/human/species_types/high_skrell.dm new file mode 100644 index 000000000000..8a94b5033c4b --- /dev/null +++ b/maplestation_modules/code/modules/mob/living/carbon/human/species_types/high_skrell.dm @@ -0,0 +1,246 @@ +// -- Modular high skrell species -- +/// GLOB list of head tentacle sprites / options +GLOBAL_LIST_EMPTY(head_tentacles_list) + +// The datum for high_skrell. +/datum/species/high_skrell + name = "High Skrell" + plural_form = "High Skrells" + id = SPECIES_HIGH_SKRELL + inherent_traits = list(TRAIT_MUTANT_COLORS, TRAIT_LIGHT_DRINKER, TRAIT_EMPATH, TRAIT_BADTOUCH, TRAIT_NIGHT_VISION, TRAIT_SNOB) + payday_modifier = 0.75 + changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC | RACE_SWAP | ERT_SPAWN | SLIME_EXTRACT + species_language_holder = /datum/language_holder/skrell + exotic_bloodtype = /datum/blood_type/crew/skrell + species_pain_mod = 1.25 + + + bodypart_overrides = list( + BODY_ZONE_L_ARM = /obj/item/bodypart/arm/left/skrell, + BODY_ZONE_R_ARM = /obj/item/bodypart/arm/right/skrell, + BODY_ZONE_HEAD = /obj/item/bodypart/head/high_skrell, + BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left/skrell, + BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/skrell, + BODY_ZONE_CHEST = /obj/item/bodypart/chest/high_skrell, + ) + + mutanteyes = /obj/item/organ/eyes/high_skrell + mutanttongue = /obj/item/organ/tongue/high_skrell + mutantbrain = /obj/item/organ/brain/skrell + mutantlungs = /obj/item/organ/lungs/skrell + mutantheart = /obj/item/organ/heart/skrell + mutantliver = /obj/item/organ/liver/skrell + mutantstomach = /obj/item/organ/stomach/skrell + mutantears = /obj/item/organ/ears/skrell + mutant_organs = list(/obj/item/organ/head_tentacles = "Long") + +/datum/species/high_skrell/get_species_description() + return "high_skrell are a semi-aquatic species hailing from tropical worlds." + +/datum/species/high_skrell/get_species_lore() + return list("high_skrell lore.") + +/datum/species/high_skrell/create_pref_unique_perks() + var/list/perks = list() + + perks += list(list( + SPECIES_PERK_TYPE = SPECIES_NEGATIVE_PERK, + SPECIES_PERK_ICON = "wine-bottle", + SPECIES_PERK_NAME = "Light Drinkers", + SPECIES_PERK_DESC = "skrell naturally don't get along with alcohol \ + and find themselves getting inebriated very easily.", + )) + return perks + +/datum/species/high_skrell/create_pref_blood_perks() + var/list/perks = list() + + perks += list(list( + SPECIES_PERK_TYPE = SPECIES_NEUTRAL_PERK, + SPECIES_PERK_ICON = "tint", + SPECIES_PERK_NAME = "Exotic Blood", + SPECIES_PERK_DESC = "The Skrell have a unique \"S\" type blood. Instead of \ + regaining blood from iron, they regenerate it from copper.", + )) + + return perks + +/datum/species/high_skrell/prepare_human_for_preview(mob/living/carbon/human/human) + human.dna.features["mcolor"] = COLOR_GRAY + human.update_body(is_creating = TRUE) + +// Preset high_skrell species +/mob/living/carbon/human/species/high_skrell + race = /datum/species/high_skrell + +// Organ for high_skrell head tentacles. +/obj/item/organ/head_tentacles + zone = BODY_ZONE_HEAD + slot = ORGAN_SLOT_EXTERNAL_HEAD_TENTACLES + dna_block = DNA_HEAD_TENTACLES_BLOCK + preference = "feature_head_tentacles" + bodypart_overlay = /datum/bodypart_overlay/mutant/head_tentacles + +/datum/bodypart_overlay/mutant/head_tentacles + layers = EXTERNAL_FRONT | EXTERNAL_ADJACENT + feature_key = "head_tentacles" + +/datum/bodypart_overlay/mutant/head_tentacles/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner) + return IS_ORGANIC_LIMB(bodypart_owner) && !(bodypart_owner.owner?.obscured_slots & HIDEHAIR) + +/datum/bodypart_overlay/mutant/head_tentacles/get_global_feature_list() + return GLOB.head_tentacles_list + +/obj/item/bodypart/arm/left/skrell + limb_id = SPECIES_HIGH_SKRELL + brute_modifier = 1.5 + burn_modifier = 0.8 + unarmed_attack_verbs = list("slash") + grappled_attack_verb = "lacerate" + unarmed_attack_effect = ATTACK_EFFECT_CLAW + unarmed_attack_sound = 'sound/weapons/slice.ogg' + unarmed_miss_sound = 'sound/weapons/slashmiss.ogg' + icon_greyscale = 'maplestation_modules/icons/mob/skrell_parts_greyscale.dmi' + +/obj/item/bodypart/arm/right/skrell + limb_id = SPECIES_HIGH_SKRELL + brute_modifier = 1.5 + burn_modifier = 0.8 + unarmed_attack_verbs = list("slash") + grappled_attack_verb = "lacerate" + unarmed_attack_effect = ATTACK_EFFECT_CLAW + unarmed_attack_sound = 'sound/weapons/slice.ogg' + unarmed_miss_sound = 'sound/weapons/slashmiss.ogg' + icon_greyscale = 'maplestation_modules/icons/mob/skrell_parts_greyscale.dmi' + +/obj/item/bodypart/head/high_skrell + limb_id = SPECIES_HIGH_SKRELL + brute_modifier = 1.5 + burn_modifier = 0.8 + is_dimorphic = 0 + icon_greyscale = 'maplestation_modules/icons/mob/skrell_parts_greyscale.dmi' + head_flags = HEAD_EYESPRITES|HEAD_EYEHOLES|HEAD_DEBRAIN|HEAD_EYECOLOR + +/obj/item/bodypart/leg/left/skrell + limb_id = SPECIES_HIGH_SKRELL + brute_modifier = 1.5 + burn_modifier = 0.8 + icon_greyscale = 'maplestation_modules/icons/mob/skrell_parts_greyscale.dmi' + +/obj/item/bodypart/leg/right/skrell + limb_id = SPECIES_HIGH_SKRELL + brute_modifier = 1.5 + burn_modifier = 0.8 + icon_greyscale = 'maplestation_modules/icons/mob/skrell_parts_greyscale.dmi' + +/obj/item/bodypart/chest/high_skrell + limb_id = SPECIES_HIGH_SKRELL + brute_modifier = 1.5 + burn_modifier = 0.8 + is_dimorphic = 0 + icon_greyscale = 'maplestation_modules/icons/mob/skrell_parts_greyscale.dmi' + +/obj/item/organ/brain/Skrell/on_mob_insert(mob/living/carbon/organ_owner, special) + .=..() + if(ishuman(organ_owner)) + return + + + var/mob/living/carbon/human/human_owner = owner + if (organ_owner.mob_mood) + organ_owner.mob_mood.mood_modifier += 0.75 + +/obj/item/organ/brain/Skrell/on_mob_remove(mob/living/carbon/organ_owner, special) + .=..() + if(ishuman(organ_owner) || QDELETED (organ_owner)) + return + + + if (organ_owner.mob_mood) + organ_owner.mob_mood.mood_modifier -= 0.75 + +/obj/item/organ/liver/Skrell/on_mob_insert(mob/living/carbon/organ_owner, special) + .=..() + if(ishuman(organ_owner)) + return + + + var/mob/living/carbon/human/human_owner = owner + human_owner.physiology.tox_mod *= 1.75 + +/obj/item/organ/liver/Skrell/on_mob_remove(mob/living/carbon/organ_owner, special) + .=..() + if(ishuman(organ_owner) || QDELETED (organ_owner)) + return + + + var/mob/living/carbon/human/human_owner = owner + human_owner.physiology.tox_mod *= 0.75 + +/obj/item/organ/heart/skrell + name = "Skrellian heart" + desc = "A blue heart able to filter the copper based blood of the Skrell." + icon_state = "heart-on" + base_icon_state = "heart" + icon = 'maplestation_modules/icons/mob/skrell_organs.dmi' + visual = FALSE + zone = BODY_ZONE_CHEST + slot = ORGAN_SLOT_HEART + +/obj/item/organ/lungs/skrell + + name = "Skrellian lungs" + desc = "The lungs of a Skrell, they still have the gills attached." + icon_state = "lungs" + icon = 'maplestation_modules/icons/mob/skrell_organs.dmi' + visual = FALSE + zone = BODY_ZONE_CHEST + slot = ORGAN_SLOT_LUNGS + +/obj/item/organ/liver/skrell + name = "Skrellian liver" + desc = "The source for the Skrell's weakness to alcohol." + icon_state = "liver" + icon = 'maplestation_modules/icons/mob/skrell_organs.dmi' + visual = FALSE + zone = BODY_ZONE_CHEST + slot = ORGAN_SLOT_LIVER + +/obj/item/organ/stomach/skrell + name = "Skrellian stomach" + desc = "A blue stomach, gross!" + icon_state = "stomach" + icon = 'maplestation_modules/icons/mob/skrell_organs.dmi' + visual = FALSE + zone = BODY_ZONE_CHEST + slot = ORGAN_SLOT_STOMACH + +/obj/item/organ/brain/skrell + name = "Skrellian brain" + desc = "The psionic brain of a Skrell." + icon_state = "brain2" + icon = 'maplestation_modules/icons/mob/skrell_organs.dmi' + visual = TRUE + zone = BODY_ZONE_HEAD + slot = ORGAN_SLOT_BRAIN + +/obj/item/organ/ears/skrell + name = "Skrellian ears" + desc = "Fish ears!" + icon_state = "ears" + icon = 'maplestation_modules/icons/mob/skrell_organs.dmi' + visual = FALSE + zone = BODY_ZONE_HEAD + slot = ORGAN_SLOT_EARS + +/obj/item/organ/eyes/high_skrell + name = "High Skrellian eyes" + desc = "The large eyes of a High Skrell." + icon_state = "eyes_high" + icon = 'maplestation_modules/icons/mob/skrell_organs.dmi' + eye_overlay_file = 'maplestation_modules/icons/mob/skrell_eyes.dmi' + eye_icon_state = "high_eyes" + eye_color_left = "" + eye_color_right = "" + zone = BODY_ZONE_PRECISE_EYES + slot = ORGAN_SLOT_EYES diff --git a/maplestation_modules/code/modules/mob/living/carbon/human/species_types/skrell.dm b/maplestation_modules/code/modules/mob/living/carbon/human/species_types/skrell.dm deleted file mode 100644 index c4b41a6b320e..000000000000 --- a/maplestation_modules/code/modules/mob/living/carbon/human/species_types/skrell.dm +++ /dev/null @@ -1,127 +0,0 @@ -// -- Modular Skrell species -- - -// The datum for Skrell. -/datum/species/skrell - name = "Skrell" - plural_form = "Skrellian" - id = SPECIES_SKRELL - inherent_traits = list(TRAIT_MUTANT_COLORS, TRAIT_LIGHT_DRINKER) - mutant_organs = list(/obj/item/organ/head_tentacles = "Long") - payday_modifier = 0.75 - changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | ERT_SPAWN | RACE_SWAP | SLIME_EXTRACT - species_language_holder = /datum/language_holder/skrell - exotic_bloodtype = /datum/blood_type/crew/skrell - mutanttongue = /obj/item/organ/tongue/skrell - species_pain_mod = 0.80 - - bodypart_overrides = list( - BODY_ZONE_L_ARM = /obj/item/bodypart/arm/left/skrell, - BODY_ZONE_R_ARM = /obj/item/bodypart/arm/right/skrell, - BODY_ZONE_HEAD = /obj/item/bodypart/head/skrell, - BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left/skrell, - BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/skrell, - BODY_ZONE_CHEST = /obj/item/bodypart/chest/skrell, - ) - - mutanteyes = /obj/item/organ/eyes/skrell - mutanttongue = /obj/item/organ/tongue/skrell - -/datum/species/skrell/spec_life(mob/living/carbon/human/skrell_mob, seconds_per_tick, times_fired) - . = ..() - if(skrell_mob.nutrition > NUTRITION_LEVEL_ALMOST_FULL) - skrell_mob.set_nutrition(NUTRITION_LEVEL_ALMOST_FULL) - -/datum/species/skrell/get_species_description() - return "Skrell are a semi-aquatic species hailing from tropical worlds." - -/datum/species/skrell/get_species_lore() - return list("Skrell lore.") - -/datum/species/skrell/create_pref_unique_perks() - var/list/perks = list() - - perks += list(list( - SPECIES_PERK_TYPE = SPECIES_POSITIVE_PERK, - SPECIES_PERK_ICON = "utensils", - SPECIES_PERK_NAME = "Weight Watchers", - SPECIES_PERK_DESC = "No matter how much they eat, the Skrell can never become overweight.", - )) - perks += list(list( - SPECIES_PERK_TYPE = SPECIES_NEGATIVE_PERK, - SPECIES_PERK_ICON = "wine-bottle", - SPECIES_PERK_NAME = "Light Drinkers", - SPECIES_PERK_DESC = "Skrell naturally don't get along with alcohol \ - and find themselves getting inebriated very easily.", - )) - return perks - -/datum/species/skrell/create_pref_blood_perks() - var/list/perks = list() - - perks += list(list( - SPECIES_PERK_TYPE = SPECIES_NEUTRAL_PERK, - SPECIES_PERK_ICON = "tint", - SPECIES_PERK_NAME = "Exotic Blood", - SPECIES_PERK_DESC = "The Skrell have a unique \"S\" type blood. Instead of \ - regaining blood from iron, they regenerate it from copper.", - )) - - return perks - -/datum/species/skrell/prepare_human_for_preview(mob/living/carbon/human/human) - human.dna.features["mcolor"] = COLOR_BLUE_GRAY - human.update_body(is_creating = TRUE) - -// Preset Skrell species -/mob/living/carbon/human/species/skrell - race = /datum/species/skrell - -// Organ for Skrell head tentacles. -/obj/item/organ/head_tentacles - zone = BODY_ZONE_HEAD - slot = ORGAN_SLOT_EXTERNAL_HEAD_TENTACLES - dna_block = DNA_HEAD_TENTACLES_BLOCK - preference = "feature_head_tentacles" - bodypart_overlay = /datum/bodypart_overlay/mutant/head_tentacles - organ_flags = parent_type::organ_flags | ORGAN_EXTERNAL - -/datum/bodypart_overlay/mutant/head_tentacles - layers = EXTERNAL_FRONT | EXTERNAL_ADJACENT - feature_key = "head_tentacles" - dyable = TRUE - -/datum/bodypart_overlay/mutant/head_tentacles/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner) - return IS_ORGANIC_LIMB(bodypart_owner) && !(bodypart_owner.owner?.obscured_slots & HIDEHAIR) - -/datum/bodypart_overlay/mutant/head_tentacles/get_global_feature_list() - return SSaccessories.head_tentacles_list - -/obj/item/bodypart/arm/left/skrell - limb_id = SPECIES_SKRELL - icon_greyscale = 'maplestation_modules/icons/mob/skrell_parts_greyscale.dmi' - -/obj/item/bodypart/arm/right/skrell - limb_id = SPECIES_SKRELL - icon_greyscale = 'maplestation_modules/icons/mob/skrell_parts_greyscale.dmi' - -/obj/item/bodypart/head/skrell - limb_id = SPECIES_SKRELL - icon_greyscale = 'maplestation_modules/icons/mob/skrell_parts_greyscale.dmi' - head_flags = HEAD_LIPS|HEAD_EYESPRITES|HEAD_EYEHOLES|HEAD_DEBRAIN - missing_eye_file = 'maplestation_modules/icons/mob/skrell_eyes.dmi' - -/obj/item/bodypart/leg/left/skrell - limb_id = SPECIES_SKRELL - icon_greyscale = 'maplestation_modules/icons/mob/skrell_parts_greyscale.dmi' - -/obj/item/bodypart/leg/right/skrell - limb_id = SPECIES_SKRELL - icon_greyscale = 'maplestation_modules/icons/mob/skrell_parts_greyscale.dmi' - -/obj/item/bodypart/chest/skrell - limb_id = SPECIES_SKRELL - icon_greyscale = 'maplestation_modules/icons/mob/skrell_parts_greyscale.dmi' - -/obj/item/organ/eyes/skrell - desc = "Gooey." - eye_overlay_file = 'maplestation_modules/icons/mob/skrell_eyes.dmi' diff --git a/maplestation_modules/code/modules/reagents/chemistry/reagents/mutation_reagents.dm b/maplestation_modules/code/modules/reagents/chemistry/reagents/mutation_reagents.dm index 5e7142702d5f..61fd80698383 100644 --- a/maplestation_modules/code/modules/reagents/chemistry/reagents/mutation_reagents.dm +++ b/maplestation_modules/code/modules/reagents/chemistry/reagents/mutation_reagents.dm @@ -20,11 +20,19 @@ Disabled as synths don't exist chemical_flags = REAGENT_CAN_BE_SYNTHESIZED */ -/datum/reagent/mutationtoxin/skrell - name = "Skrell Mutation Toxin" +/datum/reagent/mutationtoxin/high_skrell + name = "High Skrell Mutation Toxin" description = "A non-euclidian-looking toxin. It has protrusions." color = "#5EFF3B" //RGB: 94, 255, 59 - race = /datum/species/skrell + race = /datum/species/high_skrell + taste_description = "frog legs" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + +/datum/reagent/mutationtoxin/deep_skrell + name = "Deep Skrell Mutation Toxin" + description = "A non-euclidian-looking toxin. It has protrusions." + color = "#5EFF3B" //RGB: 94, 255, 59 + race = /datum/species/deep_skrell taste_description = "calamari" chemical_flags = REAGENT_CAN_BE_SYNTHESIZED diff --git a/maplestation_modules/code/modules/surgery/organs/tongue.dm b/maplestation_modules/code/modules/surgery/organs/tongue.dm index 38dbfa4e3036..8daecc787c5d 100644 --- a/maplestation_modules/code/modules/surgery/organs/tongue.dm +++ b/maplestation_modules/code/modules/surgery/organs/tongue.dm @@ -35,20 +35,36 @@ ) // Skrell Tongue. Could use a sprite. -/obj/item/organ/tongue/skrell - name = "skrellian tongue" - desc = "The source of the Skrellian people's warbling voice." +/obj/item/organ/tongue/high_skrell + name = "High Skrellian tongue" + desc = "The source of the High Skrellian people's warbling voice." say_mod = "warbles" languages_native = /datum/language/skrell - liked_foodtypes = VEGETABLES | FRUIT - disliked_foodtypes = GROSS - toxic_foodtypes = MEAT | RAW | DAIRY | TOXIC | SEAFOOD + liked_foodtypes = VEGETABLES | FRUIT | SUGAR + disliked_foodtypes = FRIED | BUGS + toxic_foodtypes = MEAT | RAW | DAIRY | GROSS | GORE | TOXIC speech_sound_list = list('maplestation_modules/sound/voice/huff.ogg' = 120) speech_sound_list_question = list('maplestation_modules/sound/voice/huff_ask.ogg' = 120) speech_sound_list_exclamation = list('maplestation_modules/sound/voice/huff_exclaim.ogg' = 120) -/obj/item/organ/tongue/skrell/get_possible_languages() +/obj/item/organ/tongue/high_skrell/get_possible_languages() + return ..() + /datum/language/skrell + +/obj/item/organ/tongue/deep_skrell + name = "Deep Skrellian tongue" + desc = "The source of the Deep Skrellian people's warbling voice." + say_mod = "warbles" + languages_native = /datum/language/skrell + liked_foodtypes = MEAT | SEAFOOD | GORE | RAW | BUGS + disliked_foodtypes = SUGAR | FRIED | NUTS + toxic_foodtypes = FRUIT | TOXIC | DAIRY | GROSS + + speech_sound_list = list('maplestation_modules/sound/voice/huff.ogg' = 120) + speech_sound_list_question = list('maplestation_modules/sound/voice/huff_ask.ogg' = 120) + speech_sound_list_exclamation = list('maplestation_modules/sound/voice/huff_exclaim.ogg' = 120) + +/obj/item/organ/tongue/deep_skrell/get_possible_languages() return ..() + /datum/language/skrell /obj/item/organ/tongue/ornithid diff --git a/maplestation_modules/icons/mob/skrell_back_tentacles.dmi b/maplestation_modules/icons/mob/skrell_back_tentacles.dmi new file mode 100644 index 000000000000..808c983ee110 Binary files /dev/null and b/maplestation_modules/icons/mob/skrell_back_tentacles.dmi differ diff --git a/maplestation_modules/icons/mob/skrell_eyes.dmi b/maplestation_modules/icons/mob/skrell_eyes.dmi index 03977a4ffb4d..8715ea5e59bd 100644 Binary files a/maplestation_modules/icons/mob/skrell_eyes.dmi and b/maplestation_modules/icons/mob/skrell_eyes.dmi differ diff --git a/maplestation_modules/icons/mob/skrell_organs.dmi b/maplestation_modules/icons/mob/skrell_organs.dmi index af3b8747aec1..c711e85b91e5 100644 Binary files a/maplestation_modules/icons/mob/skrell_organs.dmi and b/maplestation_modules/icons/mob/skrell_organs.dmi differ diff --git a/maplestation_modules/icons/mob/skrell_parts_greyscale.dmi b/maplestation_modules/icons/mob/skrell_parts_greyscale.dmi index d1d60ee0709e..7d65196b5f94 100644 Binary files a/maplestation_modules/icons/mob/skrell_parts_greyscale.dmi and b/maplestation_modules/icons/mob/skrell_parts_greyscale.dmi differ