// // Licensed under the MIT License. See LICENSE file in the project root for full license information. // namespace MUnique.OpenMU.GameLogic; /// /// The interface for a drop generator. /// public interface IDropGenerator { /// /// Gets the item drops which are generated when a monster got killed by a player. /// /// The monster which got killed. /// The experience which the player gained form the kill (relevant for the money drop). /// The player who killed the monster. /// /// The item drops and money which are generated when a monster got killed by a player. /// ValueTask<(IEnumerable Items, uint? Money)> GenerateItemDropsAsync(MonsterDefinition monster, int gainedExperience, Player player); /// /// Generates an item based on a . /// /// The which defines which item should be generated. /// The generated item or . Item? GenerateItemDrop(DropItemGroup group); /// /// Generates an item based on a s. /// /// The s which define which item should be generated. /// The generated item, money and drop effect of the selected group. (Item? Item, uint? Money, ItemDropEffect DropEffect) GenerateItemDrop(IEnumerable groups); }