diff --git a/code/datums/keybindings/communication_keybinds.dm b/code/datums/keybindings/communication_keybinds.dm
index 973317d8e28..0cdb00e77a7 100644
--- a/code/datums/keybindings/communication_keybinds.dm
+++ b/code/datums/keybindings/communication_keybinds.dm
@@ -66,7 +66,7 @@
/datum/keybinding/client/communication/asay
name = ADMIN_CHANNEL
keys = list("F5")
- required_rights = R_ADMIN
+ required_rights = R_ADMIN | R_MOD
/datum/keybinding/client/communication/dsay
name = DSAY_CHANNEL
diff --git a/code/game/area/areas/ruins/lavaland.dm b/code/game/area/areas/ruins/lavaland.dm
index b1fe29dc906..59c373cbed5 100644
--- a/code/game/area/areas/ruins/lavaland.dm
+++ b/code/game/area/areas/ruins/lavaland.dm
@@ -101,6 +101,7 @@
// This area exists so that lavaland ruins dont overwrite the baseturfs on regular space ruins
/area/ruin/unpowered/misc_lavaruin
+ outdoors = FALSE
//'safe' caves
/area/ruin/unpowered/safe_cave
diff --git a/code/game/gamemodes/antag_paradise/antag_paradise.dm b/code/game/gamemodes/antag_paradise/antag_paradise.dm
index 460ed81b9e1..7ac097ddd9c 100644
--- a/code/game/gamemodes/antag_paradise/antag_paradise.dm
+++ b/code/game/gamemodes/antag_paradise/antag_paradise.dm
@@ -103,7 +103,7 @@
if(ROLE_MALF_AI)
if(special_antag_amount)
- var/datum/mind/special_antag = roundstart ? safepick(get_players_for_role(ROLE_MALF_AI, req_job_rank = JOB_TITLE_AI)) : safepick(antag_possibilities[ROLE_MALF_AI])
+ var/datum/mind/special_antag = safepick(antag_possibilities[ROLE_MALF_AI])
if(special_antag)
special_antag.restricted_roles = (restricted_jobs|protected_jobs|protected_jobs_AI)
special_antag.restricted_roles -= JOB_TITLE_AI
@@ -215,6 +215,7 @@
antag_possibilities[ROLE_CHANGELING] = get_players_for_role(ROLE_CHANGELING)
antag_possibilities[ROLE_TRAITOR] = get_players_for_role(ROLE_TRAITOR)
antag_possibilities[ROLE_THIEF] = get_players_for_role(ROLE_THIEF, list(SPECIES_VOX = 4))
+ antag_possibilities[ROLE_MALF_AI] = get_players_for_role(ROLE_MALF_AI)
calculate_antags()
diff --git a/code/game/jobs/job/security.dm b/code/game/jobs/job/security.dm
index 9530711dc9b..1f13a0cc00e 100644
--- a/code/game/jobs/job/security.dm
+++ b/code/game/jobs/job/security.dm
@@ -75,7 +75,6 @@
minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_WEAPONS)
alt_titles = list("Brig Sergeant")
minimal_player_age = 21
- min_age_allowed = 30
blocked_race_for_job = list(SPECIES_VOX)
exp_requirements = 2100
exp_type = EXP_TYPE_SECURITY
diff --git a/code/game/turfs/simulated/floor/lava.dm b/code/game/turfs/simulated/floor/lava.dm
index 4a3ce6519da..0f98f4f00bf 100644
--- a/code/game/turfs/simulated/floor/lava.dm
+++ b/code/game/turfs/simulated/floor/lava.dm
@@ -156,7 +156,7 @@
if(burn_obj.resistance_flags & FIRE_PROOF)
burn_obj.resistance_flags &= ~FIRE_PROOF
if(burn_obj.armor.getRating(FIRE) > 50) //obj with 100% fire armor still get slowly burned away.
- burn_obj.armor.setRating(fire_value = 50)
+ burn_obj.armor = burn_obj.armor.setRating(fire_value = 50)
burn_obj.fire_act(exposed_temperature = temperature_damage, exposed_volume = 1000)
return TRUE
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index 6dcbfa1797a..e94b2d95848 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -204,6 +204,7 @@ GLOBAL_LIST_INIT(admin_verbs_mod, list(
/datum/admins/proc/PlayerNotes,
/client/proc/admin_ghost, /*allows us to ghost/reenter body at will*/
/client/proc/cmd_mentor_say,
+ /client/proc/cmd_admin_say, /*admin-only ooc chat*/
/datum/admins/proc/show_player_notes,
/client/proc/player_panel_new,
/client/proc/dsay,
diff --git a/code/modules/admin/verbs/adminsay.dm b/code/modules/admin/verbs/adminsay.dm
index 69204b0f591..97cfd18f369 100644
--- a/code/modules/admin/verbs/adminsay.dm
+++ b/code/modules/admin/verbs/adminsay.dm
@@ -1,10 +1,12 @@
/client/proc/cmd_admin_say(msg as text)
set name = "Asay" //Gave this shit a shorter name so you only have to time out "asay" rather than "admin say" to use it --NeoFite
set hidden = 1
- if(!check_rights(R_ADMIN)) return
+ if(!check_rights(R_ADMIN|R_MOD))
+ return
msg = sanitize(copytext_char(msg, 1, MAX_MESSAGE_LEN))
- if(!msg) return
+ if(!msg)
+ return
msg = handleDiscordEmojis(msg)
@@ -12,22 +14,21 @@
GLOB.asays += asay
log_adminsay(msg, src)
- if(check_rights(R_ADMIN,0))
- for(var/client/C in GLOB.admins)
- if(R_ADMIN & C.holder.rights)
- // Lets see if this admin was pinged in the asay message
- if(findtext(msg, "@[C.ckey]") || findtext(msg, "@[C.key]")) // Check ckey and key, so you can type @AffectedArc07 or @affectedarc07
- SEND_SOUND(C, 'sound/misc/ping.ogg')
- msg = replacetext(msg, "@[C.ckey]", "@[C.ckey]")
- msg = replacetext(msg, "@[C.key]", "@[C.key]") // Same applies here. key and ckey.
+ for(var/client/C in GLOB.admins)
+ if(check_rights(R_ADMIN|R_MOD, 0, C.mob))
+ // Lets see if this admin was pinged in the asay message
+ if(findtext(msg, "@[C.ckey]") || findtext(msg, "@[C.key]")) // Check ckey and key, so you can type @AffectedArc07 or @affectedarc07
+ SEND_SOUND(C, 'sound/misc/ping.ogg')
+ msg = replacetext(msg, "@[C.ckey]", "@[C.ckey]")
+ msg = replacetext(msg, "@[C.key]", "@[C.key]") // Same applies here. key and ckey.
- msg = "[msg]"
- to_chat(C, "ADMIN: [key_name(usr, 1)] ([admin_jump_link(mob)]): [msg]", MESSAGE_TYPE_ADMINCHAT, confidential = TRUE)
+ msg = "[msg]"
+ to_chat(C, "ADMIN: [key_name(usr, 1)] ([admin_jump_link(mob)]): [msg]", MESSAGE_TYPE_ADMINCHAT, confidential = TRUE)
SSblackbox.record_feedback("tally", "admin_verb", 1, "Asay") //If you are copy-pasting this, ensure the 4th parameter is unique to the new proc!
/client/proc/get_admin_say()
- if(check_rights(R_ADMIN, FALSE))
+ if(check_rights(R_ADMIN|R_MOD, FALSE))
var/msg = input(src, null, "asay \"text\"") as text|null
cmd_admin_say(msg)
else if(check_rights(R_MENTOR))
diff --git a/strings/lobby_phrases.txt b/strings/lobby_phrases.txt
index 4720fd3eaf9..40c9ea6b8cd 100644
--- a/strings/lobby_phrases.txt
+++ b/strings/lobby_phrases.txt
@@ -4,5 +4,5 @@
Также известно как SunSpace.
ХОНК.
Также попробуйте майнкрафт.
-КМ никогда не будет главой!
+КМ всегда был главой!
Как менять руки?