SAY ( "%area_off%" + 0x40 + ( 0xf0 * "%area_num%" ) ) "%strName%" // area name
SAY ( "%area_off%" + 0x44 + ( 0xf0 * "%area_num%" ) ) "%strDesc%" // area description
could be changed to:
PATCH_IF "%strName%" STR_EQ "" BEGIN
WRITE_LONG ( "%area_off%" + 0x40 + ( 0xf0 * "%area_num%" ) ) "-1"
END ELSE BEGIN
SAY ( "%area_off%" + 0x40 + ( 0xf0 * "%area_num%" ) ) "%strName%" // area name
END
PATCH_IF "%strDesc%" STR_EQ "" BEGIN
WRITE_LONG ( "%area_off%" + 0x44 + ( 0xf0 * "%area_num%" ) ) "-1"
END ELSE BEGIN
SAY ( "%area_off%" + 0x44 + ( 0xf0 * "%area_num%" ) ) "%strDesc%" // area description
END
Expanding TLK file if string doesn't exist doesn't make much sense.
If this will be implemented than both strName and strDesc should default to "" in function's variable declaration.