Beispiel #1
0
        public void ParseShouldSetTextWithPlaceHoldersFromStatDataService()
        {
            const string expected = "Stat text with placeholders";

            string[] itemStringLines = this.itemStringBuilder
                                       .WithType("Oriath's Virtue's Eye")
                                       .WithItemLevel(73)
                                       .WithItemStat("Drops additional Currency Items", StatCategory.Monster)
                                       .WithDescription(Resources.OrganItemDescriptor)
                                       .BuildLines();

            this.statsDataServiceMock.Setup(x => x.GetStatData(It.IsAny <string>(), It.IsAny <bool>(), StatCategory.Monster.GetDisplayName()))
            .Returns(new StatData
            {
                Text = expected,
                Type = StatCategory.Monster.GetDisplayName()
            });

            ItemStats result = this.organItemStatsParser.Parse(itemStringLines, false);

            Assert.That(result.AllStats, Has.Count.EqualTo(1));
            Assert.That(result.MonsterStats, Has.Count.EqualTo(1));

            ItemStat stat = result.MonsterStats.First();

            Assert.That(stat.TextWithPlaceholders, Is.EqualTo(expected));
        }
Beispiel #2
0
        public async Task <List <ItemStatResponse> > CreateOrUpdateItemStats(List <CreateItemStatRequest> createItemStatsRequest)
        {
            var itemStatsToUpdate = new List <CreateItemStatRequest>();
            var itemStatsToCreate = new List <CreateItemStatRequest>();
            var allItemStates     = await _itemStatRepository.AllAsync();

            foreach (var itemStat in createItemStatsRequest)
            {
                ItemStat foundItemStat = allItemStates.Find(x => x.Code == itemStat.Code && x.DisplayName == itemStat.DisplayName && x.Name == itemStat.Name);
                if (foundItemStat != null)
                {
                    itemStat.Id = foundItemStat.Id;
                    itemStatsToUpdate.Add(itemStat);
                }
                else
                {
                    itemStatsToCreate.Add(itemStat);
                }
            }
            await _itemStatRepository.AddMultipleAsync(_mapper.Map <List <ItemStat> >(itemStatsToCreate));

            await _itemStatRepository.BulkUpdate(_mapper.Map <List <ItemStat> >(itemStatsToUpdate));

            return(_mapper.Map <List <ItemStatResponse> >(createItemStatsRequest));
        }
Beispiel #3
0
 public ItemStat(ItemStat itemStat)
 {
     this.Id   = itemStat.Id;
     this.Text = itemStat.Text;
     this.TextWithPlaceholders = itemStat.TextWithPlaceholders;
     this.StatCategory         = itemStat.StatCategory;
 }
Beispiel #4
0
    // 아이템 팔 때 발생하는 이벤트
    // 아이템을 팔 때, 캐릭터 스텟을 가져와서 캐릭터 스텟을 수정한다.
    public void OnDropItemSellEvent(Item draggedItem)
    {
        if (PlayerItems.Count == 0)
        {
            return;
        }

        // TODO : 골드 최대치 검사하는 코드 넣기

        // 아이템 해제 후 캐릭터 스텟 수정
        {
            if (Managers.Game.Player == null)
            {
                return;
            }

            CharacterStat characterStat = Managers.Game.Player.GetComponent <PlayerController>().Stat;
            ItemStat      itemStat      = draggedItem.ItemStat;

            characterStat.ItemUnEquipment(itemStat);
        }

        Managers.Game.Player.GetComponent <CharacterStat>().Gold += draggedItem.GetComponent <ItemStat>().Price;
        PlayerItems.Remove(draggedItem);

        // 아이템을 팔 때는 아이템이 사라지는 것이니까 특별히 아래와 같은 코드를 넣어줄 것
        draggedItem.ItemImage.raycastTarget    = true;
        draggedItem.ItemCanvas.sortingOrder    = 0;
        draggedItem.ItemCanvas.overrideSorting = false;

        Managers.Resource.Destroy(draggedItem.gameObject);
    }
Beispiel #5
0
 public Resource(string name, string symbol, double ore_threshold, double ingot_threshold)
 {
     this.name   = name;
     this.symbol = symbol;
     this.ore    = new ItemStat(ore_threshold);
     this.ingot  = new ItemStat(ingot_threshold);
 }
Beispiel #6
0
 private ItemStats.StatTranslator.AddStat Single(ItemStat stat)
 {
     return(delegate(ItemStats x, Poe_ItemMod m)
     {
         x.AddToMod(stat, (float)m.Value1);
     });
 }
Beispiel #7
0
 private ItemStats.StatTranslator.AddStat Average(ItemStat stat)
 {
     return(delegate(ItemStats x, Poe_ItemMod m)
     {
         x.AddToMod(stat, (float)(m.Value1 + m.Value2) / 2f);
     });
 }
        private void HandleChangeAttributes(GameSession session, PacketReader packet)
        {
            short lockIndex = -1;
            long  itemUid   = packet.ReadLong();

            packet.Skip(8);
            bool useLock = packet.ReadBool();

            if (useLock)
            {
                packet.Skip(1);
                lockIndex = packet.ReadShort();
            }

            if (session.Player.Inventory.Items.TryGetValue(itemUid, out Item item))
            {
                item.TimesAttributesChanged++;
                var newItem        = new Item(item);
                int attributeCount = newItem.Stats.BonusAttributes.Count;
                var rng            = new Random();
                for (int i = 0; i < attributeCount; i++)
                {
                    if (i == lockIndex)
                    {
                        continue;
                    }
                    // TODO: Don't RNG the same attribute twice
                    newItem.Stats.BonusAttributes[i] = ItemStat.Of((ItemAttribute)rng.Next(35), 0.01f);
                }

                session.StateStorage[NEW_ITEM_KEY] = newItem;
                session.Send(ChangeAttributesPacket.PreviewNewItem(newItem));
            }
        }
Beispiel #9
0
    public Dictionary <int, ItemStat> GetItemStats(int level)
    {
        SetStatConfigCollection(LoadResourceController.GetCharacterConfigCollection());

        if (itemDict == null)
        {
            itemDict = new Dictionary <int, ItemStat>();
        }

        for (int i = 0; i < statTypes.Length; i++)
        {
            var baseValue = statConfigCollection.GetStatConfigData(statTypes[i]).GetBaseValue(level);

            if (!itemDict.ContainsKey(statTypes[i]))
            {
                ItemStat itemStat = new ItemStat(baseValue, statTypes[i]);
                itemDict.Add(statTypes[i], itemStat);
            }
            else
            {
                itemDict[statTypes[i]].baseStat.RemoveAllModifiers();
                itemDict[statTypes[i]].baseStat.baseValue = baseValue;
            }
        }

        return(itemDict);
    }
        public static ItemStat GetItemStat(string item)
        {
            var stat = new ItemStat();

            for (int i = 0; i < item.Length; i++)
            {
                switch (item[i])
                {
                case '1':
                    stat.Count1++;
                    stat.Count++;
                    break;

                case '2':
                    stat.Count2++;
                    stat.Count++;
                    break;

                case '3':
                    stat.Count3++;
                    stat.Count++;
                    break;
                }
            }

            if (stat.Count > 0)
            {
                stat.Pct1 = Math.Round(stat.Count1 * 100D / stat.Count, 1);
                stat.Pct2 = Math.Round(stat.Count2 * 100D / stat.Count, 1);
                stat.Pct3 = Math.Round(stat.Count3 * 100D / stat.Count, 1);
            }

            return(stat);
        }
        public void ParseShouldAddResultFromPseudoItemStatsParserToResult()
        {
            ItemStat expected = new ItemStat(StatCategory.Pseudo)
            {
                Id = "test id"
            };

            string[] itemStringLines = this.itemStringBuilder
                                       .WithName("Titan Greaves")
                                       .WithItemLevel(75)
                                       .WithItemStat("statText", StatCategory.Explicit)
                                       .BuildLines();

            this.statsDataServiceMock.Setup(x => x.GetStatData(It.IsAny <string>(), It.IsAny <bool>(), It.IsAny <string[]>()))
            .Returns(new StatData());

            this.pseudoItemStatsParserMock.Setup(x => x.Parse(It.IsAny <IEnumerable <ItemStat> >()))
            .Returns(new List <ItemStat> {
                expected
            });

            ItemStats result = this.itemStatsParser.Parse(itemStringLines, false);

            Assert.That(result.AllStats, Contains.Item(expected));
        }
 public SingleValueItemStat(ItemStat itemStat) : base(itemStat)
 {
     if (itemStat is SingleValueItemStat singleValueItemStat)
     {
         this.Value = singleValueItemStat.Value;
     }
 }
Beispiel #13
0
    public static ItemStat Read(IBitReader reader, ushort id)
    {
        var itemStat = new ItemStat();
        var property = Core.MetaData.ItemStatCostData.GetById(id);

        if (property == null)
        {
            throw new Exception($"No ItemStatCost record found for id: {id} at bit {reader.Position - 9}");
        }
        itemStat.Id   = id;
        itemStat.Stat = property["Stat"].Value;
        int saveParamBitCount = property["Save Param Bits"].ToInt32();
        int encode            = property["Encode"].ToInt32();

        if (saveParamBitCount != 0)
        {
            int saveParam = reader.ReadInt32(saveParamBitCount);
            //todo is there a better way to identify skill tab stats.
            switch (property["descfunc"].ToInt32())
            {
            case 14:     //+[value] to [skilltab] Skill Levels ([class] Only) : stat id 188
                itemStat.SkillTab   = saveParam & 0x7;
                itemStat.SkillLevel = (saveParam >> 3) & 0x1fff;
                break;

            default:
                break;
            }
            switch (encode)
            {
            case 2:     //chance to cast skill
            case 3:     //skill charges
                itemStat.SkillLevel = saveParam & 0x3f;
                itemStat.SkillId    = (saveParam >> 6) & 0x3ff;
                break;

            case 1:
            case 4:     //by times
            default:
                itemStat.Param = saveParam;
                break;
            }
        }
        int saveBits = reader.ReadInt32(property["Save Bits"].ToInt32());

        saveBits -= property["Save Add"].ToInt32();
        switch (encode)
        {
        case 3:     //skill charges
            itemStat.MaxCharges = (saveBits >> 8) & 0xff;
            itemStat.Value      = saveBits & 0xff;
            break;

        default:
            itemStat.Value = saveBits;
            break;
        }
        return(itemStat);
    }
Beispiel #14
0
 public MinMaxValueItemStat(ItemStat itemStat) : base(itemStat)
 {
     if (itemStat is MinMaxValueItemStat minMaxValueItemStat)
     {
         this.MinValue = minMaxValueItemStat.MinValue;
         this.MaxValue = minMaxValueItemStat.MaxValue;
     }
 }
Beispiel #15
0
        public void CreateShouldSetIsEnabledTrueIfQueryRequestContainsFilter(ItemStat itemStat)
        {
            SearchQueryRequest queryRequest = GetQueryRequestWithStatFilter(itemStat.Id, new MinMaxFilter());

            StatFilterViewModel result = this.statFilterViewModelFactory.Create(itemStat, queryRequest);

            Assert.That(result.IsEnabled, Is.True);
        }
Beispiel #16
0
 private ItemStats.StatTranslator.AddStat Dual(ItemStat s1, ItemStat s2)
 {
     return(delegate(ItemStats x, Poe_ItemMod m)
     {
         x.AddToMod(s1, (float)m.Value1);
         x.AddToMod(s2, (float)m.Value2);
     });
 }
Beispiel #17
0
        public void CreateShouldNotReturnStatFilterViewModelIfItemStatIsItemStatWithoutValue()
        {
            var itemStat = new ItemStat(StatCategory.Explicit);

            StatFilterViewModel result = this.statFilterViewModelFactory.Create(itemStat, new SearchQueryRequest());

            Assert.IsNotNull(result);
            Assert.IsNotInstanceOf <MinMaxStatFilterViewModel>(result);
        }
        private static ItemStat GetSingleValueItemStat(ItemStat itemStat)
        {
            decimal?value = GetFirstNumericValue(itemStat.Text.Substring(itemStat.TextWithPlaceholders.IndexOf(Placeholder)));

            return(value.HasValue
                ? new SingleValueItemStat(itemStat)
            {
                Value = value.Value
            }
                : itemStat);
        }
Beispiel #19
0
 private ItemStats.StatTranslator.AddStat MultipleSame(params ItemStat[] stats)
 {
     return(delegate(ItemStats x, Poe_ItemMod m)
     {
         ItemStat[] stats2 = stats;
         for (int i = 0; i < stats2.Length; i++)
         {
             ItemStat stat = stats2[i];
             x.AddToMod(stat, (float)m.Value1);
         }
     });
 }
    public void ItemUnEquipment(ItemStat itemStat)
    {
        Hp        -= itemStat.Hp;
        Attack    -= itemStat.Attack;
        Defense   -= itemStat.Defense;
        MoveSpeed -= itemStat.MoveSpeed;

        AttackSpeed -= itemStat.AttackSpeed;
        Animator playerAnimator = Managers.Game.Player.GetComponent <PlayerController>().PlayerAnimator;

        playerAnimator.SetFloat("AttackSpeed", AttackSpeed);
    }
Beispiel #21
0
    void SetStat1(ItemStat firstStat)
    {
        Stat1forPickup = firstStat;
        string theName = "nada";

        switch (firstStat.TheStat)
        {
        case StatType.None:
        {
            theName = " ";
            break;
        }

        case StatType.SpellMod:
        {
            theName = "Spell Power";
            firstStat.StatAmount *= .3f;
            break;
        }

        case StatType.MeleeMod:
        {
            theName = "Attack Damage";
            firstStat.StatAmount *= .3f;
            break;
        }

        case StatType.MaxHP:
        {
            theName = "Max HP";
            firstStat.StatAmount *= 2;
            break;
        }

        case StatType.MaxLight:
        {
            theName = "Max Light";
            firstStat.StatAmount *= 1.3f;
            break;
        }
        }

        ToolTipTexts._ItemStat1 = theName;
        if (firstStat.StatAmount == 0)
        {
            ToolTipTexts._ItemAmount2 = " ";
        }
        else
        {
            ToolTipTexts._ItemAmount1 = firstStat.StatAmount.ToString();
        }
    }
Beispiel #22
0
    // 아이템을 살 때는 빈 곳 부터 채우기
    // 아이템 살 때 발생하는 이벤트
    // 아이템을 살 때, 동시에 캐릭터 스텟을 가져와ㅅ 캐릭터 스텟을 올려준다.
    public void OnDropItemBuyEvent(Item draggedItem)
    {
        if (PlayerItems.Count == 6)
        {
            Debug.Log("Full Inventory");
            return;
        }

        if (Managers.Game.Player.GetComponent <CharacterStat>().Gold < draggedItem.GetComponent <ItemStat>().Price)
        {
            Debug.Log("lack of Money");
            return;
        }

        Managers.Game.Player.GetComponent <CharacterStat>().Gold -= draggedItem.GetComponent <ItemStat>().Price;
        Item newItem = Managers.Resource.Instantiate($"Prefabs/Item/{draggedItem.name}").GetComponent <Item>();

        foreach (Transform child in transform.GetComponentInChildren <Transform>())
        {
            if (child.childCount == 0)
            {
                newItem.transform.SetParent(child);
                break;
            }

            else
            {
                continue;
            }
        }

        RectTransform rectTransform = newItem.GetComponent <RectTransform>();

        rectTransform.localPosition = Vector2.zero;
        rectTransform.localScale    = Vector3.one;

        PlayerItems.Add(newItem);

        // 아이템 장착 후 캐릭터 스텟 수정
        {
            if (Managers.Game.Player == null)
            {
                return;
            }

            CharacterStat characterStat = Managers.Game.Player.GetComponent <PlayerController>().Stat;
            // newItem은 아직 Start가 실행되지 않기 때문에, draggedItem으로 접근해야한다.
            ItemStat itemStat = draggedItem.ItemStat;

            characterStat.ItemEquipment(itemStat);
        }
    }
        public async Task GetStatDataShouldReturnCorrectStatDataForImplicitStat()
        {
            const StatCategory statCategory = StatCategory.Implicit;
            var implicitItemStat            = new ItemStat(statCategory)
            {
                Text = "3% increased Movement Speed"
            };
            var expected = new StatData {
                Id = "stat_12345678", Text = "#% increased Movement Speed", Type = statCategory.GetDisplayName().ToLower()
            };

            await this.GetStatDataShouldReturnCorrectStatData(implicitItemStat, expected);
        }
Beispiel #24
0
    public virtual ItemStat GetStatNextLevel(int level)
    {
        if (statConfigCollection == null)
        {
            statConfigCollection = LoadResourceController.GetStatConfigCollection();
        }

        // Get base data from scriptable object
        var      baseValue = statConfigCollection.GetStatConfigData(statType).GetBaseValue(level + 1);
        ItemStat itemStat  = new ItemStat(baseValue, statType);

        return(itemStat);
    }
        // Example: "item id:20000027"
        private static void ProcessItemCommand(GameSession session, string command)
        {
            Dictionary <string, string> config = command.ToMap();

            if (!int.TryParse(config.GetValueOrDefault("id", "20000027"), out int itemId))
            {
                return;
            }
            if (!ItemMetadataStorage.IsValid(itemId))
            {
                session.SendNotice("Invalid item: " + itemId);
                return;
            }

            // Add some bonus attributes to equips and pets
            ItemStats stats = new ItemStats();

            if (ItemMetadataStorage.GetTab(itemId) == InventoryTab.Gear ||
                ItemMetadataStorage.GetTab(itemId) == InventoryTab.Pets)
            {
                Random rng = new Random();
                stats.BonusAttributes.Add(ItemStat.Of((ItemAttribute)rng.Next(35), 0.01f));
                stats.BonusAttributes.Add(ItemStat.Of((ItemAttribute)rng.Next(35), 0.01f));
            }

            Item item = new Item(itemId)
            {
                CreationTime = DateTimeOffset.UtcNow.ToUnixTimeSeconds(),
                TransferFlag = TransferFlag.Splitable | TransferFlag.Tradeable,
                Stats        = stats,
                PlayCount    = itemId.ToString().StartsWith("35") ? 10 : 0
            };

            if (int.TryParse(config.GetValueOrDefault("rarity", "5"), out int rarity))
            {
                item.Rarity = rarity;
            }
            if (int.TryParse(config.GetValueOrDefault("amount", "1"), out int amount))
            {
                item.Amount = amount;
            }

            // Simulate looting item
            InventoryController.Add(session, item, true);

            /*if (session.Player.Inventory.Add(item))
             * {
             *  session.Send(ItemInventoryPacket.Add(item));
             *  session.Send(ItemInventoryPacket.MarkItemNew(item, item.Amount));
             * }*/
        }
        public async Task GetStatDataShouldReturnCorrectStatDataForEnchantedStat()
        {
            const StatCategory statCategory = StatCategory.Enchant;
            var craftedItemStat             = new ItemStat(statCategory)
            {
                Text = "10% increased Movement Speed"
            };

            var expected = new StatData {
                Id = "stat_1234", Text = "#% increased Movement Speed", Type = statCategory.GetDisplayName().ToLower()
            };

            await this.GetStatDataShouldReturnCorrectStatData(craftedItemStat, expected);
        }
        public async Task GetStatDataShouldReturnCorrectStatDataForMonsterStat()
        {
            const StatCategory statCategory = StatCategory.Monster;
            var monsterItemStat             = new ItemStat(statCategory)
            {
                Text = "Drops additional Currency Items"
            };

            var expected = new StatData {
                Id = "stat_2250533757", Text = "Drops additional Currency Items (×#)", Type = statCategory.GetDisplayName().ToLower()
            };

            await this.GetStatDataShouldReturnCorrectStatData(monsterItemStat, expected);
        }
        public async Task GetStatDataShouldReturnCorrectStatDataEvenIfTextWithPlaceholdersDoesNotFullyMatch()
        {
            const StatCategory statCategory = StatCategory.Implicit;
            var explicitItemStat            = new ItemStat(statCategory)
            {
                Text = "+10 to Maximum Mana per Green Socket"
            };

            var expected = new StatData {
                Id = "stat_2250533757", Text = "+# to Maximum Mana per Green Socket", Type = statCategory.GetDisplayName().ToLower()
            };

            await this.GetStatDataShouldReturnCorrectStatData(explicitItemStat, expected);
        }
        public StatFilterViewModel Create(ItemStat itemStat, SearchQueryRequest queryRequest)
        {
            StatFilterViewModel result;

            var matchingFilter = FindMatchingFilter(itemStat, queryRequest);

            (decimal minValue, decimal maxValue)? minMaxTuple = GetMinMaxTuple(itemStat);

            result = minMaxTuple.HasValue
                ? GetMinMaxStatFilterViewModel(itemStat, matchingFilter, minMaxTuple.Value)
                : GetStatFilterViewModel(itemStat, matchingFilter);

            return(result);
        }
Beispiel #30
0
    private static void HandleSearch(GameSession session, PacketReader packet)
    {
        int     minCategoryId   = packet.ReadInt();
        int     maxCategoryId   = packet.ReadInt();
        int     minLevel        = packet.ReadInt();
        int     maxLevel        = packet.ReadInt();
        JobFlag job             = (JobFlag)packet.ReadInt();
        int     rarity          = packet.ReadInt();
        int     minEnchantLevel = packet.ReadInt();
        int     maxEnchantLevel = packet.ReadInt();
        byte    minSockets      = packet.ReadByte();
        byte    maxSockets      = packet.ReadByte();
        string  name            = packet.ReadUnicodeString();
        int     startPage       = packet.ReadInt();
        long    sort            = packet.ReadLong();

        packet.ReadShort();
        bool additionalOptionsEnabled = packet.ReadBool();

        List <ItemStat> stats = new();

        if (additionalOptionsEnabled)
        {
            packet.ReadByte(); // always 1
            for (int i = 0; i < 3; i++)
            {
                int statId = packet.ReadInt();
                int value  = packet.ReadInt();
                if (value == 0)
                {
                    continue;
                }

                ItemStat stat = ReadStat(statId, value);
                if (stat == null)
                {
                    continue;
                }

                stats.Add(stat);
            }
        }

        List <string>             itemCategories = BlackMarketTableMetadataStorage.GetItemCategories(minCategoryId, maxCategoryId);
        List <BlackMarketListing> searchResults  = GameServer.BlackMarketManager.GetSearchedListings(itemCategories, minLevel, maxLevel, rarity, name, job,
                                                                                                     minEnchantLevel, maxEnchantLevel, minSockets, maxSockets, startPage, sort, additionalOptionsEnabled, stats);

        session.Send(BlackMarketPacket.SearchResults(searchResults));
    }
Beispiel #31
0
        public static int GetSocketBonus(ItemStat stat, int level)
        {
            switch (stat)
            {
                case ItemStat.AGILITY:
                    return 3922 + (level - 1) * 24;

                case ItemStat.STRENGTH:
                    return 3923 + (level - 1) * 24;

                case ItemStat.INTELLECT:
                    return 3924 + (level - 1) * 24;

                case ItemStat.SPIRIT:
                    return 3925 + (level - 1) * 24;

                case ItemStat.STAMINA:
                    return 3926 + (level - 1) * 24;

                case ItemStat.DEFENSE_RATING:
                    return 3927 + (level - 1) * 24;

                case ItemStat.DODGE_RATING:
                    return 3928 + (level - 1) * 24;

                case ItemStat.PARRY_RATING:
                    return 3929 + (level - 1) * 24;

                case ItemStat.BLOCK_RATING:
                    return 3930 + (level - 1) * 24;

                case ItemStat.HIT_MELEE_RATING:
                    return 3931 + (level - 1) * 24;

                case ItemStat.HIT_SPELL_RATING:
                    return 3932 + (level - 1) * 24;

                case ItemStat.CRIT_MELEE_RATING:
                    return 3933 + (level - 1) * 24;

                case ItemStat.CRIT_SPELL_RATING:
                    return 3934 + (level - 1) * 24;

                case ItemStat.HASTE_MELEE_RATING:
                    return 3935 + (level - 1) * 24;

                case ItemStat.HASTE_SPELL_RATING:
                    return 3936 + (level - 1) * 24;

                case ItemStat.EXPERTISE_RATING:
                    return 3937 + (level - 1) * 24;

                case ItemStat.ATTACK_POWER:
                    return 3938 + (level - 1) * 24;

                case ItemStat.SPELL_HEALING:
                    return 3939 + (level - 1) * 24;

                case ItemStat.SPELL_DAMAGE:
                    return 3940 + (level - 1) * 24;

                case ItemStat.MANA_REGEN:
                    return 3941 + (level - 1) * 24;

                case ItemStat.ARMOR_PENETRATION_RATING:
                    return 3942 + (level - 1) * 24;

                case ItemStat.HEALTH_REGEN:
                    return 3943 + (level - 1) * 24;

                case ItemStat.SPELL_PENETRATION:
                    return 3944 + (level - 1) * 24;

                case ItemStat.BLOCK_VALUE:
                    return 3945 + (level - 1) * 24;

                default:
                    return 0;
            }
        }
Beispiel #32
0
 private ItemStats.StatTranslator.AddStat Average(ItemStat stat)
 {
     return delegate(ItemStats x, ItemMod m)
     {
         x.AddToMod(stat, (float)(m.Value1 + m.Value2) / 2f);
     };
 }
Beispiel #33
0
 private void AddToMod(ItemStat stat, float value)
 {
     this.stats[(int)stat] += value;
 }
Beispiel #34
0
 public float GetStat(ItemStat stat)
 {
     return this.stats[(int)stat];
 }
Beispiel #35
0
 private ItemStats.StatTranslator.AddStat Single(ItemStat stat)
 {
     return delegate(ItemStats x, ItemMod m)
     {
         x.AddToMod(stat, (float)m.Value1);
     };
 }
Beispiel #36
0
 private ItemStats.StatTranslator.AddStat Dual(ItemStat s1, ItemStat s2)
 {
     return delegate(ItemStats x, ItemMod m)
     {
         x.AddToMod(s1, (float)m.Value1);
         x.AddToMod(s2, (float)m.Value2);
     };
 }