diff --git a/code/modules/hallucinations/effects/moderate.dm b/code/modules/hallucinations/effects/moderate.dm index 1dde6a4097e..df33deab824 100644 --- a/code/modules/hallucinations/effects/moderate.dm +++ b/code/modules/hallucinations/effects/moderate.dm @@ -476,3 +476,27 @@ */ /obj/effect/hallucination/delusion/proc/get_image(mob/living/carbon/human/H) return image('icons/mob/animal.dmi', H, pick("black_bear", "brown_bear", "corgi", "cow", "deer", "goat", "goose", "pig", "blank-body")) + +/** + * # Hallucination - Vent Peek + * + * A suspicious individual peers out of a nearby vent at the target. + */ +/obj/effect/hallucination/ventpeek + duration = 4 SECONDS + +/obj/effect/hallucination/ventpeek/Initialize(mapload, mob/living/carbon/hallucination_target) + . = ..() + + var/list/venttargets = list() + for(var/obj/machinery/atmospherics/unary/vent_pump/vent in oview(world.view, target)) + venttargets += vent + if(!length(venttargets)) + return INITIALIZE_HINT_QDEL + var/image/I = image('icons/effects/effects.dmi', get_turf(pick(venttargets))) + add_icon(I) + flick("hallucination_clown", I) + addtimer(CALLBACK(src, PROC_REF(play_honk)), 2.3 SECONDS) + +/obj/effect/hallucination/ventpeek/proc/play_honk() + target.playsound_local(target, 'sound/items/bikehorn.ogg', 10, TRUE) diff --git a/code/modules/hallucinations/hallucinations.dm b/code/modules/hallucinations/hallucinations.dm index 04abc2a6b12..69a87084538 100644 --- a/code/modules/hallucinations/hallucinations.dm +++ b/code/modules/hallucinations/hallucinations.dm @@ -20,6 +20,7 @@ GLOBAL_LIST_INIT(hallucinations, list( /obj/effect/hallucination/fake_item = 15, /obj/effect/hallucination/fake_weapon = 15, /obj/effect/hallucination/husks = 15, + /obj/effect/hallucination/ventpeek = 15, ), HALLUCINATE_MAJOR = list( /obj/effect/hallucination/abduction = 10, diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi index 54528f607ee..6bb68da79e7 100644 Binary files a/icons/effects/effects.dmi and b/icons/effects/effects.dmi differ