Пример #1
0
        private Equipment GenerateRandomBonuses(EquipmentDefinition definition, RarityModifier rarity)
        {
            if (definition == null)
            {
                return(null);
            }

            switch (definition.EquipmentSlotId)
            {
            case EquipmentSlotId.Torso:
                return(m_ChestplateGenerator.GenerateBonuses(definition, rarity));

            case EquipmentSlotId.Head:
                return(m_HelmetGenerator.GenerateBonuses(definition, rarity));

            case EquipmentSlotId.Legs:
                return(m_PlatelegsGenerator.GenerateBonuses(definition, rarity));

            case EquipmentSlotId.Weapon:
                return(m_WeaponGenerator.GenerateBonuses(definition, rarity));

            default:
                throw new ArgumentException("I don't know what kind of item this is :D");
            }
        }
Пример #2
0
        public Equipment GenerateEquipmentFromTemplate(EquipmentSlotId equipmentType)
        {
            var itemDatabase = GameManager.Instance.ItemDatabase;

            EquipmentDefinition itemDef = null;

            switch (equipmentType)
            {
            case EquipmentSlotId.Weapon:
                itemDef = itemDatabase.GetRandomWeapon();
                break;

            case EquipmentSlotId.Head:
                itemDef = itemDatabase.GetRandomHelmet();
                break;

            case EquipmentSlotId.Torso:
                itemDef = itemDatabase.GetRandomChestplate();
                break;

            case EquipmentSlotId.Legs:
                itemDef = itemDatabase.GetRandomPlatelegs();
                break;
            }

            var rarity = GetRandomRarity();

            return(GenerateRandomBonuses(itemDef, rarity));
        }
Пример #3
0
 public Equipment(EquipmentDefinition eq)
     : base(eq.Name, eq.Icon, eq.Prefab, eq.BaseGoldCost)
 {
     EquipmentSlotId = eq.EquipmentSlotId;
     StatBonuses     = eq.StatBonuses.ToDictionary(m => m.Key, m => m.Value);
     Attack          = eq.m_Attack;
     Defence         = eq.m_Defence;
     Strength        = eq.m_Strength;
     Agility         = eq.m_Agility;
 }
Пример #4
0
        public Equipment GenerateBonuses(EquipmentDefinition definition, RarityModifier rarity)
        {
            m_Log.Log($"I am generating a {definition.Name} item with rarity {rarity}", LogLevel.Info);
            m_Log.Log($"Base stats are {string.Join(", ", definition.StatBonuses.Select(m => $"{m.Key}: {m.Value}"))}", LogLevel.Info);

            if (definition.EquipmentSlotId != EquipmentSlotId.Weapon)
            {
                throw new ArgumentException("Equipment must be of type weapon, was " + definition.EquipmentSlotId);
            }

            var minBonus = MinimumFlatBonus[rarity];
            var maxBonus = Mathf.RoundToInt(GetMaxBonus(rarity));

            m_Log.Log($"Min bonus is {minBonus}", LogLevel.Info);
            m_Log.Log($"Max bonus is {maxBonus}", LogLevel.Info);

            return(GenerateEquipmentWithBonuses(definition, minBonus, maxBonus));
        }
Пример #5
0
        private Equipment GenerateEquipmentWithBonuses(EquipmentDefinition def, int minBonus, int maxBonus)
        {
            var statsToBoost = def.GetStatBonuses().ToList();

            var equipment = new Equipment(def);

            foreach (var stat in statsToBoost)
            {
                var rand = m_Random.Next(minBonus, maxBonus + 1);

                m_Log.Log($"Applying a bonus of {rand} to stat {stat}", LogLevel.Info);

                equipment.StatBonuses[stat] += rand;
            }

            m_Log.Log($"Final stats: {string.Join(", ", equipment.StatBonuses.Select(m => $"{m.Key}: {m.Value}"))}\n", LogLevel.Info);

            return(equipment);
        }