Jump to content

Book of Infinite Cheese


Recommended Posts

The same as rod of lordly might, is found unidentified. I also took the liberty of making some of the books not suck (like spells, mostly target/range funk):

COPY_EXISTING MISC3A.ITM OVERRIDE
WRITE_ASCII 0xae IMISC3A #8
WRITE_BYTE 0x7e 0x4
WRITE_BYTE 0xab 0x1
WRITE_SHORT 0x42 0x50
WRITE_SHORT 0x80 0x28
READ_LONG 0x6a eo
WRITE_ASCII eo + 0x224 MISC3AA #8
WRITE_LONG eo 0x10094
WRITE_BYTE eo + 0x24d 0x0

COPY_EXISTING MISC3A.ITM "OVERRIDE/MISC3AA.ITM"
WRITE_SHORT 0x42 0x0
READ_LONG 0x6a eo
WRITE_ASCII eo + 0x44 MISC3AA #8

COPY_EXISTING MISC3A1.ITM OVERRIDE
WRITE_ASCII 0xae IMISC3A #8
WRITE_BYTE 0xab 0x1
WRITE_SHORT 0x80 0x1
READ_LONG 0x6a eo
WRITE_ASCII eo + 0x224 MISC3AA #8
WRITE_BYTE eo + 0xd 0x0

COPY_EXISTING MISC3A2.ITM OVERRIDE
WRITE_ASCII 0xae IMISC3A #8
WRITE_BYTE 0xab 0x1
READ_LONG 0x6a eo
WRITE_ASCII eo + 0x224 MISC3AA #8

COPY_EXISTING MISC3A3.ITM OVERRIDE
WRITE_ASCII 0xae IMISC3A #8
WRITE_BYTE 0x7e 0x5
WRITE_BYTE 0xab 0x1
READ_LONG 0x6a eo
WRITE_ASCII eo + 0x14 SPWI609 #8
WRITE_ASCII eo + 0x224 MISC3AA #8
WRITE_BYTE eo + 0x2 0x1

COPY_EXISTING MISC3A4.ITM OVERRIDE
WRITE_ASCII 0xae IMISC3A #8
WRITE_BYTE 0xab 0x1
READ_LONG 0x6a eo
WRITE_ASCII eo + 0x224 MISC3AA #8

COPY_EXISTING MISC3A5.ITM OVERRIDE
WRITE_ASCII 0xae IMISC3A #8
WRITE_BYTE 0xab 0x1
READ_LONG 0x6a eo
WRITE_ASCII eo + 0x224 MISC3AA #8

COPY_EXISTING MISC3A6.ITM OVERRIDE
WRITE_ASCII 0xae IMISC3A #8
WRITE_BYTE 0x7e 0x4
WRITE_BYTE 0xab 0x1
READ_LONG 0x6a eo
WRITE_ASCII eo + 0x224 MISC3AA #8
WRITE_SHORT eo 0x94

COPY_EXISTING MISC3A7.ITM OVERRIDE
WRITE_ASCII 0xae IMISC3A #8
WRITE_BYTE 0x7e 0x4
WRITE_BYTE 0xab 0x1
WRITE_SHORT 0x80 0x28
READ_LONG 0x6a eo
WRITE_ASCII eo + 0x224 MISC3AA #8
WRITE_LONG eo 0x10094

COPY_EXISTING MISC3A8.ITM OVERRIDE
WRITE_ASCII 0xae IMISC3A #8
WRITE_BYTE 0xab 0x1
WRITE_SHORT 0x80 0x64
READ_LONG 0x6a eo
WRITE_ASCII eo + 0x224 MISC3AA #8

Link to comment

Coded, with two exceptions: in places where you set range > 30, I just set it to 30; and I didn't change from the priest True Seeing to the mage True Sight.

 

COPY_EXISTING ~misc3a.itm~ ~override/misc3aa.itm~ // zero lore copy
             ~misc3a.itm~ ~override/misc3a.itm~
 READ_LONG   0x64 "abil_off" ELSE 0
 READ_SHORT  0x68 "abil_num" ELSE 0
 READ_LONG   0x6a "fx_off"   ELSE 0
 PATCH_IF ("%SOURCE_RES%" STRING_COMPARE_CASE "%DEST_RES%" = 0) BEGIN // original book
   WRITE_SHORT 0x42 80 // lore
 END
 SET "abil_length" = 0x38
 FOR (index = 0 ; index < abil_num ; index = index + 1) BEGIN // start iterating through abilities
   WRITE_BYTE  ("%abil_off%" + 0x01 + ("%abil_length%" * "%index%")) 1 // identify to use
   READ_ASCII  ("%abil_off%" + 0x04 + ("%abil_length%" * "%index%")) "icon"
   READ_SHORT  ("%abil_off%" + 0x1e + ("%abil_length%" * "%index%")) "abil_fx_num"
   READ_SHORT  ("%abil_off%" + 0x20 + ("%abil_length%" * "%index%")) "abil_fx_idx"
   // page turning
   PATCH_IF ("%icon%" STRING_COMPARE_CASE "iscrl02" = 0) BEGIN
     WRITE_ASCII  ("%abil_off%" + 0x04 + ("%abil_length%" * "%index%")) "imisc3a" #8
     FOR (index2 = 0 ; index2 < abil_fx_num ; index2 = index2 + 1) BEGIN
       READ_SHORT ("%fx_off%" +        (0x30 * ("%abil_fx_idx%" + "%index2%"))) "opcode"
       READ_ASCII ("%fx_off%" + 0x14 + (0x30 * ("%abil_fx_idx%" + "%index2%"))) "resref"
       PATCH_IF (("%opcode%" = 122) AND ("%resref%" STRING_COMPARE_CASE "misc3a" = 0)) BEGIN // change to original book
         WRITE_ASCII ("%fx_off%" + 0x14 + (0x30 * ("%abil_fx_idx%" + "%index2%"))) ~misc3aa~ #8 // new item
       END ELSE
       PATCH_IF ("%opcode%" = 123) BEGIN // remove item
         WRITE_ASCIIE ("%fx_off%" + 0x14 + (0x30 * ("%abil_fx_idx%" + "%index2%"))) ~%DEST_RES%~ // self
       END ELSE
       PATCH_IF ("%opcode%" = 174) BEGIN // play sound
         WRITE_BYTE ("%fx_off%" + 0x0d + (0x30 * ("%abil_fx_idx%" + "%index2%"))) 0 // sound should bypass MR
       END
     END
   END
   // spell casting
   PATCH_IF ("%icon%" STRING_COMPARE_CASE "imisc3a" = 0) BEGIN
     WRITE_BYTE  ("%abil_off%" + 0x0c + ("%abil_length%" * "%index%"))  4 // target: any point within range
     WRITE_SHORT ("%abil_off%" + 0x0e + ("%abil_length%" * "%index%")) 30 // range
     FOR (index2 = 0 ; index2 < abil_fx_num ; index2 = index2 + 1) BEGIN
       READ_SHORT ("%fx_off%" +        (0x30 * ("%abil_fx_idx%" + "%index2%"))) "opcode"
       PATCH_IF ("%opcode%" = 146) BEGIN // cast spell
         WRITE_SHORT ("%fx_off%" +        (0x30 * ("%abil_fx_idx%" + "%index2%"))) 148
         WRITE_SHORT ("%fx_off%" + 0x02 + (0x30 * ("%abil_fx_idx%" + "%index2%"))) 1 // target: self
       END
     END
   END
 END
 BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~misc3a1.itm~ ~override~
 READ_LONG   0x64 "abil_off" ELSE 0
 READ_SHORT  0x68 "abil_num" ELSE 0
 READ_LONG   0x6a "fx_off"   ELSE 0
 SET "abil_length" = 0x38
 FOR (index = 0 ; index < abil_num ; index = index + 1) BEGIN // start iterating through abilities
   WRITE_BYTE  ("%abil_off%" + 0x01 + ("%abil_length%" * "%index%")) 1 // identify to use
   READ_ASCII  ("%abil_off%" + 0x04 + ("%abil_length%" * "%index%")) "icon"
   READ_SHORT  ("%abil_off%" + 0x1e + ("%abil_length%" * "%index%")) "abil_fx_num"
   READ_SHORT  ("%abil_off%" + 0x20 + ("%abil_length%" * "%index%")) "abil_fx_idx"
   // page turning
   PATCH_IF ("%icon%" STRING_COMPARE_CASE "iscrl02" = 0) BEGIN
     WRITE_ASCII  ("%abil_off%" + 0x04 + ("%abil_length%" * "%index%")) "imisc3a" #8
     FOR (index2 = 0 ; index2 < abil_fx_num ; index2 = index2 + 1) BEGIN
       READ_SHORT ("%fx_off%" +        (0x30 * ("%abil_fx_idx%" + "%index2%"))) "opcode"
       READ_ASCII ("%fx_off%" + 0x14 + (0x30 * ("%abil_fx_idx%" + "%index2%"))) "resref"
       PATCH_IF (("%opcode%" = 122) AND ("%resref%" STRING_COMPARE_CASE "misc3a" = 0)) BEGIN // change to original book
         WRITE_ASCII ("%fx_off%" + 0x14 + (0x30 * ("%abil_fx_idx%" + "%index2%"))) ~misc3aa~ #8 // new item
       END
     END
   END
   // spell casting
   PATCH_IF ("%icon%" STRING_COMPARE_CASE "imisc3a" = 0) BEGIN
     WRITE_SHORT ("%abil_off%" + 0x0e + ("%abil_length%" * "%index%"))  1 // range
     FOR (index2 = 0 ; index2 < abil_fx_num ; index2 = index2 + 1) BEGIN
       READ_SHORT ("%fx_off%" +        (0x30 * ("%abil_fx_idx%" + "%index2%"))) "opcode"
       PATCH_IF ("%opcode%" = 146) BEGIN // cast spell
         WRITE_BYTE ("%fx_off%" + 0x0d + (0x30 * ("%abil_fx_idx%" + "%index2%"))) 0 // sound should bypass MR
       END
     END
   END
 END
 BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~misc3a2.itm~ ~override~
             ~misc3a4.itm~ ~override~
             ~misc3a5.itm~ ~override~
 READ_LONG   0x64 "abil_off" ELSE 0
 READ_SHORT  0x68 "abil_num" ELSE 0
 READ_LONG   0x6a "fx_off"   ELSE 0
 SET "abil_length" = 0x38
 FOR (index = 0 ; index < abil_num ; index = index + 1) BEGIN // start iterating through abilities
   WRITE_BYTE  ("%abil_off%" + 0x01 + ("%abil_length%" * "%index%")) 1 // identify to use
   READ_ASCII  ("%abil_off%" + 0x04 + ("%abil_length%" * "%index%")) "icon"
   READ_SHORT  ("%abil_off%" + 0x1e + ("%abil_length%" * "%index%")) "abil_fx_num"
   READ_SHORT  ("%abil_off%" + 0x20 + ("%abil_length%" * "%index%")) "abil_fx_idx"
   // page turning
   PATCH_IF ("%icon%" STRING_COMPARE_CASE "iscrl02" = 0) BEGIN
     WRITE_ASCII  ("%abil_off%" + 0x04 + ("%abil_length%" * "%index%")) "imisc3a" #8
     FOR (index2 = 0 ; index2 < abil_fx_num ; index2 = index2 + 1) BEGIN
       READ_SHORT ("%fx_off%" +        (0x30 * ("%abil_fx_idx%" + "%index2%"))) "opcode"
       READ_ASCII ("%fx_off%" + 0x14 + (0x30 * ("%abil_fx_idx%" + "%index2%"))) "resref"
       PATCH_IF (("%opcode%" = 122) AND ("%resref%" STRING_COMPARE_CASE "misc3a" = 0)) BEGIN // change to original book
         WRITE_ASCII ("%fx_off%" + 0x14 + (0x30 * ("%abil_fx_idx%" + "%index2%"))) ~misc3aa~ #8 // new item
       END
     END
   END
 END
 BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~misc3a3.itm~ ~override~
 READ_LONG   0x64 "abil_off" ELSE 0
 READ_SHORT  0x68 "abil_num" ELSE 0
 READ_LONG   0x6a "fx_off"   ELSE 0
 SET "abil_length" = 0x38
 FOR (index = 0 ; index < abil_num ; index = index + 1) BEGIN // start iterating through abilities
   WRITE_BYTE  ("%abil_off%" + 0x01 + ("%abil_length%" * "%index%")) 1 // identify to use
   READ_ASCII  ("%abil_off%" + 0x04 + ("%abil_length%" * "%index%")) "icon"
   READ_SHORT  ("%abil_off%" + 0x1e + ("%abil_length%" * "%index%")) "abil_fx_num"
   READ_SHORT  ("%abil_off%" + 0x20 + ("%abil_length%" * "%index%")) "abil_fx_idx"
   // page turning
   PATCH_IF ("%icon%" STRING_COMPARE_CASE "iscrl02" = 0) BEGIN
     WRITE_ASCII  ("%abil_off%" + 0x04 + ("%abil_length%" * "%index%")) "imisc3a" #8
     FOR (index2 = 0 ; index2 < abil_fx_num ; index2 = index2 + 1) BEGIN
       READ_SHORT ("%fx_off%" +        (0x30 * ("%abil_fx_idx%" + "%index2%"))) "opcode"
       READ_ASCII ("%fx_off%" + 0x14 + (0x30 * ("%abil_fx_idx%" + "%index2%"))) "resref"
       PATCH_IF (("%opcode%" = 122) AND ("%resref%" STRING_COMPARE_CASE "misc3a" = 0)) BEGIN // change to original book
         WRITE_ASCII ("%fx_off%" + 0x14 + (0x30 * ("%abil_fx_idx%" + "%index2%"))) ~misc3aa~ #8 // new item
       END
     END
   END
   // spell casting
   PATCH_IF ("%icon%" STRING_COMPARE_CASE "imisc3a" = 0) BEGIN
     WRITE_BYTE  ("%abil_off%" + 0x0c + ("%abil_length%" * "%index%"))  5 // target: caster
     FOR (index2 = 0 ; index2 < abil_fx_num ; index2 = index2 + 1) BEGIN
       READ_SHORT ("%fx_off%" +        (0x30 * ("%abil_fx_idx%" + "%index2%"))) "opcode"
       PATCH_IF ("%opcode%" = 146) BEGIN // cast spell
         WRITE_BYTE  ("%fx_off%" + 0x02 + (0x30 * ("%abil_fx_idx%" + "%index2%"))) 1 // target: self
//          WRITE_ASCII ("%fx_off%" + 0x14 + (0x30 * ("%abil_fx_idx%" + "%index2%"))) ~spwi609~ #8 // priest to mage version ?
       END
     END
   END
 END
 BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~misc3a6.itm~ ~override~
 READ_LONG   0x64 "abil_off" ELSE 0
 READ_SHORT  0x68 "abil_num" ELSE 0
 READ_LONG   0x6a "fx_off"   ELSE 0
 SET "abil_length" = 0x38
 FOR (index = 0 ; index < abil_num ; index = index + 1) BEGIN // start iterating through abilities
   WRITE_BYTE  ("%abil_off%" + 0x01 + ("%abil_length%" * "%index%")) 1 // identify to use
   READ_ASCII  ("%abil_off%" + 0x04 + ("%abil_length%" * "%index%")) "icon"
   READ_SHORT  ("%abil_off%" + 0x1e + ("%abil_length%" * "%index%")) "abil_fx_num"
   READ_SHORT  ("%abil_off%" + 0x20 + ("%abil_length%" * "%index%")) "abil_fx_idx"
   // page turning
   PATCH_IF ("%icon%" STRING_COMPARE_CASE "iscrl02" = 0) BEGIN
     WRITE_ASCII  ("%abil_off%" + 0x04 + ("%abil_length%" * "%index%")) "imisc3a" #8
     FOR (index2 = 0 ; index2 < abil_fx_num ; index2 = index2 + 1) BEGIN
       READ_SHORT ("%fx_off%" +        (0x30 * ("%abil_fx_idx%" + "%index2%"))) "opcode"
       READ_ASCII ("%fx_off%" + 0x14 + (0x30 * ("%abil_fx_idx%" + "%index2%"))) "resref"
       PATCH_IF (("%opcode%" = 122) AND ("%resref%" STRING_COMPARE_CASE "misc3a" = 0)) BEGIN // change to original book
         WRITE_ASCII ("%fx_off%" + 0x14 + (0x30 * ("%abil_fx_idx%" + "%index2%"))) ~misc3aa~ #8 // new item
       END
     END
   END
   // spell casting
   PATCH_IF ("%icon%" STRING_COMPARE_CASE "imisc3a" = 0) BEGIN
     WRITE_BYTE  ("%abil_off%" + 0x0c + ("%abil_length%" * "%index%"))  4 // target: any point within range
     FOR (index2 = 0 ; index2 < abil_fx_num ; index2 = index2 + 1) BEGIN
       READ_SHORT ("%fx_off%" +        (0x30 * ("%abil_fx_idx%" + "%index2%"))) "opcode"
       PATCH_IF ("%opcode%" = 146) BEGIN // cast spell
         WRITE_SHORT ("%fx_off%" +        (0x30 * ("%abil_fx_idx%" + "%index2%"))) 148
       END
     END
   END
 END
 BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~misc3a7.itm~ ~override~
 READ_LONG   0x64 "abil_off" ELSE 0
 READ_SHORT  0x68 "abil_num" ELSE 0
 READ_LONG   0x6a "fx_off"   ELSE 0
 SET "abil_length" = 0x38
 FOR (index = 0 ; index < abil_num ; index = index + 1) BEGIN // start iterating through abilities
   WRITE_BYTE  ("%abil_off%" + 0x01 + ("%abil_length%" * "%index%")) 1 // identify to use
   READ_ASCII  ("%abil_off%" + 0x04 + ("%abil_length%" * "%index%")) "icon"
   READ_SHORT  ("%abil_off%" + 0x1e + ("%abil_length%" * "%index%")) "abil_fx_num"
   READ_SHORT  ("%abil_off%" + 0x20 + ("%abil_length%" * "%index%")) "abil_fx_idx"
   // page turning
   PATCH_IF ("%icon%" STRING_COMPARE_CASE "iscrl02" = 0) BEGIN
     WRITE_ASCII  ("%abil_off%" + 0x04 + ("%abil_length%" * "%index%")) "imisc3a" #8
     FOR (index2 = 0 ; index2 < abil_fx_num ; index2 = index2 + 1) BEGIN
       READ_SHORT ("%fx_off%" +        (0x30 * ("%abil_fx_idx%" + "%index2%"))) "opcode"
       READ_ASCII ("%fx_off%" + 0x14 + (0x30 * ("%abil_fx_idx%" + "%index2%"))) "resref"
       PATCH_IF (("%opcode%" = 122) AND ("%resref%" STRING_COMPARE_CASE "misc3a" = 0)) BEGIN // change to original book
         WRITE_ASCII ("%fx_off%" + 0x14 + (0x30 * ("%abil_fx_idx%" + "%index2%"))) ~misc3aa~ #8 // new item
       END
     END
   END
   // spell casting
   PATCH_IF ("%icon%" STRING_COMPARE_CASE "imisc3a" = 0) BEGIN
     WRITE_BYTE  ("%abil_off%" + 0x0c + ("%abil_length%" * "%index%"))  4 // target: any point within range
     WRITE_SHORT ("%abil_off%" + 0x0e + ("%abil_length%" * "%index%")) 30 // range
     FOR (index2 = 0 ; index2 < abil_fx_num ; index2 = index2 + 1) BEGIN
       READ_SHORT ("%fx_off%" +        (0x30 * ("%abil_fx_idx%" + "%index2%"))) "opcode"
       PATCH_IF ("%opcode%" = 146) BEGIN // cast spell
         WRITE_SHORT ("%fx_off%" +        (0x30 * ("%abil_fx_idx%" + "%index2%"))) 148
         WRITE_SHORT ("%fx_off%" + 0x02 + (0x30 * ("%abil_fx_idx%" + "%index2%"))) 1 // target: self
       END
     END
   END
 END
 BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~misc3a8.itm~ ~override~
 READ_LONG   0x64 "abil_off" ELSE 0
 READ_SHORT  0x68 "abil_num" ELSE 0
 READ_LONG   0x6a "fx_off"   ELSE 0
 SET "abil_length" = 0x38
 FOR (index = 0 ; index < abil_num ; index = index + 1) BEGIN // start iterating through abilities
   WRITE_BYTE  ("%abil_off%" + 0x01 + ("%abil_length%" * "%index%")) 1 // identify to use
   READ_ASCII  ("%abil_off%" + 0x04 + ("%abil_length%" * "%index%")) "icon"
   READ_SHORT  ("%abil_off%" + 0x1e + ("%abil_length%" * "%index%")) "abil_fx_num"
   READ_SHORT  ("%abil_off%" + 0x20 + ("%abil_length%" * "%index%")) "abil_fx_idx"
   // page turning
   PATCH_IF ("%icon%" STRING_COMPARE_CASE "iscrl02" = 0) BEGIN
     WRITE_ASCII  ("%abil_off%" + 0x04 + ("%abil_length%" * "%index%")) "imisc3a" #8
     FOR (index2 = 0 ; index2 < abil_fx_num ; index2 = index2 + 1) BEGIN
       READ_SHORT ("%fx_off%" +        (0x30 * ("%abil_fx_idx%" + "%index2%"))) "opcode"
       READ_ASCII ("%fx_off%" + 0x14 + (0x30 * ("%abil_fx_idx%" + "%index2%"))) "resref"
       PATCH_IF (("%opcode%" = 122) AND ("%resref%" STRING_COMPARE_CASE "misc3a" = 0)) BEGIN // change to original book
         WRITE_ASCII ("%fx_off%" + 0x14 + (0x30 * ("%abil_fx_idx%" + "%index2%"))) ~misc3aa~ #8 // new item
       END
     END
   END
   // spell casting
   PATCH_IF ("%icon%" STRING_COMPARE_CASE "imisc3a" = 0) BEGIN
     WRITE_SHORT ("%abil_off%" + 0x0e + ("%abil_length%" * "%index%")) 30 // range
   END
 END
 BUT_ONLY_IF_IT_CHANGES

Link to comment
Coded, with two exceptions: in places where you set range > 30, I just set it to 30; and I didn't change from the priest True Seeing to the mage True Sight.
Out of curiosity, why not change the resref? All the other pages will summon the cowled ones, but this lucky page can be read with impunity...
Link to comment

Archived

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

×
×
  • Create New...