/// <summary>"Надевает" предмет экипировки на существо</summary> /// <param name="creature">Существо</param> public void Equip(DungeonCreature creature) { if (!(this is DungeonItemPotion)) { StartEffects(creature); } m_is_equip = true; }
/// <summary>Открывает сундук</summary> public void Open(DungeonCreature creature_who_opened) { if (!m_is_opened) { m_image = Properties.Resources.chest_opened; m_size = m_image.Size; m_is_opened = true; Container.DropAllItems(new Point((int)(creature_who_opened.Location.X + (Location.X - creature_who_opened.Location.X) / 2), (int)(creature_who_opened.Location.Y + (Location.Y - creature_who_opened.Location.Y) / 2))); } }
/// <summary>Активирует эффекты предмета экипировки на существе</summary> /// <param name="creature">Существо</param> public void StartEffects(DungeonCreature creature) { for (int i = 0; i < m_effects.Count; i++) { m_effects[i].AddToCreature(creature); m_effects[i].TurnEffectOn(); } if (this is DungeonItemPotion) { Destroy(); } }
/// <summary>Создаёт эффект</summary> /// <param name="stat">Характеристика, которую изменяет эффект</param> /// <param name="value">Значение, на которое эффект изменяет характеристику</param> /// <param name="duration">Длительность действия эффекта (в секундах) (равно -1 в случае бесконечной длительности)</param> public DungeonEffect(DungeonStats stat, double value = 0, int duration = -1) { m_stat = stat; m_value = value; m_duration = duration; m_creature = null; m_is_active = false; m_usage_time = m_duration * 1000; m_timer_usage_is_working = false; InitializeTimers(); }
public void Goblin_ShouldApplyBrokerModificationChain() { var game = new Game(); var goblin = new DungeonCreature(game, "Strong Goblin", 3, 3); Assert.That(goblin.Attack, Is.EqualTo(3)); Assert.That(goblin.Defense, Is.EqualTo(3)); using (new DoubleAttackCreatureModifier(game, goblin)) { Assert.That(goblin.Attack, Is.EqualTo(6)); Assert.That(goblin.Defense, Is.EqualTo(3)); using (new IncreaseDefenseCreatureModifier(game, goblin)) { Assert.That(goblin.Attack, Is.EqualTo(6)); Assert.That(goblin.Defense, Is.EqualTo(5)); } } // Both modifiers disposed Assert.That(goblin.Attack, Is.EqualTo(3)); Assert.That(goblin.Defense, Is.EqualTo(3)); }
/// <summary>Деактивирует эффект</summary> public void TurnEffectOff() { if (m_is_active) { if (m_creature != null) { m_creature.RemoveEffect(this); if (m_duration != -1) { m_timer_usage.Stop(); m_timer_usage_is_working = false; } m_is_active = false; m_creature.DungeonLevel.Form.CalculateInterfaceHeroActivePotions(); m_creature = null; } else { throw new Exception("Владелец эффекта не задан"); } } }
/// <summary>Устанавливает владельца эффекта</summary> /// <param name="creature">Существо</param> public void AddToCreature(DungeonCreature creature) { m_creature = creature; }