bool CoreScript::RecruitNeutral() { Vector2I sector = ToSector(parentChit->Position()); Rectangle2I inner = InnerSectorBounds(sector); MOBKeyFilter filter; filter.value = ISC::denizen; CChitArray arr; Context()->chitBag->QuerySpatialHash(&arr, ToWorld2F(inner), 0, &filter); for (int i = 0; i < arr.Size(); ++i) { Chit* chit = arr[i]; if (Team::Instance()->GetRelationship(chit, parentChit) != ERelate::ENEMY) { if (this->IsCitizen(chit)) continue; if (!chit->GetItem()) continue; if (Team::IsRogue(chit->Team())) { // ronin! denizen without a core. this->AddCitizen( chit ); GLASSERT(chit->GetItem()->Significant()); NewsEvent news(NewsEvent::ROGUE_DENIZEN_JOINS_TEAM, ToWorld2F(chit->Position()), chit->GetItemID(), 0); Context()->chitBag->GetNewsHistory()->Add(news); return true; } } } return false; }
bool CoreScript::IsCitizenItemID(int id) { for (int i = 0; i < citizens.Size(); ++i) { int citizenID = citizens[i]; Chit* chit = CitizenFilter(citizenID); if (chit && chit->GetItemID() == id) { return true; } } return false; }