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