prvents ghosts from leaving / getting tossed out bellies in areas with BLOCK ghosts flag (#16726)

* prevents ghosts from getting instantly removed form a belly or leaving it in no ghost areas

* add belly leave popup

* .

* .
This commit is contained in:
Kashargul
2024-12-18 20:26:29 +10:00
committed by GitHub
parent 13b7954b77
commit f348a108e2
2 changed files with 15 additions and 4 deletions
+13 -2
View File
@@ -341,10 +341,21 @@
/mob/proc/SelfMove(turf/n, direct, movetime)
return Move(n, direct, movetime)
/client
var/is_leaving_belly = FALSE
///Process_Incorpmove
///Called by client/Move()
///Allows mobs to run though walls
/client/proc/Process_Incorpmove(direct)
if(isbelly(mob.loc) && isobserver(mob))
if(is_leaving_belly)
return
is_leaving_belly = TRUE
if(tgui_alert(mob, "Do you want to leave your predator's belly?", "Leave belly?", list("Yes", "No")) != "Yes")
is_leaving_belly = FALSE
return
is_leaving_belly = FALSE
var/turf/mobloc = get_turf(mob)
switch(mob.incorporeal_move)
@@ -361,10 +372,10 @@
if(isliving(mob) && A.flag_check(AREA_BLOCK_PHASE_SHIFT))
to_chat(mob, span_warning("Something blocks you from entering this location while phased out."))
return
if(isobserver(mob) && A.flag_check(AREA_BLOCK_GHOSTS))
if(isobserver(mob) && A.flag_check(AREA_BLOCK_GHOSTS) && !isbelly(mob.loc))
to_chat(mob, span_warning("Ghosts can't enter this location."))
var/area/our_area = mobloc.loc
if(our_area.flag_check(AREA_BLOCK_GHOSTS))
if(our_area.flag_check(AREA_BLOCK_GHOSTS) && !isbelly(mob.loc))
var/mob/observer/dead/D = mob
D.return_to_spawn()
return