public NPCTaskDoJob(Entity entity, IWorkBuilding building, float priority, float taskTime = -1) : base(entity, priority, taskTime) { WorkBuilding = building.WorkBuilding; List <WorkEquiptmentData> wed = new List <WorkEquiptmentData>(10); foreach (WorldObjectData wed_ in WorkBuilding.GetBuildingObjects()) { if (wed_ is WorkEquiptmentData && (wed_ as WorkEquiptmentData).CurrentUser == null) { wed.Add(wed_ as WorkEquiptmentData); } } WorkEquiptment = GameManager.RNG.RandomFromList(wed); if (WorkEquiptment != null) { WorkEquiptment.CurrentUser = Entity as NPC; CanWork = QuickDistance(Entity, WorkEquiptment.WorldPosition) <= 1; } else { CanWork = true; } }
public NPCJobBlackSmith(IWorkBuilding workLocation) : base("Blacksmith", workLocation) { BlackSmith = workLocation as Blacksmith; WorkEquiptment = new List <IWorkEquiptmentObject>(5); foreach (WorldObjectData obj in workLocation.WorkBuilding.GetBuildingExternalObjects()) { if (obj is IWorkEquiptmentObject workObj) { WorkEquiptment.Add(workObj); } } }
public NPCJobSoldier(IWorkBuilding workLocation) : base("Soldier", workLocation, KingdomHierarchy.Citizen) { HasEquiptment = false; SubTask = CurrentSubTask.None; WorkItems = new List <Item>(); WorkEquiptment = new List <IWorkEquiptmentObject>(5); foreach (WorldObjectData obj in workLocation.WorkBuilding.GetBuildingExternalObjects()) { if (obj is IWorkEquiptmentObject workObj) { WorkEquiptment.Add(workObj); } } }
public static Building AsBuilding(this IWorkBuilding b) { return(b as Building); }
public NPCJobMarketStall(string title, IWorkBuilding workLocation, WorldObjectData marketStall, KingdomHierarchy rankReq = KingdomHierarchy.Citizen) : base(title, workLocation, rankReq) { }
public NPCJobBlackSmith(IWorkBuilding workLocation) : base("Blacksmith", workLocation) { BlackSmith = workLocation as Blacksmith; }
public NPCJobMerchant(IWorkBuilding workLocation, string title = null) : base(title ?? "Merchant", workLocation, KingdomHierarchy.Citizen) { Init = false; }
public NPCJobKing(IWorkBuilding workLocation) : base("King", workLocation, KingdomHierarchy.Monarch) { }
public NPCJobSoldier(IWorkBuilding workLocation) : base("Soldier", workLocation, KingdomHierarchy.Citizen) { }
public NPCJob(string title, IWorkBuilding workLocation, KingdomHierarchy rankReq = KingdomHierarchy.Citizen) { Title = title; WorkLocation = workLocation; RequiredRank = rankReq; }
public NPCTaskDoJob(Entity entity, IWorkBuilding building, NPCJob job, float priority, float taskTime = -1) : base(entity, priority, taskTime, taskDesc: "Working: " + job) { WorkBuilding = building.WorkBuilding; Job = job; }