public override void OnDoubleClick(Mobile from) { XMLPlayerLevelAtt xmlplayer = (XMLPlayerLevelAtt)XmlAttach.FindAttachment(from, typeof(XMLPlayerLevelAtt)); ExpPowerHour powerlevel = (ExpPowerHour)XmlAttach.FindAttachment(from, typeof(ExpPowerHour)); PlayerMobile pm = from as PlayerMobile; Configured c = new Configured(); var p = Party.Get(from); int range = c.PartyRange; if (IsChildOf(pm.Backpack)) { if (xmlplayer == null) { pm.SendMessage("This wont work for you!"); return; } else if (powerlevel != null) { pm.SendMessage("You must wait for your current Exp Power Hour to end!"); return; } else { if (p != null) { foreach (PartyMemberInfo mi in p.Members) { pm = mi.Mobile as PlayerMobile; if (pm.Alive && pm.InRange(pm, range)) { XMLPlayerLevelAtt xmlplayer2 = (XMLPlayerLevelAtt)XmlAttach.FindAttachment(pm, typeof(XMLPlayerLevelAtt)); ExpPowerHour powerlevel2 = (ExpPowerHour)XmlAttach.FindAttachment(pm, typeof(ExpPowerHour)); if (powerlevel2 != null) { pm.SendMessage("You already have a power hour, your party gains their bonus!"); return; } if (xmlplayer2 == null) { pm.SendMessage("You lack level attachment, talk to your admin!"); return; } else { XmlAttach.AttachTo(pm, new ExpPowerHour()); this.Delete(); } } } } XmlAttach.AttachTo(from, new ExpPowerHour()); this.Delete(); } } else { pm.SendMessage("This must be in your pack!"); } }
protected override void OnTarget(Mobile from, object target) { XMLPlayerLevelAtt xmlplayer = (XMLPlayerLevelAtt)XmlAttach.FindAttachment(from, typeof(XMLPlayerLevelAtt)); ExpPowerHour powerlevel = (ExpPowerHour)XmlAttach.FindAttachment(from, typeof(ExpPowerHour)); PlayerMobile pm = from as PlayerMobile; if (xmlplayer == null) { pm.SendMessage("You cant give them power hour!"); return; } else if (powerlevel != null) { pm.SendMessage("They already have a power hour!"); return; } else { pm.SendMessage("They have been awarded Power Hour!"); XmlAttach.AttachTo(from, new ExpPowerHour()); } }
public static void AddExp(Mobile m, Mobile k, Party p, Configured c) { XMLPlayerLevelAtt xmlplayer = (XMLPlayerLevelAtt)XmlAttach.FindAttachment(m, typeof(XMLPlayerLevelAtt)); ExpPowerHour exppower = (ExpPowerHour)XmlAttach.FindAttachment(m, typeof(ExpPowerHour)); PlayerMobile pm = null; LevelHandler lh = new LevelHandler(); int range = c.PartyRange; double orig = 0; //Monster Xp double fig = 0; //Party Xp double give = 0; //Xp To Give if (k != null) { orig = LevelCore.Base(k); } if (p != null && c.PartyExpShare) { if (c.PartySplitExp) { foreach (PartyMemberInfo mi in p.Members) { pm = mi.Mobile as PlayerMobile; if (pm.InRange(k, range) && lh.MemberCount.Count < 6) { lh.MemberCount.Add(pm); } } if (lh.MemberCount.Count > 1) { fig = (orig / lh.MemberCount.Count); } } else { pm = m as PlayerMobile; fig = orig; } } else { pm = m as PlayerMobile; fig = orig; } if (fig > 0) { give = LevelHandler.ExpFilter(pm, fig, p, false); } if (give > 0) { #region PartyExpShare if (p != null && c.PartyExpShare) { foreach (PartyMemberInfo mi in p.Members) { pm = mi.Mobile as PlayerMobile; if (pm.Alive && pm.InRange(k, range)) { XMLPlayerLevelAtt xmlplayerparty = (XMLPlayerLevelAtt)XmlAttach.FindAttachment(pm, typeof(XMLPlayerLevelAtt)); ExpPowerHour exppowerparty = (ExpPowerHour)XmlAttach.FindAttachment(pm, typeof(ExpPowerHour)); if (xmlplayerparty == null) { return; } else { if (exppowerparty != null) { pm.SendMessage("You gained " + (give + c.ExpPowerAmount) + " boosted exp for the party kill!"); xmlplayerparty.kxp += (int)give + c.ExpPowerAmount; if (pm.HasGump(typeof(ExpBar))) { pm.CloseGump(typeof(ExpBar)); pm.SendGump(new ExpBar(pm)); } if (xmlplayerparty.Expp >= xmlplayerparty.ToLevell && xmlplayerparty.Levell < xmlplayerparty.MaxLevel) { DoLevel(pm, new Configured()); } } else { pm.SendMessage("You gained " + give + " exp for the party kill!"); xmlplayerparty.kxp += (int)give; if (pm.HasGump(typeof(ExpBar))) { pm.CloseGump(typeof(ExpBar)); pm.SendGump(new ExpBar(pm)); } if (xmlplayerparty.Expp >= xmlplayerparty.ToLevell && xmlplayerparty.Levell < xmlplayerparty.MaxLevel) { DoLevel(pm, new Configured()); } } } } } } #endregion else { if (exppower != null) { pm.SendMessage("You gained " + (give + c.ExpPowerAmount) + " boosted exp for the kill!"); xmlplayer.kxp += (int)give + c.ExpPowerAmount; } else { pm.SendMessage("You gained " + give + " exp for the kill!"); xmlplayer.kxp += (int)give; } if (pm.HasGump(typeof(ExpBar))) { pm.CloseGump(typeof(ExpBar)); pm.SendGump(new ExpBar(pm)); } if (xmlplayer.Expp >= xmlplayer.ToLevell && xmlplayer.Levell < xmlplayer.MaxLevel) { DoLevel(pm, new Configured()); } } } }