private static GameComponent __factory1(ComponentManager Manager, Vector3 Position, Blackboard Data) { IEnumerable <Resource> foods = ResourceLibrary.GetResourcesByTag(Resource.ResourceTags.RawFood); Resource randresource = ResourceLibrary.CreateMeal(Datastructures.SelectRandom(foods).Name, Datastructures.SelectRandom(foods).Name); return(new ResourceEntity(Manager, new ResourceAmount(randresource.Name), Position)); }
private static GameComponent CreateRandomFood(Vector3 position) { List <Resource> foods = ResourceLibrary.GetResourcesByTag(Resource.ResourceTags.RawFood); Resource randresource = ResourceLibrary.CreateMeal(Datastructures.SelectRandom(foods), Datastructures.SelectRandom(foods)); return(new ResourceEntity(randresource.Type, position)); }
private static GameComponent CreateRandomFood(WorldManager world, Vector3 position) { IEnumerable <Resource> foods = ResourceLibrary.GetResourcesByTag(Resource.ResourceTags.RawFood); Resource randresource = ResourceLibrary.CreateMeal(Datastructures.SelectRandom(foods).Type, Datastructures.SelectRandom(foods).Type); return(new ResourceEntity(world.ComponentManager, new ResourceAmount(randresource.Type), position)); }
public IEnumerable <Status> CreateResources() { List <ResourceAmount> stashed = Agent.Blackboard.GetData <List <ResourceAmount> >("ResourcesStashed"); ItemType.SelectedResources = stashed; if (ItemType.Name == ResourceLibrary.ResourceType.Trinket) { Resource craft = ResourceLibrary.GenerateTrinket(stashed.ElementAt(0).ResourceType.Type, (Agent.Stats.Dexterity + Agent.Stats.Intelligence) / 15.0f * MathFunctions.Rand(0.5f, 1.75f)); ItemType.ResourceCreated = craft.Type; } else if (ItemType.Name == ResourceLibrary.ResourceType.Meal) { if (stashed.Count < 2) { yield return(Act.Status.Fail); yield break; } Resource craft = ResourceLibrary.CreateMeal(stashed.ElementAt(0).ResourceType, stashed.ElementAt(1).ResourceType); ItemType.ResourceCreated = craft.Type; } else if (ItemType.Name == ResourceLibrary.ResourceType.Ale) { Resource craft = ResourceLibrary.CreateAle(stashed.ElementAt(0).ResourceType); ItemType.ResourceCreated = craft.Type; } else if (ItemType.Name == ResourceLibrary.ResourceType.Bread) { Resource craft = ResourceLibrary.CreateBread(stashed.ElementAt(0).ResourceType); ItemType.ResourceCreated = craft.Type; } else if (ItemType.Name == ResourceLibrary.ResourceType.GemTrinket) { Resource gem = null; Resource trinket = null; foreach (ResourceAmount stashedResource in stashed) { if (stashedResource.ResourceType.Tags.Contains(Resource.ResourceTags.Craft)) { trinket = stashedResource.ResourceType; } if (stashedResource.ResourceType.Tags.Contains(Resource.ResourceTags.Gem)) { gem = stashedResource.ResourceType; } } if (gem == null || trinket == null) { yield return(Status.Fail); yield break; } Resource craft = ResourceLibrary.EncrustTrinket(trinket, gem.Type); ItemType.ResourceCreated = craft.Type; } Resource resource = ResourceLibrary.Resources[ItemType.ResourceCreated]; Creature.Inventory.Resources.AddResource(new ResourceAmount(resource, 1)); yield return(Status.Success); }
public IEnumerable <Status> CreateResources(List <ResourceAmount> stashed) { if (stashed == null || stashed.Count == 0) { yield return(Act.Status.Fail); yield break; } Item.SelectedResources = stashed; ResourceType ResourceCreated = Item.ItemType.ResourceCreated; switch (Item.ItemType.CraftActBehavior) { case CraftItem.CraftActBehaviors.Object: { Resource craft = Item.ItemType.ToResource(Creature.World, stashed); ResourceCreated = craft.Name; } break; case CraftItem.CraftActBehaviors.Trinket: { Resource craft = ResourceLibrary.GenerateTrinket(stashed.ElementAt(0).ResourceType, (Agent.Stats.Dexterity + Agent.Stats.Intelligence) / 15.0f * MathFunctions.Rand(0.5f, 1.75f)); ResourceCreated = craft.Name; } break; case CraftItem.CraftActBehaviors.Meal: { if (stashed.Count < 2) { yield return(Act.Status.Fail); yield break; } Resource craft = ResourceLibrary.CreateMeal(stashed.ElementAt(0).ResourceType, stashed.ElementAt(1).ResourceType); ResourceCreated = craft.Name; } break; case CraftItem.CraftActBehaviors.Ale: { Resource craft = ResourceLibrary.CreateAle(stashed.ElementAt(0).ResourceType); ResourceCreated = craft.Name; } break; case CraftItem.CraftActBehaviors.Bread: { Resource craft = ResourceLibrary.CreateBread(stashed.ElementAt(0).ResourceType); ResourceCreated = craft.Name; } break; case CraftItem.CraftActBehaviors.GemTrinket: { Resource gem = null; Resource trinket = null; foreach (ResourceAmount stashedResource in stashed) { if (ResourceLibrary.GetResourceByName(stashedResource.ResourceType).Tags.Contains(Resource.ResourceTags.Craft)) { trinket = ResourceLibrary.GetResourceByName(stashedResource.ResourceType); } if (ResourceLibrary.GetResourceByName(stashedResource.ResourceType).Tags.Contains(Resource.ResourceTags.Gem)) { gem = ResourceLibrary.GetResourceByName(stashedResource.ResourceType); } } if (gem == null || trinket == null) { yield return(Status.Fail); yield break; } Resource craft = ResourceLibrary.EncrustTrinket(trinket.Name, gem.Name); ResourceCreated = craft.Name; } break; case CraftItem.CraftActBehaviors.Normal: default: break; } Resource resource = ResourceLibrary.Resources[ResourceCreated]; Creature.Inventory.AddResource(new ResourceAmount(resource, Item.ItemType.CraftedResultsCount)); Creature.AI.AddXP((int)Item.ItemType.BaseCraftTime); yield return(Status.Success); }