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); }
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); }
/*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))); }