diff options
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/widgets/skilldata.cpp | 1 | ||||
-rw-r--r-- | src/gui/widgets/skilldata.h | 1 | ||||
-rw-r--r-- | src/gui/windows/skilldialog.cpp | 10 |
3 files changed, 12 insertions, 0 deletions
diff --git a/src/gui/widgets/skilldata.cpp b/src/gui/widgets/skilldata.cpp index 0d8b2b7a9..66c0da2fe 100644 --- a/src/gui/widgets/skilldata.cpp +++ b/src/gui/widgets/skilldata.cpp @@ -38,6 +38,7 @@ SkillData::SkillData() : description(), icon(nullptr), particle(), + invokeCmd(), soundHit(std::string(), 0), soundMiss(std::string(), 0) { diff --git a/src/gui/widgets/skilldata.h b/src/gui/widgets/skilldata.h index eb8de62f6..6839a427a 100644 --- a/src/gui/widgets/skilldata.h +++ b/src/gui/widgets/skilldata.h @@ -36,6 +36,7 @@ struct SkillData final Image *icon; std::string particle; + std::string invokeCmd; SoundInfo soundHit; SoundInfo soundMiss; diff --git a/src/gui/windows/skilldialog.cpp b/src/gui/windows/skilldialog.cpp index 5ae89301a..bceb8645c 100644 --- a/src/gui/windows/skilldialog.cpp +++ b/src/gui/windows/skilldialog.cpp @@ -25,6 +25,7 @@ #include "configuration.h" #include "effectmanager.h" #include "itemshortcut.h" +#include "spellmanager.h" #include "being/attributes.h" #include "being/localplayer.h" @@ -361,6 +362,8 @@ void SkillDialog::loadXmlFile(const std::string &fileName) node, "soundMiss", ""); data->soundMiss.delay = XML::getProperty( node, "soundMissDelay", 0); + data->invokeCmd = XML::getProperty( + node, "invokeCmd", ""); skill->addData(level, data); } @@ -565,6 +568,13 @@ void SkillDialog::playUpdateEffect(const int id) const void SkillDialog::useSkill(const SkillInfo *const info) { + const SkillData *const data = info->data; + if (data) + { + const std::string cmd = data->invokeCmd; + if (!cmd.empty()) + SpellManager::invokeCommand(cmd, localPlayer->getTarget()); + } if (info && localPlayer) { switch (info->type) |