diff --git a/code/datums/spells/mimic.dm b/code/datums/spells/mimic.dm index 10795b832f7..6bad1845fc9 100644 --- a/code/datums/spells/mimic.dm +++ b/code/datums/spells/mimic.dm @@ -120,6 +120,7 @@ user.pixel_y = initial(user.pixel_y) user.pixel_x = initial(user.pixel_x) user.layer = MOB_LAYER // Avoids weirdness when mimicing something below the vent layer + user.density = form.density playsound(user, "bonebreak", 75, TRUE) show_change_form_message(user, old_name, "[user]") @@ -145,6 +146,7 @@ user.cut_overlays() user.icon = initial(user.icon) user.icon_state = initial(user.icon_state) + user.density = initial(user.density) if(ishuman(user)) var/mob/living/carbon/human/H = user H.name_override = null @@ -193,11 +195,14 @@ var/examine_text /// What the name of the form is var/name + /// If the form has density + var/density /datum/mimic_form/New(atom/movable/form, mob/user) appearance = form.appearance examine_text = form.examine(user) name = form.name + density = form.density /datum/spell/mimic/morph action_background_icon_state = "bg_morph" diff --git a/code/game/gamemodes/miniantags/morph/morph.dm b/code/game/gamemodes/miniantags/morph/morph.dm index 4a7f8b1ac5b..1379ec4abfe 100644 --- a/code/game/gamemodes/miniantags/morph/morph.dm +++ b/code/game/gamemodes/miniantags/morph/morph.dm @@ -188,19 +188,20 @@ mimic_spell.perfect_disguise = FALSE // Reset the perfect disguise remove_status_effect(/datum/status_effect/morph_ambush) UnregisterSignal(src, COMSIG_MOVABLE_MOVED) + add_to_all_human_data_huds() /mob/living/simple_animal/hostile/morph/proc/perfect_ambush() mimic_spell.perfect_disguise = TRUE // Reset the perfect disguise to_chat(src, "You've perfected your disguise. Making you indistinguishable from the real form!") - + remove_from_all_data_huds() /mob/living/simple_animal/hostile/morph/proc/on_move() failed_ambush() to_chat(src, "You moved out of your ambush spot!") - /mob/living/simple_animal/hostile/morph/death(gibbed) . = ..() + add_to_all_human_data_huds() if(stat == DEAD && gibbed) for(var/atom/movable/AM in src) AM.forceMove(loc) @@ -273,9 +274,11 @@ . = ..() if(. && !morphed) var/list/things = list() - for(var/atom/movable/A in view(src)) + for(var/atom/movable/A in oview(src)) if(mimic_spell.valid_target(A, src)) things += A + if(!length(things)) + return var/atom/movable/T = pick(things) mimic_spell.take_form(new /datum/mimic_form(T, src), src) prepare_ambush() // They cheat okay