[codebox]
COPY_EXISTING_REGEXP GLOB ~^.+\.cre$~ ~override~
PATCH_IF (SOURCE_SIZE > 0x2d3) BEGIN // protects against invalid files
READ_LONG 0x2bc "itm_off"
READ_LONG 0x2c0 "itm_num"
WHILE ("%itm_num%" > 0) BEGIN
SET "itm_num" = ("%itm_num%" - 1)
READ_ASCII ("%itm_off%" + (0x14 * "%itm_num%")) "item"
PATCH_IF ("%item%" STRING_MATCHES_REGEXP "ring07" = 0) BEGIN
READ_BYTE ("%itm_off%" + 0x10 + (0x14 * "%itm_num%")) "flags"
WRITE_BYTE ("%itm_off%" + 0x10 + (0x14 * "%itm_num%")) ("%flags%" BOR 0b00001010) // adds unstealable, undroppable flags
END
END
END
BUT_ONLY_IF_IT_CHANGES
//Ring of Protection +2 ring07 //aran linvail ARAN02 (side with Bodhi); ARAN.DLG - when siding with thieves he create it in dialog
COPY_EXISTING ~ARAN02.CRE~ ~override/ARAN02.CRE~
PATCH_IF (SOURCE_SIZE > 0x2d3) BEGIN
READ_LONG 0x2bc "itm_off"
READ_LONG 0x2c0 "itm_num"
WHILE ("%itm_num%" > 0) BEGIN
SET "itm_num" = ("%itm_num%" - 1)
READ_ASCII ("%itm_off%" + (0x14 * "%itm_num%")) "item"
PATCH_IF ("%item%" STRING_COMPARE_CASE "ring07" = 0) BEGIN
READ_BYTE ("%itm_off%" + 0x10 + (0x14 * "%itm_num%")) "flags"
WRITE_BYTE ("%itm_off%" + 0x10 + (0x14 * "%itm_num%")) ("%flags%" BAND 0b11110101) // adds stealable&droppable flag
SET "itm_num" = 0
END
END
END
BUT_ONLY_IF_IT_CHANGES
[/codebox]
it works just fine. Ring07 at aran02.cre is stealable and droppable.
But if I add absolutely unrelated piece of code about varscona BEFORE:
[codebox]
COPY_EXISTING_REGEXP GLOB ~^.+\.cre$~ ~override~
PATCH_IF (SOURCE_SIZE > 0x2d3) BEGIN // protects against invalid files
READ_LONG 0x2bc "itm_off"
READ_LONG 0x2c0 "itm_num"
WHILE ("%itm_num%" > 0) BEGIN
SET "itm_num" = ("%itm_num%" - 1)
READ_ASCII ("%itm_off%" + (0x14 * "%itm_num%")) "item"
PATCH_IF ("%item%" STRING_MATCHES_REGEXP "ring07" = 0) BEGIN
READ_BYTE ("%itm_off%" + 0x10 + (0x14 * "%itm_num%")) "flags"
WRITE_BYTE ("%itm_off%" + 0x10 + (0x14 * "%itm_num%")) ("%flags%" BOR 0b00001010) // adds unstealable, undroppable flags
END
END
END
BUT_ONLY_IF_IT_CHANGES
//Long Sword +2: 'Varscona' sw1h06 - left at Kachiko c6kach2.cre (a thief to help with bodhi) GREYWO - creywolf from bg1
COPY_EXISTING ~c6kach2.cre~ ~override/c6kach2.cre~
PATCH_IF (SOURCE_SIZE > 0x2d3) BEGIN
READ_LONG 0x2bc "itm_off"
READ_LONG 0x2c0 "itm_num"
WHILE ("%itm_num%" > 0) BEGIN
SET "itm_num" = ("%itm_num%" - 1)
READ_ASCII ("%itm_off%" + (0x14 * "%itm_num%")) "item"
PATCH_IF ("%item%" STRING_COMPARE_CASE "sw1h41" = 0) BEGIN
WRITE_ASCII ("%itm_off%" + (0x14 * "%itm_num%")) "sw1h06" //restore
SET "%itm_num%" = 0
END
END
END
BUT_ONLY_IF_IT_CHANGES
//Ring of Protection +2 ring07 //aran linvail ARAN02 (side with Bodhi); ARAN.DLG - when siding with thieves he create it in dialog
COPY_EXISTING ~ARAN02.CRE~ ~override/ARAN02.CRE~
PATCH_IF (SOURCE_SIZE > 0x2d3) BEGIN
READ_LONG 0x2bc "itm_off"
READ_LONG 0x2c0 "itm_num"
WHILE ("%itm_num%" > 0) BEGIN
SET "itm_num" = ("%itm_num%" - 1)
READ_ASCII ("%itm_off%" + (0x14 * "%itm_num%")) "item"
PATCH_IF ("%item%" STRING_COMPARE_CASE "ring07" = 0) BEGIN
READ_BYTE ("%itm_off%" + 0x10 + (0x14 * "%itm_num%")) "flags"
WRITE_BYTE ("%itm_off%" + 0x10 + (0x14 * "%itm_num%")) ("%flags%" BAND 0b11110101) // adds stealable&droppable flag
SET "itm_num" = 0
END
END
END
BUT_ONLY_IF_IT_CHANGES
[/codebox]
then ring07 at aran02.cre remains unstealable and undroppable. I'm confused.
Edited by Gort, 10 June 2007 - 02:17 AM.