public override bool OnTarget(Mobile m, Server.Targeting.Target t, object o) { if (m.AccessLevel >= AccessLevel.GameMaster) { return(true); } if (o is AddonComponent && ((AddonComponent)o).ItemData.Height + ((AddonComponent)o).Z > m.Z + 3) { return(false); } if (o is StaticTarget && ((StaticTarget)o).Z > m.Z + 3) { return(false); } if (t.Flags == Server.Targeting.TargetFlags.Harmful) { if (o is LadyMinax || (o is ShadowguardGreaterDragon && ((ShadowguardGreaterDragon)o).Z > m.Z)) { return(false); } } return(base.OnTarget(m, t, o)); }
public override bool OnTarget(Mobile m, Targeting.Target t, object o) { if (Parent != null) { return(Parent.OnTarget(m, t, o)); } return(base.OnTarget(m, t, o)); }
public override bool OnTarget( Mobile m, Target t, object o ) { if ( m.Spell != null && m.Spell is MarkSpell && m.AccessLevel == AccessLevel.Player ) { m.SendLocalizedMessage( 501800 ); // You cannot mark an object at that location. return false; } return base.OnTarget( m, t, o ); }
private void ProcessTarget( Target targ ) { targ.Invoke( m_Mobile, m_Mobile ); }
public override bool OnTarget(Mobile m, Target t, object o) { if (Battle != null && Battle.State != PvPBattleState.Internal && !Battle.Hidden && !Battle.OnTarget(m, t, o)) { return false; } return base.OnTarget(m, t, o); }
private void ProcessTarget( Target targ ) { bool isDispel = ( targ is DispelSpell.InternalTarget ); bool isParalyze = ( targ is ParalyzeSpell.InternalTarget ); bool isTeleport = ( targ is TeleportSpell.InternalTarget ); bool teleportAway = false; Mobile toTarget; if ( isDispel ) { toTarget = FindDispelTarget( false ); if ( !SmartAI && toTarget != null ) RunTo( toTarget ); else if ( toTarget != null && m_Mobile.InRange( toTarget, 10 ) ) RunFrom( toTarget ); } else if ( SmartAI && (isParalyze || isTeleport) ) { toTarget = FindDispelTarget( true ); if ( toTarget == null ) { toTarget = m_Mobile.Combatant; if ( toTarget != null ) RunTo( toTarget ); } else if ( m_Mobile.InRange( toTarget, 10 ) ) { RunFrom( toTarget ); teleportAway = true; } else { teleportAway = true; } } else { toTarget = m_Mobile.Combatant; if ( toTarget != null ) RunTo( toTarget ); } if ( (targ.Flags & TargetFlags.Harmful) != 0 && toTarget != null ) { if ( (targ.Range == -1 || m_Mobile.InRange( toTarget, targ.Range )) && m_Mobile.CanSee( toTarget ) && m_Mobile.InLOS( toTarget ) ) { targ.Invoke( m_Mobile, toTarget ); } else if ( isDispel ) { targ.Cancel( m_Mobile, TargetCancelType.Canceled ); } } else if ( (targ.Flags & TargetFlags.Beneficial) != 0 ) { targ.Invoke( m_Mobile, m_Mobile ); } else if ( isTeleport && toTarget != null ) { Map map = m_Mobile.Map; if ( map == null ) { targ.Cancel( m_Mobile, TargetCancelType.Canceled ); return; } int px, py; if ( teleportAway ) { int rx = m_Mobile.X - toTarget.X; int ry = m_Mobile.Y - toTarget.Y; double d = m_Mobile.GetDistanceToSqrt( toTarget ); px = toTarget.X + (int)(rx * (10 / d)); py = toTarget.Y + (int)(ry * (10 / d)); } else { px = toTarget.X; py = toTarget.Y; } for ( int i = 0; i < m_Offsets.Length; i += 2 ) { int x = m_Offsets[i], y = m_Offsets[i + 1]; Point3D p = new Point3D( px + x, py + y, 0 ); LandTarget lt = new LandTarget( p, map ); if ( (targ.Range == -1 || m_Mobile.InRange( p, targ.Range )) && m_Mobile.InLOS( lt ) && map.CanSpawnMobile( px + x, py + y, lt.Z ) && !SpellHelper.CheckMulti( p, map ) ) { targ.Invoke( m_Mobile, lt ); return; } } int teleRange = targ.Range; if ( teleRange < 0 ) teleRange = 12; for ( int i = 0; i < 10; ++i ) { Point3D randomPoint = new Point3D( m_Mobile.X - teleRange + Utility.Random( teleRange * 2 + 1 ), m_Mobile.Y - teleRange + Utility.Random( teleRange * 2 + 1 ), 0 ); LandTarget lt = new LandTarget( randomPoint, map ); if ( m_Mobile.InLOS( lt ) && map.CanSpawnMobile( lt.X, lt.Y, lt.Z ) && !SpellHelper.CheckMulti( randomPoint, map ) ) { targ.Invoke( m_Mobile, new LandTarget( randomPoint, map ) ); return; } } targ.Cancel( m_Mobile, TargetCancelType.Canceled ); } else { targ.Cancel( m_Mobile, TargetCancelType.Canceled ); } }
public void ClearTarget() { m_Target = null; }
private void ProcessTarget( Target targ, NeedDelegate[] func ) { Mobile toHelp = Find( func ); if ( toHelp != null ) { if ( targ.Range != -1 && !m_Mobile.InRange( toHelp, targ.Range ) ) { DoMove( m_Mobile.GetDirectionTo( toHelp ) | Direction.Running ); } else { targ.Invoke( m_Mobile, toHelp ); } } else { targ.Cancel( m_Mobile, TargetCancelType.Canceled ); } }
public override bool CheckTarget( Mobile from, Target targ, object targeted ) { if ( !base.CheckTarget( from, targ, targeted ) ) return false; object root = this.RootParent; if ( root is PlayerVendor && ((PlayerVendor)root).IsOwner( from ) ) return true; return ( targ is PlayerVendor.PVBuyTarget ); }
public virtual bool CheckTarget( Mobile from, Target targ, object targeted ) { return true; }
public override bool CheckTarget( Mobile from, Target targ, object targeted ) { if ( !base.CheckTarget( from, targ, targeted ) ) return false; if ( from.AccessLevel >= AccessLevel.GameMaster ) return true; return targ.GetType().IsDefined( typeof( PlayerVendorTargetAttribute ), false ); }
public override void ProcessTarget(Target targ) { bool isDispel = (targ is DispelSpell.InternalTarget); bool isParalyze = (targ is ParalyzeSpell.InternalTarget); bool isTeleport = (targ is TeleportSpell.InternalTarget); bool isCrossHeal = (targ is GreaterHealSpell.InternalTarget); bool isTrap = (targ is MagicTrapSpell.InternalTarget); bool teleportAway = false; bool isReveal = (targ is RevealSpell.InternalTarget || targ is DetectHidden.InternalTarget); Mobile toTarget = null; Mobile toHeal = null; if (isReveal) { targ.Invoke(m_Mobile, m_Mobile); } if (isTrap) { Pouch p = FindPouch(m_Mobile); if (p != null) { targ.Invoke(m_Mobile, p); } else targ.Cancel(m_Mobile, TargetCancelType.Canceled); } if (isDispel) { toTarget = FindDispelTarget(false); if (toTarget != null && m_Mobile.InRange(toTarget, 10) && !toTarget.Paralyzed) RunFrom(toTarget); } if (CrossHeals && isCrossHeal) { toHeal = FindHealTarget(true); if (toHeal != null && !m_Mobile.InRange(toHeal, 8)) { RunTo(toHeal, CanRun); } } else if (isParalyze || isTeleport) { toTarget = FindDispelTarget(true); if (toTarget == null) { toTarget = m_Mobile.Combatant; if (toTarget != null && !m_Mobile.InRange(toTarget, 8)) RunTo(toTarget, CanRun); } else if (m_Mobile.InRange(toTarget, 10)) { RunFrom(toTarget); teleportAway = true; } else { teleportAway = true; } } else { if (m_Mobile.ControlOrder == OrderType.Come && isTeleport) { toTarget = m_Mobile.ControlMaster; } else { toTarget = m_Mobile.Combatant; } if (toTarget != null) { RunTo(toTarget, CanRun); } } if ((targ.Flags & TargetFlags.Harmful) != 0 && toTarget != null) { if ((m_Mobile.InRange(toTarget, 10)) && m_Mobile.CanSee(toTarget) && m_Mobile.InLOS(toTarget)) { targ.Invoke(m_Mobile, toTarget); } else if (isDispel) { targ.Cancel(m_Mobile, TargetCancelType.Canceled); } } else if ((targ.Flags & TargetFlags.Beneficial) != 0 && toHeal != null) { if ((m_Mobile.InRange(toHeal, 10)) && m_Mobile.CanSee(toHeal) && m_Mobile.InLOS(toHeal) && NeedGHeal(toHeal)) { targ.Invoke(m_Mobile, toHeal); } else { Targeting.Target.Cancel(m_Mobile); } } else if ((targ.Flags & TargetFlags.Beneficial) != 0) { if (!isCrossHeal) { targ.Invoke(m_Mobile, m_Mobile); } if ((isCrossHeal) && (NeedGHeal(m_Mobile))) { targ.Invoke(m_Mobile, m_Mobile); } else { targ.Cancel(m_Mobile, TargetCancelType.Canceled); } } else if (isTeleport && toTarget != null) { Map map = m_Mobile.Map; if (map == null) { targ.Cancel(m_Mobile, TargetCancelType.Canceled); return; } int px, py; if (teleportAway) { int rx = m_Mobile.X - toTarget.X; int ry = m_Mobile.Y - toTarget.Y; double d = m_Mobile.GetDistanceToSqrt(toTarget); px = toTarget.X + (int)(rx * (10 / d)); py = toTarget.Y + (int)(ry * (10 / d)); } else { px = toTarget.X; py = toTarget.Y; } for (int i = 0; i < m_Offsets.Length; i += 2) { int x = m_Offsets[i], y = m_Offsets[i + 1]; Point3D p = new Point3D(px + x, py + y, 0); LandTarget lt = new LandTarget(p, map); if ((targ.Range == -1 || m_Mobile.InRange(p, targ.Range)) && m_Mobile.InLOS(lt) && map.CanSpawnMobile(px + x, py + y, lt.Z) && !SpellHelper.CheckMulti(p, map)) { targ.Invoke(m_Mobile, lt); return; } } int teleRange = targ.Range; if (teleRange < 0) teleRange = 12; for (int i = 0; i < 10; ++i) { Point3D randomPoint = new Point3D(m_Mobile.X - teleRange + Utility.Random(teleRange * 2 + 1), m_Mobile.Y - teleRange + Utility.Random(teleRange * 2 + 1), 0); LandTarget lt = new LandTarget(randomPoint, map); if (m_Mobile.InLOS(lt) && map.CanSpawnMobile(lt.X, lt.Y, lt.Z) && !SpellHelper.CheckMulti(randomPoint, map)) { targ.Invoke(m_Mobile, new LandTarget(randomPoint, map)); return; } } targ.Cancel(m_Mobile, TargetCancelType.Canceled); } else { targ.Cancel(m_Mobile, TargetCancelType.Canceled); } }
public virtual bool OnTarget( Mobile m, Target t, object o ) { return true; }
public TimeoutTimer( Target target, Mobile m, TimeSpan delay ) : base(delay) { m_Target = target; m_Mobile = m; if ( delay >= ThirtySeconds ) Priority = TimerPriority.FiveSeconds; else if ( delay >= TenSeconds ) Priority = TimerPriority.OneSecond; else if ( delay >= OneSecond ) Priority = TimerPriority.TwoFiftyMS; else Priority = TimerPriority.TwentyFiveMS; }
//This Wraps the target and resets the targeted ITEM to it's child BASECREATURE //Unfortunately, there is no accessible Array for a player's followers, //so we must use the GetMobilesInRage(int range) method for our reference checks! public override bool CheckTarget( Mobile from, Target targ, object targeted ) { #region CheckEntity //Check to see if we have an Entity Link (Child BaseCreature) //If not, create one! //(Without Combatant Change, since this is for pets) PlayerMobile pm = from as PlayerMobile; if( pm != null ) { if( m_Child != null && !m_Child.Deleted ) { m_Child.Update( ); } else { ProvideEntity( ); if( m_Child != null && !m_Child.Deleted ) { m_Child.Update( ); } } } #endregion if( targ is AIControlMobileTarget && targeted == this ) { //Wrap the target AIControlMobileTarget t = targ as AIControlMobileTarget; //Get the OrderType OrderType order = t.Order; //Search for our controlled pets within screen range foreach( Mobile m in from.GetMobilesInRange( 16 ) ) { if( !( m is BaseCreature ) ) continue; BaseCreature bc = m as BaseCreature; if( from != null && !from.Deleted && from.Alive ) { if( bc == null || bc.Deleted || !bc.Alive || !bc.Controlled || bc.ControlMaster != from ) continue; //Reset the pet's ControlTarget and OrderType. bc.ControlTarget = m_Child; bc.ControlOrder = t.Order; } } } return base.CheckTarget( from, targ, targeted ); }
private void ProcessTarget( Target targ ) { bool isDispel = ( targ is DispelSpell.InternalTarget ); bool isParalyze = ( targ is ParalyzeSpell.InternalTarget ); Mobile toTarget; if ( isDispel ) { toTarget = FindDispelTarget( false ); if ( !SmartAI && toTarget != null ) RunTo( toTarget ); else if ( toTarget != null && m_Mobile.InRange( toTarget, 8 ) ) RunFrom( toTarget ); } else if ( SmartAI && isParalyze ) { toTarget = FindDispelTarget( true ); if ( toTarget == null ) { toTarget = m_Mobile.Combatant; if ( toTarget != null ) RunTo( toTarget ); } } else { toTarget = m_Mobile.Combatant; if ( toTarget != null ) RunTo( toTarget ); } if ( (targ.Flags & TargetFlags.Harmful) != 0 && toTarget != null ) { if ( (targ.Range == -1 || m_Mobile.InRange( toTarget, targ.Range )) && m_Mobile.CanSee( toTarget ) && m_Mobile.InLOS( toTarget ) ) { targ.Invoke( m_Mobile, toTarget ); } else if ( isDispel ) { targ.Cancel( m_Mobile, TargetCancelType.Canceled ); } } else if ( (targ.Flags & TargetFlags.Beneficial) != 0 ) { targ.Invoke( m_Mobile, m_Mobile ); } else { targ.Cancel( m_Mobile, TargetCancelType.Canceled ); } }
public virtual bool OnTarget( Mobile m, Target t, object o ) { if ( m_Parent != null ) return m_Parent.OnTarget( m, t, o ); return true; }
public override bool OnTarget(Mobile m, Target t, object o) { if (!Participant(m)) return false; return base.OnTarget(m, t, o); }
public override bool OnTarget( Mobile m, Target t, object o ) { if( m_ExistingRegion != null ) { return m_ExistingRegion.OnTarget(m,t,o); } else { return base.OnTarget(m,t,o); } }
public TargetReq( Target t ) : base(0x6C, 19) { m_Stream.Write( (bool) t.AllowGround ); m_Stream.Write( (int) t.TargetID ); m_Stream.Write( (byte) t.Flags ); m_Stream.Fill(); }
public override bool OnTarget( Mobile m, Target t, object o ) { if(m.AccessLevel == AccessLevel.Player && t is Server.Spells.Third.TeleportSpell.InternalTarget) { m.SendLocalizedMessage(501802); // that spell doesn't seem to work. return false; } return base.OnTarget(m, t, o); }
public virtual bool OnTarget(Mobile m, Target target, object o) { return m != null && !m.Deleted && target != null && o != null; }
public TimeoutTimer( Target target, Mobile m, TimeSpan delay ) : base(delay) { m_Target = target; m_Mobile = m; }