protected virtual int GetProgress(ConquestState state, LoginEventArgs args) { if (state.User == null) { return(0); } if (args == null || args.Mobile is PlayerMobile && args.Mobile.Account != state.User.Account) { return(0); } if (Map != null && Map != Map.Internal && (args.Mobile.Map == null || args.Mobile.Map != Map)) { if (MapChangeReset) { return(-state.Progress); } return(0); } if (!String.IsNullOrWhiteSpace(Region) && (args.Mobile.Region == null || !args.Mobile.Region.IsPartOf(Region))) { if (RegionChangeReset) { return(-state.Progress); } return(0); } return(1); }
public static void ConsolidateConquests() { var tempprofiles = Profiles.ToDictionary(entry => entry.Key, entry => entry.Value); foreach (var profile in tempprofiles) { Console.WriteLine("Consolidating Profile: " + profile.Key.RawName); if (!Profiles.ContainsKey(profile.Key)) { continue; } foreach (var prof in tempprofiles) { if (profile.Value != prof.Value && profile.Value.Owner.Account == prof.Value.Owner.Account) { foreach (var state in prof.Value.Registry) { ConquestState s = profile.Value.EnsureState(state.Conquest); if (state.Tier > s.Tier || state.Progress > s.Progress || state.Completed && s.Completed && state.CompletedDate < s.CompletedDate || state.WorldFirst) { s.CopyState(state); } } Console.WriteLine("Consolidated Profile: " + profile.Key.RawName); Profiles.Remove(prof.Value.Owner); } } } }
protected override int GetProgress(ConquestState state, ConquestProgressContainer args) { if (state.User == null) { return(0); } int progress = base.GetProgress(state, args); if (progress <= 0) { return(progress); } int total = args.State.Progress + args.Offset; ConquestProfile p = Conquests.EnsureProfile(state.User); if (p != null) { total += p.Sum(s => s != state && Include(s) ? s.Progress : 0); } return(Math.Max(0, total - state.Progress)); }
protected virtual int GetProgress(ConquestState state, Item item, CraftResource res, HarvestSystem harvest) { if (item == null || harvest == null) { return(0); } if (state.User == null) { return(0); } if (ItemType.IsNotNull && !item.TypeEquals(ItemType, ItemChildren)) { if (ItemChangeReset) { return(-state.Progress); } return(0); } if (Resource != CraftResource.None && res != Resource) { return(0); } if (HarvestSystem.IsNotNull && !harvest.TypeEquals(HarvestSystem, false)) { return(0); } return(item.Amount); }
protected override int GetProgress(ConquestState state, ConquestTierCompletedContainer args) { if (state.User == null) { return(0); } int progress = base.GetProgress(state, args); if (progress <= 0) { return(progress); } int count = args.Tier >= TierReq ? 1 : 0; ConquestProfile p = Conquests.EnsureProfile(state.User); if (p != null) { count += p.Count(s => s != state && Include(s)); } return(Math.Max(0, count - state.Progress)); }
protected virtual void OnGivereward(ConquestState s, BaseCreature reward) { if (s == null || s.User == null || reward == null || reward.Deleted) { return; } reward.Control(s.User); AnimalTaming.ScaleSkills(reward, 0.90); if (reward.StatLossAfterTame) { AnimalTaming.ScaleStats(reward, 0.50); } if (reward.Stable()) { return; } if (s.User.IsOnline()) { reward.MoveToWorld(s.User.Location, s.User.Map); } else { reward.Delete(); } }
protected virtual bool Include(ConquestState s) { if (s == null || s.Conquest == this) { return(false); } if (ConquestType.IsNotNull && !s.Conquest.TypeEquals(ConquestType, ConquestChildren)) { return(false); } if (!String.IsNullOrWhiteSpace(NameReq) && !NameSearch.Execute(s.Conquest.Name, NameReq, NameIgnoreCaps)) { return(false); } if (!String.IsNullOrWhiteSpace(CategoryReq) && !CategorySearch.Execute(s.Conquest.Category, CategoryReq, CategoryIgnoreCaps)) { return(false); } return(true); }
public virtual void OnWorldFirst(ConquestState s) { if (!Enabled || Deleted || s == null || s.Conquest != this || s.User == null) { return; } if (SoundOnWorldFirst > 0) { s.User.PlaySound(SoundOnWorldFirst); } var msg = new StringBuilder(); msg.AppendLine("World First Conquest!".WrapUOHtmlTag("big")); msg.AppendLine("\"{0}\"", Name.WrapUOHtmlColor(Color)); msg.AppendLine("Unlocked by {0}", s.User.RawName.WrapUOHtmlColor(s.User.GetNotorietyColor())); string text = msg.ToString().WrapUOHtmlColor(KnownColor.White); if (!Conquests.CMOptions.SupressWorldFirsts) { Notify.Broadcast <ConquestNotifyGump>(text, true, 1.0, 10.0); } if (Conquests.CMOptions.ModuleDebug) { Conquests.CMOptions.ToConsole("{0} world first: {1}", Name, s.User, s.Tier); } }
public override sealed int GetProgress(ConquestState state, object args) { // Handle multi args. if (args is object[]) { var o = (object[])args; try { var item = (Item)o[0]; var quality = (int)o[1]; var slayer = (bool)o[2]; var res = (CraftResource)o[3]; var craft = (CraftSystem)o[4]; return(GetProgress(state, item, quality, slayer, res, craft)); } catch { return(0); } } return(0); }
protected override int GetProgress(ConquestState state, PlayerConquestContainer args) { if (state.User == null) { return(0); } if (args == null || args.Mobile == null || args.Killer is PlayerMobile && args.Killer.Account != state.User.Account || !(args.Mobile is PlayerMobile) || !(args.Killer is PlayerMobile)) { return(0); } var killer = args.Killer as PlayerMobile; var victim = args.Killer as PlayerMobile; Faction killerFaction = Faction.Find(killer, true); Faction victimFaction = Faction.Find(victim, true); if (killerFaction == null || victimFaction == null || killerFaction == victimFaction || AutoPvP.IsParticipant(victim)) { return(0); } Player ethickiller = Player.Find(killer); Player ethicvictim = Player.Find(victim); if (IsEthic && (ethickiller == null || ethicvictim == null || ethickiller.Ethic == ethicvictim.Ethic)) { return(0); } return(base.GetProgress(state, args)); }
protected virtual int GetProgress(ConquestState state, Skill skill) { if (skill == null) { return(0); } if (state.User == null) { return(0); } if ((Skill != (SkillName)skill.SkillID)) { if (ChangeSkillReset) { return(-state.Progress); } return(0); } if (SkillAmount != 0 && SkillAmount > state.User.Skills[Skill].Value) { return(0); } return(1); }
protected virtual int GetProgress(ConquestState state, PlayerMobile victim) { if (victim == null) { return(0); } if (state.User == null) { return(0); } PvPBattle battle = AutoPvP.FindBattle(state.User); if (Battle.IsNotNull && !battle.TypeEquals(Battle, BattleChildren)) { if (ChangeBattleReset) { return(-state.Progress); } return(0); } return(1); }
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 virtual int GetProgress( ConquestState state, Item item, int quality, bool slayer, CraftResource res, CraftSystem craft) { if (state.User == null) { return(0); } if (item == null || craft == null) { return(0); } if (ItemType.IsNotNull && !item.TypeEquals(ItemType, ItemChildren)) { if (ItemChangeReset) { return(-state.Progress); } return(0); } if (IsExceptional && quality == 0) { return(0); } if (IsSlayer && !slayer) { return(0); } if (IsCloth && !(item is BaseClothing)) { return(0); } if (Resource != CraftResource.None && res != Resource) { return(0); } if (CraftSystem.IsNotNull && !craft.TypeEquals(CraftSystem, false)) { return(0); } // This function is only called after a successful completion so amount will // not be zero except for the case of a potion that was created and auto-consolidated // into a keg by the oncraft handler in BasePotion if (item.Amount <= 0) { return(1); } return(item.Amount); }
public static ConquestCompletedGump Acquire(ConquestState state) { var gumps = GetInstances <ConquestCompletedGump>(state.User, true); var type = Conquests.ConquestCompleteGumpTypes.FirstOrDefault(t => gumps.All(g => !g.TypeEquals(t))); var cg = type.CreateInstanceSafe <ConquestCompletedGump>(state.User, state); if (cg != null) { const int xPos = 100; const int yPos = 80; cg.X = xPos; cg.Y = yPos; if (gumps.Length > 0) { const int w = 350; const int h = 150; const int rows = 2; const int cols = 3; bool escape = false; for (int x = 0; x < cols; x++) { int realX = xPos + (x * w); for (int y = 0; y < rows; y++) { int realY = yPos + (y * h); if (gumps.Any(g => g.X == realX && g.Y == realY)) { continue; } cg.X = realX; cg.Y = realY; escape = true; break; } if (escape) { break; } } } } return(cg); }
protected virtual void OnGiveReward(ConquestState s, XmlAttachment reward) { if (s == null || s.User == null || reward == null || reward.Deleted) { return; } if (!XmlAttach.AttachTo(s.User, reward)) { reward.Delete(); } }
public ConquestStateGump(PlayerMobile user, ConquestState state) : base(user, null, null, null) { State = state; Modal = false; CanClose = true; CanDispose = true; CanMove = true; CanResize = true; ForceRecompile = true; }
protected virtual int GetProgress(ConquestState state, Account account) { if (state.User == null) { return(0); } if (account == null || DateTime.UtcNow - account.Created < AccountAge) { return(0); } return(1); }
protected virtual int GetProgress(ConquestState state, CastSpellConquestContainer args) { if (state.User == null) { return(0); } if (args == null || args.SpellID < 0 || args.Mobile is PlayerMobile && args.Mobile.Account != state.User.Account) { return(0); } if (CheckBook) { var book = args.Spellbook as Spellbook; if (book == null || !book.HasSpell(args.SpellID)) { book = Spellbook.Find(args.Mobile, args.SpellID); } if (book == null) { return(0); } } if (CheckRegs) { SpellInfo info = SpellRegistry.GetSpellInfo(args.SpellID); if (info != null && !args.Mobile.HasItems(info.Reagents, info.Amounts)) { return(0); } } if (Spell.IsNotNull && SpellRegistry.GetRegistryNumber(Spell) != args.SpellID) { if (ChangeSpellReset) { return(-state.Progress); } return(0); } return(1); }
protected virtual void OnGiveReward(ConquestState s, Mobile reward) { if (s == null || s.User == null || reward == null || reward.Deleted) { return; } if (s.User.IsOnline()) { reward.MoveToWorld(s.User.Location, s.User.Map); } else { reward.Delete(); } }
public static ConquestState FindWorldFirst(Conquest c) { if (c == null || c.Deleted) { return(null); } ConquestState state = null; if (Profiles.Values.Any(p => p != null && p.Owner != null && p.TryGetState(c, out state) && state.WorldFirst)) { return(state); } return(null); }
public virtual void OnProgress(ConquestState s, int offset) { if (!Enabled || Deleted || s == null || s.Conquest != this || s.User == null || offset <= 0) { return; } if (!Secret && SoundOnProgress > 0) { s.User.PlaySound(SoundOnProgress); } if (Conquests.CMOptions.ModuleDebug) { Conquests.CMOptions.ToConsole("{0} progress: {1} ({2}{3})", Name, s.User, offset >= 0 ? "+" : String.Empty, offset); } }
protected virtual int GetProgress(ConquestState state, Item stolenItem) { if (stolenItem == null) { return(0); } if (state.User == null) { return(0); } var creature = stolenItem.RootParent as BaseCreature; if (IsDungeon && !state.User.InRegion <DungeonRegion>()) { return(0); } if (PlayerTarget && !(stolenItem.RootParent is PlayerMobile)) { return(0); } if (Creature.IsNotNull && creature != null && !creature.TypeEquals(Creature, Children)) { if (ChangeCreatureReset) { return(-state.Progress); } return(0); } if (Item.IsNotNull && !stolenItem.TypeEquals(Item, ItemChildren)) { if (ItemChangeReset) { return(-state.Progress); } return(0); } return(1); }
protected virtual int GetProgress(ConquestState state, TArgs args) { if (args == null || args.State == null || args.State.Conquest == null || args.State.Conquest == this) { return(0); } if (state.User == null) { return(0); } if (ConquestType.IsNotNull && !args.State.Conquest.TypeEquals(ConquestType, ConquestChildren)) { if (ConquestChangeReset) { return(-state.Progress); } return(0); } if (!String.IsNullOrWhiteSpace(NameReq) && !NameSearch.Execute(args.State.Conquest.Name, NameReq, NameIgnoreCaps)) { if (NameChangeReset) { return(-state.Progress); } return(0); } if (!String.IsNullOrWhiteSpace(CategoryReq) && !CategorySearch.Execute(args.State.Conquest.Category, CategoryReq, CategoryIgnoreCaps)) { if (CategoryChangeReset) { return(-state.Progress); } return(0); } return(1); }
protected virtual int GetProgress(ConquestState state, Faction faction) { if (state.User == null) { return(0); } if (faction == null && !IsFactionQuit) { return(0); } if (faction != null && !string.IsNullOrEmpty(Faction) && faction.Definition.FriendlyName != Faction) { return(0); } return(1); }
protected virtual int GetProgress(ConquestState state, ISpell spell) { if (state.User == null) { return(0); } if (Spell.IsNotNull && !spell.TypeEquals(Spell, false)) { if (ChangeSpellReset) { return(-state.Progress); } return(0); } return(1); }
protected virtual int GetProgress(ConquestState state, BaseHouse house) { if (house == null) { return(0); } if (state.User == null) { return(0); } if (House.IsNotNull && !house.TypeEquals(House, false)) { return(0); } return(1); }
protected virtual int GetProgress(ConquestState state, CommandEventArgs args) { if (state.User == null) { return(0); } if (args == null || args.Mobile is PlayerMobile && args.Mobile.Account != state.User.Account) { return(0); } if (!String.IsNullOrWhiteSpace(Command) && !Insensitive.Equals(args.Command, Command)) { return(0); } return(1); }
protected virtual Color GetTierColor(ConquestState entry) { if (entry == null || !entry.ConquestExists) { return(Color.Yellow); } double p = entry.Tier / entry.TierMax; if (p < 0.50) { return(Color.OrangeRed.Interpolate(Color.Yellow, p / 0.50)); } if (p > 0.50) { return(Color.Yellow.Interpolate(Color.LawnGreen, (p - 0.50) / 0.50)); } return(Color.Yellow); }
protected virtual void OnRewarded( ConquestState s, List <IEntity> rewards, List <IXmlAttachment> attachments, bool message) { if (s == null || s.User == null || !message) { return; } int count = rewards.Count + attachments.Count; if (count > 0) { s.User.SendMessage( 85, "You received {0:#,0} reward{1} and {2:#,0} point{3} for your conquest!", rewards.Count, rewards.Count != 1 ? "s" : String.Empty, s.Conquest.Points, s.Conquest.Points != 1 ? "s" : String.Empty); } }