public void Populate( Enemy enemy, Tuple <Player, int> playerData, Random rnd, string lootState, IList <LootDef> lootDefs ) { Lootstate = lootState; if (playerData == null) { return; } double rng = rnd.NextDouble(); double probability = .15; // 15% ILootDef[] pinkbag = new ILootDef[] { new Drops(new TierLoot(tier, itemType, probability)) }; if (rng <= probability) { pinkbag[0].Populate(enemy, playerData, rnd, Lootstate, lootDefs); } }
public void Populate(Enemy enemy, Tuple <Player, int> playerData, Random rnd, string lootState, IList <LootDef> lootDefs) { BagType = BagType.Blue; Lootstate = lootState; double probability = 0; var candidates = enemy.DamageCounter.GetPlayerData().ToList(); var rng = rnd.NextDouble(); var playersCount = candidates.Count; var enemyHP = (int)enemy.ObjectDesc.MaxHP; if (playersCount == 1) { probability = .0001; } else if (playersCount > 1 && playersCount <= 3) { probability = .0001 + .0001 * playersCount; } else { probability = .0002 + .000005 * playersCount; } var whitebag = new ILootDef[] { new Drops(new ItemLoot(itemName, probability * (eventChest ? .8 : 1), true)) }; whitebag[0].Populate(enemy, playerData, rnd, Lootstate, lootDefs); }
public void Populate( Enemy enemy, Tuple <Player, int> playerData, Random rnd, string lootState, IList <LootDef> lootDefs ) { Lootstate = lootState; if (playerData == null) { return; } double rng = rnd.NextDouble(); double probability = !alwaysDrop ? .25 : 1; // 25% (always drop: 100%) if (!single) { List <KeyValuePair <string, bool> > itemNamesDrops = new List <KeyValuePair <string, bool> >(); if (itemNames.Length != alwaysDrops.Length) { return; } for (int i = 0; i < itemNames.Length; i++) { itemNamesDrops.Add(new KeyValuePair <string, bool>(itemNames[i], alwaysDrops[i])); } List <ILootDef> validateItems = new List <ILootDef>(); foreach (KeyValuePair <string, bool> itemNamesDrop in itemNamesDrops) { validateItems.Add(new MostDamagers(3, new ItemLoot(itemNamesDrop.Key, !itemNamesDrop.Value ? .25 : 1))); } ILootDef[] bluebags = validateItems.ToArray(); if (rng <= probability) { foreach (var i in bluebags) { i.Populate(enemy, playerData, rnd, Lootstate, lootDefs); } } return; } ILootDef[] bluebag = new ILootDef[] { new MostDamagers(3, new ItemLoot(itemName, probability)) }; if (rng <= probability) { bluebag[0].Populate(enemy, playerData, rnd, Lootstate, lootDefs); } }
public ILootEntity Create(ILootDef lootDef, Vector3 position) { var loot = new LootEntity(lootDef, position); LootModel.AddEntity(loot); return(loot); }
public void Populate(Enemy enemy, Tuple <Player, int> playerData, Random rnd, string lootState, IList <LootDef> lootDefs) { BagType = BagType.Purple; Lootstate = lootState; var purpleBag = new ILootDef[] { new Drops(new TierLoot(tier, itemType, BagType)) }; purpleBag[0].Populate(enemy, playerData, rnd, lootState, lootDefs); }
public ILootEntity Create(ILootDef lootDef, Vector3 position) { var loot = LootCreator.Create(lootDef, position); var lootView = LootViewPool.Spawn(loot); LootViewModel.AddView(loot, lootView); return(loot); }
public void Populate( Enemy enemy, Tuple <Player, int> playerData, Random rnd, string lootState, IList <LootDef> lootDefs ) { Lootstate = lootState; if (playerData != null) { return; } Item[] candidates = GameServer.Manager.GameData.Items .Where(item => item.Value.SlotType == 9000) .Where(item => item.Value.MinStars <= (int)rarity) .Select(item => item.Value) .ToArray(); Item onlyOne = candidates[new Random().Next(0, candidates.Length)]; double rng = rnd.NextDouble(); double probability = 0; if (onlyOne.MinStars < 8) { probability = .15; // 15% } else if (onlyOne.MinStars >= 8 && onlyOne.MinStars < 12) { probability = .05; // 5% } else if (onlyOne.MinStars >= 12 && onlyOne.MinStars < 20) { probability = .01; // 1% } else { probability = .0025; // 0.25% } ILootDef[] eggbasket = new ILootDef[] { new Drops(new ItemLoot(onlyOne.DisplayId, probability)) }; if (rng <= probability) { eggbasket[0].Populate(enemy, playerData, rnd, Lootstate, lootDefs); } }
public void Populate(Enemy enemy, Tuple <Player, int> playerData, Random rnd, string lootState, IList <LootDef> lootDefs) { BagType = BagType.Blue; Lootstate = lootState; if (single) { var blueBag = new ILootDef[] { new Drops(new ItemLoot(itemName, alwaysDrop ? 1 : 0.1 * Settings.WOTMG_RATE)) }; blueBag[0].Populate(enemy, playerData, rnd, lootState, lootDefs); } else { var blueBag = new List <ILootDef>(); for (int i = 0; i < itemNames.Length; i++) { blueBag.Add(new Drops(new ItemLoot(itemNames[i], alwaysDrops[i] ? 1 : 0.1 * Settings.WOTMG_RATE))); } blueBag.Select(drop => { drop.Populate(enemy, playerData, rnd, lootState, lootDefs); return(drop); }).ToList(); } }
public void Populate(Enemy enemy, Tuple <Player, int> playerData, Random rnd, string lootState, IList <LootDef> lootDefs) { Lootstate = lootState; Item[] candidates = GameServer.Manager.GameData.Items .Where(item => item.Value.SlotType == 9000) .Where(item => item.Value.MinStars <= (int)rarity) .Select(item => item.Value) .ToArray(); var onlyOne = candidates[new Random().Next(0, candidates.Length)]; double probability = 0; if (onlyOne.MinStars < 8) { probability = .15; // 15% } else if (onlyOne.MinStars >= 8 && onlyOne.MinStars < 12) { probability = .05; // 5% } else if (onlyOne.MinStars >= 12 && onlyOne.MinStars < 20) { probability = .01; // 1% } else { probability = .0025; // 0.25% } probability *= Settings.WOTMG_RATE; var eggBasket = new ILootDef[] { new Drops(new ItemLoot(onlyOne.ObjectType, probability)) }; eggBasket[0].Populate(enemy, playerData, rnd, lootState, lootDefs); }
public LootEntity(ILootDef lootDef, Vector3 startPosition) { Def = lootDef.CheckNull(); StartPosition = startPosition; }