ModernUO/Projects/UOContent/Regions/TwistedWealdDesertRegion.cs
Kamron Batman 0a9bfb0558
fix: Drastically simplifies regions (#1400)
### Summary
- [X] Gets rid of the Dtos
- [X] Simplifies the json serializer registration
- [X] Adds a custom `RegionByName` JsonConverter that can look up other regions that have already been registered.


### BREAKING CHANGE
1. **Child regions must appear after their parents in the JSON file**
2. In the regions json file, _"Parent"_ can no longer be just a string. It must be an object that includes the map.
      - ```json
        "Parent": { "Name": "Britain", "Map": "Felucca" }
        ```
2023-05-19 16:39:40 -07:00

56 lines
1.6 KiB
C#

using System.Text.Json.Serialization;
using Server.Network;
using Server.Spells;
using Server.Spells.Ninjitsu;
namespace Server.Regions;
public class TwistedWealdDesertRegion : MondainRegion
{
[JsonConstructor] // Don't include parent, since it is special
public TwistedWealdDesertRegion(string name, Map map, int priority, params Rectangle3D[] area) : base(name, map, priority, area)
{
}
public TwistedWealdDesertRegion(string name, Map map, Region parent, params Rectangle3D[] area)
: base(name, map, parent, area)
{
}
public TwistedWealdDesertRegion(string name, Map map, Region parent, int priority, params Rectangle3D[] area)
: base(name, map, parent, priority, area)
{
}
public static void Initialize()
{
EventSink.Login += Desert_OnLogin;
}
public override void OnEnter(Mobile m)
{
var ns = m.NetState;
if (ns != null && !TransformationSpellHelper.UnderTransformation(m, typeof(AnimalForm)) &&
m.AccessLevel == AccessLevel.Player)
{
ns.SendSpeedControl(SpeedControlSetting.Walk);
}
}
public override void OnExit(Mobile m)
{
var ns = m.NetState;
if (ns != null && !TransformationSpellHelper.UnderTransformation(m, typeof(AnimalForm)))
{
ns.SendSpeedControl(SpeedControlSetting.Disable);
}
}
private static void Desert_OnLogin(Mobile m)
{
if (m.Region.IsPartOf<TwistedWealdDesertRegion>() && m.AccessLevel == AccessLevel.Player)
{
m.NetState.SendSpeedControl(SpeedControlSetting.Walk);
}
}
}