From 5cd2844c1e45b740bb508761536e4f76d90e759c Mon Sep 17 00:00:00 2001 From: Sierra Helper <125094432+SierraHelper@users.noreply.github.com> Date: Tue, 2 Jan 2024 18:55:00 +0300 Subject: [PATCH] [MIRROR] Refactor poster code (#1757) Co-authored-by: PsiOmegaDelta <496895+PsiOmegaDelta@users.noreply.github.com> Co-authored-by: SuhEugene <32931701+SuhEugene@users.noreply.github.com> --- baystation12.dme | 2 + .../game/objects/effects/decals/contraband.dm | 116 +--------- .../effects/decals/posters/_defines.dm | 3 + .../objects/effects/decals/posters/bs12.dm | 27 +-- .../objects/effects/decals/posters/posters.dm | 122 ++++++++++ code/unit_tests/icon_tests.dm | 2 + maps/sierra/sierra.dm | 1 - maps/torch/structures/posters.dm | 28 +++ maps/torch/torch.dm | 3 +- mods/nyc_posters/code/nyc_posters.dm | 217 ++++++++---------- mods/tajara/code/posters.dm | 13 +- 11 files changed, 272 insertions(+), 262 deletions(-) create mode 100644 code/game/objects/effects/decals/posters/_defines.dm create mode 100644 code/game/objects/effects/decals/posters/posters.dm create mode 100644 maps/torch/structures/posters.dm diff --git a/baystation12.dme b/baystation12.dme index 664b7c698d649..b668635301b61 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -935,7 +935,9 @@ #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\_defines.dm" #include "code\game\objects\effects\decals\posters\bs12.dm" +#include "code\game\objects\effects\decals\posters\posters.dm" #include "code\game\objects\effects\fire\fire.dm" #include "code\game\objects\effects\particles\particles.dm" #include "code\game\objects\effects\spawners\bombspawner.dm" diff --git a/code/game/objects/effects/decals/contraband.dm b/code/game/objects/effects/decals/contraband.dm index bc564e8cc87fc..16ebe1ff4cc2f 100644 --- a/code/game/objects/effects/decals/contraband.dm +++ b/code/game/objects/effects/decals/contraband.dm @@ -1,4 +1,3 @@ - //########################## CONTRABAND ;3333333333333333333 -Agouri ################################################### /obj/item/contraband @@ -7,7 +6,6 @@ icon = 'icons/obj/structures/contraband.dmi' force = 0 - /obj/item/contraband/poster name = "rolled-up poster" desc = "The poster comes with its own automatic adhesive mechanism, for easy pinning to any vertical surface." @@ -18,9 +16,7 @@ if(given_poster_type && !ispath(given_poster_type, /singleton/poster)) CRASH("Invalid poster type: [log_info_line(given_poster_type)]") - poster_type = given_poster_type || poster_type - if(!poster_type) - poster_type = pick(subtypesof(/singleton/poster) - list(/singleton/poster/torch, /singleton/poster/contraband_only)) + poster_type = given_poster_type || poster_type || get_random_poster_type() ..() /obj/item/contraband/poster/Initialize() @@ -74,113 +70,3 @@ return TRUE return FALSE - -//############################## THE ACTUAL DECALS ########################### - -/obj/structure/sign/poster - name = "poster" - desc = "A large piece of space-resistant printed paper." - icon = 'icons/obj/structures/contraband.dmi' - icon_state = "random_poster" - anchored = TRUE - var/poster_type - var/ruined = 0 - var/torch_poster = FALSE //for torch-specific content - -/obj/structure/sign/poster/bay_9 - poster_type = /singleton/poster/bay_9 - -/obj/structure/sign/poster/bay_50 - poster_type = /singleton/poster/bay_50 - -/obj/structure/sign/poster/torch - poster_type = /singleton/poster/torch - torch_poster = TRUE - -/obj/structure/sign/poster/New(newloc, placement_dir = null, give_poster_type = null) - ..(newloc) - - if(!poster_type) - if(give_poster_type) - poster_type = give_poster_type - else - poster_type = pick(subtypesof(/singleton/poster) - typesof(/singleton/poster/torch) - typesof(/singleton/poster/contraband_only)) - if(torch_poster) - poster_type = pick(subtypesof(/singleton/poster/torch)) - set_poster(poster_type) - - switch (placement_dir) - if (NORTH) - pixel_x = 0 - pixel_y = 32 - if (SOUTH) - pixel_x = 0 - pixel_y = -32 - if (EAST) - pixel_x = 32 - pixel_y = 0 - if (WEST) - pixel_x = -32 - pixel_y = 0 - -/obj/structure/sign/poster/proc/set_poster(poster_type) - var/singleton/poster/design = GET_SINGLETON(poster_type) - SetName("[initial(name)] - [design.name]") - desc = "[initial(desc)] [design.desc]" - icon_state = design.icon_state - -/obj/structure/sign/poster/use_tool(obj/item/tool, mob/user, list/click_params) - // Screwdriver - Block interaction - if (isScrewdriver(tool)) - USE_FEEDBACK_FAILURE("You must use wirecutters to remove \the [src].") - return TRUE - - // Wirecutters - Remove poster - if (isWirecutter(tool)) - playsound(src, 'sound/items/Wirecutter.ogg', 50, TRUE) - if (ruined) - user.visible_message( - SPAN_NOTICE("\The [user] removes the remnants of \the [src] with \a [tool]."), - SPAN_NOTICE("You remove the remnants of \the [src] with \the [tool].") - ) - qdel_self() - else - user.visible_message( - SPAN_NOTICE("\The [user] removes \the [src] with \a [tool]."), - SPAN_NOTICE("You remove \the [src] with \the [tool].") - ) - roll_and_drop(user.loc) - return TRUE - - return ..() - - -/obj/structure/sign/poster/attack_hand(mob/user as mob) - - if(ruined) - return - - if(alert("Do I want to rip the poster from the wall?","You think...","Yes","No") == "Yes") - - if(ruined || !user.Adjacent(src)) - return - - visible_message(SPAN_WARNING("\The [user] rips \the [src] in a single, decisive motion!") ) - playsound(src.loc, 'sound/items/poster_ripped.ogg', 100, 1) - ruined = 1 - icon_state = "poster_ripped" - SetName("ripped poster") - desc = "You can't make out anything from the poster's original print. It's ruined." - add_fingerprint(user) - -/obj/structure/sign/poster/proc/roll_and_drop(turf/newloc) - var/obj/item/contraband/poster/poster_item = new/obj/item/contraband/poster(newloc, poster_type) - transfer_fingerprints_to(poster_item) - qdel_self() - -/singleton/poster - // Name suffix. Poster - [name] - var/name="" - // Description suffix - var/desc="" - var/icon_state="" diff --git a/code/game/objects/effects/decals/posters/_defines.dm b/code/game/objects/effects/decals/posters/_defines.dm new file mode 100644 index 0000000000000..f48f8fea94112 --- /dev/null +++ b/code/game/objects/effects/decals/posters/_defines.dm @@ -0,0 +1,3 @@ +var/global/const/POSTER_FLAG_NONE = EMPTY_BITFIELD +var/global/const/POSTER_FLAG_CONTRABAND = FLAG(0) +var/global/const/POSTER_FLAG_RANDOM_PICK = FLAG(1) diff --git a/code/game/objects/effects/decals/posters/bs12.dm b/code/game/objects/effects/decals/posters/bs12.dm index b2bbe77cce590..4ff724babbc51 100644 --- a/code/game/objects/effects/decals/posters/bs12.dm +++ b/code/game/objects/effects/decals/posters/bs12.dm @@ -348,6 +348,8 @@ icon_state = "poster_ripped" name = "Contraband Poster" desc = "You probably shouldn't be seeing this." + abstract_type = /singleton/poster/contraband_only + poster_flags = POSTER_FLAG_RANDOM_PICK | POSTER_FLAG_CONTRABAND /singleton/poster/contraband_only/unusual_gas icon_state = "unusual_gas" @@ -356,28 +358,3 @@ large black gaiter with purple stripes. GAS sickles are dressed in cute little mitts of \ the same color. The entire lower right corner of the poster is occupied by a large \ inscription \"uwu\", and in the lower left it says: \"More on our site - WetSkrell.nt\"." - -/singleton/poster/torch - icon_state="poster_ripped" - name = "Torch Poster" - desc = "You probably shouldn't be seeing this." - -/singleton/poster/torch/event1 - icon_state="bsposter_event1" - name = "Justice for Joe" - desc = "A hand-written poster demanding the release of one SCPO Joseph Tornakov from Fleet Intelligence custody. It's somewhat faded." - -/singleton/poster/torch/event2 - icon_state="bsposter_event2" - name = "Captain for Senate" - desc = "A poster loudly advertising the SEV Torch's captain's upcoming bid for SCG Senate. The fine print lightly suggests that failing to vote in their favor will result in an NJP." - -/singleton/poster/torch/event3 - icon_state="bsposter_event3" - name = "Visit E-14b Outpost" - desc = "This poster invites personnel to visit the the E-14b research outpost, built through joint Terran and Expeditionary Corps efforts. According to the poster, it's still under construction." - -/singleton/poster/torch/event4 - icon_state="bsposter_event4" - name = "Scientific Cooperation" - desc = "This poster depicts a Sol Expeditionary Corps captain shaking hands with a Terran Pioneer Corps officer. It appears to espouse greater scientific cooperation between the two organisations." diff --git a/code/game/objects/effects/decals/posters/posters.dm b/code/game/objects/effects/decals/posters/posters.dm new file mode 100644 index 0000000000000..1b4c4fee50996 --- /dev/null +++ b/code/game/objects/effects/decals/posters/posters.dm @@ -0,0 +1,122 @@ +/obj/structure/sign/poster + name = "poster" + desc = "A large piece of space-resistant printed paper." + icon = 'icons/obj/structures/contraband.dmi' + icon_state = "random_poster" + anchored = TRUE + var/poster_type + var/ruined = 0 + var/random_poster_base_type = /singleton/poster + var/excluded_poster_flags = POSTER_FLAG_CONTRABAND + +/obj/structure/sign/poster/bay_9 + poster_type = /singleton/poster/bay_9 + +/obj/structure/sign/poster/bay_50 + poster_type = /singleton/poster/bay_50 + +/obj/structure/sign/poster/New(newloc, placement_dir = null, given_poster_type = null) + ..(newloc) + + if(given_poster_type && !ispath(given_poster_type, /singleton/poster)) + CRASH("Invalid poster type: [log_info_line(given_poster_type)]") + + poster_type = given_poster_type || poster_type || GetRandomPosterType() + set_poster(poster_type) + + switch (placement_dir) + if (NORTH) + pixel_x = 0 + pixel_y = 32 + if (SOUTH) + pixel_x = 0 + pixel_y = -32 + if (EAST) + pixel_x = 32 + pixel_y = 0 + if (WEST) + pixel_x = -32 + pixel_y = 0 + +/// Returns a random poster type. +/// Uses the random_poster_base_type and excluded_poster_flags vars to limit the potential set of poster types to select from. +/obj/structure/sign/poster/proc/GetRandomPosterType() + return get_random_poster_type(random_poster_base_type, excluded_poster_flags) + +/obj/structure/sign/poster/proc/set_poster(poster_type) + var/singleton/poster/design = GET_SINGLETON(poster_type) + SetName("[initial(name)] - [design.name]") + desc = "[initial(desc)] [design.desc]" + icon_state = design.icon_state + +/obj/structure/sign/poster/use_tool(obj/item/tool, mob/user, list/click_params) + // Screwdriver - Block interaction + if (isScrewdriver(tool)) + USE_FEEDBACK_FAILURE("You must use wirecutters to remove \the [src].") + return TRUE + + // Wirecutters - Remove poster + if (isWirecutter(tool)) + playsound(src, 'sound/items/Wirecutter.ogg', 50, TRUE) + if (ruined) + user.visible_message( + SPAN_NOTICE("\The [user] removes the remnants of \the [src] with \a [tool]."), + SPAN_NOTICE("You remove the remnants of \the [src] with \the [tool].") + ) + qdel_self() + else + user.visible_message( + SPAN_NOTICE("\The [user] removes \the [src] with \a [tool]."), + SPAN_NOTICE("You remove \the [src] with \the [tool].") + ) + roll_and_drop(user.loc) + return TRUE + + return ..() + + +/obj/structure/sign/poster/attack_hand(mob/user as mob) + if(ruined) + return + + if(alert("Do I want to rip the poster from the wall?","You think...","Yes","No") == "Yes") + if(ruined || !user.Adjacent(src)) + return + + visible_message(SPAN_WARNING("\The [user] rips \the [src] in a single, decisive motion!") ) + playsound(src.loc, 'sound/items/poster_ripped.ogg', 100, 1) + ruined = 1 + icon_state = "poster_ripped" + SetName("ripped poster") + desc = "You can't make out anything from the poster's original print. It's ruined." + add_fingerprint(user) + +/obj/structure/sign/poster/proc/roll_and_drop(turf/newloc) + var/obj/item/contraband/poster/poster_item = new/obj/item/contraband/poster(newloc, poster_type) + transfer_fingerprints_to(poster_item) + qdel_self() + +/singleton/poster + // Name suffix. Poster - [name] + var/name="" + // Description suffix + var/desc="" + var/icon_state="" + var/poster_flags = POSTER_FLAG_RANDOM_PICK + abstract_type = /singleton/poster + +/// Picks and returns a random (sub)type of the provided random_poster_base_type which: +/// * Is not abstract, and +/// * Has a poster_flags value with the POSTER_FLAG_RANDOM_PICK flag, and +/// * Has a poster_flags value which does not match one or more of the excluded_flags (if provided) +/proc/get_random_poster_type(random_poster_base_type = /singleton/poster, excluded_flags) + var/list/valid_posters = new() + for (var/singleton/poster/poster_type as anything in typesof(random_poster_base_type)) + if (is_abstract(poster_type)) + continue + + var/poster_flags = initial(poster_type.poster_flags) + if ((poster_flags & POSTER_FLAG_RANDOM_PICK) && (!excluded_flags || !(poster_flags & excluded_flags))) + valid_posters += poster_type + + return pick(valid_posters) diff --git a/code/unit_tests/icon_tests.dm b/code/unit_tests/icon_tests.dm index 9f30992c2a92e..63f62c442c90b 100644 --- a/code/unit_tests/icon_tests.dm +++ b/code/unit_tests/icon_tests.dm @@ -112,6 +112,8 @@ var/list/invalid_posters = list() for(var/poster_type in subtypesof(/singleton/poster)) + if (is_abstract(poster_type)) + continue var/singleton/poster/P = GET_SINGLETON(poster_type) // [SIERRA-EDIT] - NYC_POSTERS - TAJARA // if(!(P.icon_state in contraband_icons)) // SIERRA-EDIT - ORIGINAL diff --git a/maps/sierra/sierra.dm b/maps/sierra/sierra.dm index f93421e971090..1e20956bb8445 100644 --- a/maps/sierra/sierra.dm +++ b/maps/sierra/sierra.dm @@ -177,7 +177,6 @@ #include "../../mods/fancy_sofas/_fancy_sofas.dme" #include "../../mods/jukebox_tapes/_jukebox_tapes.dme" #include "../../mods/legalese_language/_legalese.dme" - #include "../../mods/nyc_posters/_nyc_posters.dme" #include "../../mods/leroy_beasts/_leroy_beasts.dme" #include "../../mods/screentips/_screentips.dme" #include "../../mods/tajara/_tajara.dme" diff --git a/maps/torch/structures/posters.dm b/maps/torch/structures/posters.dm new file mode 100644 index 0000000000000..412b94e085826 --- /dev/null +++ b/maps/torch/structures/posters.dm @@ -0,0 +1,28 @@ +/obj/structure/sign/poster/torch + random_poster_base_type = /singleton/poster/torch + +/singleton/poster/torch + icon_state="poster_ripped" + name = "Torch Poster" + desc = "You probably shouldn't be seeing this." + abstract_type = /singleton/poster/torch + +/singleton/poster/torch/event1 + icon_state="bsposter_event1" + name = "Justice for Joe" + desc = "A hand-written poster demanding the release of one SCPO Joseph Tornakov from Fleet Intelligence custody. It's somewhat faded." + +/singleton/poster/torch/event2 + icon_state="bsposter_event2" + name = "Captain for Senate" + desc = "A poster loudly advertising the SEV Torch's captain's upcoming bid for SCG Senate. The fine print lightly suggests that failing to vote in their favor will result in an NJP." + +/singleton/poster/torch/event3 + icon_state="bsposter_event3" + name = "Visit E-14b Outpost" + desc = "This poster invites personnel to visit the the E-14b research outpost, built through joint Terran and Expeditionary Corps efforts. According to the poster, it's still under construction." + +/singleton/poster/torch/event4 + icon_state="bsposter_event4" + name = "Scientific Cooperation" + desc = "This poster depicts a Sol Expeditionary Corps captain shaking hands with a Terran Pioneer Corps officer. It appears to espouse greater scientific cooperation between the two organisations." diff --git a/maps/torch/torch.dm b/maps/torch/torch.dm index f88cde9c55c81..36ffbf37366cd 100644 --- a/maps/torch/torch.dm +++ b/maps/torch/torch.dm @@ -125,7 +125,6 @@ #include "robot/module_flying_surveyor.dm" - #include "structures/signs.dm" #include "structures/closets.dm" #include "structures/closets/closet_appearances.dm" #include "structures/closets/command.dm" @@ -138,6 +137,8 @@ #include "structures/closets/supply.dm" #include "structures/closets/exploration.dm" #include "structures/memorabilia.dm" + #include "structures/posters.dm" + #include "structures/signs.dm" #include "loadout/_defines.dm" #include "loadout/loadout_accessories.dm" diff --git a/mods/nyc_posters/code/nyc_posters.dm b/mods/nyc_posters/code/nyc_posters.dm index fe3c5904acb9d..d798db385bc41 100644 --- a/mods/nyc_posters/code/nyc_posters.dm +++ b/mods/nyc_posters/code/nyc_posters.dm @@ -2,8 +2,13 @@ // SS220 2023 New Year contest // // --------------------------- // -/singleton/poster/nyc_mine +/singleton/poster/nyc icon = 'mods/nyc_posters/icons/nyc_posters.dmi' + name = "NYC Poster" + desc = "You probably shouldn't be seeing this." + abstract_type = /singleton/poster/nyc + +/singleton/poster/nyc/mine // by Скавен-крыс icon_state = "mine" name = "Mine" @@ -12,8 +17,7 @@ mining! \"We mining all, even space!\"" -/singleton/poster/nyc_tersten_ranger - icon = 'mods/nyc_posters/icons/nyc_posters.dmi' +/singleton/poster/nyc/tersten_ranger // by Wastelander41 icon_state = "tersten_ranger" name = "Tersten Ranger" @@ -21,8 +25,7 @@ Huge as a mountain, so is his gun. There is a small note in the corner: \ Patrolling Tersten almost makes you wish for a nuclear winter." -/singleton/poster/nyc_blood_donation - icon = 'mods/nyc_posters/icons/nyc_posters.dmi' +/singleton/poster/nyc/blood_donation // by Kysovich icon_state = "blood_donation" name = "Стань донором крови!" @@ -31,8 +34,7 @@ Надпись на плакате гласит: \"Даже один стакан крови может спасти жизнь \ ценного сотрудника!\"." -/singleton/poster/nyc_krotovuha - icon = 'mods/nyc_posters/icons/nyc_posters.dmi' +/singleton/poster/nyc/krotovuha // by Andrei icon_state = "krotovuha" name = "Krotovuha" @@ -42,23 +44,20 @@ (ICCG Ministry of Health advises against consumption due to possible helminths or \ other infection)." -/singleton/poster/nyc_gas_advertisement - icon = 'mods/nyc_posters/icons/nyc_posters.dmi' +/singleton/poster/nyc/gas_advertisement // by God Damn Turkey icon_state = "gas_advertisement" name = "Giant Armoured Serpentid" desc = "Buy them today - they'll work whole their life without salary because they LOVE working!" -/singleton/poster/nyc_obey - icon = 'mods/nyc_posters/icons/nyc_posters.dmi' +/singleton/poster/nyc/obey // by PyotrTheTchaikowsky icon_state = "obey" name = "Obey" desc = "There is something more powerful than your weapon here, bureaucracy, \ just accept it and obey." -/singleton/poster/nyc_xeno_inferiority - icon = 'mods/nyc_posters/icons/nyc_posters.dmi' +/singleton/poster/nyc/xeno_inferiority // by Iceberg icon_state = "xeno_inferiority" name = "XENO INFERIORITY" @@ -66,8 +65,7 @@ REAL HUMAN about the importance of preserving jobs and living space for \ new generations." -/singleton/poster/nyc_multipassport - icon = 'mods/nyc_posters/icons/nyc_posters.dmi' +/singleton/poster/nyc/multipassport // by Derp icon_state = "multipassport" name = "Multipassport" @@ -75,16 +73,14 @@ of what system you are from and what planet you were born on, carry your passports \ with you. A passport is a thing that everyone must have.\"" -/singleton/poster/nyc_space_escort - icon = 'mods/nyc_posters/icons/nyc_posters.dmi' +/singleton/poster/nyc/space_escort // by dj-34 icon_state = "space_escort" name = "Space Escort" desc = "A poster advertising a space escort service on high-speed shuttles. It says \ \"We will will bring our client to any location - quickly, safely and comfortably!\"" -/singleton/poster/nyc_unathi_mercenaries - icon = 'mods/nyc_posters/icons/nyc_posters.dmi' +/singleton/poster/nyc/unathi_mercenaries // by Wastelander41 icon_state = "unathi_mercenaries" name = "Unathi mercenaries" @@ -94,30 +90,26 @@ their scales with dark paint, they are famous for bringing heaviest firearms on the battlefield, \ which look like toys on them." -/singleton/poster/nyc_wanted - icon = 'mods/nyc_posters/icons/nyc_posters.dmi' +/singleton/poster/nyc/wanted // by PyotrTheTchaikowsky icon_state = "wanted" name = "Wanted!" desc = "On the poster you can see: a bald, black-eyed woman, age 30, and she is wanted in \ the vastness of the entire SCG space. What did she do to be so wanted..." -/singleton/poster/nyc_wild_cargo - icon = 'mods/nyc_posters/icons/nyc_posters.dmi' +/singleton/poster/nyc/wild_cargo // by PyotrTheTchaikowsky icon_state = "wild_cargo" name = "Wild Cargo" desc = "The beautiful wild place with their own sheriff." -/singleton/poster/nyc_report - icon = 'mods/nyc_posters/icons/nyc_posters.dmi' +/singleton/poster/nyc/report // by PyotrTheTchaikowsky icon_state = "report" name = "Report" desc = "Always remember to report your superiors" -/singleton/poster/nyc_attention - icon = 'mods/nyc_posters/icons/nyc_posters.dmi' +/singleton/poster/nyc/attention // by Derp icon_state = "attention" name = "Attention!" @@ -125,8 +117,7 @@ an old poster from the Human Resources Department, aimed at making employees more attentive \ and willing to read every instruction they see." -/singleton/poster/nyc_unexplored_species - icon = 'mods/nyc_posters/icons/nyc_posters.dmi' +/singleton/poster/nyc/unexplored_species // by PyotrTheTchaikowsky icon_state = "unexplored_species" name = "Unexplored species" @@ -135,8 +126,7 @@ can see a rocky world with rivers of lava. Small note in the corner reads: \"The galaxy is \ so big and how much there is to explore!\"" -/singleton/poster/nyc_future_is_us - icon = 'mods/nyc_posters/icons/nyc_posters.dmi' +/singleton/poster/nyc/future_is_us // by Nevek icon_state = "future_is_us" name = "Future is Us" @@ -144,8 +134,7 @@ his hand. The poster says \"Future is us\". There is an outer space on a background. Isn't it \ worth wearing a helmet in space?" -/singleton/poster/nyc_keep_clean - icon = 'mods/nyc_posters/icons/nyc_posters.dmi' +/singleton/poster/nyc/keep_clean // by Фанзиль icon_state = "keep_clean" name = "Keep clean" @@ -153,8 +142,7 @@ shiny. The poster reminds of the importance of keeping surgical instruments sterile. The NT logo is \ visible at the bottom left." -/singleton/poster/nyc_forge - icon = 'mods/nyc_posters/icons/nyc_posters.dmi' +/singleton/poster/nyc/forge // by Скавен-крыс icon_state = "forge" name = "Forge" @@ -166,8 +154,8 @@ /* Contraband only */ -/singleton/poster/contraband_only/nyc_adme_midala - icon = 'mods/nyc_posters/icons/nyc_posters.dmi' +/singleton/poster/nyc/adme_midala + poster_flags = POSTER_FLAG_RANDOM_PICK | POSTER_FLAG_CONTRABAND // by KandJX icon_state = "adme_midala" name = "Adme Midala" @@ -176,8 +164,8 @@ От неё веет одновременно и изящностью, и решительностью. \ Текст на постере гласит \"Stop the Martians\"." -/singleton/poster/contraband_only/nyc_evening_before_12 - icon = 'mods/nyc_posters/icons/nyc_posters.dmi' +/singleton/poster/nyc/evening_before_12 + poster_flags = POSTER_FLAG_RANDOM_PICK | POSTER_FLAG_CONTRABAND // by Den10901 icon_state = "evening_before_12" name = "Evening before 12" @@ -185,8 +173,8 @@ and red can be seen. Is it tajaran? Old man? Santa? \"Died Moroz\"? There's \ no answer on poster." -/singleton/poster/contraband_only/nyc_know_the_enemy - icon = 'mods/nyc_posters/icons/nyc_posters.dmi' +/singleton/poster/nyc/know_the_enemy + poster_flags = POSTER_FLAG_RANDOM_PICK | POSTER_FLAG_CONTRABAND // by NAKAII icon_state = "know_the_enemy" name = "Beware the pirates!" @@ -194,31 +182,31 @@ reads \"Know the enemy!\". There is also a tiny marking at the bottom of the poster, \ it reads: \"Beware the frontier pirates!\"" -/singleton/poster/contraband_only/nyc_the_goushque - icon = 'mods/nyc_posters/icons/nyc_posters.dmi' +/singleton/poster/nyc/the_goushque + poster_flags = POSTER_FLAG_RANDOM_PICK | POSTER_FLAG_CONTRABAND // by tomatik icon_state = "the_goushque" name = "The Goushque" desc = "Derived from Old French, A Goushque, or how they say it, Le Goushque is a tailless \ amphibian with a short squat body, moist smooth skin, and very long hind legs for leaping." -/singleton/poster/contraband_only/nyc_grinch - icon = 'mods/nyc_posters/icons/nyc_posters.dmi' +/singleton/poster/nyc/grinch + poster_flags = POSTER_FLAG_RANDOM_PICK | POSTER_FLAG_CONTRABAND // by Mata icon_state = "grinch" name = "Grinch" desc = "Find this bastard and don't let him ruin our holiday! Remuneration is attached. " -/singleton/poster/contraband_only/nyc_work_for_profit - icon = 'mods/nyc_posters/icons/nyc_posters.dmi' +/singleton/poster/nyc/work_for_profit + poster_flags = POSTER_FLAG_RANDOM_PICK | POSTER_FLAG_CONTRABAND // by Kysovich icon_state = "work_for_profit" name = "Work for profit" desc = "Always remember why you are here. Do your job, make more money for corp, \ waste less money of corp. This is how things work in NanoTrasen." -/singleton/poster/contraband_only/nyc_toolbox - icon = 'mods/nyc_posters/icons/nyc_posters.dmi' +/singleton/poster/nyc/toolbox + poster_flags = POSTER_FLAG_RANDOM_PICK | POSTER_FLAG_CONTRABAND // by PyotrTheTchaikowsky icon_state = "toolbox" name = "Toolbox" @@ -226,29 +214,29 @@ inscription \"Danger, very robust!\", some people say that this red paint on \ the poster is made of real blood." -/singleton/poster/contraband_only/nyc_big_brother - icon = 'mods/nyc_posters/icons/nyc_posters.dmi' +/singleton/poster/nyc/big_brother + poster_flags = POSTER_FLAG_RANDOM_PICK | POSTER_FLAG_CONTRABAND // by Semonic_ icon_state = "big_brother" name = "BIG BROTHER" desc = "Never forget that you can be followed at any moment. Even when you enjoy privacy and tranquility." -/singleton/poster/contraband_only/nyc_doctor_griefsey - icon = 'mods/nyc_posters/icons/nyc_posters.dmi' +/singleton/poster/nyc/doctor_griefsey + poster_flags = POSTER_FLAG_RANDOM_PICK | POSTER_FLAG_CONTRABAND // by God Damn Turkey icon_state = "doctor_griefsey" name = "Dr. Griefsey" desc = "Doctor Griefsey states: \"Drinking is redundant expenses of your corporate salary for treating your liver!\"" -/singleton/poster/contraband_only/nyc_equality - icon = 'mods/nyc_posters/icons/nyc_posters.dmi' +/singleton/poster/nyc/equality + poster_flags = POSTER_FLAG_RANDOM_PICK | POSTER_FLAG_CONTRABAND // by God Damn Turkey icon_state = "equality" name = "EQUALITY" desc = "A ripped of poster, that was showing a tajaran in HoS uniform. Nothing besides the title can be read." -/singleton/poster/contraband_only/nyc_do_not_disturb - icon = 'mods/nyc_posters/icons/nyc_posters.dmi' +/singleton/poster/nyc/do_not_disturb + poster_flags = POSTER_FLAG_RANDOM_PICK | POSTER_FLAG_CONTRABAND // by Derp icon_state = "do_not_disturb" name = "Do not disturb" @@ -258,15 +246,15 @@ the floor, a flat pulse line... Hell, there is a body bag on the table. Glory to the \ free medicine of NanoTrasen!" -/singleton/poster/contraband_only/nyc_xmas_gas - icon = 'mods/nyc_posters/icons/nyc_posters.dmi' +/singleton/poster/nyc/xmas_gas + poster_flags = POSTER_FLAG_RANDOM_PICK | POSTER_FLAG_CONTRABAND // by PyotrTheTchaikowsky icon_state = "xmas_gas" name = "Xmas GAS" desc = "The poster depicts the GAS that is dressed up like a Xmas tree, wish you a Merry Xmas and a happy New Year!" -/singleton/poster/contraband_only/nyc_zeng_hu_pharmaceuticals - icon = 'mods/nyc_posters/icons/nyc_posters.dmi' +/singleton/poster/nyc/zeng_hu_pharmaceuticals + poster_flags = POSTER_FLAG_RANDOM_PICK | POSTER_FLAG_CONTRABAND // by KoKoC icon_state = "zeng_hu_pharmaceuticals" name = "Zeng-Hu Pharmaceuticals" @@ -275,16 +263,16 @@ labcoat. You can see some text in the bottom. \"The largest pharmaceutical company is ready to \ provide you with any medical products for an extremely favorable price. All research is LEGAL!\"" -/singleton/poster/contraband_only/nyc_good_mood_sponsor - icon = 'mods/nyc_posters/icons/nyc_posters.dmi' +/singleton/poster/nyc/good_mood_sponsor + poster_flags = POSTER_FLAG_RANDOM_PICK | POSTER_FLAG_CONTRABAND // by Dobre Pachantok / pudge_xxl icon_state = "good_mood_sponsor" name = "Good Mood Sponsor" desc = "A poster featuring different cocktails like Sugar Rush, Manhattan and others. A large \ inscription is visible: \"The best way to forget insults and cheer up is alcohol!\"" -/singleton/poster/contraband_only/nyc_true_hero - icon = 'mods/nyc_posters/icons/nyc_posters.dmi' +/singleton/poster/nyc/true_hero + poster_flags = POSTER_FLAG_RANDOM_PICK | POSTER_FLAG_CONTRABAND // by Derp icon_state = "true_hero" name = "True hero" @@ -292,8 +280,8 @@ on a barrel or on a container. The poster shows a janitor in a darkened room, it looks like he came \ there to change lights. Below you can see the postscript: \"True hero\"." -/singleton/poster/contraband_only/nyc_space_dwarf - icon = 'mods/nyc_posters/icons/nyc_posters.dmi' +/singleton/poster/nyc/space_dwarf + poster_flags = POSTER_FLAG_RANDOM_PICK | POSTER_FLAG_CONTRABAND // by Скавен-крыс icon_state = "space_dwarf" name = "Space Dwarf" @@ -302,8 +290,8 @@ judge you for wiping your pants and dancing drunk.\" The tag at the bottom \ of the poster indicates that the poster is sponsored by Grayson Manufactories - HRM" -/singleton/poster/contraband_only/nyc_good_old_times - icon = 'mods/nyc_posters/icons/nyc_posters.dmi' +/singleton/poster/nyc/good_old_times + poster_flags = POSTER_FLAG_RANDOM_PICK | POSTER_FLAG_CONTRABAND // by Скавен-крыс icon_state = "good_old_times" name = "Good Old Times" @@ -312,8 +300,7 @@ /* Resomi....... */ /* -/singleton/poster/nyc_imperium_we_see - icon = 'mods/nyc_posters/icons/nyc_posters.dmi' +/singleton/poster/nyc/imperium_we_see // by Derp icon_state = "imperium_we_see" name = "Imperium" @@ -321,16 +308,14 @@ since he decided to make this poster. Everyone knows that the Imperials won't \ come here. Isn't that right?" -/singleton/poster/nyc_shirisai - icon = 'mods/nyc_posters/icons/nyc_posters.dmi' +/singleton/poster/nyc/shirisai // by Derp icon_state = "shirisai" name = "Shirisai" desc = "Shirisai - the home planet of Resomi. A cold and snowy world, mostly covered in tundra. \ And why do many resomi flee from there?" -/singleton/poster/nyc_imperium_calls - icon = 'mods/nyc_posters/icons/nyc_posters.dmi' +/singleton/poster/nyc/imperium_calls // by Derp icon_state = "imperium_calls" name = "Imperium calls" @@ -338,8 +323,7 @@ and a calling resomi with a coat of arms. There are no corners at the lower part of the poster, \ probably someone tried to rip it off, but he did not have enough height." -/singleton/poster/nyc_together - icon = 'mods/nyc_posters/icons/nyc_posters.dmi' +/singleton/poster/nyc/together // by TiranShot icon_state = "together" name = "Together" @@ -353,150 +337,151 @@ /obj/structure/sign/poster/nyc icon = 'mods/nyc_posters/icons/nyc_posters.dmi' + random_poster_base_type = /singleton/poster/nyc /obj/structure/sign/poster/nyc/mine icon_state = "mine" - poster_type = /singleton/poster/nyc_mine + poster_type = /singleton/poster/nyc/mine /obj/structure/sign/poster/nyc/tersten_ranger icon_state = "tersten_ranger" - poster_type = /singleton/poster/nyc_tersten_ranger + poster_type = /singleton/poster/nyc/tersten_ranger /obj/structure/sign/poster/nyc/blood_donation icon_state = "blood_donation" - poster_type = /singleton/poster/nyc_blood_donation + poster_type = /singleton/poster/nyc/blood_donation /obj/structure/sign/poster/nyc/krotovuha icon_state = "krotovuha" - poster_type = /singleton/poster/nyc_krotovuha + poster_type = /singleton/poster/nyc/krotovuha /obj/structure/sign/poster/nyc/gas_advertisement icon_state = "gas_advertisement" - poster_type = /singleton/poster/nyc_gas_advertisement + poster_type = /singleton/poster/nyc/gas_advertisement /obj/structure/sign/poster/nyc/obey icon_state = "obey" - poster_type = /singleton/poster/nyc_obey + poster_type = /singleton/poster/nyc/obey /obj/structure/sign/poster/nyc/xeno_inferiority icon_state = "xeno_inferiority" - poster_type = /singleton/poster/nyc_xeno_inferiority + poster_type = /singleton/poster/nyc/xeno_inferiority /obj/structure/sign/poster/nyc/multipassport icon_state = "multipassport" - poster_type = /singleton/poster/nyc_multipassport + poster_type = /singleton/poster/nyc/multipassport /obj/structure/sign/poster/nyc/space_escort icon_state = "space_escort" - poster_type = /singleton/poster/nyc_space_escort + poster_type = /singleton/poster/nyc/space_escort /obj/structure/sign/poster/nyc/unathi_mercenaries icon_state = "unathi_mercenaries" - poster_type = /singleton/poster/nyc_unathi_mercenaries + poster_type = /singleton/poster/nyc/unathi_mercenaries /obj/structure/sign/poster/nyc/wanted icon_state = "wanted" - poster_type = /singleton/poster/nyc_wanted + poster_type = /singleton/poster/nyc/wanted /obj/structure/sign/poster/nyc/wild_cargo icon_state = "wild_cargo" - poster_type = /singleton/poster/nyc_wild_cargo + poster_type = /singleton/poster/nyc/wild_cargo /obj/structure/sign/poster/nyc/report icon_state = "report" - poster_type = /singleton/poster/nyc_report + poster_type = /singleton/poster/nyc/report /obj/structure/sign/poster/nyc/attention icon_state = "attention" - poster_type = /singleton/poster/nyc_attention + poster_type = /singleton/poster/nyc/attention /obj/structure/sign/poster/nyc/unexplored_species icon_state = "unexplored_species" - poster_type = /singleton/poster/nyc_unexplored_species + poster_type = /singleton/poster/nyc/unexplored_species /obj/structure/sign/poster/nyc/future_is_us icon_state = "future_is_us" - poster_type = /singleton/poster/nyc_future_is_us + poster_type = /singleton/poster/nyc/future_is_us /obj/structure/sign/poster/nyc/keep_clean icon_state = "keep_clean" - poster_type = /singleton/poster/nyc_keep_clean + poster_type = /singleton/poster/nyc/keep_clean /obj/structure/sign/poster/forge icon_state = "keep_clean" - poster_type = /singleton/poster/nyc_forge + poster_type = /singleton/poster/nyc/forge /* Contraband only */ /obj/structure/sign/poster/nyc/adme_midala icon_state = "adme_midala" - poster_type = /singleton/poster/contraband_only/nyc_adme_midala + poster_type = /singleton/poster/nyc/adme_midala /obj/structure/sign/poster/nyc/evening_before_12 icon_state = "evening_before_12" - poster_type = /singleton/poster/contraband_only/nyc_evening_before_12 + poster_type = /singleton/poster/nyc/evening_before_12 /obj/structure/sign/poster/nyc/know_the_enemy icon_state = "know_the_enemy" - poster_type = /singleton/poster/contraband_only/nyc_know_the_enemy + poster_type = /singleton/poster/nyc/know_the_enemy /obj/structure/sign/poster/nyc/the_goushque icon_state = "the_goushque" - poster_type = /singleton/poster/contraband_only/nyc_the_goushque + poster_type = /singleton/poster/nyc/the_goushque /obj/structure/sign/poster/nyc/grinch icon_state = "grinch" - poster_type = /singleton/poster/contraband_only/nyc_grinch + poster_type = /singleton/poster/nyc/grinch /obj/structure/sign/poster/nyc/work_for_profit icon_state = "work_for_profit" - poster_type = /singleton/poster/contraband_only/nyc_work_for_profit + poster_type = /singleton/poster/nyc/work_for_profit /obj/structure/sign/poster/nyc/toolbox icon_state = "toolbox" - poster_type = /singleton/poster/contraband_only/nyc_toolbox + poster_type = /singleton/poster/nyc/toolbox /obj/structure/sign/poster/nyc/big_brother icon_state = "big_brother" - poster_type = /singleton/poster/contraband_only/nyc_big_brother + poster_type = /singleton/poster/nyc/big_brother /obj/structure/sign/poster/nyc/doctor_griefsey icon_state = "doctor_griefsey" - poster_type = /singleton/poster/contraband_only/nyc_doctor_griefsey + poster_type = /singleton/poster/nyc/doctor_griefsey /obj/structure/sign/poster/nyc/equality icon_state = "equality" - poster_type = /singleton/poster/contraband_only/nyc_equality + poster_type = /singleton/poster/nyc/equality /obj/structure/sign/poster/nyc/do_not_disturb icon_state = "do_not_disturb" - poster_type = /singleton/poster/contraband_only/nyc_do_not_disturb + poster_type = /singleton/poster/nyc/do_not_disturb /obj/structure/sign/poster/nyc/xmas_gas icon_state = "xmas_gas" - poster_type = /singleton/poster/contraband_only/nyc_xmas_gas + poster_type = /singleton/poster/nyc/xmas_gas /obj/structure/sign/poster/nyc/zeng_hu_pharmaceuticals icon_state = "zeng_hu_pharmaceuticals" - poster_type = /singleton/poster/contraband_only/nyc_zeng_hu_pharmaceuticals + poster_type = /singleton/poster/nyc/zeng_hu_pharmaceuticals /obj/structure/sign/poster/nyc/good_mood_sponsor icon_state = "good_mood_sponsor" - poster_type = /singleton/poster/contraband_only/nyc_good_mood_sponsor + poster_type = /singleton/poster/nyc/good_mood_sponsor /obj/structure/sign/poster/nyc/true_hero icon_state = "true_hero" - poster_type = /singleton/poster/contraband_only/nyc_true_hero + poster_type = /singleton/poster/nyc/true_hero /obj/structure/sign/poster/space_dwarf icon_state = "good_mood_sponsor" - poster_type = /singleton/poster/contraband_only/nyc_space_dwarf + poster_type = /singleton/poster/nyc/space_dwarf /obj/structure/sign/poster/good_old_times icon_state = "true_hero" - poster_type = /singleton/poster/contraband_only/nyc_good_old_times + poster_type = /singleton/poster/nyc/good_old_times /* Resomi....... */ @@ -504,17 +489,17 @@ /* /obj/structure/sign/poster/nyc/imperium_we_see icon_state = "imperium_we_see" - poster_type = /singleton/poster/nyc_imperium_we_see + poster_type = /singleton/poster/nyc/imperium_we_see /obj/structure/sign/poster/nyc/shirisai icon_state = "shirisai" - poster_type = /singleton/poster/nyc_shirisai + poster_type = /singleton/poster/nyc/shirisai /obj/structure/sign/poster/nyc/imperium_calls icon_state = "imperium_calls" - poster_type = /singleton/poster/nyc_imperium_calls + poster_type = /singleton/poster/nyc/imperium_calls /obj/structure/sign/poster/nyc/together icon_state = "together" - poster_type = /singleton/poster/nyc_together + poster_type = /singleton/poster/nyc/together */ diff --git a/mods/tajara/code/posters.dm b/mods/tajara/code/posters.dm index a59aecb9e87b9..11aaa756147e2 100644 --- a/mods/tajara/code/posters.dm +++ b/mods/tajara/code/posters.dm @@ -1,11 +1,11 @@ /obj/structure/sign/poster/tjpost icon = 'mods/tajara/icons/posters.dmi' icon_state = "tposter" + random_poster_base_type = /singleton/poster/tjpost -/obj/structure/sign/poster/tjpost/New() - if(!poster_type) - poster_type = pick(typesof(/singleton/poster/tjpost)) - ..() +/obj/structure/sign/poster/tjpost/tposter + icon_state = "tposter" + poster_type = /singleton/poster/tjpost/tposter /obj/structure/sign/poster/tjpost/tposter_2 icon_state = "tposter_2" @@ -93,6 +93,11 @@ /singleton/poster/tjpost icon = 'mods/tajara/icons/posters.dmi' + name = "Tajara Poster" + desc = "You probably shouldn't be seeing this." + abstract_type = /singleton/poster/tjpost + +/singleton/poster/tjpost/tposter icon_state = "tposter" name = "Liberation day" desc = "A memorable photo, which depicted how the soldiers of the Kaytam clan raise their flag \