I haven't really stuffed it - of course I have a backup!
It's a good ol' worldmap.wmp question; I downloaded your weidu template and attempted to modify it to my needs but in truth, I don't really understand what's going on. I can see that my area has been added by using DLTCEP or NI, but when it's told to RevealAreaOnMap(<areaname>) it stays stubbornly hidden. In other words, I've shafted it.
Necessary info: area name is YSAR01 and it has two entrances, Exitne and Exite. For now, I'm quite happy to stay with your four links because in terms of my mod, they make sense. In the middle of your template there is a chunk of code relating to the Umar Hills, which I really, really couldn't make sense of why it was needed. Nor do I understand why the entrances to the area require three of the same (ARSC#A) and only one different (ARSC#E). For travelling to the new area, all four links currently need to come in to Exitne; I will add a link or two to Exite when I understand what's going on.
The bit you really don't want to see follows: my code:-
// Append mastarea.2da with the new area APPEND ~MASTAREA.2da~ ~YSAR01 value~ COPY_EXISTING ~worldmap.wmp~ ~override~ // Read offsets and stuff. READ_LONG 0x30 "area_num" READ_LONG 0x34 "area_off" READ_LONG 0x38 "link_off" READ_LONG 0x3c "link_num" READ_LONG 0xc "map_off" SET "entry" = ("%map_off%" + 0xb8) SET "outer_check" = 0 SET "inner_check" = 0 SET "num_ent" = 0 // New offsets WRITE_LONG 0x30 ("%area_num%" + 1) WRITE_LONG 0x38 ("%link_off%" + 0xf0) WRITE_LONG 0x3c ("%link_num%" + 4) // Add area to worldmap INSERT_BYTES ("%area_off%" + (0xf0 * "%area_num%")) 0xf0 WRITE_ASCII ("%area_off%" + (0xf0 * "%area_num%")) ~YSAR01~ // AR-name WRITE_ASCII ("%area_off%" + 0x08 + (0xf0 * "%area_num%")) ~YSAR01~ // AR-name WRITE_ASCII ("%area_off%" + 0x10 + (0xf0 * "%area_num%")) ~YSAR01~ // AR-name WRITE_LONG ("%area_off%" + 0x34 + (0xf0 * "%area_num%")) 13 // Map icon WRITE_LONG ("%area_off%" + 0x38 + (0xf0 * "%area_num%")) 570 // X coordinate WRITE_LONG ("%area_off%" + 0x3C + (0xf0 * "%area_num%")) 610 // Y coordinate SAY ("%area_off%" + 0x40 + (0xf0 * "%area_num%")) ~Portpentyrch~ // Name of the area SAY ("%area_off%" + 0x44 + (0xf0 * "%area_num%")) #-1 // Description // Now, we add four area links, all from east WRITE_SHORT ("%area_off%" + 0x50 + (0xf0 * "%area_num%")) ("%link_num%" + 4) // First N link WRITE_SHORT ("%area_off%" + 0x58 + (0xf0 * "%area_num%")) ("%link_num%" + 4) // First W link WRITE_SHORT ("%area_off%" + 0x60 + (0xf0 * "%area_num%")) ("%link_num%" + 4) // First S link WRITE_SHORT ("%area_off%" + 0x68 + (0xf0 * "%area_num%")) ("%link_num%") // First E link WRITE_SHORT ("%area_off%" + 0x6c + (0xf0 * "%area_num%")) 4 // Number of links from E // Add links from Umar Hills to the new area // We'll start by fixing the offsets WHILE ("%outer_check%" = 0) BEGIN READ_ASCII ("%entry%" + 0x8) "area" (2) READ_ASCII ("%entry%" + 0x8) "spec_area" (6) WHILE (("%spec_area%" STRING_COMPARE_CASE "AR1100" = 0) AND ("%inner_check%" = 0)) BEGIN READ_SHORT ("%entry%" + 0x50) "nlink" READ_SHORT ("%entry%" + 0x50 + 0x4) "#nlink" WRITE_SHORT ("%entry%" + 0x50 + 0x4) ("%#nlink%" + 1) READ_SHORT ("%entry%" + 0x50 + 0x8) "wlink" WRITE_SHORT ("%entry%" + 0x50 + 0x8) ("%wlink%" + 3) READ_SHORT ("%entry%" + 0x50 + 0x8) "wlink" READ_SHORT ("%entry%" + 0x50 + 0x8 + 0x4) "#wlink" WRITE_SHORT ("%entry%" + 0x50 + 0x8 + 0x4) ("%#wlink%" + 1) READ_SHORT ("%entry%" + 0x50 + 0x8 + 0x8) "slink" WRITE_SHORT ("%entry%" + 0x50 + 0x8 + 0x8) ("%slink%" + 2) READ_SHORT ("%entry%" + 0x50 + 0x8 + 0x8) "slink" READ_SHORT ("%entry%" + 0x50 + 0x8 + 0x8 + 0x4) "#slink" WRITE_SHORT ("%entry%" + 0x50 + 0x8 + 0x8 + 0x4) ("%#slink%" + 1) READ_SHORT ("%entry%" + 0x50 + 0x8 + 0x8 + 0x8) "elink" WRITE_SHORT ("%entry%" + 0x50 + 0x8 + 0x8 + 0x8) ("%elink%" + 1) READ_SHORT ("%entry%" + 0x50 + 0x8 + 0x8 + 0x8) "elink" READ_SHORT ("%entry%" + 0x50 + 0x8 + 0x8 + 0x8 + 0x4) "#elink" WRITE_SHORT ("%entry%" + 0x50 + 0x8 + 0x8 + 0x8 + 0x4) ("%#elink%" + 1) SET "inner_check" = 1 END PATCH_IF (("%area%" STRING_COMPARE_CASE "AR" = 0) OR ("%area%" STRING_COMPARE_CASE "G3" = 0)) BEGIN SET "num_ent" = ("%num_ent%" + 1) END ELSE PATCH_IF (("%area%" STRING_COMPARE_CASE "AR" != 0) AND ("%area%" STRING_COMPARE_CASE "G3" != 0)) BEGIN SET "outer_check" = 1 END SET "entry" = ("%entry%" + 0xf0) END // Re-read offsets READ_LONG 0x30 "area_num" READ_LONG 0x38 "link_off" // Add link to ARSC#A INSERT_BYTES ("%link_off%" - 0x01 + (0xd8 * "%nlink%")) 0xd8 WRITE_LONG ("%link_off%" + (0xd8 * "%nlink%")) ("%area_num%" - 1) // Add the last entry WRITE_ASCII ("%link_off%" + 0x04 + (0xd8 * "%nlink%")) ~Exitne~ // Entrance WRITE_LONG ("%link_off%" + 0x28 + (0xd8 * "%nlink%")) 4 // Unknown // If you want to add random encounters, travelling time, do so here // Add link to ARSC#A INSERT_BYTES ("%link_off%" - 0x01 + (0xd8 * "%wlink%")) 0xd8 WRITE_LONG ("%link_off%" + (0xd8 * "%wlink%")) ("%area_num%" - 1) // Add the last entry WRITE_ASCII ("%link_off%" + 0x04 + (0xd8 * "%wlink%")) ~Exitne~ // Entrance WRITE_LONG ("%link_off%" + 0x28 + (0xd8 * "%wlink%")) 4 // Unknown // If you want to add random encounters, travelling time, do so here // Add link to ARSC#A INSERT_BYTES ("%link_off%" - 0x01 + (0xd8 * "%slink%")) 0xd8 WRITE_LONG ("%link_off%" + (0xd8 * "%slink%")) ("%area_num%" - 1) // Add the last entry WRITE_ASCII ("%link_off%" + 0x04 + (0xd8 * "%slink%")) ~Exite~ // Entrance WRITE_LONG ("%link_off%" + 0x28 + (0xd8 * "%slink%")) 4 // Unknown // If you want to add random encounters, travelling time, do so here // Add link to ARSC#A INSERT_BYTES ("%link_off%" - 0x01 + (0xd8 * "%elink%")) 0xd8 WRITE_LONG ("%link_off%" + (0xd8 * "%elink%")) ("%area_num%" - 1) // Add the last entry WRITE_ASCII ("%link_off%" + 0x04 + (0xd8 * "%elink%")) ~Exitne~ // Entrance WRITE_LONG ("%link_off%" + 0x28 + (0xd8 * "%elink%")) 4 // Unknown // If you want to add random encounters, travelling time, do so here // Check which link is largest PATCH_IF (("%nlink%" > "%wlink%") AND ("%nlink%" > "%slink%") AND ("%nlink%" > "%elink%")) BEGIN SET "link" = "%nlink%" END PATCH_IF (("%wlink%" > "%nlink%") AND ("%wlink%" > "%slink%") AND ("%wlink%" > "%elink%")) BEGIN SET "link" = "%wlink%" END PATCH_IF (("%slink%" > "%wlink%") AND ("%slink%" > "%nlink%") AND ("%slink%" > "%elink%")) BEGIN SET "link" = "%slink%" END PATCH_IF (("%elink%" > "%wlink%") AND ("%elink%" > "%slink%") AND ("%elink%" > "%nlink%")) BEGIN SET "link" = "%elink%" END // Correct ALL other links after elink // New variables SET "entry" = ("%map_off%" + 0xb8) SET "outer_c" = 0 // Let's WHILE a bit and search for area-links WHILE ("%outer_c%" = 0) BEGIN READ_ASCII ("%entry%" + 0x8) "area" (2) PATCH_IF (("%area%" STRING_COMPARE_CASE "AR" = 0) OR ("%area%" STRING_COMPARE_CASE "G3" = 0)) BEGIN READ_SHORT ("%entry%" + 0x50) "nlink" READ_SHORT ("%entry%" + 0x50 + 0x8) "wlink" READ_SHORT ("%entry%" + 0x50 + 0x8 + 0x8) "slink" READ_SHORT ("%entry%" + 0x50 + 0x8 + 0x8 + 0x8) "elink" // And if they are larger, let's patch 'em PATCH_IF ("%nlink%" > "%link%") BEGIN WRITE_SHORT ("%entry%" + 0x50) ("%nlink%" + 4) END PATCH_IF ("%wlink%" > "%link%") BEGIN WRITE_SHORT ("%entry%" + 0x50 + 0x8) ("%wlink%" + 4) END PATCH_IF ("%slink%" > "%link%") BEGIN WRITE_SHORT ("%entry%" + 0x50 + 0x8 + 0x8) ("%slink%" + 4) END PATCH_IF ("%elink%" > "%link%") BEGIN WRITE_SHORT ("%entry%" + 0x50 + 0x8 + 0x8 + 0x8) ("%elink%" + 4) END END ELSE PATCH_IF (("%area%" STRING_COMPARE_CASE "AR" != 0) AND ("%area%" STRING_COMPARE_CASE "G3" != 0)) BEGIN SET "outer_c" = 1 END SET "entry" = ("%entry%" + 0xf0) END // Add four new links from the new area // Re-read offsets READ_LONG 0x38 "link_off" READ_LONG 0x3c "link_num" // New offset WRITE_LONG 0x3c ("%link_num%" + 4) // Add link to City Gates INSERT_BYTES ("%link_off%" - 0x01 + (0xd8 * "%link_num%")) 0xd8 WRITE_LONG ("%link_off%" + (0xd8 * "%link_num%")) 11 // City Gates WRITE_ASCII ("%link_off%" + 0x04 + (0xd8 * "%link_num%")) ~ExitNE~ // Entrance WRITE_LONG ("%link_off%" + 0x28 + (0xd8 * "%link_num%")) 4 // Unknown // If you want to add random encounters, travelling time, do so here // Add link to Umar Hills INSERT_BYTES ("%link_off%" - 0x01 + (0xd8 * "%link_num%")) 0xd8 WRITE_LONG ("%link_off%" + (0xd8 * "%link_num%")) 7 // Umar Hills WRITE_ASCII ("%link_off%" + 0x04 + (0xd8 * "%link_num%")) ~ExitNW~ // Entrance WRITE_LONG ("%link_off%" + 0x28 + (0xd8 * "%link_num%")) 4 // Unknown // If you want to add random encounters, travelling time, do so here // Add link to Trademeet INSERT_BYTES ("%link_off%" - 0x01 + (0xd8 * "%link_num%")) 0xd8 WRITE_LONG ("%link_off%" + (0xd8 * "%link_num%")) 14 // Trademeet WRITE_ASCII ("%link_off%" + 0x04 + (0xd8 * "%link_num%")) ~ExitNW~ // Entrance WRITE_LONG ("%link_off%" + 0x28 + (0xd8 * "%link_num%")) 4 // Unknown // If you want to add random encounters, travelling time, do so here // Add link to de'Arnise Hold INSERT_BYTES ("%link_off%" - 0x01 + (0xd8 * "%link_num%")) 0xd8 WRITE_LONG ("%link_off%" + (0xd8 * "%link_num%")) 9 // de'Arnise WRITE_ASCII ("%link_off%" + 0x04 + (0xd8 * "%link_num%")) ~ExitSE~ // Entrance WRITE_LONG ("%link_off%" + 0x28 + (0xd8 * "%link_num%")) 4 // Unknown // If you want to add random encounters, travelling time, do so here BUT_ONLY_IF_IT_CHANGES
So the bottom line is: what did I do wrong? Oh - and you can guarantee follow-up questions, that I'm sure of!
-Y-