protected virtual int GetProgress(ConquestState state, CreatureConquestContainer args)
        {
            if (state.User == null)
            {
                return(0);
            }

            if (args == null || args.Creature == null || args.Killer is PlayerMobile && args.Killer.Account != state.User.Account)
            {
                return(0);
            }

            if (Creature.IsNotNull && !args.Creature.TypeEquals(Creature, Children))
            {
                if (ChangeCreatureReset)
                {
                    return(-state.Progress);
                }

                return(0);
            }

            if (AccessCreature > args.Creature.AccessLevel)
            {
                return(0);
            }

            if (AccessKiller > args.Killer.AccessLevel)
            {
                return(0);
            }

            if (NotoCompare != NotorietyType.None && NotoCompare != args.Killer.ComputeNotoriety(args.Creature))
            {
                return(0);
            }

            if (NotoCreature != NotorietyType.None && NotoCreature != args.Creature.ComputeNotoriety())
            {
                return(0);
            }

            if (NotoKiller != NotorietyType.None && NotoKiller != args.Killer.ComputeNotoriety())
            {
                return(0);
            }

            if (((BaseCreature)args.Creature).IsBonded)
            {
                return(0);
            }

            if (IsParagon && !((BaseCreature)args.Creature).IsParagon)
            {
                return(0);
            }

            return(1);
        }
Esempio n. 2
0
        protected override int GetProgress(ConquestState state, CreatureConquestContainer args)
        {
            if (state.User == null)
            {
                return(0);
            }

            if (args == null || args.Creature == null || args.Killer != null && args.Killer is PlayerMobile && args.Killer.Account != state.User.Account || !(args.Creature is BaseCreature))
            {
                return(0);
            }

            var creature = args.Creature as BaseCreature;

            if (Alignment != Alignment.None && creature.Alignment != Alignment)
            {
                return(0);
            }

            return(1);
            //return base.GetProgress(state, args);
        }
Esempio n. 3
0
        /*public static event Action<ConquestProgressEventArgs> OnProgress;
         * public static event Action<ConquestTierCompletedEventArgs> OnTierCompleted;
         * public static event Action<ConquestCompletedEventArgs> OnCompleted;
         *
         * public static void InvokeProgress(ConquestProgressEventArgs e)
         * {
         *  if (e != null && OnProgress != null)
         *  {
         *      OnProgress(e);
         *  }
         * }
         *
         * public static void InvokeTierCompleted(ConquestTierCompletedEventArgs e)
         * {
         *  if (e != null && OnTierCompleted != null)
         *  {
         *      OnTierCompleted(e);
         *  }
         * }
         *
         * public static void InvokeCompleted(ConquestCompletedContainer e)
         * {
         *  if (e != null && OnCompleted != null)
         *  {
         *      OnCompleted(e);
         *  }
         * }
         *
         * private static void SetEvents()
         * {
         *  EventSink.PlayerDeath += HandlePlayerDeath;
         *  EventSink.Speech += HandleSpeech;
         *  //EventSink.Login += HandleLogin;
         *  //EventSink.Logout += HandleLogout;
         *  EventSink.Movement += HandleMovement;
         *  EventSink.CastSpellRequest += HandleCastSpellRequest;
         *  EventSink.Command += HandleCommand;
         *  //EventSink.ClientVersionReceived += HandleClientVersionReceived;
         *
         *  EventSink.OnConsume += HandleOnItemConsume;
         *  EventSink.OnItemUse += HandleOnItemUse;
         *
         *  TrashProfile.TokensReceived += HandleTrashTokens;
         *
         *  OnProgress += HandleProgress;
         *  OnTierCompleted += HandleTierCompleted;
         *  OnCompleted += HandleCompleted;
         * }
         *
         * private static void UnsetEvents()
         * {
         *  EventSink.PlayerDeath -= HandlePlayerDeath;
         *  EventSink.Speech -= HandleSpeech;
         *  //EventSink.Login -= HandleLogin;
         *  //EventSink.Logout -= HandleLogout;
         *  EventSink.Movement -= HandleMovement;
         *  EventSink.CastSpellRequest -= HandleCastSpellRequest;
         *  EventSink.Command -= HandleCommand;
         *  //EventSink.ClientVersionReceived -= HandleClientVersionReceived;
         *
         *  EventSink.OnConsume -= HandleOnItemConsume;
         *  EventSink.OnItemUse -= HandleOnItemUse;
         *
         *  TrashProfile.TokensReceived -= HandleTrashTokens;
         *
         *  OnProgress -= HandleProgress;
         *  OnTierCompleted -= HandleTierCompleted;
         *  OnCompleted -= HandleCompleted;
         * }*/

        public static void HandleCreatureDeath(CreatureConquestContainer e)
        {
            if (e == null || e.Creature == null || !(e.Creature is BaseCreature))
            {
                return;
            }

            var creature = (BaseCreature)e.Creature;

            List <PlayerMobile> team =
                creature.DamageEntries.Not(de => de.DamageGiven <= 0 || de.HasExpired)
                .Select(de => de.Damager)
                .OfType <PlayerMobile>()
                .ToList();

            if (e.Killer != null)
            {
                var killer = e.Killer as PlayerMobile;
                if (killer == null && e.Killer is BaseCreature)
                {
                    killer = ((BaseCreature)e.Killer).GetMaster <PlayerMobile>();
                }

                if (killer == null)
                {
                    killer = creature.GetLastKiller <PlayerMobile>();
                }

                if (killer != null && !team.Contains(killer))
                {
                    team.Add(killer);
                }
            }

            team.ForEach(p => CheckProgress <CreatureKillConquest>(p, new CreatureConquestContainer(creature, p, e.Corpse)));
        }