Posted by: Grim Squeaker
« on: April 19, 2005, 03:58:47 AM »Not that I understand all of that code, but might it be an idea to automate it as some kind of INSERT_STORE_ITEM or something.
COPY_EXISTING ~scrolls.sto~ ~override~ // The Pen and Parchment Store
READ_LONG 0x34 "sale_offset"
READ_LONG 0x38 "sale_num"
WRITE_LONG 0x38 ("%sale_num%" + 1)
READ_LONG 0x2C "item_offset"
READ_LONG 0x4C "drink_offset"
READ_LONG 0x70 "cure_offset"
WHILE ("%sale_num%" > 0) BEGIN
SET "sale_num" = ("%sale_num%" - 1)
READ_ASCII ("%sale_offset%" + ("%sale_num%" * 0x1C)) "item"
PATCH_IF (("%item%" STRING_COMPARE_CASE "scrl1t" = 0) OR ("%sale_num%" = 0)) BEGIN
INSERT_BYTES ("%sale_offset%" + ("%sale_num%" * 0x1C)) 0x1c
WRITE_ASCII ("%sale_offset%" + ("%sale_num%" * 0x1C)) ~u!scrl03~
WRITE_LONG ("%sale_offset%" + 0x10 + ("%sale_num%" * 0x1C)) 1 // identified
WRITE_LONG ("%sale_offset%" + 0x14 + ("%sale_num%" * 0x1C)) 5 // quantity
SET "sale_num" = 0
END
END
PATCH_IF NOT ("%item_offset%" < "%sale_offset%") BEGIN
WRITE_LONG 0x2C ("%item_offset%" + 0x1C)
END
PATCH_IF NOT ("%drink_offset%" < "%sale_offset%") BEGIN
WRITE_LONG 0x4C ("%drink_offset%" + 0x1C)
END
PATCH_IF NOT ("%cure_offset%" < "%sale_offset%") BEGIN
WRITE_LONG 0x70 ("%cure_offset%" + 0x1C)
END
COPY_EXISTING ~scrolls.sto~ ~override/scrolls.sto~ /* The Pen and Parchment Store */
READ_LONG 0x34 "sale_offset"
READ_LONG 0x38 "sale_num"
READ_LONG 0x2C "item_offset"
READ_LONG 0x4C "drink_offset"
READ_LONG 0x70 "cure_offset"
SET "orig_sale_num" = "%sale_num%"
SET "wraithform_added" = 0
SET "wraithform_insert" = 0
WHILE ("%sale_num%" > 0) BEGIN
READ_ASCII ("%sale_offset%" + (("%sale_num%" - 1) * 0x1C)) "item"
PATCH_IF ((("%item%" STRING_COMPARE_CASE "scrl1Q") = 0) AND ("%wraithform_insert%" = 0)) BEGIN
SET "wraithform_insert" = "%sale_num%"
END
SET "sale_num" = ("%sale_num%" - 1)
END
PATCH_IF ("%wraithform_insert%" > 0) BEGIN
WRITE_LONG 0x38 ("%orig_sale_num%" + 1)
INSERT_BYTES ("%sale_offset%" + ("%wraithform_insert%" * 0x1C)) 28
WRITE_ASCII ("%sale_offset%" + ("%wraithform_insert%" * 0x1C)) ~u!scrl03~
WRITE_LONG ("%sale_offset%" + 0x10 + ("%wraithform_insert%" * 0x1C)) 1 // identified
WRITE_LONG ("%sale_offset%" + 0x14 + ("%wraithform_insert%" * 0x1C)) 5 // quantity
PATCH_IF NOT ("%item_offset%" < "%sale_offset%") BEGIN
WRITE_LONG 0x2C ("%item_offset%" + 0x1C)
END
PATCH_IF NOT ("%drink_offset%" < "%sale_offset%") BEGIN
WRITE_LONG 0x4C ("%drink_offset%" + 0x1C)
END
PATCH_IF NOT ("%cure_offset%" < "%sale_offset%") BEGIN
WRITE_LONG 0x70 ("%cure_offset%" + 0x1C)
END
END
COPY_EXISTING ~scrolls.sto~ ~override/scrolls.sto~ /* The Pen and Parchment Store */
READ_LONG 0x34 "sale_offset"
READ_LONG 0x38 "sale_num"
READ_LONG 0x2C "item_offset"
READ_LONG 0x4C "drink_offset"
READ_LONG 0x70 "cure_offset"
SET "orig_sale_num" = "%sale_num%"
SET "wraithform_added" = 0
SET "wraithform_insert" = 0
WHILE ("%sale_num%" > 0) BEGIN
READ_ASCII ("%sale_offset%" + (("%sale_num%" - 1) * 0x1C)) "item1"
READ_ASCII ("%sale_offset%" + 0x04 + (("%sale_num%" - 1) * 0x1C)) "item2"
// PATCH_IF (("%item1%" STRING_COMPARE_CASE "scrl1Q") = 0) AND ("%item2%" STRING_COMPARE_CASE "scrl1T") = 0) AND ("%wraithform_insert%" = 0)) BEGIN
PATCH_IF ((("%item%" STRING_COMPARE_CASE "scrl1Q") = 0) AND ("%wraithform_insert%" = 0)) BEGIN
// between Vampiric Touch and Ghost Armour
SET "wraithform_insert" = "%sale_num%"
END
SET "sale_num" = ("%sale_num%" - 1)
END
PATCH_IF ("%wraithform_insert%" > 0) BEGIN
WRITE_LONG 0x38 ("%orig_sale_num%" + 1)
INSERT_BYTES ("%sale_offset%" + ("%wraithform_insert%" * 0x1C)) 28
WRITE_ASCII ("%sale_offset%" + ("%wraithform_insert%" * 0x1C)) ~u!scrl03~
WRITE_LONG ("%sale_offset%" + 0x10 + ("%wraithform_insert%" * 0x1C)) 1 // identified
WRITE_LONG ("%sale_offset%" + 0x14 + ("%wraithform_insert%" * 0x1C)) 5 // quantity
PATCH_IF NOT ("%item_offset%" < "%sale_offset%") BEGIN
WRITE_LONG 0x2C ("%item_offset%" + 0x1C)
END
PATCH_IF NOT ("%drink_offset%" < "%sale_offset%") BEGIN
WRITE_LONG 0x4C ("%drink_offset%" + 0x1C)
END
PATCH_IF NOT ("%cure_offset%" < "%sale_offset%") BEGIN
WRITE_LONG 0x70 ("%cure_offset%" + 0x1C)
END
END
COPY_EXISTING ~scrolls.sto~ ~override/scrolls.sto~ /* The Pen and Parchment Store */
READ_LONG 0x34 "sale_offset"
READ_LONG 0x38 "sale_num"
READ_LONG 0x2C "item_offset"
READ_LONG 0x4C "drink_offset"
READ_LONG 0x70 "cure_offset"
SET "orig_sale_num" = "%sale_num%"
SET "wraithform_added" = 0
SET "wraithform_insert" = 0
WHILE ("%sale_num%" > 0) BEGIN
READ_LONG ("%sale_offset%" + (("%sale_num%" - 1) * 0x1C)) "item1"
READ_LONG ("%sale_offset%" + 0x04 + (("%sale_num%" - 1) * 0x1C)) "item2"
PATCH_IF (("%item1%" = 0x51314C524353) AND ("%item2%" = 0X51314C524353) AND ("%wraithform_insert%" = 0)) BEGIN // between Vampiric Touch and Ghost Armour
SET "wraithform_insert" = "%sale_num%"
END
SET "sale_num" = ("%sale_num%" - 1)
END
PATCH_IF ("%wraithform_insert%" > 0) BEGIN
WRITE_LONG 0x38 ("%orig_sale_num%" + 1)
INSERT_BYTES ("%sale_offset%" + ("%wraithform_insert%" * 0x1C)) 28
WRITE_ASCII ("%sale_offset%" + ("%wraithform_insert%" * 0x1C)) ~u!scrl03~
WRITE_LONG ("%sale_offset%" + 0x10 + ("%wraithform_insert%" * 0x1C)) 1 // identified
WRITE_LONG ("%sale_offset%" + 0x14 + ("%wraithform_insert%" * 0x1C)) 5 // quantity
PATCH_IF NOT ("%item_offset%" < "%sale_offset%") BEGIN
WRITE_LONG 0x2C ("%item_offset%" + 0x1C)
END
PATCH_IF NOT ("%drink_offset%" < "%sale_offset%") BEGIN
WRITE_LONG 0x4C ("%drink_offset%" + 0x1C)
END
PATCH_IF NOT ("%cure_offset%" < "%sale_offset%") BEGIN
WRITE_LONG 0x70 ("%cure_offset%" + 0x1C)
END
END
PATCH_IF (("%item1%" = 0x51314C524353) AND ("%item2%" = 0X51314C524353) AND ("%wraithform_insert%" = 0)) BEGIN // between Vampiric Touch and Ghost Armour