From 001a80f72b2a79067a1e967d90e8fe8f5b1db830 Mon Sep 17 00:00:00 2001 From: nikothedude Date: Thu, 26 Feb 2026 14:10:00 -0500 Subject: [PATCH 01/19] initial --- code/modules/cargo/exports/large_objects.dm | 1 + code/modules/cargo/orderconsole.dm | 1 + .../file_system/programs/dept_order.dm | 9 +++ config/config.txt | 1 + config/doppler/STORY_SUPPLY_SHORTAGE.txt | 10 +++ .../STORY_supply_shortage/config.dm | 12 ++++ .../STORY_supply_shortage/readme.md | 34 ++++++++++ .../STORY_supply_shortage/supply_pack.dm | 36 ++++++++++ modular_doppler/donation_box/donation_box.dm | 63 ++++++++++++++++++ .../donation_box/icons/donation_box.dmi | Bin 0 -> 1292 bytes modular_doppler/donation_box/loadout.dm | 3 + .../modular_crafting/code/sheet_types.dm | 1 + tgstation.dme | 4 ++ .../tgui/interfaces/Cargo/CargoCatalog.tsx | 13 +++- tgui/packages/tgui/interfaces/Cargo/types.ts | 1 + .../tgui/interfaces/NtosDeptOrder.tsx | 6 ++ 16 files changed, 194 insertions(+), 1 deletion(-) create mode 100644 config/doppler/STORY_SUPPLY_SHORTAGE.txt create mode 100644 modular_doppler/STORY_supply_shortage/config.dm create mode 100644 modular_doppler/STORY_supply_shortage/readme.md create mode 100644 modular_doppler/STORY_supply_shortage/supply_pack.dm create mode 100644 modular_doppler/donation_box/donation_box.dm create mode 100644 modular_doppler/donation_box/icons/donation_box.dmi create mode 100644 modular_doppler/donation_box/loadout.dm diff --git a/code/modules/cargo/exports/large_objects.dm b/code/modules/cargo/exports/large_objects.dm index ed65563b02ca36..36c569a93d0ac8 100644 --- a/code/modules/cargo/exports/large_objects.dm +++ b/code/modules/cargo/exports/large_objects.dm @@ -8,6 +8,7 @@ /obj/structure/closet/crate/large, /obj/structure/closet/crate/mail, /obj/structure/closet/crate/wooden, + /obj/structure/closet/crate/donation, // DOPPLER EDIT ADDITION ) /datum/export/large/crate/total_printout(datum/export_report/ex, notes = TRUE) // That's why a goddamn metal crate costs that much. diff --git a/code/modules/cargo/orderconsole.dm b/code/modules/cargo/orderconsole.dm index d5984da9ec9828..a52cd0df3d22e7 100644 --- a/code/modules/cargo/orderconsole.dm +++ b/code/modules/cargo/orderconsole.dm @@ -189,6 +189,7 @@ packs += list(list( "name" = pack.name, "cost" = pack.get_cost() * get_discount(), + "shortagemult" = pack.get_shortage_price_mult(), // DOPPLER EDIT ADDITION - SUPPLY_SHORTAGE STORY MODULE "id" = pack_id, "desc" = pack.desc || pack.name, // If there is a description, use it. Otherwise use the pack's name. "first_item_icon" = first_item?.icon, diff --git a/code/modules/modular_computers/file_system/programs/dept_order.dm b/code/modules/modular_computers/file_system/programs/dept_order.dm index e640d5ecb3710c..dfe716d5412614 100644 --- a/code/modules/modular_computers/file_system/programs/dept_order.dm +++ b/code/modules/modular_computers/file_system/programs/dept_order.dm @@ -85,9 +85,18 @@ GLOBAL_VAR(department_cd_override) if(!islist(supply_data[pack.group]) || !can_see_pack(pack)) continue + // DOPPLER EDIT ADDITION BEGIN - SUPPLY_SHORTAGE STORY MODULE + var/shortage_text = "" + if (pack.is_unavailable()) + shortage_text = " (Shortages: Unavailable!)" + else if (pack.get_shortage_price_mult() != 1) + shortage_text = " (Shortages: [pack.get_shortage_price_mult()]x cooldown)" + // DOPPLER EDIT ADDITION END UNTYPED_LIST_ADD(supply_data[pack.group], list( "name" = pack.name, "cost" = pack.get_cost(), + "unavailable" = pack.is_unavailable(), // DOPPLER EDIT ADDITION - SUPPLY_SHORTAGE STORY MODULE + "shortage_text" = shortage_text, // DOPPLER EDIT ADDITION - SUPPLY_SHORTAGE STORY MODULE "id" = pack.id, "desc" = pack.desc || pack.name, // If there is a description, use it. Otherwise use the pack's name. )) diff --git a/config/config.txt b/config/config.txt index 35b7e9a352d176..ebf61685b778a5 100644 --- a/config/config.txt +++ b/config/config.txt @@ -3,6 +3,7 @@ $include game_options.txt $include dbconfig.txt $include doppler/config_doppler.txt +$include doppler/STORY_SUPPLY_SHORTAGE.txt $include comms.txt $include logging.txt $include resources.txt diff --git a/config/doppler/STORY_SUPPLY_SHORTAGE.txt b/config/doppler/STORY_SUPPLY_SHORTAGE.txt new file mode 100644 index 00000000000000..dfbc7ba520b870 --- /dev/null +++ b/config/doppler/STORY_SUPPLY_SHORTAGE.txt @@ -0,0 +1,10 @@ +## Instructions - write SUPPLY_SHORTAGES, followed by this format: SUPPLYPACKTYPEPATH,MULT to change the price of +## a supply pack. +## 1 has no effect. +## -1 will make the item completely unavailable. +## Mults below 1, including 0, are possible, but highly inadvisable. + +## Examples: +#SUPPLY_SHORTAGES /datum/supply_pack/goody/laser_single,1.5 +#SUPPLY_SHORTAGES /datum/supply_pack/security/armory/laser,-1 +#SUPPLY_SHORTAGES /datum/supply_pack/security/stingpack,4 diff --git a/modular_doppler/STORY_supply_shortage/config.dm b/modular_doppler/STORY_supply_shortage/config.dm new file mode 100644 index 00000000000000..778d688288bcf9 --- /dev/null +++ b/modular_doppler/STORY_supply_shortage/config.dm @@ -0,0 +1,12 @@ +/datum/config_entry/keyed_list/supply_shortages + key_mode = KEY_MODE_TYPE + value_mode = VALUE_MODE_NUM + splitter = "," + +/datum/config_entry/keyed_list/supply_shortages/validate_config_key(key) + var/type = text2path(key) + if (type in get_usable_supply_packs()) + return key + + log_config("ERROR: [key] is not a valid supply pack typepath.") + return null diff --git a/modular_doppler/STORY_supply_shortage/readme.md b/modular_doppler/STORY_supply_shortage/readme.md new file mode 100644 index 00000000000000..95d4a45cc71f44 --- /dev/null +++ b/modular_doppler/STORY_supply_shortage/readme.md @@ -0,0 +1,34 @@ +## Title: Supply shortage + +MODULE ID: SUPPLY_SHORTAGE + +### Description: + +TEMPORARY STORY MODULE. WILL BE REVERTED WHEN THE ARC ENDS. + +### TG Proc Changes: + +code/modules/cargo/orderconsole.dm - L192, added "shortagemult" = pack.get_shortage_price_mult(), +code/modules/modular_computers/file_system/programs/dept_order.dm - L88 - L99 + +tgui/packages/tgui/interfaces/NtosDeptOrder.tsx - L31-L32, L211-213, L223 +tgui/packages/tgui/interfaces/Cargo/CargoCatalog.tsx - L201-L204, L221-L223, L241-L245 +tgui/packages/tgui/interfaces/Cargo/types.ts - L42 + +config/config.txt - L6 + +### Defines: + +N/A + +### Master file additions + +N/A + +### Included files that are not contained in this module: + +config/doppler/STORY_SUPPLY_SHORTAGE.txt + +### Credits: + +Niko diff --git a/modular_doppler/STORY_supply_shortage/supply_pack.dm b/modular_doppler/STORY_supply_shortage/supply_pack.dm new file mode 100644 index 00000000000000..caf0d6c7d8bdd8 --- /dev/null +++ b/modular_doppler/STORY_supply_shortage/supply_pack.dm @@ -0,0 +1,36 @@ +/// Returns a list of non-abstract supply packs. +/proc/get_usable_supply_packs() + RETURN_TYPE(/list) + + var/list/packs = list() + + for (var/datum/supply_pack/iter_path as anything in subtypesof(/datum/supply_pack)) + if (iter_path::abstract_type == iter_path) + continue + packs += iter_path + + return packs + +/// Returns the assoc list of stringified supply pack typepaths to their price mult. +/proc/get_price_mults() + RETURN_TYPE(/list) + + return CONFIG_GET(keyed_list/supply_shortages) + +// If this proc returns -1, the item is wholly unavailable. +/// Returns the actual price mult of the supply pack. If -1, the item is completely unavailable. Use get_cost() for actual price calculations. +/datum/supply_pack/proc/get_shortage_price_mult() + var/mult = get_price_mults()["[type]"] + if (isnull(mult)) + return 1 + return mult + +/// Returns TRUE if our shortage price mult is -1. +/datum/supply_pack/proc/is_unavailable() + return get_shortage_price_mult() == -1 + +/datum/supply_pack/get_cost() + . = ..() + + if (!is_unavailable()) + . *= get_shortage_price_mult() diff --git a/modular_doppler/donation_box/donation_box.dm b/modular_doppler/donation_box/donation_box.dm new file mode 100644 index 00000000000000..c92ca6ed26eb91 --- /dev/null +++ b/modular_doppler/donation_box/donation_box.dm @@ -0,0 +1,63 @@ +/obj/structure/closet/crate/donation + name = "donation box" + desc = "A steel crate, modified into a donation box via a small slot on the top. Allows insertion of items without allowing removal." + icon = 'modular_doppler/donation_box/icons/donation_box.dmi' + icon_state = "donation_box" + base_icon_state = "donation_box" + +/obj/structure/closet/crate/donation/secure + name = "secure donation box" + desc = "A steel crate, modified into a donation box via a small slot on the top. Allows insertion of items without allowing removal." + icon = 'modular_doppler/donation_box/icons/donation_box.dmi' + icon_state = "securedonation_box" + base_icon_state = "securedonation_box" + secure = TRUE + card_reader_installed = TRUE + +/obj/structure/closet/crate/donation/examine(mob/user) + . = ..() + + . += span_smallnotice("When closed, you can right click with an item to place it in the box, if able.") + +/obj/structure/closet/crate/donation/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if (opened) + return NONE + if (user.combat_mode) + return NONE + if (!LAZYACCESS(modifiers, RIGHT_CLICK)) + return NONE + + if (!insertion_allowed(tool)) + balloon_alert(user, "can't fit it in!") + return NONE + + user.balloon_alert_to_viewers("inserts [tool]", "inserted [tool]") + user.visible_message( + span_notice("[user] inserts [tool] into the small slot on [src]."), + span_notice("You insert [tool] into the small slot on [src].") + ) + + if (insert(tool)) + return ITEM_INTERACT_SUCCESS + return NONE + +/obj/item/donation_box_kit + icon = 'icons/obj/storage/box.dmi' + icon_state = "plasticbox" + name = "donation kit" + desc = "Contains a folded donation box, with an access lock and a few tools inside." + +/obj/item/donation_box_kit/attack_self(mob/user, modifiers) + user.balloon_alert_to_viewers("deploying...") + + if (!do_after(user, 3 SECONDS, src)) + return FALSE + + var/obj/structure/closet/crate/donation/secure/box = new /obj/structure/closet/crate/donation/secure(get_turf(user)) + new /obj/item/hand_labeler(box) + + playsound(src, 'sound/machines/terminal/terminal_eject.ogg', 70, TRUE) + qdel(src) + + return TRUE + diff --git a/modular_doppler/donation_box/icons/donation_box.dmi b/modular_doppler/donation_box/icons/donation_box.dmi new file mode 100644 index 0000000000000000000000000000000000000000..757eb8ffa64287cd6d0be31c55421dfa219b2f54 GIT binary patch literal 1292 zcmV+n1@roeP)|Go(x9wE?Z3u$U?ep?=XFA6?CL&C(x!mmEmf+FK-5?6crcwpa%&F41R)#GygL)%rhPu0OG(5`T6<(zA+aW91jo@2L}luBPA*=FDxxE zI5|B0|0(}7Gt2-08X6iJNG459O$TTnWCaB?4hsMOnZUrnoFELsBn1wf9SFV^?*4(H z00001bW%=J06^y0W&i*H$a+**bVOxyV{&P5bZKvH004NLm6A;kf-n$9*Yp$(Y>5Gd z=*EqK7#4B`Q|JhdLP=ZyZf~g@163j2%uK(RH)-nOUAoV5oE$QA10fl2@fJsm06BL? zRjr%V5;--ns#g8Y21!K}=+dRUB}xOwf-)a{D&st1NrXE`Ywis}*3^FTKcLvs?jfeWxoB$ZD*Bs=m_|Q0#$9E1;_HbOlsj zRaT&Gy|ZAZy?&Jys9o=@%@t^73lSd`$QhJADx9P08wud~Vfa23MncH3j|$WZ6!jOZ z>KhGkn@R%k9DD%gcVbn5D)kKqh*$u521kmmA#V{X09D^$05<*Uw~+56Hh{%aZ=njn zcVY7F!^EP#!2s%eU_b$Gg)qAfM1VWZ??$XZHvz`uIDa3A zUbBBSSbrAQoMiw}zb<;nbQ2&5M9GU$*8v_jk2;%&QTd%TyKG@`Ho%Dgkq1cCJKKCIuwhHbo1}gDwZN__ zAD7z~EWkqBuB>k$z(ej^syO5U7P;@K;*bw8KVC-Z6LhIa-)k-~)^dk5Sfcc#b#H4gdfE0000000000*KON!y=(te?_1&$=Jsv=&Cu@V z$IjeN{XUPeeoOYhy?4#9BLb|5`QPr$CnWuwPar19oq2}n`7`b@YKu9uxq#dC+r5Vy zc?PvTL}=O5e&6>H-2B`h`W}Ltr{k}_hX4Qo00000000000000003bWnZnQqhs+V4z z`X5_Iv)58in{MfIZ04YD0E@m&r<|HuALAvQsPUb9 literal 0 HcmV?d00001 diff --git a/modular_doppler/donation_box/loadout.dm b/modular_doppler/donation_box/loadout.dm new file mode 100644 index 00000000000000..ae6eb4e8a82617 --- /dev/null +++ b/modular_doppler/donation_box/loadout.dm @@ -0,0 +1,3 @@ +/datum/loadout_item/pocket_items/equipment/donation_kit + name = "Donation Kit" + item_path = /obj/item/donation_box_kit diff --git a/modular_doppler/modular_crafting/code/sheet_types.dm b/modular_doppler/modular_crafting/code/sheet_types.dm index 6f546d20248b44..c46139dece8da6 100644 --- a/modular_doppler/modular_crafting/code/sheet_types.dm +++ b/modular_doppler/modular_crafting/code/sheet_types.dm @@ -25,6 +25,7 @@ GLOBAL_LIST_INIT(doppler_metal_recipes, list( new/datum/stack_recipe("forge", /obj/structure/reagent_forge, 10, time = 2 SECONDS, crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_ONE_PER_TURF | CRAFT_ON_SOLID_GROUND, category = CAT_TOOLS), new/datum/stack_recipe("throwing wheel", /obj/structure/throwing_wheel, 10, time = 2 SECONDS, crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_ONE_PER_TURF | CRAFT_ON_SOLID_GROUND, category = CAT_TOOLS), new/datum/stack_recipe("metal shelf", /obj/structure/shelf, 1, time = 2 SECONDS, crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_ONE_PER_TURF | CRAFT_ON_SOLID_GROUND, category = CAT_STRUCTURE), + new/datum/stack_recipe("donation box", /obj/structure/closet/crate/donation, 1, time = 3 SECONDS, crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_ONE_PER_TURF | CRAFT_ON_SOLID_GROUND, category = CAT_CONTAINERS), )) GLOBAL_LIST_INIT(doppler_metal_airlock_recipes, list( diff --git a/tgstation.dme b/tgstation.dme index fd750de46c9da8..7b96f6d9410d78 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -6934,6 +6934,8 @@ #include "modular_doppler\deforest_medical_items\code\vulnerable_status_effect.dm" #include "modular_doppler\deforest_medical_items\code\chemicals\demoneye.dm" #include "modular_doppler\disable_suicide\config_entries.dm" +#include "modular_doppler\donation_box\donation_box.dm" +#include "modular_doppler\donation_box\loadout.dm" #include "modular_doppler\doppler_command_uniforms\hop\overrides.dm" #include "modular_doppler\emotes\code\emotes.dm" #include "modular_doppler\emotes\code\hologram.dm" @@ -7720,6 +7722,8 @@ #include "modular_doppler\starter_resources\ore_vent.dm" #include "modular_doppler\stone\code\ore_veins.dm" #include "modular_doppler\stone\code\stone.dm" +#include "modular_doppler\STORY_supply_shortage\config.dm" +#include "modular_doppler\STORY_supply_shortage\supply_pack.dm" #include "modular_doppler\super_glasses\code\glasses_stats_thief.dm" #include "modular_doppler\super_glasses\code\techno_visors.dm" #include "modular_doppler\suuuper_trustworthy_item_orders\code\chem_containers.dm" diff --git a/tgui/packages/tgui/interfaces/Cargo/CargoCatalog.tsx b/tgui/packages/tgui/interfaces/Cargo/CargoCatalog.tsx index dbc019cacf081b..f20f13a1392bcc 100644 --- a/tgui/packages/tgui/interfaces/Cargo/CargoCatalog.tsx +++ b/tgui/packages/tgui/interfaces/Cargo/CargoCatalog.tsx @@ -198,6 +198,10 @@ function CatalogList(props: CatalogListProps) { } const privateBuy = (self_paid && !pack.goody) || app_cost; + const unavailable = pack.shortagemult === -1; + const shortageString = unavailable + ? 'UNAVAILABLE!' + : `${pack.shortagemult}x cost`; const tooltipIcon = (content: string, icon: string, color: string) => ( @@ -214,7 +218,9 @@ function CatalogList(props: CatalogListProps) { dmIconState={pack.first_item_icon_state} imageSize={32} color={color} - disabled={(amount_by_name[pack.name] || 0) >= max_order} + disabled={ + (amount_by_name[pack.name] || 0) >= max_order || unavailable + } buttonsAlt={ From 69173bcb3167bfb3242ff541aec68e937ce1dacd Mon Sep 17 00:00:00 2001 From: nikothedude <59709059+nikothedude@users.noreply.github.com> Date: Fri, 27 Feb 2026 21:42:07 -0500 Subject: [PATCH 02/19] reviews pt1 --- code/modules/cargo/exports/large_objects.dm | 2 +- modular_doppler/STORY_supply_shortage/config.dm | 1 - modular_doppler/donation_box/donation_box.dm | 3 +-- modular_doppler/modular_crafting/code/sheet_types.dm | 2 +- 4 files changed, 3 insertions(+), 5 deletions(-) diff --git a/code/modules/cargo/exports/large_objects.dm b/code/modules/cargo/exports/large_objects.dm index 36c569a93d0ac8..920297e42d3622 100644 --- a/code/modules/cargo/exports/large_objects.dm +++ b/code/modules/cargo/exports/large_objects.dm @@ -8,7 +8,7 @@ /obj/structure/closet/crate/large, /obj/structure/closet/crate/mail, /obj/structure/closet/crate/wooden, - /obj/structure/closet/crate/donation, // DOPPLER EDIT ADDITION + /obj/structure/closet/crate/donation, // DOPPLER EDIT ADDITION - Dono crates are in loadout and are craftable... do not want infinite money glitch ) /datum/export/large/crate/total_printout(datum/export_report/ex, notes = TRUE) // That's why a goddamn metal crate costs that much. diff --git a/modular_doppler/STORY_supply_shortage/config.dm b/modular_doppler/STORY_supply_shortage/config.dm index 778d688288bcf9..58caf63c53739d 100644 --- a/modular_doppler/STORY_supply_shortage/config.dm +++ b/modular_doppler/STORY_supply_shortage/config.dm @@ -7,6 +7,5 @@ var/type = text2path(key) if (type in get_usable_supply_packs()) return key - log_config("ERROR: [key] is not a valid supply pack typepath.") return null diff --git a/modular_doppler/donation_box/donation_box.dm b/modular_doppler/donation_box/donation_box.dm index c92ca6ed26eb91..f32afc91d8e512 100644 --- a/modular_doppler/donation_box/donation_box.dm +++ b/modular_doppler/donation_box/donation_box.dm @@ -17,7 +17,7 @@ /obj/structure/closet/crate/donation/examine(mob/user) . = ..() - . += span_smallnotice("When closed, you can right click with an item to place it in the box, if able.") + . += span_smallnotice("When closed, you can [EXAMINE_HINT("Right-Click")] with an item to place it in the box, if able.") /obj/structure/closet/crate/donation/item_interaction(mob/living/user, obj/item/tool, list/modifiers) if (opened) @@ -26,7 +26,6 @@ return NONE if (!LAZYACCESS(modifiers, RIGHT_CLICK)) return NONE - if (!insertion_allowed(tool)) balloon_alert(user, "can't fit it in!") return NONE diff --git a/modular_doppler/modular_crafting/code/sheet_types.dm b/modular_doppler/modular_crafting/code/sheet_types.dm index c46139dece8da6..5978e0041c4997 100644 --- a/modular_doppler/modular_crafting/code/sheet_types.dm +++ b/modular_doppler/modular_crafting/code/sheet_types.dm @@ -25,7 +25,7 @@ GLOBAL_LIST_INIT(doppler_metal_recipes, list( new/datum/stack_recipe("forge", /obj/structure/reagent_forge, 10, time = 2 SECONDS, crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_ONE_PER_TURF | CRAFT_ON_SOLID_GROUND, category = CAT_TOOLS), new/datum/stack_recipe("throwing wheel", /obj/structure/throwing_wheel, 10, time = 2 SECONDS, crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_ONE_PER_TURF | CRAFT_ON_SOLID_GROUND, category = CAT_TOOLS), new/datum/stack_recipe("metal shelf", /obj/structure/shelf, 1, time = 2 SECONDS, crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_ONE_PER_TURF | CRAFT_ON_SOLID_GROUND, category = CAT_STRUCTURE), - new/datum/stack_recipe("donation box", /obj/structure/closet/crate/donation, 1, time = 3 SECONDS, crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_ONE_PER_TURF | CRAFT_ON_SOLID_GROUND, category = CAT_CONTAINERS), + new/datum/stack_recipe("donation box", /obj/structure/closet/crate/donation, 10, time = 3 SECONDS, crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_ONE_PER_TURF | CRAFT_ON_SOLID_GROUND, category = CAT_CONTAINERS), )) GLOBAL_LIST_INIT(doppler_metal_airlock_recipes, list( From be8b20bb1a5d11fce1ff937a0ad82b93d05a25d9 Mon Sep 17 00:00:00 2001 From: nikothedude <59709059+nikothedude@users.noreply.github.com> Date: Fri, 27 Feb 2026 21:47:43 -0500 Subject: [PATCH 03/19] remove newlines --- modular_doppler/STORY_supply_shortage/supply_pack.dm | 4 ---- modular_doppler/donation_box/donation_box.dm | 3 --- 2 files changed, 7 deletions(-) diff --git a/modular_doppler/STORY_supply_shortage/supply_pack.dm b/modular_doppler/STORY_supply_shortage/supply_pack.dm index caf0d6c7d8bdd8..01426caef5fd8a 100644 --- a/modular_doppler/STORY_supply_shortage/supply_pack.dm +++ b/modular_doppler/STORY_supply_shortage/supply_pack.dm @@ -1,20 +1,16 @@ /// Returns a list of non-abstract supply packs. /proc/get_usable_supply_packs() RETURN_TYPE(/list) - var/list/packs = list() - for (var/datum/supply_pack/iter_path as anything in subtypesof(/datum/supply_pack)) if (iter_path::abstract_type == iter_path) continue packs += iter_path - return packs /// Returns the assoc list of stringified supply pack typepaths to their price mult. /proc/get_price_mults() RETURN_TYPE(/list) - return CONFIG_GET(keyed_list/supply_shortages) // If this proc returns -1, the item is wholly unavailable. diff --git a/modular_doppler/donation_box/donation_box.dm b/modular_doppler/donation_box/donation_box.dm index f32afc91d8e512..4cfd8fd1897488 100644 --- a/modular_doppler/donation_box/donation_box.dm +++ b/modular_doppler/donation_box/donation_box.dm @@ -48,13 +48,10 @@ /obj/item/donation_box_kit/attack_self(mob/user, modifiers) user.balloon_alert_to_viewers("deploying...") - if (!do_after(user, 3 SECONDS, src)) return FALSE - var/obj/structure/closet/crate/donation/secure/box = new /obj/structure/closet/crate/donation/secure(get_turf(user)) new /obj/item/hand_labeler(box) - playsound(src, 'sound/machines/terminal/terminal_eject.ogg', 70, TRUE) qdel(src) From f5bf05297ab34bab9cb9af225285500a00156bf3 Mon Sep 17 00:00:00 2001 From: nikothedude <59709059+nikothedude@users.noreply.github.com> Date: Sat, 28 Feb 2026 13:49:10 -0500 Subject: [PATCH 04/19] gotta go will fix this all later --- .../~doppler_defines/TESHARI_WAR_defines.dm | 5 + code/game/objects/effects/posters/poster.dm | 1 + code/modules/cargo/orderconsole.dm | 2 +- .../file_system/programs/dept_order.dm | 6 +- .../config.dm | 0 modular_doppler/STORY_teshari_war/mind.dm | 3 + .../STORY_teshari_war/preferences.dm | 30 ++++ .../readme.md | 7 +- .../supply_pack.dm | 0 modular_doppler/war_posters/code/loadout.dm | 0 modular_doppler/war_posters/code/mood.dm | 13 ++ modular_doppler/war_posters/code/posters.dm | 141 ++++++++++++++++++ .../war_posters/code/war_moralisation.dm | 83 +++++++++++ modular_doppler/war_posters/icons/posters.dmi | Bin 0 -> 3985 bytes tgstation.dme | 11 +- .../dopplershift_preferences/war_faction.tsx | 13 ++ 16 files changed, 306 insertions(+), 9 deletions(-) create mode 100644 code/__DEFINES/~doppler_defines/TESHARI_WAR_defines.dm rename modular_doppler/{STORY_supply_shortage => STORY_teshari_war}/config.dm (100%) create mode 100644 modular_doppler/STORY_teshari_war/mind.dm create mode 100644 modular_doppler/STORY_teshari_war/preferences.dm rename modular_doppler/{STORY_supply_shortage => STORY_teshari_war}/readme.md (76%) rename modular_doppler/{STORY_supply_shortage => STORY_teshari_war}/supply_pack.dm (100%) create mode 100644 modular_doppler/war_posters/code/loadout.dm create mode 100644 modular_doppler/war_posters/code/mood.dm create mode 100644 modular_doppler/war_posters/code/posters.dm create mode 100644 modular_doppler/war_posters/code/war_moralisation.dm create mode 100644 modular_doppler/war_posters/icons/posters.dmi create mode 100644 tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/dopplershift_preferences/war_faction.tsx diff --git a/code/__DEFINES/~doppler_defines/TESHARI_WAR_defines.dm b/code/__DEFINES/~doppler_defines/TESHARI_WAR_defines.dm new file mode 100644 index 00000000000000..bfca153ed5734c --- /dev/null +++ b/code/__DEFINES/~doppler_defines/TESHARI_WAR_defines.dm @@ -0,0 +1,5 @@ +// Factions +#define WAR_FACTION_TIZIRA "Tizira" +#define WAR_FACTION_TESHARI "Teshari Soverignty" +#define WAR_FACTION_ISOLATIONIST "4CA Isolationist" +#define WAR_FACTION_NEUTRAL "Neutral" diff --git a/code/game/objects/effects/posters/poster.dm b/code/game/objects/effects/posters/poster.dm index ebfc3a791bb2f1..8e6859a4840291 100644 --- a/code/game/objects/effects/posters/poster.dm +++ b/code/game/objects/effects/posters/poster.dm @@ -155,6 +155,7 @@ poster_item_desc = initial(selected.poster_item_desc) poster_item_icon_state = initial(selected.poster_item_icon_state) ruined = initial(selected.ruined) + randomise_further(selected) // DOPPLER EDIT ADDITIION - War posters if(length(GLOB.holidays) && prob(30)) // its the holidays! lets get festive apply_holiday() update_appearance() diff --git a/code/modules/cargo/orderconsole.dm b/code/modules/cargo/orderconsole.dm index a52cd0df3d22e7..c4b3cd16752a32 100644 --- a/code/modules/cargo/orderconsole.dm +++ b/code/modules/cargo/orderconsole.dm @@ -189,7 +189,7 @@ packs += list(list( "name" = pack.name, "cost" = pack.get_cost() * get_discount(), - "shortagemult" = pack.get_shortage_price_mult(), // DOPPLER EDIT ADDITION - SUPPLY_SHORTAGE STORY MODULE + "shortagemult" = pack.get_shortage_price_mult(), // DOPPLER EDIT ADDITION - TESHARI_WAR STORY MODULE "id" = pack_id, "desc" = pack.desc || pack.name, // If there is a description, use it. Otherwise use the pack's name. "first_item_icon" = first_item?.icon, diff --git a/code/modules/modular_computers/file_system/programs/dept_order.dm b/code/modules/modular_computers/file_system/programs/dept_order.dm index dfe716d5412614..f0952e5b151e73 100644 --- a/code/modules/modular_computers/file_system/programs/dept_order.dm +++ b/code/modules/modular_computers/file_system/programs/dept_order.dm @@ -85,7 +85,7 @@ GLOBAL_VAR(department_cd_override) if(!islist(supply_data[pack.group]) || !can_see_pack(pack)) continue - // DOPPLER EDIT ADDITION BEGIN - SUPPLY_SHORTAGE STORY MODULE + // DOPPLER EDIT ADDITION BEGIN - TESHARI_WAR STORY MODULE var/shortage_text = "" if (pack.is_unavailable()) shortage_text = " (Shortages: Unavailable!)" @@ -95,8 +95,8 @@ GLOBAL_VAR(department_cd_override) UNTYPED_LIST_ADD(supply_data[pack.group], list( "name" = pack.name, "cost" = pack.get_cost(), - "unavailable" = pack.is_unavailable(), // DOPPLER EDIT ADDITION - SUPPLY_SHORTAGE STORY MODULE - "shortage_text" = shortage_text, // DOPPLER EDIT ADDITION - SUPPLY_SHORTAGE STORY MODULE + "unavailable" = pack.is_unavailable(), // DOPPLER EDIT ADDITION - TESHARI_WAR STORY MODULE + "shortage_text" = shortage_text, // DOPPLER EDIT ADDITION - TESHARI_WAR STORY MODULE "id" = pack.id, "desc" = pack.desc || pack.name, // If there is a description, use it. Otherwise use the pack's name. )) diff --git a/modular_doppler/STORY_supply_shortage/config.dm b/modular_doppler/STORY_teshari_war/config.dm similarity index 100% rename from modular_doppler/STORY_supply_shortage/config.dm rename to modular_doppler/STORY_teshari_war/config.dm diff --git a/modular_doppler/STORY_teshari_war/mind.dm b/modular_doppler/STORY_teshari_war/mind.dm new file mode 100644 index 00000000000000..e1c852097cf25c --- /dev/null +++ b/modular_doppler/STORY_teshari_war/mind.dm @@ -0,0 +1,3 @@ +/datum/mind + /// The stance this mind takes on the tizira/teshari war. By default, they dont care at all. + var/war_faction = WAR_FACTION_NEUTRAL // i just wanna grill diff --git a/modular_doppler/STORY_teshari_war/preferences.dm b/modular_doppler/STORY_teshari_war/preferences.dm new file mode 100644 index 00000000000000..9d27c79c4753a6 --- /dev/null +++ b/modular_doppler/STORY_teshari_war/preferences.dm @@ -0,0 +1,30 @@ +GLOBAL_LIST_INIT(teshari_war_factions, list( + WAR_FACTION_TIZIRA, + WAR_FACTION_TESHARI, + WAR_FACTION_ISOLATIONIST, + WAR_FACTION_NEUTRAL +)) + +/datum/preference/choiced/doppler_war_faction + savefile_key = "doppler_war_faction" + main_feature_name = "War Alignment" + savefile_identifier = PREFERENCE_CHARACTER + category = PREFERENCE_CATEGORY_SECONDARY_FEATURES + priority = PREFERENCE_PRIORITY_DEFAULT + +/datum/preference/choiced/doppler_war_faction/init_possible_values() + return GLOB.teshari_war_factions + +/datum/preference/choiced/doppler_war_faction/create_default_value() + return WAR_FACTION_NEUTRAL + +/datum/preference/choiced/doppler_war_faction/apply_to_human(mob/living/carbon/human/target, value) + RegisterSignal(target, COMSIG_MOB_MIND_INITIALIZED, PROC_REF(apply_mind_variable)) + return + +/datum/preference/choiced/doppler_war_faction/proc/apply_mind_variable(mob/living/carbon/human/target, datum/mind/new_mind) + SIGNAL_HANDLER + + new_mind.war_faction = target.client.prefs.read_preference(/datum/preference/choiced/doppler_war_faction) + UnregisterSignal(target, COMSIG_MOB_MIND_INITIALIZED) + diff --git a/modular_doppler/STORY_supply_shortage/readme.md b/modular_doppler/STORY_teshari_war/readme.md similarity index 76% rename from modular_doppler/STORY_supply_shortage/readme.md rename to modular_doppler/STORY_teshari_war/readme.md index 95d4a45cc71f44..9b3f2eb3793b17 100644 --- a/modular_doppler/STORY_supply_shortage/readme.md +++ b/modular_doppler/STORY_teshari_war/readme.md @@ -1,6 +1,6 @@ -## Title: Supply shortage +## Title: Teshari/Tizira war -MODULE ID: SUPPLY_SHORTAGE +MODULE ID: TESHARI_WAR ### Description: @@ -19,7 +19,7 @@ config/config.txt - L6 ### Defines: -N/A +code\_\_DEFINES\~doppler_defines\TESHARI_WAR_defines.dm ### Master file additions @@ -28,6 +28,7 @@ N/A ### Included files that are not contained in this module: config/doppler/STORY_SUPPLY_SHORTAGE.txt +tgui\packages\tgui\interfaces\PreferencesMenu\preferences\features\dopplershift_preferences\war_faction.tsx ### Credits: diff --git a/modular_doppler/STORY_supply_shortage/supply_pack.dm b/modular_doppler/STORY_teshari_war/supply_pack.dm similarity index 100% rename from modular_doppler/STORY_supply_shortage/supply_pack.dm rename to modular_doppler/STORY_teshari_war/supply_pack.dm diff --git a/modular_doppler/war_posters/code/loadout.dm b/modular_doppler/war_posters/code/loadout.dm new file mode 100644 index 00000000000000..e69de29bb2d1d6 diff --git a/modular_doppler/war_posters/code/mood.dm b/modular_doppler/war_posters/code/mood.dm new file mode 100644 index 00000000000000..87d7c4fe71985f --- /dev/null +++ b/modular_doppler/war_posters/code/mood.dm @@ -0,0 +1,13 @@ +#define WAR_POSTER_MOOD_CAT "poster_mood" + +/datum/mood_event/war_poster_sympathy + description = "I saw a poster that reinforces my beliefs. It's good to have like-minded people around." + mood_change = 2 + category = WAR_POSTER_MOOD_CAT + +/datum/mood_event/war_poster_wrong + description = "I saw a poster that really pissed me off! How can people like that be allowed to work here?!" + mood_change = -4 + category = WAR_POSTER_MOOD_CAT + +#undef WAR_POSTER_MOOD_CAT diff --git a/modular_doppler/war_posters/code/posters.dm b/modular_doppler/war_posters/code/posters.dm new file mode 100644 index 00000000000000..7908ebb8b53f70 --- /dev/null +++ b/modular_doppler/war_posters/code/posters.dm @@ -0,0 +1,141 @@ +#define WAR_POSTER_MOOD "war_poster" +#define WAR_POSTER_RANGE 7 + +/obj/structure/sign/poster/proc/randomise_further(obj/structure/sign/poster/selected_path) + return + +/obj/structure/sign/poster/doppler_war + name = "abstract war poster" + desc = "Surely, if this was coded correctly, you would be angry." + abstract_type = /obj/structure/sign/poster/doppler_war + icon = 'modular_doppler/war_posters/icons/posters.dmi' + icon_state = "tesh_unity" + + /// Those of our aligned faction recieve a small mood buff when seeing this poster - other factions get a debuff. Neutral doesn't care at all. + var/aligned_faction = WAR_FACTION_NEUTRAL + /// Assoc list of (WAR_FACTION -> list(/datum/war_demoralisation_reaction, chance)). Used in pickweight to determine what people think when they see the poster, depending on + var/list/faction_reactions = list() + var/list/faction_moods = list() + /// Proximity sensor for the above vars + var/datum/proximity_monitor/advanced/war_demoraliser/demoraliser + +/obj/structure/sign/poster/doppler_war/randomise_further(obj/structure/sign/poster/doppler_war/selected_path) + . = ..() + + faction_reactions = selected_path::faction_reactions + faction_moods = selected_path::faction_moods + +/obj/structure/sign/poster/doppler_war/on_placed_poster() + demoraliser = new(src, WAR_POSTER_RANGE, TRUE, aligned_faction, WAR_POSTER_MOOD, faction_reactions, faction_moods, READING_CHECK_LIGHT) + return ..() + +/obj/item/poster/random_teshari + name = "random teshari poster" + poster_type = /obj/structure/sign/poster/doppler_war/teshari/random + icon = 'modular_doppler/war_posters/icons/posters.dmi' + icon_state = "rolled_tesh" + +/obj/structure/sign/poster/doppler_war/teshari + name = "teshari war poster" + poster_item_name = "teshari war poster" + poster_item_desc = "A pro-teshari propoganda poster, espousing the evils of the Talunan empire and the virtue of Sirsiai's defense. Aisi Tarischi." + poster_item_icon_state = "rolled_tesh" + printable = TRUE + aligned_faction = WAR_FACTION_TESHARI + abstract_type = /obj/structure/sign/poster/doppler_war/teshari + +/obj/structure/sign/poster/doppler_war/teshari/random + name = "random teshari poster" + random_basetype = /obj/structure/sign/poster/doppler_war/teshari + icon_state = "tesh_unity" + never_random = TRUE + +/obj/structure/sign/poster/doppler_war/teshari/unity + name = "Ilisime. (Unity.)" + desc = "A poster encouraging the teshari diaspora - from stars, from sea, from earth, from dust - to unite in defense of their shattered homeworld, Sirisai." + icon_state = "tesh_unity" + faction_reactions = list( + WAR_FACTION_TESHARI = list( + "All for Sirisai. Aisi Tarischi!" = 10, + "Sophonts in arms, we can save Teshari kind." = 10, + "Unity...? I'm not alone here." = 8 + ), + WAR_FACTION_TIZIRA = list( + + ), + WAR_FACTION_ISOLATIONIST = list( + "Ugh! More propoganda!" = 10, + "Keep your war posters out of my workspace." = 10 + ) + ) + faction_moods = list( + WAR_FACTION_TESHARI = /datum/mood_event/war_poster_sympathy, + WAR_FACTION_TIZIRA = /datum/mood_event/war_poster_wrong, + WAR_FACTION_ISOLATIONIST = /datum/mood_event/war_poster_wrong + ) + +/obj/structure/sign/poster/doppler_war/teshari/execution + name = "Schatara Shitilushu. (Our Execution.)" + desc = "A kneeled teshari is presented for execution by a Tiziran blade. You could be next on the block. Act now!" + icon_state = "tesh_warn" + faction_reactions = list( + WAR_FACTION_TESHARI = list( + "We will shatter their Tiziran steel with our resolve..." = 10, + "I won't be next. Noone will. We can stop the Tizirans here and now." = 10, + ), + WAR_FACTION_TIZIRA = list( + + ), + WAR_FACTION_ISOLATIONIST = list( + "Seriously? An execution on a poster? That's just tasteless." = 10, + "They're so desparate to get the 4CA involved, they post fake executions on our walls?" = 10 + ) + ) + faction_moods = list( + WAR_FACTION_TESHARI = /datum/mood_event/war_poster_sympathy, + WAR_FACTION_TIZIRA = /datum/mood_event/war_poster_wrong, + WAR_FACTION_ISOLATIONIST = /datum/mood_event/war_poster_wrong + ) + +/obj/structure/sign/poster/doppler_war/tiziran + name = "tiziran war poster" + poster_item_name = "tiziran war poster" + poster_item_desc = "A pro-tizira propoganda poster, generally encouraging enlistment and patriotism." + poster_item_icon_state = "rolled_tizira" + printable = TRUE + abstract_type = /obj/structure/sign/poster/doppler_war/tiziran + aligned_faction = WAR_FACTION_TIZIRA + +/obj/structure/sign/poster/doppler_war/tiziran/enlist + name = "Za'Haious Rar! (Enlist!)" + desc = "While many Tizirans face obligate military service, few reach professional status. This poster encourages the reader to fully commit themselves to the Talunan ranks, and earn their prestige in white." + icon_state = "tizira_enlist" + faction_reactions = list( + WAR_FACTION_TESHARI = list( + "We will shatter their Tiziran steel with our resolve..." = 10, + "I won't be next. Noone will. We can stop the Tizirans here and now." = 10, + ), + WAR_FACTION_TIZIRA = list( + + ), + WAR_FACTION_ISOLATIONIST = list( + "Ugh! More propoganda!" = 10, + "Keep your war posters out of my workspace." = 10 + ) + ) + faction_moods = list( + WAR_FACTION_TESHARI = /datum/mood_event/war_poster_wrong, + WAR_FACTION_TIZIRA = /datum/mood_event/war_poster_sympathy, + WAR_FACTION_ISOLATIONIST = /datum/mood_event/war_poster_wrong + ) + +/obj/structure/sign/poster/doppler_war/isolationist + name = "isolationist war poster" + poster_item_name = "isolationist war poster" + poster_item_desc = "An isolationist propoganda poster, condeming the 4CA for its attempted involvement in the tizira/teshari war." + poster_item_icon_state = "rolled_iso" + abstract_type = /obj/structure/sign/poster/doppler_war/isolationist + aligned_faction = WAR_FACTION_ISOLATIONIST + +#undef WAR_POSTER_MOOD +#undef WAR_POSTER_RANGE diff --git a/modular_doppler/war_posters/code/war_moralisation.dm b/modular_doppler/war_posters/code/war_moralisation.dm new file mode 100644 index 00000000000000..32b19430e8c4b1 --- /dev/null +++ b/modular_doppler/war_posters/code/war_moralisation.dm @@ -0,0 +1,83 @@ +/datum/proximity_monitor/advanced/war_demoraliser + /// The faction, using defines from TESHARI_WAR_defines.dm. Do NOT use neutral. + var/faction + /// Mood category to apply to moods + var/mood_category + /// Assoc list of (WAR_FACTION -> list(/datum/war_demoralisation_reaction, chance)). Used in pickweight to determine what people think when they see the poster, depending on + var/list/faction_reactions = list() + var/list/faction_moods = list() + /// For literacy checks + var/reading_requirements = READING_CHECK_LIGHT + +/datum/proximity_monitor/advanced/war_demoraliser/New(atom/_host, range, _ignore_if_not_on_turf = TRUE, faction, mood_category, list/faction_reactions, list/faction_moods, reading_requirements) + . = ..() + + if (faction == WAR_FACTION_NEUTRAL) + CRASH("War demoralizers should not be neutral. That's like, their entire point. They're propoganda.") + RegisterSignal(host, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine)) + + src.faction = faction + src.mood_category = mood_category + src.faction_reactions = faction_reactions + src.faction_moods = faction_moods + src.reading_requirements = reading_requirements + +/datum/proximity_monitor/advanced/war_demoraliser/field_turf_crossed(atom/movable/crossed, turf/old_location, turf/new_location) + if (!isliving(crossed)) + return + if (!can_see(crossed, host, current_range)) + return + on_seen(crossed) + +/* + * Signal proc for [COMSIG_ATOM_EXAMINE]. + * Immediately tries to apply a mood to the examiner, ignoring the proximity check. + * If someone wants to make themselves sad through a camera that's their choice I guess. + */ +/datum/proximity_monitor/advanced/war_demoraliser/proc/on_examine(datum/source, mob/examiner) + SIGNAL_HANDLER + if (isliving(examiner)) + on_seen(examiner) + +/** + * Called when someone is looking at a war-related demoralizer. + * Applies a mood if they are conscious and don't already have it. + * Different moods are applied based on their faction. + * + * Arguments + * * viewer - Whoever is looking at this. + */ +/datum/proximity_monitor/advanced/war_demoraliser/proc/on_seen(mob/living/viewer) + if (!viewer.mind) + return + // If you're not conscious you're too busy or dead to look at propaganda + if (viewer.stat != CONSCIOUS) + return + if(viewer.is_blind()) + return + if (!should_demoralise(viewer)) + return + if(!viewer.can_read(host, reading_requirements, TRUE)) //if it's a text based demoralization datum, make sure the mob has the capability to read. if it's only an image, make sure it's just bright enough for them to see it. + return + + var/target_faction = viewer.mind.war_faction + var/datum/mood_event/mood = faction_moods[target_faction] + if (isnull(mood)) + return + viewer.add_mood_event(mood_category, mood) + var/reaction = faction_reactions[target_faction] + if (isnull(reaction)) + return + to_chat(viewer, span_notice(reaction)) + +/** + * Returns true if user is capable of experiencing moods and doesn't already have the one relevant to this datum, false otherwise. + * + * Arguments + * * viewer - Whoever just saw the parent. + */ +/datum/proximity_monitor/advanced/war_demoraliser/proc/should_demoralise(mob/living/viewer) + if (!viewer.mob_mood) + return FALSE + + return !viewer.mob_mood.has_mood_of_category(mood_category) diff --git a/modular_doppler/war_posters/icons/posters.dmi b/modular_doppler/war_posters/icons/posters.dmi new file mode 100644 index 0000000000000000000000000000000000000000..6aa0fc62d5976db5348b326874c0e877ae089839 GIT binary patch literal 3985 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 literal 0 HcmV?d00001 diff --git a/tgstation.dme b/tgstation.dme index 7b96f6d9410d78..9241c8b1965ba4 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -464,6 +464,7 @@ #include "code\__DEFINES\~doppler_defines\species_clothing_paths.dm" #include "code\__DEFINES\~doppler_defines\speech_channels.dm" #include "code\__DEFINES\~doppler_defines\strippable.dm" +#include "code\__DEFINES\~doppler_defines\TESHARI_WAR_defines.dm" #include "code\__DEFINES\~doppler_defines\text.dm" #include "code\__DEFINES\~doppler_defines\traits.dm" #include "code\__DEFINES\~doppler_defines\vehicles.dm" @@ -7722,8 +7723,10 @@ #include "modular_doppler\starter_resources\ore_vent.dm" #include "modular_doppler\stone\code\ore_veins.dm" #include "modular_doppler\stone\code\stone.dm" -#include "modular_doppler\STORY_supply_shortage\config.dm" -#include "modular_doppler\STORY_supply_shortage\supply_pack.dm" +#include "modular_doppler\STORY_teshari_war\config.dm" +#include "modular_doppler\STORY_teshari_war\mind.dm" +#include "modular_doppler\STORY_teshari_war\supply_pack.dm" +#include "modular_doppler\STORY_teshari_war\preferences.dm" #include "modular_doppler\super_glasses\code\glasses_stats_thief.dm" #include "modular_doppler\super_glasses\code\techno_visors.dm" #include "modular_doppler\suuuper_trustworthy_item_orders\code\chem_containers.dm" @@ -7771,6 +7774,10 @@ #include "modular_doppler\verbs\code\preferences.dm" #include "modular_doppler\verbs\code\say.dm" #include "modular_doppler\verbs\code\subtle.dm" +#include "modular_doppler\war_posters\code\loadout.dm" +#include "modular_doppler\war_posters\code\mood.dm" +#include "modular_doppler\war_posters\code\posters.dm" +#include "modular_doppler\war_posters\code\war_moralisation.dm" #include "modular_doppler\wargaming\code\game_kit.dm" #include "modular_doppler\wargaming\code\holograms.dm" #include "modular_doppler\wargaming\code\projectors.dm" diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/dopplershift_preferences/war_faction.tsx b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/dopplershift_preferences/war_faction.tsx new file mode 100644 index 00000000000000..595ee790bd93fc --- /dev/null +++ b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/dopplershift_preferences/war_faction.tsx @@ -0,0 +1,13 @@ +import { FeatureChoiced, FeatureValueProps, FeatureChoicedServerData } from "../base"; +import { FeatureDropdownInput } from "../dropdowns"; + +export const doppler_war_faction: FeatureChoiced = { + name: 'War Alignment', + description: + 'The stance your character takes on the Tizira/Teshari war.', + component: ( + props: FeatureValueProps, + ) => { + return ; + }, +}; From e7931c2e9acad892a9119d34279690cfdf08a8a9 Mon Sep 17 00:00:00 2001 From: nikothedude Date: Sat, 28 Feb 2026 15:35:17 -0500 Subject: [PATCH 05/19] ok it works now just need lore --- code/game/objects/effects/posters/poster.dm | 1 - modular_doppler/war_posters/code/mood.dm | 2 + modular_doppler/war_posters/code/posters.dm | 43 +++++++++---------- .../war_posters/code/war_moralisation.dm | 5 ++- 4 files changed, 25 insertions(+), 26 deletions(-) diff --git a/code/game/objects/effects/posters/poster.dm b/code/game/objects/effects/posters/poster.dm index 8e6859a4840291..ebfc3a791bb2f1 100644 --- a/code/game/objects/effects/posters/poster.dm +++ b/code/game/objects/effects/posters/poster.dm @@ -155,7 +155,6 @@ poster_item_desc = initial(selected.poster_item_desc) poster_item_icon_state = initial(selected.poster_item_icon_state) ruined = initial(selected.ruined) - randomise_further(selected) // DOPPLER EDIT ADDITIION - War posters if(length(GLOB.holidays) && prob(30)) // its the holidays! lets get festive apply_holiday() update_appearance() diff --git a/modular_doppler/war_posters/code/mood.dm b/modular_doppler/war_posters/code/mood.dm index 87d7c4fe71985f..2120771c9757c5 100644 --- a/modular_doppler/war_posters/code/mood.dm +++ b/modular_doppler/war_posters/code/mood.dm @@ -4,10 +4,12 @@ description = "I saw a poster that reinforces my beliefs. It's good to have like-minded people around." mood_change = 2 category = WAR_POSTER_MOOD_CAT + timeout = 120 SECONDS /datum/mood_event/war_poster_wrong description = "I saw a poster that really pissed me off! How can people like that be allowed to work here?!" mood_change = -4 category = WAR_POSTER_MOOD_CAT + timeout = 120 SECONDS #undef WAR_POSTER_MOOD_CAT diff --git a/modular_doppler/war_posters/code/posters.dm b/modular_doppler/war_posters/code/posters.dm index 7908ebb8b53f70..914b565647cc35 100644 --- a/modular_doppler/war_posters/code/posters.dm +++ b/modular_doppler/war_posters/code/posters.dm @@ -1,9 +1,6 @@ #define WAR_POSTER_MOOD "war_poster" #define WAR_POSTER_RANGE 7 -/obj/structure/sign/poster/proc/randomise_further(obj/structure/sign/poster/selected_path) - return - /obj/structure/sign/poster/doppler_war name = "abstract war poster" desc = "Surely, if this was coded correctly, you would be angry." @@ -13,25 +10,33 @@ /// Those of our aligned faction recieve a small mood buff when seeing this poster - other factions get a debuff. Neutral doesn't care at all. var/aligned_faction = WAR_FACTION_NEUTRAL - /// Assoc list of (WAR_FACTION -> list(/datum/war_demoralisation_reaction, chance)). Used in pickweight to determine what people think when they see the poster, depending on + /// Assoc list of (WAR_FACTION -> list(string, chance)). Used in pickweight to determine what people think when they see the poster, depending on var/list/faction_reactions = list() + /// Assoc list of (WAR_FACTION -> /datum/mood_event). Used to determine the actual mood event given. var/list/faction_moods = list() /// Proximity sensor for the above vars var/datum/proximity_monitor/advanced/war_demoraliser/demoraliser -/obj/structure/sign/poster/doppler_war/randomise_further(obj/structure/sign/poster/doppler_war/selected_path) - . = ..() - - faction_reactions = selected_path::faction_reactions - faction_moods = selected_path::faction_moods - /obj/structure/sign/poster/doppler_war/on_placed_poster() demoraliser = new(src, WAR_POSTER_RANGE, TRUE, aligned_faction, WAR_POSTER_MOOD, faction_reactions, faction_moods, READING_CHECK_LIGHT) return ..() -/obj/item/poster/random_teshari +/obj/item/poster/doppler_random + abstract_type = /obj/item/poster/doppler_random + var/obj/structure/sign/poster/poster_basetype + +/obj/item/poster/doppler_random/Initialize(mapload, obj/structure/sign/poster/new_poster_structure) + var/list/valid_subtypes = subtypesof(poster_basetype) + for (var/datum/subtype as anything in valid_subtypes) + if (subtype.abstract_type == subtype) + valid_subtypes -= subtype + var/obj/structure/sign/poster/picked = pick(valid_subtypes) + new_poster_structure = new picked(src) + return ..() + +/obj/item/poster/doppler_random/random_teshari name = "random teshari poster" - poster_type = /obj/structure/sign/poster/doppler_war/teshari/random + poster_basetype = /obj/structure/sign/poster/doppler_war/teshari icon = 'modular_doppler/war_posters/icons/posters.dmi' icon_state = "rolled_tesh" @@ -44,14 +49,8 @@ aligned_faction = WAR_FACTION_TESHARI abstract_type = /obj/structure/sign/poster/doppler_war/teshari -/obj/structure/sign/poster/doppler_war/teshari/random - name = "random teshari poster" - random_basetype = /obj/structure/sign/poster/doppler_war/teshari - icon_state = "tesh_unity" - never_random = TRUE - /obj/structure/sign/poster/doppler_war/teshari/unity - name = "Ilisime. (Unity.)" + name = "Ilisime (Unity)" desc = "A poster encouraging the teshari diaspora - from stars, from sea, from earth, from dust - to unite in defense of their shattered homeworld, Sirisai." icon_state = "tesh_unity" faction_reactions = list( @@ -75,7 +74,7 @@ ) /obj/structure/sign/poster/doppler_war/teshari/execution - name = "Schatara Shitilushu. (Our Execution.)" + name = "Schatara shitilushu (Our execution)" desc = "A kneeled teshari is presented for execution by a Tiziran blade. You could be next on the block. Act now!" icon_state = "tesh_warn" faction_reactions = list( @@ -112,8 +111,6 @@ icon_state = "tizira_enlist" faction_reactions = list( WAR_FACTION_TESHARI = list( - "We will shatter their Tiziran steel with our resolve..." = 10, - "I won't be next. Noone will. We can stop the Tizirans here and now." = 10, ), WAR_FACTION_TIZIRA = list( @@ -132,7 +129,7 @@ /obj/structure/sign/poster/doppler_war/isolationist name = "isolationist war poster" poster_item_name = "isolationist war poster" - poster_item_desc = "An isolationist propoganda poster, condeming the 4CA for its attempted involvement in the tizira/teshari war." + poster_item_desc = "An isolationist propoganda poster, condemning the 4CA for its attempted involvement in the tizira/teshari war." poster_item_icon_state = "rolled_iso" abstract_type = /obj/structure/sign/poster/doppler_war/isolationist aligned_faction = WAR_FACTION_ISOLATIONIST diff --git a/modular_doppler/war_posters/code/war_moralisation.dm b/modular_doppler/war_posters/code/war_moralisation.dm index 32b19430e8c4b1..4cb6969e796a16 100644 --- a/modular_doppler/war_posters/code/war_moralisation.dm +++ b/modular_doppler/war_posters/code/war_moralisation.dm @@ -65,9 +65,10 @@ if (isnull(mood)) return viewer.add_mood_event(mood_category, mood) - var/reaction = faction_reactions[target_faction] - if (isnull(reaction)) + var/list/reactions = faction_reactions[target_faction] + if (isnull(reactions)) return + var/reaction = pick_weight(reactions) to_chat(viewer, span_notice(reaction)) /** From 03088e604cde82b13a6bf7d893f001ded3bd7337 Mon Sep 17 00:00:00 2001 From: nikothedude <59709059+nikothedude@users.noreply.github.com> Date: Sun, 1 Mar 2026 20:19:46 -0500 Subject: [PATCH 06/19] raaaaaaaaaaaaaagh!!!!! --- .../~doppler_defines/TESHARI_WAR_defines.dm | 3 +- .../STORY_teshari_war/preferences.dm | 1 - modular_doppler/war_posters/code/cargo.dm | 17 ++ modular_doppler/war_posters/code/loadout.dm | 11 ++ modular_doppler/war_posters/code/posters.dm | 176 +++++++++++++++--- modular_doppler/war_posters/icons/posters.dmi | Bin 3985 -> 7849 bytes tgstation.dme | 1 + .../dopplershift_preferences/war_faction.tsx | 11 +- 8 files changed, 190 insertions(+), 30 deletions(-) create mode 100644 modular_doppler/war_posters/code/cargo.dm diff --git a/code/__DEFINES/~doppler_defines/TESHARI_WAR_defines.dm b/code/__DEFINES/~doppler_defines/TESHARI_WAR_defines.dm index bfca153ed5734c..48427f36c86997 100644 --- a/code/__DEFINES/~doppler_defines/TESHARI_WAR_defines.dm +++ b/code/__DEFINES/~doppler_defines/TESHARI_WAR_defines.dm @@ -1,5 +1,4 @@ // Factions #define WAR_FACTION_TIZIRA "Tizira" -#define WAR_FACTION_TESHARI "Teshari Soverignty" -#define WAR_FACTION_ISOLATIONIST "4CA Isolationist" +#define WAR_FACTION_TESHARI "Teshari" #define WAR_FACTION_NEUTRAL "Neutral" diff --git a/modular_doppler/STORY_teshari_war/preferences.dm b/modular_doppler/STORY_teshari_war/preferences.dm index 9d27c79c4753a6..66421a44fa22c7 100644 --- a/modular_doppler/STORY_teshari_war/preferences.dm +++ b/modular_doppler/STORY_teshari_war/preferences.dm @@ -1,7 +1,6 @@ GLOBAL_LIST_INIT(teshari_war_factions, list( WAR_FACTION_TIZIRA, WAR_FACTION_TESHARI, - WAR_FACTION_ISOLATIONIST, WAR_FACTION_NEUTRAL )) diff --git a/modular_doppler/war_posters/code/cargo.dm b/modular_doppler/war_posters/code/cargo.dm new file mode 100644 index 00000000000000..99ffa3dc4acee9 --- /dev/null +++ b/modular_doppler/war_posters/code/cargo.dm @@ -0,0 +1,17 @@ +/datum/supply_pack/goody/tesh_posters + name = "Teshari Propaganda" + desc = "A box of teshari war posters." + cost = CARGO_CRATE_VALUE * 1.1 + contains = list(/obj/item/storage/box/doppler_war_posters/teshari) + +/datum/supply_pack/goody/tizira_posters + name = "Tiziran Propaganda" + desc = "A box of tiziran war posters." + cost = CARGO_CRATE_VALUE * 1.1 + contains = list(/obj/item/storage/box/doppler_war_posters/tiziran) + +/datum/supply_pack/goody/iso_posters + name = "Isolationist Posters" + desc = "A box of isolationist war posters." + cost = CARGO_CRATE_VALUE * 1.1 + contains = list(/obj/item/storage/box/doppler_war_posters/isolationist) diff --git a/modular_doppler/war_posters/code/loadout.dm b/modular_doppler/war_posters/code/loadout.dm index e69de29bb2d1d6..4f4eb6a41a70c7 100644 --- a/modular_doppler/war_posters/code/loadout.dm +++ b/modular_doppler/war_posters/code/loadout.dm @@ -0,0 +1,11 @@ +/datum/loadout_item/pocket_items/equipment/propaganda_box_teshari + name = "Teshari propaganda box" + item_path = /obj/item/storage/box/doppler_war_posters/teshari + +/datum/loadout_item/pocket_items/equipment/propaganda_box_tiziran + name = "Tiziran propaganda box" + item_path = /obj/item/storage/box/doppler_war_posters/tiziran + +/datum/loadout_item/pocket_items/equipment/propaganda_box_isolationist + name = "Isolationist propaganda box" + item_path = /obj/item/storage/box/doppler_war_posters/isolationist diff --git a/modular_doppler/war_posters/code/posters.dm b/modular_doppler/war_posters/code/posters.dm index 914b565647cc35..d5796990541c85 100644 --- a/modular_doppler/war_posters/code/posters.dm +++ b/modular_doppler/war_posters/code/posters.dm @@ -34,16 +34,32 @@ new_poster_structure = new picked(src) return ..() +/obj/item/storage/box/doppler_war_posters + name = "propaganda poster box" + desc = "A box usually containing a number of posters for propaganda purposes." + abstract_type = /obj/item/storage/box/doppler_war_posters + var/obj/item/poster/poster_path + +/obj/item/storage/box/doppler_war_posters/PopulateContents() + . = ..() + + var/i = 0 + while (i++ < 7) + new poster_path(src) + /obj/item/poster/doppler_random/random_teshari name = "random teshari poster" poster_basetype = /obj/structure/sign/poster/doppler_war/teshari icon = 'modular_doppler/war_posters/icons/posters.dmi' icon_state = "rolled_tesh" +/obj/item/storage/box/doppler_war_posters/teshari + poster_path = /obj/item/poster/doppler_random/random_teshari + /obj/structure/sign/poster/doppler_war/teshari name = "teshari war poster" poster_item_name = "teshari war poster" - poster_item_desc = "A pro-teshari propoganda poster, espousing the evils of the Talunan empire and the virtue of Sirsiai's defense. Aisi Tarischi." + poster_item_desc = "A pro-teshari propaganda poster, espousing the evils of the Talunan empire and the virtue of Sirsiai's defense. Aisi Tarischi." poster_item_icon_state = "rolled_tesh" printable = TRUE aligned_faction = WAR_FACTION_TESHARI @@ -60,17 +76,13 @@ "Unity...? I'm not alone here." = 8 ), WAR_FACTION_TIZIRA = list( - + "Look at them, standing in front of their flag like they're the 'victims'." = 10, + "...your unity won't do much when you're outnumbered and outgunned, you vultures." = 10 ), - WAR_FACTION_ISOLATIONIST = list( - "Ugh! More propoganda!" = 10, - "Keep your war posters out of my workspace." = 10 - ) ) faction_moods = list( WAR_FACTION_TESHARI = /datum/mood_event/war_poster_sympathy, WAR_FACTION_TIZIRA = /datum/mood_event/war_poster_wrong, - WAR_FACTION_ISOLATIONIST = /datum/mood_event/war_poster_wrong ) /obj/structure/sign/poster/doppler_war/teshari/execution @@ -79,60 +91,178 @@ icon_state = "tesh_warn" faction_reactions = list( WAR_FACTION_TESHARI = list( - "We will shatter their Tiziran steel with our resolve..." = 10, + "We will shatter their Tiziran steel with our resolve. Aisi Tarischi." = 10, "I won't be next. Noone will. We can stop the Tizirans here and now." = 10, ), WAR_FACTION_TIZIRA = list( + "They struck first! They're the instigators! But the TIZIRANS are the executioners?!" = 10, + "Stars, such a damned overreaction. Those birds could end this war whenever they choose." = 10 + ), + ) + faction_moods = list( + WAR_FACTION_TESHARI = /datum/mood_event/war_poster_sympathy, + WAR_FACTION_TIZIRA = /datum/mood_event/war_poster_wrong, + ) + +/obj/structure/sign/poster/doppler_war/teshari/enemy + name = "Shushire Metara (Enemy yours)" + desc = "Depicted on this poster is a rather over-built Tiziran, contrasted with the rather small form of a typical Teshari. Labels, in schechi, read: \"IMPERIALIST\", and \"UNITED\". Clear propaganda, if you've ever seen it." + icon_state = "tesh_enemy" + faction_reactions = list( + WAR_FACTION_TESHARI = list( + "Their brutishness will be their downfall. All for Sirisai." = 10, + ), + WAR_FACTION_TIZIRA = list( + "Of course they choose to depict Tizirans as brutes. It's all they can really do." = 10, + "...could they not have chosen a less stereotyped image for their propaganda?" = 10 + ), + ) + faction_moods = list( + WAR_FACTION_TESHARI = /datum/mood_event/war_poster_sympathy, + WAR_FACTION_TIZIRA = /datum/mood_event/war_poster_wrong, + ) +/obj/structure/sign/poster/doppler_war/teshari/burn + name = "Ilisischa! (Inferno!)" + desc = "A rather striking image of a rather furious-looking teshari staring at the camera, torch in-hand, setting the Tiziran flag alight. Written beneath in Schechi runes reads \"Fight back!\"" + icon_state = "tesh_burn" + faction_reactions = list( + WAR_FACTION_TESHARI = list( + "We'll fight for every damn inch of land they take. Sirisai will stand." = 10, + "Raise your arms, raise your wings, raise your rifles..." = 10, + ), + WAR_FACTION_TIZIRA = list( + "The flag? Really? That's just cliche..." = 10, + "...of course, if they had their way, they'd burn Tizira to the ground as well. Animals. Vultures." = 10 ), - WAR_FACTION_ISOLATIONIST = list( - "Seriously? An execution on a poster? That's just tasteless." = 10, - "They're so desparate to get the 4CA involved, they post fake executions on our walls?" = 10 - ) ) faction_moods = list( WAR_FACTION_TESHARI = /datum/mood_event/war_poster_sympathy, WAR_FACTION_TIZIRA = /datum/mood_event/war_poster_wrong, - WAR_FACTION_ISOLATIONIST = /datum/mood_event/war_poster_wrong ) +/obj/item/poster/doppler_random/random_tiziran + name = "random tiziran poster" + poster_basetype = /obj/structure/sign/poster/doppler_war/tiziran + icon = 'modular_doppler/war_posters/icons/posters.dmi' + icon_state = "rolled_tiziran" + +/obj/item/storage/box/doppler_war_posters/tiziran + poster_path = /obj/item/poster/doppler_random/random_tiziran + /obj/structure/sign/poster/doppler_war/tiziran name = "tiziran war poster" poster_item_name = "tiziran war poster" - poster_item_desc = "A pro-tizira propoganda poster, generally encouraging enlistment and patriotism." + poster_item_desc = "A pro-tizira propaganda poster, generally encouraging enlistment and patriotism." poster_item_icon_state = "rolled_tizira" printable = TRUE abstract_type = /obj/structure/sign/poster/doppler_war/tiziran aligned_faction = WAR_FACTION_TIZIRA +/obj/structure/sign/poster/doppler_war/tiziran/pride + name = "Tizira. (Tizira.)" + desc = "A depiction of the Tiziran flag. Three moon dieties - Atra'Kor, Atra'Kal, and Atra'Neff, topped and nurtured by the sun-god Atra'Asl. \ + Explained beneath, the wings depict the tiziran peoples' shared faith and unity. This is what we fight for, the poster suggests. What we defend." + icon_state = "tizira_pride" + faction_reactions = list( + WAR_FACTION_TESHARI = list( + "The tiziran flag. The poster child (literally) of imperialist slaughter." = 10, + "If these gods of theirs are real, they would weep at the lizards' senseless war." = 10 + ), + WAR_FACTION_TIZIRA = list( + "The tiziran flag. A reminder of what we are fighting for." = 10, + "May the moon gods watch over Tizira's soldiers." = 10 + ), + ) + faction_moods = list( + WAR_FACTION_TESHARI = /datum/mood_event/war_poster_wrong, + WAR_FACTION_TIZIRA = /datum/mood_event/war_poster_sympathy, + ) + /obj/structure/sign/poster/doppler_war/tiziran/enlist name = "Za'Haious Rar! (Enlist!)" desc = "While many Tizirans face obligate military service, few reach professional status. This poster encourages the reader to fully commit themselves to the Talunan ranks, and earn their prestige in white." icon_state = "tizira_enlist" faction_reactions = list( WAR_FACTION_TESHARI = list( + "More officers to command their mindless brutes into the tundras of Sirisai..." = 10, + "You could excuse the grunts. They didn't choose. But the whitecaps? Irredeemable." = 10 ), WAR_FACTION_TIZIRA = list( + "Nothing's more prideful than giving yourself to the defense of the mother sands. Respect to them all." = 10, + "It's not for everyone. But that white armor could give anyone a new look into life." = 10 + ), + ) + faction_moods = list( + WAR_FACTION_TESHARI = /datum/mood_event/war_poster_wrong, + WAR_FACTION_TIZIRA = /datum/mood_event/war_poster_sympathy, + ) +/obj/structure/sign/poster/doppler_war/tiziran/enlisttwo + name = "Hekiek Mor'Shuxi? (Are you doing your part?)" + desc = "The armored Tiziran curiously glances through her visor-glass to the viewer, as if to ask: 'Are you giving your all for your home?'" + icon_state = "tizira_enlisttwo" + faction_reactions = list( + WAR_FACTION_TESHARI = list( + "Doing your part? What's your part, helping a senseless imperialist war for territory?" = 10, + "Doing my part, sure. Just not the one you want, you damned geckos." = 10 + ), + WAR_FACTION_TIZIRA = list( + "The more soldiers for the war, the better. We need to end this as soon as we can." = 10, + "Every Tiziran should fight for their home. It's your home. To stand by would be to invite... chaos." = 10 ), - WAR_FACTION_ISOLATIONIST = list( - "Ugh! More propoganda!" = 10, - "Keep your war posters out of my workspace." = 10 - ) ) faction_moods = list( WAR_FACTION_TESHARI = /datum/mood_event/war_poster_wrong, WAR_FACTION_TIZIRA = /datum/mood_event/war_poster_sympathy, - WAR_FACTION_ISOLATIONIST = /datum/mood_event/war_poster_wrong ) -/obj/structure/sign/poster/doppler_war/isolationist +/obj/structure/sign/poster/doppler_war/tiziran/enlistthree + name = "Hexire Tizira (Tizira needs you)" + desc = "A series of career-service tizirans are lined up. Supported by the Tiziran emblem, the poster urges the reader to enlist for protracted service against the Teshari menace." + icon_state = "tizira_enlistthree" + faction_reactions = list( + WAR_FACTION_TESHARI = list( + "The only menace here are you Tiziran imperialists." = 10, + "...how many of those Tizirans will die for their lie?" = 10, + "Just more grunts to the slaughter. This violence needs to end." = 10, + ), + WAR_FACTION_TIZIRA = list( + "The more soldiers for the war, the better. We need to end this as soon as we can." = 10, + "Those birds had no idea what kind of war they'd start." = 10 + ), + ) + faction_moods = list( + WAR_FACTION_TESHARI = /datum/mood_event/war_poster_wrong, + WAR_FACTION_TIZIRA = /datum/mood_event/war_poster_sympathy, + ) + +/obj/item/poster/doppler_random/random_isolationist + name = "random isolationist poster" + poster_basetype = /obj/structure/sign/poster/isolationist + icon = 'modular_doppler/war_posters/icons/posters.dmi' + icon_state = "rolled_iso" + +/obj/item/storage/box/doppler_war_posters/isolationist + poster_path = /obj/item/poster/doppler_random/random_isolationist + +/obj/structure/sign/poster/isolationist name = "isolationist war poster" poster_item_name = "isolationist war poster" - poster_item_desc = "An isolationist propoganda poster, condemning the 4CA for its attempted involvement in the tizira/teshari war." + poster_item_desc = "An isolationist propaganda poster, condemning the 4CA for its attempted involvement in the tizira/teshari war." poster_item_icon_state = "rolled_iso" - abstract_type = /obj/structure/sign/poster/doppler_war/isolationist - aligned_faction = WAR_FACTION_ISOLATIONIST + icon = 'modular_doppler/war_posters/icons/posters.dmi' + abstract_type = /obj/structure/sign/poster/isolationist + +/obj/structure/sign/poster/isolationist/bigbrother + name = "Big Brother" + desc = "An eye overlooks a row of individuals, flanked by the 4CA's primary color. The hand closes around the galaxy. The 4CA expands." + icon_state = "iso_bigbrother" + +/obj/structure/sign/poster/isolationist/stayout + name = "4CA Stay Out!" + desc = "Both the Tizirans and the Teshari refuse direct 4CA intervention in their war. Yet, the alignment pushes anyway. This poster summarizes the way many people feel about this." + icon_state = "iso_stayout" #undef WAR_POSTER_MOOD #undef WAR_POSTER_RANGE diff --git a/modular_doppler/war_posters/icons/posters.dmi b/modular_doppler/war_posters/icons/posters.dmi index 6aa0fc62d5976db5348b326874c0e877ae089839..f391c74e9ba3499b9d918cd370b2e062e0435824 100644 GIT binary patch literal 7849 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 literal 3985 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 diff --git a/tgstation.dme b/tgstation.dme index 1fec61b9515048..e51fa8ebc2887b 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7798,6 +7798,7 @@ #include "modular_doppler\verbs\code\preferences.dm" #include "modular_doppler\verbs\code\say.dm" #include "modular_doppler\verbs\code\subtle.dm" +#include "modular_doppler\war_posters\code\cargo.dm" #include "modular_doppler\war_posters\code\loadout.dm" #include "modular_doppler\war_posters\code\mood.dm" #include "modular_doppler\war_posters\code\posters.dm" diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/dopplershift_preferences/war_faction.tsx b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/dopplershift_preferences/war_faction.tsx index 595ee790bd93fc..2b2d39043a82e8 100644 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/dopplershift_preferences/war_faction.tsx +++ b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/dopplershift_preferences/war_faction.tsx @@ -1,10 +1,13 @@ -import { FeatureChoiced, FeatureValueProps, FeatureChoicedServerData } from "../base"; -import { FeatureDropdownInput } from "../dropdowns"; +import type { + FeatureChoiced, + FeatureChoicedServerData, + FeatureValueProps, +} from '../base'; +import { FeatureDropdownInput } from '../dropdowns'; export const doppler_war_faction: FeatureChoiced = { name: 'War Alignment', - description: - 'The stance your character takes on the Tizira/Teshari war.', + description: 'The stance your character takes on the Tizira/Teshari war.', component: ( props: FeatureValueProps, ) => { From 9554dc58864a0c04858f22c0eff6a04f5e400e23 Mon Sep 17 00:00:00 2001 From: nikothedude <59709059+nikothedude@users.noreply.github.com> Date: Sun, 1 Mar 2026 20:26:30 -0500 Subject: [PATCH 07/19] agbagh --- tgstation.dme | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tgstation.dme b/tgstation.dme index e51fa8ebc2887b..61f7b661fcd9a2 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -465,8 +465,8 @@ #include "code\__DEFINES\~doppler_defines\species_clothing_paths.dm" #include "code\__DEFINES\~doppler_defines\speech_channels.dm" #include "code\__DEFINES\~doppler_defines\strippable.dm" -#include "code\__DEFINES\~doppler_defines\TESHARI_WAR_defines.dm" #include "code\__DEFINES\~doppler_defines\teshari.dm" +#include "code\__DEFINES\~doppler_defines\TESHARI_WAR_defines.dm" #include "code\__DEFINES\~doppler_defines\text.dm" #include "code\__DEFINES\~doppler_defines\traits.dm" #include "code\__DEFINES\~doppler_defines\vehicles.dm" From 17a5fd064252f563a1b79e20bcc2bdd02cf2fd46 Mon Sep 17 00:00:00 2001 From: nikothedude <59709059+nikothedude@users.noreply.github.com> Date: Sun, 1 Mar 2026 20:36:02 -0500 Subject: [PATCH 08/19] cmoooon --- modular_doppler/war_posters/icons/posters.dmi | Bin 7849 -> 3928 bytes tgstation.dme | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_doppler/war_posters/icons/posters.dmi b/modular_doppler/war_posters/icons/posters.dmi index f391c74e9ba3499b9d918cd370b2e062e0435824..2675ad7bb588256689f1b3d814b59a0cf97cdedb 100644 GIT binary patch delta 3734 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 eraP_+hp#txFOhO-+w1nr7f@HxQLa|Bee*x Date: Sun, 1 Mar 2026 21:10:20 -0500 Subject: [PATCH 09/19] flarp --- modular_doppler/war_posters/code/posters.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_doppler/war_posters/code/posters.dm b/modular_doppler/war_posters/code/posters.dm index d5796990541c85..4c40c0cb47f322 100644 --- a/modular_doppler/war_posters/code/posters.dm +++ b/modular_doppler/war_posters/code/posters.dm @@ -145,7 +145,7 @@ name = "random tiziran poster" poster_basetype = /obj/structure/sign/poster/doppler_war/tiziran icon = 'modular_doppler/war_posters/icons/posters.dmi' - icon_state = "rolled_tiziran" + icon_state = "rolled_tizira" /obj/item/storage/box/doppler_war_posters/tiziran poster_path = /obj/item/poster/doppler_random/random_tiziran From b05ad77d2fdd36042ae616c31bfaaee92d76c469 Mon Sep 17 00:00:00 2001 From: nikothedude <59709059+nikothedude@users.noreply.github.com> Date: Sun, 1 Mar 2026 21:38:00 -0500 Subject: [PATCH 10/19] Vabahah --- modular_doppler/war_posters/code/posters.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modular_doppler/war_posters/code/posters.dm b/modular_doppler/war_posters/code/posters.dm index 4c40c0cb47f322..b2f9a0df42e383 100644 --- a/modular_doppler/war_posters/code/posters.dm +++ b/modular_doppler/war_posters/code/posters.dm @@ -43,6 +43,9 @@ /obj/item/storage/box/doppler_war_posters/PopulateContents() . = ..() + if (isnull(poster_path)) + return // sanity + var/i = 0 while (i++ < 7) new poster_path(src) From 120ebca44ecae4f55ce5bc1751f41ad9a7962774 Mon Sep 17 00:00:00 2001 From: nikothedude <59709059+nikothedude@users.noreply.github.com> Date: Mon, 2 Mar 2026 01:29:21 -0500 Subject: [PATCH 11/19] tgyiguyiui --- modular_doppler/war_posters/code/posters.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modular_doppler/war_posters/code/posters.dm b/modular_doppler/war_posters/code/posters.dm index b2f9a0df42e383..e7704e1c42e5d6 100644 --- a/modular_doppler/war_posters/code/posters.dm +++ b/modular_doppler/war_posters/code/posters.dm @@ -30,6 +30,8 @@ for (var/datum/subtype as anything in valid_subtypes) if (subtype.abstract_type == subtype) valid_subtypes -= subtype + if (!valid_subtypes.len) + return var/obj/structure/sign/poster/picked = pick(valid_subtypes) new_poster_structure = new picked(src) return ..() From 6f6545878177926afe33e8dc475f3e683635d9a6 Mon Sep 17 00:00:00 2001 From: nikothedude <59709059+nikothedude@users.noreply.github.com> Date: Mon, 2 Mar 2026 12:19:35 -0500 Subject: [PATCH 12/19] huhwha --- modular_doppler/war_posters/code/posters.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modular_doppler/war_posters/code/posters.dm b/modular_doppler/war_posters/code/posters.dm index e7704e1c42e5d6..2b47dd817ee77e 100644 --- a/modular_doppler/war_posters/code/posters.dm +++ b/modular_doppler/war_posters/code/posters.dm @@ -26,6 +26,8 @@ var/obj/structure/sign/poster/poster_basetype /obj/item/poster/doppler_random/Initialize(mapload, obj/structure/sign/poster/new_poster_structure) + . = ..() + var/list/valid_subtypes = subtypesof(poster_basetype) for (var/datum/subtype as anything in valid_subtypes) if (subtype.abstract_type == subtype) @@ -34,7 +36,6 @@ return var/obj/structure/sign/poster/picked = pick(valid_subtypes) new_poster_structure = new picked(src) - return ..() /obj/item/storage/box/doppler_war_posters name = "propaganda poster box" From 6fbe40bcaeab66333450ca6caf195dbf6d494aa5 Mon Sep 17 00:00:00 2001 From: nikothedude <59709059+nikothedude@users.noreply.github.com> Date: Mon, 2 Mar 2026 12:22:49 -0500 Subject: [PATCH 13/19] i am the fucking stupif --- modular_doppler/war_posters/code/posters.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modular_doppler/war_posters/code/posters.dm b/modular_doppler/war_posters/code/posters.dm index 2b47dd817ee77e..6553ae7a373ba0 100644 --- a/modular_doppler/war_posters/code/posters.dm +++ b/modular_doppler/war_posters/code/posters.dm @@ -26,8 +26,6 @@ var/obj/structure/sign/poster/poster_basetype /obj/item/poster/doppler_random/Initialize(mapload, obj/structure/sign/poster/new_poster_structure) - . = ..() - var/list/valid_subtypes = subtypesof(poster_basetype) for (var/datum/subtype as anything in valid_subtypes) if (subtype.abstract_type == subtype) @@ -37,6 +35,8 @@ var/obj/structure/sign/poster/picked = pick(valid_subtypes) new_poster_structure = new picked(src) + return ..() + /obj/item/storage/box/doppler_war_posters name = "propaganda poster box" desc = "A box usually containing a number of posters for propaganda purposes." From 3c96ab48796d88d2516fc375fbc0c6c2540ef46c Mon Sep 17 00:00:00 2001 From: nikothedude <59709059+nikothedude@users.noreply.github.com> Date: Mon, 2 Mar 2026 12:23:05 -0500 Subject: [PATCH 14/19] i am the double stupif --- modular_doppler/war_posters/code/posters.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_doppler/war_posters/code/posters.dm b/modular_doppler/war_posters/code/posters.dm index 6553ae7a373ba0..c67f02d8f238b0 100644 --- a/modular_doppler/war_posters/code/posters.dm +++ b/modular_doppler/war_posters/code/posters.dm @@ -31,7 +31,7 @@ if (subtype.abstract_type == subtype) valid_subtypes -= subtype if (!valid_subtypes.len) - return + return ..() var/obj/structure/sign/poster/picked = pick(valid_subtypes) new_poster_structure = new picked(src) From ba896868ff8e2b8ea2aa5075021035244db3f577 Mon Sep 17 00:00:00 2001 From: nikothedude <59709059+nikothedude@users.noreply.github.com> Date: Mon, 2 Mar 2026 12:28:48 -0500 Subject: [PATCH 15/19] IM TRIPLE STUPID OH MY GOOOOD --- modular_doppler/war_posters/code/posters.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_doppler/war_posters/code/posters.dm b/modular_doppler/war_posters/code/posters.dm index c67f02d8f238b0..df7f0992a91ce8 100644 --- a/modular_doppler/war_posters/code/posters.dm +++ b/modular_doppler/war_posters/code/posters.dm @@ -31,7 +31,7 @@ if (subtype.abstract_type == subtype) valid_subtypes -= subtype if (!valid_subtypes.len) - return ..() + return INITIALIZE_HINT_QDEL var/obj/structure/sign/poster/picked = pick(valid_subtypes) new_poster_structure = new picked(src) From f7ed92c4246dad5cd33c2be6d738fe68b67c868a Mon Sep 17 00:00:00 2001 From: nikothedude <59709059+nikothedude@users.noreply.github.com> Date: Mon, 2 Mar 2026 12:48:02 -0500 Subject: [PATCH 16/19] this should be safe, considering its overriding itself apparantly --- modular_doppler/STORY_teshari_war/preferences.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_doppler/STORY_teshari_war/preferences.dm b/modular_doppler/STORY_teshari_war/preferences.dm index 66421a44fa22c7..8d653c4be1de32 100644 --- a/modular_doppler/STORY_teshari_war/preferences.dm +++ b/modular_doppler/STORY_teshari_war/preferences.dm @@ -18,7 +18,7 @@ GLOBAL_LIST_INIT(teshari_war_factions, list( return WAR_FACTION_NEUTRAL /datum/preference/choiced/doppler_war_faction/apply_to_human(mob/living/carbon/human/target, value) - RegisterSignal(target, COMSIG_MOB_MIND_INITIALIZED, PROC_REF(apply_mind_variable)) + RegisterSignal(target, COMSIG_MOB_MIND_INITIALIZED, PROC_REF(apply_mind_variable), override = TRUE) return /datum/preference/choiced/doppler_war_faction/proc/apply_mind_variable(mob/living/carbon/human/target, datum/mind/new_mind) From ebea5cddef5775091040da8bfc26630d6375cb67 Mon Sep 17 00:00:00 2001 From: nikothedude <59709059+nikothedude@users.noreply.github.com> Date: Mon, 2 Mar 2026 14:05:32 -0500 Subject: [PATCH 17/19] docs --- modular_doppler/STORY_teshari_war/preferences.dm | 1 + modular_doppler/war_posters/code/war_moralisation.dm | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/modular_doppler/STORY_teshari_war/preferences.dm b/modular_doppler/STORY_teshari_war/preferences.dm index 8d653c4be1de32..cbdb505c0516f5 100644 --- a/modular_doppler/STORY_teshari_war/preferences.dm +++ b/modular_doppler/STORY_teshari_war/preferences.dm @@ -21,6 +21,7 @@ GLOBAL_LIST_INIT(teshari_war_factions, list( RegisterSignal(target, COMSIG_MOB_MIND_INITIALIZED, PROC_REF(apply_mind_variable), override = TRUE) return +/// Signal handler that waits for mind to init and then sets the war faction variable. /datum/preference/choiced/doppler_war_faction/proc/apply_mind_variable(mob/living/carbon/human/target, datum/mind/new_mind) SIGNAL_HANDLER diff --git a/modular_doppler/war_posters/code/war_moralisation.dm b/modular_doppler/war_posters/code/war_moralisation.dm index 4cb6969e796a16..4d959183bc3ad1 100644 --- a/modular_doppler/war_posters/code/war_moralisation.dm +++ b/modular_doppler/war_posters/code/war_moralisation.dm @@ -1,10 +1,12 @@ +// Mostly stolen from demoraliser.dm. /datum/proximity_monitor/advanced/war_demoraliser /// The faction, using defines from TESHARI_WAR_defines.dm. Do NOT use neutral. var/faction /// Mood category to apply to moods var/mood_category - /// Assoc list of (WAR_FACTION -> list(/datum/war_demoralisation_reaction, chance)). Used in pickweight to determine what people think when they see the poster, depending on + /// Assoc list of (WAR_FACTION -> list(string, chance)). Used in pickweight to determine what people think when they see the poster, depending on var/list/faction_reactions = list() + /// Assoc list of (WAR_FACTION -> /datum/mood_event). Used to determine the actual mood event given. var/list/faction_moods = list() /// For literacy checks var/reading_requirements = READING_CHECK_LIGHT From 34be94117124228f5ad85dd8996a33d67a9b892f Mon Sep 17 00:00:00 2001 From: nikothedude Date: Thu, 5 Mar 2026 19:20:42 -0500 Subject: [PATCH 18/19] another review --- modular_doppler/war_posters/code/posters.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modular_doppler/war_posters/code/posters.dm b/modular_doppler/war_posters/code/posters.dm index df7f0992a91ce8..ee34cc97386689 100644 --- a/modular_doppler/war_posters/code/posters.dm +++ b/modular_doppler/war_posters/code/posters.dm @@ -167,7 +167,7 @@ /obj/structure/sign/poster/doppler_war/tiziran/pride name = "Tizira. (Tizira.)" - desc = "A depiction of the Tiziran flag. Three moon dieties - Atra'Kor, Atra'Kal, and Atra'Neff, topped and nurtured by the sun-god Atra'Asl. \ + desc = "A depiction of the Tiziran flag. Three moon dieties - Atra'Kor, Atra'Kal, and Atra'Neff, crowned and nurtured by the sun-god Atra'Asl. \ Explained beneath, the wings depict the tiziran peoples' shared faith and unity. This is what we fight for, the poster suggests. What we defend." icon_state = "tizira_pride" faction_reactions = list( @@ -177,7 +177,7 @@ ), WAR_FACTION_TIZIRA = list( "The tiziran flag. A reminder of what we are fighting for." = 10, - "May the moon gods watch over Tizira's soldiers." = 10 + "May the gods watch over Tizira's soldiers." = 10 ), ) faction_moods = list( From b96fb4cf52ef99041ed34ad8be9fd7c8009e3211 Mon Sep 17 00:00:00 2001 From: nikothedude <59709059+nikothedude@users.noreply.github.com> Date: Mon, 9 Mar 2026 13:53:24 -0400 Subject: [PATCH 19/19] move into story, add comments to and repath random posters --- .../war_posters/code/cargo.dm | 0 .../war_posters/code/loadout.dm | 0 .../war_posters/code/mood.dm | 0 .../war_posters/code/posters.dm | 33 ++++++++++-------- .../war_posters/code/war_moralisation.dm | 0 .../war_posters/icons/posters.dmi | Bin .../STORY_teshari_war/war_posters/readme.txt | 7 ++++ tgstation.dme | 10 +++--- 8 files changed, 30 insertions(+), 20 deletions(-) rename modular_doppler/{ => STORY_teshari_war}/war_posters/code/cargo.dm (100%) rename modular_doppler/{ => STORY_teshari_war}/war_posters/code/loadout.dm (100%) rename modular_doppler/{ => STORY_teshari_war}/war_posters/code/mood.dm (100%) rename modular_doppler/{ => STORY_teshari_war}/war_posters/code/posters.dm (91%) rename modular_doppler/{ => STORY_teshari_war}/war_posters/code/war_moralisation.dm (100%) rename modular_doppler/{ => STORY_teshari_war}/war_posters/icons/posters.dmi (100%) create mode 100644 modular_doppler/STORY_teshari_war/war_posters/readme.txt diff --git a/modular_doppler/war_posters/code/cargo.dm b/modular_doppler/STORY_teshari_war/war_posters/code/cargo.dm similarity index 100% rename from modular_doppler/war_posters/code/cargo.dm rename to modular_doppler/STORY_teshari_war/war_posters/code/cargo.dm diff --git a/modular_doppler/war_posters/code/loadout.dm b/modular_doppler/STORY_teshari_war/war_posters/code/loadout.dm similarity index 100% rename from modular_doppler/war_posters/code/loadout.dm rename to modular_doppler/STORY_teshari_war/war_posters/code/loadout.dm diff --git a/modular_doppler/war_posters/code/mood.dm b/modular_doppler/STORY_teshari_war/war_posters/code/mood.dm similarity index 100% rename from modular_doppler/war_posters/code/mood.dm rename to modular_doppler/STORY_teshari_war/war_posters/code/mood.dm diff --git a/modular_doppler/war_posters/code/posters.dm b/modular_doppler/STORY_teshari_war/war_posters/code/posters.dm similarity index 91% rename from modular_doppler/war_posters/code/posters.dm rename to modular_doppler/STORY_teshari_war/war_posters/code/posters.dm index ee34cc97386689..e3ec9b91e7934d 100644 --- a/modular_doppler/war_posters/code/posters.dm +++ b/modular_doppler/STORY_teshari_war/war_posters/code/posters.dm @@ -5,7 +5,7 @@ name = "abstract war poster" desc = "Surely, if this was coded correctly, you would be angry." abstract_type = /obj/structure/sign/poster/doppler_war - icon = 'modular_doppler/war_posters/icons/posters.dmi' + icon = 'modular_doppler/STORY_teshari_war/war_posters/icons/posters.dmi' icon_state = "tesh_unity" /// Those of our aligned faction recieve a small mood buff when seeing this poster - other factions get a debuff. Neutral doesn't care at all. @@ -21,11 +21,14 @@ demoraliser = new(src, WAR_POSTER_RANGE, TRUE, aligned_faction, WAR_POSTER_MOOD, faction_reactions, faction_moods, READING_CHECK_LIGHT) return ..() -/obj/item/poster/doppler_random - abstract_type = /obj/item/poster/doppler_random +// A poster subtype exclusively for random posters. +// This subtype is only necessary to use if your poster has special behavior that cant be randomised by base-TG posters. +// Things like list vars cant be found via initial, so thats one use-case. +/obj/item/poster/random + abstract_type = /obj/item/poster/random var/obj/structure/sign/poster/poster_basetype -/obj/item/poster/doppler_random/Initialize(mapload, obj/structure/sign/poster/new_poster_structure) +/obj/item/poster/random/Initialize(mapload, obj/structure/sign/poster/new_poster_structure) var/list/valid_subtypes = subtypesof(poster_basetype) for (var/datum/subtype as anything in valid_subtypes) if (subtype.abstract_type == subtype) @@ -50,17 +53,17 @@ return // sanity var/i = 0 - while (i++ < 7) + for (i = 0, i < 7, i++) new poster_path(src) -/obj/item/poster/doppler_random/random_teshari +/obj/item/poster/random/random_teshari name = "random teshari poster" poster_basetype = /obj/structure/sign/poster/doppler_war/teshari - icon = 'modular_doppler/war_posters/icons/posters.dmi' + icon = 'modular_doppler/STORY_teshari_war/war_posters/icons/posters.dmi' icon_state = "rolled_tesh" /obj/item/storage/box/doppler_war_posters/teshari - poster_path = /obj/item/poster/doppler_random/random_teshari + poster_path = /obj/item/poster/random/random_teshari /obj/structure/sign/poster/doppler_war/teshari name = "teshari war poster" @@ -147,14 +150,14 @@ WAR_FACTION_TIZIRA = /datum/mood_event/war_poster_wrong, ) -/obj/item/poster/doppler_random/random_tiziran +/obj/item/poster/random/random_tiziran name = "random tiziran poster" poster_basetype = /obj/structure/sign/poster/doppler_war/tiziran - icon = 'modular_doppler/war_posters/icons/posters.dmi' + icon = 'modular_doppler/STORY_teshari_war/war_posters/icons/posters.dmi' icon_state = "rolled_tizira" /obj/item/storage/box/doppler_war_posters/tiziran - poster_path = /obj/item/poster/doppler_random/random_tiziran + poster_path = /obj/item/poster/random/random_tiziran /obj/structure/sign/poster/doppler_war/tiziran name = "tiziran war poster" @@ -243,21 +246,21 @@ WAR_FACTION_TIZIRA = /datum/mood_event/war_poster_sympathy, ) -/obj/item/poster/doppler_random/random_isolationist +/obj/item/poster/random/random_isolationist name = "random isolationist poster" poster_basetype = /obj/structure/sign/poster/isolationist - icon = 'modular_doppler/war_posters/icons/posters.dmi' + icon = 'modular_doppler/STORY_teshari_war/war_posters/icons/posters.dmi' icon_state = "rolled_iso" /obj/item/storage/box/doppler_war_posters/isolationist - poster_path = /obj/item/poster/doppler_random/random_isolationist + poster_path = /obj/item/poster/random/random_isolationist /obj/structure/sign/poster/isolationist name = "isolationist war poster" poster_item_name = "isolationist war poster" poster_item_desc = "An isolationist propaganda poster, condemning the 4CA for its attempted involvement in the tizira/teshari war." poster_item_icon_state = "rolled_iso" - icon = 'modular_doppler/war_posters/icons/posters.dmi' + icon = 'modular_doppler/STORY_teshari_war/war_posters/icons/posters.dmi' abstract_type = /obj/structure/sign/poster/isolationist /obj/structure/sign/poster/isolationist/bigbrother diff --git a/modular_doppler/war_posters/code/war_moralisation.dm b/modular_doppler/STORY_teshari_war/war_posters/code/war_moralisation.dm similarity index 100% rename from modular_doppler/war_posters/code/war_moralisation.dm rename to modular_doppler/STORY_teshari_war/war_posters/code/war_moralisation.dm diff --git a/modular_doppler/war_posters/icons/posters.dmi b/modular_doppler/STORY_teshari_war/war_posters/icons/posters.dmi similarity index 100% rename from modular_doppler/war_posters/icons/posters.dmi rename to modular_doppler/STORY_teshari_war/war_posters/icons/posters.dmi diff --git a/modular_doppler/STORY_teshari_war/war_posters/readme.txt b/modular_doppler/STORY_teshari_war/war_posters/readme.txt new file mode 100644 index 00000000000000..f1570de89c55eb --- /dev/null +++ b/modular_doppler/STORY_teshari_war/war_posters/readme.txt @@ -0,0 +1,7 @@ +This module is not to be deleted on conclusion of the event arc. + +It is to be reflavored to be post-war, and less in the way. + +1. Remove mood changes - mood.dm and war_moralisation.dm can be deleted +2. Rewrite posters to be in past tense, possibly commenting on the events of the war +3. Possibly remove the boxes from cargo, or some variation diff --git a/tgstation.dme b/tgstation.dme index 7975c78e90e18e..394195ba6092e3 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7751,6 +7751,11 @@ #include "modular_doppler\STORY_teshari_war\mind.dm" #include "modular_doppler\STORY_teshari_war\preferences.dm" #include "modular_doppler\STORY_teshari_war\supply_pack.dm" +#include "modular_doppler\STORY_teshari_war\war_posters\code\cargo.dm" +#include "modular_doppler\STORY_teshari_war\war_posters\code\loadout.dm" +#include "modular_doppler\STORY_teshari_war\war_posters\code\mood.dm" +#include "modular_doppler\STORY_teshari_war\war_posters\code\posters.dm" +#include "modular_doppler\STORY_teshari_war\war_posters\code\war_moralisation.dm" #include "modular_doppler\super_glasses\code\glasses_stats_thief.dm" #include "modular_doppler\super_glasses\code\techno_visors.dm" #include "modular_doppler\suuuper_trustworthy_item_orders\code\chem_containers.dm" @@ -7798,11 +7803,6 @@ #include "modular_doppler\verbs\code\preferences.dm" #include "modular_doppler\verbs\code\say.dm" #include "modular_doppler\verbs\code\subtle.dm" -#include "modular_doppler\war_posters\code\cargo.dm" -#include "modular_doppler\war_posters\code\loadout.dm" -#include "modular_doppler\war_posters\code\mood.dm" -#include "modular_doppler\war_posters\code\posters.dm" -#include "modular_doppler\war_posters\code\war_moralisation.dm" #include "modular_doppler\wargaming\code\game_kit.dm" #include "modular_doppler\wargaming\code\holograms.dm" #include "modular_doppler\wargaming\code\projectors.dm"