diff options
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/widgets/skillinfo.cpp | 2 | ||||
-rw-r--r-- | src/gui/widgets/skillinfo.h | 2 | ||||
-rw-r--r-- | src/gui/windows/skilldialog.cpp | 28 | ||||
-rw-r--r-- | src/gui/windows/skilldialog.h | 6 |
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); |