Files
abysmal-isle/Scripts/Services/City Loyalty System/Items/CityMessageBoard.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

184 lines
6.9 KiB
C#

using System;
using Server;
using Server.Mobiles;
using System.Collections.Generic;
using Server.Engines.CityLoyalty;
using System.Linq;
using Server.Prompts;
using Server.ContextMenus;
namespace Server.Items
{
public class CityMessageBoard : BasePlayerBB
{
public City City { get; set; }
[CommandProperty(AccessLevel.GameMaster)]
public CityLoyaltySystem CitySystem { get { return CityLoyaltySystem.GetCityInstance(City); } set { } }
public override int LabelNumber { get { return 1027774; } } // bulletin board
public override bool Public { get { return true; } }
public override bool ForceShowProperties { get { return true; } }
[Constructable]
public CityMessageBoard(City city, int id) : base(id)
{
Movable = false;
City = city;
}
public override bool CanPostGreeting(Server.Multis.BaseHouse house, Mobile m)
{
var sys = CitySystem;
return sys != null && (m.AccessLevel >= AccessLevel.GameMaster || sys.Governor == m);
}
public override void OnDoubleClick(Mobile from)
{
if (!CityLoyaltySystem.Enabled || CitySystem == null)
return;
if (CitySystem.IsCitizen(from, true))
{
if (from.InRange(this.Location, 3))
{
from.SendGump(new PlayerBBGump(from, null, this, 0));
}
else
{
from.PrivateOverheadMessage(Server.Network.MessageType.Regular, 0x3B2, 1019045, from.NetState);
}
}
else
{
from.SendLocalizedMessage(1154275); // Only Citizens of this City may use this.
}
}
/*public override void GetContextMenuEntries(Mobile from, List<ContextMenuEntry> list)
{
base.GetContextMenuEntries(from, list);
if (!CityLoyaltySystem.Enabled || CitySystem == null || !CitySystem.IsGovernor(from))
return;
list.Add(new SimpleContextMenuEntry(from, 1154912, m => // Set New Announcement
{
if (m.Prompt != null)
m.SendLocalizedMessage(1079166); // You already have a text entry request pending.
else if (CitySystem.Herald != null)
{
m.SendMessage("Enter message board headline:");
m.BeginPrompt(
(mob, text) =>
{
if (Server.Guilds.BaseGuildGump.CheckProfanity(text, 150))
{
CitySystem.Herald.Announcement = text;
}
else
mob.SendLocalizedMessage(1112587); // Invalid entry.
},
(mob, text) =>
{
mob.SendMessage("Herald message unchanged.");
});
}
}, enabled: CitySystem.Herald != null));
list.Add(new SimpleContextMenuEntry(from, 1154913, m => // Set Headline
{
if (m.Prompt != null)
m.SendLocalizedMessage(1079166); // You already have a text entry request pending.
else
{
m.SendMessage("Enter message board headline:");
m.BeginPrompt(
(mob, text) =>
{
if (Server.Guilds.BaseGuildGump.CheckProfanity(text, 150))
{
if (String.IsNullOrEmpty(text))
{
CitySystem.Headline = null;
CitySystem.Body = null;
CitySystem.PostedOn = DateTime.Now;
mob.SendMessage("{0} message board headline removed!", CitySystem.Definition.Name);
}
else
{
CitySystem.Headline = text;
CitySystem.PostedOn = DateTime.Now;
mob.SendMessage("{0} message board headline changed!", CitySystem.Definition.Name);
}
}
else
mob.SendLocalizedMessage(1112587); // Invalid entry.
},
(mob, text) =>
{
mob.SendMessage("Message headline unchanged.");
});
}
}));
list.Add(new SimpleContextMenuEntry(from, 1154914, m => // Set Body
{
if (m.Prompt != null)
m.SendLocalizedMessage(1079166); // You already have a text entry request pending.
else
{
m.SendMessage("Enter message board body:");
m.BeginPrompt(
(mob, text) =>
{
if (Server.Guilds.BaseGuildGump.CheckProfanity(text, 150))
{
if (String.IsNullOrEmpty(text))
{
CitySystem.Body = null;
CitySystem.PostedOn = DateTime.Now;
mob.SendMessage("{0} message board body removed!", CitySystem.Definition.Name);
}
else
{
CitySystem.Body = text;
CitySystem.PostedOn = DateTime.Now;
mob.SendMessage("{0} message board body removed!", CitySystem.Definition.Name);
}
}
else
mob.SendLocalizedMessage(1112587); // Invalid entry.
},
(mob, text) =>
{
mob.SendMessage("Message body unchanged.");
});
}
}));
}*/
public CityMessageBoard(Serial serial)
: base(serial)
{
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0);
writer.Write((int)City);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
City = (City)reader.ReadInt();
CitySystem.Board = this;
}
}
}