devSin Posted April 3, 2006 Share Posted April 3, 2006 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
CamDawg Posted January 16, 2008 Share Posted January 16, 2008 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
CamDawg Posted January 24, 2008 Share Posted January 24, 2008 Almost forgot tooltip.2da. Link to comment
devSin Posted January 24, 2008 Author Share Posted January 24, 2008 Make sure we have the rod also in there (I know I've said that somewhere before? sorry). Link to comment
CamDawg Posted January 24, 2008 Share Posted January 24, 2008 Make sure we have the rod also in there (I know I've said that somewhere before? sorry). We do. That's what made me think of it here. Link to comment
devSin Posted February 14, 2008 Author Share Posted February 14, 2008 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
CamDawg Posted February 14, 2008 Share Posted February 14, 2008 That hadn't even occurred to me--I was only thinking in terms of functionality. (See, this is where some 'splaining on your part may help. ) Link to comment
devSin Posted February 14, 2008 Author Share Posted February 14, 2008 Well, I actually didn't come up with a reason for it until a couple days ago when deciding whether to unroll it locally or not. Link to comment
Recommended Posts
Archived
This topic is now archived and is closed to further replies.