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