summaryrefslogtreecommitdiff
path: root/src/being
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2015-04-09 17:53:52 +0300
committerAndrei Karas <akaras@inbox.ru>2015-04-09 17:53:52 +0300
commit4fe5fd9a471760c8ce54c71c8cdf3f27c8fb27ae (patch)
tree4efae7d8e5ef3f60b5b8dd9231fa2770492908a0 /src/being
parent0de391b6566f347d546be4dc56999b3c502fa46b (diff)
downloadmanaplus-4fe5fd9a471760c8ce54c71c8cdf3f27c8fb27ae.tar.gz
manaplus-4fe5fd9a471760c8ce54c71c8cdf3f27c8fb27ae.tar.bz2
manaplus-4fe5fd9a471760c8ce54c71c8cdf3f27c8fb27ae.tar.xz
manaplus-4fe5fd9a471760c8ce54c71c8cdf3f27c8fb27ae.zip
On skill attacks on target for show effect use skill attribute skillHitEffectId.
Diffstat (limited to 'src/being')
-rw-r--r--src/being/being.cpp28
-rw-r--r--src/being/being.h10
2 files changed, 29 insertions, 9 deletions
diff --git a/src/being/being.cpp b/src/being/being.cpp
index fbdd6fc79..71265d9ac 100644
--- a/src/being/being.cpp
+++ b/src/being/being.cpp
@@ -561,8 +561,11 @@ void Being::setSpeech(const std::string &text, const std::string &channel,
}
}
-void Being::takeDamage(Being *const attacker, const int amount,
- const AttackType::Type type, const int attackId)
+void Being::takeDamage(Being *const attacker,
+ const int amount,
+ const AttackType::Type type,
+ const int attackId,
+ const int level)
{
if (!userPalette || !attacker)
return;
@@ -705,7 +708,10 @@ void Being::takeDamage(Being *const attacker, const int amount,
if (effectManager)
{
- const int hitEffectId = getHitEffect(attacker, type, attackId);
+ const int hitEffectId = getHitEffect(attacker,
+ type,
+ attackId,
+ level);
if (hitEffectId >= 0)
effectManager->trigger(hitEffectId, this);
}
@@ -715,7 +721,9 @@ void Being::takeDamage(Being *const attacker, const int amount,
if (effectManager)
{
const int hitEffectId = getHitEffect(attacker,
- AttackType::MISS, attackId);
+ AttackType::MISS,
+ attackId,
+ level);
if (hitEffectId >= 0)
effectManager->trigger(hitEffectId, this);
}
@@ -724,7 +732,9 @@ void Being::takeDamage(Being *const attacker, const int amount,
}
int Being::getHitEffect(const Being *const attacker,
- const AttackType::Type type, const int attackId) const
+ const AttackType::Type type,
+ const int attackId,
+ const int level) const
{
if (!effectManager)
return 0;
@@ -781,8 +791,14 @@ int Being::getHitEffect(const Being *const attacker,
}
else
{
- // move skills effects to +100000 in effects list
hitEffectId = attackId + 100000;
+ SkillData *const data = skillDialog->getSkillDataByLevel(
+ attackId, level);
+ if (!data)
+ return -1;
+ hitEffectId = data->hitEffectId;
+ if (hitEffectId == -1)
+ hitEffectId = paths.getIntValue("skillHitEffectId");
}
BLOCK_END("Being::getHitEffect")
return hitEffectId;
diff --git a/src/being/being.h b/src/being/being.h
index 23afd549f..767f7f3cd 100644
--- a/src/being/being.h
+++ b/src/being/being.h
@@ -201,8 +201,11 @@ class Being notfinal : public ActorSprite,
* @param type the attack type
* @param id skill id
*/
- void takeDamage(Being *const attacker, const int damage,
- const AttackType::Type type, const int attackId = 1);
+ void takeDamage(Being *const attacker,
+ const int damage,
+ const AttackType::Type type,
+ const int attackId = 1,
+ const int level = 1);
/**
* Handles an attack of another being by this being.
@@ -805,7 +808,8 @@ class Being notfinal : public ActorSprite,
int getHitEffect(const Being *const attacker,
const AttackType::Type type,
- const int attackId) const A_WARN_UNUSED;
+ const int attackId,
+ const int level) const A_WARN_UNUSED;
Cursor::Cursor getHoverCursor() const A_WARN_UNUSED
{ return mInfo ? mInfo->getHoverCursor() : Cursor::CURSOR_POINTER; }