From d75912b44b311a0d6734d558f494f1d2ce1649e2 Mon Sep 17 00:00:00 2001 From: David Athay Date: Tue, 19 May 2009 12:04:19 +0100 Subject: Added time between attacks. Added target for monster. --- src/game-server/being.cpp | 7 ++++--- src/game-server/character.cpp | 11 +++++++---- src/game-server/gamehandler.cpp | 5 +++-- src/game-server/monster.cpp | 3 +-- 4 files changed, 15 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/game-server/being.cpp b/src/game-server/being.cpp index b43b789a..069da14b 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:"<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 e17abc2b..7e0dc125 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 68af5314..12594d26 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 eaab71f2..ed7048e2 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; -- cgit v1.2.3-70-g09d2