/// <summary>Добавляет эффект к предмету экипировки</summary> /// <param name="stat">Характеристика</param> /// <param name="value">Значение изменения</param> /// <param name="duration">Длительность эффекта (если бесконечно, то -1)</param> public bool AddEffect(DungeonStats stat, double value, int duration = -1) { for (int i = 0; i < m_effects.Count; i++) { if (m_effects[i].Stat == stat) // если эффект для этой характеристики уже есть { return(false); } } if (this is DungeonItemArtifact || this is DungeonItemPotion) { if (this is DungeonItemPotion && duration == -1) { return(false); } if (TotalEffectsNumber < 3 || (this is DungeonItemArtifact && (this as DungeonItemArtifact).IsSpecial)) { m_effects.Add(new DungeonEffect(stat, value, duration)); UpdateFullDescription(); if (!(this is DungeonItemArtifact && (this as DungeonItemArtifact).IsSpecial)) { SetShowingEffectColor(TotalEffectsNumber - 1, DungeonStatsInfo.GetColor(stat)); } return(true); } } else { m_effects.Add(new DungeonEffect(stat, value, duration)); UpdateFullDescription(); return(true); } return(false); }
/// <summary>Обновляет описание предмета экипировки, изменяя текст про значения, на которые меняются характеристики</summary> private void UpdateFullDescription() { int effects_number = 0; for (int i = 0; i < 9; i++) { double result_effect_value = GetEffectValue(i); if (result_effect_value > 0.005 || result_effect_value < -0.005) { effects_number++; } } if (effects_number > 0) { if (this is DungeonItemPotion) { if (effects_number == 1) { m_description = "Обычное зелье. Встречается очень часто. Увеличивает или уменьшает характеристику на некоторое время."; } else if (effects_number == 2) { m_description = "Зелье двойного действия. Встречается часто. Увеличивает или уменьшает две характеристики на некоторое время."; } else if (effects_number == 3) { m_description = "Зелье тройного действия. Встречается редко. Увеличивает или уменьшает три характеристики на некоторое время."; } } m_full_description = m_description + "\n\nИзменяет характеристики персонажа:"; for (int i = 0; i < 9; i++) { double result_effect_value = GetEffectValue(i); if (result_effect_value > 0.005) { m_full_description += "\n+ " + DungeonStatsInfo.Name((DungeonStats)i) + ": +" + result_effect_value; } else if (result_effect_value < -0.005) { m_full_description += "\n- " + DungeonStatsInfo.Name((DungeonStats)i) + ": " + result_effect_value; } } if (this is DungeonItemPotion) { m_full_description += "\n\nДлительность: " + m_effects[0].Duration + " секунд"; } } else { m_full_description = m_description; } }