Beispiel #1
0
        public static Reward ReadReward(BdatCollection tables, int rewardSetId)
        {
            BTL_ChBtlRewardSet set = tables.BTL_ChBtlRewardSet[rewardSetId];
            var reward             = new Reward
            {
                Id           = rewardSetId,
                MinGold      = (int)set.GoldMin,
                MaxGold      = (int)set.GoldMax,
                MinItems     = set.ItemNumMin,
                MaxItems     = set.ItemNumMax,
                AppointCount = set.AppointItemNum,
                AppointItem  = ItemData.GetName(set.AppointItem, tables)
            };

            int minValue = set.ItemValueMin;
            int maxValue = set.ItemValueMax;

            reward.Items = tables.BTL_ChBtlRewardItem.Where(x => x.ItemValue >= minValue && x.ItemValue <= maxValue)
                           .Select(x => new Item {
                Id = x.ItemID, Prob = x.Param1
            }).ToList();

            foreach (Item item in reward.Items)
            {
                ItemTypeXb2 cat = ItemData.GetItemCategory(item.Id);
                if (cat == set._UpCategory1 || cat == set._UpCategory2)
                {
                    item.Prob *= 2;
                }
                if (cat == set._DownCategory1 || cat == set._DownCategory2)
                {
                    item.Prob /= 2;
                }

                if (item.Id == set.UpItemID1 ||
                    item.Id == set.UpItemID2 ||
                    item.Id == set.UpItemID3 ||
                    item.Id == set.UpItemID4)
                {
                    item.Prob *= 2;
                }
            }

            int totalProb = reward.Items.Sum(x => x.Prob);

            foreach (Item item in reward.Items)
            {
                item.Name    = ItemData.GetName(item.Id, tables);
                item.Percent = (float)item.Prob / totalProb;
            }

            return(reward);
        }
Beispiel #2
0
        public static string GetName(int id, BdatCollection tables)
        {
            ItemTypeXb2 category  = GetItemCategory(id);
            string      tableName = GetCategoryTable(category);
            string      name      = tables[tableName].GetBdatItem(id).Read <Message>("_Name").name;

            if (category == ItemTypeXb2.PcEquip)
            {
                name += $" ({tables.ITM_PcEquip[id]._Rarity.name})";
            }

            return(name);
        }
Beispiel #3
0
        public static string GetCategoryTable(ItemTypeXb2 category)
        {
            switch (category)
            {
            case ItemTypeXb2.PcWpnChip: return("ITM_PcWpnChip");

            case ItemTypeXb2.PcEquip: return("ITM_PcEquip");

            case ItemTypeXb2.EquipOrb: return("ITM_OrbEquip");

            case ItemTypeXb2.PcWpn: return("ITM_PcWpn");

            case ItemTypeXb2.Salvage: return("ITM_SalvageList");

            case ItemTypeXb2.Precious: return("ITM_PreciousList");

            case ItemTypeXb2.Collection: return("ITM_CollectionList");

            case ItemTypeXb2.Tresure: return("ITM_TresureList");

            case ItemTypeXb2.EmptyOrb: return("ITM_Orb");

            case ItemTypeXb2.Favorite: return("ITM_FavoriteList");

            case ItemTypeXb2.Crystal: return("ITM_CrystalList");

            case ItemTypeXb2.Booster: return("ITM_BoosterList");

            case ItemTypeXb2.Info: return("ITM_InfoList");

            case ItemTypeXb2.Event: return("ITM_EventList");

            case ItemTypeXb2.HanaRole: return("ITM_HanaRole");

            case ItemTypeXb2.HanaAtr: return("ITM_HanaAtr");

            case ItemTypeXb2.HanaArtsEnh: return("ITM_HanaArtsEnh");

            case ItemTypeXb2.HanaNArtsSet: return("ITM_HanaNArtsSet");

            case ItemTypeXb2.HanaAssist: return("ITM_HanaAssist");

            default:
                throw new ArgumentOutOfRangeException(nameof(category), category, null);
            }
        }