mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-31 03:52:31 +00:00
* Winter coat allowed item fixes (#61450) Sometime ago I cleaned a slice of the winter coats to cut on copy pasta in their allowed list and important items being missed there but I misunderstood how the global list of allowed security items work, which ended up with the global list overwriting my base list. So this fix that, also thanks Athath for bullying me about this issue a few months ago before I went on coding hiatus... Also since I was here I decided to fix the allowed list for the janitor winter coat, it had some odd items without a worn_icon so we had the annoying bugged sprites with it. * Winter coat allowed item fixes Co-authored-by: GuillaumePrata <55374212+GuillaumePrata@users.noreply.github.com>
155 lines
5.1 KiB
Plaintext
155 lines
5.1 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"
|
|
worn_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/Initialize(mapload)
|
|
. = ..()
|
|
AddElement(/datum/element/openspace_item_click_handler)
|
|
|
|
/obj/item/holosign_creator/handle_openspace_click(turf/target, mob/user, proximity_flag, click_parameters)
|
|
afterattack(target, user, proximity_flag, click_parameters)
|
|
|
|
/obj/item/holosign_creator/examine(mob/user)
|
|
. = ..()
|
|
if(!signs)
|
|
return
|
|
. += span_notice("It is currently maintaining <b>[signs.len]/[max_signs]</b> projections.")
|
|
|
|
/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_notice("You use [src] to deactivate [target_holosign]."))
|
|
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_notice("[src] is busy creating a hologram."))
|
|
return
|
|
if(LAZYLEN(signs) >= max_signs)
|
|
to_chat(user, span_notice("[src] is projecting at max capacity!"))
|
|
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_notice("You create \a [target_holosign] with [src]."))
|
|
|
|
/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_notice("You clear all active holograms."))
|
|
|
|
/obj/item/holosign_creator/Destroy()
|
|
. = ..()
|
|
if(LAZYLEN(signs))
|
|
for(var/H in signs)
|
|
qdel(H)
|
|
|
|
|
|
/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 = 6
|
|
|
|
/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_notice("You clear all active holograms, and reset your projector to normal."))
|
|
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_warning("You clear all active holograms, and overload your energy projector!"))
|
|
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_notice("You clear all active holograms."))
|