diff --git a/code/ZAS/Phoron.dm b/code/ZAS/Phoron.dm index 6ffec0be995..9f913d40c49 100644 --- a/code/ZAS/Phoron.dm +++ b/code/ZAS/Phoron.dm @@ -106,7 +106,7 @@ obj/var/contaminated = 0 updatehealth() //Burn eyes if exposed. - if(vsc.plc.EYE_BURNS && (species.breath_type != "phoron")) + if(vsc.plc.EYE_BURNS && species.breath_type && (species.breath_type != "phoron")) //VOREStation Edit: those who don't breathe var/burn_eyes = 1 //Check for protective glasses diff --git a/code/modules/client/preference_setup/general/03_body.dm b/code/modules/client/preference_setup/general/03_body.dm index e82daa1a8a0..55535b89bf3 100644 --- a/code/modules/client/preference_setup/general/03_body.dm +++ b/code/modules/client/preference_setup/general/03_body.dm @@ -884,7 +884,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O var/restricted = 0 - if(!(current_species.spawn_flags & SPECIES_CAN_JOIN)) //VOREStation Edit + if(!(current_species.spawn_flags & SPECIES_CAN_JOIN)) restricted = 2 else if(!is_alien_whitelisted(preference_mob(),current_species)) restricted = 1 diff --git a/code/modules/client/preference_setup/vore/01_ears.dm b/code/modules/client/preference_setup/vore/01_ears.dm index 91ae5f41c99..51e100ec9e7 100644 --- a/code/modules/client/preference_setup/vore/01_ears.dm +++ b/code/modules/client/preference_setup/vore/01_ears.dm @@ -89,10 +89,19 @@ pref.b_wing = sanitize_integer(pref.b_wing, 0, 255, initial(pref.b_wing)) if(pref.ear_style) pref.ear_style = sanitize_inlist(pref.ear_style, ear_styles_list, initial(pref.ear_style)) + var/datum/sprite_accessory/temp_ear_style = ear_styles_list[pref.ear_style] + if(temp_ear_style.apply_restrictions && (!(pref.species in temp_ear_style.species_allowed))) + pref.ear_style = initial(pref.ear_style) if(pref.tail_style) pref.tail_style = sanitize_inlist(pref.tail_style, tail_styles_list, initial(pref.tail_style)) + var/datum/sprite_accessory/temp_tail_style = tail_styles_list[pref.tail_style] + if(temp_tail_style.apply_restrictions && (!(pref.species in temp_tail_style.species_allowed))) + pref.tail_style = initial(pref.tail_style) if(pref.wing_style) pref.wing_style = sanitize_inlist(pref.wing_style, wing_styles_list, initial(pref.wing_style)) + var/datum/sprite_accessory/temp_wing_style = wing_styles_list[pref.wing_style] + if(temp_wing_style.apply_restrictions && (!(pref.species in temp_wing_style.species_allowed))) + pref.wing_style = initial(pref.wing_style) /datum/category_item/player_setup_item/vore/ears/copy_to_mob(var/mob/living/carbon/human/character) character.ear_style = ear_styles_list[pref.ear_style] @@ -182,7 +191,7 @@ var/list/pretty_ear_styles = list("Normal" = null) for(var/path in ear_styles_list) var/datum/sprite_accessory/ears/instance = ear_styles_list[path] - if((!instance.ckeys_allowed) || (usr.ckey in instance.ckeys_allowed)) + if(((!instance.ckeys_allowed) || (usr.ckey in instance.ckeys_allowed)) && ((!instance.apply_restrictions) || (pref.species in instance.species_allowed))) pretty_ear_styles[instance.name] = path // Present choice to user @@ -215,7 +224,7 @@ var/list/pretty_tail_styles = list("Normal" = null) for(var/path in tail_styles_list) var/datum/sprite_accessory/tail/instance = tail_styles_list[path] - if((!instance.ckeys_allowed) || (user.ckey in instance.ckeys_allowed)) + if(((!instance.ckeys_allowed) || (usr.ckey in instance.ckeys_allowed)) && ((!instance.apply_restrictions) || (pref.species in instance.species_allowed))) pretty_tail_styles[instance.name] = path // Present choice to user @@ -248,7 +257,7 @@ var/list/pretty_wing_styles = list("Normal" = null) for(var/path in wing_styles_list) var/datum/sprite_accessory/wing/instance = wing_styles_list[path] - if((!instance.ckeys_allowed) || (user.ckey in instance.ckeys_allowed)) + if(((!instance.ckeys_allowed) || (usr.ckey in instance.ckeys_allowed)) && ((!instance.apply_restrictions) || (pref.species in instance.species_allowed))) pretty_wing_styles[instance.name] = path // Present choice to user diff --git a/code/modules/mob/living/carbon/human/human_defines_vr.dm b/code/modules/mob/living/carbon/human/human_defines_vr.dm index d176d15d9b0..d13d44110f8 100644 --- a/code/modules/mob/living/carbon/human/human_defines_vr.dm +++ b/code/modules/mob/living/carbon/human/human_defines_vr.dm @@ -7,8 +7,8 @@ var/flapping = 0 var/vantag_pref = VANTAG_NONE //What's my status? var/impersonate_bodytype //For impersonating a bodytype - var/ability_flags = 0 //Shadekin stoof - var/sensorpref = 5 + var/ability_flags = 0 //Shadekin abilities/potentially other species-based? + var/sensorpref = 5 //Suit sensor loadout pref /mob/living/carbon/human/proc/shadekin_get_energy() var/datum/species/shadekin/SK = species diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 639425dd591..2622a1c7b02 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -887,7 +887,7 @@ for(var/obj/item/I in src) if(I.contaminated) if(check_belly(I)) continue //VOREStation Edit - if(src.species && src.species.get_bodytype() != "Vox") + if(src.species && src.species.get_bodytype() != "Vox" && src.species.get_bodytype() != "Shadekin") //VOREStation Edit: shadekin // This is hacky, I'm so sorry. if(I != l_hand && I != r_hand) //If the item isn't in your hands, you're probably wearing it. Full damage for you. total_phoronloss += vsc.plc.CONTAMINATION_LOSS diff --git a/code/modules/mob/living/carbon/human/species/shadekin/shadekin.dm b/code/modules/mob/living/carbon/human/species/shadekin/shadekin.dm index 471a601fd7d..9fbac17799a 100644 --- a/code/modules/mob/living/carbon/human/species/shadekin/shadekin.dm +++ b/code/modules/mob/living/carbon/human/species/shadekin/shadekin.dm @@ -5,13 +5,17 @@ deform = 'icons/mob/human_races/r_shadekin_vr.dmi' tail = "tail" icobase_tail = 1 - blurb = "Waow! A shaadefluffer!" + blurb = "Very little is known about these creatures. They appear to be largely mammalian in appearance. \ + Seemingly very rare to encounter, there have been widespread myths of these creatures the galaxy over, \ + but next to no verifiable evidence to their existence. However, they have recently been more verifiably \ + documented in the Virgo system, following a mining bombardment of Virgo 3. The crew of NSB Adephagia have \ + taken to calling these creatures 'Shadekin', and the name has generally stuck and spread. " //TODO: Something that's not wiki copypaste + wikilink = "https://wiki.vore-station.net/Shadekin" catalogue_data = list(/datum/category_item/catalogue/fauna/shadekin) language = LANGUAGE_SHADEKIN assisted_langs = list() - unarmed_types = list(/datum/unarmed_attack/claws/shadekin/red) - //hud_type = /datum/hud_data/shadekin + unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws/shadekin, /datum/unarmed_attack/bite/sharp/shadekin) rarity_value = 15 //INTERDIMENSIONAL FLUFFERS has_fine_manipulation = 0 @@ -41,16 +45,16 @@ flags = NO_SCAN | NO_MINOR_CUT | NO_INFECT spawn_flags = SPECIES_CAN_JOIN | SPECIES_WHITELIST_SELECTABLE - reagent_tag = IS_SHADEKIN //TODO: shadekin-unqiue chem interactions + reagent_tag = IS_SHADEKIN // for shadekin-unqiue chem interactions - flesh_color = "#34AF10" //TODO: set colors - blood_color = "#b3cbc3" - base_color = "#066000" + flesh_color = "#FFC896" + blood_color = "#A10808" + base_color = "#f0f0f0" color_mult = 1 has_glowing_eyes = TRUE - death_message = "lets out a waning guttural screech, green blood bubbling from its maw." //TODO: replace + death_message = "phases to somewhere far away!" male_cough_sounds = null female_cough_sounds = null male_sneeze_sound = null @@ -80,7 +84,7 @@ O_EYES = /obj/item/organ/internal/eyes, O_STOMACH = /obj/item/organ/internal/stomach, O_INTESTINE = /obj/item/organ/internal/intestine - ) //TODO: Phoron-immune eyes + ) has_limbs = list( BP_TORSO = list("path" = /obj/item/organ/external/chest), diff --git a/code/modules/mob/living/carbon/human/species/shadekin/shadekin_abilities.dm b/code/modules/mob/living/carbon/human/species/shadekin/shadekin_abilities.dm index 90ddef030a2..485b9884459 100644 --- a/code/modules/mob/living/carbon/human/species/shadekin/shadekin_abilities.dm +++ b/code/modules/mob/living/carbon/human/species/shadekin/shadekin_abilities.dm @@ -3,6 +3,18 @@ ///////////////////// /// PHASE SHIFT /// ///////////////////// +//Visual effect for phase in/out +/obj/effect/temp_visual/shadekin + randomdir = FALSE + duration = 5 + icon = 'icons/mob/vore_shadekin.dmi' + +/obj/effect/temp_visual/shadekin/phase_in + icon_state = "tp_in" + +/obj/effect/temp_visual/shadekin/phase_out + icon_state = "tp_out" + /datum/power/shadekin/phase_shift name = "Phase Shift (100)" desc = "Shift yourself out of alignment with realspace to travel quickly areas." @@ -56,7 +68,6 @@ B.escapable = initial(B.escapable) //overlays.Cut() - alpha = initial(alpha) invisibility = initial(invisibility) see_invisible = initial(see_invisible) incorporeal_move = initial(incorporeal_move) @@ -65,10 +76,13 @@ update_icon() //Cosmetics mostly - flick("tp_in",src) + var/obj/effect/temp_visual/shadekin/phase_in/phaseanim = new /obj/effect/temp_visual/shadekin/phase_in(src.loc) + phaseanim.dir = dir + alpha = 0 custom_emote(1,"phases in!") sleep(5) //The duration of the TP animation canmove = original_canmove + alpha = initial(alpha) //Potential phase-in vore if(can_be_drop_pred) //Toggleable in vore panel @@ -101,7 +115,9 @@ var/obj/belly/B = belly B.escapable = FALSE - //flick("tp_out",src) + var/obj/effect/temp_visual/shadekin/phase_out/phaseanim = new /obj/effect/temp_visual/shadekin/phase_out(src.loc) + phaseanim.dir = dir + alpha = 0 sleep(5) invisibility = INVISIBILITY_LEVEL_TWO see_invisible = INVISIBILITY_LEVEL_TWO diff --git a/code/modules/mob/living/carbon/human/species/shadekin/shadekin_hud.dm b/code/modules/mob/living/carbon/human/species/shadekin/shadekin_hud.dm index 5cb002b2220..5017cff7240 100644 --- a/code/modules/mob/living/carbon/human/species/shadekin/shadekin_hud.dm +++ b/code/modules/mob/living/carbon/human/species/shadekin/shadekin_hud.dm @@ -1,27 +1,3 @@ -/datum/hud_data/shadekin - icon = 'icons/mob/shadekin_hud.dmi' - has_a_intent = 1 - has_m_intent = 1 - has_warnings = 1 - has_hands = 1 - has_drop = 1 - has_throw = 1 - has_resist = 1 - has_pressure = 1 - has_nutrition = 1 - has_bodytemp = 1 - has_internals = 0 - - gear = list( - "head" = list("loc" = ui_shoes, "name" = "Hat", "slot" = slot_head, "state" = "hair", "toggle" = 1), - "suit storage" = list("loc" = ui_sstore1, "name" = "Uniform", "slot" = slot_w_uniform, "state" = "center", "toggle" = 1), - "id" = list("loc" = ui_id, "name" = "ID", "slot" = slot_wear_id, "state" = "id"), - "belt" = list("loc" = ui_belt, "name" = "Belt", "slot" = slot_belt, "state" = "belt"), - "back" = list("loc" = ui_back, "name" = "Back", "slot" = slot_back, "state" = "back"), - "storage1" = list("loc" = ui_storage1, "name" = "Left Pocket", "slot" = slot_l_store, "state" = "pocket"), - "storage2" = list("loc" = ui_storage2, "name" = "Right Pocket", "slot" = slot_r_store, "state" = "pocket") - ) - /obj/screen/shadekin icon = 'icons/mob/shadekin_hud.dmi' invisibility = 101 diff --git a/code/modules/mob/living/carbon/human/species/species_attack_vr.dm b/code/modules/mob/living/carbon/human/species/species_attack_vr.dm index 5f1950c5784..58257ae3242 100644 --- a/code/modules/mob/living/carbon/human/species/species_attack_vr.dm +++ b/code/modules/mob/living/carbon/human/species/species_attack_vr.dm @@ -46,26 +46,15 @@ target.bloodstr.add_reagent("numbenzyme",attack_damage) /datum/unarmed_attack/claws/shadekin - var/energy_gain = 0 + var/energy_gain = 3 /datum/unarmed_attack/claws/shadekin/show_attack(var/mob/living/carbon/human/user, var/mob/living/carbon/human/target, var/zone, var/attack_damage) ..() user.shadekin_adjust_energy(energy_gain) -/datum/unarmed_attack/claws/shadekin/blue - energy_gain = 1 +/datum/unarmed_attack/bite/sharp/shadekin + var/energy_gain = 3 -/datum/unarmed_attack/claws/shadekin/red - energy_gain = 8 - -/datum/unarmed_attack/claws/shadekin/yellow - energy_gain = 3 - -/datum/unarmed_attack/claws/shadekin/purple - energy_gain = 4 - -/datum/unarmed_attack/claws/shadekin/orange - energy_gain = 5 - -/datum/unarmed_attack/claws/shadekin/green - energy_gain = 1 +/datum/unarmed_attack/bite/sharp/shadekin/show_attack(var/mob/living/carbon/human/user, var/mob/living/carbon/human/target, var/zone, var/attack_damage) + ..() + user.shadekin_adjust_energy(energy_gain) \ No newline at end of file diff --git a/code/modules/mob/new_player/sprite_accessories_vr.dm b/code/modules/mob/new_player/sprite_accessories_vr.dm index 6738f530352..e0922151ee3 100644 --- a/code/modules/mob/new_player/sprite_accessories_vr.dm +++ b/code/modules/mob/new_player/sprite_accessories_vr.dm @@ -1090,7 +1090,7 @@ name = "Heterochromia" icon_state = "heterochromia" body_parts = list(BP_HEAD) - species_allowed = list(SPECIES_HUMAN, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_ZORREN_FLAT, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST) //This lets all races use the default hairstyles. + species_allowed = list(SPECIES_HUMAN, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_ZORREN_FLAT, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN) //This lets all races use the default hairstyles. werewolf_nose name = "Werewolf nose" @@ -1122,4 +1122,11 @@ icon_state = "werewolf" color_blend_mode = ICON_MULTIPLY body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND) - species_allowed = list(SPECIES_WEREBEAST) \ No newline at end of file + species_allowed = list(SPECIES_WEREBEAST) + + shadekin_snoot + name = "Shadekin Snoot" + icon_state = "shadekin-snoot" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_HEAD) + species_allowed = list(SPECIES_SHADEKIN) \ No newline at end of file diff --git a/code/modules/vore/appearance/sprite_accessories_taur_vr.dm b/code/modules/vore/appearance/sprite_accessories_taur_vr.dm index dc4ab4839c6..1f82272c2a8 100644 --- a/code/modules/vore/appearance/sprite_accessories_taur_vr.dm +++ b/code/modules/vore/appearance/sprite_accessories_taur_vr.dm @@ -163,10 +163,11 @@ name = "Shadekin Tail (Shadekin)" icon_state = "shadekin_s" can_ride = 0 - //ckeys_allowed = list("spoopylizz") hide_body_parts = null clip_mask_icon = null clip_mask_state = null + apply_restrictions = TRUE + species_allowed = list(SPECIES_SHADEKIN) /datum/sprite_accessory/tail/taur/shadekin_tail/shadekin_tail_2c name = "Shadekin Tail dual-color (Shadekin)" diff --git a/code/modules/vore/appearance/sprite_accessories_vr.dm b/code/modules/vore/appearance/sprite_accessories_vr.dm index 83132547462..2a988dd0096 100644 --- a/code/modules/vore/appearance/sprite_accessories_vr.dm +++ b/code/modules/vore/appearance/sprite_accessories_vr.dm @@ -12,6 +12,7 @@ /datum/sprite_accessory // Ckey of person allowed to use this, if defined. var/list/ckeys_allowed = null + var/apply_restrictions = FALSE //whether to apply restrictions for specific tails/ears/wings /* //////////////////////////// @@ -37,6 +38,8 @@ icon_state = "shadekin" do_colouration = 1 color_blend_mode = ICON_MULTIPLY + apply_restrictions = TRUE + species_allowed = list(SPECIES_SHADEKIN) // Ears avaliable to anyone @@ -682,6 +685,8 @@ icon_state = "shadekin-short" do_colouration = 1 color_blend_mode = ICON_MULTIPLY + apply_restrictions = TRUE + species_allowed = list(SPECIES_SHADEKIN) // Everyone tails diff --git a/icons/mob/human_races/markings_vr.dmi b/icons/mob/human_races/markings_vr.dmi index d776a68b67c..87c59161e6b 100644 Binary files a/icons/mob/human_races/markings_vr.dmi and b/icons/mob/human_races/markings_vr.dmi differ diff --git a/icons/mob/species/shadekin/shadekin.dmi b/icons/mob/species/shadekin/shadekin.dmi deleted file mode 100644 index aa789ccb057..00000000000 Binary files a/icons/mob/species/shadekin/shadekin.dmi and /dev/null differ diff --git a/icons/mob/species/shadekin/shadekin_ears.dmi b/icons/mob/species/shadekin/shadekin_ears.dmi deleted file mode 100644 index a220ce173bc..00000000000 Binary files a/icons/mob/species/shadekin/shadekin_ears.dmi and /dev/null differ diff --git a/icons/mob/species/shadekin/shadekinx64.dmi b/icons/mob/species/shadekin/shadekinx64.dmi deleted file mode 100644 index 7c298a857e8..00000000000 Binary files a/icons/mob/species/shadekin/shadekinx64.dmi and /dev/null differ