Skip to content

Commit

Permalink
Fix monster int sizes (diasurgical#37)
Browse files Browse the repository at this point in the history
* Rebalance monsters

* Fix int sizes
  • Loading branch information
kphoenix137 committed Apr 6, 2024
1 parent d61096d commit bff3d1a
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 25 deletions.
26 changes: 13 additions & 13 deletions Source/loadsave.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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<uint8_t>();
monster.toHit = file->NextLE<uint16_t>();
else
file->Skip(1); // Skip hit as it's already initialized
monster.minDamage = file->NextLE<uint8_t>();
monster.maxDamage = file->NextLE<uint8_t>();
monster.minDamage = file->NextLE<uint16_t>();
monster.maxDamage = file->NextLE<uint16_t>();
file->Skip(1); // Skip toHitSpecial as it's already initialized
monster.minDamageSpecial = file->NextLE<uint8_t>();
monster.maxDamageSpecial = file->NextLE<uint8_t>();
monster.armorClass = file->NextLE<uint8_t>();
monster.minDamageSpecial = file->NextLE<uint16_t>();
monster.maxDamageSpecial = file->NextLE<uint16_t>();
monster.armorClass = file->NextLE<uint16_t>();
file->Skip(1); // Alignment
monster.resistance = file->NextLE<uint16_t>();
file->Skip(2); // Alignment
Expand Down Expand Up @@ -1430,13 +1430,13 @@ void SaveMonster(SaveHelper *file, Monster &monster)
file->Skip(1); // Alignment
file->WriteLE<uint16_t>(static_cast<uint16_t>(std::min<unsigned>(std::numeric_limits<uint16_t>::max(), monster.exp(sgGameInitInfo.nDifficulty))));

file->WriteLE<uint8_t>(static_cast<uint8_t>(std::min<uint16_t>(monster.toHit, std::numeric_limits<uint8_t>::max()))); // For backwards compatibility
file->WriteLE<uint8_t>(monster.minDamage);
file->WriteLE<uint8_t>(monster.maxDamage);
file->WriteLE<uint8_t>(static_cast<uint8_t>(std::min<uint16_t>(monster.toHitSpecial(sgGameInitInfo.nDifficulty), std::numeric_limits<uint8_t>::max()))); // For backwards compatibility
file->WriteLE<uint8_t>(monster.minDamageSpecial);
file->WriteLE<uint8_t>(monster.maxDamageSpecial);
file->WriteLE<uint8_t>(monster.armorClass);
file->WriteLE<uint16_t>(static_cast<uint8_t>(std::min<uint16_t>(monster.toHit, std::numeric_limits<uint8_t>::max()))); // For backwards compatibility
file->WriteLE<uint16_t>(monster.minDamage);
file->WriteLE<uint16_t>(monster.maxDamage);
file->WriteLE<uint16_t>(static_cast<uint8_t>(std::min<uint16_t>(monster.toHitSpecial(sgGameInitInfo.nDifficulty), std::numeric_limits<uint8_t>::max()))); // For backwards compatibility
file->WriteLE<uint16_t>(monster.minDamageSpecial);
file->WriteLE<uint16_t>(monster.maxDamageSpecial);
file->WriteLE<uint16_t>(monster.armorClass);
file->Skip(1); // Alignment
file->WriteLE<uint16_t>(monster.resistance);
file->Skip(2); // Alignment
Expand Down
14 changes: 7 additions & 7 deletions Source/monstdat.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
10 changes: 5 additions & 5 deletions Source/monster.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down

0 comments on commit bff3d1a

Please sign in to comment.