Exemplo n.º 1
0
        public ConfirmReleaseAllGump(Mobile from) : base(50, 50)
        {
            m_From = from;
            m_From.CloseGump(typeof(ConfirmReleaseGump));

            if (ArenaGroupController.GetArenaGroupRegionAtLocation(from.Location, from.Map) != null)
            {
                m_From.SendMessage("Followers may not be released in that area.");
                return;
            }

            if (m_From.Region is NewbieDungeonRegion)
            {
                m_From.SendMessage("Followers may not be released in that area.");
                return;
            }

            AddPage(0);

            AddBackground(0, 0, 270, 120, 5054);
            AddBackground(10, 10, 250, 100, 3000);

            AddHtml(20, 15, 230, 60, "Are you sure you wish to release all your followers?", true, true);

            AddButton(20, 80, 4005, 4007, 2, GumpButtonType.Reply, 0);
            AddHtmlLocalized(55, 80, 75, 20, 1011011, false, false); // CONTINUE

            AddButton(135, 80, 4005, 4007, 1, GumpButtonType.Reply, 0);
            AddHtmlLocalized(170, 80, 75, 20, 1011012, false, false); // CANCEL
        }
        public override void OnResponse(Server.Network.NetState sender, RelayInfo info)
        {
            if (ArenaGroupController.GetArenaGroupRegionAtLocation(m_From.Location, m_From.Map) != null)
            {
                m_From.SendMessage("Followers may not be released in that area.");
                return;
            }

            if (m_From.Region is NewbieDungeonRegion)
            {
                m_From.SendMessage("Followers may not be released in that area.");
                return;
            }

            if (info.ButtonID == 2)
            {
                if (!m_Pet.Deleted && m_Pet.Controlled && m_From == m_Pet.ControlMaster && m_From.CheckAlive() /*&& m_Pet.CheckControlChance( m_From )*/)
                {
                    if (m_Pet.Map == m_From.Map && m_Pet.InRange(m_From, 14))
                    {
                        m_Pet.ControlTarget = null;
                        m_Pet.ControlOrder  = OrderType.Release;
                    }
                }
            }
        }
Exemplo n.º 3
0
        public override void OnResponse(Server.Network.NetState sender, RelayInfo info)
        {
            if (ArenaGroupController.GetArenaGroupRegionAtLocation(m_From.Location, m_From.Map) != null)
            {
                m_From.SendMessage("Followers cannot be released in that area.");
                return;
            }

            if (m_From.Region is NewbieDungeonRegion)
            {
                m_From.SendMessage("Followers cannot be released in that area.");
                return;
            }

            if (info.ButtonID == 2)
            {
                PlayerMobile pm = m_From as PlayerMobile;

                if (pm != null)
                {
                    pm.ReleaseAllFollowers();
                }
            }
        }
Exemplo n.º 4
0
        public static bool Mobile_AllowHarmful(Mobile from, Mobile target)
        {
            if (from == null || target == null || from.AccessLevel > AccessLevel.Player || target.AccessLevel > AccessLevel.Player)
            {
                return(true);
            }

            PlayerMobile pm_From   = from as PlayerMobile;
            PlayerMobile pm_Target = target as PlayerMobile;

            BaseCreature bc_From   = from as BaseCreature;
            BaseCreature bc_Target = target as BaseCreature;

            PlayerMobile fromRootPlayer   = null;
            PlayerMobile targetRootPlayer = null;

            if (pm_From != null)
            {
                fromRootPlayer = pm_From;
            }

            if (pm_Target != null)
            {
                targetRootPlayer = pm_Target;
            }

            if (bc_From != null)
            {
                if (bc_From.ControlMaster is PlayerMobile)
                {
                    fromRootPlayer = bc_From.ControlMaster as PlayerMobile;
                }
            }

            if (bc_Target != null)
            {
                if (bc_Target.ControlMaster is PlayerMobile)
                {
                    targetRootPlayer = bc_Target.ControlMaster as PlayerMobile;
                }
            }

            #region Arena

            ArenaGroupController fromArenaGroupController   = ArenaGroupController.GetArenaGroupRegionAtLocation(from.Location, from.Map);
            ArenaGroupController targetArenaGroupController = ArenaGroupController.GetArenaGroupRegionAtLocation(target.Location, target.Map);

            if (fromArenaGroupController != null || targetArenaGroupController != null)
            {
                if (fromRootPlayer != null && targetRootPlayer != null)
                {
                    ArenaFight fromArenaFight   = fromRootPlayer.m_ArenaFight;
                    ArenaFight targetArenaFight = targetRootPlayer.m_ArenaFight;

                    if (fromArenaFight != null && targetArenaFight != null && fromArenaFight == targetArenaFight)
                    {
                        if (fromArenaFight.m_FightPhase == ArenaFight.FightPhaseType.Fight)
                        {
                            if (fromArenaFight.IsWithinArena(from.Location, from.Map) && fromArenaFight.IsWithinArena(target.Location, target.Map))
                            {
                                return(true);
                            }
                        }
                    }
                }

                return(false);
            }

            #endregion

            #region Ress Penalty

            if (fromRootPlayer != null && targetRootPlayer != null)
            {
                if (fromRootPlayer.RessPenaltyExpiration > DateTime.UtcNow && fromRootPlayer.m_RessPenaltyAccountWideAggressionRestriction)
                {
                    return(false);
                }
            }

            #endregion

            Map map = from.Map;

            // Young Players in Felucca
            if (from.Player && target.Player && (((PlayerMobile)target).Young || ((PlayerMobile)from).Young) && !(target.Criminal || from.Criminal))
            {
                return(false);   // Old players cannot attack youngs and vice versa unless young is crim
            }
            //Felucca
            if (map != null && ((map.Rules & MapRules.BeneficialRestrictions) == 0))
            {
                return(true); // In felucca, anything goes. Special case fire dungeon as players can access it in fel or trammel under fel rules
            }
            //Other Maps
            BaseCreature bc = from as BaseCreature;

            if (!from.Player && !(bc != null && bc.GetMaster() != null && bc.GetMaster().AccessLevel == AccessLevel.Player))
            {
                if (!CheckAggressor(from.Aggressors, target) && !CheckAggressed(from.Aggressed, target) && target is PlayerMobile && ((PlayerMobile)target).CheckYoungProtection(from))
                {
                    return(false);
                }

                return(true); // Uncontrolled NPCs are only restricted by the young system
            }

            if (target is BaseCreature && (((BaseCreature)target).Controlled || (((BaseCreature)target).Summoned && from != ((BaseCreature)target).SummonMaster)))
            {
                return(false); // Cannot harm other controlled mobiles
            }
            if (target.Player)
            {
                return(false); // Cannot harm other players
            }
            if (!(target is BaseCreature && ((BaseCreature)target).InitialInnocent))
            {
                if (Notoriety.Compute(from, target) == Notoriety.Innocent)
                {
                    return(false); // Cannot harm innocent mobiles
                }
            }

            return(true);
        }