コード例 #1
0
        public override bool CanTeleport(Mobile m)
        {
            if (!base.CanTeleport(m))
            {
                return(false);
            }

            if (m_QuestType != null)
            {
                PlayerMobile pm = m as PlayerMobile;

                if (pm == null)
                {
                    return(false);
                }

                MLQuestContext context = MLQuestSystem.GetContext(pm);

                if (context == null || (!context.IsDoingQuest(m_QuestType) && !context.HasDoneQuest(m_QuestType)))
                {
                    TextDefinition.SendMessageTo(m, m_Message);
                    return(false);
                }
            }

            return(true);
        }
コード例 #2
0
        public override void OnMovement(Mobile m, Point3D oldLocation)
        {
            if (!Running)
            {
                return;
            }

            if (IsEmpty && End <= Core.Now && m.InRange(GetWorldLocation(), TriggerRange) &&
                m.Location != oldLocation && ValidTrigger(m))
            {
                TextDefinition.SendMessageTo(m, SpawnMessage);

                DoTimer();
                Spawn();

                if (InstantFlag)
                {
                    foreach (var spawned in Spawned.Keys)
                    {
                        if (spawned is Mobile mobile)
                        {
                            mobile.Combatant = m;
                        }
                    }
                }
            }
        }
コード例 #3
0
            public override void OnResponse(NetState sender, RelayInfo info)
            {
                if (info.ButtonID != 1)
                {
                    return;
                }

                var from = sender.Mobile;

                if (!m_Token.IsChildOf(from.Backpack))
                {
                    from.SendLocalizedMessage(1062334); // This item must be in your backpack to be used.
                }
                else
                {
                    var i = m_Token.CreateItemFor(from);

                    if (i != null)
                    {
                        from.BankBox.AddItem(i);
                        TextDefinition.SendMessageTo(from, m_Token.ItemReceiveMessage);
                        m_Token.Delete();
                    }
                }
            }
コード例 #4
0
ファイル: ProximitySpawner.cs プロジェクト: coderxan/MetaPets
        public override void OnMovement(Mobile m, Point3D oldLocation)
        {
            if (!Running)
            {
                return;
            }

            if (IsEmpty && End <= DateTime.UtcNow && m.InRange(GetWorldLocation(), m_TriggerRange) && m.Location != oldLocation && ValidTrigger(m))
            {
                TextDefinition.SendMessageTo(m, m_SpawnMessage);

                DoTimer();
                Spawn();

                if (m_InstantFlag)
                {
                    foreach (ISpawnable spawned in Spawned)
                    {
                        if (spawned is Mobile)
                        {
                            ((Mobile)spawned).Combatant = m;
                        }
                    }
                }
            }
        }
コード例 #5
0
ファイル: MLQuestEntry.cs プロジェクト: nogu3ira/runuo-1
        public void CheckComplete()
        {
            if (IsCompleted())
            {
                m_Player.PlaySound(0x5B5);                   // public sound

                foreach (BaseObjectiveInstance obj in m_ObjectiveInstances)
                {
                    obj.OnQuestCompleted();
                }

                TextDefinition.SendMessageTo(m_Player, m_Quest.CompletionNotice, 0x23);

                /*
                 * Advance to the ClaimReward=true stage if this quest has no
                 * completion message to show anyway. This suppresses further
                 * triggers of CheckComplete.
                 *
                 * For quests that require collections, this is done later when
                 * the player double clicks the quester.
                 */
                if (!Removed && SkipReportBack && !m_Quest.RequiresCollection)                   // An OnQuestCompleted can potentially have removed this instance already
                {
                    ContinueReportBack(false);
                }
            }
        }
コード例 #6
0
        public override void HandleInvalidTransfer(Mobile from)
        {
            if (InvalidTransferMessage != null)
            {
                TextDefinition.SendMessageTo(from, InvalidTransferMessage);
            }

            Delete();
        }
コード例 #7
0
ファイル: BaseDyeTub.cs プロジェクト: zerodowned/UO-Forever
 public override void OnDoubleClick(Mobile from)
 {
     if (from.InRange(GetWorldLocation(), 1))
     {
         TextDefinition.SendMessageTo(from, TargetMessage);
         from.Target = new InternalTarget(this);
     }
     else
     {
         from.SendLocalizedMessage(500446);                 // That is too far away.
     }
 }
コード例 #8
0
        public bool Check(Mobile from)
        {
            if (!IsChildOf(from.Backpack))
            {
                from.SendLocalizedMessage(1047012);                   // The contract must be in your backpack to use it.
            }
            else if (!VerifyRegion(from))
            {
                TextDefinition.SendMessageTo(from, RepairSkillInfo.GetInfo(m_Skill).NotNearbyMessage);
            }
            else
            {
                return(true);
            }

            return(false);
        }
コード例 #9
0
ファイル: BaseDyeTub.cs プロジェクト: zerodowned/UO-Forever
 protected override void OnTarget(Mobile from, object targeted)
 {
     if (targeted is Item)
     {
         Item item = (Item)targeted;
         if (!from.InRange(m_Tub.GetWorldLocation(), 1) || !from.InRange(item.GetWorldLocation(), 1))
         {
             from.SendLocalizedMessage(500446);                         // That is too far away.
         }
         else if (targeted is MetalKiteShield && m_Tub is DyeTub)
         {
             m_Tub.Dye(from, item);
         }
         else if (targeted is HouseToHouseTeleporter && m_Tub is FurnitureDyeTub)
         {
             m_Tub.Dye(from, item);
         }
         else if (!item.Deleted &&
                  (item.Dyable ||
                   (m_Tub.UsesRemaining >= 0 && m_Tub.Redyable && item is BaseDyeTub && ((BaseDyeTub)item).Redyable &&
                    ((BaseDyeTub)item).UsesRemaining >= 0)) && m_Tub.IsDyable(item))
         {
             if (m_Tub.Dye(from, item))
             {
                 if (m_Tub.UsesRemaining > 0)
                 {
                     m_Tub.UsesRemaining--;
                     if (m_Tub.UsesRemaining == 0)
                     {
                         m_Tub.Delete();
                         from.SendMessage(54, "Your dye tub has run out of charges!");
                     }
                 }
             }
         }
         else
         {
             TextDefinition.SendMessageTo(from, m_Tub.FailMessage);
         }
     }
     else
     {
         TextDefinition.SendMessageTo(from, m_Tub.FailMessage);
     }
 }
コード例 #10
0
ファイル: BaseDyeTub.cs プロジェクト: zerodowned/UO-Forever
        public virtual bool Dye(Mobile from, Item item)
        {
            if (item.Parent is Mobile)
            {
                from.SendMessage("You decided not to dye this while it is worn.");                 // Can't Dye clothing that is being worn.
            }
            else if (item.Dye(from, this))
            {
                from.PlaySound(0x23E);
                return(true);
            }
            else
            {
                TextDefinition.SendMessageTo(from, FailMessage);
            }

            return(false);
        }
コード例 #11
0
        public static bool SetCurrentMove(Mobile m, SpecialMove move)
        {
            if (!Core.SE)
            {
                ClearCurrentMove(m);
                return(false);
            }

            if (move?.Validate(m) == false)
            {
                ClearCurrentMove(m);
                return(false);
            }

            var sameMove = move == GetCurrentMove(m);

            ClearCurrentMove(m);

            if (sameMove)
            {
                return(true);
            }

            if (move != null)
            {
                WeaponAbility.ClearCurrentAbility(m);

                Table[m] = move;

                move.OnUse(m);

                var moveID = SpellRegistry.GetRegistryNumber(move);

                if (moveID > 0)
                {
                    m.Send(new ToggleSpecialAbility(moveID + 1, true));
                }

                TextDefinition.SendMessageTo(m, move.AbilityMessage);
            }

            return(true);
        }
コード例 #12
0
        public override bool CanTeleport(Mobile m)
        {
            if (!base.CanTeleport(m))
            {
                return(false);
            }

            if (m_TicketType != null)
            {
                Item      ticket = null;
                Container pack   = m.Backpack;

                if (pack != null)
                {
                    ticket = pack.FindItemByType(m_TicketType, false); // Check (top level) backpack
                }
                if (ticket == null)
                {
                    foreach (Item item in m.Items) // Check paperdoll
                    {
                        if (m_TicketType.IsAssignableFrom(item.GetType()))
                        {
                            ticket = item;
                            break;
                        }
                    }
                }

                if (ticket == null)
                {
                    TextDefinition.SendMessageTo(m, m_Message);
                    return(false);
                }

                if (ticket is ITicket)
                {
                    ((ITicket)ticket).OnTicketUsed(m);
                }
            }

            return(true);
        }
コード例 #13
0
        public override bool Dye(Mobile from, Item item)
        {
            if (!item.Movable)
            {
                from.SendMessage("You cannot dye spellbooks which are locked down.");
            }
            else if (item.Parent is Mobile)
            {
                from.SendMessage("You cannot dye spellbooks that are being worn.");
            }
            else if (item.Dye(from, this))
            {
                from.PlaySound(0x23E);
                return(true);
            }
            else
            {
                TextDefinition.SendMessageTo(from, FailMessage);
            }

            return(false);
        }
コード例 #14
0
ファイル: DyeTub.cs プロジェクト: alucardxlx/Casiopia
 protected override void OnTarget(Mobile from, object targeted)
 {
     if (targeted is Item)
     {
         Item item = (Item)targeted;
         if (!from.InRange(m_Tub.GetWorldLocation(), 1) || !from.InRange(item.GetWorldLocation(), 1))
         {
             from.SendLocalizedMessage(500446);                           // That is too far away.
         }
         else if (!item.Deleted && item.Dyable && m_Tub.IsDyable(item))
         {
             m_Tub.Dye(from, item);
         }
         else
         {
             TextDefinition.SendMessageTo(from, m_Tub.FailMessage);
         }
     }
     else
     {
         TextDefinition.SendMessageTo(from, m_Tub.FailMessage);
     }
 }
コード例 #15
0
 public virtual void SendAbilityMessage(Mobile m)
 {
     TextDefinition.SendMessageTo(m, AbilityMessage);
 }
コード例 #16
0
 public void SendSuccessTo(Mobile m)
 {
     TextDefinition.SendMessageTo(m, m_SuccessMessage);
 }