public static Dictionary <DamageElement, float> GetIncreaseResistances(this Item equipmentItem, short level, float rate) { Dictionary <DamageElement, float> result = new Dictionary <DamageElement, float>(); if (equipmentItem != null && equipmentItem.IsEquipment()) { result = GameDataHelpers.CombineResistances(equipmentItem.increaseResistances, result, level, rate); } return(result); }
public static Dictionary <DamageElement, float> GetIncreaseResistances(this Buff buff, short level) { return(GameDataHelpers.CombineResistances(buff.increaseResistances, new Dictionary <DamageElement, float>(), level, 1f)); }
protected override void UpdateData() { if (Level <= 0) { onSetLevelZeroData.Invoke(); } else { onSetNonLevelZeroData.Invoke(); } if (InventoryType != InventoryType.StorageItems) { if (EquipmentItem != null) { if (InventoryType != InventoryType.NonEquipItems) { onSetEquippedData.Invoke(); } else { onSetUnEquippedData.Invoke(); } } else { onSetUnEquippableData.Invoke(); } } else { onSetStorageItemData.Invoke(); } if (uiTextTitle != null) { string str = string.Format( LanguageManager.GetText(formatKeyTitle), Item == null ? LanguageManager.GetUnknowTitle() : Item.Title); if (!dontAppendRefineLevelToTitle && EquipmentItem != null && Level > 1) { str = string.Format( LanguageManager.GetText(formatKeyTitleWithRefineLevel), (Level - 1).ToString("N0")); } uiTextTitle.text = str; } if (uiTextDescription != null) { uiTextDescription.text = string.Format( LanguageManager.GetText(formatKeyDescription), Item == null ? LanguageManager.GetUnknowDescription() : Item.Description); } if (uiTextRarity != null) { uiTextRarity.text = string.Format( LanguageManager.GetText(formatKeyRarityTitle), Item == null ? LanguageManager.GetUnknowTitle() : Item.RarityTitle); } if (uiTextLevel != null) { if (EquipmentItem != null) { if (showLevelAsDefault) { uiTextLevel.text = string.Format( LanguageManager.GetText(formatKeyLevel), Level.ToString("N0")); } else { uiTextLevel.text = string.Format( LanguageManager.GetText(formatKeyRefineLevel), (Level - 1).ToString("N0")); } } else if (PetItem != null) { uiTextLevel.text = string.Format( LanguageManager.GetText(formatKeyLevel), Level.ToString("N0")); } uiTextLevel.gameObject.SetActive(EquipmentItem != null || PetItem != null); } if (imageIcon != null) { Sprite iconSprite = Item == null ? null : Item.icon; imageIcon.gameObject.SetActive(iconSprite != null); imageIcon.sprite = iconSprite; } if (uiTextItemType != null) { if (Item != null) { switch (Item.itemType) { case ItemType.Junk: uiTextItemType.text = string.Format( LanguageManager.GetText(formatKeyItemType), LanguageManager.GetText(UILocaleKeys.UI_ITEM_TYPE_JUNK.ToString())); break; case ItemType.Armor: uiTextItemType.text = string.Format( LanguageManager.GetText(formatKeyItemType), ArmorItem.ArmorType.Title); break; case ItemType.Weapon: uiTextItemType.text = string.Format( LanguageManager.GetText(formatKeyItemType), WeaponItem.WeaponType.Title); break; case ItemType.Shield: uiTextItemType.text = string.Format( LanguageManager.GetText(formatKeyItemType), LanguageManager.GetText(UILocaleKeys.UI_ITEM_TYPE_SHIELD.ToString())); break; case ItemType.Potion: uiTextItemType.text = string.Format( LanguageManager.GetText(formatKeyItemType), LanguageManager.GetText(UILocaleKeys.UI_ITEM_TYPE_POTION.ToString())); break; case ItemType.Ammo: uiTextItemType.text = string.Format( LanguageManager.GetText(formatKeyItemType), LanguageManager.GetText(UILocaleKeys.UI_ITEM_TYPE_AMMO.ToString())); break; case ItemType.Building: uiTextItemType.text = string.Format( LanguageManager.GetText(formatKeyItemType), LanguageManager.GetText(UILocaleKeys.UI_ITEM_TYPE_BUILDING.ToString())); break; case ItemType.Pet: uiTextItemType.text = string.Format( LanguageManager.GetText(formatKeyItemType), LanguageManager.GetText(UILocaleKeys.UI_ITEM_TYPE_PET.ToString())); break; case ItemType.SocketEnhancer: uiTextItemType.text = string.Format( LanguageManager.GetText(formatKeyItemType), LanguageManager.GetText(UILocaleKeys.UI_ITEM_TYPE_SOCKET_ENHANCER.ToString())); break; } } } if (uiTextSellPrice != null) { uiTextSellPrice.text = string.Format( LanguageManager.GetText(formatKeySellPrice), Item == null ? "0" : Item.sellPrice.ToString("N0")); } if (uiTextStack != null) { string stackString = ""; if (Item == null) { stackString = string.Format( LanguageManager.GetText(formatKeyStack), "0", "0"); } else { stackString = string.Format( LanguageManager.GetText(formatKeyStack), CharacterItem.amount.ToString("N0"), Item.maxStack); } uiTextStack.text = stackString; uiTextStack.gameObject.SetActive(showAmountWhenMaxIsOne || (Item != null && Item.maxStack > 1)); } if (uiTextDurability != null) { string durabilityString = ""; if (Item == null) { durabilityString = string.Format( LanguageManager.GetText(formatKeyDurability), "0", "0"); } else { durabilityString = string.Format( LanguageManager.GetText(formatKeyDurability), CharacterItem.durability.ToString("N0"), Item.maxDurability); } uiTextDurability.text = durabilityString; uiTextDurability.gameObject.SetActive(EquipmentItem != null && Item.maxDurability > 0); } if (uiTextWeight != null) { uiTextWeight.text = string.Format( LanguageManager.GetText(formatKeyWeight), Item == null ? "0" : Item.weight.ToString("N2")); } if (uiRequirement != null) { if (EquipmentItem == null || (EquipmentItem.requirement.level == 0 && EquipmentItem.requirement.character == null && EquipmentItem.CacheRequireAttributeAmounts.Count == 0)) { uiRequirement.Hide(); } else { uiRequirement.Show(); uiRequirement.Data = EquipmentItem; } } if (uiStats != null) { CharacterStats stats = CharacterStats.Empty; if (EquipmentItem != null) { stats = EquipmentItem.GetIncreaseStats(Level, CharacterItem.GetEquipmentBonusRate()); } else if (SocketEnhancerItem != null) { stats = SocketEnhancerItem.socketEnhanceEffect.stats; } if (stats.IsEmpty()) { // Hide ui if stats is empty uiStats.Hide(); } else { uiStats.Show(); uiStats.Data = stats; } } if (uiIncreaseAttributes != null) { Dictionary <Attribute, short> attributes = null; if (EquipmentItem != null) { attributes = EquipmentItem.GetIncreaseAttributes(Level, CharacterItem.GetEquipmentBonusRate()); } else if (SocketEnhancerItem != null) { attributes = GameDataHelpers.CombineAttributes(SocketEnhancerItem.socketEnhanceEffect.attributes, attributes, 1f); } if (attributes == null || attributes.Count == 0) { // Hide ui if attributes is empty uiIncreaseAttributes.Hide(); } else { uiIncreaseAttributes.Show(); uiIncreaseAttributes.Data = attributes; } } if (uiIncreaseResistances != null) { Dictionary <DamageElement, float> resistances = null; if (EquipmentItem != null) { resistances = EquipmentItem.GetIncreaseResistances(Level, CharacterItem.GetEquipmentBonusRate()); } else if (SocketEnhancerItem != null) { resistances = GameDataHelpers.CombineResistances(SocketEnhancerItem.socketEnhanceEffect.resistances, resistances, 1f); } if (resistances == null || resistances.Count == 0) { // Hide ui if resistances is empty uiIncreaseResistances.Hide(); } else { uiIncreaseResistances.Show(); uiIncreaseResistances.Data = resistances; } } if (uiIncreaseDamageAmounts != null) { Dictionary <DamageElement, MinMaxFloat> damageAmounts = null; if (EquipmentItem != null) { damageAmounts = EquipmentItem.GetIncreaseDamages(Level, CharacterItem.GetEquipmentBonusRate()); } else if (SocketEnhancerItem != null) { damageAmounts = GameDataHelpers.CombineDamages(SocketEnhancerItem.socketEnhanceEffect.damages, damageAmounts, 1f); } if (damageAmounts == null || damageAmounts.Count == 0) { // Hide ui if damage amounts is empty uiIncreaseDamageAmounts.Hide(); } else { uiIncreaseDamageAmounts.Show(); uiIncreaseDamageAmounts.Data = damageAmounts; } } if (uiIncreaseSkillLevels != null) { Dictionary <Skill, short> skillLevels = null; if (EquipmentItem != null) { skillLevels = EquipmentItem.GetIncreaseSkills(); } else if (SocketEnhancerItem != null) { skillLevels = GameDataHelpers.CombineSkills(SocketEnhancerItem.socketEnhanceEffect.skills, skillLevels); } if (skillLevels == null || skillLevels.Count == 0) { // Hide ui if skill levels is empty uiIncreaseSkillLevels.Hide(); } else { uiIncreaseSkillLevels.Show(); uiIncreaseSkillLevels.Data = skillLevels; } } if (uiEquipmentSet != null) { if (EquipmentItem == null || EquipmentItem.equipmentSet == null || EquipmentItem.equipmentSet.effects.Length == 0) { // Only equipment item has equipment set data uiEquipmentSet.Hide(); } else { uiEquipmentSet.Show(); int equippedCount = 0; Character.CacheEquipmentSets.TryGetValue(EquipmentItem.equipmentSet, out equippedCount); uiEquipmentSet.Data = new EquipmentSetWithEquippedCountTuple(EquipmentItem.equipmentSet, equippedCount); } } if (uiEquipmentSockets != null) { if (EquipmentItem == null || EquipmentItem.maxSocket <= 0) { uiEquipmentSockets.Hide(); } else { uiEquipmentSockets.Show(); uiEquipmentSockets.Data = new EnhancedSocketsWithMaxSocketTuple(CharacterItem.Sockets, EquipmentItem.maxSocket); } } if (uiDamageAmounts != null) { if (WeaponItem == null) { uiDamageAmounts.Hide(); } else { uiDamageAmounts.Show(); KeyValuePair <DamageElement, MinMaxFloat> keyValuePair = WeaponItem.GetDamageAmount(Level, CharacterItem.GetEquipmentBonusRate(), null); uiDamageAmounts.Data = new DamageElementAmountTuple(keyValuePair.Key, keyValuePair.Value); } } if (PetItem != null && PetItem.petEntity != null) { int[] expTree = GameInstance.Singleton.ExpTree; int currentExp = 0; int nextLevelExp = 0; if (CharacterItem.GetNextLevelExp() > 0) { currentExp = CharacterItem.exp; nextLevelExp = CharacterItem.GetNextLevelExp(); } else if (Level - 2 > 0 && Level - 2 < expTree.Length) { int maxExp = expTree[Level - 2]; currentExp = maxExp; nextLevelExp = maxExp; } if (uiTextExp != null) { uiTextExp.text = string.Format( LanguageManager.GetText(formatKeyExp), currentExp.ToString("N0"), nextLevelExp.ToString("N0")); uiTextExp.gameObject.SetActive(true); } } else { if (uiTextExp != null) { uiTextExp.gameObject.SetActive(false); } } if (clones != null && clones.Length > 0) { for (int i = 0; i < clones.Length; ++i) { if (clones[i] == null) { continue; } clones[i].Data = Data; } } if (uiNextLevelItem != null) { if (Level + 1 > Item.MaxLevel) { uiNextLevelItem.Hide(); } else { uiNextLevelItem.Setup(new CharacterItemTuple(CharacterItem, (short)(Level + 1), InventoryType), Character, IndexOfData); uiNextLevelItem.Show(); } } UpdateShopUIVisibility(true); UpdateRefineUIVisibility(true); UpdateEnhanceSocketUIVisibility(true); UpdateStorageUIVisibility(true); UpdateDealingState(true); }
public Dictionary <DamageElement, float> GetCharacterResistances(short level) { return(GameDataHelpers.CombineResistances(resistances, new Dictionary <DamageElement, float>(), level, 1f)); }
protected override void UpdateData() { cacheStats = showStatsWithBuffs ? Data.GetStats() : Data.GetStats(true, false); cacheAttributes = showAttributeWithBuffs ? Data.GetAttributes() : Data.GetAttributes(true, false); cacheResistances = showResistanceWithBuffs ? Data.GetResistances() : Data.GetResistances(true, false); cacheIncreaseDamages = showDamageWithBuffs ? Data.GetIncreaseDamages() : Data.GetIncreaseDamages(true, false); cacheWeightLimit = cacheStats.weightLimit; if (!showStatsWithBuffs) { // Always increase weight limit by buff bonus because it should always show real weight limit in UIs cacheWeightLimit += Data.GetBuffStats().weightLimit; } if (bonusAttributes == null) { bonusAttributes = new Dictionary <Attribute, short>(); } if (bonusResistances == null) { bonusResistances = new Dictionary <DamageElement, float>(); } if (bonusIncreaseDamages == null) { bonusIncreaseDamages = new Dictionary <DamageElement, MinMaxFloat>(); } if (bonusSkills == null) { bonusSkills = new Dictionary <Skill, short>(); } if (cacheEquipmentSets == null) { cacheEquipmentSets = new Dictionary <EquipmentSet, int>(); } Data.GetEquipmentSetBonus(out bonusStats, bonusAttributes, bonusResistances, bonusIncreaseDamages, bonusSkills, cacheEquipmentSets); // Increase stats by equipment set bonus cacheStats += bonusStats; cacheAttributes = GameDataHelpers.CombineAttributes(cacheAttributes, bonusAttributes); cacheResistances = GameDataHelpers.CombineResistances(cacheResistances, bonusResistances); cacheIncreaseDamages = GameDataHelpers.CombineDamages(cacheIncreaseDamages, bonusIncreaseDamages); cacheWeightLimit += bonusStats.weightLimit; if (uiTextWeightLimit != null) { uiTextWeightLimit.text = string.Format( LanguageManager.GetText(formatKeyWeightLimitStats), GameInstance.Singleton.GameplayRule.GetTotalWeight(Data).ToString("N2"), cacheWeightLimit.ToString("N2")); } CharacterItem rightHandItem = Data.EquipWeapons.rightHand; CharacterItem leftHandItem = Data.EquipWeapons.leftHand; Item rightHandWeapon = rightHandItem.GetWeaponItem(); Item leftHandWeapon = leftHandItem.GetWeaponItem(); Dictionary <DamageElement, MinMaxFloat> rightHandDamages = rightHandWeapon != null?GameDataHelpers.CombineDamages(cacheIncreaseDamages, rightHandWeapon.GetDamageAmount(rightHandItem.level, rightHandItem.GetEquipmentBonusRate(), Data)) : null; Dictionary <DamageElement, MinMaxFloat> leftHandDamages = leftHandWeapon != null?GameDataHelpers.CombineDamages(cacheIncreaseDamages, leftHandWeapon.GetDamageAmount(leftHandItem.level, leftHandItem.GetEquipmentBonusRate(), Data)) : null; if (uiTextWeaponDamages != null) { string textDamages = ""; if (rightHandWeapon != null) { MinMaxFloat sumDamages = GameDataHelpers.GetSumDamages(rightHandDamages); if (!string.IsNullOrEmpty(textDamages)) { textDamages += "\n"; } textDamages += string.Format( LanguageManager.GetText(formatKeyWeaponDamage), sumDamages.min.ToString("N0"), sumDamages.max.ToString("N0")); } if (leftHandWeapon != null) { MinMaxFloat sumDamages = GameDataHelpers.GetSumDamages(leftHandDamages); if (!string.IsNullOrEmpty(textDamages)) { textDamages += "\n"; } textDamages += string.Format( LanguageManager.GetText(formatKeyWeaponDamage), sumDamages.min.ToString("N0"), sumDamages.max.ToString("N0")); } if (rightHandWeapon == null && leftHandWeapon == null) { Item defaultWeaponItem = GameInstance.Singleton.DefaultWeaponItem; WeaponItemEquipType defaultWeaponItemType = defaultWeaponItem.EquipType; KeyValuePair <DamageElement, MinMaxFloat> damageAmount = defaultWeaponItem.GetDamageAmount(1, 1f, Data); textDamages = string.Format( LanguageManager.GetText(formatKeyWeaponDamage), damageAmount.Value.min.ToString("N0"), damageAmount.Value.max.ToString("N0")); } uiTextWeaponDamages.text = textDamages; } if (uiRightHandDamages != null) { if (rightHandWeapon == null) { uiRightHandDamages.Hide(); } else { uiRightHandDamages.Show(); uiRightHandDamages.Data = rightHandDamages; } } if (uiLeftHandDamages != null) { if (leftHandWeapon == null) { uiLeftHandDamages.Hide(); } else { uiLeftHandDamages.Show(); uiLeftHandDamages.Data = leftHandDamages; } } if (uiCharacterStats != null) { uiCharacterStats.Data = cacheStats; } if (uiCharacterResistances != null) { uiCharacterResistances.Data = cacheResistances; } if (CacheUICharacterAttributes.Count > 0 && Data != null) { CharacterAttribute tempCharacterAttribute; Attribute tempAttribute; short tempAmount; IList <CharacterAttribute> characterAttributes = Data.Attributes; for (int indexOfData = 0; indexOfData < characterAttributes.Count; ++indexOfData) { tempCharacterAttribute = characterAttributes[indexOfData]; tempAttribute = tempCharacterAttribute.GetAttribute(); UICharacterAttribute cacheUICharacterAttribute; tempAmount = 0; if (CacheUICharacterAttributes.TryGetValue(tempAttribute, out cacheUICharacterAttribute)) { if (cacheAttributes.ContainsKey(tempAttribute)) { tempAmount = cacheAttributes[tempAttribute]; } cacheUICharacterAttribute.Setup(new CharacterAttributeTuple(tempCharacterAttribute, tempAmount), Data, indexOfData); cacheUICharacterAttribute.Show(); } } } if (uiCharacterBuffs != null) { uiCharacterBuffs.UpdateData(Data); } }
protected override void UpdateData() { if (uiTextDuration != null) { float duration = Buff.GetDuration(Level); uiTextDuration.gameObject.SetActive(duration != 0); uiTextDuration.text = string.Format( LanguageManager.GetText(formatKeyDuration), duration.ToString("N0")); } if (uiTextRecoveryHp != null) { int recoveryHp = Buff.GetRecoveryHp(Level); uiTextRecoveryHp.gameObject.SetActive(recoveryHp != 0); uiTextRecoveryHp.text = string.Format( LanguageManager.GetText(formatKeyRecoveryHp), recoveryHp.ToString("N0")); } if (uiTextRecoveryMp != null) { int recoveryMp = Buff.GetRecoveryMp(Level); uiTextRecoveryMp.gameObject.SetActive(recoveryMp != 0); uiTextRecoveryMp.text = string.Format( LanguageManager.GetText(formatKeyRecoveryMp), recoveryMp.ToString("N0")); } if (uiTextRecoveryStamina != null) { int recoveryStamina = Buff.GetRecoveryStamina(Level); uiTextRecoveryStamina.gameObject.SetActive(recoveryStamina != 0); uiTextRecoveryStamina.text = string.Format( LanguageManager.GetText(formatKeyRecoveryStamina), recoveryStamina.ToString("N0")); } if (uiTextRecoveryFood != null) { int recoveryFood = Buff.GetRecoveryFood(Level); uiTextRecoveryFood.gameObject.SetActive(recoveryFood != 0); uiTextRecoveryFood.text = string.Format( LanguageManager.GetText(formatKeyRecoveryFood), recoveryFood.ToString("N0")); } if (uiTextRecoveryWater != null) { int recoveryWater = Buff.GetRecoveryWater(Level); uiTextRecoveryWater.gameObject.SetActive(recoveryWater != 0); uiTextRecoveryWater.text = string.Format( LanguageManager.GetText(formatKeyRecoveryWater), recoveryWater.ToString("N0")); } if (uiBuffStats != null) { uiBuffStats.Data = Buff.GetIncreaseStats(Level); } if (uiBuffAttributes != null) { uiBuffAttributes.Data = GameDataHelpers.CombineAttributes(Buff.increaseAttributes, new Dictionary <Attribute, short>(), Level, 1f); } if (uiBuffResistances != null) { uiBuffResistances.Data = GameDataHelpers.CombineResistances(Buff.increaseResistances, new Dictionary <DamageElement, float>(), Level, 1f); } if (uiBuffDamages != null) { uiBuffDamages.Data = GameDataHelpers.CombineDamages(Buff.increaseDamages, new Dictionary <DamageElement, MinMaxFloat>(), Level, 1f); } }