public IEnumerable <Act.Status> PutResources() { if (BuildRoom.MeetsBuildRequirements()) { yield return(Act.Status.Success); } if (BuildRoom.ResourcesReservedFor == Agent) { Agent.Creature.Inventory.Remove(Resources, Inventory.RestockType.None); BuildRoom.AddResources(Resources); BuildRoom.ResourcesReservedFor = null; } yield return(Act.Status.Success); }
public override IEnumerable <Status> Run() { if (BuildRoom == null || BuildRoom.IsBuilt || BuildRoom.VoxelOrders.Count == 0) { yield return(Status.Fail); } else { BuildRoom.AddResources(Resources); Creature.Inventory.Remove(Resources); Creature.Stats.NumRoomsBuilt++; Creature.AI.AddXP(10); yield return(Status.Success); } }
public IEnumerable <Act.Status> PutResources() { if (BuildRoom.MeetsBuildRequirements()) { yield return(Act.Status.Success); } if (BuildRoom.ResourcesReservedFor == Agent) { var resources = Agent.Blackboard.GetData <List <Resource> >("zone_resources"); Agent.Creature.Inventory.Remove(resources, Inventory.RestockType.None); BuildRoom.AddResources(resources); BuildRoom.ResourcesReservedFor = null; } yield return(Act.Status.Success); }
public IEnumerable <Status> WaitForResources() { if (BuildRoom.ResourcesReservedFor == Agent) { yield return(Act.Status.Success); yield break; } while (!BuildRoom.MeetsBuildRequirements()) { if (BuildRoom.ResourcesReservedFor == null || BuildRoom.ResourcesReservedFor.IsDead) { Agent.SetMessage("Failed to wait for resources."); yield return(Act.Status.Fail); yield break; } yield return(Act.Status.Running); } yield return(Act.Status.Success); }
private void BuildRooms() { BuildRoom.Init(currentMap); roomsToSet = new List <Room>(); startRoom = BuildRoom.Build(RoomType.START, "start" + currentMap.Floor); roomsToSet.Add(startRoom); if (Config.instance.RoomTestMode) // Test모드 { Room testRoom = BuildRoom.Build(Config.instance.TestRoomType, Config.instance.TestRoomName); roomsToSet.Add(testRoom); } else //아닐시 Map정보에 따라 빌드 { for (int i = 0; i < currentMap.BattleRoomNum; i++) { Room battleRoom = BuildRoom.Build(RoomType.BATTLE); roomsToSet.Add(battleRoom); } for (int i = 0; i < currentMap.EventRoomNum; i++) { Room eventRoom = BuildRoom.Build(RoomType.EVENT); roomsToSet.Add(eventRoom); } if (currentMap.Boss) { Room bossRoom = BuildRoom.Build(RoomType.BOSS, "boss" + currentMap.Floor); roomsToSet.Add(bossRoom); } if (currentMap.End) { Room endRoom = BuildRoom.Build(RoomType.START, "end" + currentMap.Floor); roomsToSet.Add(endRoom); } } }
private bool ValidResourceState() { return(BuildRoom.MeetsBuildRequirements() || (BuildRoom.ResourcesReservedFor != null)); }