Exemplo n.º 1
0
        static bool ItemDetailsDisplay_ShowDetails_Pre(ItemDetailsDisplay __instance)
        {
            TrySwapProtectionWithResistances(__instance.m_lastItem);

            #region quit
            if (_details.Value == Details.None || !__instance.m_lastItem.TryAssign(out var item) || !item.IsIngestible() && item.IsNot <Skill>())
            {
                return(true);
            }
            #endregion

            if (item.TryAs(out WaterContainer waterskin) &&
                waterskin.GetWaterItem().TryAssign(out var waterItem))
            {
                item = waterItem;
            }

            int rowIndex = 0;
            foreach (var row in _rowsCache.GetRows(item))
            {
                if (_details.Value.HasFlag(row.Detail))
                {
                    __instance.GetRow(rowIndex++).SetInfo(row.Label, row.Content);
                }
            }

            List <ItemDetailRowDisplay> detailRows = __instance.m_detailRows;
            for (int i = rowIndex; i < detailRows.Count; i++)
            {
                detailRows[i].Hide();
            }

            return(false);
        }
Exemplo n.º 2
0
 private void LegacyChestPanel_StartInit(On.LegacyChestPanel.orig_StartInit orig, LegacyChestPanel self)
 {
     orig(self);
     try
     {
         ItemDisplay        m_itemInChest       = (ItemDisplay)AccessTools.Field(typeof(LegacyChestPanel), "m_itemInChest").GetValue(self);
         ItemDetailsDisplay m_itemDetailDisplay = (ItemDetailsDisplay)AccessTools.Field(typeof(LegacyChestPanel), "m_itemDetailDisplay").GetValue(self);
         //AccessTools.Field(typeof(LegacyChestPanel), "m_itemInChest").SetValue(self, m_itemInChest);
         ItemDetailsPanelSpawner componentInChildren = self.GetComponentInChildren <ItemDetailsPanelSpawner>();
         if ((bool)componentInChildren)
         {
             m_itemDetailDisplay = componentInChildren.DetailPanel;
             ItemDisplay      item  = (ItemDisplay)AccessTools.Field(typeof(ItemDetailsDisplay), "itemDisplay").GetValue(m_itemDetailDisplay);
             ItemGroupDisplay group = (ItemGroupDisplay)AccessTools.Field(typeof(ItemDetailsDisplay), "groupDisplay").GetValue(m_itemDetailDisplay);
             OLogger.Log($"item={item == null}");
             OLogger.Log($"group={group == null}");
             m_itemInChest = group;
         }
         ItemDisplay itemInChest = m_itemInChest;
         itemInChest.onSelectCallback = (UnityAction <ItemDisplay>)Delegate.Combine(itemInChest.onSelectCallback, new UnityAction <ItemDisplay>(self.OnItemSelected));
         Transform transform = self.transform.Find("MiddlePanel/PlayerInventory/Header/lblTitle");
         if ((bool)transform)
         {
             //m_lblInventoryTitle = transform.GetComponent<Text>();
         }
     }
     catch (Exception ex)
     {
         OLogger.Error($"StartInit={ex.Message}");
     }
 }
Exemplo n.º 3
0
 public static void RefreshDisplay(ItemDetailsDisplay __instance, IItemDisplay _itemDisplay)
 {
     try
     {
         if (_itemDisplay != null && _itemDisplay.RefItem != null && _itemDisplay.RefItem.GetType().Name == "WaterContainer")
         {
             //WorkInProgress.Instance.MyLogger.LogDebug($"InitDisplayedStats");
             //Perishable m_perishScript = (Perishable)AccessTools.Field(typeof(Item), "m_perishScript").GetValue(_itemDisplay.RefItem);
             //WorkInProgress.Instance.MyLogger.LogDebug($" > IsPerishable={_itemDisplay.RefItem.IsPerishable}");
             //WorkInProgress.Instance.MyLogger.LogDebug($" > m_perishScript={m_perishScript != null}");
             //if (m_perishScript != null)
             //    WorkInProgress.Instance.MyLogger.LogDebug($" > DepletionRate={m_perishScript.DepletionRate}");
             //WorkInProgress.Instance.MyLogger.LogDebug($" > CurrentDurability={_itemDisplay.RefItem.CurrentDurability}");
             ItemDetailsDisplay.DisplayedInfos[] m_displayedInfos = (ItemDetailsDisplay.DisplayedInfos[])AccessTools.Field(typeof(Item), "m_displayedInfos").GetValue(_itemDisplay.RefItem);
             m_displayedInfos = new ItemDetailsDisplay.DisplayedInfos[3]
             {
                 ItemDetailsDisplay.DisplayedInfos.QuickSlot,
                 ItemDetailsDisplay.DisplayedInfos.Capacity,
                 ItemDetailsDisplay.DisplayedInfos.Content
             };
             AccessTools.Field(typeof(Item), "m_displayedInfos").SetValue(_itemDisplay.RefItem, m_displayedInfos);
         }
     }
     catch (Exception ex)
     {
         WorkInProgress.Instance.MyLogger.LogError("HideWaterDurability: " + ex.Message);
     }
 }
Exemplo n.º 4
0
        static bool ItemDetailsDisplay_GetPenaltyDisplay_Pre(ItemDetailsDisplay __instance, ref string __result, float _value, bool _negativeIsPositive, bool _showPercent)
        {
            #region quit
            if (!_effectivenessAffectsAllStats)
            {
                return(true);
            }
            #endregion

            string text = _value.Round().ToString();
            if (_value > 0)
            {
                text = "+" + text;
            }
            if (_showPercent)
            {
                text += "%";
            }

            Color color = Global.LIGHT_GREEN;
            if (_value < 0 && !_negativeIsPositive ||
                _value > 0 && _negativeIsPositive)
            {
                color = Global.LIGHT_RED;
            }

            __result = Global.SetTextColor(text, color);
            return(false);
        }
Exemplo n.º 5
0
        private static void AddTooltip(ItemDetailsDisplay __instance, String val)
        {
            List <ItemDetailRowDisplay> tooltip = Fields.INSTANCE.TOOLTIP.GetValue(__instance);

            ItemDetailRowDisplay statRow = Methods.INSTANCE.ItemDetailsDisplay_GetRow.Call(__instance, new object[] { tooltip.Count });

            statRow.SetInfo("", val);

            Fields.INSTANCE.TOOLTIP.SetValue(__instance, tooltip);
        }
 public static void RefreshDisplay(ItemDetailsDisplay __instance, IItemDisplay _itemDisplay)
 {
     try
     {
         AreaEnum areaN         = (AreaEnum)AreaManager.Instance.GetAreaIndexFromSceneName(SceneManagerHelper.ActiveSceneName);
         Text     m_lblItemName = (Text)AccessTools.Field(typeof(ItemDetailsDisplay), "m_lblItemName").GetValue(__instance);
         if (m_lblItemName == null || _itemDisplay == null || _itemDisplay.RefItem == null)
         {
             return;
         }
         #region Show inventory and stash quantities in the name
         if (!(_itemDisplay.RefItem is Skill))
         {
             int invQty   = __instance.LocalCharacter.Inventory.ItemCount(_itemDisplay.RefItem.ItemID);
             int stashQty = 0;
             if (InnRentStash.StashAreaToStashUID.ContainsKey(areaN) && InnRentStash.Instance.ConfigStashSharing.Value)
             {
                 TreasureChest stash = (TreasureChest)ItemManager.Instance.GetItem(InnRentStash.StashAreaToStashUID[areaN]);
                 if (stash != null)
                 {
                     stashQty = stash.ItemStackCount(_itemDisplay.RefItem.ItemID);
                 }
             }
             if (invQty + stashQty > 0)
             {
                 //InnRentStash.MyLogger.LogDebug($"{_itemDisplay.RefItem.DisplayName}: invQty={invQty} / stashQty={stashQty}");
                 m_lblItemName.text += $" ({invQty + stashQty})";
             }
         }
         #endregion
         #region Add Value/Weight Ratio information
         if (_itemDisplay.RefItem.Value > 0 && _itemDisplay.RefItem.Weight > 0 && _itemDisplay.RefItem.IsSellable)
         {
             List <ItemDetailRowDisplay> m_detailRows = (List <ItemDetailRowDisplay>)AccessTools.Field(typeof(ItemDetailsDisplay), "m_detailRows").GetValue(__instance);
             //ItemDetailRowDisplay row = (ItemDetailRowDisplay)AccessTools.Method(typeof(ItemDetailsDisplay), "GetRow").Invoke(__instance, new object[] { m_detailRows.Count });
             //row.SetInfo("Value rate", Math.Round(_itemDisplay.RefItem.Value / _itemDisplay.RefItem.Weight, 2).ToString());
         }
         #endregion
         #region Add Durability information
         if (_itemDisplay.RefItem.IsPerishable && _itemDisplay.RefItem.CurrentDurability > 0 &&
             !_itemDisplay.RefItem.DisplayedInfos.ToList().Contains(DisplayedInfos.Durability))
         {
             List <ItemDetailRowDisplay> m_detailRows = (List <ItemDetailRowDisplay>)AccessTools.Field(typeof(ItemDetailsDisplay), "m_detailRows").GetValue(__instance);
             //ItemDetailRowDisplay row = (ItemDetailRowDisplay)AccessTools.Method(typeof(ItemDetailsDisplay), "GetRow").Invoke(__instance, new object[] { m_detailRows.Count });
             //row.SetInfo(LocalizationManager.Instance.GetLoc("ItemStat_Durability"), GameTimetoDays(_itemDisplay.RefItem.CurrentDurability / _itemDisplay.RefItem.PerishScript.DepletionRate));
         }
         #endregion
     }
     catch (Exception ex)
     {
         //InnRentStash.MyLogger.LogError("RefreshDisplay: " + ex.Message);
     }
 }
Exemplo n.º 7
0
 private void LegacyChestPanel_Show(On.LegacyChestPanel.orig_Show orig, LegacyChestPanel self)
 {
     try
     {
         ItemDetailsDisplay m_itemDetailDisplay = (ItemDetailsDisplay)AccessTools.Field(typeof(LegacyChestPanel), "m_itemDetailDisplay").GetValue(self);
         Item m_lastItem = (Item)AccessTools.Field(typeof(ItemDetailsDisplay), "m_lastItem").GetValue(m_itemDetailDisplay);
         OLogger.Log($"Show={m_lastItem.HasMultipleUses}");
     }
     catch (Exception ex)
     {
         OLogger.Error($"LegacyChestPanel_Show={ex.Message}");
     }
     orig(self);
 }
Exemplo n.º 8
0
        private static void AddStatTooltip(ItemDetailsDisplay __instance, String stat, string val)
        {
            List <ItemDetailRowDisplay> tooltip = Fields.INSTANCE.TOOLTIP.GetValue(__instance);

            ItemDetailRowDisplay statRow = Methods.INSTANCE.ItemDetailsDisplay_GetRow.Call(__instance, new object[] { tooltip.Count });

            statRow.SetInfo(stat, val);

            ItemDetailRowDisplay durability = tooltip[tooltip.Count - 2];

            //tooltip[tooltip.Count - 2] = statRow;
            //tooltip[tooltip.Count - 1] = durability;

            Fields.INSTANCE.TOOLTIP.SetValue(__instance, tooltip);
        }
Exemplo n.º 9
0
        public static void Postfix(ItemDetailsDisplay __instance)
        {
            if (__instance == null)
            {
                Console.WriteLine("This shouldn't be null.");

                return;
            }

            if (__instance.LastItemDisplay == null)
            {
                return;
            }

            if (__instance.LastItemDisplay.RefItem is Equipment item)
            {
                if (!ItemUtils.IsValidGear(item))
                {
                    return;
                }

                int hp = (int)item.Stats.MaxHealthBonus;
                if (hp != 0)
                {
                    AddStatTooltip(__instance, "Bonus Health", hp + "");
                }


                DiabloItemExtension ext = item.GetComponent <DiabloItemExtension>();

                if (ext != null)
                {
                    Tier tier = Tier.GetTierOfItem(item);

                    String tiername = tier.GetItemTierName();

                    if (ext.IsValidRandomDrop())
                    {
                        tiername = "Magical " + tiername;
                    }

                    AddTooltip(__instance, tiername);
                }
            }
        }
Exemplo n.º 10
0
        static void ItemDetailsDisplay_RefreshDetails_Post(ItemDetailsDisplay __instance)
        {
            Item       item             = __instance.m_lastItem;
            GameObject durabilityHolder = __instance.m_durabilityHolder;

            #region quit
            if (!_barsToggle || item == null || durabilityHolder == null)
            {
                return;
            }
            #endregion

            // Cache
            RectTransform    rectTransform = durabilityHolder.GetComponent <RectTransform>();
            bool             isFood        = item.m_perishScript != null && item.IsNot <Equipment>();
            ModSetting <int> barSize       = isFood ? _freshnessBarSize : _durabilityBarSize;
            float            curve         = isFood ? FRESHNESS_BAR_SCALING_CURVE : DURABILITY_BAR_SCALING_CURVE;

            // Calculate automated values
            float rawSize = float.NaN;
            if (_freshnessTiedToLifespan && isFood)
            {
                float decayRate = item.PerishScript.m_baseDepletionRate;
                float decayTime = 100f / (decayRate * 24f);
                rawSize = decayTime / FRESHNESS_LIFESPAN_MAX;
            }
            else if (_durabilityTiedToMax && !isFood)
            {
                rawSize = item.MaxDurability / DURABILITY_MAX_MAX;
            }

            if (!rawSize.IsNaN())
            {
                barSize.Value = rawSize.Pow(curve).MapFrom01(0, 100f).Round();
            }

            // Assign
            float sizeOffset = barSize / 100f * BAR_MAX_SIZE.x - 1f;
            rectTransform.pivot      = BAR_PIVOT;
            rectTransform.localScale = new Vector2(1f + sizeOffset, _barThickness / 100f * BAR_MAX_SIZE.y);
        }
 public static void RefreshDetail(ItemDetailsDisplay __instance, int _rowIndex, DisplayedInfos _infoType)
 {
     try
     {
         if (_infoType != DisplayedInfos.Durability)
         {
             return;
         }
         Item m_lastItem = (Item)AccessTools.Field(typeof(ItemDetailsDisplay), "m_lastItem").GetValue(__instance);
         if (m_lastItem.IsPerishable && m_lastItem.CurrentDurability > 0)
         {
             ItemDetailRowDisplay row = (ItemDetailRowDisplay)AccessTools.Method(typeof(ItemDetailsDisplay), "GetRow").Invoke(__instance, new object[] { _rowIndex });
             Text m_lblDataName       = (Text)AccessTools.Field(typeof(ItemDetailRowDisplay), "m_lblDataName").GetValue(row);
             row.SetInfo(m_lblDataName.text, GameTimetoDays(m_lastItem.CurrentDurability / m_lastItem.PerishScript.DepletionRate));
         }
     }
     catch (Exception ex)
     {
         InnRentStash.MyLogger.LogError("RefreshDetail: " + ex.Message);
     }
 }
Exemplo n.º 12
0
        static bool ItemDetailsDisplay_RefreshDetail_Post(ItemDetailsDisplay __instance, ref bool __result, int _rowIndex, ItemDetailsDisplay.DisplayedInfos _infoType)
        {
            if (_infoType == ItemDetailsDisplay.DisplayedInfos.AttackSpeed &&
                _displayRelativeAttackSpeed)
            {
                float             attackSpeedOffset = __instance.cachedWeapon.BaseAttackSpeed - 1f;
                Weapon.WeaponType weaponType        = __instance.cachedWeapon.Type;
                if (attackSpeedOffset == 0 || weaponType == Weapon.WeaponType.Shield || weaponType == Weapon.WeaponType.Bow)
                {
                    return(false);
                }

                string text  = (attackSpeedOffset > 0 ? "+" : "") + attackSpeedOffset.ToString("P0");
                Color  color = attackSpeedOffset > 0 ? Global.LIGHT_GREEN : Global.LIGHT_RED;
                __instance.GetRow(_rowIndex).SetInfo(LocalizationManager.Instance.GetLoc("ItemStat_AttackSpeed"), Global.SetTextColor(text, color));
                __result = true;
                return(false);
            }
            else if ((_infoType == ItemDetailsDisplay.DisplayedInfos.Impact || _infoType == ItemDetailsDisplay.DisplayedInfos.ImpactResistance) && _normalizeImpactDisplay)
            {
                float value = _infoType == ItemDetailsDisplay.DisplayedInfos.Impact
                                         ? __instance.cachedWeapon.Impact
                                         : __instance.cachedEquipment.ImpactResistance;
                if (value <= 0)
                {
                    return(false);
                }

                TryCacheImpactIcon(__instance.CharacterUI);
                __instance.GetRow(_rowIndex).SetInfo("", value.Round(), _impactIcon);
                __result = true;
                return(false);
            }
            else if (_infoType == ItemDetailsDisplay.DisplayedInfos.Durability && _hideNumericalDurability)
            {
                return(false);
            }

            return(true);
        }
Exemplo n.º 13
0
        static bool Prefix(ItemDetailsDisplay __instance)
        {
            int _index = 0;

            if ((bool)(UnityEngine.Object)__instance.m_lastItem && __instance.m_lastItem.IsEnchanted && __instance.m_lastItem is Equipment lastItem)
            {
                for (int i = 0; i < lastItem.ActiveEnchantments.Count; ++i)
                {
                    Enchantment activeEnchantment = lastItem.ActiveEnchantments[i];
                    if (lastItem is Weapon weapon && (activeEnchantment.PresetID == 3 || activeEnchantment.PresetID == 4))
                    {
                        int num1;
                        switch (weapon.Type)
                        {
                        case Weapon.WeaponType.Dagger_OH:
                            num1 = VampiricTransmutationTable.DAGGER_THIRST_THRESHOLD;
                            break;

                        case Weapon.WeaponType.Bow:
                            num1 = VampiricTransmutationTable.BOW_THIRST_THRESHOLD;
                            break;

                        default:
                            num1 = VampiricTransmutationTable.DEFAULT_THIRST_THRESHOLD;
                            break;
                        }
                        float num2 = (float)weapon.DamageDealtTracking / (float)num1;
                        if ((double)num2 >= 0.0 && (double)num2 < 0.330000013113022)
                        {
                            __instance.GetEnchantmentRow(_index).SetInfo(LocalizationManager.Instance.GetLoc("Vampiric_01"), "");
                            ++_index;
                        }
                        else if ((double)num2 >= 0.330000013113022 && (double)num2 < 0.660000026226044)
                        {
                            __instance.GetEnchantmentRow(_index).SetInfo(LocalizationManager.Instance.GetLoc("Vampiric_02"), "");
                            ++_index;
                        }
                        else if ((double)num2 >= 0.660000026226044 && (double)num2 < 1.0)
                        {
                            __instance.GetEnchantmentRow(_index).SetInfo(LocalizationManager.Instance.GetLoc("Vampiric_03"), "");
                            ++_index;
                        }
                        else if ((double)num2 >= 1.0)
                        {
                            __instance.GetEnchantmentRow(_index).SetInfo(LocalizationManager.Instance.GetLoc("Vampiric_04"), "");
                            ++_index;
                        }
                        if (MenuManager.Instance.DisplayDebugInfo)
                        {
                            __instance.GetEnchantmentRow(_index).SetInfo("DEBUG Damage", (float)weapon.DamageDealtTracking);
                            ++_index;
                        }
                    }
                    DamageList _damages1 = new DamageList();
                    for (int index = 0; index < activeEnchantment.Effects.Length; ++index)
                    {
                        if (activeEnchantment.Effects[index] is AddStatusEffectBuildUp effect)
                        {
                            string loc = LocalizationManager.Instance.GetLoc("EnchantmentDescription_InflictStatus", string.Empty);
                            __instance.GetEnchantmentRow(_index).SetInfo(loc, effect.Status.StatusName);
                            ++_index;
                        }
                        else if (activeEnchantment.Effects[index] is AffectStatusEffectBuildUpResistance effect1)
                        {
                            string loc = LocalizationManager.Instance.GetLoc("EnchantmentDescription_StatusResist", effect1.StatusEffect.StatusName);
                            __instance.GetEnchantmentRow(_index).SetInfo(loc, effect1.Value.ToString() + "%");
                            ++_index;
                        }
                        else if (activeEnchantment.Effects[index] is ShootEnchantmentBlast effect2 && lastItem is Weapon weapon1)
                        {
                            DamageType.Types overrideDtype = effect2.BaseBlast.GetComponentInChildren <WeaponDamage>().OverrideDType;
                            float            _damage       = weapon1.GetDisplayedDamage().TotalDamage *effect2.DamageMultiplier;
                            _damages1.Add(new DamageType(overrideDtype, _damage));
                        }
                    }
                    if (_damages1.Count > 0)
                    {
                        __instance.GetEnchantmentRow(_index).SetInfo(LocalizationManager.Instance.GetLoc("EnchantmentDescription_Blast"), _damages1);
                        ++_index;
                    }
                    DamageList _damages2 = new DamageList();
                    if (lastItem is Weapon weapon2)
                    {
                        _damages2 = weapon2.GetEnchantmentDamageBonuses();
                    }
                    if (_damages2.Count > 0)
                    {
                        __instance.GetEnchantmentRow(_index).SetInfo(LocalizationManager.Instance.GetLoc("ItemStat_Damage"), _damages2);
                        ++_index;
                    }
                    if (activeEnchantment.DamageModifier.Count != 0)
                    {
                        __instance.GetEnchantmentRow(_index).SetInfo(LocalizationManager.Instance.GetLoc("ItemStat_DamageModifier"), activeEnchantment.DamageModifier, _displayPercent: true);
                        ++_index;
                    }
                    if (activeEnchantment.ElementalResistances.Count != 0)
                    {
                        __instance.GetEnchantmentRow(_index).SetInfo(LocalizationManager.Instance.GetLoc("ItemStat_DamageResistance"), activeEnchantment.ElementalResistances);
                        ++_index;
                    }
                    if ((double)activeEnchantment.GlobalStatusResistance != 0.0)
                    {
                        __instance.GetEnchantmentRow(_index).SetInfo(LocalizationManager.Instance.GetLoc("ItemStat_StatusResist"), activeEnchantment.GlobalStatusResistance);
                        ++_index;
                    }
                    if ((double)activeEnchantment.ManaAbsorbRatio != 0.0)
                    {
                        string loc = LocalizationManager.Instance.GetLoc("EnchantmentDescription_Absorb", activeEnchantment.ManaAbsorbRatio.ToString(), LocalizationManager.Instance.GetLoc("CharacterStat_Mana"));
                        __instance.GetEnchantmentRow(_index).SetInfo(loc, "");
                        ++_index;
                    }
                    if ((double)activeEnchantment.HealthAbsorbRatio != 0.0)
                    {
                        string loc = LocalizationManager.Instance.GetLoc("EnchantmentDescription_Absorb", activeEnchantment.HealthAbsorbRatio.ToString(), LocalizationManager.Instance.GetLoc("CharacterStat_Health"));
                        __instance.GetEnchantmentRow(_index).SetInfo(loc, "");
                        ++_index;
                    }
                    if ((double)activeEnchantment.StaminaAbsorbRatio != 0.0)
                    {
                        string loc = LocalizationManager.Instance.GetLoc("EnchantmentDescription_Absorb", activeEnchantment.StaminaAbsorbRatio.ToString(), LocalizationManager.Instance.GetLoc("CharacterStat_Stamina"));
                        __instance.GetEnchantmentRow(_index).SetInfo(loc, "");
                        ++_index;
                    }
                    for (int index = 0; index < activeEnchantment.StatModifications.Count; ++index)
                    {
                        float num = activeEnchantment.StatModifications[index].Value;
                        if (activeEnchantment.StatModifications[index].Name == Enchantment.Stat.CooldownReduction)
                        {
                            num = -num;
                        }
                        string _dataValue = ((double)num > 0.0 ? "+" : "") + num.ToString();
                        if (activeEnchantment.StatModifications[index].Type == Enchantment.StatModification.BonusType.Modifier)
                        {
                            _dataValue += "%";
                        }
                        switch (activeEnchantment.StatModifications[index].Name)
                        {
                        case Enchantment.Stat.Weight:
                            __instance.GetEnchantmentRow(_index).SetInfo(LocalizationManager.Instance.GetLoc("ItemStat_Weight"), _dataValue);
                            ++_index;
                            break;

                        case Enchantment.Stat.Durability:
                            __instance.GetEnchantmentRow(_index).SetInfo(LocalizationManager.Instance.GetLoc("ItemStat_Durability"), _dataValue);
                            ++_index;
                            break;

                        case Enchantment.Stat.ManaCostReduction:
                            __instance.GetEnchantmentRow(_index).SetInfo(LocalizationManager.Instance.GetLoc("ItemStat_ManaCost"), _dataValue.Replace("+", "-"));
                            ++_index;
                            break;

                        case Enchantment.Stat.StaminaCostReduction:
                            __instance.GetEnchantmentRow(_index).SetInfo(LocalizationManager.Instance.GetLoc("ItemStat_StaminaCost"), _dataValue.Replace("+", "-"));
                            ++_index;
                            break;

                        case Enchantment.Stat.CooldownReduction:
                            __instance.GetEnchantmentRow(_index).SetInfo(LocalizationManager.Instance.GetLoc("ItemStat_CooldownReduction"), _dataValue);
                            ++_index;
                            break;

                        case Enchantment.Stat.MovementSpeed:
                            __instance.GetEnchantmentRow(_index).SetInfo(LocalizationManager.Instance.GetLoc("ItemStat_MovementPenalty"), _dataValue);
                            ++_index;
                            break;

                        case Enchantment.Stat.AttackSpeed:
                            __instance.GetEnchantmentRow(_index).SetInfo(LocalizationManager.Instance.GetLoc("ItemStat_AttackSpeed"), _dataValue);
                            ++_index;
                            break;

                        case Enchantment.Stat.Impact:
                            __instance.GetEnchantmentRow(_index).SetInfo(LocalizationManager.Instance.GetLoc("ItemStat_Impact"), _dataValue);
                            ++_index;
                            break;

                        case Enchantment.Stat.StabilityRegen:
                            __instance.GetEnchantmentRow(_index).SetInfo(LocalizationManager.Instance.GetLoc("CharacterStat_StabilityRegen"), _dataValue);
                            ++_index;
                            break;

                        case Enchantment.Stat.HealthRegen:
                            __instance.GetEnchantmentRow(_index).SetInfo(LocalizationManager.Instance.GetLoc("CharacterStat_HealthRegen"), _dataValue);
                            ++_index;
                            break;

                        case Enchantment.Stat.ManaRegen:
                            __instance.GetEnchantmentRow(_index).SetInfo(LocalizationManager.Instance.GetLoc("CharacterStat_ManaRegen"), _dataValue);
                            ++_index;
                            break;

                        case Enchantment.Stat.Protection:
                            __instance.GetEnchantmentRow(_index).SetInfo(LocalizationManager.Instance.GetLoc("CharacterStat_Defense_Protection"), _dataValue);
                            ++_index;
                            break;

                        case Enchantment.Stat.CorruptionResistance:
                            __instance.GetEnchantmentRow(_index).SetInfo(LocalizationManager.Instance.GetLoc("ItemStat_CorruptionResistance"), _dataValue);
                            ++_index;
                            break;

                        case Enchantment.Stat.FoodDepletionRate:
                            __instance.GetEnchantmentRow(_index).SetInfo(LocalizationManager.Instance.GetLoc("CharacterStat_FoodEfficiency"), _dataValue);
                            ++_index;
                            break;

                        case Enchantment.Stat.DrinkDepletionRate:
                            __instance.GetEnchantmentRow(_index).SetInfo(LocalizationManager.Instance.GetLoc("CharacterStat_DrinkEfficiency"), _dataValue);
                            ++_index;
                            break;

                        case Enchantment.Stat.SleepDepletionRate:
                            __instance.GetEnchantmentRow(_index).SetInfo(LocalizationManager.Instance.GetLoc("CharacterStat_SleepEfficiency"), _dataValue);
                            ++_index;
                            break;

                        case Enchantment.Stat.PouchCapacity:
                            __instance.GetEnchantmentRow(_index).SetInfo(LocalizationManager.Instance.GetLoc("ItemStat_PouchCapacity"), _dataValue);
                            ++_index;
                            break;

                        case Enchantment.Stat.ImpactResistance:
                            __instance.GetEnchantmentRow(_index).SetInfo(LocalizationManager.Instance.GetLoc("CharacterStat_Defense_ImpactResistance"), _dataValue);
                            ++_index;
                            break;

                        case Enchantment.Stat.HeatProtection:
                            __instance.GetEnchantmentRow(_index).SetInfo(LocalizationManager.Instance.GetLoc("ItemStat_HeatProtection"), _dataValue);
                            ++_index;
                            break;

                        case Enchantment.Stat.ColdProtection:
                            __instance.GetEnchantmentRow(_index).SetInfo(LocalizationManager.Instance.GetLoc("ItemStat_ColdProtection"), _dataValue);
                            ++_index;
                            break;

                        case Enchantment.Stat.Barrier:
                            __instance.GetEnchantmentRow(_index).SetInfo(LocalizationManager.Instance.GetLoc("ItemStat_Barrier"), _dataValue);
                            ++_index;
                            break;
                        }
                    }
                    if (activeEnchantment.Indestructible)
                    {
                        __instance.GetEnchantmentRow(_index).SetInfo(LocalizationManager.Instance.GetLoc("EnchantmentDescription_Indestructible"), "");
                        ++_index;
                    }
                }
            }
            for (int index = _index; index < __instance.m_enchantmentDetailRows.Count; ++index)
            {
                if (__instance.m_enchantmentDetailRows[index].IsDisplayed)
                {
                    __instance.m_enchantmentDetailRows[index].Hide();
                }
            }
            return(false);
        }
Exemplo n.º 14
0
        public static void RefreshDisplay(ItemDetailsDisplay __instance, IItemDisplay _itemDisplay)
        {
            try
            {
                //Item m_lastItem = (Item)AccessTools.Field(typeof(ItemDetailsDisplay), "m_lastItem").GetValue(self);
                //OLogger.Log($"RefreshDisplay={m_lastItem.DisplayName}");

                //Item it = (Item)AccessTools.Field(typeof(ItemDetailsDisplay), "m_lastItem").GetValue(self);
                if (_itemDisplay != null && _itemDisplay.RefItem != null &&
                    _itemDisplay.RefItem.Value > 0 && _itemDisplay.RefItem.Weight > 0 && _itemDisplay.RefItem.IsSellable)
                {
                    //OLogger.Log(m_lblItemName.text);
                    //int invQty = self.LocalCharacter.Inventory.GetOwnedItems(_itemDisplay.RefItem.ItemID).Count;
                    //int stashQty = 0;
                    //if (StashAreaToStashUID.ContainsKey(m_currentArea))
                    //{
                    //    TreasureChest stash = (TreasureChest)ItemManager.Instance.GetItem(StashAreaToStashUID[m_currentArea]);
                    //    if (stash != null)
                    //    {
                    //        stashQty = stash.GetItemsFromID(_itemDisplay.RefItem.ItemID).Count;
                    //    }
                    //}
                    //m_lblItemName.text += $" ({invQty + stashQty})";
                    //List<ItemDetailRowDisplay> m_detailRows = (List<ItemDetailRowDisplay>)AccessTools.Field(typeof(ItemDetailsDisplay), "m_detailRows").GetValue(__instance);
                    //ItemDetailRowDisplay row = (ItemDetailRowDisplay)AccessTools.Method(typeof(ItemDetailsDisplay), "GetRow").Invoke(__instance, new object[] { m_detailRows.Count });
                    //row.SetInfo("Ratio", Math.Round(_itemDisplay.RefItem.Value / _itemDisplay.RefItem.Weight, 2).ToString());
                    //m_lblItemName.text += $" ({_itemDisplay.RefItem.Value}/{_itemDisplay.RefItem.Weight} = {_itemDisplay.RefItem.Value/_itemDisplay.RefItem.Weight})";
                }
                //if (m_lblItemName != null && _itemDisplay != null && _itemDisplay.RefItem != null &&
                //    _itemDisplay.RefItem.Value > 0)
                //{
                //    List<ItemDetailRowDisplay> m_detailRows = (List<ItemDetailRowDisplay>)AccessTools.Field(typeof(ItemDetailsDisplay), "m_detailRows").GetValue(self);
                //    ItemDetailRowDisplay row = (ItemDetailRowDisplay)AccessTools.Method(typeof(ItemDetailsDisplay), "GetRow").Invoke(self, new object[] { m_detailRows.Count });
                //    row.SetInfo("Value", _itemDisplay.RefItem.Value.ToString());
                //}
                //if (m_lblItemName != null && _itemDisplay != null && _itemDisplay.RefItem != null &&
                //    _itemDisplay.RefItem.IsPerishable)
                //{
                //    List<ItemDetailRowDisplay> m_detailRows = (List<ItemDetailRowDisplay>)AccessTools.Field(typeof(ItemDetailsDisplay), "m_detailRows").GetValue(__instance);
                //    ItemDetailRowDisplay row = (ItemDetailRowDisplay)AccessTools.Method(typeof(ItemDetailsDisplay), "GetRow").Invoke(__instance, new object[] { m_detailRows.Count });
                //    row.SetInfo("Durability", GameTimetoDays(_itemDisplay.RefItem.CurrentDurability / _itemDisplay.RefItem.PerishScript.DepletionRate));
                //}
                //if (m_lblItemName != null && _itemDisplay != null && _itemDisplay.RefItem != null)
                //{
                //    try
                //    {
                //        EffectSynchronizer2 test = new EffectSynchronizer2(_itemDisplay.RefItem);
                //        List<string> lstEffects = new List<string>();
                //        foreach (var item in test.LstEffects)
                //        {
                //            // AddStatusEffect
                //            // AffectStamina
                //            // AffectBurntHealth
                //            // AffectBurntStamina
                //            //
                //            //OLogger.Log(item.GetType().Name);
                //            if (item is AddStatusEffect)
                //            {
                //                //OLogger.Log((item as AddStatusEffect).Status);
                //                //OLogger.Log((item as AddStatusEffect).Status.StatusName);
                //                lstEffects.Add((item as AddStatusEffect).Status.StatusName);
                //            }
                //        }
                //        if (lstEffects.Count > 0)
                //        {
                //            //row.SetInfo("Effects", string.Join("\r\n", lstEffects.ToArray()));
                //            Text m_lblItemDesc = (Text)AccessTools.Field(typeof(ItemDetailsDisplay), "m_lblItemDesc").GetValue(self);
                //            if (m_lblItemDesc != null)
                //            {
                //                m_lblItemDesc.text += "\r\n\r\n" + string.Join("\r\n", lstEffects.ToArray());
                //            }
                //        }
                //        //OLogger.Log("DONE");
                //    }
                //    catch (Exception ex)
                //    {
                //        OLogger.Error("Item_OnUse:" + ex.Message);
                //    }
                //}
            }
            catch (Exception ex)
            {
                WorkInProgress.Instance.MyLogger.LogError("RefreshDisplay: " + ex.Message);
            }
        }//*/