Files
abysmal-isle/Scripts/SubSystem/Cyrddin's_HouseGates/HouseGateConfirm.cs
Unstable Kitsune b918192e4e Overwrite
Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
2023-11-28 23:20:26 -05:00

108 lines
2.5 KiB
C#

#region References
using System;
using Server.Gumps;
using Server.Mobiles;
using Server.Regions;
using VitaNex.SuperGumps.UI;
#endregion
namespace Server.Items
{
public class HouseGateConfirm : ConfirmDialogGump
{
private const string _Info =
"Your house gate has now been placed. " +
"You can edit its settings by single-clicking the gate at your house and selecting an option from the menu. " +
"To dye the gate, Have a Hue Room Tickets in your backpack, then select *set hue* in the settings.\n\n" +
"IMPORTANT: You must make sure that the gate can be used from both sides by any player. " +
"Placing obstacles that would trap players on any side of the gate is not allowed. " +
"Any such gate will be removed without warning or refund.";
private readonly HouseGateTile _Tile;
public HouseGateConfirm(Mobile user, HouseGateTile tile)
: base(user)
{
_Tile = tile;
Title = "Place House Gate";
Html =
String.Format(
"You are about to place a house gate at the cost of {0:#,0} gold. " +
"Go to your house. Once you are in your house, click OK and the gate will be summoned!",
_Tile.Price);
Modal = false;
CanMove = true;
CanClose = true;
CanDispose = true;
}
protected override void OnAccept(GumpButton button)
{
base.OnAccept(button);
if (_Tile == null || _Tile.Deleted)
{
User.SendMessage(0x22, "The house teleporter you selected is no longer available.");
return;
}
if (_Tile.Gate != null && !_Tile.Gate.Deleted && _Tile.Gate.House != null && !_Tile.Gate.House.Deleted)
{
User.SendMessage(0x22, "The house teleporter you selected is no longer available.");
return;
}
if (HouseGate.CountGatesFor(User) > 0)
{
User.SendMessage(0x22, "You already own too many house gates.");
return;
}
var hr = User.GetRegion<HouseRegion>();
if (hr == null || hr.House == null)
{
User.SendMessage(0x22, "You must be in your house to place a gate.");
return;
}
if (hr.House.Owner != User)
{
User.SendMessage(0x22, "You must be in a house that you own to place a gate.");
return;
}
if (!Banker.Withdraw(User, _Tile.Price))
{
User.SendMessage(0x22, "You do not have the required gold to place a gate.");
return;
}
new HouseGate(hr.House)
{
Tile = _Tile,
Hue = Utility.RandomBrightHue()
}.MoveToWorld(hr.House.BanLocation, hr.House.Map);
new NoticeDialogGump(User)
{
Title = "House Gate Information",
Html = _Info,
Width = 600,
Height = 400
}.Send();
}
}
}