About this mod
Converts the graveyard block in various cities to their 'visitable' equivalents and adds a small generic dungeon to said blocks.
- Permissions and credits
- Changelogs
It makes all graveyards in the affected cities visitable by adding a small generic dungeon to each (same little dungeon M0000005.RDB). They do all have unique LocationIDs (as they would have to regardless) and thus should be great for someone to create a set of local quests asking for the dungeon to be cleared.
Question: Why the **** did you include all of the below info?? It was a bit of a learning curve to make these changes and at first seemed daunting but it surprisingly wasn't. The DFU team has done an excellent job of making the game's resources available to modders. I come from the Skyrim modding community so this was quite alien to me but wasn't difficult at all. Hopefully this info will help someone get involved!
It seems to be working fine in my testing. It consists of json files for 315 towns that are modified. The 315 towns were selected by using the console commands shown here under the "Console data dump commands" section. The blocks in question are:
GRVEAM01.RMB
GRVEAM02.RMB
GRVEAM03.RMB
GRVEAM04.RMB
GRVEAM05.RMB
GRVEAM06.RMB
GRVEAM07.RMB
GRVEAM08.RMB
GRVEAM09.RMB
GRVEAM10.RMB
GRVEAM11.RMB
GRVEAM12.RMB
GRVEAM13.RMB
GRVEAM14.RMB
GRVEAM15.RMB
GRVEAM16.RMB
GRVEAM17.RMB
GRVEAM18.RMB
GRVEAM19.RMB
GRVEAM20.RMB
GRVEAM21.RMB
GRVEAM22.RMB
GRVEAM23.RMB
GRVEAM24.RMB
GRVEAM25.RMB
GRVEAM26.RMB
GRVEAM27.RMB
GRVEAM28.RMB
GRVEAM29.RMB
GRVEAM30.RMB
GRVEAM31.RMB
GRVEAM32.RMB
GRVEAM33.RMB
GRVEAM34.RMB
GRVEAM35.RMB
GRVEAM36.RMB
GRVEAM37.RMB
GRVEAM38.RMB
GRVEAM39.RMB
GRVEAM40.RMB
GRVEAM41.RMB
GRVEAM42.RMB
GRVEAM43.RMB
GRVEAM44.RMB
These were replaced with their GRVEAS##.RMB versions which contain entrances (I was taught by Discord users that "AS" versions of graveyard blocks are 'enterable' version of the AM blocks).
These commands dumped the locations:
dumplocblocks GRVEAM10.RMB GRVEAM11.RMB GRVEAM12.RMB GRVEAM13.RMB GRVEAM14.RMB GRVEAM15.RMB GRVEAM16.RMB GRVEAM17.RMB GRVEAM18.RMB GRVEAM19.RMB
dumplocblocks GRVEAM20.RMB GRVEAM21.RMB GRVEAM22.RMB GRVEAM23.RMB GRVEAM24.RMB GRVEAM25.RMB GRVEAM26.RMB GRVEAM27.RMB GRVEAM28.RMB GRVEAM29.RMB
dumplocblocks GRVEAM30.RMB GRVEAM31.RMB GRVEAM32.RMB GRVEAM33.RMB GRVEAM34.RMB GRVEAM35.RMB GRVEAM36.RMB GRVEAM37.RMB GRVEAM38.RMB GRVEAM39.RMB
dumplocblocks GRVEAM40.RMB GRVEAM41.RMB GRVEAM42.RMB GRVEAM43.RMB GRVEAM44.RMB
I merged those lists to create a single list. The towns that are edited are:
"Alik'r Desert": [
"Mesopada",
"Bi-Korom"
],
"Dragontail Mountains": [
"Tulaajsia",
"Jalilli-Korom",
"Osumbaweyn"
],
"Dwynnen": [
"Longwood",
"Ipsbury",
"Upham",
"Longtry",
"Tundale",
"Horbury",
"Tambury",
"Longbrone",
"Aldwood",
"Baelmarket Moor",
"Lambridge",
"Chestercroft"
],
"Isle of Balfiera": [
"Upvale",
"Blackhead"
],
"Dak'fron": [
"Osettuja"
],
"Wrothgarian Mountains": [
"Baeltower",
"Uppath",
"Holbridge",
"Reyway Derry",
"Broadmont Heath",
"Waridge Hamlet",
"Knightswych",
"Charenmore",
"Singwall",
"Kirkcester",
"Whitetry",
"Burgton",
"Penhope Garden",
"Longwych",
"Sington",
"Blacktale",
"Singing",
"Crossley",
"Whitebury",
"Vanwick",
"Tunfort",
"Galloford Garden",
"Ripcroft Hall",
"Riptry",
"Singwick",
"Ipsfort",
"Fontpath"
],
"Daggerfall": [
"Horcroft",
"Crossmarket",
"Blackwold",
"Blackmore",
"Ipsmont",
"Aldfort Hill",
"Pentale Commons",
"Midbeth",
"Oxwick ",
"Ripidge",
"Horcester",
"Burgtale",
"Longbury",
"Holtry Hollow",
"Aldingwich",
"Fontbury",
"Deering Borough",
"Gothton End",
"Oxwich",
"Whiteborne",
"Rippath Heath",
"Broadfort",
"Longwark",
"Oxville",
"Vancroft Wood",
"Burgtry Commons",
"Baelbridge",
"Grimwood",
"Aldingford",
"Gothway Garden",
"Newtower",
"Ripleigh",
"Tunmoth",
"Aldingwark Wood",
"Tamwick",
"Grimhope",
"Waridge Moor",
"Cromwell",
"Whitecroft",
"Vanvale",
"Eastbridge",
"Gothwick"
],
"Glenpoint": [
"Hortower Derry",
"Aldington",
"Ripfort",
"Charford",
"Wilderwell"
],
"Betony": [],
"Sentinel": [
"Isfakabi",
"Makodisu",
"Rhaneraza",
"Bohaweyn",
"Cudena-Hassi",
"Elilabi",
"Cudehjet",
"Cudirius",
"Bemitor",
"Akhulah",
"Bubopada",
"Ramirirana",
"Khajinria",
"Horia",
"Berbinbia"
],
"Anticlere": [
"Mertry",
"Lamwood Moor",
"Penvale",
"Aldingtry",
"Baelwich",
"Ipsshire Hall",
"Baeldale",
"Kirkmont",
"Eastbury",
"Whitewood",
"Tamtower",
"Wildertale",
"Aldingtown",
"Aldbrone",
"Ipscart",
"Stokton"
],
"Lainlyn": [
"Kaloninis",
"Baghurana",
"Berbodax",
"Agewan",
"Mogadax",
"Pythakanis",
"Tulaunnua",
"Zagohala",
"Issaquplex",
"Lajla"
],
"Wayrest": [
"Grimdale Moor",
"Burgcart",
"Midwall Borough",
"Eastgate End",
"Burglech",
"Ripwick Garden",
"Broadcester",
"Fontgate Hollow",
"Cathlech",
"Deerlech",
"Cromwick Hamlet",
"Oxworth Hill",
"Crommoth Garden",
"Aldingshire",
"Tunmarket",
"Broadborne",
"Arkwold Court",
"Aldingwych Court",
"Chargate",
"Baelcroft",
"Tunbury",
"Uphead Hill",
"Aldingmarket Field",
"Graybrugh",
"Arkidge",
"Broadwood",
"Longgate",
"Charenidge",
"Arkshire",
"Cathway Derry",
"Ipsdale",
"Reybrugh Minster",
"Tamwell"
],
"Orsinium Area": [],
"High Rock sea coast": [],
"Northmoor": [
"Knightsville Heath",
"Oxdale Derry",
"Deercroft Minster",
"Westley",
"Knightshope",
"Gothmont",
"Lammore",
"Kirktower",
"Baelwell",
"Arkbridge Wood",
"Pencester",
"Midleigh",
"Baeltale",
"Burgmoth"
],
"Menevia": [
"Longford",
"Galloley",
"Longbury Hollow",
"Tamgate End",
"Hortry"
],
"Alcaire": [
"Stokwood",
"Reyborne",
"Westwych"
],
"Koegria": [
"Knightsley"
],
"Bhoriane": [
"Stokbrone",
"Riping",
"Burgvale",
"Aldingmarket",
"Wilderleigh"
],
"Kambria": [
"Burgbrugh",
"Aldbury",
"Arkley",
"Upway",
"Vanton",
"Gothwich"
],
"Phrygias": [
"Newwold",
"Whitevale",
"Upleigh",
"Ripmoth",
"Blackbrugh Field",
"Deerford",
"Aldingfort",
"Vantower",
"Broadshire"
],
"Urvaius": [
"Ipsbrone",
"Ripcastle Wood",
"Burgwych",
"Fontwell Court",
"Wilderbrone",
"Ripbury"
],
"Ykalon": [
"Warhead",
"Arkwall",
"Deercroft",
"Tunhope",
"Gallobrone",
"Vanham",
"Tunford Wood",
"Lamtower",
"Gothley",
"Charhead"
],
"Daenia": [
"Chestermont",
"Charencastle"
],
"Shalgora": [],
"Abibon-Gora": [
"Umbaus",
"Ramoparia",
"Rhaniriza",
"Umbelibu",
"Akhyrybu"
],
"Kairou": [
"Khajoasa",
"Syrissibia"
],
"Pothago": [
"Rhogunnu-Kom"
],
"Myrkwasa": [
"Lerawan"
],
"Ayasofya": [
"Cerohadata",
"Rhogotu-Hassi",
"Cudjireg"
],
"Tigonus": [
"Isfissius",
"Millitor",
"Agerabi",
"Issaqiia",
"Jalahao",
"Umbunia",
"Rhogilah",
"Berbelijet"
],
"Kozanset": [
"Bubehda",
"Ramakawan"
],
"Satakalaam": [
"Rameralah",
"Cudahasa"
],
"Totambu": [
"Pythyryisa",
"Mogubi",
"Sedoplex",
"Rhogunnu-Gora",
"Papehzar",
"Moraaqza",
"Rhanoccoara",
"Lyryno",
"Rhanereg",
"Hibusa",
"Tasehan",
"Damuthuplex",
"Syroni-Ij",
"Atroccodisu",
"Umbindax",
"Syrakaplex",
"Pythajdai",
"Papibu",
"Isfeho"
],
"Mournoth": [
"Ceradbu",
"Eluhkat",
"Pheonandada",
"Berberaplex",
"Antelettuisa",
"Zenopakat",
"Issaqujer",
"Umbajweyn",
"Ramala",
"Gysinla",
"Bubjinis",
"Mesirija"
],
"Ephesus": [
"Ramoguwan"
],
"Santaki": [
"Tasaaqara"
],
"Antiphyllos": [
"Tulaedax",
"Tulaogubia",
"Ha-Thar"
],
"Bergama": [
"Pythadjer",
"Pythallaga",
"Javilareg"
],
"Gavaudon": [],
"Tulune": [
"Aldborne",
"Longhead End",
"Baelcroft Heath",
"Mermore",
"Knightspath"
],
"Glenumbra Moors": [
"Whitegate"
],
"Ilessan Hills": [
"Upbrone",
"Baelham",
"Cathford Moor",
"Riptale",
"Newbrugh",
"Crosspath",
"Knightsbeth",
"Blackmont",
"Stokwold",
"Fontwych",
"Lammore Commons",
"Reycroft",
"Oxtower",
"Singley",
"Eastlech",
"Burging",
"Lammarket"
],
"Cybiades": []
}
Didn't know of any other way to do it and no other solutions were presented so I fast traveled to each city and then used the "dumplocation" console command which output the following files to C:\Users\[my userid]\AppData\LocalLow\Daggerfall Workshop\Daggerfall Unity.
location-0-263.json
location-1-602.json
location-1-658.json
location-1-677.json
location-11-3.json
location-16-1029.json
location-16-1037.json
location-16-1159.json
location-16-1165.json
location-16-1181.json
location-16-1217.json
location-16-1300.json
location-16-1348.json
location-16-1392.json
location-16-1440.json
location-16-1472.json
location-16-1570.json
location-16-1607.json
location-16-1626.json
location-16-1644.json
location-16-170.json
location-16-212.json
location-16-255.json
location-16-401.json
location-16-410.json
location-16-466.json
location-16-529.json
location-16-549.json
location-16-644.json
location-16-687.json
location-16-943.json
location-16-997.json
location-17-1023.json
location-17-106.json
location-17-1080.json
location-17-1086.json
location-17-1094.json
location-17-1115.json
location-17-1252.json
location-17-1287.json
location-17-129.json
location-17-1293.json
location-17-1308.json
location-17-139.json
location-17-160.json
location-17-161.json
location-17-178.json
location-17-184.json
location-17-188.json
location-17-197.json
location-17-286.json
location-17-294.json
location-17-298.json
location-17-312.json
location-17-328.json
location-17-335.json
location-17-392.json
location-17-412.json
location-17-414.json
location-17-443.json
location-17-457.json
location-17-469.json
location-17-482.json
location-17-507.json
location-17-599.json
location-17-6.json
location-17-654.json
location-17-704.json
location-17-71.json
location-17-839.json
location-17-853.json
location-17-944.json
location-17-966.json
location-17-996.json
location-18-191.json
location-18-213.json
location-18-346.json
location-18-410.json
location-18-63.json
location-20-110.json
location-20-130.json
location-20-166.json
location-20-171.json
location-20-180.json
location-20-220.json
location-20-24.json
location-20-260.json
location-20-27.json
location-20-341.json
location-20-367.json
location-20-393.json
location-20-477.json
location-20-90.json
location-20-99.json
location-21-231.json
location-21-267.json
location-21-274.json
location-21-331.json
location-21-335.json
location-21-407.json
location-21-42.json
location-21-432.json
location-21-5.json
location-21-509.json
location-21-576.json
location-21-596.json
location-21-598.json
location-21-620.json
location-21-689.json
location-21-714.json
location-22-133.json
location-22-156.json
location-22-203.json
location-22-205.json
location-22-224.json
location-22-235.json
location-22-288.json
location-22-297.json
location-22-358.json
location-22-78.json
location-23-10.json
location-23-152.json
location-23-157.json
location-23-171.json
location-23-188.json
location-23-196.json
location-23-214.json
location-23-253.json
location-23-28.json
location-23-304.json
location-23-351.json
location-23-374.json
location-23-398.json
location-23-406.json
location-23-412.json
location-23-417.json
location-23-431.json
location-23-474.json
location-23-486.json
location-23-520.json
location-23-557.json
location-23-586.json
location-23-666.json
location-23-693.json
location-23-751.json
location-23-765.json
location-23-766.json
location-23-771.json
location-23-772.json
location-23-774.json
location-23-78.json
location-23-783.json
location-23-94.json
location-32-116.json
location-32-12.json
location-32-120.json
location-32-135.json
location-32-146.json
location-32-183.json
location-32-253.json
location-32-264.json
location-32-279.json
location-32-299.json
location-32-325.json
location-32-346.json
location-32-357.json
location-32-4.json
location-33-119.json
location-33-121.json
location-33-157.json
location-33-163.json
location-33-92.json
location-34-54.json
location-34-61.json
location-34-89.json
location-35-21.json
location-36-165.json
location-36-176.json
location-36-32.json
location-36-95.json
location-36-96.json
location-37-225.json
location-37-267.json
location-37-304.json
location-37-58.json
location-37-76.json
location-37-82.json
location-38-109.json
location-38-126.json
location-38-171.json
location-38-176.json
location-38-18.json
location-38-32.json
location-38-44.json
location-38-68.json
location-38-8.json
location-39-122.json
location-39-143.json
location-39-188.json
location-39-229.json
location-39-249.json
location-39-277.json
location-40-177.json
location-40-190.json
location-40-210.json
location-40-216.json
location-40-277.json
location-40-331.json
location-40-407.json
location-40-413.json
location-40-42.json
location-40-428.json
location-41-125.json
location-41-141.json
location-43-139.json
location-43-149.json
location-43-218.json
location-43-225.json
location-43-71.json
location-44-108.json
location-44-57.json
location-45-33.json
location-46-62.json
location-47-130.json
location-47-89.json
location-47-96.json
location-48-103.json
location-48-118.json
location-48-170.json
location-48-226.json
location-48-260.json
location-48-288.json
location-48-293.json
location-48-41.json
location-49-0.json
location-49-48.json
location-5-166.json
location-5-258.json
location-5-280.json
location-5-355.json
location-5-396.json
location-5-440.json
location-5-451.json
location-5-49.json
location-5-564.json
location-5-583.json
location-5-597.json
location-5-702.json
location-50-64.json
location-50-69.json
location-51-107.json
location-51-138.json
location-51-21.json
location-51-218.json
location-51-26.json
location-51-339.json
location-51-353.json
location-51-369.json
location-51-420.json
location-51-444.json
location-51-506.json
location-51-519.json
location-51-534.json
location-51-582.json
location-51-591.json
location-51-620.json
location-51-686.json
location-51-690.json
location-51-879.json
location-52-146.json
location-52-184.json
location-52-198.json
location-52-223.json
location-52-242.json
location-52-244.json
location-52-277.json
location-52-322.json
location-52-361.json
location-52-47.json
location-52-68.json
location-52-89.json
location-53-18.json
location-54-31.json
location-55-15.json
location-55-43.json
location-55-44.json
location-56-3.json
location-56-33.json
location-56-47.json
location-58-124.json
location-58-18.json
location-58-41.json
location-58-43.json
location-58-69.json
location-59-142.json
location-60-1.json
location-60-128.json
location-60-202.json
location-60-220.json
location-60-221.json
location-60-223.json
location-60-244.json
location-60-252.json
location-60-319.json
location-60-328.json
location-60-366.json
location-60-372.json
location-60-393.json
location-60-397.json
location-60-475.json
location-60-50.json
location-60-76.json
location-9-42.json
location-9-54.json
Used the following searches to replace data in the files that were output (I'm using Notepad++):
From:
To:
Change GRVEAM to GRVEAS (RDB Filename change)
"GRVEAM
"GRVEAS
Change NoDungeon to Cemetery - Not RegEx
"DungeonType": "NoDungeon",
"DungeonType": "Cemetery",
Change HasDungeon - Not RegEx
"HasDungeon": false,
"HasDungeon": true,
Add X coords - RegEx
( "Exterior": {.*?"X": )(.*?)(,\r\n.*)( "Dungeon": .*?"X": )0,$1$2$3$4$2,Add Y coords - TESTED( "Exterior": {.*?"Y": )(.*?)(,\r\n.*)( "Dungeon": .*?"Y": )0,
$1$2$3$4$2,
Change IsInterior to 1 - RegEx
( "Dungeon": {.*?"IsInterior":) .*?,
$1 1,
Copy LocationID to ExteriorID - RegEx
( "Exterior": {.*?"LocationId": )(.*?)(,\r\n.*)( "Dungeon": .*?"ExteriorLocationId": )0,
$1$2$3$4$2,
Copy Location Name to Dungeon Name - RegEx
({.*?"Name": ")(.*?)(",.*?"Dungeon": {.*?"LocationName": )null
$1$2$3"The Crypt of $2"
Set block count - RegEx
("Dungeon": {.*?"BlockCount":) 0
$1 1
Add Dungeon Blocks - RegEx
("Dungeon": {.*?"Blocks":) null
$1 [\n {\n "X": 0,\n "Z": 0,\n "IsStartingBlock": true,\n "BlockName": "M0000005.RDB",\n "WaterLevel": 0,\n "CastleBlock": false\n }\n ]
The LocationIDs used for the dungeons begin with 31000 and are part of a range of block of IDs from 31000-31999 that were reserved here: https://forums.dfworkshop.net/viewtopic.php?t=3023
This LocationID was used in the field:
"RecordElement": {
"Header": {
"X": 14757888,
"Y": 1189889,
"IsExterior": 0,
"Unknown2": 0,
"LocationId": ENTER IT HERE,
"IsInterior": 1,
"ExteriorLocationId": 28449,
"LocationName": "The Crypt of Mesopada"
}
},
COMPATIBILITY
I created this using v0.13.5 but per users in the Lysandus Tomb DFU Discord server it should be compatible with 0.14.3 as well!
If any of the towns listed above are modified by another mod then a patch would be necessary as either their change or this one will be overwritten. I'm not aware of those mods but I feel confident that they exist. Please let me know if any compatibility issues are found. It should give me an excellent opportunity to learn more!
INSTALLATION:
Best via Vortex, it's structured properly to deploy where it is supposed to go. Otherwise, unzip the file inside StreamingAssets/WorldData folder.
UNINSTALLATION
idk, please don't. I guess it won't matter necessarily but if you're in one of the dungeons it's obviously gonna be bad.
CREDIT
After asking about this concept I was directed to: Visitable Crypts. I downloaded this mod and compared its files with unmodified json files for the locations in question to gain a basic understanding of what needs to be changed but no other assets were used.
I got a LOT of help from various members of the DFU Lysandus's Tomb Discord server including, but not limited to, Hermän2000, Magicono43, Jehuty. Thanks to all of you!!