From a2a0c4c389520bed9a6feccdd0b474cd1eecd5b7 Mon Sep 17 00:00:00 2001 From: Pinta <> Date: Wed, 14 Feb 2024 21:49:39 -0500 Subject: [PATCH] wew --- .../code/mechanics/den abductors/console.dm | 64 ++++++++--------- .../den abductors/purchaseble_goodies.dm | 71 +++++++++++++++++++ tgstation.dme | 1 + 3 files changed, 100 insertions(+), 36 deletions(-) create mode 100644 GainStation13/code/mechanics/den abductors/purchaseble_goodies.dm diff --git a/GainStation13/code/mechanics/den abductors/console.dm b/GainStation13/code/mechanics/den abductors/console.dm index 03990015..f3d29fec 100644 --- a/GainStation13/code/mechanics/den abductors/console.dm +++ b/GainStation13/code/mechanics/den abductors/console.dm @@ -13,6 +13,8 @@ var/obj/item/abductor/gizmo/gizmo /// The current scale linked with the console var/obj/structure/scale/credits/linked_scale + /// How much of each goodie have we purchased? + var/list/buy_counts = list() /obj/machinery/abductor/feeder_console/attack_hand(mob/user) . = ..() @@ -24,18 +26,11 @@ var/credits = linked_scale?.credits dat += "Gear Credits: [credits]
" - dat += "Transfer credits in exchange for supplies:
" - dat += "Nutri-Pump TURBO Autosurgeon
" - dat += "Meal Vendor Refill
" - dat += "Lipoifier Grenade (Weak)
" - dat += "Lipoifier Grenade (Strong)
" - dat += "Fatbeam Gun
" - dat += "Science Tool
" - dat += "Chameleon Kit
" - dat += "Banana Cream Pie Cannon
" - dat += "Thermal Imaging Glasses
" - dat += "Reagent Gun
" - dat += "Protolathe Kit
" + dat += "Transfer credits in exchange for supplies:
" + for(var/goodie in subtypesof(/datum/feeders_den_goodie)) + var/datum/feeders_den_goodie/temp_goodie = new goodie() + dat += "[temp_goodie.name] (Cost: [temp_goodie.credit_cost])
" + qdel(temp_goodie) if(pad) dat += "Emergency Teleporter System." @@ -60,29 +55,23 @@ if(href_list["teleporter_send"]) TeleporterSend() if(href_list["dispense"]) - switch(href_list["dispense"]) - if("fatbeam") - Dispense(/obj/item/gun/fatbeam, cost=400) - if("tool") - Dispense(/obj/item/abductor/gizmo, cost=120) - if("grenade_weak") - Dispense(/obj/item/grenade/chem_grenade/lipoifier_weak, cost=120) - if("grenade_strong") - Dispense(/obj/item/grenade/chem_grenade/lipoifier_strong, cost=360) - if("nutripump_turbo") - Dispense(/obj/item/autosurgeon/nutripump_turbo, cost=150) - if("vendor_refill") - Dispense(/obj/item/vending_refill/mealdor, cost=100) - if("chameleon") - Dispense(/obj/item/storage/box/syndie_kit/chameleon, cost=300) - if("pie_cannon") - Dispense(/obj/item/pneumatic_cannon/pie/selfcharge, cost=500) - if("thermals") - Dispense(/obj/item/clothing/glasses/thermal/syndi, cost=400) - if("reagent_gun") - Dispense(/obj/item/gun/chem, cost=500) - if("protolathe_kit") - Dispense(/obj/item/storage/box/rndboards, cost=1500) + var/datum_path = href_list["dispense"] + var/datum/feeders_den_goodie/goodie_datum = new datum_path() + var/price = goodie_datum.credit_cost + var/item_path = goodie_datum.item_to_dispense + + if(!isnull(goode.datum.initial_stock) && buy_counts[goodie_datum.name] && (buy_counts[goodie_datum.name] >= goodie_datum.initial_stock)) + say("Unable to purchase more!") + return FALSE + + if(!Dispense(item_path, price)) + return FALSE + + if(buy_counts[goodie_datum.name] == null) + buy_counts[goodie_datum.name] = 0 + + buy_counts[goodie_datum.name] += 1 + qdel(goodie_datum) updateUsrDialog() @@ -133,9 +122,12 @@ return TRUE /obj/machinery/abductor/feeder_console/proc/Dispense(obj/item/new_item, cost = 1) + if(!ispath(new_item)) + return FALSE + if(!linked_scale?.credits || linked_scale.credits < cost) say("Insufficent credits!") - return TRUE + return FALSE linked_scale.credits -= cost say("Incoming supply!") diff --git a/GainStation13/code/mechanics/den abductors/purchaseble_goodies.dm b/GainStation13/code/mechanics/den abductors/purchaseble_goodies.dm new file mode 100644 index 00000000..a070abc3 --- /dev/null +++ b/GainStation13/code/mechanics/den abductors/purchaseble_goodies.dm @@ -0,0 +1,71 @@ +/datum/feeders_den_goodie + /// What is the name of the goodie we want to buy? + var/name + /// How much credits does this cost to buy? + var/credit_cost = 0 + /// How much stock of this can be bought? If this is null, infinite can be bought + var/initial_stock + /// What is the path of the item to dispense? + var/item_to_dispense + +/datum/feeders_den_goodie/food_vendor_refill + name = "Food Vendor Refill" + credit_cost = 100 + item_to_dispense = /obj/item/vending_refill/mealdor + +/datum/feeders_den_goodie/gizmo + name = "Science Tool" + credit_cost = 120 + item_to_dispense = /obj/item/abductor/gizmo/feeder + +/datum/feeders_den_goodie/nutripump_turbo + name = "Nutri-Pump TURBO Autosurgeon" + credit_cost = 150 + item_to_dispense = /obj/item/autosurgeon/nutripump_turbo + +/datum/feeders_den_goodie/fatbeam_gun + name = "Fatbeam gun" + credit_cost = 400 + item_to_dispense = /obj/item/gun/fatbeam + initial_stock = 2 + +/datum/feeders_den_goodie/grenade_weak + name = "Lipofier Grenade (Weak)" + credit_cost = 120 + item_to_dispense = /obj/item/grenade/chem_grenade/lipoifier_weak + initial_stock = 6 + +/datum/feeders_den_goodie/grenade_strong + name = "Lipofier Grenade (Strong)" + credit_cost = 360 + item_to_dispense = /obj/item/grenade/chem_grenade/lipoifier_strong + initial_stock = 3 + +/datum/feeders_den_goodie/chameleon + name = "Chameleon Kit" + credit_cost = 300 + item_to_dispense = /obj/item/storage/box/syndie_kit/chameleon + initial_stock = 2 + +/datum/feeders_den_goodie/pie_cannon + name = "Banana Cream Pie Cannon" + credit_cost = 500 + item_to_dispense = /obj/item/pneumatic_cannon/pie/selfcharge + initial_stock = 2 + +/datum/feeders_den_goodie/thermals + name = "Thermal Imaging Glasses" + credit_cost = 400 + item_to_dispense = /obj/item/clothing/glasses/thermal/syndi + initial_stock = 2 + +/datum/feeders_den_goodie/reagent_gun + name = "Reagent Gun" + credit_cost = 500 + item_to_dispense = /obj/item/gun/chem + +/datum/feeders_den_goodie/protolathe + name = "R&D Kit" + credit_cost = 1500 + item_to_dispense = /obj/item/storage/box/rndboards + initial_stock = 2 diff --git a/tgstation.dme b/tgstation.dme index fbe1dbe5..4feb4645 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -3087,6 +3087,7 @@ #include "GainStation13\code\mechanics\wand.dm" #include "GainStation13\code\mechanics\web_weaving.dm" #include "GainStation13\code\mechanics\den abductors\console.dm" +#include "GainStation13\code\mechanics\den abductors\purchaseble_goodies.dm" #include "GainStation13\code\mobs\cakegolem.dm" #include "GainStation13\code\mobs\chocoslime.dm" #include "GainStation13\code\mobs\races\caloritegolem.dm"