summaryrefslogtreecommitdiff
path: root/src/gui
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/widgets/skilldata.cpp1
-rw-r--r--src/gui/widgets/skilldata.h1
-rw-r--r--src/gui/windows/skilldialog.cpp10
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)