mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-26 00:51:23 +00:00
cl cacogen balance: Space cleaner in spray bottles travels 5 tiles instead of 3 (doesn't affect other reagents) balance: Trash bag fits in exosuit slot of janitor biosuit balance: All soaps are faster balance: Soaps now clean all decals on a tile instead of just one balance: Soap now has limited uses (100 for most, 300 for NT brand which janitor gets) balance: Mops are considerably faster balance: Basic mop holds twice the reagents balance: Janitorial cart now refills mops completely with one click balance: Basic and advanced mops are more robust (8 force and 12 force) balance: Galoshes no longer leave bloody footprints balance: Chameleon noslips no longer leave bloody footprints fix: Bulb boxes can be used on light replacers refill them in bulk balance: Light replacer can be used in-hand to change all bulbs on a tile add: Custodial barrier projector which creates solid wet floor signs that force people to walk to pass (available through service protolathe) /cl Janitor's been an exercise in futility for years, and the job is made redundant by janitor cyborgs who can't even keep up with the mess themselves. Spreading blood is instant, but takes a lot longer to clean. The goal here is to make it easier to keep up with the mess and make the controls less finicky while avoiding affecting combat too much (the mop and spray bottle are is a good weapons after all).
140 lines
4.8 KiB
Plaintext
140 lines
4.8 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"
|
|
item_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 = list()
|
|
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, flag)
|
|
. = ..()
|
|
if(flag)
|
|
if(!check_allowed_items(target, 1))
|
|
return
|
|
var/turf/T = get_turf(target)
|
|
var/obj/structure/holosign/H = locate(holosign_type) in T
|
|
if(H)
|
|
to_chat(user, "<span class='notice'>You use [src] to deactivate [H].</span>")
|
|
qdel(H)
|
|
else
|
|
if(!is_blocked_turf(T, TRUE)) //can't put holograms on a tile that has dense stuff
|
|
if(holocreator_busy)
|
|
to_chat(user, "<span class='notice'>[src] is busy creating a hologram.</span>")
|
|
return
|
|
if(signs.len < max_signs)
|
|
playsound(src.loc, 'sound/machines/click.ogg', 20, 1)
|
|
if(creation_time)
|
|
holocreator_busy = TRUE
|
|
if(!do_after(user, creation_time, target = target))
|
|
holocreator_busy = FALSE
|
|
return
|
|
holocreator_busy = FALSE
|
|
if(signs.len >= max_signs)
|
|
return
|
|
if(is_blocked_turf(T, TRUE)) //don't try to sneak dense stuff on our tile during the wait.
|
|
return
|
|
H = new holosign_type(get_turf(target), src)
|
|
to_chat(user, "<span class='notice'>You create \a [H] with [src].</span>")
|
|
else
|
|
to_chat(user, "<span class='notice'>[src] is projecting at max capacity!</span>")
|
|
|
|
/obj/item/holosign_creator/attack(mob/living/carbon/human/M, mob/user)
|
|
return
|
|
|
|
/obj/item/holosign_creator/attack_self(mob/user)
|
|
if(signs.len)
|
|
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_engi"
|
|
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
|
|
if(signs.len)
|
|
for(var/H in signs)
|
|
qdel(H)
|
|
shock = 0
|
|
return
|
|
else 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
|
|
if(signs.len)
|
|
for(var/H in signs)
|
|
qdel(H)
|
|
shock = 1
|
|
return
|
|
else
|
|
if(signs.len)
|
|
for(var/H in signs)
|
|
qdel(H)
|
|
to_chat(user, "<span class='notice'>You clear all active holograms.</span>")
|
|
if(signs.len)
|
|
for(var/H in signs)
|
|
qdel(H)
|
|
to_chat(user, "<span class='notice'>You clear all active holograms.</span>")
|