Exemplo n.º 1
0
 /// <summary>"Надевает" предмет экипировки на существо</summary>
 /// <param name="creature">Существо</param>
 public void Equip(DungeonCreature creature)
 {
     if (!(this is DungeonItemPotion))
     {
         StartEffects(creature);
     }
     m_is_equip = true;
 }
Exemplo n.º 2
0
 /// <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)));
     }
 }
Exemplo n.º 3
0
 /// <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();
     }
 }
Exemplo n.º 4
0
        /// <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();
        }
Exemplo n.º 5
0
        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));
        }
Exemplo n.º 6
0
        /// <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("Владелец эффекта не задан");
                }
            }
        }
Exemplo n.º 7
0
 /// <summary>Устанавливает владельца эффекта</summary>
 /// <param name="creature">Существо</param>
 public void AddToCreature(DungeonCreature creature)
 {
     m_creature = creature;
 }