mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2025-12-23 08:31:57 +00:00
41 lines
847 B
Plaintext
41 lines
847 B
Plaintext
/datum/expansion
|
|
var/datum/holder = null // The holder
|
|
|
|
/datum/expansion/New(var/datum/holder)
|
|
if(!istype(holder))
|
|
CRASH("Invalid holder.")
|
|
src.holder = holder
|
|
..()
|
|
|
|
/datum/expansion/Destroy()
|
|
holder = null
|
|
return ..()
|
|
|
|
/datum/expansion/CanUseTopic(var/mob/user)
|
|
return holder && user ? STATUS_INTERACTIVE : STATUS_CLOSE
|
|
|
|
/datum/expansion/Topic()
|
|
if(..())
|
|
return 1
|
|
if(CanUseTopic(usr) != STATUS_INTERACTIVE)
|
|
return 1
|
|
return 0
|
|
|
|
/obj
|
|
var/list/datum/expansion/expansions
|
|
|
|
/obj/Destroy()
|
|
if (LAZYLEN(expansions))
|
|
for(var/expansion in expansions)
|
|
qdel(expansions[expansion])
|
|
|
|
LAZYCLEARLIST(expansions)
|
|
expansions = null
|
|
return ..()
|
|
|
|
/obj/proc/set_expansion(var/type, var/instance)
|
|
LAZYINITLIST(expansions)
|
|
if(expansions[type])
|
|
qdel(expansions[type])
|
|
expansions[type] = instance
|