Files
Bubberstation/code/game/objects/items/holosign_creator.dm
SkyratBot 11ca98cbb9 [MIRROR] holosign little refractor (#1263)
* holosign little refractor (#54287)

* holosign little refractor

Co-authored-by: Ghilker <42839747+Ghilker@users.noreply.github.com>
2020-10-12 23:16:23 +02:00

134 lines
4.7 KiB
Plaintext

/obj/item/holosign_creator
name = "holographic sign projector"
desc = "A handy-dandy holographic projector that displays a janitorial sign."
icon = 'icons/obj/device.dmi'
icon_state = "signmaker"
inhand_icon_state = "electronic"
lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi'
righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi'
force = 0
w_class = WEIGHT_CLASS_SMALL
throwforce = 0
throw_speed = 3
throw_range = 7
item_flags = NOBLUDGEON
var/list/signs
var/max_signs = 10
var/creation_time = 0 //time to create a holosign in deciseconds.
var/holosign_type = /obj/structure/holosign/wetsign
var/holocreator_busy = FALSE //to prevent placing multiple holo barriers at once
/obj/item/holosign_creator/afterattack(atom/target, mob/user, proximity_flag)
. = ..()
if(!proximity_flag)
return
if(!check_allowed_items(target, not_inside = TRUE))
return
var/turf/target_turf = get_turf(target)
var/obj/structure/holosign/target_holosign = locate(holosign_type) in target_turf
if(target_holosign)
to_chat(user, "<span class='notice'>You use [src] to deactivate [target_holosign].</span>")
qdel(target_holosign)
return
if(target_turf.is_blocked_turf(TRUE)) //can't put holograms on a tile that has dense stuff
return
if(holocreator_busy)
to_chat(user, "<span class='notice'>[src] is busy creating a hologram.</span>")
return
if(LAZYLEN(signs) >= max_signs)
to_chat(user, "<span class='notice'>[src] is projecting at max capacity!</span>")
return
playsound(loc, 'sound/machines/click.ogg', 20, TRUE)
if(creation_time)
holocreator_busy = TRUE
if(!do_after(user, creation_time, target = target))
holocreator_busy = FALSE
return
holocreator_busy = FALSE
if(LAZYLEN(signs) >= max_signs)
return
if(target_turf.is_blocked_turf(TRUE)) //don't try to sneak dense stuff on our tile during the wait.
return
target_holosign = new holosign_type(get_turf(target), src)
to_chat(user, "<span class='notice'>You create \a [target_holosign] with [src].</span>")
/obj/item/holosign_creator/attack(mob/living/carbon/human/M, mob/user)
return
/obj/item/holosign_creator/attack_self(mob/user)
if(LAZYLEN(signs))
for(var/H in signs)
qdel(H)
to_chat(user, "<span class='notice'>You clear all active holograms.</span>")
/obj/item/holosign_creator/janibarrier
name = "custodial holobarrier projector"
desc = "A holographic projector that creates hard light wet floor barriers."
holosign_type = /obj/structure/holosign/barrier/wetsign
creation_time = 20
max_signs = 12
/obj/item/holosign_creator/security
name = "security holobarrier projector"
desc = "A holographic projector that creates holographic security barriers."
icon_state = "signmaker_sec"
holosign_type = /obj/structure/holosign/barrier
creation_time = 30
max_signs = 6
/obj/item/holosign_creator/engineering
name = "engineering holobarrier projector"
desc = "A holographic projector that creates holographic engineering barriers."
icon_state = "signmaker_engi"
holosign_type = /obj/structure/holosign/barrier/engineering
creation_time = 30
max_signs = 6
/obj/item/holosign_creator/atmos
name = "ATMOS holofan projector"
desc = "A holographic projector that creates holographic barriers that prevent changes in atmosphere conditions."
icon_state = "signmaker_atmos"
holosign_type = /obj/structure/holosign/barrier/atmos
creation_time = 0
max_signs = 3
/obj/item/holosign_creator/medical
name = "\improper PENLITE barrier projector"
desc = "A holographic projector that creates PENLITE holobarriers. Useful during quarantines since they halt those with malicious diseases."
icon_state = "signmaker_med"
holosign_type = /obj/structure/holosign/barrier/medical
creation_time = 30
max_signs = 3
/obj/item/holosign_creator/cyborg
name = "Energy Barrier Projector"
desc = "A holographic projector that creates fragile energy fields."
creation_time = 15
max_signs = 9
holosign_type = /obj/structure/holosign/barrier/cyborg
var/shock = 0
/obj/item/holosign_creator/cyborg/attack_self(mob/user)
if(iscyborg(user))
var/mob/living/silicon/robot/R = user
if(shock)
to_chat(user, "<span class='notice'>You clear all active holograms, and reset your projector to normal.</span>")
holosign_type = /obj/structure/holosign/barrier/cyborg
creation_time = 5
for(var/sign in signs)
qdel(sign)
shock = 0
return
if(R.emagged&&!shock)
to_chat(user, "<span class='warning'>You clear all active holograms, and overload your energy projector!</span>")
holosign_type = /obj/structure/holosign/barrier/cyborg/hacked
creation_time = 30
for(var/sign in signs)
qdel(sign)
shock = 1
return
for(var/sign in signs)
qdel(sign)
to_chat(user, "<span class='notice'>You clear all active holograms.</span>")