Overwrite

Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
This commit is contained in:
Unstable Kitsune
2023-11-28 23:20:26 -05:00
parent 3cd54811de
commit b918192e4e
11608 changed files with 2644205 additions and 47 deletions

View File

@@ -0,0 +1,68 @@
using System;
using Server;
using Server.Items;
using Server.Multis;
using Server.Network;
namespace Server.Gumps
{
public class BaseShipGump : Gump
{
public static readonly int NAHue = 0x5EF7;
public static readonly int PassengerHue = 0x1CFF;
public static readonly int CrewHue = 0x1FE7;
public static readonly int OfficerHue = 0x7FE7;
public static readonly int DenyHue = 0x7CE7;
public static readonly int CaptainHue = 0x7DE7;
public static readonly int LabelColor = 0x7FFF;
public static readonly int NoHue = 0x3DEF;
public BaseShipGump(BaseGalleon galleon)
: base(100, 100)
{
AddPage(0);
AddBackground(0, 0, 320, 385, 0xA3C);
AddHtmlLocalized(10, 10, 300, 18, 1149724, 0x7FEF, false, false); //<CENTER>Passenger and Crew Manifest</CENTER>
string shipName = "unnamed ship";
if (galleon.ShipName != null && galleon.ShipName != string.Empty && galleon.ShipName != "")
shipName = galleon.ShipName;
AddHtmlLocalized(10, 38, 75, 18, 1149761, LabelColor, false, false); //Ship:
AddLabel(80, 38, 0x53, shipName);
AddHtmlLocalized(10, 56, 75, 18, 1149762, LabelColor, false, false); //Owner:
AddLabel(80, 56, 0x53, galleon.Owner != null ? galleon.Owner.Name : "Unknown");
}
public int GetHue(SecurityLevel level)
{
switch (level)
{
case SecurityLevel.Captain: return CaptainHue;
case SecurityLevel.Officer: return OfficerHue;
case SecurityLevel.Crewman: return CrewHue;
case SecurityLevel.Passenger: return PassengerHue;
case SecurityLevel.NA: return NAHue;
case SecurityLevel.Denied: return DenyHue;
default: return LabelColor;
}
}
public static int GetLevel(SecurityLevel level)
{
switch (level)
{
default:
case SecurityLevel.Denied: return 1149726;
case SecurityLevel.Passenger: return 1149727;
case SecurityLevel.Crewman: return 1149728;
case SecurityLevel.Officer: return 1149729;
case SecurityLevel.Captain: return 1149730;
case SecurityLevel.NA: return 1149725;
}
}
}
}

View File

@@ -0,0 +1,140 @@
using Server;
using System;
using Server.Mobiles;
using Server.Gumps;
using System.Collections.Generic;
using Server.Network;
using Server.Engines.Quests;
using Server.Engines.VendorSearching;
namespace Server.Items
{
public class ProfessionalBountyBoard : Item
{
[Constructable]
public ProfessionalBountyBoard() : base(7774)
{
Movable = false;
}
public override void OnDoubleClick(Mobile from)
{
if (!from.HasGump(typeof(BountyBoardGump)))
BaseGump.SendGump(new BountyBoardGump(from));
}
public ProfessionalBountyBoard(Serial serial) : base(serial) { }
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)0);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
public class BountyBoardGump : BaseGump
{
public int Index { get; set; }
private int darkHue = 19686;
private int lightHue = 19884;
public BountyBoardGump(Mobile from, int index = 0)
: base(from as PlayerMobile, 20, 20)
{
Index = index;
}
public override void AddGumpLayout()
{
AddAlphaRegion(50, 50, 50, 50);
AddImage(0, 0, 5400);
AddHtmlLocalized(150, 37, 190, 16, CenterLoc, "#1116689", darkHue, false, false); // WANTED FOR PIRACY
AddHtmlLocalized(150, 320, 190, 16, CenterLoc, "#1116703", darkHue, false, false); // WANTED DEAD OR ALIVE
AddHtmlLocalized(180, 135, 200, 16, 1116704, lightHue, false, false); //Notice to all sailors
AddHtmlLocalized(130, 150, 300, 16, 1116705, lightHue, false, false); //There be a bounty on these lowlifes!
AddHtmlLocalized(150, 170, 300, 16, 1116706, lightHue, false, false); //See officers fer information.
AddHtmlLocalized(195, 190, 300, 16, 1116707, lightHue, false, false); //********
if (Index < 0)
Index = 0;
if (Index >= BountyQuestSpawner.Bounties.Count)
Index = BountyQuestSpawner.Bounties.Count - 1;
List<Mobile> mobs = new List<Mobile>(BountyQuestSpawner.Bounties.Keys);
if (mobs.Count == 0)
return;
int y = 210;
int idx = 0;
for (int i = Index; i < mobs.Count; i++)
{
if (idx++ > 4)
break;
Mobile mob = mobs[i];
int toReward = 1000;
BountyQuestSpawner.Bounties.TryGetValue(mob, out toReward);
PirateCaptain capt = mob as PirateCaptain;
if (capt == null)
continue;
string args;
if (User.NetState != null && User.NetState.IsEnhancedClient && VendorSearch.StringList != null)
{
var strList = VendorSearch.StringList;
args = String.Format("{0} {1} {2}", strList.GetString(capt.Adjective), strList.GetString(capt.Noun), capt.PirateName > 0 ? strList.GetString(capt.PirateName) : capt.Name);
AddHtml(110, y, 400, 16, Color(C16232(lightHue), args), false, false);
}
else
{
if (capt.PirateName > 0)
args = String.Format("#{0}\t#{1}\t#{2}", capt.Adjective, capt.Noun, capt.PirateName);
else
args = String.Format("#{0}\t#{1}\t{2}", capt.Adjective, capt.Noun, capt.Name);
AddHtmlLocalized(110, y, 400, 16, 1116690 + (idx - 1), args, lightHue, false, false); // ~1_val~ ~2_val~ ~3_val~
}
AddHtmlLocalized(280, y, 125, 16, 1116696 + (idx - 1), toReward.ToString(), lightHue, false, false); // Reward: ~1_val~
y += 16;
}
AddButton(362, 115, 2084, 2084, 1 + Index, GumpButtonType.Reply, 0);
AddButton(362, 342, 2085, 2085, 500 + Index, GumpButtonType.Reply, 0);
}
public override void OnResponse(RelayInfo info)
{
if (info.ButtonID == 0)
return;
if (info.ButtonID < 500)
{
Index--;
Refresh();
}
else
{
Index++;
Refresh();
}
}
}
}

View File

@@ -0,0 +1,142 @@
using System;
using Server;
using Server.Items;
using Server.Targeting;
using Server.Network;
namespace Server.Gumps
{
public class CannonGump : Gump
{
public static readonly int LabelColor = 0xFFFFFF;
public static readonly int GreenHue = 5057;
public static readonly int RedHue = 28776;
private BaseCannon m_Cannon;
private Mobile m_From;
public BaseCannon Cannon { get { return m_Cannon; } }
public CannonGump(BaseCannon cannon, Mobile from)
: base(50, 50)
{
m_Cannon = cannon;
m_From = from;
AddBackground(0, 0, 300, 200, 2620);
Type charge = cannon is LightShipCannon ? typeof(LightPowderCharge) : typeof(HeavyPowderCharge);
bool cleaned = cannon.Cleaned;
bool charged = cannon.Charged;
bool primed = cannon.Primed;
bool loaded = cannon.AmmoType != AmmunitionType.Empty;
AddHtmlLocalized(0, 10, 300, 16, 1149614 + (int)m_Cannon.Position, 21758, false, false);
AddHtmlLocalized(45, 40, 100, 16, 1149626, LabelColor, false, false); //CLEAN
if(!charged)
AddHtmlLocalized(45, 60, 100, 16, 1149630, LabelColor, false, false); //CHARGE
else
AddHtmlLocalized(45, 60, 100, 16, 1149629, LabelColor, false, false); //REMOVE
if(!loaded)
AddHtmlLocalized(45, 80, 100, 16, 1149635, LabelColor, false, false); //LOAD
else
AddHtmlLocalized(45, 80, 100, 16, 1149629, LabelColor, false, false); //REMOVE
if(!primed)
AddHtmlLocalized(45, 100, 100, 16, 1149637, LabelColor, false, false); //PRIME
else if (cannon.CanLight)
AddHtmlLocalized(45, 100, 100, 16, 1149638, LabelColor, false, false); //FIRE
else
AddHtmlLocalized(45, 100, 100, 16, 1149629, LabelColor, false, false); //REMOVE
if (!cleaned)
AddHtmlLocalized(150, 40, 100, 16, 1149628, RedHue, false, false); //Dirty
else
AddHtmlLocalized(150, 40, 100, 16, 1149627, GreenHue, false, false); //Clean
if (!charged)
AddHtmlLocalized(150, 60, 100, 16, 1149632, RedHue, false, false); //Not Charged
else
AddHtmlLocalized(150, 60, 100, 16, 1149631, GreenHue, false, false); //Charged
if (!loaded)
AddHtmlLocalized(150, 80, 100, 16, 1149636, RedHue, false, false); //Not Loaded
else
AddHtmlLocalized(150, 80, 100, 16, 1114057, AmmoInfo.GetAmmoName(cannon).ToString(), GreenHue, false, false);
//AddHtmlLocalized(150, 80, 100, 16, cannon.AmmoType == AmmoType.Grapeshot ? 1095741 : 1116029, GreenHue, false, false);
if (!primed)
AddHtmlLocalized(150, 100, 100, 16, 1149639, RedHue, false, false); //No Fuse
else
AddHtmlLocalized(150, 100, 100, 16, 1149640, GreenHue, false, false); //Primed
AddButton(10, 40, 0xFA5, 0xFA7, 1, GumpButtonType.Reply, 0);
AddButton(10, 60, 0xFA5, 0xFA7, 2, GumpButtonType.Reply, 0);
AddButton(10, 80, 0xFA5, 0xFA7, 3, GumpButtonType.Reply, 0);
AddButton(10, 100, 0xFA5, 0xFA7, 4, GumpButtonType.Reply, 0);
if (!cannon.Actions.ContainsKey(from) || cannon.Actions[from].Count == 0)
cannon.AddAction(from, 1149653); //You are now operating the cannon.
int y = 170;
int count = cannon.Actions[from].Count - 1;
int hue = 0;
for (int i = count; i >= 0; i--)
{
if (i < count - 3)
break;
if (i == count)
hue = 29315; //0xFFFF00;
else hue = 12684;
AddHtmlLocalized(10, y, 385, 20, cannon.Actions[from][i], hue, false, false);
y -= 16;
}
}
public override void OnResponse(NetState sender, RelayInfo info)
{
Mobile from = sender.Mobile;
if (m_Cannon == null || m_Cannon.Deleted || !from.InRange(m_Cannon.Location, 3))
return;
switch (info.ButtonID)
{
default:
case 0: return;
case 1: //clean
m_Cannon.TryClean(from);
break;
case 2: //Charge
if (!m_Cannon.Charged)
m_Cannon.TryCharge(from);
else
m_Cannon.RemoveCharge(from);
break;
case 3: //load
if (m_Cannon.AmmoType == AmmunitionType.Empty)
m_Cannon.TryLoad(from);
else
m_Cannon.RemoveLoad(from);
break;
case 4: //prime
if (!m_Cannon.Primed)
m_Cannon.TryPrime(from);
else if (m_Cannon.CanLight)
m_Cannon.TryLightFuse(from);
else
m_Cannon.RemovePrime(from);
break;
}
from.SendGump(new CannonGump(m_Cannon, m_From));
}
}
}

View File

@@ -0,0 +1,185 @@
using System;
using Server;
using Server.Multis;
using Server.Network;
namespace Server.Gumps
{
public class GrantAccessGump : BaseShipGump
{
private Mobile m_Player;
private BaseGalleon m_Galleon;
private SecurityEntry m_Entry;
public GrantAccessGump(Mobile player, BaseGalleon galleon)
: base(galleon)
{
player.CloseGump(typeof(GrantAccessGump));
m_Player = player;
m_Galleon = galleon;
m_Entry = galleon.SecurityEntry;
if (m_Entry == null)
{
m_Entry = new SecurityEntry(m_Galleon);
m_Galleon.SecurityEntry = m_Entry;
}
bool isAccessed = m_Entry.Manifest.ContainsKey(player);
bool inGuild = m_Entry.IsInGuild(player);
bool inParty = m_Entry.IsInParty(player);
bool isPublic = m_Entry.IsPublic;
SecurityLevel level = m_Entry.GetEffectiveLevel(player);
//Player Info
AddHtmlLocalized(10, 79, 125, 18, 1149763, LabelColor, false, false); // Player:
AddLabel(140, 79, 0x30, player.Name);
AddHtmlLocalized(10, 97, 125, 18, 1149768, LabelColor, false, false); // Effective Level:
AddHtmlLocalized(140, 97, 160, 18, GetLevel(level), GetHue(level), false, false);
//Default Info
int cliloc = isPublic ? 1149756 : 1149757;
int hue = isPublic ? CrewHue : NoHue;
AddHtmlLocalized(10, 120, 125, 18, 1149731, LabelColor, false, false); // Public Access:
AddHtmlLocalized(140, 120, 50, 18, cliloc, hue, false, false); // Yes/No
if (isPublic)
AddHtmlLocalized(200, 120, 100, 18, GetLevel(m_Entry.DefaultPublicAccess), GetHue(m_Entry.DefaultPublicAccess), false, false);
cliloc = inParty ? 1149756 : 1149757;
hue = inParty ? CrewHue : NoHue;
AddHtmlLocalized(10, 138, 125, 18, 1149769, LabelColor, false, false); // Is Party Member:
AddHtmlLocalized(140, 138, 50, 18, cliloc, hue, false, false);
if (inParty)
AddHtmlLocalized(200, 138, 50, 18, GetLevel(m_Entry.DefaultPartyAccess), GetHue(m_Entry.DefaultPartyAccess), false, false);
cliloc = inGuild ? 1149756 : 1149757;
hue = inGuild ? CrewHue : NoHue;
AddHtmlLocalized(10, 156, 125, 18, 1149770, LabelColor, false, false); // Is Guild Member
AddHtmlLocalized(140, 156, 50, 18, cliloc, hue, false, false);
if (inGuild)
AddHtmlLocalized(200, 156, 50, 18, GetLevel(m_Entry.DefaultGuildAccess), GetHue(m_Entry.DefaultGuildAccess), false, false);
AddHtmlLocalized(10, 179, 300, 18, 1149747, LabelColor, false, false); // Access List Status:
if (level == SecurityLevel.NA)
{
AddImage(65, 197, 0xFA6);
AddHtmlLocalized(100, 199, 200, 18, 1149775, NoHue, false, false); // NOT IN ACCESS LIST
}
else
{
AddButton(65, 197, 0xFA5, 0xFA7, 1, GumpButtonType.Reply, 0);
AddHtmlLocalized(100, 199, 200, 18, 1149776, NoHue, false, false); // REMOVE FROM LIST
}
if (level == SecurityLevel.Denied)
{
AddImage(65, 215, 0xFA6);
}
else
{
AddButton(65, 215, 0xFA5, 0xFA7, 2, GumpButtonType.Reply, 0);
}
AddHtmlLocalized(100, 217, 100, 18, 1149726, level == SecurityLevel.Denied ? GetHue(level) : LabelColor, false, false); // DENY ACCESS
if (level == SecurityLevel.Passenger)
{
AddImage(65, 233, 0xFA6);
}
else
{
AddButton(65, 233, 0xFA5, 0xFA7, 3, GumpButtonType.Reply, 0);
}
AddHtmlLocalized(100, 235, 100, 18, 1149727, level == SecurityLevel.Passenger ? GetHue(level) : LabelColor, false, false); // PASSENGER
if (level == SecurityLevel.Crewman)
{
AddImage(65, 251, 0xFA6);
}
else
{
AddButton(65, 251, 0xFA5, 0xFA7, 4, GumpButtonType.Reply, 0);
}
AddHtmlLocalized(100, 253, 100, 18, 1149728, level == SecurityLevel.Crewman ? GetHue(level) : LabelColor, false, false); // CREW
if (level == SecurityLevel.Officer)
{
AddImage(65, 269, 0xFA6);
}
else
{
AddButton(65, 269, 0xFA5, 0xFA7, 5, GumpButtonType.Reply, 0);
}
AddHtmlLocalized(100, 271, 100, 18, 1149729, level == SecurityLevel.Officer ? GetHue(level) : LabelColor, false, false); // OFFICER
if (level == SecurityLevel.Captain)
{
AddImage(65, 287, 0xFA6);
}
else
{
AddButton(65, 287, 0xFA5, 0xFA7, 6, GumpButtonType.Reply, 0);
}
AddHtmlLocalized(100, 289, 100, 18, 1149730, level == SecurityLevel.Captain ? GetHue(level) : LabelColor, false, false); // CAPTAIN
AddButton(10, 355, 0xFA5, 0xFA7, 7, GumpButtonType.Reply, 0);
AddHtmlLocalized(45, 357, 100, 18, 1149777, LabelColor, false, false); // MAIN MENU
AddButton(160, 355, 0xFA5, 0xFA, 8, GumpButtonType.Reply, 0);
AddHtmlLocalized(195, 357, 100, 18, 1149734, LabelColor, false, false); // ACCESS LIST
}
public override void OnResponse(NetState sender, RelayInfo info)
{
Mobile from = sender.Mobile;
if (from == null)
return;
switch (info.ButtonID)
{
case 0: return;
case 1: // REMOVE FROM LIST
m_Entry.RemoveFromAccessList(m_Player);
from.SendGump(new AccessListGump(m_Player, m_Galleon));
return;
case 2: // DENY ACCESS
m_Entry.AddToManifest(m_Player, SecurityLevel.Denied);
break;
case 3: // PASSENGER
m_Entry.AddToManifest(m_Player, SecurityLevel.Passenger);
break;
case 4: // CREW
m_Entry.AddToManifest(m_Player, SecurityLevel.Crewman);
break;
case 5: // OFFICER
m_Entry.AddToManifest(m_Player, SecurityLevel.Officer);
break;
case 6: // CAPTAIN
m_Entry.AddToManifest(m_Player, SecurityLevel.Captain);
break;
case 7: // MAIN MENU
from.SendGump(new ShipSecurityGump(from, m_Galleon));
return;
case 8: // ACCESS LIST
from.SendGump(new AccessListGump(m_Player, m_Galleon));
return;
}
from.SendGump(new GrantAccessGump(m_Player, m_Galleon));
}
}
}

View File

@@ -0,0 +1,90 @@
using System;
using Server;
using Server.Multis;
using System.Collections.Generic;
using Server.Network;
namespace Server.Gumps
{
public class AccessListGump : BaseShipGump
{
private BaseGalleon m_Galleon;
private SecurityEntry m_Entry;
private List<Mobile> m_UseList;
public AccessListGump(Mobile from, BaseGalleon galleon)
: base(galleon)
{
from.CloseGump(typeof(AccessListGump));
m_Galleon = galleon;
m_Entry = galleon.SecurityEntry;
if (m_Entry == null)
{
m_Entry = new SecurityEntry(m_Galleon);
m_Galleon.SecurityEntry = m_Entry;
}
AddButton(10, 355, 0xFA5, 0xFA7, 1, GumpButtonType.Reply, 0);
AddHtmlLocalized(45, 357, 100, 18, 1149777, LabelColor, false, false); // MAIN MENU
m_UseList = new List<Mobile>(m_Entry.Manifest.Keys);
int page = 1;
int y = 79;
AddPage(page);
for (int i = 0; i < m_UseList.Count; i++)
{
if (page > 1)
AddButton(270, 390, 4014, 4016, 0, GumpButtonType.Page, page - 1);
Mobile mob = m_UseList[i];
if (mob == null || m_Galleon.IsOwner(mob))
continue;
string name = mob.Name;
SecurityLevel level = m_Entry.GetEffectiveLevel(mob);
AddButton(10, y, 0xFA5, 0xFA7, i + 2, GumpButtonType.Reply, 0);
AddLabel(45, y + 2, 0x3E7, name);
AddHtmlLocalized(160, y + 2, 150, 18, GetLevel(level), GetHue(level), false, false);
y += 25;
bool pages = (i + 1) % 10 == 0;
if (pages && m_UseList.Count - 1 != i)
{
AddButton(310, 390, 4005, 4007, 0, GumpButtonType.Page, page + 1);
page++;
y = 0;
AddPage(page);
}
}
}
public override void OnResponse(NetState sender, RelayInfo info)
{
Mobile from = sender.Mobile;
if (info.ButtonID == 1)
from.SendGump(new ShipSecurityGump(from, m_Galleon));
else if (info.ButtonID > 1)
{
int index = info.ButtonID - 2;
if (index < 0 || index >= m_UseList.Count)
return;
Mobile mob = m_UseList[index];
from.SendGump(new GrantAccessGump(mob, m_Galleon));
}
}
}
}

View File

@@ -0,0 +1,120 @@
using System;
using Server;
using Server.Targeting;
using Server.Network;
using Server.Multis;
using Server.Regions;
namespace Server.Gumps
{
public class BoatPlacementGump : Gump
{
private Item m_Item;
private Mobile m_From;
public BoatPlacementGump(Item item, Mobile from)
: base(0, 0)
{
m_From = from;
m_Item = item;
AddPage(0);
AddBackground(0, 0, 220, 170, 0x13BE);
AddBackground(10, 10, 200, 150, 0xBB8);
AddHtmlLocalized(20, 20, 180, 70, 1116329, true, false); // Select the ship direction for placement.
AddHtmlLocalized(55, 100, 50, 25, 1116330, false, false); // WEST
AddButton(20, 100, 0xFA5, 0xFA7, 1, GumpButtonType.Reply, 0);
AddHtmlLocalized(150, 100, 50, 25, 1116331, false, false); // NORTH
AddButton(115, 100, 0xFA5, 0xFA7, 2, GumpButtonType.Reply, 0);
AddHtmlLocalized(55, 125, 50, 25, 1116332, false, false); // SOUTH
AddButton(20, 125, 0xFA5, 0xFA7, 3, GumpButtonType.Reply, 0);
AddHtmlLocalized(150, 125, 50, 25, 1116333, false, false); // EAST
AddButton(115, 125, 0xFA5, 0xFA7, 4, GumpButtonType.Reply, 0);
}
public override void OnResponse(NetState sender, RelayInfo info)
{
int id = 0;
Point3D offset = Point3D.Zero;
Direction direction;
if(info.ButtonID == 0)
return;
switch (info.ButtonID)
{
default:
case 1: //North
direction = Direction.West; break;
case 2: //East
direction = Direction.North; break;
case 3: //South
direction = Direction.South; break;
case 4: //West
direction = Direction.East; break;
}
if (m_Item is BaseBoatDeed)
{
id = BaseBoat.GetID(((BaseBoatDeed)m_Item).MultiID, direction);
offset = ((BaseBoatDeed)m_Item).Offset;
}
else if (m_Item is BaseDockedBoat)
{
id = BaseBoat.GetID(((BaseDockedBoat)m_Item).MultiID, direction);
offset = ((BaseDockedBoat)m_Item).Offset;
}
m_From.Target = new InternalTarget(id, offset, m_Item, direction);
}
private class InternalTarget : MultiTarget
{
private Item m_Item;
private Direction m_Facing;
private int m_ItemID;
public InternalTarget(int itemID, Point3D offset, Item item, Direction facing)
: base(itemID, offset)
{
m_Item = item;
m_Facing = facing;
m_ItemID = itemID;
}
protected override void OnTarget(Mobile from, object o)
{
IPoint3D ip = o as IPoint3D;
if (ip != null)
{
if (ip is Item)
ip = ((Item)ip).GetWorldTop();
Point3D p = new Point3D(ip);
Region region = Region.Find(p, from.Map);
if (region.IsPartOf<DungeonRegion>())
from.SendLocalizedMessage(502488); // You can not place a ship inside a dungeon.
else if (region.IsPartOf<HouseRegion>() || region.IsPartOf<Engines.CannedEvil.ChampionSpawnRegion>())
from.SendLocalizedMessage(1042549); // A boat may not be placed in this area.
else
{
if (m_Item is BaseBoatDeed)
((BaseBoatDeed)m_Item).OnPlacement(from, p, m_ItemID, m_Facing);
else if (m_Item is BaseDockedBoat)
((BaseDockedBoat)m_Item).OnPlacement(from, p, m_ItemID, m_Facing);
}
}
}
}
}
}

View File

@@ -0,0 +1,304 @@
using System;
using Server;
using Server.Multis;
using Server.Network;
namespace Server.Gumps
{
public class ShipSecurityGump : BaseShipGump
{
private Mobile m_From;
private BaseGalleon m_Galleon;
private SecurityEntry m_Entry;
public ShipSecurityGump(Mobile from, BaseGalleon galleon)
: base(galleon)
{
from.CloseGump(typeof(ShipSecurityGump));
m_From = from;
m_Galleon = galleon;
m_Entry = galleon.SecurityEntry;
if (m_Entry == null)
{
m_Entry = new SecurityEntry(m_Galleon);
m_Galleon.SecurityEntry = m_Entry;
}
PartyAccess pa = m_Entry.PartyAccess;
AddHtmlLocalized(10, 79, 300, 18, 1149743, LabelColor, false, false); // Party membership modifies access to this ship:
if (pa == PartyAccess.Never)
{
AddImage(55, 97, 0xFA6);
}
else
{
AddButton(55, 97, 0xFA5, 0xFA7, 1001, GumpButtonType.Reply, 0);
}
AddHtmlLocalized(90, 99, 210, 18, 1149778, LabelColor, false, false); // Never
if (pa == PartyAccess.LeaderOnly)
{
AddImage(55, 115, 0xFA6);
}
else
{
AddButton(55, 115, 0xFA5, 0xFA7, 1002, GumpButtonType.Reply, 0);
}
AddHtmlLocalized(90, 117, 210, 18, 1149744, LabelColor, false, false); // When I am Party Leader
if (pa == PartyAccess.MemberOnly)
{
AddImage(55, 133, 0xFA6);
}
else
{
AddButton(55, 133, 0xFA5, 0xFA7, 1003, GumpButtonType.Reply, 0);
}
AddHtmlLocalized(90, 135, 210, 18, 1149745, LabelColor, false, false); // When I am a Party Member
AddHtmlLocalized(10, 158, 125, 18, 1149731, LabelColor, false, false); // Public Access:
AddButton(140, 156, 0xFA5, 0xFA7, 0, GumpButtonType.Page, 2);
AddHtmlLocalized(175, 158, 125, 18, GetLevel(m_Entry.DefaultPublicAccess), GetHue(m_Entry.DefaultPublicAccess), false, false);
AddHtmlLocalized(10, 175, 150, 18, 1149732, LabelColor, false, false); // Party Access:
AddButton(140, 173, 0xFA5, 0xFA7, 0, GumpButtonType.Page, 3);
AddHtmlLocalized(175, 175, 125, 18, GetLevel(m_Entry.DefaultPartyAccess), GetHue(m_Entry.DefaultPartyAccess), false, false);
AddHtmlLocalized(10, 193, 150, 18, 1149733, LabelColor, false, false); // Guild Access:
AddButton(140, 191, 0xFA5, 0xFA7, 0, GumpButtonType.Page, 4);
AddHtmlLocalized(175, 193, 125, 18, GetLevel(m_Entry.DefaultGuildAccess), GetHue(m_Entry.DefaultGuildAccess), false, false);
AddHtmlLocalized(195, 357, 100, 18, 1149734, LabelColor, false, false); // ACCESS LIST
AddButton(160, 355, 0xFA5, 0xFA7, 2000, GumpButtonType.Reply, 0);
AddPage(2);
AddBackground(30, 215, 190, 130, 0xA3C);
AddHtmlLocalized(80, 220, 100, 18, 1149731, LabelColor, false, false); // Public Access:
if (m_Entry.DefaultPublicAccess == SecurityLevel.NA)
{
AddImage(40, 243, 0xFA6);
}
else
{
AddButton(40, 243, 0xFA5, 0xFA7, 1100, GumpButtonType.Reply, 0);
}
AddHtmlLocalized(75, 245, 140, 18, 1149725, m_Entry.DefaultPublicAccess == SecurityLevel.NA ? NAHue : LabelColor, false, false); // N/A
if (m_Entry.DefaultPublicAccess == SecurityLevel.Passenger)
{
AddImage(40, 261, 0xFA6);
}
else
{
AddButton(40, 261, 0xFA5, 0xFA7, 1102, GumpButtonType.Reply, 0);
}
AddHtmlLocalized(75, 263, 140, 18, 1149727, m_Entry.DefaultPublicAccess == SecurityLevel.Passenger ? PassengerHue : LabelColor, false, false); // PASSENGER
if (m_Entry.DefaultPublicAccess == SecurityLevel.Crewman)
{
AddImage(40, 279, 0xFA6);
}
else
{
AddButton(40, 279, 0xFA5, 0xFA7, 1103, GumpButtonType.Reply, 0);
}
AddHtmlLocalized(75, 281, 140, 18, 1149728, m_Entry.DefaultPublicAccess == SecurityLevel.Crewman ? CrewHue : LabelColor, false, false); // CREW
if (m_Entry.DefaultPublicAccess == SecurityLevel.Officer)
{
AddImage(40, 297, 0xFA6);
}
else
{
AddButton(40, 297, 0xFA5, 0xFA7, 1104, GumpButtonType.Reply, 0);
}
AddHtmlLocalized(75, 299, 140, 18, 1149729, m_Entry.DefaultPublicAccess == SecurityLevel.Officer ? OfficerHue : LabelColor, false, false); // OFFICER
if (m_Entry.DefaultPublicAccess == SecurityLevel.Denied)
{
AddImage(40, 315, 0xFA6);
}
else
{
AddButton(40, 315, 0xFA5, 0xFA7, 1101, GumpButtonType.Reply, 0);
}
AddHtmlLocalized(75, 317, 140, 18, 1149726, m_Entry.DefaultPublicAccess == SecurityLevel.Denied ? DenyHue : LabelColor, false, false); // DENY ACCESS
AddPage(3);
AddBackground(70, 215, 190, 130, 0xA3C);
AddHtmlLocalized(120, 220, 100, 18, 1149732, LabelColor, false, false); // Party Access:
if (m_Entry.DefaultPartyAccess == SecurityLevel.NA)
{
AddImage(80, 243, 0xFA6);
}
else
{
AddButton(80, 243, 0xFA5, 0xFA7, 1200, GumpButtonType.Reply, 0);
}
AddHtmlLocalized(115, 245, 140, 18, 1149725, m_Entry.DefaultPartyAccess == SecurityLevel.NA ? NAHue : LabelColor, false, false); // N/A
if (m_Entry.DefaultPartyAccess == SecurityLevel.Passenger)
{
AddImage(80, 261, 0xFA6);
}
else
{
AddButton(80, 261, 0xFA5, 0xFA7, 1202, GumpButtonType.Reply, 0);
}
AddHtmlLocalized(115, 263, 140, 18, 1149727, m_Entry.DefaultPartyAccess == SecurityLevel.Passenger ? PassengerHue : LabelColor, false, false); // PASSENGER
if (m_Entry.DefaultPartyAccess == SecurityLevel.Crewman)
{
AddImage(80, 279, 0xFA6);
}
else
{
AddButton(80, 279, 0xFA5, 0xFA7, 1203, GumpButtonType.Reply, 0);
}
AddHtmlLocalized(115, 281, 140, 18, 1149728, m_Entry.DefaultPartyAccess == SecurityLevel.Crewman ? CrewHue : LabelColor, false, false); // CREW
if (m_Entry.DefaultPartyAccess == SecurityLevel.Officer)
{
AddImage(80, 297, 0xFA6);
}
else
{
AddButton(80, 297, 0xFA5, 0xFA7, 1204, GumpButtonType.Reply, 0);
}
AddHtmlLocalized(115, 299, 140, 18, 1149729, m_Entry.DefaultPartyAccess == SecurityLevel.Officer ? OfficerHue : LabelColor, false, false); // OFFICER
if (m_Entry.DefaultPartyAccess == SecurityLevel.Denied)
{
AddImage(80, 315, 0xFA6);
}
else
{
AddButton(80, 315, 0xFA5, 0xFA7, 1201, GumpButtonType.Reply, 0);
}
AddHtmlLocalized(115, 317, 140, 18, 1149726, m_Entry.DefaultPartyAccess == SecurityLevel.Denied ? DenyHue : LabelColor, false, false); // DENY ACCESS
AddPage(4);
AddBackground(110, 215, 190, 130, 0xA3C);
AddHtmlLocalized(160, 220, 100, 18, 1149733, LabelColor, false, false); // Guild Access:
if (m_Entry.DefaultGuildAccess == SecurityLevel.NA)
{
AddImage(120, 243, 0xFA6);
}
else
{
AddButton(120, 243, 0xFA5, 0xFA7, 1300, GumpButtonType.Reply, 0);
}
AddHtmlLocalized(155, 245, 140, 18, 1149725, m_Entry.DefaultGuildAccess == SecurityLevel.NA ? NAHue : LabelColor, false, false); // N/A
if (m_Entry.DefaultGuildAccess == SecurityLevel.Passenger)
{
AddImage(120, 261, 0xFA6);
}
else
{
AddButton(120, 261, 0xFA5, 0xFA7, 1302, GumpButtonType.Reply, 0);
}
AddHtmlLocalized(155, 263, 140, 18, 1149727, m_Entry.DefaultGuildAccess == SecurityLevel.Passenger ? PassengerHue : LabelColor, false, false); // PASSENGER
if (m_Entry.DefaultGuildAccess == SecurityLevel.Crewman)
{
AddImage(120, 279, 0xFA6);
}
else
{
AddButton(120, 279, 0xFA5, 0xFA7, 1303, GumpButtonType.Reply, 0);
}
AddHtmlLocalized(155, 281, 140, 18, 1149728, m_Entry.DefaultGuildAccess == SecurityLevel.Crewman ? CrewHue : LabelColor, false, false); // CREW
if (m_Entry.DefaultGuildAccess == SecurityLevel.Officer)
{
AddImage(120, 297, 0xFA6);
}
else
{
AddButton(120, 297, 0xFA5, 0xFA7, 1304, GumpButtonType.Reply, 0);
}
AddHtmlLocalized(155, 299, 140, 18, 1149729, m_Entry.DefaultGuildAccess == SecurityLevel.Officer ? OfficerHue : LabelColor, false, false); // OFFICER
if (m_Entry.DefaultGuildAccess == SecurityLevel.Denied)
{
AddImage(120, 315, 0xFA6);
}
else
{
AddButton(120, 315, 0xFA5, 0xFA7, 1301, GumpButtonType.Reply, 0);
}
AddHtmlLocalized(155, 317, 140, 18, 1149726, m_Entry.DefaultGuildAccess == SecurityLevel.Denied ? DenyHue : LabelColor, false, false); // DENY ACCESS
}
public override void OnResponse(NetState sender, RelayInfo info)
{
switch (info.ButtonID)
{
case 0: return;
case 1001: //party access...Never
m_Entry.PartyAccess = PartyAccess.Never;
m_From.SendGump(new ShipSecurityGump(m_From, m_Galleon));
break;
case 1002: //party access...leaderonly
m_Entry.PartyAccess = PartyAccess.LeaderOnly;
m_From.SendGump(new ShipSecurityGump(m_From, m_Galleon));
break;
case 1003: //party access...member only
m_Entry.PartyAccess = PartyAccess.MemberOnly;
m_From.SendGump(new ShipSecurityGump(m_From, m_Galleon));
break;
case 2000: //Access List
m_From.SendGump(new AccessListGump(m_From, m_Galleon));
return;
default:
{
if (info.ButtonID >= 1100 && info.ButtonID <= 1104)
{
m_Entry.DefaultPublicAccess = (SecurityLevel)(info.ButtonID - 1100);
}
else if (info.ButtonID >= 1200 && info.ButtonID <= 1204)
{
m_Entry.DefaultPartyAccess = (SecurityLevel)(info.ButtonID - 1200);
}
else if (info.ButtonID >= 1300 && info.ButtonID <= 1304)
{
m_Entry.DefaultGuildAccess = (SecurityLevel)(info.ButtonID - 1300);
}
m_From.SendGump(new ShipSecurityGump(m_From, m_Galleon));
return;
}
}
}
}
}