diff --git a/code/__defines/mobs.dm b/code/__defines/mobs.dm index e4e406d219a..724225a24c2 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 7269f9dcfe3..c741bafb889 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 bfe0e1d90d5..4feba5d1d2b 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 f390303452f..df54a4ea57a 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 f76ef8edb4f..665016a1cf2 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 26f5c020201..f45af97286a 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 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 33cc45b69f6..b84b673a40a 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 0e79223b186..72a71e9196b 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 a7d54284bfc..05690d43390 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 cb7a7d23f4c..8a9461302db 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 a76317af03d..6cec7149e97 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 143a603ec1e..1768ffe642f 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 1173c218db5..05be0644160 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 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. diff --git a/html/changelogs/PsiOmegaDelta-MoneyMoneyMoney.yml b/html/changelogs/PsiOmegaDelta-MoneyMoneyMoney.yml new file mode 100644 index 00000000000..24faf087bf7 --- /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