diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm
index 5eb4601be8..dc83dc9eab 100644
--- a/code/game/machinery/vending.dm
+++ b/code/game/machinery/vending.dm
@@ -53,6 +53,8 @@
var/const/WIRE_SHOOTINV = 4
var/check_accounts = 0 // 1 = requires PIN and checks accounts. 0 = You slide an ID, it vends, SPACE COMMUNISM!
+ var/obj/item/weapon/spacecash/ewallet/ewallet
+
/obj/machinery/vending/New()
..()
@@ -150,6 +152,11 @@
else if(istype(W, /obj/item/weapon/card) && currently_vending)
var/obj/item/weapon/card/I = W
scan_card(I)
+ else if (istype(W, /obj/item/weapon/spacecash/ewallet))
+ user.drop_item()
+ W.loc = src
+ ewallet = W
+ user << "\blue You insert the [W] into the [src]"
else if(src.panel_open)
@@ -243,7 +250,10 @@
dat += "Select an item:
" //the rest is just general spacing and bolding
if (premium.len > 0)
- dat += "Coin slot: [coin ? coin : "No coin inserted"] (Remove)
"
+ dat += "Coin slot: [coin ? coin : "No coin inserted"] (Remove)
"
+
+ if (ewallet)
+ dat += "Charge card's credits: [ewallet ? ewallet.worth : "No charge card inserted"] (Remove)
"
if (src.product_records.len == 0)
dat += "No product loaded!"
@@ -317,6 +327,15 @@
usr << "\blue You remove the [coin] from the [src]"
coin = null
+ if(href_list["remove_ewallet"] && !istype(usr,/mob/living/silicon))
+ if (!ewallet)
+ usr << "There is no charge card in this machine."
+ return
+ ewallet.loc = src.loc
+ if(!usr.get_active_hand())
+ usr.put_in_hands(ewallet)
+ usr << "\blue You remove the [ewallet] from the [src]"
+ ewallet = null
if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))))
usr.set_machine(src)
@@ -344,9 +363,17 @@
if(R.price == null)
src.vend(R, usr)
else
- src.currently_vending = R
- src.updateUsrDialog()
-
+ if (ewallet)
+ if (R.price <= ewallet.worth)
+ ewallet.worth -= R.price
+ src.vend(R, usr)
+ else
+ usr << "\red The ewallet doesn't have enough money to pay for that."
+ src.currently_vending = R
+ src.updateUsrDialog()
+ else
+ src.currently_vending = R
+ src.updateUsrDialog()
return
else if (href_list["cancel_buying"])
diff --git a/code/modules/economy/ATM.dm b/code/modules/economy/ATM.dm
index f8e6598b20..9e0aa81ad6 100644
--- a/code/modules/economy/ATM.dm
+++ b/code/modules/economy/ATM.dm
@@ -190,7 +190,7 @@ log transactions
dat += "
"
dat += "Change account security level
"
dat += "Make transfer
"
@@ -310,10 +310,8 @@ log transactions
//remove the money
authenticated_account.money -= amount
- //fae change {
// spawn_money(amount,src.loc)
spawn_ewallet(amount,src.loc)
- //}
//create an entry in the account transaction log
var/datum/transaction/T = new()
@@ -407,9 +405,8 @@ log transactions
human_user.put_in_hands(held_card)
held_card = null
-//fae change {
+
/obj/machinery/atm/proc/spawn_ewallet(var/sum, loc)
var/obj/item/weapon/spacecash/ewallet/E = new /obj/item/weapon/spacecash/ewallet(loc)
E.worth = sum
E.owner_name = authenticated_account.owner_name
-//}
\ No newline at end of file
diff --git a/code/modules/economy/EFTPOS.dm b/code/modules/economy/EFTPOS.dm
index e02741be3e..d13d62aa46 100644
--- a/code/modules/economy/EFTPOS.dm
+++ b/code/modules/economy/EFTPOS.dm
@@ -22,6 +22,7 @@
//create a short manual as well
var/obj/item/weapon/paper/R = new(src.loc)
R.name = "Steps to success: Correct EFTPOS Usage"
+ /*
R.info += "When first setting up your EFTPOS device:"
R.info += "1. Memorise your EFTPOS command code (provided with all EFTPOS devices).
"
R.info += "2. Confirm that your EFTPOS device is connected to your local accounts database. For additional assistance with this step, contact NanoTrasen IT Support
"
@@ -33,6 +34,17 @@
R.info += "4. If at this stage you wish to modify or cancel your transaction, you may simply reset (unlock) your EFTPOS device.
"
R.info += "5. Give your EFTPOS device to the customer, they must authenticate the transaction by swiping their ID card and entering their PIN number.
"
R.info += "6. If done correctly, the transaction will be logged to both accounts with the reference you have entered, the terminal ID of your EFTPOS device and the money transferred across accounts.
"
+ */
+ //Temptative new manual:
+ R.info += "First EFTPOS setup:
"
+ R.info += "1. Memorise your EFTPOS command code (provided with all EFTPOS devices).
"
+ R.info += "2. Connect the EFTPOS to the account in which you want to receive the funds.
"
+ R.info += "When starting a new transaction:
"
+ R.info += "1. Enter the amount of money you want to charge and a purpose message for the new transaction.
"
+ R.info += "2. Lock the new transaction. If you want to modify or cancel the transaction, you simply have to reset your EFTPOS device.
"
+ R.info += "3. Give the EFTPOS device to your customer, he/she must finish the transaction by swiping their ID card or a charge card with enough funds.
"
+ R.info += "4. If everything is done correctly, the money will be transferred. To unlock the device you will have to reset the EFTPOS device.
"
+
//stamp the paper
var/image/stampoverlay = image('icons/obj/bureaucracy.dmi')
@@ -102,7 +114,6 @@
scan_card(I)
else
usr << "\icon[src]Unable to connect to linked account."
- //fae changes {
else if (istype(O, /obj/item/weapon/spacecash/ewallet))
var/obj/item/weapon/spacecash/ewallet/E = O
if (linked_account)
@@ -119,21 +130,20 @@
//create entry in the EFTPOS linked account transaction log
var/datum/transaction/T = new()
- T = new()
T.target_name = E.owner_name //D.owner_name
T.purpose = transaction_purpose
- T.amount = "[transaction_amount]"
+ T.amount = transaction_amount
T.source_terminal = machine_id
T.date = current_date_string
T.time = worldtime2text()
linked_account.transaction_log.Add(T)
else
- usr << "\icon[src]The e-wallet doesn't have that much money!"
+ usr << "\icon[src]The charge card doesn't have that much money!"
else
usr << "\icon[src]Connected account has been suspended."
else
usr << "\icon[src]EFTPOS is not connected to an account."
- //}
+
else
..()
diff --git a/code/modules/economy/cash.dm b/code/modules/economy/cash.dm
index c4a1a755f9..2a709e731a 100644
--- a/code/modules/economy/cash.dm
+++ b/code/modules/economy/cash.dm
@@ -73,9 +73,14 @@ proc/spawn_money(var/sum, spawnloc)
new cash_type(spawnloc)
return
-//Fae changes
/obj/item/weapon/spacecash/ewallet
- name = "E-Wallet"
+ name = "Charge card"
icon_state = "spacecash1000"
- desc = "Worth: Some credits."
- var/owner_name = ""
\ No newline at end of file
+ desc = "A card that holds an amount of money."
+ var/owner_name = "" //So the ATM can set it so the EFTPOS can put a valid name on transactions.
+
+/obj/item/weapon/spacecash/ewallet/examine()
+ set src in view()
+ ..()
+ if (!(usr in view(2)) && usr!=src.loc) return
+ usr << "\blue Charge card's owner: [src.owner_name]. Credits remaining: [src.worth]."
\ No newline at end of file