mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-01-21 09:23:51 +00:00
Merge branch 'Fix-Trainers-Issue-5486' into 'master'
Trainers training skills based on base skill issue #5486 See merge request OpenMW/openmw!257
This commit is contained in:
commit
41434f26a6
7 changed files with 54 additions and 2 deletions
|
@ -43,6 +43,7 @@
|
|||
Feature #5362: Show the soul gems' trapped soul in count dialog
|
||||
Feature #5445: Handle NiLines
|
||||
Feature #5457: Realistic diagonal movement
|
||||
Feature #5486: Fixes trainers to choose their training skills based on their base skill points
|
||||
Task #5480: Drop Qt4 support
|
||||
|
||||
0.46.0
|
||||
|
|
|
@ -90,6 +90,7 @@ bool Launcher::AdvancedPage::loadSettings()
|
|||
loadSettingBool(shieldSheathingCheckBox, "shield sheathing", "Game");
|
||||
}
|
||||
loadSettingBool(uncappedDamageFatigueCheckBox, "uncapped damage fatigue", "Game");
|
||||
loadSettingBool(trainersTrainingSkillsBasedOnBaseSkillCheckBox, "trainers training skills based on base skill", "Game");
|
||||
|
||||
// Input Settings
|
||||
loadSettingBool(grabCursorCheckBox, "grab cursor", "Input");
|
||||
|
@ -155,6 +156,7 @@ void Launcher::AdvancedPage::saveSettings()
|
|||
saveSettingBool(weaponSheathingCheckBox, "weapon sheathing", "Game");
|
||||
saveSettingBool(shieldSheathingCheckBox, "shield sheathing", "Game");
|
||||
saveSettingBool(uncappedDamageFatigueCheckBox, "uncapped damage fatigue", "Game");
|
||||
saveSettingBool(trainersTrainingSkillsBasedOnBaseSkillCheckBox, "trainers training skills based on base skill", "Game");
|
||||
|
||||
// Input Settings
|
||||
saveSettingBool(grabCursorCheckBox, "grab cursor", "Input");
|
||||
|
|
|
@ -14,6 +14,8 @@
|
|||
#include "../mwmechanics/npcstats.hpp"
|
||||
#include "../mwmechanics/actorutil.hpp"
|
||||
|
||||
#include <components/settings/settings.hpp>
|
||||
|
||||
#include "tooltips.hpp"
|
||||
|
||||
namespace
|
||||
|
@ -40,6 +42,7 @@ namespace MWGui
|
|||
TrainingWindow::TrainingWindow()
|
||||
: WindowBase("openmw_trainingwindow.layout")
|
||||
, mTimeAdvancer(0.05f)
|
||||
, mTrainingSkillBasedOnBaseSkill(Settings::Manager::getBool("trainers training skills based on base skill", "Game"))
|
||||
{
|
||||
getWidget(mTrainingOptions, "TrainingOptions");
|
||||
getWidget(mCancelButton, "CancelButton");
|
||||
|
@ -76,9 +79,10 @@ namespace MWGui
|
|||
// NPC can train you in his best 3 skills
|
||||
std::vector< std::pair<int, float> > skills;
|
||||
|
||||
MWMechanics::NpcStats const& actorStats(actor.getClass().getNpcStats(actor));
|
||||
for (int i=0; i<ESM::Skill::Length; ++i)
|
||||
{
|
||||
float value = actor.getClass().getSkill(actor, i);
|
||||
float value = getSkillForTraining(actorStats, i);
|
||||
|
||||
skills.push_back(std::make_pair(i, value));
|
||||
}
|
||||
|
@ -140,7 +144,7 @@ namespace MWGui
|
|||
if (price > player.getClass().getContainerStore(player).count(MWWorld::ContainerStore::sGoldId))
|
||||
return;
|
||||
|
||||
if (mPtr.getClass().getSkill(mPtr, skillId) <= pcStats.getSkill (skillId).getBase ())
|
||||
if (getSkillForTraining(mPtr.getClass().getNpcStats(mPtr), skillId) <= pcStats.getSkill(skillId).getBase())
|
||||
{
|
||||
MWBase::Environment::get().getWindowManager()->messageBox ("#{sServiceTrainingWords}");
|
||||
return;
|
||||
|
@ -195,6 +199,13 @@ namespace MWGui
|
|||
MWBase::Environment::get().getWindowManager()->exitCurrentGuiMode();
|
||||
}
|
||||
|
||||
float TrainingWindow::getSkillForTraining(const MWMechanics::NpcStats& stats, int skillId) const
|
||||
{
|
||||
if (mTrainingSkillBasedOnBaseSkill)
|
||||
return stats.getSkill(skillId).getBase();
|
||||
return stats.getSkill(skillId).getModified();
|
||||
}
|
||||
|
||||
void TrainingWindow::onFrame(float dt)
|
||||
{
|
||||
checkReferenceAvailable();
|
||||
|
|
|
@ -6,6 +6,11 @@
|
|||
#include "timeadvancer.hpp"
|
||||
#include "waitdialog.hpp"
|
||||
|
||||
namespace MWMechanics
|
||||
{
|
||||
class NpcStats;
|
||||
}
|
||||
|
||||
namespace MWGui
|
||||
{
|
||||
|
||||
|
@ -35,12 +40,17 @@ namespace MWGui
|
|||
void onTrainingProgressChanged(int cur, int total);
|
||||
void onTrainingFinished();
|
||||
|
||||
// Retrieve the base skill value if the setting 'training skills based on base skill' is set;
|
||||
// otherwise returns the modified skill
|
||||
float getSkillForTraining(const MWMechanics::NpcStats& stats, int skillId) const;
|
||||
|
||||
MyGUI::Widget* mTrainingOptions;
|
||||
MyGUI::Button* mCancelButton;
|
||||
MyGUI::TextBox* mPlayerGold;
|
||||
|
||||
WaitDialogProgressBar mProgressBar;
|
||||
TimeAdvancer mTimeAdvancer;
|
||||
bool mTrainingSkillBasedOnBaseSkill; //corresponds to the setting 'training skills based on base skill'
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -330,3 +330,18 @@ If disabled then the whole character's body is pointed to the direction of view.
|
|||
If enabled then the character turns lower body to the direction of movement. Upper body is turned partially. Head is always pointed to the direction of view. In combat mode it works only for diagonal movement. In non-combat mode it also changes straight right and straight left movement.
|
||||
|
||||
This setting can only be configured by editing the settings configuration file.
|
||||
|
||||
trainers training skills based on base skill
|
||||
-----------------------
|
||||
|
||||
:Type: boolean
|
||||
:Range: True/False
|
||||
:Default: False
|
||||
|
||||
The trainers in Morrowind choose their proposed training skills based on their 3 best attributes.
|
||||
|
||||
If disabled then the 3 best skills of trainers and the training limits take into account fortified/drained trainer skill.
|
||||
|
||||
If enabled then the 3 best skills of trainers and the training limits are based on the trainer base skills.
|
||||
|
||||
This setting can be controlled in Advanced tab of the launcher.
|
||||
|
|
|
@ -310,6 +310,9 @@ uncapped damage fatigue = false
|
|||
# Turn lower body to movement direction. 'true' makes diagonal movement more realistic.
|
||||
turn to movement direction = false
|
||||
|
||||
# Make the training skills proposed by a trainer based on its base attribute instead of its modified ones
|
||||
trainers training skills based on base skill = false
|
||||
|
||||
[General]
|
||||
|
||||
# Anisotropy reduces distortion in textures at low angles (e.g. 0 to 16).
|
||||
|
|
|
@ -236,6 +236,16 @@
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="trainersTrainingSkillsBasedOnBaseSkillCheckBox">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Trainers now only choose which skills to train using their base skill points, allowing mercantile improving effects to be used without making mercantile an offered skill.</p></body></html></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Trainers choose their training skills based on their base skill points</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
|
|
Loading…
Reference in a new issue