diff --git a/code/game/jobs/job/assistant.dm b/code/game/jobs/job/assistant.dm
index 98c7a4dd986..ef3469b83ea 100644
--- a/code/game/jobs/job/assistant.dm
+++ b/code/game/jobs/job/assistant.dm
@@ -8,6 +8,7 @@
spawn_positions = -1
supervisors = "absolutely everyone"
selection_color = "#dddddd"
+ economic_modifier = 1
access = list() //See /datum/job/assistant/get_access()
minimal_access = list() //See /datum/job/assistant/get_access()
alt_titles = list("Technical Assistant","Medical Intern","Research Assistant","Security Cadet","Visitor")
diff --git a/code/game/jobs/job/captain.dm b/code/game/jobs/job/captain.dm
index f76ef8edb4f..725f7f50fc8 100644
--- a/code/game/jobs/job/captain.dm
+++ b/code/game/jobs/job/captain.dm
@@ -16,6 +16,7 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1)
access = list() //See get_access()
minimal_access = list() //See get_access()
minimal_player_age = 14
+ economic_modifier = 20
equip(var/mob/living/carbon/human/H)
if(!H) return 0
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/captain(H), slot_l_ear)
@@ -60,6 +61,7 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1)
idtype = /obj/item/weapon/card/id/silver
req_admin_notify = 1
minimal_player_age = 10
+ economic_modifier = 15
access = list(access_security, access_sec_doors, access_brig, access_court, access_forensics_lockers,
access_medical, access_engine, access_change_ids, access_ai_upload, access_eva, access_heads,
access_all_personal_lockers, access_maint_tunnels, access_bar, access_janitor, access_construction, access_morgue,
diff --git a/code/game/jobs/job/civilian.dm b/code/game/jobs/job/civilian.dm
index 7d847533530..ac92feca9e3 100644
--- a/code/game/jobs/job/civilian.dm
+++ b/code/game/jobs/job/civilian.dm
@@ -97,6 +97,7 @@
spawn_positions = 1
supervisors = "the head of personnel"
selection_color = "#dddddd"
+ economic_modifier = 7
access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mint, access_mining, access_mining_station)
minimal_access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mint, access_mining, access_mining_station)
@@ -311,6 +312,7 @@
spawn_positions = 2
supervisors = "Nanotrasen officials and Corporate Regulations"
selection_color = "#dddddd"
+ economic_modifier = 7
access = list(access_lawyer, access_court, access_sec_doors, access_maint_tunnels, access_heads)
minimal_access = list(access_lawyer, access_court, access_sec_doors, access_heads)
diff --git a/code/game/jobs/job/engineering.dm b/code/game/jobs/job/engineering.dm
index 5c86336cb6c..27cd6a753e5 100644
--- a/code/game/jobs/job/engineering.dm
+++ b/code/game/jobs/job/engineering.dm
@@ -11,6 +11,7 @@
selection_color = "#ffeeaa"
idtype = /obj/item/weapon/card/id/silver
req_admin_notify = 1
+ economic_modifier = 10
access = list(access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels,
access_teleporter, access_external_airlocks, access_atmospherics, access_emergency_storage, access_eva,
access_heads, access_construction, access_sec_doors,
@@ -53,6 +54,7 @@
spawn_positions = 5
supervisors = "the chief engineer"
selection_color = "#fff5cc"
+ economic_modifier = 5
access = list(access_eva, access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, access_external_airlocks, access_construction, access_atmospherics)
minimal_access = list(access_eva, access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, access_external_airlocks, access_construction)
alt_titles = list("Maintenance Technician","Engine Technician","Electrician")
@@ -89,6 +91,7 @@
spawn_positions = 2
supervisors = "the chief engineer"
selection_color = "#fff5cc"
+ economic_modifier = 5
access = list(access_eva, access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, access_external_airlocks, access_construction, access_atmospherics, access_external_airlocks)
minimal_access = list(access_eva, access_engine, access_atmospherics, access_maint_tunnels, access_emergency_storage, access_construction, access_external_airlocks)
diff --git a/code/game/jobs/job/job.dm b/code/game/jobs/job/job.dm
index 8b51b74a77a..27fb23d1bf0 100644
--- a/code/game/jobs/job/job.dm
+++ b/code/game/jobs/job/job.dm
@@ -20,6 +20,9 @@
var/department = null // Does this position have a department tag?
var/head_position = 0 // Is this position Command?
+ var/account_allowed = 1 // Does this job type come with a station account?
+ var/economic_modifier = 2 // With how much does this job modify the initial account amount?
+
/datum/job/proc/equip(var/mob/living/carbon/human/H)
return 1
@@ -28,6 +31,28 @@
H.species.equip_survival_gear(H,0)
return 1
+/datum/job/proc/setup_account(var/mob/living/carbon/human/H)
+ if(!account_allowed || (H.mind && H.mind.initial_account))
+ return
+
+ //give them an account in the station database
+ var/money_amount = rand(50,500) * economic_modifier * (H.species ? economic_species_modifier[H.species.type] : 2)
+ var/datum/money_account/M = create_account(H.real_name, money_amount, null)
+ if(H.mind)
+ var/remembered_info = ""
+ remembered_info += "Your account number is: #[M.account_number]
"
+ remembered_info += "Your account pin is: [M.remote_access_pin]
"
+ 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: [T.time], [T.date] at [T.source_terminal]
"
+ H.mind.store_memory(remembered_info)
+
+ H.mind.initial_account = M
+
+ H << "Your account number is: [M.account_number], your account pin is: [M.remote_access_pin]"
+
// overrideable separately so AIs/borgs can have cardborg hats without unneccessary new()/del()
/datum/job/proc/equip_preview(mob/living/carbon/human/H)
return equip(H)
diff --git a/code/game/jobs/job/medical.dm b/code/game/jobs/job/medical.dm
index 0e79223b186..dc2d3665122 100644
--- a/code/game/jobs/job/medical.dm
+++ b/code/game/jobs/job/medical.dm
@@ -11,6 +11,7 @@
selection_color = "#ffddf0"
idtype = /obj/item/weapon/card/id/silver
req_admin_notify = 1
+ economic_modifier = 10
access = list(access_medical, access_medical_equip, access_morgue, access_genetics, access_heads,
access_chemistry, access_virology, access_cmo, access_surgery, access_RC_announce,
access_keycard_auth, access_sec_doors, access_psychiatrist, access_eva, access_external_airlocks)
@@ -44,6 +45,7 @@
spawn_positions = 3
supervisors = "the chief medical officer"
selection_color = "#ffeef0"
+ economic_modifier = 5
access = list(access_medical, access_medical_equip, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics)
minimal_access = list(access_medical, access_medical_equip, access_morgue, access_surgery, access_virology)
alt_titles = list("Surgeon","Emergency Physician","Nurse","Virologist")
@@ -106,6 +108,7 @@
spawn_positions = 2
supervisors = "the chief medical officer"
selection_color = "#ffeef0"
+ economic_modifier = 5
access = list(access_medical, access_medical_equip, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics)
minimal_access = list(access_medical, access_chemistry)
alt_titles = list("Pharmacist")
@@ -136,6 +139,7 @@
spawn_positions = 0
supervisors = "the chief medical officer and research director"
selection_color = "#ffeef0"
+ economic_modifier = 5
access = list(access_medical, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics, access_research)
minimal_access = list(access_medical, access_morgue, access_genetics, access_research)
@@ -162,6 +166,7 @@
faction = "Station"
total_positions = 1
spawn_positions = 1
+ economic_modifier = 5
supervisors = "the chief medical officer"
selection_color = "#ffeef0"
access = list(access_medical, access_medical_equip, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics, access_psychiatrist)
@@ -198,6 +203,7 @@
spawn_positions = 2
supervisors = "the chief medical officer"
selection_color = "#ffeef0"
+ economic_modifier = 5
access = list(access_medical, access_medical_equip, access_morgue, access_surgery, access_chemistry, access_virology, access_eva, access_maint_tunnels, access_external_airlocks, access_psychiatrist)
minimal_access = list(access_medical, access_medical_equip, access_eva, access_maint_tunnels, access_external_airlocks)
alt_titles = list("Emergency Medical Technician")
diff --git a/code/game/jobs/job/science.dm b/code/game/jobs/job/science.dm
index a7d54284bfc..d635fc4717a 100644
--- a/code/game/jobs/job/science.dm
+++ b/code/game/jobs/job/science.dm
@@ -11,6 +11,7 @@
selection_color = "#ffddff"
idtype = /obj/item/weapon/card/id/silver
req_admin_notify = 1
+ economic_modifier = 10
access = list(access_rd, access_heads, access_tox, access_genetics, access_morgue,
access_tox_storage, access_teleporter, access_sec_doors,
access_research, access_robotics, access_xenobiology, access_ai_upload, access_tech_storage,
@@ -47,6 +48,7 @@
spawn_positions = 3
supervisors = "the research director"
selection_color = "#ffeeff"
+ economic_modifier = 5
access = list(access_robotics, access_tox, access_tox_storage, access_research, access_xenobiology, access_xenoarch)
minimal_access = list(access_tox, access_tox_storage, access_research, access_xenoarch)
alt_titles = list("Xenoarcheologist", "Anomalist", "Phoron Researcher")
@@ -76,6 +78,7 @@
spawn_positions = 2
supervisors = "the research director"
selection_color = "#ffeeff"
+ economic_modifier = 5
access = list(access_robotics, access_tox, access_tox_storage, access_research, access_xenobiology, access_hydroponics)
minimal_access = list(access_research, access_xenobiology, access_hydroponics, access_tox_storage)
alt_titles = list("Xenobotanist")
@@ -105,6 +108,7 @@
spawn_positions = 2
supervisors = "research director"
selection_color = "#ffeeff"
+ economic_modifier = 5
access = list(access_robotics, access_tox, access_tox_storage, access_tech_storage, access_morgue, access_research) //As a job that handles so many corpses, it makes sense for them to have morgue access.
minimal_access = list(access_robotics, access_tech_storage, access_morgue, access_research) //As a job that handles so many corpses, it makes sense for them to have morgue access.
alt_titles = list("Biomechanical Engineer","Mechatronic Engineer")
diff --git a/code/game/jobs/job/security.dm b/code/game/jobs/job/security.dm
index cb7a7d23f4c..05c92caea1c 100644
--- a/code/game/jobs/job/security.dm
+++ b/code/game/jobs/job/security.dm
@@ -11,6 +11,7 @@
selection_color = "#ffdddd"
idtype = /obj/item/weapon/card/id/silver
req_admin_notify = 1
+ economic_modifier = 10
access = list(access_security, access_eva, access_sec_doors, access_brig, access_armory, access_court,
access_forensics_lockers, access_morgue, access_maint_tunnels, access_all_personal_lockers,
access_research, access_engine, access_mining, access_medical, access_construction, access_mailsorting,
@@ -54,6 +55,7 @@
spawn_positions = 1
supervisors = "the head of security"
selection_color = "#ffeeee"
+ economic_modifier = 7
access = list(access_security, access_eva, access_sec_doors, access_brig, access_armory, access_court, access_maint_tunnels, access_morgue, access_external_airlocks)
minimal_access = list(access_security, access_eva, access_sec_doors, access_brig, access_armory, access_court, access_maint_tunnels, access_external_airlocks)
minimal_player_age = 5
@@ -91,7 +93,7 @@
supervisors = "the head of security"
selection_color = "#ffeeee"
alt_titles = list("Forensic Technician")
-
+ economic_modifier = 5
access = list(access_security, access_sec_doors, access_forensics_lockers, access_morgue, access_maint_tunnels, access_court)
minimal_access = list(access_security, access_sec_doors, access_forensics_lockers, access_morgue, access_maint_tunnels, access_court)
alt_titles = list("Forensic Technician")
@@ -133,6 +135,7 @@
spawn_positions = 3
supervisors = "the head of security"
selection_color = "#ffeeee"
+ economic_modifier = 5
access = list(access_security, access_eva, access_sec_doors, access_brig, access_court, access_maint_tunnels, access_morgue, access_external_airlocks)
minimal_access = list(access_security, access_eva, access_sec_doors, access_brig, access_court, access_maint_tunnels, access_external_airlocks)
minimal_player_age = 3
diff --git a/code/game/jobs/job/silicon.dm b/code/game/jobs/job/silicon.dm
index 8aab7464004..88bfed60d6b 100644
--- a/code/game/jobs/job/silicon.dm
+++ b/code/game/jobs/job/silicon.dm
@@ -9,11 +9,12 @@
supervisors = "your laws"
req_admin_notify = 1
minimal_player_age = 7
-
+ account_allowed = 0
+ economic_modifier = 0
equip(var/mob/living/carbon/human/H)
if(!H) return 0
return 1
-
+
equip_survival(var/mob/living/carbon/human/H)
if(!H) return 0
return 1
@@ -36,6 +37,8 @@
selection_color = "#ddffdd"
minimal_player_age = 1
alt_titles = list("Android", "Robot")
+ account_allowed = 0
+ economic_modifier = 0
equip(var/mob/living/carbon/human/H)
if(!H) return 0
diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm
index 1a4fb368aa0..5259c8e5a20 100644
--- a/code/game/jobs/job_controller.dm
+++ b/code/game/jobs/job_controller.dm
@@ -393,6 +393,7 @@ var/global/datum/controller/occupations/job_master
spawn_in_storage += thing
//Equip job items.
job.equip(H)
+ job.setup_account(H)
job.equip_survival(H)
job.apply_fingerprints(H)
@@ -428,21 +429,6 @@ var/global/datum/controller/occupations/job_master
H.buckled.loc = H.loc
H.buckled.set_dir(H.dir)
- //give them an account in the station database
- var/datum/money_account/M = create_account(H.real_name, rand(50,500)*10, null)
- if(H.mind)
- var/remembered_info = ""
- remembered_info += "Your account number is: #[M.account_number]
"
- remembered_info += "Your account pin is: [M.remote_access_pin]
"
- 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: [T.time], [T.date] at [T.source_terminal]
"
- H.mind.store_memory(remembered_info)
-
- H.mind.initial_account = M
-
// If they're head, give them the account info for their department
if(H.mind && job.head_position)
var/remembered_info = ""
@@ -455,9 +441,6 @@ var/global/datum/controller/occupations/job_master
H.mind.store_memory(remembered_info)
- spawn(0)
- H << "Your account number is: [M.account_number], your account pin is: [M.remote_access_pin]"
-
var/alt_title = null
if(H.mind)
H.mind.assigned_role = rank
diff --git a/code/modules/economy/economy_misc.dm b/code/modules/economy/economy_misc.dm
index dee0c00e3d6..aab8fa63b58 100644
--- a/code/modules/economy/economy_misc.dm
+++ b/code/modules/economy/economy_misc.dm
@@ -46,6 +46,15 @@
#define GEAR_EVA 15
+
+/var/list/economic_species_modifier = list(
+ /datum/species/human = 10,
+ /datum/species/skrell = 12,
+ /datum/species/tajaran = 7,
+ /datum/species/unathi = 7,
+ /datum/species/vox = 1
+ )
+
//---- The following corporations are friendly with NanoTrasen and loosely enable trade and travel:
//Corporation NanoTrasen - Generalised / high tech research and phoron exploitation.
//Corporation Vessel Contracting - Ship and station construction, materials research.