diff options
-rw-r--r-- | src/game-server/being.cpp | 7 | ||||
-rw-r--r-- | src/game-server/character.cpp | 11 | ||||
-rw-r--r-- | src/game-server/gamehandler.cpp | 5 | ||||
-rw-r--r-- | src/game-server/monster.cpp | 3 |
4 files changed, 15 insertions, 11 deletions
diff --git a/src/game-server/being.cpp b/src/game-server/being.cpp index b43b789..069da14 100644 --- a/src/game-server/being.cpp +++ b/src/game-server/being.cpp @@ -224,9 +224,6 @@ int Being::directionToAngle(int direction) void Being::performAttack(const Damage &damage) { - LOG_DEBUG("Direction:"<<getDirection()<< - " Target:"<<mTarget->getName()); - if (!mTarget || mTarget == this || mTarget->getAction() == Being::DEAD || !mTarget->canFight()) return; @@ -234,7 +231,11 @@ void Being::performAttack(const Damage &damage) getType() == OBJECT_CHARACTER) return; + LOG_DEBUG("Direction: " << getDirection() << + " Target: " << mTarget->getName()); + mTarget->damage(this, damage); + mActionTime += 1000; // set to 10 ticks wait time } void Being::setAction(Action action) diff --git a/src/game-server/character.cpp b/src/game-server/character.cpp index e17abc2..7e0dc12 100644 --- a/src/game-server/character.cpp +++ b/src/game-server/character.cpp @@ -116,11 +116,14 @@ void Character::update() void Character::perform() { - if (mAction != ATTACK || mActionTime > 0 || mTarget == NULL) return; + if (mAction != ATTACK || mTarget == NULL) return; - mActionTime = 1000; - mAction = STAND; - raiseUpdateFlags(UPDATEFLAG_ATTACK); + // wait before next attack + if (mActionTime > 100) + { + mActionTime -= 100; + return; + } // TODO: Check slot 2 too. int itemId = mPossessions.equipment[EQUIP_FIGHT1_SLOT]; diff --git a/src/game-server/gamehandler.cpp b/src/game-server/gamehandler.cpp index 68af531..12594d2 100644 --- a/src/game-server/gamehandler.cpp +++ b/src/game-server/gamehandler.cpp @@ -352,9 +352,10 @@ void GameHandler::processMessage(NetComputer *comp, MessageIn &message) case PGMSG_ATTACK: { - LOG_DEBUG("Character " << computer.character->getPublicID() - << " attacks"); int id = message.readShort(); + LOG_DEBUG("Character " << computer.character->getPublicID() + << " attacked being " << id); + Actor *o = findActorNear(computer.character, id); if (o && o->getType() != OBJECT_NPC) { diff --git a/src/game-server/monster.cpp b/src/game-server/monster.cpp index eaab71f..ed7048e 100644 --- a/src/game-server/monster.cpp +++ b/src/game-server/monster.cpp @@ -111,7 +111,6 @@ Monster::~Monster() void Monster::perform() { - if (mAction == ATTACK && mCurrentAttack) { if (mAttackTime == mCurrentAttack->aftDelay) @@ -208,7 +207,7 @@ void Monster::update() targetPriority); if (posPriority > bestTargetPriority) { - bestAttackTarget = target; + bestAttackTarget = mTarget = target; bestTargetPriority = posPriority; bestAttackPosition = attackPosition; bestAttackDirection = (*j).direction; |