From 6cd2f766da432617c1c661dcbed4a8b5cf903373 Mon Sep 17 00:00:00 2001 From: WarrentyExpired Date: Thu, 22 Oct 2026 14:23:16 -0400 Subject: [PATCH] #W# Added: New player area at the entrance of the dungeon. Added some npcs. --- .../Spawns/Overworld/NewPlayerArea_NPCs.json | 72 +++++++++++++++++++ Distribution/Data/regions.json | 13 ++++ Projects/UOContent/Skills/SkillCheck.cs | 4 +- 3 files changed, 87 insertions(+), 2 deletions(-) create mode 100644 Distribution/Data/Spawns/Overworld/NewPlayerArea_NPCs.json diff --git a/Distribution/Data/Spawns/Overworld/NewPlayerArea_NPCs.json b/Distribution/Data/Spawns/Overworld/NewPlayerArea_NPCs.json new file mode 100644 index 000000000..78399ff6d --- /dev/null +++ b/Distribution/Data/Spawns/Overworld/NewPlayerArea_NPCs.json @@ -0,0 +1,72 @@ +[ + { + "$type": "Spawner", + "guid": "62ea3b2f-2896-4684-8b0b-06d12a790b22", + "location": [1620, 2074, 22], + "map": "Veridia", + "count": 1, + "minDelay": "00:05:00", + "maxDelay": "00:10:00", + "spawnBounds": { "x1": 1620, "y1": 2074, "z1": 22, "x2": 1621, "y2": 2075, "z2": 128 }, + "walkingRange": 4, + "entries": [ + { "name": "provisioner", "probability": 100, "maxCount": 1 } + ] + }, + { + "$type": "Spawner", + "guid": "fd2c78f7-cb34-483c-bb9d-b17b037337e1", + "location": [1618, 2079, 22], + "map": "Veridia", + "count": 1, + "minDelay": "00:05:00", + "maxDelay": "00:10:00", + "spawnBounds": { "x1": 1618, "y1": 2079, "z1": 22, "x2": 1619, "y2": 2080, "z2": 128 }, + "walkingRange": 6, + "entries": [ + { "name": "healer", "probability": 100, "maxCount": 1 } + ] + }, + { + "$type": "Spawner", + "guid": "13a41f80-6c46-4c0a-95e1-6407f1db6507", + "location": [1619, 2084, 22], + "map": "Veridia", + "count": 1, + "minDelay": "00:05:00", + "maxDelay": "00:10:00", + "spawnBounds": { "x1": 1619, "y1": 2084, "z1": 22, "x2": 1620, "y2": 2085, "z2": 128 }, + "walkingRange": 4, + "entries": [ + { "name": "mage", "probability": 100, "maxCount": 1 } + ] + }, + { + "$type": "Spawner", + "guid": "cad4963a-d076-4280-966b-aa983a077388", + "location": [1621, 2084, 22], + "map": "Veridia", + "count": 1, + "minDelay": "00:05:00", + "maxDelay": "00:10:00", + "spawnBounds": { "x1": 1621, "y1": 2084, "z1": 22, "x2": 1622, "y2": 2085, "z2": 128 }, + "walkingRange": 4, + "entries": [ + { "name": "armorer", "probability": 100, "maxCount": 1 } + ] + }, + { + "$type": "Spawner", + "guid": "fb4c508a-be8b-4a59-9b83-7b1eb7a84025", + "location": [1623, 2074, 22], + "map": "Veridia", + "count": 1, + "minDelay": "00:05:00", + "maxDelay": "00:10:00", + "spawnBounds": { "x1": 1623, "y1": 2074, "z1": 22, "x2": 1624, "y2": 2075, "z2": 128 }, + "walkingRange": 4, + "entries": [ + { "name": "alchemist", "probability": 100, "maxCount": 1 } + ] + } +] diff --git a/Distribution/Data/regions.json b/Distribution/Data/regions.json index d1256342d..3335ae579 100644 --- a/Distribution/Data/regions.json +++ b/Distribution/Data/regions.json @@ -2421,6 +2421,19 @@ { "x1": 3415, "y1": 3702, "x2": 3425, "y2": 3717 } ] }, + { + "$type": "GreetingTownRegion", + "Map": "Veridia", + "Name": "the New Player Area", + "Priority": 60, + "Area": [ + { "x1": 1605, "y1": 2063, "x2": 1638, "y2": 2101 }, + { "x1": 1638, "y1": 2072, "x2": 1642, "y2": 2100 }, + { "x1": 1641, "y1": 2071, "x2": 1652, "y2": 2072 }, + { "x1": 1642, "y1": 2072, "x2": 1652, "y2": 2082 }, + { "x1": 1642, "y1": 2082, "x2": 1650, "y2": 2096 } + ] + }, { "$type": "NewbieDungeonRegion", "Map": "Underworld", diff --git a/Projects/UOContent/Skills/SkillCheck.cs b/Projects/UOContent/Skills/SkillCheck.cs index 721f400ac..714d791ae 100644 --- a/Projects/UOContent/Skills/SkillCheck.cs +++ b/Projects/UOContent/Skills/SkillCheck.cs @@ -123,7 +123,7 @@ public static class SkillCheck { Gain(from, skill); } - else if (AllowGain(from, skill, amObj)) + else if (success && AllowGain(from, skill, amObj)) { var gc = (double)(from.Skills.Cap - from.Skills.Total) / from.Skills.Cap; gc += (skill.Cap - skill.Base) / skill.Cap; @@ -146,7 +146,7 @@ public static class SkillCheck if (from.Region is NewbieDungeonRegion) { - gc *= 3.0; + gc *= 2.5; } else if (DailyDungeonManager.IsActive(from.Region)) {