aboutsummaryrefslogtreecommitdiff
path: root/internal/world
diff options
context:
space:
mode:
Diffstat (limited to 'internal/world')
-rw-r--r--internal/world/mob.go10
1 files changed, 9 insertions, 1 deletions
diff --git a/internal/world/mob.go b/internal/world/mob.go
index a794bdd..b004643 100644
--- a/internal/world/mob.go
+++ b/internal/world/mob.go
@@ -665,7 +665,15 @@ func (s *MobStore) SpawnTransient(def *MobDef, cfg *behavior.SpawnMobConfig, roo
s.mu.Lock()
defer s.mu.Unlock()
- instID := fmt.Sprintf("trigger_%s_%d_%d", cfg.ID, roomID, len(s.instances))
+ instID := ""
+ base := fmt.Sprintf("trigger_%s_%d", cfg.ID, roomID)
+ for n := 0; ; n++ {
+ candidate := fmt.Sprintf("%s_%d", base, n)
+ if _, exists := s.instances[candidate]; !exists {
+ instID = candidate
+ break
+ }
+ }
inst := NewMobInstance(def, instID, roomID, nil, 0)
inst.Owner = owner
inst.OwnerOnly = cfg.OwnerOnly