예제 #1
0
        public void OnHit(Mobile defender)
        {
            if (m_TargetType == null)
            {
                m_TypeName = EnemyOfOneSpell.GetTypeName(defender);

                if (defender is PlayerMobile || (defender is BaseCreature bc && bc.GetMaster() is PlayerMobile))
                {
                    m_PlayerOrPet = defender;
                    TimeSpan duration = TimeSpan.FromSeconds(8);

                    if (DateTime.UtcNow + duration < m_Expire)
                    {
                        m_Expire = DateTime.UtcNow + duration;
                    }

                    if (m_Timer != null)
                    {
                        m_Timer.Stop();
                        m_Timer = null;
                    }

                    m_Timer = Timer.DelayCall(duration, EnemyOfOneSpell.RemoveEffect, m_Owner);
                }
                else
                {
                    m_TargetType = defender.GetType();
                }

                UpdateDamage();
                DeltaEnemies();
                UpdateBuffInfo();
            }
예제 #2
0
        public void OnHit(Mobile defender)
        {
            if (m_TargetType == null)
            {
                m_TargetType = defender.GetType();
                m_TypeName   = EnemyOfOneSpell.GetTypeName(defender);

                if (Core.SA)
                {
                    // Odd but OSI recalculates when the target changes...
                    var chivalry = (int)m_Owner.Skills.Chivalry.Value;
                    m_DamageScalar = 10 + ((chivalry - 40) * 9) / 10;
                }

                DeltaEnemies();
                UpdateBuffInfo();
            }
        }