diff --git a/code/WorkInProgress/Cael_Aislinn/Economy/Accounts.dm b/code/WorkInProgress/Cael_Aislinn/Economy/Accounts.dm
index 5d0159b394..671cb9d45c 100644
--- a/code/WorkInProgress/Cael_Aislinn/Economy/Accounts.dm
+++ b/code/WorkInProgress/Cael_Aislinn/Economy/Accounts.dm
@@ -2,6 +2,7 @@ var/global/current_date_string
var/global/num_financial_terminals = 1
var/global/datum/money_account/station_account
var/global/next_account_number = 0
+var/global/obj/machinery/account_database/centcomm_account_db
/proc/create_station_account()
if(!station_account)
@@ -266,11 +267,12 @@ var/global/next_account_number = 0
R.overlays += stampoverlay
R.stamps += "
This paper has been stamped by the Accounts Database."
-
//add the account
M.transaction_log.Add(T)
accounts.Add(M)
+ return M
+
/obj/machinery/account_database/proc/charge_to_account(var/attempt_account_number, var/source_name, var/purpose, var/terminal_id, var/amount)
for(var/datum/money_account/D in accounts)
if(D.account_number == attempt_account_number)
diff --git a/code/datums/mind.dm b/code/datums/mind.dm
index 82f2e0ffad..c472c22b58 100644
--- a/code/datums/mind.dm
+++ b/code/datums/mind.dm
@@ -61,6 +61,8 @@ datum/mind
New(var/key)
src.key = key
+ //put this here for easier tracking ingame
+ var/datum/money_account/initial_account
proc/transfer_to(mob/living/new_character)
if(!istype(new_character))
diff --git a/code/game/gamemodes/gameticker.dm b/code/game/gamemodes/gameticker.dm
index 8b05340904..825d374e42 100644
--- a/code/game/gamemodes/gameticker.dm
+++ b/code/game/gamemodes/gameticker.dm
@@ -112,6 +112,13 @@ var/global/datum/controller/gameticker/ticker
else
src.mode.announce()
+ //setup the money accounts
+ if(!centcomm_account_db)
+ for(var/obj/machinery/account_database/check_db in world)
+ if(check_db.z == 2)
+ centcomm_account_db = check_db
+ break
+
create_characters() //Create player characters and transfer them
collect_minds()
equip_characters()
diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm
index 03f577659a..d09d7ceb4b 100644
--- a/code/game/jobs/job_controller.dm
+++ b/code/game/jobs/job_controller.dm
@@ -385,13 +385,20 @@ var/global/datum/controller/occupations/job_master
C.rank = rank
C.assignment = title ? title : rank
C.name = "[C.registered_name]'s ID Card ([C.assignment])"
+
+ //put the player's account number onto the ID
+ if(H.mind && H.mind.initial_account)
+ C.associated_account_number = H.mind.initial_account.account_number
+
H.equip_to_slot_or_del(C, slot_wear_id)
+
H.equip_to_slot_or_del(new /obj/item/device/pda(H), slot_belt)
if(locate(/obj/item/device/pda,H))
var/obj/item/device/pda/pda = locate(/obj/item/device/pda,H)
pda.owner = H.real_name
pda.ownjob = C.assignment
pda.name = "PDA-[H.real_name] ([pda.ownjob])"
+
return 1
diff --git a/code/game/machinery/computer/card.dm b/code/game/machinery/computer/card.dm
index 5e9b8256e5..8cee9f811c 100644
--- a/code/game/machinery/computer/card.dm
+++ b/code/game/machinery/computer/card.dm
@@ -124,6 +124,14 @@
var nameField = document.getElementById('namefield');
nameField.style.backgroundColor = "#DDFFDD";
}
+ function markAccountGreen(){
+ var nameField = document.getElementById('accountfield');
+ nameField.style.backgroundColor = "#DDFFDD";
+ }
+ function markAccountRed(){
+ var nameField = document.getElementById('accountfield');
+ nameField.style.backgroundColor = "#FFDDDD";
+ }
function showAll(){
var allJobsSlot = document.getElementById('alljobsslot');
allJobsSlot.innerHTML = "hide
"+ "[jobs_all]";
@@ -139,10 +147,16 @@
carddesc += "registered_name: "
carddesc += ""
carddesc += ""
+
+ carddesc += ""
+
carddesc += "Assignment: "
-
var/jobs = "[target_rank]" //CHECK THIS
-
var/accesses = ""
if(istype(src,/obj/machinery/computer/card/centcom))
accesses += "Central Command:
"
@@ -270,6 +284,13 @@
modify.registered_name = temp_name
else
src.visible_message("[src] buzzes rudely.")
+ if ("account")
+ if (authenticated)
+ var/t2 = modify
+ //var/t1 = input(usr, "What name?", "ID computer", null) as text
+ if ((authenticated && modify == t2 && (in_range(src, usr) || (istype(usr, /mob/living/silicon))) && istype(loc, /turf)))
+ var/account_num = text2num(href_list["account"])
+ modify.associated_account_number = account_num
if ("mode")
mode = text2num(href_list["mode_target"])
if ("print")
diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm
index 4597b038e8..35f3b1ad32 100644
--- a/code/modules/mob/new_player/new_player.dm
+++ b/code/modules/mob/new_player/new_player.dm
@@ -370,6 +370,21 @@
new_character.key = key //Manually transfer the key to log them in
+ //give them an account in the station database
+ if(centcomm_account_db)
+ var/datum/money_account/M = centcomm_account_db.add_account(new_character.name, pre_existing = 1)
+ if(mind)
+ var/remembered_info = "Your account pin is: [M.remote_access_pin]
"
+ remembered_info += "Your account number is: [M.account_number]
"
+ remembered_info += "Your account funds are: [M.money]
"
+
+ if(M.transaction_log.len)
+ var/datum/transaction/T = M.transaction_log[1]
+ remembered_info += "Your account was created on: [T.time], [T.date] at [T.source_terminal]
"
+ mind.store_memory(remembered_info)
+
+ mind.initial_account = M
+
return new_character
proc/ViewManifest()