Skip to content

Commit

Permalink
add a fade out and in
Browse files Browse the repository at this point in the history
  • Loading branch information
pwbokie committed Jan 15, 2025
1 parent 43445be commit 1ca0d91
Showing 1 changed file with 28 additions and 14 deletions.
42 changes: 28 additions & 14 deletions code/modules/hallucinations/effects/backrooms.dm
Original file line number Diff line number Diff line change
Expand Up @@ -7,36 +7,50 @@ GLOBAL_VAR_INIT(backrooms_occupied, FALSE)
*/

/datum/hallucination_manager/backrooms
// this is the total length of the hallucination, if it's too short it cuts off the end
trigger_time = 14 SECONDS
// Human that will see the hallucination
var/mob/living/carbon/human/human_owner
// Item that will copy the owner's visible contents
var/obj/item/clone_base

/datum/hallucination_manager/backrooms/Destroy(force)
if(!ishuman(owner)) // not sure how we got here but alright
return
var/mob/living/carbon/human/human_owner = owner

GLOB.backrooms_occupied = FALSE
UnregisterSignal(human_owner, COMSIG_MOVABLE_MOVED)
human_owner.reset_perspective(human_owner)
QDEL_NULL(clone_base)
return ..()

/datum/hallucination_manager/backrooms/on_spawn()
if(!ishuman(owner))
return
var/mob/living/carbon/human/human_owner = owner

human_owner = owner
// One person at a time in the backrooms, no backroom brawls allowed.
if(GLOB.backrooms_occupied)
return
GLOB.backrooms_occupied = TRUE
fade_out_trigger()

var/obj/spawn_location = pick(GLOB.backroomswarp)
/datum/hallucination_manager/backrooms/proc/fade_out_trigger()
human_owner.overlay_fullscreen("sleepblind", /atom/movable/screen/fullscreen/center/blind/sleeping, animated = 1 SECONDS)
trigger_timer = addtimer(CALLBACK(src, PROC_REF(do_hallucination_trigger)), 1 SECONDS, TIMER_STOPPABLE)

/datum/hallucination_manager/backrooms/proc/do_hallucination_trigger()
human_owner.clear_fullscreen("sleepblind")
RegisterSignal(human_owner, COMSIG_MOVABLE_MOVED, PROC_REF(follow_movement))
var/obj/spawn_location = pick(GLOB.backroomswarp)
clone_base = new(spawn_location)
clone_base.vis_contents += human_owner
human_owner.reset_perspective(clone_base)
trigger_timer = addtimer(CALLBACK(src, PROC_REF(fade_in_trigger)), 12 SECONDS, TIMER_STOPPABLE)

/datum/hallucination_manager/backrooms/proc/fade_in_trigger()
human_owner.overlay_fullscreen("sleepblind", /atom/movable/screen/fullscreen/center/blind/sleeping, animated = 1 SECONDS)
trigger_timer = addtimer(CALLBACK(src, PROC_REF(end_fade_trigger)), 1 SECONDS, TIMER_STOPPABLE)

/datum/hallucination_manager/backrooms/proc/end_fade_trigger()
human_owner.clear_fullscreen("sleepblind")

/datum/hallucination_manager/backrooms/Destroy(force)
GLOB.backrooms_occupied = FALSE
UnregisterSignal(human_owner, COMSIG_MOVABLE_MOVED)
human_owner.reset_perspective(human_owner)
human_owner = null
QDEL_NULL(clone_base)
return ..()

/datum/hallucination_manager/backrooms/proc/follow_movement(source, atom/old_loc, dir, forced)
// signal is called above in on_spawn so that whenever our human moves, we also move the clone
Expand Down

0 comments on commit 1ca0d91

Please sign in to comment.