Ejemplo n.º 1
0
        private static void EndSurprise(SurpriseAttackInfo info)
        {
            info.m_Timer?.Stop();
            info.m_Target.SendLocalizedMessage(1063131); // Your defenses have returned to normal.

            m_Table.Remove(info.m_Target);
        }
Ejemplo n.º 2
0
        public override void OnHit(Mobile attacker, Mobile defender, int damage)
        {
            // Validates before swing

            ClearCurrentMove(attacker);

            attacker.SendLocalizedMessage(1063129); // You catch your opponent off guard with your Surprise Attack!
            defender.SendLocalizedMessage(1063130); // Your defenses are lowered as your opponent surprises you!

            defender.FixedParticles(0x37B9, 1, 5, 0x26DA, 0, 3, EffectLayer.Head);

            attacker.RevealingAction();

            if (m_Table.TryGetValue(defender, out SurpriseAttackInfo info))
            {
                info.m_Timer?.Stop();

                m_Table.Remove(defender);
            }

            int ninjitsu = attacker.Skills.Ninjitsu.Fixed;

            int malus = ninjitsu / 60 + (int)Tracking.GetStalkingBonus(attacker, defender);

            info         = new SurpriseAttackInfo(defender, malus);
            info.m_Timer = Timer.DelayCall(TimeSpan.FromSeconds(8.0), EndSurprise, info);

            m_Table[defender] = info;

            CheckGain(attacker);
        }
		public static bool GetMalus( Mobile target, ref int malus )
		{
			SurpriseAttackInfo info = m_Table[target] as SurpriseAttackInfo;

			if ( info == null )
				return false;

			malus = info.m_Malus;
			return true;
		}
		private static void EndSurprise( object state )
		{
			SurpriseAttackInfo info = (SurpriseAttackInfo)state;

			if ( info.m_Timer != null )
				info.m_Timer.Stop();

			info.m_Target.SendLocalizedMessage( 1063131 ); // Your defenses have returned to normal.

			m_Table.Remove( info.m_Target );
		}
Ejemplo n.º 5
0
		public override void OnHit( Mobile attacker, Mobile defender, int damage )
		{
			//Validates before swing

			ClearCurrentMove( attacker );

			attacker.SendLocalizedMessage( 1063129 ); // You catch your opponent off guard with your Surprise Attack!
			defender.SendLocalizedMessage( 1063130 ); // Your defenses are lowered as your opponent surprises you!

			defender.FixedParticles( 0x37B9, 1, 5, 0x26DA, 0, 3, EffectLayer.Head );

			attacker.RevealingAction();

			SurpriseAttackInfo info;

			if ( m_Table.Contains( defender ) )
			{
				info = (SurpriseAttackInfo)m_Table[defender];

				if ( info.m_Timer != null )
					info.m_Timer.Stop();

				m_Table.Remove( defender );
			}

			int ninjitsu = attacker.Skills[SkillName.Ninjitsu].Fixed;

			int malus = ninjitsu / 60 + (int)Tracking.GetStalkingBonus( attacker, defender );

			info = new SurpriseAttackInfo( defender, malus );
			info.m_Timer = Timer.DelayCall( TimeSpan.FromSeconds( 8.0 ), new TimerStateCallback( EndSurprise ), info );

			m_Table[defender] = info;

			CheckGain( attacker );
		}