diff --git a/src/engines/nwn/gui/chargen/charattributes.cpp b/src/engines/nwn/gui/chargen/charattributes.cpp index 458c5f0a73..645a0a4412 100644 --- a/src/engines/nwn/gui/chargen/charattributes.cpp +++ b/src/engines/nwn/gui/chargen/charattributes.cpp @@ -220,7 +220,7 @@ void CharAttributes::hide() { // Get previous choice. uint sum = 0; for (size_t ab = 0; ab < 6; ++ab) { - _attributes[ab] = _choices->getAbility(ab); + _attributes[ab] = _choices->getAbility(static_cast(ab)); sum += _attributes[ab]; } _pointLeft = 0; diff --git a/src/engines/nwn/gui/chargen/chargenchoices.cpp b/src/engines/nwn/gui/chargen/chargenchoices.cpp index 175aab2cbd..f7cb556bef 100644 --- a/src/engines/nwn/gui/chargen/chargenchoices.cpp +++ b/src/engines/nwn/gui/chargen/chargenchoices.cpp @@ -376,19 +376,18 @@ bool CharGenChoices::getAlign(uint8 &goodness, uint8 &loyalty) const { return true; } -uint8 CharGenChoices::getAbility(size_t ability) const { +uint8 CharGenChoices::getAbility(Ability ability) const { return _abilities[ability]; } -uint8 CharGenChoices::getTotalAbility(size_t ability) const { +uint8 CharGenChoices::getTotalAbility(Ability ability) const { return _abilities[ability] + _racialAbilities[ability]; } -int32 CharGenChoices::getAbilityModifier(Ability ability) { - uint32 totalAbility = _abilities[ability] + _racialAbilities[ability]; - totalAbility -= 6; - int32 modifier = (totalAbility - totalAbility % 2) / 2; - modifier -= 2; +int8 CharGenChoices::getAbilityModifier(Ability ability) { + uint8 totalAbility = getTotalAbility(ability); + int8 modifier = (totalAbility - totalAbility % 2) / 2; + modifier -= 5; return modifier; } @@ -396,7 +395,7 @@ uint8 CharGenChoices::getPackage() const { return _package; } -uint32 CharGenChoices::getSpellSchool() const { +uint8 CharGenChoices::getSpellSchool() const { return _spellSchool; } diff --git a/src/engines/nwn/gui/chargen/chargenchoices.h b/src/engines/nwn/gui/chargen/chargenchoices.h index af6470d522..20f5d12cab 100644 --- a/src/engines/nwn/gui/chargen/chargenchoices.h +++ b/src/engines/nwn/gui/chargen/chargenchoices.h @@ -72,12 +72,12 @@ class CharGenChoices { uint32 getClass() const; uint32 getRace() const; bool getAlign(uint8 &goodness, uint8 &loyalty) const; - uint8 getAbility(size_t ability) const; - uint8 getTotalAbility(size_t ability) const; - int32 getAbilityModifier(Ability ability); + uint8 getAbility(Ability ability) const; + uint8 getTotalAbility(Ability ability) const; + int8 getAbilityModifier(Ability ability); std::vector getFeats(); uint8 getPackage() const; - uint32 getSpellSchool() const; + uint8 getSpellSchool() const; private: Creature *_creature; diff --git a/src/engines/nwn/gui/chargen/charschool.cpp b/src/engines/nwn/gui/chargen/charschool.cpp index 0fdb0c69ac..4ef024c1e2 100644 --- a/src/engines/nwn/gui/chargen/charschool.cpp +++ b/src/engines/nwn/gui/chargen/charschool.cpp @@ -75,7 +75,7 @@ void CharSchool::hide() { if (_returnCode == 1) { // Set previous choice if any. if (_choices->getSpellSchool() < UINT8_MAX) - _buttons->setActive(_choices->getSpellSchool()); + _buttons->setActive((size_t) _choices->getSpellSchool()); } } diff --git a/src/engines/nwn/gui/chargen/charspells.cpp b/src/engines/nwn/gui/chargen/charspells.cpp index bdd83c6cd4..7b89885ac4 100644 --- a/src/engines/nwn/gui/chargen/charspells.cpp +++ b/src/engines/nwn/gui/chargen/charspells.cpp @@ -354,7 +354,7 @@ void CharSpells::makeSpellsList() { for (size_t ab = 0; ab < twodaAbilities.getRowCount(); ++ab) { const Aurora::TwoDARow &abilityRow = twodaAbilities.getRow(ab); if (abilityStr.toLower() == abilityRow.getString("Label").toLower()) { - _abilityLimit = _choices->getTotalAbility(ab) - 10U; + _abilityLimit = _choices->getTotalAbility(static_cast(ab)) - 10U; break; } }