Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adds the CIA, Removes UAAC-TIS #7757

Merged
merged 11 commits into from
Dec 11, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions code/__DEFINES/access.dm
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,9 @@ most of them are tied into map-placed objects. This should be reworked in the fu
///The generic "I'm a bad guy" access
#define ACCESS_ILLEGAL_PIRATE 120

//CIA-locked covert items
#define ACCESS_CIA 125

//=================================================

//Weyland Yutani access levels (200-229)
Expand Down
6 changes: 3 additions & 3 deletions code/__DEFINES/job.dm
Original file line number Diff line number Diff line change
Expand Up @@ -367,9 +367,9 @@ GLOBAL_LIST_INIT(job_command_roles, JOB_COMMAND_ROLES_LIST)
#define JOB_RIOT_CHIEF "Chief Riot Control"

#define RIOT_JOB_LIST list(JOB_RIOT, JOB_RIOT_CHIEF)
//-------- UAAC --------//
#define JOB_TIS_IO "UAAC-TIS Intelligence Officer"
#define JOB_TIS_SA "UAAC-TIS Special Agent"
//-------- CIA --------//
#define JOB_CIA "Intelligence Analyst"
#define JOB_CIA_LIAISON "Intelligence Liaison Officer"

#define TIS_JOB_LIST list(JOB_TIS_SA, JOB_TIS_IO)
//-------- DUTCH'S DOZEN --------//
Expand Down
1 change: 1 addition & 0 deletions code/__DEFINES/radio.dm
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@
#define RADIO_CHANNEL_VAI "VAI"
#define RADIO_CHANNEL_CMB "CMB"
#define RADIO_CHANNEL_ROYAL_MARINE "Royal Marine"
#define RADIO_CHANNEL_CIA "CIA"

#define RADIO_CHANNEL_YAUTJA "Yautja"

3 changes: 3 additions & 0 deletions code/controllers/subsystem/communications.dm
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ Radiochat range: 1441 to 1489 (most devices refuse to be tune to other frequency
#define VAI_FREQ 1215
#define RMC_FREQ 1216
#define CMB_FREQ 1220
#define CIA_FREQ 1225

//WY Channels (1230-1249)
#define WY_FREQ 1231
Expand Down Expand Up @@ -154,6 +155,7 @@ GLOBAL_LIST_INIT(radiochannels, list(
RADIO_CHANNEL_CMB = CMB_FREQ,
RADIO_CHANNEL_DUTCH_DOZEN = DUT_FREQ,
RADIO_CHANNEL_ROYAL_MARINE = RMC_FREQ,
RADIO_CHANNEL_CIA = CIA_FREQ,

RADIO_CHANNEL_HIGHCOM = HC_FREQ,
RADIO_CHANNEL_PROVOST = PVST_FREQ,
Expand Down Expand Up @@ -278,6 +280,7 @@ SUBSYSTEM_DEF(radio)
"[WY_FREQ]" = "wyradio",
"[VAI_FREQ]" = "vairadio",
"[RMC_FREQ]" = "rmcradio",
"[CIA_FREQ]" = "ciaradio",
"[CMB_FREQ]" = "cmbradio",
"[ALPHA_FREQ]" = "alpharadio",
"[BRAVO_FREQ]" = "bravoradio",
Expand Down
58 changes: 58 additions & 0 deletions code/datums/agents/tools.dm
Original file line number Diff line number Diff line change
Expand Up @@ -137,3 +137,61 @@

/obj/item/stack/points/p20
amount = 20

/obj/item/device/portable_vendor/antag/cia
name = "Automated Storage Briefcase"
desc = "A briefcase able to dispense items at the user's discretion. This one appears to be tightly locked, and impenetrable."
points = 200
max_points = 300
delay = 0.5
force = MELEE_FORCE_STRONG
req_access = list()

listed_products = list(
list("STATIONERY", 0, null, null, null),
list("pen", 1, /obj/item/tool/pen/clicky, "white", "A pen, for writing on the go."),
list("Paper", 1, /obj/item/paper, "white", "A fresh piece of paper, for writing on."),
list("Carbon Paper", 1, /obj/item/paper/carbon, "white", "A piece of carbon paper, to double the writing output."),
list("Clipboard", 1, /obj/item/clipboard, "white", "A clipboard, for storing all that writing."),

list("WEAPONS", 0, null, null, null),
list("Configured Stunbaton", 25, /obj/item/weapon/baton/antag, "white", "A stun baton with more charge."),
list("Tranquilizer Gun", 25, /obj/item/weapon/gun/pistol/tranquilizer, "white", "A tranquilizer gun. Comes with 5 darts. Deals no damage, knockout guaranteed."),
list("Chloroform Cloth", 18, /obj/item/weapon/chloroform, "white", "A cloth dosed with chloroform. Has 8 effective uses and can only be used whilst behind a target. You must be in disarm intent to use."),
list("Sedative Pen", 15, /obj/item/tool/pen/sleepypen, "white", "A sedative syringe disguised as a pen. Can be used to stealthily knock out targets."),
list("Handcuffs", 2, /obj/item/restraint/handcuffs, "white", "A set of handcuffs."),

list("AMMUNITION", 0, null, null, null),
list("M1911 Magazine", 5, /obj/item/ammo_magazine/pistol/m1911, "white", "A magazine for an M1911 pistol."),

list("UTILITY", 0, null, null, null),
list("Security Access Tuner v2", 25, /obj/item/device/multitool/antag, "white", "An upgraded access tuner, able to rapidly hack various machinery. Disguised as a regular multitool."),
list("Listening Device", 20, /obj/item/device/radio/listening_bug/radio_linked/cia, "white", "A listening device. Can be disguised as anything by right-clicking on it."),
list("USCM Codebook", 20, /obj/item/book/codebook, "white", "A copy of a USCM codebook used to verify credentials with the commanding officer."),
list("Tools Kit", 15, /obj/item/storage/toolbox/mechanical, "white", "A toolbox containing general tools."),
list("CIA Challenge Coin", 15, /obj/item/coin/silver/cia, "white", "A challenge coin emblazoned with an eagle. Use to identify other CIA operatives on the field at a glance."),

list("MARINE CLOTHING", 0, null, null, null),
list("Marine Helmet", 5, /obj/item/clothing/head/helmet/marine, "white", "A USCM standard military helmet."),
list("Marine Fatigues", 8, /obj/item/clothing/under/marine, "white", "A USCM standard military battle dress uniform."),
list("M3 Pattern Marine Armor", 20, /obj/item/clothing/suit/storage/marine, "white", "A USCM standard armor rig for combat situations."),
list("M3 Pattern Marine Armor", 15, /obj/item/clothing/suit/storage/marine/light, "white", "A USCM light armor rig for combat situations."),
list("M3-VL Ballistics Vest", 12, /obj/item/clothing/suit/storage/marine/light/vest, "white", "A USCM light ballistic vest for combat situations."),

list("RADIO KEYS", 0, null, null, null),
list("Radio Key: CIA", 10, /obj/item/device/encryptionkey/cia, "white", "Radio Key for CIA communications."),
list("Radio Key: Colonial Marshals", 20, /obj/item/device/encryptionkey/cmb, "white", "Radio Key for the CMB."),
list("Radio Key: Colonial Liberation Front", 20, /obj/item/device/encryptionkey/clf, "white", "Radio Key for known local CLF frequencies."),
list("Radio Key: Union of Progressive Peoples", 20, /obj/item/device/encryptionkey/upp, "white", "Radio Key for known UPP listening frequencies."),

list("TRANSFER POINTS", 0, null, null, null),
list("1 point", 1, /obj/item/stack/points/p1, "white", "A method of transferring points between agents."),
list("5 points", 5, /obj/item/stack/points/p5, "white", "A method of transferring points between agents."),
list("20 points", 20, /obj/item/stack/points/p20, "white", "A method of transferring points between agents."),
)

/obj/item/device/portable_vendor/antag/cia/covert
name = "briefcase"
icon_state = "briefcase"
desc = "It's made of AUTHENTIC faux-leather and has a price-tag still attached. Its owner must be a real professional."
covert = TRUE
43 changes: 0 additions & 43 deletions code/datums/emergency_calls/inspection.dm
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,6 @@
..()
objectives = "Inspect and evaluate the [MAIN_SHIP_NAME] and its crew."


/datum/emergency_call/inspection_hc/create_member(datum/mind/M, turf/override_spawn_loc)
var/turf/T = override_spawn_loc ? override_spawn_loc : get_spawn_point()

Expand All @@ -87,48 +86,6 @@
to_chat(H, SPAN_WARNING("Remember, you may not interrupt regular operation and are expected to follow orders of the Inspector at all times. Ahelp if you have any questions of you wish to offer the role to someone else."))
addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), H, SPAN_BOLD("Objectives: [objectives]")), 1 SECONDS)

//UAAC-TIS
/datum/emergency_call/inspection_tis
name = "Inspection - UA Allied Command TIS - ML Knowledge Required"
mob_max = 2
mob_min = 1
probability = 0

/datum/emergency_call/inspection_tis/New()
..()
objectives = "Await detailed directives from your Handler. Remember that you may, but do not have to, investigate any ML or SOP related issues during your time on the [MAIN_SHIP_NAME]."

/datum/emergency_call/inspection_tis/create_member(datum/mind/M, turf/override_spawn_loc)
var/turf/T = override_spawn_loc ? override_spawn_loc : get_spawn_point()

if(!istype(T))
return FALSE

var/mob/living/carbon/human/H = new(T)
M.transfer_to(H, TRUE)

if(!leader && HAS_FLAG(H.client.prefs.toggles_ert, PLAY_LEADER) && check_timelock(H.client, list(JOB_INTEL,JOB_WARDEN), time_required_for_job))
leader = H
arm_equipment(H, /datum/equipment_preset/uscm_event/uaac/tis/io, TRUE, TRUE)
to_chat(H, SPAN_ROLE_HEADER("You are an Intelligence Officer working for the UAAC-TIS!"))
to_chat(H, SPAN_ROLE_BODY("The UAAC-TIS, also known as the Three Eyes, is responsible for the collection, collation and delivery of Intelligence across UA assets. Your Handler will contact you about the exact nature of your mission on board the [MAIN_SHIP_NAME]."))
to_chat(H, SPAN_ROLE_BODY("While you do not have any direct authority over the USCM, the TIS mandate also allows you to investigate any perceived abuse of the Law, be it written or implied. Remember, you have the authority to make calls on ML should the crew of the Almayer request it or your Handler order you to resolve ML issues."))
to_chat(H, SPAN_WARNING("Remember that you cannot take antagonistic action unless specifically allowed by your Handler. You are also expected to know ML and SOP. Ahelp if you have any questions or wish to release this mob for other players."))
else
arm_equipment(H, /datum/equipment_preset/uscm_event/provost/enforcer, TRUE, TRUE)
to_chat(H, SPAN_ROLE_HEADER("You are an Enforcer of the USCM Provost Office!"))
to_chat(H, SPAN_ROLE_BODY("You have been assigned as an escort for an UAAC-TIS Officer being dispatched to the [MAIN_SHIP_NAME]. Technically, the TIS has no direct authority over you, however you have been ordered to follow the instructions of the TIS Officer."))
to_chat(H, SPAN_ROLE_BODY("You are not expected to enforce ML on the ship and are generally expected to follow the instruction of the Officer you are protecting. Remember that should they start acting in a way that you believe puts the USCM in danger, you are not obligated to follow their orders and should report this to the Provost at once."))
to_chat(H, SPAN_WARNING("This role requires familiarity with Marine Law and Standard Operating Procedure. Ahelp if you have any questions or wish to surrender the character to someone else."))
addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), H, SPAN_BOLD("Objectives: [objectives]")), 1 SECONDS)

/datum/emergency_call/inspection_tis/spawn_items()
var/turf/drop_spawn

drop_spawn = get_spawn_point(TRUE)
new /obj/item/storage/box/handcuffs(drop_spawn)
new /obj/item/storage/box/handcuffs(drop_spawn)

//Weyland-Yutani
/datum/emergency_call/inspection_wy
name = "Inspection - Corporate"
Expand Down
11 changes: 3 additions & 8 deletions code/datums/factions/uscm.dm
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@
if(JOB_SQUAD_SPECIALIST) marine_rk = "spec"
if(JOB_SQUAD_TEAM_LEADER) marine_rk = "tl"
if(JOB_SQUAD_MEDIC)
if(current_human.rank_fallback == "medk9")
if(current_human.rank_fallback == "medk9")
marine_rk = "medk9" //We don't need Medics to lose their job when converting to K9 Handlers as it would duplicate JOB_SQUAD_MEDIC
else
else
marine_rk = "med"
if(JOB_SQUAD_SMARTGUN) marine_rk = "gun"
if(JOB_XO) marine_rk = "xo"
Expand Down Expand Up @@ -86,7 +86,7 @@
if(JOB_SO)
marine_rk = "so"
border_rk = "command"
if(JOB_AUXILIARY_OFFICER)
if(JOB_AUXILIARY_OFFICER, JOB_CIA_LIAISON)
marine_rk = "aso"
border_rk = "command"
if(JOB_GENERAL, JOB_COLONEL, JOB_ACMC, JOB_CMC)
Expand Down Expand Up @@ -170,11 +170,6 @@
if(JOB_PROVOST_MARSHAL, JOB_PROVOST_CMARSHAL, JOB_PROVOST_SMARSHAL)
marine_rk = "pvm"
border_rk = "command"
// TIS
if(JOB_TIS_IO)
marine_rk = "tisio"
if(JOB_TIS_SA)
marine_rk = "tissa"
// Riot MPs
if(JOB_RIOT)
marine_rk = "rmp"
Expand Down
25 changes: 25 additions & 0 deletions code/datums/skills/uscm.dm
Original file line number Diff line number Diff line change
Expand Up @@ -503,3 +503,28 @@ SOLAR DEVILS (PvE Marines)
SKILL_INTEL = SKILL_INTEL_TRAINED,
SKILL_PILOT = SKILL_PILOT_EXPERT,
)

/*
---------------------
CIA
---------------------
*/

/datum/skills/cia
name = "CIA Agent"
skills = list(
SKILL_CQC = SKILL_CQC_MASTER,
SKILL_POLICE = SKILL_POLICE_SKILLED,
SKILL_FIREMAN = SKILL_FIREMAN_SKILLED,
SKILL_LEADERSHIP = SKILL_LEAD_EXPERT,
SKILL_OVERWATCH = SKILL_OVERWATCH_TRAINED,
SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED,
SKILL_JTAC = SKILL_JTAC_EXPERT,
SKILL_MEDICAL = SKILL_MEDICAL_TRAINED,
SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI,
SKILL_ENGINEER = SKILL_ENGINEER_TRAINED,
SKILL_MELEE_WEAPONS = SKILL_MELEE_SUPER,
SKILL_INTEL = SKILL_INTEL_EXPERT,
SKILL_SPEC_WEAPONS = SKILL_SPEC_ALL,
SKILL_FIREARMS = SKILL_FIREARMS_EXPERT,
)
7 changes: 0 additions & 7 deletions code/game/jobs/job/special/uaac.dm

This file was deleted.

2 changes: 0 additions & 2 deletions code/game/jobs/role_authority.dm
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,6 @@ GLOBAL_VAR_INIT(players_preassigned, 0)
/datum/job/antag,
/datum/job/special,
/datum/job/special/provost,
/datum/job/special/uaac,
/datum/job/special/uaac/tis,
/datum/job/special/uscm,
)
var/squads_all[] = typesof(/datum/squad) - /datum/squad
Expand Down
4 changes: 4 additions & 0 deletions code/game/objects/items/devices/coins.dm
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,10 @@
name = "falling falcons challenge coin"
desc = "A small coin, bearing the falling falcons insignia."

/obj/item/coin/silver/cia
name = "silver coin"
desc = "A coin of silver. It bears an eagle on the heads side."

/obj/item/coin/copper
name = "copper coin"
desc = "A familiar, but cheap form of currency."
Expand Down
10 changes: 8 additions & 2 deletions code/game/objects/items/devices/portable_vendor.dm
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@
var/fabricating = FALSE
var/broken = FALSE
var/contraband = FALSE
var/covert = FALSE //covert = no light, no sound
var/delay = 3 //fabricating time, in seconds

var/list/purchase_log = list()

Expand Down Expand Up @@ -186,11 +188,12 @@

purchase_log += "[key_name(usr)] bought [product[1]]."

playsound(src, "sound/machines/fax.ogg", 5)
if(!covert)
playsound(src, "sound/machines/fax.ogg", 5)
fabricating = TRUE
update_overlays()

addtimer(CALLBACK(src, PROC_REF(spawn_product), product[3], user), 3 SECONDS)
addtimer(CALLBACK(src, PROC_REF(spawn_product), product[3], user), delay SECONDS)

/obj/item/device/portable_vendor/proc/spawn_product(typepath, mob/user)
var/obj/new_item = new typepath(get_turf(src))
Expand All @@ -199,6 +202,9 @@
update_overlays()

/obj/item/device/portable_vendor/proc/update_overlays()
if(covert)
return

if(overlays) overlays.Cut()
if (broken)
overlays += image(icon, "securespark")
Expand Down
4 changes: 4 additions & 0 deletions code/game/objects/items/devices/radio/encryptionkey.dm
Original file line number Diff line number Diff line change
Expand Up @@ -328,6 +328,10 @@
icon_state = "sl_key"
channels = list("Command" = TRUE, "Almayer" = TRUE,)

/obj/item/device/encryptionkey/cia
icon_state = "sl_key"
channels = list(RADIO_CHANNEL_CIA = TRUE, RADIO_CHANNEL_COMMAND = TRUE, RADIO_CHANNEL_MP = TRUE, SQUAD_MARINE_1 = FALSE, SQUAD_MARINE_2 = FALSE, SQUAD_MARINE_3 = FALSE, SQUAD_MARINE_4 = FALSE, SQUAD_MARINE_5 = FALSE, SQUAD_MARINE_CRYO = FALSE, RADIO_CHANNEL_ENGI = TRUE, RADIO_CHANNEL_MEDSCI = TRUE, RADIO_CHANNEL_REQ = TRUE, RADIO_CHANNEL_JTAC = FALSE, RADIO_CHANNEL_INTEL = TRUE)

/obj/item/device/encryptionkey/cmb
name = "\improper Colonial Marshal Bureau Radio Encryption Key"
icon_state = "cmb_key"
Expand Down
7 changes: 7 additions & 0 deletions code/game/objects/items/devices/radio/headset.dm
Original file line number Diff line number Diff line change
Expand Up @@ -630,6 +630,13 @@
/obj/item/device/radio/headset/almayer/marine
initial_keys = list(/obj/item/device/encryptionkey/public)

/obj/item/device/radio/headset/almayer/cia
name = "radio headset"
desc = "A radio headset."
frequency = CIA_FREQ
initial_keys = list(/obj/item/device/encryptionkey/cia, /obj/item/device/encryptionkey/soc, /obj/item/device/encryptionkey/listening_bug/freq_a)


//############################## ALPHA ###############################
/obj/item/device/radio/headset/almayer/marine/alpha
name = "marine alpha radio headset"
Expand Down
4 changes: 4 additions & 0 deletions code/game/objects/items/devices/radio/listening_bugs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -244,6 +244,10 @@
/obj/item/device/radio/listening_bug/radio_linked/hc/pvst
frequency = PVST_FREQ

/obj/item/device/radio/listening_bug/radio_linked/cia
frequency = CIA_FREQ
req_one_access = list(ACCESS_CIA)

/obj/item/device/radio/listening_bug/radio_linked/wy
frequency = WY_FREQ
req_one_access = list(ACCESS_WY_EXEC, ACCESS_WY_SECURITY)
Expand Down
4 changes: 4 additions & 0 deletions code/game/objects/items/storage/pouch.dm
Original file line number Diff line number Diff line change
Expand Up @@ -473,6 +473,10 @@
for(var/i = 1 to storage_slots)
new /obj/item/ammo_magazine/pistol/vp78(src)

/obj/item/storage/pouch/magazine/pistol/m1911/fill_preset_inventory()
for(var/i = 1 to storage_slots)
new /obj/item/ammo_magazine/pistol/m1911(src)

/obj/item/storage/pouch/magazine/upp/fill_preset_inventory()
for(var/i = 1 to storage_slots)
new /obj/item/ammo_magazine/rifle/type71(src)
Expand Down
9 changes: 0 additions & 9 deletions code/modules/clothing/head/head.dm
Original file line number Diff line number Diff line change
Expand Up @@ -658,15 +658,6 @@ GLOBAL_LIST_INIT(allowed_hat_items, list(
name = "\improper USCM provost command beret"
icon_state = "pvciberet"

/obj/item/clothing/head/beret/marine/mp/tis
name = "\improper UAAC-TIS Special Agent Beret"
desc = "A beret with the UAAC-TIS insignia emblazoned on it. A mark of a TIS Special Agent, these berets are one of the only pieces of equipment that the TIS actually manufactures for itself and earning one is one of the rare signs of achievement the Three Eyes allows."
icon_state = "berettis"
icon = 'icons/obj/items/clothing/hats/hats_by_faction/UA.dmi'
item_icons = list(
WEAR_HEAD = 'icons/mob/humans/onmob/clothing/head/hats_by_faction/UA.dmi'
)

/obj/item/clothing/head/beret/marine/commander
name = "marine commanding officer beret"
desc = "A beret with the commanding officer's insignia emblazoned on it. Wearer may suffer the heavy weight of responsibility upon their head and shoulders."
Expand Down
Loading
Loading