diff --git a/Source/loadsave.cpp b/Source/loadsave.cpp index dcea5e69035..f132e26af57 100644 --- a/Source/loadsave.cpp +++ b/Source/loadsave.cpp @@ -645,15 +645,15 @@ void LoadMonster(LoadHelper *file, Monster &monster) file->Skip(2); // Skip exp - now calculated from monstdat when the monster dies if (monster.isPlayerMinion()) // Don't skip for golems - monster.toHit = file->NextLE(); + monster.toHit = file->NextLE(); else file->Skip(1); // Skip hit as it's already initialized - monster.minDamage = file->NextLE(); - monster.maxDamage = file->NextLE(); + monster.minDamage = file->NextLE(); + monster.maxDamage = file->NextLE(); file->Skip(1); // Skip toHitSpecial as it's already initialized - monster.minDamageSpecial = file->NextLE(); - monster.maxDamageSpecial = file->NextLE(); - monster.armorClass = file->NextLE(); + monster.minDamageSpecial = file->NextLE(); + monster.maxDamageSpecial = file->NextLE(); + monster.armorClass = file->NextLE(); file->Skip(1); // Alignment monster.resistance = file->NextLE(); file->Skip(2); // Alignment @@ -1430,13 +1430,13 @@ void SaveMonster(SaveHelper *file, Monster &monster) file->Skip(1); // Alignment file->WriteLE(static_cast(std::min(std::numeric_limits::max(), monster.exp(sgGameInitInfo.nDifficulty)))); - file->WriteLE(static_cast(std::min(monster.toHit, std::numeric_limits::max()))); // For backwards compatibility - file->WriteLE(monster.minDamage); - file->WriteLE(monster.maxDamage); - file->WriteLE(static_cast(std::min(monster.toHitSpecial(sgGameInitInfo.nDifficulty), std::numeric_limits::max()))); // For backwards compatibility - file->WriteLE(monster.minDamageSpecial); - file->WriteLE(monster.maxDamageSpecial); - file->WriteLE(monster.armorClass); + file->WriteLE(static_cast(std::min(monster.toHit, std::numeric_limits::max()))); // For backwards compatibility + file->WriteLE(monster.minDamage); + file->WriteLE(monster.maxDamage); + file->WriteLE(static_cast(std::min(monster.toHitSpecial(sgGameInitInfo.nDifficulty), std::numeric_limits::max()))); // For backwards compatibility + file->WriteLE(monster.minDamageSpecial); + file->WriteLE(monster.maxDamageSpecial); + file->WriteLE(monster.armorClass); file->Skip(1); // Alignment file->WriteLE(monster.resistance); file->Skip(2); // Alignment diff --git a/Source/monstdat.h b/Source/monstdat.h index 24cf631bc07..0469571c42f 100644 --- a/Source/monstdat.h +++ b/Source/monstdat.h @@ -112,15 +112,15 @@ struct MonsterData { */ uint16_t abilityFlags; uint8_t intelligence; - uint8_t toHit; + uint16_t toHit; int8_t animFrameNum; - uint8_t minDamage; - uint8_t maxDamage; - uint8_t toHitSpecial; + uint16_t minDamage; + uint16_t maxDamage; + uint16_t toHitSpecial; int8_t animFrameNumSpecial; - uint8_t minDamageSpecial; - uint8_t maxDamageSpecial; - uint8_t armorClass; + uint16_t minDamageSpecial; + uint16_t maxDamageSpecial; + uint16_t armorClass; MonsterClass monsterClass; /** Using monster_resistance as bitflags */ uint8_t resistance; diff --git a/Source/monster.h b/Source/monster.h index 8e1315296e6..b652af01892 100644 --- a/Source/monster.h +++ b/Source/monster.h @@ -271,11 +271,11 @@ struct Monster { // note: missing field _mAFNum uint8_t uniqTrans; int8_t corpseId; int8_t whoHit; - uint8_t minDamage; - uint8_t maxDamage; - uint8_t minDamageSpecial; - uint8_t maxDamageSpecial; - uint8_t armorClass; + uint16_t minDamage; + uint16_t maxDamage; + uint16_t minDamageSpecial; + uint16_t maxDamageSpecial; + uint16_t armorClass; uint8_t leader; LeaderRelation leaderRelation; uint8_t packSize;