diff --git a/code/game/machinery/computer/orders/order_computer/mining_order.dm b/code/game/machinery/computer/orders/order_computer/mining_order.dm index c5a95241aeb..6a20a20d8ee 100644 --- a/code/game/machinery/computer/orders/order_computer/mining_order.dm +++ b/code/game/machinery/computer/orders/order_computer/mining_order.dm @@ -1,5 +1,6 @@ #define MINING_SHIPPING_MULTIPLIER 0.65 -#define GET_MINING_SHIPPING_MULTIPLIER(cost) round(cost * MINING_SHIPPING_MULTIPLIER,5) +#define GET_MINING_SHIPPING_MULTIPLIER(cost) round(cost * MINING_SHIPPING_MULTIPLIER, 5) +#define CREDIT_TYPE_MINING "mp" /obj/machinery/computer/order_console/mining name = "mining equipment order console" @@ -17,6 +18,8 @@ 35% cheaper than express delivery."} express_tooltip = @{"Sends your purchases instantly."} + credit_type = CREDIT_TYPE_MINING + order_categories = list( CATEGORY_MINING, CATEGORY_CONSUMABLES, @@ -29,8 +32,8 @@ var/failure_message = "Sorry, but you do not have enough mining points." if(!express) final_cost = GET_MINING_SHIPPING_MULTIPLIER(final_cost) - if(final_cost <= card.mining_points) - card.mining_points -= final_cost + if(final_cost <= card.registered_account.mining_points) + card.registered_account.mining_points -= final_cost return TRUE say(failure_message) return FALSE @@ -56,7 +59,7 @@ coupon = null, charge_on_purchase = FALSE, manifest_can_fail = FALSE, - cost_type = "mp", + cost_type = credit_type, can_be_cancelled = FALSE, ) say("Thank you for your purchase! It will arrive on the next cargo shuttle!") @@ -72,7 +75,7 @@ var/mob/living/living_user = user var/obj/item/card/id/id_card = living_user.get_idcard(TRUE) if(id_card) - data["points"] = id_card.mining_points + data["points"] = id_card.registered_account.mining_points return data @@ -186,23 +189,24 @@ var/point_movement = tgui_alert(user, "To ID (from card) or to card (from ID)?", "Mining Points Transfer", list(TO_USER_ID, TO_POINT_CARD)) if(!point_movement) return - var/amount = tgui_input_number(user, "How much do you want to transfer? ID Balance: [attacking_id.mining_points], Card Balance: [points]", "Transfer Points", min_value = 0, round_value = 1) + var/amount = tgui_input_number(user, "How much do you want to transfer? ID Balance: [attacking_id.registered_account.mining_points], Card Balance: [points]", "Transfer Points", min_value = 0, round_value = 1) if(!amount) return switch(point_movement) if(TO_USER_ID) if(amount > points) amount = points - attacking_id.mining_points += amount + attacking_id.registered_account.mining_points += amount points -= amount to_chat(user, span_notice("You transfer [amount] mining points from [src] to [attacking_id].")) if(TO_POINT_CARD) - if(amount > attacking_id.mining_points) - amount = attacking_id.mining_points - attacking_id.mining_points -= amount + if(amount > attacking_id.registered_account.mining_points) + amount = attacking_id.registered_account.mining_points + attacking_id.registered_account.mining_points -= amount points += amount to_chat(user, span_notice("You transfer [amount] mining points from [attacking_id] to [src].")) +#undef CREDIT_TYPE_MINING #undef TO_POINT_CARD #undef TO_USER_ID #undef MINING_SHIPPING_MULTIPLIER diff --git a/code/game/machinery/computer/orders/order_computer/order_computer.dm b/code/game/machinery/computer/orders/order_computer/order_computer.dm index b5a16fbf8f3..552666fc510 100644 --- a/code/game/machinery/computer/orders/order_computer/order_computer.dm +++ b/code/game/machinery/computer/orders/order_computer/order_computer.dm @@ -1,5 +1,6 @@ ///List of all items that can be found in the different types of order consoles, to purchase. GLOBAL_LIST_EMPTY(order_console_products) +#define CREDIT_TYPE_CREDIT "credit" /obj/machinery/computer/order_console name = "Orders Console" @@ -23,6 +24,8 @@ GLOBAL_LIST_EMPTY(order_console_products) ///The channel we will attempt to speak into through our radio. var/radio_channel = RADIO_CHANNEL_SUPPLY + ///The kind of cash does the console use. + var/credit_type = CREDIT_TYPE_CREDIT ///Whether the console can only use express mode ONLY var/forced_express = FALSE ///Multiplied cost to use express mode @@ -67,7 +70,7 @@ GLOBAL_LIST_EMPTY(order_console_products) /obj/machinery/computer/order_console/ui_data(mob/user) var/list/data = list() var/cost = get_total_cost() - data["total_cost"] = "[cost] (Express: [cost*express_cost_multiplier])" + data["total_cost"] = "[cost] (Express: [cost * express_cost_multiplier])" data["off_cooldown"] = COOLDOWN_FINISHED(src, order_cooldown) if(!isliving(user)) @@ -81,6 +84,7 @@ GLOBAL_LIST_EMPTY(order_console_products) /obj/machinery/computer/order_console/ui_static_data(mob/user) var/list/data = list() + data["credit_type"] = credit_type data["express_tooltip"] = express_tooltip data["purchase_tooltip"] = purchase_tooltip data["forced_express"] = forced_express diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm index 1db32a0c12d..56af97af92c 100644 --- a/code/game/objects/items/cards_ids.dm +++ b/code/game/objects/items/cards_ids.dm @@ -56,8 +56,6 @@ /// Cached icon that has been built for this card. Intended for use in chat. var/icon/cached_flat_icon - /// How many magical mining Disney Dollars this card has for spending at the mining equipment vendors. - var/mining_points = 0 /// The name registered on the card (for example: Dr Bryan See) var/registered_name = null /// Linked bank account. @@ -730,9 +728,9 @@ if(registered_age) . += "The card indicates that the holder is [registered_age] years old. [(registered_age < AGE_MINOR) ? "There's a holographic stripe that reads [span_danger("'MINOR: DO NOT SERVE ALCOHOL OR TOBACCO'")] along the bottom of the card." : ""]" - if(mining_points) - . += "There's [mining_points] mining equipment redemption point\s loaded onto this card." if(registered_account) + if(registered_account.mining_points) + . += "There's [registered_account.mining_points] mining point\s loaded onto the card's bank account." . += "The account linked to the ID belongs to '[registered_account.account_holder]' and reports a balance of [registered_account.account_balance] cr." if(registered_account.account_job) var/datum/bank_account/D = SSeconomy.get_dep_account(registered_account.account_job.paycheck_department) diff --git a/code/game/objects/structures/lavaland/geyser.dm b/code/game/objects/structures/lavaland/geyser.dm index cd556a79165..c959a006a7e 100644 --- a/code/game/objects/structures/lavaland/geyser.dm +++ b/code/game/objects/structures/lavaland/geyser.dm @@ -82,7 +82,7 @@ var/obj/item/card/id/card = living.get_idcard() if(card) to_chat(user, span_notice("[point_value] mining points have been paid out!")) - card.mining_points += point_value + card.registered_account.mining_points += point_value /obj/structure/geyser/wittel reagent_id = /datum/reagent/wittel diff --git a/code/modules/economy/account.dm b/code/modules/economy/account.dm index dddc9a5afb5..7f578bb1b39 100644 --- a/code/modules/economy/account.dm +++ b/code/modules/economy/account.dm @@ -5,6 +5,8 @@ var/account_holder = "Rusty Venture" ///How many credits are currently held in the bank account. var/account_balance = 0 + ///How many mining points (shaft miner credits) is held in the bank account, used for mining vendors. + var/mining_points = 0 ///If there are things effecting how much income a player will get, it's reflected here 1 is standard for humans. var/payday_modifier ///The job datum of the account owner. diff --git a/code/modules/mining/machine_redemption.dm b/code/modules/mining/machine_redemption.dm index a8d93501d73..c11db146a06 100644 --- a/code/modules/mining/machine_redemption.dm +++ b/code/modules/mining/machine_redemption.dm @@ -241,7 +241,7 @@ user_id_card = user.get_idcard(TRUE) if(points) if(user_id_card) - user_id_card.mining_points += points + user_id_card.registered_account.mining_points += points points = 0 else to_chat(usr, span_warning("No valid ID detected.")) diff --git a/tgui/packages/tgui/interfaces/ProduceConsole.js b/tgui/packages/tgui/interfaces/ProduceConsole.js index 1a885820e5b..e1b91b7fa85 100644 --- a/tgui/packages/tgui/interfaces/ProduceConsole.js +++ b/tgui/packages/tgui/interfaces/ProduceConsole.js @@ -16,7 +16,7 @@ const TAB2NAME = [ const ShoppingTab = (props, context) => { const { data, act } = useBackend(context); - const { order_categories, order_datums } = data; + const { credit_type, order_categories, order_datums } = data; const [shopIndex, setShopIndex] = useLocalState(context, 'shop-index', 1); const [condensed, setCondensed] = useLocalState(context, 'condensed', false); const mapped_food = order_datums.filter( @@ -84,7 +84,7 @@ const ShoppingTab = (props, context) => { - {' costs ' + item.cost + ' per order.'} + {' costs ' + item.cost + item.credit_type + ' per order.'}