diff options
author | Erik Schilling <ablu.erikschilling@googlemail.com> | 2013-02-20 15:34:28 +0100 |
---|---|---|
committer | Erik Schilling <ablu.erikschilling@googlemail.com> | 2013-02-20 15:34:28 +0100 |
commit | c70c6d19c1cabf46b595591802bceab63d371788 (patch) | |
tree | 1c153d2bfe560171bad5889d528dc5cf110e8533 /src/game-server/attack.cpp | |
parent | d707495540581f8c1b9ab3d5007c9c4d1ab83b53 (diff) | |
parent | 587b7682e6bf7dd9e616c1d4789a5ed9aa986e6d (diff) | |
download | manaserv-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.cpp | 27 |
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); } |