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_CHANGESSo the bottom line is: what did I do wrong? Oh - and you can guarantee follow-up questions, that I'm sure of!
-Y-







