mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2025-12-26 18:12:40 +00:00
71 lines
1.7 KiB
Plaintext
71 lines
1.7 KiB
Plaintext
//
|
|
// Virtual Mob
|
|
//
|
|
|
|
var/global/list/all_virtual_listeners = list()
|
|
|
|
/mob/abstract/observer/virtual
|
|
icon = 'icons/mob/abstract/virtual.dmi'
|
|
invisibility = INVISIBILITY_SYSTEM
|
|
see_in_dark = SEE_IN_DARK_DEFAULT
|
|
see_invisible = SEE_INVISIBLE_LIVING
|
|
sight = SEE_SELF
|
|
|
|
virtual_mob = null
|
|
no_z_overlay = TRUE
|
|
|
|
should_add_to_mob_list = FALSE
|
|
|
|
var/atom/movable/host
|
|
var/host_type = /atom/movable
|
|
var/abilities = VIRTUAL_ABILITY_HEAR|VIRTUAL_ABILITY_SEE
|
|
var/list/broadcast_methods
|
|
|
|
var/static/list/overlay_icons
|
|
|
|
/mob/abstract/observer/virtual/New(var/location, var/atom/movable/host)
|
|
..()
|
|
if(!istype(host, host_type))
|
|
CRASH("Received an unexpected host type. Expected [host_type], was [log_info_line(host)].")
|
|
src.host = host
|
|
moved_event.register(host, src, /atom/movable/proc/move_to_turf_or_null)
|
|
|
|
all_virtual_listeners += src
|
|
|
|
update_icon()
|
|
|
|
/mob/abstract/observer/virtual/Initialize()
|
|
. = ..()
|
|
STOP_PROCESSING(SSmob, src)
|
|
|
|
/mob/abstract/observer/virtual/Destroy()
|
|
moved_event.unregister(host, src, /atom/movable/proc/move_to_turf_or_null)
|
|
all_virtual_listeners -= src
|
|
host = null
|
|
return ..()
|
|
|
|
/mob/abstract/observer/virtual/update_icon()
|
|
if(!overlay_icons)
|
|
overlay_icons = list()
|
|
for(var/i_state in icon_states(icon))
|
|
overlay_icons[i_state] = image(icon = icon, icon_state = i_state)
|
|
overlays.Cut()
|
|
|
|
if(abilities & VIRTUAL_ABILITY_HEAR)
|
|
overlays += overlay_icons["hear"]
|
|
if(abilities & VIRTUAL_ABILITY_SEE)
|
|
overlays += overlay_icons["see"]
|
|
|
|
//
|
|
// Virtual Mob Creation
|
|
//
|
|
/atom/movable
|
|
var/mob/abstract/observer/virtual/virtual_mob
|
|
|
|
/atom/movable/Initialize()
|
|
. = ..()
|
|
if(shall_have_virtual_mob())
|
|
virtual_mob = new virtual_mob(get_turf(src), src)
|
|
|
|
/atom/movable/proc/shall_have_virtual_mob()
|
|
return ispath(initial(virtual_mob)) |