diff options
author | Erik Schilling <ablu.erikschilling@googlemail.com> | 2013-05-05 10:31:57 +0200 |
---|---|---|
committer | Erik Schilling <ablu.erikschilling@googlemail.com> | 2013-08-26 22:56:46 +0200 |
commit | 9d0e70450a1deb11eb1646b7fcc84e65e551c493 (patch) | |
tree | 985ad27abf1b984e973504908b9c54ee99f6a677 /src/game-server/monster.cpp | |
parent | 6f3c3563d2ec35da22faebba3289af0ac8be4137 (diff) | |
download | manaserv-9d0e70450a1deb11eb1646b7fcc84e65e551c493.tar.gz manaserv-9d0e70450a1deb11eb1646b7fcc84e65e551c493.tar.bz2 manaserv-9d0e70450a1deb11eb1646b7fcc84e65e551c493.tar.xz manaserv-9d0e70450a1deb11eb1646b7fcc84e65e551c493.zip |
Removed the hardcoded monster AI
Diffstat (limited to 'src/game-server/monster.cpp')
-rw-r--r-- | src/game-server/monster.cpp | 76 |
1 files changed, 1 insertions, 75 deletions
diff --git a/src/game-server/monster.cpp b/src/game-server/monster.cpp index 45a99d82..1c4f39b0 100644 --- a/src/game-server/monster.cpp +++ b/src/game-server/monster.cpp @@ -35,17 +35,8 @@ #include <cmath> -double MonsterClass::getVulnerability(Element element) const -{ - Vulnerabilities::const_iterator it = mVulnerabilities.find(element); - if (it == mVulnerabilities.end()) - return 1.0f; - return it->second; -} - MonsterComponent::MonsterComponent(Entity &entity, MonsterClass *specy): - mSpecy(specy), - mOwner(nullptr) + mSpecy(specy) { LOG_DEBUG("Monster spawned! (id: " << mSpecy->getId() << ")."); @@ -96,16 +87,8 @@ MonsterComponent::MonsterComponent(Entity &entity, MonsterClass *specy): beingComponent->signal_died.connect(sigc::mem_fun(this, &MonsterComponent::monsterDied)); } - -MonsterComponent::~MonsterComponent() -{ -} - void MonsterComponent::update(Entity &entity) { - if (mKillStealProtectedTimeout.justFinished()) - mOwner = nullptr; - auto *beingComponent = entity.getComponent<BeingComponent>(); // If dead, remove it @@ -124,65 +107,8 @@ void MonsterComponent::update(Entity &entity) script->push(&entity); script->execute(entity.getMap()); } - - const Point &position = - entity.getComponent<ActorComponent>()->getPosition(); - - // We have no target - let's wander around - if (mStrollTimeout.expired() && - position == beingComponent->getDestination()) - { - if (mKillStealProtectedTimeout.expired()) - { - unsigned range = mSpecy->getStrollRange(); - if (range) - { - Point randomPos(rand() % (range * 2 + 1) - range + position.x, - rand() % (range * 2 + 1) - range + position.y); - // Don't allow negative destinations, to avoid rounding - // problems when divided by tile size - if (randomPos.x >= 0 && randomPos.y >= 0) - beingComponent->setDestination(entity, randomPos); - } - mStrollTimeout.set(10 + rand() % 10); - } - } } -int MonsterComponent::calculatePositionPriority(Entity &entity, - Point position, - int targetPriority) -{ - Point thisPos = entity.getComponent<ActorComponent>()->getPosition(); - - unsigned range = mSpecy->getTrackRange(); - - Map *map = entity.getMap()->getMap(); - int tileWidth = map->getTileWidth(); - int tileHeight = map->getTileHeight(); - - // Check if we already are on this position - if (thisPos.x / tileWidth == position.x / tileWidth && - thisPos.y / tileHeight == position.y / tileHeight) - { - return targetPriority *= range; - } - - Path path; - path = map->findPath(thisPos.x / tileWidth, thisPos.y / tileHeight, - position.x / tileWidth, position.y / tileHeight, - entity.getComponent<ActorComponent>()->getWalkMask(), - range); - - if (path.empty() || path.size() >= range) - { - return 0; - } - else - { - return targetPriority * (range - path.size()); - } -} void MonsterComponent::monsterDied(Entity *monster) { mDecayTimeout.set(DECAY_TIME); |