本文整理汇总了C++中CreatureObject::isDead方法的典型用法代码示例。如果您正苦于以下问题:C++ CreatureObject::isDead方法的具体用法?C++ CreatureObject::isDead怎么用?C++ CreatureObject::isDead使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CreatureObject
的用法示例。
在下文中一共展示了CreatureObject::isDead方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: getNearestAttackingDefender
uint64 CreatureObject::getNearestAttackingDefender(void)
{
uint64 defenederId = 0;
float minLenght = FLT_MAX;
ObjectIDList::iterator it = mDefenders.begin();
while(it != mDefenders.end())
{
if((*it) != 0)
{
CreatureObject* defender = dynamic_cast<CreatureObject*>(gWorldManager->getObjectById((*it)));
if (defender && !defender->isDead() && !defender->isIncapacitated())
{
if ((defender->getCreoGroup() == CreoGroup_Player) || (defender->getCreoGroup() == CreoGroup_Creature))
{
float len = glm::distance(this->mPosition, defender->mPosition);
if (len < minLenght)
{
minLenght = len;
defenederId = (*it);
}
}
}
}
++it;
}
return defenederId;
}
示例2: getHighestThreatCreature
CreatureObject* ThreatMap::getHighestThreatCreature() {
Locker locker(&lockMutex);
ManagedReference<CreatureObject*> currentThreat = this->currentThreat.get();
if(currentThreat != NULL && !currentThreat->isDead() && !currentThreat->isIncapacitated()
&& !currentThreat->isDestroyed() && !cooldownTimerMap.isPast("doEvaluation"))
return currentThreat;
threatMatrix.clear();
for (int i = 0; i < size(); ++i) {
ThreatMapEntry* entry = &elementAt(i).getValue();
CreatureObject* creature = elementAt(i).getKey();
ManagedReference<CreatureObject*> selfStrong = cast<CreatureObject*>(self.get().get());
if (!creature->isDead() && !creature->isIncapacitated() && creature->isInRange(selfStrong, 128.f) && creature->isAttackableBy(selfStrong))
threatMatrix.add(creature, entry);
}
this->currentThreat = threatMatrix.getLargestThreat();
cooldownTimerMap.updateToCurrentAndAddMili("doEvaluation", ThreatMap::EVALUATIONCOOLDOWN);
return this->currentThreat.get().get();
}
示例3: npcIsDead
bool ScriptSupport::npcIsDead(uint64 npcId)
{
bool isDead = true;
CreatureObject* creature = dynamic_cast<CreatureObject*>(gWorldManager->getObjectById(npcId));
if (creature)
{
isDead = creature->isDead();
}
return isDead;
}
示例4: getLairTarget
bool LairObject::getLairTarget(void)
{
bool newTarget = false;
float nearestDistanceFromLair = 128.0; // Todo: Use a real value.
uint64 nearestDefenderId = 0;
// Attack nearest target or the first target found within range or the one doing most damage or random? lol
ObjectIDList::iterator defenderIt = this->getDefenders()->begin();
while (defenderIt != this->getDefenders()->end())
{
CreatureObject* creatureObject = dynamic_cast<CreatureObject*>(gWorldManager->getObjectById((*defenderIt)));
if (creatureObject)
{
// We may have a target, since he is attacking this lair.
if (!creatureObject->isIncapacitated() && !creatureObject->isDead())
{
float distanceFromLair = glm::distance(this->mPosition, creatureObject->mPosition);
if (distanceFromLair < nearestDistanceFromLair)
{
nearestDistanceFromLair = distanceFromLair;
nearestDefenderId = (*defenderIt);
}
newTarget = true;
}
else
{
// Make peace with this poor fellow.
this->makePeaceWithDefender(*defenderIt);
defenderIt = this->mDefenders.begin();
continue;
}
}
defenderIt++;
}
if (newTarget)
{
this->setTarget(nearestDefenderId);
}
return newTarget;
}
示例5: doAggro
void LairObserverImplementation::doAggro(TangibleObject* lair, TangibleObject* attacker, bool allAttack){
for (int i = 0; i < spawnedCreatures.size() ; ++i) {
CreatureObject* creo = spawnedCreatures.get(i);
if (creo->isDead() || creo->getZone() == NULL)
continue;
if (creo->isAiAgent() && attacker != NULL && (allAttack || (System::random(1) == 1))) {
// TODO: only set defender if needed
AiAgent* ai = cast<AiAgent*>( creo);
Locker clocker(creo, lair);
creo->setDefender(attacker);
}
}
}
示例6: healLair
void LairObserverImplementation::healLair(TangibleObject* lair, TangibleObject* attacker){
Locker locker(lair);
if (lair->getZone() == NULL)
return;
int damageToHeal = 0;
int lairMaxCondition = lair->getMaxCondition();
for (int i = 0; i < spawnedCreatures.size() ; ++i) {
CreatureObject* creo = spawnedCreatures.get(i);
if (creo->isDead() || creo->getZone() == NULL)
continue;
// TODO: Range check
damageToHeal += lairMaxCondition / 100;
}
if (damageToHeal == 0)
return;
if (lair->getZone() == NULL)
return;
lair->healDamage(lair, 0, damageToHeal, true);
PlayClientEffectObjectMessage* heal =
new PlayClientEffectObjectMessage(lair, "clienteffect/healing_healdamage.cef", "");
lair->broadcastMessage(heal, false);
PlayClientEffectLoc* healLoc = new PlayClientEffectLoc("clienteffect/healing_healdamage.cef",
lair->getZone()->getZoneName(), lair->getPositionX(),
lair->getPositionZ(), lair->getPositionY());
lair->broadcastMessage(healLoc, false);
}
示例7: _verifyCombatState
bool CombatManager::_verifyCombatState(CreatureObject* attacker, uint64 defenderId)
{
PlayerObject* playerAttacker = dynamic_cast<PlayerObject*>(attacker);
CreatureObject* defender = dynamic_cast<CreatureObject*>(gWorldManager->getObjectById(defenderId));
if (!defender)
{
// No such object.
return(false);
}
// Do not try to attack already incapped or dead objects.
if (defender->isIncapacitated() || defender->isDead())
{
return false;
}
//Do not attack if we are incapped or already dead or mounted.
if (attacker->isIncapacitated() || attacker->isDead() || playerAttacker->checkIfMounted())
{
return false;
}
// make sure we got both objects
if (playerAttacker && defender)
{
//Do not attack if we are mounted
if(playerAttacker->checkIfMounted())
{
return false;
}
// if our target is a player, he must be dueling us or both need to be overt(TODO)
if (PlayerObject* defenderPlayer = dynamic_cast<PlayerObject*>(defender))
{
// also return, if our target is incapacitated or dead
if(!playerAttacker->checkDuelList(defenderPlayer) || !defenderPlayer->checkDuelList(playerAttacker)
|| defenderPlayer == playerAttacker)
{
return(false);
}
if(defenderPlayer->isIncapacitated())
{
// gMessageLib->sendSystemMessage(playerAttacker,L"","base_player","prose_target_incap");
return(false);
}
else if(defenderPlayer->isDead())
{
// gMessageLib->sendSystemMessage(playerAttacker,L"","base_player","prose_target_dead");
return(false);
}
// put us in combat state
gStateManager.setCurrentActionState(attacker, CreatureState_Combat);
gStateManager.setCurrentActionState(attacker, CreatureState_CombatAttitudeNormal);
// put our target in combat state
if(!defenderPlayer->states.checkState(CreatureState_Combat))
{
gStateManager.setCurrentActionState(defender, CreatureState_Combat);
gStateManager.setCurrentActionState(defender, CreatureState_CombatAttitudeNormal);
}
// update our defender list
if (!playerAttacker->checkDefenderList(defenderPlayer->getId()))
{
playerAttacker->AddDefender(defenderPlayer->getId());
}
// update our targets defender list
if (!defenderPlayer->checkDefenderList(playerAttacker->getId()))
{
playerAttacker->AddDefender(defenderPlayer->getId());
}
if (!defenderPlayer->autoAttackEnabled())
{
// Player can/may start auto-attack if idle.
defenderPlayer->getController()->enqueueAutoAttack(playerAttacker->getId());
}
}
else
{
// our target is a creature
if (defender->isIncapacitated())
{
// gMessageLib->sendSystemMessage(playerAttacker,L"","base_player","prose_target_incap");
return(false);
}
else if (defender->isDead())
{
// gMessageLib->sendSystemMessage(playerAttacker,L"","base_player","prose_target_dead");
return(false);
}
// Vefify that out target is attackable. It's not nice to spam attacks at innocent npc's.
if (!(defender->getPvPStatus() & CreaturePvPStatus_Attackable))
{
//.........这里部分代码省略.........
示例8: _verifyCombatState
bool NpcManager::_verifyCombatState(CreatureObject* attacker, uint64 defenderId)
{
if (!attacker || !defenderId)
{
return false;
}
CreatureObject* defender = dynamic_cast<CreatureObject*>(gWorldManager->getObjectById(defenderId));
if (!defender)
{
return false;
}
// If the target (defender) do have me in his defender list, we should not bother.
/*
if (defender->checkDefenderList(attacker->getId()))
{
return true;
}
*/
PlayerObject* playerAttacker = dynamic_cast<PlayerObject*>(attacker);
// make sure we got both objects
if (playerAttacker && defender)
{
// if our target is a player, he must be dueling us or both need to be overt(TODO)
if (PlayerObject* defenderPlayer = dynamic_cast<PlayerObject*>(defender))
{
// also return, if our target is incapacitated or dead
if(!playerAttacker->checkDuelList(defenderPlayer) || !defenderPlayer->checkDuelList(playerAttacker)
|| defenderPlayer == playerAttacker)
{
return(false);
}
if(defenderPlayer->GetCreature()->isIncapacitated())
{
// gMessageLib->sendSystemMessage(playerAttacker,L"","base_player","prose_target_incap");
return(false);
}
else if(defenderPlayer->GetCreature()->isDead())
{
// gMessageLib->sendSystemMessage(playerAttacker,L"","base_player","prose_target_dead");
return(false);
}
// put us in combat state
if(!playerAttacker->GetCreature()->states.checkState(CreatureState_Combat))
{
gStateManager.setCurrentActionState(playerAttacker->GetCreature(),CreatureState_Combat);
gStateManager.setCurrentActionState(playerAttacker->GetCreature(),CreatureState_CombatAttitudeNormal);
}
// put our target in combat state
if(!defenderPlayer->GetCreature()->states.checkState(CreatureState_Combat))
{
gStateManager.setCurrentActionState(defenderPlayer->GetCreature(),CreatureState_Combat);
gStateManager.setCurrentActionState(defenderPlayer->GetCreature(),CreatureState_CombatAttitudeNormal);
}
// update our defender list
if (!playerAttacker->GetCreature()->checkDefenderList(defenderPlayer->getId())) // or if (!playerAttacker->checkDefenderList(defenderId)
{
playerAttacker->GetCreature()->AddDefender(defenderPlayer->getId());
}
// update our targets defender list
if (!defenderPlayer->GetCreature()->checkDefenderList(playerAttacker->getId()))
{
playerAttacker->GetCreature()->AddDefender(defenderPlayer->getId());
}
}
else
{
// our target is a creature
if (defender->isIncapacitated())
{
// gMessageLib->sendSystemMessage(playerAttacker,L"","base_player","prose_target_incap");
return(false);
}
else if (defender->isDead())
{
// gMessageLib->sendSystemMessage(playerAttacker,L"","base_player","prose_target_dead");
return(false);
}
// Vefify that our target is attackable. It's not nice to spam attacks at innocent npc's.
if (!(defender->getPvPStatus() & CreaturePvPStatus_Attackable))
{
return(false);
}
// put us in combat state
if (!playerAttacker->GetCreature()->states.checkState(CreatureState_Combat))
{
gStateManager.setCurrentActionState(playerAttacker->GetCreature(),CreatureState_Combat);
gStateManager.setCurrentActionState(playerAttacker->GetCreature(),CreatureState_CombatAttitudeNormal);
}
//.........这里部分代码省略.........