diff --git a/.prettierrc.json b/.prettierrc.json
index 09fbd9e..5ab4c9a 100644
--- a/.prettierrc.json
+++ b/.prettierrc.json
@@ -3,7 +3,7 @@
   "semi": false,
   "tabWidth": 2,
   "singleQuote": true,
-  "printWidth": 300,
+  "printWidth": 200,
   "trailingComma": "none",
   "plugins": ["@ianvs/prettier-plugin-sort-imports"],
   "importOrderParserPlugins": ["typescript", "jsx", "decorators-legacy", "classProperties"],
diff --git a/package-lock.json b/package-lock.json
index 15711b4..1e23ab8 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1052,14 +1052,14 @@
       }
     },
     "node_modules/@mikro-orm/cli": {
-      "version": "6.4.5",
-      "resolved": "https://registry.npmjs.org/@mikro-orm/cli/-/cli-6.4.5.tgz",
-      "integrity": "sha512-Ujmpy6ZFs//2TYzi0Q1tzmrOjq+SwtkT7Iv1RUsniaF21N6R71qhQnSHdkJgVuaGGE5a6Qyp52mDWSwW4qb9EQ==",
+      "version": "6.4.6",
+      "resolved": "https://registry.npmjs.org/@mikro-orm/cli/-/cli-6.4.6.tgz",
+      "integrity": "sha512-sTMoDSJrnHZBT+ZAG40OeZwR9zRTYHtaaub9OoMM2CrxfI1KeiNqL/XFB4LaM5SVRAbnoEFpMJwQ8KS+5NcN9w==",
       "license": "MIT",
       "dependencies": {
         "@jercle/yargonaut": "1.1.5",
-        "@mikro-orm/core": "6.4.5",
-        "@mikro-orm/knex": "6.4.5",
+        "@mikro-orm/core": "6.4.6",
+        "@mikro-orm/knex": "6.4.6",
         "fs-extra": "11.3.0",
         "tsconfig-paths": "4.2.0",
         "yargs": "17.7.2"
@@ -1073,9 +1073,9 @@
       }
     },
     "node_modules/@mikro-orm/core": {
-      "version": "6.4.5",
-      "resolved": "https://registry.npmjs.org/@mikro-orm/core/-/core-6.4.5.tgz",
-      "integrity": "sha512-9/CZ5oSbf4P1oBZA2HHKzuxh5yYKDNUZZq/RvJmzMdJDgV8fpTt26po/7J6UytABqZp9yXj1jXc+Kqv73vGGOA==",
+      "version": "6.4.6",
+      "resolved": "https://registry.npmjs.org/@mikro-orm/core/-/core-6.4.6.tgz",
+      "integrity": "sha512-xVm/ALG/3vTMgh6SrvojJ6jjMa0s2hNzWN0triDB16BaNdLwWE4aAaAe+3CuoMFqJAArSOUISTEjExbzELB1ZA==",
       "license": "MIT",
       "dependencies": {
         "dataloader": "2.2.3",
@@ -1083,7 +1083,7 @@
         "esprima": "4.0.1",
         "fs-extra": "11.3.0",
         "globby": "11.1.0",
-        "mikro-orm": "6.4.5",
+        "mikro-orm": "6.4.6",
         "reflect-metadata": "0.2.2"
       },
       "engines": {
@@ -1094,9 +1094,9 @@
       }
     },
     "node_modules/@mikro-orm/knex": {
-      "version": "6.4.5",
-      "resolved": "https://registry.npmjs.org/@mikro-orm/knex/-/knex-6.4.5.tgz",
-      "integrity": "sha512-5D4NGD9bxmROUf8MVhR4mmZjzQtuM/Sg+eOnfOPzVaIkvuQItE4zR0Bg7gRr1XSgZ/OcJ/6q2ZoXH1HxSjykkw==",
+      "version": "6.4.6",
+      "resolved": "https://registry.npmjs.org/@mikro-orm/knex/-/knex-6.4.6.tgz",
+      "integrity": "sha512-o6t67tFH/GuPZCCEtKbTTL8HDXNgB2ITjButCTZLwteL0qI9yE/f7K6K+dEUKW+hAL3KRvc2BQeumvCVWFeISg==",
       "license": "MIT",
       "dependencies": {
         "fs-extra": "11.3.0",
@@ -1125,12 +1125,12 @@
       }
     },
     "node_modules/@mikro-orm/mariadb": {
-      "version": "6.4.5",
-      "resolved": "https://registry.npmjs.org/@mikro-orm/mariadb/-/mariadb-6.4.5.tgz",
-      "integrity": "sha512-fXyMZ5x1MIkQ+N7TyLgc5SjECpXRF+g0G6dvyYexdyoAo80RWPKksoZzRBrEDDbmMg8eEtpkqJ4bm29szuJijA==",
+      "version": "6.4.6",
+      "resolved": "https://registry.npmjs.org/@mikro-orm/mariadb/-/mariadb-6.4.6.tgz",
+      "integrity": "sha512-n6pOf69heOsbrggqYcf9SeF9hUdkw0FbzuUAcI72jWuyNRyzNR1UATblD+vRJnwt8JDWwakjINU/bduZbcEwPw==",
       "license": "MIT",
       "dependencies": {
-        "@mikro-orm/knex": "6.4.5",
+        "@mikro-orm/knex": "6.4.6",
         "mariadb": "3.4.0"
       },
       "engines": {
@@ -1141,12 +1141,12 @@
       }
     },
     "node_modules/@mikro-orm/migrations": {
-      "version": "6.4.5",
-      "resolved": "https://registry.npmjs.org/@mikro-orm/migrations/-/migrations-6.4.5.tgz",
-      "integrity": "sha512-cMvBLJGVXNT4iUsgjtMi3wtU9I3AtrI+JF68VFUc6tGkHgt3SS2rfrAw5MNAQaa47NXo9OfUWda4/MbRlV0VjA==",
+      "version": "6.4.6",
+      "resolved": "https://registry.npmjs.org/@mikro-orm/migrations/-/migrations-6.4.6.tgz",
+      "integrity": "sha512-i0/H07g1jQS0tKVSTSkHhrmuDEHxDD3/IzkiObezTgGlD5tqN7acaSr8RDJ3DgICb8MHUDVMLwxeGy8igDB4ag==",
       "license": "MIT",
       "dependencies": {
-        "@mikro-orm/knex": "6.4.5",
+        "@mikro-orm/knex": "6.4.6",
         "fs-extra": "11.3.0",
         "umzug": "3.8.2"
       },
@@ -1158,12 +1158,12 @@
       }
     },
     "node_modules/@mikro-orm/mysql": {
-      "version": "6.4.5",
-      "resolved": "https://registry.npmjs.org/@mikro-orm/mysql/-/mysql-6.4.5.tgz",
-      "integrity": "sha512-DAVroZqmXyAgIUXdiTCSRC3wG00FxE8FTi6YqcI0tE5SptJxc2t87lloRoU0oqzrwwKrlIDuBQ8le/opeiogkQ==",
+      "version": "6.4.6",
+      "resolved": "https://registry.npmjs.org/@mikro-orm/mysql/-/mysql-6.4.6.tgz",
+      "integrity": "sha512-KVP9Wif9MX/RrroVgYQQUrXe9SALBQLfB9CbuJlUB7MnEcZtDi5JNX7z5kghToz0aBrTtOgsr93G1bCoM0SJkg==",
       "license": "MIT",
       "dependencies": {
-        "@mikro-orm/knex": "6.4.5",
+        "@mikro-orm/knex": "6.4.6",
         "mysql2": "3.12.0"
       },
       "engines": {
@@ -1174,13 +1174,13 @@
       }
     },
     "node_modules/@mikro-orm/reflection": {
-      "version": "6.4.5",
-      "resolved": "https://registry.npmjs.org/@mikro-orm/reflection/-/reflection-6.4.5.tgz",
-      "integrity": "sha512-2yXbwAEKRmsJ0+Yt/6lAG+NCRgHdSOGTlzWmLvow+PfCUjSubfUM6rlowBchOAH+7swmsUFmHeeKWV6YG2SeMg==",
+      "version": "6.4.6",
+      "resolved": "https://registry.npmjs.org/@mikro-orm/reflection/-/reflection-6.4.6.tgz",
+      "integrity": "sha512-7mL7HFVnaOOhDNgLjjndWyeJUtOl2wKn0spSqB8uRjS4XtwNEGVZNkW5YD1t/x7TJ99wUhe+oRDiySciiJSeBQ==",
       "license": "MIT",
       "dependencies": {
         "globby": "11.1.0",
-        "ts-morph": "25.0.0"
+        "ts-morph": "25.0.1"
       },
       "engines": {
         "node": ">= 18.12.0"
@@ -1354,9 +1354,9 @@
       }
     },
     "node_modules/@rushstack/terminal": {
-      "version": "0.14.6",
-      "resolved": "https://registry.npmjs.org/@rushstack/terminal/-/terminal-0.14.6.tgz",
-      "integrity": "sha512-4nMUy4h0u5PGXVG71kEA9uYI3l8GjVqewoHOFONiM6fuqS51ORdaJZ5ZXB2VZEGUyfg1TOTSy88MF2cdAy+lqA==",
+      "version": "0.15.0",
+      "resolved": "https://registry.npmjs.org/@rushstack/terminal/-/terminal-0.15.0.tgz",
+      "integrity": "sha512-vXQPRQ+vJJn4GVqxkwRe+UGgzNxdV8xuJZY2zem46Y0p3tlahucH9/hPmLGj2i9dQnUBFiRnoM9/KW7PYw8F4Q==",
       "license": "MIT",
       "dependencies": {
         "@rushstack/node-core-library": "5.11.0",
@@ -1387,12 +1387,12 @@
       }
     },
     "node_modules/@rushstack/ts-command-line": {
-      "version": "4.23.4",
-      "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.23.4.tgz",
-      "integrity": "sha512-pqmzDJCm0TS8VyeqnzcJ7ncwXgiLDQ6LVmXXfqv2nPL6VIz+UpyTpNVfZRJpyyJ+UDxqob1vIj2liaUfBjv8/A==",
+      "version": "4.23.5",
+      "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.23.5.tgz",
+      "integrity": "sha512-jg70HfoK44KfSP3MTiL5rxsZH7X1ktX3cZs9Sl8eDu1/LxJSbPsh0MOFRC710lIuYYSgxWjI5AjbCBAl7u3RxA==",
       "license": "MIT",
       "dependencies": {
-        "@rushstack/terminal": "0.14.6",
+        "@rushstack/terminal": "0.15.0",
         "@types/argparse": "1.0.38",
         "argparse": "~1.0.9",
         "string-argv": "~0.3.1"
@@ -3446,9 +3446,9 @@
       }
     },
     "node_modules/mikro-orm": {
-      "version": "6.4.5",
-      "resolved": "https://registry.npmjs.org/mikro-orm/-/mikro-orm-6.4.5.tgz",
-      "integrity": "sha512-CFQf87MG4c1N3J/3ELtmwFKXHBzp62o/da7dt43V9cGXygBs65KSk3EBCAdyd5VYNtu/09mt/rztanQSWNWzog==",
+      "version": "6.4.6",
+      "resolved": "https://registry.npmjs.org/mikro-orm/-/mikro-orm-6.4.6.tgz",
+      "integrity": "sha512-Lr3uFK06O/4F/AtQAsuYD6QH7DgmUooSVFVGf1y02IuiKVFKOMJ4iKimkRMyoA+ykKhgYIp8WiaEqbWJVuz4Vw==",
       "license": "MIT",
       "engines": {
         "node": ">= 18.12.0"
@@ -4675,9 +4675,9 @@
       }
     },
     "node_modules/ts-morph": {
-      "version": "25.0.0",
-      "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-25.0.0.tgz",
-      "integrity": "sha512-ERPTUVO5qF8cEGJgAejGOsCVlbk8d0SDyiJsucKQT5XgqoZslv0Qml+gnui6Yy6o+uQqw5SestyW2HvlVtT/Sg==",
+      "version": "25.0.1",
+      "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-25.0.1.tgz",
+      "integrity": "sha512-QJEiTdnz1YjrB3JFhd626gX4rKHDLSjSVMvGGG4v7ONc3RBwa0Eei98G9AT9uNFDMtV54JyuXsFeC+OH0n6bXQ==",
       "license": "MIT",
       "dependencies": {
         "@ts-morph/common": "~0.26.0",
diff --git a/src/commands/init.ts b/src/commands/init.ts
index fc0495e..f20212a 100644
--- a/src/commands/init.ts
+++ b/src/commands/init.ts
@@ -270,7 +270,14 @@ export default class InitCommand extends BaseCommand {
       .save()
 
     const characterType = new CharacterType()
-    await characterType.setId('75b70c78-17f0-44c0-a4fa-15043cb95be0').setName('New character type').setGender(CharacterGender.MALE).setRace(CharacterRace.HUMAN).setIsSelectable(true).setSprite(characterSprite).save()
+    await characterType
+      .setId('75b70c78-17f0-44c0-a4fa-15043cb95be0')
+      .setName('New character type')
+      .setGender(CharacterGender.MALE)
+      .setRace(CharacterRace.HUMAN)
+      .setIsSelectable(true)
+      .setSprite(characterSprite)
+      .save()
   }
 
   private async createCharacterHair(): Promise<void> {
diff --git a/src/events/chat/message.ts b/src/events/chat/message.ts
index addb4c5..2cd55a5 100644
--- a/src/events/chat/message.ts
+++ b/src/events/chat/message.ts
@@ -1,7 +1,6 @@
 import { BaseEvent } from '@/application/base/baseEvent'
 import { SocketEvent } from '@/application/enums'
 import MapManager from '@/managers/mapManager'
-import MapRepository from '@/repositories/mapRepository'
 import ChatService from '@/services/chatService'
 
 type TypePayload = {
@@ -25,13 +24,6 @@ export default class ChatMessageEvent extends BaseEvent {
 
       const character = mapCharacter.character
 
-      const mapRepository = new MapRepository()
-      const map = await mapRepository.getById(character.map.id)
-      if (!map) {
-        this.logger.error('chat:message error', 'Map not found')
-        return callback(false)
-      }
-
       if (await ChatService.sendMapMessage(character.getId(), data.message)) {
         return callback(true)
       }
diff --git a/src/server.ts b/src/server.ts
index cbf031f..e3c5f2a 100644
--- a/src/server.ts
+++ b/src/server.ts
@@ -19,7 +19,16 @@ export class Server {
       await Database.initialize()
 
       // Initialize managers
-      await Promise.all([HttpManager.boot(HttpManager.getAppInstance()), SocketManager.boot(HttpManager.getAppInstance(), HttpManager.getServerInstance()), QueueManager.boot(), UserManager.boot(), MapManager.boot(), DateManager.boot(), WeatherManager.boot(), ConsoleManager.boot()])
+      await Promise.all([
+        HttpManager.boot(HttpManager.getAppInstance()),
+        SocketManager.boot(HttpManager.getAppInstance(), HttpManager.getServerInstance()),
+        QueueManager.boot(),
+        UserManager.boot(),
+        MapManager.boot(),
+        DateManager.boot(),
+        WeatherManager.boot(),
+        ConsoleManager.boot()
+      ])
     } catch (error: any) {
       console.error(error)
       this.logger.error(`Server failed to start: ${error.message}`)
diff --git a/src/services/characterMoveService.ts b/src/services/characterMoveService.ts
index 2f1186d..3d15d42 100644
--- a/src/services/characterMoveService.ts
+++ b/src/services/characterMoveService.ts
@@ -118,35 +118,42 @@ class CharacterMoveService extends BaseService {
 
   private findPath(start: Position, end: Position, grid: number[][]): Node[] {
     const openList = new PriorityQueue<Node>((a, b) => a.f - b.f)
-    openList.enqueue({ ...start, g: 0, h: 0, f: 0 })
     const closedSet = new Set<string>()
+
     const getKey = (p: Position) => `${p.positionX},${p.positionY}`
 
-    while (openList.length > 0) {
-      const current = openList.dequeue()
-      if (!current) break
+    openList.enqueue({ ...start, g: 0, h: 0, f: 0 })
 
-      if (current.positionX === end.positionX && current.positionY === end.positionY) {
-        return this.reconstructPath(current)
+    try {
+      while (openList.length > 0) {
+        const current = openList.dequeue()
+        if (!current) break
+
+        if (current.positionX === end.positionX && current.positionY === end.positionY) {
+          return this.reconstructPath(current)
+        }
+
+        closedSet.add(getKey(current))
+
+        const neighbors = this.getValidNeighbors(current, grid, end)
+
+        for (const neighbor of neighbors) {
+          if (closedSet.has(getKey(neighbor))) continue
+
+          const g = current.g + this.getDistance(current, neighbor)
+          const h = this.getDistance(neighbor, end)
+          const f = g + h
+
+          const node: Node = {...neighbor, g, h, f, parent: current}
+          openList.enqueue(node)
+        }
       }
 
-      closedSet.add(getKey(current))
-
-      const neighbors = this.getValidNeighbors(current, grid, end)
-
-      for (const neighbor of neighbors) {
-        if (closedSet.has(getKey(neighbor))) continue
-
-        const g = current.g + this.getDistance(current, neighbor)
-        const h = this.getDistance(neighbor, end)
-        const f = g + h
-
-        const node: Node = { ...neighbor, g, h, f, parent: current }
-        openList.enqueue(node)
-      }
+      return [] // No path found
+    } finally {
+      while(openList.length > 0) openList.dequeue()
+      closedSet.clear()
     }
-
-    return [] // No path found
   }
 
   private getValidNeighbors(current: Position, grid: number[][], end: Position): Position[] {
@@ -159,7 +166,13 @@ class CharacterMoveService extends BaseService {
   }
 
   private isValidPosition(pos: Position, grid: number[][], end: Position): boolean {
-    return pos.positionX >= 0 && pos.positionY >= 0 && pos.positionX < grid[0]!.length && pos.positionY < grid.length && (grid[pos.positionY]![pos.positionX] === 0 || (pos.positionX === end.positionX && pos.positionY === end.positionY))
+    return (
+      pos.positionX >= 0 &&
+      pos.positionY >= 0 &&
+      pos.positionX < grid[0]!.length &&
+      pos.positionY < grid.length &&
+      (grid[pos.positionY]![pos.positionX] === 0 || (pos.positionX === end.positionX && pos.positionY === end.positionY))
+    )
   }
 
   private getDistance(a: Position, b: Position): number {
@@ -179,7 +192,13 @@ class CharacterMoveService extends BaseService {
     return path
   }
 
-  public validateMovementDistance(currentX: number, currentY: number, lastKnownPosition: { x: number; y: number } | null, stepDelay: number, isMoving: boolean): { isValid: boolean; maxAllowedDistance: number; actualDistance: number } {
+  public validateMovementDistance(
+    currentX: number,
+    currentY: number,
+    lastKnownPosition: { x: number; y: number } | null,
+    stepDelay: number,
+    isMoving: boolean
+  ): { isValid: boolean; maxAllowedDistance: number; actualDistance: number } {
     if (!lastKnownPosition || !isMoving) {
       return { isValid: true, maxAllowedDistance: 0, actualDistance: 0 }
     }