mirror of
https://github.com/fulpstation/fulpstation.git
synced 2025-12-09 16:09:15 +00:00
* Refactor several log lines to use datum_info_line and atom_loc_line * Add default return strings from datum_info_line and atom_loc_line * Add parentheses around atom_loc_line data * Change more logs to use atom_loc_line * Add check in atom_loc_line for turfs to avoid calling get_turf on them * Re-add removed 'at' * Replace datum_info_line with key_name and atom_loc_line with loc_name * Refactor logging functions * Avoid double-logging self-interactions * Fallback to simple stringification if all else fails in key_name() * Rewrite muscle spasm logging to use log_message * Standardize logging of martial arts * Tweak individual logging panel look * Fix individual logging panel source * When I typed || I really meant && * Fix Telecomms logging always showing client logs in the panel * Reverts addition of buggy ownership log to panel * Remove colon * Fix missing log_directed_talk tag * Add warning for missing type in log_direted_talk * Change warnings to stack_traces * Add square brackets around fallthrough key_name() case to help parsing * Allow atom arguments/src in log_*() functions * Change log_combat call with null argument to log_message * Change mecha types' log_message() arguments to match atom and mob version * Add key_name() case for atoms * Fix resist_grab() unsetting pulledby before log_combat gets a chance to use it * Fix log_globally logic * Add logging for hitting objects with items * Move log_combat() to atoms.dm * Use utility functions for object stringification in log_combat() * Use utility functions for object stringification in log_combat() * Add missing logs for interacting with display cases * Rewrite log_combat() comment * Add missing space in log_combat() * Add logging for hitting grilles barehanded * Add missing ..()
47 lines
1.8 KiB
Plaintext
47 lines
1.8 KiB
Plaintext
#define COMMUNICATION_COOLDOWN 300
|
|
#define COMMUNICATION_COOLDOWN_AI 300
|
|
|
|
SUBSYSTEM_DEF(communications)
|
|
name = "Communications"
|
|
flags = SS_NO_INIT | SS_NO_FIRE
|
|
|
|
var/silicon_message_cooldown
|
|
var/nonsilicon_message_cooldown
|
|
|
|
/datum/controller/subsystem/communications/proc/can_announce(mob/living/user, is_silicon)
|
|
if(is_silicon && silicon_message_cooldown > world.time)
|
|
. = FALSE
|
|
else if(!is_silicon && nonsilicon_message_cooldown > world.time)
|
|
. = FALSE
|
|
else
|
|
. = TRUE
|
|
|
|
/datum/controller/subsystem/communications/proc/make_announcement(mob/living/user, is_silicon, input)
|
|
if(!can_announce(user, is_silicon))
|
|
return FALSE
|
|
if(is_silicon)
|
|
minor_announce(html_decode(input),"[user.name] Announces:")
|
|
silicon_message_cooldown = world.time + COMMUNICATION_COOLDOWN_AI
|
|
else
|
|
priority_announce(html_decode(user.treat_message(input)), null, 'sound/misc/announce.ogg', "Captain")
|
|
nonsilicon_message_cooldown = world.time + COMMUNICATION_COOLDOWN
|
|
user.log_talk(input, LOG_SAY, tag="priority announcement")
|
|
message_admins("[ADMIN_LOOKUPFLW(user)] has made a priority announcement.")
|
|
|
|
/datum/controller/subsystem/communications/proc/send_message(datum/comm_message/sending,print = TRUE,unique = FALSE)
|
|
for(var/obj/machinery/computer/communications/C in GLOB.machines)
|
|
if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z))
|
|
if(unique)
|
|
C.add_message(sending)
|
|
else //We copy the message for each console, answers and deletions won't be shared
|
|
var/datum/comm_message/M = new(sending.title,sending.content,sending.possible_answers.Copy())
|
|
C.add_message(M)
|
|
if(print)
|
|
var/obj/item/paper/P = new /obj/item/paper(C.loc)
|
|
P.name = "paper - '[sending.title]'"
|
|
P.info = sending.content
|
|
P.update_icon()
|
|
|
|
#undef COMMUNICATION_COOLDOWN
|
|
#undef COMMUNICATION_COOLDOWN_AI
|