Diplomatic Bodyguards (#20733)

Adds diplomatic bodyguards, similar to aides, the consular can open this
role. The consular's gun has been given to the guard.
This commit is contained in:
Greenjoe12345
2025-07-13 00:16:05 +01:00
committed by GitHub
parent 228386bcc0
commit 6bb40a86e9
13 changed files with 606 additions and 31 deletions
+2 -1
View File
@@ -9,6 +9,7 @@
#define JOURNALIST_ROLE /datum/job/journalist
#define CHAPLAIN_ROLE /datum/job/chaplain
#define DIPLOMATIC_AIDE_ROLE /datum/job/diplomatic_aide
#define DIPLOMATIC_BODYGUARD_ROLE /datum/job/diplomatic_bodyguard
#define CORPORATE_AIDE_ROLE /datum/job/corporate_aide
//Event Roles
@@ -49,4 +50,4 @@
#define ZENG_ROLES list(SCIENCE_ROLES, MEDICAL_ROLES, CIVILIAN_ROLES, REPRESENTATIVE_ROLE)
#define HEPH_ROLES list(OPERATIONS_ROLES, ENGINEERING_ROLES, CIVILIAN_ROLES, REPRESENTATIVE_ROLE)
#define ORION_ROLES list(OPERATIONS_ROLES, CIVILIAN_ROLES, REPRESENTATIVE_ROLE, SERVICE_ROLES)
#define INDEP_ROLES list(NON_CREW_CIVILIAN_ROLES, CONSULAR_ROLE, JOURNALIST_ROLE, CHAPLAIN_ROLE, OFF_DUTY_CREW_MEMBER_ROLE, JOURNALIST_ROLE, DIPLOMATIC_AIDE_ROLE)
#define INDEP_ROLES list(NON_CREW_CIVILIAN_ROLES, CONSULAR_ROLE, JOURNALIST_ROLE, CHAPLAIN_ROLE, OFF_DUTY_CREW_MEMBER_ROLE, JOURNALIST_ROLE, DIPLOMATIC_AIDE_ROLE, DIPLOMATIC_BODYGUARD_ROLE)
+56 -2
View File
@@ -70,8 +70,9 @@
/// A blacklist of citizenships that can't be this job.
var/list/blacklisted_citizenship = list()
/// The job name of the aide slot. Used for consulars and representatives.
/// The job name of the aide and bodyguard slots. Used for consulars and representatives.
var/aide_job
var/bodyguard_job
//Only override this proc
/datum/job/proc/pre_spawn(mob/abstract/new_player/player)
@@ -282,13 +283,66 @@
*/
/mob/living/carbon/human/proc/summon_aide()
set name = "Open Aide Slot"
set desc = "Allows an aide to join you as an assistant, companion, or bodyguard."
set desc = "Allows an aide to join you as an assistant or companion."
set category = "IC"
var/datum/job/J = SSjobs.GetJob(job)
if(J.open_aide_slot(src))
remove_verb(src, /mob/living/carbon/human/proc/summon_aide)
/**
* This is the proc responsible for actually opening the bodyguard slot.
* The `bodyguard_job` on the job datum must be a valid, existing job. Blame the fact that we don't have job defines. Or singletons.
*/
/datum/job/proc/open_bodyguard_slot(mob/living/carbon/human/representative)
if(!bodyguard_job)
log_debug("Generic Open Bodyguard Slot called without an bodyguard job.")
return FALSE
if(!representative)
log_debug("Generic Open Bodyguard Slot called without a mob.")
return FALSE
var/confirm = tgui_alert(representative, "Are you sure you want to open a bodyguard slot? This can only be used once.", "Open Bodyguard Slot", list("Yes", "No"))
if(confirm != "Yes")
return FALSE
var/datum/job/J = SSjobs.GetJob(bodyguard_job)
// At this point, we add the relevant blacklists in the proc below.
post_open_bodyguard_slot(representative, J)
// Now that the blacklists are applied, open the job.
J.total_positions++
to_chat(representative, SPAN_NOTICE("A slot for a [bodyguard_job] has been opened."))
return TRUE
/**
* This proc is called when a job opens a bodyguard slot. It MUST be called manually.
* It is responsible for adding any relevant blacklists to the bodyguard job datum.
*/
/datum/job/proc/post_open_bodyguard_slot(mob/living/carbon/human/representative, datum/job/bodyguard)
return
/**
* This proc is called when a bodyguard slot is closed (cryoing or leaving the game).
* It is responsible for cleaning up existing slots and wiping any applied blacklists to the bodyguard's job datum.
*/
/datum/job/proc/close_bodyguard_slot(mob/living/carbon/human/representative, datum/job/bodyguard)
return
/**
* This is the verb you should give to a mob to allow it to summon an bodyguard.
*/
/mob/living/carbon/human/proc/summon_bodyguard()
set name = "Open Bodyguard Slot"
set desc = "Allows a bodyguard to join you to help protect you."
set category = "IC"
var/datum/job/J = SSjobs.GetJob(job)
if(J.open_bodyguard_slot(src))
remove_verb(src, /mob/living/carbon/human/proc/summon_bodyguard)
/obj/outfit/job
name = "Standard Gear"
var/base_name = null
+69 -2
View File
@@ -216,6 +216,7 @@
blacklisted_citizenship = list(CITIZENSHIP_ERIDANI, CITIZENSHIP_ELYRA_NCP, CITIZENSHIP_NONE, CITIZENSHIP_FREE_COUNCIL)
aide_job = "Diplomatic Aide"
bodyguard_job = "Diplomatic Bodyguard"
/datum/job/consular/get_outfit(mob/living/carbon/human/H, alt_title = null)
var/datum/citizenship/citizenship = SSrecords.citizenships[H.citizenship]
@@ -251,14 +252,17 @@
var/datum/citizenship/citizenship = SSrecords.citizenships[H.citizenship]
LAZYDISTINCTADD(blacklisted_citizenship, citizenship.name)
add_verb(H, /mob/living/carbon/human/proc/summon_aide)
add_verb(H, /mob/living/carbon/human/proc/summon_bodyguard)
/datum/job/consular/on_despawn(mob/living/carbon/human/H)
var/datum/citizenship/citizenship = SSrecords.citizenships[H.citizenship]
LAZYREMOVE(blacklisted_citizenship, citizenship.name)
// Handle the removal of aide blacklists and the slot.
// Handle the removal of aide/bodyguard blacklists and the slot.
var/datum/job/J = SSjobs.GetJob(aide_job)
var/datum/job/J2 = SSjobs.GetJob(bodyguard_job)
close_aide_slot(H, J)
close_bodyguard_slot(H, J2)
/datum/job/consular/post_open_aide_slot(mob/living/carbon/human/representative, datum/job/aide)
var/datum/citizenship/citizenship = SSrecords.citizenships[representative.citizenship]
@@ -267,6 +271,13 @@
else
LAZYREMOVE(aide.blacklisted_citizenship, representative.citizenship)
/datum/job/consular/post_open_bodyguard_slot(mob/living/carbon/human/representative, datum/job/bodyguard)
var/datum/citizenship/citizenship = SSrecords.citizenships[representative.citizenship]
if(citizenship.linked_citizenship) //if there's a secondary citizenship that this one should allow - e.g zo'ra and biesel
LAZYREMOVE(bodyguard.blacklisted_citizenship, citizenship.linked_citizenship)
else
LAZYREMOVE(bodyguard.blacklisted_citizenship, representative.citizenship)
/datum/job/consular/close_aide_slot(mob/living/carbon/human/representative, datum/job/aide)
var/datum/citizenship/citizenship = SSrecords.citizenships[representative.citizenship]
if(citizenship.linked_citizenship)
@@ -277,6 +288,16 @@
if(aide.total_positions > 0)
aide.total_positions--
/datum/job/consular/close_bodyguard_slot(mob/living/carbon/human/representative, datum/job/bodyguard)
var/datum/citizenship/citizenship = SSrecords.citizenships[representative.citizenship]
if(citizenship.linked_citizenship)
LAZYDISTINCTADD(bodyguard.blacklisted_citizenship, citizenship.linked_citizenship)
else
LAZYDISTINCTADD(bodyguard.blacklisted_citizenship, representative.citizenship)
if(bodyguard.total_positions > 0)
bodyguard.total_positions--
/datum/job/diplomatic_aide
title = "Diplomatic Aide"
flag = CONSULAR_ASST
@@ -323,9 +344,55 @@
/datum/job/diplomatic_aide/after_spawn(mob/living/carbon/human/H)
LAZYDISTINCTADD(blacklisted_citizenship, H.citizenship)
/datum/job/diplomatic_bodyguard
title = "Diplomatic Bodyguard"
flag = DIPLOMAT_GUARD
departments = SIMPLEDEPT(DEPARTMENT_COMMAND_SUPPORT)
department_flag = ENGSEC
faction = "Station"
total_positions = 0 //manually opened by consular
spawn_positions = 0
supervisors = "the Consular Officer"
selection_color = "#6186cf"
economic_modifier = 5
minimum_character_age = list(
SPECIES_HUMAN = 18,
SPECIES_SKRELL = 50,
SPECIES_SKRELL_AXIORI = 50
)
access = list(ACCESS_CONSULAR, ACCESS_MAINT_TUNNELS)
minimal_access = list(ACCESS_CONSULAR)
outfit = /obj/outfit/job/diplomatic_aide
blacklisted_citizenship = ALL_CITIZENSHIPS //removed based on consular citizensihp
/datum/job/diplomatic_bodyguard/get_outfit(mob/living/carbon/human/H, alt_title = null)
var/datum/citizenship/citizenship = SSrecords.citizenships[H.citizenship]
if(citizenship)
return citizenship.bodyguard_outfit
/obj/outfit/job/diplomatic_bodyguard
name = "Diplomatic Bodyguard"
jobtype = /datum/job/diplomatic_bodyguard
uniform = /obj/item/clothing/under/suit_jacket/navy
tab_pda = /obj/item/modular_computer/handheld/pda/civilian/lawyer
wristbound = /obj/item/modular_computer/handheld/wristbound/preset/pda/civilian/lawyer
tablet = /obj/item/modular_computer/handheld/preset/civilian/lawyer
shoes = /obj/item/clothing/shoes/laceup
glasses = /obj/item/clothing/glasses/sunglasses/big
headset = /obj/item/device/radio/headset/representative
bowman = /obj/item/device/radio/headset/representative/alt
double_headset = /obj/item/device/radio/headset/alt/double/command/representative
wrist_radio = /obj/item/device/radio/headset/wrist/command/representative
/datum/job/diplomatic_bodyguard/after_spawn(mob/living/carbon/human/H)
LAZYDISTINCTADD(blacklisted_citizenship, H.citizenship)
/datum/job/corporate_aide
title = "Corporate Aide"
flag = DIPLOMAT_AIDE
flag = GLOB.DIPLOMAT_AIDE
departments = SIMPLEDEPT(DEPARTMENT_COMMAND_SUPPORT)
department_flag = ENGSEC
faction = "Station"
+3 -1
View File
@@ -19,7 +19,7 @@ var/const/BRIDGE_CREW =(1<<12)
var/const/OPERATIONS_MANAGER =(1<<13)
var/const/HRA =(1<<14)
var/const/CONSULAR_ASST =(1<<15)
var/const/DIPLOMAT_AIDE =(1<<16)
var/const/DIPLOMAT_GUARD =(1<<16)
// MEDSCI
var/const/MEDSCI =(1<<1)
@@ -59,6 +59,7 @@ var/const/CONSULAR =(1<<12)
var/const/MERCHANT =(1<<13)
var/const/JOURNALIST =(1<<14)
var/const/ASSISTANT =(1<<15)
GLOBAL_VAR_CONST(DIPLOMAT_AIDE, 1<<16)
//EVENTDEPT
//This is needed because there are just not enough bitflags available across the other departments
@@ -89,6 +90,7 @@ var/list/command_support_positions = list(
"Consular Officer",
"Bridge Crew",
"Diplomatic Aide",
"Diplomatic Bodyguard",
"Corporate Aide"
)
@@ -3,6 +3,7 @@
var/description
var/obj/outfit/consular_outfit = /obj/outfit/job/representative/consular
var/obj/outfit/assistant_outfit = /obj/outfit/job/diplomatic_aide
var/obj/outfit/bodyguard_outfit
var/demonym
var/list/job_species_blacklist = list()
var/linked_citizenship //a secondary citizenship tied to this one. only used for vaurca snowflake code.
@@ -3,6 +3,7 @@
description = "A nation of Hieroaetheria predating Nralakk discovery, the Consortium was a loose confederation of dozens of \
dionae groups across the region of Mede that have since unified into one alliance. The Consortium prides itself on progressive stances, \
aiming to foster a multicultural society inclusive of non-Dionae."
bodyguard_outfit = /obj/outfit/job/diplomatic_bodyguard/consortium
job_species_blacklist = list(
"Consular Officer" = list(
@@ -44,9 +45,37 @@
SPECIES_VAURCA_WARRIOR,
SPECIES_VAURCA_ATTENDANT,
SPECIES_VAURCA_BULWARK
),
"Diplomatic Bodyguard" = list(
SPECIES_HUMAN,
SPECIES_HUMAN_OFFWORLD,
SPECIES_IPC,
SPECIES_IPC_BISHOP,
SPECIES_IPC_G1,
SPECIES_IPC_G2,
SPECIES_IPC_SHELL,
SPECIES_IPC_UNBRANDED,
SPECIES_IPC_XION,
SPECIES_IPC_ZENGHU,
SPECIES_TAJARA,
SPECIES_TAJARA_MSAI,
SPECIES_TAJARA_ZHAN,
SPECIES_UNATHI,
SPECIES_VAURCA_WORKER,
SPECIES_VAURCA_WARRIOR,
SPECIES_VAURCA_ATTENDANT,
SPECIES_VAURCA_BULWARK
)
)
/obj/outfit/job/diplomatic_bodyguard/consortium
name = "Consortium of Hieroaetheria Diplomatic Bodyguard"
backpack_contents = list(
/obj/item/device/camera = 1,
/obj/item/gun/energy/pistol = 1
)
/datum/citizenship/consortium/get_objectives(mission_level, var/mob/living/carbon/human/H)
switch(mission_level)
if(REPRESENTATIVE_MISSION_LOW)
@@ -58,6 +87,7 @@
description = "An affront to the ideals of ther Consortium, the Union of Gla'orr is autocratic and xenophobic, opposed to the integration of non-Dionae \
into Hieroaetherian societies. Though opposed to the ideals of the Consortium and though wishing a more secular handling of issues compared to Ekane, \
they continue to engage in diplomatic relations with the other nations of the Commonwealth."
bodyguard_outfit = /obj/outfit/job/diplomatic_bodyguard/glaorr
job_species_blacklist = list(
"Consular Officer" = list(
@@ -101,9 +131,37 @@
SPECIES_VAURCA_WARRIOR,
SPECIES_VAURCA_ATTENDANT,
SPECIES_VAURCA_BULWARK
),
"Diplomatic Bodyguard" = list(
SPECIES_HUMAN,
SPECIES_HUMAN_OFFWORLD,
SPECIES_SKRELL,
SPECIES_IPC,
SPECIES_IPC_BISHOP,
SPECIES_IPC_G1,
SPECIES_IPC_G2,
SPECIES_IPC_SHELL,
SPECIES_IPC_UNBRANDED,
SPECIES_IPC_XION,
SPECIES_IPC_ZENGHU,
SPECIES_TAJARA,
SPECIES_TAJARA_MSAI,
SPECIES_TAJARA_ZHAN,
SPECIES_UNATHI,
SPECIES_VAURCA_WORKER,
SPECIES_VAURCA_WARRIOR,
SPECIES_VAURCA_ATTENDANT,
SPECIES_VAURCA_BULWARK
)
)
/obj/outfit/job/diplomatic_bodyguard/glaorr
name = "Union of Gla'orr Diplomatic Bodyguard"
backpack_contents = list(
/obj/item/device/camera = 1,
/obj/item/gun/energy/pistol = 1
)
/datum/citizenship/glaorr/get_objectives(mission_level, var/mob/living/carbon/human/H)
switch(mission_level)
if(REPRESENTATIVE_MISSION_LOW)
@@ -115,6 +173,7 @@
description = "Founded after first contact with the Nralakk Federation in communities gripped by Eternal thoughts, the Eternal Republic is an autocratic \
theocracy staunchly against propositions of reform, inclusion of non-dionae, centralisation and deeply entwined with Eternal schools of thoughts, with \
faith being a central component of all facets of life within the Eternal Republic."
bodyguard_outfit = /obj/outfit/job/diplomatic_bodyguard/ekane
job_species_blacklist = list(
"Consular Officer" = list(
@@ -158,9 +217,37 @@
SPECIES_VAURCA_WARRIOR,
SPECIES_VAURCA_ATTENDANT,
SPECIES_VAURCA_BULWARK
),
"Diplomatic Bodyguard" = list(
SPECIES_HUMAN,
SPECIES_HUMAN_OFFWORLD,
SPECIES_SKRELL,
SPECIES_IPC,
SPECIES_IPC_BISHOP,
SPECIES_IPC_G1,
SPECIES_IPC_G2,
SPECIES_IPC_SHELL,
SPECIES_IPC_UNBRANDED,
SPECIES_IPC_XION,
SPECIES_IPC_ZENGHU,
SPECIES_TAJARA,
SPECIES_TAJARA_MSAI,
SPECIES_TAJARA_ZHAN,
SPECIES_UNATHI,
SPECIES_VAURCA_WORKER,
SPECIES_VAURCA_WARRIOR,
SPECIES_VAURCA_ATTENDANT,
SPECIES_VAURCA_BULWARK
)
)
/obj/outfit/job/diplomatic_bodyguard/ekane
name = "Eternal Republic of The Ekane Diplomatic Bodyguard"
backpack_contents = list(
/obj/item/device/camera = 1,
/obj/item/gun/energy/pistol = 1
)
/datum/citizenship/ekane/get_objectives(mission_level, var/mob/living/carbon/human/H)
switch(mission_level)
if(REPRESENTATIVE_MISSION_LOW)
+89 -10
View File
@@ -16,6 +16,9 @@
),
"Diplomatic Aide" = list(
SPECIES_VAURCA_BREEDER
),
"Diplomatic Bodyguard" = list(
SPECIES_VAURCA_WORKER
)
)
@@ -68,6 +71,12 @@
name = "Tau Ceti Diplomatic Aide"
accessory = /obj/item/clothing/accessory/tc_pin
/obj/outfit/job/diplomatic_bodyguard/ceti
name = "Tau Ceti Diplomatic Bodyguard"
backpack_contents = list(
/obj/item/gun/energy/blaster/revolver
)
/obj/outfit/job/representative/consular/ceti/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
if(H)
if(isvaurca(H))
@@ -77,9 +86,6 @@
H.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/vaurca/filter(H), slot_wear_mask)
H.equip_to_slot_or_del(new /obj/item/clothing/suit/vaurca/breeder(H), slot_wear_suit)
H.equip_to_slot_or_del(new /obj/item/storage/backpack/typec(H), slot_back)
H.equip_to_slot_or_del(new /obj/item/gun/energy/vaurca/blaster(H), slot_belt)
else
H.equip_to_slot_or_del(new /obj/item/gun/energy/blaster/revolver(H), slot_belt)
if(!visualsOnly)
addtimer(CALLBACK(src, .proc/send_representative_mission, H), 5 MINUTES)
return TRUE
@@ -93,6 +99,7 @@
Though much of its former possessions are now occupied by warlord statelets and other interstellar powers, the Alliance still maintains a revanchist outlook, refusing to relinquish its claims to its lost territories."
consular_outfit = /obj/outfit/job/representative/consular/sol
assistant_outfit = /obj/outfit/job/diplomatic_aide/sol
bodyguard_outfit = /obj/outfit/job/diplomatic_bodyguard/sol
job_species_blacklist = list(
"Consular Officer" = list(
SPECIES_IPC,
@@ -139,6 +146,29 @@
SPECIES_VAURCA_ATTENDANT,
SPECIES_VAURCA_BULWARK,
SPECIES_VAURCA_BREEDER
),
"Diplomatic Bodyguard" = list(
SPECIES_IPC,
SPECIES_IPC_BISHOP,
SPECIES_IPC_G1,
SPECIES_IPC_G2,
SPECIES_IPC_SHELL,
SPECIES_IPC_UNBRANDED,
SPECIES_IPC_XION,
SPECIES_IPC_ZENGHU,
SPECIES_DIONA,
SPECIES_DIONA_COEUS,
SPECIES_SKRELL,
SPECIES_SKRELL_AXIORI,
SPECIES_TAJARA,
SPECIES_TAJARA_MSAI,
SPECIES_TAJARA_ZHAN,
SPECIES_UNATHI,
SPECIES_VAURCA_WORKER,
SPECIES_VAURCA_WARRIOR,
SPECIES_VAURCA_ATTENDANT,
SPECIES_VAURCA_BULWARK,
SPECIES_VAURCA_BREEDER
)
)
@@ -166,8 +196,7 @@
backpack_contents = list(
/obj/item/storage/box/sol_visa = 1,
/obj/item/stamp/sol = 1,
/obj/item/device/camera = 1,
/obj/item/gun/projectile/pistol/sol = 1
/obj/item/device/camera = 1
)
/obj/outfit/job/diplomatic_aide/sol
@@ -175,6 +204,12 @@
accessory = /obj/item/clothing/accessory/sol_pin
/obj/outfit/job/diplomatic_bodyguard/sol
name = "Sol Diplomatic Bodyguard"
backpack_contents = list(
/obj/item/gun/projectile/pistol/sol = 1
)
/datum/citizenship/sol_alliance/eridani
name = CITIZENSHIP_ERIDANI
description = "Eridani, or the Eridani Corporate Federation, is a dystopian oligarchic republic in the Epsilon Eridani system, dominated entirely by a council of mega-corporations \
@@ -194,6 +229,7 @@
tightly-knit. Almost anything and anyone can be found in these wild, mostly uncharted lands. "
demonym = "frontiersman"
consular_outfit = /obj/outfit/job/representative/consular/coalition
bodyguard_outfit = /obj/outfit/job/diplomatic_bodyguard/coalition
job_species_blacklist = list(
"Consular Officer" = list(
@@ -217,6 +253,17 @@
SPECIES_VAURCA_ATTENDANT,
SPECIES_VAURCA_BULWARK,
SPECIES_VAURCA_BREEDER
),
"Diplomatic Bodyguard" = list(
SPECIES_TAJARA,
SPECIES_TAJARA_MSAI,
SPECIES_TAJARA_ZHAN,
SPECIES_UNATHI,
SPECIES_VAURCA_WORKER,
SPECIES_VAURCA_WARRIOR,
SPECIES_VAURCA_ATTENDANT,
SPECIES_VAURCA_BULWARK,
SPECIES_VAURCA_BREEDER
)
)
@@ -224,7 +271,12 @@
name = "Coalition Consular Officer"
backpack_contents = list(
/obj/item/device/camera = 1,
/obj/item/device/camera = 1
)
/obj/outfit/job/diplomatic_bodyguard/coalition
name = "Coalition Diplomatic Bodyguard"
backpack_contents = list(
/obj/item/gun/projectile/xanupistol = 1
)
@@ -235,14 +287,15 @@
is \"For Greatness We Strive\". It's official language is Tau Ceti Basic, though several old-earth languages cling to life in small enclaves, such as arabic, persian, and farsi. \
The Republic has mixed relations with NanoTrasen, due to their own possession of phoron."
demonym = "elyran"
consular_outfit = /obj/outfit/job/representative/consular/elyra
bodyguard_outfit = /obj/outfit/job/diplomatic_bodyguard/elyra
/obj/outfit/job/representative/consular/elyra
name = "Elyra Consular Officer"
/obj/outfit/job/diplomatic_bodyguard/elyra
name = "Elyra Diplomatic Bodyguard"
backpack_contents = list(
/obj/item/gun/projectile/plasma/bolter/pistol = 1
)
/datum/citizenship/elyran_ncp
name = CITIZENSHIP_ELYRA_NCP
description = "\"Non-Citizen Persons,\" (NCPs) as they are officially called, make-up approximately one-third of the total population of the Republic Elyra. \
@@ -289,6 +342,7 @@
Imperial society is dominated by the Great and Minor Houses under the Emperor and is very socio-economically stratified due to the so-called blood debt, known as the Mor'iz'al."
consular_outfit = /obj/outfit/job/representative/consular/dominia
bodyguard_outfit = /obj/outfit/job/diplomatic_bodyguard/dominia
job_species_blacklist = list(
"Consular Officer" = list(
@@ -330,6 +384,26 @@
SPECIES_VAURCA_ATTENDANT,
SPECIES_VAURCA_BULWARK,
SPECIES_VAURCA_BREEDER
),
"Diplomatic Bodyguard" = list(
SPECIES_IPC,
SPECIES_IPC_BISHOP,
SPECIES_IPC_G1,
SPECIES_IPC_G2,
SPECIES_IPC_SHELL,
SPECIES_IPC_UNBRANDED,
SPECIES_IPC_XION,
SPECIES_IPC_ZENGHU,
SPECIES_SKRELL,
SPECIES_SKRELL_AXIORI,
SPECIES_TAJARA,
SPECIES_TAJARA_MSAI,
SPECIES_TAJARA_ZHAN,
SPECIES_VAURCA_WORKER,
SPECIES_VAURCA_WARRIOR,
SPECIES_VAURCA_ATTENDANT,
SPECIES_VAURCA_BULWARK,
SPECIES_VAURCA_BREEDER
)
)
@@ -354,6 +428,11 @@
name = "Empire of Dominia Consular Officer"
backpack_contents = list(
/obj/item/storage/box/dominia_honor = 1,
/obj/item/storage/box/dominia_honor = 1
)
/obj/outfit/job/diplomatic_bodyguard/dominia
name = "Empire of Dominia Diplomatic Bodyguard"
backpack_contents = list(
/obj/item/gun/projectile/pistol/dominia = 1
)
@@ -11,6 +11,7 @@
Frontier collective. Due to their peerless skill in business and clerical duties, affiliates share warm relations with NanoTrasen and \
find themselves the target of job opportunities in exchange for citizenship."
consular_outfit = /obj/outfit/job/representative/consular/golden
bodyguard_outfit = /obj/outfit/job/diplomatic_bodyguard/golden
job_species_blacklist = list(
"Consular Officer" = list(
@@ -53,6 +54,9 @@
name = "Golden Deep Consular Officer"
uniform = /obj/item/clothing/under/goldendeep/suit
/obj/outfit/job/diplomatic_bodyguard/golden
name = "Golden Deep Diplomatic Bodyguard"
backpack_contents = list(
/obj/item/gun/energy/pistol/goldendeep = 1
)
+32 -5
View File
@@ -8,6 +8,7 @@
after a Federation tech leak provided them with the research required to create their own AI, as well as allowing them to create IPCs."
consular_outfit = /obj/outfit/job/representative/consular/nralakk
assistant_outfit = /obj/outfit/job/diplomatic_aide/nralakk
bodyguard_outfit = /obj/outfit/job/diplomatic_bodyguard/nralakk
job_species_blacklist = list(
"Consular Officer" = list(
@@ -47,6 +48,24 @@
SPECIES_TAJARA_ZHAN,
SPECIES_UNATHI,
SPECIES_VAURCA_BREEDER
),
"Diplomatic Bodyguard" = list(
SPECIES_HUMAN,
SPECIES_HUMAN_OFFWORLD,
SPECIES_IPC,
SPECIES_IPC_BISHOP,
SPECIES_IPC_G1,
SPECIES_IPC_G2,
SPECIES_IPC_SHELL,
SPECIES_IPC_UNBRANDED,
SPECIES_IPC_XION,
SPECIES_IPC_ZENGHU,
SPECIES_TAJARA,
SPECIES_TAJARA_MSAI,
SPECIES_TAJARA_ZHAN,
SPECIES_UNATHI,
SPECIES_VAURCA_BREEDER,
SPECIES_VAURCA_WORKER
)
)
@@ -97,8 +116,6 @@
/obj/outfit/job/representative/consular/nralakk/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
if(H)
if(isskrell(H))
H.equip_to_slot_or_del(new /obj/item/gun/energy/fedpistol(H), slot_belt)
if(isvaurca(H)) // there should be a system for this but for now this will have to do i guess
H.equip_to_slot_or_del(new /obj/item/clothing/under/gearharness(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/head/vaurca_breeder/nralakk(H), slot_head)
@@ -106,12 +123,22 @@
H.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/vaurca/filter(H), slot_wear_mask)
H.equip_to_slot_or_del(new /obj/item/clothing/suit/vaurca/breeder/cthur(H), slot_wear_suit)
H.equip_to_slot_or_del(new /obj/item/storage/backpack/typec/cthur(H), slot_back)
H.equip_to_slot_or_del(new /obj/item/gun/energy/vaurca/blaster(H), slot_belt) // Federation Ta Consulars get a Thermic Blaster.
else
H.equip_to_slot_or_del(new /obj/item/gun/energy/fedpistol/nopsi(H), slot_belt)
if(!visualsOnly)
addtimer(CALLBACK(src, PROC_REF(send_representative_mission), H), 5 MINUTES)
return TRUE
/obj/outfit/job/diplomatic_aide/nralakk
name = "Nralakk Federation Diplomatic Aide"
uniform = /obj/item/clothing/under/skrell
/obj/outfit/job/diplomatic_bodyguard/nralakk
name = "Nralakk Federation Diplomatic Bodyguard"
uniform = /obj/item/clothing/under/skrell
/obj/outfit/job/diplomatic_bodyguard/nralakk/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
if(H)
if(isskrell(H))
H.equip_to_slot_or_del(new /obj/item/gun/energy/fedpistol(H), slot_belt)
else
H.equip_to_slot_or_del(new /obj/item/gun/energy/fedpistol/nopsi(H), slot_belt)
return TRUE
+97 -2
View File
@@ -7,6 +7,7 @@
struggling to hold true to its radical ideals while an entrenched upper party stubbornly tries to hold onto power."
consular_outfit = /obj/outfit/job/representative/consular/pra
assistant_outfit = /obj/outfit/job/diplomatic_aide/pra
bodyguard_outfit = /obj/outfit/job/diplomatic_bodyguard/pra
job_species_blacklist = list(
"Consular Officer" = list(
@@ -55,6 +56,29 @@
SPECIES_VAURCA_BULWARK,
SPECIES_VAURCA_BREEDER,
SPECIES_TAJARA_ZHAN
),
"Diplomatic Bodyguard" = list(
SPECIES_HUMAN,
SPECIES_HUMAN_OFFWORLD,
SPECIES_IPC,
SPECIES_IPC_BISHOP,
SPECIES_IPC_G1,
SPECIES_IPC_G2,
SPECIES_IPC_SHELL,
SPECIES_IPC_UNBRANDED,
SPECIES_IPC_XION,
SPECIES_IPC_ZENGHU,
SPECIES_DIONA,
SPECIES_DIONA_COEUS,
SPECIES_SKRELL,
SPECIES_SKRELL_AXIORI,
SPECIES_UNATHI,
SPECIES_VAURCA_WORKER,
SPECIES_VAURCA_WARRIOR,
SPECIES_VAURCA_ATTENDANT,
SPECIES_VAURCA_BULWARK,
SPECIES_VAURCA_BREEDER,
SPECIES_TAJARA_ZHAN
)
)
@@ -72,7 +96,6 @@
backpack_contents = list(
/obj/item/storage/box/hadii_card = 1,
/obj/item/storage/box/hadii_manifesto = 1,
/obj/item/gun/projectile/pistol/adhomai = 1,
/obj/item/storage/field_ration = 1,
/obj/item/clothing/accessory/badge/hadii_card/member = 1,
/obj/item/storage/box/syndie_kit/spy/hidden = 1
@@ -80,6 +103,7 @@
accessory = /obj/item/clothing/accessory/hadii_pin
/obj/outfit/job/diplomatic_aide/pra
name = "PRA Diplomatic Aide"
glasses = null
uniform = /obj/item/clothing/under/tajaran/smart
backpack_contents = list(
@@ -90,6 +114,14 @@
)
accessory = /obj/item/clothing/accessory/hadii_pin
/obj/outfit/job/diplomatic_bodyguard/pra
name = "PRA Diplomatic Bodyguard"
uniform = /obj/item/clothing/under/tajaran/fancy/alt2
backpack_contents = list(
/obj/item/gun/projectile/pistol/adhomai = 1
)
accessory = /obj/item/clothing/accessory/hadii_pin
/datum/citizenship/dpra
name = CITIZENSHIP_DPRA
description = "The most pervasive and successful rebellion came from a group calling themselves the Adhomai Liberation Army, a group made up of Tajara from almost every walk of life. \
@@ -100,6 +132,7 @@
voluntarily turn over power to civilian governments, the DPRA's future faces many fundamental changes."
consular_outfit = /obj/outfit/job/representative/consular/dpra
assistant_outfit = /obj/outfit/job/diplomatic_aide/dpra
bodyguard_outfit = /obj/outfit/job/diplomatic_bodyguard/dpra
job_species_blacklist = list(
"Consular Officer" = list(
@@ -148,6 +181,29 @@
SPECIES_VAURCA_BULWARK,
SPECIES_VAURCA_BREEDER,
SPECIES_TAJARA_ZHAN
),
"Diplomatic Bodyguard" = list(
SPECIES_HUMAN,
SPECIES_HUMAN_OFFWORLD,
SPECIES_IPC,
SPECIES_IPC_BISHOP,
SPECIES_IPC_G1,
SPECIES_IPC_G2,
SPECIES_IPC_SHELL,
SPECIES_IPC_UNBRANDED,
SPECIES_IPC_XION,
SPECIES_IPC_ZENGHU,
SPECIES_DIONA,
SPECIES_DIONA_COEUS,
SPECIES_SKRELL,
SPECIES_SKRELL_AXIORI,
SPECIES_UNATHI,
SPECIES_VAURCA_WORKER,
SPECIES_VAURCA_WARRIOR,
SPECIES_VAURCA_ATTENDANT,
SPECIES_VAURCA_BULWARK,
SPECIES_VAURCA_BREEDER,
SPECIES_TAJARA_ZHAN
)
)
@@ -171,6 +227,7 @@
accessory = /obj/item/clothing/accessory/dpra_pin
/obj/outfit/job/diplomatic_aide/dpra
name = "DPRA Diplomatic Aide"
glasses = null
uniform = /obj/item/clothing/under/tajaran/smart
backpack_contents = list(
@@ -179,6 +236,13 @@
)
accessory = /obj/item/clothing/accessory/dpra_pin
/obj/outfit/job/diplomatic_bodyguard/dpra
name = "DPRA Diplomatic Bodyguard"
uniform = /obj/item/clothing/under/tajaran/fancy/alt2
backpack_contents = list(
/obj/item/gun/projectile/silenced = 1,
)
/datum/citizenship/nka
name = CITIZENSHIP_NKA
description = "The last major faction is the rebellious New Kingdom of Adhomai, which seceded and declared itself a nation in 2450. The New Kingdom is ruled by a Njarir'Akhran noble \
@@ -191,6 +255,7 @@
the Azunja dynasty finds itself struggling to function with their limited constitutional powers and factional in-fighting between the military and the civilian government."
consular_outfit = /obj/outfit/job/representative/consular/nka
assistant_outfit = /obj/outfit/job/diplomatic_aide/nka
bodyguard_outfit = /obj/outfit/job/diplomatic_bodyguard/nka
job_species_blacklist = list(
"Consular Officer" = list(
@@ -239,6 +304,29 @@
SPECIES_VAURCA_BULWARK,
SPECIES_VAURCA_BREEDER,
SPECIES_TAJARA_ZHAN
),
"Diplomatic Bodyguard" = list(
SPECIES_HUMAN,
SPECIES_HUMAN_OFFWORLD,
SPECIES_IPC,
SPECIES_IPC_BISHOP,
SPECIES_IPC_G1,
SPECIES_IPC_G2,
SPECIES_IPC_SHELL,
SPECIES_IPC_UNBRANDED,
SPECIES_IPC_XION,
SPECIES_IPC_ZENGHU,
SPECIES_DIONA,
SPECIES_DIONA_COEUS,
SPECIES_SKRELL,
SPECIES_SKRELL_AXIORI,
SPECIES_UNATHI,
SPECIES_VAURCA_WORKER,
SPECIES_VAURCA_WARRIOR,
SPECIES_VAURCA_ATTENDANT,
SPECIES_VAURCA_BULWARK,
SPECIES_VAURCA_BREEDER,
SPECIES_TAJARA_ZHAN
)
)
@@ -255,7 +343,6 @@
head = /obj/item/clothing/head/tajaran/consular/nka
backpack_contents = list(
/obj/item/folder/blue/nka = 1,
/obj/item/gun/projectile/revolver/adhomian = 1,
/obj/item/storage/box/nka_manifesto = 1,
/obj/item/storage/field_ration/nka = 1,
/obj/item/storage/box/syndie_kit/spy/hidden = 1
@@ -263,6 +350,7 @@
accessory = /obj/item/clothing/accessory/nka_pin
/obj/outfit/job/diplomatic_aide/nka
name = "NKA Diplomatic Aide"
glasses = null
uniform = /obj/item/clothing/under/tajaran/fancy
backpack_contents = list(
@@ -272,6 +360,13 @@
)
accessory = /obj/item/clothing/accessory/nka_pin
/obj/outfit/job/diplomatic_bodyguard/nka
name = "NKA Diplomatic Bodyguard"
uniform = /obj/item/clothing/under/tajaran/fancy/alt2
backpack_contents = list(
/obj/item/gun/projectile/revolver/adhomian = 1
)
/datum/citizenship/free_council
name = CITIZENSHIP_FREE_COUNCIL
description = "The Free Tajaran Council is the largest Tajaran community in Himeo. Its origins can be traced back to the First Revolution-era revolutionaries that fled Adhomai. Built upon \
+28 -2
View File
@@ -6,6 +6,7 @@
apocalyptic world war that nearly plunged the species into ruin, the Izweski Hegemony has rebounded and is currently working on making the Hegemony a galactic power."
consular_outfit = /obj/outfit/job/representative/consular/izweski
assistant_outfit = /obj/outfit/job/diplomatic_aide/izweski
bodyguard_outfit = /obj/outfit/job/diplomatic_bodyguard/izweski
job_species_blacklist = list(
"Consular Officer" = list(
@@ -46,6 +47,25 @@
SPECIES_TAJARA_MSAI,
SPECIES_TAJARA_ZHAN,
SPECIES_VAURCA_BREEDER
),
"Diplomatic Bodyguard" = list(
SPECIES_HUMAN,
SPECIES_HUMAN_OFFWORLD,
SPECIES_IPC,
SPECIES_IPC_BISHOP,
SPECIES_IPC_G1,
SPECIES_IPC_G2,
SPECIES_IPC_SHELL,
SPECIES_IPC_UNBRANDED,
SPECIES_IPC_XION,
SPECIES_IPC_ZENGHU,
SPECIES_SKRELL,
SPECIES_SKRELL_AXIORI,
SPECIES_TAJARA,
SPECIES_TAJARA_MSAI,
SPECIES_TAJARA_ZHAN,
SPECIES_VAURCA_BREEDER,
SPECIES_VAURCA_WORKER
)
)
@@ -97,16 +117,22 @@
H.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/vaurca/filter(H), slot_wear_mask)
H.equip_to_slot_or_del(new /obj/item/clothing/suit/vaurca/breeder/klax(H), slot_wear_suit)
H.equip_to_slot_or_del(new /obj/item/storage/backpack/typec/klax(H), slot_back)
H.equip_to_slot_or_del(new /obj/item/gun/energy/vaurca/blaster(H), slot_belt) // Hegemony Ta Consulars get a Thermic Blaster.
else if(H.is_diona())
H.equip_or_collect(new /obj/item/device/uv_light(src), slot_in_backpack)
else
H.equip_to_slot_or_del(new /obj/item/clothing/accessory/poncho/unathimantle(H), slot_wear_suit)
H.equip_to_slot_or_del(new /obj/item/gun/energy/pistol/hegemony(H), slot_belt)
if(!visualsOnly)
addtimer(CALLBACK(src, .proc/send_representative_mission, H), 5 MINUTES)
return TRUE
/obj/outfit/job/diplomatic_aide/izweski
name = "Izweski Hegemony Diplomatic Aide"
uniform = /obj/item/clothing/under/unathi
suit = /obj/item/clothing/accessory/poncho/unathimantle
/obj/outfit/job/diplomatic_bodyguard/izweski
name = "Izweski Hegemony Diplomatic Bodyguard"
uniform = /obj/item/clothing/under/unathi
backpack_contents = list(
/obj/item/gun/energy/pistol/hegemony = 1
)
+80 -6
View File
@@ -6,6 +6,7 @@
Tau Ceti, this has lead to confrontations between them and other Hives arriving in the system. The Zo'ra are the most politically developed Hive, recently helping in the funding of \
the Tau Ceti Foreign Legion, and making active progress to spread their influence."
consular_outfit = /obj/outfit/job/representative/consular/zora
bodyguard_outfit = /obj/outfit/job/diplomatic_bodyguard/zora
linked_citizenship = CITIZENSHIP_BIESEL
job_species_blacklist = list(
@@ -33,7 +34,28 @@
SPECIES_VAURCA_ATTENDANT,
SPECIES_VAURCA_BULWARK
),
"Diplomatic Aide" = ALL_SPECIES
"Diplomatic Aide" = ALL_SPECIES,
"Diplomatic Bodyguard" = list(
SPECIES_HUMAN,
SPECIES_HUMAN_OFFWORLD,
SPECIES_IPC,
SPECIES_IPC_BISHOP,
SPECIES_IPC_G1,
SPECIES_IPC_G2,
SPECIES_IPC_SHELL,
SPECIES_IPC_UNBRANDED,
SPECIES_IPC_XION,
SPECIES_IPC_ZENGHU,
SPECIES_DIONA,
SPECIES_DIONA_COEUS,
SPECIES_SKRELL,
SPECIES_SKRELL_AXIORI,
SPECIES_TAJARA,
SPECIES_TAJARA_MSAI,
SPECIES_TAJARA_ZHAN,
SPECIES_UNATHI,
SPECIES_VAURCA_WORKER
)
)
/datum/citizenship/zora/get_objectives(mission_level, var/mob/living/carbon/human/H)
@@ -74,11 +96,14 @@
if(isvaurca(H))
H.equip_to_slot_or_del(new /obj/item/storage/backpack/typec(H), slot_back)
H.equip_to_slot_or_del(new /obj/item/storage/box/tcaf_pamphlet(H), slot_in_backpack)
H.equip_to_slot_or_del(new /obj/item/gun/energy/vaurca/blaster(H), slot_belt)
if(!visualsOnly)
addtimer(CALLBACK(src, PROC_REF(send_representative_mission), H), 5 MINUTES)
return TRUE
/obj/outfit/job/diplomatic_bodyguard/zora
name = "Zo'ra Diplomatic Bodyguard"
backpack_contents = list(/obj/item/gun/energy/vaurca/blaster = 1)
/datum/citizenship/klax
name = CITIZENSHIP_KLAX
description = "The second Hive discovered by humanity, Hiveship, Klo'zxera, appeared in the Skrellian system of Glorashi. \
@@ -87,6 +112,7 @@
They maintain subtly warm, if terse relations with the Hegemony as a whole, and have committed to its terraforming agenda, being instrumental in the implementation of such a monumental undertaking. \
The K'lax are the most technologically developed Hive, and are leading the way in reconstructing the species' superior technology."
consular_outfit = /obj/outfit/job/representative/consular/klax
bodyguard_outfit = /obj/outfit/job/diplomatic_bodyguard/klax
linked_citizenship = CITIZENSHIP_IZWESKI
job_species_blacklist = list(
@@ -113,9 +139,30 @@
SPECIES_VAURCA_ATTENDANT,
SPECIES_VAURCA_BULWARK
),
"Diplomatic Aide" = ALL_SPECIES
"Diplomatic Aide" = ALL_SPECIES,
"Diplomatic Bodyguard" = list(
SPECIES_HUMAN,
SPECIES_HUMAN_OFFWORLD,
SPECIES_IPC,
SPECIES_IPC_BISHOP,
SPECIES_IPC_G1,
SPECIES_IPC_G2,
SPECIES_IPC_SHELL,
SPECIES_IPC_UNBRANDED,
SPECIES_IPC_XION,
SPECIES_IPC_ZENGHU,
SPECIES_DIONA,
SPECIES_SKRELL,
SPECIES_SKRELL_AXIORI,
SPECIES_TAJARA,
SPECIES_TAJARA_MSAI,
SPECIES_TAJARA_ZHAN,
SPECIES_UNATHI,
SPECIES_VAURCA_WORKER
)
)
/datum/citizenship/klax/get_objectives(mission_level, var/mob/living/carbon/human/H)
var/rep_objectives
@@ -151,11 +198,14 @@
if(H)
if(isvaurca(H))
H.equip_to_slot_or_del(new /obj/item/storage/backpack/typec/klax(H), slot_back)
H.equip_to_slot_or_del(new /obj/item/gun/energy/vaurca/blaster(H), slot_belt)
if(!visualsOnly)
addtimer(CALLBACK(src, PROC_REF(send_representative_mission), H), 5 MINUTES)
return TRUE
/obj/outfit/job/diplomatic_bodyguard/klax
name = "K'lax Diplomatic Bodyguard"
backpack_contents = list(/obj/item/gun/energy/vaurca/blaster = 1)
/datum/citizenship/cthur
name = CITIZENSHIP_CTHUR
description = "They are the third Hive that has developed relationships with other sophonts of the Orion Spur. \
@@ -164,6 +214,7 @@
In this effort, the Hive has begun dealing with the multitude of governments and corporations of the galaxy, all under the auspices of their Skrellian saviors. \
The C'thur are the most economically developed Hive, having stakes in Einstein Engines and Zeng-Hu Pharmaceuticals."
consular_outfit = /obj/outfit/job/representative/consular/cthur
bodyguard_outfit = /obj/outfit/job/diplomatic_bodyguard/cthur
linked_citizenship = CITIZENSHIP_NRALAKK
job_species_blacklist = list(
@@ -190,7 +241,27 @@
SPECIES_VAURCA_ATTENDANT,
SPECIES_VAURCA_BULWARK
),
"Diplomatic Aide" = ALL_SPECIES
"Diplomatic Aide" = ALL_SPECIES,
"Diplomatic Bodyguard" = list(
SPECIES_HUMAN,
SPECIES_HUMAN_OFFWORLD,
SPECIES_IPC,
SPECIES_IPC_BISHOP,
SPECIES_IPC_G1,
SPECIES_IPC_G2,
SPECIES_IPC_SHELL,
SPECIES_IPC_UNBRANDED,
SPECIES_IPC_XION,
SPECIES_IPC_ZENGHU,
SPECIES_DIONA,
SPECIES_SKRELL,
SPECIES_SKRELL_AXIORI,
SPECIES_TAJARA,
SPECIES_TAJARA_MSAI,
SPECIES_TAJARA_ZHAN,
SPECIES_UNATHI,
SPECIES_VAURCA_WORKER
)
)
/datum/citizenship/cthur/get_objectives(mission_level, var/mob/living/carbon/human/H)
@@ -229,11 +300,14 @@
if(H)
if(isvaurca(H))
H.equip_to_slot_or_del(new /obj/item/storage/backpack/typec/cthur(H), slot_back)
H.equip_to_slot_or_del(new /obj/item/gun/energy/vaurca/blaster(H), slot_belt)
if(!visualsOnly)
addtimer(CALLBACK(src, PROC_REF(send_representative_mission), H), 5 MINUTES)
return TRUE
/obj/outfit/job/diplomatic_bodyguard/cthur
name = "C'thur Diplomatic Bodyguard"
backpack_contents = list(/obj/item/gun/energy/vaurca/blaster = 1)
/datum/citizenship/liikenka
name = CITIZENSHIP_LIIKENKA
description = "A group of Punished C'thur residing in Phoenixport and on Mictlan, the majority of Lii'kenka opt to remain undercover as \