NiGHTMARE Posted August 22, 2006 Share Posted August 22, 2006 All of these spells have a miscast magic effect, but are lacking the miscast magic icon. If it's decided that this is intended behaviour and Not A Bug , then the black dragon's Summon Insect ability (which incidentally is actually a duplicate of Creeping Doom ) *does* have the miscast magic icon, and it should therefore be removed for consistency.. Link to comment
Kish Posted August 24, 2006 Share Posted August 24, 2006 All of these spells have a miscast magic effect, but are lacking the miscast magic icon. If it's decided that this is intended behaviour and Not A Bug , then the black dragon's Summon Insect ability (which incidentally is actually a duplicate of Creeping Doom ) *does* have the miscast magic icon, and it should therefore be removed for consistency.. We should probably add the icon to Insect Swarm and Creeping Doom, then. Link to comment
CamDawg Posted August 25, 2006 Share Posted August 25, 2006 An incredible number of spells have miscast effects but no icons--including the Miscast Magic spell itself. At first I thought it might be hardcoded to the effect, but it really is missing. // miscast effects not accompanied by miscast icon COPY_EXISTING ~spcl132.spl~ ~override~ ~spin531.spl~ ~override~ ~spin550.spl~ ~override~ ~spin646.spl~ ~override~ ~spin689.spl~ ~override~ ~spin712.spl~ ~override~ ~spin731.spl~ ~override~ ~spin779.spl~ ~override~ ~spin992.spl~ ~override~ ~sppr310.spl~ ~override~ ~sppr319.spl~ ~override~ ~sppr517.spl~ ~override~ ~sppr717.spl~ ~override~ ~sppr986.spl~ ~override~ ~spwish30.spl~ ~override~ ~spwm128.spl~ ~override~ READ_LONG 0x64 "abil_off" ELSE 0 READ_SHORT 0x68 "abil_num" ELSE 0 READ_LONG 0x6a "fx_off" ELSE 0 SET "new_fx_1" = 0 SET "new_fx_2" = 0 SET "delta" = 0 FOR (index = 0; index < abil_num; index = index + 1) BEGIN READ_SHORT ("%abil_off%" + 0x1e + (0x28 * "%index%")) "abil_fx_num" READ_SHORT ("%abil_off%" + 0x20 + (0x28 * "%index%")) "abil_fx_idx" SET "abil_fx_idx" = ("%delta%" + "%abil_fx_idx%") WRITE_SHORT ("%abil_off%" + 0x20 + (0x28 * "%index%")) "%abil_fx_idx%" FOR (index2 = 0; index2 < abil_fx_num; index2 = index2 + 1) BEGIN READ_SHORT ("%fx_off%" + (0x30 * ("%abil_fx_idx%" + "%index2%"))) "opcode" READ_LONG ("%fx_off%" + 0x08 + (0x30 * ("%abil_fx_idx%" + "%index2%"))) "icon" PATCH_IF ("%opcode%" = 60) BEGIN // entangle overlay READ_ASCII ("%fx_off%" + (0x30 * ("%abil_fx_idx%" + "%index2%"))) "clone" (48) SET "new_fx_1" = 1 END ELSE PATCH_IF (("%opcode%" = 142) AND ("%icon%" = 150)) BEGIN // display miscast icon SET "new_fx_2" = 1 END END PATCH_IF (("%new_fx_1%" = 1) AND ("%new_fx_2%" = 0)) BEGIN // if miscast effect but no icon PATCH_PRINT " ~%SOURCE_FILE%~ ~override~" INSERT_BYTES ("%fx_off%" + (0x30 * "%abil_fx_idx%")) 0x30 // new effect WRITE_EVALUATED_ASCII ("%fx_off%" + (0x30 * "%abil_fx_idx%")) "%clone%" #48 // clones miscast effect WRITE_SHORT ("%fx_off%" + (0x30 * "%abil_fx_idx%")) 142 // display portrait icon: WRITE_LONG ("%fx_off%" + 0x08 + (0x30 * "%abil_fx_idx%")) 105 // entangled SET "delta" = "%delta%" + 1 SET "abil_fx_num" = "%abil_fx_num%" + 1 END WRITE_SHORT ("%abil_off%" + 0x1e + (0x28 * "%index%")) "%abil_fx_num%" END BUT_ONLY_IF_IT_CHANGES Link to comment
CamDawg Posted August 25, 2006 Share Posted August 25, 2006 Argh, may have jumped the gun here. Some of these are using Spell Failure icons instead. Will revise and post. Link to comment
NiGHTMARE Posted August 25, 2006 Author Share Posted August 25, 2006 Hmm, what's the convention for using these two icons? 100% chance of failure = spell failure, < 100% chance = miscast magic? Link to comment
CamDawg Posted August 25, 2006 Share Posted August 25, 2006 That's what I'm trying to figure out. Link to comment
CamDawg Posted August 25, 2006 Share Posted August 25, 2006 Ah, beloved consistency. Of the 26 items and spells that cause miscast effects, a net total of four cause icons. The black dragon's Summon Insects (spin689) is the only Miscast Magic icon; it causes a 100% miscast rate. Two apparently unused spells (spcl132 and spcl801) and the Anti-Magic Zone of sahuagin priestesses (spin779) all cause Spell Failure icons and have respective miscast rates of 25%, 10%, and 100%. So, the only two used spells with miscast effects both set them to 100% and use different icons. Link to comment
NiGHTMARE Posted August 25, 2006 Author Share Posted August 25, 2006 Personally I would make them all use the miscast magic icon, and replace the spell failure icon with something else . Beyond the realms of a fixpack, of course... Link to comment
Chev Posted August 26, 2006 Share Posted August 26, 2006 I too think good things that may or maynot be a bug should be moved to the Tweak pack. True some tweaks will almost always be instilled, but give players and Modders the choice. Link to comment
NiGHTMARE Posted August 27, 2006 Author Share Posted August 27, 2006 If you go to the trouble of creating a miscast magic icon and then only use it in one of several spells that cause miscast magic, I would call that a bug. Link to comment
CamDawg Posted August 27, 2006 Share Posted August 27, 2006 It's definitely something that needs to be fixed, it's just a question of the best way to fix it. Link to comment
CamDawg Posted September 12, 2006 Share Posted September 12, 2006 OK, so Spell Failure is now being used when the miscast effect is 100%; otherwise it's the Miscast Magic icon. Seven items that cause miscast effects are not patched: boot10.itm (like armor, disables spellcasting so no icon), brac11.itm (already has cursed icon), clck04.itm (polymorph), ring04.itm (cursed icon), scrl07.itm (protection from magic), scrl12.itm (already has feeblemind icon), and wand09.itm (polymorph). // miscast effects not accompanied by miscast icon COPY_EXISTING ~ax1h07.itm~ ~override~ // 80% on hit, no icon ~spcl132.spl~ ~override~ // 25%, spell failure icon ~spin531.spl~ ~override~ // 90%, abazigal's shockwave ~sppr310.spl~ ~override~ // 80%, no icon ~sppr319.spl~ ~override~ // 50%, no icon ~sppr986.spl~ ~override~ // 80%, no icon ~spwish30.spl~ ~override~ // 80%, no icon PATCH_IF ("%SOURCE_FILE%" STRING_COMPARE_REGEXP "^.+\.spl$" = 0) BEGIN SET "abil_length" = 0x28 READ_LONG 0x64 "abil_off" ELSE 0 READ_SHORT 0x68 "abil_num" ELSE 0 READ_LONG 0x6a "fx_off" ELSE 0 READ_SHORT 0x70 "fx_num" ELSE 0 SET "fx_type" = 0 END ELSE PATCH_IF ("%SOURCE_FILE%" STRING_COMPARE_REGEXP "^.+\.itm$" = 0) BEGIN SET "abil_length" = 0x38 READ_LONG 0x64 "abil_off" ELSE 0 READ_SHORT 0x68 "abil_num" ELSE 0 READ_LONG 0x6a "fx_off" ELSE 0 READ_SHORT 0x70 "fx_num" ELSE 0 SET "fx_type" = 0 END ELSE PATCH_IF ("%SOURCE_FILE%" STRING_COMPARE_REGEXP "^.+\.cre$" = 0) BEGIN SET "abil_length" = 0 SET "abil_off" = 0 SET "abil_num" = 0 READ_LONG 0x2c4 "fx_off" ELSE 0 READ_LONG 0x2c8 "fx_num" ELSE 0 READ_BYTE 0x33 "fx_type" END SET "new_fx_1" = 0 SET "new_fx_2" = 0 SET "delta" = 0 FOR (index3 = 0; index3 < fx_num; index3 = index3 + 1) BEGIN READ_SHORT ("%fx_off%" + ("%fx_type%" * 0x08) + (0x30 * "%index3%")) "opcode" READ_LONG ("%fx_off%" + ("%fx_type%" * 0x10) + 0x08 + (0x30 * "%index3%")) "icon" PATCH_IF ("%opcode%" = 60) BEGIN // miscast effect READ_ASCII ("%fx_off%" + ("%fx_type%" * 0x08) + (0x30 * "%index3%")) "clone" (48 + (216 * "%fx_type%")) SET "new_fx_1" = 1 END ELSE PATCH_IF (("%opcode%" = 142) AND ("%icon%" = 105)) BEGIN // display miscast icon SET "new_fx_2" = 1 END ELSE PATCH_IF (("%opcode%" = 142) AND ("%icon%" = 83)) BEGIN // display spell failure icon WRITE_BYTE ("%fx_off%" + ("%fx_type%" * 0x08) + 0x12 + (0x30 * "%index3%")) 0 // 0% probability END END PATCH_IF (("%new_fx_1%" = 1) AND ("%new_fx_2%" = 0)) BEGIN // if miscast effect but no icon INSERT_BYTES ("%fx_off%") (0x30 + ("%fx_type%" * 0xa8)) // new effect WRITE_EVALUATED_ASCII ("%fx_off%") "%clone%" // clones miscast effect WRITE_SHORT ("%fx_off%" + ("%fx_type%" * 0x08) ) 142 // display portrait icon: WRITE_LONG ("%fx_off%" + ("%fx_type%" * 0x10) + 0x08) 105 // miscast magic SET "delta" = "%delta%" + 1 SET "fx_num" = "%fx_num%" + 1 END WRITE_SHORT 0x70 "%fx_num%" FOR (index = 0; index < abil_num; index = index + 1) BEGIN SET "new_fx_1" = 0 // reset for each loop through abilities SET "new_fx_2" = 0 // reset for each loop through abilities READ_SHORT ("%abil_off%" + 0x1e + ("%abil_length%" * "%index%")) "abil_fx_num" READ_SHORT ("%abil_off%" + 0x20 + ("%abil_length%" * "%index%")) "abil_fx_idx" SET "abil_fx_idx" = ("%delta%" + "%abil_fx_idx%") WRITE_SHORT ("%abil_off%" + 0x20 + ("%abil_length%" * "%index%")) "%abil_fx_idx%" FOR (index2 = 0; index2 < abil_fx_num; index2 = index2 + 1) BEGIN READ_SHORT ("%fx_off%" + (0x30 * ("%abil_fx_idx%" + "%index2%"))) "opcode" READ_LONG ("%fx_off%" + 0x08 + (0x30 * ("%abil_fx_idx%" + "%index2%"))) "icon" PATCH_IF ("%opcode%" = 60) BEGIN // miscast magic READ_ASCII ("%fx_off%" + (0x30 * ("%abil_fx_idx%" + "%index2%"))) "clone" (48) SET "new_fx_1" = 1 END ELSE PATCH_IF (("%opcode%" = 142) AND ("%icon%" = 105)) BEGIN // display miscast icon SET "new_fx_2" = 1 END ELSE PATCH_IF (("%opcode%" = 142) AND ("%icon%" = 83)) BEGIN // display spell failure icon WRITE_BYTE ("%fx_off%" + 0x12 + (0x30 * ("%abil_fx_idx%" + "%index2%"))) 0 // 0% probability END END PATCH_IF (("%new_fx_1%" = 1) AND ("%new_fx_2%" = 0)) BEGIN // if miscast effect but no icon INSERT_BYTES ("%fx_off%" + (0x30 * "%abil_fx_idx%")) 0x30 // new effect WRITE_EVALUATED_ASCII ("%fx_off%" + (0x30 * "%abil_fx_idx%")) "%clone%" #48 // clones miscast effect WRITE_SHORT ("%fx_off%" + (0x30 * "%abil_fx_idx%")) 142 // display portrait icon: WRITE_LONG ("%fx_off%" + 0x08 + (0x30 * "%abil_fx_idx%")) 105 // miscast magic SET "delta" = "%delta%" + 1 SET "abil_fx_num" = "%abil_fx_num%" + 1 END WRITE_SHORT ("%abil_off%" + 0x1e + ("%abil_length%" * "%index%")) "%abil_fx_num%" END BUT_ONLY_IF_IT_CHANGES // spell failure effects not accompanied by spell failure icon COPY_EXISTING ~scrl11.itm~ ~override~ // 100%, cursed scroll ~spin550.spl~ ~override~ // 100%, need to fix divine, includes innates ~spin646.spl~ ~override~ // 100%, anti-magic zone type ~spin689.spl~ ~override~ // 100%, has miscast ~spin712.spl~ ~override~ // 100%, sets attacks to 0 ~spin731.spl~ ~override~ // 100%, party-wide ~spin779.spl~ ~override~ // 100%, already has spell failure icon ~spin992.spl~ ~override~ // 100%, no icon ~sppr517.spl~ ~override~ // 100%, no icon ~sppr717.spl~ ~override~ // 100%, no icon ~spwm128.spl~ ~override~ // 100%, no icon PATCH_IF ("%SOURCE_FILE%" STRING_COMPARE_REGEXP "^.+\.spl$" = 0) BEGIN SET "abil_length" = 0x28 READ_LONG 0x64 "abil_off" ELSE 0 READ_SHORT 0x68 "abil_num" ELSE 0 READ_LONG 0x6a "fx_off" ELSE 0 READ_SHORT 0x70 "fx_num" ELSE 0 SET "fx_type" = 0 END ELSE PATCH_IF ("%SOURCE_FILE%" STRING_COMPARE_REGEXP "^.+\.itm$" = 0) BEGIN SET "abil_length" = 0x38 READ_LONG 0x64 "abil_off" ELSE 0 READ_SHORT 0x68 "abil_num" ELSE 0 READ_LONG 0x6a "fx_off" ELSE 0 READ_SHORT 0x70 "fx_num" ELSE 0 SET "fx_type" = 0 END ELSE PATCH_IF ("%SOURCE_FILE%" STRING_COMPARE_REGEXP "^.+\.cre$" = 0) BEGIN SET "abil_length" = 0 SET "abil_off" = 0 SET "abil_num" = 0 READ_LONG 0x2c4 "fx_off" ELSE 0 READ_LONG 0x2c8 "fx_num" ELSE 0 READ_BYTE 0x33 "fx_type" END SET "new_fx_1" = 0 SET "new_fx_2" = 0 SET "delta" = 0 FOR (index3 = 0; index3 < fx_num; index3 = index3 + 1) BEGIN READ_SHORT ("%fx_off%" + ("%fx_type%" * 0x08) + (0x30 * "%index3%")) "opcode" READ_LONG ("%fx_off%" + ("%fx_type%" * 0x10) + 0x08 + (0x30 * "%index3%")) "icon" PATCH_IF ("%opcode%" = 60) BEGIN // entangle overlay READ_ASCII ("%fx_off%" + ("%fx_type%" * 0x08) + (0x30 * "%index3%")) "clone" (48 + (216 * "%fx_type%")) SET "new_fx_1" = 1 END ELSE PATCH_IF (("%opcode%" = 142) AND ("%icon%" = 83)) BEGIN // display spell failure icon SET "new_fx_2" = 1 END ELSE PATCH_IF (("%opcode%" = 142) AND ("%icon%" = 105)) BEGIN // display miscast icon WRITE_BYTE ("%fx_off%" + ("%fx_type%" * 0x08) + 0x12 + (0x30 * "%index3%")) 0 // 0% probability END END PATCH_IF (("%new_fx_1%" = 1) AND ("%new_fx_2%" = 0)) BEGIN // if spell failure effect but no icon INSERT_BYTES ("%fx_off%") (0x30 + ("%fx_type%" * 0xa8)) // new effect WRITE_EVALUATED_ASCII ("%fx_off%") "%clone%" // clones miscast effect WRITE_SHORT ("%fx_off%" + ("%fx_type%" * 0x08) ) 142 // display portrait icon: WRITE_LONG ("%fx_off%" + ("%fx_type%" * 0x10) + 0x08) 83 // spell failure SET "delta" = "%delta%" + 1 SET "fx_num" = "%fx_num%" + 1 END WRITE_SHORT 0x70 "%fx_num%" FOR (index = 0; index < abil_num; index = index + 1) BEGIN SET "new_fx_1" = 0 // reset for each loop through abilities SET "new_fx_2" = 0 // reset for each loop through abilities READ_SHORT ("%abil_off%" + 0x1e + ("%abil_length%" * "%index%")) "abil_fx_num" READ_SHORT ("%abil_off%" + 0x20 + ("%abil_length%" * "%index%")) "abil_fx_idx" SET "abil_fx_idx" = ("%delta%" + "%abil_fx_idx%") WRITE_SHORT ("%abil_off%" + 0x20 + ("%abil_length%" * "%index%")) "%abil_fx_idx%" FOR (index2 = 0; index2 < abil_fx_num; index2 = index2 + 1) BEGIN READ_SHORT ("%fx_off%" + (0x30 * ("%abil_fx_idx%" + "%index2%"))) "opcode" READ_LONG ("%fx_off%" + 0x08 + (0x30 * ("%abil_fx_idx%" + "%index2%"))) "icon" PATCH_IF ("%opcode%" = 60) BEGIN // miscast effects READ_ASCII ("%fx_off%" + (0x30 * ("%abil_fx_idx%" + "%index2%"))) "clone" (48) SET "new_fx_1" = 1 END ELSE PATCH_IF (("%opcode%" = 142) AND ("%icon%" = 83)) BEGIN // display spell failure icon SET "new_fx_2" = 1 END ELSE PATCH_IF (("%opcode%" = 142) AND ("%icon%" = 105)) BEGIN // display miscast icon WRITE_BYTE ("%fx_off%" + 0x12 + (0x30 * ("%abil_fx_idx%" + "%index2%"))) 0 // 0% probability END END PATCH_IF (("%new_fx_1%" = 1) AND ("%new_fx_2%" = 0)) BEGIN // if miscast effect but no icon INSERT_BYTES ("%fx_off%" + (0x30 * "%abil_fx_idx%")) 0x30 // new effect WRITE_EVALUATED_ASCII ("%fx_off%" + (0x30 * "%abil_fx_idx%")) "%clone%" #48 // clones miscast effect WRITE_SHORT ("%fx_off%" + (0x30 * "%abil_fx_idx%")) 142 // display portrait icon: WRITE_LONG ("%fx_off%" + 0x08 + (0x30 * "%abil_fx_idx%")) 83 // spell failure SET "delta" = "%delta%" + 1 SET "abil_fx_num" = "%abil_fx_num%" + 1 END WRITE_SHORT ("%abil_off%" + 0x1e + ("%abil_length%" * "%index%")) "%abil_fx_num%" END BUT_ONLY_IF_IT_CHANGES Link to comment
Ithildur Posted October 10, 2006 Share Posted October 10, 2006 Personally I would make them all use the miscast magic icon, and replace the spell failure icon with something else . Beyond the realms of a fixpack, of course... I'm a bit baffled... apparently, especially after reading the replies posted after this surprisingly self-restrained one (including one from Nightmare that seems to do a 180 from this one), not much is beyond the realms of a fixpack in actuality. Link to comment
NiGHTMARE Posted October 11, 2006 Author Share Posted October 11, 2006 I'm also baffled... as to how explaining why the miscast magic icon issue is a bug is a complete 180 from saying what I would do with a *different* icon were this not a Fixpack. Anyway, do you honestly think that the developers went to the trouble of creating not one but two icon and then *deliberately* didn't include either of them in several spells that they clearly apply to? Are you suggesting that, if one of two spells which are otherwise virtually identical has an icon and the other does not, this is consistent and logical behaviour? That the very spell called "Miscast Magic" should not, in fact, display the miscast magic icon? I'm afraid I'm going to have to disagree with all of those assessments, as I have come to the rather more logical conclusion that either the developers simply forgot about the icons when creating the relevant .spl files, or the icons were created after the .spls and they forgot to go back and change them. Link to comment
Recommended Posts
Archived
This topic is now archived and is closed to further replies.