From bc3aa28c7a8b66d1f7c483c90cb32187898b5aed Mon Sep 17 00:00:00 2001 From: Gaxeer <44334376+Gaxeer@users.noreply.github.com> Date: Tue, 18 Jul 2023 20:19:14 +0300 Subject: [PATCH] feat: economy startup pepepizdez (#216) --- code/controllers/subsystem/jobs.dm | 2 +- code/game/jobs/job/civilian.dm | 2 ++ code/game/jobs/job/engineering.dm | 10 ++++++++++ code/game/jobs/job/job.dm | 6 ++++++ code/game/jobs/job/medical.dm | 18 ++++++++++++++++++ code/game/jobs/job/science.dm | 8 ++++++++ code/game/jobs/job/security.dm | 14 ++++++++++++++ code/game/jobs/job/supervisor.dm | 12 ++++++++++++ code/game/jobs/job/support.dm | 22 ++++++++++++++++++++++ code/modules/economy/Accounts.dm | 18 ++++++++++++++---- 10 files changed, 107 insertions(+), 5 deletions(-) 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