/** * \brief 查找主人的敌人 * * * \param ret 找到的目标 * \return 是否找到 */ bool ScenePet::checkMasterTarget(SceneEntryPk *&ret) { if ((Cmd::PET_TYPE_RIDE==getPetType()) || (Cmd::PET_TYPE_GUARDNPC==getPetType()) || (Cmd::PET_TYPE_SEMI==getPetType())) { ret = 0; return false; } SceneEntryPk * master = getMaster(); if (master) { int r = npc_search_region; if (aif&AIF_DOUBLE_REGION) r *= 2; SceneEntryPk * tmp = 0; if (petData.ai&Cmd::PETAI_ATK_ACTIVE)//主人攻击的对象 tmp = master->getCurTarget(); else if (petData.ai&Cmd::PETAI_ATK_PASSIVE)//攻击主人的对象 tmp = master->getDefTarget(); if ((tmp)&&(tmp!=this)) if (tmp->getState() == zSceneEntry::SceneEntry_Normal && isEnemy(tmp) && canReach(tmp) && canFight()) { ret = tmp; return true; } return false; } //Zebra::logger->error("ScenePet::checkMasterTarget(): %s 没有主人",name); ret = 0; return false; }