diff options
Diffstat (limited to 'internal/game/sys_safespot.go')
| -rw-r--r-- | internal/game/sys_safespot.go | 8 |
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 } |
