Server.SkillHandlers.Hiding.OnUse C# (CSharp) Méthode

OnUse() public static méthode

public static OnUse ( Mobile m ) : System.TimeSpan
m Mobile
Résultat System.TimeSpan
		public static TimeSpan OnUse( Mobile m )
		{
			if ( m.Spell != null )
			{
				m.SendLocalizedMessage( 501238 ); // You are busy doing something else and cannot hide.
				return TimeSpan.FromSeconds( 1.0 );
			}

			double bonus = 0.0;

			BaseHouse house = BaseHouse.FindHouseAt( m );

			if ( house != null && house.IsFriend( m ) )
			{
				bonus = 100.0;
			}
			else
			{
				if ( house == null )
					house = BaseHouse.FindHouseAt( new Point3D( m.X - 1, m.Y, 127 ), m.Map, 16 );

				if ( house == null )
					house = BaseHouse.FindHouseAt( new Point3D( m.X + 1, m.Y, 127 ), m.Map, 16 );

				if ( house == null )
					house = BaseHouse.FindHouseAt( new Point3D( m.X, m.Y - 1, 127 ), m.Map, 16 );

				if ( house == null )
					house = BaseHouse.FindHouseAt( new Point3D( m.X, m.Y + 1, 127 ), m.Map, 16 );

				if ( house != null )
					bonus = 50.0;
			}

			//int range = 18 - (int)(m.Skills[SkillName.Hiding].Value / 10);
			int range = Math.Min( (int)((100 - m.Skills[SkillName.Hiding].Value)/2) + 8, 18 );	//Cap of 18 not OSI-exact, intentional difference

			bool badCombat = ( !m_CombatOverride && m.Combatant != null && m.InRange( m.Combatant.Location, range ) && m.Combatant.InLOS( m ) );
			bool ok = ( !badCombat /*&& m.CheckSkill( SkillName.Hiding, 0.0 - bonus, 100.0 - bonus )*/ );

			if ( ok )
			{
				if ( !m_CombatOverride )
				{
					foreach ( Mobile check in m.GetMobilesInRange( range ) )
					{
						if ( check.InLOS( m ) && check.Combatant == m )
						{
							badCombat = true;
							ok = false;
							break;
						}
					}
				}

				ok = ( !badCombat && m.CheckSkill( SkillName.Hiding, 0.0 - bonus, 100.0 - bonus ) );
			}

			if ( badCombat )
			{
				m.RevealingAction();

				m.LocalOverheadMessage( MessageType.Regular, 0x22, 501237 ); // You can't seem to hide right now.

				return TimeSpan.FromSeconds( 1.0 );
			}
			else 
			{
				if ( ok )
				{
					m.Hidden = true;
					m.Warmode = false;
					m.LocalOverheadMessage( MessageType.Regular, 0x1F4, 501240 ); // You have hidden yourself well.
				}
				else
				{
					m.RevealingAction();

					m.LocalOverheadMessage( MessageType.Regular, 0x22, 501241 ); // You can't seem to hide here.
				}

				return TimeSpan.FromSeconds( 10.0 );
			}
		}
	}

Usage Example

Exemple #1
0
        public static TimeSpan OnUse(Mobile m)
        {
            if (!m.Hidden)
            {
                Hiding.OnUse(m);

                if (!m.Hidden) // Si le jet est raté.
                {
                    return(TempsJetRate);
                }
                else
                {
                    return(OnUse(m));
                }
            }
            else if (!m.CanBeginAction(typeof(Stealth)))
            {
                m.SendLocalizedMessage(1063086);                   // You cannot use this skill right now.
            }
            else
            {
                if (m.CheckSkill(SkillName.Infiltration, (m.Skills[SkillName.Infiltration].Value * ScalMalusArmure(m))))
                {
                    int steps = (int)(m.Skills[SkillName.Infiltration].Value / Diviseur); // A 100, 20 steps, ou 4 steps en courrant.

                    // Malus de dex sur le nombre de pas possible.
                    int val = (int)(steps * ScalMalusArmure(m));
                    if (val != steps)
                    {
                        steps = val;
                        m.SendMessage("Vous n'êtes pas assez agile pour vous déplacer efficacement avec cette armure.");
                    }

                    if (steps < 1)
                    {
                        steps = 1;
                    }

                    m.AllowedStealthSteps = steps;

                    m.SendLocalizedMessage(502730);                       // You begin to move quietly.
                    return(TempsJetReussit);
                }
                else
                {
                    m.SendLocalizedMessage(502731);                       // You fail in your attempt to move unnoticed.
                    m.RevealingAction();
                    return(TempsJetRate);
                }
            }

            return(TempsJetImposs);
        }
All Usage Examples Of Server.SkillHandlers.Hiding::OnUse