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