From 23e7de72af90b1ee50b75a0f8a634c58af83f067 Mon Sep 17 00:00:00 2001
From: EgorDinamit <egorayn2003@gmail.com>
Date: Tue, 13 Feb 2024 15:46:46 +0300
Subject: [PATCH 01/49] More supply updates

---
 code/controllers/subsystems/supply.dm         | 31 ++++++------
 code/game/machinery/trade_beacon.dm           |  2 +-
 .../file_system/programs/generic/supply.dm    | 49 ++++++++++++++++---
 3 files changed, 59 insertions(+), 23 deletions(-)

diff --git a/code/controllers/subsystems/supply.dm b/code/controllers/subsystems/supply.dm
index b1e19dddd2..a5c6d4c194 100644
--- a/code/controllers/subsystems/supply.dm
+++ b/code/controllers/subsystems/supply.dm
@@ -10,8 +10,6 @@ SUBSYSTEM_DEF(supply)
 	var/list/all_trading_stations = list()
 	/// All visible and available stations
 	var/list/visible_trading_stations = list()
-	/// All hidden/unavailable stations
-	var/list/hidden_trading_stations = list()
 	/// All factions in the world; Assoc list Name = Datum.
 	/// Trading stations get the datums from here
 	var/list/factions = list()
@@ -96,7 +94,6 @@ SUBSYSTEM_DEF(supply)
 	for(var/datum/trading_station/TS in all_trading_stations)
 		TS.RegainTradeStationsBudget()
 		qdel(TS)
-		hidden_trading_stations -= TS
 		visible_trading_stations -= TS
 		all_trading_stations -= TS
 
@@ -275,7 +272,7 @@ SUBSYSTEM_DEF(supply)
 
 	return order_queue_slot
 
-/datum/controller/subsystem/supply/proc/PurchaseOrder(obj/machinery/trade_beacon/receiving/beacon, order_id)
+/datum/controller/subsystem/supply/proc/PurchaseOrder(obj/machinery/trade_beacon/receiving/beacon, order_id, used_faction = FACTION_INDEPENDENT)
 	if(QDELETED(beacon) || !beacon || !order_id)
 		return
 
@@ -289,12 +286,12 @@ SUBSYSTEM_DEF(supply)
 		var/total_cost = order["cost"] + order["fee"]
 		var/is_requestor_master = (requesting_account == master_account) ? TRUE : FALSE
 
-		Buy(beacon, master_account, shopping_list, !is_requestor_master, requesting_account.owner_name)
+		Buy(beacon, master_account, shopping_list, !is_requestor_master, requesting_account.owner_name, used_faction)
 		if(!is_requestor_master)
 			requesting_account.transfer(master_account, total_cost, "Order Request")
-		CreateLogEntry("Order", requesting_account.owner_name, viewable_contents, total_cost)
+		CreateLogEntry("Order", requesting_account.owner_name, used_faction, viewable_contents, total_cost)
 
-/datum/controller/subsystem/supply/proc/Buy(obj/machinery/trade_beacon/receiving/senderBeacon, datum/money_account/account, list/shopList, is_order = FALSE, buyer_name = null)
+/datum/controller/subsystem/supply/proc/Buy(obj/machinery/trade_beacon/receiving/senderBeacon, datum/money_account/account, list/shopList, is_order = FALSE, buyer_name = null, used_faction = FACTION_INDEPENDENT)
 	if(QDELETED(senderBeacon) || !istype(senderBeacon) || !account || !RecursiveLen(shopList))
 		return FALSE
 
@@ -348,14 +345,17 @@ SUBSYSTEM_DEF(supply)
 	if(count_of_all > 1)
 		invoice_location = C
 
-	CreateLogEntry("Shipping", account.owner_name, order_contents_info, price_for_all, FALSE, invoice_location)
+	CreateLogEntry("Shipping", account.owner_name, used_faction, order_contents_info, price_for_all, FALSE, invoice_location)
 	account.withdraw(price_for_all, "Purchase", "Trade Network")
 	return TRUE
 
-/datum/controller/subsystem/supply/proc/Export(obj/machinery/trade_beacon/sending/senderBeacon, datum/money_account/moneyAccount)
+/datum/controller/subsystem/supply/proc/Export(obj/machinery/trade_beacon/sending/senderBeacon, datum/money_account/moneyAccount, used_faction = FACTION_INDEPENDENT)
 	if(QDELETED(senderBeacon))
 		return
 
+	if(!senderBeacon.StartExport())
+		return
+
 	var/invoice_contents_info
 	var/export_count = 0
 	var/cost = 0
@@ -392,31 +392,30 @@ SUBSYSTEM_DEF(supply)
 		if(export_count > 100)
 			break
 
-	senderBeacon.StartExport()
 	moneyAccount.deposit(cost, "Export", "Trade Network")
 
 	if(invoice_contents_info)	// If no info, then nothing was exported
-		CreateLogEntry("Export", moneyAccount.owner_name, invoice_contents_info, cost, FALSE, get_turf(senderBeacon))
+		CreateLogEntry("Export", moneyAccount.owner_name, used_faction, invoice_contents_info, cost, FALSE, get_turf(senderBeacon))
 	return TRUE
 
 // Logging
 
-/datum/controller/subsystem/supply/proc/CreateLogEntry(type, ordering_account, contents, total_paid, create_invoice = FALSE, invoice_location = null)
+/datum/controller/subsystem/supply/proc/CreateLogEntry(type, ordering_account, assoc_faction = FACTION_INDEPENDENT, contents, total_paid, create_invoice = FALSE, invoice_location = null)
 	var/log_id
 
 	switch(type)
 		if("Shipping")
 			log_id = "[++shipping_invoice_number]-S"
-			shipping_log.Add(list(list("id" = log_id, "ordering_acct" = ordering_account, "contents" = contents, "total_paid" = total_paid, "time" = time2text(world.time, "hh:mm"))))
+			shipping_log.Add(list(list("id" = log_id, "ordering_acct" = ordering_account, "assoc_faction" = assoc_faction, "contents" = contents, "total_paid" = total_paid, "time" = time2text(world.time, "hh:mm"))))
 		if("Export")
 			log_id = "[++export_invoice_number]-E"
-			export_log.Add(list(list("id" = log_id, "ordering_acct" = ordering_account, "contents" = contents, "total_paid" = total_paid, "time" = time2text(world.time, "hh:mm"))))
+			export_log.Add(list(list("id" = log_id, "ordering_acct" = ordering_account, "assoc_faction" = assoc_faction, "contents" = contents, "total_paid" = total_paid, "time" = time2text(world.time, "hh:mm"))))
 		if("Special Offer")
 			log_id = "[++offer_invoice_number]-SO"
-			offer_log.Add(list(list("id" = log_id, "ordering_acct" = ordering_account, "contents" = contents, "total_paid" = total_paid, "time" = time2text(world.time, "hh:mm"))))
+			offer_log.Add(list(list("id" = log_id, "ordering_acct" = ordering_account, "assoc_faction" = assoc_faction, "contents" = contents, "total_paid" = total_paid, "time" = time2text(world.time, "hh:mm"))))
 		if("Order")
 			log_id = "[++order_number]-O"
-			order_log.Add(list(list("id" = log_id, "ordering_acct" = ordering_account, "contents" = contents, "total_paid" = total_paid, "time" = time2text(world.time, "hh:mm"))))
+			order_log.Add(list(list("id" = log_id, "ordering_acct" = ordering_account, "assoc_faction" = assoc_faction, "contents" = contents, "total_paid" = total_paid, "time" = time2text(world.time, "hh:mm"))))
 		else
 			return
 
diff --git a/code/game/machinery/trade_beacon.dm b/code/game/machinery/trade_beacon.dm
index 3f75313109..b67dbc2549 100644
--- a/code/game/machinery/trade_beacon.dm
+++ b/code/game/machinery/trade_beacon.dm
@@ -33,7 +33,7 @@
 	name = "sending trade beacon"
 	icon_state = "beacon_sending"
 	var/export_cooldown
-	var/export_cooldown_time = 120 SECONDS
+	var/export_cooldown_time = 90 SECONDS
 
 /obj/machinery/trade_beacon/sending/Initialize()
 	. = ..()
diff --git a/code/modules/modular_computers/file_system/programs/generic/supply.dm b/code/modules/modular_computers/file_system/programs/generic/supply.dm
index 34d8840924..6b62c4f81c 100644
--- a/code/modules/modular_computers/file_system/programs/generic/supply.dm
+++ b/code/modules/modular_computers/file_system/programs/generic/supply.dm
@@ -215,7 +215,10 @@
 		return TRUE
 
 	if(href_list["PRG_log_screen"])
-		log_screen = input("Select log type", "Log Type", null) as null|anything in LOG_SCREEN_LIST
+		if(!(href_list["PRG_log_screen"] in LOG_SCREEN_LIST))
+			return FALSE
+
+		log_screen = href_list["PRG_log_screen"]
 		current_log_page = 1
 		return TRUE
 
@@ -595,7 +598,7 @@
 				if(get_area(receiving) != get_area(computer) && program_type != "master")
 					to_chat(usr, SPAN_WARNING("ERROR: Receiving beacon is too far from \the [computer]."))
 					return
-				if(!SSsupply.Buy(receiving, account, shopping_list))
+				if(!SSsupply.Buy(receiving, account, shopping_list, FALSE, null, faction))
 					to_chat(usr, SPAN_WARNING("ERROR: Purchase failed."))
 					return FALSE
 				ResetShopList()
@@ -606,7 +609,7 @@
 				if(get_area(sending) != get_area(computer) && program_type != "master")
 					to_chat(usr, SPAN_WARNING("ERROR: Sending beacon is too far from \the [computer]."))
 					return
-				SSsupply.Export(sending, account)
+				SSsupply.Export(sending, account, faction)
 				return TRUE
 
 		if(href_list["PRG_approve_order"])
@@ -625,7 +628,7 @@
 				to_chat(usr, SPAN_WARNING("ERROR: Not enough funds in requesting account ([requesting_account.owner_name] #[requesting_account.account_number])."))
 				return
 
-			SSsupply.PurchaseOrder(receiving, order)
+			SSsupply.PurchaseOrder(receiving, order, faction)
 			SSsupply.order_queue.Remove(order)
 			if(current_order == order)
 				current_order = null
@@ -652,6 +655,7 @@
 	dat += " | "
 	dat += trade_screen == CART_SCREEN ? "<b><u>Cart</u></b>" :"<A href='?src=\ref[src];PRG_trade_screen=[CART_SCREEN]'>Cart</A>"
 	dat += " | "
+	dat += trade_screen == LOG_SCREEN ? "<b><u>Logs</u></b>" :"<A href='?src=\ref[src];PRG_trade_screen=[LOG_SCREEN]'>Logs</A>"
 	dat += "<A href='?src=\ref[src];PC_exit=1'>Exit</A>"
 
 	dat += "<hr>"
@@ -754,9 +758,12 @@
 		if(!sending)
 			dat += "<b>Sending beacon is missing!</b>"
 		else
-			dat += "<A href='?src=\ref[src];PRG_update=1'>Update</A>"
+			dat += "<A href='?src=\ref[src];PRG_update=1'>Update</A> "
 			dat += "<A href='?src=\ref[src];PRG_export=1'>Export</A>"
 			dat += "<hr>"
+			if(sending.export_cooldown > world.time)
+				dat += "<b>Export cooldown: [round(sending.export_cooldown - world.time) / 1 SECONDS] seconds</b>"
+				dat += "<hr>"
 			var/total_cost = 0
 			for(var/atom/movable/AM in sending.GetObjects())
 				if(ishuman(AM))
@@ -767,12 +774,14 @@
 				var/cost = 0
 				for(var/atom/movable/item in reverselist(contents_incl_self))
 					cost += get_value(item)
+				if(!cost)
+					continue
 				dat += "- [AM.name] ([cost] [GLOB.using_map.local_currency_name_short])<br>"
 				total_cost += cost
 			if(total_cost)
 				dat += "<b>Total export cost: [total_cost] [GLOB.using_map.local_currency_name_short]</b>"
 			else
-				dat += "<b>There is no items within sending beacon's range!</b>"
+				dat += "<b>There is no items for export within sending beacon's range!</b>"
 
 	if(trade_screen == CART_SCREEN)
 		dat += "<A href='?src=\ref[src];PRG_receive=1'>Purchase</A> | "
@@ -794,6 +803,34 @@
 				dat += "<br>"
 			dat += "<br>"
 
+	if(trade_screen == LOG_SCREEN)
+		dat += trade_screen == LOG_SHIPPING ? "<b><u>Shipping</u></b>" :"<A href='?src=\ref[src];PRG_log_screen=[LOG_SHIPPING]'>Shipping</A>"
+		dat += " | "
+		dat += trade_screen == LOG_EXPORT ? "<b><u>Export</u></b>" :"<A href='?src=\ref[src];PRG_log_screen=[LOG_EXPORT]'>Export</A>"
+
+		dat += "<hr>"
+
+		switch(log_screen)
+			if(LOG_SHIPPING)
+				for(var/list/log in reverseRange(SSsupply.shipping_log))
+				for(var/log in reverseRange(SSsupply.export_log))
+					dat += "Time: [log["time"]]<br>"
+					dat += "Account: [log["ordering_acct"]]<br>"
+					dat += "Link: [log["assoc_faction"]]<br>"
+					dat += "Total invoice: [log["total_paid"]] [GLOB.using_map.local_currency_name_short]<br>"
+					dat += "Articles bought: [log["contents"]]<br>"
+					dat += "<A href='?src=\ref[src];PRG_print=[log["id"]]'>Print</A>"
+					dat += "<hr>"
+			if(LOG_EXPORT)
+				for(var/log in reverseRange(SSsupply.export_log))
+					dat += "Time: [log["time"]]<br>"
+					dat += "Account: [log["ordering_acct"]]<br>"
+					dat += "Link: [log["assoc_faction"]]<br>"
+					dat += "Total invoice: [log["total_paid"]] [GLOB.using_map.local_currency_name_short]<br>"
+					dat += "Articles sold: [log["contents"]]<br>"
+					dat += "<A href='?src=\ref[src];PRG_print=[log["id"]]'>Print</A>"
+					dat += "<hr>"
+
 	var/datum/browser/popup = new(user, "supply_prg", "Trade Network", 600, 680)
 	popup.set_content(dat)
 	popup.open()

From e63ebac2edcdb985342dbb4fa3e79565fb217e7e Mon Sep 17 00:00:00 2001
From: EgorDinamit <egorayn2003@gmail.com>
Date: Tue, 13 Feb 2024 16:01:30 +0300
Subject: [PATCH 02/49] Tiny ui fix

---
 .../modular_computers/file_system/programs/generic/supply.dm | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/code/modules/modular_computers/file_system/programs/generic/supply.dm b/code/modules/modular_computers/file_system/programs/generic/supply.dm
index 6b62c4f81c..403115333b 100644
--- a/code/modules/modular_computers/file_system/programs/generic/supply.dm
+++ b/code/modules/modular_computers/file_system/programs/generic/supply.dm
@@ -656,6 +656,7 @@
 	dat += trade_screen == CART_SCREEN ? "<b><u>Cart</u></b>" :"<A href='?src=\ref[src];PRG_trade_screen=[CART_SCREEN]'>Cart</A>"
 	dat += " | "
 	dat += trade_screen == LOG_SCREEN ? "<b><u>Logs</u></b>" :"<A href='?src=\ref[src];PRG_trade_screen=[LOG_SCREEN]'>Logs</A>"
+	dat += " | "
 	dat += "<A href='?src=\ref[src];PC_exit=1'>Exit</A>"
 
 	dat += "<hr>"
@@ -804,9 +805,9 @@
 			dat += "<br>"
 
 	if(trade_screen == LOG_SCREEN)
-		dat += trade_screen == LOG_SHIPPING ? "<b><u>Shipping</u></b>" :"<A href='?src=\ref[src];PRG_log_screen=[LOG_SHIPPING]'>Shipping</A>"
+		dat += log_screen == LOG_SHIPPING ? "<b><u>Shipping</u></b>" :"<A href='?src=\ref[src];PRG_log_screen=[LOG_SHIPPING]'>Shipping</A>"
 		dat += " | "
-		dat += trade_screen == LOG_EXPORT ? "<b><u>Export</u></b>" :"<A href='?src=\ref[src];PRG_log_screen=[LOG_EXPORT]'>Export</A>"
+		dat += log_screen == LOG_EXPORT ? "<b><u>Export</u></b>" :"<A href='?src=\ref[src];PRG_log_screen=[LOG_EXPORT]'>Export</A>"
 
 		dat += "<hr>"
 

From 2531e4c1f612e7859e7a98cdf48689f104050396 Mon Sep 17 00:00:00 2001
From: EgorDinamit <egorayn2003@gmail.com>
Date: Tue, 13 Feb 2024 16:06:41 +0300
Subject: [PATCH 03/49] Fix logs

---
 .../modular_computers/file_system/programs/generic/supply.dm   | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/code/modules/modular_computers/file_system/programs/generic/supply.dm b/code/modules/modular_computers/file_system/programs/generic/supply.dm
index 403115333b..edac4f234f 100644
--- a/code/modules/modular_computers/file_system/programs/generic/supply.dm
+++ b/code/modules/modular_computers/file_system/programs/generic/supply.dm
@@ -814,7 +814,6 @@
 		switch(log_screen)
 			if(LOG_SHIPPING)
 				for(var/list/log in reverseRange(SSsupply.shipping_log))
-				for(var/log in reverseRange(SSsupply.export_log))
 					dat += "Time: [log["time"]]<br>"
 					dat += "Account: [log["ordering_acct"]]<br>"
 					dat += "Link: [log["assoc_faction"]]<br>"
@@ -823,7 +822,7 @@
 					dat += "<A href='?src=\ref[src];PRG_print=[log["id"]]'>Print</A>"
 					dat += "<hr>"
 			if(LOG_EXPORT)
-				for(var/log in reverseRange(SSsupply.export_log))
+				for(var/list/log in reverseRange(SSsupply.export_log))
 					dat += "Time: [log["time"]]<br>"
 					dat += "Account: [log["ordering_acct"]]<br>"
 					dat += "Link: [log["assoc_faction"]]<br>"

From 5ef58eb76e543772bf70c8229d08191ed42eed83 Mon Sep 17 00:00:00 2001
From: EgorDinamit <egorayn2003@gmail.com>
Date: Tue, 13 Feb 2024 16:28:19 +0300
Subject: [PATCH 04/49] Fix cooldown display

---
 .../modular_computers/file_system/programs/generic/supply.dm    | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/code/modules/modular_computers/file_system/programs/generic/supply.dm b/code/modules/modular_computers/file_system/programs/generic/supply.dm
index edac4f234f..9a0268d9d4 100644
--- a/code/modules/modular_computers/file_system/programs/generic/supply.dm
+++ b/code/modules/modular_computers/file_system/programs/generic/supply.dm
@@ -763,7 +763,7 @@
 			dat += "<A href='?src=\ref[src];PRG_export=1'>Export</A>"
 			dat += "<hr>"
 			if(sending.export_cooldown > world.time)
-				dat += "<b>Export cooldown: [round(sending.export_cooldown - world.time) / 1 SECONDS] seconds</b>"
+				dat += "<b>Export cooldown: [round((sending.export_cooldown - world.time) / 10)] seconds</b>"
 				dat += "<hr>"
 			var/total_cost = 0
 			for(var/atom/movable/AM in sending.GetObjects())

From 179a27563c72a579ba656a64fc351e1fa1826555 Mon Sep 17 00:00:00 2001
From: EgorDinamit <egorayn2003@gmail.com>
Date: Tue, 13 Feb 2024 17:02:14 +0300
Subject: [PATCH 05/49] Changes favor requirement on some traders

---
 .../trading_station_types/0_always_spawn/materials.dm           | 2 +-
 .../trading_station_types/0_always_spawn/medical.dm             | 2 +-
 .../trading_station_types/0_always_spawn/terra.dm               | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/code/modules/trading_stations/trading_station_types/0_always_spawn/materials.dm b/code/modules/trading_stations/trading_station_types/0_always_spawn/materials.dm
index 44930f0cf2..8ac897271e 100644
--- a/code/modules/trading_stations/trading_station_types/0_always_spawn/materials.dm
+++ b/code/modules/trading_stations/trading_station_types/0_always_spawn/materials.dm
@@ -4,7 +4,7 @@
 		"FTB \"Steel Deck\"" = "Free Trade Beacon \"Steel Deck\": Best materials around this sector of space!",
 		)
 	uid = "materials"
-	unlock_favor = 2500
+	unlock_favor = 1200
 	faction = FACTION_INDEPENDENT
 	spawn_always = TRUE
 	markup = 1.5
diff --git a/code/modules/trading_stations/trading_station_types/0_always_spawn/medical.dm b/code/modules/trading_stations/trading_station_types/0_always_spawn/medical.dm
index 50cb496b30..7d1e0dadc0 100644
--- a/code/modules/trading_stations/trading_station_types/0_always_spawn/medical.dm
+++ b/code/modules/trading_stations/trading_station_types/0_always_spawn/medical.dm
@@ -6,7 +6,7 @@
 		"ZHTB \"Medicus\"" = "Zeng-Hu Trade Beacon \"Medicus\": Bruise packs, surgery tools, chemicals!",
 		)
 	uid = "medical"
-	unlock_favor = 5000
+	unlock_favor = 3500
 	faction = FACTION_INDEPENDENT // Should be under Zeng Hu, potentially
 	spawn_always = TRUE
 	markup = 1.2
diff --git a/code/modules/trading_stations/trading_station_types/0_always_spawn/terra.dm b/code/modules/trading_stations/trading_station_types/0_always_spawn/terra.dm
index 38486c579c..a86b148c45 100644
--- a/code/modules/trading_stations/trading_station_types/0_always_spawn/terra.dm
+++ b/code/modules/trading_stations/trading_station_types/0_always_spawn/terra.dm
@@ -3,7 +3,7 @@
 		"TTB \"Invictus\"" = "Terran Trade Beacon \"Invictus\": Marine Corps equipment, sold exclusively to TerraGov associates.",
 		)
 	uid = "terra"
-	unlock_favor = 10000
+	unlock_favor = 12000
 	faction = FACTION_TERRAGOV
 	whitelist_factions = list(FACTION_TERRAGOV)
 	spawn_always = TRUE

From d5cc30e0b070685f524d6d04d4f716e0560b61b2 Mon Sep 17 00:00:00 2001
From: EgorDinamit <egorayn2003@gmail.com>
Date: Tue, 13 Feb 2024 18:09:44 +0300
Subject: [PATCH 06/49] More tweaks & fixes

---
 code/controllers/subsystems/supply.dm                  |  3 +++
 code/datums/uplink/devices and tools.dm                |  3 ++-
 code/game/machinery/trade_beacon.dm                    |  2 ++
 code/game/objects/items/weapons/storage/uplink_kits.dm |  1 -
 code/modules/item_worth/worths_list.dm                 | 10 +++++++---
 code/modules/research/designs/designs_hud_optical.dm   | 10 ++++++----
 6 files changed, 20 insertions(+), 9 deletions(-)

diff --git a/code/controllers/subsystems/supply.dm b/code/controllers/subsystems/supply.dm
index a5c6d4c194..0398fa1ede 100644
--- a/code/controllers/subsystems/supply.dm
+++ b/code/controllers/subsystems/supply.dm
@@ -373,6 +373,9 @@ SUBSYSTEM_DEF(supply)
 
 		// We go backwards, so it'll be innermost objects sold first
 		for(var/atom/movable/item in reverseRange(contents_incl_self))
+			if(istype(item, /obj/screen))
+				continue
+
 			var/item_price = get_value(item)
 			var/export_value = item_price
 
diff --git a/code/datums/uplink/devices and tools.dm b/code/datums/uplink/devices and tools.dm
index d9f71b83e1..8a0922d25e 100644
--- a/code/datums/uplink/devices and tools.dm	
+++ b/code/datums/uplink/devices and tools.dm	
@@ -25,8 +25,9 @@
 
 /datum/uplink_item/item/tools/money
 	name = "Operations Funding"
-	item_cost = 8
+	item_cost = 10
 	path = /obj/item/storage/secure/briefcase/money
+
 /datum/uplink_item/item/tools/money/New()
 	. = ..()
 	desc = "A briefcase with 10,000 untraceable [GLOB.using_map.local_currency_name]. Makes a great bribe if they're willing to take you up on your offer."
diff --git a/code/game/machinery/trade_beacon.dm b/code/game/machinery/trade_beacon.dm
index b67dbc2549..5b1f216b9f 100644
--- a/code/game/machinery/trade_beacon.dm
+++ b/code/game/machinery/trade_beacon.dm
@@ -54,6 +54,8 @@
 			continue
 		if(A.invisibility)
 			continue
+		if(istype(A, /obj/screen))
+			continue
 		objects += A
 	return objects
 
diff --git a/code/game/objects/items/weapons/storage/uplink_kits.dm b/code/game/objects/items/weapons/storage/uplink_kits.dm
index dcba0589de..8afecb09b9 100644
--- a/code/game/objects/items/weapons/storage/uplink_kits.dm
+++ b/code/game/objects/items/weapons/storage/uplink_kits.dm
@@ -166,7 +166,6 @@
 	make_exact_fit()
 
 /obj/item/storage/secure/briefcase/money
-
 	startswith = list(/obj/item/spacecash/bundle/c1000 = 10)
 
 /obj/item/storage/backpack/satchel/syndie_kit/armor
diff --git a/code/modules/item_worth/worths_list.dm b/code/modules/item_worth/worths_list.dm
index 1e849176b8..f34eb8b7d9 100644
--- a/code/modules/item_worth/worths_list.dm
+++ b/code/modules/item_worth/worths_list.dm
@@ -41,10 +41,10 @@ var/list/worths = list(
 					/obj/item/gun/energy/temperature = 4000,
 					/obj/item/gun/energy = 2000,
 //LAUNCHERS,
-					/obj/item/gun/launcher/crossbow = 120,
+					/obj/item/gun/launcher/crossbow = 150,
 					/obj/item/gun/launcher/pneumatic/small = 100,
-					/obj/item/gun/launcher/pneumatic = 200,
-					/obj/item/gun/launcher/syringe = 150,
+					/obj/item/gun/launcher/pneumatic = 300,
+					/obj/item/gun/launcher/syringe = 450,
 					/obj/item/gun/launcher/alien = 3500,
 					/obj/item/gun/launcher = 300,
 //AUTOMATICS,
@@ -101,6 +101,7 @@ var/list/worths = list(
 					/obj/item/stack/medical/advanced/bruise_pack = -20,
 					/obj/item/stack/medical/advanced/ointment = -30,
 					/obj/item/stack/medical/splint = -25,
+					/obj/item/stack/medical/resin = -50,
 					/obj/item/stack/medical = -15,
 					/obj/item/stack/nanopaste = -30,
 					/obj/item/stack/material/rods = -5,
@@ -108,6 +109,7 @@ var/list/worths = list(
 					/obj/item/stack/wax = -5,
 					/obj/item/stack = -5,
 //STORAGE,
+					/obj/item/storage/backpack/holding = -2500,
 					/obj/item/storage/briefcase/crimekit = -50,
 					/obj/item/storage = -30,
 //WEAPONS,
@@ -583,6 +585,8 @@ var/list/worths = list(
 					/obj/item/bee_pack = 200,
 					/obj/item/weedkiller = 30,
 					/obj/item/sign/medipolma = 1500,
+					/obj/item/mop/advanced = 250,
+					/obj/item/mop = 25,
 					/obj/item = 5,
 //STRUCTURES,
 					/obj/structure/dogbed = 15,
diff --git a/code/modules/research/designs/designs_hud_optical.dm b/code/modules/research/designs/designs_hud_optical.dm
index adacddf300..f4a7ebb7e4 100644
--- a/code/modules/research/designs/designs_hud_optical.dm
+++ b/code/modules/research/designs/designs_hud_optical.dm
@@ -29,10 +29,12 @@
 	build_path = /obj/item/clothing/glasses/hud/janitor
 	sort_string = "GAAAC"
 
+/datum/design/item/optical
+	materials = list(MATERIAL_STEEL = 250, MATERIAL_GLASS = 250)
+
 /datum/design/item/optical/AssembleDesignName()
 	..()
 	name = "\[Optical HUD\] - [item_name]"
-	materials = list(MATERIAL_STEEL = 50, MATERIAL_GLASS = 50)
 
 /datum/design/item/optical/mesons
 	name = "mesons"
@@ -47,12 +49,12 @@
 	id = "mesons_material"
 	req_tech = list(TECH_MAGNET = 3, TECH_ENGINEERING = 3)
 	build_path = /obj/item/clothing/glasses/material
-	sort_string = "GAAAB"
+	sort_string = "GBAAB"
 
 /datum/design/item/optical/tactical
 	name = "tactical"
 	id = "tactical_goggles"
 	req_tech = list(TECH_MAGNET = 3, TECH_COMBAT = 5)
-	materials = list(MATERIAL_STEEL = 50, MATERIAL_GLASS = 50, MATERIAL_SILVER = 50, MATERIAL_GOLD = 50)
+	materials = list(MATERIAL_STEEL = 250, MATERIAL_GLASS = 250, MATERIAL_SILVER = 250, MATERIAL_GOLD = 250, MATERIAL_DIAMOND = 250)
 	build_path = /obj/item/clothing/glasses/tacgoggles
-	sort_string = "GAAAC"
\ No newline at end of file
+	sort_string = "GBAAC"
\ No newline at end of file

From 2a2a583a02c6a202a9ea63d7144ffbd7c677667d Mon Sep 17 00:00:00 2001
From: EgorDinamit <egorayn2003@gmail.com>
Date: Tue, 13 Feb 2024 18:17:41 +0300
Subject: [PATCH 07/49] Platinum for sale

---
 .../trading_station_types/0_always_spawn/materials.dm            | 1 +
 1 file changed, 1 insertion(+)

diff --git a/code/modules/trading_stations/trading_station_types/0_always_spawn/materials.dm b/code/modules/trading_stations/trading_station_types/0_always_spawn/materials.dm
index 8ac897271e..d530ee3e45 100644
--- a/code/modules/trading_stations/trading_station_types/0_always_spawn/materials.dm
+++ b/code/modules/trading_stations/trading_station_types/0_always_spawn/materials.dm
@@ -15,6 +15,7 @@
 			/obj/item/stack/material/plastic/ten = CUSTOM_GOODS_NAME("plastic (x10)"),
 			/obj/item/stack/material/aluminium/ten = CUSTOM_GOODS_NAME("aluminium (x10)"),
 			/obj/item/stack/material/titanium/ten = CUSTOM_GOODS_NAME("titanium (x10)"),
+			/obj/item/stack/material/platinum/ten = CUSTOM_GOODS_NAME("platinum (x10)"),
 			/obj/item/stack/material/phoron/ten = CUSTOM_GOODS_NAME("phoron (x10)"),
 			/obj/item/stack/material/uranium/ten = CUSTOM_GOODS_NAME("uranium (x10)"),
 			/obj/item/stack/material/tritium/ten = CUSTOM_GOODS_NAME("tritium (x10)"),

From f48dd6f861fe24eb60fdb8a8e49b732a2c209927 Mon Sep 17 00:00:00 2001
From: EgorDinamit <egorayn2003@gmail.com>
Date: Tue, 13 Feb 2024 19:06:50 +0300
Subject: [PATCH 08/49] Reverse-list instead of reverse-range

---
 .../modular_computers/file_system/programs/generic/supply.dm  | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/code/modules/modular_computers/file_system/programs/generic/supply.dm b/code/modules/modular_computers/file_system/programs/generic/supply.dm
index 9a0268d9d4..b824980b8e 100644
--- a/code/modules/modular_computers/file_system/programs/generic/supply.dm
+++ b/code/modules/modular_computers/file_system/programs/generic/supply.dm
@@ -813,7 +813,7 @@
 
 		switch(log_screen)
 			if(LOG_SHIPPING)
-				for(var/list/log in reverseRange(SSsupply.shipping_log))
+				for(var/list/log in reverselist(SSsupply.shipping_log))
 					dat += "Time: [log["time"]]<br>"
 					dat += "Account: [log["ordering_acct"]]<br>"
 					dat += "Link: [log["assoc_faction"]]<br>"
@@ -822,7 +822,7 @@
 					dat += "<A href='?src=\ref[src];PRG_print=[log["id"]]'>Print</A>"
 					dat += "<hr>"
 			if(LOG_EXPORT)
-				for(var/list/log in reverseRange(SSsupply.export_log))
+				for(var/list/log in reverselist(SSsupply.export_log))
 					dat += "Time: [log["time"]]<br>"
 					dat += "Account: [log["ordering_acct"]]<br>"
 					dat += "Link: [log["assoc_faction"]]<br>"

From 20b9bfcde35705979e7f16ea2e9f4d129fa56423 Mon Sep 17 00:00:00 2001
From: EgorDinamit <egorayn2003@gmail.com>
Date: Tue, 13 Feb 2024 21:32:17 +0300
Subject: [PATCH 09/49] Fix logs display again

---
 .../file_system/programs/generic/supply.dm                  | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/code/modules/modular_computers/file_system/programs/generic/supply.dm b/code/modules/modular_computers/file_system/programs/generic/supply.dm
index b824980b8e..703e40aac6 100644
--- a/code/modules/modular_computers/file_system/programs/generic/supply.dm
+++ b/code/modules/modular_computers/file_system/programs/generic/supply.dm
@@ -813,7 +813,8 @@
 
 		switch(log_screen)
 			if(LOG_SHIPPING)
-				for(var/list/log in reverselist(SSsupply.shipping_log))
+				var/list/L = SSsupply.shipping_log.Copy()
+				for(var/list/log in reverseRange(L))
 					dat += "Time: [log["time"]]<br>"
 					dat += "Account: [log["ordering_acct"]]<br>"
 					dat += "Link: [log["assoc_faction"]]<br>"
@@ -822,7 +823,8 @@
 					dat += "<A href='?src=\ref[src];PRG_print=[log["id"]]'>Print</A>"
 					dat += "<hr>"
 			if(LOG_EXPORT)
-				for(var/list/log in reverselist(SSsupply.export_log))
+				var/list/L = SSsupply.export_log.Copy()
+				for(var/list/log in reverseRange(L))
 					dat += "Time: [log["time"]]<br>"
 					dat += "Account: [log["ordering_acct"]]<br>"
 					dat += "Link: [log["assoc_faction"]]<br>"

From 8882b215d56dc02cc9c20c0057a57b8c596d65e0 Mon Sep 17 00:00:00 2001
From: EgorDinamit <egorayn2003@gmail.com>
Date: Tue, 13 Feb 2024 22:47:28 +0300
Subject: [PATCH 10/49] Wizard item worths

---
 code/modules/item_worth/value_procs.dm | 6 ++++++
 code/modules/item_worth/worths_list.dm | 3 ++-
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/code/modules/item_worth/value_procs.dm b/code/modules/item_worth/value_procs.dm
index d4e9ab6c22..3ef203f4d6 100644
--- a/code/modules/item_worth/value_procs.dm
+++ b/code/modules/item_worth/value_procs.dm
@@ -85,3 +85,9 @@
 	. = ..()
 	if(damage)
 		. -= round(. * (damage / max_damage))
+
+/obj/item/spellbook/Value(base)
+	. = ..()
+	. += length(allowed_spells * 1000)
+	if(!isnull(owner))
+		. *= 0.5
diff --git a/code/modules/item_worth/worths_list.dm b/code/modules/item_worth/worths_list.dm
index f34eb8b7d9..7f3a0d3524 100644
--- a/code/modules/item_worth/worths_list.dm
+++ b/code/modules/item_worth/worths_list.dm
@@ -236,7 +236,7 @@ var/list/worths = list(
 					/obj/item/rcd = 1000,
 					/obj/item/rcd_ammo = 50,
 					/obj/item/rsf = 300,
-					/obj/item/teleportation_scroll = 2000,
+					/obj/item/teleportation_scroll = 5000,
 					/obj/item/shield/buckler = 300, //More expensive because people don't make them anymore,
 					/obj/item/shield/riot = 150,
 					/obj/item/shield/energy = 1200,
@@ -587,6 +587,7 @@ var/list/worths = list(
 					/obj/item/sign/medipolma = 1500,
 					/obj/item/mop/advanced = 250,
 					/obj/item/mop = 25,
+					/obj/item/spellbook = -8000,
 					/obj/item = 5,
 //STRUCTURES,
 					/obj/structure/dogbed = 15,

From e7a005fe2a4eab37e870589cab193fa6ef5445ae Mon Sep 17 00:00:00 2001
From: EgorDinamit <egorayn2003@gmail.com>
Date: Wed, 14 Feb 2024 17:08:25 +0300
Subject: [PATCH 11/49] Display balance in the console

---
 .../modular_computers/file_system/programs/generic/supply.dm     | 1 +
 1 file changed, 1 insertion(+)

diff --git a/code/modules/modular_computers/file_system/programs/generic/supply.dm b/code/modules/modular_computers/file_system/programs/generic/supply.dm
index 703e40aac6..ea04f11667 100644
--- a/code/modules/modular_computers/file_system/programs/generic/supply.dm
+++ b/code/modules/modular_computers/file_system/programs/generic/supply.dm
@@ -672,6 +672,7 @@
 
 		if(account)
 			dat += "Current Account: [account.owner_name]<br>"
+			dat += "Balance: [account.get_balance()]<br>"
 			dat += "<a href='?src=\ref[src];PRG_account_unlink=1'>Unlink</A><br><br>"
 		else
 			dat += "<A href='?src=\ref[src];PRG_account=1'>Link Account</A><br><br>"

From a18a0e23d66281e22cbd6684ba7e7a005d92c860 Mon Sep 17 00:00:00 2001
From: EgorDinamit <egorayn2003@gmail.com>
Date: Wed, 14 Feb 2024 19:15:04 +0300
Subject: [PATCH 12/49] Payrolls test

---
 code/controllers/subsystems/supply.dm |  6 ++++++
 code/modules/economy/Accounts.dm      | 13 +++++++++++++
 2 files changed, 19 insertions(+)

diff --git a/code/controllers/subsystems/supply.dm b/code/controllers/subsystems/supply.dm
index 0398fa1ede..cf1942974e 100644
--- a/code/controllers/subsystems/supply.dm
+++ b/code/controllers/subsystems/supply.dm
@@ -3,6 +3,8 @@ SUBSYSTEM_DEF(supply)
 	name = "Supply"
 	priority = SS_PRIORITY_SUPPLY
 	flags = SS_NO_FIRE
+	runlevels = RUNLEVEL_GAME|RUNLEVEL_POSTGAME
+	wait = 30 MINUTES
 
 	/// Budget for trading stations with spawn_always at FALSE
 	var/trade_stations_budget = 5
@@ -65,6 +67,10 @@ SUBSYSTEM_DEF(supply)
 	DeInitTradeStations()
 	. = ..()
 
+/datum/controller/subsystem/supply/fire()
+	for(var/datum/money_account/A in all_money_accounts)
+		A.PayrollTick()
+
 /datum/controller/subsystem/supply/proc/GetFaction(fac)
 	if(!(fac in factions))
 		return null
diff --git a/code/modules/economy/Accounts.dm b/code/modules/economy/Accounts.dm
index ae31ed28f7..a7dfc0573c 100644
--- a/code/modules/economy/Accounts.dm
+++ b/code/modules/economy/Accounts.dm
@@ -10,6 +10,8 @@
 							//1 - require manual login / account number and pin
 							//2 - require card and manual login
 	var/account_type = ACCOUNT_TYPE_PERSONAL
+	/// Associative list of money accounts which we pay into every 30 minutes; account_number = money
+	var/list/payroll_accounts = list()
 
 /datum/money_account/New(var/account_type)
 	account_type = account_type ? account_type : ACCOUNT_TYPE_PERSONAL
@@ -38,6 +40,17 @@
 	var/datum/transaction/T = new(src, to_account, amount, purpose)
 	return T.perform()
 
+// Called by supply subsystem fire() proc every ~30 minutes
+/datum/money_account/proc/PayrollTick()
+	listclearnulls(payroll_accounts)
+	for(var/datum/money_account/A in payroll_accounts)
+		if(!payroll_accounts[A])
+			payroll_accounts[A] = 0
+			continue
+		var/pay = payroll_accounts[A]
+		if(!pay || pay > money)
+			continue
+		transfer(A, pay, "Payroll from [account_name]")
 
 /proc/create_account(var/account_name = "Default account name", var/owner_name, var/starting_funds = 0, var/account_type = ACCOUNT_TYPE_PERSONAL, var/obj/machinery/computer/account_database/source_db)
 

From 3f8a84320aef2e6f649ec92888ca9375403c753c Mon Sep 17 00:00:00 2001
From: EgorDinamit <egorayn2003@gmail.com>
Date: Wed, 14 Feb 2024 22:00:33 +0300
Subject: [PATCH 13/49] Hidden trading stations tiny tweak

---
 .../trading_stations/_trading_station.dm        |   9 ++++++++-
 sound/machines/sensors/contact_generic.ogg      | Bin 0 -> 9404 bytes
 sound/machines/sensors/contact_identified.ogg   | Bin 0 -> 11616 bytes
 sound/machines/sensors/contact_lost.ogg         | Bin 0 -> 12403 bytes
 sound/machines/sensors/contact_regained.ogg     | Bin 0 -> 10234 bytes
 sound/machines/sensors/dradis.ogg               | Bin 0 -> 36460 bytes
 6 files changed, 8 insertions(+), 1 deletion(-)
 create mode 100644 sound/machines/sensors/contact_generic.ogg
 create mode 100644 sound/machines/sensors/contact_identified.ogg
 create mode 100644 sound/machines/sensors/contact_lost.ogg
 create mode 100644 sound/machines/sensors/contact_regained.ogg
 create mode 100644 sound/machines/sensors/dradis.ogg

diff --git a/code/modules/trading_stations/_trading_station.dm b/code/modules/trading_stations/_trading_station.dm
index ee0930ad2f..54a67073c7 100644
--- a/code/modules/trading_stations/_trading_station.dm
+++ b/code/modules/trading_stations/_trading_station.dm
@@ -44,6 +44,7 @@
 	var/turf/overmap_location
 	var/list/forced_overmap_zone // list(list(minx, maxx), list(miny, maxy))
 	var/overmap_opacity = 0
+	var/overmap_color = null
 
 	/// If not empty - only factions in this list can trade with it
 	var/list/whitelist_factions = list()
@@ -111,8 +112,10 @@
 	overmap_object.opacity = overmap_opacity
 	overmap_object.dir = pick(rand(1,2), 4, 8)
 	overmap_object.icon_state = pick(icon_states)
+	overmap_object.color = overmap_color
 
 	if(start_hidden)
+		overmap_object.name = "unidentified trade beacon"
 		overmap_object.color = "#444444"
 		GLOB.entered_event.register(overmap_location, src, .proc/Discovered)
 
@@ -121,7 +124,11 @@
 		return
 
 	SSsupply.visible_trading_stations |= src
-	overmap_object.color = null
+	overmap_object.name = "bluespace trade beacon - [name]"
+	overmap_object.color = overmap_color
+	for(var/obj/machinery/computer/ship/helm/H in SSmachines.machinery)
+		H.visible_message(SPAN_NOTICE("\The [H] pings as <b>[overmap_object.name]</b> is discovered!"))
+		playsound(H, 'sound/machines/sensors/contact_generic.ogg', 50, TRUE, 3)
 	GLOB.entered_event.unregister(overmap_location, src, .proc/Discovered)
 
 /datum/trading_station/proc/AssembleInventory()
diff --git a/sound/machines/sensors/contact_generic.ogg b/sound/machines/sensors/contact_generic.ogg
new file mode 100644
index 0000000000000000000000000000000000000000..ef4e04b9825743ee9406278a7b090d084d680290
GIT binary patch
literal 9404
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
VfO(P#Gkt}dXopM&)xFIJ`aiB2|2O~u

literal 0
HcmV?d00001

diff --git a/sound/machines/sensors/contact_identified.ogg b/sound/machines/sensors/contact_identified.ogg
new file mode 100644
index 0000000000000000000000000000000000000000..531411c39ed1407632bcd4bd15af54bb7c1f3ba4
GIT binary patch
literal 11616
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
KP<846@P7ca95j#s

literal 0
HcmV?d00001

diff --git a/sound/machines/sensors/contact_lost.ogg b/sound/machines/sensors/contact_lost.ogg
new file mode 100644
index 0000000000000000000000000000000000000000..4a1b7753658a4d6fc9c31147282d5f7b204b4fad
GIT binary patch
literal 12403
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

literal 0
HcmV?d00001

diff --git a/sound/machines/sensors/contact_regained.ogg b/sound/machines/sensors/contact_regained.ogg
new file mode 100644
index 0000000000000000000000000000000000000000..9e35c81b3126782fedf44fde76eea7ea6c4bae1e
GIT binary patch
literal 10234
zcmaia2|QHY|Nm#q*!Lw7YKRz76g`nLk;)(pqmamw%91Rl1y?9-k|u;0We-VFsTj$U
zEh$?IS}BPqO3Cs+_j;c1_xXQ+zt{J7Uf1p1`#JY>KKpr}Gg*6k+W`;!)tbZRIy!Bq
zwviT+4(tnb-xGwtB5f%AYsf(o(YZsi#=rbm!@tBSyk4DaB<yGZzxJ3s$7m^{Z`%{F
zdzp2hH`RBKy92?VYEE6Dqq{<9h0aQ<hP9vno`68FATR%58qRJW`ZL>NYQ4dXxt8T0
z=(W?=%-?&Dzt>6<?;KB>iKzn#1kf;DOKL6F7S95Z0B}>KiCx%bPRnLzY8*;tZ^nDI
zIwzCaCu`+A&gj<teWU7mqA4hVX$Zz${b;_o)xcX$JuZ-AuxHEaTq^%5+kOMVhu@cY
z_~+cp@$qk^sR@WW@&Ym#eY0|m3=_Y($0{F}L$?!(fep&JX@NqTd7NWHD;lU#mMcDG
zUD#syDer2W;b)CoZ6?Cnx7rz&x*ZN4#Si#gjs~?F45a;a6D0JYB3VrM<UJ)!1aS7T
zw4CHX#A;40Dqu)W*mPdT{Dw@^4aJtHs@C7MY^C*|t~9f=w_>3d;<ELCSJ#1%t^;9?
z$uZ7%!W{3!ICsamOvLPzJO0=8Gpug{zX;W-B;YJINPI`TqO#!1TZ1d)=;MVv;E9`r
zDwv=`OSo#Dvukhhp49T)*UJ5xO0}9wMTjBD*%VwF;Ot4s`5)IV$3(CH`=ak|&;&ZN
zW&M7|`u(bAOx5~8Eq=nn4S;+~XKK|3>TL?rs}C|l*QVeNkJ*+j<CfxoI{|k)09{wH
zcE93dWDTbFvq1f=L2J8$th$gXaEtu+7D>blQbhUkuEf2Vz{>cYgjq1eRxVS(RAg=@
zG$1zfJvF5*Wvs<OEad|yUnccg^-23w^}G4Wse}i8Tjk#&U(y;c)p9Pir3AH_i=<@F
z^$tm;@)zZ|qj&NHX<~KqJJGm3?J4~EJ=@T?j%_I)^X|%^-br?<df8q3IeveIMgESo
z)@p+{=!=stQhn|Ux}e@K&$O>Cg7~}t3?Dl3+s<yey35C?VR3x!GRis17ZwJe6T86C
zZJ=c>JR7%>ksoEllvmFVK1OIx1&Ed)qWJF{5z2E>oRx4&vr*$_^NJ=d{8m`gYB*F<
zBVj6{i=tRdA4T!mvXALO#Ri*wvdcQ1mS(e=3|jVFMj@wCJ>%E&$rDL(JUOtDmW#6D
zpN<<<eIlv!^dHxgKNW4I)X?>Gg|^+wwJdwq)&qWyNg*$9$GCKd^mT>xb)9vcfBZiK
z>tC4zC~2aJoMgM7(XCI5+F~L&=it9HXTMDSdBw-)RV_+Yt=hF(zUf(y={=P;v(>Y*
zo9FU$UdS_9FS}JP&-A^XvAjACc=eQfIo}R*EdMKE=F+CGE94)UgQtj!LEO8|36y_l
z4o4&I?drJ2<_W5f2}=$odY??mzm)zd|BBFmWX|qWxyh$;V^0ml#%Y{P+;cLe;O-UQ
z#^Rxh|MU7+=4=X7MHk8(vq05<WDZwX(G+D<sg~8)oQ`XsB7+8-&HtwZ0J!lY7DOGf
zWomaY^*fl_Ec><pJ!25HL(l4&9y07j0C|AL$jQ+Xrvl?m{MT+1(EX^&n`yw8`A9B0
zS7N1zfv8Gw{Cf4ZcM=S0M8^7=8uK<-Mx9mrBaSNiFlW2@ht&e8>`}lL0Ml*IeIysy
zYW|qBp;cG#GP}V*J^MntIZZoJZY51EN6O<}+SPXR$60JSi&K}gq&!X*p^tzc{RwBb
z#m^(rWdPhom_oD|HnWxXF`n6|`$3V(Fvv}_Yc&v1if+{9yBsA!%T}~&rPV7&H?RMY
z7S*<11AxjUp+6H1Jx?=`P>22i)h8G9EM(Lyq|Khlcy&ozbzRhJ(bKoJXEjN)I_z05
zWvy7{YF5%#R^#?8X*1S5*0V$_R+--uJ+B^n)@xZ-N4eKa+3>B2A$=>Y9MNMZqK0%O
zhPih7xg`I^%1VY{wTjhMu5TO6vSoQW+Or%FcsWk6wswYDAgY~J&pZ~ZoYnK)kChnq
zCYa^2)vITM<tQ8O+!gcYN7x%VoO4%42%_%n^xAnlq)%f{%AUPf@(NNk3JUTI%KZw8
zi=3|v7F;Q4EcGrZE^I8ley!Md2vLjk3QDyK3bd}37XB{K8Y<5#s3>YIElDlDHdH<$
zT%$Eq5l~QEe692gPOT^!s@p$Qp>s5c)|7MYb47kdh5t~+{^oK&#j6FMD>a)QmNb@*
z3{@<@6{2j*3VF?TdAAkm;pciV-FYIW)Nf5y(eFmYp#7)8lYNSJ(PuaP70|o7v8Bd4
zSI1?0ryxlSic$-%4VC&YttlKbv1Nt1T=eSu!^LsFf8QT*&Ru7(6nw7GY^p>P>AtGl
zr+80C(dFeTM7Ug9Bpl|^Fd_KF=Vjgg--hpggj~HYB3OS8#RdtF4e3UDrt(rAY&8k^
zlm}$&Bs6QO!4k~R)GT{lKINb-j9Nvu4P&n|`?+Qv)jrO=A?<<`V>gZ6&g9R`wqf{W
zvOAeRH*%i44^y*b8GE$Z?M{31>z+HEk@S#QF_7iiYA%?43nw5}1Dq@|6GnEHj0Hp6
zp&148)%Nw9^RuMv%=60-tL!XU3x;mFjI+OPry}|yOUl`tRwrZUr(Kt_xQ>cgJ;o;|
z=J=4zMyxJHB`_F87ZaGxX%}!-QE?1&T6qG)5=q5i+=yX1`RaD2F@5!sRESjq!&ke`
z$=R|jM8Zj!kgBN6!Dnw#9hzJ%Th4-UqfFMvU-#nz#-1X4^88v^=QuREosWJ_=U$xP
z?6<ZvC5Tbf`J8zc5j^}Jbfg>^`CD`Mz1nr1?nU_Inl~;cpvgbJa5`haZg)ql5}0Su
z7tX$Sa}xI=LJISA*~b?_zWP6&I~C${SfCXm=-l1!4yfv2WT0b$UL3rH;Ay))mf32)
zM<TG<KvU49*+4x%(9(oPV>PcAP%CRSpwVhO4FuG(Wi2$dYaM)OG^B+#!W~4~@>!j%
zB?*Z-3c?1I#dTCvclhM9<)Yf;vSd6YRI=reU$SL9kZt9H#7s2hJzCdm(4uV^nzR@R
zhPhfcLcT(Z2+#Spv9~EAf#&Lnn~1xJ?s00c{R&OVXiJ8Aek8JJQ3wi!?Am6hy+yaW
z=>kPDohvNVP$=vwdX(&hpzRkV&=;bPs6jkG(B-b8c@4ZJ+?x#s74=YMRE!qWtV@d$
zGZC1F#6W9RvjMtEm>>eedzn$_md$R*2~5T(DtbrD4#o*=rVxN;07671ww^)9&T~-B
z<bgwY&14wxXR<fa>Zt4lCYlbZlpiR9Y**`m6WC5)s3<gi^$$p(u&Q%1WfawJ^C?!&
z?sPBI??ORb_A$kWfe1b=cL84U@<Rz(!EBYfoS>$jC!qvJMP@vsdtAo-l<q*9sQ|4u
z8DX3pIUIVRMHa^&XAl8B)**tyfFgcN3yS+UF!^^+@PAPvAK@%X2eew($teiTq4JGV
z#G{ArUm!hs?(rX({om;QzxAAbicrY?^9J-PA%2+US8&+0nzle#3)fLX3<15GWF#@4
zQuJ}!U{*A8Po^ouKtl~h35|xr2W2$diE$~2$<$QKPQ**cb0>y2;?1v?-O1dGW-%1V
zzV#fRs(bxrT6U+?X>F8p4D{%JM*lby4XN#RFVxLyXQKR+^C(0K<m7`y_tB=6b-JG^
zL-t1%qSO7fey5W#^!o<@wz*{g@rzkEA3p6Te65VYwh3Wvd}F{wzTn`|qP&5Dq6&`@
z<!I!Fxp&d=|9U53I4~DlD4+)B#<6Woh|m(qMDJ)yD9AL3o*L>2&H*?g7^9^Slw%{#
zbMM$vXbuA2v6*;8BGcdmB2<Z<pfYYQVzBbuw>TC=Axg%p@Zv$$tBoqYdT$<*ZFV;>
z022Y&-@SK;*4aR<O^Z&nh>j1Ga9<|LJY}%yhSz5KTDcCkZnlga(`PWv{fw>kWe<jK
zO(ENXp>h6LdthPNfo8NfqzZtJg!0NrI!Q*Z0ZkN5p#i6a+orpnLU}K>LP$iYK02s<
z4;dt)8$`~>ZWED`E{MG1ZV219yEX7*B4^LuIxRf7g3IgjDufzMr6|YNl4RnsC~5!D
zx1!c}ss#<rvc=|h#w1t>kRVD`QAsg~6FVm!FL7QnLF$4u8-*`GKM4~DOqDk_Hg;Fs
z)tYx?)eWA}S&!aR)Ce+u6A+l&s!)jj+|C)ZoFn5qXMCDtOa2s8GF+3}_$<G$_)6gm
ztrcsHpUw*WZmxLLTKiICrQy2wELVAbj&0RB`90KLRwq|oN$T`EBmdOYnx7{gtr8tb
z{c|kU;Gxd%nC}PtDM#oHoz>g56=a?S2gCD_gYQ2_L~Iyha5sP5S)EO~S@vp$&#mB1
zyGh*KjFr-}XPuw)IvTu|k{gbGY8N@ARF}l16)}xP7d%_=*lgtI_e*82!i#@h{o_pA
z?;OEu5w|$<Zyu0Xv6dI2McTwM8_aN6op)SXM%4;3+b|nCKesVv>y9I8ODm06hOO2|
zVgIVjg0BN535hNr5HD?y7Yn2`n{jT@-pC-_F7B4ohSJ=1Xm<^uvx2!eKwC`{?|+a)
zH#+8zpB})rUgM)bOZc{Tp)Kt4-?j0LjSf*mJkZ5knfE%YNm)grZ)aSzNM+aX%tUqC
z)5yjhypd}BKY(r=uSznvq3#@jQjPTj<~-@az;$~!#TvRi>o*hL7%|YHH`HWc95C{x
zI`gnP<?zJV@In~P)Hu~?eWLyN(xuK4lKw%3-_wpu9D^fv%9M)M-Ud>CTSOL(kat^U
za{A%6>rWS?b~bbZY@B`f_})Z~P&dX}ov;{>)t9LaFREmre{)=PjWW{X+lcWpw;sM}
z*^uBr0NM^rj4%u+@OAAW5>$4-el+0{&FyVE%J2Psm!9AJgk=ZZE}K%ei&O3R$JYQh
zB9B;Vg2@;_5GY_9j7f$jpVjHIBoIq&x@q;>`J++z^yIhN?l>3s<T7TpVW6tT8T*=f
zfVpCqOi?H!donl4l=&+T1B{0+unE`@iQd`F=$XR9YQ!70{<TUdd%eQrP5d&}y-%Ww
z7-TUS75<05C#}ynQsV_~5h!(w1NYPHK?<Gxs`V@%8oq!<1`q+ds|<Wy^dO1^{R4{^
zAZF<eN|T0DSXWba;*rsz-ul-+795KwS&C3^sgST4(u_S%268pl2+;|2<MjbjAZ_xA
zZd~mNJeix@tf}MDuzN9?$6()H5#SzIA>;#iADVI;;A0COJ9vwCna2YqH;I^`U)%}(
zf^(Xrl0d_U7{MjZtMti`PA5p+mGWS@28qlS9p%z&Q4;RRQ<`}&Nm5vz6h37&GrGv@
z{YuM3?14D_a0VF$#rvxcMm|A%9<D29BQ>bb-GdGey#CYx%qF<ay5Cb0_&FSfn@B)%
z4KX2d{OKlBS%~+G#WNgl_dDePhF+o-9knh|`0O%AnM?v~9Y67Q$pHvBfM5}7M{zl+
zJP^vOa+P?2&9;(Z)ElQRjD0=oJ>(s5fBWYj^MBSvypaDj@4Ol(0t6gofgS<NrAhY?
z^K`ywDP+`l!C(}vLN|{5I0&K9CUj$x_G#`yj%;WyI{%8;h-4-jTf9yL`oBcB{Pp-m
zlmf{k2y38L$lOTE6V4&zEirr#&yN=T)t4aUCC+J7mJ8gS#AthU1ofcb8XGbULyK&$
zx6;q_sbeQ~rKhvaA|4qheENMp939*Z-{V1s<;?PAoRdO%FE7C$O$r(+fHGr1l4(pT
z6#yfWzp6OF5@D>#-?~73T0LhdWS>GO;Cinis79A$VJc|Onw%BG$a4MDeO^#~^cp(R
z;vz2_56Ey@R-#VSyu5j+sDz(efW7Q8LmzLSMW5|Zf8FmrG~fRI<UnTQ;?#(ljWcmn
zJ#3bb`XCpVky|BYv{em&C6Eo%lnZ1qG$D;khn@iXVi`kU?1>7dhCMpafJStsqe+N1
zy3rZHz~%j%RPd+U0th|qLImHa<0=^aF*opzuQ<GmAim%pSp)s(3==iCTV(75UL-L|
zj7B9vA6^Ji@FA85$`z;9O&u$?GwqG!U)L4P4ktP6LHqI2k`Z1Q7vJX1BCng#K^Djd
zlj907E`4;h5F8MwRU4PKS#yR|vRFp-m;&`Q&;`^kA93}IxciHR<*INl`TvQ@AcMF)
zn5f)VwKOU$eIw<l*2H=lGh6{7==@#dbe;@t;x`FNfFtHY#vboS0-^S~b`8iC9U%HT
z5sRR10F?yPnxF8(*Ddl8zY7nMb;HSv{dTtQEj*)Iw}Pc<b*C-+p>V$#{N#f>tqK5B
zQ#+~-Z;_m~a+Aw=pucTUfcIF0|B!5-_H*h^>2UL@HOJ>QNqYB^_VuiT=wFTcHND3~
zW=>PuZ#?y^$xYdux+wq3y<Mt<e6(C``&ZnQpru{+b5>g|n_$UyrRKqu<8}FR@2k$&
zzWU0(b0P<|sW_$Z*UuOn*&VX$+V9)xmX`{@d7iobtepF2s!4h7hN7G8#p$)@@4L3F
zroi(<*Ij+;_-Ch<Y(6LSlyP~9fA=SQ>yl76!J;j@xfdq3hU&{(eybkUsZcAwuc->^
z#?Si{H=l4SeEX_Q@&m1+q2+$k?V~sSpQ%J}QY8bWb~#9OOZ$>g#%@=ac!+XAp8Azc
z^#tx+tsfUO2i4_bvm`N_-E<93CbwtUqyEC(vm5HNg~!HvI=4&McZAv{a7i0#HeYPn
zb<=U}%c|Fkb_N5X$o?jq{dRqx7*X4rj{+aSmvyajoP}NI!($EGvZ%4DQE1cHb-Zk1
z?)aUN`5<-8FuZzwc`W3|4SsPxzh(FDXndED*gDateT4GGL3~Y*$K>0$rMK^FQ^tZk
z&?oTa^J+j#?&$qkf%iMkytnL4ezwu1pWDT+E+zg&2Dm6;`wza%z={hqi^-H4n+Dh@
zjPWjRv(`}wrBG$)bVC?rfAH!py1ru3%-en+apRe!KaAL`XD2d>UYm04Y)wx+_~RKH
zu+P6fN9NnOtfdqz1-=te0rOD;RGf?YP@S9K)r`)Ky1#$;vHZ;ES3f?Cm+U4P&CUjH
zF@5{B-q`{#5xXBpjf7WLpnStjmsz%=N(b2F-rEjudYgm(fTOF`z~X!Ftl~W*Avk8k
zvW+X6eR=D)gYm(UjcPDD54acB(V(O%TF&fYU(!J+Y07XS&G4cZ`iN2J_iSU&(t5PG
zbt~O>nSzY^^qOTxdsL`5$OaXZ^yM)9Qy6}tsedB7k1Nm*uUi0G{ZX3)fo__>GcFz6
zO5vJn@Hdl`PXjzth*&jT$(SCEXq;X1#yqN9p;F(wX@Qj4HS3K}9vW^&nKNG9h-S@O
za^dmF-2|ZSRM5M-bKdBaE!jM6oI^LW5^f2VI-&uxPZWG1^rZ<=V}PC@zMZ1sXoCo-
z${#j<8o3t{IIl?9`~E4|zHO2(8K>y~h@wf<m-~9xEjQzF+~q56V!OtFICbmCp<I<=
zNzXTdwu=A*uqSh?&!zEU9@it4>X9SRy516z5x)Mbx`$y*SN^K)5{EG;of;rP_k8I8
z{d+m`Rh28*WS0iM9?A6EgAJ99R5uzRQ6*1NrYVE!0Lep?wm>dohFWhYH21BY6CFU|
z&;w7P7w^4=U>{LHKg7NvLDNBE!Kc^ul0w7LT8vs<wF}A9VF&JU=r>W}=gR32JRT0w
zVAL-Oy}eVM8u}%t@N4+%+HC2uJTiAUID5gj@w<E?s|3b|1C$IU(9&PFPQ8lr;=`=*
z;-|*G%a042tOjhnvTy-#`hbFa@uw|GAVi;&!D*#IvP2_kn$m6yZ4#%%CI#<@s{klg
zk@~l;z@-4}?kbG<rHs2UxkLooioFPl`V*C4A*ynysb1ivqcaQC+Ju0csEYR>q<$f!
zD-jA}wK^n?cBJ=@NxhzV&YW)j131JwNaFhTtT~xOf$eu(LUVc1M+;-ijJ+eMFW${&
z$RE;hwmf*OjjYFU1#u`@4%|h^2~8U?o8y#8!3Ewt{nDAcIT>8ECr~s|=44<AW>7MN
zR|d!lM+*qlPr&4L{E?o$=@xLO$9wPx*#2`Q5q?hh5q{wIXbD63L>}7FBh)yyryMvV
zu3Pa3@Z3Sd5O74T=IJf6+jZ*&H{M<lnk-7%o&=UQgojG(Mt(Rrf&Rg5IrwwHXb=Gp
zMAyx);!J*+?GiB>onG|{2M3e9qX5%<F#3J|1vGL}o!$`21CwMo;nnvj^z|A-gX%g;
zK1h)i@_0Cstm+;<@#qA?YEZWluAW#PiQ5M?%%jE#xUDyklZfW#ht}^c;yVcYW5(9G
zkY|@p=oVln#0?$Bh*6{8e(gdXqa-n#+6*Klz}?cI0UO&5Il)0cd|>nTHfj8&K>p6A
zAN&Ynj84qXKF5E!+M(WZv?YA~M17y}!7CAC4^|l|N0VW5)tolJLh;17PEz&|hC%gY
zMP3liOh!IgqX(Ae-PJq+juZ%g&K*LmlU>7key8puBtwrndcM*?kN<|xij=ClNyh4D
z2^~0SM>}$rz+hZ*IWKqk<s8cR=|;j1qhbtnJIpBHRc)BV$>b~SQyH^({cqrbS=sFk
zgjb@&`uZXSfZIh%L8D91xwu35D};v>EUUf;&yMPZS#A9^fAq8{P=&2|p=}>P#t{CK
z@Nt?%BYB##C~g646sU~~=TTe&{@8{95<<g9louO~BYqBbEu2}@Zw1vdo1$gRBrzF5
znB2#RTvE<`PRNd?^Ynj7!bVk4tfCe&Fb}r*;WZZ3J8=zcV)-r^yifgM?Eq;<@Gj{1
z@c@6H2$Z-WUvrN=(tU7Qb^&=A-<7;u)^cq-21k`V923nv+69~5Mp3w%5Ku?P?4JkS
zN7x8Oje~2|p{$&-x}CjCPit&yxK_V#^@aw|qk&s?DWv<_TP`l}zIAr1ozku0;(b4W
zXH=4V_RA#$>$8m|ix2l^sJl)DG~KRWZMe#Qs8DleZT|HRwVPe86ApeAY{4%s*UJwd
zd+@14-Q%Z^Uwa`ZCd&T)k=@jVuUFQeKGfq|R9Mt;qD7^wQnqn;<^EaAZ?;}j`D4av
zO{<y@U3VOsG~Hi+8N2pVTiZe)xAsczturk)&kXAYmeu`PpKn$9=-m^`g|pmfv2IdG
zpUjq7&9rYzzdc=8Vh+Ta0;O?3t|-D>=u81mY8gh{7E$gj?~nFJ^^Ny?wDealcwA<j
zd;M2I`Y!$%o285IJlzn>zxj(`Ii*A$(n--D52NHa;p<*bk`S`FP;7h$+N|5+?IGHP
zY(nD2T)kya{&6DR)#8**PvOm0rSFd%vlz6Cv8@L4pYN@1ZtmKsy7h74n!85VSQmpX
z_89QkY%}ru`LdIhh!T;ia-=Vb6yH6!#fQ&YT{2WXJOc8FMd&`ZD9R8#I}aNscKqJ&
zQ2X<#u*HM;BsM!)sCene1trpGXoOZ}L(A~ZSb9rM!$yl`kKC_H^2d-*FU=76LjI_L
z;kB;O{~{bVp}UaV?a2E;p1w!+46&6&phKr*i4xrT@V4{MrA<-G{dbi8`j#=x&um?8
z{WUDiv*7#J$k3GCvaXlxgdigWeEh_{P^s2=f923Xh4GSAs}L@3&y9G!u(RXEhy3%|
z;6KZ+x60o8ZVXXAv30G}#wPxXmBF|J62BL*#ST^-yaFBfc<jITW_bB76h`l{m$UC*
z9$n}9J3k~xzm&u`Pt7AJedew3*{6yJKcemFJ|6m!1a;on2%?m=dCAV~OXGv|v2$90
zy@nSaO`)$yIO6zGIm!FLweA38Ttu4pjZ(K+2zh*(G#z?j4tmX?sctV4%o;#Px|sMD
zpvF^>ALY2~5#Wflm`1tZwQa2CcmAH)-e2m&(_TmIGTaUCiMk6739PKQQ7ekd3P6zD
z0;LMJy6D>I*e@P<>l?LNt~2&-$QCBNY+7tC$oAJpPIdcmH<QG@ejRPzP)qy7!|jRa
zBGNjKzkE%<j3oAJOa>f=UI1Q-1Aa|27ShjltwFy#Z`T_;EanJ#D_@GK#mFUH8n1f|
zVa4s&a_mr56<7y0B&aXd<Bml{oWmDB1q3#Z7KhWHq@HeCIMsecj~Z=+LUkKp;rwlw
zD?Yo)M;}yL$Q;NO!+0_+(Lx=xaPA0!gCmW>A=T0QBy<Wa%9*gh_ePPYyZ&AfY`&Hm
zLEh!pM5V=A7k+_$1DqvnIj98ZSw!*2&N)k?6MkZK9vn00?@vN%a1U2f?|*-!c(<iz
zR{={D+#(dWN)`yg(O*5MAENIu(ctBI?a8sC0N01&T!>@9(VCBI!%>Arki&RW6?O7M
zU&gAzMU`EALduGO7H+iEi9$cB+HQF~0+$AO(00>wzbvWbgbnJ|OM-@g8UHk8i!6!z
z!5Nn^Z{%Pi`ls(YoFigvMW{qFiMzv$i4&0sm)AmBQYO(qBd!NO5y-$>csdzN&L_G*
zUjQb|Pq=M&cn2S+Pr-4o)~agXsn0ePde^{x!Yqv6#!l#e%6$Lryal&`+idz`9DJaK
zJA(5Y!6wmZ!I92jo#=(Q4mkM0BA*;7KqCuC(Pxq<SopCzM-sL{Luy=FV^ujh8b5?6
z%0O_mijYTjoi%bw){?fqIRJq^wBTE22HYecLNI`3QwN(M&s%};2B7n-^j9kh@uxU`
zOW@Cmt@!%4ju<@pp{H;?40Ry(Kp&b_F}wQwgk^{E8fzywx|q;L?!j*B5J5zK|7q4(
ztk;{sA1^=jos<8x=trhil8FF6bdzQxI*|Dh1VM|W&VAnK6?_EzSPAh0W}@TL{j1@q
zgpiw<&P@ThuZqhuH63><7Vkj7j1=|+_Xog}k*7c(_G_KfgZsh_?cjsNh}D|@SexJN
z(!Dt#`*pT~%vrXP04@EkQ8ctC3vVDe+&^%MTU#MwRbX{KJFEsjhQK}rPG{rs<{ZBb
z%|hpa@`0u2ME=4a)z9CJR7nr^g;pU=2Jv&2p)eG@!Z7-44a(~NEj-Gmf+(7N;?Q<P
z0}JO#Izgc)MJtU<k0SKZOCF7QVM0vIy+>v*!GR&sY|gYu0oN*RPA!<)$_HO&2t7dC
zbsqF(Y#@fMM!;m+m(Z5$yA%R$<LkE#X)|f}xUrL<@`(aL)0ycdz<tL9{S`g7JoZSP
z2MDmtL5?Gws>wuSqvrCQt6xBNbVQt<Xf2AiP{386*^M%8fMVi^4vC@>+!2UDq8FUt
zgZYrBatA*x5~z6e=6P@02AAy_qEEtJkL(CzsF>;Q43w6<qHzjI!M%ElK69}0{sbW?
z1o$l4qztQH`lDqJweLgXpnr+5KOBuXPsy9?l^_TS^MUh2jL@j<h3k>I&L>oDxp?f#
zlzr{3+B9-J?uJ$qW06tPEe|a|Sj9a%N`}I)$~ZDmcq0bg6;!WpO@3Yyb1gzW>&!Q=
znW6{Yk6Dpzw-StKJ?mqRv%^;IqU}f(8<)B6@5R~nJ&DUBXxicGb0V(z&Cx33rKu$?
zx0Y=!b6DeJch{T${yCj-;h1XyLB5qCk`LgEqQwrmp7LHwT25o-!MJt8pZZ;=TIMHN
g_1xGS>pVD?5cFV2hVA2LOWm9fl<H;dh?Ii=2a=6vTmS$7

literal 0
HcmV?d00001

diff --git a/sound/machines/sensors/dradis.ogg b/sound/machines/sensors/dradis.ogg
new file mode 100644
index 0000000000000000000000000000000000000000..aa53495a6fd6d4b0cbb929e96e731680cd47d03e
GIT binary patch
literal 36460
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

literal 0
HcmV?d00001


From 57c8c06e2aedd7c2adeb98530e0712c074dd1bf5 Mon Sep 17 00:00:00 2001
From: EgorDinamit <egorayn2003@gmail.com>
Date: Wed, 14 Feb 2024 22:09:35 +0300
Subject: [PATCH 14/49] Faction link cooldown

---
 .../file_system/programs/generic/supply.dm          | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/code/modules/modular_computers/file_system/programs/generic/supply.dm b/code/modules/modular_computers/file_system/programs/generic/supply.dm
index ea04f11667..1b3fb0196a 100644
--- a/code/modules/modular_computers/file_system/programs/generic/supply.dm
+++ b/code/modules/modular_computers/file_system/programs/generic/supply.dm
@@ -33,6 +33,10 @@
 
 	// Our associated trade faction
 	var/faction = FACTION_INDEPENDENT
+	// Point at world.time when we can set/reset the faction again
+	var/faction_cooldown
+	// How often we can change faction on the console
+	var/faction_cooldown_time = 2 MINUTES
 
 	var/prg_screen = PRG_TREE
 	var/trade_screen = GOODS_SCREEN
@@ -229,6 +233,10 @@
 		return TRUE
 
 	if(href_list["PRG_faction"])
+		if(faction_cooldown > world.time)
+			to_chat(usr, SPAN_WARNING("The option is currently unavailable! Try again later!"))
+			return
+
 		var/obj/item/stock_parts/computer/card_slot/card_slot = computer.get_component(PART_CARD)
 		if(!istype(card_slot))
 			to_chat(usr, SPAN_WARNING("Card slot is not installed."))
@@ -258,9 +266,14 @@
 			return
 
 		faction = faction_chosen
+		faction_cooldown = world.time + faction_cooldown_time
 		return TRUE
 
 	if(href_list["PRG_faction_unlink"])
+		if(faction_cooldown > world.time)
+			to_chat(usr, SPAN_WARNING("The option is currently unavailable! Try again later!"))
+			return
+
 		faction = FACTION_INDEPENDENT
 		return TRUE
 

From 24560e5c46dfc678194260662a186cf638ed22f0 Mon Sep 17 00:00:00 2001
From: EgorDinamit <egorayn2003@gmail.com>
Date: Wed, 14 Feb 2024 23:26:59 +0300
Subject: [PATCH 15/49] Grown plants and gas values

---
 code/_helpers/atmospherics.dm          |  7 ++++-
 code/modules/hydroponics/seed.dm       | 42 ++++++++++++++++++++++++++
 code/modules/item_worth/value_procs.dm | 26 ++++++++++++++++
 code/modules/item_worth/worths_list.dm |  4 +--
 code/modules/xgm/gases.dm              | 22 ++++++++++++++
 code/modules/xgm/xgm_gas_data.dm       |  2 ++
 6 files changed, 100 insertions(+), 3 deletions(-)

diff --git a/code/_helpers/atmospherics.dm b/code/_helpers/atmospherics.dm
index ec309d81cf..1d050f4dea 100644
--- a/code/_helpers/atmospherics.dm
+++ b/code/_helpers/atmospherics.dm
@@ -13,4 +13,9 @@
 
 /proc/print_atmos_analysis(user, var/list/result)
 	for(var/line in result)
-		to_chat(user, "<span class='notice'>[line]</span>")
\ No newline at end of file
+		to_chat(user, "<span class='notice'>[line]</span>")
+
+/proc/GetGasDatum(gas_id)
+	if(!(gas_id in gas_data.gases))
+		return null
+	return gas_data.gases[gas_id]
diff --git a/code/modules/hydroponics/seed.dm b/code/modules/hydroponics/seed.dm
index eed07e7200..762a2bc751 100644
--- a/code/modules/hydroponics/seed.dm
+++ b/code/modules/hydroponics/seed.dm
@@ -861,3 +861,45 @@
 		res.overlays += I
 
 	return res
+
+/datum/seed/proc/Value(check_chems = TRUE)
+	. = 5
+	for(var/trait in traits)
+		var/trait_value = get_trait(trait)
+		if(!trait_value)
+			continue
+
+		switch(trait)
+			if(TRAIT_POTENCY)
+				. += trait_value * 0.4
+			if(TRAIT_EXPLOSIVE)
+				. += 15
+			if(TRAIT_HARVEST_REPEAT)
+				. += 15
+			if(TRAIT_PRODUCTION)
+				. += trait_value
+			if(TRAIT_YIELD)
+				. += trait_value
+			if(TRAIT_MATURATION)
+				. -= trait_value
+			if(TRAIT_ENDURANCE)
+				. += trait_value * 0.25
+			if(TRAIT_JUICY)
+				. += trait_value * 5
+			if(TRAIT_STINGS)
+				. += 15
+
+		for(var/gas_id in exude_gasses)
+			var/decl/xgm_gas/gas = GetGasDatum(gas_id)
+			if(!istype(gas))
+				continue
+			. += gas.value * exude_gasses[gas_id]
+
+		if(check_chems)
+			for(var/chem in chems)
+				var/datum/reagent/R = GLOB.chemical_reagents_list[chem]
+				if(!istype(R))
+					continue
+				. += R.value * chems[chem]
+
+	. = round(max(2, .))
diff --git a/code/modules/item_worth/value_procs.dm b/code/modules/item_worth/value_procs.dm
index 3ef203f4d6..797f5e9366 100644
--- a/code/modules/item_worth/value_procs.dm
+++ b/code/modules/item_worth/value_procs.dm
@@ -91,3 +91,29 @@
 	. += length(allowed_spells * 1000)
 	if(!isnull(owner))
 		. *= 0.5
+
+/obj/item/reagent_containers/food/snacks/grown/Value(base)
+	. = ..()
+	. += seed.Value(FALSE)
+
+// Seeds cost less than fully grown plants
+/obj/item/seeds/Value(base)
+	. = ..()
+	. += round(seed.Value(TRUE) * 0.3)
+
+/obj/item/tank/Value(base)
+	. = ..()
+	for(var/gas_id in air_contents.gas)
+		var/decl/xgm_gas/gas = GetGasDatum(gas_id)
+		if(!istype(gas))
+			continue
+		. += gas.value * air_contents.gas[gas_id]
+
+// Mostly for canisters
+/obj/machinery/portable_atmospherics/Value(base)
+	. = ..()
+	for(var/gas_id in air_contents.gas)
+		var/decl/xgm_gas/gas = GetGasDatum(gas_id)
+		if(!istype(gas))
+			continue
+		. += gas.value * air_contents.gas[gas_id]
diff --git a/code/modules/item_worth/worths_list.dm b/code/modules/item_worth/worths_list.dm
index 7f3a0d3524..575762b498 100644
--- a/code/modules/item_worth/worths_list.dm
+++ b/code/modules/item_worth/worths_list.dm
@@ -300,8 +300,8 @@ var/list/worths = list(
 					/obj/item/melee/classic_baton = 40,
 					/obj/item/melee/telebaton = 100,
 					/obj/item/excalibur = 5000,
-					/obj/item/tank/jetpack = 450,
-					/obj/item/tank = 50,
+					/obj/item/tank/jetpack = -250,
+					/obj/item/tank = -50,
 					/obj/item/contraband/poster = 25,
 //MATERIAL,
 					/obj/item/material/sword/katana/replica = -120,
diff --git a/code/modules/xgm/gases.dm b/code/modules/xgm/gases.dm
index 902182cb92..568d52b571 100644
--- a/code/modules/xgm/gases.dm
+++ b/code/modules/xgm/gases.dm
@@ -7,6 +7,7 @@
 	breathed_product = /datum/reagent/oxygen
 	symbol_html = "O<sub>2</sub>"
 	symbol = "O2"
+	value = 4
 
 
 /decl/xgm_gas/nitrogen
@@ -16,6 +17,7 @@
 	molar_mass = 0.028	// kg/mol
 	symbol_html = "N<sub>2</sub>"
 	symbol = "N2"
+	value = 2
 
 /decl/xgm_gas/carbon_dioxide
 	id = GAS_CO2
@@ -24,6 +26,7 @@
 	molar_mass = 0.044	// kg/mol
 	symbol_html = "CO<sub>2</sub>"
 	symbol = "CO2"
+	value = 4
 
 /decl/xgm_gas/methyl_bromide
 	id = GAS_METHYL_BROMIDE
@@ -33,6 +36,7 @@
 	breathed_product = /datum/reagent/toxin/methyl_bromide
 	symbol_html = "CH<sub>3</sub>Br"
 	symbol = "CH3Br"
+	value = 8
 
 /decl/xgm_gas/phoron
 	id = GAS_PHORON
@@ -53,6 +57,7 @@
 	breathed_product = /datum/reagent/toxin/phoron
 	symbol_html = "Ph"
 	symbol = "Ph"
+	value = 12
 
 /decl/xgm_gas/sleeping_agent
 	id = GAS_N2O
@@ -63,6 +68,7 @@
 	breathed_product = /datum/reagent/nitrous_oxide
 	symbol_html = "N<sub>2</sub>O"
 	symbol = "N2O"
+	value = 3
 
 /decl/xgm_gas/methane
 	id = GAS_METHANE
@@ -72,6 +78,7 @@
 	flags = XGM_GAS_FUEL
 	symbol_html = "CH<sub>4</sub>"
 	symbol = "CH4"
+	value = 3
 
 /decl/xgm_gas/alium
 	id = GAS_ALIEN
@@ -79,6 +86,7 @@
 	hidden_from_codex = TRUE
 	symbol_html = "X"
 	symbol = "X"
+	value = 20
 
 /decl/xgm_gas/alium/New()
 	var/num = rand(100,999)
@@ -109,18 +117,21 @@
 	burn_product = GAS_STEAM
 	symbol_html = "H<sub>2</sub>"
 	symbol = "H2"
+	value = 10
 
 /decl/xgm_gas/hydrogen/deuterium
 	id = GAS_DEUTERIUM
 	name = "Deuterium"
 	symbol_html = "D"
 	symbol = "D"
+	value = 10
 
 /decl/xgm_gas/hydrogen/tritium
 	id = GAS_TRITIUM
 	name = "Tritium"
 	symbol_html = "T"
 	symbol = "T"
+	value = 15
 
 /decl/xgm_gas/helium
 	id = GAS_HELIUM
@@ -131,6 +142,7 @@
 	breathed_product = /datum/reagent/helium
 	symbol_html = "He"
 	symbol = "He"
+	value = 7
 
 /decl/xgm_gas/argon
 	id = GAS_ARGON
@@ -139,6 +151,7 @@
 	molar_mass = 0.018	// kg/mol
 	symbol_html = "Ar"
 	symbol = "Ar"
+	value = 25
 
 // If narcosis is ever simulated, krypton has a narcotic potency seven times greater than regular airmix.
 /decl/xgm_gas/krypton
@@ -148,6 +161,7 @@
 	molar_mass = 0.036	// kg/mol
 	symbol_html = "Kr"
 	symbol = "Kr"
+	value = 25
 
 /decl/xgm_gas/neon
 	id = GAS_NEON
@@ -156,6 +170,7 @@
 	molar_mass = 0.01	// kg/mol
 	symbol_html = "Ne"
 	symbol = "Ne"
+	value = 10
 
 /decl/xgm_gas/xenon
 	id = GAS_XENON
@@ -165,6 +180,7 @@
 	breathed_product = /datum/reagent/nitrous_oxide/xenon
 	symbol_html = "Xe"
 	symbol = "Xe"
+	value = 10
 
 /decl/xgm_gas/nitrodioxide
 	id = GAS_NO2
@@ -186,6 +202,7 @@
 	flags = XGM_GAS_OXIDIZER
 	symbol_html = "NO"
 	symbol = "NO"
+	value = 15
 
 /decl/xgm_gas/chlorine
 	id = GAS_CHLORINE
@@ -198,6 +215,7 @@
 	breathed_product = /datum/reagent/toxin/chlorine
 	symbol_html = "Cl"
 	symbol = "Cl"
+	value = 7
 
 /decl/xgm_gas/vapor
 	id = GAS_STEAM
@@ -211,6 +229,7 @@
 	condensation_point =   308.15 // 35C. Dew point is ~20C but this is better for gameplay considerations.
 	symbol_html = "H<sub>2</sub>O"
 	symbol = "H2O"
+	value = 1
 
 /decl/xgm_gas/sulfurdioxide
 	id = GAS_SULFUR
@@ -220,6 +239,7 @@
 	molar_mass = 0.044	// kg/mol
 	symbol_html = "SO<sub>2</sub>"
 	symbol = "SO2"
+	value = 12
 
 /decl/xgm_gas/ammonia
 	id = GAS_AMMONIA
@@ -230,6 +250,7 @@
 	breathed_product = /datum/reagent/ammonia
 	symbol_html = "NH<sub>3</sub>"
 	symbol = "NH3"
+	value = 1
 
 /decl/xgm_gas/carbon_monoxide
 	id = GAS_CO
@@ -239,3 +260,4 @@
 	breathed_product = /datum/reagent/carbon_monoxide
 	symbol_html = "CO"
 	symbol = "CO"
+	value = 5
diff --git a/code/modules/xgm/xgm_gas_data.dm b/code/modules/xgm/xgm_gas_data.dm
index 46c76985ab..481a411380 100644
--- a/code/modules/xgm/xgm_gas_data.dm
+++ b/code/modules/xgm/xgm_gas_data.dm
@@ -51,6 +51,8 @@
 	var/symbol_html = "X"
 	var/symbol = "X"
 
+	/// Cost per mole
+	var/value = 0
 
 /hook/startup/proc/generateGasData()
 	gas_data = new

From bf88f402115e53acdd2ae00963670cde66fa8840 Mon Sep 17 00:00:00 2001
From: EgorDinamit <egorayn2003@gmail.com>
Date: Wed, 14 Feb 2024 23:51:18 +0300
Subject: [PATCH 16/49] Market crash effect!

---
 code/controllers/subsystems/supply.dm         | 32 ++++++++++++++++++-
 .../file_system/programs/generic/supply.dm    | 13 ++++++--
 2 files changed, 42 insertions(+), 3 deletions(-)

diff --git a/code/controllers/subsystems/supply.dm b/code/controllers/subsystems/supply.dm
index cf1942974e..10c0c1a728 100644
--- a/code/controllers/subsystems/supply.dm
+++ b/code/controllers/subsystems/supply.dm
@@ -35,6 +35,15 @@ SUBSYSTEM_DEF(supply)
 	var/order_queue_id = 0
 	var/list/order_queue = list()
 
+	// For exporting
+	var/list/export_modifier = list()
+	var/list/export_counter = list()
+	/// Paths of atoms that are entirely unaffected by export price modifiers
+	var/list/export_modifier_exempt_types = list(
+		/obj/item/stack,
+		/obj/item/reagent_containers,
+		)
+
 /datum/controller/subsystem/supply/Initialize()
 	. = ..()
 	for(var/faction_type in typesof(/datum/trade_faction))
@@ -70,6 +79,9 @@ SUBSYSTEM_DEF(supply)
 /datum/controller/subsystem/supply/fire()
 	for(var/datum/money_account/A in all_money_accounts)
 		A.PayrollTick()
+	for(var/A in export_counter)
+		export_counter[A] = max(0, export_counter[A] -= 10000)
+	ExportCounterCheck()
 
 /datum/controller/subsystem/supply/proc/GetFaction(fac)
 	if(!(fac in factions))
@@ -382,12 +394,16 @@ SUBSYSTEM_DEF(supply)
 			if(istype(item, /obj/screen))
 				continue
 
-			var/item_price = get_value(item)
+			var/item_price = GetExportValue(item)
 			var/export_value = item_price
 
 			if(export_value)
 				invoice_contents_info += "<li>[item.name]</li>"
 				cost += export_value
+				if(!(is_path_in_list(item.type, export_modifier_exempt_types)))
+					if(!(item.type in export_counter))
+						export_counter[item.type] = 0
+					export_counter[item.type] += export_value
 				//SEND_SIGNAL(src, COMSIG_TRADE_BEACON, item)
 				qdel(item)
 				++export_count
@@ -401,12 +417,26 @@ SUBSYSTEM_DEF(supply)
 		if(export_count > 100)
 			break
 
+	ExportCounterCheck()
+
 	moneyAccount.deposit(cost, "Export", "Trade Network")
 
 	if(invoice_contents_info)	// If no info, then nothing was exported
 		CreateLogEntry("Export", moneyAccount.owner_name, used_faction, invoice_contents_info, cost, FALSE, get_turf(senderBeacon))
 	return TRUE
 
+/datum/controller/subsystem/supply/proc/GetExportValue(atom/A)
+	. = get_value(A)
+	if(A.type in export_modifier)
+		. *= export_modifier[A.type]
+
+/datum/controller/subsystem/supply/proc/ExportCounterCheck()
+	for(var/A in export_counter)
+		if(export_counter[A] > 25000)
+			export_modifier[A] = clamp(round(25000 / export_counter[A], 0.01), 0.5, 2.0)
+		else if(A in export_modifier)
+			export_modifier -= A
+
 // Logging
 
 /datum/controller/subsystem/supply/proc/CreateLogEntry(type, ordering_account, assoc_faction = FACTION_INDEPENDENT, contents, total_paid, create_invoice = FALSE, invoice_location = null)
diff --git a/code/modules/modular_computers/file_system/programs/generic/supply.dm b/code/modules/modular_computers/file_system/programs/generic/supply.dm
index 1b3fb0196a..a7cf554840 100644
--- a/code/modules/modular_computers/file_system/programs/generic/supply.dm
+++ b/code/modules/modular_computers/file_system/programs/generic/supply.dm
@@ -787,11 +787,20 @@
 				if(is_path_in_list(/mob/living/carbon/human, contents_incl_self))
 					continue
 				var/cost = 0
+				var/normal_cost = 0
 				for(var/atom/movable/item in reverselist(contents_incl_self))
-					cost += get_value(item)
+					cost += SSsupply.GetExportValue(item)
+					normal_cost += get_value(item)
 				if(!cost)
 					continue
-				dat += "- [AM.name] ([cost] [GLOB.using_map.local_currency_name_short])<br>"
+				dat += "- [AM.name] ([cost] [GLOB.using_map.local_currency_name_short])"
+				if(cost < normal_cost)
+					var/percent_diff = round(cost / normal_cost, 0.01) * 100
+					dat += " <span style='color: [COLOR_RED]'>([percent_diff]%)</span>"
+				else if(cost > normal_cost)
+					var/percent_diff = round(cost / normal_cost, 0.01) * 100
+					dat += " <span style='color: [COLOR_GREEN]'>([percent_diff]%)</span>"
+				dat += "<br>"
 				total_cost += cost
 			if(total_cost)
 				dat += "<b>Total export cost: [total_cost] [GLOB.using_map.local_currency_name_short]</b>"

From 10e41be5eee41ab0cf78dec0fdb07d6f405d59a2 Mon Sep 17 00:00:00 2001
From: EgorDinamit <egorayn2003@gmail.com>
Date: Thu, 15 Feb 2024 01:22:19 +0300
Subject: [PATCH 17/49] Fix issue with SMG mags

---
 code/modules/projectiles/ammunition/boxes.dm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/code/modules/projectiles/ammunition/boxes.dm b/code/modules/projectiles/ammunition/boxes.dm
index daba6ffe5d..3b4d0fec53 100644
--- a/code/modules/projectiles/ammunition/boxes.dm
+++ b/code/modules/projectiles/ammunition/boxes.dm
@@ -126,7 +126,7 @@
 
 /obj/item/ammo_magazine/machine_pistol/rubber
 	labels = list("rubber")
-	ammo_type = /obj/item/projectile/bullet/smg/rubber
+	ammo_type = /obj/item/ammo_casing/smg/rubber
 
 /obj/item/ammo_magazine/machine_pistol/empty
 	initial_ammo = 0
@@ -135,7 +135,7 @@
 	name = "top mounted magazine"
 	icon_state = "smg_top"
 	mag_type = MAGAZINE
-	ammo_type = /obj/item/projectile/bullet/smg/small
+	ammo_type = /obj/item/ammo_casing/smg/small
 	matter = list(MATERIAL_STEEL = 1200)
 	caliber = CALIBER_SMG_SMALL
 	max_ammo = 20

From 02b4062237b97803423ea6f90dca1b9e5b25f70b Mon Sep 17 00:00:00 2001
From: EgorDinamit <egorayn2003@gmail.com>
Date: Thu, 15 Feb 2024 01:42:49 +0300
Subject: [PATCH 18/49] Changes how market crash works

---
 code/controllers/subsystems/supply.dm | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/code/controllers/subsystems/supply.dm b/code/controllers/subsystems/supply.dm
index 10c0c1a728..85d4e71c49 100644
--- a/code/controllers/subsystems/supply.dm
+++ b/code/controllers/subsystems/supply.dm
@@ -80,7 +80,7 @@ SUBSYSTEM_DEF(supply)
 	for(var/datum/money_account/A in all_money_accounts)
 		A.PayrollTick()
 	for(var/A in export_counter)
-		export_counter[A] = max(0, export_counter[A] -= 10000)
+		export_counter[A] = max(0, export_counter[A] -= 10)
 	ExportCounterCheck()
 
 /datum/controller/subsystem/supply/proc/GetFaction(fac)
@@ -403,7 +403,8 @@ SUBSYSTEM_DEF(supply)
 				if(!(is_path_in_list(item.type, export_modifier_exempt_types)))
 					if(!(item.type in export_counter))
 						export_counter[item.type] = 0
-					export_counter[item.type] += export_value
+					if(export_counter[item.type] < 30)
+					export_counter[item.type] += 1
 				//SEND_SIGNAL(src, COMSIG_TRADE_BEACON, item)
 				qdel(item)
 				++export_count
@@ -432,8 +433,8 @@ SUBSYSTEM_DEF(supply)
 
 /datum/controller/subsystem/supply/proc/ExportCounterCheck()
 	for(var/A in export_counter)
-		if(export_counter[A] > 25000)
-			export_modifier[A] = clamp(round(25000 / export_counter[A], 0.01), 0.5, 2.0)
+		if(export_counter[A] > 20)
+			export_modifier[A] = clamp(round(20 / export_counter[A], 0.01), 0.5, 2.0)
 		else if(A in export_modifier)
 			export_modifier -= A
 

From 56ccd1358ac575012cca78132a3c252f5f626f3f Mon Sep 17 00:00:00 2001
From: EgorDinamit <egorayn2003@gmail.com>
Date: Thu, 15 Feb 2024 01:53:56 +0300
Subject: [PATCH 19/49] Fix gas proc

---
 code/_helpers/atmospherics.dm         | 7 ++++++-
 code/controllers/subsystems/supply.dm | 2 +-
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/code/_helpers/atmospherics.dm b/code/_helpers/atmospherics.dm
index 1d050f4dea..45a3acc802 100644
--- a/code/_helpers/atmospherics.dm
+++ b/code/_helpers/atmospherics.dm
@@ -18,4 +18,9 @@
 /proc/GetGasDatum(gas_id)
 	if(!(gas_id in gas_data.gases))
 		return null
-	return gas_data.gases[gas_id]
+	var/list/all_gases = decls_repository.get_decls_of_subtype(/decl/xgm_gas)
+	for(var/decl/xgm_gas/gas in all_gases)
+		if(gas_id != gas.id)
+			continue
+		return gas
+	return null
diff --git a/code/controllers/subsystems/supply.dm b/code/controllers/subsystems/supply.dm
index 85d4e71c49..9e83068f2f 100644
--- a/code/controllers/subsystems/supply.dm
+++ b/code/controllers/subsystems/supply.dm
@@ -404,7 +404,7 @@ SUBSYSTEM_DEF(supply)
 					if(!(item.type in export_counter))
 						export_counter[item.type] = 0
 					if(export_counter[item.type] < 30)
-					export_counter[item.type] += 1
+						export_counter[item.type] += 1
 				//SEND_SIGNAL(src, COMSIG_TRADE_BEACON, item)
 				qdel(item)
 				++export_count

From 0e9a63d6526238ed57929db21975f957baeffd1d Mon Sep 17 00:00:00 2001
From: EgorDinamit <egorayn2003@gmail.com>
Date: Thu, 15 Feb 2024 01:59:50 +0300
Subject: [PATCH 20/49] Fix grown plants value

---
 code/modules/hydroponics/seed.dm | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/code/modules/hydroponics/seed.dm b/code/modules/hydroponics/seed.dm
index 762a2bc751..8895e5eb9e 100644
--- a/code/modules/hydroponics/seed.dm
+++ b/code/modules/hydroponics/seed.dm
@@ -864,7 +864,8 @@
 
 /datum/seed/proc/Value(check_chems = TRUE)
 	. = 5
-	for(var/trait in traits)
+	for(var/trait_text in traits)
+		var/trait = text2num(trait_text)
 		var/trait_value = get_trait(trait)
 		if(!trait_value)
 			continue

From 1fbd555dd43bc2b0baef19de8c17c8f6c6495262 Mon Sep 17 00:00:00 2001
From: EgorDinamit <egorayn2003@gmail.com>
Date: Thu, 15 Feb 2024 02:13:06 +0300
Subject: [PATCH 21/49] Fix atmos worth again

---
 code/_helpers/atmospherics.dm | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/code/_helpers/atmospherics.dm b/code/_helpers/atmospherics.dm
index 45a3acc802..f5b593a5f2 100644
--- a/code/_helpers/atmospherics.dm
+++ b/code/_helpers/atmospherics.dm
@@ -19,7 +19,8 @@
 	if(!(gas_id in gas_data.gases))
 		return null
 	var/list/all_gases = decls_repository.get_decls_of_subtype(/decl/xgm_gas)
-	for(var/decl/xgm_gas/gas in all_gases)
+	for(var/type in all_gases)
+		var/decl/xgm_gas/gas = all_gases[type]
 		if(gas_id != gas.id)
 			continue
 		return gas

From c7eb310597c0baeac76e54bfd93d468a0a298f84 Mon Sep 17 00:00:00 2001
From: EgorDinamit <egorayn2003@gmail.com>
Date: Thu, 15 Feb 2024 14:10:11 +0300
Subject: [PATCH 22/49] Atmos tweaks

---
 baystation12.dme                              |   1 +
 code/__defines/supply.dm                      |   2 +
 code/_helpers/atmospherics.dm                 |  11 -----
 code/game/machinery/atmoalter/canister.dm     |  26 +++++++++++
 code/modules/hydroponics/seed.dm              |   5 +-
 code/modules/item_worth/value_procs.dm        |  12 ++---
 .../0_always_spawn/atmos.dm                   |  44 ++++++++++++++++++
 code/modules/xgm/gases.dm                     |  35 +++++++-------
 code/modules/xgm/xgm_gas_data.dm              |   7 ++-
 icons/obj/atmos.dmi                           | Bin 24777 -> 24668 bytes
 10 files changed, 102 insertions(+), 41 deletions(-)
 create mode 100644 code/modules/trading_stations/trading_station_types/0_always_spawn/atmos.dm

diff --git a/baystation12.dme b/baystation12.dme
index 9e229bc049..b5702e3068 100644
--- a/baystation12.dme
+++ b/baystation12.dme
@@ -3289,6 +3289,7 @@
 #include "code\modules\tgs\includes.dm"
 #include "code\modules\trading_stations\_faction.dm"
 #include "code\modules\trading_stations\_trading_station.dm"
+#include "code\modules\trading_stations\trading_station_types\0_always_spawn\atmos.dm"
 #include "code\modules\trading_stations\trading_station_types\0_always_spawn\engineering.dm"
 #include "code\modules\trading_stations\trading_station_types\0_always_spawn\eva.dm"
 #include "code\modules\trading_stations\trading_station_types\0_always_spawn\materials.dm"
diff --git a/code/__defines/supply.dm b/code/__defines/supply.dm
index c03b4a6a7f..48f6dbdb93 100644
--- a/code/__defines/supply.dm
+++ b/code/__defines/supply.dm
@@ -24,6 +24,8 @@
 #define TRADE_CAT_MEDKIT "Medical Kits"
 #define TRADE_CAT_CHEMICAL "Chemical"
 #define TRADE_CAT_CHEMCARTS "Chemical Cartridges"
+#define TRADE_CAT_CANISTERS "Gas Canisters"
+#define TRADE_CAT_MACHINES "Machinery"
 
 // As in - faction is a part of us
 #define FACTION_STATE_PROTECTORATE 4
diff --git a/code/_helpers/atmospherics.dm b/code/_helpers/atmospherics.dm
index f5b593a5f2..7768dcfb11 100644
--- a/code/_helpers/atmospherics.dm
+++ b/code/_helpers/atmospherics.dm
@@ -14,14 +14,3 @@
 /proc/print_atmos_analysis(user, var/list/result)
 	for(var/line in result)
 		to_chat(user, "<span class='notice'>[line]</span>")
-
-/proc/GetGasDatum(gas_id)
-	if(!(gas_id in gas_data.gases))
-		return null
-	var/list/all_gases = decls_repository.get_decls_of_subtype(/decl/xgm_gas)
-	for(var/type in all_gases)
-		var/decl/xgm_gas/gas = all_gases[type]
-		if(gas_id != gas.id)
-			continue
-		return gas
-	return null
diff --git a/code/game/machinery/atmoalter/canister.dm b/code/game/machinery/atmoalter/canister.dm
index 3a73dd94d6..178b4b45fc 100644
--- a/code/game/machinery/atmoalter/canister.dm
+++ b/code/game/machinery/atmoalter/canister.dm
@@ -174,6 +174,24 @@
 		GAS_CHLORINE = -1
 	)
 
+/obj/machinery/portable_atmospherics/canister/tritium
+	name = "gas canister \[Tritium\]"
+	icon_state = "green"
+	canister_color = "green"
+	can_label = FALSE
+	initial_gases = list(
+		GAS_TRITIUM = -1
+	)
+
+/obj/machinery/portable_atmospherics/canister/deuterium
+	name = "gas canister \[Deuterium\]"
+	icon_state = "green"
+	canister_color = "green"
+	can_label = FALSE
+	initial_gases = list(
+		GAS_DEUTERIUM = -1
+	)
+
 /obj/machinery/portable_atmospherics/canister/air/airlock
 	start_pressure = 3 * ONE_ATMOSPHERE
 
@@ -219,6 +237,14 @@
 	icon_state = "purple"
 	canister_type = /obj/machinery/portable_atmospherics/canister/hydrogen
 
+/obj/machinery/portable_atmospherics/canister/empty/tritium
+	icon_state = "green"
+	canister_type = /obj/machinery/portable_atmospherics/canister/tritium
+
+/obj/machinery/portable_atmospherics/canister/empty/deuterium
+	icon_state = "green"
+	canister_type = /obj/machinery/portable_atmospherics/canister/deuterium
+
 
 
 /obj/machinery/portable_atmospherics/canister/proc/check_change()
diff --git a/code/modules/hydroponics/seed.dm b/code/modules/hydroponics/seed.dm
index 8895e5eb9e..d5ce74fd8a 100644
--- a/code/modules/hydroponics/seed.dm
+++ b/code/modules/hydroponics/seed.dm
@@ -891,10 +891,7 @@
 				. += 15
 
 		for(var/gas_id in exude_gasses)
-			var/decl/xgm_gas/gas = GetGasDatum(gas_id)
-			if(!istype(gas))
-				continue
-			. += gas.value * exude_gasses[gas_id]
+			. += gas_data.value[gas_id] * exude_gasses[gas_id]
 
 		if(check_chems)
 			for(var/chem in chems)
diff --git a/code/modules/item_worth/value_procs.dm b/code/modules/item_worth/value_procs.dm
index 797f5e9366..e89cfd7add 100644
--- a/code/modules/item_worth/value_procs.dm
+++ b/code/modules/item_worth/value_procs.dm
@@ -104,16 +104,12 @@
 /obj/item/tank/Value(base)
 	. = ..()
 	for(var/gas_id in air_contents.gas)
-		var/decl/xgm_gas/gas = GetGasDatum(gas_id)
-		if(!istype(gas))
-			continue
-		. += gas.value * air_contents.gas[gas_id]
+		. += gas_data.value[gas_id] * air_contents.gas[gas_id]
+	. = round(.)
 
 // Mostly for canisters
 /obj/machinery/portable_atmospherics/Value(base)
 	. = ..()
 	for(var/gas_id in air_contents.gas)
-		var/decl/xgm_gas/gas = GetGasDatum(gas_id)
-		if(!istype(gas))
-			continue
-		. += gas.value * air_contents.gas[gas_id]
+		. += gas_data.value[gas_id] * air_contents.gas[gas_id]
+	. = round(.)
diff --git a/code/modules/trading_stations/trading_station_types/0_always_spawn/atmos.dm b/code/modules/trading_stations/trading_station_types/0_always_spawn/atmos.dm
new file mode 100644
index 0000000000..5b10a00d75
--- /dev/null
+++ b/code/modules/trading_stations/trading_station_types/0_always_spawn/atmos.dm
@@ -0,0 +1,44 @@
+/datum/trading_station/atmospherics
+	name_pool = list(
+		"FTB \"Deuterium Star\"" = "Free Trade Beacon \"Deuterium Star\": All the gases of the world in convenient packaging.",
+		"FTB \"Breathe-Easy\"" = "Free Trade Beacon \"Breathe-Easy\": Fill those corridors with fresh-fresh air!",
+		)
+	uid = "atmospherics"
+	unlock_favor = 9000
+	random_factions = list(
+		FACTION_INDEPENDENT,
+		FACTION_ISC,
+		)
+	spawn_always = TRUE
+	markup = 1.4
+	inventory = list(
+		TRADE_CAT_EQUIPMENT = list(
+			/obj/item/tank/oxygen = GOODS_DEFAULT,
+			/obj/item/tank/nitrogen = GOODS_DEFAULT,
+			/obj/item/tank/emergency/oxygen = GOODS_DEFAULT,
+			/obj/item/tank/emergency/oxygen/double = GOODS_DEFAULT,
+			/obj/item/tank/jetpack/carbondioxide = GOODS_DEFAULT,
+			/obj/item/tank/jetpack/oxygen = GOODS_DEFAULT,
+			),
+		TRADE_CAT_CANISTERS = list(
+			/obj/machinery/portable_atmospherics/canister/empty = CUSTOM_GOODS_NAME("empty canister"),
+			/obj/machinery/portable_atmospherics/canister/oxygen = GOODS_DEFAULT,
+			/obj/machinery/portable_atmospherics/canister/nitrogen = GOODS_DEFAULT,
+			/obj/machinery/portable_atmospherics/canister/air = GOODS_DEFAULT,
+			/obj/machinery/portable_atmospherics/canister/carbon_dioxide = GOODS_DEFAULT,
+			/obj/machinery/portable_atmospherics/canister/phoron = GOODS_DEFAULT,
+			),
+		TRADE_CAT_MACHINES = list(
+			/obj/machinery/portable_atmospherics/powered/pump = GOODS_DEFAULT,
+			/obj/machinery/portable_atmospherics/powered/scrubber = GOODS_DEFAULT,
+			),
+		)
+	hidden_inventory = list(
+		TRADE_CAT_EQUIPMENT = list(
+			/obj/item/tank/jetpack/ascent = CUSTOM_GOODS_NAME("unidentified alien jetpack"),
+			),
+		TRADE_CAT_CANISTERS = list(
+			/obj/machinery/portable_atmospherics/canister/tritium = GOODS_DEFAULT,
+			/obj/machinery/portable_atmospherics/canister/deuterium = GOODS_DEFAULT,
+			),
+		)
diff --git a/code/modules/xgm/gases.dm b/code/modules/xgm/gases.dm
index 568d52b571..282c149ff1 100644
--- a/code/modules/xgm/gases.dm
+++ b/code/modules/xgm/gases.dm
@@ -7,7 +7,7 @@
 	breathed_product = /datum/reagent/oxygen
 	symbol_html = "O<sub>2</sub>"
 	symbol = "O2"
-	value = 4
+	value = 3
 
 
 /decl/xgm_gas/nitrogen
@@ -17,7 +17,7 @@
 	molar_mass = 0.028	// kg/mol
 	symbol_html = "N<sub>2</sub>"
 	symbol = "N2"
-	value = 2
+	value = 1.5
 
 /decl/xgm_gas/carbon_dioxide
 	id = GAS_CO2
@@ -26,7 +26,7 @@
 	molar_mass = 0.044	// kg/mol
 	symbol_html = "CO<sub>2</sub>"
 	symbol = "CO2"
-	value = 4
+	value = 3
 
 /decl/xgm_gas/methyl_bromide
 	id = GAS_METHYL_BROMIDE
@@ -36,7 +36,7 @@
 	breathed_product = /datum/reagent/toxin/methyl_bromide
 	symbol_html = "CH<sub>3</sub>Br"
 	symbol = "CH3Br"
-	value = 8
+	value = 6
 
 /decl/xgm_gas/phoron
 	id = GAS_PHORON
@@ -57,7 +57,7 @@
 	breathed_product = /datum/reagent/toxin/phoron
 	symbol_html = "Ph"
 	symbol = "Ph"
-	value = 12
+	value = 8
 
 /decl/xgm_gas/sleeping_agent
 	id = GAS_N2O
@@ -68,7 +68,7 @@
 	breathed_product = /datum/reagent/nitrous_oxide
 	symbol_html = "N<sub>2</sub>O"
 	symbol = "N2O"
-	value = 3
+	value = 2
 
 /decl/xgm_gas/methane
 	id = GAS_METHANE
@@ -78,7 +78,7 @@
 	flags = XGM_GAS_FUEL
 	symbol_html = "CH<sub>4</sub>"
 	symbol = "CH4"
-	value = 3
+	value = 2
 
 /decl/xgm_gas/alium
 	id = GAS_ALIEN
@@ -117,21 +117,21 @@
 	burn_product = GAS_STEAM
 	symbol_html = "H<sub>2</sub>"
 	symbol = "H2"
-	value = 10
+	value = 5
 
 /decl/xgm_gas/hydrogen/deuterium
 	id = GAS_DEUTERIUM
 	name = "Deuterium"
 	symbol_html = "D"
 	symbol = "D"
-	value = 10
+	value = 12
 
 /decl/xgm_gas/hydrogen/tritium
 	id = GAS_TRITIUM
 	name = "Tritium"
 	symbol_html = "T"
 	symbol = "T"
-	value = 15
+	value = 12
 
 /decl/xgm_gas/helium
 	id = GAS_HELIUM
@@ -142,7 +142,7 @@
 	breathed_product = /datum/reagent/helium
 	symbol_html = "He"
 	symbol = "He"
-	value = 7
+	value = 5
 
 /decl/xgm_gas/argon
 	id = GAS_ARGON
@@ -151,7 +151,7 @@
 	molar_mass = 0.018	// kg/mol
 	symbol_html = "Ar"
 	symbol = "Ar"
-	value = 25
+	value = 15
 
 // If narcosis is ever simulated, krypton has a narcotic potency seven times greater than regular airmix.
 /decl/xgm_gas/krypton
@@ -161,7 +161,7 @@
 	molar_mass = 0.036	// kg/mol
 	symbol_html = "Kr"
 	symbol = "Kr"
-	value = 25
+	value = 20
 
 /decl/xgm_gas/neon
 	id = GAS_NEON
@@ -192,6 +192,7 @@
 	breathed_product = /datum/reagent/toxin
 	symbol_html = "NO<sub>2</sub>"
 	symbol = "NO2"
+	value = 2
 
 /decl/xgm_gas/nitricoxide
 	id = GAS_NO
@@ -202,7 +203,7 @@
 	flags = XGM_GAS_OXIDIZER
 	symbol_html = "NO"
 	symbol = "NO"
-	value = 15
+	value = 10
 
 /decl/xgm_gas/chlorine
 	id = GAS_CHLORINE
@@ -215,7 +216,7 @@
 	breathed_product = /datum/reagent/toxin/chlorine
 	symbol_html = "Cl"
 	symbol = "Cl"
-	value = 7
+	value = 5
 
 /decl/xgm_gas/vapor
 	id = GAS_STEAM
@@ -239,7 +240,7 @@
 	molar_mass = 0.044	// kg/mol
 	symbol_html = "SO<sub>2</sub>"
 	symbol = "SO2"
-	value = 12
+	value = 10
 
 /decl/xgm_gas/ammonia
 	id = GAS_AMMONIA
@@ -260,4 +261,4 @@
 	breathed_product = /datum/reagent/carbon_monoxide
 	symbol_html = "CO"
 	symbol = "CO"
-	value = 5
+	value = 4
diff --git a/code/modules/xgm/xgm_gas_data.dm b/code/modules/xgm/xgm_gas_data.dm
index 481a411380..6f97027501 100644
--- a/code/modules/xgm/xgm_gas_data.dm
+++ b/code/modules/xgm/xgm_gas_data.dm
@@ -32,6 +32,9 @@
 	var/list/symbol_html = list()
 	var/list/symbol = list()
 
+	//Values
+	var/list/value = list()
+
 /decl/xgm_gas
 	var/id = ""
 	var/name = "Unnamed Gas"
@@ -56,7 +59,7 @@
 
 /hook/startup/proc/generateGasData()
 	gas_data = new
-	for(var/p in (typesof(/decl/xgm_gas) - /decl/xgm_gas))
+	for(var/p in subtypesof(/decl/xgm_gas))
 		var/decl/xgm_gas/gas = new p //avoid initial() because of potential New() actions
 
 		if(gas.id in gas_data.gases)
@@ -83,6 +86,8 @@
 		gas_data.breathed_product[gas.id] = gas.breathed_product
 		gas_data.hidden_from_codex[gas.id] = gas.hidden_from_codex
 
+		gas_data.value[gas.id] = gas.value
+
 	return 1
 
 /obj/effect/gas_overlay
diff --git a/icons/obj/atmos.dmi b/icons/obj/atmos.dmi
index 4d51b4e6f8c2367daf9b841f9b23d31a76303727..dd9990df312da292e36482a1e5a93aa291d99e9e 100644
GIT binary patch
literal 24668
zcmbTeWmuF!7dO6ig96fxAc%l;r*wx1($XOzUCSaNDy4LHcQ-5{-Q6YK5=$&B{BNG;
zd9UmJ@_zY$kZbR`XXc(cXHNaj8GmS~$>U*DV1qy)JVgZ=Ef5Gv68J}li4L^%SQP&Q
z9*TY5>$%BTx|+M#I=k6AIf6i5sd@38jzMp6zm5GP*7Rl9Hegmw{$pv!2OCfK$dLX^
zIQ>RS4OCUI_I0w{;N!BIp(OlaEixiTWnl>JUSnQz%<Kp<vc(&k-|QBRT-5UE;g09n
zRFL|}vIY?x6RQkYMHTp=`s&L|Ww$rxVS<Z{j{y$|LW9XlG`y53(;>m=Oz%GK`a~n}
zs2nCY*)W3u8ful{9P#(CcfX{6mEmZiNs|T_Q?OBwmPmr$vH8lPhVY>WHz<5`Bs}q6
zLq|@u=fFoTm)ukE;A46n_?i0aA*Hl30q$4(j+-jY##|fY4SI);n_TRQX{^!<s((VM
zt4Y*~=Prd%oFS!;@31Fg1kg1)#MZyFh=oml6jp`|V(JLPUmeV13cSBw{hRLQwDD}3
ze|at>=XGl6I&+oieF1@T&aw5Y<n|&MInl9iyyNQE*?K0kU@@69^~g!@H*C)JNYkQz
zwT48`&9L&=<C*=K@zzC-`^jy5USMF++j^#2x2(l{+->^p-57~d5pZ|-Z>m3Hry;cR
z!{gj$g^T)vPlFji)Cc6N?_2A%#Kof^5FJQSM(Vv+>QS1v;fw8uzO_&tDSk^L!)H@6
zt^!;MwJJl^wRCm7s@k|ir6yKks~(3RJZ6sc?W~e_qH7a(My8kb-&~`4^2<tT@*^RA
z@`vE^q#~$H@iRqF=fX&LhedfZgm`vuQ%`FS>m8Q9Nzy%=mQA&TBcmdJ&CGv>&hiZN
z;7u0@4OuEpmMl|}uCN9Zg%}gnon!>B(q!%HNS(N~LzWZN|Ev2)XgTA_<4CAliQ`+J
z-nnOu)ed+07OHBWzn*~cpy3dwHIIqkK9(jA@g3v=$4gWty2>!4dZ#6ic42pWoWBoi
zsWxT-mOFEmM-IBCocO$*+!r`}i>U`JMALWY4JeWE4&vHINtq;jp`ekk$m<M}MuXph
zQLXQrFiWldjfNgb;t)=I-~U#o-@5a`arh#!>pJ#^poK>ekxWZ>;vaVUCQ-<lBF`{U
z<1Gj6@_;oP*-O^UE<><r@*-Ct^4d%&yxdS(O9*~<|2+vgLTDH@LgUhofoK{XabgMK
zi^sATWSreYB&=)pU>@!v=7{BMk<~joW!DdKOA}quoA!9J%J&nDy1lou=hpbLDm<xu
z|N8-IKLaAT&z$D*_1eVyCj4<0?BIivN1lfli^{MWl)zMayJDKkMc7a|J!%ssx^orB
z%)1|V5ZAxo<$fL5A(hw5Jwt0#0nOZRSKz@d=bj<E*AN;nKc*0jG<Uuim|4M-lPbC>
z`oRft7_T_|4h;O#O#yJ~+4~n<#A*OLKL#UVqXr6xy_NhbsbT&6|IN}*0RYcO8E`fJ
ze-ASJ&%yCc66RH^ezj6c``0aUJmcX{j>rDkJ=`F4j{xjbYy_9^6Ca|7YieGtJT?mU
zEkoo*AzV!D>)%Wd##wBo#7scahu%r5F+S|10YB!dc?CN6)kR;Aw2WW`<QvmiO{I>E
zV3?l&{yd`Uyf>wt=d(!)(%_u;5__9uZ(DT!$jNNy7^tbKsdaaCjP&oE8}jJtx_t+^
z`S)o=bzF1Ige)_2Hs^60lJ~aHZV}SrOQb&**7?zzk4Fl8k@AIM&Ti4u36@=yfbs6J
zH8Tn8AjM>3P`5PS9dfibjf2m0xYC)Nl-YhuE#fh3xA^@#W@~Hf&1RGYFOQVGI7Abb
zWch8YR$}+%X<5o38-c`Yuminx;cFhXE$-u?nGZ1Qa7qsLV=Hm#($^tuCL4EA1qL&a
zn;zX<A5OpHX9)AY$SR*Y*qDUhjdPLj^$Grj=bsBwbe6`f#M{baAHh79ElhDLf#v*m
zEn*K;0;u5Be}8p{E<M~UY0f{lLEMKRVLM{(knT<l4UC-B>esLcMH#PNStiI1EFO|R
z3ey(ww;idK@F^-P-oW9DX&>yVVE-MH{C7C090pp7TbFoYvPsvId?4_})l6d(eqJ|k
zgSz0A74R;(80A6r%ke#(Y0L9muSfM?ej3`|o}Qi*0*<)zj;Kw}8-Y8TnK|jux00QB
zogbAFz1YJ#M`4*a$vtj|%H<Oi3p%a{SJ^xj@#qmm#PYiI*B&<s6OQbl1e9u>-jC&A
zuIIbuL1k9Q(QSuc99K16Z@apr@oB}wp->4@4#P^nByw^Ryz1A22e&vV#LLg9-mvC7
z&05ah@mD81j=f9xlm_FC+t4_1_epL0Glr_CdVOb<ur6?D`}&>Yxm3DvduR{;q^0{>
z(CJ$8P)th7P)q{nMO=hi0&OEMW$m2j^nZ!Hm*P$ypgi$yDM2WIV<wo!nscV`LA&pI
zy6_<;!T##O9&z8JAqea+(5L-#!`UIhxPuWRu!tE$$f|?*{mit7#oS>7$iFeCY6lMM
z<uv`0;>bUB`>=wyMt;aQ=d{)?X2Mquex!7;kr_)D<NMEtsk6}PC=hCu7hx9)tnBpK
zuj>-qb86UP48`~kam&`Qd^BBX2IiCoIO<E+I)_5AM*i2{d^2|&Yn4m4ZK<zvy4=cG
zj>2p^ORf(ka?{cxL_<R}g!-?T`EYV_c6D{}9^xXFUB?uaIR?v`Uw|J_+LUj%V$@3y
z0BTO_=i^62=eKxs*C>pFem<wjS$m!6!=3=hAV}|YsaA<u5b;Ak&z4>E_O0fuZumGE
z;=@Kw(=EVDybc0S-tuTHd_cap_$`EGB}P%VSjMT~WnFWVT1{6yG9W+e(u!y-Iayi7
zjg5_$FJFROh;8r@a#736h5&zYB>^&&SOjW^$|;(h+(c;R$RTBtWpVY6K|W``0u3c_
zS}&)0egr>c<7;Rfe$*ICxb5*Su1YekZ39RYl(xcq_)P4SpO%Dax2V_Z=f)MjF~{=m
zY5B*{JwQKb+#mYQ%!hM161h9BKHpUf;yZk{(hl~Gj*fnBUK5g#K#GKfl<XF=0EI}@
zSdExn?2LpX)*j#FPKIH&i8Y<J-`UKSQ`_3w@{e)i0^d(EN$oSW7GQ4j`EW!QaY@Rw
z`y~S^LX@0xAOJhh<UJzc*x4b{Bf-k25r0XW^V|Qd;^NB*FWDSY%xgE?wAv;VK=x2k
zQJ;~JSb0FdG$a5t7!iIa;JBPPk|HowZY07-SSzcqPmv<v^x=+O{~e&RKJe7As2|V8
zY1uVl81fXHx0@&l=j|E35LX%2zJsNW@RZ#R;$nAQ{I=zFT20lW6B0_ggvu56eTd7Z
zwJt`$l{oYCRCbBSRlsGr+CN8i=;`UD_!?V9FEaWjJ)R~qro1Ba>=TvU?2Q1(0PS&u
zTNPYt`#H>;|98_R<fjLnq&+U0E|oQuv<XRzo8{jSG#s(SMHScaB(9aY^Xv12=N6lA
zKb_gLTXBe|xZ>|Ifj0^?apV8=u^dtatmkkTk@m!V(Uf_xg<^eIfbM^N=DdDF?vOzM
zOIYEz=H9*)eRz{`773ne9IDI8fW!uwvnj_gs|tFaP=Np**;!b#HxCXB&<hC60pqz>
zXM#8ZVxRxD#5HLOZx~W>=vsax%bhw+ZQFb_uD|=Ql2CDhS^TYg)0;rPM%r^r;(M<S
zG?@Jefp;l!XEnWwiL$t`Sa5Ev7$qGC<SJh`Y#)yo{2<16ywrg9_ELQ)hv_J<iX#dF
zJF}W}S{F7YoNG_~erU9b#PV>A6UHcRh@q0b74~EJcymN#sg^u}iiD(hqdU}gG8YT9
zJDOG__%{c9cXfZ(N1MF&`ag@Q?3><|a2kBHJ^zp9)qAb=Y7di{_xev=ksls=``xdw
zrdvU8ZyRw+6>}pR+Et(QSK;*r#YBc~hu-=7wHd!U$q>R)^0<(i9^f1X6-N!y0am+^
zVPIgORz+C#tusF>wA3Ixk7RT3IR!<rTrlYLbByYQ*5U!PfIx$s%G<o!`9G*-GcPC^
zpT;5gC>DJ2wI`01^;hK!2XQK-t1Ki1N&HH-Tg>Z;o?x{tI2z8<D{g0L;!nzK102BR
ze|y&i?}e4`_KTfj3zj7`B5!t9m^~xTzRWlZ7ve;}B2o)px2`qfYPOxqFIp16|M!kL
z6*Fr*N3qV*5%KVK@U0+e!a)rQV)kL*v3g_a?!HIQRH|$z?5`i7fArtXvfwfL3%}}Z
z@hP+t9H{e;GYCLxZ`SCjB}unx=>XYve~&65Qs*xp+hSY*+yQH|nBoRd(DM8SpnLKX
zw5Gp14~|mJ5NCMpvvb2$=|^&~$PxMf{wO;kt^17SzWz_&=QK2qRV87QZ~y-ND-E2n
zCnMfJGLrYP#!AN#34Lh{Vx^hhd7(QzzPkG)^(9r-jtz~6bN#VOKUz4VerRxqkz61z
z@-(bnlZRN4CY*!i=rvYNG{U@*j+2&7;cH(Myps$cMetcpF$#NH1Fnc|rzR&G{SnQ=
z=h9rt>_5BXydPc&efW=X&o4y4m}E=m4tEPO$&6x^#qQnIWSaWH7qOQ?X~!wjD-_qa
zEf>&m=?7gaM>vbzbtP0pyj)H6=oCLQA6jt))^R@JO^il4WEC<M?hZ3^<5<ZV_l9pw
zieXEto|bkh{0ayFaTqoK$x}{Hxnh+grJ@QC3&ZK`>;&1t0|JUi!t|!!#BQ)9eDr(3
zj!%C~d%O+Ewwk33{$qg|s2{;ikKAu^6vR}$&$`r6iLa1^_cE_GF-g`tc^I9iETj|$
zt;Qb(4f4OGI?EbHcjZ47re)r-<)#c@`n4~aR28S{Uhx^F`#J64=eGcRSm0msnQJ<O
zLqk!jt5`RE;~Y!{|GrDYW9H<H3Jyk9wF>e+>mfb!-#77)c<dZ?-157`r-j^CjVzeT
zFn-UR1yo_wzGFK2^E7{%Op|Hyqoe%fj1PW^iG9HN_)lx0$#mP;nh~Ew8SpJ;$9MUZ
zGH&qaS^k=HO;e^b_q7c4^k4t|a}N5hCc!Yxd4P_JTDVhy=Ez#)2S{n_&4dUp@bLo=
z`!N$Pi3Z}O7%AY)Px~|rwj}XMDG$FH%n7TZyelP6c`a@2q+7#m^MiosV(;j9@PW#K
z#LC5SqNfx~KYOn)Nw8s0TJf*A>SbG7+emUI6CoktzpE?eSAB4XovTSkShQWB=b}Oi
z%F|~r721NuGK`78qSd84Wz)ofTJXx0lN7~i8mg6gI78~jL^+T=DD|zKgcyE2oC+lG
z$%Fqzpw2tkjIuX_o?V}BChtX2i+n&n;^%d8YO1-4W>V&z&`p0d$-0_hy;6wF(f0kX
zTlO^?>qwUELR&*++_;uo0<8!2`2T*C7lZsS5NPhi1mXte5DF<XbMs^DcM^9;JgVI$
zA)1;oN0TNr0&DbeKEy2=^4I!#hX5Yy(b(B?Bb<P!sN0@T)iv8^za}OoqGy@kzP5|z
ztz3BzqTsV}<R95C8L-nYQ+3`MPMS10+`{^??8pUutvg}sU2Appt|}Sg|5Y+m%wq<r
zx3{-=hm@Myf$w;+&i?G|>{CYoQnIWxe5c`JTDrvcuJ&h^X3$RQve?HOg}40tANZgG
zH1I{c#fDk2uS@Jnt&1LQ-%-&5_0>Xtb^uG^=W%y)tGzs|fPOeGep3m|K~i?#po74Q
zYGc4VE;V|k0bcdmvroy8xXRMoM|hRRZ$8IFjm+($&N?o_(EiyKY1(C8F+Z&f{OU*_
zs~`>mg5u*|M-;;vD?IH2wK|cqSt`*-YSsItdBCau@WyCBjI+K{qznj}5deWklKFDv
zqi6z-<(|o}8?9xK_@7IX8AQ<iIHD8NPO18iJ<^ptS>WW<;lbFi=J6$3MimB-_6iuu
z%E~&N%r|63ENDOb<{KX6hix1l<^sAP)m`g}*SR7;b`Tf=+Pja;{hZ4#flATQZt()*
z5BibF4F+lrx0^Eh@;~Tjkvk(K0XkgMiu9I#tSQYG@wnp(CH^|aLqz5;ls>~hndVDJ
z!*9beHqdyu3^^jR9IDpenm_KN<B-0?X+$FDu?k16blcaOpx`KsdoTFD>2aP5#6b@G
z_HpMEa}^3ONxK}(9)7W=fJ?#qJvEi;Q*fYu*vh*N;7kmSJ+Eg>`3_-lmJvw&dYoU~
ztZ9(4pZwWo$o%&O?;ON_g~$WqKY=H=b91(tDgj9cbQL-tMJ`2_q=rG|!gHUevyv+0
z3Th(zT;e72dHyXxg#3@zHVCzGj4_D3nlU<>Y<$5s);Ugrc|T*a`?qu<*L>bj4@LpY
z&A!~D_kRVk%W@3Kgm$<l$eY8t%zG8s_4~_qbt{awC-am&WCNYV#TQFIwzuE2rKYC3
z?OZ``N4Q5$U`t#(Fl#@K!<3~*xb*QQ`$&7W*O}RWyVwh%426^P3?D!dS4)CILi@wV
zkn0sszA4)4L0_%!Vf)!~z3|<N1k$$l`)m6bvkm&Fkr5GbBpinQ7h@6x9l(Bu`JML~
zu&u4FOZFiMm@Yalna2L7PdVAlioZ8<=H1?xd%pj#lRcyxGjkawJ6bYX**HJ1$9fg^
z@Fw|^5=68kfo`rcwcmhEns%i<1*MfpoUeEH)msL3<qjOlI0{}H$slyR;d1t@OeZ_@
zR*LF7eeu4qinCwxx7R}h1B$x(`me>dHoBYdKlgg^@d~!TW-bIe8t`q6g?Uqraabs5
zI}su1RoiaQKH~$;|EEWpLBr19o-hkb%jbX-n@vkXA_oK;Kr8?Mrr>P5Bm@F*^Pzb5
zKfS%ldwspV=YWCbcG*%0+AJ{(+%)!9pCLH7CVqz)a{*%W?Cfln%L3IDIYUD#rifDk
z!S-xs8(r#kfJ}NdRuOie>-QFFUR^J{Mp><xq1UGjc3!Ljo_-h|)Vb^4$8MJ1r|Z5&
zugWbC==txvO3q_ud-gjwa(Mn+wk%F>I5{J^{8#(*RF*pT5_Lb#uXg^wVWQtlcRMGS
z+3cD*I<iI#J|<+SQqK7twa1Tjr?<Ce#Pyc6cakv5gNKtWmTSq1(wxL1t&FrsP9r7N
zPcSbn23S8rWh)-sQ1MTf2cxWAZ8kSYGe|GKV_#VAbh_nx;#QLh9hi^4H1Ru=E&9~`
z&9KQumJiy|A&HEFBIJGk5`=)mP)wKV9bPgqZ5$pB^@NdP;oxj`d_{3Pm>wwiz8g;3
zili3F{fdH7Z9Bz0bKmT?FP*?)q*rBzMyKv3Y&Xq9NJMnIonZ3)`*+i|cJSrtT86p=
zBKCUKH)_t<cO<`ED8|p@K|NZ&=4z{ein(x2Tjn-H2L{Z6Etw-1(dc(uJq?9G>OU`Z
zrI+|SAE@8^iViO{Ch<ljk2dOBEl$q~D7N4_1Bwd>8O1*2K#z_-2h9y~={x_s_YA&;
z<pRRSd<UrYNJwHNk$g0+F)g6~K3z`BKzb(QE@`I|*171J?_&2V_G&Xa?YGIkQlUkX
z^T+|G@>yRLt-u0wXW$26W^x8s1$?k1q75MVoC$=zj=)X@V1&$UOqj&lt|fUcSVGx2
zy(+?93^_Hm>Aijzz#cn_O$9DT{cyl;TMu7GO8vR5-A!<(ys_;@->*C4sy+L%8!74i
zDZMfGO;9ZlLH-b2`~<aG#I>q2xUkX%yr}><7$&g*rWU?GT|^W?!S}bpU7{*WWo>RQ
z0bmgbhzxNjX#|}?AQKalgPD@PI{P`?Y=upQFMW~JPfPB!hQM@oAP+(%AIknF)O{&6
zXi)QU@WXxn{JGmc!<cBB<q!!UI0*}R9H8($0x{6vp9y(<uuFd844u{!U!JBBAN$i=
zZMLl>?0GV5lr>^2WCPNT%*X}8h16jiY{_1ewUYf5In~|IsiMU7{x$}Nttd_DuFoH7
z2uf^w+qktOh#e?QRaC<5{B+9=xfUv*BVG{Tv21F|!n4bz&cwt+DtX}HD3BK&x*Qgs
zyYtd;ab!Kg_v~82_Ml2<yXMSb+8=C7I+nuRSlG()*3ZbJRI(fc7ZdYse_`)lN`}^@
zn6cl;OQR1TNESwtzqH;^0CI!*#beX!?1eE5Z|AP{O(dxa<7sQF;nvwNE72p$;qpMk
zo!x%Ty_csTKCNj109Die+1^((L@I7KameqYr2H%3v#0J~ZJZ{?@t9`>x{=nTgUm^>
zJ!ePKF6#074UTf}`{+E3`?sge$w8u&8x?Xt;eb-|SDFxDD_PdNgB{9y*kZ-*-{qQo
z>yQ)`7407!%m$PlAV$CA;zA(V%UBXQvN*!-2QokieRk$@`U3#AwJMCoV(yBa{3}#a
z<ZNwO0XF6|HYNh{LhR(^lw4;&1Vn5D9-fwWfjw@wr8xfn{!}6!;no@8cy@#ON`RZ#
zp2x_hIMwttqFx$&J%Es@M-anQHP-GqD$+)G^YSharb7SzHQO0Y8`3oahxp!M!fqe0
zGSp2k<s131^GyvzRde!V&gQO(b9<-uDpb$CeI%!72x4A5itGybV@vjDTF)q)4MCv!
zH4E6HfTf=;{n))Tl7h4_ZDwZH=(7E@2MWLg06syH0!BaHs2|5r7*nBRy&wSLry?Rz
ztf89+bwdXx0C+KQc8~G+_EoZglbY5JZLT%5v%wyU&MYnLowi!9k@b*V)Afb*X2U#h
zJv(KCEBA?Tj=zn*B{;~QoKGp4-ywOr!UTH9D^`W_WcG<QXMNIt|CTZ{%bt;YhVYTt
zgnFQy<O3QlRm2m2>J2Wb(oda>3tU?{T2J*L1m_!*Z0+!ILO9GH4k=d?PX5+!Kb#Kq
zB%qy&a?V<Bw(~bGOZj4*`Dv|?HG^Y<Rn7(rm=q!L>eZ{{{r!xKw?<U2B_!55?ql73
zUXZ-e%M6Q(YFK>R;It;b=y~+Lq=fBEKJwXOE$h2)xScaIFMx46(1DfwA)@`14ByjL
zTw3vE)5n(6_L8S%Xg*js<>+!68X4W*RX`i_-0cBNbF*KN;XJuNy}Ra9X-mQ~s4~L?
z{puxq$uke#gIT-%eExcVg}`~f@{^3bd`UjP`@wr4%75}Xysh^l>7y$5_ukA*N9H=d
zB|GCX)5?XzPi8qQU9K%uVe*mQ;eZ#a&sR70&9O@GulZJDpBLjOy!PV@%jrT*tuPYy
z`35K2^z?K};2;aw0P6p7>b;D4Y(K%465?Wa%)kM)N_J@N`Y-QiOpx`+kuJkaaI%lr
zJE`*h`ZrUP!Ay}M?z;sriHSjF<LBi@lFxQX42L<mb56IhNL^GLbOL~|X12nlf<t0~
zgAUWRZbDWzKTOWshr*6suTm1Do>Ij)jiW-O74TzLy${*Xv9W<Qlodl?F=71*E8KB=
z;RgmEFIo*_(1KArfYaYQO=@g9d$gcnxd=KVclmO76!;_7I6)bk={Da19}hXOpSwmi
zOUb<c^6-X&pSMip3$IdIW=sqb1j6=P``75727O^SeljrdIuJ$m5aaN*5(Fw0gkEJm
zMgtnnkZ|IGYe!w%*^K|=x*V9e|2M;ZtGe*mNwd?Jv%B{C@p_oAWr?G={;9(mG~#jd
zLk1k=X0zAXTsP#UQDHfs+OGS;N3`B?WifNZ9Kf!;yu38Dv;qN0&sDcP)7$l8bK?cL
zxRPP7|2N~zw<v%*FBP>Cx?Ar~T5dNl710T3hA(wZWDBMys$8v!z)NAF`c}h<Tz1{^
zfSF`rXW#C`pnb`~5s4@|S6|aSRp5Z!ak>e=N(~%3RGk@fdX<c)-{!Kd6p=_LX=cVi
zu1NSy0T7g)0YWOp#hwfIQPc<n*B6^On3x@FYZ-uB%*V5|^r$YDp!-fbb;V19Euwp$
zG~m4V8A6Ugo~vHxowTUotsF*PG%BIW=}UQhcmz#kw)^2Mu&wo66vb#~WMQ`hRMR?+
z84{vbYO%2_;}neYk$=X<qVi1GkxWk|9xHQ)W1lQK#^Zy4RA;B5QUax4`j3d7KJ^x3
z0`uPRPQb!hDqA92q*E?3U=pB8cOYTt$Dd+gP`9<U|57p%^~}l2CEYwj0z>bFv2ec-
z!KPb24meSvquAz=swQa|$W4BHNzf0WItHjVD!?Xr4?jXj-5~q3Wt19@et-cC4hbpJ
zr0xHmQT71Y(O~G1^IR^U6-&y=?)m7e$<T3=TC?Zoviik|LAME2Wc%;oz8s3Dbux+Z
ztRbZaV@F^hvd$V+udJajnS_7q$j$p7AkU+Dso<pN8l2E`Y;ke%TAPVL`J8OMS}(5p
zgX`CUgh=Hk&~(R@=HGko?JA)Y2+m)}3*Wy#rxt?mfO#QSMT>Cza9tS*=2nD>?Zn|&
z;<AG3hY)QFIY6%}sHoHm8pY@6HJ?y_I7uJQ&#9R{c?(+^Ce@_+I{Ef|;f6i;UeokT
zb7`^JY1i~jPr8_|Msov;>`SJDq5l5$d+(;1<<;zpt|v!wcNd>p*x9a|)9%vxM?TG>
z*eO#%d4F04Q<D!<*HGMkS|E%6o^7(qZNSPaqNYQb&<(yXiP7fUkI+Dv&#a*LdG7MR
zucan{sp5m9^bc@HNV1s)57v6bKlyxsx}#@g3<5Gv$jHdkdjzJp)t2b{A|5B7b=%V0
z-WWB<78bHhPE9@W0l;<qppI$H5aWe@UbKSsS#+2WTt*b}Lx(-(`TBH`_Qyu&tObs@
zbSY~<G^khqnH&gBnVFfth2W4@J8wv<Hg{4fu1H$ku+$itg6ckP4d<oR;_h_=)FGR9
zd`+D!nyV;~xczR7@J<$TVPyJi#A%v9Rp_#rmU?w`t0v3fJ0e@6%H(plCJX-<-F)SF
zF;X5Rqn(Q_e=buh2pbQ~V`b#e&yIn&zTD&*@Vhha#aG6*d!ZDkn;hrbBg&PE>_EBu
z#OUs-lAeRReB<=if5Up?LR_$^9+lQd4#VZcGdn206)fmy5h1Ih;+6^9Df-s_{y+xw
z5kH`zg3~%?TPrd&^pkQ;_F6W!djP0nEK!Q5tv#r{y<L>sjRlk=7qwF+uqK1ycRQnN
z1@qNaO&^G1p2#;6fweU>2wX2S5h$kJ-(L);T+r;fHHuj$_Pqf6zWP%`j`RfhRa*`T
zy6rt13il_kO(Y#pZ$gY3E-FfC;#+eZqYmET*l}@Yin-oV`>aI03&sDk=iZ&|WRygz
z!MbB*LFRE*SbDqf3Y-#9@x(sm>d7*0%I}OSDg8yOAK%f-&$*hsMW=dc6{Bzd-4>8f
z<S;%W{27U#6)OLqS^y~;SlQw3&O+S?A&n*Y>iqn?v1XS#fC`D<VKvo2zoDM|c6&R?
zE@{aMEAJ*PE>1Q>#Ap1?oA5Ld&-30Cr}ML;1%5{88=i^cCWrb<R~HvA=W%eY?OY__
zT@d~IXCEA%YRPr3-RQ%*vJO`CukYkfLH8OHyRP)Uu&SfY6q1XgQ4PhXCKL1F4M;W)
z`%U-BUrcfE{@pP~VU(F0I|^K5Z6qZg2@IOP{N%4gi!}++Fsc8%Tz-YZD<9gxvp=4N
zLcJOv)~*C^<|mZ-0SBTOHp3$wAR3dR)D@btwzPaQ1+52^D%u22qdU7~WX8D(P&oXv
zKfZ(E;RL64Ip*3<Lf5EtceuFkw4QCWXMheu1X;{>a}(b(g5cG8`Q}OKri47_#!0F9
zNjLb5i;LOu1JO(7_%S$`Um%KK{AAha&7qUK>Zd;0?#_GH3~Dwp%8e*KATT?F!SaYd
zLNhC$y;>jtiej-%>MUPjTy5-9t$z%vF1m%oCmBrAy%;7Kf7kMMYfb(6LBy2D7RK}x
zo5{$a8aY9!2g^ULrHh68o-6jM`6Uav?)*wk>^E>~|G_<g)<0GZ1Ob;<G3HRCq!zul
zMdzzgz{gTJZM#m_K{STv*E+4G`&%-~zf?54n=KRNw!k#ch}@o1m)M^F&1eXJ5TmHy
zFQoB=X$iyLEfJpZJqrk4R^6gmvT{Dba(dK-pRZNyUmjvRjH2hLd<PX$ry|Av4_w_D
zjAQ%r=Z_6Hr3xU{pt>NQfNDHkc|Vq#P7Bi9Dv?j#an?ba%rXJz{}+-Q<8jt%$XU1{
zg9*fo(bCe=HdFa{fR!yd!y+kFb<%l$!9#;h`u8Y5^1ucNU99;Z?92i)43#wH16ge2
zcw<I~@GyJdZ4h6ix;?y{{ni!Y)i{_VT#YT{QJ44~-G$mzn^S#sXJ=x1C`Kq$d*(OY
zAm*=q>TO>2(`aZ8Ffi7qtH6`V)PW^6G!z3!nr&HF{)QY=&{(<$04~(l_VxxK^%FVr
zSZ^q?vcp09@8fr_tFx=mGz6LS?-AE)Rs6)GfNgy8;Qbc3lS4v&N5}q&&Qk{1%*4iq
z1H^U!_`f%q7nb~i9Pcj>gy$;8fTpsXm1+fTCtsH0g}B-i4+k|v5(TXB9Tw|0Zzgg8
zy-K~hy1KQswSIg&LLhN3X(*??Oo3LyD48s$S|BC)Yw_G(lvr({V2$B(0+Mvo#>X(!
ztX8K?v!D88bg`7_O$r*cOb6O3nm8!IF5NXGSkm5Wl0C#uJ4vR1xBp5tU36jV;^U$t
zo;lHb=68C@z9B8l;yq3{Bq>xmGC!4?Z|Tc)E^5Bz4Lk$I3_OcZZS6X1J*>4g)lZw~
zl|MPoS4sTmed;`OU;4?G8@0oNJ9z4qx|W9C_m&phG2tGKSS%tR*g;-$2HzXiZ=gh#
zZ~q`;66#W)=-Yf#W)E1)x(9=?c&vssM#d=Oncsm_nBS3!`0%31$^y7v|CXq4`Jj&4
zYS{@Lc*%?*{XvFL!v6g{2ten*wBPPf1{ID`aB*?5^x1q0h@h<h+ZCscu9?B-@#>Ad
zkQ@%mXX@=P0AGA+iaqOowOPJ4jc()kfz*D<;ghX!=~GytV?$KEVsz`!X;v4amxRyu
zXF)aMo{EclwknkY0N#ED@TYU&+A_;W54!2m)0Eq7?S9{{EPp{<2#2k#%=BVe3cn#B
zAmBTn@)0h5DyDGl!$(0htbs`-)9{DJ#?&M3Yg6&ria!gN;!*Oimrl{|yG?t#ny=p9
zg8uaMe5pP|0KpnR<;p^kDhld+lWPI$zY&48dH2aaS_oBuI2djdeQT2Z)&RNDc{|o<
zpHkp6T8Dg?@wg1+YG;7Z)Rp@^THe`ai0{ry?ar>v8&!Mv+`?AlV}5~dlJSGYXRz@&
z7X&^Y9<0P%dU|>JoStKFTrdQ9p#$O1;CH}HC@PD@(u{zW2-6oEp<`|{+i>b9Wdxc9
zUS-GKva$e=UH7Pgi%~02RXnHyl*!?!07xB3`TYM+?M{3%m-#N<FaWXT0?s7J`LL`Z
zyR{znFl*qneY=}caqcXdWl{r2?qk5MjCcL}2P+6IUu3@w@6&PHnMJJhBM=)1l6(pf
zz)bPKrOnF9s%<HwmXD%B+ggx}U65K_nT=#mY0!B8UPh#?jyU)sq9P+b-O)E%ga;K3
z?W4(ag*^lQj_siYWe}@@C)sDncG%eM^-aOd^~g!PHdqY6w~nnOB9mY4k8KyIgf|~8
zsgoo2YIZ7`e!4#Ho7)O!?#3^xo7$<TH6irXFf3H0%?Mwqr|mR2Y!g+B-yOXaN4!s`
zRE4xK;!5u6Lj5f)a#1S*Cy`Z0$p89eB@S+Ub+TfB{5>qJB(~k<zTBwAuB`nlQoDd!
z`iq8z70>f&ZS|)pMXUaVu2}Q7i?P7iKS;OzCRLjgDz&`rmhN-F>b?empn1iKnPx6@
zV<3mmfej(z9id}R77Gm-=NlK4GcPtTqbhy^MMR6!X`are;MXY<3ZLdNwtG@Lrqi3l
zvLFiG;(LF}n@GL=+;16<c;LgoYWX`2oZ=Fiom}nh0Z$K?;aBVyF^!M&TRh6!sm!k!
zp#;<)bT#cKbAOCOu`bafW%)WX(!rW`ryH^!QKQATX#N+}>S!U=f?_l4nW6Qk7AxCs
zG=87BeXowP0ONDNEAhDTLwh&rqg6I`1-MD$Iz7pum-KuxcmbV9A|(a>pm2Z=s=psg
zVJxD=JjZzj01U$4M6)?Ui=49K-&#k98qO&_Ejl@Ypm1l-)|n*@J@kCU*&C~CRU3Kc
zvSr6O_n3%-N-slciNB%B1CEq#;3C1(n;b<2EBdaOF8C!-Elv2#`Lt~$RYU{XR~Ch6
znHG=Z>2N)rV1L*l+wY|$9&3=G*S~ecO<o}D!-7M#51p0&A;U(2_4;?rIr-}nT5@t*
zXK`P~&Vy-Bq=ow@6fbG@k_5CW=pGy&gzntdn22GLsM6rL0-CS343k<+vQ{?`#poFR
z!WG?)buf1G*<sPwQ<nfPHvSuwARTz$H3O5tPk&TX<pJ_k{M2b^{WveZ=dND?ITj$?
zFSHG3?0Hvi&m_qw0k*1L>Nu2$G+R1y9R}YRxO`-6;}`!{uiiKgPy&Q8ORG60(Xiz&
zPJYJ&x^7(#2T%i-?ZFp|^-X2>spf1nto67~QUGRXGuukeI>1UL?DidCudrvdZtuZN
z3u%h~f{cIr{+nj~aqd>MV|Z=0tpd;JQ3*NX>$N+bU?Udf!M|AUvSjl?UQSNw=NZ$>
z{=+Z}E34#OWmVO@FPpv06)?@nIf({#qNA0ThFr2J7wWhf-T$_fI)eF-rv;!ho3Eam
zm^OP98npQU2>$PtQgUe9<MWljA2v5PyE}t0y#G#nw~sYS`bp6wVV!sJ`frrYm`jLd
zpmx;If2vlbc&dNfuXxC(op?dATLS;6JJmtpcYqO-{;Q+ILtDt}L1dDL$i`2|Sp3yE
z*Vc2wh0am!b021~eox`=Y=8qPYb6e|n)>=m_j7Zs92{21mnfI%g#A_K4nlr6Zx>F=
zKc_T?sTFmz3Lneg&ke|o9m(9EF@Aoa3+Xay0nMv8r5i9%W|;jPV{bBvAZ9ZQv?e4>
zYCH67o{R%Qgczvr*G*>;wKM?;418o4R3I5b>Z@)q0CXD2xDd(kM0*51QcPrUAt*Gu
zN-9b#o+D~@wa(7Z|8|Ao;7`m6NCXi1OhI+gw{QMAdxMXF%%&b60AnHvdaX;wUB+!1
z)PKh6f1buiREh<Tk^3d)d-crZm$k+z#xqZ$v=3k(t*xEGCfD76<xb6XZg!ekUvFU-
z=i6;xxU?iVO|EuLwv%Kp+%wb?Uy4x@TAgLTxM*R&L<%|%nPgh@keU$y@>z0Cw|sWW
zCBIJ4??{0pr6Z7dQ~*+3q`l&m;&E5hB7~4F%>SZbMf#WSF41=p86uvM%svqk*zld*
z)s_aS75aYJHF9%n1%O6t+3j3P)bABGO^qEWr7Bk2yc9T*vFumFN!azrPwGAH+wPp|
zbhL!Zi}wyOAQYX$<!yo&rXzdm{v5%P)F~I^K|%I1Yk(hR+~!Lz6QI9OnL^u<dB+Y>
zx8lg?;mJwo@^-*cX14h(4vLbIO`?LJ37r}yKGICY$i=sfT6E>=QJ8^$`&51o<jZsN
z6iA$FH!Ku6n}p^DBAr)9?ORP+BqVZBTq?>4w2N5ly~MXO1@n2kHXb4i*3h0%zTqTj
zoKZ;*%%%z-TP~DxC4@2T$+A5<=uW?=*>eQ>-{^{7^f@wAWJ;D<+mJr{lOFpLv`XF_
zn4Qg#y>D?P>eyh>CCjsPBvTZmB;*^JyG6`58E}sIl2xcD)3I2m<O4djTS;KmgUO-2
z2E-D(<io>9S2%w2qy22@?^yV2gK%#bTxF>K;0z;qD}0d6>UyC>2uMLvOPbk5Pg71=
za*lBQUA6gusE!Zo8$H|dRNvHEm&vI)_vuDCrS8u+;a_l1f7gevNX;PpzOhq-4UATU
zZnOOFY@Dcis@F&@ROh^F?@?gQk2K}JnpPZYHk574*|SI1&}U{Y1$gQ~J)?c1FfwJ*
z3e@#}WN(9(XH)LdFxbFbh$8}XTr2Esvm~VikM`Y~?a(#POTb`&8vloFWm|ig$+c|n
zxd{scAVIcM^H2Mk#yWR4Ak48{%Mt^$PpX*jhq55M#o8i$0r!JgFxxH`VlfZ0Gfb{u
z|Jhc{$uhjX6XB*cdPGo9V^cjwxWnuJ=s@ZTJCFzJWj^z-mclLBleT_&5AluSx1k0M
z{e1>%8J3?Ati65)?6z=eEKNkW43160*ijHDjpb1?Mp+P9`Dlo3PfN?*HltKNCQR(G
z>UXs9BoCdm?6nJ86y)OA8Su`RRws1FE`(*$%~M_K93BS(KJ(p07ZA$C6(D1**W_D0
zV@_kTlA1l`e}CS7AF_HkCeaGDMFySqMg5!owT+5~;mT?h8L~#+j7%#5#WvEF6{LWK
zoA;@|{ntXgx`&N4FmQRW62_UZjHD7=PIzSW9s1~_UuU=N3|?7nYrWk$lr}*@0AB5H
z#Te!y=0ej^Tv(21&&}|$_P9jGgAnBYOdine=pFl0E?BBu^k}YDxiY5dw&k_@R9)^-
zgnoouXa^&*roAg)V_jb-gD!SQV#M!nHtl8r#50}O_S_;(7Uli_kTGylx0i#K!M$hK
z%l)+3ov<)C%X3o;C}wIZ1u~P>6rbJr@{vbKT+1un;-Fe8B<33PK70lS29+!5*(OUJ
z%bm+1t=H~umEF70couiX4fZZfT-+^b3(s^VHG141PtHSx_|Js77+(7a^aLM6=3{Bv
zpiQd0HPt=){L|A@b!lm2pd=GL-}<vLsKsN@eK;tctZP1WORk&gFn+4qQrSI2d`E?s
zo*oGTfxy6RKCt%}GXm7EVDd-N))XG5T`%~V9!>kT6sY}i`;{=St@8bZSIp&(%F%EV
z&z{@%N0-U1fo4F9D$Eo~09zk&4+xvm{$WS_XK>m=*ln-lR9Uw_ObvRL)ze?b4fBbg
zPpeE_lBQjs?pfOdz=9$1yC2Vkj4jq<=%0{3Z}p-41^{etURy=+ND+|U>>o33Cr?*7
zW&L{pufhwU3??QfoyP{q{c&y#F>seM*iz?qwA>^O^Lf$Ph;P^5t8Dq)6g!BPYB<H|
zn;F^H(w!^}43ScNm5I6Il~<R1(*llXeEjdsJx(6eM3z=Q{cCP)B-7Q^jj8Qj`4nFF
zM0$P0h!KSh$yPn+h4qOoXF`AM++2l8Ur*1pR=7l8CkjR*P!ynAuT$WkP;P|8Cc7S2
zG*C;$E7|saJ&Ht$EXfd%AKVYc7=rp9y&7!p0awlkf1NIUGZ}$$!JJCLjO<IvS%@?B
zW91Z3-jalILW9@wgHh26mI4AqqGZM9pv8M>1%&+8a~d58YKu-+90x4yh6F+BH(U6|
zZPz$%9lp?TjA+%%;}Wg<sMxKS=n`}dm?s=}zJ;Y6cFXg`>x!mt+(2ZdS=E+^FVZGF
z2*6$)Jlx(n?f*I3Twct_Gquy-8CN$~_hAu$0`H2wKlT5jZwC8bD`5~&WtuNo;MX58
zL`==c&<sYLJlvfM41~=TRhZVixS9TD;#{H|by@NemG2)D!Y;mftZ~>8A8|Qb|IzGF
z{SK)SfRE+yl6jo!MDe}4XDwyEMOA-9r2%loA4wvD37QWjp0{?@ag4Z{(l9{6FPm~O
z21qC8xkMtaA><|`u#ZvqKh^G#(5&hg`pOzs2QwhY=qhZ^Wo>iSm@Jpn6;P)~|7N!n
z!>o1)+?LH{xgBxW)YkHew2E59)5SVN{KbK9K}J18-|>8tc0`Ar{@Nc<i~Auur^-&j
z!Ud2_Wbo<Iu3f87$wY4#_54hbA>*b!1>6FF&%9Zjy$%kX{ag%*R)wicJKFo)#?SHH
z&&knBN>Z=<PEV2q(xi-X1RGr@S<5~KWH`{2UfR1yc_7^g0xC1Z{a%v%Qf2Swq?%ke
zbQawW+}seg>&EJ5?*JSly_p1g&s^jN*ZoN*0Q><Eq@xy3f>Q)HO@o27H<urK#p)dz
zZ3gRU!F#vGC|_eoblOWR-5m}O%ag!_jV2~~yJT{n*RvSU3eSYL0Y`dIJylS%!L$>(
zD9kttS-ujW3A0+N&3RHf<iUI8DdZEmyZlo45Sb=2vO1MKIp?rcKVrd>8WlwVxHt4C
zh^YSoI)esfj@qG(V8V$Alhc+UAb={ejhmqRsfk=$cB+^e#ztB}dQk~6uS@^eWbRuD
z04@doZ=b4iW@mVx9Bc<l{K*E`%leGiJ|pqTZIt@-RMkWibv_55d{K&Apn%H`r{X_&
z4X+~^7Y(*9u)CX0`5SnXge_21qNGK5>XaM+lyecMU3DMFtGJg|M)N-$9s)jLFwi=D
zz<8|#U{D3qM56~61@EjQpD#DQ(W~sRBESMAx4d)7+P9}n<dFaaB}C>K{)ax!=gC0J
zJY1^C5xfHAg+Wti9fKB_8B7@)<v-NV?j~OZY;2(uw9`?l0`Y@hs~49x=T^y%HJ)+|
zJqSI99w>X*>R31>qrRgH6aN^|Qi2iEb9?YeC*l2F9oQCtbTpLs;^?L0BE3z*-RSvO
zM@&pI+0tNJX1w%j3#6a)cH?Yj<O#odEAf?GE`oxI&t^QJM7N^a@785STV32XgDbY`
zrli8Hcek+rEK2nJ`_{&Wl)u0D8u&WR@g^tgg8~HBuyznWrb!9YK?y$JuLP~?SH%KO
z=)b8W@7jZ@m=9U1{T`lqz$F7=#HCZ2-cNw1#>U32uvr70WTJ5|;Ww6g%fC8TbPy7o
z<;DAP`;~z2Uh+F*cIs0P1e}&8;<3K96^uIV>1jRa;+>ezO&w48;%C2FCesrL_}b1;
zKYjDJJk9U_{K^r&#KYB~RVK<lkas$b2>VSXL|=Ty&vagM*)Gg1BUY}vu$*7oqb8M@
zA?a-XX#%)O_I2G#{!JL`|LbB|6^Ao>t`n5h;mUil{n$LTP7nv2Wukj2i>fzNxx1nJ
zGHsj`F1^OhfLt1(M_Z1I6VeVe=x6>w!l%8hzT7KZpjvJSi8O+{I<Jwa^;THJei9Vt
zng3HQsu10(UK67B-EJUiNmj4mYDTm4X)Z^f>-=N)JG45FV0x^~Ftltq>p2nW3E%iq
zSgDh5W`W%IT~3qGpbRK8I@z=3^gSur<~=EJ07EtgY-52mhMJH82TV@wn`I(VLjh!S
zT^rAU<wAJ&bQeJqdV37&yayYqyCT+=H}bd~`4?$C0l9<e#(RArBTdMcymBMfJ1$f@
zVd2HUSwJ~ZOfj4(mf0f?7H6^?^1eiz=xaIMG5g)NiAEb7$81m>nqBnROmW$BQJ|j=
z2?_0LLnvm&#{2YJHJ6LgqOBLvD<(fsEFZzacWo?1CJ$|yY-~Rj;p8r#yeB%yw!^AC
zju({>giqv5xMU+n8ok;3>Bh8)+fZ92x^cI^*|N8Ip^1OA8jzs=4EL-du|9j654_UV
zc7QU&ZWvaZ+4>-#U9wRARJatAos;t;GP3-fvkD--Kui0|is|Y@u10h87j#lm^=P$I
zfxCi?TVGlJe0g2kJBhOKxnMxU>_1hAX8L0VKe245iVgYwPcR2Zdhp6*(p2A2!dgq7
zsuM7F7Y-8*8m?e+*D?9I|I=|pA6CZ{ekY^oCfndq20tu1s<7GB%;LOs@&Kox-(0;4
z(bD`xv+94o>`6MsGd(xxOHh&T;g>q7SpaJ}5c9$rThj{F_)%WTKe67?jxdgWeaS=&
zmwsfPYp@MCfr$=`asE|W^awh}3%a9db$T(eN<WdnhY)>qb1_KoI#gj3Mq75(J}~h4
zhdw_gP+XlR4;(q@57_Z*WVR&803?U(vI8@)n`RrBgj+iyIxQ^%5V<mjhYkHsSxIx0
z@u>_#SDY5l$8Hl0L}P5tkKxUdexr<tgbISrsuAk)wH$Ni-@hApJU49n4iDW0XB4;D
zjg{o}@@Qj&<4pR0oZFJT&%dytp34xdGIXslK2zSu1lK?wnzNmzKsXiKNWbDQ*|7$|
z<RoGNRpvQlcPdm13kx@E)N;MEFKhbZ4Wa0X<?l_N6C-G-dCsozdPdv{w9Onh5GIc=
z1;kVSBK)^J_@Vq2@$jFwuji`ycAL#%Ft}Jz+arvodXd1+A$#MC4`P-%+oO;a{vyuA
zbpBLrX3aqCsrvWu=M(Gs9rb#mnZovcub=T@U!I-Oo7)qLi|3c6^@M!fb2AP|Xe0da
zBfK^3*Z`7yy7KM@mO$&Qe%(7X7rH!}<aG;Q_b>bU4(56K5Zd3rH1i1MlsM2p%!qSx
znQdTxDAPyl`2PI-aKjI^ACYQt+5SQfkx%l5WsTz!;DbPql|bVC@(?H-%pA#Q4`FI;
zlIZ;8@@g&K2%0;z@}>3&p4Z6*tm9lZmSjn|O_dnYgrlzg{>|^0xIus)&ZC|M?kSvD
zln8$IX1_p_58e|~&*2d2OYMdcBd^5`IHO#+WHuY{*YwZ#=X3*0#4npEJTBk(-T>#B
zNmy9_f#Ln%uveEuF!RBOC^D|VaxNpM?_-<<i*dp2X>bo1O6e|Z1(cHNip4zRhjv4n
z#2Iq{oOX~0qF4mR;nS6QtO)WS2EHT-ofz;iT$Cu$zue^zEu+ZFf$5g%heWoO>enef
zyqL~<ph$i<;HQLMYR60rFVWMxg3J`_92qq>%tHKsZJ~c9D=fyEc>zw5T|b<|Is0d4
zS6>p^SLTHLOzX--YT$mZ+!BSp{$+4G`8R9GpMQzvl{)yhp?z*4M^U9TITr0eg&QF)
ztqH497G(3lUeRb`?z4Eu1#1E8u!y>%?OP@o#{RM5q*AuyK3kcohgxXvnk}!mc>2wa
zSNB=W3#ML$xn4IJ{li1Ea5o2)zTCR@MeI@u>RIEVsZX~4k8H4epgQIBVonX}G6ww%
z=f`_1@rcbKi&h`KvA;mkL3crWyK6w^(lTNm(vI%NH|4sTF8*HnF@K`LK4n}$vIg^?
zoue?QAd(uLj?G(`bcz$SX2+!2a2ZEZT5ZBNkX~RbKjz)SHCtC8tNspboAtX~jM|oO
z+N83h3#)klLiga-UePig`tAL}tuFEsItzfq`=nDBxQur^HkUd%3ey?bB&h=+bwNd*
z<}?zZS6CF8_S{DK)!*x<s%rke#qZR~;y5%&!SBy~)r#^AE)d^do0&3RLC23bJ|qGv
zD%F{)k$ML5)}2zFOjBJREUrkOK@vUh&mrvaTmu_y4=5Zqw==!D3a(%Vv>%lG5-8kr
z^uSIcmv=~47`V@L=&cxn&*r0WFA*7=KlNCEIYgn2uKo;V^K06pu1WG)4u%N1b#)7u
zKuMdljG)}c70CK&&vldV6%Ge&0d05~;2$!F`dpC4mjpbUF*m#_n|+)Xrn-lNXwC*M
zusmJrJu)Vep?iku$p619!3%P~qN54-M@3Fw^6}M8FF%ZrYZL%CTi1_{j($1P_`t2M
zL%)5~lE1XydcZ+-M~lI%%*~atTd2-k2rp0vYI~KHm6Uj$kl3dhlFBWI;+Oxx`8*!c
z0-J-S7{7nn!NJ4hGmx2$QW;GZ+RW8?Y4%whNE291?aNzPkETw%AuMM4U;l4C{sF)%
zwb`Gh@mIF8Ha3Mb425}Mf#3cStB{Z$iElcrgMM}jT5-c4_vT6;Mj|PY4(3D_Vmf1a
z^=IVw=UNub-zrg*9c<bGBbFhqZyvZ*w5%G6-jp#c>IxHKBa&w-aL9<Ojz;`msM>R0
zC9BI$txCfAd>&yF3>RNT#q=z*$)1uO?r0-B!2PCql_YLiWCZ|JTW3}+T)Q#Sm#y8M
zuIjG+X=764`noS&*dvkEz*=Fj2?;3pvws$c`SgVn8>;~Ad=*wj5zkT9M#UH{&^8Px
zaBvu7%8O|4MEPK>I~P=r29Ilh9IU(Z@<!75m8Od5{YGBMy+>>CE3NEdY;?qOFqSpi
z#VOc-<Y3N{_YkuT5(G0*PvXv#VT({Y&{e)M2|adi1c7LDp8j8eFxYYPqqwoL#qN&q
z3Gz_?=!gza^LT|A-2FvpIO@RYi2M23xfbK^18ylXFpRzc0Aw7P--lhYxjjyerlDw5
zEIcRI6e@TCKZn=7gL32~Az1-4?LTt*Mnom(+PcdG4x-FHp0mikr~a+SK3;K&AaI-v
zK3X<}E$a65*c$U{jTY^(=%7hMcVLIy$ume4615wen$f`EqG<ZVyBopUwPZ9fOj&2G
zPs;w=v?I9X6k4~(`0Ao@!Mqi*==|^}C3qR04}Yu+ZUA|4-s6=BOGC}z_B0uel@9X)
zJbVCE1wV5K&wTkJoX3(++*cgK4fbnowcE;?BLugcK*f5p3>Gi>Z?rM1Dg|5FhhHGE
z<(y8j#n<*5-CX``vxUuxic??Lm!m^|(%XG`JmltQl-%6VdvWafVFq*DOHg0-ZbgR=
zxdaV9<MPO6aO!4tDp*}p17seuEay1c<!I{NUgu=&W~d#M>kj<aXlJ#p?TQ^liraWT
zvMGQ5Tza`+ov~6`Ho%Yfuif{Q&kK4p#L4zjV`lF(a>CQ)mf!p1pq#wu$GeBYp9i|K
z?Y%IlUvFHwWliAe3eI(V{CiDs$@Qc2X1$hk471(P7Y|1c<>hWBL7QJEmuE&+QDdW{
zy^kkvx$6h#+yQb0*vc?u)ZF_|U!QFNg9!WGP2(oU9K3%n!xo57uNfO$nVZ<ve<SX!
z1=1cWovid(kaZCc4bW$h?&JiLc^!<#?Hhg&ykXy(r;IxjD&OFU9(TUb)D-?bGX7z)
zrl6Jq<^SvJyTjoM{&#oT=usjOy_e{n=n|di5z+hVLG->v3qeAnMzqxlqL)R~NQfT2
zMGZl)7Q5{Jj{CjOz2E!KeV+5jo^xjA%$)hm=e#rXzMs7iUd_<>?ch{ZS3~y2G@p5S
zlj{V@!1Eo+FA?=fcR%nT(G7+&$OdNpp-ir+0bthOi{acmNR+#S;n>hn{F@rBi#e)w
z^{|dq2PauJn-@GnO|bHD^oL)8is>l;>S@apKR!A83LvX5^I^t&sjIZkjk;Ky8O&-|
z;s;xRjcpGw_TBJT0TO4Z3LUT!>XLd4M()k%@bR<DUN<>Y0IV9xIb0uw66j%*$9x*#
zwf>y1Mz#bu&@&xBO)i_D(hohWFB(gRcL&z4yBEWj(jsDyx_t&aK6b^cKWd&e^PHcl
zQ?;!S;&Yv4_Ot598D0A@b3Q`E-gu6&bkBN(;Kv3*A?s%G$VVL*n|tknN1wa8CKCI(
z30i^0x5Lg;J^wd<ehYUu%JP<Bk%mq~l^aiSmpd%!8*d2y<^G+OBZLjGmx&Qa-3ouK
zqEcT_s}%LfbH?-thp6SMIJa57V)Vy7`YAxNV@&QV6P`Nn*X-@{^HygoP(4c7g>cJQ
z<d5i6_m5lj&ikLb?(tRG7%F1N0<5pPyX56u=oq949zGeO%A&Qs@xTB%ZryJuFVOsU
z$`7&p*D@JS-aP!qT4qb8rL|B;Iizm$Vh+6L7lfcmxm*3HTU0GJ)AjCjGQaEM?Ph7R
zL!HUv5>QMNokIYw=_<Xo)wG8EDd1we6y)ib@r;ZZKW`8{#eecmPD5vttj6)NJK>&l
zS4^kxNbYgHL@3JR71>IwkHaemA<NbRbymQui_SU2#{k_zwRLOP<x_)vpl{sTBAS3u
z57T%_^p|bU$H%7z;-==4EgnmCiS=XsbdIe*{)CQ$b+8Nr1%&F908lcWY~DDS1yEfB
z%}>49v$FoB-os_wzu8Ah4QK^f=pDLXIp6!A0us88FO$!bYxUj3HI^a;vzrT8yc-vg
zjmnZe-ecTXAub(LF!FF6aKl8bOoT$?GVf9Y@$Ac&WX(59YYgFSu{qS~V6tVa_g9ZW
zp($tO_^$VV7SF&y(mayATm^l>iCPo}=k%O+BaMt@IIaBW5+>P>e>V-MUhk+yLp)3e
z=L*;Ho-5u{%zLi^G>DV)-03+IG?<cX|5x0HdxtU8G3dZ1ZkT0)`Ts@Uc89%F1ZV()
z+u^ztf-rHD#l;?v&G-1XOD&VIm;Oe~KqKklGu?`UNG5+=6@4oLSkiBwo10?@Xcv4X
zr&OS_I(dJ)+bytTob=SjM7&z`oPu6;FqX9Q`sWkud|=!g()&-u;G+1l$gSAR+6Dfx
zn`F0tq+vNG`iMLiiUyG?xy@_ucI{AmrkHD%%+3BxyApy(hYeINoB^23pjQ-P0Icq~
z5of}Ukp{p$szzz@{E&?-#5QIaTknI>^&8}pnXh4?3+@Ps7)U_QBQPvyXm$>-S<A@t
z!^ng;omSUghiK%KOU+R^ruJ5TI4WBYr=OnwjGEgY*1&`C3grH%@F!gIG<)ARJBTem
zX7kM#o077iYa0MRWyzE+b4!FyV)op9(M%oZPmANShK(;?9OSsoq-M*jjgkQuInO+b
z6n3gnnA&_QI3iRgQYLq4q`0+RvVc`zsOVO_f_9K^<R>!>zZ~i!=c5DABXF+k?{oF~
z6%)fVA4wm!LEhyCzdz0F6M#Mpy@A}isVR44%qqAin0kPDLBg9SCFReJiiHKwwoZ$!
zlSEH|S$WbgbV?_#DGwkpoAC86wfYq6ia)#kuLpbWwqG1E_~iz;7%wd}Ri`9P(bXC?
z`}FZ;2$)r4`Ic7(Ue<qkl0QBD6yKp<g+&LAHtehIzOp@&PZ^g^q3>$2he?Lx1brlT
z@PrN@SqeXK1}f~f{nCd5FKv2umUN1kJoKqxNLwqRVTi)=n&spQVwZ2SVnXv~`f%m{
zuTd?0KI@9H)GI8)A$((h%DkKVFj80CzCS_xeyzqETDBVVrtg)+l>~DYzRrr-a+y1&
zPeikz%L@k8H<(X<`)7&q&QCOEX5AruFqPx@v7*C}qFT}*^LJ6G#iKLiZIlH=A`Lx#
zqU3e#>GouOsQ$|@Mlu)YEEm!*ENjpJ+gL?VNbsZdto5}U0(b0%P+pXVa{TdsID$Rp
z`RLs{JWTh|^4qY4IGZz8&2nke*L;Cu?chHAlepu*2d|#c;(n2W9(Qw}t%m$W&Y7zN
zD=GZ`9~BTxWHf4cGIxSse7`Fhb!^azyFN)mn=75l$jR*^Ge5ks=*Y;A#LlnHVUD`<
z%XeLR{A9Fr(1R)ySj%TCvKIG|$??6(7%w0SN8idt|C(vQsKwYHkh=V3#WZ|?X>%u+
zLbDcrL{MO70H3+8>I(T)nKE8$cD<nIRIF?<!ICAa{8qfMcT5TAA#(R-ncMXIj|Q_g
zLCguwG_avjzOy&o*6=l8i*_qW2c1tNWE@}A^qj80;jnoBeS}SI1pz^;LSTjpQt%j=
zv|m#FL#sK>Om#TygW7*UtQ*YO-k}5+hOW?xK8OC42*NG+O(i06p(wNM2voKf(|bXr
zcmdaSW_OkyWmLEbc3HM0GQ>X;AHUP-f+l_!faFv&psz2v8{^V0`9eCeK99QtZm!<O
z$A`#Jn`}b1#eAGnr~zze!&<JBbrZmea{Atjkx%dN0F^B`M=+7oTYk!#-o^A7)t4&u
z`ge`8EnzRni?S3UVPGzyA7M$=l0&hSn)eoyq?;vgaEJQ=<(xY0+HF|ZCE_ZC*ESfw
zMCc_~@1D+pAS9vgq@$CxD>o;3-nC1ZSK^6>p(F^xKR($n={#A$RY!caiMUpDU3N2U
z3KbV~>oss4B$LhvH&)e-Uhjggi=cg^)pcq4h^ZS{08$YxF5*Zr_Y9_O_}tq!Ee!|}
z;Z$+7HCrm)PvpTt_K#qFDpttvz&_$O#Z)6#kN=SM+XD565tVQw3}l;%Am|k(?e0ij
zVJslGeJiQdYP#r8?3NO7jb5%37oDYv0k5!HBKSn@PW%awEnN~jwH7C>9FsLUpS2B^
ztE~hzf_2TaX@Wn5<6-JuVF1Hk;^Ko@y?t!CZ4DT^l&7B`nRqdy-rmiTXdBpMnN~oM
zz<fBeip!F2pGfUE9<8)*0BTY1c9ZixApW}DtOmqA@$vELg&f#!etVbpONlld%Zs;W
z)VPjvVm7ZNauW}{VwZ+JSOss*r*hZDecl}$u#Y5mIOP`-Dg|^(1qG~tZbfzZ6%&Mz
zP#h3Z4nIu%OqR6WR(Be(sJ3`Gv^3YG1xUy7LhI<kvNFS1K;JQsTv%BFK?n#EHOKXU
zO<!I?!5Tk_@>SyYQ%~>dT4qx*9kzK9tMf0oJg;;HmC6M=^T@fpm*f^I$9v{O?i(0G
ztNd<9bq)}H1_IalAsm4ZDb14XdB>rleZwyYB<r%*o@iG<9k;XV-m$Kwqr)L$Ae3=|
z!I;iL$^Zl66C!u+b!?lhvX2>z>WHZNS5IB?BugMLYT{3CHp*x~*Ly(+zr?55@2?VT
zJx=oym2{thY97JB>l|sfq{%}g$Y0X>aB1zKpsw=e)#uMAJ1yr+iK2h})-{cyRg$%E
zr*dhA)N$HY9D<U5@4YbHfBvBfDRjKLufp@tqLl*B+vAqpRzR=)oP#hK4*820E{Si1
zOec!DWr=HS=m3#l2AbU0JH-{U1EEprdHT)+U*b7o?}}&tBqsH_P96I)E%7tSKEr<F
zBG%R}ghPP(49v^ib>4Z*oTTk=nRAC`)Yq=pagkc;>Ga$8V_rv&lpijy?l}RC;@TKH
zdT{r&!;iQ<Ll8H?J|eQ`KJ`62tRew75`)VX0&F~;BsH6lmsj*+swiR~s@5hwFks@I
zZ9#Yc$&Q|^c8ND|+>}2de;@ee*X|wQnYMrJCwqB4n`Cq`JF@+LL55Xz^$G+XyR;0v
zT0`vlTK&81{E|RI&MdDSbb)yI$9BYFhwgMPIAt)?8GG{J47VtUnS1bEJ|)uGd6C`T
zv&v*0UgOO`K44%?@+%V_r<|mY@9Yb^rMC-4rN~j&na4`RH8Ll7JCCc>#2Z!gs*$rF
zyGU}5W?SA8xEt#YpA4`lIQb<Q%kQzc+@|y?Z$5ANMIbZ~TGnxj;mpm;%ga7G{W}tN
ze%?v`R?e3bI@ZpV&ce)A(&m<HQvVL1aI8}b;LJI4Y&Psz6_z_zCJr(Xs=uo7o1fv0
z2|rQ3EWPyeic>aGQWh=pX(Lct=i=geT&+N7?H-1s?3bO=v>i}FW$9${fIJ@lO;hXu
zjf9;<RGa@I=}E?&ojkCL6n<IO@-4Bp@Zs@>;N9R1rBxXX%Jb20-!%FHHR|@%Xuv26
z5I#Q08LW750si-_r?;uVE%#m|#uhZBj~885(heS>#MLVi*Jd>M=Sn??YZ_{C($-v6
z4JhG4?ly$;$WZEzCoL_K&zx!fXgHBUl7xfoG0*NEaVh9z+a>3)(9*uO)+?h1hJN(?
z=vYgWw2TZLc3{PK=Vz=xyQx4^&z5ZJhA!SSLH7aJkJsml^!T7pxhp@uu*=<{27)$$
z8I^`nCVi3mo20_ER=f$A6Zsws&?mygq)ei<J8*v?Q`={McLdWeePmvP^O}EH*KW;u
zNPQ1-Kb>8&$nD<l9qn%Iu4H+{_G-(9LToTN*=tEy=5D5U)(4iWrikz`B<O*Fz}=5}
zWt+kw0H>Vz<?1fxpYP6?w`|^|Y}wT7PoJ1|scA?r^0REIRsnG`m21-Fk*Qhz?^OJY
zsqcCqWs@ctZ#s<5_&NU9WA0|FpPMve&3lrS0no1p+qQ<gxm6iW?19|EuKqH3qn>qk
zp<m-pZuQOfH+!Z>o@aJ{SMpk}+#9D_&&Rp^)6E0rCabt<uX*iS+)Z&JAtfz-=4a{&
zvshWVGfrzy5XNCCiUZ!|Gky%Qv9Yn!qD|Y&TL5A8S53mGFs<<yna!V@qCU~L<SH@s
zVXk-qPtU8QXsN19lu;@*L45fdTQvHjQ&YQazhBn-%M07qu|GS4po9h^#)N2<<@H7Y
zJ5*oW4JdBQUQTP1nV7vl#Ho~%AC1cRw#_NP$9Jbc)Xi2Ix6fTIS5jIUr=v~6=-rLl
zYVvV^v)JObqphtS1CWh)B`DN%b#LEK?n)~gYvnq%=#pUjyCJ}DpGPVu++H6h%EOO$
z`bk~mlXEf~s0yFoI*$q&lsxpJ=<k`iURZ2iot<|1)xMf<1FKqS(WQdPTNs^;e5KMp
zX?=?#(6Lu#pBd;jHvKc*Xsg57czInfX25vWt(ouNb0X5x)9bem1bqVEVE_RT_4EZJ
zIbldh2;8)>oluf7;Fc=v-S~wH4ajy#=usj{^$s<p!s7LF!a@GlXsIqU)(6=`A{hqh
zI87I?<A885Z2poFy7})FP1MG1#3%)kuT+-pZRQZEm=QohGS0BO_Vra<j?mZ-j04?-
z@X4{vUz^CG&x)?Jmgbdc2DqCu4J0aiHL-*y3|X-_wFc(o#*5Bvia?)uF3ZR(^3+)i
z3(iD;nRRbV_M##B9r`?*VLRb+_LY?hMn*KJJ&dj{B;vQ+)Li#u)8`&vd5-whq;};`
zJH;=BW1V1MpZxTw>6y5QudIX)7}oE{D;1d?D1hY8$;A6AJ)ez)n)jfX&cC`HJgpws
z11)-Aan_xK_EEo4a~VGd61(k*V|Q)|*esDKTW>0EwH3VxY^^^Y#asWO@Jzmg6+0sQ
z9DByDz~pV|l+4O5Wl=D}B(oPiO2g7(CqZD|ugZw<UhgfC9yeHZ9km^ZKxB*YBBeqp
z>S*Q=gmcal0={29<g%>Q;6t*qUw#bajCG0V0v`=YW(Tq3umwZ8QfE>h6*mSOD_Vws
z4gGk3U3gN<l_}hCK7aWUc_K)V+L_$995~Q_P@UkiWT8x^n}A+>MM2(<y}CR#oRBV>
zqo~VR0sKX&BVlIHA)W0JnDkR9L3t%~KSi3@MfSt30^JYRQxyVFvZv!J-JnK7()?Jo
z22ALF{7SC;3zlJQq+Y&{c!Oeg0tX`e;p8GABVL5~Sm<ldum<J1MmEJ4M!2he-8v!>
z$pO6F(PUv%z1!Q8F`lAz7vv7a<Hd_#@OxQ1!NXTYcF~sM;fO<ab4r29MMP*|SU=_w
zB@g5+8WXH8U2XBB_>^6|f~liZDVbJOZ+N@TA+x|GCi>ys!~WEk9v`!B5#_pKOZw+T
z-vC#<A^K~=dtut6v1Rt_0ru7*?JbYbtqENGVj}hshTCF3(Q1|HBY84+iq(Bu{f1*_
z_zB@5y+b?5fvXYG+7E)%SEseJE|flubu+!|!}BXgSNkBQ<rkaVoCWJHO5FPQ>mn)Q
zpEFSWmCFK+cbf}B*?WSd+Y2={UA~_4F!v;`HWwbpKWVk3xvEN`v)`boK7FYt#c=Oy
zk>c9Lu++eiusNE`)cCqu<Z_+r;ju%mz@A@6RNPSx+!KSDCw-VoIEbh7tnM`-UyCv{
z0+c&o-rv&TU7gDUYPF2IoJ}ue@A*nQ%!QYLm@gbyZ=RrkP9;uNU>02Bmok*~!tT<3
zo54h`!M2ISC@&AU!_)yuz?6$JtZI?;YyNYYa^d9i|2@Vq?_<rM%ON0aFKuPg#DM?V
zr|$XlKuSc}C;AtiMzR|JMscMrE3;fj_IGz%zXK06j|2xp=0a#h?_bk_>1@f?EL2T;
zH{<6mlYjpeTBr2*GFAwEDVlx>p2(v#`AcqW*;`n{brDeGJTI4>FZK=O0GWV%xbymw
zsxQ-^Sb*IXCc@zegFMR0xY$isri4%t{I4?_G3991C!}<&k0?uH$=<ROO+6;iq>OQ8
z!{;RGZF~#91F<uYyLKchaoVC9lWq*&h^q@7O7E&i5Ad66RO8MmR=KW4MA29KHA>YQ
z(eE=pkO~W!!BR*~dld)gL<2X{_0MDc@5Cixho_wTe&tK}gpKUoueB7c4zA#|zpgp*
zp!fk9`Rs+fOpQ~#7eyQ`BKV(5+Sw2i)!D<d&v<kh_0e#Bw5&+=?K(g-UUbrZ<fEyC
zLV{h2Scsv&q|sLzDv{3_3KEuAqRL25o*tc>cq)jA4-LjfSmdHf+4$Y%|D-Gap@_1_
zCzGObXymr7F0X!y7<=!UI*^QI7#<Qi{$!}B(`IZgZ9n4gdig6>4!-sI(EVZf9|Faw
z0JV7Ov{W#NdqtcC1owMG>uWW6xYtDhy15N<sl>&@9W?bHE7PlnM;`ppTjNhY1Am)b
zt39f^?NaOIh)q_+g;?Rh1g${>@`c?=3RjYBx>%9JH$EqxixzXJ36ZbC-PYwHEFB1r
z7s%D!Y!Zk(&-MzdMZ=kyYtFEEIIAlC=AQ{8oWjo29tVLFiKYGX!{XXJ`6)sIEtR`x
zw@11sc5G_*ZJ@B<eWsxMU2@-wyOV}Ed=cDpLC?Fy7o}vmTXFdvCP&3i5NM;K8tg9E
z2vY6<*_Bi}GTsHRb-a=v)DL7+SauKUl3<4JpGiF`<`5}9<Hds$y=CtyY{Z|fN&zvM
zW=EPSAn<ucyf;RuNULecQ>vomTCO;i!(19%q6;B?l3M?jO*xOfXMlg3cz|mpv#WyI
z8x{JD@M6=$w&$QXy#cZMdgSNM_zAUzp1$)t+jTtafPccMR=9unm-=&W4z>R(=Rc26
z1TC7c1%H>XI%QB=z6HCS#(apvSND)QFCg6He_lTKHXjd`&DwWwJfVo-zcW8*#KZ4N
z+F!aTO%Y6*DEL-%2X(j$J>unMG%^-&kr(h1rIDFkIymL!a*U3yk64zS!GxJuur#lD
zPn7{}S55@QPm){Kwv$tWJfz5H+Xd?8m%#7xT_RL`+Qu8!B%Oiv9F6IRY1uMT)y(VW
ze!YxBXmh3{q*gu>0ik8(C%|vY4;`(weaFz0Zvns(oz<j-MJ|_J)cWt;44fLgloK#Z
z;2`AM)qESR_Ci9s0g$sopYc4$$fQQAy`;W7N@aVSNw~S;EETN^3l0v(11)(usM#uX
z{1B*GCIwxzuE`)c<2I-Mrh-5^IT6kY5mQ%QV9-3~6KnV+&ow1PvS%9#jy<KG2%TCy
z={N|5CW^o8T-@5`WR)f?FQ@G!H;_<(C3CuZ8NL@H?m(!RT<m*=y=(5ToH>{7a@oh^
z2Tk&XPg10Gve>qCI<=ga!uU<M_J2l<{V<1x#wyOAAC0wZn13$cCEX=3He_41Cbs8(
zd`;QKRtpTqPwul%-QNLC><UKKfcVogymEx)yG0(M*@1^+-(=6cVPw`wX%~r*74KPM
zY+f#uMP2{WwjGsSYgoPp<8>|Ds@A-%Ac@Yn-qXy#d8+{3v(K<CYTjd{igEdc>paxA
zc>O^V$a%|m&YTy>XNzMdXRux_3tnEy7B6d3<h*&i>58E4c=p$Z1(Edu57b}2zVHa_
z7TVrPy6_X=q6jo>5WGp0YpS$X;k}i+T@^u=x3aB42`MD(L)T|P9_{K_TYs9+61f|~
z$N2wok>5c7*LA(6P!|^DH(eH8$RA~pj#)Nba0#zB4dzsx<XHKOR?m+tJ|hmNn*{0n
z_#S&dLx9L#%JH2R^-ytRwI$IGyNG#r(3YFss16s^{*9xIalnJl0#1&hMt_&$zdhtz
zKo3p2ksO26S{*^hM3A|{tgNi4fFQ)oJWJParU?sPM{s7Dt?r(BH7XV=C9*4bAn-js
z_k?4rtB-T!f2REJd=JEwL9Gr4vW{=)UQGlB=SOB|<nRdw$}mp8+?f$-v}pzXU9K?{
z%T@#dDeyr?vXe%}Tn9g^{^mDd_ugtwj{|nlKlkq<kuZq_G<G2`Qy3qo2(M5CnbBXJ
zIW54p(dyebl|Y{9@4m9f@9ZkMQwI8I<nyoNOJkK>8*ut>!ZeLs@Jz!b@`1v>l@`4^
z7&eFoIl2;+Drs9L6kjofW0SkE#Nh=*25jmY$~O*7(}h9}Mj|SUS41R&<>;9a{_tHr
zuM_hVx+h;FeizKwze|+BuI#G{OH~k){1S7g^8e%=jD%>avLu4;+516MsS0G+mD$@3
zAmx<B9IS~TUOdi5jdx%uG)1yeg$FR)>@(tP14c04*NJ5g%*ULx>aBIa4mYg3o0?3j
zHYrKQr$OKXS8NLi_BUMLCENuVbgi@9-V;<I9FN5x(-$nS6!Kl2D;)=f#-pDCLm}57
zAAPOHG5~N8iGtZK;;sTh2}3?xC9%2!UpTn_Zc-(?Hyl^`?lBtf1r2{3`j~zVu;k)*
z<Tt~Rr-<Ct#-`Rq<@k@SHuH;Os71+Jphz<tVL&?mMlZVXffVp9|4q@ru!aL$5p)&l
US5}~ae+>X>sp+YHery~4Kb@>|@Bjb+

literal 24777
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%0A55)#
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


From 2f8ce52c77bf1ac7aa68af6bc87da2f3957b568b Mon Sep 17 00:00:00 2001
From: EgorDinamit <egorayn2003@gmail.com>
Date: Thu, 15 Feb 2024 14:38:17 +0300
Subject: [PATCH 23/49] Canisters don't late init their gases

---
 code/game/machinery/atmoalter/canister.dm | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/code/game/machinery/atmoalter/canister.dm b/code/game/machinery/atmoalter/canister.dm
index 178b4b45fc..9e3475cae8 100644
--- a/code/game/machinery/atmoalter/canister.dm
+++ b/code/game/machinery/atmoalter/canister.dm
@@ -35,14 +35,11 @@
 	/// A temperature in Kelvin for this canister's air contents to begin with. Use this for pre-chilled gases.
 	var/initial_temperature
 
-/obj/machinery/portable_atmospherics/canister/LateInitialize(mapload)
+/obj/machinery/portable_atmospherics/canister/Initialize(mapload)
 	. = ..(mapload)
-	if (prob(1))
+	if(prob(1))
 		desc += " Does not hold GAS." // huhuhu
-	if (!mapload) // Call gas creation after normal init if we're midround - otherwise, we'll runtime and have no gases
-		addtimer(CALLBACK(src, .proc/create_initial_gases), 0)
-	else
-		create_initial_gases()
+	create_initial_gases()
 
 /// Fills this canister with gas based on its subtype's initial_gases list. Should only happen during initial creation.
 /obj/machinery/portable_atmospherics/canister/proc/create_initial_gases()

From fa1884b15d96f5c6e0025c2f776395b389896885 Mon Sep 17 00:00:00 2001
From: EgorDinamit <egorayn2003@gmail.com>
Date: Thu, 15 Feb 2024 14:48:37 +0300
Subject: [PATCH 24/49] Fix attempt

---
 code/game/machinery/atmoalter/canister.dm            |  6 +++---
 .../machinery/atmoalter/portable_atmospherics.dm     | 12 +++---------
 2 files changed, 6 insertions(+), 12 deletions(-)

diff --git a/code/game/machinery/atmoalter/canister.dm b/code/game/machinery/atmoalter/canister.dm
index 9e3475cae8..dcba9d30d1 100644
--- a/code/game/machinery/atmoalter/canister.dm
+++ b/code/game/machinery/atmoalter/canister.dm
@@ -33,10 +33,10 @@
 	/// Associative list of gases for this canister to begin with and the moles to have. A negative value will fill the tank to its starting pressure with the gas.
 	var/list/initial_gases = list()
 	/// A temperature in Kelvin for this canister's air contents to begin with. Use this for pre-chilled gases.
-	var/initial_temperature
+	var/initial_temperature = null
 
 /obj/machinery/portable_atmospherics/canister/Initialize(mapload)
-	. = ..(mapload)
+	. = ..()
 	if(prob(1))
 		desc += " Does not hold GAS." // huhuhu
 	create_initial_gases()
@@ -46,7 +46,7 @@
 	if (initial_gases?.len)
 		for (var/gas_id in initial_gases)
 			air_contents.adjust_gas(gas_id, initial_gases[gas_id] < 0 ? MolesForPressure() : initial_gases[gas_id])
-	if (initial_temperature)
+	if(!isnull(initial_temperature))
 		air_contents.temperature = initial_temperature
 	update_icon()
 
diff --git a/code/game/machinery/atmoalter/portable_atmospherics.dm b/code/game/machinery/atmoalter/portable_atmospherics.dm
index 234adee9c1..88e646fb88 100644
--- a/code/game/machinery/atmoalter/portable_atmospherics.dm
+++ b/code/game/machinery/atmoalter/portable_atmospherics.dm
@@ -15,14 +15,6 @@
 	var/maximum_pressure = 90 * ONE_ATMOSPHERE
 	atom_flags = ATOM_FLAG_NO_TEMP_CHANGE | ATOM_FLAG_CLIMBABLE
 
-/obj/machinery/portable_atmospherics/New()
-	..()
-
-	air_contents.volume = volume
-	air_contents.temperature = T20C
-
-	return 1
-
 /obj/machinery/portable_atmospherics/Destroy()
 	QDEL_NULL(air_contents)
 	QDEL_NULL(holding)
@@ -30,6 +22,8 @@
 
 /obj/machinery/portable_atmospherics/Initialize()
 	..()
+	air_contents.volume = volume
+	air_contents.temperature = T20C
 	return INITIALIZE_HINT_LATELOAD
 
 /obj/machinery/portable_atmospherics/LateInitialize()
@@ -50,7 +44,7 @@
 		GAS_OXYGEN = O2STANDARD * MolesForPressure(),
 		GAS_NITROGEN = N2STANDARD *  MolesForPressure())
 
-/obj/machinery/portable_atmospherics/proc/MolesForPressure(var/target_pressure = start_pressure)
+/obj/machinery/portable_atmospherics/proc/MolesForPressure(target_pressure = start_pressure)
 	return (target_pressure * air_contents.volume) / (R_IDEAL_GAS_EQUATION * air_contents.temperature)
 
 /obj/machinery/portable_atmospherics/on_update_icon()

From f2019d25a6231bfa26c4d3651bef1580751ddc69 Mon Sep 17 00:00:00 2001
From: EgorDinamit <egorayn2003@gmail.com>
Date: Thu, 15 Feb 2024 14:54:54 +0300
Subject: [PATCH 25/49] Fix please

---
 code/game/machinery/atmoalter/canister.dm              | 8 ++------
 code/game/machinery/atmoalter/portable_atmospherics.dm | 6 +++---
 2 files changed, 5 insertions(+), 9 deletions(-)

diff --git a/code/game/machinery/atmoalter/canister.dm b/code/game/machinery/atmoalter/canister.dm
index dcba9d30d1..cef384309b 100644
--- a/code/game/machinery/atmoalter/canister.dm
+++ b/code/game/machinery/atmoalter/canister.dm
@@ -32,8 +32,6 @@
 	var/update_flag = 0
 	/// Associative list of gases for this canister to begin with and the moles to have. A negative value will fill the tank to its starting pressure with the gas.
 	var/list/initial_gases = list()
-	/// A temperature in Kelvin for this canister's air contents to begin with. Use this for pre-chilled gases.
-	var/initial_temperature = null
 
 /obj/machinery/portable_atmospherics/canister/Initialize(mapload)
 	. = ..()
@@ -43,11 +41,9 @@
 
 /// Fills this canister with gas based on its subtype's initial_gases list. Should only happen during initial creation.
 /obj/machinery/portable_atmospherics/canister/proc/create_initial_gases()
-	if (initial_gases?.len)
-		for (var/gas_id in initial_gases)
+	if(LAZYLEN(initial_gases))
+		for(var/gas_id in initial_gases)
 			air_contents.adjust_gas(gas_id, initial_gases[gas_id] < 0 ? MolesForPressure() : initial_gases[gas_id])
-	if(!isnull(initial_temperature))
-		air_contents.temperature = initial_temperature
 	update_icon()
 
 /obj/machinery/portable_atmospherics/canister/drain_power()
diff --git a/code/game/machinery/atmoalter/portable_atmospherics.dm b/code/game/machinery/atmoalter/portable_atmospherics.dm
index 88e646fb88..5bc3613b02 100644
--- a/code/game/machinery/atmoalter/portable_atmospherics.dm
+++ b/code/game/machinery/atmoalter/portable_atmospherics.dm
@@ -3,11 +3,12 @@
 	use_power = POWER_USE_OFF
 	construct_state = /decl/machine_construction/default/panel_closed
 
-	var/datum/gas_mixture/air_contents = new
+	var/datum/gas_mixture/air_contents
 
 	var/obj/machinery/atmospherics/portables_connector/connected_port
 	var/obj/item/tank/holding
 
+	var/initial_temperature = T20C
 	var/volume = 0
 	var/destroyed = 0
 
@@ -22,8 +23,7 @@
 
 /obj/machinery/portable_atmospherics/Initialize()
 	..()
-	air_contents.volume = volume
-	air_contents.temperature = T20C
+	air_contents = new(volume, initial_temperature)
 	return INITIALIZE_HINT_LATELOAD
 
 /obj/machinery/portable_atmospherics/LateInitialize()

From 198d8b4a90010c53be9b26aae7551194fc5b1c44 Mon Sep 17 00:00:00 2001
From: EgorDinamit <egorayn2003@gmail.com>
Date: Thu, 15 Feb 2024 14:58:15 +0300
Subject: [PATCH 26/49] Pump fix

---
 code/game/machinery/atmoalter/pump.dm | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/code/game/machinery/atmoalter/pump.dm b/code/game/machinery/atmoalter/pump.dm
index 9f5fdaec83..6bd88f49ee 100644
--- a/code/game/machinery/atmoalter/pump.dm
+++ b/code/game/machinery/atmoalter/pump.dm
@@ -17,18 +17,18 @@
 
 	power_rating = 7500 //7500 W ~ 10 HP
 	power_losses = 150
-	
+
 	machine_name = "portable pump"
 	machine_desc = "Used to equalize the pressure of the atmosphere in a surrounding area with its own contents, or to draw in air from the area around it. Runs on a battery backup; can be connected to atmospherics networks."
 
 /obj/machinery/portable_atmospherics/powered/pump/filled
 	start_pressure = 90 * ONE_ATMOSPHERE
 
-/obj/machinery/portable_atmospherics/powered/pump/New()
-	..()
+/obj/machinery/portable_atmospherics/powered/pump/Initialize()
+	. = ..()
 
 	var/list/air_mix = StandardAirMix()
-	src.air_contents.adjust_multi(GAS_OXYGEN, air_mix[GAS_OXYGEN], GAS_NITROGEN, air_mix[GAS_NITROGEN])
+	air_contents.adjust_multi(GAS_OXYGEN, air_mix[GAS_OXYGEN], GAS_NITROGEN, air_mix[GAS_NITROGEN])
 
 /obj/machinery/portable_atmospherics/powered/pump/on_update_icon()
 	overlays.Cut()

From 391fc1470f7d5a0c50afbfb53cfc40ac17e0d9e7 Mon Sep 17 00:00:00 2001
From: EgorDinamit <egorayn2003@gmail.com>
Date: Thu, 15 Feb 2024 15:17:15 +0300
Subject: [PATCH 27/49] Supermatter is now sold in hidden inv of engi trader

---
 .../trading_station_types/0_always_spawn/engineering.dm       | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/code/modules/trading_stations/trading_station_types/0_always_spawn/engineering.dm b/code/modules/trading_stations/trading_station_types/0_always_spawn/engineering.dm
index 84896177a2..cdee424779 100644
--- a/code/modules/trading_stations/trading_station_types/0_always_spawn/engineering.dm
+++ b/code/modules/trading_stations/trading_station_types/0_always_spawn/engineering.dm
@@ -43,4 +43,8 @@
 		TRADE_CAT_TOOLS = list(
 			/obj/item/storage/toolbox/syndicate = GOODS_DEFAULT,
 			),
+		TRADE_CAT_EQUIPMENT = list(
+			/obj/machinery/power/supermatter/shard = GOODS_DEFAULT,
+			/obj/machinery/power/supermatter = GOODS_DEFAULT,
+			),
 		)

From 5722cdbf462bcee331c55384e95e812abddb9212 Mon Sep 17 00:00:00 2001
From: EgorDinamit <egorayn2003@gmail.com>
Date: Thu, 15 Feb 2024 22:43:00 +0300
Subject: [PATCH 28/49] Payrolls update

---
 code/modules/economy/ATM.dm                   | 36 +++++++++++++++++++
 code/modules/economy/Accounts.dm              | 16 +++++----
 .../file_system/programs/generic/supply.dm    | 31 ++++++++++++++--
 3 files changed, 73 insertions(+), 10 deletions(-)

diff --git a/code/modules/economy/ATM.dm b/code/modules/economy/ATM.dm
index 17690ffbf3..aa311c8900 100644
--- a/code/modules/economy/ATM.dm
+++ b/code/modules/economy/ATM.dm
@@ -2,6 +2,7 @@
 #define CHANGE_SECURITY_LEVEL 1
 #define TRANSFER_FUNDS 2
 #define VIEW_TRANSACTION_LOGS 3
+#define PAYROLLS 4
 
 /obj/item/card/id/var/money = 2000
 
@@ -184,6 +185,17 @@
 							t += "Transaction purpose: <input type='text' name='purpose' value='Funds transfer' style='width:200px; background-color:white;'><br>"
 							t += "<input type='submit' value='Transfer funds'><br>"
 							t += "</form>"
+						if(PAYROLLS)
+							t += "<b>Accounts on payroll:</b>"
+							for(var/acc_id in authenticated_account.payroll_accounts)
+								var/datum/money_account/A = get_account(text2num(acc_id))
+								if(!istype(A))
+									authenticated_account.payroll_accounts -= acc_id
+									continue
+								var/paycheck = authenticated_account.payroll_accounts[acc_id]
+								t += "[A.account_name]: <A href='?src=\ref[src];choice=set_payroll&account=[acc_id]'>[paycheck]</A><br>"
+							t += "<br>"
+							t += "<A href='?src=\ref[src];choice=set_payroll'>Add new account</A>"
 						else
 							t += "<b>Account balance:</b> [GLOB.using_map.local_currency_name_short][authenticated_account.money]"
 							t += "<form name='withdrawal' action='?src=\ref[src]' method='get'>"
@@ -194,6 +206,7 @@
 							t += "<A href='?src=\ref[src];choice=view_screen;view_screen=1'>Change account security level</a><br>"
 							t += "<A href='?src=\ref[src];choice=view_screen;view_screen=2'>Make transfer</a><br>"
 							t += "<A href='?src=\ref[src];choice=view_screen;view_screen=3'>View transaction log</a><br>"
+							t += "<A href='?src=\ref[src];choice=view_screen;view_screen=4'>Setup payrolls</a><br>"
 							t += "<A href='?src=\ref[src];choice=balance_statement'>Print balance statement</a><br>"
 
 					//Logout/back buttons, put here for some modularity and for less repeated code
@@ -421,6 +434,29 @@
 				authenticated_account = null
 				account_security_level = 0
 
+			if("set_payroll")
+				if(!authenticated_account)
+					return
+
+				var/list/payroll = authenticated_account.payroll_accounts
+				var/account_id = href_list["account"]
+				if(!account_id)
+					account_id = input("Enter account number", "Account payroll") as num|null
+
+				var/datum/money_account/A = get_account(account_id)
+				if(!istype(A))
+					to_chat(usr, SPAN_WARNING("Account with this number does not exist!"))
+					return
+
+				var/autofill_pay = null
+				if(payroll[num2text(account_id)])
+					autofill_pay = payroll[num2text(account_id)]
+				var/account_pay = input("Enter new payroll", "Account payroll", autofill_pay) as num|null
+				if(!account_pay)
+					payroll -= num2text(account_id)
+				else
+					payroll[num2text(account_id)] = account_pay
+
 	interact(usr)
 
 /obj/machinery/atm/proc/scan_user(mob/living/carbon/human/human_user as mob)
diff --git a/code/modules/economy/Accounts.dm b/code/modules/economy/Accounts.dm
index a7dfc0573c..eecec6ba64 100644
--- a/code/modules/economy/Accounts.dm
+++ b/code/modules/economy/Accounts.dm
@@ -5,12 +5,12 @@
 	var/remote_access_pin = 0
 	var/money = 0
 	var/list/transaction_log = list()
-	var/suspended = 0
+	var/suspended = FALSE
 	var/security_level = 0	//0 - auto-identify from worn ID, require only account number
 							//1 - require manual login / account number and pin
 							//2 - require card and manual login
 	var/account_type = ACCOUNT_TYPE_PERSONAL
-	/// Associative list of money accounts which we pay into every 30 minutes; account_number = money
+	/// Associative list of account IDs which we pay into every 30 minutes; account_number = money
 	var/list/payroll_accounts = list()
 
 /datum/money_account/New(var/account_type)
@@ -43,17 +43,19 @@
 // Called by supply subsystem fire() proc every ~30 minutes
 /datum/money_account/proc/PayrollTick()
 	listclearnulls(payroll_accounts)
-	for(var/datum/money_account/A in payroll_accounts)
+	for(var/acc_id in payroll_accounts)
+		var/datum/money_account/A = get_account(text2num(acc_id))
+		if(!istype(A))
+			continue
 		if(!payroll_accounts[A])
 			payroll_accounts[A] = 0
 			continue
-		var/pay = payroll_accounts[A]
+		var/pay = payroll_accounts[acc_id]
 		if(!pay || pay > money)
 			continue
 		transfer(A, pay, "Payroll from [account_name]")
 
-/proc/create_account(var/account_name = "Default account name", var/owner_name, var/starting_funds = 0, var/account_type = ACCOUNT_TYPE_PERSONAL, var/obj/machinery/computer/account_database/source_db)
-
+/proc/create_account(account_name = "Default account name", owner_name, starting_funds = 0, account_type = ACCOUNT_TYPE_PERSONAL, obj/machinery/computer/account_database/source_db)
 	//create a new account
 	var/datum/money_account/M = new()
 	M.account_name = account_name
@@ -110,7 +112,7 @@
 	if(D && D.security_level <= security_level_passed && (!D.security_level || D.remote_access_pin == attempt_pin_number) )
 		return D
 
-/proc/get_account(var/account_number)
+/proc/get_account(account_number)
 	for(var/datum/money_account/D in all_money_accounts)
 		if(D.account_number == account_number)
 			return D
diff --git a/code/modules/modular_computers/file_system/programs/generic/supply.dm b/code/modules/modular_computers/file_system/programs/generic/supply.dm
index a7cf554840..3d649dc8bc 100644
--- a/code/modules/modular_computers/file_system/programs/generic/supply.dm
+++ b/code/modules/modular_computers/file_system/programs/generic/supply.dm
@@ -279,7 +279,17 @@
 
 	if(href_list["PRG_account"])
 		var/obj/item/stock_parts/computer/card_slot/card_slot = computer.get_component(PART_CARD)
-		var/acc_num = input("Enter account number", "Account linking", card_slot?.stored_card?.associated_account_number) as num|null
+		var/obj/item/card/id/ID = card_slot.stored_card
+		if(!istype(ID))
+			ID = usr.GetIdCard()
+		// Account security level is 0 - auto-login from the ID
+		if(istype(ID) && ID.associated_account_number)
+			var/datum/money_account/A = get_account(ID.associated_account_number)
+			if(istype(A) && A.security_level == 0)
+				account = A
+				return TRUE
+
+		var/acc_num = input("Enter account number", "Account linking", ID.associated_account_number) as num|null
 		if(!acc_num)
 			return
 
@@ -287,7 +297,7 @@
 		if(!acc_pin)
 			return
 
-		var/card_check = card_slot?.stored_card?.associated_account_number == acc_num
+		var/card_check = ID.associated_account_number == acc_num
 		var/datum/money_account/A = attempt_account_access(acc_num, acc_pin, card_check ? 2 : 1, TRUE)
 		if(!A)
 			to_chat(usr, SPAN_WARNING("Unable to link account: access denied."))
@@ -318,6 +328,9 @@
 		if(!account)
 			to_chat(usr, SPAN_WARNING("ERROR: No account linked."))
 			return
+		if(account.suspended)
+			to_chat(usr, SPAN_WARNING("ERROR: Linked account is suspended."))
+			return
 		if(LAZYLEN(station.whitelist_factions) && !(faction in station.whitelist_factions))
 			to_chat(usr, SPAN_WARNING("ERROR: Trading is forbidden for your associated faction."))
 			return
@@ -345,6 +358,9 @@
 		if(!account)
 			to_chat(usr, SPAN_WARNING("ERROR: No account linked."))
 			return
+		if(account.suspended)
+			to_chat(usr, SPAN_WARNING("ERROR: Linked account is suspended."))
+			return
 		if(LAZYLEN(station.whitelist_factions) && !(faction in station.whitelist_factions))
 			to_chat(usr, SPAN_WARNING("ERROR: Trading is forbidden for your associated faction."))
 			return
@@ -417,6 +433,9 @@
 		if(orders_locked)
 			to_chat(usr, SPAN_WARNING("ERROR: You cannot place an order at this time. Please wait 10 seconds."))
 			return
+		if(account.suspended)
+			to_chat(usr, SPAN_WARNING("ERROR: Linked account is suspended."))
+			return
 		var/reason = sanitizeName(input("Enter reason(s) for order", "Request Reason", ""), MAX_NAME_LEN)
 		current_order = SSsupply.BuildOrder(account, reason, shopping_list)
 		shopping_list = list()
@@ -608,6 +627,9 @@
 				if(!account)
 					to_chat(usr, SPAN_WARNING("ERROR: No account linked."))
 					return
+				if(account.suspended)
+					to_chat(usr, SPAN_WARNING("ERROR: Linked account is suspended."))
+					return
 				if(get_area(receiving) != get_area(computer) && program_type != "master")
 					to_chat(usr, SPAN_WARNING("ERROR: Receiving beacon is too far from \the [computer]."))
 					return
@@ -622,6 +644,9 @@
 				if(get_area(sending) != get_area(computer) && program_type != "master")
 					to_chat(usr, SPAN_WARNING("ERROR: Sending beacon is too far from \the [computer]."))
 					return
+				if(account.suspended)
+					to_chat(usr, SPAN_WARNING("ERROR: Linked account is suspended."))
+					return
 				SSsupply.Export(sending, account, faction)
 				return TRUE
 
@@ -684,7 +709,7 @@
 			dat += "<A href='?src=\ref[src];PRG_faction=1'>Link Faction</A><br><br>"
 
 		if(account)
-			dat += "Current Account: [account.owner_name]<br>"
+			dat += "Current Account: [account.owner_name][account.suspended ? " <span style='color: [COLOR_RED]'>\[SUSPENDED\]</span>" : ""]<br>"
 			dat += "Balance: [account.get_balance()]<br>"
 			dat += "<a href='?src=\ref[src];PRG_account_unlink=1'>Unlink</A><br><br>"
 		else

From edb7bcb74ce7d0712015313ddb2f88f3151ac031 Mon Sep 17 00:00:00 2001
From: EgorDinamit <egorayn2003@gmail.com>
Date: Thu, 15 Feb 2024 23:00:31 +0300
Subject: [PATCH 29/49] Artifact values

---
 code/modules/item_worth/value_procs.dm                 | 10 ++++++++++
 code/modules/item_worth/worths_list.dm                 |  4 ++--
 .../xenoarcheaology/artifacts/effects/_effect.dm       |  5 +++++
 .../xenoarcheaology/artifacts/effects/bone_break.dm    |  1 +
 .../xenoarcheaology/artifacts/effects/bone_mend.dm     |  1 +
 .../xenoarcheaology/artifacts/effects/cellcharge.dm    |  1 +
 .../xenoarcheaology/artifacts/effects/celldrain.dm     |  1 +
 code/modules/xenoarcheaology/artifacts/effects/cold.dm |  1 +
 .../xenoarcheaology/artifacts/effects/dnaswitch.dm     |  1 +
 .../xenoarcheaology/artifacts/effects/forcefield.dm    |  1 +
 code/modules/xenoarcheaology/artifacts/effects/heal.dm |  1 +
 code/modules/xenoarcheaology/artifacts/effects/heat.dm |  1 +
 .../xenoarcheaology/artifacts/effects/hell_portal.dm   |  8 ++++++++
 code/modules/xenoarcheaology/artifacts/effects/hurt.dm |  1 +
 .../xenoarcheaology/artifacts/effects/organ_mend.dm    |  1 +
 .../xenoarcheaology/artifacts/effects/pushback.dm      |  6 ++++++
 .../xenoarcheaology/artifacts/effects/radiate.dm       |  5 +++++
 .../xenoarcheaology/artifacts/effects/roboheal.dm      |  1 +
 .../xenoarcheaology/artifacts/effects/robohurt.dm      |  1 +
 .../xenoarcheaology/artifacts/effects/skill_buff.dm    |  6 ++++++
 .../xenoarcheaology/artifacts/effects/sleepy.dm        |  1 +
 code/modules/xenoarcheaology/artifacts/effects/stun.dm |  1 +
 .../xenoarcheaology/artifacts/effects/teleport.dm      |  1 +
 23 files changed, 58 insertions(+), 2 deletions(-)

diff --git a/code/modules/item_worth/value_procs.dm b/code/modules/item_worth/value_procs.dm
index e89cfd7add..6f5d4c9938 100644
--- a/code/modules/item_worth/value_procs.dm
+++ b/code/modules/item_worth/value_procs.dm
@@ -113,3 +113,13 @@
 	for(var/gas_id in air_contents.gas)
 		. += gas_data.value[gas_id] * air_contents.gas[gas_id]
 	. = round(.)
+
+/obj/machinery/artifact/Value(base)
+	. = ..()
+	if(effect)
+		. += effect.Value()
+
+/obj/item/anobattery/Value(base)
+	. = ..()
+	if(battery_effect)
+		. += round(battery_effect.Value() * 0.25)
diff --git a/code/modules/item_worth/worths_list.dm b/code/modules/item_worth/worths_list.dm
index 575762b498..9356d35b90 100644
--- a/code/modules/item_worth/worths_list.dm
+++ b/code/modules/item_worth/worths_list.dm
@@ -178,7 +178,7 @@ var/list/worths = list(
 					/obj/item/silencer = 60,
 					/obj/item/fossil = 100,
 					/obj/item/vampiric = 666,
-					/obj/item/anobattery = 1800,
+					/obj/item/anobattery = -1500,
 					/obj/item/anodevice = 3300,
 					/obj/item/scrying = 1000,
 					/obj/item/magic_rock = 1500,
@@ -666,7 +666,7 @@ var/list/worths = list(
 					/obj/machinery/mining/brace = -300,
 					/obj/machinery/auto_cloner = -25000,
 					/obj/machinery/giga_drill = -9000,
-					/obj/machinery/artifact = -18000,
+					/obj/machinery/artifact = -10000,
 					/obj/machinery/power/supermatter/shard = 60000,
 					/obj/machinery/power/supermatter = 200000,
 					/obj/machinery/atmospherics/pipe = 0,
diff --git a/code/modules/xenoarcheaology/artifacts/effects/_effect.dm b/code/modules/xenoarcheaology/artifacts/effects/_effect.dm
index b250def632..64d997b02a 100644
--- a/code/modules/xenoarcheaology/artifacts/effects/_effect.dm
+++ b/code/modules/xenoarcheaology/artifacts/effects/_effect.dm
@@ -18,6 +18,8 @@
 	var/on_time //time artifact should stay on for when toggled
 	var/time_min_range = 50
 	var/time_max_range = 200
+	// Base value of this effect
+	var/value = 0
 
 /datum/artifact_effect/New(atom/artifact)
 	..()
@@ -132,3 +134,6 @@
 		protected += 0.1
 
 	return 1 - protected
+
+/datum/artifact_effect/proc/Value()
+	return value
diff --git a/code/modules/xenoarcheaology/artifacts/effects/bone_break.dm b/code/modules/xenoarcheaology/artifacts/effects/bone_break.dm
index 248b1cddf1..e43870ffc6 100644
--- a/code/modules/xenoarcheaology/artifacts/effects/bone_break.dm
+++ b/code/modules/xenoarcheaology/artifacts/effects/bone_break.dm
@@ -6,6 +6,7 @@
 		)
 	possible_effect_types = list(EFFECT_TOUCH, EFFECT_PULSE)
 	cooldown_time = 100
+	value = 4000
 
 /datum/artifact_effect/bone_break/getDescription()
 	return "The artifact emits waves of shattering energy."
diff --git a/code/modules/xenoarcheaology/artifacts/effects/bone_mend.dm b/code/modules/xenoarcheaology/artifacts/effects/bone_mend.dm
index 92d6e6ecb8..314f6fa0c7 100644
--- a/code/modules/xenoarcheaology/artifacts/effects/bone_mend.dm
+++ b/code/modules/xenoarcheaology/artifacts/effects/bone_mend.dm
@@ -2,6 +2,7 @@
 	name = "bone mend"
 	possible_effect_types = list(EFFECT_TOUCH, EFFECT_PULSE)
 	cooldown_time = 100
+	value = 8000
 
 /datum/artifact_effect/bone_mend/getDescription()
 	return "The artifact emits waves of mending energy."
diff --git a/code/modules/xenoarcheaology/artifacts/effects/cellcharge.dm b/code/modules/xenoarcheaology/artifacts/effects/cellcharge.dm
index bcb9c230a9..9081d691cd 100644
--- a/code/modules/xenoarcheaology/artifacts/effects/cellcharge.dm
+++ b/code/modules/xenoarcheaology/artifacts/effects/cellcharge.dm
@@ -1,6 +1,7 @@
 /datum/artifact_effect/cellcharge
 	name = "cell charge"
 	possible_effect_types = list(EFFECT_TOUCH, EFFECT_AURA, EFFECT_PULSE)
+	value = 5000
 	var/last_message
 
 /datum/artifact_effect/cellcharge/getDescription()
diff --git a/code/modules/xenoarcheaology/artifacts/effects/celldrain.dm b/code/modules/xenoarcheaology/artifacts/effects/celldrain.dm
index 5c2a8ee228..ad46144529 100644
--- a/code/modules/xenoarcheaology/artifacts/effects/celldrain.dm
+++ b/code/modules/xenoarcheaology/artifacts/effects/celldrain.dm
@@ -1,6 +1,7 @@
 /datum/artifact_effect/celldrain
 	name = "cell drain"
 	possible_effect_types = list(EFFECT_TOUCH, EFFECT_AURA, EFFECT_PULSE)
+	value = 2000
 	var/last_message
 
 /datum/artifact_effect/celldrain/getDescription()
diff --git a/code/modules/xenoarcheaology/artifacts/effects/cold.dm b/code/modules/xenoarcheaology/artifacts/effects/cold.dm
index ad461c1165..287ab5a62e 100644
--- a/code/modules/xenoarcheaology/artifacts/effects/cold.dm
+++ b/code/modules/xenoarcheaology/artifacts/effects/cold.dm
@@ -3,6 +3,7 @@
 	name = "cold"
 	possible_effect_types = list(EFFECT_TOUCH, EFFECT_AURA)
 	cooldown_time = 50
+	value = 4000
 	var/target_temp
 
 /datum/artifact_effect/cold/getDescription()
diff --git a/code/modules/xenoarcheaology/artifacts/effects/dnaswitch.dm b/code/modules/xenoarcheaology/artifacts/effects/dnaswitch.dm
index 610a4ca57f..c0587c17ee 100644
--- a/code/modules/xenoarcheaology/artifacts/effects/dnaswitch.dm
+++ b/code/modules/xenoarcheaology/artifacts/effects/dnaswitch.dm
@@ -2,6 +2,7 @@
 /datum/artifact_effect/dnaswitch
 	name = "dnaswitch"
 	possible_effect_types = list(EFFECT_TOUCH, EFFECT_AURA, EFFECT_PULSE)
+	value = 6000
 	var/severity
 
 /datum/artifact_effect/dnaswitch/getDescription()
diff --git a/code/modules/xenoarcheaology/artifacts/effects/forcefield.dm b/code/modules/xenoarcheaology/artifacts/effects/forcefield.dm
index db37c0e4cf..3dbfdc5a06 100644
--- a/code/modules/xenoarcheaology/artifacts/effects/forcefield.dm
+++ b/code/modules/xenoarcheaology/artifacts/effects/forcefield.dm
@@ -3,6 +3,7 @@
 	effect_type = EFFECT_TOUCH
 	cooldown_time = 50
 	possible_effect_types = list(EFFECT_TOUCH, EFFECT_PULSE)
+	value = 6000
 	var/list/created_field = list()
 	var/field_range = 4
 	var/field_color
diff --git a/code/modules/xenoarcheaology/artifacts/effects/heal.dm b/code/modules/xenoarcheaology/artifacts/effects/heal.dm
index 2407cc2daa..b98903b79f 100644
--- a/code/modules/xenoarcheaology/artifacts/effects/heal.dm
+++ b/code/modules/xenoarcheaology/artifacts/effects/heal.dm
@@ -2,6 +2,7 @@
 	name = "heal"
 	possible_effect_types = list(EFFECT_TOUCH, EFFECT_AURA, EFFECT_PULSE)
 	cooldown_time = 50
+	value = 7000
 
 /datum/artifact_effect/heal/getDescription()
 	return "The artifact emits waves of soothing energy."
diff --git a/code/modules/xenoarcheaology/artifacts/effects/heat.dm b/code/modules/xenoarcheaology/artifacts/effects/heat.dm
index dfe6f785f0..c3c9ed965c 100644
--- a/code/modules/xenoarcheaology/artifacts/effects/heat.dm
+++ b/code/modules/xenoarcheaology/artifacts/effects/heat.dm
@@ -3,6 +3,7 @@
 	name = "heat"
 	possible_effect_types = list(EFFECT_TOUCH, EFFECT_AURA)
 	cooldown_time = 50
+	value = 4000
 	var/target_temp
 
 /datum/artifact_effect/heat/getDescription()
diff --git a/code/modules/xenoarcheaology/artifacts/effects/hell_portal.dm b/code/modules/xenoarcheaology/artifacts/effects/hell_portal.dm
index 48a339096b..4a531a2add 100644
--- a/code/modules/xenoarcheaology/artifacts/effects/hell_portal.dm
+++ b/code/modules/xenoarcheaology/artifacts/effects/hell_portal.dm
@@ -1,6 +1,7 @@
 /datum/artifact_effect/hellportal
 	name = "hellportal"
 	effect_type = EFFECT_PULSE
+	value = 1000
 	var/convert_count //how many turfs are converted to lava each activation
 	var/active_portals_max //how many portals can be spawned at each interval
 	var/maximum_mob_count
@@ -49,6 +50,13 @@
 
 	..()
 
+/datum/artifact_effect/hellportal/Value()
+	. = ..()
+	. += convert_count * 1000
+	. += active_portals_max * 2000
+	. += maximum_mob_count * 500
+	. += damage * 100
+
 /datum/artifact_effect/hellportal/DoEffectPulse()
 	if (holder)
 		convert_turfs()
diff --git a/code/modules/xenoarcheaology/artifacts/effects/hurt.dm b/code/modules/xenoarcheaology/artifacts/effects/hurt.dm
index 7f3a8e33e4..175dce030f 100644
--- a/code/modules/xenoarcheaology/artifacts/effects/hurt.dm
+++ b/code/modules/xenoarcheaology/artifacts/effects/hurt.dm
@@ -2,6 +2,7 @@
 	name = "hurt"
 	possible_effect_types = list(EFFECT_TOUCH, EFFECT_AURA, EFFECT_PULSE)
 	cooldown_time = 50
+	value = 3000
 
 /datum/artifact_effect/hurt/getDescription()
 	return "The artifact emits waves of harmful energy."
diff --git a/code/modules/xenoarcheaology/artifacts/effects/organ_mend.dm b/code/modules/xenoarcheaology/artifacts/effects/organ_mend.dm
index d1a0a304a1..564a6117de 100644
--- a/code/modules/xenoarcheaology/artifacts/effects/organ_mend.dm
+++ b/code/modules/xenoarcheaology/artifacts/effects/organ_mend.dm
@@ -2,6 +2,7 @@
 	name = "organ mend"
 	possible_effect_types = list(EFFECT_TOUCH, EFFECT_PULSE)
 	cooldown_time = 100
+	value = 12000
 
 /datum/artifact_effect/organ_mend/getDescription()
 	return "The artifact emits waves that positively affect internal organs."
diff --git a/code/modules/xenoarcheaology/artifacts/effects/pushback.dm b/code/modules/xenoarcheaology/artifacts/effects/pushback.dm
index 3b2a40befc..900264ea45 100644
--- a/code/modules/xenoarcheaology/artifacts/effects/pushback.dm
+++ b/code/modules/xenoarcheaology/artifacts/effects/pushback.dm
@@ -2,6 +2,7 @@
 	name = "pushback"
 	possible_effect_types = list(EFFECT_TOUCH, EFFECT_PULSE)
 	cooldown_time = 50
+	value = 2000
 	var/throw_range
 	var/damage
 	var/speed = 3
@@ -14,6 +15,11 @@
 	throw_range = range + rand(-1, 3)
 	damage = rand(5, 15)
 
+/datum/artifact_effect/pushback/Value()
+	. = ..()
+	. += throw_range * 1500
+	. += damage * 300
+
 /datum/artifact_effect/pushback/DoEffect(mob/toucher)
 	if(holder && istype(toucher, /mob/living))
 		var/mob/living/M = toucher
diff --git a/code/modules/xenoarcheaology/artifacts/effects/radiate.dm b/code/modules/xenoarcheaology/artifacts/effects/radiate.dm
index ffdc7d6823..807a0beaa2 100644
--- a/code/modules/xenoarcheaology/artifacts/effects/radiate.dm
+++ b/code/modules/xenoarcheaology/artifacts/effects/radiate.dm
@@ -1,6 +1,7 @@
 /datum/artifact_effect/radiate
 	name = "radiation"
 	possible_effect_types = list(EFFECT_TOUCH, EFFECT_AURA, EFFECT_PULSE)
+	value = 3000
 	var/radiation_strength
 
 /datum/artifact_effect/radiate/getDescription()
@@ -15,6 +16,10 @@
 	..()
 	radiation_strength = rand(10, 50)
 
+/datum/artifact_effect/radiate/Value()
+	. = ..()
+	. += radiation_strength * 100
+
 /datum/artifact_effect/radiate/DoEffect(mob/living/user)
 	if(istype(user))
 		user.apply_damage(radiation_strength * 2,IRRADIATE, damage_flags = DAM_DISPERSED)
diff --git a/code/modules/xenoarcheaology/artifacts/effects/roboheal.dm b/code/modules/xenoarcheaology/artifacts/effects/roboheal.dm
index c9645c58cf..5df8e9948a 100644
--- a/code/modules/xenoarcheaology/artifacts/effects/roboheal.dm
+++ b/code/modules/xenoarcheaology/artifacts/effects/roboheal.dm
@@ -2,6 +2,7 @@
 	name = "robotic healing"
 	possible_effect_types = list(EFFECT_TOUCH, EFFECT_AURA, EFFECT_PULSE)
 	cooldown_time = 50
+	value = 9000
 	var/last_message
 
 /datum/artifact_effect/roboheal/getDescription()
diff --git a/code/modules/xenoarcheaology/artifacts/effects/robohurt.dm b/code/modules/xenoarcheaology/artifacts/effects/robohurt.dm
index 8cfd4d3166..a3714bf73a 100644
--- a/code/modules/xenoarcheaology/artifacts/effects/robohurt.dm
+++ b/code/modules/xenoarcheaology/artifacts/effects/robohurt.dm
@@ -2,6 +2,7 @@
 	name = "robotic harm"
 	possible_effect_types = list(EFFECT_TOUCH, EFFECT_AURA, EFFECT_PULSE)
 	cooldown_time = 50
+	value = 4000
 	var/last_message
 
 /datum/artifact_effect/robohurt/getDescription()
diff --git a/code/modules/xenoarcheaology/artifacts/effects/skill_buff.dm b/code/modules/xenoarcheaology/artifacts/effects/skill_buff.dm
index 7901ef9c9c..2433f242da 100644
--- a/code/modules/xenoarcheaology/artifacts/effects/skill_buff.dm
+++ b/code/modules/xenoarcheaology/artifacts/effects/skill_buff.dm
@@ -5,6 +5,7 @@
 	cooldown_time = 5 SECONDS
 	time_min_range = 5 SECONDS
 	time_max_range = 20 SECONDS
+	value = 500
 	var/datum/skill_buff/buff_type = /datum/skill_buff/artifact
 	var/decl/hierarchy/skill/buff_skill
 	var/buff_amount = 1
@@ -35,6 +36,11 @@
 	else if(prob(1)) // LEGENDARY
 		buff_amount = 4
 
+/datum/artifact_effect/skill_buff/Value()
+	. = ..()
+	. += buff_amount * 10000
+	. += buff_duration * 2
+
 /datum/artifact_effect/skill_buff/proc/BuffMob(mob/living/carbon/human/H)
 	if(ishuman(H))
 		if(H.buff_skill(list(buff_skill.type = buff_amount), buff_duration, buff_type))
diff --git a/code/modules/xenoarcheaology/artifacts/effects/sleepy.dm b/code/modules/xenoarcheaology/artifacts/effects/sleepy.dm
index 2200890ab9..77738ddf4d 100644
--- a/code/modules/xenoarcheaology/artifacts/effects/sleepy.dm
+++ b/code/modules/xenoarcheaology/artifacts/effects/sleepy.dm
@@ -2,6 +2,7 @@
 	name = "sleepy"
 	possible_effect_types = list(EFFECT_TOUCH, EFFECT_AURA, EFFECT_PULSE)
 	cooldown_time = 50
+	value = 3000
 
 /datum/artifact_effect/sleepy/getDescription()
 	return "May induce temporary sense of harmony and peace in its targets."
diff --git a/code/modules/xenoarcheaology/artifacts/effects/stun.dm b/code/modules/xenoarcheaology/artifacts/effects/stun.dm
index c3269796b8..40a117a6e6 100644
--- a/code/modules/xenoarcheaology/artifacts/effects/stun.dm
+++ b/code/modules/xenoarcheaology/artifacts/effects/stun.dm
@@ -2,6 +2,7 @@
 	name = "stun"
 	possible_effect_types = list(EFFECT_TOUCH, EFFECT_PULSE)
 	cooldown_time = 50
+	value = 5000
 
 /datum/artifact_effect/stun/getDescription()
 	return "Effects include rapid attack on the neural centers of the body."
diff --git a/code/modules/xenoarcheaology/artifacts/effects/teleport.dm b/code/modules/xenoarcheaology/artifacts/effects/teleport.dm
index 9f40d48138..71b88c22c7 100644
--- a/code/modules/xenoarcheaology/artifacts/effects/teleport.dm
+++ b/code/modules/xenoarcheaology/artifacts/effects/teleport.dm
@@ -2,6 +2,7 @@
 	name = "teleport"
 	possible_effect_types = list(EFFECT_TOUCH, EFFECT_PULSE)
 	cooldown_time = 50
+	value = 7000
 	var/list/teleporting = list() //mobs waiting to be teleported
 
 /datum/artifact_effect/teleport/getDescription()

From e62dee658cf5cd04645aec59b71c770e4898a703 Mon Sep 17 00:00:00 2001
From: EgorDinamit <egorayn2003@gmail.com>
Date: Thu, 15 Feb 2024 23:56:42 +0300
Subject: [PATCH 30/49] Fix

---
 code/modules/economy/ATM.dm | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/code/modules/economy/ATM.dm b/code/modules/economy/ATM.dm
index aa311c8900..8b0a5dcd77 100644
--- a/code/modules/economy/ATM.dm
+++ b/code/modules/economy/ATM.dm
@@ -186,7 +186,7 @@
 							t += "<input type='submit' value='Transfer funds'><br>"
 							t += "</form>"
 						if(PAYROLLS)
-							t += "<b>Accounts on payroll:</b>"
+							t += "<b>Accounts on payroll:</b><br>"
 							for(var/acc_id in authenticated_account.payroll_accounts)
 								var/datum/money_account/A = get_account(text2num(acc_id))
 								if(!istype(A))
@@ -195,7 +195,7 @@
 								var/paycheck = authenticated_account.payroll_accounts[acc_id]
 								t += "[A.account_name]: <A href='?src=\ref[src];choice=set_payroll&account=[acc_id]'>[paycheck]</A><br>"
 							t += "<br>"
-							t += "<A href='?src=\ref[src];choice=set_payroll'>Add new account</A>"
+							t += "<A href='?src=\ref[src];choice=set_payroll'>Add new account</A><br>"
 						else
 							t += "<b>Account balance:</b> [GLOB.using_map.local_currency_name_short][authenticated_account.money]"
 							t += "<form name='withdrawal' action='?src=\ref[src]' method='get'>"
@@ -439,7 +439,7 @@
 					return
 
 				var/list/payroll = authenticated_account.payroll_accounts
-				var/account_id = href_list["account"]
+				var/account_id = text2num(href_list["account"])
 				if(!account_id)
 					account_id = input("Enter account number", "Account payroll") as num|null
 

From 0f3754235dfc72313bed87fa304be3071b0c6e61 Mon Sep 17 00:00:00 2001
From: EgorDinamit <egorayn2003@gmail.com>
Date: Fri, 16 Feb 2024 09:48:09 +0300
Subject: [PATCH 31/49] More trading stations

---
 baystation12.dme                              |  3 ++
 code/__defines/supply.dm                      |  1 +
 code/controllers/subsystems/supply.dm         | 13 +++---
 code/game/jobs/access_datum.dm                | 21 ++++++---
 .../items/devices/mind_engraver_chip.dm       | 36 ++++++++++++++++
 code/modules/item_worth/value_procs.dm        |  5 +++
 code/modules/item_worth/worths_list.dm        |  9 ++--
 .../guns/magnetic/magnetic_railgun.dm         |  2 +-
 code/modules/trading_stations/_faction.dm     | 14 ++++++
 .../0_always_spawn/atmos.dm                   |  3 ++
 .../0_always_spawn/medical.dm                 |  1 +
 .../0_always_spawn/mining.dm                  | 43 +++++++++++++++++++
 .../0_always_spawn/science.dm                 | 29 +++++++++++++
 .../3_very_rare/dominion.dm                   | 23 ++++++++++
 14 files changed, 187 insertions(+), 16 deletions(-)
 create mode 100644 code/modules/trading_stations/trading_station_types/0_always_spawn/mining.dm
 create mode 100644 code/modules/trading_stations/trading_station_types/0_always_spawn/science.dm
 create mode 100644 code/modules/trading_stations/trading_station_types/3_very_rare/dominion.dm

diff --git a/baystation12.dme b/baystation12.dme
index b5702e3068..87845e536e 100644
--- a/baystation12.dme
+++ b/baystation12.dme
@@ -3294,9 +3294,12 @@
 #include "code\modules\trading_stations\trading_station_types\0_always_spawn\eva.dm"
 #include "code\modules\trading_stations\trading_station_types\0_always_spawn\materials.dm"
 #include "code\modules\trading_stations\trading_station_types\0_always_spawn\medical.dm"
+#include "code\modules\trading_stations\trading_station_types\0_always_spawn\mining.dm"
+#include "code\modules\trading_stations\trading_station_types\0_always_spawn\science.dm"
 #include "code\modules\trading_stations\trading_station_types\0_always_spawn\security.dm"
 #include "code\modules\trading_stations\trading_station_types\0_always_spawn\terra.dm"
 #include "code\modules\trading_stations\trading_station_types\2_rare\weapons.dm"
+#include "code\modules\trading_stations\trading_station_types\3_very_rare\dominion.dm"
 #include "code\modules\trading_stations\trading_station_types\3_very_rare\obs.dm"
 #include "code\modules\trusted-players\procs.dm"
 #include "code\modules\turbolift\_turbolift.dm"
diff --git a/code/__defines/supply.dm b/code/__defines/supply.dm
index 48f6dbdb93..2ec5ade744 100644
--- a/code/__defines/supply.dm
+++ b/code/__defines/supply.dm
@@ -26,6 +26,7 @@
 #define TRADE_CAT_CHEMCARTS "Chemical Cartridges"
 #define TRADE_CAT_CANISTERS "Gas Canisters"
 #define TRADE_CAT_MACHINES "Machinery"
+#define TRADE_CAT_ARTIFACT "Artifacts"
 
 // As in - faction is a part of us
 #define FACTION_STATE_PROTECTORATE 4
diff --git a/code/controllers/subsystems/supply.dm b/code/controllers/subsystems/supply.dm
index 9e83068f2f..4ff3683584 100644
--- a/code/controllers/subsystems/supply.dm
+++ b/code/controllers/subsystems/supply.dm
@@ -36,6 +36,8 @@ SUBSYSTEM_DEF(supply)
 	var/list/order_queue = list()
 
 	// For exporting
+	/// Maximum price of an atom before it becomes affected by an export modifier
+	var/export_maximum = 25000
 	var/list/export_modifier = list()
 	var/list/export_counter = list()
 	/// Paths of atoms that are entirely unaffected by export price modifiers
@@ -80,7 +82,8 @@ SUBSYSTEM_DEF(supply)
 	for(var/datum/money_account/A in all_money_accounts)
 		A.PayrollTick()
 	for(var/A in export_counter)
-		export_counter[A] = max(0, export_counter[A] -= 10)
+		var/reduction = max(export_maximum, export_counter[A] * 0.5)
+		export_counter[A] = max(0, export_counter[A] -= reduction)
 	ExportCounterCheck()
 
 /datum/controller/subsystem/supply/proc/GetFaction(fac)
@@ -403,8 +406,8 @@ SUBSYSTEM_DEF(supply)
 				if(!(is_path_in_list(item.type, export_modifier_exempt_types)))
 					if(!(item.type in export_counter))
 						export_counter[item.type] = 0
-					if(export_counter[item.type] < 30)
-						export_counter[item.type] += 1
+					if(export_counter[item.type] < export_maximum * 2)
+						export_counter[item.type] += round(min(export_value, export_maximum * 0.25))
 				//SEND_SIGNAL(src, COMSIG_TRADE_BEACON, item)
 				qdel(item)
 				++export_count
@@ -433,8 +436,8 @@ SUBSYSTEM_DEF(supply)
 
 /datum/controller/subsystem/supply/proc/ExportCounterCheck()
 	for(var/A in export_counter)
-		if(export_counter[A] > 20)
-			export_modifier[A] = clamp(round(20 / export_counter[A], 0.01), 0.5, 2.0)
+		if(export_counter[A] > export_maximum)
+			export_modifier[A] = clamp(round(export_maximum / export_counter[A], 0.01), 0.5, 2.0)
 		else if(A in export_modifier)
 			export_modifier -= A
 
diff --git a/code/game/jobs/access_datum.dm b/code/game/jobs/access_datum.dm
index 8388fabcd1..52d6ab480e 100644
--- a/code/game/jobs/access_datum.dm
+++ b/code/game/jobs/access_datum.dm
@@ -483,47 +483,54 @@
 /datum/access/supplylink_solgov
 	id = access_supplylink_solgov
 	desc = "Supply Console - SolGov Link"
-	region = ACCESS_REGION_SUPPLY
+	region = ACCESS_REGION_NONE
 	access_type = ACCESS_TYPE_NONE
 
 /var/const/access_supplylink_terragov = "ACCESS_SUPPLY_LINK_TERRAGOV"
 /datum/access/supplylink_terragov
 	id = access_supplylink_terragov
 	desc = "Supply Console - TerraGov Link"
-	region = ACCESS_REGION_SUPPLY
+	region = ACCESS_REGION_NONE
 	access_type = ACCESS_TYPE_NONE
 
 /var/const/access_supplylink_isc = "ACCESS_SUPPLY_LINK_ISC"
 /datum/access/supplylink_isc
 	id = access_supplylink_isc
 	desc = "Supply Console - ISC Link"
-	region = ACCESS_REGION_SUPPLY
+	region = ACCESS_REGION_NONE
 	access_type = ACCESS_TYPE_NONE
 
 /var/const/access_supplylink_nanotrasen = "ACCESS_SUPPLY_LINK_NANOTRASEN"
 /datum/access/supplylink_nanotrasen
 	id = access_supplylink_nanotrasen
 	desc = "Supply Console - Nanotrasen Link"
-	region = ACCESS_REGION_SUPPLY
+	region = ACCESS_REGION_NONE
 	access_type = ACCESS_TYPE_NONE
 
 /var/const/access_supplylink_cybersun = "ACCESS_SUPPLY_LINK_CYBERSUN"
 /datum/access/supplylink_cybersun
 	id = access_supplylink_cybersun
 	desc = "Supply Console - Cybersun Link"
-	region = ACCESS_REGION_SUPPLY
+	region = ACCESS_REGION_NONE
 	access_type = ACCESS_TYPE_NONE
 
 /var/const/access_supplylink_obs = "ACCESS_SUPPLY_LINK_OBS"
 /datum/access/supplylink_obs
 	id = access_supplylink_obs
 	desc = "Supply Console - OBS Link"
-	region = ACCESS_REGION_SUPPLY
+	region = ACCESS_REGION_NONE
 	access_type = ACCESS_TYPE_NONE
 
 /var/const/access_supplylink_reborn_church = "ACCESS_SUPPLY_LINK_REBORN_CHURCH"
 /datum/access/supplylink_reborn_church
 	id = access_supplylink_reborn_church
 	desc = "Supply Console - Reborn Christian Church Link"
-	region = ACCESS_REGION_SUPPLY
+	region = ACCESS_REGION_NONE
+	access_type = ACCESS_TYPE_NONE
+
+/var/const/access_supplylink_dominion = "ACCESS_SUPPLY_LINK_TERRAN_DOMINION"
+/datum/access/supplylink_dominion
+	id = access_supplylink_dominion
+	desc = "Supply Console - Reborn Christian Church Link"
+	region = ACCESS_REGION_NONE
 	access_type = ACCESS_TYPE_NONE
diff --git a/code/game/objects/items/devices/mind_engraver_chip.dm b/code/game/objects/items/devices/mind_engraver_chip.dm
index ad6e54ba51..2bc80b5a36 100644
--- a/code/game/objects/items/devices/mind_engraver_chip.dm
+++ b/code/game/objects/items/devices/mind_engraver_chip.dm
@@ -46,6 +46,7 @@
 ///////////
 /datum/engraver_data
 	var/chip_type = "UNKNOWN"
+	var/value = 1500
 
 /datum/engraver_data/proc/PrintFunction()
 	return "UNKNOWN"
@@ -55,6 +56,9 @@
 		return FALSE
 	return TRUE
 
+/datum/engraver_data/proc/Value()
+	return value
+
 /* Skills */
 /datum/engraver_data/skill
 	chip_type = "Skill Imprint"
@@ -89,6 +93,14 @@
 	target.skillset.on_levels_change()
 	return TRUE
 
+/datum/engraver_data/skill/Value()
+	. = ..()
+	for(var/decl/hierarchy/skill/S in GLOB.skills)
+		if(!(S.type in skills))
+			continue
+		for(var/i = 1 to skills[S.type])
+			. += S.get_cost(i) * 500
+
 // Random
 /datum/engraver_data/skill/random/New()
 	. = ..()
@@ -148,6 +160,29 @@
 
 	return TRUE
 
+/datum/engraver_data/language/Value()
+	. = ..()
+	for(var/lang in languages)
+		switch(lang)
+			if(LANGUAGE_CHANGELING_GLOBAL, LANGUAGE_CULT_GLOBAL)
+				. += 22000
+			if(LANGUAGE_BORER_GLOBAL)
+				. += 16000
+			if(LANGUAGE_ROBOT_GLOBAL)
+				. += 12000
+			if(LANGUAGE_DRONE_GLOBAL, LANGUAGE_MANTID_BROADCAST, LANGUAGE_ROOTGLOBAL)
+				. += 10000
+			if(LANGUAGE_CULT, LANGUAGE_MANTID_VOCAL, LANGUAGE_MANTID_NONVOCAL, LANGUAGE_ALIUM)
+				. += 8000
+			if(LANGUAGE_NABBER, LANGUAGE_ADHERENT, LANGUAGE_VOX, LANGUAGE_ROOTLOCAL, LANGUAGE_SKRELLIAN, LANGUAGE_UNATHI_SINTA, LANGUAGE_UNATHI_YEOSA)
+				. += 6000
+			if(LANGUAGE_EAL)
+				. += 4000
+			if(LANGUAGE_PRIMITIVE)
+				. += 2000
+			else
+				. += 1000
+
 // Random
 /datum/engraver_data/language/random/New()
 	. = ..()
@@ -187,6 +222,7 @@
 /* Fluff */
 /datum/engraver_data/memory
 	chip_type = "Memory Imprint"
+	value = 1000
 	var/function_text = "UNKNOWN"
 
 /datum/engraver_data/memory/PrintFunction()
diff --git a/code/modules/item_worth/value_procs.dm b/code/modules/item_worth/value_procs.dm
index 6f5d4c9938..dc965606a8 100644
--- a/code/modules/item_worth/value_procs.dm
+++ b/code/modules/item_worth/value_procs.dm
@@ -123,3 +123,8 @@
 	. = ..()
 	if(battery_effect)
 		. += round(battery_effect.Value() * 0.25)
+
+/obj/item/mind_engraver_chip/Value(base)
+	. = ..()
+	if(istype(stored_data))
+		. += stored_data.Value()
diff --git a/code/modules/item_worth/worths_list.dm b/code/modules/item_worth/worths_list.dm
index 9356d35b90..13da7ef707 100644
--- a/code/modules/item_worth/worths_list.dm
+++ b/code/modules/item_worth/worths_list.dm
@@ -6,6 +6,7 @@ var/list/worths = list(
 //ROBOT ASSEMBLIES,
 					/obj/item/device/bot_kit = 300,
 //REAGENT CONTAINERS,
+					/obj/item/reagent_containers/hypospray/vial = -500,
 					/obj/item/reagent_containers/hypospray = -90,
 					/obj/item/reagent_containers/spray = -23,
 					/obj/item/reagent_containers/food/snacks/monkeycube = -25,
@@ -39,6 +40,7 @@ var/list/worths = list(
 					/obj/item/gun/energy/crossbow/largecrossbow = 8600,
 					/obj/item/gun/energy/crossbow = 5750,
 					/obj/item/gun/energy/temperature = 4000,
+					/obj/item/gun/energy/plasmacutter = 1750,
 					/obj/item/gun/energy = 2000,
 //LAUNCHERS,
 					/obj/item/gun/launcher/crossbow = 150,
@@ -121,7 +123,6 @@ var/list/worths = list(
 					/obj/item/pickaxe/drill = 500,
 					/obj/item/pickaxe/jackhammer = 3500,
 					/obj/item/pickaxe/gold = 1000,
-					/obj/item/gun/energy/plasmacutter = 750,
 					/obj/item/pickaxe/diamond = 1500,
 					/obj/item/pickaxe/diamonddrill = 2500,
 					/obj/item/pickaxe = 100,
@@ -167,7 +168,8 @@ var/list/worths = list(
 					/obj/item/cell/hyper = 310,
 					/obj/item/cell/infinite = 50000,
 					/obj/item/cell/potato = 1,
-					/obj/item/cell/slime = 160,
+					/obj/item/cell/slime = 560,
+					/obj/item/cell = 50,
 //SMES COILS,
 					/obj/item/stock_parts/smes_coil/weak = 1000,
 					/obj/item/stock_parts/smes_coil/super_capacity = 5000,
@@ -588,11 +590,12 @@ var/list/worths = list(
 					/obj/item/mop/advanced = 250,
 					/obj/item/mop = 25,
 					/obj/item/spellbook = -8000,
+					/obj/item/mind_engraver_chip = -5000,
 					/obj/item = 5,
 //STRUCTURES,
 					/obj/structure/dogbed = 15,
 					/obj/structure/ore_box = 12,
-					/obj/structure/constructshell = 100,
+					/obj/structure/constructshell = 1000,
 					/obj/structure/cable = 1,
 					/obj/structure/particle_accelerator = 2000,
 					/obj/structure/droppod_door = 65,
diff --git a/code/modules/projectiles/guns/magnetic/magnetic_railgun.dm b/code/modules/projectiles/guns/magnetic/magnetic_railgun.dm
index a97b3037eb..5635911aef 100644
--- a/code/modules/projectiles/guns/magnetic/magnetic_railgun.dm
+++ b/code/modules/projectiles/guns/magnetic/magnetic_railgun.dm
@@ -142,7 +142,7 @@
 	cell = /obj/item/cell/hyper
 	capacitor = /obj/item/stock_parts/capacitor/super
 
-	origin_tech = list(TECH_COMBAT = 9, TECH_MATERIAL = 6, TECH_MAGNET = 8, TECH_DOMINION = 5)
+	origin_tech = list(TECH_COMBAT = 10, TECH_MATERIAL = 6, TECH_MAGNET = 8, TECH_DOMINION = 5)
 
 	firemodes = list(
 		list(mode_name="semiauto", burst=1, fire_delay=null, one_hand_penalty=2, burst_accuracy=null, dispersion=null),
diff --git a/code/modules/trading_stations/_faction.dm b/code/modules/trading_stations/_faction.dm
index 2b2bd89325..90425605b6 100644
--- a/code/modules/trading_stations/_faction.dm
+++ b/code/modules/trading_stations/_faction.dm
@@ -120,6 +120,20 @@
 
 // Misc
 
+/datum/trade_faction/dominion
+	name = FACTION_TERRAN_DOMINION
+	desc = "A part of the Terran Dominion, the most powerful human state. Long lost after vanishing from this universe some hundreds of years ago."
+	relationship = list(
+		FACTION_INDEPENDENT = FACTION_STATE_WAR,
+		FACTION_TERRAGOV = FACTION_STATE_WELCOMING,
+		FACTION_SOL_CENTRAL = FACTION_STATE_WELCOMING,
+		FACTION_ISC = FACTION_STATE_WELCOMING,
+		FACTION_NANOTRASEN = FACTION_STATE_RIVAL,
+		FACTION_CYBERSUN = FACTION_STATE_RIVAL,
+		FACTION_REBORN_CHRISTIAN_CHURCH = FACTION_STATE_RIVAL,
+		)
+	access_required = access_supplylink_dominion
+
 /datum/trade_faction/obs
 	name = FACTION_TERRASENATE_OBS
 	desc = "A part of the Order of the Black Sun, a xenophobic ultra-nationalist terrorist group."
diff --git a/code/modules/trading_stations/trading_station_types/0_always_spawn/atmos.dm b/code/modules/trading_stations/trading_station_types/0_always_spawn/atmos.dm
index 5b10a00d75..94580e8098 100644
--- a/code/modules/trading_stations/trading_station_types/0_always_spawn/atmos.dm
+++ b/code/modules/trading_stations/trading_station_types/0_always_spawn/atmos.dm
@@ -41,4 +41,7 @@
 			/obj/machinery/portable_atmospherics/canister/tritium = GOODS_DEFAULT,
 			/obj/machinery/portable_atmospherics/canister/deuterium = GOODS_DEFAULT,
 			),
+		TRADE_CAT_MACHINES = list(
+			/obj/machinery/portable_atmospherics/powered/scrubber/huge = GOODS_DEFAULT,
+			),
 		)
diff --git a/code/modules/trading_stations/trading_station_types/0_always_spawn/medical.dm b/code/modules/trading_stations/trading_station_types/0_always_spawn/medical.dm
index 7d1e0dadc0..a483d11573 100644
--- a/code/modules/trading_stations/trading_station_types/0_always_spawn/medical.dm
+++ b/code/modules/trading_stations/trading_station_types/0_always_spawn/medical.dm
@@ -17,6 +17,7 @@
 			/obj/item/storage/firstaid/surgery = GOODS_DEFAULT,
 			/obj/item/clothing/glasses/hud/health = GOODS_DEFAULT,
 			/obj/item/device/scanner/health = GOODS_DEFAULT,
+			/obj/item/stock_parts/computer/scanner/reagent = GOODS_DEFAULT,
 			/obj/item/autopsy_scanner = GOODS_DEFAULT,
 			/obj/item/storage/box/pillbottles = GOODS_DEFAULT,
 			/obj/item/storage/box/syringes = GOODS_DEFAULT,
diff --git a/code/modules/trading_stations/trading_station_types/0_always_spawn/mining.dm b/code/modules/trading_stations/trading_station_types/0_always_spawn/mining.dm
new file mode 100644
index 0000000000..b90a13cdec
--- /dev/null
+++ b/code/modules/trading_stations/trading_station_types/0_always_spawn/mining.dm
@@ -0,0 +1,43 @@
+/datum/trading_station/mining
+	name_pool = list(
+		"FTB \"Phoron Fever\"" = "Free Trade Beacon \"Phoron Fever\": Grab that drill and get the deal!",
+		"FTB \"Drills & Ores\"" = "Free Trade Beacon \"Drills & Ores\": Mining equipment for all your dire ore needs.",
+		)
+	uid = "mining"
+	unlock_favor = 8000
+	random_factions = list(
+		FACTION_INDEPENDENT,
+		FACTION_NANOTRASEN,
+		)
+	spawn_always = TRUE
+	markup = 1.2
+	inventory = list(
+		TRADE_CAT_TOOLS = list(
+			/obj/item/pickaxe = GOODS_DEFAULT,
+			/obj/item/shovel = GOODS_DEFAULT,
+			/obj/item/pickaxe/drill = GOODS_DEFAULT,
+			/obj/item/gun/energy/plasmacutter = GOODS_DEFAULT,
+			),
+		TRADE_CAT_EQUIPMENT = list(
+			/obj/item/clothing/glasses/material = GOODS_DEFAULT,
+			/obj/item/clothing/glasses/meson = GOODS_DEFAULT,
+			/obj/item/storage/ore = GOODS_DEFAULT,
+			/obj/structure/largecrate = GOODS_DEFAULT,
+			/obj/item/device/flashlight/lantern = GOODS_DEFAULT,
+			/obj/item/device/flashlight/lamp/floodlamp = GOODS_DEFAULT,
+			/obj/item/grenade/light = GOODS_DEFAULT,
+			/obj/item/device/scanner/mining = GOODS_DEFAULT,
+			/obj/item/device/scanner/gas = GOODS_DEFAULT,
+			),
+		TRADE_CAT_CLOTHING = list(
+			/obj/item/clothing/under/rank/miner = GOODS_DEFAULT,
+			/obj/item/clothing/accessory/storage/brown_vest = GOODS_DEFAULT,
+			/obj/item/clothing/accessory/storage/webbing = GOODS_DEFAULT,
+			),
+		)
+	hidden_inventory = list(
+		TRADE_CAT_TOOLS = list(
+			/obj/item/pickaxe/diamonddrill = GOODS_DEFAULT,
+			/obj/item/pickaxe/jackhammer = GOODS_DEFAULT,
+			),
+		)
diff --git a/code/modules/trading_stations/trading_station_types/0_always_spawn/science.dm b/code/modules/trading_stations/trading_station_types/0_always_spawn/science.dm
new file mode 100644
index 0000000000..f0b33f9818
--- /dev/null
+++ b/code/modules/trading_stations/trading_station_types/0_always_spawn/science.dm
@@ -0,0 +1,29 @@
+/datum/trading_station/science
+	name_pool = list(
+		"CTB \"Absotech\"" = "Corporate Trade Beacon \"Absotech\": For when your tech has to be absolute!",
+		"CTB \"Know-how\"" = "Corporate Trade Beacon \"Know-how\": Learn the secrets of the universe for a small fee!",
+		)
+	uid = "science"
+	unlock_favor = 10000
+	random_factions = list(
+		FACTION_INDEPENDENT,
+		FACTION_NANOTRASEN,
+		FACTION_CYBERSUN,
+		)
+	spawn_always = TRUE
+	markup = 1.2
+	inventory = list(
+		TRADE_CAT_EQUIPMENT = list(
+			/obj/item/device/scanner/xenobio = GOODS_DEFAULT,
+			/obj/item/device/scanner/spectrometer = GOODS_DEFAULT,
+			/obj/item/portable_destructive_analyzer = GOODS_DEFAULT,
+			/obj/item/matter_decompiler = GOODS_DEFAULT,
+			/obj/item/aicard = GOODS_DEFAULT,
+			/obj/structure/anomaly_container = GOODS_DEFAULT,
+			),
+		)
+	hidden_inventory = list(
+		TRADE_CAT_ARTIFACT = list(
+			/obj/machinery/artifact = GOODS_DATA("artifact", list(1, 2), 20000)
+			),
+		)
diff --git a/code/modules/trading_stations/trading_station_types/3_very_rare/dominion.dm b/code/modules/trading_stations/trading_station_types/3_very_rare/dominion.dm
new file mode 100644
index 0000000000..53bc897645
--- /dev/null
+++ b/code/modules/trading_stations/trading_station_types/3_very_rare/dominion.dm
@@ -0,0 +1,23 @@
+/datum/trading_station/dominion
+	name_pool = list(
+		"TDASRTB-S9-149" = "Terran Dominion Automated Short Range Trade Beacon | Sector 9 | Unit 149.",
+		)
+	uid = "dominion"
+	unlock_favor = 20000
+	faction = FACTION_TERRAN_DOMINION
+	spawn_probability = 15
+	start_hidden = TRUE
+	markup = 2.0
+	inventory = list(
+		TRADE_CAT_EQUIPMENT = list(
+			/obj/item/mind_engraver_chip = GOODS_DATA("empty mind engraver chip", list(1, 4), 7000),
+			/obj/item/mind_engraver_chip/random_languages = GOODS_DATA("language engraver chip", list(1, 2), 15000),
+			/obj/item/mind_engraver_chip/random_skills = GOODS_DATA("skill engraver chip", list(1, 2), 30000),
+			),
+		)
+	// If someone manages to get two millions of disposable income - let them have it
+	hidden_inventory = list(
+		TRADE_CAT_WEAPONS = list(
+			/obj/item/gun/magnetic/railgun/automatic/dominion = GOODS_DATA("ST-410 railgun", list(1, 2), 864000),
+			),
+		)

From e3eb5d43bed6e2cc94764eb8eda741b064136bbb Mon Sep 17 00:00:00 2001
From: EgorDinamit <egorayn2003@gmail.com>
Date: Fri, 16 Feb 2024 09:58:39 +0300
Subject: [PATCH 32/49] Fix duplicate access name

---
 code/game/jobs/access_datum.dm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/code/game/jobs/access_datum.dm b/code/game/jobs/access_datum.dm
index 52d6ab480e..0d0b5d73a8 100644
--- a/code/game/jobs/access_datum.dm
+++ b/code/game/jobs/access_datum.dm
@@ -531,6 +531,6 @@
 /var/const/access_supplylink_dominion = "ACCESS_SUPPLY_LINK_TERRAN_DOMINION"
 /datum/access/supplylink_dominion
 	id = access_supplylink_dominion
-	desc = "Supply Console - Reborn Christian Church Link"
+	desc = "Supply Console - Terran Dominion"
 	region = ACCESS_REGION_NONE
 	access_type = ACCESS_TYPE_NONE

From 7252a9a7c6cb39d13a3ebe7f263ff41db0a10c13 Mon Sep 17 00:00:00 2001
From: EgorDinamit <egorayn2003@gmail.com>
Date: Fri, 16 Feb 2024 10:33:03 +0300
Subject: [PATCH 33/49] Fix

---
 .../modular_computers/file_system/programs/generic/supply.dm    | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/code/modules/modular_computers/file_system/programs/generic/supply.dm b/code/modules/modular_computers/file_system/programs/generic/supply.dm
index 3d649dc8bc..ce80b0c2ee 100644
--- a/code/modules/modular_computers/file_system/programs/generic/supply.dm
+++ b/code/modules/modular_computers/file_system/programs/generic/supply.dm
@@ -289,7 +289,7 @@
 				account = A
 				return TRUE
 
-		var/acc_num = input("Enter account number", "Account linking", ID.associated_account_number) as num|null
+		var/acc_num = input("Enter account number", "Account linking", ID?.associated_account_number) as num|null
 		if(!acc_num)
 			return
 

From b71f6cf3eb5b630e05fe69b4fa9297506744ff77 Mon Sep 17 00:00:00 2001
From: EgorDinamit <egorayn2003@gmail.com>
Date: Fri, 16 Feb 2024 10:50:30 +0300
Subject: [PATCH 34/49] Some tweaks

Organ value depends on species rarity
---
 code/modules/item_worth/value_procs.dm                     | 2 ++
 code/modules/item_worth/worths_list.dm                     | 1 +
 .../file_system/programs/generic/supply.dm                 | 7 +++----
 code/modules/species/mantid/mantid.dm                      | 4 ++--
 code/modules/species/outsider/random.dm                    | 2 +-
 code/modules/species/outsider/shadow.dm                    | 1 +
 code/modules/species/outsider/starlight.dm                 | 1 +
 code/modules/species/outsider/vox.dm                       | 2 +-
 code/modules/species/species.dm                            | 2 +-
 code/modules/species/station/adherent.dm                   | 2 +-
 code/modules/species/station/human_subspecies.dm           | 1 +
 code/modules/species/station/skrell.dm                     | 1 +
 code/modules/species/station/unathi.dm                     | 1 +
 13 files changed, 17 insertions(+), 10 deletions(-)

diff --git a/code/modules/item_worth/value_procs.dm b/code/modules/item_worth/value_procs.dm
index dc965606a8..ea74455107 100644
--- a/code/modules/item_worth/value_procs.dm
+++ b/code/modules/item_worth/value_procs.dm
@@ -83,6 +83,8 @@
 
 /obj/item/organ/Value(base)
 	. = ..()
+	if(istype(species))
+		. *= species.rarity_value
 	if(damage)
 		. -= round(. * (damage / max_damage))
 
diff --git a/code/modules/item_worth/worths_list.dm b/code/modules/item_worth/worths_list.dm
index 13da7ef707..44a3204453 100644
--- a/code/modules/item_worth/worths_list.dm
+++ b/code/modules/item_worth/worths_list.dm
@@ -655,6 +655,7 @@ var/list/worths = list(
 //MOBS,
 					/mob/living/carbon/human = -10000,
 					/mob/living/carbon/slime = 5000,
+					/mob/living/carbon/brain = 0,
 					/mob/living/silicon/robot = 10000,
 					/mob/living/silicon/pai = 1000,
 					/mob/living/silicon/ai = 50000,
diff --git a/code/modules/modular_computers/file_system/programs/generic/supply.dm b/code/modules/modular_computers/file_system/programs/generic/supply.dm
index ce80b0c2ee..042950abc6 100644
--- a/code/modules/modular_computers/file_system/programs/generic/supply.dm
+++ b/code/modules/modular_computers/file_system/programs/generic/supply.dm
@@ -283,13 +283,12 @@
 		if(!istype(ID))
 			ID = usr.GetIdCard()
 		// Account security level is 0 - auto-login from the ID
+		var/autofill = null
 		if(istype(ID) && ID.associated_account_number)
 			var/datum/money_account/A = get_account(ID.associated_account_number)
 			if(istype(A) && A.security_level == 0)
-				account = A
-				return TRUE
-
-		var/acc_num = input("Enter account number", "Account linking", ID?.associated_account_number) as num|null
+				autofill = ID.associated_account_number
+		var/acc_num = input("Enter account number", "Account linking", autofill) as num|null
 		if(!acc_num)
 			return
 
diff --git a/code/modules/species/mantid/mantid.dm b/code/modules/species/mantid/mantid.dm
index 50bfff54ea..6319cc2351 100644
--- a/code/modules/species/mantid/mantid.dm
+++ b/code/modules/species/mantid/mantid.dm
@@ -38,7 +38,7 @@
 	min_age =                 1
 	max_age =                20
 	slowdown =               -1
-	rarity_value =            3
+	rarity_value =            4
 	gluttonous =              2
 	body_temperature =        null
 
@@ -147,7 +147,7 @@
 
 	gluttonous =              3
 	slowdown =                2
-	rarity_value =           10
+	rarity_value =           15
 	min_age =                 5
 	max_age =               500
 	blood_volume =         1200
diff --git a/code/modules/species/outsider/random.dm b/code/modules/species/outsider/random.dm
index 75ac1b1e80..66b4b5a012 100644
--- a/code/modules/species/outsider/random.dm
+++ b/code/modules/species/outsider/random.dm
@@ -2,7 +2,7 @@
 	name = SPECIES_ALIEN
 	name_plural = "Humanoids"
 	description = "Some alien humanoid species, unknown to humanity. How exciting."
-	rarity_value = 5
+	rarity_value = 8
 
 	species_flags = SPECIES_FLAG_NO_SCAN
 	spawn_flags = SPECIES_IS_RESTRICTED
diff --git a/code/modules/species/outsider/shadow.dm b/code/modules/species/outsider/shadow.dm
index b395f2aa50..9c63ad828c 100644
--- a/code/modules/species/outsider/shadow.dm
+++ b/code/modules/species/outsider/shadow.dm
@@ -9,6 +9,7 @@
 	bone_material = null
 	skin_material = null
 
+	rarity_value = 6
 	unarmed_types = list(/datum/unarmed_attack/claws/strong, /datum/unarmed_attack/bite/sharp)
 	darksight_range = 8
 	darksight_tint = DARKTINT_GOOD
diff --git a/code/modules/species/outsider/starlight.dm b/code/modules/species/outsider/starlight.dm
index 8dae5e2cb9..c094ecc24a 100644
--- a/code/modules/species/outsider/starlight.dm
+++ b/code/modules/species/outsider/starlight.dm
@@ -26,6 +26,7 @@
 	force_cultural_info = list(
 		TAG_CULTURE = CULTURE_STARLIGHT
 	)
+	rarity_value = 8
 
 /datum/species/starlight/handle_death_check(var/mob/living/carbon/human/H)
 	if(H.health == 0)
diff --git a/code/modules/species/outsider/vox.dm b/code/modules/species/outsider/vox.dm
index d7bf111c2d..2580d56d6d 100644
--- a/code/modules/species/outsider/vox.dm
+++ b/code/modules/species/outsider/vox.dm
@@ -15,7 +15,7 @@
 		/datum/unarmed_attack/punch,
 		/datum/unarmed_attack/bite/strong
 	)
-	rarity_value = 4
+	rarity_value = 7
 	description = "The Vox are the broken remnants of a once-proud race, now reduced to little more than \
 	scavenging vermin who prey on isolated stations, ships or planets to keep their own ancient arkships \
 	alive. They are four to five feet tall, reptillian, beaked, tailed and quilled; human crews often \
diff --git a/code/modules/species/species.dm b/code/modules/species/species.dm
index 1e4017081f..c4b06f0254 100644
--- a/code/modules/species/species.dm
+++ b/code/modules/species/species.dm
@@ -174,7 +174,7 @@
 	var/holder_type
 	var/gluttonous = 0            // Can eat some mobs. Values can be GLUT_TINY, GLUT_SMALLER, GLUT_ANYTHING, GLUT_ITEM_TINY, GLUT_ITEM_NORMAL, GLUT_ITEM_ANYTHING, GLUT_PROJECTILE_VOMIT
 	var/stomach_capacity = 5      // How much stuff they can stick in their stomach
-	var/rarity_value = 1          // Relative rarity/collector value for this species.
+	var/rarity_value = 1          // Relative rarity/collector value for this species. Affects value of the mob and their organs.
 	                              // Determines the organs that the species spawns with and
 	var/list/has_organ = list(    // which required-organ checks are conducted.
 		BP_HEART =    /obj/item/organ/internal/heart,
diff --git a/code/modules/species/station/adherent.dm b/code/modules/species/station/adherent.dm
index 71cb25f2ef..847815bb64 100644
--- a/code/modules/species/station/adherent.dm
+++ b/code/modules/species/station/adherent.dm
@@ -25,7 +25,7 @@
 	blood_mask =              'icons/mob/human_races/species/adherent/blood_mask.dmi'
 
 	siemens_coefficient =     0
-	rarity_value =            6
+	rarity_value =            4
 	min_age =                 8000
 	max_age =                 12000
 	antaghud_offset_y =       14
diff --git a/code/modules/species/station/human_subspecies.dm b/code/modules/species/station/human_subspecies.dm
index 4d49159df0..46aca5a2cd 100644
--- a/code/modules/species/station/human_subspecies.dm
+++ b/code/modules/species/station/human_subspecies.dm
@@ -165,6 +165,7 @@
 	blood_volume =  SPECIES_BLOOD_DEFAULT * 0.85
 	min_age =       18
 	max_age =       45
+	rarity_value = 3
 
 /datum/species/human/mule/handle_post_spawn(var/mob/living/carbon/human/H)
 	if(!H.psi)
diff --git a/code/modules/species/station/skrell.dm b/code/modules/species/station/skrell.dm
index 801cbda929..d729a48352 100644
--- a/code/modules/species/station/skrell.dm
+++ b/code/modules/species/station/skrell.dm
@@ -32,6 +32,7 @@
 	hazard_high_pressure = HAZARD_HIGH_PRESSURE / 0.84615
 	water_soothe_amount = 5
 
+	rarity_value = 2
 	body_temperature = null // cold-blooded, implemented the same way nabbers do it
 
 	darksight_range = 4
diff --git a/code/modules/species/station/unathi.dm b/code/modules/species/station/unathi.dm
index dd89117f54..535be0f8f1 100644
--- a/code/modules/species/station/unathi.dm
+++ b/code/modules/species/station/unathi.dm
@@ -26,6 +26,7 @@
 	flash_mod = 1.2
 	blood_volume = 800
 
+	rarity_value = 2
 	health_hud_intensity = 2
 	hunger_factor = DEFAULT_HUNGER_FACTOR * 2
 

From 57c453706827af5c0bb7025371dffa1c20c540c8 Mon Sep 17 00:00:00 2001
From: EgorDinamit <egorayn2003@gmail.com>
Date: Fri, 16 Feb 2024 11:42:49 +0300
Subject: [PATCH 35/49] Fix payrolls

---
 code/modules/economy/Accounts.dm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/code/modules/economy/Accounts.dm b/code/modules/economy/Accounts.dm
index eecec6ba64..18d20307d4 100644
--- a/code/modules/economy/Accounts.dm
+++ b/code/modules/economy/Accounts.dm
@@ -47,8 +47,8 @@
 		var/datum/money_account/A = get_account(text2num(acc_id))
 		if(!istype(A))
 			continue
-		if(!payroll_accounts[A])
-			payroll_accounts[A] = 0
+		if(!isnum(payroll_accounts[acc_id]))
+			payroll_accounts[acc_id] = 0
 			continue
 		var/pay = payroll_accounts[acc_id]
 		if(!pay || pay > money)

From 2e7d6b1c08c651a41ac5f48353d5a5c0fdb00ed7 Mon Sep 17 00:00:00 2001
From: EgorDinamit <egorayn2003@gmail.com>
Date: Fri, 16 Feb 2024 11:52:43 +0300
Subject: [PATCH 36/49] Engraver uses considerably more power now

---
 code/game/machinery/mind_engraver.dm | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/code/game/machinery/mind_engraver.dm b/code/game/machinery/mind_engraver.dm
index 89c63367ca..722a886e1c 100644
--- a/code/game/machinery/mind_engraver.dm
+++ b/code/game/machinery/mind_engraver.dm
@@ -7,6 +7,9 @@
 	anchored = TRUE
 	construct_state = /decl/machine_construction/default/panel_closed
 
+	idle_power_usage = 500
+	active_power_usage = 90000
+
 	machine_name = "mind engraver"
 	machine_desc = "Mind Engravers are an ultra-tech device that was used by Terran Dominion during its power peak. \
 		Allows to imprint knowledge, skills or new memories into the mind of its occupant."
@@ -277,6 +280,7 @@
 	if(!nanochip || !occupant)
 		return FALSE
 
+	update_use_power(POWER_USE_ACTIVE)
 	currently_imprinting = TRUE
 	imprint_end = world.time + imprint_time
 	visible_message(SPAN_NOTICE("\The [src] chimes as it begins its operation!"))
@@ -285,6 +289,7 @@
 
 /obj/machinery/mind_engraver/proc/StopImprint()
 	currently_imprinting = FALSE
+	update_use_power(POWER_USE_IDLE)
 
 /obj/machinery/mind_engraver/proc/FinishImprint()
 	StopImprint()

From cdf58de7401506f23ebedc07478a33158c192654 Mon Sep 17 00:00:00 2001
From: EgorDinamit <egorayn2003@gmail.com>
Date: Fri, 16 Feb 2024 11:58:37 +0300
Subject: [PATCH 37/49] Dominion trader price change

---
 .../trading_station_types/3_very_rare/dominion.dm      | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/code/modules/trading_stations/trading_station_types/3_very_rare/dominion.dm b/code/modules/trading_stations/trading_station_types/3_very_rare/dominion.dm
index 53bc897645..0557098e9c 100644
--- a/code/modules/trading_stations/trading_station_types/3_very_rare/dominion.dm
+++ b/code/modules/trading_stations/trading_station_types/3_very_rare/dominion.dm
@@ -7,17 +7,17 @@
 	faction = FACTION_TERRAN_DOMINION
 	spawn_probability = 15
 	start_hidden = TRUE
-	markup = 2.0
+	markup = 2.0 // Note: Markup doesn't apply to goods with custom prices, so keep that in mind
 	inventory = list(
 		TRADE_CAT_EQUIPMENT = list(
-			/obj/item/mind_engraver_chip = GOODS_DATA("empty mind engraver chip", list(1, 4), 7000),
-			/obj/item/mind_engraver_chip/random_languages = GOODS_DATA("language engraver chip", list(1, 2), 15000),
-			/obj/item/mind_engraver_chip/random_skills = GOODS_DATA("skill engraver chip", list(1, 2), 30000),
+			/obj/item/mind_engraver_chip = GOODS_DATA("empty mind engraver chip", list(1, 2), 15000),
+			/obj/item/mind_engraver_chip/random_languages = GOODS_DATA("language engraver chip", list(1, 2), 30000),
+			/obj/item/mind_engraver_chip/random_skills = GOODS_DATA("skill engraver chip", list(1, 2), 60000),
 			),
 		)
 	// If someone manages to get two millions of disposable income - let them have it
 	hidden_inventory = list(
 		TRADE_CAT_WEAPONS = list(
-			/obj/item/gun/magnetic/railgun/automatic/dominion = GOODS_DATA("ST-410 railgun", list(1, 2), 864000),
+			/obj/item/gun/magnetic/railgun/automatic/dominion = GOODS_DATA("ST-410 railgun", list(1, 2), 1864000),
 			),
 		)

From 78c90392439fd7533f422fb65a209a46d5335ffc Mon Sep 17 00:00:00 2001
From: EgorDinamit <egorayn2003@gmail.com>
Date: Fri, 16 Feb 2024 12:47:14 +0300
Subject: [PATCH 38/49] Tweak

---
 .../trading_station_types/0_always_spawn/science.dm            | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/code/modules/trading_stations/trading_station_types/0_always_spawn/science.dm b/code/modules/trading_stations/trading_station_types/0_always_spawn/science.dm
index f0b33f9818..eddae9a3a8 100644
--- a/code/modules/trading_stations/trading_station_types/0_always_spawn/science.dm
+++ b/code/modules/trading_stations/trading_station_types/0_always_spawn/science.dm
@@ -4,7 +4,7 @@
 		"CTB \"Know-how\"" = "Corporate Trade Beacon \"Know-how\": Learn the secrets of the universe for a small fee!",
 		)
 	uid = "science"
-	unlock_favor = 10000
+	unlock_favor = 5000
 	random_factions = list(
 		FACTION_INDEPENDENT,
 		FACTION_NANOTRASEN,
@@ -17,7 +17,6 @@
 			/obj/item/device/scanner/xenobio = GOODS_DEFAULT,
 			/obj/item/device/scanner/spectrometer = GOODS_DEFAULT,
 			/obj/item/portable_destructive_analyzer = GOODS_DEFAULT,
-			/obj/item/matter_decompiler = GOODS_DEFAULT,
 			/obj/item/aicard = GOODS_DEFAULT,
 			/obj/structure/anomaly_container = GOODS_DEFAULT,
 			),

From e0ee2bcc1dd7f74cc6ebcab3d0f5f3cf6dbc6add Mon Sep 17 00:00:00 2001
From: EgorDinamit <egorayn2003@gmail.com>
Date: Fri, 16 Feb 2024 13:05:16 +0300
Subject: [PATCH 39/49] Slime extract values

---
 code/modules/item_worth/value_procs.dm        |   8 +-
 code/modules/item_worth/worths_list.dm        |  25 ++-
 .../mob/living/carbon/xenobiological/items.dm | 160 +++++++++---------
 3 files changed, 110 insertions(+), 83 deletions(-)

diff --git a/code/modules/item_worth/value_procs.dm b/code/modules/item_worth/value_procs.dm
index ea74455107..dfe4272275 100644
--- a/code/modules/item_worth/value_procs.dm
+++ b/code/modules/item_worth/value_procs.dm
@@ -19,7 +19,8 @@
 	return ..() * material.value
 
 /obj/item/slime_extract/Value(base)
-	return base * Uses
+	. = ..()
+	. *= Uses
 
 /obj/item/ammo_casing/Value(base)
 	. = ..()
@@ -130,3 +131,8 @@
 	. = ..()
 	if(istype(stored_data))
 		. += stored_data.Value()
+
+/mob/living/carbon/slime/Value(base)
+	. = ..()
+	var/atom/core_type = GetCoreType()
+	. += get_value(core_type)
diff --git a/code/modules/item_worth/worths_list.dm b/code/modules/item_worth/worths_list.dm
index 44a3204453..b365ab848f 100644
--- a/code/modules/item_worth/worths_list.dm
+++ b/code/modules/item_worth/worths_list.dm
@@ -549,7 +549,28 @@ var/list/worths = list(
 					/obj/item/organ/internal = -900,
 					/obj/item/organ = 100,
 //ITEMS,
-					/obj/item/slime_extract = 2500,
+					/obj/item/slime_extract/grey = -1000,
+					/obj/item/slime_extract/purple = -2000,
+					/obj/item/slime_extract/metal = -2000,
+					/obj/item/slime_extract/orange = -2000,
+					/obj/item/slime_extract/blue = -2000,
+					/obj/item/slime_extract/darkblue = -4000,
+					/obj/item/slime_extract/darkpurple = -4000,
+					/obj/item/slime_extract/yellow = -4000,
+					/obj/item/slime_extract/silver = -4000,
+					/obj/item/slime_extract/pink = -8000,
+					/obj/item/slime_extract/red = -8000,
+					/obj/item/slime_extract/gold = -8000,
+					/obj/item/slime_extract/green = -8000,
+					/obj/item/slime_extract/sepia = -8000,
+					/obj/item/slime_extract/bluespace = -8000,
+					/obj/item/slime_extract/cerulean = -8000,
+					/obj/item/slime_extract/pyrite = -8000,
+					/obj/item/slime_extract/lightpink = -16000,
+					/obj/item/slime_extract/oil = -16000,
+					/obj/item/slime_extract/adamantine = -16000,
+					/obj/item/slime_extract/black = -16000,
+					/obj/item/slime_extract = -500,
 					/obj/item/robot_parts/robot_component = 250,
 					/obj/item/robot_parts = 30,
 					/obj/item/modular_computer/tablet = 600,
@@ -654,7 +675,7 @@ var/list/worths = list(
 					/mob/living/bot = 300,
 //MOBS,
 					/mob/living/carbon/human = -10000,
-					/mob/living/carbon/slime = 5000,
+					/mob/living/carbon/slime = -2500,
 					/mob/living/carbon/brain = 0,
 					/mob/living/silicon/robot = 10000,
 					/mob/living/silicon/pai = 1000,
diff --git a/code/modules/mob/living/carbon/xenobiological/items.dm b/code/modules/mob/living/carbon/xenobiological/items.dm
index 1bc2206858..fbec5ced81 100644
--- a/code/modules/mob/living/carbon/xenobiological/items.dm
+++ b/code/modules/mob/living/carbon/xenobiological/items.dm
@@ -13,18 +13,18 @@
 	var/enhanced = 0 //has it been enhanced before?
 	atom_flags = ATOM_FLAG_OPEN_CONTAINER
 
-	attackby(obj/item/O as obj, mob/user as mob)
-		if(istype(O, /obj/item/slimesteroid2))
-			if(enhanced == 1)
-				to_chat(user, "<span class='warning'> This extract has already been enhanced!</span>")
-				return ..()
-			if(Uses == 0)
-				to_chat(user, "<span class='warning'> You can't enhance a used extract!</span>")
-				return ..()
-			to_chat(user, "You apply the enhancer. It now has triple the amount of uses.")
-			Uses = 3
-			enhanced = 1
-			qdel(O)
+/obj/item/slime_extract/attackby(obj/item/O, mob/user)
+	if(istype(O, /obj/item/slimesteroid2))
+		if(enhanced == 1)
+			to_chat(user, "<span class='warning'> This extract has already been enhanced!</span>")
+			return ..()
+		if(Uses == 0)
+			to_chat(user, "<span class='warning'> You can't enhance a used extract!</span>")
+			return ..()
+		to_chat(user, "You apply the enhancer. It now has triple the amount of uses.")
+		Uses = 3
+		enhanced = 1
+		qdel(O)
 
 /obj/item/slime_extract/New()
 	SSstatistics.extracted_slime_cores_amount++
@@ -132,33 +132,33 @@
 	icon = 'icons/obj/chemical.dmi'
 	icon_state = "bottle19"
 
-	attack(mob/living/carbon/slime/M as mob, mob/user as mob)
-		if(!istype(M, /mob/living/carbon/slime))//If target is not a slime.
-			to_chat(user, "<span class='warning'> The potion only works on baby slimes!</span>")
-			return ..()
-		if(M.is_adult) //Can't tame adults
-			to_chat(user, "<span class='warning'> Only baby slimes can be tamed!</span>")
-			return..()
-		if(M.stat)
-			to_chat(user, "<span class='warning'> The slime is dead!</span>")
-			return..()
-		if(M.mind)
-			to_chat(user, "<span class='warning'> The slime resists!</span>")
-			return ..()
-		var/mob/living/simple_animal/slime/pet = new /mob/living/simple_animal/slime(M.loc)
-		pet.icon_state = "[M.colour] baby slime"
-		pet.icon_living = "[M.colour] baby slime"
-		pet.icon_dead = "[M.colour] baby slime dead"
-		pet.colour = "[M.colour]"
-		to_chat(user, "You feed the slime the potion, removing it's powers and calming it.")
-		qdel(M)
-		var/newname = sanitize(input(user, "Would you like to give the slime a name?", "Name your new pet", "pet slime") as null|text, MAX_NAME_LEN)
-
-		if (!newname)
-			newname = "pet slime"
-		pet.SetName(newname)
-		pet.real_name = newname
-		qdel(src)
+/obj/item/slimepotion/attack(mob/living/carbon/slime/M, mob/user)
+	if(!istype(M, /mob/living/carbon/slime))//If target is not a slime.
+		to_chat(user, "<span class='warning'> The potion only works on baby slimes!</span>")
+		return ..()
+	if(M.is_adult) //Can't tame adults
+		to_chat(user, "<span class='warning'> Only baby slimes can be tamed!</span>")
+		return..()
+	if(M.stat)
+		to_chat(user, "<span class='warning'> The slime is dead!</span>")
+		return..()
+	if(M.mind)
+		to_chat(user, "<span class='warning'> The slime resists!</span>")
+		return ..()
+	var/mob/living/simple_animal/slime/pet = new /mob/living/simple_animal/slime(M.loc)
+	pet.icon_state = "[M.colour] baby slime"
+	pet.icon_living = "[M.colour] baby slime"
+	pet.icon_dead = "[M.colour] baby slime dead"
+	pet.colour = "[M.colour]"
+	to_chat(user, "You feed the slime the potion, removing it's powers and calming it.")
+	qdel(M)
+	var/newname = sanitize(input(user, "Would you like to give the slime a name?", "Name your new pet", "pet slime") as null|text, MAX_NAME_LEN)
+
+	if (!newname)
+		newname = "pet slime"
+	pet.SetName(newname)
+	pet.real_name = newname
+	qdel(src)
 
 /obj/item/slimepotion2
 	name = "advanced docility potion"
@@ -166,30 +166,30 @@
 	icon = 'icons/obj/chemical.dmi'
 	icon_state = "bottle19"
 
-	attack(mob/living/carbon/slime/M as mob, mob/user as mob)
-		if(!istype(M, /mob/living/carbon/slime/))//If target is not a slime.
-			to_chat(user, "<span class='warning'> The potion only works on slimes!</span>")
-			return ..()
-		if(M.stat)
-			to_chat(user, "<span class='warning'> The slime is dead!</span>")
-			return..()
-		if(M.mind)
-			to_chat(user, "<span class='warning'> The slime resists!</span>")
-			return ..()
-		var/mob/living/simple_animal/adultslime/pet = new /mob/living/simple_animal/adultslime(M.loc)
-		pet.icon_state = "[M.colour] adult slime"
-		pet.icon_living = "[M.colour] adult slime"
-		pet.icon_dead = "[M.colour] baby slime dead"
-		pet.colour = "[M.colour]"
-		to_chat(user, "You feed the slime the potion, removing it's powers and calming it.")
-		qdel(M)
-		var/newname = sanitize(input(user, "Would you like to give the slime a name?", "Name your new pet", "pet slime") as null|text, MAX_NAME_LEN)
-
-		if (!newname)
-			newname = "pet slime"
-		pet.SetName(newname)
-		pet.real_name = newname
-		qdel(src)
+/obj/item/slimepotion2/attack(mob/living/carbon/slime/M, mob/user)
+	if(!istype(M, /mob/living/carbon/slime/))//If target is not a slime.
+		to_chat(user, "<span class='warning'> The potion only works on slimes!</span>")
+		return ..()
+	if(M.stat)
+		to_chat(user, "<span class='warning'> The slime is dead!</span>")
+		return..()
+	if(M.mind)
+		to_chat(user, "<span class='warning'> The slime resists!</span>")
+		return ..()
+	var/mob/living/simple_animal/adultslime/pet = new /mob/living/simple_animal/adultslime(M.loc)
+	pet.icon_state = "[M.colour] adult slime"
+	pet.icon_living = "[M.colour] adult slime"
+	pet.icon_dead = "[M.colour] baby slime dead"
+	pet.colour = "[M.colour]"
+	to_chat(user, "You feed the slime the potion, removing it's powers and calming it.")
+	qdel(M)
+	var/newname = sanitize(input(user, "Would you like to give the slime a name?", "Name your new pet", "pet slime") as null|text, MAX_NAME_LEN)
+
+	if (!newname)
+		newname = "pet slime"
+	pet.SetName(newname)
+	pet.real_name = newname
+	qdel(src)
 
 
 /obj/item/slimesteroid
@@ -198,23 +198,23 @@
 	icon = 'icons/obj/chemical.dmi'
 	icon_state = "bottle16"
 
-	attack(mob/living/carbon/slime/M as mob, mob/user as mob)
-		if(!istype(M, /mob/living/carbon/slime))//If target is not a slime.
-			to_chat(user, "<span class='warning'> The steroid only works on baby slimes!</span>")
-			return ..()
-		if(M.is_adult) //Can't tame adults
-			to_chat(user, "<span class='warning'> Only baby slimes can use the steroid!</span>")
-			return..()
-		if(M.stat)
-			to_chat(user, "<span class='warning'> The slime is dead!</span>")
-			return..()
-		if(M.cores == 3)
-			to_chat(user, "<span class='warning'> The slime already has the maximum amount of extract!</span>")
-			return..()
-
-		to_chat(user, "You feed the slime the steroid. It now has triple the amount of extract.")
-		M.cores = 3
-		qdel(src)
+/obj/item/slimesteroid/attack(mob/living/carbon/slime/M, mob/user)
+	if(!istype(M, /mob/living/carbon/slime))//If target is not a slime.
+		to_chat(user, "<span class='warning'> The steroid only works on baby slimes!</span>")
+		return ..()
+	if(M.is_adult) //Can't tame adults
+		to_chat(user, "<span class='warning'> Only baby slimes can use the steroid!</span>")
+		return..()
+	if(M.stat)
+		to_chat(user, "<span class='warning'> The slime is dead!</span>")
+		return..()
+	if(M.cores == 3)
+		to_chat(user, "<span class='warning'> The slime already has the maximum amount of extract!</span>")
+		return..()
+
+	to_chat(user, "You feed the slime the steroid. It now has triple the amount of extract.")
+	M.cores = 3
+	qdel(src)
 
 /obj/item/slimesteroid2
 	name = "extract enhancer"

From f5d6622c2a9503dac454cab6158dac4d5270b7d4 Mon Sep 17 00:00:00 2001
From: EgorDinamit <egorayn2003@gmail.com>
Date: Fri, 16 Feb 2024 13:52:01 +0300
Subject: [PATCH 40/49] Adds more exempt types

---
 code/controllers/subsystems/supply.dm | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/code/controllers/subsystems/supply.dm b/code/controllers/subsystems/supply.dm
index 4ff3683584..da0e37df9d 100644
--- a/code/controllers/subsystems/supply.dm
+++ b/code/controllers/subsystems/supply.dm
@@ -42,8 +42,14 @@ SUBSYSTEM_DEF(supply)
 	var/list/export_counter = list()
 	/// Paths of atoms that are entirely unaffected by export price modifiers
 	var/list/export_modifier_exempt_types = list(
+		/obj/item/ore,
 		/obj/item/stack,
 		/obj/item/reagent_containers,
+		/obj/item/slime_extract,
+		/obj/item/ammo_casing,
+		/obj/machinery/artifact,
+		/obj/machinery/portable_atmospherics/canister,
+		/mob/living/carbon/slime,
 		)
 
 /datum/controller/subsystem/supply/Initialize()

From e2a28732ec55c8cb764004b41b1f5b082c4e0829 Mon Sep 17 00:00:00 2001
From: EgorDinamit <egorayn2003@gmail.com>
Date: Fri, 16 Feb 2024 14:17:10 +0300
Subject: [PATCH 41/49] External organs cost scales

---
 code/modules/item_worth/worths_list.dm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/code/modules/item_worth/worths_list.dm b/code/modules/item_worth/worths_list.dm
index b365ab848f..ef4f432837 100644
--- a/code/modules/item_worth/worths_list.dm
+++ b/code/modules/item_worth/worths_list.dm
@@ -547,7 +547,7 @@ var/list/worths = list(
 					/obj/item/organ/internal/heart = -2400,
 					/obj/item/organ/internal/brain = -14000,
 					/obj/item/organ/internal = -900,
-					/obj/item/organ = 100,
+					/obj/item/organ = -100,
 //ITEMS,
 					/obj/item/slime_extract/grey = -1000,
 					/obj/item/slime_extract/purple = -2000,

From 198116ff3cb24e824d8fcd77a4aa075f9907018f Mon Sep 17 00:00:00 2001
From: EgorDinamit <egorayn2003@gmail.com>
Date: Fri, 16 Feb 2024 14:19:13 +0300
Subject: [PATCH 42/49] Seeds price fix

---
 code/modules/item_worth/worths_list.dm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/code/modules/item_worth/worths_list.dm b/code/modules/item_worth/worths_list.dm
index ef4f432837..b3d10681e0 100644
--- a/code/modules/item_worth/worths_list.dm
+++ b/code/modules/item_worth/worths_list.dm
@@ -601,7 +601,7 @@ var/list/worths = list(
 					/obj/item/rig_module/fabricator/energy_net = 1200,
 					/obj/item/rig_module/fabricator = 2800,
 					/obj/item/rig_module = 1000,
-					/obj/item/seeds = 10,
+					/obj/item/seeds = -10,
 					/obj/item/bee_smoker = 60,
 					/obj/item/honey_frame = 15,
 					/obj/item/beehive_assembly = 100,

From 4c4ad12419f4edc973bd518fb7bd6647a9b845e5 Mon Sep 17 00:00:00 2001
From: EgorDinamit <egorayn2003@gmail.com>
Date: Fri, 16 Feb 2024 14:50:38 +0300
Subject: [PATCH 43/49] Auto-login at 0 security level

---
 .../file_system/programs/generic/supply.dm                | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/code/modules/modular_computers/file_system/programs/generic/supply.dm b/code/modules/modular_computers/file_system/programs/generic/supply.dm
index 042950abc6..777ea885d2 100644
--- a/code/modules/modular_computers/file_system/programs/generic/supply.dm
+++ b/code/modules/modular_computers/file_system/programs/generic/supply.dm
@@ -292,12 +292,18 @@
 		if(!acc_num)
 			return
 
+		// 0 sec level - auto login
+		var/datum/money_account/A = attempt_account_access(acc_num)
+		if(istype(A))
+			account = A
+			return TRUE
+
 		var/acc_pin = input("Enter PIN", "Account linking") as num|null
 		if(!acc_pin)
 			return
 
 		var/card_check = ID.associated_account_number == acc_num
-		var/datum/money_account/A = attempt_account_access(acc_num, acc_pin, card_check ? 2 : 1, TRUE)
+		A = attempt_account_access(acc_num, acc_pin, card_check ? 2 : 1, TRUE)
 		if(!A)
 			to_chat(usr, SPAN_WARNING("Unable to link account: access denied."))
 			return

From bc68f1e315f76c16914e43f681f67fae8dc6527e Mon Sep 17 00:00:00 2001
From: EgorDinamit <egorayn2003@gmail.com>
Date: Fri, 16 Feb 2024 15:10:22 +0300
Subject: [PATCH 44/49] Dressup can be used on clientless mobs and ghosts

---
 code/modules/admin/admin_verbs.dm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index 593e306d6c..7ec2e582f9 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -949,7 +949,7 @@ var/list/admin_verbs_mentors = list(
 	log_and_message_admins("gave [key_name(T)] the spell [S].")
 
 // Right click panel
-/datum/admins/proc/DressUpMob(mob/M as mob in GLOB.player_list)
+/datum/admins/proc/DressUpMob(mob/M as mob in GLOB.ghost_mob_list + GLOB.human_mob_list)
 	set category = null
 	set name = "Dressup"
 	set desc = "Changes outfit of a target mob. If it is a ghost - spawns their character first."

From 3d90fad1aef6227a13650cf737b4081273245cc1 Mon Sep 17 00:00:00 2001
From: EgorDinamit <egorayn2003@gmail.com>
Date: Fri, 16 Feb 2024 15:22:49 +0300
Subject: [PATCH 45/49] Organ price tweaks

---
 code/modules/item_worth/worths_list.dm | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)

diff --git a/code/modules/item_worth/worths_list.dm b/code/modules/item_worth/worths_list.dm
index b3d10681e0..13147340bf 100644
--- a/code/modules/item_worth/worths_list.dm
+++ b/code/modules/item_worth/worths_list.dm
@@ -531,21 +531,20 @@ var/list/worths = list(
 					/obj/item/device/eftpos = 30,
 					/obj/item/device = 90,
 //ORGANS,
-					/obj/item/organ/internal/brain/adherent = -10000,
 					/obj/item/organ/internal/powered = -2000,
-					/obj/item/organ/internal/larva_producer = -14000,
-					/obj/item/organ/internal/heart/abomination = -9000,
+					/obj/item/organ/internal/larva_producer = -8000,
+					/obj/item/organ/internal/heart/abomination = -6000,
 					/obj/item/organ/internal/posibrain = -2000,
 					/obj/item/organ/internal/voicebox = -1200,
 					/obj/item/organ/internal/eyes/insectoid = -1800,
 					/obj/item/organ/internal/phoron = -2200,
 					/obj/item/organ/internal/acetone = -1900,
 					/obj/item/organ/internal/lungs/insectoid = -1200,
-					/obj/item/organ/internal/brain/starlight = -19000,
-					/obj/item/organ/internal/stomach/vox = -4900,
-					/obj/item/organ/internal/voxstack = -28000,
+					/obj/item/organ/internal/brain/starlight = -10000,
+					/obj/item/organ/internal/stomach/vox = -2900,
+					/obj/item/organ/internal/voxstack = -18000,
 					/obj/item/organ/internal/heart = -2400,
-					/obj/item/organ/internal/brain = -14000,
+					/obj/item/organ/internal/brain = -8000,
 					/obj/item/organ/internal = -900,
 					/obj/item/organ = -100,
 //ITEMS,

From 1ed3659bd70d6a5761c8c5914003d8146a80e89f Mon Sep 17 00:00:00 2001
From: EgorDinamit <egorayn2003@gmail.com>
Date: Sat, 17 Feb 2024 12:09:54 +0300
Subject: [PATCH 46/49] Trading beacon circuits & designs

---
 baystation12.dme                                 |  1 +
 .../circuitboards/machinery/trade_beacon.dm      |  2 +-
 .../modules/research/designs/designs_circuits.dm | 16 +++++++++++++++-
 3 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/baystation12.dme b/baystation12.dme
index 87845e536e..fbc79fe18c 100644
--- a/baystation12.dme
+++ b/baystation12.dme
@@ -1112,6 +1112,7 @@
 #include "code\game\objects\items\weapons\circuitboards\machinery\shieldgen.dm"
 #include "code\game\objects\items\weapons\circuitboards\machinery\telecomms.dm"
 #include "code\game\objects\items\weapons\circuitboards\machinery\teleporter.dm"
+#include "code\game\objects\items\weapons\circuitboards\machinery\trade_beacon.dm"
 #include "code\game\objects\items\weapons\circuitboards\machinery\unary_atmos.dm"
 #include "code\game\objects\items\weapons\grenades\anti_photon_grenade.dm"
 #include "code\game\objects\items\weapons\grenades\chem_grenade.dm"
diff --git a/code/game/objects/items/weapons/circuitboards/machinery/trade_beacon.dm b/code/game/objects/items/weapons/circuitboards/machinery/trade_beacon.dm
index 174269a4df..161a8f29c1 100644
--- a/code/game/objects/items/weapons/circuitboards/machinery/trade_beacon.dm
+++ b/code/game/objects/items/weapons/circuitboards/machinery/trade_beacon.dm
@@ -1,5 +1,5 @@
 /obj/item/stock_parts/circuitboard/trade_beacon
-	origin_tech = list(TECH_BLUESPACE = 2)
+	origin_tech = list(TECH_BLUESPACE = 4)
 	board_type = "machine"
 	req_components = list(
 		/obj/item/stock_parts/capacitor = 3,
diff --git a/code/modules/research/designs/designs_circuits.dm b/code/modules/research/designs/designs_circuits.dm
index e5e1a05b95..74647b16b9 100644
--- a/code/modules/research/designs/designs_circuits.dm
+++ b/code/modules/research/designs/designs_circuits.dm
@@ -728,13 +728,27 @@
 	build_path = /obj/item/stock_parts/circuitboard/bluespacerelay
 	sort_string = "PAAAH"
 
+/datum/design/circuit/trade_beacon_receiving
+	name = "receiving trade beacon"
+	id = "trade_receiving"
+	req_tech = list(TECH_DATA = 4, TECH_BLUESPACE = 4)
+	build_path = /obj/item/stock_parts/circuitboard/trade_beacon/receiving
+	sort_string = "QAAAA"
+
+/datum/design/circuit/trade_beacon_sending
+	name = "sending trade beacon"
+	id = "trade_sending"
+	req_tech = list(TECH_DATA = 4, TECH_BLUESPACE = 4)
+	build_path = /obj/item/stock_parts/circuitboard/trade_beacon/sending
+	sort_string = "QAAAB"
+
 /datum/design/circuit/shield_generator
 	name = "Shield Generator"
 	desc = "Allows for the construction of a shield generator circuit board."
 	id = "shield_generator"
 	req_tech = list(TECH_MAGNET = 3, TECH_POWER = 4)
 	build_path = /obj/item/stock_parts/circuitboard/shield_generator
-	sort_string = "VAAAC"
+	sort_string = "VAAAA"
 
 /datum/design/circuit/shield_diffuser
 	name = "Shield Diffuser"

From 869291fba909ffa28dd98f74b76500ac39a788c4 Mon Sep 17 00:00:00 2001
From: EgorDinamit <egorayn2003@gmail.com>
Date: Sat, 17 Feb 2024 18:48:00 +0300
Subject: [PATCH 47/49] Construct states for trade beacons

---
 code/game/machinery/trade_beacon.dm | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/code/game/machinery/trade_beacon.dm b/code/game/machinery/trade_beacon.dm
index 5b1f216b9f..a25959eb1d 100644
--- a/code/game/machinery/trade_beacon.dm
+++ b/code/game/machinery/trade_beacon.dm
@@ -32,6 +32,7 @@
 /obj/machinery/trade_beacon/sending
 	name = "sending trade beacon"
 	icon_state = "beacon_sending"
+	construct_state = /decl/machine_construction/default/panel_closed
 	var/export_cooldown
 	var/export_cooldown_time = 90 SECONDS
 
@@ -69,6 +70,7 @@
 /* Receiving */
 /obj/machinery/trade_beacon/receiving
 	name = "receiving trade beacon"
+	construct_state = /decl/machine_construction/default/panel_closed
 
 /obj/machinery/trade_beacon/receiving/Initialize()
 	. = ..()

From 7bfec9befb9d480ba9b63205f3d9a18e2190e483 Mon Sep 17 00:00:00 2001
From: EgorDinamit <egorayn2003@gmail.com>
Date: Sun, 18 Feb 2024 00:26:46 +0300
Subject: [PATCH 48/49] Fix spellbook value

---
 code/modules/item_worth/value_procs.dm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/code/modules/item_worth/value_procs.dm b/code/modules/item_worth/value_procs.dm
index dfe4272275..9cd23a7737 100644
--- a/code/modules/item_worth/value_procs.dm
+++ b/code/modules/item_worth/value_procs.dm
@@ -91,7 +91,7 @@
 
 /obj/item/spellbook/Value(base)
 	. = ..()
-	. += length(allowed_spells * 1000)
+	. += length(allowed_spells) * 1000
 	if(!isnull(owner))
 		. *= 0.5
 

From 9a6af068870814a6ff4fdab1de942158efbe7d69 Mon Sep 17 00:00:00 2001
From: EgorDinamit <egorayn2003@gmail.com>
Date: Sun, 18 Feb 2024 20:43:00 +0300
Subject: [PATCH 49/49] Rockets have higher weight

---
 code/modules/projectiles/ammunition/bullets.dm | 1 +
 1 file changed, 1 insertion(+)

diff --git a/code/modules/projectiles/ammunition/bullets.dm b/code/modules/projectiles/ammunition/bullets.dm
index 57b74e7f9d..7d5e7a9b72 100644
--- a/code/modules/projectiles/ammunition/bullets.dm
+++ b/code/modules/projectiles/ammunition/bullets.dm
@@ -274,6 +274,7 @@
 	name = "rocket shell"
 	desc = "An explosive designed to be fired from a launcher."
 	icon_state = "shell_he"
+	w_class = ITEM_SIZE_NORMAL
 	projectile_type = /obj/item/projectile/bullet/rocket
 	caliber = CALIBER_ROCKET
 	fall_sounds = list()