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); }
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}"); } }
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); } }
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); }
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); } }
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); }
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); }
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); } } }
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); } }
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); }
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); }
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); } }//*/