Improves barsigns and makes them buildable. (#24685)

* Improves barsigns and makes them buildable.

* Requested fixes.

* fingerprints and a parent call on attack_hand() (sure hope this doesn't break anything)

* More fixes.  (the change to barsigns.dmi is removing a bunch of almost-transparent pixels on the mead bay sign that shouldn't have been there)

* Even more fixes.

* Better code and sprite fixes.

* early returns

* better

* more

* switch

* qwertyuiop

* whoops

* maps are stupid

* mcramon sprites :o

* i hope mapmerge works this time

* i hope mapmerge works THIS time

* zrsxdctfhghfcdszzsxdgcfhv

---------

Co-authored-by: S34N <12197162+S34NW@users.noreply.github.com>
This commit is contained in:
Divulf
2024-05-02 21:59:35 +12:00
committed by GitHub
parent fd30c12047
commit 15e7fcdb3f
14 changed files with 718 additions and 327 deletions
@@ -3133,10 +3133,6 @@
icon_state = "stage_stairs"
},
/area/ruin/space/derelict/crew_quarters)
"hF" = (
/obj/structure/sign/barsign,
/turf/simulated/wall/mineral/titanium/nodecon,
/area/ruin/space/derelict/crew_quarters)
"hH" = (
/obj/machinery/door/airlock/public/glass{
name = "Eastern Annex"
@@ -7553,6 +7549,13 @@
},
/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal,
/area/ruin/space/derelict/arrival)
"Ef" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/barsign{
pixel_y = 32
},
/turf/simulated/floor/plasteel/dark,
/area/ruin/space/derelict/crew_quarters)
"Nv" = (
/obj/effect/spawner/airlock{
req_access_txt = 0
@@ -13520,8 +13523,8 @@ gn
gG
gG
gG
hF
hT
aV
Ef
in
iK
je
+22 -16
View File
@@ -1121,6 +1121,12 @@
icon_state = "cafeteria"
},
/area/ghost_bar)
"et" = (
/obj/machinery/barsign/ghost_bar{
pixel_y = 32
},
/turf/simulated/floor/wood,
/area/ghost_bar)
"ev" = (
/turf/simulated/floor/beach/sand,
/area/holodeck/source_beach)
@@ -2689,6 +2695,15 @@
/obj/structure/chair/stool,
/turf/simulated/floor/mineral/plastitanium/red,
/area/shuttle/syndicate)
"jA" = (
/obj/machinery/barsign{
pixel_y = 32
},
/turf/simulated/floor/plasteel{
dir = 1;
icon_state = "green"
},
/area/centcom/evac)
"jB" = (
/obj/structure/table/wood,
/obj/machinery/door_control/no_emag{
@@ -5375,10 +5390,6 @@
/obj/effect/landmark/spawner/syndie,
/turf/simulated/floor/wood,
/area/syndicate_mothership)
"sd" = (
/obj/structure/sign/barsign,
/turf/simulated/wall/indestructible/riveted,
/area/ghost_bar)
"se" = (
/obj/structure/chair/comfy/shuttle{
dir = 4
@@ -7985,7 +7996,7 @@
/turf/simulated/wall/indestructible/syndicate,
/area/admin)
"Cv" = (
/obj/structure/sign/barsign{
/obj/machinery/barsign{
pixel_y = -32
},
/obj/machinery/icemachine,
@@ -9238,7 +9249,7 @@
/area/centcom/specops)
"GT" = (
/obj/structure/chair,
/obj/structure/sign/barsign{
/obj/machinery/barsign{
pixel_y = 32
},
/obj/effect/landmark/spawner/tdomeobserve,
@@ -12930,7 +12941,7 @@
pixel_y = 5
},
/obj/structure/table/wood,
/obj/structure/sign/barsign{
/obj/machinery/barsign{
pixel_y = -32
},
/turf/simulated/floor/plasteel{
@@ -13931,11 +13942,6 @@
},
/turf/simulated/wall/indestructible/fakeglass,
/area/centcom/specops)
"Xi" = (
/obj/effect/spawner/window,
/obj/structure/sign/barsign,
/turf/simulated/floor/plating,
/area/centcom/evac)
"Xj" = (
/turf/simulated/floor/transparent/glass,
/area/centcom/specops)
@@ -46023,8 +46029,8 @@ Ng
Ng
So
Vs
Xi
Xx
Qe
jA
YO
ZZ
gI
@@ -73030,8 +73036,8 @@ vd
Ml
vd
xy
sd
Jy
Me
et
Jy
Jy
Jy
+8 -6
View File
@@ -24963,10 +24963,6 @@
"bzd" = (
/turf/simulated/floor/plasteel/goonplaque/memorial,
/area/station/hallway/secondary/exit)
"bze" = (
/obj/structure/sign/barsign,
/turf/simulated/wall,
/area/station/service/bar)
"bzf" = (
/turf/simulated/floor/plasteel{
dir = 1;
@@ -76275,6 +76271,12 @@
},
/turf/simulated/floor/plating,
/area/station/maintenance/apmaint)
"pcF" = (
/obj/machinery/barsign{
pixel_y = 32
},
/turf/simulated/floor/plasteel,
/area/station/hallway/primary/starboard/west)
"pcH" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/disposalpipe/segment,
@@ -130569,8 +130571,8 @@ bmq
bmq
bmq
bzo
bze
bAk
aUS
pcF
bHy
bDb
bEy
+9 -23
View File
@@ -3620,7 +3620,6 @@
icon_state = "4-8"
},
/turf/simulated/floor/plasteel{
dir = 2;
icon_state = "green"
},
/area/station/public/quantum/service)
@@ -26138,10 +26137,6 @@
"cMz" = (
/turf/simulated/wall/r_wall,
/area/station/maintenance/fore)
"cMA" = (
/obj/structure/sign/barsign,
/turf/simulated/wall,
/area/station/maintenance/gambling_den)
"cME" = (
/obj/structure/cable/orange{
d1 = 2;
@@ -48367,10 +48362,6 @@
},
/turf/simulated/floor/plating,
/area/station/hallway/spacebridge/serveng)
"iwJ" = (
/obj/structure/sign/barsign,
/turf/simulated/wall,
/area/station/service/bar)
"iwU" = (
/obj/structure/sign/directions/evac{
dir = 4;
@@ -54698,7 +54689,6 @@
icon_state = "0-8"
},
/turf/simulated/floor/plasteel{
dir = 2;
icon_state = "green"
},
/area/station/public/quantum/service)
@@ -62093,6 +62083,9 @@
/obj/structure/chair/sofa/corp{
dir = 1
},
/obj/machinery/barsign{
pixel_y = -32
},
/turf/simulated/floor/carpet,
/area/station/hallway/primary/port/east)
"mJX" = (
@@ -62400,6 +62393,9 @@
"mPu" = (
/obj/structure/table/wood/poker,
/obj/effect/spawner/lootdrop/maintenance,
/obj/machinery/barsign{
pixel_y = 32
},
/turf/simulated/floor/wood{
icon_state = "wood-broken"
},
@@ -70189,16 +70185,6 @@
icon_state = "white"
},
/area/station/science/misc_lab)
"pqq" = (
/obj/machinery/door/airlock/multi_tile/glass{
dir = 4
},
/obj/effect/mapping_helpers/airlock/autoname,
/obj/machinery/door/firedoor,
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
/area/station/public/quantum/security)
"pqr" = (
/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
dir = 4
@@ -116888,7 +116874,7 @@ xla
sZf
aWA
iEe
pqq
bNX
ibX
jzf
hPy
@@ -118729,7 +118715,7 @@ pkc
iqL
rZl
mJT
iwJ
aZZ
iox
bjr
rRc
@@ -122101,7 +122087,7 @@ bhO
hUU
sbn
sbn
cMA
uJT
mPu
mER
oWa
+107 -107
View File
@@ -2819,7 +2819,7 @@
/area/station/maintenance/fore)
"aqv" = (
/obj/structure/table/wood,
/obj/structure/sign/barsign{
/obj/machinery/barsign{
pixel_y = 32
},
/obj/item/wrench,
@@ -4880,7 +4880,7 @@
/turf/simulated/floor/engine,
/area/station/engineering/controlroom)
"avL" = (
/obj/structure/sign/barsign{
/obj/machinery/barsign{
pixel_y = 32
},
/turf/simulated/floor/plasteel{
@@ -9070,7 +9070,7 @@
/area/station/service/bar)
"aGA" = (
/obj/structure/table/wood,
/obj/structure/sign/barsign{
/obj/machinery/barsign{
pixel_y = 32
},
/obj/machinery/chem_dispenser/soda{
@@ -10213,6 +10213,12 @@
/obj/effect/landmark/spawner/nukedisc_respawn,
/turf/simulated/floor/plating,
/area/station/maintenance/auxsolarport)
"aJK" = (
/obj/machinery/light,
/obj/effect/turf_decal/stripes/line,
/obj/machinery/alarm/directional/south,
/turf/simulated/floor/plasteel,
/area/station/hallway/secondary/exit)
"aJM" = (
/obj/structure/cable{
d1 = 1;
@@ -13792,10 +13798,6 @@
icon_state = "bar"
},
/area/station/service/bar)
"aTq" = (
/obj/effect/spawner/airlock,
/turf/simulated/wall,
/area/station/hallway/secondary/exit)
"aTr" = (
/obj/machinery/atmospherics/unary/vent_pump/on{
dir = 1
@@ -54207,7 +54209,7 @@
/obj/machinery/light{
dir = 1
},
/obj/structure/sign/barsign{
/obj/machinery/barsign{
pixel_y = 32
},
/turf/simulated/floor/plating,
@@ -61709,13 +61711,21 @@
/turf/simulated/floor/plasteel,
/area/station/hallway/primary/aft/south)
"dHO" = (
/obj/effect/spawner/window/reinforced/grilled,
/obj/structure/cable{
d1 = 2;
d2 = 8;
icon_state = "2-8"
},
/obj/structure/cable{
d1 = 1;
d2 = 2;
icon_state = "1-2"
d2 = 8;
icon_state = "1-8"
},
/obj/structure/cable{
d2 = 8;
icon_state = "0-8"
},
/obj/structure/cable,
/obj/effect/spawner/window/reinforced/grilled,
/turf/simulated/floor/plating,
/area/station/hallway/secondary/exit)
"dHQ" = (
@@ -62691,17 +62701,6 @@
},
/turf/simulated/floor/carpet/blue,
/area/station/command/office/blueshield)
"dNS" = (
/obj/docking_port/stationary{
dir = 4;
dwidth = 16;
height = 21;
id = "emergency_home";
name = "emergency evac bay";
width = 41
},
/turf/space,
/area/space)
"dNZ" = (
/obj/effect/decal/cleanable/dirt,
/turf/simulated/floor/plasteel{
@@ -63949,16 +63948,6 @@
/obj/item/crowbar/red,
/turf/simulated/floor/plasteel/dark,
/area/station/maintenance/apmaint)
"dSB" = (
/obj/machinery/atmospherics/unary/portables_connector{
dir = 8
},
/obj/machinery/atmospherics/portable/canister/air,
/obj/effect/turf_decal/stripes/line{
dir = 10
},
/turf/simulated/floor/plasteel,
/area/station/hallway/secondary/exit)
"dSD" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
@@ -64691,12 +64680,6 @@
icon_state = "neutralfull"
},
/area/station/hallway/primary/central)
"dUY" = (
/obj/machinery/light,
/obj/effect/turf_decal/stripes/line,
/obj/machinery/alarm/directional/south,
/turf/simulated/floor/plasteel,
/area/station/hallway/secondary/exit)
"dUZ" = (
/obj/machinery/light,
/obj/machinery/status_display{
@@ -66432,6 +66415,16 @@
/obj/effect/decal/cleanable/dirt,
/turf/simulated/wall,
/area/station/legal/lawoffice)
"evE" = (
/obj/structure/cable{
d1 = 1;
d2 = 2;
icon_state = "1-2"
},
/obj/structure/cable,
/obj/effect/spawner/window/reinforced/grilled,
/turf/simulated/floor/plating,
/area/station/hallway/secondary/exit)
"evX" = (
/obj/structure/cable,
/obj/effect/spawner/window/reinforced/grilled,
@@ -66566,6 +66559,22 @@
icon_state = "yellowcorner"
},
/area/station/hallway/primary/port/east)
"ezr" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 6
},
/obj/structure/cable{
d1 = 4;
d2 = 8;
icon_state = "4-8"
},
/obj/structure/cable{
d1 = 2;
d2 = 4;
icon_state = "2-4"
},
/turf/simulated/floor/plasteel/white,
/area/station/medical/virology)
"ezR" = (
/obj/effect/decal/cleanable/dirt,
/turf/simulated/floor/plasteel{
@@ -69236,6 +69245,10 @@
icon_state = "redyellowfull"
},
/area/station/maintenance/fsmaint)
"gcP" = (
/obj/effect/spawner/airlock,
/turf/simulated/wall,
/area/station/hallway/secondary/exit)
"gdJ" = (
/obj/effect/spawner/window/reinforced/grilled,
/turf/simulated/floor/plating,
@@ -71023,6 +71036,16 @@
},
/turf/simulated/floor/plating,
/area/station/command/office/rd)
"hli" = (
/obj/machinery/atmospherics/unary/portables_connector{
dir = 8
},
/obj/machinery/atmospherics/portable/canister/air,
/obj/effect/turf_decal/stripes/line{
dir = 10
},
/turf/simulated/floor/plasteel,
/area/station/hallway/secondary/exit)
"hly" = (
/obj/structure/table/wood,
/turf/simulated/floor/plasteel/dark,
@@ -75560,15 +75583,6 @@
icon_state = "whiteblue"
},
/area/station/medical/storage)
"kdg" = (
/obj/structure/sign/vacuum{
pixel_x = -32
},
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/turf/simulated/floor/plasteel,
/area/station/hallway/secondary/exit)
"kdm" = (
/obj/machinery/power/apc/critical/directional/north,
/obj/machinery/firealarm{
@@ -75669,6 +75683,15 @@
},
/turf/simulated/floor/plasteel/dark,
/area/station/medical/morgue)
"kfC" = (
/obj/structure/sign/vacuum{
pixel_x = -32
},
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/turf/simulated/floor/plasteel,
/area/station/hallway/secondary/exit)
"kfT" = (
/obj/structure/cable{
d2 = 4;
@@ -76089,6 +76112,17 @@
/obj/effect/spawner/random_spawners/blood_maybe,
/turf/simulated/floor/plating,
/area/station/maintenance/fsmaint)
"ksE" = (
/obj/docking_port/stationary{
dir = 4;
dwidth = 16;
height = 21;
id = "emergency_home";
name = "emergency evac bay";
width = 41
},
/turf/space,
/area/space)
"ksV" = (
/obj/machinery/door/airlock/maintenance,
/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance,
@@ -82354,22 +82388,6 @@
icon_state = "red"
},
/area/station/security/permabrig)
"ogR" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 6
},
/obj/structure/cable{
d1 = 4;
d2 = 8;
icon_state = "4-8"
},
/obj/structure/cable{
d1 = 2;
d2 = 4;
icon_state = "2-4"
},
/turf/simulated/floor/plasteel/white,
/area/station/medical/virology)
"ogX" = (
/obj/machinery/camera{
c_tag = "Experimentation Lab Office";
@@ -91307,6 +91325,21 @@
},
/turf/simulated/floor/plasteel,
/area/station/science/research)
"tjT" = (
/obj/item/radio/intercom{
name = "west bump";
pixel_x = -28
},
/obj/machinery/newscaster{
dir = 1;
name = "south bump";
pixel_y = -28
},
/obj/effect/turf_decal/stripes/line{
dir = 10
},
/turf/simulated/floor/plasteel,
/area/station/hallway/secondary/exit)
"tkb" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 6
@@ -91839,24 +91872,6 @@
icon_state = "yellowcorner"
},
/area/station/hallway/primary/port/west)
"tEp" = (
/obj/effect/spawner/window/reinforced/grilled,
/obj/structure/cable{
d1 = 2;
d2 = 8;
icon_state = "2-8"
},
/obj/structure/cable{
d1 = 1;
d2 = 8;
icon_state = "1-8"
},
/obj/structure/cable{
d2 = 8;
icon_state = "0-8"
},
/turf/simulated/floor/plating,
/area/station/hallway/secondary/exit)
"tEw" = (
/obj/structure/showcase{
density = 0;
@@ -92354,21 +92369,6 @@
/obj/effect/spawner/window/reinforced/grilled,
/turf/simulated/floor/plating,
/area/station/security/prison/cell_block)
"tSp" = (
/obj/item/radio/intercom{
name = "west bump";
pixel_x = -28
},
/obj/machinery/newscaster{
dir = 1;
name = "south bump";
pixel_y = -28
},
/obj/effect/turf_decal/stripes/line{
dir = 10
},
/turf/simulated/floor/plasteel,
/area/station/hallway/secondary/exit)
"tSt" = (
/obj/structure/table,
/obj/item/reagent_containers/drinks/drinkingglass{
@@ -136687,7 +136687,7 @@ dIx
dIx
dIx
dIx
aTq
gcP
abj
aaa
aaa
@@ -137198,7 +137198,7 @@ dPM
dkq
dSs
dSP
dSB
hli
dIH
dIH
dIH
@@ -137456,8 +137456,8 @@ dNa
dXJ
dKo
dUj
kdg
tSp
kfC
tjT
dIH
abj
aaa
@@ -138742,7 +138742,7 @@ joI
dNc
dNQ
dOw
dUY
aJK
dIH
abj
aaa
@@ -140526,10 +140526,10 @@ pIY
kuJ
kpd
kpd
tEp
dHO
dHO
dHO
evE
evE
evE
tJT
dKQ
jpk
@@ -141304,7 +141304,7 @@ aaa
aaa
aaa
aaa
dNS
ksE
aaa
aaa
aaa
@@ -149011,7 +149011,7 @@ dGw
dGw
hGZ
qgr
ogR
ezr
wWW
qfH
sRk
+10 -6
View File
@@ -6218,10 +6218,6 @@
},
/turf/simulated/floor/plasteel,
/area/station/engineering/control)
"aHe" = (
/obj/structure/sign/barsign,
/turf/simulated/wall,
/area/station/service/bar)
"aHg" = (
/obj/effect/turf_decal/stripes/line{
dir = 1
@@ -45393,6 +45389,14 @@
icon_state = "neutralcorner"
},
/area/station/hallway/primary/central/west)
"dKD" = (
/obj/machinery/barsign{
pixel_y = -32
},
/turf/simulated/floor/plasteel{
icon_state = "redcorner"
},
/area/station/hallway/primary/starboard)
"dKK" = (
/obj/effect/spawner/window/reinforced/grilled,
/turf/simulated/floor/plating,
@@ -127034,8 +127038,8 @@ bjp
bez
vtx
boY
bqA
aHe
dKD
bsp
ded
bEv
bEv
+8 -6
View File
@@ -454,6 +454,12 @@
},
/turf/simulated/floor/pod,
/area/ruin/powered/beach)
"qe" = (
/obj/machinery/barsign{
pixel_y = 32
},
/turf/simulated/floor/beach/sand,
/area/ruin/powered/beach)
"qT" = (
/obj/machinery/shower{
dir = 8
@@ -491,10 +497,6 @@
},
/turf/simulated/floor/beach/sand,
/area/ruin/powered/beach)
"Ds" = (
/obj/structure/sign/barsign,
/turf/simulated/wall/mineral/sandstone,
/area/ruin/powered/beach)
"Ec" = (
/obj/machinery/door/airlock/sandstone{
name = "Beach Access"
@@ -1087,8 +1089,8 @@ aC
aC
aC
JF
Ds
bE
aj
qe
bE
bE
bE
+1 -1
View File
@@ -1172,7 +1172,7 @@ GLOBAL_LIST_INIT(wall_items, typecacheof(list(/obj/machinery/power/apc, /obj/mac
/obj/machinery/computer/security/telescreen, /obj/machinery/airlock_controller,
/obj/item/storage/secure/safe, /obj/machinery/door_timer, /obj/machinery/flasher, /obj/machinery/keycard_auth,
/obj/structure/mirror, /obj/structure/closet/fireaxecabinet, /obj/machinery/computer/security/telescreen/entertainment,
/obj/structure/sign)))
/obj/structure/sign, /obj/machinery/barsign)))
/proc/gotwallitem(loc, dir)
for(var/obj/O in loc)
+1 -1
View File
@@ -26,7 +26,7 @@
/atom/movable/lighting_object,
/obj/machinery/dna_vault,
/obj/machinery/power/bluespace_tap,
/obj/structure/sign/barsign,
/obj/machinery/barsign,
/obj/machinery/atmospherics/unary/cryo_cell,
/obj/machinery/gravity_generator
)
@@ -113,6 +113,7 @@ GLOBAL_LIST_INIT(metal_recipes, list(
new /datum/stack_recipe("air alarm frame", /obj/item/mounted/frame/alarm_frame, 2),
new /datum/stack_recipe("fire alarm frame", /obj/item/mounted/frame/firealarm, 2),
new /datum/stack_recipe("intercom frame", /obj/item/mounted/frame/intercom, 2),
new /datum/stack_recipe/barsign_frame("bar sign frame", /obj/machinery/barsign, 4),
new /datum/stack_recipe("extinguisher cabinet frame", /obj/item/mounted/frame/extinguisher, 2),
null
))
+532 -154
View File
@@ -1,34 +1,46 @@
/// All Signs are 64 by 32 pixels, they take two tiles
/obj/structure/sign/barsign
#define BARSIGN_FRAME 0
#define BARSIGN_CIRCUIT 1
#define BARSIGN_WIRED 2
#define BARSIGN_COMPLETE 3
// All Signs are 64 by 32 pixels, they take two tiles
/obj/machinery/barsign
name = "Bar Sign"
desc = "A bar sign with no writing on it."
icon = 'icons/obj/barsigns.dmi'
icon_state = "empty"
icon_state = "off"
req_access = list(ACCESS_BAR)
max_integrity = 500
integrity_failure = 250
armor = list(MELEE = 20, BULLET = 20, LASER = 20, ENERGY = 100, BOMB = 0, RAD = 0, FIRE = 50, ACID = 50)
var/list/barsigns=list()
var/list/hiddensigns
max_integrity = 200
integrity_failure = 160
idle_power_consumption = 5
active_power_consumption = 25
power_state = ACTIVE_POWER_USE
armor = list(MELEE = 0, BULLET = 0, LASER = 20, ENERGY = 100, BOMB = 0, RAD = 100, FIRE = 50, ACID = 50)
anchored = TRUE
layer = ABOVE_WINDOW_LAYER
var/list/barsigns = list()
var/list/syndisigns = list()
var/datum/barsign/current_sign
var/datum/barsign/prev_sign
var/panel_open = FALSE
blocks_emissive = FALSE
does_emissive = TRUE
var/build_stage = BARSIGN_COMPLETE
/obj/structure/sign/barsign/Initialize(mapload)
/obj/machinery/barsign/Initialize(mapload)
. = ..()
//filling the barsigns list
// Fill the barsigns lists
for(var/bartype in subtypesof(/datum/barsign))
var/datum/barsign/signinfo = new bartype
if(!signinfo.hidden)
if(signinfo.hidden)
continue
if(!signinfo.syndicate)
barsigns += signinfo
else
syndisigns += signinfo
//randomly assigning a sign
set_sign(pick(barsigns))
set_random_sign()
set_light(1, LIGHTING_MINIMUM_POWER)
/obj/structure/sign/barsign/proc/set_sign(datum/barsign/sign)
/obj/machinery/barsign/proc/set_sign(datum/barsign/sign)
if(!istype(sign))
return
current_sign = sign
@@ -41,363 +53,729 @@
update_icon()
/obj/structure/sign/barsign/update_icon_state()
. = ..()
/obj/machinery/barsign/proc/set_random_sign()
if(!emagged)
set_sign(pick(barsigns))
else
set_sign(pick(syndisigns))
if(!current_sign || broken)
icon_state = "empty"
// Saves a /datum/barsign to the prev_sign variable.
/obj/machinery/barsign/proc/save_sign(datum/barsign/S)
// Broken, blank, and EMPed screens shouldn't be saved.
if(istype(S, /datum/barsign) && !istype(S, /datum/barsign/hiddensigns))
prev_sign = S
return TRUE
return FALSE
/obj/machinery/barsign/update_icon_state()
switch(build_stage)
if(BARSIGN_FRAME)
if(!istype(current_sign, /datum/barsign/hiddensigns/building/frame))
set_sign(new /datum/barsign/hiddensigns/building/frame)
return
if(BARSIGN_CIRCUIT)
if(!istype(current_sign, /datum/barsign/hiddensigns/building/circuited))
set_sign(new /datum/barsign/hiddensigns/building/circuited)
return
if(BARSIGN_WIRED)
if(!istype(current_sign, /datum/barsign/hiddensigns/building/wired))
set_sign(new /datum/barsign/hiddensigns/building/wired)
return
if(BARSIGN_COMPLETE)
if((stat & BROKEN) && !istype(current_sign, /datum/barsign/hiddensigns/signbroken))
set_sign(new /datum/barsign/hiddensigns/signbroken)
return
if((stat & NOPOWER) && !(stat & BROKEN) && !istype(current_sign, /datum/barsign/hiddensigns/signoff))
set_sign(new /datum/barsign/hiddensigns/signoff)
return
if((stat & EMPED) && !(stat & BROKEN|NOPOWER) && !istype(current_sign, /datum/barsign/hiddensigns/empbarsign))
set_sign(new /datum/barsign/hiddensigns/empbarsign)
return
if(!current_sign)
turn_off()
return
icon_state = current_sign.icon
/obj/structure/sign/barsign/update_overlays()
// Allows the sign to be visible in complete darkness.
/obj/machinery/barsign/update_overlays()
. = ..()
underlays.Cut()
if(current_sign == "empty" || broken || !current_sign)
if(!is_on() || stat & (BROKEN|NOPOWER) || !current_sign || build_stage < BARSIGN_COMPLETE)
return
underlays |= emissive_appearance(icon, current_sign.icon)
/obj/structure/sign/barsign/obj_break(damage_flag)
if(!broken && !(flags & NODECONSTRUCT))
broken = TRUE
prev_sign = current_sign
set_light(0)
update_icon()
/obj/machinery/barsign/examine(mob/user)
. = ..()
switch(build_stage)
if(BARSIGN_FRAME)
. += "<span class='notice'>It's missing a <i>circuit board</i> and the <b>bolts</b> are exposed.</span>"
if(BARSIGN_CIRCUIT)
. += "<span class='notice'>The frame needs <i>wiring</i> and the circuit board could be <b>pried out</b>.</span>"
if(BARSIGN_WIRED)
. += "<span class='notice'>The frame lacks a <i>glass screen</i> and is filled with wires that could be <b>cut</b>.</span>"
if(BARSIGN_COMPLETE)
. += "<span class='info'><b>Alt-Click</b> to toggle its power.</span>"
if(panel_open)
. += "<span class='notice'>It is disabled by its <i>unscrewed</i> maintenance panel that exposes an area from which the screen could be <b>pried out</b>.</span>"
/obj/structure/sign/barsign/deconstruct(disassembled = TRUE)
new /obj/item/stack/sheet/metal(drop_location(), 2)
new /obj/item/stack/cable_coil(drop_location(), 2)
qdel(src)
/obj/machinery/barsign/proc/is_on()
if(power_state == ACTIVE_POWER_USE)
return TRUE
return FALSE
/obj/structure/sign/barsign/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0)
switch(damage_type)
if(BRUTE)
playsound(src.loc, 'sound/effects/glasshit.ogg', 75, TRUE)
if(BURN)
playsound(src.loc, 'sound/items/welder.ogg', 100, TRUE)
/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))
to_chat(user, "<span class = 'info'>Access denied.</span>")
return
if(broken)
to_chat(user, "<span class ='danger'>The controls seem unresponsive.</span>")
return
pick_sign()
/obj/structure/sign/barsign/attackby(obj/item/I, mob/user)
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
to_chat(user, "<span class='warning'>Sign has been damaged beyond repair!</span>")
return
else if(!broken)
to_chat(user, "<span class='warning'>This sign is functioning properly!</span>")
return
if(C.use(2))
to_chat(user, "<span class='notice'>You replace the burnt wiring.</span>")
broken = FALSE
else
to_chat(user, "<span class='warning'>You need at least two lengths of cable!</span>")
/obj/machinery/barsign/proc/toggle_on_off()
if(is_on())
return turn_off()
else
return ..()
return turn_on()
/obj/structure/sign/barsign/screwdriver_act(mob/user, obj/item/I)
if(!panel_open)
to_chat(user, "<span class='notice'>You open the maintenance panel.</span>")
prev_sign = current_sign
set_sign(new /datum/barsign/hiddensigns/signoff)
else
to_chat(user, "<span class='notice'>You close the maintenance panel.</span>")
if(!broken && !emagged)
set_sign(prev_sign)
set_light(1, LIGHTING_MINIMUM_POWER)
else if(emagged)
set_sign(new /datum/barsign/hiddensigns/syndibarsign)
else
set_sign(new /datum/barsign/hiddensigns/empbarsign)
panel_open = !panel_open
/obj/machinery/barsign/proc/turn_off()
if((stat & (BROKEN|EMPED|MAINT)) || !is_on() || build_stage < BARSIGN_COMPLETE)
return FALSE
save_sign(current_sign)
set_light(0)
power_state = IDLE_POWER_USE
set_sign(new /datum/barsign/hiddensigns/signoff)
playsound(src, 'sound/machines/lightswitch.ogg', 10, TRUE)
return TRUE
/obj/structure/sign/barsign/emp_act(severity)
set_sign(new /datum/barsign/hiddensigns/empbarsign)
broken = TRUE
/obj/machinery/barsign/proc/turn_on()
if((stat & (BROKEN|NOPOWER|MAINT)) || is_on() || build_stage < BARSIGN_COMPLETE)
return FALSE
if(panel_open)
return FALSE
set_light(1, LIGHTING_MINIMUM_POWER)
power_state = ACTIVE_POWER_USE
if(prev_sign)
set_sign(prev_sign)
else
set_random_sign()
playsound(src, 'sound/machines/lightswitch.ogg', 10, TRUE)
return TRUE
/obj/structure/sign/barsign/emag_act(mob/user)
if(broken || emagged)
to_chat(user, "<span class='warning'>Nothing interesting happens!</span>")
/obj/machinery/barsign/attack_hand(mob/user)
if(..())
return
if(stat & MAINT)
to_chat(user, "<span class='warning'>Wait until the repairs are complete!</span>")
return
if((stat & (BROKEN|NOPOWER|EMPED)) || build_stage < BARSIGN_COMPLETE)
to_chat(user, "<span class='warning'>The controls seem unresponsive.</span>")
return
if(panel_open)
to_chat(user, "<span class='warning'>Close the maintenance panel first!</span>")
return
if(!allowed(user))
to_chat(user, "<span class='warning'>Access denied.</span>")
return
pick_sign(user)
/obj/machinery/barsign/AltClick(mob/user)
add_fingerprint(user)
if(toggle_on_off())
return
attack_hand(user)
/obj/machinery/barsign/attackby(obj/item/I, mob/user, params)
switch(build_stage)
// Inserting the electronics/circuit
if(BARSIGN_FRAME)
if(istype(I, /obj/item/barsign_electronics))
var/obj/item/barsign_electronics/electronic = I
if(electronic.destroyed)
emagged = TRUE
else
emagged = FALSE
if(electronic.restricts_access)
req_access = list(ACCESS_BAR)
else
req_access = list()
to_chat(user, "<span class='notice'>You insert the circuit!</span>")
qdel(electronic)
build_stage = BARSIGN_CIRCUIT
update_icon()
playsound(get_turf(src), I.usesound, 50, TRUE)
add_fingerprint(user)
return
// Wiring the bar sign
if(BARSIGN_CIRCUIT)
if(istype(I, /obj/item/stack/cable_coil))
if(!I.use(5))
to_chat(user, "<span class='warning'>You need a total of five cables to wire [src]!</span>")
return
stat &= ~EMPED
build_stage = BARSIGN_WIRED
update_icon()
playsound(get_turf(src), I.usesound, 50, TRUE)
to_chat(user, "<span class='notice'>You wire [src]!</span>")
power_state = IDLE_POWER_USE
add_fingerprint(user)
return
// Placing in the glass
if(BARSIGN_WIRED)
if(istype(I, /obj/item/stack/sheet/glass))
if(!I.use(2))
to_chat(user, "<span class='warning'>You need at least 2 sheets of glass for this!</span>")
return
build_stage = BARSIGN_COMPLETE
playsound(get_turf(src), I.usesound, 50, TRUE)
obj_integrity = max_integrity
if(stat & BROKEN)
stat &= ~BROKEN
set_sign(new /datum/barsign/hiddensigns/signoff)
add_fingerprint(user)
return
return ..()
/obj/machinery/barsign/proc/pick_sign(mob/user)
var/picked_name
if(!emagged)
picked_name = tgui_input_list(user, "Available Signage", "Bar Sign", barsigns)
else
picked_name = tgui_input_list(user, "Available Signage", "Bar Sign", syndisigns)
if(!picked_name)
return
turn_on()
set_sign(picked_name)
/obj/machinery/barsign/obj_break(damage_flag)
if(!(stat & BROKEN) && !(flags & NODECONSTRUCT))
turn_off()
stat |= BROKEN
// Don't break the glass unless it actually has glass.
if(build_stage == BARSIGN_COMPLETE)
set_sign(new /datum/barsign/hiddensigns/signbroken)
playsound(src, 'sound/effects/hit_on_shattered_glass.ogg', 70, TRUE)
/obj/machinery/barsign/welder_act(mob/living/user, obj/item/I)
if(user.a_intent != INTENT_HELP)
return
. = TRUE
if(obj_integrity >= max_integrity)
to_chat(user, "<span class='notice'>[src] does not need repairs.</span>")
return
if(I.tool_behaviour != TOOL_WELDER)
return
if(!I.tool_use_check(user, 0))
return
var/time = max(50 * (1 - obj_integrity / max_integrity), 5)
WELDER_ATTEMPT_REPAIR_MESSAGE
turn_off()
stat |= MAINT
if(I.use_tool(src, user, time, volume = I.tool_volume))
WELDER_REPAIR_SUCCESS_MESSAGE
obj_integrity = max_integrity
stat &= ~BROKEN
set_sign(new /datum/barsign/hiddensigns/signoff)
add_fingerprint(user)
stat &= ~MAINT
/obj/machinery/barsign/screwdriver_act(mob/living/user, obj/item/I)
if(user.a_intent != INTENT_HELP)
return
. = TRUE
if(I.tool_behaviour != TOOL_SCREWDRIVER)
return
if(!I.use_tool(src, user, 0, volume = 0))
return
if(!(flags & NODECONSTRUCT))
if(!panel_open)
panel_open = TRUE
turn_off()
to_chat(user, "<span class='notice'>You open the maintenance panel of [src].</span>")
else
panel_open = FALSE
to_chat(user, "<span class='notice'>You close the maintenance panel of [src].</span>")
I.play_tool_sound(user, I.tool_volume)
add_fingerprint(user)
/obj/machinery/barsign/wrench_act(mob/living/user, obj/item/I)
if(user.a_intent != INTENT_HELP)
return
if(build_stage != BARSIGN_FRAME)
return
. = TRUE
if(I.tool_behaviour != TOOL_WRENCH)
return
if(!I.use_tool(src, user, 0, volume = 0))
return
if(!(flags & NODECONSTRUCT))
WRENCH_UNANCHOR_WALL_MESSAGE
I.play_tool_sound(user, I.tool_volume)
deconstruct(TRUE)
/obj/machinery/barsign/crowbar_act(mob/living/user, obj/item/I)
if(user.a_intent != INTENT_HELP)
return FALSE
if(build_stage != BARSIGN_CIRCUIT && build_stage != BARSIGN_COMPLETE)
return FALSE
. = TRUE
if(I.tool_behaviour != TOOL_CROWBAR)
return
if(!I.use_tool(src, user, 0, volume = 0))
return
if(flags & NODECONSTRUCT)
return
// Removing the electronics
if(build_stage == BARSIGN_CIRCUIT)
var/obj/item/barsign_electronics/electronic
electronic = new /obj/item/barsign_electronics
if(!emagged)
to_chat(user, "<span class='notice'>You pull the electronics out from [src].</span>")
else
// Give fried electronics if the sign is emagged
to_chat(user, "<span class='notice'>You pull the fried electronics out from [src].</span>")
electronic.destroyed = TRUE
electronic.icon_state = "door_electronics_smoked"
if(!length(req_access))
electronic.restricts_access = FALSE
electronic.forceMove(get_turf(user))
build_stage = BARSIGN_FRAME
update_icon()
add_fingerprint(user)
// Removing the glass screen
else if(build_stage == BARSIGN_COMPLETE)
if(!panel_open)
to_chat(user, "<span class='warning'>Open the maintenance panel first!</span>")
return
// Drop a shard if the glass is broken
if(stat & BROKEN)
to_chat(user, "<span class='notice'>You remove the broken screen from [src].</span>")
new /obj/item/shard(get_turf(user))
else
to_chat(user, "<span class='notice'>You pull the glass screen out from [src].</span>")
new /obj/item/stack/sheet/glass(get_turf(user), 2)
build_stage = BARSIGN_WIRED
update_icon()
add_fingerprint(user)
I.play_tool_sound(user, I.tool_volume)
/obj/machinery/barsign/wirecutter_act(mob/living/user, obj/item/I)
if(user.a_intent != INTENT_HELP)
return
if(build_stage != BARSIGN_WIRED)
return
. = TRUE
if(I.tool_behaviour != TOOL_WIRECUTTER)
return
if(!I.use_tool(src, user, 0, volume = 0))
return
if(!(flags & NODECONSTRUCT))
if(stat & EMPED)
to_chat(user, "<span class='notice'>You remove the burnt wires out from [src].</span>")
else
to_chat(user, "<span class='notice'>You cut the wires out from [src].</span>")
new /obj/item/stack/cable_coil(get_turf(user), 5)
build_stage = BARSIGN_CIRCUIT
update_icon()
power_state = NO_POWER_USE
I.play_tool_sound(user, I.tool_volume)
add_fingerprint(user)
/obj/machinery/barsign/emag_act(mob/user)
if(stat & (BROKEN|NOPOWER|EMPED))
to_chat(user, "<span class='warning'>[src] cannot be taken over right now!</span>")
return
if(emagged)
to_chat(user, "<span class='warning'>[src] is already taken over!</span>")
return
to_chat(user, "<span class='notice'>You emag the barsign. Takeover in progress...</span>")
add_fingerprint(user)
addtimer(CALLBACK(src, PROC_REF(post_emag)), 10 SECONDS)
return TRUE
/obj/structure/sign/barsign/proc/post_emag()
if(broken || emagged)
/obj/machinery/barsign/proc/post_emag()
if(stat & (BROKEN|NOPOWER|EMPED))
return
set_sign(new /datum/barsign/hiddensigns/syndibarsign)
emagged = TRUE
req_access = list(ACCESS_SYNDICATE)
set_random_sign()
req_access = list()
/obj/structure/sign/barsign/proc/pick_sign()
var/picked_name = tgui_input_list(usr, "Available Signage", "Bar Sign", barsigns)
if(!picked_name)
/obj/machinery/barsign/emp_act(severity)
if(build_stage >= BARSIGN_WIRED)
if(!(stat & EMPED))
stat |= EMPED
turn_on()
set_sign(new /datum/barsign/hiddensigns/empbarsign)
playsound(loc, 'sound/effects/sparks4.ogg', 60, TRUE)
return ..()
/obj/machinery/barsign/power_change()
. = ..()
if(. && (stat & NOPOWER))
turn_off()
/obj/machinery/barsign/deconstruct(disassembled = FALSE)
if(disassembled)
new /obj/item/stack/sheet/metal(drop_location(), 4)
else
new /obj/item/stack/sheet/metal(drop_location(), 2)
if(build_stage >= BARSIGN_WIRED && !(stat & EMPED))
new /obj/item/stack/cable_coil(drop_location(), 3)
if(build_stage >= BARSIGN_COMPLETE)
new /obj/item/shard(drop_location())
qdel(src)
/datum/stack_recipe/barsign_frame
/datum/stack_recipe/barsign_frame/try_build(mob/user, obj/item/stack/S, multiplier)
if(!..())
return FALSE
var/user_turf = get_turf(user)
var/placing_on = get_step(user_turf, user.dir)
// Return FALSE if the user isn't facing a wall/window.
if(!is_valid_turf(placing_on))
to_chat(user, "<span class='warning'>You need to be facing a wall or window to place the [title].</span>")
return FALSE
// Return FALSE if there isn't space for the entire sign.
if((user.dir != NORTH && user.dir != SOUTH) || !is_valid_turf(get_step(placing_on, EAST)))
to_chat(user, "<span class='warning'>There is not enough space to place the [title].</span>")
return FALSE
// Return FALSE if there's already stuff on the wall.
if(gotwallitem(user_turf, FLIP_DIR_VERTICALLY(user.dir)) || gotwallitem(get_step(user_turf, EAST), FLIP_DIR_VERTICALLY(user.dir)))
to_chat(user, "<span class='warning'>There's already an item on the wall!</span>")
return FALSE
// Return FALSE if it would cause two bar signs to overlap.
if((locate(/obj/machinery/barsign) in get_step(user_turf, WEST)))
to_chat(user, "<span class='warning'>There's already a bar sign here!</span>")
return FALSE
return TRUE
/datum/stack_recipe/barsign_frame/proc/is_valid_turf(turf/T)
if(!istype(T))
return FALSE
if(iswallturf(T))
return TRUE
if(locate(/obj/structure/window/full) in T)
return TRUE
return FALSE
/datum/stack_recipe/barsign_frame/post_build(mob/user, obj/item/stack/S, obj/machinery/barsign/O)
.= ..()
playsound(O, 'sound/items/deconstruct.ogg', 10, TRUE)
O.build_stage = BARSIGN_FRAME
O.power_state = NO_POWER_USE
O.set_light(0)
O.update_icon()
if(user.dir == SOUTH)
O.pixel_y = -32
else
O.pixel_y = 32
/obj/item/barsign_electronics
name = "bar sign electronics"
desc = "A circuit. It has a small data storage component filled with various bar sign designs."
icon = 'icons/obj/doors/door_assembly.dmi'
icon_state = "door_electronics"
w_class = WEIGHT_CLASS_SMALL
materials = list(MAT_METAL = 100, MAT_GLASS = 100)
origin_tech = "engineering=2;programming=1"
usesound = 'sound/items/deconstruct.ogg'
var/destroyed = FALSE
/// Restricts the sign to bar access if TRUE
var/restricts_access = TRUE
/obj/item/barsign_electronics/examine(mob/user)
. = ..()
. += "<span class='notice'>Use it while in your active hand to toggle the access restrictions.</span>"
/obj/item/barsign_electronics/attack_self(mob/user)
. = ..()
if(destroyed)
return
set_sign(picked_name)
restricts_access = !restricts_access
to_chat(user, "<span class='notice'>You [restricts_access ? "enable" : "disable"] the access restrictions of [src].</span>")
// For the ghost bar since occupants don't have bar access.
/obj/machinery/barsign/ghost_bar
req_access = list()
/obj/machinery/barsign/ghost_bar/Initialize(mapload)
. = ..()
// Also give them access to syndicate signs because why not.
barsigns |= syndisigns
set_random_sign()
//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
var/icon = "Icon"
/// Signs that should never be accessed by players via the selection menu.
var/hidden = FALSE
/// Signs that have a syndicate theme. Normally accessed by emagging the sign.
var/syndicate = FALSE
//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 Falcon, Space Bar and Grill."
icon = "maltesefalcon"
/datum/barsign/thebark
name = "The Bark"
icon = "thebark"
desc = "Ian's bar of choice."
icon = "thebark"
/datum/barsign/harmbaton
name = "The Harmbaton"
icon = "theharmbaton"
desc = "A great dining experience for both security members and assistants."
icon = "theharmbaton"
/datum/barsign/thesingulo
name = "The Singulo"
icon = "thesingulo"
desc = "Where people go that'd rather not be called by their name."
icon = "thesingulo"
/datum/barsign/thedrunkcarp
name = "The Drunk Carp"
icon = "thedrunkcarp"
desc = "Don't drink and swim."
icon = "thedrunkcarp"
/datum/barsign/scotchservinwill
name = "Scotch Servin Willy's"
icon = "scotchservinwill"
desc = "Willy sure moved up in the world from clown to bartender."
icon = "scotchservinwill"
/datum/barsign/officerbeersky
name = "Officer Beersky's"
icon = "officerbeersky"
desc = "Man eat a dong, these drinks are great."
icon = "officerbeersky"
/datum/barsign/thecavern
name = "The Cavern"
icon = "thecavern"
desc = "Fine drinks while listening to some fine tunes."
icon = "thecavern"
/datum/barsign/theouterspess
name = "The Outer Spess"
icon = "theouterspess"
desc = "This bar isn't actually located in outer space."
icon = "theouterspess"
/datum/barsign/slipperyshots
name = "Slippery Shots"
icon = "slipperyshots"
desc = "Slippery slope to drunkenness with our shots!"
icon = "slipperyshots"
/datum/barsign/thegreytide
name = "The Grey Tide"
icon = "thegreytide"
desc = "Abandon your toolboxing ways and enjoy a lazy beer!"
icon = "thegreytide"
/datum/barsign/honkednloaded
name = "Honked 'n' Loaded"
icon = "honkednloaded"
desc = "Honk."
icon = "honkednloaded"
/datum/barsign/thenest
name = "The Nest"
icon = "thenest"
desc = "A good place to retire for a drink after a long night of crime fighting."
icon = "thenest"
/datum/barsign/thecoderbus
name = "The Coderbus"
icon = "thecoderbus"
desc = "A very controversial bar known for its wide variety of constantly-changing drinks."
icon = "thecoderbus"
/datum/barsign/theadminbus
name = "The Adminbus"
icon = "theadminbus"
desc = "An establishment visited mainly by space-judges. It isn't bombed nearly as much as court hearings."
icon = "theadminbus"
/datum/barsign/oldcockinn
name = "The Old Cock Inn"
icon = "oldcockinn"
desc = "Something about this sign fills you with despair."
icon = "oldcockinn"
/datum/barsign/thewretchedhive
name = "The Wretched Hive"
icon = "thewretchedhive"
desc = "Legally obligated to instruct you to check your drinks for acid before consumption."
icon = "thewretchedhive"
/datum/barsign/robustacafe
name = "The Robusta Cafe"
icon = "robustacafe"
desc = "Holder of the 'Most Lethal Barfights' record 5 years uncontested."
icon = "robustacafe"
/datum/barsign/emergencyrumparty
name = "The Emergency Rum Party"
icon = "emergencyrumparty"
desc = "Still serving drinks that were banned years ago."
icon = "emergencyrumparty"
/datum/barsign/combocafe
name = "The Combo Cafe"
icon = "combocafe"
desc = "Renowned system-wide for their utterly uncreative drink combinations."
icon = "combocafe"
/datum/barsign/vladssaladbar
name = "Vlad's Salad Bar"
icon = "vladssaladbar"
desc = "Under new management. Vlad was always a bit too trigger happy with that shotgun."
icon = "vladssaladbar"
/datum/barsign/theshaken
name = "The Shaken"
icon = "theshaken"
desc = "This establishment does not serve stirred drinks."
icon = "theshaken"
/datum/barsign/thealenath
name = "The Ale' Nath"
icon = "thealenath"
desc = "All right, buddy. I think you've had EI NATH. Time to get a cab."
icon = "thealenath"
/datum/barsign/thealohasnackbar
name = "The Aloha Snackbar"
icon = "alohasnackbar"
desc = "A tasteful, inoffensive tiki bar sign."
icon = "alohasnackbar"
/datum/barsign/thenet
name = "The Net"
icon = "thenet"
desc = "The sea of drinkformation." //you couldn't come up with something better?
icon = "thenet"
/datum/barsign/armok
name = "Armok's Bar and Grill"
icon = "armokbar"
desc = "Dorfs need not apply."
icon = "armokbar"
/datum/barsign/meadbay
name = "Mead Bay"
icon = "meadbay"
desc = "Still probably a better place to get treated than the real one."
icon = "meadbay"
/datum/barsign/whiskeyimplant
name = "Whiskey Implant"
desc = "A bar known for its unconventional means of serving you drinks, whether you want them or not."
icon = "whiskeyimplant"
desc = "A bar known for its unconventional means of serving you drinks,whether you want them or not."
/datum/barsign/redshirt
name = "The Red Shirt"
icon = "theredshirt"
desc = "A number of famous patrons have attended this bar, including:..."
icon = "theredshirt"
/datum/barsign/lv426
name = "LV-426"
icon = "lv426"
desc = "Drinking with fancy facemasks is clearly more important than going to medbay."
icon = "lv426"
/datum/barsign/zocalo
name = "Zocalo"
icon = "zocalo"
desc = "Anteriormente ubicado en Spessmerica."
icon = "zocalo"
/datum/barsign/fourtheemprah
name = "4 The Emprah"
icon = "4theemprah"
desc = "Enjoyed by fanatics, heretics, and brain-damaged patrons alike."
icon = "4theemprah"
/datum/barsign/ishimura
name = "Ishimura"
icon = "ishimura"
desc = "Well known for their quality brownstar and delicious crackers."
icon = "ishimura"
/datum/barsign/tardis
name = "Tardis"
icon = "tardis"
desc = "This establishment has been through at least 5,343 iterations."
icon = "tardis"
/datum/barsign/quarks
name = "Quark's"
icon = "quarks"
desc = "Frequenters of this establishment are often seen wearing meson scanners; how quaint."
icon = "quarks"
/datum/barsign/tenforward
name = "Ten Forward"
icon = "tenforward"
desc = "Totally not a rip-off of an established bar or anything like that."
icon = "tenforward"
/datum/barsign/thepranicngpony
name = "The Prancing Pony"
icon = "thepranicngpony"
desc = "Ok, we don't take to kindly to you short folk pokin' round looking for some ranger scum."
icon = "thepranicngpony"
/datum/barsign/vault13
name = "Vault 13"
icon = "vault13"
desc = "Coincidence is intentional."
icon = "vault13"
/datum/barsign/solaris
name = "Solaris"
icon = "solaris"
desc = "When is a plasma giant not a plasma giant? When it's a bar serving plasma from a plasma giant."
icon = "solaris"
/datum/barsign/thehive
name = "The Hive"
icon = "thehive"
desc = "Dedicated to and founded in memory of those who died aboard the NT Class 4407 Research Stations."
icon = "thehive"
/datum/barsign/cantina
name = "Chalmun's Cantina"
icon = "cantina"
desc = "The bar was founded on the principles of originality; they have the same music playing 24/7."
icon = "cantina"
/datum/barsign/milliways42
name = "Milliways 42"
icon = "milliways42"
desc = "It's not really the end; it's the beginning, meaning, and answer for all your beverage needs."
icon = "milliways42"
/datum/barsign/timeofeve
name = "The Time of Eve"
icon = "thetimeofeve"
desc = "Vintage drinks from 2453!."
icon = "thetimeofeve"
/datum/barsign/spaceasshole
name = "Space Asshole"
icon = "spaceasshole"
desc = "Open since 2125, Not much has changed since then; the engineers still release the singulo and the damn miners still are more likely to cave your face in that deliver ores."
icon = "spaceasshole"
/datum/barsign/themaint
name = "The Maint"
icon = "themaint"
desc = "Home to Greytiders, Security and other unholy creations."
icon = "themaint"
/datum/barsign/syndicat
name = "The SyndiCat"
desc = "Syndicate or die."
icon = "thesyndicat"
syndicate = TRUE
/datum/barsign/hiddensigns
hidden = 1
hidden = TRUE
//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."
icon = "empbarsign"
/datum/barsign/hiddensigns/signoff
name = "Bar Sign"
icon = "empty"
desc = "This sign doesn't seem to be on."
icon = "off"
/datum/barsign/hiddensigns/signbroken
name = "Broken Bar Sign"
desc = "This sign has a massive crack in it!"
icon = "broken"
/datum/barsign/hiddensigns/building
name = "Bar Sign Frame"
desc = "This isn't advertising anything except that the bar is under renovations."
/datum/barsign/hiddensigns/building/frame
icon = "frame"
/datum/barsign/hiddensigns/building/circuited
icon = "circuited"
/datum/barsign/hiddensigns/building/wired
icon = "wired"
#undef BARSIGN_FRAME
#undef BARSIGN_CIRCUIT
#undef BARSIGN_WIRED
#undef BARSIGN_COMPLETE
@@ -171,6 +171,14 @@
build_path = /obj/item/intercom_electronics
category = list("initial", "Electronics")
/datum/design/barsign_electronics
name = "Bar Sign Electronics"
id = "barsign_electronics"
build_type = AUTOLATHE
materials = list(MAT_METAL = 100, MAT_GLASS = 100)
build_path = /obj/item/barsign_electronics
category = list("initial", "Electronics")
/datum/design/earmuffs
name = "Earmuffs"
id = "earmuffs"
@@ -135,7 +135,8 @@
name = "Bar Starter Kit"
contains = list(/obj/item/storage/box/drinkingglasses,
/obj/item/circuitboard/chem_dispenser/soda,
/obj/item/circuitboard/chem_dispenser/beer)
/obj/item/circuitboard/chem_dispenser/beer,
/obj/item/barsign_electronics)
cost = 250
containername = "beer starter kit"
announce_beacons = list("Bar" = list("Bar"))
Binary file not shown.

Before

Width:  |  Height:  |  Size: 166 KiB

After

Width:  |  Height:  |  Size: 167 KiB