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

Project ARES - Resurrection #3298

Merged
merged 54 commits into from
Jun 28, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
5417a34
ARES Squashed
realforest2001 May 31, 2023
4f352b8
tiny bit of tidying
realforest2001 May 31, 2023
7215788
More announcement logs and tidying
realforest2001 May 31, 2023
a1fb5b1
ASRS and AA
realforest2001 May 31, 2023
d321cdf
Sudo and 8.1.8
realforest2001 May 31, 2023
4a52f06
Formatting and logging changes
realforest2001 May 31, 2023
33fc80c
Evac logs
realforest2001 May 31, 2023
0a83b6f
Display formatting
realforest2001 Jun 1, 2023
532992b
Monitoring
realforest2001 Jun 3, 2023
e0154bc
Chat filter
realforest2001 Jun 3, 2023
d4ecd67
Staff to IC
realforest2001 Jun 3, 2023
ddabb58
implement
realforest2001 Jun 3, 2023
a9d0b61
fax
realforest2001 Jun 3, 2023
8213cce
Merge branch 'forest/staffic' into project/ARES
realforest2001 Jun 3, 2023
48384db
ictab
realforest2001 Jun 3, 2023
eed3813
Cooldowns and detailing
realforest2001 Jun 5, 2023
9bcc5c0
ARES Squashed
realforest2001 May 31, 2023
a227dd9
tiny bit of tidying
realforest2001 May 31, 2023
f31a1c7
More announcement logs and tidying
realforest2001 May 31, 2023
d844a6c
ASRS and AA
realforest2001 May 31, 2023
e968695
Sudo and 8.1.8
realforest2001 May 31, 2023
7eec1ca
Formatting and logging changes
realforest2001 May 31, 2023
19d850f
Evac logs
realforest2001 May 31, 2023
389a075
Display formatting
realforest2001 Jun 1, 2023
d814a93
Monitoring
realforest2001 Jun 3, 2023
b071fce
Chat filter
realforest2001 Jun 3, 2023
7fd3e3e
ictab
realforest2001 Jun 3, 2023
12307e7
Cooldowns and detailing
realforest2001 Jun 5, 2023
4fdd7ef
Merge remote-tracking branch 'origin/project/ARES' into project/ARES
realforest2001 Jun 5, 2023
d695436
mark
realforest2001 Jun 5, 2023
f9fb798
MapChange requested by Nanu and Frozen (unreviewed)
realforest2001 Jun 6, 2023
6d7f5e5
M39 fixes
realforest2001 Jun 6, 2023
29001da
Merge branch 'master' into project/ARES
realforest2001 Jun 6, 2023
ad15b02
Tweaks
realforest2001 Jun 6, 2023
39e75c2
MapTweak 2.0
realforest2001 Jun 7, 2023
5807a81
Fake-Z
realforest2001 Jun 7, 2023
b5cef60
Merge branch 'master' into project/ARES
realforest2001 Jun 7, 2023
9d1fb32
No Weeds and some Tweaks
realforest2001 Jun 7, 2023
474d9f1
Access Patch
realforest2001 Jun 9, 2023
9e2a66f
Merge branch 'master' into project/ARES
realforest2001 Jun 9, 2023
2ce6911
Rebase
realforest2001 Jun 9, 2023
a67d337
Holder
realforest2001 Jun 11, 2023
c8f9cc4
Merge branch 'master' into project/ARES
realforest2001 Jun 13, 2023
5844c05
Rebase and changes
realforest2001 Jun 14, 2023
86312d8
Apply suggestions from code review
realforest2001 Jun 17, 2023
1336897
Requested changes
realforest2001 Jun 17, 2023
a50a4a2
Merge branch 'master' into project/ARES
realforest2001 Jun 19, 2023
ea9332b
requested changes
realforest2001 Jun 22, 2023
ec7afb7
Merge branch 'master' into project/ARES
realforest2001 Jun 22, 2023
52a33f7
more detailed reports on access controller
realforest2001 Jun 24, 2023
d7673bc
requested changes
realforest2001 Jun 25, 2023
6c10017
Fix for Error 337
realforest2001 Jun 26, 2023
e5897b5
Merge branch 'master' into project/ARES
realforest2001 Jun 28, 2023
1c16129
Update code/game/machinery/ARES/ARES_procs.dm
realforest2001 Jun 28, 2023
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
54 changes: 54 additions & 0 deletions code/__DEFINES/ARES.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
/// Generic access for 1:1 conversations with ARES and unrestricted commands.
#define ARES_ACCESS_BASIC 0
/// Secure Access, can read ARES Announcements and Bioscans.
#define ARES_ACCESS_COMMAND 1
#define ARES_ACCESS_JOE 2
/// CL, can read Apollo Log and also Delete Announcements.
#define ARES_ACCESS_CORPORATE 3
/// Senior Command, can Delete Bioscans.
#define ARES_ACCESS_SENIOR 4
/// Synth, CE & Commanding Officer, can read the access log.
#define ARES_ACCESS_CE 5
#define ARES_ACCESS_SYNTH 6
#define ARES_ACCESS_CO 7
/// High Command, can read the deletion log.
#define ARES_ACCESS_HIGH 8
#define ARES_ACCESS_WY_COMMAND 9
/// Debugging. Allows me to view everything without using a high command rank. Unlikely to stay in a full merge.
#define ARES_ACCESS_DEBUG 10

#define ARES_RECORD_ANNOUNCE "Announcement Record"
#define ARES_RECORD_ANTIAIR "AntiAir Control Log"
#define ARES_RECORD_ASRS "Requisition Record"
#define ARES_RECORD_BIOSCAN "Bioscan Record"
#define ARES_RECORD_BOMB "Orbital Bombardment Record"
#define ARES_RECORD_DELETED "Deleted Record"
#define ARES_RECORD_SECURITY "Security Update"
#define ARES_RECORD_MAINTENANCE "Maintenance Ticket"
#define ARES_RECORD_ACCESS "Access Ticket"

/// Not by ARES logged through marine_announcement()
#define ARES_LOG_NONE 0
/// Logged with all announcements
#define ARES_LOG_MAIN 1
/// Logged in the security updates
#define ARES_LOG_SECURITY 2

/// Access levels specifically for Working Joe management console
#define APOLLO_ACCESS_REQUEST 0
#define APOLLO_ACCESS_REPORTER 1
#define APOLLO_ACCESS_TEMP 2
#define APOLLO_ACCESS_AUTHED 3
#define APOLLO_ACCESS_JOE 4
#define APOLLO_ACCESS_DEBUG 5

/// Ticket statuses, both for Access and Maintenance
#define TICKET_PENDING "pending"
#define TICKET_ASSIGNED "assigned"
#define TICKET_REJECTED "rejected"
#define TICKET_CANCELLED "cancelled"
#define TICKET_COMPLETED "complete"

/// Cooldowns
#define COOLDOWN_ARES_SENSOR 60 SECONDS
#define COOLDOWN_ARES_ACCESS_CONTROL 20 SECONDS
1 change: 1 addition & 0 deletions code/__DEFINES/__game.dm
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,7 @@ block( \
#define SOUND_REBOOT (1<<5)
#define SOUND_ADMIN_MEME (1<<6)
#define SOUND_ADMIN_ATMOSPHERIC (1<<7)
#define SOUND_ARES_MESSAGE (1<<8)

//toggles_chat
#define CHAT_OOC (1<<0)
Expand Down
8 changes: 8 additions & 0 deletions code/__DEFINES/access.dm
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,14 @@ most of them are tied into map-placed objects. This should be reworked in the fu

#define ACCESS_MARINE_SYNTH 36

// AI Core Accesses
/// Used in temporary passes
#define ACCESS_MARINE_AI_TEMP 90
/// Used as dedicated access to ARES Core.
#define ACCESS_MARINE_AI 91
/// Used to access Maintenance Protocols on ARES Interface.
#define ACCESS_ARES_DEBUG 92

//Surface access levels
#define ACCESS_CIVILIAN_PUBLIC 100
#define ACCESS_CIVILIAN_LOGISTICS 101
Expand Down
2 changes: 2 additions & 0 deletions code/__DEFINES/admin.dm
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,8 @@ var/global/list/note_categories = list("Admin", "Merit", "Commanding Officer", "
#define CC_MARK(user) "(<a href='?_src_=admin_holder;[HrefToken(forceGlobal = TRUE)];ccmark=[REF(user)]'>MARK</a>)"
#define CC_REPLY(user) "(<a href='?_src_=admin_holder;[HrefToken(forceGlobal = TRUE)];CentcommReply=[REF(user)]'>RPLY</a>)"
#define OBSERVER_JMP(observer, atom) atom ? "(<a href='?src=[REF(observer)];jumptocoord=1;X=[atom.x];Y=[atom.y];Z=[atom.z]'>JMP</a>)" : ""
#define ARES_MARK(user) "(<a href='?_src_=admin_holder;[HrefToken(forceGlobal = TRUE)];AresMark=[REF(user)]'>MARK</a>)"
#define ARES_REPLY(user, ref) "(<a href='?_src_=admin_holder;[HrefToken(forceGlobal = TRUE)];AresReply=[REF(user)];AresRef=[ref]'>RPLY</a>)"

/atom/proc/Admin_Coordinates_Readable(area_name, admin_jump_ref)
var/turf/T = get_turf(src)
Expand Down
1 change: 1 addition & 0 deletions code/__DEFINES/camera.dm
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
#define CAMERA_NET_ALAMO "Alamo"
#define CAMERA_NET_NORMANDY "Normandy"
#define CAMERA_NET_COLONY "Colony"
#define CAMERA_NET_ARES "ARES"

#define CAMERA_NET_MILITARY "Military"
#define CAMERA_NET_OVERWATCH "Overwatch"
Expand Down
2 changes: 1 addition & 1 deletion code/__DEFINES/language.dm
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
#define LANGUAGE_XENOMORPH "Xenomorph"
#define LANGUAGE_HIVEMIND "Hivemind"

#define LANGUAGE_APOLLO "Apollo Link"
#define LANGUAGE_APOLLO "APOLLO Link"

#define LANGUAGE_TELEPATH "Telepath Implant"

Expand Down
2 changes: 2 additions & 0 deletions code/__DEFINES/misc.dm
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,8 @@
#define AREA_ALLOW_XENO_JOIN (1<<2)
/// Flags the area as a containment area
#define AREA_CONTAINMENT (1<<3)
/// Flags the area as permanently unweedable. Still requires is_resin_allowed = FALSE
#define AREA_UNWEEDABLE (1<<4)
/// Default number of ticks for do_after
#define DA_DEFAULT_NUM_TICKS 5

Expand Down
1 change: 1 addition & 0 deletions code/__DEFINES/mode.dm
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
#define EVACUATION_STATUS_IN_PROGRESS 2
#define EVACUATION_STATUS_COMPLETE 3

#define NUCLEAR_TIME_LOCK 90 MINUTES
#define NUKE_EXPLOSION_INACTIVE 0
#define NUKE_EXPLOSION_ACTIVE 1
#define NUKE_EXPLOSION_IN_PROGRESS 2
Expand Down
1 change: 1 addition & 0 deletions code/_globalvars/bitfields.dm
Original file line number Diff line number Diff line change
Expand Up @@ -328,6 +328,7 @@ DEFINE_BITFIELD(flags_area, list(
"AREA_NOTUNNEL" = AREA_NOTUNNEL,
"AREA_ALLOW_XENO_JOIN" = AREA_ALLOW_XENO_JOIN,
"AREA_CONTAINMENT" = AREA_CONTAINMENT,
"ARES_UNWEEDABLE" = AREA_UNWEEDABLE,
))

DEFINE_BITFIELD(disabilities, list(
Expand Down
8 changes: 4 additions & 4 deletions code/datums/emergency_calls/emergency_call.dm
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@
message_admins("Distress beacon: '[name]' activated [src.hostility? "[SPAN_WARNING("(THEY ARE HOSTILE)")]":"(they are friendly)"]. Looking for candidates.")

if(announce)
marine_announcement("A distress beacon has been launched from the [MAIN_SHIP_NAME].", "Priority Alert", 'sound/AI/distressbeacon.ogg')
marine_announcement("A distress beacon has been launched from the [MAIN_SHIP_NAME].", "Priority Alert", 'sound/AI/distressbeacon.ogg', logging = ARES_LOG_SECURITY)

addtimer(CALLBACK(src, TYPE_PROC_REF(/datum/emergency_call, spawn_candidates), announce, override_spawn_loc, announce_dispatch_message), 30 SECONDS)

Expand All @@ -207,7 +207,7 @@
candidates = list()

if(announce)
marine_announcement("The distress signal has not received a response, the launch tubes are now recalibrating.", "Distress Beacon")
marine_announcement("The distress signal has not received a response, the launch tubes are now recalibrating.", "Distress Beacon", logging = ARES_LOG_SECURITY)
return

//We've got enough!
Expand Down Expand Up @@ -236,8 +236,8 @@
if(I.current)
to_chat(I.current, SPAN_WARNING("You didn't get selected to join the distress team. Better luck next time!"))

if(announce_dispatch_message)
marine_announcement(dispatch_message, "Distress Beacon", 'sound/AI/distressreceived.ogg') //Announcement that the Distress Beacon has been answered, does not hint towards the chosen ERT
if(announce)
marine_announcement(dispatch_message, "Distress Beacon", 'sound/AI/distressreceived.ogg', logging = ARES_LOG_SECURITY) //Announcement that the Distress Beacon has been answered, does not hint towards the chosen ERT

message_admins("Distress beacon: [src.name] finalized, setting up candidates.")

Expand Down
7 changes: 7 additions & 0 deletions code/datums/paygrades/paygrade.dm
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ GLOBAL_LIST_INIT_TYPED(paygrades, /datum/paygrade, setup_paygrades())
.[pg_id] = new PG

GLOBAL_LIST_INIT(highcom_paygrades, list(
"PvI",
"NO7",
"MO7",
"NO8",
Expand Down Expand Up @@ -52,3 +53,9 @@ GLOBAL_LIST_INIT(co_paygrades, list(
"MO5",
"MO4"
))

GLOBAL_LIST_INIT(wy_paygrades, list(
"WYC8",
"WYC9",
"WYC10"
))
30 changes: 27 additions & 3 deletions code/defines/procs/announcement.dm
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@


//general marine announcement
/proc/marine_announcement(message, title = COMMAND_ANNOUNCE, sound_to_play = sound('sound/misc/notice2.ogg'), faction_to_display = FACTION_MARINE, add_PMCs = TRUE, signature)
/proc/marine_announcement(message, title = COMMAND_ANNOUNCE, sound_to_play = sound('sound/misc/notice2.ogg'), faction_to_display = FACTION_MARINE, add_PMCs = TRUE, signature, logging = ARES_LOG_MAIN)
var/list/targets = GLOB.human_mob_list + GLOB.dead_mob_list
if(faction_to_display == FACTION_MARINE)
for(var/mob/M in targets)
Expand All @@ -45,6 +45,14 @@
if((H.faction != faction_to_display && !add_PMCs) || (H.faction != faction_to_display && add_PMCs && !(H.faction in FACTION_LIST_WY)) && !(faction_to_display in H.faction_group)) //faction checks
targets.Remove(H)

var/datum/ares_link/link = GLOB.ares_link
if(link.interface && !(link.interface.inoperable()))
switch(logging)
if(ARES_LOG_MAIN)
link.log_ares_announcement(title, message)
if(ARES_LOG_SECURITY)
link.log_ares_security(title, message)

else if(faction_to_display == "Everyone (-Yautja)")
for(var/mob/M in targets)
if(isobserver(M)) //observers see everything
Expand Down Expand Up @@ -82,14 +90,22 @@
announcement_helper(message, title, targets, sound_to_play)

//AI announcement that uses talking into comms
/proc/ai_announcement(message, sound_to_play = sound('sound/misc/interference.ogg'))
/proc/ai_announcement(message, sound_to_play = sound('sound/misc/interference.ogg'), logging = ARES_LOG_MAIN)
for(var/mob/M in (GLOB.human_mob_list + GLOB.dead_mob_list))
if(isobserver(M) || ishuman(M) && is_mainship_level(M.z))
playsound_client(M.client, sound_to_play, M, vol = 45)

for(var/mob/living/silicon/decoy/ship_ai/AI in ai_mob_list)
INVOKE_ASYNC(AI, TYPE_PROC_REF(/mob/living/silicon/decoy/ship_ai, say), message)

var/datum/ares_link/link = GLOB.ares_link
if(link.interface && !(link.interface.inoperable()))
switch(logging)
if(ARES_LOG_MAIN)
link.log_ares_announcement("[MAIN_AI_SYSTEM] Comms Update", message)
if(ARES_LOG_SECURITY)
link.log_ares_security("[MAIN_AI_SYSTEM] Security Update", message)

/proc/ai_silent_announcement(message, channel_prefix, bypass_cooldown = FALSE)
if(!message)
return
Expand Down Expand Up @@ -119,17 +135,25 @@

if(!isnull(signature))
message += "<br><br><i> Signed by, <br> [signature]</i>"
var/datum/ares_link/link = GLOB.ares_link
if(link.interface && !(link.interface.inoperable()))
link.log_ares_announcement(title, message)

announcement_helper(message, title, targets, sound_to_play)

//Subtype of AI shipside announcement for "All Hands On Deck" alerts (COs and SEAs joining the game)
/proc/all_hands_on_deck(message, title = MAIN_AI_SYSTEM, sound_to_play = sound('sound/misc/sound_misc_boatswain.ogg'), signature)
/proc/all_hands_on_deck(message, title = MAIN_AI_SYSTEM, sound_to_play = sound('sound/misc/sound_misc_boatswain.ogg'))
var/list/targets = GLOB.human_mob_list + GLOB.dead_mob_list
for(var/mob/T in targets)
if(isobserver(T))
continue
if(!ishuman(T) || isyautja(T) || !is_mainship_level(T.z))
targets.Remove(T)

var/datum/ares_link/link = GLOB.ares_link
if(link.interface && !(link.interface.inoperable()))
link.log_ares_announcement("[title] Shipwide Update", message)

announcement_helper(message, title, targets, sound_to_play)

//the announcement proc that handles announcing for each mob in targets list
Expand Down
14 changes: 11 additions & 3 deletions code/game/area/almayer.dm
Original file line number Diff line number Diff line change
Expand Up @@ -77,17 +77,20 @@
fake_zlevel = 1 // upperdeck
soundscape_playlist = SCAPE_PL_ARES
soundscape_interval = 120
flags_area = AREA_NOTUNNEL
flags_area = AREA_NOTUNNEL|AREA_UNWEEDABLE
can_build_special = FALSE
is_resin_allowed = FALSE
resin_construction_allowed = FALSE

/area/almayer/command/securestorage
name = "\improper Secure Storage"
icon_state = "corporatespace"
fake_zlevel = 1 // upperdeck
fake_zlevel = 2 // lowerdeck

/area/almayer/command/computerlab
name = "\improper Computer Lab"
icon_state = "ceroom"
fake_zlevel = 1 // upperdeck
fake_zlevel = 2 // lowerdeck

/area/almayer/command/telecomms
name = "\improper Telecommunications"
Expand Down Expand Up @@ -181,6 +184,11 @@
icon_state = "astronavigation"
fake_zlevel = 2 // lowerdeck

/area/almayer/shipboard/panic
name = "\improper Hangar Panic Room"
icon_state = "brig"
fake_zlevel = 2 // lowerdeck

/area/almayer/shipboard/starboard_missiles
name = "\improper Missile Tubes Starboard"
icon_state = "starboardmissile"
Expand Down
13 changes: 11 additions & 2 deletions code/game/bioscans.dm
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,12 @@ GLOBAL_DATUM_INIT(bioscan_data, /datum/bioscan_data, new)

/// This will do something after Project ARES.
/datum/bioscan_data/proc/can_ares_bioscan()
return TRUE
var/datum/ares_link/link = GLOB.ares_link
if(!istype(link))
return FALSE
if(link.p_bioscan && !link.p_bioscan.inoperable())
return TRUE
return FALSE

/// The announcement to all Humans. Slightly off for the planet and elsewhere, accurate for the ship.
/datum/bioscan_data/proc/ares_bioscan(forced = FALSE, variance = 2)
Expand All @@ -120,7 +125,11 @@ GLOBAL_DATUM_INIT(bioscan_data, /datum/bioscan_data, new)

var/name = "[MAIN_AI_SYSTEM] Bioscan Status"
var/input = "Bioscan complete.\n\nSensors indicate [xenos_on_ship_uncontained ? "[xenos_on_ship_uncontained]" : "no"] unknown lifeform signature[!xenos_on_ship_uncontained || xenos_on_ship_uncontained > 1 ? "s":""] present on the ship[xenos_on_ship_uncontained && xenos_ship_location ? ", including one in [xenos_ship_location]," : ""] and [fake_xenos_on_planet ? "approximately [fake_xenos_on_planet]" : "no"] signature[!fake_xenos_on_planet || fake_xenos_on_planet > 1 ? "s":""] located elsewhere[fake_xenos_on_planet && xenos_planet_location ? ", including one in [xenos_planet_location]":""]."
marine_announcement(input, name, 'sound/AI/bioscan.ogg')

var/datum/ares_link/link = GLOB.ares_link
link.log_ares_bioscan(name, input)
if(forced || (link.p_interface && !link.p_interface.inoperable()))
marine_announcement(input, name, 'sound/AI/bioscan.ogg', logging = ARES_LOG_NONE)

/// The announcement to all Xenos. Slightly off for the human ship, accurate otherwise.
/datum/bioscan_data/proc/qm_bioscan(variance = 2)
Expand Down
7 changes: 6 additions & 1 deletion code/game/jobs/access.dm
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,11 @@

///Includes restricted accesses
/proc/get_all_marine_access()
return list(ACCESS_MARINE_CO) + get_main_marine_access()
return list(
ACCESS_MARINE_CO,
ACCESS_MARINE_AI,
ACCESS_MARINE_AI_TEMP,
) + get_main_marine_access()

///All Almayer accesses other than the highly restricted ones, such as CO's office.
/proc/get_main_marine_access()
Expand Down Expand Up @@ -256,6 +260,7 @@
if(ACCESS_MARINE_SEA) return "SEA's Office"
if(ACCESS_MARINE_KITCHEN) return "Kitchen"
if(ACCESS_MARINE_SYNTH) return "Synthetic Storage"
if(ACCESS_MARINE_AI) return "AI Core"

/proc/get_weyland_access_desc(A)
switch(A)
Expand Down
Loading
Loading