diff --git a/code/modules/mob/living/carbon/human/species/station.dm b/code/modules/mob/living/carbon/human/species/station.dm
index b895ed0fdd4..c88f669abef 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,24 @@
"is twisting their own neck!",
"is holding their breath!")
+ species_abilities = list(
+ /mob/living/carbon/human/proc/tail_lash
+ )
+
+/mob/living/carbon/human/proc/tail_lash()
+ set category = "IC"
+ set name = "Tail Lash"
+ set desc = "lash someone with your tail"
+
+ 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)
+ visible_message(" [src] smacks [C] in the [E] with thier tail!", "You hit [C] with your tail!")
+ adjustStaminaLoss(15)
+ C.apply_damage(5, BRUTE, E)
+
+
+
/datum/species/unathi/handle_death(var/mob/living/carbon/human/H)
H.stop_tail_wagging(1)
@@ -163,6 +182,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"
@@ -781,7 +801,7 @@
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
+ dietflags = 0 //Diona regenerate nutrition in light and water, no diet necessary
taste_sensitivity = TASTE_SENSITIVITY_NO_TASTE
oxy_mod = 0
@@ -832,6 +852,10 @@
return ..()
+/datum/species/diona/water_act(var/mob/living/carbon/C, volume, temperature, source)
+ ..()
+ C.nutrition = min(C.nutrition+volume, NUTRITION_LEVEL_WELL_FED+10)
+
/datum/species/diona/handle_life(var/mob/living/carbon/human/H)
H.radiation = Clamp(H.radiation, 0, 100) //We have to clamp this first, then decrease it, or there's a few edge cases of massive heals if we clamp and decrease at the same time.
var/rads = H.radiation / 25
@@ -844,15 +868,14 @@
if(isturf(H.loc)) //else, there's considered to be no light
var/turf/T = H.loc
light_amount = min(T.get_lumcount() * 10, 5) //hardcapped so it's not abused by having a ton of flashlights
- H.nutrition = min(H.nutrition+light_amount, NUTRITION_LEVEL_WELL_FED+10)
if(light_amount > 0)
H.clear_alert("nolight")
else
H.throw_alert("nolight", /obj/screen/alert/nolight)
- if((light_amount >= 5) && !H.suiciding) //if there's enough light, heal
-
+ if((light_amount >= 5 && H.nutrition >= NUTRITION_LEVEL_FULL ) && !H.suiciding) //if there's enough light, heal
+ H.nutrition = min(H.nutrition+light_amount, NUTRITION_LEVEL_FULL)
H.adjustBruteLoss(-(light_amount/2))
H.adjustFireLoss(-(light_amount/4))
if(H.nutrition < NUTRITION_LEVEL_STARVING+50)
diff --git a/code/modules/mob/new_player/sprite_accessories.dm b/code/modules/mob/new_player/sprite_accessories.dm
index 255be518671..cb367cfdd4e 100644
--- a/code/modules/mob/new_player/sprite_accessories.dm
+++ b/code/modules/mob/new_player/sprite_accessories.dm
@@ -1228,6 +1228,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..69b9f3ea39b 100644
--- a/code/modules/reagents/chemistry/reagents/water.dm
+++ b/code/modules/reagents/chemistry/reagents/water.dm
@@ -29,6 +29,9 @@
var/mob/living/carbon/human/H = M
+ if(IS_PLANT in H.species.species_traits)
+ H.nutrition = min(H.nutrition+volume, NUTRITION_LEVEL_WELL_FED+10)
+
if(H.get_species() != "Grey") //God this is so gross I hate it.
return
@@ -58,6 +61,9 @@
if(ishuman(M))
var/mob/living/carbon/human/H = M
+ if(IS_PLANT in H.species.species_traits)
+ H.nutrition = min(H.nutrition+volume, NUTRITION_LEVEL_WELL_FED+10)
+
if(H.get_species() != "Grey")
return
@@ -514,3 +520,10 @@
var/t_loc = get_turf(O)
qdel(O)
new /obj/item/clothing/shoes/galoshes/dry(t_loc)
+
+/datum/reagent/drying_agent/reaction_mob(mob/living/M, method=TOUCH, volume)
+ if(ishuman(M))
+ var/mob/living/carbon/human/H = M
+ if(IS_PLANT in H.species.species_traits)
+ H.nutrition -= volume
+ H.adjustToxLoss(50)
diff --git a/icons/mob/human_face.dmi b/icons/mob/human_face.dmi
index 12130e15e93..38ba2484482 100644
Binary files a/icons/mob/human_face.dmi and b/icons/mob/human_face.dmi differ