summaryrefslogtreecommitdiff
path: root/src/game-server/attack.cpp
diff options
context:
space:
mode:
authorErik Schilling <ablu.erikschilling@googlemail.com>2013-02-20 15:34:28 +0100
committerErik Schilling <ablu.erikschilling@googlemail.com>2013-02-20 15:34:28 +0100
commitc70c6d19c1cabf46b595591802bceab63d371788 (patch)
tree1c153d2bfe560171bad5889d528dc5cf110e8533 /src/game-server/attack.cpp
parentd707495540581f8c1b9ab3d5007c9c4d1ab83b53 (diff)
parent587b7682e6bf7dd9e616c1d4789a5ed9aa986e6d (diff)
downloadmanaserv-c70c6d19c1cabf46b595591802bceab63d371788.tar.gz
manaserv-c70c6d19c1cabf46b595591802bceab63d371788.tar.bz2
manaserv-c70c6d19c1cabf46b595591802bceab63d371788.tar.xz
manaserv-c70c6d19c1cabf46b595591802bceab63d371788.zip
Merge branch 'master' into lpc2012
Conflicts: gameserver.cbp src/account-server/accounthandler.cpp src/game-server/attack.cpp src/game-server/attack.h src/game-server/being.cpp src/game-server/being.h src/game-server/character.cpp src/game-server/character.h src/game-server/inventory.cpp src/game-server/item.h src/game-server/monster.cpp src/game-server/monster.h
Diffstat (limited to 'src/game-server/attack.cpp')
-rw-r--r--src/game-server/attack.cpp27
1 files changed, 15 insertions, 12 deletions
diff --git a/src/game-server/attack.cpp b/src/game-server/attack.cpp
index 7f539f1a..1825b86a 100644
--- a/src/game-server/attack.cpp
+++ b/src/game-server/attack.cpp
@@ -20,6 +20,8 @@
#include "attack.h"
+#include <cassert>
+
#include "common/defines.h"
#include "game-server/character.h"
@@ -28,21 +30,20 @@
AttackInfo *AttackInfo::readAttackNode(xmlNodePtr node)
{
std::string skill = XML::getProperty(node, "skill", std::string());
+
unsigned skillId;
if (utils::isNumeric(skill))
- {
skillId = utils::stringToInt(skill);
- }
else
- {
skillId = skillManager->getId(skill);
- if (skillId == 0)
- {
- LOG_WARN("Error parsing Attack node: Invalid skill " << skill
- << " taking default skill");
- skillId = skillManager->getDefaultSkillId();
- }
+
+ if (!skill.empty() && !skillManager->exists(skillId))
+ {
+ LOG_WARN("Error parsing Attack node: Invalid skill " << skill
+ << " taking default skill");
+ skillId = skillManager->getDefaultSkillId();
}
+
unsigned id = XML::getProperty(node, "id", 0);
unsigned priority = XML::getProperty(node, "priority", 0);
unsigned warmupTime = XML::getProperty(node, "warmuptime", 0);
@@ -118,17 +119,19 @@ void Attacks::startAttack(Attack *attack)
attack->getAttackInfo()->getCooldownTime());
}
-void Attacks::tick(std::vector<Attack *> *ret)
+void Attacks::getUsuableAttacks(std::vector<Attack *> *ret)
{
+ assert(ret != 0);
+
// we have a current Attack
- if (!mAttackTimer.expired() && mCurrentAttack)
+ if ((!mAttackTimer.expired() && mCurrentAttack))
return;
for (std::vector<Attack>::iterator it = mAttacks.begin();
it != mAttacks.end(); ++it)
{
Attack &attack = *it;
- if (ret && attack.isUsuable())
+ if (attack.isUsuable())
{
ret->push_back(&attack);
}