summaryrefslogtreecommitdiff
path: root/src/gui
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/widgets/skillinfo.cpp2
-rw-r--r--src/gui/widgets/skillinfo.h2
-rw-r--r--src/gui/windows/skilldialog.cpp28
-rw-r--r--src/gui/windows/skilldialog.h6
4 files changed, 38 insertions, 0 deletions
diff --git a/src/gui/widgets/skillinfo.cpp b/src/gui/widgets/skillinfo.cpp
index 6aef016e5..864d973ea 100644
--- a/src/gui/widgets/skillinfo.cpp
+++ b/src/gui/widgets/skillinfo.cpp
@@ -54,6 +54,8 @@ SkillInfo::SkillInfo() :
duration(0),
durationTime(0),
cooldown(0),
+ castingSrcEffectId(-1),
+ castingDstEffectId(-1),
type(SkillType::Unknown),
owner(SkillOwner::Player),
modifiable(false),
diff --git a/src/gui/widgets/skillinfo.h b/src/gui/widgets/skillinfo.h
index 4ab0331af..3e4d99820 100644
--- a/src/gui/widgets/skillinfo.h
+++ b/src/gui/widgets/skillinfo.h
@@ -62,6 +62,8 @@ struct SkillInfo final
int duration;
int durationTime;
int cooldown;
+ int castingSrcEffectId;
+ int castingDstEffectId;
SkillType::SkillType type;
SkillOwner::Type owner;
bool modifiable;
diff --git a/src/gui/windows/skilldialog.cpp b/src/gui/windows/skilldialog.cpp
index 04d883402..31cf81ad4 100644
--- a/src/gui/windows/skilldialog.cpp
+++ b/src/gui/windows/skilldialog.cpp
@@ -325,6 +325,10 @@ void SkillDialog::loadXmlFile(const std::string &fileName)
node, "errorText", name);
skill->alwaysVisible = XML::getBoolProperty(
node, "alwaysVisible", false);
+ skill->castingSrcEffectId = XML::getProperty(
+ node, "castingSrcEffectId", -1);
+ skill->castingDstEffectId = XML::getProperty(
+ node, "castingDstEffectId", -1);
skill->visible = skill->alwaysVisible;
model->addSkill(skill);
mSkills[id] = skill;
@@ -614,6 +618,30 @@ void SkillDialog::playRemoveEffect(const int id) const
paths.getIntValue("skillRemoveEffectId"));
}
+void SkillDialog::playCastingSrcEffect(const int id, Being *const being) const
+{
+ if (!effectManager)
+ return;
+ SkillInfo *const info = getSkill(id);
+ if (!info)
+ return;
+ effectManager->triggerDefault(info->castingSrcEffectId,
+ being,
+ paths.getIntValue("skillCastingSrcEffectId"));
+}
+
+void SkillDialog::playCastingDstEffect(const int id, Being *const being) const
+{
+ if (!effectManager)
+ return;
+ SkillInfo *const info = getSkill(id);
+ if (!info)
+ return;
+ effectManager->triggerDefault(info->castingDstEffectId,
+ being,
+ paths.getIntValue("skillCastingDstEffectId"));
+}
+
void SkillDialog::useSkill(const SkillInfo *const info)
{
const SkillData *const data = info->data;
diff --git a/src/gui/windows/skilldialog.h b/src/gui/windows/skilldialog.h
index 0b2180191..9388e96cb 100644
--- a/src/gui/windows/skilldialog.h
+++ b/src/gui/windows/skilldialog.h
@@ -120,6 +120,12 @@ class SkillDialog final : public Window,
void playRemoveEffect(const int id) const;
+ void playCastingSrcEffect(const int id,
+ Being *const being) const;
+
+ void playCastingDstEffect(const int id,
+ Being *const being) const;
+
void slowLogic();
void removeSkill(const int id);