private static bool ProcessInBuilding(ref ResidentAI residentAI, uint citizenId, ref Citizen citizen) { if (citizen.ValidBuilding()) { var buildingInstance = citizen.GetBuildingInstance(); if (buildingInstance?.m_flags.IsFlagSet(Building.Flags.Evacuating) ?? false) { return(false); } if (citizen.AtHome()) { ProcessAtHome(ref residentAI, citizenId, ref citizen); } else if (citizen.AtWork()) { ProcessAtWork(ref residentAI, citizenId, ref citizen); } else if (citizen.IsVisiting()) { ProcessVisiting(ref residentAI, citizenId, ref citizen); } } return(true); }
public static bool ValidBuilding(this Citizen citizen) { var validHome = citizen.AtHome() && citizen.ValidHomeBuilding(); var validWork = citizen.AtWork() && citizen.ValidWorkBuilding(); var validVisit = citizen.IsVisiting() && citizen.ValidVisitBuilding(); return(validHome || validWork || validVisit); }
public static ushort GetBuilding(this Citizen citizen) { if (citizen.AtHome() && citizen.ValidHomeBuilding()) { return(citizen.HomeBuilding()); } else if (citizen.AtWork() && citizen.ValidWorkBuilding()) { return(citizen.WorkBuilding()); } else if (citizen.IsVisiting() && citizen.ValidVisitBuilding()) { return(citizen.VisitBuilding()); } return(0); }
public static bool Process(ref TouristAI touristAI, uint citizenId, ref Citizen citizen) { if (!citizen.Arrested && !citizen.Sick && !citizen.Collapsed && !citizen.Dead && !citizen.AtHome() && !citizen.AtWork() && citizen.Exists()) { CitizenActivityMonitor.LogActivity(citizenId, CitizenActivityMonitor.Activity.Unknown); if (citizen.IsAtABuilding()) { return(ProcessInBuilding(ref touristAI, citizenId, ref citizen)); } else if (citizen.IsMoving()) { return(ProcessMoving(ref touristAI, citizenId, ref citizen)); } return(true); } return(false); }