ActorSet MonsterFSM::getApplicableTargets(void) const { ASSERT(m_Owner!=0, "Owner was NULL"); ActorSet s = m_Owner->getZone().getObjects().exclude(m_Owner->m_ID).typeFilter<Player>(); // remove actors that are dead or ghosts ActorSet::iterator i = s.begin(); while(i != s.end()) { ActorSet::iterator nextIterator = i; ++nextIterator; const Player &player = dynamic_cast<const Player&>(*i->second); if(!player.isAlive()) { s.erase(i); } i = nextIterator; } return s; }
ActorSet ActorSet::exclude(OBJECT_ID id) const { ActorSet s = *this; ActorSet::iterator iter = s.find(id); if(iter != s.end()) // if present { s.erase(iter); } return s; }