diff options
Diffstat (limited to 'internal/combat/state.go')
| -rw-r--r-- | internal/combat/state.go | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/internal/combat/state.go b/internal/combat/state.go index e1ee8e7..17a9c09 100644 --- a/internal/combat/state.go +++ b/internal/combat/state.go @@ -36,6 +36,13 @@ func (t *Tracker) Enter(playerName, mobID string) { if prev, ok := t.combatants[playerName]; ok { delete(t.mobTargets, prev.MobID) } + // If another player already holds this mob, replacing the mobTargets + // entry would leave their combatants entry pointing at a mob this new + // player now owns. Clear it so their later Leave cannot delete this + // player's claim and unlock a mob that is still being fought. + if prevOwner, ok := t.mobTargets[mobID]; ok && prevOwner != playerName { + delete(t.combatants, prevOwner) + } t.combatants[playerName] = &State{ PlayerName: playerName, MobID: mobID, |
