Exemplo n.º 1
0
        public static double AdjustDropChance(IFightResult looter, DroppableItem item, Monster dropper, int monsterAgeBonus)
        {
            var challengeBonus = looter.Fight.GetChallengesBonus();
            var idolsBonus     = looter.Fight.GetIdolsDropBonus();

            var looterPP = looter.Prospecting + ((looter.Prospecting * (challengeBonus + idolsBonus)) / 100d);

            var rate = item.GetDropRate((int)dropper.Grade.GradeId) * (looterPP / 100d) * ((monsterAgeBonus / 100d) + 1) * Rates.DropsRate;

            return(InvokeDropRateModifier(looter, item, rate));
        }
Exemplo n.º 2
0
    private GameObject SelectItem(DroppableItem item)
    {
        switch (item)
        {
        case DroppableItem.Doll:
            return(collectibleDoll);

        case DroppableItem.Weapon:
            return(collectibleWeapon[Random.Range(0, collectibleWeapon.Length)]);

        case DroppableItem.Accesory:
            return(collectibleAccesory);

        case DroppableItem.SpecialDoll:
            return(collectiblSpecialDoll);

        default:
            return(null);
        }
    }
Exemplo n.º 3
0
        public override void ExecuteAdd(TriggerBase trigger)
        {
            var monster = trigger.Get <MonsterTemplate>("monster");
            var drop    = new DroppableItem
            {
                ItemId          = (short)trigger.Get <ItemTemplate>("item").Id,
                ProspectingLock = trigger.Get <int>("lock"),
                DropLimit       = trigger.Get <int>("limit"),
                RollsCounter    = trigger.Get <int>("rolls"),
                DropGroup       = trigger.Get <int>("group"),
                MonsterOwner    = monster,
            };

            drop.SetDropRate(trigger.Get <double>("rate"));

            WorldServer.Instance.IOTaskPool.AddMessage(
                () =>
            {
                MonsterManager.Instance.AddMonsterDrop(drop);
                monster.DroppableItems.Add(drop);
                trigger.Reply("Drop {0} added", drop.Id);
            });
        }
Exemplo n.º 4
0
        public static double InvokeDropRateModifier(IFightResult looter, DroppableItem item, double rate)
        {
            var handler = DropRateModifier;

            return(handler != null?handler(looter, item, rate) : rate);
        }
Exemplo n.º 5
0
 public void RemoveMonsterDrop(DroppableItem drop)
 {
     Database.Delete(drop);
     m_droppableItems.Remove(drop.Id);
 }
Exemplo n.º 6
0
 public void AddMonsterDrop(DroppableItem drop)
 {
     Database.Insert(drop);
     m_droppableItems.Add(drop.Id, drop);
 }
        public static double InvokeDropRateModifier(IFightResult looter, DroppableItem item, double rate)
        {
            Func <IFightResult, DroppableItem, double, double> dropRateModifier = FightFormulas.DropRateModifier;

            return((dropRateModifier != null) ? dropRateModifier(looter, item, rate) : rate);
        }
        public static double AdjustDropChance(IFightResult looter, DroppableItem item, Monster dropper, int bonus)
        {
            double rate = item.GetDropRate((int)dropper.Grade.GradeId) * ((double)looter.Prospecting / 100.0) * ((double)bonus / 100.0 + 1.0) * (double)Rates.DropsRate;

            return(FightFormulas.InvokeDropRateModifier(looter, item, rate));
        }