diff --git a/code/modules/mob/living/carbon/human/species/station.dm b/code/modules/mob/living/carbon/human/species/station.dm index 6746a773ecc..d40f03b5231 100644 --- a/code/modules/mob/living/carbon/human/species/station.dm +++ b/code/modules/mob/living/carbon/human/species/station.dm @@ -58,6 +58,7 @@ default_headacc = "Simple" default_headacc_colour = "#404040" butt_sprite = "unathi" + brute_mod = 1.05 has_organ = list( "heart" = /obj/item/organ/internal/heart, @@ -78,6 +79,38 @@ "is twisting their own neck!", "is holding their breath!") + var/datum/action/innate/tail_lash/lash = new() + + +/datum/species/unathi/handle_post_spawn(var/mob/living/carbon/human/H) + lash.Grant(H) + ..() + +/datum/action/innate/tail_lash + name = "Tail lash" + icon_icon = 'icons/effects/effects.dmi' + button_icon_state = "tail" + +/datum/action/innate/tail_lash/Activate() + var/mob/living/carbon/human/user = owner + if(!user.restrained() || !user.buckled) + to_chat(user, "You need freedom of movement to tail lash!") + return + if(user.getStaminaLoss() >= 50) + to_chat(user, "Rest before tail lashing again!") + return + for(var/mob/living/carbon/human/C in orange(1)) + var/obj/item/organ/external/E = C.get_organ(pick("l_leg", "r_leg", "l_foot", "r_foot", "groin")) + if(E) + user.changeNext_move(CLICK_CD_MELEE) + user.visible_message("[src] smacks [C] in [E] with their tail! ", "You hit [C] in [E] with your tail!") + user.adjustStaminaLoss(15) + C.apply_damage(5, BRUTE, E) + user.spin(20, 1) + playsound(user.loc, 'sound/weapons/slash.ogg', 50, 0) + + + /datum/species/unathi/handle_death(var/mob/living/carbon/human/H) H.stop_tail_wagging(1) @@ -163,6 +196,7 @@ clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT | HAS_SOCKS bodyflags = HAS_TAIL | TAIL_WAGGING | TAIL_OVERLAPPED | HAS_HEAD_ACCESSORY | HAS_MARKINGS | HAS_SKIN_COLOR dietflags = DIET_OMNI + hunger_drain = 1 taste_sensitivity = TASTE_SENSITIVITY_SHARP reagent_tag = PROCESS_ORG flesh_color = "#966464" @@ -551,11 +585,27 @@ var/list/mob/living/carbon/human/recolor_list = list() + var/datum/action/innate/regrow/grow = new() + species_abilities = list( /mob/living/carbon/human/verb/toggle_recolor_verb, /mob/living/carbon/human/proc/regrow_limbs ) +/datum/species/slime/handle_post_spawn(var/mob/living/carbon/human/H) + grow.Grant(H) + ..() + +/datum/action/innate/regrow + name = "Regrow limbs" + icon_icon = 'icons/effects/effects.dmi' + button_icon_state = "greenglow" + +/datum/action/innate/regrow/Activate() + var/mob/living/carbon/human/user = owner + user.regrow_limbs() + + /datum/species/slime/handle_life(var/mob/living/carbon/human/H) //This is allegedly for code "style". Like a plaid sweater? #define SLIMEPERSON_COLOR_SHIFT_TRIGGER 0.1 @@ -787,7 +837,8 @@ species_traits = list(NO_BREATHE, RADIMMUNE, IS_PLANT, NO_BLOOD, NO_PAIN) clothing_flags = HAS_SOCKS - dietflags = 0 //Diona regenerate nutrition in light, no diet necessary + default_hair_colour = "#000000" + dietflags = 0 //Diona regenerate nutrition in light and water, no diet necessary taste_sensitivity = TASTE_SENSITIVITY_NO_TASTE oxy_mod = 0 diff --git a/code/modules/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm index 63a8d5ad78c..d57c46e513c 100644 --- a/code/modules/mob/new_player/preferences_setup.dm +++ b/code/modules/mob/new_player/preferences_setup.dm @@ -346,12 +346,12 @@ var/icon/hair_s = new/icon("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_s") if(current_species.name == "Slime People") // whee I am part of the problem hair_s.Blend("[s_colour]A0", ICON_ADD) - else + else if(hair_style.do_colouration) hair_s.Blend(h_colour, ICON_ADD) if(hair_style.secondary_theme) var/icon/hair_secondary_s = new/icon("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_[hair_style.secondary_theme]_s") - if(!hair_style.no_sec_colour) + if(!hair_style.no_sec_colour && hair_style.do_colouration ) hair_secondary_s.Blend(h_sec_colour, ICON_ADD) hair_s.Blend(hair_secondary_s, ICON_OVERLAY) @@ -370,12 +370,12 @@ var/icon/facial_s = new/icon("icon" = facial_hair_style.icon, "icon_state" = "[facial_hair_style.icon_state]_s") if(current_species.name == "Slime People") // whee I am part of the problem facial_s.Blend("[s_colour]A0", ICON_ADD) - else + else if(facial_hair_style.do_colouration) facial_s.Blend(f_colour, ICON_ADD) if(facial_hair_style.secondary_theme) var/icon/facial_secondary_s = new/icon("icon" = facial_hair_style.icon, "icon_state" = "[facial_hair_style.icon_state]_[facial_hair_style.secondary_theme]_s") - if(!facial_hair_style.no_sec_colour) + if(!facial_hair_style.no_sec_colour && facial_hair_style.do_colouration) facial_secondary_s.Blend(f_sec_colour, ICON_ADD) facial_s.Blend(facial_secondary_s, ICON_OVERLAY) diff --git a/code/modules/mob/new_player/sprite_accessories.dm b/code/modules/mob/new_player/sprite_accessories.dm index d070baa3766..83bb2ae1322 100644 --- a/code/modules/mob/new_player/sprite_accessories.dm +++ b/code/modules/mob/new_player/sprite_accessories.dm @@ -1352,6 +1352,64 @@ name = "Clipped Vox Razorback" icon_state = "vox_razor_clipped" +//DIONA: Sprites by skittles below +/datum/sprite_accessory/hair/diona + species_allowed = list("Diona") + glasses_over = 1 + do_colouration = 0 + +/datum/sprite_accessory/hair/diona/diona_bracket + name = "Bracket" + icon_state = "diona_bracket" + +/datum/sprite_accessory/hair/diona/diona_brush + name = "Brush" + icon_state = "diona_brush" + +/datum/sprite_accessory/hair/diona/diona_cornflow + name = "Corn Flowers" + icon_state = "diona_cornflower" + +/datum/sprite_accessory/hair/diona/diona_laur + name = "Laural" + icon_state = "diona_laurel" + +/datum/sprite_accessory/hair/diona/diona_leaf + name = "Leafy" + icon_state = "diona_leafy" + +/datum/sprite_accessory/hair/diona/diona_mead + name = "Meadow" + icon_state = "diona_meadow" + +/datum/sprite_accessory/hair/diona/diona_oak + name = "Oak" + icon_state = "diona_oak" + +/datum/sprite_accessory/hair/diona/diona_root + name = "Roots" + icon_state = "diona_root" + +/datum/sprite_accessory/hair/diona/diona_rose + name = "Rose" + icon_state = "diona_rosey" + +/datum/sprite_accessory/hair/diona/diona_spinner + name = "Spinners" + icon_state = "diona_spinner" + +/datum/sprite_accessory/hair/diona/diona_spout + name = "Sprouts" + icon_state = "diona_sprout" + +/datum/sprite_accessory/hair/diona/diona_vine + name = "Vines" + icon_state = "diona_vine" + +/datum/sprite_accessory/hair/diona/diona_wildflow + name = "Wildflowers" + icon_state = "diona_wildflower" + // Apollo-specific /datum/sprite_accessory/hair/wryn diff --git a/code/modules/reagents/chemistry/reagents/water.dm b/code/modules/reagents/chemistry/reagents/water.dm index fe2afae85be..546026a4c40 100644 --- a/code/modules/reagents/chemistry/reagents/water.dm +++ b/code/modules/reagents/chemistry/reagents/water.dm @@ -513,4 +513,4 @@ if(istype(O, /obj/item/clothing/shoes/galoshes)) var/t_loc = get_turf(O) qdel(O) - new /obj/item/clothing/shoes/galoshes/dry(t_loc) + new /obj/item/clothing/shoes/galoshes/dry(t_loc) \ No newline at end of file diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi index 1e7437ec2c6..ee05d5f450e 100644 Binary files a/icons/effects/effects.dmi and b/icons/effects/effects.dmi differ diff --git a/icons/mob/human_face.dmi b/icons/mob/human_face.dmi index a5f810730fc..c7314121dce 100644 Binary files a/icons/mob/human_face.dmi and b/icons/mob/human_face.dmi differ