Ejemplo n.º 1
0
        internal void SpawnBounty(Area area, int floor = 0)
        {
            if (bounties == null || bounties.Length < 1 || area.IsNonHostileArea() || area.GetPopulation(Neitsillia.Areas.AreaExtentions.Population.Type.Bounties).Count > 30 ||
                Program.Chance(50 + floor))
            {
                return;
            }
            Random rng = Program.rng;

            NPC bounty = NPC.GenerateNPC(area.level, bounties[rng.Next(bounties.Length)]);

            if (extraBountyDrops != null && extraBountyDrops.Length > 0)
            {
                StackedObject <string, int> so = extraBountyDrops[rng.Next(extraBountyDrops.Length)];
                AddItem(bounty, so.item, so.count);
            }
            if (uncommonBountyDrops != null && uncommonBountyDrops.Length > 0 && rng.Next(101) <= 45)
            {
                AddItem(bounty, uncommonBountyDrops[rng.Next(uncommonBountyDrops.Length)], 1);
            }
            if (rareBountyDrops != null && rareBountyDrops.Length > 0 && rng.Next(101) <= 15)
            {
                AddItem(bounty, rareBountyDrops[rng.Next(rareBountyDrops.Length)], 1);
            }

            bounty.Evolve(floor / 10, skaviCat: area.name);

            area.GetPopulation(Neitsillia.Areas.AreaExtentions.Population.Type.Bounties).Add(bounty);

            _ = Handlers.UniqueChannels.Instance.SendMessage("Population", $"Event Bounty {bounty.name} Spawned @ {area.name}");
        }
Ejemplo n.º 2
0
        private int FindMaterial(Player player, StackedObject <string, int> materials)
        {
            int index = player.inventory.FindIndex(materials.item);

            if (index > -1 && player.inventory.GetCount(index) >= materials.count)
            {
                return(index);
            }
            return(-1);
        }
Ejemplo n.º 3
0
 internal void ConsumeSchematicItems(Player player, int materialMultiplier)
 {
     for (int i = 0; i < 5; i++)
     {
         StackedObject <string, int> mats = GetMaterial(i);
         if (mats.count > 0)
         {
             player.inventory.Remove(FindMaterial(player, mats), mats.count);
         }
     }
 }
Ejemplo n.º 4
0
        public string CheckPlayerInventoryForMaterial(Player player, int materialAmountModifier = 1)
        {
            string result = null;

            for (int i = 0; i < 5; i++)
            {
                StackedObject <string, int> mats = GetMaterial(i);
                mats.count *= materialAmountModifier;
                if (mats.count > 0 && FindMaterial(player, mats) < 0)
                {
                    result += $"Missing required {mats.count}x {mats.item} {Environment.NewLine}";
                }
            }
            return(result);
        }