From d19ea0026c7b7821b467f32b36a9c07c28e2a1e4 Mon Sep 17 00:00:00 2001
From: DGamerL <108773801+DGamerL@users.noreply.github.com>
Date: Sun, 12 Nov 2023 21:04:47 +0100
Subject: [PATCH] Fixes vendor refills not working (#23193)
* What a fucking shitshow
* Examine fixing
* Update code/game/machinery/vendors/vending.dm
---
code/game/machinery/vendors/vending.dm | 23 +++++++++----------
.../objects/items/weapons/vending_items.dm | 10 ++++----
2 files changed, 17 insertions(+), 16 deletions(-)
diff --git a/code/game/machinery/vendors/vending.dm b/code/game/machinery/vendors/vending.dm
index 2365b55154e..2937c9c0b9a 100644
--- a/code/game/machinery/vendors/vending.dm
+++ b/code/game/machinery/vendors/vending.dm
@@ -354,19 +354,18 @@
if(refill_canister && istype(I, refill_canister))
if(stat & (BROKEN|NOPOWER))
to_chat(user, "[src] does not respond.")
- else
- //if the panel is open we attempt to refill the machine
- var/obj/item/vending_refill/canister = I
- if(canister.get_part_rating() == 0)
- to_chat(user, "[canister] is empty!")
- else
- // instantiate canister if needed
- var/transferred = restock(canister)
- if(transferred)
- to_chat(user, "You loaded [transferred] items in [src].")
- else
- to_chat(user, "There's nothing to restock!")
+ return
+
+ var/obj/item/vending_refill/canister = I
+ var/transferred = restock(canister)
+ if(!transferred && !canister.get_part_rating()) // It transferred no products and has no products left, thus it is empty
+ to_chat(user, "[canister] is empty!")
+ else if(transferred) // We transferred some items
+ to_chat(user, "You loaded [transferred] items in [src].")
+ else // Nothing transferred, parts are still left, nothing to restock!
+ to_chat(user, "There's nothing to restock!")
return
+
if(item_slot_check(user, I))
insert_item(user, I)
return
diff --git a/code/game/objects/items/weapons/vending_items.dm b/code/game/objects/items/weapons/vending_items.dm
index caebefc24fc..02681064795 100644
--- a/code/game/objects/items/weapons/vending_items.dm
+++ b/code/game/objects/items/weapons/vending_items.dm
@@ -16,7 +16,7 @@
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, RAD = 0, FIRE = 70, ACID = 30)
// Built automatically from the corresponding vending machine.
- // If null, considered to be full. Otherwise, is list(/typepath = amount).
+ // If null, considered to be full upon being restocked.
var/list/products
var/list/contraband
var/list/premium
@@ -28,15 +28,17 @@
/obj/item/vending_refill/examine(mob/user)
. = ..()
var/num = get_part_rating()
- if (num == INFINITY)
+ if(num == INFINITY)
. += "It's sealed tight, completely full of supplies."
- else if (num == 0)
+ else if(num == 0)
. += "It's empty!"
- else
+ else if(!isnull(num)) // If it's null, then the items haven't been properly added yet.
. += "It can restock [num] item\s."
/obj/item/vending_refill/get_part_rating()
. = 0
+ if(isnull(products) && isnull(contraband) && isnull(premium))
+ return null
for(var/key in products)
. += products[key]
for(var/key in contraband)