diff --git a/Distribution/Data/Decoration/Trammel/_champion teleporters.cfg b/Distribution/Data/Decoration/Trammel/_champion teleporters.cfg new file mode 100644 index 000000000..409b806c2 --- /dev/null +++ b/Distribution/Data/Decoration/Trammel/_champion teleporters.cfg @@ -0,0 +1,3 @@ +# teleporter +Teleporter 0x1BC3 (PointDest=(5977, 169, 0)) +5905 97 0 diff --git a/Distribution/Data/Spawns/region-spawns.json b/Distribution/Data/Spawns/post-uoml/felucca/FelCropsLS.json similarity index 50% rename from Distribution/Data/Spawns/region-spawns.json rename to Distribution/Data/Spawns/post-uoml/felucca/FelCropsLS.json index b9e4dd844..2a31049f3 100644 --- a/Distribution/Data/Spawns/region-spawns.json +++ b/Distribution/Data/Spawns/post-uoml/felucca/FelCropsLS.json @@ -286,293 +286,5 @@ "maxDelay": "00:00:30", "guid": "4b4e3973-d836-4f7c-b9f7-5fb7d468da28", "name": "Spawner" - }, - { - "type": "RegionSpawner", - "location": [375, 1191, 0], - "map": "Trammel", - "region": "A Wheatfield in Yew 2", - "count": 6, - "entries": [{ "maxCount": 6, "name": "FarmableWheat", "probability": 100 }], - "minDelay": "00:00:10", - "maxDelay": "00:00:30", - "guid": "fb826650-9fad-43ff-8ba1-9d848f1f26c5", - "name": "Spawner" - }, - { - "type": "RegionSpawner", - "location": [567, 1239, 0], - "map": "Trammel", - "region": "A Wheatfield in Yew 1", - "count": 5, - "entries": [{ "maxCount": 5, "name": "FarmableWheat", "probability": 100 }], - "minDelay": "00:00:10", - "maxDelay": "00:00:30", - "guid": "79af53a5-33e2-4fdb-95dd-278a050e54fc", - "name": "Spawner" - }, - { - "type": "RegionSpawner", - "location": [571, 1099, 0], - "map": "Trammel", - "region": "A Farm in Yew", - "count": 10, - "entries": [{ "maxCount": 10, "name": "Sheep", "probability": 100 }], - "minDelay": "00:00:10", - "maxDelay": "00:00:30", - "guid": "8408baaa-0de1-4cb0-ad89-973782e3a565", - "name": "Spawner" - }, - { - "type": "RegionSpawner", - "location": [675, 939, 0], - "map": "Trammel", - "region": "A Field of Sheep in Yew 1", - "count": 10, - "entries": [{ "maxCount": 10, "name": "Sheep", "probability": 100 }], - "minDelay": "00:00:10", - "maxDelay": "00:00:30", - "guid": "b17f2f9c-9d36-4bea-87db-69f8effc4926", - "name": "Spawner" - }, - { - "type": "RegionSpawner", - "location": [675, 1179, 0], - "map": "Trammel", - "region": "A Field of Sheep in Yew 2", - "count": 10, - "entries": [{ "maxCount": 10, "name": "Sheep", "probability": 100 }], - "minDelay": "00:00:10", - "maxDelay": "00:00:30", - "guid": "690ccc1c-2ac8-4f05-8066-695aa53c98aa", - "name": "Spawner" - }, - { - "type": "RegionSpawner", - "location": [813, 2163, 0], - "map": "Trammel", - "region": "A Wheatfield in Skara Brae 1", - "count": 6, - "entries": [{ "maxCount": 6, "name": "FarmableWheat", "probability": 100 }], - "minDelay": "00:00:10", - "maxDelay": "00:00:30", - "guid": "ee6692af-82cf-477e-96ec-375be7a23db9", - "name": "Spawner" - }, - { - "type": "RegionSpawner", - "location": [823, 2254, 0], - "map": "Trammel", - "region": "A Carrot Field in Skara Brae", - "count": 6, - "entries": [{ "maxCount": 6, "name": "FarmableCarrot", "probability": 100 }], - "minDelay": "00:00:10", - "maxDelay": "00:00:30", - "guid": "c052a5e0-493d-483e-a98a-665cf05c5c14", - "name": "Spawner" - }, - { - "type": "RegionSpawner", - "location": [823, 2264, 0], - "map": "Trammel", - "region": "An Onion Field in Skara Brae", - "count": 6, - "entries": [{ "maxCount": 6, "name": "FarmableOnion", "probability": 100 }], - "minDelay": "00:00:10", - "maxDelay": "00:00:30", - "guid": "41a583ac-749c-40a7-8658-fb3deb1b222a", - "name": "Spawner" - }, - { - "type": "RegionSpawner", - "location": [823, 2264, 0], - "map": "Trammel", - "region": "A Cabbage Field in Skara Brae 1", - "count": 6, - "entries": [{ "maxCount": 6, "name": "FarmableCabbage", "probability": 100 }], - "minDelay": "00:00:10", - "maxDelay": "00:00:30", - "guid": "df4c5918-b490-4257-9aeb-541b44980b27", - "name": "Spawner" - }, - { - "type": "RegionSpawner", - "location": [823, 2274, 0], - "map": "Trammel", - "region": "A Cabbage Field in Skara Brae 2", - "count": 6, - "entries": [{ "maxCount": 6, "name": "FarmableCabbage", "probability": 100 }], - "minDelay": "00:00:10", - "maxDelay": "00:00:30", - "guid": "1025906e-047c-460b-9bb8-581f57ff1357", - "name": "Spawner" - }, - { - "type": "RegionSpawner", - "location": [823, 2355, 0], - "map": "Trammel", - "region": "A Cotton Field in Skara Brae", - "count": 6, - "entries": [{ "maxCount": 6, "name": "FarmableCotton", "probability": 100 }], - "minDelay": "00:00:10", - "maxDelay": "00:00:30", - "guid": "185e475b-36cf-4dad-8776-537e84b15e42", - "name": "Spawner" - }, - { - "type": "RegionSpawner", - "location": [843, 2352, 0], - "map": "Trammel", - "region": "A Wheatfield in Skara Brae 2", - "count": 6, - "entries": [{ "maxCount": 6, "name": "FarmableWheat", "probability": 100 }], - "minDelay": "00:00:10", - "maxDelay": "00:00:30", - "guid": "59e99d3b-b727-491b-b0f3-03a441b10c04", - "name": "Spawner" - }, - { - "type": "RegionSpawner", - "location": [1120, 1624, 0], - "map": "Trammel", - "region": "A Wheatfield in Britain 4", - "count": 8, - "entries": [{ "maxCount": 8, "name": "FarmableWheat", "probability": 100 }], - "minDelay": "00:00:10", - "maxDelay": "00:00:30", - "guid": "85cc6fca-4f66-4428-aa3a-347a88523a4b", - "name": "Spawner" - }, - { - "type": "RegionSpawner", - "location": [1135, 1791, 0], - "map": "Trammel", - "region": "A Wheatfield in Britain 1", - "count": 8, - "entries": [{ "maxCount": 8, "name": "FarmableWheat", "probability": 100 }], - "minDelay": "00:00:10", - "maxDelay": "00:00:30", - "guid": "afdfec82-dac3-43df-bd7b-cd2cfad5f265", - "name": "Spawner" - }, - { - "type": "RegionSpawner", - "location": [1152, 1576, 0], - "map": "Trammel", - "region": "A Wheatfield in Britain 5", - "count": 8, - "entries": [{ "maxCount": 8, "name": "FarmableWheat", "probability": 100 }], - "minDelay": "00:00:10", - "maxDelay": "00:00:30", - "guid": "34b0579c-1fc6-4868-82c5-09138c5e5878", - "name": "Spawner" - }, - { - "type": "RegionSpawner", - "location": [1183, 1683, 0], - "map": "Trammel", - "region": "A Cabbage Field in Britain 1", - "count": 8, - "entries": [{ "maxCount": 8, "name": "FarmableCabbage", "probability": 100 }], - "minDelay": "00:00:10", - "maxDelay": "00:00:30", - "guid": "997d9ff5-ad2b-421b-ae76-6794e7e88150", - "name": "Spawner" - }, - { - "type": "RegionSpawner", - "location": [1199, 1683, 0], - "map": "Trammel", - "region": "A Turnip Field in Britain 1", - "count": 8, - "entries": [{ "maxCount": 8, "name": "FarmableTurnip", "probability": 100 }], - "minDelay": "00:00:10", - "maxDelay": "00:00:30", - "guid": "bfb677f7-e824-46f6-95ef-ee5602f4f9c3", - "name": "Spawner" - }, - { - "type": "RegionSpawner", - "location": [1199, 1823, 0], - "map": "Trammel", - "region": "A Wheatfield in Britain 2", - "count": 8, - "entries": [{ "maxCount": 8, "name": "FarmableWheat", "probability": 100 }], - "minDelay": "00:00:10", - "maxDelay": "00:00:30", - "guid": "c42ef172-78c8-4c5e-b26c-fcc3fc3da1cc", - "name": "Spawner" - }, - { - "type": "RegionSpawner", - "location": [1215, 1723, 0], - "map": "Trammel", - "region": "A Carrot Field in Britain 1", - "count": 8, - "entries": [{ "maxCount": 8, "name": "FarmableCarrot", "probability": 100 }], - "minDelay": "00:00:10", - "maxDelay": "00:00:30", - "guid": "57551e80-0018-4fcf-8b83-9d39ef19b0a6", - "name": "Spawner" - }, - { - "type": "RegionSpawner", - "location": [1216, 1604, 0], - "map": "Trammel", - "region": "A Turnip Field in Britain 2", - "count": 6, - "entries": [{ "maxCount": 6, "name": "FarmableTurnip", "probability": 100 }], - "minDelay": "00:00:10", - "maxDelay": "00:00:30", - "guid": "0da29e36-7bff-4fcf-803d-79dd16212653", - "name": "Spawner" - }, - { - "type": "RegionSpawner", - "location": [1231, 1723, 0], - "map": "Trammel", - "region": "An Onion Field in Britain 1", - "count": 8, - "entries": [{ "maxCount": 8, "name": "FarmableOnion", "probability": 100 }], - "minDelay": "00:00:10", - "maxDelay": "00:00:30", - "guid": "4656ad9d-a455-4217-9316-ec10d10cf68c", - "name": "Spawner" - }, - { - "type": "RegionSpawner", - "location": [1231, 1887, 0], - "map": "Trammel", - "region": "A Wheatfield in Britain 3", - "count": 8, - "entries": [{ "maxCount": 8, "name": "FarmableWheat", "probability": 100 }], - "minDelay": "00:00:10", - "maxDelay": "00:00:30", - "guid": "d5b08634-5c5d-4bc2-b6cd-74cb06132423", - "name": "Spawner" - }, - { - "type": "RegionSpawner", - "location": [1232, 1604, 0], - "map": "Trammel", - "region": "A Carrot Field in Britain 2", - "count": 6, - "entries": [{ "maxCount": 6, "name": "FarmableCarrot", "probability": 100 }], - "minDelay": "00:00:10", - "maxDelay": "00:00:30", - "guid": "ab0cb920-b25f-4811-8ef6-938549dbfa27", - "name": "Spawner" - }, - { - "type": "RegionSpawner", - "location": [4567, 1475, 0], - "map": "Trammel", - "region": "A Cotton Field in Moonglow", - "count": 8, - "entries": [{ "maxCount": 8, "name": "FarmableCotton", "probability": 100 }], - "minDelay": "00:00:10", - "maxDelay": "00:00:30", - "guid": "69dfbe70-b46c-42b0-9ff1-351fd9651884", - "name": "Spawner" } ] diff --git a/Distribution/Data/Spawns/post-uoml/trammel/TramCropsLS.json b/Distribution/Data/Spawns/post-uoml/trammel/TramCropsLS.json new file mode 100644 index 000000000..ba95364c1 --- /dev/null +++ b/Distribution/Data/Spawns/post-uoml/trammel/TramCropsLS.json @@ -0,0 +1,290 @@ +[ + { + "type": "RegionSpawner", + "location": [375, 1191, 0], + "map": "Trammel", + "region": "A Wheatfield in Yew 2", + "count": 6, + "entries": [{ "maxCount": 6, "name": "FarmableWheat", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "fb826650-9fad-43ff-8ba1-9d848f1f26c5", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [567, 1239, 0], + "map": "Trammel", + "region": "A Wheatfield in Yew 1", + "count": 5, + "entries": [{ "maxCount": 5, "name": "FarmableWheat", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "79af53a5-33e2-4fdb-95dd-278a050e54fc", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [571, 1099, 0], + "map": "Trammel", + "region": "A Farm in Yew", + "count": 10, + "entries": [{ "maxCount": 10, "name": "Sheep", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "8408baaa-0de1-4cb0-ad89-973782e3a565", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [675, 939, 0], + "map": "Trammel", + "region": "A Field of Sheep in Yew 1", + "count": 10, + "entries": [{ "maxCount": 10, "name": "Sheep", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "b17f2f9c-9d36-4bea-87db-69f8effc4926", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [675, 1179, 0], + "map": "Trammel", + "region": "A Field of Sheep in Yew 2", + "count": 10, + "entries": [{ "maxCount": 10, "name": "Sheep", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "690ccc1c-2ac8-4f05-8066-695aa53c98aa", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [813, 2163, 0], + "map": "Trammel", + "region": "A Wheatfield in Skara Brae 1", + "count": 6, + "entries": [{ "maxCount": 6, "name": "FarmableWheat", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "ee6692af-82cf-477e-96ec-375be7a23db9", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [823, 2254, 0], + "map": "Trammel", + "region": "A Carrot Field in Skara Brae", + "count": 6, + "entries": [{ "maxCount": 6, "name": "FarmableCarrot", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "c052a5e0-493d-483e-a98a-665cf05c5c14", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [823, 2264, 0], + "map": "Trammel", + "region": "An Onion Field in Skara Brae", + "count": 6, + "entries": [{ "maxCount": 6, "name": "FarmableOnion", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "41a583ac-749c-40a7-8658-fb3deb1b222a", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [823, 2264, 0], + "map": "Trammel", + "region": "A Cabbage Field in Skara Brae 1", + "count": 6, + "entries": [{ "maxCount": 6, "name": "FarmableCabbage", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "df4c5918-b490-4257-9aeb-541b44980b27", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [823, 2274, 0], + "map": "Trammel", + "region": "A Cabbage Field in Skara Brae 2", + "count": 6, + "entries": [{ "maxCount": 6, "name": "FarmableCabbage", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "1025906e-047c-460b-9bb8-581f57ff1357", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [823, 2355, 0], + "map": "Trammel", + "region": "A Cotton Field in Skara Brae", + "count": 6, + "entries": [{ "maxCount": 6, "name": "FarmableCotton", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "185e475b-36cf-4dad-8776-537e84b15e42", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [843, 2352, 0], + "map": "Trammel", + "region": "A Wheatfield in Skara Brae 2", + "count": 6, + "entries": [{ "maxCount": 6, "name": "FarmableWheat", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "59e99d3b-b727-491b-b0f3-03a441b10c04", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [1120, 1624, 0], + "map": "Trammel", + "region": "A Wheatfield in Britain 4", + "count": 8, + "entries": [{ "maxCount": 8, "name": "FarmableWheat", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "85cc6fca-4f66-4428-aa3a-347a88523a4b", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [1135, 1791, 0], + "map": "Trammel", + "region": "A Wheatfield in Britain 1", + "count": 8, + "entries": [{ "maxCount": 8, "name": "FarmableWheat", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "afdfec82-dac3-43df-bd7b-cd2cfad5f265", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [1152, 1576, 0], + "map": "Trammel", + "region": "A Wheatfield in Britain 5", + "count": 8, + "entries": [{ "maxCount": 8, "name": "FarmableWheat", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "34b0579c-1fc6-4868-82c5-09138c5e5878", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [1183, 1683, 0], + "map": "Trammel", + "region": "A Cabbage Field in Britain 1", + "count": 8, + "entries": [{ "maxCount": 8, "name": "FarmableCabbage", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "997d9ff5-ad2b-421b-ae76-6794e7e88150", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [1199, 1683, 0], + "map": "Trammel", + "region": "A Turnip Field in Britain 1", + "count": 8, + "entries": [{ "maxCount": 8, "name": "FarmableTurnip", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "bfb677f7-e824-46f6-95ef-ee5602f4f9c3", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [1199, 1823, 0], + "map": "Trammel", + "region": "A Wheatfield in Britain 2", + "count": 8, + "entries": [{ "maxCount": 8, "name": "FarmableWheat", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "c42ef172-78c8-4c5e-b26c-fcc3fc3da1cc", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [1215, 1723, 0], + "map": "Trammel", + "region": "A Carrot Field in Britain 1", + "count": 8, + "entries": [{ "maxCount": 8, "name": "FarmableCarrot", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "57551e80-0018-4fcf-8b83-9d39ef19b0a6", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [1216, 1604, 0], + "map": "Trammel", + "region": "A Turnip Field in Britain 2", + "count": 6, + "entries": [{ "maxCount": 6, "name": "FarmableTurnip", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "0da29e36-7bff-4fcf-803d-79dd16212653", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [1231, 1723, 0], + "map": "Trammel", + "region": "An Onion Field in Britain 1", + "count": 8, + "entries": [{ "maxCount": 8, "name": "FarmableOnion", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "4656ad9d-a455-4217-9316-ec10d10cf68c", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [1231, 1887, 0], + "map": "Trammel", + "region": "A Wheatfield in Britain 3", + "count": 8, + "entries": [{ "maxCount": 8, "name": "FarmableWheat", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "d5b08634-5c5d-4bc2-b6cd-74cb06132423", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [1232, 1604, 0], + "map": "Trammel", + "region": "A Carrot Field in Britain 2", + "count": 6, + "entries": [{ "maxCount": 6, "name": "FarmableCarrot", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "ab0cb920-b25f-4811-8ef6-938549dbfa27", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [4567, 1475, 0], + "map": "Trammel", + "region": "A Cotton Field in Moonglow", + "count": 8, + "entries": [{ "maxCount": 8, "name": "FarmableCotton", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "69dfbe70-b46c-42b0-9ff1-351fd9651884", + "name": "Spawner" + } +] diff --git a/Distribution/Data/Spawns/uoml/felucca/FelCropsLS.json b/Distribution/Data/Spawns/uoml/felucca/FelCropsLS.json new file mode 100644 index 000000000..2a31049f3 --- /dev/null +++ b/Distribution/Data/Spawns/uoml/felucca/FelCropsLS.json @@ -0,0 +1,290 @@ +[ + { + "type": "RegionSpawner", + "location": [375, 1191, 0], + "map": "Felucca", + "region": "A Wheatfield in Yew 2", + "count": 6, + "entries": [{ "maxCount": 6, "name": "FarmableWheat", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "bba64d97-11eb-4a87-b326-e41e3c9b355d", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [567, 1239, 0], + "map": "Felucca", + "region": "A Wheatfield in Yew 1", + "count": 5, + "entries": [{ "maxCount": 5, "name": "FarmableWheat", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "e37b4d74-c87e-4102-8c87-8f80c728fe0c", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [571, 1099, 0], + "map": "Felucca", + "region": "A Farm in Yew", + "count": 10, + "entries": [{ "maxCount": 10, "name": "Sheep", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "aed692cc-2dac-4c80-931b-35c73ca8d092", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [675, 939, 0], + "map": "Felucca", + "region": "A Field of Sheep in Yew 1", + "count": 10, + "entries": [{ "maxCount": 10, "name": "Sheep", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "425ac125-1597-41b4-9e6d-72b91801230b", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [675, 1179, 0], + "map": "Felucca", + "region": "A Field of Sheep in Yew 2", + "count": 10, + "entries": [{ "maxCount": 10, "name": "Sheep", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "3d7925bf-2642-4185-bc03-fa314fb75a7f", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [813, 2163, 0], + "map": "Felucca", + "region": "A Wheatfield in Skara Brae 1", + "count": 6, + "entries": [{ "maxCount": 6, "name": "FarmableWheat", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "57da6436-6b16-4697-add5-f4b45776ccbc", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [823, 2254, 0], + "map": "Felucca", + "region": "A Carrot Field in Skara Brae", + "count": 6, + "entries": [{ "maxCount": 6, "name": "FarmableCarrot", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "427451dd-93fa-43c9-85c6-01536066c8cc", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [823, 2264, 0], + "map": "Felucca", + "region": "An Onion Field in Skara Brae", + "count": 6, + "entries": [{ "maxCount": 6, "name": "FarmableOnion", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "640fe3f8-9917-4dfa-986d-038923163add", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [823, 2264, 0], + "map": "Felucca", + "region": "A Cabbage Field in Skara Brae 1", + "count": 6, + "entries": [{ "maxCount": 6, "name": "FarmableCabbage", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "f4bccdc2-c663-4ccd-b7df-31656fa2ae09", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [823, 2274, 0], + "map": "Felucca", + "region": "A Cabbage Field in Skara Brae 2", + "count": 6, + "entries": [{ "maxCount": 6, "name": "FarmableCabbage", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "0c48edf9-a88e-45f1-9ba3-cd8c919aefbc", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [823, 2355, 0], + "map": "Felucca", + "region": "A Cotton Field in Skara Brae", + "count": 6, + "entries": [{ "maxCount": 6, "name": "FarmableCotton", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "e7b34039-ec1f-43c8-b64f-d7462ce7ae9d", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [843, 2352, 0], + "map": "Felucca", + "region": "A Wheatfield in Skara Brae 2", + "count": 6, + "entries": [{ "maxCount": 6, "name": "FarmableWheat", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "2bf378f0-77ed-44cd-8dfb-181d068f401e", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [1120, 1624, 0], + "map": "Felucca", + "region": "A Wheatfield in Britain 4", + "count": 8, + "entries": [{ "maxCount": 8, "name": "FarmableWheat", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "e6a4aede-5a76-473d-8331-4bb73701ea1a", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [1135, 1791, 0], + "map": "Felucca", + "region": "A Wheatfield in Britain 1", + "count": 8, + "entries": [{ "maxCount": 8, "name": "FarmableWheat", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "b29b54ab-5ae3-4ce3-93ac-326f324a34f6", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [1152, 1576, 0], + "map": "Felucca", + "region": "A Wheatfield in Britain 5", + "count": 8, + "entries": [{ "maxCount": 8, "name": "FarmableWheat", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "e416e9fa-5a9a-426b-962e-50cdce64ca7f", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [1183, 1683, 0], + "map": "Felucca", + "region": "A Cabbage Field in Britain 1", + "count": 8, + "entries": [{ "maxCount": 8, "name": "FarmableCabbage", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "8536c19c-2036-495a-a3c5-e82c9f32f5ad", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [1199, 1683, 0], + "map": "Felucca", + "region": "A Turnip Field in Britain 1", + "count": 8, + "entries": [{ "maxCount": 8, "name": "FarmableTurnip", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "d8a2e54e-4951-468f-93c5-376460070cba", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [1199, 1823, 0], + "map": "Felucca", + "region": "A Wheatfield in Britain 2", + "count": 8, + "entries": [{ "maxCount": 8, "name": "FarmableWheat", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "58b14343-2032-4507-a913-6b536507c2e5", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [1215, 1723, 0], + "map": "Felucca", + "region": "A Carrot Field in Britain 1", + "count": 8, + "entries": [{ "maxCount": 8, "name": "FarmableCarrot", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "9805ef58-355f-4352-bfc4-43c6710ff409", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [1216, 1604, 0], + "map": "Felucca", + "region": "A Turnip Field in Britain 2", + "count": 6, + "entries": [{ "maxCount": 6, "name": "FarmableTurnip", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "0c6481ab-3341-4113-ac1a-6523c19c881d", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [1231, 1723, 0], + "map": "Felucca", + "region": "An Onion Field in Britain 1", + "count": 8, + "entries": [{ "maxCount": 8, "name": "FarmableOnion", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "57f955bb-49e1-4a66-a214-4fbddf8d572b", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [1231, 1887, 0], + "map": "Felucca", + "region": "A Wheatfield in Britain 3", + "count": 8, + "entries": [{ "maxCount": 8, "name": "FarmableWheat", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "f68b6bc8-f822-4c7a-9d01-37fad25bc95b", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [1232, 1604, 0], + "map": "Felucca", + "region": "A Carrot Field in Britain 2", + "count": 6, + "entries": [{ "maxCount": 6, "name": "FarmableCarrot", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "7b09d4b5-fe63-4f95-8525-3c970c513adc", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [4567, 1475, 0], + "map": "Felucca", + "region": "A Cotton Field in Moonglow", + "count": 8, + "entries": [{ "maxCount": 8, "name": "FarmableCotton", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "4b4e3973-d836-4f7c-b9f7-5fb7d468da28", + "name": "Spawner" + } +] diff --git a/Distribution/Data/Spawns/uoml/trammel/TramCropsLS.json b/Distribution/Data/Spawns/uoml/trammel/TramCropsLS.json new file mode 100644 index 000000000..ba95364c1 --- /dev/null +++ b/Distribution/Data/Spawns/uoml/trammel/TramCropsLS.json @@ -0,0 +1,290 @@ +[ + { + "type": "RegionSpawner", + "location": [375, 1191, 0], + "map": "Trammel", + "region": "A Wheatfield in Yew 2", + "count": 6, + "entries": [{ "maxCount": 6, "name": "FarmableWheat", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "fb826650-9fad-43ff-8ba1-9d848f1f26c5", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [567, 1239, 0], + "map": "Trammel", + "region": "A Wheatfield in Yew 1", + "count": 5, + "entries": [{ "maxCount": 5, "name": "FarmableWheat", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "79af53a5-33e2-4fdb-95dd-278a050e54fc", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [571, 1099, 0], + "map": "Trammel", + "region": "A Farm in Yew", + "count": 10, + "entries": [{ "maxCount": 10, "name": "Sheep", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "8408baaa-0de1-4cb0-ad89-973782e3a565", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [675, 939, 0], + "map": "Trammel", + "region": "A Field of Sheep in Yew 1", + "count": 10, + "entries": [{ "maxCount": 10, "name": "Sheep", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "b17f2f9c-9d36-4bea-87db-69f8effc4926", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [675, 1179, 0], + "map": "Trammel", + "region": "A Field of Sheep in Yew 2", + "count": 10, + "entries": [{ "maxCount": 10, "name": "Sheep", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "690ccc1c-2ac8-4f05-8066-695aa53c98aa", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [813, 2163, 0], + "map": "Trammel", + "region": "A Wheatfield in Skara Brae 1", + "count": 6, + "entries": [{ "maxCount": 6, "name": "FarmableWheat", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "ee6692af-82cf-477e-96ec-375be7a23db9", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [823, 2254, 0], + "map": "Trammel", + "region": "A Carrot Field in Skara Brae", + "count": 6, + "entries": [{ "maxCount": 6, "name": "FarmableCarrot", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "c052a5e0-493d-483e-a98a-665cf05c5c14", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [823, 2264, 0], + "map": "Trammel", + "region": "An Onion Field in Skara Brae", + "count": 6, + "entries": [{ "maxCount": 6, "name": "FarmableOnion", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "41a583ac-749c-40a7-8658-fb3deb1b222a", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [823, 2264, 0], + "map": "Trammel", + "region": "A Cabbage Field in Skara Brae 1", + "count": 6, + "entries": [{ "maxCount": 6, "name": "FarmableCabbage", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "df4c5918-b490-4257-9aeb-541b44980b27", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [823, 2274, 0], + "map": "Trammel", + "region": "A Cabbage Field in Skara Brae 2", + "count": 6, + "entries": [{ "maxCount": 6, "name": "FarmableCabbage", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "1025906e-047c-460b-9bb8-581f57ff1357", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [823, 2355, 0], + "map": "Trammel", + "region": "A Cotton Field in Skara Brae", + "count": 6, + "entries": [{ "maxCount": 6, "name": "FarmableCotton", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "185e475b-36cf-4dad-8776-537e84b15e42", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [843, 2352, 0], + "map": "Trammel", + "region": "A Wheatfield in Skara Brae 2", + "count": 6, + "entries": [{ "maxCount": 6, "name": "FarmableWheat", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "59e99d3b-b727-491b-b0f3-03a441b10c04", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [1120, 1624, 0], + "map": "Trammel", + "region": "A Wheatfield in Britain 4", + "count": 8, + "entries": [{ "maxCount": 8, "name": "FarmableWheat", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "85cc6fca-4f66-4428-aa3a-347a88523a4b", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [1135, 1791, 0], + "map": "Trammel", + "region": "A Wheatfield in Britain 1", + "count": 8, + "entries": [{ "maxCount": 8, "name": "FarmableWheat", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "afdfec82-dac3-43df-bd7b-cd2cfad5f265", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [1152, 1576, 0], + "map": "Trammel", + "region": "A Wheatfield in Britain 5", + "count": 8, + "entries": [{ "maxCount": 8, "name": "FarmableWheat", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "34b0579c-1fc6-4868-82c5-09138c5e5878", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [1183, 1683, 0], + "map": "Trammel", + "region": "A Cabbage Field in Britain 1", + "count": 8, + "entries": [{ "maxCount": 8, "name": "FarmableCabbage", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "997d9ff5-ad2b-421b-ae76-6794e7e88150", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [1199, 1683, 0], + "map": "Trammel", + "region": "A Turnip Field in Britain 1", + "count": 8, + "entries": [{ "maxCount": 8, "name": "FarmableTurnip", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "bfb677f7-e824-46f6-95ef-ee5602f4f9c3", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [1199, 1823, 0], + "map": "Trammel", + "region": "A Wheatfield in Britain 2", + "count": 8, + "entries": [{ "maxCount": 8, "name": "FarmableWheat", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "c42ef172-78c8-4c5e-b26c-fcc3fc3da1cc", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [1215, 1723, 0], + "map": "Trammel", + "region": "A Carrot Field in Britain 1", + "count": 8, + "entries": [{ "maxCount": 8, "name": "FarmableCarrot", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "57551e80-0018-4fcf-8b83-9d39ef19b0a6", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [1216, 1604, 0], + "map": "Trammel", + "region": "A Turnip Field in Britain 2", + "count": 6, + "entries": [{ "maxCount": 6, "name": "FarmableTurnip", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "0da29e36-7bff-4fcf-803d-79dd16212653", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [1231, 1723, 0], + "map": "Trammel", + "region": "An Onion Field in Britain 1", + "count": 8, + "entries": [{ "maxCount": 8, "name": "FarmableOnion", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "4656ad9d-a455-4217-9316-ec10d10cf68c", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [1231, 1887, 0], + "map": "Trammel", + "region": "A Wheatfield in Britain 3", + "count": 8, + "entries": [{ "maxCount": 8, "name": "FarmableWheat", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "d5b08634-5c5d-4bc2-b6cd-74cb06132423", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [1232, 1604, 0], + "map": "Trammel", + "region": "A Carrot Field in Britain 2", + "count": 6, + "entries": [{ "maxCount": 6, "name": "FarmableCarrot", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "ab0cb920-b25f-4811-8ef6-938549dbfa27", + "name": "Spawner" + }, + { + "type": "RegionSpawner", + "location": [4567, 1475, 0], + "map": "Trammel", + "region": "A Cotton Field in Moonglow", + "count": 8, + "entries": [{ "maxCount": 8, "name": "FarmableCotton", "probability": 100 }], + "minDelay": "00:00:10", + "maxDelay": "00:00:30", + "guid": "69dfbe70-b46c-42b0-9ff1-351fd9651884", + "name": "Spawner" + } +] diff --git a/Projects/Server/Items/Containers.cs b/Projects/Server/Items/Containers.cs index a7d905e32..e436b78c0 100644 --- a/Projects/Server/Items/Containers.cs +++ b/Projects/Server/Items/Containers.cs @@ -113,6 +113,18 @@ public class BankBox : Container (from == Owner && Opened || from.AccessLevel >= AccessLevel.GameMaster) && base.OnDragDropInto(from, item, p); + public override bool CheckHold(Mobile m, Item item, bool message, bool checkItems, int plusItems, int plusWeight) + { + // This is a horrible hack. + // TODO: Refactor this by moving BankBox out of the core. + if (AccountGold.Enabled && AccountGold.ConvertOnBank && item.GetType().Name is "Gold" or "BankCheck") + { + return true; + } + + return base.CheckHold(m, item, message, checkItems, plusItems, plusWeight); + } + public override int GetTotal(TotalType type) { if (AccountGold.Enabled && Owner?.Account != null && type == TotalType.Gold) diff --git a/Projects/UOContent/Items/Skill Items/Magical/Potions/Explosion Potions/BaseExplosionPotion.cs b/Projects/UOContent/Items/Skill Items/Magical/Potions/Explosion Potions/BaseExplosionPotion.cs index 586c6a40d..928fb9bc1 100644 --- a/Projects/UOContent/Items/Skill Items/Magical/Potions/Explosion Potions/BaseExplosionPotion.cs +++ b/Projects/UOContent/Items/Skill Items/Magical/Potions/Explosion Potions/BaseExplosionPotion.cs @@ -294,8 +294,15 @@ public abstract partial class BaseExplosionPotion : BasePotion } var parent = _potion.FindParent(_from); + var remainingCount = RemainingCount - 1; - if (RemainingCount == 0) + if (remainingCount > 3) + { + return; + } + + // Remaining decrements after OnTick so it is off by 1 + if (remainingCount <= 0) { Point3D loc; Map map; @@ -317,16 +324,13 @@ public abstract partial class BaseExplosionPotion : BasePotion _potion.Explode(_from, true, loc, map); } - else if (RemainingCount <= 3) + else if (parent is Item item) { - if (parent is Item item) - { - item.PublicOverheadMessage(MessageType.Regular, 0x22, false, RemainingCount.ToString()); - } - else if (parent is Mobile mobile) - { - mobile.PublicOverheadMessage(MessageType.Regular, 0x22, false, RemainingCount.ToString()); - } + item.PublicOverheadMessage(MessageType.Regular, 0x22, false, remainingCount.ToString()); + } + else if (parent is Mobile mobile) + { + mobile.PublicOverheadMessage(MessageType.Regular, 0x22, false, remainingCount.ToString()); } } } diff --git a/Projects/UOContent/Mobiles/Abilities/MonsterAbilitySingleTargetDoT.cs b/Projects/UOContent/Mobiles/Abilities/MonsterAbilitySingleTargetDoT.cs index 290ae42b0..a7e59dfd9 100644 --- a/Projects/UOContent/Mobiles/Abilities/MonsterAbilitySingleTargetDoT.cs +++ b/Projects/UOContent/Mobiles/Abilities/MonsterAbilitySingleTargetDoT.cs @@ -62,14 +62,15 @@ public abstract class MonsterAbilitySingleTargetDoT : MonsterAbilitySingleTarget protected override void OnTick() { - var delay = RemainingCount == 0 + var delay = RemainingCount <= 1 ? TimeSpan.MinValue : Utility.RandomMinMax(_ability.MinDelay, _ability.MaxDelay); _ability.EffectTick(_source, _defender, ref delay); Interval = delay; - if (RemainingCount == 0) + // Remaining decrements after OnTick so it is off by 1 + if (RemainingCount <= 1) { _ability.RemoveEffect(_source, _defender); _ability.OnEffectExpired(_source, _defender); diff --git a/Projects/UOContent/Mobiles/BaseCreature.cs b/Projects/UOContent/Mobiles/BaseCreature.cs index 5ba9d01c6..dc7e91ceb 100644 --- a/Projects/UOContent/Mobiles/BaseCreature.cs +++ b/Projects/UOContent/Mobiles/BaseCreature.cs @@ -278,7 +278,7 @@ namespace Server.Mobiles private bool m_bTamable; private int m_ColdResistance; - private bool m_Controlled; // Is controlled + private bool _controlled; // Is controlled private Mobile m_ControlMaster; // My master private OrderType m_ControlOrder; // My order @@ -370,7 +370,7 @@ namespace Server.Mobiles Debug = false; - m_Controlled = false; + _controlled = false; m_ControlMaster = null; ControlTarget = null; m_ControlOrder = OrderType.None; @@ -749,15 +749,15 @@ namespace Server.Mobiles [CommandProperty(AccessLevel.GameMaster)] public bool Controlled { - get => m_Controlled; + get => _controlled; set { - if (m_Controlled == value) + if (_controlled == value) { return; } - m_Controlled = value; + _controlled = value; Delta(MobileDelta.Noto); InvalidateProperties(); @@ -1353,24 +1353,23 @@ namespace Server.Mobiles return false; } - if (FightMode == FightMode.Evil && m.Karma < 0 || c.FightMode == FightMode.Evil && Karma < 0) + if (m_Team != c.Team || FightMode == FightMode.Evil && m.Karma < 0 || c.FightMode == FightMode.Evil && Karma < 0) { return true; } - if (m_Team != c.Team) + var master = GetMaster(); + var cMaster = c.GetMaster(); + + if (master == null) { - return true; + // Non-summons will attack summons of non-NPCs + return cMaster != null && cMaster is not BaseCreature; } - var targetControlled = c._summoned || c.m_Controlled; - - if (_summoned || m_Controlled) - { - return targetControlled || c.IsEnemy(GetMaster()); - } - - return targetControlled && IsEnemy(c.GetMaster()); + // Summons will attack others summons, if they are enemies with their master + // Pets will attack non-summons, but not other summons (legacy logic) + return (master as BaseCreature)?.IsEnemy(cMaster ?? m) ?? cMaster == null; } public override string ApplyNameSuffix(string suffix) @@ -1871,7 +1870,7 @@ namespace Server.Mobiles // Version 2 writer.Write((int)FightMode); - writer.Write(m_Controlled); + writer.Write(_controlled); writer.Write(m_ControlMaster); writer.Write(ControlTarget); writer.Write(ControlDest); @@ -2021,7 +2020,7 @@ namespace Server.Mobiles { FightMode = (FightMode)reader.ReadInt(); - m_Controlled = reader.ReadBool(); + _controlled = reader.ReadBool(); m_ControlMaster = reader.ReadEntity(); ControlTarget = reader.ReadEntity(); ControlDest = reader.ReadPoint3D(); @@ -2049,7 +2048,7 @@ namespace Server.Mobiles { FightMode = FightMode.Closest; - m_Controlled = false; + _controlled = false; m_ControlMaster = null; ControlTarget = null; m_ControlOrder = OrderType.None; @@ -2517,7 +2516,7 @@ namespace Server.Mobiles } } - if (aggressor.ChangingCombatant && (m_Controlled || _summoned) && + if (aggressor.ChangingCombatant && (_controlled || _summoned) && (ct == OrderType.Come || !Core.ML && ct == OrderType.Stay || ct is OrderType.Stop or OrderType.None or OrderType.Follow)) { ControlTarget = aggressor; @@ -2561,7 +2560,7 @@ namespace Server.Mobiles AIObject?.GetContextMenuEntries(from, ref list); } - if (m_bTamable && !m_Controlled && from.Alive) + if (m_bTamable && !_controlled && from.Alive) { list.Add(new TameEntry(from.Female ? AllowFemaleTamer : AllowMaleTamer)); } @@ -3748,7 +3747,7 @@ namespace Server.Mobiles return BardMaster; } - if (m_Controlled && m_ControlMaster != null) + if (_controlled && m_ControlMaster != null) { return m_ControlMaster; } @@ -4117,7 +4116,7 @@ namespace Server.Mobiles public virtual bool IsFriend(Mobile m) => OppositionGroup?.IsEnemy(this, m) != true && m is BaseCreature c && m_Team == c.m_Team - && (_summoned || m_Controlled) == (c._summoned || c.m_Controlled); + && (_summoned || _controlled) == (c._summoned || c._controlled); public virtual Allegiance GetFactionAllegiance(Mobile mob) { @@ -4312,12 +4311,15 @@ namespace Server.Mobiles } else if (m_Loyalty < MaxLoyalty) { - // 50% chance to increase 10 loyalty per food - m_Loyalty = Math.Min(MaxLoyalty, Utility.CoinFlips(amount, MaxLoyaltyIncrease) * 10); - } + // Calculate the loyalty increase + int loyaltyIncrease = Utility.CoinFlips(amount, MaxLoyaltyIncrease) * 10; - // looks like in OSI pets say they are happier even if they are at maximum loyalty - SayTo(from, 502060); // Your pet looks happier. + if (loyaltyIncrease > 0) // Only update if there's an actual increase + { + m_Loyalty = Math.Min(MaxLoyalty, m_Loyalty + loyaltyIncrease); + SayTo(from, 502060); // Your pet looks happier. + } + } if (Body.IsAnimal) {