Nythrun Posted June 10, 2007 Share Posted June 10, 2007 It's possible something changed along the line, sure - I certainly never tested the BG1 behavior. Ancillary weapon effects are not stopped by physical damage resistance, however, and the spell still protects against its own effects. Immunity to Hold2 has been dropped from the Fixpack's minhp1 batch (I think?) so it can be done more nicely now than the way I have it. There's no way to include all of the exant immunity effects without shell spelling it or a porcine trough of .effs; there's no way to include even one of magic resistance/immunity level 4/immunity transmutation/immunity disabling without re-ordering the effects. The only thing that matters with information, Miloch, is the structure. These two patches OUTER_PATCH ~01234576~ BEGIN WRITE_LONG 0x00 0x23222120 WRITE_LONG 0x04 0x27262524 END and OUTER_PATCH ~01234576~ BEGIN READ_BYTE 0x00 "1st" READ_BYTE 0x01 "2nd" READ_BYTE 0x02 "3rd" READ_BYTE 0x03 "4th" READ_BYTE 0x04 "5th" READ_BYTE 0x05 "6th" READ_BYTE 0x06 "7th" READ_BYTE 0x07 "8th" WRITE_BYTE 0x00 ("1st" = 0x20 ? "1st" : "2nd" = 0x20 ? "2nd" : "3rd" = 0x20 ? "3rd" : "4th" = 0x20 ? "4th" : "5th" = 0x20 ? "5th" : "6th" = 0x20 ? "6th" : "7th" = 0x20 ? "7th" : "8th" = 0x20 ? "8th" : 0x20) WRITE_BYTE 0x01 ("1st" = 0x21 ? "1st" : "2nd" = 0x21 ? "2nd" : "3rd" = 0x21 ? "3rd" : "4th" = 0x21 ? "4th" : "5th" = 0x21 ? "5th" : "6th" = 0x21 ? "6th" : "7th" = 0x21 ? "7th" : "8th" = 0x21 ? "8th" : 0x21) WRITE_BYTE 0x02 ("1st" = 0x22 ? "1st" : "2nd" = 0x22 ? "2nd" : "3rd" = 0x22 ? "3rd" : "4th" = 0x22 ? "4th" : "5th" = 0x22 ? "5th" : "6th" = 0x22 ? "6th" : "7th" = 0x22 ? "7th" : "8th" = 0x22 ? "8th" : 0x22) WRITE_BYTE 0x03 ("1st" = 0x23 ? "1st" : "2nd" = 0x23 ? "2nd" : "3rd" = 0x23 ? "3rd" : "4th" = 0x23 ? "4th" : "5th" = 0x23 ? "5th" : "6th" = 0x23 ? "6th" : "7th" = 0x23 ? "7th" : "8th" = 0x23 ? "8th" : 0x23) WRITE_BYTE 0x04 ("1st" = 0x24 ? "1st" : "2nd" = 0x24 ? "2nd" : "3rd" = 0x24 ? "3rd" : "4th" = 0x24 ? "4th" : "5th" = 0x24 ? "5th" : "6th" = 0x24 ? "6th" : "7th" = 0x24 ? "7th" : "8th" = 0x24 ? "8th" : 0x24) WRITE_BYTE 0x05 ("1st" = 0x25 ? "1st" : "2nd" = 0x25 ? "2nd" : "3rd" = 0x25 ? "3rd" : "4th" = 0x25 ? "4th" : "5th" = 0x25 ? "5th" : "6th" = 0x25 ? "6th" : "7th" = 0x25 ? "7th" : "8th" = 0x25 ? "8th" : 0x25) WRITE_BYTE 0x06 ("1st" = 0x26 ? "1st" : "2nd" = 0x26 ? "2nd" : "3rd" = 0x26 ? "3rd" : "4th" = 0x26 ? "4th" : "5th" = 0x26 ? "5th" : "6th" = 0x26 ? "6th" : "7th" = 0x26 ? "7th" : "8th" = 0x26 ? "8th" : 0x26) WRITE_BYTE 0x07 ("1st" = 0x27 ? "1st" : "2nd" = 0x27 ? "2nd" : "3rd" = 0x27 ? "3rd" : "4th" = 0x27 ? "4th" : "5th" = 0x27 ? "5th" : "6th" = 0x27 ? "6th" : "7th" = 0x27 ? "7th" : "8th" = 0x27 ? "8th" : 0x27) END are exactly the same, except one of them is badly written. Link to comment
Miloch Posted June 10, 2007 Share Posted June 10, 2007 So... Can you upload your version somewhere? or post the details at least Link to comment
CamDawg Posted January 17, 2008 Share Posted January 17, 2008 So... So...Can you upload your version somewhere? or post the details at least Link to comment
Nythrun Posted January 21, 2008 Share Posted January 21, 2008 I can't find it, and it's not really suitable anyway (I omit the hold effect so that the ensphered can drink potions and such - given the existing climate of Protection From Magic Phobia, that's not going to fly here. Also eases the copy to Lathander's Shield ). It's pretty much like this, though I've probably forgotten one or two effects. The only really dubious part is the minhp ring from a create magical weapon effect; feel free to turn up your noses if you find it hackish, because it is. COPY_EXISTING spwi413.spl override PATCH_IF SOURCE_SIZE > 0x71 BEGIN READ_LONG 0x64 ho READ_SHORT 0x68 hc READ_LONG 0x6a eo FOR (i1 = hc; i1 > 0x00; i1 -= 0x01) BEGIN READ_SHORT (ho + i1 * 0x28 - 0x0a) ec WRITE_SHORT (ho + i1 * 0x28 - 0x0a) 0x01 READ_SHORT (ho + i1 * 0x28 - 0x08) ei WRITE_SHORT (ho + i1 * 0x28 - 0x08) i1 - 0x01 DELETE_BYTES (eo + ei * 0x30) (0x30 * (ec - 0x01)) WRITE_SHORT (eo + 0x00) 0x92 WRITE_BYTE (eo + 0x02) 0x02 WRITE_BYTE (eo + 0x03) 0x04 WRITE_LONG (eo + 0x04) 0x00 WRITE_LONG (eo + 0x08) 0x01 WRITE_BYTE (eo + 0x0c) 0x00 WRITE_BYTE (eo + 0x0d) 0x01 WRITE_LONG (eo + 0x0e) 0x00 WRITE_BYTE (eo + 0x12) 0x64 WRITE_BYTE (eo + 0x13) 0x00 WRITE_ASCII (eo + 0x14) ~spwi413a~ WRITE_LONG (eo + 0x24) 0x01 WRITE_LONG (eo + 0x28) 0x00 END WRITE_SHORT 0x6e 0x00 WRITE_SHORT 0x70 0x00 DELETE_BYTES (0x72 + 0x58 * hc) (BUFFER_LENGTH - (0x72 + 0x58 * hc)) END BUT_ONLY COPY_EXISTING spwi413.spl ~override/spwi413a.spl~ PATCH_IF SOURCE_SIZE > 0x71 BEGIN WRITE_LONG 0x08 ` 0x00 WRITE_ASCII 0x10 ~~ #8 WRITE_LONG 0x18 0x00 WRITE_SHORT 0x22 0x00 WRITE_SHORT 0x25 0x00 WRITE_BYTE 0x27 0x00 WRITE_LONG 0x34 0x00 READ_LONG 0x64 ho READ_SHORT 0x68 hc READ_LONG 0x6a eo READ_ASCII eo ef (0x30) INNER_PATCH_SAVE ef ~%ef%~ BEGIN WRITE_BYTE 0x03 0x00 WRITE_LONG 0x08 0x00 WRITE_BYTE 0x0d 0x00 WRITE_LONG 0x0e 0x3c WRITE_ASCII 0x14 ~~ #8 WRITE_LONG 0x24 0x00 END FOR (i1 = 0x00; i1 < hc; i1 += 0x01) BEGIN WRITE_LONG (ho + i1 * 0x28 + 0x12) 0x00 WRITE_SHORT (ho + i1 * 0x28 + 0x1e) 0x29 WRITE_SHORT (ho + i1 * 0x28 + 0x20) 0x29 * i1 INSERT_BYTES eo (0x30 * 0x28) FOR (i2 = 0x00; i2 < 0x29; i2 += 0x01) BEGIN WRITE_ASCIIE eo + i2 * 0x30 ~%ef%~ END WRITE_SHORT (eo + 0x30 * 0x00 + 0x00) 0xae // expiry sound effect WRITE_BYTE (eo + 0x30 * 0x00 + 0x0c) 0x0c WRITE_ASCII (eo + 0x30 * 0x00 + 0x14) ~eff_m12b~ WRITE_SHORT (eo + 0x30 * 0x01 + 0x00) 0xd7 // play whiffleball effect WRITE_LONG (eo + 0x30 * 0x01 + 0x08) 0x01 WRITE_ASCII (eo + 0x30 * 0x01 + 0x14) ~minorglb~ WRITE_SHORT (eo + 0x30 * 0x02 + 0x00) 0xb9 // hold creature 2 WRITE_LONG (eo + 0x30 * 0x02 + 0x08) 0x02 WRITE_SHORT (eo + 0x30 * 0x03 + 0x00) 0x14 // invisibility WRITE_SHORT (eo + 0x30 * 0x04 + 0x00) 0x14 // improved invisibility WRITE_LONG (eo + 0x30 * 0x04 + 0x08) 0x01 WRITE_SHORT (eo + 0x30 * 0x05 + 0x00) 0x01 // APR modifier WRITE_LONG (eo + 0x30 * 0x05 + 0x08) 0x01 WRITE_SHORT (eo + 0x30 * 0x06 + 0x00) 0xb0 // movement rate modifier WRITE_LONG (eo + 0x30 * 0x06 + 0x08) 0x01 WRITE_SHORT (eo + 0x30 * 0x07 + 0x00) 0x8e // portrait icon WRITE_LONG (eo + 0x30 * 0x07 + 0x08) 0x0d WRITE_SHORT (eo + 0x30 * 0x08 + 0x00) 0x65 // immunity to effect - damage WRITE_LONG (eo + 0x30 * 0x08 + 0x08) 0x0c WRITE_SHORT (eo + 0x30 * 0x09 + 0x00) 0x78 // immunity to weapons - magical WRITE_LONG (eo + 0x30 * 0x09 + 0x08) 0x01 WRITE_SHORT (eo + 0x30 * 0x0a + 0x00) 0x78 // immunity to weapons - non-magical WRITE_LONG (eo + 0x30 * 0x0a + 0x08) 0x02 FOR (i2 = 0x01; i2 < 0x0b; i2 += 0x01) BEGIN WRITE_SHORT (eo + 0x30 * (0x0a + i2) + 0x00) 0x66 // protection from spell level WRITE_LONG (eo + 0x30 * (0x0a + i2) + 0x04) i2 END FOR (i2 = 0x00; i2 < 0x13; i2 += 0x01) BEGIN WRITE_SHORT (eo + 0x30 * (0x14 + i2) + 0x00) 0xce // immunity to specific spell WRITE_LONG (eo + 0x30 * (0x14 + i2) + 0x04) ` 0x00 END WRITE_ASCII (eo + 0x30 * 0x14 + 0x14) ~sppr105~ WRITE_ASCII (eo + 0x30 * 0x15 + 0x14) ~sppr211~ WRITE_ASCII (eo + 0x30 * 0x16 + 0x14) ~sppr302~ WRITE_ASCII (eo + 0x30 * 0x17 + 0x14) ~sppr304~ WRITE_ASCII (eo + 0x30 * 0x18 + 0x14) ~sppr313~ WRITE_ASCII (eo + 0x30 * 0x19 + 0x14) ~sppr314~ WRITE_ASCII (eo + 0x30 * 0x1a + 0x14) ~spwi213~ WRITE_ASCII (eo + 0x30 * 0x1b + 0x14) ~spwi215~ WRITE_ASCII (eo + 0x30 * 0x1c + 0x14) ~spwi313~ WRITE_ASCII (eo + 0x30 * 0x1d + 0x14) ~spwi502~ WRITE_ASCII (eo + 0x30 * 0x1e + 0x14) ~sppr603d~ WRITE_ASCII (eo + 0x30 * 0x1f + 0x14) ~spwi614~ WRITE_ASCII (eo + 0x30 * 0x20 + 0x14) ~sppr705~ WRITE_ASCII (eo + 0x30 * 0x21 + 0x14) ~sppr725d~ WRITE_ASCII (eo + 0x30 * 0x22 + 0x14) ~spwi712~ WRITE_ASCII (eo + 0x30 * 0x23 + 0x14) ~spwi810~ WRITE_ASCII (eo + 0x30 * 0x24 + 0x14) ~spwi911~ WRITE_ASCII (eo + 0x30 * 0x25 + 0x14) ~spwish25~ WRITE_ASCII (eo + 0x30 * 0x26 + 0x14) ~spwish32~ WRITE_SHORT (eo + 0x30 * 0x27 + 0x00) 0xcd // immunity to secondary type WRITE_LONG (eo + 0x30 * 0x27 + 0x08) 0x04 WRITE_SHORT (eo + 0x30 * 0x28 + 0x00) 0x66 // protection from spell level END END /edit Aha, found it. Looks like I dropped the minhp1 effect - maybe it was potentially fudging some script somewhere. Replaced with secondary type immunity. Also, devSin has a Bounty Hunter special snare patch floating around that addresses some of the same issues for the third extended header for that spell - I just use the same triggered spell for both (less hassle for me, but more files). The Bounty Hunter ability needs a good deal more fixing (second and third headers are ranged, third and fourth headers do no damage, blah blah blah...) Link to comment
devSin Posted January 21, 2008 Share Posted January 21, 2008 Since you've showed me yours, I'll show you mine! COPY_EXISTING SPCL415.SPL OVERRIDE WRITE_BYTE 0x27 0x0 READ_LONG 0x6A eo WRITE_BYTE eo + 0x63 0x3 WRITE_BYTE eo + 0x6D 0x1 READ_SHORT 0x10A x l = eo + (x * 0x30) WRITE_BYTE l + 0x3 0x8 INSERT_BYTES l 0x30 WRITE_BYTE l + 0xC 0x1 WRITE_BYTE l + 0x12 0x64 WRITE_LONG l 0x802008B WRITE_LONG l + 0x4 0x206A READ_SHORT 0xE2 ne WRITE_SHORT 0xE2 ne + 0x1 WRITE_SHORT 0x10A ne + 0x34 eo += ne * 0x30 DELETE_BYTES eo 0x4B0 INNER_PATCH_FILE SPWI413.SPL BEGIN READ_LONG 0x6A o WRITE_ASCIIT o + 0x764 SPWI415 WRITE_LONG o + 0x1B4 0x0 WRITE_LONG o + 0x304 0x3 WRITE_LONG o + 0x728 0x9 WRITE_LONG o + 0x784 0xA WRITE_SHORT o + 0x1B0 0x123 FOR (l = o + 0x21E; l < 0x84A; l += 0x30) BEGIN WRITE_LONG l 0x2A END READ_SHORT 0x90 n WRITE_SHORT 0x90 n + 0x9 l = o + (n * 0x30) INSERT_BYTES l 0x30 WRITE_BYTE l + 0xD 0x1 WRITE_BYTE l + 0x12 0x64 WRITE_LONG l 0x40200A6 WRITE_LONG l + 0x4 0x64 WRITE_LONG l + 0x8 0x1 WRITE_LONG l + 0xE 0x2A WRITE_LONG l + 0x24 0x1 INSERT_BYTES l 0x30 WRITE_BYTE l + 0xD 0x1 WRITE_BYTE l + 0x12 0x64 WRITE_LONG l 0x402001F WRITE_LONG l + 0x4 0x64 WRITE_LONG l + 0x8 0x1 WRITE_LONG l + 0xE 0x2A WRITE_LONG l + 0x24 0x1 INSERT_BYTES l 0x30 WRITE_BYTE l + 0xD 0x1 WRITE_BYTE l + 0x12 0x64 WRITE_LONG l 0x402001E WRITE_LONG l + 0x4 0x64 WRITE_LONG l + 0x8 0x1 WRITE_LONG l + 0xE 0x2A WRITE_LONG l + 0x24 0x1 INSERT_BYTES l 0x30 WRITE_BYTE l + 0xD 0x1 WRITE_BYTE l + 0x12 0x64 WRITE_LONG l 0x402001D WRITE_LONG l + 0x4 0x64 WRITE_LONG l + 0x8 0x1 WRITE_LONG l + 0xE 0x2A WRITE_LONG l + 0x24 0x1 INSERT_BYTES l 0x30 WRITE_BYTE l + 0xD 0x1 WRITE_BYTE l + 0x12 0x64 WRITE_LONG l 0x402001C WRITE_LONG l + 0x4 0x64 WRITE_LONG l + 0x8 0x1 WRITE_LONG l + 0xE 0x2A WRITE_LONG l + 0x24 0x1 INSERT_BYTES l 0x30 WRITE_BYTE l + 0xD 0x1 WRITE_BYTE l + 0x12 0x64 WRITE_LONG l 0x402001B WRITE_LONG l + 0x4 0x64 WRITE_LONG l + 0x8 0x1 WRITE_LONG l + 0xE 0x2A WRITE_LONG l + 0x24 0x1 INSERT_BYTES l 0x30 WRITE_BYTE l + 0xD 0x1 WRITE_BYTE l + 0x12 0x64 WRITE_LONG l 0x4020065 WRITE_LONG l + 0x8 0x19 WRITE_LONG l + 0xE 0x2A WRITE_LONG l + 0x24 0x1 INSERT_BYTES l 0x30 WRITE_BYTE l + 0xD 0x1 WRITE_BYTE l + 0x12 0x64 WRITE_LONG l 0x40200AD WRITE_LONG l + 0x4 0x64 WRITE_LONG l + 0xE 0x2A WRITE_LONG l + 0x24 0x1 INSERT_BYTES l 0x30 WRITE_BYTE l + 0xD 0x1 WRITE_BYTE l + 0x12 0x64 WRITE_LONG l 0x402008E WRITE_LONG l + 0x8 0x7D WRITE_LONG l + 0xE 0x2A WRITE_LONG l + 0x24 0x1 READ_SHORT 0x90 n READ_ASCII o e (n * 0x30) END INSERT_BYTES eo + 0x30 n * 0x30 WRITE_ASCIIE eo + 0x30 "%e%" WRITE_SHORT 0xE0 n + 0x1 READ_SHORT 0x90 ne WRITE_SHORT 0x90 ne + 0x2 WRITE_SHORT 0xBA ne + 0x3 READ_LONG 0x6A eo eo += ne * 0x30 DELETE_BYTES eo + 0x60 0x30 WRITE_LONG eo + 0x6E 0x1E INSERT_BYTES eo 0x30 WRITE_BYTE eo + 0x12 0x64 WRITE_LONG eo 0x302008B WRITE_LONG eo + 0x4 0x394C WRITE_LONG eo + 0x24 0x1 WRITE_LONG eo + 0x28 `0x3 WRITE_SHORT eo + 0xC 0x101 INSERT_BYTES eo 0x30 WRITE_BYTE eo + 0x12 0x64 WRITE_LONG eo 0x302008D WRITE_LONG eo + 0x8 0x6 WRITE_LONG eo + 0x24 0x1 WRITE_LONG eo + 0x28 `0x3 WRITE_SHORT eo + 0xC 0x101 READ_SHORT 0xB8 n WRITE_SHORT 0xB8 n - 0x1 READ_SHORT 0x108 n WRITE_SHORT 0x108 n + 0x1 COPY_EXISTING SPWI413.SPL OVERRIDE READ_BYTE 0x19 f WRITE_BYTE 0x19 f & `0x4 READ_LONG 0x6A eo WRITE_ASCIIT eo + 0x764 SPWI415 WRITE_LONG eo + 0xE 0x3C WRITE_LONG eo + 0x3E 0x3C WRITE_LONG eo + 0x6E 0x3C WRITE_LONG eo + 0x9E 0x3C WRITE_LONG eo + 0xCE 0x3C WRITE_LONG eo + 0xFE 0x3C WRITE_LONG eo + 0x12E 0x3C WRITE_LONG eo + 0x15E 0x3C WRITE_LONG eo + 0x18E 0x3C WRITE_LONG eo + 0x1BE 0x3C WRITE_LONG eo + 0x1EE 0x3C WRITE_LONG eo + 0x1B4 0x0 WRITE_LONG eo + 0x304 0x3 WRITE_LONG eo + 0x728 0x9 WRITE_LONG eo + 0x784 0xA WRITE_SHORT eo + 0x1B0 0x123 READ_SHORT 0x90 ne WRITE_SHORT 0x90 ne + 0xA eo += ne * 0x30 INSERT_BYTES eo 0x30 WRITE_BYTE eo + 0xD 0x1 WRITE_BYTE eo + 0x12 0x64 WRITE_LONG eo 0x40200A6 WRITE_LONG eo + 0x4 0x64 WRITE_LONG eo + 0x8 0x1 WRITE_LONG eo + 0xE 0x3C WRITE_LONG eo + 0x24 0x1 INSERT_BYTES eo 0x30 WRITE_BYTE eo + 0xD 0x1 WRITE_BYTE eo + 0x12 0x64 WRITE_LONG eo 0x402001F WRITE_LONG eo + 0x4 0x64 WRITE_LONG eo + 0x8 0x1 WRITE_LONG eo + 0xE 0x3C WRITE_LONG eo + 0x24 0x1 INSERT_BYTES eo 0x30 WRITE_BYTE eo + 0xD 0x1 WRITE_BYTE eo + 0x12 0x64 WRITE_LONG eo 0x402001E WRITE_LONG eo + 0x4 0x64 WRITE_LONG eo + 0x8 0x1 WRITE_LONG eo + 0xE 0x3C WRITE_LONG eo + 0x24 0x1 INSERT_BYTES eo 0x30 WRITE_BYTE eo + 0xD 0x1 WRITE_BYTE eo + 0x12 0x64 WRITE_LONG eo 0x402001D WRITE_LONG eo + 0x4 0x64 WRITE_LONG eo + 0x8 0x1 WRITE_LONG eo + 0xE 0x3C WRITE_LONG eo + 0x24 0x1 INSERT_BYTES eo 0x30 WRITE_BYTE eo + 0xD 0x1 WRITE_BYTE eo + 0x12 0x64 WRITE_LONG eo 0x402001C WRITE_LONG eo + 0x4 0x64 WRITE_LONG eo + 0x8 0x1 WRITE_LONG eo + 0xE 0x3C WRITE_LONG eo + 0x24 0x1 INSERT_BYTES eo 0x30 WRITE_BYTE eo + 0xD 0x1 WRITE_BYTE eo + 0x12 0x64 WRITE_LONG eo 0x402001B WRITE_LONG eo + 0x4 0x64 WRITE_LONG eo + 0x8 0x1 WRITE_LONG eo + 0xE 0x3C WRITE_LONG eo + 0x24 0x1 INSERT_BYTES eo 0x30 WRITE_BYTE eo + 0xD 0x1 WRITE_BYTE eo + 0x12 0x64 WRITE_LONG eo 0x4020065 WRITE_LONG eo + 0x8 0x19 WRITE_LONG eo + 0xE 0x3C WRITE_LONG eo + 0x24 0x1 INSERT_BYTES eo 0x30 WRITE_BYTE eo + 0xD 0x1 WRITE_BYTE eo + 0x12 0x64 WRITE_LONG eo 0x402008E WRITE_LONG eo + 0x8 0x7D WRITE_LONG eo + 0xE 0x3C WRITE_LONG eo + 0x24 0x1 INSERT_BYTES eo 0x30 WRITE_BYTE eo + 0xD 0x1 WRITE_BYTE eo + 0x12 0x64 WRITE_LONG eo 0x40200AD WRITE_LONG eo + 0x4 0x64 WRITE_LONG eo + 0xE 0x3C WRITE_LONG eo + 0x24 0x1 INSERT_BYTES eo 0x30 WRITE_BYTE eo + 0xD 0x1 WRITE_BYTE eo + 0x12 0x64 WRITE_LONG eo 0x40200B0 WRITE_LONG eo + 0x8 0x1 WRITE_LONG eo + 0xE 0x3C WRITE_LONG eo + 0x24 0x1 Loops are so WeiDU v185! Link to comment
CamDawg Posted January 21, 2008 Share Posted January 21, 2008 Alrighty then. I like Nythrun's approach, with the shell spell as it allows for a more thorough application of the blocking of spell levels and MR and whatnot. The original spell checks MR and allows for save; if it goes through then it casts the secondary spell which is schoolless, level 0, and bypasses MR. Similarities: Sound effect, visual. Duh. Movement rate (via 176) to 0 and hold via 185. Both set immunities to spells of levels 1-9. Differences: Nythrun's uses the Held icon whereas devSin's uses the Otiluke's icon. Both include Invisible (20) but Nythrun's has the second normal invisibility opcode. Nythrun sets ApR to 0. Nythrun sets immunity to magical and non-magical weapons. Nythrun sets immunity to damage (12) opcode. Nythrun sets a lot of individual spell immunities to area-effect spells. Nythrun sets spell deflection on 'remove spell protection' type spells; devSin adds it to all known types (save 11 so it won't block itself). devSin sets 100% resistance to all damage types (pierce, slash, crush, missile, fire, cold, acid, electricity, and magical damage) as well as immunity to poison damage and the poison opcode devSin adds a disable visual (291) opcode devSin adds protection from all spell schools (save 8 to prevent self-blocking) devSin sets MR to 100% I'd personally just go overkill and use the effects from both patches. It's a grip, I know, but it's also the most likely to cover all bases (including mods). So, proposed: Use Nythrun's shell spell approach. Same visuals, sound, hold, immunities to spells level 0-9. ApR to 0. Uses the Otiluke's icon. Apply normal and improved invisibility. Set immunity to magical and non-magical weapons. Immunity to damage (12) opcode. Spell deflection to all spell types. 100% resistance to all damage types (pierce, slash, crush, missile, fire, cold, acid, electricity, and magical damage) as well as immunity to poison damage and the poison opcode Disable visual (291) opcode Protection from all spell schools MR to 100% Run it through the relevant effects immunity batches to provide protections against area-effect spells Look good? Link to comment
devSin Posted January 21, 2008 Share Posted January 21, 2008 Make sure that disable visuals comes first (before the deflection opcodes; prevents unwanted whiffle ball from playing); make sure magic resistance comes last (prevents resisting subsequent effects). Otherwise, I don't think there's much problem with the suggestion (a tad overkill, maybe; you know how I hate the shell spells!). Mine shouldn't set immunity to spell level 4 (kinda defeats the purpose; the spell would block its own subsequent effects); Nythrun cheats. There's no great harm to having novisuals later in the list, but it can cause the whiffle ball to briefly pop up when the deflection effects are applied, which is why I suggest having it as high up as possible. I don't bother with the specific immunities, because there's no AoE in the default game that will bypass the magic resistance, but I don't think there's anything really wrong with adding them. I don't like having it non-dispellable as the original can be dispelled... Link to comment
Nythrun Posted January 21, 2008 Share Posted January 21, 2008 I can get away with not adding the prevent visual effect opcode because I'm not adding any primary/secondary type protections (it's quite redundant with levels 0-9 prevented) in my copy - otherwise it's a must, as the minor globe fails to completely eclipse the whiffleball and it looks horrid. The double invisibility was only because I wanted to make sure Detect Illusions doesn't make the ensphered target visible - it probably isn't necessary, but I don't know all the ins and outs of that ability. You'll need to drop immunity to spell level 0 (almost every dispel), primary type 0 (item dispels), primary type 1 (abjuration), secondary type 0 (almost every dispel), secondary type 4 (beholder anti-magic ray), secondary type 5 (HELL_DISPEL, if it's not already changed along with the primary type (3), and secondary type 11 (DISPEL_NO_SAVE) in addition to changing the bit in all the spell effects - I might be forgetting some. Hold creature II ought to let scripts run unimpeded, so nothing should break. We hope. I don't know of any perfect methods for pausing them anyway. Unless it's too tweakish for everyone's taste, I like unsetting the hostility flag in spwi413. We're both upping the duration to 60 from 42 I think .tp2 spam is so hawt. Link to comment
devSin Posted January 21, 2008 Share Posted January 21, 2008 I can get away with not adding the prevent visual effect opcode because I'm not adding any primary/secondary type protections (it's quite redundant with levels 0-9 prevented) in my copy - otherwise it's a must, as the minor globe fails to completely eclipse the whiffleball and it looks horrid.Yeah, I remove level 0 to not interfere with dispels and true innates (the bad stuff gets blocked by MR anyway). The school/type protections should be all but those actually used by the sphere (again, MR saves me from having to get any more funky). The double invisibility was only because I wanted to make sure Detect Illusions doesn't make the ensphered target visible - it probably isn't necessary, but I don't know all the ins and outs of that ability.It should work fine. I like just improved since it keeps them out of spell targeting and makes them just hazy (it may also make NPCs real invisible until an actual attack, but I can't remember). I think there's a reason for me not bothering to add normal invisibility (I'm sure I used to add it somewhere where only improved was added before), but I'm not sure if it was because the behavior was identical to just improved or something else. You'll need to drop immunity to spell level 0 (almost every dispel), primary type 0 (item dispels), primary type 1 (abjuration), secondary type 0 (almost every dispel), secondary type 4 (beholder anti-magic ray), secondary type 5 (HELL_DISPEL, if it's not already changed along with the primary type (3), and secondary type 11 (DISPEL_NO_SAVE) in addition to changing the bit in all the spell effects - I might be forgetting some.I think I change the types of the dispels to not suck in any case (I consolidate at least HELL_DISPEL and maybe one other into ToB's simple DISPEL_NO_SAVE or vice versa or something); if not, I'll get around to it eventually. I guess it's easier for us to just leave them all alone and further hobble the sphere, yeah. Unless it's too tweakish for everyone's taste, I like unsetting the hostility flag in spwi413.Yep. That should be my f & `0x4 in the patch. I think it's worthwhile since the sphere could technically be used to protect an NPC (this would never, ever happen, but the hostility flag would just turn them hostile regardless of intent). I usually disable it for either that reason (how a spell should be treated by NPCs) or if the combat counter shouldn't start (no hostile flagged summoning spells for me, thanks); targetting other people directly and causing damage are treated as hostile and break invisibility without the flag, so it's pretty useless. Link to comment
aVENGER_(RR) Posted January 21, 2008 Share Posted January 21, 2008 The double invisibility was only because I wanted to make sure Detect Illusions doesn't make the ensphered target visible - it probably isn't necessary, but I don't know all the ins and outs of that ability. Ask me. Basically, it dispels any form of dispellable invisibility (i.e. everything except the Baldurdashed Staff of the Magi), blur, mirror/reflected image and also destroys all illusionary clones in a small radius. However, it cannot dispel Sanctuary under any circumstances. BTW, the sphere should definitively be susceptible to Dispel Magic both per the BG2 description and per PnP rules. Link to comment
CamDawg Posted January 21, 2008 Share Posted January 21, 2008 We won't be changing dispellability. Link to comment
Nythrun Posted January 21, 2008 Share Posted January 21, 2008 I don't know all the ins and outs of that ability.Detect Illusions removes by primary type (5) - the dispel settings are irrelevant, as is the secondary type. Which means I don't have to rererewrite my improved invisibility patch. Good thing too. I might have gone berserk. After double checking, we're setting HELL_DISPELL (sic) to no secondary type already, so secondary type five can stay. I've already set FORCE_DISPEL to nulls locally; beholder rays I leave alone - who knows what was going on there. If I'd been awake when I through together that "this is something like what I did" patch, I'd have written a disable held icon effect rather than a display held icon effect. I'll probably add a no foot circle effect as well, since party members won't lose that upon going improved invisible. Disable priest/wizard/innate spellcasting effects do indeed stop ForceSpell() - adding those will make beholders shut the @#$% up already without killing scripts. ReallyForceSpell() is still really unstoppable, but it's not abused often enough to care about. I don't trust magic resistance to stop a caster's own persistent area effect spells, and two of the wish damage spells punch through almost everything. Link to comment
devSin Posted January 21, 2008 Share Posted January 21, 2008 As somebody who's run through multiple intensive testing runs of the game with boffo magic resistance, I can unequivocally state that it's pretty absolute. The person in the sphere is held and can't cast magic missile and such preset target spells on themselves, and the area effects wouldn't do anything even if they could cast those. The held icon doesn't bother me (I think it's auto-added by Hold2 along with the yellow color glow and string); the sphere icon was just fluff (why not, I figured). Meh for disabling spellcasting (either/or, I don't think it much matters); canon beholders are supposed to be able to fire off rays through hold effects anyway (even though they can't move the eyestalks). What's your improved invis patch? It would have been nice if the spell were abjuration/non-combat, but I couldn't justify that change locally (I've never really counted on non-detection doing anything worthwhile, so why bother). I'd like having it non-combat, but that wouldn't actually do anything, so I just left it alone. Link to comment
Nythrun Posted January 22, 2008 Share Posted January 22, 2008 After replacing the immunity to Entangle with 100% magic resistance and having Jaheira ReallyForce Otiluke's and Entangle, she's still being affected (rolling saving throws, displaying icons, and generally being a nuisance). That doesn't matter so much (as she can't move anyway) and immunity to damage will take care of most AoEs, but I don't want to worry about bodging in immunity to slay from Cloudkill and whatever else is floating around Some of the wish and wild magic spells actually end up being self-cast on all actors and are extremely nasty. As I recall, though, my list of persistent immunity-bypassing spells wasn't quite the same as yours, so there's probably something else going on here that I've not yet figured out. The sphere icon may be fluff, but it's nice fluff, and it's not difficult to figure out where it was intended to go Yes to beholders firing rays when held, no to beholders firing rays while "completely unable to affect the outside world". None of which will ever matter, as the spell is really not very good even after being completely rebuilt Hmm, maybe blindness would be better than disabling the spellcasting - I'll try that instead. Nothing's ever quite good enough. My improved invisibility patch is dynamically adding a new secondary type, then patching all spells that use the improved invisibility effect to use the new secondary type, then adding to the beginning of their effects list a zero duration immunity to string (blocking the string displayed when a remove by secondary effect runs - this works only on the initial casting) followed by a remove secondary type: improved invisibility effect. At the end of the effects list goes the saving throw bonus. It's been solid - I just had a paroxysm of anxiety when I realized I hadn't accounted for thief Detect Illusions. Fortunately it's a non-issue; I'd iterated through about five versions of Improved Invisibility and this has been the only thing that I've been happy with. I've done similiarly for Slow, Haste, Deafness, Blindness, Silence, Poison and Disease (which have to be redone, thank you research of ill-omen!), and Bard Song, and will probably add a few more before I'm through. It may not be a fix, but they work correctly now, and otherwise don't Link to comment
CamDawg Posted January 22, 2008 Share Posted January 22, 2008 With these last adjustments, this is in. Tested in game, seems to work fine, can be brought down by DM--and yes, opcode 185 adds the hold icon and displays 'Held' automatically. Link to comment
Recommended Posts
Archived
This topic is now archived and is closed to further replies.