mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-18 21:15:21 +00:00
About The Pull Request Converts every single usage of playsound's vary parameter to use the boolean define instead of 1 or 0. I'm tired of people copypasting the incorrect usage. Also changes a couple of places where a list was picked from instead of using get_sfx internal calls This was done via regex: (playsound\(.+,.+,.+, ?)1( ?\)| ?,.+\)) to match 1 (playsound\(.+,.+,.+, ?)0( ?\)| ?,.+\)) to match 0 full sed commands: /(playsound\(.+,.+,.+, ?)1( ?\)| ?,.+\))/\1TRUE\2/ 1 to TRUE /(playsound\(.+,.+,.+, ?)0( ?\)| ?,.+\))/\1FALSE\2/ 0 to FALSE I'm not very good with regex and these could probably be optimized, but they worked. Why It's Good For The Game Code usability
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, TRUE)
|
|
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_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
|
|
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>")
|