static Being *findBeing(const std::string &name, const bool npc) { if (!localPlayer || !actorManager) return nullptr; Being *being = nullptr; if (name.empty()) { being = localPlayer->getTarget(); } else { being = actorManager->findBeingByName( name, ActorType::Unknown); } if (!being && npc) { being = actorManager->findNearestLivingBeing( localPlayer, 1, ActorType::Npc, AllowSort_true); if (being) { if (abs(being->getTileX() - localPlayer->getTileX()) > 1 || abs(being->getTileY() - localPlayer->getTileY()) > 1) { being = nullptr; } } } if (!being && npc) { being = actorManager->findNearestLivingBeing( localPlayer, 1, ActorType::Player, AllowSort_true); if (being) { if (abs(being->getTileX() - localPlayer->getTileX()) > 1 || abs(being->getTileY() - localPlayer->getTileY()) > 1) { being = nullptr; } } } return being; }
void TargetDebugTab::logic() { if (player_node && player_node->getTarget()) { Being *target = player_node->getTarget(); mTargetLabel->setCaption(strprintf("%s %s (%d, %d)", _("Target:"), target->getName().c_str(), target->getTileX(), target->getTileY())); mTargetIdLabel->setCaption(strprintf("%s %d", _("Target Id:"), target->getId())); if (target->getLevel()) { mTargetLevelLabel->setCaption(strprintf("%s %d", _("Target Level:"), target->getLevel())); } else { mTargetLevelLabel->setCaption(strprintf("%s ?", _("Target Level:"))); } mTargetRaceLabel->setCaption(strprintf("%s %s", _("Target race:"), target->getRaceName().c_str())); mTargetPartyLabel->setCaption(strprintf("%s %s", _("Target Party:"), target->getPartyName().c_str())); mTargetGuildLabel->setCaption(strprintf("%s %s", _("Target Guild:"), target->getGuildName().c_str())); mMinHitLabel->setCaption(strprintf("%s %d", _("Minimal hit:"), target->getMinHit())); mMaxHitLabel->setCaption(strprintf("%s %d", _("Maximum hit:"), target->getMaxHit())); mCriticalHitLabel->setCaption(strprintf("%s %d", _("Critical hit:"), target->getCriticalHit())); const int delay = target->getAttackDelay(); if (delay) { mAttackDelayLabel->setCaption(strprintf("%s %d", _("Attack delay:"), delay)); } else { mAttackDelayLabel->setCaption(strprintf( "%s ?", _("Attack delay:"))); } } else { mTargetLabel->setCaption(strprintf("%s ?", _("Target:"))); mTargetIdLabel->setCaption(strprintf("%s ?", _("Target Id:"))); mTargetLevelLabel->setCaption(strprintf("%s ?", _("Target Level:"))); mTargetPartyLabel->setCaption(strprintf("%s ?", _("Target Party:"))); mTargetGuildLabel->setCaption(strprintf("%s ?", _("Target Guild:"))); mAttackDelayLabel->setCaption(strprintf("%s ?", _("Attack delay:"))); mMinHitLabel->setCaption(strprintf("%s ?", _("Minimal hit:"))); mMaxHitLabel->setCaption(strprintf("%s ?", _("Maximum hit:"))); mCriticalHitLabel->setCaption(strprintf("%s ?", _("Critical hit:"))); } mTargetLabel->adjustSize(); mTargetIdLabel->adjustSize(); mTargetLevelLabel->adjustSize(); mTargetPartyLabel->adjustSize(); mTargetGuildLabel->adjustSize(); mAttackDelayLabel->adjustSize(); }