Ejemplo n.º 1
0
 public Equipment(string name, int level, HeroEquipmentSlot slot)
 {
     Name               = name;
     UpgradeLevel       = level;
     Slot               = slot;
     EquipmentModifiers = new List <FlatModifier>();
 }
Ejemplo n.º 2
0
    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;
        }
    }
Ejemplo n.º 3
0
    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;
        }
    }
Ejemplo n.º 4
0
    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;
        }
    }
Ejemplo n.º 5
0
    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;
        }
    }
Ejemplo n.º 6
0
    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;
                }
            }
        }
    }