Enkidu Posted December 30, 2009 Share Posted December 30, 2009 Nothing but the following components of fixpack are installed: ~BG2FIXPACK/SETUP-BG2FIXPACK.TP2~ #0 #100 // Party Gets XP for Sending Keldorn to Reconcile With Maria: v8 ~BG2FIXPACK/SETUP-BG2FIXPACK.TP2~ #0 #101 // Improved Spell Animations: v8 ~BG2FIXPACK/SETUP-BG2FIXPACK.TP2~ #0 #102 // Cromwell's Forging Actually Takes a Day: v8 ~BG2FIXPACK/SETUP-BG2FIXPACK.TP2~ #0 #107 // Remove Dual-Classing Restriction from Archers and Stalkers: v8 ~BG2FIXPACK/SETUP-BG2FIXPACK.TP2~ #0 #108 // Remove Second Attribute Bonus for Evil Path in Wrath Hell Trial: v8 ~BG2FIXPACK/SETUP-BG2FIXPACK.TP2~ #0 #112 // Wizard Slayers Cause Miscast Magic on Ranged Attacks: v8 ~BG2FIXPACK/SETUP-BG2FIXPACK.TP2~ #0 #113 // Additional Alignment Fixes: v8 ~BG2FIXPACK/SETUP-BG2FIXPACK.TP2~ #0 #0 // BG2 Fixpack - Core Fixes: v8 ~BG2FIXPACK/SETUP-BG2FIXPACK.TP2~ #0 #1 // BG2 Fixpack - Game Text Update: v8 ~BG2FIXPACK/SETUP-BG2FIXPACK.TP2~ #0 #2 // Super Happy Fun Lucky Modder Pack: v8 ~BG2FIXPACK/SETUP-BG2FIXPACK.TP2~ #0 #3 // BETA Core Fixes (please check the readme!): v8 dart05.itm (asp's nest) has a wrong description. It states that the damage from poison is 1 per 3 seconds but it's actually 1 per second. Teleport field description states that a save vs spells must be made to avoid the effect while in reality no save is allowed. The panic effect from creeping doom seems to be broken. It doesn't affect anyone. Link to comment
Wisp Posted December 31, 2009 Share Posted December 31, 2009 dart05.itm (asp's nest) has a wrong description. It states that the damage from poison is 1 per 3 seconds but it's actually 1 per second. Let's change the poison to match the description instead. //Asp's Nest darts do 1 HP damage every second for 40 seconds instead of 1 HP damage every 3 seconds for 120 seconds COPY_EXISTING dart05.itm override PATCH_IF SOURCE_SIZE > 0x71 BEGIN READ_LONG 0x64 ao READ_SHORT 0x68 na READ_LONG 0x6a eo FOR (i=0;i<na;i+=1) BEGIN READ_SHORT ao + 0x38*i + 0x1e en ELSE 0 READ_SHORT ao + 0x38*i + 0x20 ei ELSE 0 FOR (j=0;j<en;j+=1) BEGIN READ_SHORT eo + 0x30*(ei + j) type ELSE 999 PATCH_IF type = 25 BEGIN WRITE_LONG eo + 0x30*(ei + j) + 0x4 3 WRITE_LONG eo + 0x30*(ei + j) + 0x8 3 WRITE_LONG eo + 0x30*(ei + j) + 0xe 120 END ELSE BEGIN WRITE_LONG eo + 0x30*(ei + j) + 0xe 120 END END END END BUT_ONLY Teleport field description states that a save vs spells must be made to avoid the effect while in reality no save is allowed. Quite right, the save is missing. However, Fixpack apparently tries to change the description of the spell to reflect this (only, the new description is identical to the old description). Going through the forum, CamDawg apparently elected to change the description (here), as did Nythrun (here). So I guess the description should be changed. The panic effect from creeping doom seems to be broken. It doesn't affect anyone. Creeping Doom applies the 2 HP/sec damage via a repeating eff opcode and tries to apply the fear effect in the same manner. But since the damage has a higher frequency and the engine is buggy and only applies the effect with the highest frequency, the panic effect is never observed. If we replace the panic repeating eff with 3 normal effs, of which 2 are delayed 6 and 12 seconds, and move the save from the spell to the external eff, we should get a reasonably good approximation of the intended behaviour, I think. The target saves 3 times vs panic and it all goes away with dispel. //Creeping Doom's panic effect does not work, alter opcode 272/panic.eff effect to 3 opcode 177/panic.eff effects with delayed application //see also panic.eff COPY_EXISTING sppr717.spl override PATCH_IF SOURCE_SIZE > 0x71 BEGIN READ_LONG 0x64 ao READ_SHORT 0x68 na READ_LONG 0x6a eo en = 0 FOR (i=0;i<na;i+=1) BEGIN WRITE_SHORT ao + 0x28*i + 0x20 en ei = en READ_SHORT ao + 0x28*i + 0x1e en FOR (j=0;j<en;j+=1) BEGIN READ_SHORT eo + 0x30*(ei + j) type ELSE 999 READ_ASCII eo + 0x30*(ei + j) + 0x14 rr ELSE blank PATCH_IF type = 272 AND "%rr%" STRING_EQUAL_CASE panic BEGIN DELETE_BYTES eo + 0x30*(ei + j) 0x30 en -= 1 j -= 1 PATCH_FOR_EACH time IN 12 6 0 BEGIN INSERT_BYTES eo + 0x30*(ei + j) 0x30 WRITE_SHORT eo + 0x30*(ei + j) 177 WRITE_BYTE eo + 0x30*(ei + j) + 0x2 2 WRITE_BYTE eo + 0x30*(ei + j) + 0x3 7 WRITE_LONG eo + 0x30*(ei + j) + 0x8 2 WRITE_BYTE eo + 0x30*(ei + j) + 0xc 5 WRITE_BYTE eo + 0x30*(ei + j) + 0xd 1 WRITE_LONG eo + 0x30*(ei + j) + 0xe time WRITE_BYTE eo + 0x30*(ei + j) + 0x12 100 WRITE_ASCII eo + 0x30*(ei + j) + 0x14 panic en += 1 END j = en WRITE_SHORT ao + 0x28*i + 0x1e en END END END END BUT_ONLY //Creeping Doom's panic effect does not work, move save to .eff //see also sppr717.spl COPY_EXISTING panic.eff override WRITE_LONG 0x40 1 WRITE_LONG 0x44 "-2" BUT_ONLY Link to comment
Nythrun Posted December 31, 2009 Share Posted December 31, 2009 For the Creeping Crud spell you'll want to timing mode four the damage and throw the .eff away. The periodically do stuff opcodes demand wholesale purging from the game, but there's not even a dozen spells to change, so it's not a big deal. In general it's better to stagger a cast spell opcode rather than use .effs at all, because if you do you need to hack around their inheriting timing mode etc from the parent resource. Link to comment
Wisp Posted January 1, 2010 Share Posted January 1, 2010 Souped-up fix for the bug spells: //Creeping Doom's panic effect does not work, alter both panic and damage effect to not use opcode 272 for all insect spells //see also cdpr717a.spl COPY_EXISTING sppr319.spl override //Summon Insects sppr517.spl override //Insect Plague sppr717.spl override //Creeping Doom spin689.spl override //BLACK_DRAGON_INSECT PATCH_IF SOURCE_SIZE > 0x71 BEGIN READ_LONG 0x64 ao READ_SHORT 0x68 na READ_LONG 0x6a eo en = 0 ei = 0 FOR (i=0;i<na;i+=1) BEGIN ei += en WRITE_SHORT ao + 0x28*i + 0x20 ei READ_SHORT ao + 0x28*i + 0x1e en FOR (j=0;j<en;j+=1) BEGIN READ_SHORT eo + 0x30*(ei + j) type ELSE 999 READ_ASCII eo + 0x30*(ei + j) + 0x14 rr ELSE blank PATCH_IF type = 272 AND "%rr%" STRING_EQUAL_CASE ipdam1 BEGIN READ_ASCII eo + 0x30*(ei + j) copy (0x30) DELETE_BYTES eo + 0x30*(ei + j) 0x30 en -= 1 j -= 1 time = "%SOURCE_RES%" STRING_EQUAL_CASE sppr319 ? 42 : 36 FOR (k=0;k<time;k+=2) BEGIN INSERT_BYTES eo + 0x30*(ei + j) 0x30 WRITE_ASCIIE eo + 0x30*(ei + j) "%copy%" WRITE_SHORT eo + 0x30*(ei + j) 12 WRITE_LONG eo + 0x30*(ei + j) + 0x4 1 WRITE_SHORT eo + 0x30*(ei + j) + 0x8 0 WRITE_SHORT eo + 0x30*(ei + j) + 0xa 16 WRITE_BYTE eo + 0x30*(ei + j) + 0xc 4 WRITE_LONG eo + 0x30*(ei + j) + 0xe k en += 1 j += 1 END END PATCH_IF type = 272 AND "%rr%" STRING_EQUAL_CASE ipdam2 BEGIN READ_ASCII eo + 0x30*(ei + j) copy (0x30) DELETE_BYTES eo + 0x30*(ei + j) 0x30 en -= 1 j -= 1 FOR (k=0;k<18;k+=1) BEGIN INSERT_BYTES eo + 0x30*(ei + j) 0x30 WRITE_ASCIIE eo + 0x30*(ei + j) "%copy%" WRITE_SHORT eo + 0x30*(ei + j) 12 WRITE_LONG eo + 0x30*(ei + j) + 0x4 2 WRITE_SHORT eo + 0x30*(ei + j) + 0x8 0 WRITE_SHORT eo + 0x30*(ei + j) + 0xa 16 WRITE_BYTE eo + 0x30*(ei + j) + 0xc 4 WRITE_LONG eo + 0x30*(ei + j) + 0xe k en += 1 j += 1 END END PATCH_IF type = 272 AND "%rr%" STRING_EQUAL_CASE panic BEGIN DELETE_BYTES eo + 0x30*(ei + j) 0x30 en -= 1 j -= 1 PATCH_FOR_EACH time IN 0 6 12 BEGIN INSERT_BYTES eo + 0x30*(ei + j) 0x30 WRITE_SHORT eo + 0x30*(ei + j) 146 WRITE_BYTE eo + 0x30*(ei + j) + 0x2 2 WRITE_BYTE eo + 0x30*(ei + j) + 0x3 7 WRITE_LONG eo + 0x30*(ei + j) + 0x8 1 WRITE_BYTE eo + 0x30*(ei + j) + 0xc 4 WRITE_BYTE eo + 0x30*(ei + j) + 0xd 1 WRITE_LONG eo + 0x30*(ei + j) + 0xe time WRITE_BYTE eo + 0x30*(ei + j) + 0x12 100 WRITE_ASCII eo + 0x30*(ei + j) + 0x14 cdpr717a #8 en += 1 j += 1 END END END WRITE_SHORT ao + 0x28*i + 0x1e en END END BUT_ONLY The new fix has the added inconvenience of needing the spell cdpr717a. It's probably premature for me to supply one now. (The new fix will also not puke over the spell if it turns out to have three or more abilities and uses timing mode 4 for the panic-related effects instead of 5.) It's only the insect spells and Earthquake that use Apply repeating eff [272] and Earthquake does not appear to have/cause this problem. None of the spells using Cast spell on condition [232] do so at periodic intervals. Of items, it's only the Boots of Phasing that use #272 and the situation with #232 is the same as for spells. Anything I've missed (other than poison/regeneration/disease)? Link to comment
Nythrun Posted January 2, 2010 Share Posted January 2, 2010 Looks good. I think the screen shake opcode is a no-attach effect, so you may have found the only possible safe usage for the repeaters There's nothing to be done for fireshield, or anything stuffed into a contingency with the relevant triggers, but they'll break less often if there's fewer other spells to break on (thanks for that lovely "One of the spells has failed" debug loveletter, Bio! Shame it was held up in post for ten frikkin years). Link to comment
Recommended Posts
Archived
This topic is now archived and is closed to further replies.