From 576cbdcf25ee430b99d09232a384a7e2df6bd0d9 Mon Sep 17 00:00:00 2001
From: Deniz <66401072+Oyu07@users.noreply.github.com>
Date: Mon, 18 Mar 2024 18:32:33 +0000
Subject: [PATCH] Cargo "View Contents" Fix (#24562)
* contains_special
* contains special list additions
* keep on testing
* moar
* test test
* get manifest
* make sure
* indentation mistake
---
.../structures/crates_lockers/largecrate.dm | 2 +-
code/modules/supply/supply_order.dm | 4 +++
code/modules/supply/supply_pack.dm | 33 +++++++++++--------
.../supply/supply_packs/pack_organic.dm | 3 ++
.../supply/supply_packs/pack_security.dm | 3 ++
5 files changed, 31 insertions(+), 14 deletions(-)
diff --git a/code/game/objects/structures/crates_lockers/largecrate.dm b/code/game/objects/structures/crates_lockers/largecrate.dm
index 9e7e13612fb..fe235a3fca6 100644
--- a/code/game/objects/structures/crates_lockers/largecrate.dm
+++ b/code/game/objects/structures/crates_lockers/largecrate.dm
@@ -90,7 +90,7 @@
/obj/structure/largecrate/chick/attackby(obj/item/W as obj, mob/user as mob, params)
if(istype(W, /obj/item/crowbar))
var/num = rand(4, 6)
- for(var/i = 0, i < num, i++)
+ for(var/i in 1 to num)
new /mob/living/simple_animal/chick(loc)
return ..()
diff --git a/code/modules/supply/supply_order.dm b/code/modules/supply/supply_order.dm
index d3c7de1f56f..99bd05ad6e8 100644
--- a/code/modules/supply/supply_order.dm
+++ b/code/modules/supply/supply_order.dm
@@ -55,6 +55,10 @@
for(var/atom/A in crate.contents)
slip.info += "
[A.name]"
+ var/special_content = object.get_special_manifest()
+ if(special_content)
+ slip.info += "[special_content]"
+
if(istype(crate, /obj/structure/closet/critter)) // critter crates do not actually spawn mobs yet and have no contains var, but the manifest still needs to list them
var/obj/structure/closet/critter/CritCrate = crate
if(CritCrate.content_mob)
diff --git a/code/modules/supply/supply_pack.dm b/code/modules/supply/supply_pack.dm
index 7a0f5eed633..3a3ce13a8ed 100644
--- a/code/modules/supply/supply_pack.dm
+++ b/code/modules/supply/supply_pack.dm
@@ -1,8 +1,10 @@
/datum/supply_packs
/// The name of this supply pack.
var/name
- /// Paths for the items contained in this pack.
+ /// OBJ: What is inside the crate
var/list/contains = list()
+ /// STRING: What is inside the crate
+ var/list/contains_special = list()
/// The manifest contents for this order.
var/manifest = ""
/// The number of crates that get generated by this pack.
@@ -44,18 +46,18 @@
/datum/supply_packs/New()
. = ..()
- if(contains)
- manifest += ""
- for(var/path in contains)
- if(!path)
- continue
- var/atom/movable/AM = path
- manifest += "- [initial(AM.name)]
"
- //Add the name to the UI manifest
- ui_manifest += "[initial(AM.name)]"
- manifest += "
"
- else
- ui_manifest = list(manifest)
+ manifest += ""
+ for(var/path in contains)
+ if(!path)
+ continue
+ var/atom/movable/AM = path
+ manifest += "- [initial(AM.name)]
"
+ //Add the name to the UI manifest
+ ui_manifest += "[initial(AM.name)]"
+ for(var/item in contains_special)
+ manifest += "- [item]
"
+ ui_manifest += "[item]"
+ manifest += "
"
/**
* Create a supply order for this pack.
@@ -109,3 +111,8 @@
/datum/supply_packs/proc/get_cost()
return cost * SSeconomy.pack_price_modifier
+
+/datum/supply_packs/proc/get_special_manifest(content_list)
+ for(var/item in contains_special)
+ content_list += item
+ return content_list
diff --git a/code/modules/supply/supply_packs/pack_organic.dm b/code/modules/supply/supply_packs/pack_organic.dm
index 26940ae3572..b01d46c70db 100644
--- a/code/modules/supply/supply_packs/pack_organic.dm
+++ b/code/modules/supply/supply_packs/pack_organic.dm
@@ -162,6 +162,9 @@
/datum/supply_packs/organic/chicken
name = "Chicken Crate"
cost = 100
+ contains_special = list(
+ "4 to 6 chickens"
+ )
containertype = /obj/structure/closet/critter/chick
containername = "chicken crate"
diff --git a/code/modules/supply/supply_packs/pack_security.dm b/code/modules/supply/supply_packs/pack_security.dm
index 4e43014af57..b6cad716bf9 100644
--- a/code/modules/supply/supply_packs/pack_security.dm
+++ b/code/modules/supply/supply_packs/pack_security.dm
@@ -352,6 +352,9 @@
/datum/supply_packs/security/secway
name = "Secway Crate"
+ contains_special = list(
+ "Secway"
+ )
cost = 800
containertype = /obj/structure/largecrate/secway
containername = "secway crate"