aboutsummaryrefslogtreecommitdiff
path: root/internal/game/sys_safespot.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/game/sys_safespot.go')
-rw-r--r--internal/game/sys_safespot.go8
1 files changed, 6 insertions, 2 deletions
diff --git a/internal/game/sys_safespot.go b/internal/game/sys_safespot.go
index ffb7948..b0e94c2 100644
--- a/internal/game/sys_safespot.go
+++ b/internal/game/sys_safespot.go
@@ -99,7 +99,7 @@ func (g *Game) activateSafespot(sess *net.Session, p *player.Player, ss *Safespo
return
}
- if cfg.RespawnOnHide {
+ if cfg.RespawnOnHide && len(st.SafespotOccupants) == 0 {
st.SafespotLevel = len(cfg.Levels)
st.SafespotTicksAtLevel = 0
} else if st.SafespotLevel <= 0 {
@@ -211,7 +211,11 @@ func (g *Game) degradeSafespot(st *world.ObjState, objDef *object.ObjectDef, cfg
}
}
st.SafespotOccupants = nil
- g.scheduleSafespotRespawn(st, objDef, cfg)
+ if cfg.RespawnTicks > 0 {
+ g.scheduleSafespotRespawn(st, objDef, cfg)
+ } else {
+ g.World.RemoveObjInstance(st.RoomID, objDef.ID)
+ }
return
}