protected override void OnTick()
            {
                if (m_Owner.Deleted)
                {
                    Stop();
                    return;
                }

                m_Owner.Criminal = false;
                m_Owner.Kills    = 0;
                m_Owner.Stam     = m_Owner.StamMax;

                Mobile target = m_Owner.Focus;

                if (target != null && (target.Deleted || !target.Alive || !m_Owner.CanBeHarmful(target)))
                {
                    m_Owner.Focus = null;
                    Stop();
                    return;
                }

                if (target != null && m_Owner.Combatant != target)
                {
                    m_Owner.Combatant = target;
                }

                if (target == null)
                {
                    Stop();
                }

                else
                {
                    //wander around, kill and wait for timer to end
                    if ((m_Stage++ % 4) == 0 || !m_Owner.Move(m_Owner.Direction))
                    {
                        m_Owner.Direction = (Direction)Utility.Random(8);
                    }

                    //Time to talk
                    switch (Utility.Random(5))  //picks one of the following
                    {
                    case 0:
                    { m_Owner.Say("Whose life is it anyway?."); break; }

                    case 1:
                    { m_Owner.Say("The appearance of right oft leads us wrong."); break; }

                    case 2:
                    { m_Owner.Say("Go, and do thou likewise."); break; }

                    case 3:
                    { m_Owner.Say("What stings is justice."); break; }

                    case 4:
                    { m_Owner.Say("Dig the well before you are thirsty."); break; }
                    }

                    //Stop fighting and wait for next attack
                    //m_Owner.Focus = null;
                    //Stop();
                    //return;
                }
            }
            protected override void OnTick()
            {
                if (m_Owner.Deleted)
                {
                    Stop();
                    return;
                }

                m_Owner.Criminal = false;
                m_Owner.Kills    = 0;
                m_Owner.Stam     = m_Owner.StamMax;

                Mobile target = m_Owner.Focus;

                if (target != null && (target.Deleted || !target.Alive || !m_Owner.CanBeHarmful(target)))
                {
                    m_Owner.Focus = null;
                    Stop();
                    return;
                }

                //10OCT2007 InstaKill for Creatures ONLY *** START ***

                if (target != null && m_Owner.Combatant != target)
                {
                    m_Owner.Combatant = target;
                }

                if (target == null)
                {
                    Stop();
                }

                else
                {
                    //kill creatures only
                    if (target is BaseCreature)
                    {
                        target.BoltEffect(0);
                        //((BaseCreature)target).NoKillAwards = true;
                        target.Kill(); // just in case, maybe Damage is overriden on some shard
                        m_Owner.Focus = null;
                        Stop();
                    }
                    else
                    {
                        //kill player if in a certian region
                        IPoint3D ip = m_Owner as IPoint3D;

                        if (ip != null)
                        {
                            Point3D p = new Point3D(ip);

                            Region reg = Region.Find(new Point3D(p), m_Owner.Map);

                            Console.WriteLine("Guards Called to: " + reg.Name);

                            if (reg.Name == "SafeZone")
                            {
                                target.Frozen = true;
                                target.BoltEffect(0);
                                target.BodyMod = Utility.RandomList(50, 56);

                                Timer.DelayCall(TimeSpan.FromSeconds(20.0), new TimerCallback(ReportKill));
                                target.BoltEffect(0);
                                //((BaseCreature)target).NoKillAwards = true;
                                target.Kill(); // just in case, maybe Damage is overriden on some shard

                                target.BodyMod = 0x0;
                                target.Frozen  = false;

                                m_Owner.Focus = null;
                                m_TeleportTo  = false;
                                Stop();
                            }
                            else
                            {
                                //Turn Off Guard
                                m_Owner.Focus = null;

                                //wander around and wait for timer to end
                                if ((m_Stage++ % 4) == 0 || !m_Owner.Move(m_Owner.Direction))
                                {
                                    m_Owner.Direction = (Direction)Utility.Random(8);
                                }

                                //Time to talk
                                switch (Utility.Random(5))  //picks one of the following
                                {
                                case 0:
                                { m_Owner.Say("Depend not on fortune, but on conduct."); break; }

                                case 1:
                                { m_Owner.Say("A great fortune in the hands of a fool is a great misfortune."); break; }

                                case 2:
                                { m_Owner.Say("To save time is to lengthen life."); break; }

                                case 3:
                                { m_Owner.Say("Rich gifts wax poor when givers prove unkind."); break; }

                                case 4:
                                { m_Owner.Say("Act the way you'd like to be and soon you'll be the way you act."); break; }
                                }
                            }
                        }
                    }
                }

                //10OCT2007 InstaKill for Creatures ONLY *** END  ***

                //{// <instakill>
                //    TeleportTo( target );
                //    target.BoltEffect( 0 );

                //    if ( target is BaseCreature )
                //        ((BaseCreature)target).NoKillAwards = true;

                //    target.Damage( target.HitsMax, m_Owner );
                //    target.Kill(); // just in case, maybe Damage is overriden on some shard

                //    if ( target.Corpse != null && !target.Player )
                //        target.Corpse.Delete();

                //    m_Owner.Focus = null;
                //    Stop();
                //}// </instakill>
                ///*else if ( !m_Owner.InRange( target, 20 ) )
                //{
                //    m_Owner.Focus = null;
                //}
                //else if ( !m_Owner.InRange( target, 10 ) || !m_Owner.InLOS( target ) )
                //{
                //    TeleportTo( target );
                //}
                //else if ( !m_Owner.InRange( target, 1 ) )
                //{
                //    if ( !m_Owner.Move( m_Owner.GetDirectionTo( target ) | Direction.Running ) )
                //        TeleportTo( target );
                //}
                //else if ( !m_Owner.CanSee( target ) )
                //{
                //    if ( !m_Owner.UseSkill( SkillName.DetectHidden ) && Utility.Random( 50 ) == 0 )
                //        m_Owner.Say( "Reveal!" );
                //}*/
            }
Exemple #3
0
            protected override void OnTick()
            {
                if (m_Owner.Deleted)
                {
                    Stop();
                    return;
                }

                m_Owner.Criminal = false;
                m_Owner.Kills    = 0;
                m_Owner.Stam     = m_Owner.StamMax;

                Mobile target = m_Owner.Focus;

                if (target != null && (target.Deleted || !target.Alive || !m_Owner.CanBeHarmful(target)))
                {
                    m_Owner.Focus = null;
                    Stop();
                    return;
                }
                else if (m_Owner.Weapon is Fists)
                {
                    m_Owner.Kill();
                    Stop();
                    return;
                }

                if (target != null && m_Owner.Combatant != target)
                {
                    m_Owner.Combatant = target;
                }

                if (target == null)
                {
                    Stop();
                }

                /*else
                 * {// <instakill>
                 *      TeleportTo( target );
                 *      target.BoltEffect( 0 );
                 *
                 *      if ( target is BaseCreature )
                 *              ((BaseCreature)target).NoKillAwards = true;
                 *
                 *      target.Damage( target.HitsMax, m_Owner );
                 *      target.Kill(); // just in case, maybe Damage is overriden on some shard
                 *
                 *      if ( target.Corpse != null && !target.Player )
                 *              target.Corpse.Delete();
                 *
                 *      m_Owner.Focus = null;
                 *      Stop();
                 * }// </instakill>*/
                else if (!m_Owner.InRange(target, 20))
                {
                    m_Owner.Focus = null;
                }

                /*else if ( !m_Owner.InRange( target, 10 ) || !m_Owner.InLOS( target ) )  // edited by Matt - make it possible to run away
                 * {
                 *      TeleportTo( target );
                 * }*/
                else if (!m_Owner.InRange(target, 1))
                {
                    if (!m_Owner.Move(m_Owner.GetDirectionTo(target) | Direction.Running))
                    {
                        TeleportTo(target);
                    }
                }
                else if (!m_Owner.CanSee(target))
                {
                    if (!m_Owner.UseSkill(SkillName.DetectHidden) && Utility.Random(50) == 0)
                    {
                        m_Owner.Say("Reveal!");
                    }
                }
            }
            protected override void OnTick()
            {
                if (m_Owner.Deleted)
                {
                    Stop();
                    return;
                }

                if (m_AutoDelete)
                {
                    if ((m_Stage++ % 4) == 0 || !m_Owner.Move(m_Owner.Direction))
                    {
                        m_Owner.Direction = (Direction)Utility.Random(8);
                    }

                    if (m_Stage > 16)
                    {
                        Stop();
                        Effects.SendLocationParticles(EffectItem.Create(m_Owner.Location, m_Owner.Map, EffectItem.DefaultDuration), 0x3728, 10, 10, 2023);
                        m_Owner.PlaySound(0x1FE);
                        m_Owner.Delete();
                    }
                }
                else
                {
                    if (m_Mobile == null)
                    {
                        Stop();
                    }
                    else if (m_Stage++ % 4 == 0)
                    {
                        if (Utility.RandomBool())
                        {
                            switch (Utility.Random(5))
                            {                                   // say things just once
                            case 0: if (said[0]++ == 0)
                                {
                                    m_Owner.Say("Let that be a lesson to you {0}!", m_Mobile.Name);
                                }
                                break;

                            case 1: if (said[1]++ == 0)
                                {
                                    m_Owner.Say("Take heed citizens.");
                                }
                                break;

                            case 2: if (said[2]++ == 0)
                                {
                                    m_Owner.Say("{0} won’t be giving us any more trouble.", m_Mobile.Female ? "She" : "He");
                                }
                                break;

                            case 3: if (said[3]++ == 0)
                                {
                                    m_Owner.Say("{0} > {1}", m_Owner.Name, m_Mobile.Name);
                                }
                                break;

                            case 4: if (said[4]++ == 0)
                                {
                                    m_Owner.Whisper("That'll teach {0}.", m_Mobile.Female ? "her" : "him");
                                }
                                break;
                            }
                        }
                    }
                    else if (m_Stage > 16)
                    {                           // salute
                        m_Owner.Animate(33, 5, 1, true, false, 0);
                        Stop();
                    }
                }
            }
            protected override void OnTick()
            {
                if (m_Owner.Deleted)
                {
                    Stop();
                    return;
                }

                m_Owner.Criminal        = false;
                m_Owner.LongTermMurders = 0;
                m_Owner.Stam            = m_Owner.StamMax;

                Mobile target = m_Owner.Focus;

                if (target != null && (target.Deleted || !target.Alive || !m_Owner.CanBeHarmful(target)))
                {
                    m_Owner.Focus = null;
                    Stop();
                    return;
                }
                else if (m_Owner.Weapon is Fists)
                {
                    m_Owner.Kill();
                    Stop();
                    return;
                }

                if (target != null && m_Owner.Combatant != target)
                {
                    m_Owner.Combatant = target;
                }

                if (target == null)
                {
                    Stop();
                }
                else if (Core.UOSP || Core.UOMO)
                {                // <instakill>
                    TeleportTo(target);
                    target.BoltEffect(0);

                    if (target is BaseCreature)
                    {
                        ((BaseCreature)target).NoKillAwards = true;
                    }

                    target.Damage(target.HitsMax, m_Owner);
                    target.Kill();                     // just in case, maybe Damage is overriden on some shard

                    if (target.Corpse != null && !target.Player)
                    {
                        target.Corpse.Delete();
                    }

                    m_Owner.Focus = null;
                    Stop();
                }                // </instakill>
                else if (!m_Owner.InRange(target, 20))
                {
                    m_Owner.Focus = null;
                }
                else if ((!m_Owner.InRange(target, 10) || !m_Owner.InLOS(target)) && !PreferMagic())
                {
                    TeleportTo(target);
                }
                else if (!m_Owner.InRange(target, 1) && !PreferMagic())
                {
                    if (!m_Owner.Move(m_Owner.GetDirectionTo(target) | Direction.Running))
                    {
                        TeleportTo(target);
                    }
                }
                else if (!m_Owner.CanSee(target) && DateTime.Now > m_NextRevealChatter)
                {
                    bWasHidden          = true;
                    m_NextRevealChatter = DateTime.Now + TimeSpan.FromMilliseconds(850);
                    switch (Utility.Random(4))
                    {
                    case 0: m_Owner.Say("Reveal yourself!"); break;

                    case 1: m_Owner.Say("Reveal!"); break;

                    case 2: m_Owner.Say("I know you are here somewhere!"); break;

                    case 3: m_Owner.Say("I'll find you!"); break;
                    }
                }
                else if (m_Owner.CanSee(target) && bWasHidden)
                {
                    bWasHidden = false;
                    switch (Utility.Random(4))
                    {
                    case 0: m_Owner.Say("Ah ha! I have found you"); break;

                    case 1: m_Owner.Say("There you are you wretch!"); break;

                    case 2: m_Owner.Say("You can run but you cannot hide."); break;

                    case 3: m_Owner.Say("Gotcha!"); break;
                    }
                }
            }
            protected override void OnTick()
            {
                if (m_Owner.Deleted)
                {
                    Stop();
                    return;
                }

                m_Owner.Criminal = false;
                m_Owner.Kills    = 0;
                m_Owner.Stam     = m_Owner.StamMax;

                Mobile target = m_Owner.Focus;

                if (target != null && (target.Deleted || !target.Alive || !m_Owner.CanBeHarmful(target)))
                {
                    m_Owner.Focus = null;
                    Stop();
                    return;
                }
                else if (m_Owner.Weapon is Fists)
                {
                    m_Owner.Kill();
                    Stop();
                    return;
                }

                if (target != null && m_Owner.Combatant != target)
                {
                    m_Owner.Combatant = target;
                }

                if (target == null)
                {
                    Stop();
                }
                // when uncommenting instakill, be sure to comment the remaining else ifs below.
                // <instakill>

                /*
                 * else
                 * {
                 *      TeleportTo( target );
                 *      target.BoltEffect( 0 );
                 *
                 *      if ( target is BaseCreature )
                 *              ((BaseCreature)target).NoKillAwards = true;
                 *
                 *      target.Damage( target.HitsMax, m_Owner );
                 *      target.Kill(); // just in case, maybe Damage is overriden on some shard
                 *
                 *      if ( target.Corpse != null && !target.Player )
                 *              target.Corpse.Delete();
                 *
                 *      m_Owner.Focus = null;
                 *      Stop();
                 * }
                 */
                // </instakill>
                else if (!m_Owner.InRange(target, 20))
                {
                    m_Owner.Focus = null;
                }
                else if (!m_Owner.InRange(target, 10) || !m_Owner.InLOS(target))
                {
                    TeleportTo(target);
                }
                else if (!m_Owner.InRange(target, 1))
                {
                    if (!m_Owner.Move(m_Owner.GetDirectionTo(target) | Direction.Running))
                    {
                        TeleportTo(target);
                    }
                }
                else if (!m_Owner.CanSee(target) && Utility.Random(50) == 0)
                {
                    if (Utility.Random(10) == 0)
                    {
                        target.RevealingAction();
                        m_Owner.Say("Ah, I have found you!");
                    }
                    else
                    {
                        m_Owner.Say("Reveal!");
                    }
                }
            }