Skip to content

Commit

Permalink
Merge branch 'master' into Lisp_Radio
Browse files Browse the repository at this point in the history
  • Loading branch information
Ben10083 committed Jun 28, 2023
2 parents 3b73ae6 + 82cc0a1 commit 9212192
Show file tree
Hide file tree
Showing 103 changed files with 8,031 additions and 2,230 deletions.
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/defenses.dm
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
// Defines for barricade upgrades
#define BARRICADE_UPGRADE_BURN "Biohazard Upgrade (+Burn)"
#define BARRICADE_UPGRADE_BRUTE "Reinforced Upgrade (+Brute)"
#define BARRICADE_UPGRADE_EXPLOSIVE "Explosive Upgrade (+Explosive)"
#define BARRICADE_UPGRADE_ANTIFF "Composite Upgrade (++Explosive, ++Projectile, ++Fire)"

// Defines for defense stats
#define DEFENSE_FUNCTIONAL 0
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

0 comments on commit 9212192

Please sign in to comment.