diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/morph/morph.dm b/code/modules/mob/living/simple_mob/subtypes/vore/morph/morph.dm
index 55c7785b1f..6f96b5e3e0 100644
--- a/code/modules/mob/living/simple_mob/subtypes/vore/morph/morph.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/vore/morph/morph.dm
@@ -93,22 +93,31 @@
form = target
visible_message("[src] suddenly twists and changes shape, becoming a copy of [target]!")
- appearance = target.appearance
- copy_overlays(target)
- alpha = max(alpha, 150) //fucking chameleons
- transform = initial(transform)
+ var/mutable_appearance/ma = new(target)
+ ma.alpha = max(ma.alpha, 150) //fucking chameleons
+ ma.transform = initial(target.transform) //will this ever be non-null?
+
+ //copy_overlays(target, TRUE) //Overlays should be a part of ma, no?
our_size_multiplier = size_multiplier
+
+ ma.pixel_x = initial(target.pixel_x)
+ ma.pixel_y = initial(target.pixel_y)
+
+ //MA changes end
+ appearance = ma
+ //Non-MA changes
+
+ density = target.density
+
if(isobj(target))
size_multiplier = 1
icon_scale_x = target.icon_scale_x
icon_scale_y = target.icon_scale_y
update_transform()
+
else if(ismob(target))
var/mob/living/M = target
resize(M.size_multiplier)
- pixel_y = initial(pixel_y)
- pixel_x = initial(pixel_x)
- density = target.density
//Morphed is weaker
melee_damage_lower = melee_damage_disguised
@@ -116,30 +125,45 @@
movement_cooldown = 5
morph_time = world.time + MORPH_COOLDOWN
+
return
-/mob/living/simple_mob/vore/hostile/morph/proc/restore()
+/mob/living/simple_mob/vore/hostile/morph/proc/restore(var/silent = FALSE)
if(!morphed)
to_chat(src, "You're already in your normal form!")
return
morphed = FALSE
+
+ if(!silent)
+ visible_message("[src] suddenly collapses in on itself, dissolving into a pile of green flesh!")
+
form = null
- alpha = initial(alpha)
- color = initial(color)
- layer = initial(layer)
- plane = initial(plane)
- maptext = null
-
- visible_message("[src] suddenly collapses in on itself, dissolving into a pile of green flesh!")
name = initial(name)
desc = initial(desc)
+
icon = initial(icon)
icon_state = initial(icon_state)
- size_multiplier = 0
- resize(our_size_multiplier)
- overlays.Cut()
+
+ alpha = initial(alpha)
+ color = initial(color)
+ plane = initial(plane)
+ layer = initial(layer)
+
+ pixel_x = initial(pixel_x)
+ pixel_y = initial(pixel_y)
+ icon_scale_x = initial(icon_scale_x)
+ icon_scale_y = initial(icon_scale_y)
+
density = initial(density)
+ cut_overlays(TRUE) //ALL of zem
+ overlays.Cut() //Annoying. ANNOYING.
+
+ maptext = null
+
+ size_multiplier = our_size_multiplier
+ resize(size_multiplier)
+
//Baseline stats
melee_damage_lower = initial(melee_damage_lower)
melee_damage_upper = initial(melee_damage_upper)
@@ -150,7 +174,7 @@
/mob/living/simple_mob/vore/hostile/morph/death(gibbed)
if(morphed)
visible_message("[src] twists and dissolves into a pile of green flesh!")
- restore()
+ restore(TRUE)
..()
/mob/living/simple_mob/vore/hostile/morph/will_show_tooltip()