Exemplo n.º 1
0
        private Flags.ItemTypes GetRandomItem(Client collector)
        {
            int position = 0;

            foreach (Client client in Server.GetClientList().OrderByDescending(c => c.Leprechaun.RainbowProgress))
            {
                if (client == collector)
                {
                    break;
                }
                position++;
            }

            float specialProbability = Config.ItemsSpecialItemProbability[position] / 100.0f;

            float pigRobberyProb      = specialProbability * Config.ItemsProbabilityFactorPigRobbery;
            float invulnerabilityProb = specialProbability - pigRobberyProb;

            float[] propabilities            = new float[(int)Flags.ItemTypes.Count];
            float   propabilityPerNormalItem = (1.0f - specialProbability) / (propabilities.Length - 3);

            propabilities[0] = 0;
            for (int i = 1; i < propabilities.Length - 2; ++i)
            {
                propabilities[i] = propabilities[i - 1] + propabilityPerNormalItem;
            }
            propabilities[propabilities.Length - 2] = propabilities[propabilities.Length - 3] + invulnerabilityProb;
            propabilities[propabilities.Length - 1] = 1.0f;

            float r = (float)random.NextDouble();

            Flags.ItemTypes item = 0;
            for (int i = 1; i < propabilities.Length; ++i)
            {
                if (r <= propabilities[i])
                {
                    item = (Flags.ItemTypes)i;
                    break;
                }
            }

            return(item);
        }
Exemplo n.º 2
0
 public NetworkPacketCollectItem(byte itemId, Flags.ItemTypes itemType) : base(NetworkPacketTypes.CollectItem, itemId, size)
 {
     ItemType = itemType;
 }