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)); }
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); } }
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); }); }
public static double InvokeDropRateModifier(IFightResult looter, DroppableItem item, double rate) { var handler = DropRateModifier; return(handler != null?handler(looter, item, rate) : rate); }
public void RemoveMonsterDrop(DroppableItem drop) { Database.Delete(drop); m_droppableItems.Remove(drop.Id); }
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)); }