diff --git a/code/game/objects/structures/barsigns.dm b/code/game/objects/structures/barsigns.dm
index 42c1f95c4b3..fbef8b501a6 100644
--- a/code/game/objects/structures/barsigns.dm
+++ b/code/game/objects/structures/barsigns.dm
@@ -5,18 +5,32 @@
icon_state = "empty"
req_access = list(access_bar)
var/list/barsigns=list()
+ var/list/hiddensigns
+ var/broken = 0
+ var/emagged = 0
+ var/state = 0
+ var/prev_sign = ""
+ var/panel_open = 0
+
+
+
/obj/structure/sign/barsign/New()
..()
+
//filling the barsigns list
for(var/bartype in typesof(/datum/barsign) - /datum/barsign)
var/datum/barsign/signinfo = new bartype
- barsigns += signinfo
+ if(!signinfo.hidden)
+ barsigns += signinfo
+
//randomly assigning a sign
set_sign(pick(barsigns))
+
+
/obj/structure/sign/barsign/proc/set_sign(var/datum/barsign/sign)
if(!istype(sign))
return
@@ -27,96 +41,201 @@
else
desc = "It displays \"[name]\"."
+
+
/obj/structure/sign/barsign/attack_ai(mob/user as mob)
return src.attack_hand(user)
+
+
/obj/structure/sign/barsign/attack_hand(mob/user as mob)
if (!src.allowed(user))
user << "Access denied."
return
-
+ if (broken)
+ user << "The controls seem unresponsive."
+ return
pick_sign()
+
+
+
+/obj/structure/sign/barsign/attackby(var/obj/item/I, var/mob/user)
+ if(!allowed(user))
+ user << "Access denied."
+ return
+ if( istype(I, /obj/item/weapon/screwdriver))
+ if(!panel_open)
+ user << "You open the maintenance panel."
+ set_sign(new /datum/barsign/hiddensigns/signoff)
+ panel_open = 1
+ else
+ user << "You close the maintenance panel."
+ if(!broken && !emagged)
+ set_sign(pick(barsigns))
+ else if(emagged)
+ set_sign(new /datum/barsign/hiddensigns/syndibarsign)
+ else
+ set_sign(new /datum/barsign/hiddensigns/empbarsign)
+ panel_open = 0
+
+ if(istype(I, /obj/item/stack/cable_coil) && panel_open)
+ var/obj/item/stack/cable_coil/C = I
+ if(emagged) //Emagged, not broken by EMP
+ user << "Sign has been damaged beyond repair."
+ return
+ else if(!broken)
+ user << "This sign is functioning properly."
+ return
+
+ if(C.use(2))
+ user << "You replace the burnt wiring."
+ broken = 0
+ else
+ user << "You need at least two lengths of cable."
+
+
+
/obj/structure/sign/barsign/emp_act(severity)
- var/prev_icon = icon_state
- icon_state = "empbarsign"
- sleep(300*severity) //measured in deci-seconds
- icon_state = prev_icon
+ set_sign(new /datum/barsign/hiddensigns/empbarsign)
+ broken = 1
+
+
+
+
+/obj/structure/sign/barsign/emag_act(mob/user)
+ if(broken || emagged)
+ user << "Nothing interesting happens."
+ return
+ user << "You emag the barsign. Takeover in progress..."
+ sleep(100) //10 seconds
+ set_sign(new /datum/barsign/hiddensigns/syndibarsign)
+ emagged = 1
+ req_access = list(access_syndicate)
+
+
/obj/structure/sign/barsign/proc/pick_sign()
var/picked_name = input("Available Signage", "Bar Sign") as null|anything in barsigns
if(!picked_name)
return
-
set_sign(picked_name)
+
//Code below is to define useless variables for datums. It errors without these
+
+
/datum/barsign
var/name = "Name"
var/icon = "Icon"
var/desc = "desc"
+ var/hidden = 0
+
//Anything below this is where all the specific signs are. If people want to add more signs, add them below.
+
+
/datum/barsign/maltesefalcon
name = "Maltese Falcon"
icon = "maltesefalcon"
- desc = "The Maltese Faclon, Space Bar and Grill"
+ desc = "The Maltese Falcon, Space Bar and Grill"
+
/datum/barsign/thebark
name = "The Bark"
icon = "thebark"
desc = "Ian's bar of choice"
+
/datum/barsign/harmbaton
name = "The Harmbaton"
icon = "theharmbaton"
desc = "A great dining experience for both security members and assistants"
+
/datum/barsign/thesingulo
name = "The Singulo"
icon = "thesingulo"
desc = "Where people go that'd rather not be called by their name"
+
/datum/barsign/thedrunkcarp
name = "The Drunk Carp"
icon = "thedrunkcarp"
desc = "Don't drink and Swim"
+
/datum/barsign/scotchservinwill
name = "Scotch Servin Willy's"
icon = "scotchservinwill"
desc = "Willy sure moved up in the world from clown to bartender"
+
/datum/barsign/officerbeersky
name = "Officer Beersky's"
icon = "officerbeersky"
desc = "Man eat a dong, these drinks are great"
+
/datum/barsign/thecavern
name = "The Cavern"
icon = "thecavern"
desc = "Fine drinks while listening to some fine tunes"
+
/datum/barsign/theouterspess
name = "The Outer Spess"
icon = "theouterspess"
desc = "This bar isn't actually located in outer space"
+
/datum/barsign/slipperyshots
name = "Slippery Shots"
icon = "slipperyshots"
desc = "Slippery slope to drunkeness with our shots!"
+
/datum/barsign/thegreytide
name = "The Grey Tide"
icon = "thegreytide"
desc = "Abandon your toolboxing ways and enjoy a lazy beer!"
+
/datum/barsign/honkednloaded
name = "Honked 'n' Loaded"
icon = "honkednloaded"
desc = "Honk."
+
+
+
+
+/datum/barsign/hiddensigns
+ hidden = 1
+
+
+//Hidden signs list below this point
+
+
+
+/datum/barsign/hiddensigns/empbarsign
+ name = "Haywire Barsign"
+ icon = "empbarsign"
+ desc = "Something has gone very wrong."
+
+
+
+/datum/barsign/hiddensigns/syndibarsign
+ name = "Syndi Cat Takeover"
+ icon = "syndibarsign"
+ desc = "Syndicate or die."
+
+
+
+/datum/barsign/hiddensigns/signoff
+ name = "Bar Sign"
+ icon = "empty"
+ desc = "This sign doesn't seem to be on."
\ No newline at end of file
diff --git a/icons/obj/barsigns.dmi b/icons/obj/barsigns.dmi
index ce25b56f081..c6b04ee3d14 100644
Binary files a/icons/obj/barsigns.dmi and b/icons/obj/barsigns.dmi differ