diff --git a/code/modules/hydroponics/hydro_tray.dm b/code/modules/hydroponics/hydro_tray.dm
index 75169cd30c..66cf467657 100644
--- a/code/modules/hydroponics/hydro_tray.dm
+++ b/code/modules/hydroponics/hydro_tray.dm
@@ -122,6 +122,25 @@
"mutagen" = 15
)
+/obj/machinery/portable_atmospherics/hydroponics/attack_generic(var/mob/user)
+ if(istype(user,/mob/living/carbon/alien/diona))
+ var/mob/living/carbon/alien/diona/nymph = user
+
+ if(nymph.stat == DEAD || nymph.paralysis || nymph.weakened || nymph.stunned || nymph.restrained())
+ return
+
+ if(weedlevel > 0)
+ nymph.reagents.add_reagent("nutriment", weedlevel)
+ weedlevel = 0
+ nymph.visible_message("[nymph] begins rooting through [src], ripping out weeds and eating them noisily.","You begin rooting through [src], ripping out weeds and eating them noisily.")
+ else if(nymph.nutrition > 100 && nutrilevel < 10)
+ nymph.nutrition -= ((10-nutrilevel)*5)
+ nutrilevel = 10
+ nymph.visible_message("[nymph] secretes a trickle of green liquid, refilling [src].","You secrete a trickle of green liquid, refilling [src].")
+ else
+ nymph.visible_message("[nymph] rolls around in [src] for a bit.","You roll around in [src] for a bit.")
+ return
+
/obj/machinery/portable_atmospherics/hydroponics/New()
..()
temp_chem_holder = new()
diff --git a/code/modules/mob/holder.dm b/code/modules/mob/holder.dm
index 1b8cf6eee6..81e8137f04 100644
--- a/code/modules/mob/holder.dm
+++ b/code/modules/mob/holder.dm
@@ -7,6 +7,7 @@
sprite_sheets = list("Vox" = 'icons/mob/species/vox/head.dmi')
/obj/item/weapon/holder/New()
+ item_state = icon_state
..()
processing_objects.Add(src)
diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm
index 1e1748e1cc..67a134ec9b 100644
--- a/code/modules/mob/living/carbon/alien/alien.dm
+++ b/code/modules/mob/living/carbon/alien/alien.dm
@@ -11,7 +11,7 @@
var/adult_form
var/dead_icon
var/amount_grown = 0
- var/max_grown = 10
+ var/max_grown = 200
var/time_of_birth
var/language
diff --git a/code/modules/mob/living/carbon/alien/diona/diona.dm b/code/modules/mob/living/carbon/alien/diona/diona.dm
index d2e362269a..fd5a80de66 100644
--- a/code/modules/mob/living/carbon/alien/diona/diona.dm
+++ b/code/modules/mob/living/carbon/alien/diona/diona.dm
@@ -6,12 +6,6 @@
icon_state = "nymph"
language = "Rootspeak"
- amount_grown = 0
- max_grown = 5 // Target number of donors.
-
- var/list/donors = list()
- var/last_checked_stage = 0
-
universal_understand = 1
universal_speak = 0 // Dionaea do not need to speak to people other than other dionaea.
holder_type = /obj/item/weapon/holder/diona
@@ -20,7 +14,4 @@
..()
species = all_species["Diona"]
- verbs += /mob/living/carbon/proc/eat_weeds
- verbs += /mob/living/carbon/proc/fertilize_plant
- verbs += /mob/living/carbon/alien/diona/proc/steal_blood
verbs += /mob/living/carbon/alien/diona/proc/merge
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/alien/diona/diona_attacks.dm b/code/modules/mob/living/carbon/alien/diona/diona_attacks.dm
index 82f7a78902..a379af21c7 100644
--- a/code/modules/mob/living/carbon/alien/diona/diona_attacks.dm
+++ b/code/modules/mob/living/carbon/alien/diona/diona_attacks.dm
@@ -11,5 +11,6 @@
src.loc = M
else
get_scooped(M)
+ return
..()
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/alien/diona/diona_powers.dm b/code/modules/mob/living/carbon/alien/diona/diona_powers.dm
index bac7c75d2b..65e1f6b1c0 100644
--- a/code/modules/mob/living/carbon/alien/diona/diona_powers.dm
+++ b/code/modules/mob/living/carbon/alien/diona/diona_powers.dm
@@ -63,37 +63,4 @@
for(var/atom/A in M.contents)
if(istype(A,/mob/living/simple_animal/borer) || istype(A,/obj/item/weapon/holder))
return
- M.status_flags &= ~PASSEMOTES
-
-/mob/living/carbon/alien/diona/proc/steal_blood()
- set category = "Abilities"
- set name = "Steal Blood"
- set desc = "Take a blood sample from a suitable donor."
-
- if(stat == DEAD || paralysis || weakened || stunned || restrained())
- return
-
- var/list/choices = list()
- for(var/mob/living/carbon/human/H in oview(1,src))
- if(src.Adjacent(H))
- choices += H
-
- var/mob/living/carbon/human/M = input(src,"Who do you wish to take a sample from?") in null|choices
-
- if(!M || !src) return
-
- if(M.species.flags & NO_BLOOD)
- src << "\red That donor has no blood to take."
- return
-
- if(donors.Find(M.real_name))
- src << "\red That donor offers you nothing new."
- return
-
- src.visible_message("\red [src] flicks out a feeler and neatly steals a sample of [M]'s blood.","\red You flick out a feeler and neatly steal a sample of [M]'s blood.")
- donors += M.real_name
- for(var/datum/language/L in M.languages)
- languages |= L
-
- spawn(25)
- update_progression()
\ No newline at end of file
+ M.status_flags &= ~PASSEMOTES
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/alien/diona/progression.dm b/code/modules/mob/living/carbon/alien/diona/progression.dm
index b99f593a10..fa567cbb44 100644
--- a/code/modules/mob/living/carbon/alien/diona/progression.dm
+++ b/code/modules/mob/living/carbon/alien/diona/progression.dm
@@ -16,25 +16,4 @@
del(L)
src.visible_message("\red [src] begins to shift and quiver, and erupts in a shower of shed bark as it splits into a tangle of nearly a dozen new dionaea.","\red You begin to shift and quiver, feeling your awareness splinter. All at once, we consume our stored nutrients to surge with growth, splitting into a tangle of at least a dozen new dionaea. We have attained our gestalt form.")
- return "Diona"
-
-/mob/living/carbon/alien/diona/show_evolution_blurb()
- //TODO
- return
-
-/mob/living/carbon/alien/diona/update_progression()
-
- amount_grown = donors.len
-
- if(amount_grown <= last_checked_stage)
- return
-
- // Only fire off these messages once.
- last_checked_stage = amount_grown
- if(amount_grown == max_grown)
- src << "\green You feel ready to move on to your next stage of growth."
- else if(amount_grown == 3)
- universal_understand = 1
- src << "\green You feel your awareness expand, and realize you know how to understand the creatures around you."
- else
- src << "\green The blood seeps into your small form, and you draw out the echoes of memories and personality from it, working them into your budding mind."
\ No newline at end of file
+ return "Diona"
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/alien/larva/larva.dm b/code/modules/mob/living/carbon/alien/larva/larva.dm
index 8dd64654b7..2369cb9fe5 100644
--- a/code/modules/mob/living/carbon/alien/larva/larva.dm
+++ b/code/modules/mob/living/carbon/alien/larva/larva.dm
@@ -5,10 +5,6 @@
speak_emote = list("hisses")
icon_state = "larva"
language = "Hivemind"
-
- amount_grown = 0
- max_grown = 200
-
maxHealth = 25
health = 25
diff --git a/code/modules/mob/living/carbon/alien/larva/progression.dm b/code/modules/mob/living/carbon/alien/larva/progression.dm
index 50d75af813..05bab1bfde 100644
--- a/code/modules/mob/living/carbon/alien/larva/progression.dm
+++ b/code/modules/mob/living/carbon/alien/larva/progression.dm
@@ -1,8 +1,3 @@
-/mob/living/carbon/alien/larva/update_progression()
- if(amount_grown < max_grown)
- amount_grown++
- return
-
/mob/living/carbon/alien/larva/confirm_evolution()
src << "\blue You are growing into a beautiful alien! It is time to choose a caste."
diff --git a/code/modules/mob/living/carbon/alien/progression.dm b/code/modules/mob/living/carbon/alien/progression.dm
index fe3ec5d2d5..b6306ed5e2 100644
--- a/code/modules/mob/living/carbon/alien/progression.dm
+++ b/code/modules/mob/living/carbon/alien/progression.dm
@@ -41,6 +41,8 @@
del(src)
/mob/living/carbon/alien/proc/update_progression()
+ if(amount_grown < max_grown)
+ amount_grown++
return
/mob/living/carbon/alien/proc/confirm_evolution()
diff --git a/code/modules/mob/living/carbon/carbon_powers.dm b/code/modules/mob/living/carbon/carbon_powers.dm
index 6f52ac106c..65fcbc7b17 100644
--- a/code/modules/mob/living/carbon/carbon_powers.dm
+++ b/code/modules/mob/living/carbon/carbon_powers.dm
@@ -1,49 +1,3 @@
-//TODO: Consider renaming carbon/monkey to carbon/small.
-
-/mob/living/carbon/proc/fertilize_plant()
-
- set category = "Abilities"
- set name = "Fertilize plant"
- set desc = "Turn your food into nutrients for plants."
-
- if(stat == DEAD || paralysis || weakened || stunned || restrained())
- return
-
- var/list/trays = list()
- for(var/obj/machinery/portable_atmospherics/hydroponics/tray in range(1))
- if(tray.nutrilevel < 10 && src.Adjacent(tray))
- trays += tray
-
- var/obj/machinery/portable_atmospherics/hydroponics/target = input("Select a tray:") as null|anything in trays
-
- if(!src || !target || target.nutrilevel == 10) return //Sanity check.
-
- src.nutrition -= ((10-target.nutrilevel)*5)
- target.nutrilevel = 10
- src.visible_message("\red [src] secretes a trickle of green liquid, refilling [target]'s nutrient tray.","\red You secrete a trickle of green liquid from your tail, refilling [target]'s nutrient tray.")
-
-/mob/living/carbon/proc/eat_weeds()
-
- set category = "Abilities"
- set name = "Eat Weeds"
- set desc = "Clean the weeds out of soil or a hydroponics tray."
-
- if(stat == DEAD || paralysis || weakened || stunned || restrained())
- return
-
- var/list/trays = list()
- for(var/obj/machinery/portable_atmospherics/hydroponics/tray in range(1))
- if(tray.weedlevel > 0 && src.Adjacent(tray))
- trays += tray
-
- var/obj/machinery/portable_atmospherics/hydroponics/target = input("Select a tray:") as null|anything in trays
-
- if(!src || !target || target.weedlevel == 0) return //Sanity check.
-
- src.reagents.add_reagent("nutriment", target.weedlevel)
- target.weedlevel = 0
- src.visible_message("\red [src] begins rooting through [target], ripping out weeds and eating them noisily.","\red You begin rooting through [target], ripping out weeds and eating them noisily.")
-
//Brain slug proc for voluntary removal of control.
/mob/living/carbon/proc/release_control()
diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm
index cae4b35426..860f5a9a25 100644
--- a/code/modules/mob/living/carbon/human/update_icons.dm
+++ b/code/modules/mob/living/carbon/human/update_icons.dm
@@ -760,8 +760,8 @@ proc/get_damage_icon_part(damage_state, body_part)
/mob/living/carbon/human/update_inv_wear_suit(var/update_icons=1)
- if( wear_suit && istype(wear_suit, /obj/item/clothing/suit) ) //TODO check this
- wear_suit.screen_loc = ui_oclothing //TODO
+ if( wear_suit && istype(wear_suit, /obj/item/) )
+ wear_suit.screen_loc = ui_oclothing
var/image/standing
@@ -831,7 +831,7 @@ proc/get_damage_icon_part(damage_state, body_part)
if(back.icon_override)
overlays_standing[BACK_LAYER] = image("icon" = back.icon_override, "icon_state" = "[back.icon_state]")
//If this is a rig and a mob_icon is set, it will take species into account in the rig update_icon() proc.
- else if(istype(rig) && !rig.offline && rig.mob_icon)
+ else if(istype(rig) && rig.mob_icon)
overlays_standing[BACK_LAYER] = rig.mob_icon
else if(back.sprite_sheets && back.sprite_sheets[species.name])
overlays_standing[BACK_LAYER] = image("icon" = back.sprite_sheets[species.name], "icon_state" = "[back.icon_state]")
diff --git a/icons/mob/items_righthand.dmi b/icons/mob/items_righthand.dmi
index 92325b5e3d..cae6ddf042 100644
Binary files a/icons/mob/items_righthand.dmi and b/icons/mob/items_righthand.dmi differ