diff --git a/code/__defines/mobs.dm b/code/__defines/mobs.dm
index e4e406d219..724225a24c 100644
--- a/code/__defines/mobs.dm
+++ b/code/__defines/mobs.dm
@@ -94,3 +94,13 @@
#define INV_ACCESSORIES_DEF_ICON 'icons/mob/ties.dmi'
#define INV_SUIT_DEF_ICON 'icons/mob/ties.dmi'
#define INV_SUIT_DEF_ICON 'icons/mob/suit.dmi'
+#define MAX_SUPPLIED_LAW_NUMBER 50
+
+// NT's alignment towards the character
+#define COMPANY_LOYAL "Loyal"
+#define COMPANY_SUPPORTATIVE "Supportive"
+#define COMPANY_NEUTRAL "Neutral"
+#define COMPANY_SKEPTICAL "Skeptical"
+#define COMPANY_OPPOSED "Opposed"
+
+#define COMPANY_ALIGNMENTS list(COMPANY_LOYAL,COMPANY_SUPPORTATIVE,COMPANY_NEUTRAL,COMPANY_SKEPTICAL,COMPANY_OPPOSED)
diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm
index 7269f9dcfe..c741bafb88 100644
--- a/code/game/gamemodes/game_mode.dm
+++ b/code/game/gamemodes/game_mode.dm
@@ -395,8 +395,8 @@ var/global/list/additional_antag_types = list()
if (special_role in disregard_roles)
continue
- else if(man.client.prefs.nanotrasen_relation == "Opposed" && prob(50) || \
- man.client.prefs.nanotrasen_relation == "Skeptical" && prob(20))
+ else if(man.client.prefs.nanotrasen_relation == COMPANY_OPPOSED && prob(50) || \
+ man.client.prefs.nanotrasen_relation == COMPANY_SKEPTICAL && prob(20))
suspects += man
// Antags
else if(special_role_data && prob(special_role_data.suspicion_chance))
@@ -562,9 +562,9 @@ proc/get_nt_opposed()
var/list/dudes = list()
for(var/mob/living/carbon/human/man in player_list)
if(man.client)
- if(man.client.prefs.nanotrasen_relation == "Opposed")
+ if(man.client.prefs.nanotrasen_relation == COMPANY_OPPOSED)
dudes += man
- else if(man.client.prefs.nanotrasen_relation == "Skeptical" && prob(50))
+ else if(man.client.prefs.nanotrasen_relation == COMPANY_SKEPTICAL && prob(50))
dudes += man
if(dudes.len == 0) return null
return pick(dudes)
diff --git a/code/game/gamemodes/intercept_report.dm b/code/game/gamemodes/intercept_report.dm
index bfe0e1d90d..4feba5d1d2 100644
--- a/code/game/gamemodes/intercept_report.dm
+++ b/code/game/gamemodes/intercept_report.dm
@@ -90,7 +90,7 @@
/datum/intercept_text/proc/get_suspect()
var/list/dudes = list()
- for(var/mob/living/carbon/human/man in player_list) if(man.client && man.client.prefs.nanotrasen_relation == "Opposed")
+ for(var/mob/living/carbon/human/man in player_list) if(man.client && man.client.prefs.nanotrasen_relation == COMPANY_OPPOSED)
dudes += man
for(var/i = 0, i < max(player_list.len/10,2), i++)
dudes += pick(player_list)
diff --git a/code/game/jobs/job/assistant.dm b/code/game/jobs/job/assistant.dm
index f390303452..df54a4ea57 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","Visitor")
diff --git a/code/game/jobs/job/captain.dm b/code/game/jobs/job/captain.dm
index f76ef8edb4..665016a1cf 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 = 10
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 26f5c02020..f45af97286 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 = 5
access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station)
minimal_access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station)
@@ -149,6 +150,7 @@
spawn_positions = 3
supervisors = "the quartermaster and the head of personnel"
selection_color = "#dddddd"
+ economic_modifier = 5
access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station)
minimal_access = list(access_mining, access_mining_station, access_mailsorting)
alt_titles = list("Drill Technician","Prospector")
@@ -311,6 +313,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 5c86336cb6..27cd6a753e 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 33cc45b69f..b84b673a40 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
@@ -34,6 +37,37 @@
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
+
+ var/loyalty = 1
+ if(H.client)
+ switch(H.client.prefs.nanotrasen_relation)
+ if(COMPANY_LOYAL) loyalty = 1.30
+ if(COMPANY_SUPPORTATIVE)loyalty = 1.15
+ if(COMPANY_NEUTRAL) loyalty = 1
+ if(COMPANY_SKEPTICAL) loyalty = 0.85
+ if(COMPANY_OPPOSED) loyalty = 0.70
+
+ //give them an account in the station database
+ var/money_amount = (rand(5,50) + rand(5, 50)) * loyalty * 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 0e79223b18..72a71e9196 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 = 7
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 = 7
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 = 4
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 a7d54284bf..05690d4339 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 = 15
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 = 7
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 = 7
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 cb7a7d23f4..8a9461302d 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 = 5
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 = 4
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 a76317af03..6cec7149e9 100644
--- a/code/game/jobs/job/silicon.dm
+++ b/code/game/jobs/job/silicon.dm
@@ -9,7 +9,8 @@
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
@@ -40,6 +41,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 143a603ec1..1768ffe642 100644
--- a/code/game/jobs/job_controller.dm
+++ b/code/game/jobs/job_controller.dm
@@ -392,6 +392,7 @@ var/global/datum/controller/occupations/job_master
spawn_in_storage += thing
//Equip job items.
job.equip(H)
+ job.setup_account(H)
job.equip_backpack(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/client/preferences.dm b/code/modules/client/preferences.dm
index 1173c218db..05be064416 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -1401,7 +1401,7 @@ datum/preferences
backbag = backbaglist.Find(new_backbag)
if("nt_relation")
- var/new_relation = input(user, "Choose your relation to NT. Note that this represents what others can find out about your character by researching your background, not what your character actually thinks.", "Character Preference") as null|anything in list("Loyal", "Supportive", "Neutral", "Skeptical", "Opposed")
+ var/new_relation = input(user, "Choose your relation to NT. Note that this represents what others can find out about your character by researching your background, not what your character actually thinks.", "Character Preference") as null|anything in COMPANY_ALIGNMENTS
if(new_relation)
nanotrasen_relation = new_relation
diff --git a/code/modules/economy/economy_misc.dm b/code/modules/economy/economy_misc.dm
index dee0c00e3d..aab8fa63b5 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.
diff --git a/html/changelogs/PsiOmegaDelta-MoneyMoneyMoney.yml b/html/changelogs/PsiOmegaDelta-MoneyMoneyMoney.yml
new file mode 100644
index 0000000000..24faf087bf
--- /dev/null
+++ b/html/changelogs/PsiOmegaDelta-MoneyMoneyMoney.yml
@@ -0,0 +1,4 @@
+author: PsiOmegaDelta
+changes:
+ - tweak: "The amount you start with in your station account is now affected by species, rank, and NT's stance towards you."
+delete-after: false