#W# Added: Added an Overworld dungeon region. Tweaked overworld animal spawn.

This commit is contained in:
WarrentyExpired 2026-10-01 20:37:16 -04:00
parent 6213604bb1
commit 292cd625c5
10 changed files with 435 additions and 322 deletions

View file

@ -1,6 +1,6 @@
# Bastion
AnkhWest 0x0003
1734 2023 0
1735 2023 0
LoomEastAddon 0x1060
1875 2040 0

View file

@ -895,5 +895,33 @@
"entries": [
{ "name": "carpenter", "probability": 100, "maxCount": 1 }
]
},
{
"$type": "Spawner",
"guid": "2126cd7b-a05a-48c9-b863-115cd1d797c1",
"location": [1732, 2031, 0],
"map": "Veridia",
"count": 1,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"homeRange": 2,
"walkingRange": 5,
"entries": [
{ "name": "keeperofchivalry", "probability": 100, "maxCount": 1 }
]
},
{
"$type": "Spawner",
"guid": "36e3210f-3fa0-439d-92cc-65a12c7cbd86",
"location": [1750, 1997, 0],
"map": "Veridia",
"count": 1,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"homeRange": 3,
"walkingRange": -1,
"entries": [
{ "name": "necromancer", "probability": 100, "maxCount": 1 }
]
}
]

View file

@ -88,7 +88,7 @@
"homeRange": 30,
"walkingRange": 45,
"entries": [
{ "name": "bird", "probability": 100, "maxCount": 18 },
{ "name": "bird", "probability": 100, "maxCount": 10 },
{ "name": "cat", "probability": 100, "maxCount": 2 },
{ "name": "dog", "probability": 100, "maxCount": 2 },
{ "name": "rat", "probability": 100, "maxCount": 3 }
@ -263,7 +263,7 @@
"homeRange": 50,
"walkingRange": 65,
"entries": [
{ "name": "bird", "probability": 100, "maxCount": 28 },
{ "name": "bird", "probability": 100, "maxCount": 15 },
{ "name": "cat", "probability": 100, "maxCount": 5 },
{ "name": "dog", "probability": 100, "maxCount": 3 },
{ "name": "rat", "probability": 100, "maxCount": 4 }

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -2347,7 +2347,7 @@
]
},
{
"$type": "GreetingDungeonRegion",
"$type": "GreetingOverworldSpawnRegion",
"Map": "Veridia",
"Name": "the Brigand Camp",
"Priority": 55,
@ -2356,7 +2356,7 @@
]
},
{
"$type": "GreetingDungeonRegion",
"$type": "GreetingOverworldSpawnRegion",
"Map": "Veridia",
"Name": "the Evil Mage Fortress",
"Priority": 55,
@ -2366,7 +2366,7 @@
]
},
{
"$type": "GreetingDungeonRegion",
"$type": "GreetingOverworldSpawnRegion",
"Map": "Veridia",
"Name": "the Ratman Fortress",
"Priority": 55,
@ -2375,7 +2375,7 @@
]
},
{
"$type": "GreetingDungeonRegion",
"$type": "GreetingOverworldSpawnRegion",
"Map": "Veridia",
"Name": "the Tower of the Lich",
"Priority": 55,
@ -2384,7 +2384,7 @@
]
},
{
"$type": "GreetingDungeonRegion",
"$type": "GreetingOverworldSpawnRegion",
"Map": "Veridia",
"Name": "the Church of Ruin",
"Priority": 55,
@ -2394,7 +2394,7 @@
]
},
{
"$type": "GreetingDungeonRegion",
"$type": "GreetingOverworldSpawnRegion",
"Map": "Veridia",
"Name": "the Ruined Farm",
"Priority": 55,
@ -2404,7 +2404,7 @@
]
},
{
"$type": "GreetingDungeonRegion",
"$type": "GreetingOverworldSpawnRegion",
"Map": "Veridia",
"Name": "the Orc Fort",
"Priority": 55,
@ -2413,7 +2413,7 @@
]
},
{
"$type": "GreetingDungeonRegion",
"$type": "GreetingOverworldSpawnRegion",
"Map": "Veridia",
"Name": "the Savage Camp",
"Priority": 55,
@ -2422,7 +2422,7 @@
]
},
{
"$type": "GreetingDungeonRegion",
"$type": "GreetingOverworldSpawnRegion",
"Map": "Veridia",
"Name": "the Church of Daemons",
"Priority": 55,
@ -2431,7 +2431,7 @@
]
},
{
"$type": "GreetingDungeonRegion",
"$type": "GreetingOverworldSpawnRegion",
"Map": "Veridia",
"Name": "the Rivermouth Cemetery",
"Priority": 55,
@ -2441,7 +2441,7 @@
]
},
{
"$type": "GreetingDungeonRegion",
"$type": "GreetingOverworldSpawnRegion",
"Map": "Veridia",
"Name": "the Myrish Cemetery",
"Priority": 55,
@ -2450,7 +2450,7 @@
]
},
{
"$type": "GreetingDungeonRegion",
"$type": "GreetingOverworldSpawnRegion",
"Map": "Veridia",
"Name": "the Bastion Cemetery",
"Priority": 55,
@ -2460,7 +2460,7 @@
]
},
{
"$type": "GreetingDungeonRegion",
"$type": "GreetingOverworldSpawnRegion",
"Map": "Veridia",
"Name": "the Mireport Cemetery",
"Priority": 55,

View file

@ -3819,7 +3819,7 @@ namespace Server.Mobiles
{
var tc = Core.TickCount;
if (!Controlled && !Summoned && Region is Server.Regions.DungeonRegion)
if (!Controlled && !Summoned && Region is Server.Regions.GreetingDungeonRegion)
{
if (Combatant == null)
{

View file

@ -0,0 +1,41 @@
using ModernUO.Serialization;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
[SerializationGenerator(0, false)]
public partial class Necromancer : BaseVendor
{
private readonly List<SBInfo> m_SBInfos = new();
[Constructible]
public Necromancer() : base("the necromancer")
{
SetSkill(SkillName.Necromancy, 65.0, 88.0);
SetSkill(SkillName.SpiritSpeak, 65.0, 88.0);
SetSkill(SkillName.Meditation, 60.0, 83.0);
SetSkill(SkillName.MagicResist, 65.0, 88.0);
SetSkill(SkillName.Wrestling, 36.0, 68.0);
}
protected override List<SBInfo> SBInfos => m_SBInfos;
public override NpcGuild NpcGuild => NpcGuild.MagesGuild;
public override VendorShoeType ShoeType => Utility.RandomBool() ? VendorShoeType.Shoes : VendorShoeType.Sandals;
public override void InitSBInfo()
{
m_SBInfos.Add(new SBMage());
}
public override void InitOutfit()
{
base.InitOutfit();
AddItem(new Robe(Utility.RandomGreenHue()));
AddItem(new WizardsHat(Utility.RandomGreenHue()));
}
}
}

View file

@ -0,0 +1,43 @@
using Server;
using Server.Mobiles;
namespace Server.Regions
{
public class GreetingOverworldSpawnRegion : DungeonRegion
{
public GreetingOverworldSpawnRegion(string name, Map map, int priority, params Rectangle3D[] area)
: base(name, map, priority, area)
{
}
public override bool MountsAllowed => false;
public override void OnEnter(Mobile m)
{
base.OnEnter(m);
if (m.Player)
{
m.SendMessage($"You entered <BASEFONT COLOR='#FF0000'>{this.Name}</BASEFONT>.");
}
if (m is PlayerMobile player && player.Mounted )
{
if ( player.Mount is BaseMount )
{
Server.Custom.AutoStable.StoreMount(player);
}
else
{
BaseMount.Dismount(player);
player.SendMessage("Mounts are not permitted in this area.");
}
}
}
public override void OnExit(Mobile m)
{
base.OnExit(m);
if ( m is PlayerMobile player )
{
Server.Custom.AutoStable.RestoreMount(player);
}
}
}
}

View file

@ -65,5 +65,6 @@ public static class RegionJsonRegistration
RegionJsonSerializer.Register<GreetingTownRegion>();
RegionJsonSerializer.Register<GreetingDungeonRegion>();
RegionJsonSerializer.Register<MountlessTownRegion>();
RegionJsonSerializer.Register<GreetingOverworldSpawnRegion>();
}
}