diff --git a/server/channelserver/handlers_object.go b/server/channelserver/handlers_object.go index 08252f61a..8984c21bf 100644 --- a/server/channelserver/handlers_object.go +++ b/server/channelserver/handlers_object.go @@ -10,9 +10,25 @@ import ( func handleMsgSysCreateObject(s *Session, p mhfpacket.MHFPacket) { pkt := p.(*mhfpacket.MsgSysCreateObject) + // Prevent reusing an object index + var nextID uint32 + for { + exists := false + nextID = s.stage.NextObjectID() + for _, object := range s.stage.objects { + if object.id == nextID { + exists = true + break + } + } + if exists == false { + break + } + } + s.stage.Lock() newObj := &Object{ - id: s.stage.NextObjectID(), + id: nextID, ownerCharID: s.charID, x: pkt.X, y: pkt.Y,