Skip to content

Commit

Permalink
Use default 200 max monsters
Browse files Browse the repository at this point in the history
  • Loading branch information
kphoenix137 committed Jan 19, 2025
1 parent 6e84133 commit 761321d
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 33 deletions.
44 changes: 13 additions & 31 deletions Source/monster.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2278,8 +2278,7 @@ void LeoricAi(Monster &monster)
&& ((distanceToEnemy >= 3 && v < 4 * monster.intelligence + 35) || v < 6)
&& LineClearMissile(monster.position.tile, monster.enemyPosition)) {
Point newPosition = monster.position.tile + md;
const int maxMonsters = gbIsMultiplayer ? MaxMonsters : MaxMonstersSp;
if (IsTileAvailable(monster, newPosition) && ActiveMonsterCount < maxMonsters) {
if (IsTileAvailable(monster, newPosition) && ActiveMonsterCount < MaxMonsters) {
auto typeIndex = GetRandomSkeletonTypeIndex();
if (typeIndex) {
SpawnMonster(newPosition, md, *typeIndex, true);
Expand Down Expand Up @@ -2910,8 +2909,7 @@ void HorkDemonAi(Monster &monster)
if (monster.goal == MonsterGoal::Normal) {
if ((distanceToEnemy >= 3) && v < 2 * monster.intelligence + 43) {
Point position = monster.position.tile + monster.direction;
const int maxMonsters = gbIsMultiplayer ? MaxMonsters : MaxMonstersSp;
if (IsTileAvailable(monster, position) && ActiveMonsterCount < maxMonsters) {
if (IsTileAvailable(monster, position) && ActiveMonsterCount < MaxMonsters) {
StartRangedSpecialAttack(monster, MissileID::HorkSpawn, 0);
}
} else if (distanceToEnemy < 2) {
Expand Down Expand Up @@ -3118,9 +3116,8 @@ MonsterSpritesData LoadMonsterSpritesData(const MonsterData &monsterData)

void EnsureMonsterIndexIsActive(size_t monsterId)
{
const int maxMonsters = gbIsMultiplayer ? MaxMonsters : MaxMonstersSp;
assert(monsterId < maxMonsters);
for (size_t index = 0; index < maxMonsters; index++) {
assert(monsterId < MaxMonsters);
for (size_t index = 0; index < MaxMonsters; index++) {
if (ActiveMonsters[index] != monsterId)
continue;
if (index < ActiveMonsterCount)
Expand Down Expand Up @@ -3266,9 +3263,7 @@ void InitLevelMonsters()
ClrAllMonsters();
ActiveMonsterCount = 0;

const int maxMonsters = gbIsMultiplayer ? MaxMonsters : MaxMonstersSp;

totalmonsters = maxMonsters;
totalmonsters = MaxMonsters;

std::iota(std::begin(ActiveMonsters), std::end(ActiveMonsters), 0u);
uniquetrans = 0;
Expand Down Expand Up @@ -3326,8 +3321,7 @@ tl::expected<void, std::string> GetLevelMTypes()
RETURN_IF_ERROR(AddMonsterType(skeltypes[GenerateRnd(skeletonTypeCount)], PLACE_SCATTER));
}

const int maxMonsters = gbIsMultiplayer ? MaxMonsters : MaxMonstersSp;
std::vector<_monster_id> typelist(maxMonsters);
std::vector<_monster_id> typelist(MaxMonsters);

int nt = 0;
for (int i = MT_NZOMBIE; i < NUM_MTYPES; i++) {
Expand Down Expand Up @@ -3561,10 +3555,8 @@ tl::expected<void, std::string> InitMonsters()
if (gbIsMultiplayer)
numplacemonsters += numplacemonsters / 2;

const int maxMonsters = gbIsMultiplayer ? MaxMonsters : MaxMonstersSp;

if (ActiveMonsterCount + numplacemonsters > maxMonsters - 10)
numplacemonsters = maxMonsters - 10 - ActiveMonsterCount;
if (ActiveMonsterCount + numplacemonsters > MaxMonsters - 10)
numplacemonsters = MaxMonsters - 10 - ActiveMonsterCount;
totalmonsters = ActiveMonsterCount + numplacemonsters;
int numscattypes = 0;
size_t scattertypes[NUM_MTYPES];
Expand Down Expand Up @@ -3628,9 +3620,7 @@ tl::expected<void, std::string> SetMapMonsters(const uint16_t *dunData, Point st

Monster *AddMonster(Point position, Direction dir, size_t typeIndex, bool inMap)
{
const int maxMonsters = gbIsMultiplayer ? MaxMonsters : MaxMonstersSp;

if (ActiveMonsterCount < maxMonsters) {
if (ActiveMonsterCount < MaxMonsters) {
Monster &monster = Monsters[ActiveMonsters[ActiveMonsterCount++]];
if (inMap)
monster.occupyTile(position, false);
Expand All @@ -3643,9 +3633,7 @@ Monster *AddMonster(Point position, Direction dir, size_t typeIndex, bool inMap)

void SpawnMonster(Point position, Direction dir, size_t typeIndex, bool startSpecialStand /*= false*/)
{
const int maxMonsters = gbIsMultiplayer ? MaxMonsters : MaxMonstersSp;

if (ActiveMonsterCount >= maxMonsters)
if (ActiveMonsterCount >= MaxMonsters)
return;

// The command is only executed for the level owner, to prevent desyncs in multiplayer.
Expand Down Expand Up @@ -4058,9 +4046,7 @@ void ProcessMonsters()
{
DeleteMonsterList();

const int maxMonsters = gbIsMultiplayer ? MaxMonsters : MaxMonstersSp;

assert(ActiveMonsterCount <= maxMonsters);
assert(ActiveMonsterCount <= MaxMonsters);
for (size_t i = 0; i < ActiveMonsterCount; i++) {
Monster &monster = Monsters[ActiveMonsters[i]];
FollowTheLeader(monster);
Expand Down Expand Up @@ -4097,9 +4083,7 @@ void ProcessMonsters()
}

if ((monster.flags & MFLAG_TARGETS_MONSTER) != 0) {
const int maxMonsters = gbIsMultiplayer ? MaxMonsters : MaxMonstersSp;

assert(monster.enemy >= 0 && monster.enemy < maxMonsters);
assert(monster.enemy >= 0 && monster.enemy < MaxMonsters);
// BUGFIX: enemy target may be dead at time of access, thus reading garbage data from `Monsters[monster.enemy].position.future`.
monster.position.last = Monsters[monster.enemy].position.future;
monster.enemyPosition = monster.position.last;
Expand Down Expand Up @@ -4457,9 +4441,7 @@ void PlayEffect(Monster &monster, MonsterSound mode)

void MissToMonst(Missile &missile, Point position)
{
const int maxMonsters = gbIsMultiplayer ? MaxMonsters : MaxMonstersSp;

assert(static_cast<size_t>(missile._misource) < maxMonsters);
assert(static_cast<size_t>(missile._misource) < MaxMonsters);
Monster &monster = Monsters[missile._misource];

Point oldPosition = missile.position.tile;
Expand Down
3 changes: 1 addition & 2 deletions Source/monster.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,7 @@ namespace devilution {
struct Missile;
struct Player;

constexpr size_t MaxMonstersSp = 200;
constexpr size_t MaxMonsters = 204;
constexpr size_t MaxMonsters = 200;
constexpr size_t MaxLvlMTypes = 24;

enum monster_flag : uint16_t {
Expand Down

0 comments on commit 761321d

Please sign in to comment.