diff --git a/code/controllers/subsystem/jobs.dm b/code/controllers/subsystem/jobs.dm
index 194567f57c8..7e8f2a2b3f0 100644
--- a/code/controllers/subsystem/jobs.dm
+++ b/code/controllers/subsystem/jobs.dm
@@ -627,7 +627,7 @@ SUBSYSTEM_DEF(jobs)
/datum/controller/subsystem/jobs/proc/CreateMoneyAccount(mob/living/H, rank, datum/job/job)
- var/datum/money_account/M = create_account(H.real_name, rand(50,500)*10, null)
+ var/datum/money_account/M = create_account(H.real_name, job.calculate_starting_funds(), null)
var/remembered_info = ""
remembered_info += "Номер вашего аккаунта: #[M.account_number]
"
diff --git a/code/game/jobs/job/civilian.dm b/code/game/jobs/job/civilian.dm
index 1011f3cef06..fde3ba6e518 100644
--- a/code/game/jobs/job/civilian.dm
+++ b/code/game/jobs/job/civilian.dm
@@ -11,6 +11,8 @@
minimal_access = list() //See /datum/job/assistant/get_access()
alt_titles = list("Tourist","Businessman","Trader","Assistant")
outfit = /datum/outfit/job/assistant
+ min_starting_funds = 400
+ max_starting_funds = 800
/datum/job/civilian/get_access()
if(config.assistant_maint)
diff --git a/code/game/jobs/job/engineering.dm b/code/game/jobs/job/engineering.dm
index 43e414a95a9..73299580096 100644
--- a/code/game/jobs/job/engineering.dm
+++ b/code/game/jobs/job/engineering.dm
@@ -22,6 +22,8 @@
exp_requirements = 3000
exp_type = EXP_TYPE_ENGINEERING
outfit = /datum/outfit/job/chief_engineer
+ min_starting_funds = 2500
+ max_starting_funds = 3000
/datum/outfit/job/chief_engineer
name = "Chief Engineer"
@@ -64,6 +66,8 @@
exp_requirements = 600
exp_type = EXP_TYPE_ENGINEERING
outfit = /datum/outfit/job/engineer
+ min_starting_funds = 1100
+ max_starting_funds = 1400
/datum/outfit/job/engineer
name = "Station Engineer"
@@ -99,6 +103,8 @@
exp_type_max = EXP_TYPE_ENGINEERING
is_novice = TRUE
outfit = /datum/outfit/job/engineer/trainee
+ min_starting_funds = 500
+ max_starting_funds = 900
/datum/outfit/job/engineer/trainee
name = "Trainee Engineer"
@@ -147,6 +153,8 @@
exp_requirements = 900
exp_type = EXP_TYPE_ENGINEERING
outfit = /datum/outfit/job/atmos
+ min_starting_funds = 1200
+ max_starting_funds = 1500
/datum/outfit/job/atmos
name = "Life Support Specialist"
@@ -180,6 +188,8 @@
exp_requirements = 900
exp_type = EXP_TYPE_ENGINEERING
outfit = /datum/outfit/job/mechanic
+ min_starting_funds = 800
+ max_starting_funds = 1200
/datum/outfit/job/mechanic
name = "Mechanic"
diff --git a/code/game/jobs/job/job.dm b/code/game/jobs/job/job.dm
index abf6d0649f1..efb6ff2765f 100644
--- a/code/game/jobs/job/job.dm
+++ b/code/game/jobs/job/job.dm
@@ -69,6 +69,9 @@
var/required_objectives=list() // Objectives that are ALWAYS added.
var/optional_objectives=list() // Objectives that are SOMETIMES added.
+ var/min_starting_funds = 0
+ var/max_starting_funds = 0
+
//Only override this proc
/datum/job/proc/after_spawn(mob/living/carbon/human/H)
@@ -298,3 +301,6 @@
if(job_exp >= job_requirement)
return FALSE
return TRUE
+
+/datum/job/proc/calculate_starting_funds()
+ return rand(min_starting_funds, max_starting_funds)
diff --git a/code/game/jobs/job/medical.dm b/code/game/jobs/job/medical.dm
index a9108998e89..b040df7f78f 100644
--- a/code/game/jobs/job/medical.dm
+++ b/code/game/jobs/job/medical.dm
@@ -20,6 +20,8 @@
exp_requirements = 3000
exp_type = EXP_TYPE_MEDICAL
outfit = /datum/outfit/job/cmo
+ min_starting_funds = 2000
+ max_starting_funds = 3000
/datum/outfit/job/cmo
name = "Chief Medical Officer"
@@ -60,6 +62,8 @@
exp_requirements = 600
exp_type = EXP_TYPE_MEDICAL
outfit = /datum/outfit/job/doctor
+ min_starting_funds = 1300
+ max_starting_funds = 1600
/datum/outfit/job/doctor
name = "Medical Doctor"
@@ -93,6 +97,8 @@
exp_type_max = EXP_TYPE_MEDICAL
is_novice = TRUE
outfit = /datum/outfit/job/doctor/intern
+ min_starting_funds = 600
+ max_starting_funds = 900
/datum/outfit/job/doctor/intern
name = "Intern"
@@ -138,6 +144,8 @@
exp_requirements = 180
exp_type = EXP_TYPE_CREW
outfit = /datum/outfit/job/coroner
+ min_starting_funds = 700
+ max_starting_funds = 900
/datum/outfit/job/coroner
name = "Coroner"
@@ -201,6 +209,8 @@
exp_requirements = 600
exp_type = EXP_TYPE_MEDICAL
outfit = /datum/outfit/job/chemist
+ min_starting_funds = 1000
+ max_starting_funds = 1500
/datum/outfit/job/chemist
name = "Chemist"
@@ -235,6 +245,8 @@
exp_requirements = 900
exp_type = EXP_TYPE_MEDICAL
outfit = /datum/outfit/job/geneticist
+ min_starting_funds = 1200
+ max_starting_funds = 1500
/datum/outfit/job/geneticist
name = "Geneticist"
@@ -270,6 +282,8 @@
exp_requirements = 900
exp_type = EXP_TYPE_MEDICAL
outfit = /datum/outfit/job/virologist
+ min_starting_funds = 800
+ max_starting_funds = 1200
/datum/outfit/job/virologist
name = "Virologist"
@@ -303,6 +317,8 @@
minimal_access = list(ACCESS_MEDICAL, ACCESS_PSYCHIATRIST)
alt_titles = list("Psychologist","Therapist")
outfit = /datum/outfit/job/psychiatrist
+ min_starting_funds = 600
+ max_starting_funds = 800
/datum/outfit/job/psychiatrist
name = "Psychiatrist"
@@ -344,6 +360,8 @@
exp_requirements = 180
exp_type = EXP_TYPE_CREW
outfit = /datum/outfit/job/paramedic
+ min_starting_funds = 1000
+ max_starting_funds = 1200
/datum/outfit/job/paramedic
name = "Paramedic"
diff --git a/code/game/jobs/job/science.dm b/code/game/jobs/job/science.dm
index 394ee7bc343..0c2e839dcef 100644
--- a/code/game/jobs/job/science.dm
+++ b/code/game/jobs/job/science.dm
@@ -27,6 +27,8 @@
)
outfit = /datum/outfit/job/rd
+ min_starting_funds = 2500
+ max_starting_funds = 3000
/datum/outfit/job/rd
@@ -72,6 +74,8 @@
)
outfit = /datum/outfit/job/scientist
+ min_starting_funds = 2000
+ max_starting_funds = 2500
/datum/outfit/job/scientist
@@ -104,6 +108,8 @@
exp_type_max = EXP_TYPE_SCIENCE
is_novice = TRUE
outfit = /datum/outfit/job/scientist/student
+ min_starting_funds = 1000
+ max_starting_funds = 1100
/datum/outfit/job/scientist/student
name = "Student Scientist"
@@ -152,6 +158,8 @@
)
outfit = /datum/outfit/job/roboticist
+ min_starting_funds = 2000
+ max_starting_funds = 2200
/datum/outfit/job/roboticist
name = "Roboticist"
diff --git a/code/game/jobs/job/security.dm b/code/game/jobs/job/security.dm
index 26f3e7f9b91..a2c34df6557 100644
--- a/code/game/jobs/job/security.dm
+++ b/code/game/jobs/job/security.dm
@@ -23,6 +23,8 @@
exp_type = EXP_TYPE_SECURITY
disabilities_allowed = 0
outfit = /datum/outfit/job/hos
+ min_starting_funds = 3000
+ max_starting_funds = 3500
/datum/outfit/job/hos
name = "Head of Security"
@@ -70,6 +72,8 @@
exp_requirements = 2100
exp_type = EXP_TYPE_SECURITY
outfit = /datum/outfit/job/warden
+ min_starting_funds = 2000
+ max_starting_funds = 2200
/datum/outfit/job/warden
name = "Warden"
@@ -116,6 +120,8 @@
exp_requirements = 1200
exp_type = EXP_TYPE_SECURITY
outfit = /datum/outfit/job/detective
+ min_starting_funds = 1700
+ max_starting_funds = 2100
/datum/outfit/job/detective
name = "Detective"
@@ -176,6 +182,8 @@
exp_requirements = 600
exp_type = EXP_TYPE_SECURITY
outfit = /datum/outfit/job/officer
+ min_starting_funds = 1400
+ max_starting_funds = 2000
/datum/outfit/job/officer
name = "Security Officer"
@@ -214,6 +222,8 @@
exp_type_max = EXP_TYPE_SECURITY
is_novice = TRUE
outfit = /datum/outfit/job/officer/cadet
+ min_starting_funds = 1000
+ max_starting_funds = 1200
/datum/outfit/job/officer/cadet
name = "Security Cadet"
@@ -254,6 +264,8 @@
exp_requirements = 1800
exp_type = EXP_TYPE_MEDICAL
outfit = /datum/outfit/job/brigdoc
+ min_starting_funds = 1300
+ max_starting_funds = 1600
/datum/outfit/job/brigdoc
name = "Brig Physician"
@@ -290,6 +302,8 @@
exp_requirements = 1200
exp_type = EXP_TYPE_SECURITY
outfit = /datum/outfit/job/pilot
+ min_starting_funds = 1800
+ max_starting_funds = 2100
/datum/outfit/job/pilot
name = "Security Pod Pilot"
diff --git a/code/game/jobs/job/supervisor.dm b/code/game/jobs/job/supervisor.dm
index 84e14117c9f..30ba2eee7b9 100644
--- a/code/game/jobs/job/supervisor.dm
+++ b/code/game/jobs/job/supervisor.dm
@@ -18,6 +18,8 @@ GLOBAL_DATUM_INIT(captain_announcement, /datum/announcement/minor, new(do_newsca
exp_type = EXP_TYPE_COMMAND
disabilities_allowed = 0
outfit = /datum/outfit/job/captain
+ min_starting_funds = 7000
+ max_starting_funds = 9000
/datum/job/captain/get_access()
return get_all_accesses()
@@ -85,6 +87,8 @@ GLOBAL_DATUM_INIT(captain_announcement, /datum/announcement/minor, new(do_newsca
ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_HEADS_VAULT, ACCESS_MINING_STATION,
ACCESS_CLOWN, ACCESS_MIME, ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM)
outfit = /datum/outfit/job/hop
+ min_starting_funds = 3500
+ max_starting_funds = 4000
/datum/outfit/job/hop
name = "Head of Personnel"
@@ -136,6 +140,8 @@ GLOBAL_DATUM_INIT(captain_announcement, /datum/announcement/minor, new(do_newsca
ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_HEADS_VAULT, ACCESS_MINING_STATION,
ACCESS_CLOWN, ACCESS_MIME, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_WEAPONS, ACCESS_NTREP)
outfit = /datum/outfit/job/nanotrasenrep
+ min_starting_funds = 3500
+ max_starting_funds = 4000
/datum/outfit/job/nanotrasenrep
name = "Nanotrasen Representative"
@@ -180,6 +186,8 @@ GLOBAL_DATUM_INIT(captain_announcement, /datum/announcement/minor, new(do_newsca
minimal_access = list(ACCESS_FORENSICS_LOCKERS, ACCESS_SEC_DOORS, ACCESS_MEDICAL, ACCESS_CONSTRUCTION, ACCESS_ENGINE, ACCESS_MAINT_TUNNELS, ACCESS_RESEARCH,
ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_HEADS, ACCESS_BLUESHIELD, ACCESS_WEAPONS)
outfit = /datum/outfit/job/blueshield
+ min_starting_funds = 2500
+ max_starting_funds = 3000
/datum/outfit/job/blueshield
name = "Blueshield"
@@ -226,6 +234,8 @@ GLOBAL_DATUM_INIT(captain_announcement, /datum/announcement/minor, new(do_newsca
ACCESS_CLOWN, ACCESS_MIME, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MAGISTRATE)
minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_LAWYER, ACCESS_MAGISTRATE, ACCESS_HEADS)
outfit = /datum/outfit/job/judge
+ min_starting_funds = 3000
+ max_starting_funds = 3500
/datum/outfit/job/judge
name = "Magistrate"
@@ -270,6 +280,8 @@ GLOBAL_DATUM_INIT(captain_announcement, /datum/announcement/minor, new(do_newsca
exp_requirements = 3000
exp_type = EXP_TYPE_CREW
outfit = /datum/outfit/job/lawyer
+ min_starting_funds = 1600
+ max_starting_funds = 2200
/datum/outfit/job/lawyer
name = "Internal Affairs Agent"
diff --git a/code/game/jobs/job/support.dm b/code/game/jobs/job/support.dm
index 8e801f45510..7253d6ecd33 100644
--- a/code/game/jobs/job/support.dm
+++ b/code/game/jobs/job/support.dm
@@ -12,6 +12,8 @@
access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM)
minimal_access = list(ACCESS_BAR, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM)
outfit = /datum/outfit/job/bartender
+ min_starting_funds = 600
+ max_starting_funds = 1000
/datum/outfit/job/bartender
name = "Bartender"
@@ -54,6 +56,8 @@
minimal_access = list(ACCESS_KITCHEN)
alt_titles = list("Cook","Culinary Artist","Butcher")
outfit = /datum/outfit/job/chef
+ min_starting_funds = 600
+ max_starting_funds = 1000
/datum/outfit/job/chef
name = "Chef"
@@ -94,6 +98,8 @@
exp_requirements = 300
exp_type = EXP_TYPE_CREW
outfit = /datum/outfit/job/hydro
+ min_starting_funds = 700
+ max_starting_funds = 1000
/datum/outfit/job/hydro
name = "Botanist"
@@ -130,6 +136,8 @@
exp_requirements = 3000
exp_type = EXP_TYPE_CREW
outfit = /datum/outfit/job/qm
+ min_starting_funds = 1200
+ max_starting_funds = 1800
/datum/outfit/job/qm
name = "Quartermaster"
@@ -158,6 +166,8 @@
access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_MINT, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM)
minimal_access = list(ACCESS_MAINT_TUNNELS, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_MAILSORTING, ACCESS_MINERAL_STOREROOM)
outfit = /datum/outfit/job/cargo_tech
+ min_starting_funds = 600
+ max_starting_funds = 1000
/datum/outfit/job/cargo_tech
name = "Cargo Technician"
@@ -185,6 +195,8 @@
minimal_access = list(ACCESS_MINING, ACCESS_MINT, ACCESS_MINING_STATION, ACCESS_MAILSORTING, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM)
alt_titles = list("Spelunker")
outfit = /datum/outfit/job/mining
+ min_starting_funds = 800
+ max_starting_funds = 1200
/datum/outfit/job/mining
name = "Shaft Miner"
@@ -254,6 +266,8 @@
access = list(ACCESS_CLOWN, ACCESS_THEATRE)
minimal_access = list(ACCESS_CLOWN, ACCESS_THEATRE)
outfit = /datum/outfit/job/clown
+ min_starting_funds = 500
+ max_starting_funds = 1000
/datum/outfit/job/clown
name = "Clown"
@@ -343,6 +357,8 @@
access = list(ACCESS_MIME, ACCESS_THEATRE)
minimal_access = list(ACCESS_MIME, ACCESS_THEATRE)
outfit = /datum/outfit/job/mime
+ min_starting_funds = 500
+ max_starting_funds = 1000
/datum/outfit/job/mime
name = "Mime"
@@ -397,6 +413,8 @@
minimal_access = list(ACCESS_JANITOR, ACCESS_MAINT_TUNNELS)
alt_titles = list("Custodial Technician")
outfit = /datum/outfit/job/janitor
+ min_starting_funds = 600
+ max_starting_funds = 1000
/datum/outfit/job/janitor
name = "Janitor"
@@ -423,6 +441,8 @@
minimal_access = list(ACCESS_LIBRARY)
alt_titles = list("Journalist")
outfit = /datum/outfit/job/librarian
+ min_starting_funds = 600
+ max_starting_funds = 1000
/datum/outfit/job/librarian
name = "Librarian"
@@ -452,6 +472,8 @@
access = list()
minimal_access = list()
outfit = /datum/outfit/job/barber
+ min_starting_funds = 700
+ max_starting_funds = 1000
/datum/outfit/job/barber
name = "Barber"
diff --git a/code/modules/economy/Accounts.dm b/code/modules/economy/Accounts.dm
index 0d0b1d317e6..60f9115b669 100644
--- a/code/modules/economy/Accounts.dm
+++ b/code/modules/economy/Accounts.dm
@@ -2,7 +2,7 @@
#define STATION_CREATION_TIME "11:24:30"
#define STATION_START_CASH 75000
#define STATION_SOURCE_TERMINAL "Biesel GalaxyNet Terminal #227"
-#define DEPARTMENT_START_CASH 5000
+#define DEFAULT_DEPARTMENT_STARTING_FUNDS 5000
GLOBAL_VAR_INIT(num_financial_terminals, 1)
GLOBAL_DATUM(station_account, /datum/money_account)
@@ -11,6 +11,16 @@ GLOBAL_VAR_INIT(next_account_number, 0)
GLOBAL_DATUM(centcomm_account_db, /obj/machinery/computer/account_database) // this being an object hurts me deeply on the inside
GLOBAL_DATUM(vendor_account, /datum/money_account)
GLOBAL_LIST_EMPTY(all_money_accounts)
+GLOBAL_LIST_INIT(department_starting_funds, list(
+ "Command" = 40000,
+ "Security" = 30000,
+ "Engineering" = 20000,
+ "Science" = 20000,
+ "Medical" = 15000,
+ "Cargo" = 10000,
+ "Support" = 10000,
+ "Civilian" = 10000,
+ "Vendor" = 10000))
/proc/create_station_account()
if(!GLOB.station_account)
@@ -36,10 +46,10 @@ GLOBAL_LIST_EMPTY(all_money_accounts)
department_account.owner_name = "[department] Account"
department_account.account_number = rand(111111, 999999)
department_account.remote_access_pin = rand(111111, 999999)
- department_account.money = DEPARTMENT_START_CASH
+ department_account.money = GLOB.department_starting_funds[department] || DEFAULT_DEPARTMENT_STARTING_FUNDS
//create an entry in the account transaction log for when it was created
- department_account.makeTransactionLog(DEPARTMENT_START_CASH, "Account Creation", STATION_SOURCE_TERMINAL, department_account.owner_name, FALSE,
+ department_account.makeTransactionLog(department_account.money, "Account Creation", STATION_SOURCE_TERMINAL, department_account.owner_name, FALSE,
STATION_CREATION_DATE, STATION_CREATION_TIME)
//add the account
@@ -168,4 +178,4 @@ GLOBAL_LIST_EMPTY(all_money_accounts)
#undef STATION_CREATION_TIME
#undef STATION_START_CASH
#undef STATION_SOURCE_TERMINAL
-#undef DEPARTMENT_START_CASH
+#undef DEFAULT_DEPARTMENT_STARTING_FUNDS