/** * \brief 敌我判断 * \param entry 判断的对象 * \param notify 判断失败时是否提示(不能攻击10级以下的玩家) * \return 0:友方 1:敌人 -1:中立 */ int ScenePet::isEnemy(SceneEntryPk * entry,bool notify,bool good) { int ret=0; bool isPlayer = false; if (entry) { if (type==Cmd::PET_TYPE_SEMI) { ret = SceneNpc::isEnemy(entry,notify,good); } else { SceneEntryPk * master = getMaster(); if (master) { if (master->scene==scene) { if (scene->zPosShortRange(getPos(),master->getPos(),SCREEN_WIDTH*2,SCREEN_HEIGHT*2)) { if (this!=entry) { if (!((entry->frenzy)||(frenzy))) { if (master->getType()==zSceneEntry::SceneEntry_Player) { isPlayer = true; //Zebra::logger->debug("isPetEnemy 119 %s->%s",master->name,entry->name); ret = isUserMasterEnemy(entry); } else { //Zebra::logger->debug("isPetEnemy 124 %s->%s",master->name,entry->name); ret = master->isEnemy(entry,notify); } } else ret = 1; } else ret = 0; } else ret = -1; } else ret = -1; } else ret = -1; } } else ret = -1; if (isPlayer) { if (ret==1) return 1; else return 0; } else { return ret; } }