public Equipment(string name, int level, HeroEquipmentSlot slot) { Name = name; UpgradeLevel = level; Slot = slot; EquipmentModifiers = new List <FlatModifier>(); }
public void Equip(Equipment equipment, HeroEquipmentSlot slot) { switch (slot) { case HeroEquipmentSlot.Weapon: if (Weapon != null) { Unequip(slot); } equipment.ApplyModifiers(this); WeaponLevel = equipment.UpgradeLevel; Weapon = equipment; break; case HeroEquipmentSlot.Armor: if (Armor != null) { Unequip(slot); } equipment.ApplyModifiers(this); ArmorLevel = equipment.UpgradeLevel; Armor = equipment; break; } }
public void Unequip(HeroEquipmentSlot slot) { switch (slot) { case HeroEquipmentSlot.Weapon: Weapon.RevertModifiers(this); Weapon = null; break; case HeroEquipmentSlot.Armor: Armor.RevertModifiers(this); Armor = null; break; } }
void InitializeTree(EquipmentUpgradeTreeSlot treeSlot, Hero hero, HeroEquipmentSlot slot) { switch (slot) { case HeroEquipmentSlot.Weapon: float discountWep = 1 - DarkestDungeonManager.Campaign.Estate.Blacksmith.Discount; var weaponTree = DarkestDungeonManager.Data.UpgradeTrees[hero.ClassStringId + ".weapon"]; treeSlot.currentEquipment.UpdateEquipment(hero.Weapon, hero); int lastWepIndex = -1; for (int i = 0; i < treeSlot.upgrades.Count; i++) { treeSlot.upgrades[i].Initialize(hero, weaponTree, weaponTree.Upgrades[i] as HeroUpgrade, hero.HeroClass.Weapons.Find(wep => wep.UpgradeLevel == i + 2)); var status = DarkestDungeonManager.Campaign.Estate.GetUpgradeStatus(weaponTree.Id, hero, treeSlot.upgrades[i].Upgrade); TownManager.UpdateUpgradeSlot(status, treeSlot.upgrades[i], discountWep); if (status == UpgradeStatus.Purchased) { lastWepIndex = i; } } treeSlot.UpdateConnector(lastWepIndex); break; case HeroEquipmentSlot.Armor: float discountArm = 1 - DarkestDungeonManager.Campaign.Estate.Blacksmith.Discount; var armorTree = DarkestDungeonManager.Data.UpgradeTrees[hero.ClassStringId + ".armour"]; treeSlot.currentEquipment.UpdateEquipment(hero.Armor, hero); int lastArmIndex = -1; for (int i = 0; i < treeSlot.upgrades.Count; i++) { treeSlot.upgrades[i].Initialize(hero, armorTree, armorTree.Upgrades[i] as HeroUpgrade, hero.HeroClass.Armors.Find(arm => arm.UpgradeLevel == i + 2)); var status = DarkestDungeonManager.Campaign.Estate.GetUpgradeStatus(armorTree.Id, hero, treeSlot.upgrades[i].Upgrade); TownManager.UpdateUpgradeSlot(status, treeSlot.upgrades[i], discountArm); if (status == UpgradeStatus.Purchased) { lastArmIndex = i; } } treeSlot.UpdateConnector(lastArmIndex); break; } }
private void UpdateTree(EquipmentUpgradeTreeSlot treeSlot, Hero hero, HeroEquipmentSlot slot) { switch (slot) { case HeroEquipmentSlot.Weapon: float discountWep = 1 - DarkestDungeonManager.Campaign.Estate.Blacksmith.Discount; var weaponTree = DarkestDungeonManager.Data.UpgradeTrees[hero.ClassStringId + ".weapon"]; treeSlot.CurrentEquipment.UpdateEquipment(hero.Weapon, hero); int lastWepIndex = -1; for (int i = 0; i < treeSlot.Upgrades.Count; i++) { var status = DarkestDungeonManager.Campaign.Estate.GetUpgradeStatus(weaponTree.Id, hero, treeSlot.Upgrades[i].Upgrade); EstateSceneManager.Instanse.TownManager.UpdateUpgradeSlot(status, treeSlot.Upgrades[i], discountWep); if (status == UpgradeStatus.Purchased) { lastWepIndex = i; } } treeSlot.UpdateConnector(lastWepIndex); break; case HeroEquipmentSlot.Armor: float discountArm = 1 - DarkestDungeonManager.Campaign.Estate.Blacksmith.Discount; var armorTree = DarkestDungeonManager.Data.UpgradeTrees[hero.ClassStringId + ".armour"]; treeSlot.CurrentEquipment.UpdateEquipment(hero.Armor, hero); int lastArmIndex = -1; for (int i = 0; i < treeSlot.Upgrades.Count; i++) { var status = DarkestDungeonManager.Campaign.Estate.GetUpgradeStatus(armorTree.Id, hero, treeSlot.Upgrades[i].Upgrade); EstateSceneManager.Instanse.TownManager.UpdateUpgradeSlot(status, treeSlot.Upgrades[i], discountArm); if (status == UpgradeStatus.Purchased) { lastArmIndex = i; } } treeSlot.UpdateConnector(lastArmIndex); break; } }
public void UpdateWindow() { bool skipOffhandUpdate = false; hero = HeroDetailWindow.hero; foreach (HeroEquipmentSlot slot in equipSlots) { slot.slotText.text = LocalizationManager.Instance.GetLocalizationText("equipSlotType." + slot.EquipSlot); Equipment e = hero.GetEquipmentInSlot(slot.EquipSlot); if (slot.EquipSlot == EquipSlotType.OFF_HAND && skipOffhandUpdate) { continue; } if (e == null) { slot.slotBase.ClearSlot(); int equippableCount = 0; if (slot.EquipSlot == EquipSlotType.OFF_HAND) { equippableCount = GameManager.Instance.PlayerStats.EquipmentInventory.Where(x => hero.CanEquipItem(x) && HeroEquipmentSlot.OffhandFilter(x)).Count(); } else if (slot.EquipSlot == EquipSlotType.RING_SLOT_1 || slot.EquipSlot == EquipSlotType.RING_SLOT_2) { equippableCount = GameManager.Instance.PlayerStats.EquipmentInventory.Where(x => !x.IsEquipped && x.Base.equipSlot == EquipSlotType.RING && hero.CanEquipItem(x)).Count(); } else { equippableCount = GameManager.Instance.PlayerStats.EquipmentInventory.Where(x => !x.IsEquipped && x.Base.equipSlot == slot.EquipSlot && hero.CanEquipItem(x)).Count(); } slot.slotBase.groupText.text = equippableCount + " Equippable Items"; } else { slot.slotBase.item = e; slot.slotBase.UpdateSlot(); } if (slot.EquipSlot == EquipSlotType.WEAPON) { if (e == null) { OffHandSlot.GetComponent <Button>().interactable = true; } else if (!hero.GetEquipmentGroupTypes(e).Contains(GroupType.TWO_HANDED_WEAPON) || hero.HasSpecialBonus(BonusType.TWO_HANDED_WEAPONS_ARE_ONE_HANDED) || (hero.HasSpecialBonus(BonusType.CAN_USE_SPEARS_WITH_SHIELDS) && e.GetGroupTypes().Contains(GroupType.SPEAR))) { OffHandSlot.GetComponent <Button>().interactable = true; } else { OffHandSlot.GetComponent <Button>().interactable = false; OffHandSlot.slotBase.item = e; OffHandSlot.slotBase.UpdateSlot(); skipOffhandUpdate = true; } } } }