summaryrefslogtreecommitdiff
path: root/src/game-server/monster.cpp
diff options
context:
space:
mode:
authorYohann Ferreira <yohann_dot_ferreira_at_orange_dot_efer>2011-09-28 23:39:01 +0200
committerYohann Ferreira <yohann_dot_ferreira_at_orange_dot_efer>2011-09-28 23:39:01 +0200
commit77ea3d90114a7d6503d19e89ffaf2e548f63e420 (patch)
treef92edc2775fde07a7b9df4ccf7c8f70f436c2c13 /src/game-server/monster.cpp
parent60b44b8efa96d318fb22077011f2ccb5d2f03104 (diff)
downloadmanaserv-77ea3d90114a7d6503d19e89ffaf2e548f63e420.tar.gz
manaserv-77ea3d90114a7d6503d19e89ffaf2e548f63e420.tar.bz2
manaserv-77ea3d90114a7d6503d19e89ffaf2e548f63e420.tar.xz
manaserv-77ea3d90114a7d6503d19e89ffaf2e548f63e420.zip
Started to fix the autoattack system.
I simply made the default autoattack look for the default skill and add exp to it when killing monsters. Now the player can earn xp again even if it's not well handled between two logins.
Diffstat (limited to 'src/game-server/monster.cpp')
-rw-r--r--src/game-server/monster.cpp25
1 files changed, 9 insertions, 16 deletions
diff --git a/src/game-server/monster.cpp b/src/game-server/monster.cpp
index d0c55073..0f387917 100644
--- a/src/game-server/monster.cpp
+++ b/src/game-server/monster.cpp
@@ -131,7 +131,8 @@ void Monster::perform()
{
setTimerHard(T_M_ATTACK_TIME, mCurrentAttack->aftDelay
+ mCurrentAttack->preDelay);
- Damage dmg(getModifiedAttribute(MOB_ATTR_PHY_ATK_MIN) *
+ Damage dmg(0,
+ getModifiedAttribute(MOB_ATTR_PHY_ATK_MIN) *
mCurrentAttack->damageFactor,
getModifiedAttribute(MOB_ATTR_PHY_ATK_DELTA) *
mCurrentAttack->damageFactor,
@@ -421,22 +422,14 @@ int Monster::damage(Actor *source, const Damage &damage)
{
Character *s = static_cast< Character * >(source);
- std::list<size_t>::const_iterator iSkill;
- for (iSkill = damage.usedSkills.begin();
- iSkill != damage.usedSkills.end(); ++iSkill)
+ mExpReceivers[s].insert(damage.skill);
+ if (!isTimerRunning(T_M_KILLSTEAL_PROTECTED) || mOwner == s
+ || mOwner->getParty() == s->getParty())
{
- if (*iSkill)
- {
- mExpReceivers[s].insert(*iSkill);
- if (!isTimerRunning(T_M_KILLSTEAL_PROTECTED) || mOwner == s
- || mOwner->getParty() == s->getParty())
- {
- mOwner = s;
- mLegalExpReceivers.insert(s);
- setTimerHard(T_M_KILLSTEAL_PROTECTED,
- KILLSTEAL_PROTECTION_TIME);
- }
- }
+ mOwner = s;
+ mLegalExpReceivers.insert(s);
+ setTimerHard(T_M_KILLSTEAL_PROTECTED,
+ KILLSTEAL_PROTECTION_TIME);
}
}
return HPLoss;