diff --git a/src/game/server/ServerWorld.cpp b/src/game/server/ServerWorld.cpp index 96a0cae..70fe3ed 100644 --- a/src/game/server/ServerWorld.cpp +++ b/src/game/server/ServerWorld.cpp @@ -22,14 +22,20 @@ void ServerWorld::spawnMobs(game::MobType type, std::uint8_t level, game::Player enemyMobSpawn = &getTeam(game::TeamColor::Red).getSpawn(); } - std::int32_t spawnCenterX = enemyMobSpawn->getCenterX(); - std::int32_t spawnCenterY = enemyMobSpawn->getCenterY(); + float spawnWidth = enemyMobSpawn->getWidth(); + float spawnHeight = enemyMobSpawn->getHeight(); - std::int32_t minSpawnY = spawnCenterY - 2; - std::int32_t maxSpawnY = spawnCenterY + 2; + float spawnCenterX = enemyMobSpawn->getCenterX(); + float spawnCenterY = enemyMobSpawn->getCenterY(); - std::int32_t minSpawnX = spawnCenterX - 2; - std::int32_t maxSpawnX = spawnCenterX + 2; + auto mobStats = getMobStats(type, level); + auto mobSize = mobStats->getSize(); + + float minSpawnX = spawnCenterX - spawnWidth / 2.0f + mobSize.x / 2.0f; + float maxSpawnX = spawnCenterX + spawnWidth / 2.0f - mobSize.x / 2.0f; + + float minSpawnY = spawnCenterY - spawnHeight / 2.0f + mobSize.y / 2.0f; + float maxSpawnY = spawnCenterY + spawnHeight / 2.0f - mobSize.y / 2.0f; float mobX = utils::getRandomReal(minSpawnX, maxSpawnX); float mobY = utils::getRandomReal(minSpawnY, maxSpawnY);