public override void OnResponse(Server.Network.NetState sender, RelayInfo info) { int val, type, index; DecodeButtonId(info.ButtonID, out val, out type, out index); if (val < 0) { return; } Player target = State as Player; switch (type) { case 0: //change main page Page page; switch (index) { case 1: page = Page.Information; break; case 2: page = Page.Manage; break; default: return; } From.SendGump(new PerkAdminGump(From, page, null, null)); break; case 1: //select player switch (index) { case 0: From.SendMessage("Select a player to view perks."); From.BeginTarget(18, false, TargetFlags.None, (from, targ) => From.SendGump(new PerkAdminGump(From, Page.Manage_Targeted, null, targ))); break; } break; case 2: //remove perk if (target == null) { From.SendGump(new PerkAdminGump(From, Page.Manage_Targeted, "The targeted player was lost! Please try again.", State)); } else { Perk.Remove(target, (PerkPosition)index); From.SendGump(new PerkAdminGump(From, Page.Manage_Targeted, null, State)); } break; case 3: //increase level case 4: //decrease level if (target == null) { From.SendGump(new PerkAdminGump(From, Page.Manage_Targeted, "The targeted player was lost! Please try again.", State)); } else { Tuple <Perk, Perk> targetPerks = Perk.GetPerks(target); Perk targetPerk; switch ((PerkPosition)index) { default: case PerkPosition.Primary: targetPerk = targetPerks.Item1; break; case PerkPosition.Secondary: targetPerk = targetPerks.Item2; break; } if (!(targetPerk is Empty)) { if (type == 3 && targetPerk.Level < PerkLevel.Fifth) { targetPerk.Level++; } else if (targetPerk.Level > PerkLevel.First) { targetPerk.Level--; } } From.SendGump(new PerkAdminGump(From, Page.Manage_Targeted, null, State)); } break; } }