From a8ce6e7c3af24d13fa73200fd9312486f6cd76ec Mon Sep 17 00:00:00 2001 From: Redbert <109347230+Deadgebert@users.noreply.github.com> Date: Mon, 7 Jul 2025 16:18:19 -0600 Subject: [PATCH] Removes buy limit on traitor discounts (#91969) ## About The Pull Request Removes the buy limit on items in traitor uplink discount tab. Purchase limits are kept on a few problematic items A purchase limit was added to powersink ## Why It's Good For The Game Traitor is a great role for doing interesting things. I'm loving the removal of progtot as it has encouraged players to think of interesting things to do instead of purely game. I want to further encourage interesting things by removing the buy limit on the discounts for traitor uplink. Unfortunately this does add a bit of power to traitors through certain discounts like syndicate bomb, but it doesn't add too much. Apart from a few niche items, what is a traitor going to do with 7 syndicate modsuits or 4 revolvers? One purchase generally gives them enough power to succeed. I'm hoping this encourages more traitors to team up or do something funny with 20 e-daggers. also enables general griefsky ## Changelog :cl: balance: Removes buy limit on traitor discounts balance: Purchase limit was added to powersink /:cl: --- code/modules/antagonists/traitor/datum_traitor.dm | 2 +- code/modules/uplink/uplink_items.dm | 14 +++++++++++++- code/modules/uplink/uplink_items/device_tools.dm | 1 + code/modules/uplink/uplink_items/explosive.dm | 2 ++ 4 files changed, 17 insertions(+), 2 deletions(-) diff --git a/code/modules/antagonists/traitor/datum_traitor.dm b/code/modules/antagonists/traitor/datum_traitor.dm index aafe5b94abd..e64574f0fd3 100644 --- a/code/modules/antagonists/traitor/datum_traitor.dm +++ b/code/modules/antagonists/traitor/datum_traitor.dm @@ -82,7 +82,7 @@ if((uplink_handler.assigned_role in item.restricted_roles) || (uplink_handler.assigned_species in item.restricted_species)) uplink_items += item continue - uplink_handler.extra_purchasable += create_uplink_sales(rand(uplink_sales_min, uplink_sales_max), /datum/uplink_category/discounts, 1, uplink_items) + uplink_handler.extra_purchasable += create_uplink_sales(rand(uplink_sales_min, uplink_sales_max), /datum/uplink_category/discounts, -1, uplink_items) if(give_objectives) forge_traitor_objectives() diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm index f0889770f44..06cd969d935 100644 --- a/code/modules/uplink/uplink_items.dm +++ b/code/modules/uplink/uplink_items.dm @@ -29,7 +29,17 @@ "Use only as directed.", "16% sales tax will be charged for orders originating within Space Nebraska.", ) - uplink_item.limited_stock = limited_stock + + //We want to limit the purchase amount of some items without adjusting the pricing. + if (uplink_item.limited_discount_stock > 0) { + uplink_item.limited_stock = uplink_item.limited_discount_stock + } + + //if stock limited is passed into the function, we'll override everything + if (limited_stock > 0) { + uplink_item.limited_stock = limited_stock + } + if(uplink_item.cost >= 20) //Tough love for nuke ops discount *= 0.5 uplink_item.stock_key = WEAKREF(uplink_item) @@ -73,6 +83,8 @@ var/stock_key = UPLINK_SHARED_STOCK_UNIQUE /// How many items of this stock can be purchased. var/limited_stock = -1 //Setting this above zero limits how many times this item can be bought by the same traitor in a round, -1 is unlimited + /// How many items of this stock can be purchased from the discount tab. + var/limited_discount_stock = -1 /// A bitfield to represent what uplinks can purchase this item. /// See [`code/__DEFINES/uplink.dm`]. var/purchasable_from = ALL diff --git a/code/modules/uplink/uplink_items/device_tools.dm b/code/modules/uplink/uplink_items/device_tools.dm index c309c058400..b0e7dace853 100644 --- a/code/modules/uplink/uplink_items/device_tools.dm +++ b/code/modules/uplink/uplink_items/device_tools.dm @@ -269,6 +269,7 @@ progression_minimum = 20 MINUTES item = /obj/item/powersink cost = 11 + limited_stock = 1 /datum/uplink_item/device_tools/syndicate_contacts name = "Polarized Contact Lenses" diff --git a/code/modules/uplink/uplink_items/explosive.dm b/code/modules/uplink/uplink_items/explosive.dm index 065df2098d2..714b0f2731b 100644 --- a/code/modules/uplink/uplink_items/explosive.dm +++ b/code/modules/uplink/uplink_items/explosive.dm @@ -86,6 +86,7 @@ desc = "A variation of the syndicate bomb designed to produce a large EMP effect." item = /obj/item/sbeacondrop/emp cost = 7 + limited_discount_stock = 4 /datum/uplink_item/explosives/syndicate_bomb/emp/New() ..() @@ -103,6 +104,7 @@ progression_minimum = 30 MINUTES item = /obj/item/sbeacondrop/bomb cost = 11 + limited_discount_stock = 4 /datum/uplink_item/explosives/syndicate_bomb/New() . = ..()