本文整理汇总了C++中CMobEntity::CanLink方法的典型用法代码示例。如果您正苦于以下问题:C++ CMobEntity::CanLink方法的具体用法?C++ CMobEntity::CanLink怎么用?C++ CMobEntity::CanLink使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CMobEntity
的用法示例。
在下文中一共展示了CMobEntity::CanLink方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: TryLink
void CMobController::TryLink()
{
if (PTarget == nullptr)
{
return;
}
//handle pet behaviour on the targets behalf (faster than in ai_pet_dummy)
// Avatars defend masters by attacking mobs if the avatar isn't attacking anything currently (bodyguard behaviour)
if (PTarget->PPet != nullptr && PTarget->PPet->GetBattleTargetID() == 0)
{
if (PTarget->PPet->objtype == TYPE_PET && ((CPetEntity*)PTarget->PPet)->getPetType() == PETTYPE_AVATAR)
{
petutils::AttackTarget(PTarget, PMob);
}
}
// my pet should help as well
if (PMob->PPet != nullptr && PMob->PPet->PAI->IsRoaming())
{
((CMobEntity*)PMob->PPet)->PEnmityContainer->AddBaseEnmity(PTarget);
}
// Handle monster linking if they are close enough
if (PMob->PParty != nullptr)
{
for (uint16 i = 0; i < PMob->PParty->members.size(); ++i)
{
CMobEntity* PPartyMember = (CMobEntity*)PMob->PParty->members[i];
if (PPartyMember->PAI->IsRoaming() && PPartyMember->CanLink(&PMob->loc.p, PMob->getMobMod(MOBMOD_SUPERLINK)))
{
PPartyMember->PEnmityContainer->AddBaseEnmity(PTarget);
if (PPartyMember->m_roamFlags & ROAMFLAG_IGNORE)
{
// force into attack action
//#TODO
PPartyMember->PAI->Engage(PTarget->targid);
}
}
}
}
// ask my master for help
if (PMob->PMaster != nullptr && PMob->PMaster->PAI->IsRoaming())
{
CMobEntity* PMaster = (CMobEntity*)PMob->PMaster;
if (PMaster->PAI->IsRoaming() && PMaster->CanLink(&PMob->loc.p, PMob->getMobMod(MOBMOD_SUPERLINK)))
{
PMaster->PEnmityContainer->AddBaseEnmity(PTarget);
}
}
}