Jump to content

Returning bit values for 0x48 in .are .ids file using weidu...


cmorgan

Recommended Posts

...I fail at life :)

Ok. I have a Failure To Understand. I am messing about with getting an area list with what each area is flagged. I understand I can

READ_BYTE "0x48" "flags" // AREATYPE.IDS

I understand that it is a 2 (word) byte.

I understand that with only the OUTDOOR value set, the binary number written to it is 0b00000001
I understand that with both the OUTDOOR value set and the FOREST value set, the binary number written to it is 0b00010001

Now we get to the part where I am missing something blindingly obvious to real programmers, and completely arcane to hack like me who has learned what they know from Blunt Code Trauma -

copying,
adjusting,
failing,
reading,
adjusting,
failing,
swearing,
taking a drink of scotch,
re-reading,
re-researching,
sighing,
GOTO LINE1


I know from my dialogue modding that

+ ~AreaType(1)~ + ~[PC] This area is flagged as OUTDOOR. Look! A bird!~ + c-lighttestpanel
+ ~AreaType(2)~ + ~[PC] This area is flagged as DAYNIGHT. It couldn't make up its mind.~ + c-lighttestpanel
+ ~AreaType(4)~ + ~[PC] This area is flagged as WEATHER. I bet that means it has some.~ + c-lighttestpanel
+ ~AreaType(8)~ + ~[PC] This area is flagged as CITY. Even though it might just be a hamlet.~ + c-lighttestpanel
+ ~AreaType(16)~ + ~[PC] This area is flagged as FOREST. See it, AND the trees.~ + c-lighttestpanel
+ ~AreaType(32)~ + ~[PC] This area is flagged as DUNGEON. No, this is not *that* type of game...~ + c-lighttestpanel
+ ~AreaType(64)~ + ~[PC] This area is flagged as EXTENDEDNIGHT. Apparently, Bhaal won. Or Shar.~ + c-lighttestpanel
+ ~AreaType(128)~ + ~[PC] This area is flagged as CANRESTOTHER. It's always nice to have a catch-all.~ + c-lighttestpanel


But I also know that the numerical values listed are not actually what the engine can read - this it can read OUTDOOR and FOREST, which I think in my feeble little mind is 1 + 16, or 17. (I think this is where I go off the rails - something tells me I am missing how bitwise operations equate to numbers).

So, when I do this:

BEGIN ~Area Checker~
NO_LOG_RECORD // so it can be used as much as wanted
COPY ~test/blank.log~ ~override/debugger.log~
APPEND ~debugger.log~ "///// Area Type Checker  - Begin Log \\\\\"
ACTION_IF FILE_EXISTS_IN_GAME ~xr2400.are~ THEN BEGIN
  // ensures are regexp search doesn't die
  COPY_EXISTING ~ar0087.are~ ~override/xr2400.are~
                ~ar0087.are~ ~override/xr2600.are~
END
// area checker
COPY_EXISTING_REGEXP GLOB ~^%prefix%.+\.are$~ ~override~
  PATCH_IF (SOURCE_SIZE < 0x11c) BEGIN // if invalid file
    PATCH_PRINT "%SOURCE_FILE% error: Corrupt file, below minimum file size"
    INNER_ACTION BEGIN
      APPEND ~debugger.log~ "%SOURCE_FILE% error: Corrupt file, below minimum file size"
    END
  END ELSE BEGIN
    READ_BYTE  "0x48" "flags"
      PATCH_IF (SOURCE_SIZE > 0x11c) BEGIN
      PATCH_PRINT "%SOURCE_FILE% has area set as %flags%"
      INNER_ACTION BEGIN
        APPEND ~debugger.log~ "%SOURCE_FILE% has area set as %flags%"
      END
   END
APPEND ~debugger.log~ "///// Area Type Checker  - End Log \\\\\"
COPY ~override/debugger.log~ ~test/debugger_area_list.log~


This gets me to a nice list of area files with numbers... which means I am getting a numerical summary of the bits set, but not in binary.


AR0011.ARE has area set as 0 // true - it has nothing set on that byte at all

AR0015.ARE has area set as 128 // true - it has only Can Rest...

AR0020.ARE has area set as 79 // heh - it has OUTDOOR, DAYNIGHT, WEATHER, CITY, EXTENDED NIGHT

So actually, the numbers ARE being returned as additive values.

WONDERFUL!

Except... what I set about to do was to be able to list the bits set individually, not try to create a puzzle that I then have to figure out...

Can someone give me guidance as to how to either get %flags% to return the binary value and PATCH_PRINT it (which would be an easy read for which bits are set)

where

APPEND ~debugger.log~ "%SOURCE_FILE% has area set as %flags%"

evaluates to ~AR####.ARE has area set as 0b00010001~

or some way of sequetially interpreting whether the bit at position 0 (far right) is 1, the bit at position 2 is 1 (or not), etc. - even hacks like me can iterate through a pattern and get a value set and printed, if we know how to get to the blasted info in the first place :)

edit 1:
(yes, i know that I could just open NI or DLTCEP and make a manual list of each flag placed on each file - but #1 I want to know *how* to do this, and #2 I think it would be a helluva long tedious haul to do the long form research when I just *know* this is much easier than i am making it.)

 

edit 2: found conversion charts and calculators, so I can manually work this out - but I still want to know how to build the code

Link to comment

...and it seems I am even more hacky/noob than I thought.

 

I figured that

 

END ELSE BEGIN
  SPRINT b3 ~.~
  READ_BYTE  "0x48" "flags"
    PATCH_IF (%flags% && 0b11) = 1 BEGIN 
      SPRINT b3 ~City~ 
    END
    PATCH_PRINT "%SOURCE_FILE% has %b3% set"
etc etc
would be a rough swing through the roses... and it is definitely not working as intended :)

 

Setting (%flags% && 0b11) = 0 doesn't set on the correct value, nor does ((%flags% && 0b11) = 0) , values either 0 or 1. Hmmm...

 

Should i be looking at %flags% as a bitwise operator, and doing something like BAND?

Link to comment

READ_BYTE "0x48" "flags" // AREATYPE.IDS

 

I understand that it is a 2 (word) byte.

Since it is 2 bytes, using READ_BYTE instead of READ_SHORT means that you are only fetching half of the field. In this case, it doesn't matter, because the other bits aren't used in BG, but it's something to keep in mind.

 

PATCH_IF (%flags% && 0b11) = 1 BEGIN

SPRINT b3 ~City~

END

Note that 0b11 is not checking the value of bit 3, it is checking the value of bits 0 and 1. Bit 3 is located

  v here.
0b1000
You do want to be using binary and (BAND/&) instead of logical and (AND/&&).

 

(flags & 0b00000001) == 0b00000001 will return true if bit 0 is set

(flags & 0b00000010) == 0b00000010 will return true if bit 1 is set

(flags & 0b00000100) == 0b00000100 will return true if bit 2 is set

etc.

 

I added a comparison here, to make it clear that the value returned from the first part is actually 1, 2, 4, etc. depending on which bit is checked. Without the comparison, those values would all still resolve to true, but they wouldn't all equal 1.

 

 

You mentioned wanting the ability to display a number in binary format. I coded up a function to do that, mostly for fun. You give it a number (the decimal parameter) and optionally a number of bits and it will return a variable containing the binary representation of that number in the specified number of bits, prefixed by '0b'.

 

 

 

Function:

DEFINE_PATCH_FUNCTION ~TO_BINARY~
  INT_VAR
    decimal = 0 // the decimal number to convert to binary
    bits = 0 // optional: the number of bits to use (if unspecified or too small, it will default to the smallest out of 8, 16, and 32 that fits)
  RET
    binary_string // the binary string representation of the given number, prefixed by '0b'
BEGIN
  // for negative numbers, flip the bits so we can perform our conversion (we'll flip them back after)
  SET negative = 0
  PATCH_IF (decimal < 0) BEGIN
    SET negative = 1
    SET decimal = BNOT decimal
  END
  
  // determine how many bits will be used to represent the number
  PATCH_IF (bits <= 0 || (bits < 32 && decimal >= (1 BLSL bits))) BEGIN // if the number requires more bits than were specified
    // determine the minimum number of bits required
    PATCH_IF (decimal < (1 BLSL 8)) BEGIN
      SET bits = 8
    END
    ELSE PATCH_IF (decimal < (1 BLSL 16)) BEGIN
      SET bits = 16
    END
    ELSE BEGIN
      SET bits = 32
    END
  END
  
  // convert to binary using division and modulo
  TEXT_SPRINT binary_string ~~
  WHILE (decimal > 0) BEGIN
    SET bit = decimal - (decimal / 2) * 2 // decimal % 2
    TEXT_SPRINT binary_string ~%bit%%binary_string%~
    SET decimal /= 2
  END
  
  // pad left with zeroes
  WHILE (STRING_LENGTH ~%binary_string%~ < bits) BEGIN
    TEXT_SPRINT binary_string ~0%binary_string%~
  END
  
  // if the number was negative, we need to flip the 0s and 1s back
  PATCH_IF (negative) BEGIN
    INNER_PATCH_SAVE binary_string ~%binary_string%~ BEGIN
      REPLACE_TEXTUALLY ~0~ ~5~
      REPLACE_TEXTUALLY ~1~ ~0~
      REPLACE_TEXTUALLY ~5~ ~1~
    END
  END
  
  // prefix the result with '0b'
  TEXT_SPRINT binary_string ~0b%binary_string%~
END
Usage:

  SET number = 5
  LPF ~TO_BINARY~ INT_VAR decimal = number RET binary = binary_string END
  PATCH_PRINT ~decimal value is %number%, binary value is %binary%~
  
  SET number = (0 - 5)
  LPF ~TO_BINARY~ INT_VAR decimal = number bits = 10 RET binary = binary_string END
  PATCH_PRINT ~decimal value is %number%, binary value is %binary%~
Output:

decimal value is 5, binary value is 0b00000101
decimal value is -5, binary value is 0b1111111011

 

Link to comment

Since it is 2 bytes, using READ_BYTE instead of READ_SHORT means that you are only fetching half of the field. In this case, it doesn't matter, because the other bits aren't used in BG, but it's something to keep in mind.

Got it - in this case, only the first byte is used; the older discussion about FL_INN and FL_STRONGHOLDS was predicated on using the additional 8 possible on the second byte, right? So looking at the second byte would be needed to detect FL_INN or such. I think.

 

Note that 0b11 is not checking the value of bit 3, it is checking the value of bits 0 and 1. Bit 3 is located at 0b1000

I am not sure I understand...

 

I thought the usage looked like 0b00 0b01 0b11 0b100 (decimals 0 1 2 3) and that the operation was looking inside %flags% to find those numbered bits. (Taking that year off really messed me up on this stuff.)

 

You do want to be using binary and (BAND/&) instead of logical and (AND/&&).

 

(flags & 0b00000001) == 0b00000001 will return true if bit 0 is set

(flags & 0b00000010) == 0b00000010 will return true if bit 1 is set

(flags & 0b00000100) == 0b00000100 will return true if bit 2 is set

etc.

 

I added a comparison here, to make it clear that the value returned from the first part is actually 1, 2, 4, etc. depending on which bit is checked. Without the comparison, those values would all still resolve to true, but they wouldn't all equal 1.

Ah, so comparison values as binary, and working with binary, because I want to get at information stored within a byte

(yes, that sounds dumb, but remember I am a dialogue hack person. I still instinctively think of READ_BYTE WRITE_BYTE the same way I think about doing STRING_COMPARE_CASE - to me the finding at offset X is a "block of information" to be manipulated rather than "numbers" to be manipulated. I know that is crazy; the closest analogy I can think of is a person who codes by taking other building blocks that work to do X and stacking them in different orders to do Y - and is not sure what really is inside each of the building blocks. Only now, I kinda need to get inside there.)

 

So the

 

(%flags% & 0b00000001) == 0b00000001 will return true if bit 0 is set

(%flags% & 0b00000010) == 0b00000010 will return true if bit 1 is set

(%flags% & 0b00000100) == 0b00000100 will return true if bit 2 is set

 

is stated like

 

if x (value read in at 0x48 stated in binary)

at bit y (0b00000001)

is the same as 0b00000001

then it is true

and bit 0 is not a 0, it is a 1

 

? Am I close?

 

You mentioned wanting the ability to display a number in binary format. I coded up a function to do that, mostly for fun. You give it a number (the decimal parameter) and optionally a number of bits and it will return a variable containing the binary representation of that number in the specified number of bits, prefixed by '0b'.

Way, way cool! So if I add this function, I can create a string that outputs something like the following -

 

PATCH_PRINT ~%SOURCE_RES% is ~flagged %b0% %b1% %b2% %b3$ %b4% %b5% %b6% %b7%, binary value is %binary%~

 

and that would give both the .ids entries that match the areatype flags on the first byte and also the full value expressed as a binary number.

 

Edit: wait a sec - on the single byte field, we couldn't have that -5 converted, right? there are only 8 bits there, and the number has 10 places...

Link to comment

 

I thought the usage looked like 0b00 0b01 0b11 0b100 (decimals 0 1 2 3)

that's 0 1 3 4, 2 is 0b10.

 

 

if x (value read in at 0x48 stated in binary) at bit y (0b00000001) is the same as 0b00000001 then it is true and bit 0 is set

 

? Am I close?

It's true if *only* bit 0 is set. That's what the note on the extra comparisons was about. If you want to check if any value has bit 0 set among others, just do (%flags% & 0b00000001).

Link to comment

Ahhhh that makes sense.ok, bear with me, here -

 

So the comparison is an "if only this bit among the 8 bits is set".

 

It would fail to be true if I had 0b01000001.

 

So in this case, I am looking at 0x48 and trying to determine if one value among many values are set. I can have any and all of the following values:

 

bit0 (0,1) bit1 (0,1) bit2 (0,1) bit3 (0,1) bit4 (0,1) bit5 (0,1) bit6 (0,1) bit7 (0,1)

 

If I want to determine if among all the potential values within that READ_BYTE value

 

[looking at this like a set of switches on/off, not a number]

{ 0b00000001 to 0b11111111 } inclusive

 

then what I want is for

 

0b00000001

and

0b00000101

 

(and all the others) to return true. I want any area that has any value that has bit0 set to 1. So I should use

 

(%flags% & 0b00000001)

 

without the comparison.

Link to comment

Now this was seriously fun, and I learned a good bit (no pun intended) both about what I know and what I still need to learn.

 

Thanks to you folks help, the following test.tp2

 

 

BACKUP ~test/backup~ // location to store files for uninstall purposes
AUTHOR ~clueless_cmorgan_and_helpful_friends~ // email address displayed if install fails  

VERSION ~1~ 

ALWAYS
  OUTER_SPRINT "prefix" "" // sets up var %prefix% for COPY_EXISTING_REGEXP
END

/* AreaType() Checker */

BEGIN ~AreaType() Checker~
NO_LOG_RECORD // so it can be used as much as wanted

COPY ~test/blank.log~ ~override/debugger.log~
APPEND ~debugger.log~ "///// AreaType() Checker  - Begin Log \\\\\"

ACTION_IF NOT FILE_EXISTS_IN_GAME ~xr2400.are~ THEN BEGIN // regexp seems to choke on those - Camdawg's notes indicate files in chitin but not actually in game?

  // ensures are regexp search doesn't die
  COPY_EXISTING ~ar0087.are~ ~override/xr2400.are~
                ~ar0087.are~ ~override/xr2600.are~

END

/* Mike1701's binary conversion function */
DEFINE_PATCH_FUNCTION ~TO_BINARY~
  INT_VAR
    decimal = 0 // the decimal number to convert to binary
    bits = 0 // optional: the number of bits to use (if unspecified or too small, it will default to the smallest out of 8, 16, and 32 that fits)
  RET
    binary_string // the binary string representation of the given number, prefixed by '0b'
BEGIN
  // for negative numbers, flip the bits so we can perform our conversion (we'll flip them back after)
  SET negative = 0
  PATCH_IF (decimal < 0) BEGIN
    SET negative = 1
    SET decimal = BNOT decimal
  END
  
  // determine how many bits will be used to represent the number
  PATCH_IF (bits <= 0 || (bits < 32 && decimal >= (1 BLSL bits))) BEGIN // if the number requires more bits than were specified
    // determine the minimum number of bits required
    PATCH_IF (decimal < (1 BLSL 8)) BEGIN
      SET bits = 8
    END
    ELSE PATCH_IF (decimal < (1 BLSL 16)) BEGIN
      SET bits = 16
    END
    ELSE BEGIN
      SET bits = 32
    END
  END
  
  // convert to binary using division and modulo
  TEXT_SPRINT binary_string ~~
  WHILE (decimal > 0) BEGIN
    SET bit = decimal - (decimal / 2) * 2 // decimal % 2
    TEXT_SPRINT binary_string ~%bit%%binary_string%~
    SET decimal /= 2
  END
  
  // pad left with zeroes
  WHILE (STRING_LENGTH ~%binary_string%~ < bits) BEGIN
    TEXT_SPRINT binary_string ~0%binary_string%~
  END
  
  // if the number was negative, we need to flip the 0s and 1s back
  PATCH_IF (negative) BEGIN
    INNER_PATCH_SAVE binary_string ~%binary_string%~ BEGIN
      REPLACE_TEXTUALLY ~0~ ~5~
      REPLACE_TEXTUALLY ~1~ ~0~
      REPLACE_TEXTUALLY ~5~ ~1~
    END
  END
  
  // prefix the result with '0b'
  TEXT_SPRINT binary_string ~0b%binary_string%~
END

// area checker
COPY_EXISTING_REGEXP GLOB ~^%prefix%.+\.are$~ ~override~
	PATCH_IF (SOURCE_SIZE < 0x11c) BEGIN // if invalid file
		PATCH_PRINT "%SOURCE_FILE% error: Corrupt file, below minimum file size"
		INNER_ACTION BEGIN
			APPEND ~debugger.log~ "%SOURCE_FILE% error: Corrupt file, below minimum file size"
		END
	END ELSE 
	BEGIN
		SPRINT b0 ~[ 0 ]~
		SPRINT b1 ~[ 0 ]~
		SPRINT b2 ~[ 0 ]~
		SPRINT b3 ~[ 0 ]~
		SPRINT b4 ~[ 0 ]~
		SPRINT b5 ~[ 0 ]~
		SPRINT b6 ~[ 0 ]~
		SPRINT b7 ~[ 0 ]~
		READ_BYTE  "0x48" "flags" 
			SET number = %flags%
			LPF ~TO_BINARY~ INT_VAR decimal = number RET binary = binary_string END
			PATCH_IF (%flags% & 0b00000001) BEGIN SPRINT b0 ~[OUTDOOR]~ END
			PATCH_IF (%flags% & 0b00000010) BEGIN SPRINT b1 ~[DAYNIGHT]~ END
			PATCH_IF (%flags% & 0b00000100) BEGIN SPRINT b2 ~[WEATHER]~ END
			PATCH_IF (%flags% & 0b00001000) BEGIN SPRINT b3 ~[CITY]~ END
			PATCH_IF (%flags% & 0b00010000) BEGIN SPRINT b4 ~[FOREST]~ END      
			PATCH_IF (%flags% & 0b00100000) BEGIN SPRINT b5 ~[DUNGEON]~ END
			PATCH_IF (%flags% & 0b01000000) BEGIN SPRINT b6 ~[EXTENDEDNIGHT]~ END
			PATCH_IF (%flags% & 0b10000000) BEGIN SPRINT b7 ~[CANRESTOTHER]~ END
			PATCH_PRINT "%SOURCE_FILE% is flagged %binary% (%number%) ; %b0% %b1% %b2% %b3% %b4% %b5% %b6% %b7%"
			INNER_ACTION BEGIN
				APPEND ~debugger.log~ "%SOURCE_FILE% is flagged %binary% (%number%); %b0% %b1% %b2% %b3% %b4% %b5% %b6% %b7%"
			END
	END	  
APPEND ~debugger.log~ "///// Area Type Checker  - End Log \\\\\"
COPY ~override/debugger.log~ ~test/debugger_area_list.log~
	

 

 

works nicely - the resulting .log gives a good mass rundown of what is currently flagged on an install. From vanilla BG2:EE,

 

 

///// AreaType() Checker - Begin Log \\\\\

AR0011.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0012.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0013.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0014.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0015.ARE is flagged 0b10000000 (128); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [CANRESTOTHER]

AR0016.ARE is flagged 0b10000000 (128); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [CANRESTOTHER]

AR0017.ARE is flagged 0b10000000 (128); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [CANRESTOTHER]

AR0018.ARE is flagged 0b10100000 (160); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [CANRESTOTHER]

AR0020.ARE is flagged 0b01001111 (79); [OUTDOOR] [DAYNIGHT] [WEATHER] [CITY] [ 0 ] [ 0 ] [EXTENDEDNIGHT] [ 0 ]

AR0021.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0022.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0028.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0041.ARE is flagged 0b01001011 (75); [OUTDOOR] [DAYNIGHT] [ 0 ] [CITY] [ 0 ] [ 0 ] [EXTENDEDNIGHT] [ 0 ]

AR0042.ARE is flagged 0b00010011 (19); [OUTDOOR] [DAYNIGHT] [ 0 ] [ 0 ] [FOREST] [ 0 ] [ 0 ] [ 0 ]

AR0043.ARE is flagged 0b00000011 (3); [OUTDOOR] [DAYNIGHT] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0044.ARE is flagged 0b00000011 (3); [OUTDOOR] [DAYNIGHT] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0045.ARE is flagged 0b01001011 (75); [OUTDOOR] [DAYNIGHT] [ 0 ] [CITY] [ 0 ] [ 0 ] [EXTENDEDNIGHT] [ 0 ]

AR0046.ARE is flagged 0b01001011 (75); [OUTDOOR] [DAYNIGHT] [ 0 ] [CITY] [ 0 ] [ 0 ] [EXTENDEDNIGHT] [ 0 ]

AR0069.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0070.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0071.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR0072.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0082.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0083.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0084.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0085.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0086.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0087.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR0201.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR0202.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR0203.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR0204.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR0205.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR0206.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR0300.ARE is flagged 0b01001111 (79); [OUTDOOR] [DAYNIGHT] [WEATHER] [CITY] [ 0 ] [ 0 ] [EXTENDEDNIGHT] [ 0 ]

AR0301.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0302.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0303.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0304.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0305.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0306.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0307.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0308.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0309.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0310.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR0311.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0312.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0313.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0314.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0315.ARE is flagged 0b10000000 (128); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [CANRESTOTHER]

AR0316.ARE is flagged 0b10000000 (128); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [CANRESTOTHER]

AR0317.ARE is flagged 0b10000000 (128); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [CANRESTOTHER]

AR0318.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0319.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0321.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0322.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0323.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0324.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0325.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0326.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0327.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0328.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0329.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0330.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0331.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR0332.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0333.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0334.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0335.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0400.ARE is flagged 0b01001111 (79); [OUTDOOR] [DAYNIGHT] [WEATHER] [CITY] [ 0 ] [ 0 ] [EXTENDEDNIGHT] [ 0 ]

AR0401.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0402.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0403.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0404.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR0405.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0406.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0407.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0408.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0409.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0410.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR0411.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR0412.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR0413.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR0414.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR0415.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0416.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0417.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0418.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR0419.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR0420.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR0500.ARE is flagged 0b01001111 (79); [OUTDOOR] [DAYNIGHT] [WEATHER] [CITY] [ 0 ] [ 0 ] [EXTENDEDNIGHT] [ 0 ]

AR0501.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0502.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR0503.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR0504.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0505.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0506.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0507.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0508.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0509.ARE is flagged 0b00001000 (8); [ 0 ] [ 0 ] [ 0 ] [CITY] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0510.ARE is flagged 0b00001000 (8); [ 0 ] [ 0 ] [ 0 ] [CITY] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0511.ARE is flagged 0b00001000 (8); [ 0 ] [ 0 ] [ 0 ] [CITY] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0512.ARE is flagged 0b00001000 (8); [ 0 ] [ 0 ] [ 0 ] [CITY] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0513.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0514.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0515.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0516.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR0517.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0518.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0519.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0520.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0521.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR0522.ARE is flagged 0b10001000 (136); [ 0 ] [ 0 ] [ 0 ] [CITY] [ 0 ] [ 0 ] [ 0 ] [CANRESTOTHER]

AR0523.ARE is flagged 0b00001000 (8); [ 0 ] [ 0 ] [ 0 ] [CITY] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0525.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0526.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR0527.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0528.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0529.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0530.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0531.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0600.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR0601.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR0602.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR0603.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR0604.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR0605.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR0606.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR0607.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0700.ARE is flagged 0b01001011 (75); [OUTDOOR] [DAYNIGHT] [ 0 ] [CITY] [ 0 ] [ 0 ] [EXTENDEDNIGHT] [ 0 ]

AR0701.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR0702.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0703.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0704.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0705.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR0706.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0707.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0708.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0709.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0710.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0711.ARE is flagged 0b10100000 (160); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [CANRESTOTHER]

AR0712.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0713.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0714.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0800.ARE is flagged 0b00001111 (15); [OUTDOOR] [DAYNIGHT] [WEATHER] [CITY] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0801.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR0802.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR0803.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR0804.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR0805.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0806.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0807.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0808.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR0809.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR0810.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0811.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR0812.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0813.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0900.ARE is flagged 0b01001111 (79); [OUTDOOR] [DAYNIGHT] [WEATHER] [CITY] [ 0 ] [ 0 ] [EXTENDEDNIGHT] [ 0 ]

AR0901.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0902.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0903.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0904.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR0905.ARE is flagged 0b10000000 (128); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [CANRESTOTHER]

AR0906.ARE is flagged 0b10000000 (128); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [CANRESTOTHER]

AR0907.ARE is flagged 0b10000000 (128); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [CANRESTOTHER]

AR1000.ARE is flagged 0b01001111 (79); [OUTDOOR] [DAYNIGHT] [WEATHER] [CITY] [ 0 ] [ 0 ] [EXTENDEDNIGHT] [ 0 ]

AR1001.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR1002.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR1003.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR1004.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR1005.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR1006.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR1007.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR1008.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR1009.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR1010.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR1100.ARE is flagged 0b00010111 (23); [OUTDOOR] [DAYNIGHT] [WEATHER] [ 0 ] [FOREST] [ 0 ] [ 0 ] [ 0 ]

AR1101.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR1102.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR1103.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR1104.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR1105.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR1106.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR1107.ARE is flagged 0b10000000 (128); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [CANRESTOTHER]

AR1200.ARE is flagged 0b00010111 (23); [OUTDOOR] [DAYNIGHT] [WEATHER] [ 0 ] [FOREST] [ 0 ] [ 0 ] [ 0 ]

AR1201.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR1202.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR1203.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR1204.ARE is flagged 0b10000000 (128); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [CANRESTOTHER]

AR1300.ARE is flagged 0b00000111 (7); [OUTDOOR] [DAYNIGHT] [WEATHER] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR1301.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR1302.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR1303.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR1304.ARE is flagged 0b00000111 (7); [OUTDOOR] [DAYNIGHT] [WEATHER] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR1305.ARE is flagged 0b10000000 (128); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [CANRESTOTHER]

AR1306.ARE is flagged 0b10000000 (128); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [CANRESTOTHER]

AR1307.ARE is flagged 0b10000000 (128); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [CANRESTOTHER]

AR1400.ARE is flagged 0b01010111 (87); [OUTDOOR] [DAYNIGHT] [WEATHER] [ 0 ] [FOREST] [ 0 ] [EXTENDEDNIGHT] [ 0 ]

AR1401.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR1402.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR1403.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR1404.ARE is flagged 0b00010101 (21); [OUTDOOR] [ 0 ] [WEATHER] [ 0 ] [FOREST] [ 0 ] [ 0 ] [ 0 ]

AR1500.ARE is flagged 0b00000011 (3); [OUTDOOR] [DAYNIGHT] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR1501.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR1502.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR1503.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR1504.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR1505.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR1506.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR1507.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR1508.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR1509.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR1510.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR1511.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR1512.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR1513.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR1514.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR1515.ARE is flagged 0b10100000 (160); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [CANRESTOTHER]

AR1516.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR1600.ARE is flagged 0b00001111 (15); [OUTDOOR] [DAYNIGHT] [WEATHER] [CITY] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR1601.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR1602.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR1603.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR1604.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR1605.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR1606.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR1607.ARE is flagged 0b00000101 (5); [OUTDOOR] [ 0 ] [WEATHER] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR1608.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR1609.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR1610.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR1611.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR1612.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR1613.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR1700.ARE is flagged 0b00000111 (7); [OUTDOOR] [DAYNIGHT] [WEATHER] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR1800.ARE is flagged 0b00010111 (23); [OUTDOOR] [DAYNIGHT] [WEATHER] [ 0 ] [FOREST] [ 0 ] [ 0 ] [ 0 ]

AR1900.ARE is flagged 0b00000111 (7); [OUTDOOR] [DAYNIGHT] [WEATHER] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR1901.ARE is flagged 0b10000000 (128); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [CANRESTOTHER]

AR1902.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR1904.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR1905.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR2000.ARE is flagged 0b01001111 (79); [OUTDOOR] [DAYNIGHT] [WEATHER] [CITY] [ 0 ] [ 0 ] [EXTENDEDNIGHT] [ 0 ]

AR2001.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR2002.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR2006.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR2007.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR2008.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR2009.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR2010.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR2011.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR2012.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR2013.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR2014.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR2015.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR2016.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR2017.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR2018.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR2100.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR2101.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR2102.ARE is flagged 0b10000000 (128); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [CANRESTOTHER]

AR2200.ARE is flagged 0b00001000 (8); [ 0 ] [ 0 ] [ 0 ] [CITY] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR2201.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR2202.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR2203.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR2204.ARE is flagged 0b10000000 (128); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [CANRESTOTHER]

AR2205.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR2206.ARE is flagged 0b10000000 (128); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [CANRESTOTHER]

AR2207.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR2208.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR2209.ARE is flagged 0b10000000 (128); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [CANRESTOTHER]

AR2210.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR2300.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR2400.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR2401.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR2402.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR2500.ARE is flagged 0b00010111 (23); [OUTDOOR] [DAYNIGHT] [WEATHER] [ 0 ] [FOREST] [ 0 ] [ 0 ] [ 0 ]

AR2600.ARE is flagged 0b00010111 (23); [OUTDOOR] [DAYNIGHT] [WEATHER] [ 0 ] [FOREST] [ 0 ] [ 0 ] [ 0 ]

AR2601.ARE is flagged 0b00010011 (19); [OUTDOOR] [DAYNIGHT] [ 0 ] [ 0 ] [FOREST] [ 0 ] [ 0 ] [ 0 ]

AR2602.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR2603.ARE is flagged 0b10000000 (128); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [CANRESTOTHER]

AR2700.ARE is flagged 0b00010111 (23); [OUTDOOR] [DAYNIGHT] [WEATHER] [ 0 ] [FOREST] [ 0 ] [ 0 ] [ 0 ]

AR2800.ARE is flagged 0b01001011 (75); [OUTDOOR] [DAYNIGHT] [ 0 ] [CITY] [ 0 ] [ 0 ] [EXTENDEDNIGHT] [ 0 ]

AR2801.ARE is flagged 0b10000000 (128); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [CANRESTOTHER]

AR2802.ARE is flagged 0b10000000 (128); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [CANRESTOTHER]

AR2803.ARE is flagged 0b10000000 (128); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [CANRESTOTHER]

AR2804.ARE is flagged 0b10000000 (128); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [CANRESTOTHER]

AR2805.ARE is flagged 0b10000000 (128); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [CANRESTOTHER]

AR2806.ARE is flagged 0b00000010 (2); [ 0 ] [DAYNIGHT] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR2807.ARE is flagged 0b01000011 (67); [OUTDOOR] [DAYNIGHT] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [EXTENDEDNIGHT] [ 0 ]

AR2808.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR2809.ARE is flagged 0b10000000 (128); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [CANRESTOTHER]

AR2810.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR2811.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR2812.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR2900.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR2901.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR2902.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR2903.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR2904.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR2905.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR3000.ARE is flagged 0b00010111 (23); [OUTDOOR] [DAYNIGHT] [WEATHER] [ 0 ] [FOREST] [ 0 ] [ 0 ] [ 0 ]

AR3001.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR3003.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR3004.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR3005.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR3006.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR3007.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR3008.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR3009.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR3010.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR3011.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR3012.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR3013.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR3014.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR3015.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR3016.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR3017.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR3018.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR3019.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR3020.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR3021.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR3022.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR3023.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR3024.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR3025.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR3026.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR3027.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR4000.ARE is flagged 0b00010101 (21); [OUTDOOR] [ 0 ] [WEATHER] [ 0 ] [FOREST] [ 0 ] [ 0 ] [ 0 ]

AR4500.ARE is flagged 0b10000000 (128); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [CANRESTOTHER]

AR5000.ARE is flagged 0b00001111 (15); [OUTDOOR] [DAYNIGHT] [WEATHER] [CITY] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR5001.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR5002.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR5003.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR5004.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR5005.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR5006.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR5007.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR5008.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR5009.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR5010.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR5011.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR5012.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR5013.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR5014.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR5015.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR5016.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR5200.ARE is flagged 0b00000101 (5); [OUTDOOR] [ 0 ] [WEATHER] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR5201.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR5202.ARE is flagged 0b00010111 (23); [OUTDOOR] [DAYNIGHT] [WEATHER] [ 0 ] [FOREST] [ 0 ] [ 0 ] [ 0 ]

AR5203.ARE is flagged 0b00000111 (7); [OUTDOOR] [DAYNIGHT] [WEATHER] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR5204.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR5500.ARE is flagged 0b00000011 (3); [OUTDOOR] [DAYNIGHT] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR5501.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR5502.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR5503.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR5504.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR5505.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR5506.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR5507.ARE is flagged 0b10000000 (128); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [CANRESTOTHER]

AR5508.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR5509.ARE is flagged 0b10100000 (160); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [CANRESTOTHER]

AR6000.ARE is flagged 0b00000111 (7); [OUTDOOR] [DAYNIGHT] [WEATHER] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR6001.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR6002.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR6003.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR6004.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR6005.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR6008.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR6011.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR6012.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR6100.ARE is flagged 0b00010111 (23); [OUTDOOR] [DAYNIGHT] [WEATHER] [ 0 ] [FOREST] [ 0 ] [ 0 ] [ 0 ]

AR6101.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR6102.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR6103.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR6104.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR6105.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR6106.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR6107.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR6108.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR6109.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

AR6110.ARE is flagged 0b10100000 (160); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [CANRESTOTHER]

AR6111.ARE is flagged 0b10000000 (128); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [CANRESTOTHER]

AR6200.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR6300.ARE is flagged 0b00000111 (7); [OUTDOOR] [DAYNIGHT] [WEATHER] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

AR6400.ARE is flagged 0b00000111 (7); [OUTDOOR] [DAYNIGHT] [WEATHER] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

OH4000.ARE is flagged 0b01010111 (87); [OUTDOOR] [DAYNIGHT] [WEATHER] [ 0 ] [FOREST] [ 0 ] [EXTENDEDNIGHT] [ 0 ]

OH4010.ARE is flagged 0b00010111 (23); [OUTDOOR] [DAYNIGHT] [WEATHER] [ 0 ] [FOREST] [ 0 ] [ 0 ] [ 0 ]

OH4100.ARE is flagged 0b01000011 (67); [OUTDOOR] [DAYNIGHT] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [EXTENDEDNIGHT] [ 0 ]

OH4101.ARE is flagged 0b01000010 (66); [ 0 ] [DAYNIGHT] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [EXTENDEDNIGHT] [ 0 ]

OH4200.ARE is flagged 0b01010111 (87); [OUTDOOR] [DAYNIGHT] [WEATHER] [ 0 ] [FOREST] [ 0 ] [EXTENDEDNIGHT] [ 0 ]

OH4210.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

OH4220.ARE is flagged 0b10100000 (160); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [CANRESTOTHER]

OH4230.ARE is flagged 0b10100000 (160); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [CANRESTOTHER]

OH4290.ARE is flagged 0b00010011 (19); [OUTDOOR] [DAYNIGHT] [ 0 ] [ 0 ] [FOREST] [ 0 ] [ 0 ] [ 0 ]

OH5000.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

OH5100.ARE is flagged 0b11010111 (215); [OUTDOOR] [DAYNIGHT] [WEATHER] [ 0 ] [FOREST] [ 0 ] [EXTENDEDNIGHT] [CANRESTOTHER]

OH5110.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

OH5120.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

OH5200.ARE is flagged 0b11010111 (215); [OUTDOOR] [DAYNIGHT] [WEATHER] [ 0 ] [FOREST] [ 0 ] [EXTENDEDNIGHT] [CANRESTOTHER]

OH5300.ARE is flagged 0b11010011 (211); [OUTDOOR] [DAYNIGHT] [ 0 ] [ 0 ] [FOREST] [ 0 ] [EXTENDEDNIGHT] [CANRESTOTHER]

OH5400.ARE is flagged 0b00010101 (21); [OUTDOOR] [ 0 ] [WEATHER] [ 0 ] [FOREST] [ 0 ] [ 0 ] [ 0 ]

OH5500.ARE is flagged 0b00000001 (1); [OUTDOOR] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

OH6000.ARE is flagged 0b01010111 (87); [OUTDOOR] [DAYNIGHT] [WEATHER] [ 0 ] [FOREST] [ 0 ] [EXTENDEDNIGHT] [ 0 ]

OH6010.ARE is flagged 0b01001011 (75); [OUTDOOR] [DAYNIGHT] [ 0 ] [CITY] [ 0 ] [ 0 ] [EXTENDEDNIGHT] [ 0 ]

OH6100.ARE is flagged 0b01010111 (87); [OUTDOOR] [DAYNIGHT] [WEATHER] [ 0 ] [FOREST] [ 0 ] [EXTENDEDNIGHT] [ 0 ]

OH6200.ARE is flagged 0b01010111 (87); [OUTDOOR] [DAYNIGHT] [WEATHER] [ 0 ] [FOREST] [ 0 ] [EXTENDEDNIGHT] [ 0 ]

OH6300.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

OH6400.ARE is flagged 0b11000011 (195); [OUTDOOR] [DAYNIGHT] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [EXTENDEDNIGHT] [CANRESTOTHER]

OH6450.ARE is flagged 0b01000011 (67); [OUTDOOR] [DAYNIGHT] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [EXTENDEDNIGHT] [ 0 ]

OH6460.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

OH6500.ARE is flagged 0b01000010 (66); [ 0 ] [DAYNIGHT] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [EXTENDEDNIGHT] [ 0 ]

OH7000.ARE is flagged 0b10100000 (160); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [CANRESTOTHER]

OH7100.ARE is flagged 0b10100000 (160); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [CANRESTOTHER]

OH7200.ARE is flagged 0b10100000 (160); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [CANRESTOTHER]

OH7300.ARE is flagged 0b10100000 (160); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [CANRESTOTHER]

OH7310.ARE is flagged 0b00000001 (1); [OUTDOOR] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

OH8000.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

OH8100.ARE is flagged 0b00000000 (0); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ]

OH8200.ARE is flagged 0b01000011 (67); [OUTDOOR] [DAYNIGHT] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [EXTENDEDNIGHT] [ 0 ]

OH8300.ARE is flagged 0b01000111 (71); [OUTDOOR] [DAYNIGHT] [WEATHER] [ 0 ] [ 0 ] [ 0 ] [EXTENDEDNIGHT] [ 0 ]

OH8400.ARE is flagged 0b01000111 (71); [OUTDOOR] [DAYNIGHT] [WEATHER] [ 0 ] [ 0 ] [ 0 ] [EXTENDEDNIGHT] [ 0 ]

OH9000.ARE is flagged 0b10000000 (128); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [CANRESTOTHER]

OH9100.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

XR2400.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

XR2600.ARE is flagged 0b00100000 (32); [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [DUNGEON] [ 0 ] [ 0 ]

///// Area Type Checker - End Log \\\\\

 

 

 

 

I know real programmers will find the extra [ 0 ] data silly, but since a non-programmer can easily think of each bit as a lightswitch, I might as well leave to [ 0 ] as a reminder that there are eight switches, and we are just looking for what ones are "on".

 

Thank you all very much!

Link to comment

 

Since it is 2 bytes, using READ_BYTE instead of READ_SHORT means that you are only fetching half of the field. In this case, it doesn't matter, because the other bits aren't used in BG, but it's something to keep in mind.

Got it - in this case, only the first byte is used; the older discussion about FL_INN and FL_STRONGHOLDS was predicated on using the additional 8 possible on the second byte, right? So looking at the second byte would be needed to detect FL_INN or such. I think.

 

Yes. I guess what I was trying to convey is there's no harm in using READ_SHORT here, unless you are deliberately trying not to read the 2nd byte.

 

 

Note that 0b11 is not checking the value of bit 3, it is checking the value of bits 0 and 1. Bit 3 is located at 0b1000

I am not sure I understand...

 

I thought the usage looked like 0b00 0b01 0b11 0b100 (decimals 0 1 2 3) and that the operation was looking inside %flags% to find those numbered bits. (Taking that year off really messed me up on this stuff.)

 

Bit 0, bit 1, bit 2, etc. refer to the different positions in the string, from right to left. They are equivalent to digits.

 

The binary value 0b1101 has 4 bits. The value of bit 0 is 1, the value of bit 1 is 0, the value of bit 2 is 1, and the value of bit 3 is 1.

 

 

You do want to be using binary and (BAND/&) instead of logical and (AND/&&).

 

(flags & 0b00000001) == 0b00000001 will return true if bit 0 is set

(flags & 0b00000010) == 0b00000010 will return true if bit 1 is set

(flags & 0b00000100) == 0b00000100 will return true if bit 2 is set

etc.

 

I added a comparison here, to make it clear that the value returned from the first part is actually 1, 2, 4, etc. depending on which bit is checked. Without the comparison, those values would all still resolve to true, but they wouldn't all equal 1.

Ah, so comparison values as binary, and working with binary, because I want to get at information stored within a byte

 

We're using bitwise operations and comparing against binary values because the information in that byte is stored bitwise. If we were reading, say, the target field from a spell's feature block, there wouldn't be a need for that.

 

So the

 

(%flags% & 0b00000001) == 0b00000001 will return true if bit 0 is set

(%flags% & 0b00000010) == 0b00000010 will return true if bit 1 is set

(%flags% & 0b00000100) == 0b00000100 will return true if bit 2 is set

 

is stated like

 

if x (value read in at 0x48 stated in binary)

at bit y (0b00000001)

is the same as 0b00000001

then it is true

and bit 0 is not a 0, it is a 1

 

? Am I close?

Let's run through a quick example. Suppose flags has a value of 0b01001011 (which means Outdoor, Day/Night, City, and Extended Night are set, and Weather, Forest, Dungeon, and Can Rest are unset).

 

Ex. 1 - Check Outdoor: (flags & 0b00000001)

0b01001011
0b00000001
----------
0b00000001 = 1
Ex. 2 - Check Day/Night: (flags & 0b00000010):

0b01001011
0b00000010
----------
0b00000010 = 2
Ex. 3 - Check Weather: (flags & 0b00000100):

0b01001011
0b00000100
----------
0b00000000 = 0
The effect of performing (flags & 0b00000010) is to mask out all of the other bits except the ones we are interested in. The return value for these cases is either 0 or 2^x, where x is the bit we are checking. Since PATCH_IF treats every value that's not 0 as true, you can use this as-is, but I prefer to add an extra comparison: (flags & 0b00000010) == 0b00000010. This will return either 0 or 1 (and it's a good habit in case you are using a programming language that uses actual boolean values for its conditionals).

 

Let's take a look at a more advanced example to see how the extra comparison comes in handy. Suppose we wanted to check something like whether the area is a city that is not outdoors.

 

Ex. 4 - Check Outdoor, City: (flags & 0b00001001)

0b01001011
0b00001001
----------
0b00001001 = 9
If we check (flags & 0b00001001) == 0b00001001, we can determine if the area is a city that is outdoors.

If we check (flags & 0b00001001) == 0b00001000, we can determine if the area is a city that is not outdoors.

If we check (flags & 0b00001001) == 0b00000001, we can determine if the area is not a city but is outdoors.

If we check (flags & 0b00001001) == 0b00000000, we can determine if the area is not a city and is not outdoors.

 

Edit: wait a sec - on the single byte field, we couldn't have that -5 converted, right? there are only 8 bits there, and the number has 10 places...

I was testing out the bits parameter, so that output is from when I told it to use 10 bits.

 

The value -5 requires 4 bits to represent (0b1011), so it can fit into an 8-bit field (0b11111011), 16-bit field (0b1111111111111011), or 32-bit field (0b11111111111111111111111111111011).

The value 5 behaves the same, requiring 4 bits (0b0101), but fitting in 8 bits (0b00000101), 16 bits (0b0000000000000101), or 32 bits (0b00000000000000000000000000000101).

 

Adding additional 0s (for positive numbers) or 1s (for negative numbers) to the left is equivalent to adding extra 0s to pad out a decimal number (12 vs. 0012 vs. 000000000000000012).

 

If you had the value -300, you wouldn't be able to fit that into a single byte, since it requires 10 bits (0b1011010100).

Link to comment

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...