Skip to content

Commit

Permalink
million changes at once
Browse files Browse the repository at this point in the history
  • Loading branch information
Zonespace27 committed Oct 13, 2023
1 parent f6cc4d9 commit 6ade0bd
Show file tree
Hide file tree
Showing 35 changed files with 86 additions and 57 deletions.
1 change: 0 additions & 1 deletion code/__HELPERS/level_traits.dm
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@

#define is_admin_level(z) SSmapping.level_trait(z, ZTRAIT_ADMIN)

#define is_ground_level(z) SSmapping.level_trait(z, ZTRAIT_GROUND)
Expand Down
12 changes: 12 additions & 0 deletions code/__HELPERS/unsorted.dm
Original file line number Diff line number Diff line change
Expand Up @@ -2093,3 +2093,15 @@ GLOBAL_LIST_INIT(duplicate_forbidden_vars,list(

if(NORTHWEST)
return list(NORTHWEST, NORTH, WEST)

/// Returns TRUE if the target is somewhere that the game should not interact with if possible
/// In this case, admin Zs and tutorial areas
/proc/should_block_game_interaction(atom/target)
if(is_admin_level(target.z))
return TRUE

var/area/target_area = get_area(target)
if(target_area?.block_game_interaction)
return TRUE

return FALSE
2 changes: 1 addition & 1 deletion code/_onclick/observer.dm
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
if(ismob(target) || isVehicle(target))
if(isxeno(target) && SSticker.mode.check_xeno_late_join(src)) //if it's a xeno and all checks are alright, we are gonna try to take their body
var/mob/living/carbon/xenomorph/xeno = target
if(xeno.stat == DEAD || is_admin_level(xeno.z) || xeno.aghosted)
if(xeno.stat == DEAD || should_block_game_interaction(xeno) || xeno.aghosted)
to_chat(src, SPAN_WARNING("You cannot join as [xeno]."))
do_observe(xeno)
return FALSE
Expand Down
2 changes: 1 addition & 1 deletion code/_onclick/xeno.dm
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ so that it doesn't double up on the delays) so that it applies the delay immedia
if(alt_pressed && shift_pressed)
if(istype(target, /mob/living/carbon/xenomorph))
var/mob/living/carbon/xenomorph/xeno = target
if(!QDELETED(xeno) && xeno.stat != DEAD && !is_admin_level(xeno.z) && xeno.check_state(TRUE) && xeno.hivenumber == hivenumber)
if(!QDELETED(xeno) && xeno.stat != DEAD && !should_block_game_interaction(xeno) && xeno.check_state(TRUE) && xeno.hivenumber == hivenumber)
overwatch(xeno)
next_move = world.time + 3 // Some minimal delay so this isn't crazy spammy
return TRUE
Expand Down
4 changes: 2 additions & 2 deletions code/datums/datacore.dm
Original file line number Diff line number Diff line change
Expand Up @@ -203,8 +203,8 @@ GLOBAL_DATUM_INIT(data_core, /datum/datacore, new)
sleep(40)

var/list/jobs_to_check = ROLES_CIC + ROLES_AUXIL_SUPPORT + ROLES_MISC + ROLES_POLICE + ROLES_ENGINEERING + ROLES_REQUISITION + ROLES_MEDICAL + ROLES_MARINES
for(var/mob/living/carbon/human/H in GLOB.human_mob_list)
if(is_admin_level(H.z))
for(var/mob/living/carbon/human/H as anything in GLOB.human_mob_list)
if(should_block_game_interaction(H))
continue
if(H.job in jobs_to_check)
manifest_inject(H)
Expand Down
2 changes: 1 addition & 1 deletion code/datums/helper_datums/teleport.dm
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@
teleatom.visible_message(SPAN_DANGER("<B>The [teleatom] bounces off of the portal!</B>"))
return 0

if(is_admin_level(destination.z))
if(should_block_game_interaction(destination))
if(length(teleatom.search_contents_for(/obj/item/storage/backpack/holding)))
teleatom.visible_message(SPAN_DANGER("<B>The Bag of Holding bounces off of the portal!</B>"))
return 0
Expand Down
12 changes: 12 additions & 0 deletions code/datums/tutorial/_tutorial.dm
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,7 @@ GLOBAL_LIST_EMPTY(ongoing_tutorials)
/datum/tutorial/proc/message_to_player(message)
playsound_client(tutorial_mob.client, 'sound/effects/radiostatic.ogg', tutorial_mob.loc, 25, FALSE)
tutorial_mob.play_screen_text(message, /atom/movable/screen/text/screen_text/command_order/tutorial, rgb(103, 214, 146))
to_chat(tutorial_mob, SPAN_NOTICE(message))

/// Updates a player's objective in their status tab
/datum/tutorial/proc/update_objective(message)
Expand All @@ -133,6 +134,17 @@ GLOBAL_LIST_EMPTY(ongoing_tutorials)
RETURN_TYPE(/turf)
return locate(bottom_left_corner.x + offset_x, bottom_left_corner.y + offset_y, bottom_left_corner.z)

/// Handle the player ghosting out
/datum/tutorial/proc/on_ghost(datum/source, mob/dead/observer/ghost)
SIGNAL_HANDLER

var/mob/new_player/new_player = new
if(!ghost.mind)
ghost.mind_initialize()

ghost.mind.transfer_to(new_player)

end_tutorial()

/datum/action/tutorial_end
name = "Stop Tutorial"
Expand Down
3 changes: 2 additions & 1 deletion code/datums/tutorial/marine/_marine.dm
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
INVOKE_ASYNC(new_character, TYPE_PROC_REF(/mob/living/carbon/human, update_hair))

tutorial_mob = new_character
RegisterSignal(tutorial_mob, list(COMSIG_PARENT_QDELETING, COMSIG_MOB_DEATH, COMSIG_LIVING_GHOSTED), PROC_REF(end_tutorial))
RegisterSignal(tutorial_mob, COMSIG_LIVING_GHOSTED, PROC_REF(on_ghost))
RegisterSignal(tutorial_mob, list(COMSIG_PARENT_QDELETING, COMSIG_MOB_DEATH), PROC_REF(end_tutorial))
RegisterSignal(tutorial_mob.client, COMSIG_PARENT_QDELETING, PROC_REF(end_tutorial))
return ..()
3 changes: 2 additions & 1 deletion code/datums/tutorial/ss13/_ss13.dm
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,8 @@
INVOKE_ASYNC(new_character, TYPE_PROC_REF(/mob/living/carbon/human, update_hair))

tutorial_mob = new_character
RegisterSignal(tutorial_mob, list(COMSIG_PARENT_QDELETING, COMSIG_MOB_DEATH, COMSIG_LIVING_GHOSTED), PROC_REF(end_tutorial))
RegisterSignal(tutorial_mob, COMSIG_LIVING_GHOSTED, PROC_REF(on_ghost))
RegisterSignal(tutorial_mob, list(COMSIG_PARENT_QDELETING, COMSIG_MOB_DEATH), PROC_REF(end_tutorial))
RegisterSignal(tutorial_mob.client, COMSIG_PARENT_QDELETING, PROC_REF(end_tutorial))
arm_equipment(tutorial_mob, /datum/equipment_preset/tutorial/fed)
return ..()
3 changes: 2 additions & 1 deletion code/game/area/admin_level.dm
Original file line number Diff line number Diff line change
Expand Up @@ -149,9 +149,10 @@
name = "tutorial zone"
icon_state = "tutorial"
requires_power = FALSE
flags_area = AREA_NOTUNNEL
flags_area = AREA_NOTUNNEL|AREA_AVOID_BIOSCAN
statistic_exempt = TRUE
ceiling = CEILING_METAL
block_game_interaction = TRUE

base_lighting_alpha = 255

Expand Down
3 changes: 3 additions & 0 deletions code/game/area/areas.dm
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,9 @@
var/used_environ = 0
var/used_oneoff = 0 //one-off power usage

/// If this area is outside the game's normal interactivity and should be excluded from things like EOR reports and crew monitors
var/block_game_interaction = FALSE


/area/New()
// This interacts with the map loader, so it needs to be set immediately
Expand Down
2 changes: 1 addition & 1 deletion code/game/gamemodes/cm_initialize.dm
Original file line number Diff line number Diff line change
Expand Up @@ -344,7 +344,7 @@ Additional game mode variables.
if(cur_xeno.aghosted)
continue //aghosted xenos don't count
var/area/area = get_area(cur_xeno)
if(is_admin_level(cur_xeno.z) && (!area || !(area.flags_area & AREA_ALLOW_XENO_JOIN)))
if(should_block_game_interaction(cur_xeno) && (!area || !(area.flags_area & AREA_ALLOW_XENO_JOIN)))
continue //xenos on admin z level don't count
if(!istype(cur_xeno))
continue
Expand Down
2 changes: 1 addition & 1 deletion code/game/gamemodes/colonialmarines/colonialmarines.dm
Original file line number Diff line number Diff line change
Expand Up @@ -333,7 +333,7 @@
var/datum/hive_status/HS
for(var/HN in GLOB.hive_datum)
HS = GLOB.hive_datum[HN]
if(HS.living_xeno_queen && !is_admin_level(HS.living_xeno_queen.loc.z))
if(HS.living_xeno_queen && !should_block_game_interaction(HS.living_xeno_queen.loc))
//Some Queen is alive, we shouldn't end the game yet
return
round_finished = MODE_INFESTATION_M_MINOR
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@

for(var/mob/living/carbon/xenomorph/X as anything in GLOB.living_xeno_list)
var/area/A = get_area(X)
if(is_admin_level(X.z) && (!A || !(A.flags_area & AREA_ALLOW_XENO_JOIN)) || X.aghosted) continue //xenos on admin z level and aghosted ones don't count
if(should_block_game_interaction(X) && (!A || !(A.flags_area & AREA_ALLOW_XENO_JOIN)) || X.aghosted) continue //xenos on admin z level and aghosted ones don't count
if(istype(X) && !X.client)
if((X.away_timer >= XENO_LEAVE_TIMER) || (islarva(X) && X.away_timer >= XENO_LEAVE_TIMER_LARVA))
available_xenos += X
Expand Down
2 changes: 1 addition & 1 deletion code/game/machinery/camera/tracking.dm
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
/mob/living/silicon/ai/proc/InvalidTurf(turf/T as turf)
if(!T)
return 1
if(is_admin_level(T.z))
if(should_block_game_interaction(T))
return 1
if(T.z > 6)
return 1
Expand Down
2 changes: 1 addition & 1 deletion code/game/machinery/computer/camera_console.dm
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@
return attack_hand(user)

/obj/structure/machinery/computer/cameras/attack_hand(mob/user)
if(!admin_console && is_admin_level(z))
if(!admin_console && should_block_game_interaction(src))
to_chat(user, SPAN_DANGER("<b>Unable to establish a connection</b>: \black You're too far away from the ship!"))
return
if(inoperable())
Expand Down
2 changes: 1 addition & 1 deletion code/game/machinery/cryopod.dm
Original file line number Diff line number Diff line change
Expand Up @@ -516,7 +516,7 @@ GLOBAL_LIST_INIT(frozen_items, list(SQUAD_MARINE_1 = list(), SQUAD_MARINE_2 = li
if(mob.client)
to_chat(mob, SPAN_NOTICE("You feel cool air surround you. You go numb as your senses turn inward."))
to_chat(mob, SPAN_BOLDNOTICE("If you log out or close your client now, your character will permanently removed from the round in 10 minutes. If you ghost, timer will be decreased to 2 minutes."))
if(!is_admin_level(src.z)) // Set their queue time now because the client has to actually leave to despawn and at that point the client is lost
if(!should_block_game_interaction(src)) // Set their queue time now because the client has to actually leave to despawn and at that point the client is lost
mob.client.player_details.larva_queue_time = max(mob.client.player_details.larva_queue_time, world.time)
var/area/location = get_area(src)
if(mob.job != GET_MAPPED_ROLE(JOB_SQUAD_MARINE))
Expand Down
4 changes: 2 additions & 2 deletions code/game/machinery/telecomms/machine_interactions.dm
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@
if(src.listening_level == TELECOMM_GROUND_Z) // equals the station
src.listening_level = position.z
return 1
else if(is_admin_level(position.z))
else if(should_block_game_interaction(position))
src.listening_level = TELECOMM_GROUND_Z
return 1
return 0
Expand Down Expand Up @@ -229,7 +229,7 @@

/obj/structure/machinery/telecomms/relay/Options_Menu()
var/dat = ""
if(is_admin_level(z))
if(should_block_game_interaction(src))
dat += "<br>Signal Locked to Station: <A href='?src=\ref[src];change_listening=1'>[listening_level == TELECOMM_GROUND_Z ? "TRUE" : "FALSE"]</a>"
dat += "<br>Broadcasting: <A href='?src=\ref[src];broadcast=1'>[broadcasting ? "YES" : "NO"]</a>"
dat += "<br>Receiving: <A href='?src=\ref[src];receive=1'>[receiving ? "YES" : "NO"]</a>"
Expand Down
4 changes: 2 additions & 2 deletions code/game/machinery/teleporter.dm
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@
var/turf/T = get_turf(R)
if (!T)
continue
if(is_admin_level(T.z))
if(should_block_game_interaction(T))
continue
var/tmpname = T.loc.name
if(areaindex[tmpname])
Expand All @@ -118,7 +118,7 @@
continue
var/turf/T = get_turf(M)
if(T) continue
if(is_admin_level(T.z)) continue
if(should_block_game_interaction(T)) continue
var/tmpname = M.real_name
if(areaindex[tmpname])
tmpname = "[tmpname] ([++areaindex[tmpname]])"
Expand Down
4 changes: 2 additions & 2 deletions code/game/objects/items/devices/teleportation.dm
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
if (usr.stat || usr.is_mob_restrained())
return
var/turf/current_location = get_turf(usr)//What turf is the user on?
if(!current_location || is_admin_level(current_location.z))//If turf was not found or they're on z level 2.
if(!current_location || should_block_game_interaction(current_location))//If turf was not found or they're on z level 2.
to_chat(usr, "The [src] is malfunctioning.")
return
if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))))
Expand Down Expand Up @@ -140,7 +140,7 @@
..()

var/turf/current_location = get_turf(user)//What turf is the user on?
if(!current_location || is_admin_level(current_location.z))//If turf was not found or they're on z level 2
if(!current_location || should_block_game_interaction(current_location))//If turf was not found or they're on z level 2
to_chat(user, SPAN_NOTICE("\The [src] is malfunctioning."))
return
var/list/L = list( )
Expand Down
2 changes: 1 addition & 1 deletion code/game/supplyshuttle.dm
Original file line number Diff line number Diff line change
Expand Up @@ -1408,7 +1408,7 @@ var/datum/controller/supply/supply_controller = new()
world.log << "## ERROR: Eek. The supply/elevator datum is missing somehow."
return

if(!is_admin_level(SSshuttle.vehicle_elevator.z))
if(!should_block_game_interaction(SSshuttle.vehicle_elevator))
return

if(ismaintdrone(usr))
Expand Down
2 changes: 1 addition & 1 deletion code/modules/cm_marines/marines_consoles.dm
Original file line number Diff line number Diff line change
Expand Up @@ -819,7 +819,7 @@ GLOBAL_LIST_EMPTY_TYPED(crewmonitor, /datum/crewmonitor)
var/turf/pos = get_turf(H)
if(!pos)
continue
if(is_admin_level(pos.z))
if(should_block_game_interaction(H))
continue

// The entry for this human
Expand Down
4 changes: 2 additions & 2 deletions code/modules/cm_preds/yaut_items.dm
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
//Thrall subtypes are located in /code/modules/cm_preds/thrall_items.dm

/proc/add_to_missing_pred_gear(obj/item/W)
if(!is_admin_level(W.z))
if(!should_block_game_interaction(W))
GLOB.loose_yautja_gear |= W

/proc/remove_from_missing_pred_gear(obj/item/W)
Expand Down Expand Up @@ -394,7 +394,7 @@
var/mob/living/carbon/human/H = user
var/ship_to_tele = list("Yautja Ship" = -1, "Human Ship" = "Human")

if(!HAS_TRAIT(H, TRAIT_YAUTJA_TECH) || is_admin_level(H.z))
if(!HAS_TRAIT(H, TRAIT_YAUTJA_TECH) || should_block_game_interaction(H))
to_chat(user, SPAN_WARNING("You fiddle with it, but nothing happens!"))
return

Expand Down
2 changes: 1 addition & 1 deletion code/modules/gear_presets/uscm.dm
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@

/datum/equipment_preset/uscm/load_preset(mob/living/carbon/human/new_human, randomise, count_participant)
. = ..()
if(!auto_squad_name || is_admin_level(new_human.z))
if(!auto_squad_name || should_block_game_interaction(new_human))
return
if(!GLOB.data_core.manifest_modify(new_human.real_name, WEAKREF(new_human), assignment, rank))
GLOB.data_core.manifest_inject(new_human)
Expand Down
4 changes: 2 additions & 2 deletions code/modules/maptext_alerts/screen_alerts.dm
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,8 @@
/atom/movable/screen/text/screen_text/command_order/tutorial
letters_per_update = 4 // overall, pretty fast while not immediately popping in
play_delay = 0.1
fade_out_delay = 2 SECONDS
fade_out_time = 0.4 SECONDS
fade_out_delay = 2.5 SECONDS
fade_out_time = 0.5 SECONDS

///proc for actually playing this screen_text on a mob.
/atom/movable/screen/text/screen_text/proc/play_to_client()
Expand Down
4 changes: 2 additions & 2 deletions code/modules/mob/dead/observer/observer.dm
Original file line number Diff line number Diff line change
Expand Up @@ -457,7 +457,7 @@ Works together with spawning an observer, noted above.
ghost.langchat_make_image()

SStgui.on_transfer(src, ghost)
if(is_admin_level((get_turf(src))?.z)) // Gibbed humans ghostize the brain in their head which itself is z 0
if(should_block_game_interaction(src)) // Gibbed humans ghostize the brain in their head which itself is z 0
ghost.timeofdeath = 1 // Bypass respawn limit if you die on the admin zlevel

ghost.key = key
Expand Down Expand Up @@ -542,7 +542,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
log_game("[key_name_admin(client)] has ghosted.")
var/mob/dead/observer/ghost = ghostize((is_nested && nest && !QDELETED(nest))) //FALSE parameter is so we can never re-enter our body, "Charlie, you can never come baaaack~" :3
SEND_SIGNAL(src, COMSIG_LIVING_GHOSTED, ghost)
if(ghost && !is_admin_level(z))
if(ghost && !should_block_game_interaction(src))
ghost.timeofdeath = world.time

// Larva queue: We use the larger of their existing queue time or the new timeofdeath except for facehuggers or lesser drone
Expand Down
2 changes: 1 addition & 1 deletion code/modules/mob/living/carbon/xenomorph/Embryo.dm
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,7 @@
/obj/item/alien_embryo/proc/become_larva()
// We do not allow chest bursts on the Centcomm Z-level, to prevent
// stranded players from admin experiments and other issues
if(!affected_mob || is_admin_level(affected_mob.z))
if(!affected_mob || should_block_game_interaction(affected_mob))
return

stage = 6 // Increase the stage value to prevent this proc getting repeated
Expand Down
2 changes: 1 addition & 1 deletion code/modules/mob/living/carbon/xenomorph/Evolution.dm
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@
return

var/area/xeno_area = get_area(new_xeno)
if(!is_admin_level(new_xeno.z) || (xeno_area.flags_atom & AREA_ALLOW_XENO_JOIN))
if(!should_block_game_interaction(new_xeno) || (xeno_area.flags_atom & AREA_ALLOW_XENO_JOIN))
switch(new_xeno.tier) //They have evolved, add them to the slot count IF they are in regular game space
if(2)
hive.tier_2_xenos |= new_xeno
Expand Down
6 changes: 3 additions & 3 deletions code/modules/mob/living/carbon/xenomorph/XenoOverwatch.dm
Original file line number Diff line number Diff line change
Expand Up @@ -43,12 +43,12 @@

var/list/possible_xenos = list()
for(var/mob/living/carbon/xenomorph/T in GLOB.living_xeno_list)
if (T != X && !is_admin_level(T.z) && X.hivenumber == T.hivenumber) // Can't overwatch yourself, Xenos in Thunderdome, or Xenos in other hives
if (T != X && !should_block_game_interaction(T) && X.hivenumber == T.hivenumber) // Can't overwatch yourself, Xenos in Thunderdome, or Xenos in other hives
possible_xenos += T

var/mob/living/carbon/xenomorph/selected_xeno = tgui_input_list(X, "Target", "Watch which xenomorph?", possible_xenos, theme="hive_status")

if (!selected_xeno || QDELETED(selected_xeno) || selected_xeno == X.observed_xeno || selected_xeno.stat == DEAD || is_admin_level(selected_xeno.z) || !X.check_state(TRUE))
if (!selected_xeno || QDELETED(selected_xeno) || selected_xeno == X.observed_xeno || selected_xeno.stat == DEAD || should_block_game_interaction(selected_xeno) || !X.check_state(TRUE))
X.overwatch(X.observed_xeno, TRUE) // Cancel OW
else if (!isQueen) // Regular Xeno OW vs Queen
X.overwatch(selected_xeno)
Expand Down Expand Up @@ -177,7 +177,7 @@
var/mob/living/carbon/xenomorph/xenoTarget = locate(href_list[XENO_OVERWATCH_TARGET_HREF]) in GLOB.living_xeno_list
var/mob/living/carbon/xenomorph/xenoSrc = locate(href_list[XENO_OVERWATCH_SRC_HREF]) in GLOB.living_xeno_list

if(!istype(xenoTarget) || xenoTarget.stat == DEAD || is_admin_level(xenoTarget.z))
if(!istype(xenoTarget) || xenoTarget.stat == DEAD || should_block_game_interaction(xenoTarget))
return

if(!istype(xenoSrc) || xenoSrc.stat == DEAD)
Expand Down
4 changes: 2 additions & 2 deletions code/modules/mob/living/carbon/xenomorph/Xenomorph.dm
Original file line number Diff line number Diff line change
Expand Up @@ -497,7 +497,7 @@
hive.replace_hive_leader(oldXeno, src)

// Only handle free slots if the xeno is not in tdome
if(!is_admin_level(z))
if(!should_block_game_interaction(src))
var/selected_caste = GLOB.xeno_datum_list[caste_type]?.type
hive.used_slots[selected_caste]++

Expand Down Expand Up @@ -1071,7 +1071,7 @@

/mob/living/carbon/xenomorph/ghostize(can_reenter_corpse = TRUE)
. = ..()
if(. && !can_reenter_corpse && stat != DEAD && !QDELETED(src) && !is_admin_level(z))
if(. && !can_reenter_corpse && stat != DEAD && !QDELETED(src) && !should_block_game_interaction(src))
handle_ghost_message()

/mob/living/carbon/xenomorph/proc/handle_ghost_message()
Expand Down
4 changes: 2 additions & 2 deletions code/modules/mob/living/carbon/xenomorph/castes/Queen.dm
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@
if(hive.living_xeno_queen.hivenumber == hive.hivenumber)
continue
for(var/mob/living/carbon/xenomorph/queen/Q in GLOB.living_xeno_list)
if(Q.hivenumber == hive.hivenumber && !is_admin_level(Q.z))
if(Q.hivenumber == hive.hivenumber && !should_block_game_interaction(Q))
hive.living_xeno_queen = Q
xeno_message(SPAN_XENOANNOUNCE("A new Queen has risen to lead the Hive! Rejoice!"),3,hive.hivenumber)
continue outer_loop
Expand Down Expand Up @@ -488,7 +488,7 @@
if(hive && hive.living_xeno_queen == src)
var/mob/living/carbon/xenomorph/queen/next_queen = null
for(var/mob/living/carbon/xenomorph/queen/queen in hive.totalXenos)
if(!is_admin_level(queen.z) && queen != src && !QDELETED(queen))
if(!should_block_game_interaction(queen) && queen != src && !QDELETED(queen))
next_queen = queen
break
hive.set_living_xeno_queen(next_queen) // either null or a queen
Expand Down
2 changes: 1 addition & 1 deletion code/modules/mob/living/carbon/xenomorph/death.dm
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
hud_used.alien_plasma_display.icon_state = "power_display_empty"
update_icons()

if(!is_admin_level(z)) //so xeno players don't get death messages from admin tests
if(!should_block_game_interaction(src)) //so xeno players don't get death messages from admin tests
if(isqueen(src))
var/mob/living/carbon/xenomorph/queen/XQ = src
playsound(loc, 'sound/voice/alien_queen_died.ogg', 75, 0)
Expand Down
Loading

0 comments on commit 6ade0bd

Please sign in to comment.