diff --git a/baystation12.dme b/baystation12.dme
index 227cf0d3122..3da2cd16b54 100644
--- a/baystation12.dme
+++ b/baystation12.dme
@@ -446,6 +446,8 @@
#include "code\game\objects\effects\decals\Cleanable\misc.dm"
#include "code\game\objects\effects\decals\Cleanable\robots.dm"
#include "code\game\objects\effects\decals\Cleanable\tracks.dm"
+#include "code\game\objects\effects\decals\posters\bs12.dm"
+#include "code\game\objects\effects\decals\posters\tgposters.dm"
#include "code\game\objects\effects\spawners\bombspawner.dm"
#include "code\game\objects\effects\spawners\gibspawner.dm"
#include "code\game\objects\effects\spawners\vaultspawner.dm"
diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm
index ff853eca2f2..32c7e934f61 100644
--- a/code/__HELPERS/global_lists.dm
+++ b/code/__HELPERS/global_lists.dm
@@ -23,6 +23,9 @@ var/global/list/all_species[0]
var/global/list/all_languages[0]
var/global/list/whitelisted_species = list("Human")
+// Posters
+var/global/list/datum/poster/poster_designs = typesof(/datum/poster) - /datum/poster
+
//Preferences stuff
//Hairstyles
var/global/list/hair_styles_list = list() //stores /datum/sprite_accessory/hair indexed by name
diff --git a/code/game/objects/effects/decals/contraband.dm b/code/game/objects/effects/decals/contraband.dm
index 077780119bb..5a575f5e151 100644
--- a/code/game/objects/effects/decals/contraband.dm
+++ b/code/game/objects/effects/decals/contraband.dm
@@ -1,8 +1,6 @@
//########################## CONTRABAND ;3333333333333333333 -Agouri ###################################################
-#define NUM_OF_POSTER_DESIGNS 10
-
/obj/item/weapon/contraband
name = "contraband item"
desc = "You probably shouldn't be holding this."
@@ -15,54 +13,16 @@
desc = "The poster comes with its own automatic adhesive mechanism, for easy pinning to any vertical surface."
icon_state = "rolled_poster"
var/serial_number = 0
- var/obj/structure/sign/poster/resulting_poster = null //The poster that will be created is initialised and stored through contraband/poster's constructor
/obj/item/weapon/contraband/poster/New(turf/loc, var/given_serial = 0)
if(given_serial == 0)
- serial_number = rand(1, NUM_OF_POSTER_DESIGNS)
- resulting_poster = new(serial_number)
+ serial_number = rand(1, poster_designs.len)
else
serial_number = given_serial
- //We don't give it a resulting_poster because if we called it with a given_serial it means that we're rerolling an already used poster.
name += " - No. [serial_number]"
..(loc)
-
-/*/obj/item/weapon/contraband/poster/attack(mob/M as mob, mob/user as mob)
- src.add_fingerprint(user)
- if(resulting_poster)
- resulting_poster.add_fingerprint(user)
- ..()*/
-
-/*/obj/item/weapon/contraband/poster/attack(atom/A, mob/user as mob) //This shit is handled through the wall's attackby()
- if(istype(A, /turf/simulated/wall))
- if(resulting_poster == null)
- return
- else
- var/turf/simulated/wall/W = A
- var/check = 0
- var/stuff_on_wall = 0
- for(var/obj/O in W.contents) //Let's see if it already has a poster on it or too much stuff
- if(istype(O,/obj/structure/sign/poster))
- check = 1
- break
- stuff_on_wall++
- if(stuff_on_wall == 3)
- check = 1
- break
-
- if(check)
- user << "The wall is far too cluttered to place a poster!"
- return
-
- resulting_poster.loc = W //Looks like it's uncluttered enough. Place the poster
- W.contents += resulting_poster
-
- del(src)*/
-
-
-
//############################## THE ACTUAL DECALS ###########################
obj/structure/sign/poster
@@ -79,44 +39,13 @@ obj/structure/sign/poster/New(var/serial)
serial_number = serial
if(serial_number == loc)
- serial_number = rand(1, NUM_OF_POSTER_DESIGNS) //This is for the mappers that want individual posters without having to use rolled posters.
+ serial_number = rand(1, poster_designs.len) //This is for the mappers that want individual posters without having to use rolled posters.
- icon_state = "poster[serial_number]"
-
- switch(serial_number)
- if(1)
- name += " - Free Tonto"
- desc += " A framed shred of a much larger flag, colors bled together and faded from age."
- if(2)
- name += " - Atmosia Declaration of Independence"
- desc += " A relic of a failed rebellion"
- if(3)
- name += " - Fun Police"
- desc += " A poster condemning the station's security forces."
- if(4)
- name += " - Lusty Xeno"
- desc += " A heretical poster depicting the titular star of an equally heretical book."
- if(5)
- name += " - Syndicate Recruitment Poster"
- desc += " See the galaxy! Shatter corrupt megacorporations! Join today!"
- if(6)
- name += " - Clown"
- desc += " Honk."
- if(7)
- name += " - Smoke"
- desc += " A poster depicting a carton of cigarettes."
- if(8)
- name += " - Grey Tide"
- desc += " A rebellious poster symbolizing assistant solidarity."
- if(9)
- name += " - Missing Gloves"
- desc += " This poster is about the uproar that followed Nanotrasen's financial cuts towards insulated-glove purchases."
- if(10)
- name += " - Hacking Guide"
- desc += " This poster details the internal workings of the common Nanotrasen airlock."
- else
- name = "This shit just bugged. Report it to Agouri - polyxenitopalidou@gmail.com"
- desc = "Why are you still here?"
+ var/designtype = poster_designs[serial_number]
+ var/datum/poster/design=new designtype
+ name += " - [design.name]"
+ desc += " [design.desc]"
+ icon_state = design.icon_state // poster[serial_number]
..()
obj/structure/sign/poster/attackby(obj/item/weapon/W as obj, mob/user as mob)
@@ -151,14 +80,17 @@ obj/structure/sign/poster/attackby(obj/item/weapon/W as obj, mob/user as mob)
/obj/structure/sign/poster/proc/roll_and_drop(turf/newloc)
var/obj/item/weapon/contraband/poster/P = new(src, serial_number)
- P.resulting_poster = src
P.loc = newloc
src.loc = P
+ del(src)
-//seperated to reduce code duplication. Moved here for ease of reference and to unclutter r_wall/attackby()
+//separated to reduce code duplication. Moved here for ease of reference and to unclutter r_wall/attackby()
/turf/simulated/wall/proc/place_poster(var/obj/item/weapon/contraband/poster/P, var/mob/user)
- if(!P.resulting_poster) return
+
+ if(!istype(src,/turf/simulated/wall))
+ user << "\red You can't place this here!"
+ return
var/stuff_on_wall = 0
for(var/obj/O in contents) //Let's see if it already has a poster on it or too much stuff
@@ -173,7 +105,7 @@ obj/structure/sign/poster/attackby(obj/item/weapon/W as obj, mob/user as mob)
user << "You start placing the poster on the wall..." //Looks like it's uncluttered enough. Place the poster.
//declaring D because otherwise if P gets 'deconstructed' we lose our reference to P.resulting_poster
- var/obj/structure/sign/poster/D = P.resulting_poster
+ var/obj/structure/sign/poster/D = new(P.serial_number)
var/temp_loc = user.loc
flick("poster_being_set",D)
@@ -188,4 +120,11 @@ obj/structure/sign/poster/attackby(obj/item/weapon/W as obj, mob/user as mob)
user << "You place the poster!"
else
D.roll_and_drop(temp_loc)
- return
\ No newline at end of file
+ return
+
+/datum/poster
+ // Name suffix. Poster - [name]
+ var/name=""
+ // Description suffix
+ var/desc=""
+ var/icon_state=""
\ No newline at end of file
diff --git a/code/game/objects/effects/decals/posters/bs12.dm b/code/game/objects/effects/decals/posters/bs12.dm
new file mode 100644
index 00000000000..8629c4fb738
--- /dev/null
+++ b/code/game/objects/effects/decals/posters/bs12.dm
@@ -0,0 +1,145 @@
+// baystation12 posters
+/datum/poster/bay_1
+ icon_state="bsposter1"
+ name = "Unlucky Space Explorer"
+ desc = "This particular one depicts a skeletal form within a space suit."
+
+/datum/poster/bay_2
+ icon_state="bsposter2"
+ name = "Positronic Logic Conflicts"
+ desc = "This particular one depicts the cold, unmoving stare of a particular advanced AI."
+
+/datum/poster/bay_3
+ icon_state="bsposter3"
+ name = "Paranoia"
+ desc = "This particular one warns of the dangers of trusting your co-workers too much."
+
+/datum/poster/bay_4
+ icon_state="bsposter4"
+ name = "Keep Calm"
+ desc = "This particular one is of a famous New Earth design, although a bit modified. Someone has scribbled an O over the A on the poster."
+
+/datum/poster/bay_5
+ icon_state="bsposter5"
+ name = "Martian Warlord"
+ desc = "This particular one depicts the cartoony mug of a certain Martial Warmonger."
+
+/datum/poster/bay_6
+ icon_state="bsposter6"
+ name = "Technological Singularity"
+ desc = "This particular one is of the blood-curdling symbol of a long-since defeated enemy of humanity."
+
+/datum/poster/bay_7
+ icon_state="bsposter7"
+ name = "Wasteland"
+ desc = "This particular one is of a couple of ragged gunmen, one male and one female, on top of a mound of rubble. The number \"12\" is visible on their blue jumpsuits."
+
+/datum/poster/bay_8
+ icon_state="bsposter8"
+ name = "Pinup Girl Cindy"
+ desc = "This particular one is of Nanotrasen's PR girl, Cindy, in a particularly feminine pose."
+
+/datum/poster/bay_9
+ icon_state="bsposter9"
+ name = "Pinup Girl Amy"
+ desc = "This particular one is of Amy, the nymphomaniac Urban Legend of Nanotrasen Space Stations. How this photograph came to be is not known."
+
+/datum/poster/bay_10
+ icon_state="bsposter10"
+ name = "Don't Panic"
+ desc = "This particular one depicts some sort of star in a grimace. The \"Don't Panic\" is written in big, friendly letters."
+
+/datum/poster/bay_11
+ icon_state="bsposter11"
+ name = "Underwater Laboratory"
+ desc = "This particular one is of the fabled last crew of Nanotrasen's previous project before going big on plasma research."
+
+/datum/poster/bay_12
+ icon_state="bsposter12"
+ name = "Rogue AI"
+ desc = "This particular one depicts the shell of the infamous AI that catastropically comandeered one of Nanotrasen's earliest space stations. Back then, the corporation was just known as TriOptimum."
+
+/datum/poster/bay_13
+ icon_state="bsposter13"
+ name = "User of the Arcane Arts"
+ desc = "This particular one depicts a wizard, casting a spell. You can't really make out if it's an actual photograph or a computer-generated image."
+
+/datum/poster/bay_14
+ icon_state="bsposter14"
+ name = "Levitating Skull"
+ desc = "This particular one is the portrait of a flying enchanted skull. Its adventures along with its fabled companion are now fading through history..."
+
+/datum/poster/bay_15
+ icon_state="bsposter15"
+ name = "Augmented Legend"
+ desc = "This particular one is of an obviously augmented individual, gazing towards the sky. The cyber-city in the backround is rather punkish."
+
+/datum/poster/bay_16
+ icon_state="bsposter16"
+ name = "Dangerous Static"
+ desc = "This particular one depicts nothing remarkable other than a rather mesmerising pattern of monitor static. There's a tag on the sides of the poster, but it's ripped off."
+
+/datum/poster/bay_17
+ icon_state="bsposter17"
+ name = "Pinup Girl Val"
+ desc = "Luscious Val McNeil, the vertically challenged Legal Extraordinaire, winner of Miss Space two years running and favoured pinup girl of Lawyers Weekly."
+
+/datum/poster/bay_18
+ icon_state="bsposter18"
+ name = "Derpman, Enforcer of the State"
+ desc = "Here to protect and serve... your donuts! A generously proportioned man, he teaches you the value of hiding your snacks."
+
+/datum/poster/bay_19
+ icon_state="bsposter19"
+ name = "Respect a Soghun"
+ desc = "This poster depicts a well dressed looking Soghun receiving a prestigious award. It appears to espouse greater co-operation and harmony between the two races."
+
+/datum/poster/bay_20
+ icon_state="bsposter20"
+ name = "Skrell Twilight"
+ desc = "This poster depicts a mysteriously inscrutable, alien scene. Numerous Skrell can be seen conversing amidst great, crystalline towers rising above crashing waves"
+
+/datum/poster/bay_21
+ icon_state="bsposter21"
+ name = "Join the Fuzz!"
+ desc = "It's a nice recruitment poster of a white haired Chinese woman that says; \"Big Guns, Hot Women, Good Times. Security. We get it done.\""
+
+/datum/poster/bay_22
+ icon_state="bsposter22"
+ name = "Looking for a career with excitement?"
+ desc = "A recruitment poster starring a dark haired woman with glasses and a purple shirt that has \"Got Brains? Got Talent? Not afraid of electric flying monsters that want to suck the soul out of you? Then Xenobiology could use someone like you!\" written on the bottom."
+
+/datum/poster/bay_23
+ icon_state="bsposter23"
+ name = "Safety first: because electricity doesn't wait!"
+ desc = "A safety poster starring a clueless looking redhead with frazzled hair. \"Every year, hundreds of NT employees expose themselves to electric shock. Play it safe. Avoid suspicious doors after electrical storms, and always wear protection when doing electric maintenance.\""
+
+/datum/poster/bay_24
+ icon_state="bsposter24"
+ name = "Responsible medbay habits, No #259"
+ desc = "A poster with a nervous looking geneticist on it states; \"Friends Don't Tell Friends They're Clones. It can cause severe and irreparable emotional trauma. Always do the right thing and never tell them that they were dead.\""
+
+/datum/poster/bay_25
+ icon_state="bsposter25"
+ name = "Irresponsible medbay habits, No #2"
+ desc = "This is a safety poster starring a perverted looking naked doctor. \"Sexual harassment is never okay. REPORT any acts of sexual deviance or harassment that disrupt a healthy working environment.\""
+
+/datum/poster/bay_26
+ icon_state="bsposter26"
+ name = "The Men We Knew"
+ desc = "This movie poster depicts a group of soldiers fighting a large mech, the movie seems to be a patriotic war movie."
+
+/datum/poster/bay_27
+ icon_state="bsposter27"
+ name = "Plastic Sheep Can't Scream"
+ desc = "This is a movie poster for an upcoming horror movie, it features an AI in the front of it."
+
+/datum/poster/bay_28
+ icon_state="bsposter28"
+ name = "The Stars Know Love"
+ desc = "This is a movie poster. A bleeding woman is shown drawing a heart in her blood on the window of space ship, it seems to be a romantic Drama."
+
+/datum/poster/bay_29
+ icon_state="bsposter29"
+ name = "Winter Is Coming"
+ desc = "On the poster is a frighteningly large wolf, he warns: \"Only YOU can keep the station from freezing during planetary occultation!\""
\ No newline at end of file
diff --git a/code/game/objects/effects/decals/posters/tgposters.dm b/code/game/objects/effects/decals/posters/tgposters.dm
new file mode 100644
index 00000000000..3dff589c3ae
--- /dev/null
+++ b/code/game/objects/effects/decals/posters/tgposters.dm
@@ -0,0 +1,50 @@
+// /tg/ posters.
+/datum/poster/tg_1
+ name = "Free Tonto"
+ desc = "A framed shred of a much larger flag, colors bled together and faded from age."
+ icon_state="poster1"
+
+/datum/poster/tg_2
+ name = "Atmosia Declaration of Independence"
+ desc = "A relic of a failed rebellion"
+ icon_state="poster2"
+
+/datum/poster/tg_3
+ name = "Fun Police"
+ desc = "A poster condemning the station's security forces."
+ icon_state="poster3"
+
+/datum/poster/tg_4
+ name = "Lusty Xeno"
+ desc = "A heretical poster depicting the titular star of an equally heretical book."
+ icon_state="poster4"
+
+/datum/poster/tg_5
+ name = "Syndicate Recruitment Poster"
+ desc = "See the galaxy! Shatter corrupt megacorporations! Join today!"
+ icon_state="poster5"
+
+/datum/poster/tg_6
+ name = "Clown"
+ desc = "Honk."
+ icon_state="poster6"
+
+/datum/poster/tg_7
+ name = "Smoke"
+ desc = "A poster depicting a carton of cigarettes."
+ icon_state="poster7"
+
+/datum/poster/tg_8
+ name = "Grey Tide"
+ desc = "A rebellious poster symbolizing assistant solidarity."
+ icon_state="poster8"
+
+/datum/poster/tg_9
+ name = "Missing Gloves"
+ desc = "This poster is about the uproar that followed Nanotrasen's financial cuts towards insulated-glove purchases."
+ icon_state="poster9"
+
+/datum/poster/tg_10
+ name = "Hacking Guide"
+ desc = "This poster details the internal workings of the common Nanotrasen airlock."
+ icon_state="poster10"
\ No newline at end of file
diff --git a/icons/obj/contraband.dmi b/icons/obj/contraband.dmi
index 75f63eb4a99..dea098484e5 100644
Binary files a/icons/obj/contraband.dmi and b/icons/obj/contraband.dmi differ