Jump to content

Photo

Otiluke's Resilient Sphere


39 replies to this topic

#16 Nythrun

Nythrun

    Long since out to pasture

  • Modders
  • 1761 posts
  • Gender:Female

Posted 09 June 2007 - 09:12 PM

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.
"You tell lies, too."
"Not I." The witch laughed; her laughter was clear and yet unpleasant. "I used to as a child, I confess. But I soon found the truth more disconcerting."

#17 Miloch

Miloch

    Barbarian

  • Modders
  • 4803 posts
  • Gender:Male
  • Location:At Large

Posted 10 June 2007 - 02:48 PM

So...

Can you upload your version somewhere? or post the details at least


Infinity Engine Contributions
Aurora * BG1 NPC * BG1 Fixpack * Haiass * Infinity Animations * Level 1 NPCs * P5Tweaks
PnP Free Action * Thrown Hammers * Unique Containers * BG:EE * BGII:EE * IWD:EE
================================================================
Player & Modder Resources
BAM Batcher * Creature Lister * Creature Checker * Creature Fixer * Tutu/BGT Area Map & List * Tutu Mod List
================================================================
"The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it." -Terry Pratchett


#18 CamDawg

CamDawg

    ALL GLORY TO THE HYPNOTOAD

  • Gibberling Poobah
  • 9680 posts
  • Gender:Not Telling

Posted 17 January 2008 - 09:10 AM

So...

So...

Can you upload your version somewhere? or post the details at least

:)

Why is this Hypnotoad video so popu... ALL GLORY TO THE HYPNOTOAD.


#19 Nythrun

Nythrun

    Long since out to pasture

  • Modders
  • 1761 posts
  • Gender:Female

Posted 20 January 2008 - 06:53 PM

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 :band: ).

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...)

Edited by Nythrun, 20 January 2008 - 07:37 PM.

"You tell lies, too."
"Not I." The witch laughed; her laughter was clear and yet unpleasant. "I used to as a child, I confess. But I soon found the truth more disconcerting."

#20 devSin

devSin
  • Modders
  • 3017 posts
  • Gender:Male

Posted 20 January 2008 - 07:53 PM

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! ;)

Edited by devSin, 20 January 2008 - 07:59 PM.


#21 CamDawg

CamDawg

    ALL GLORY TO THE HYPNOTOAD

  • Gibberling Poobah
  • 9680 posts
  • Gender:Not Telling

Posted 21 January 2008 - 10:13 AM

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?

Why is this Hypnotoad video so popu... ALL GLORY TO THE HYPNOTOAD.


#22 devSin

devSin
  • Modders
  • 3017 posts
  • Gender:Male

Posted 21 January 2008 - 11:23 AM

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...

Edited by devSin, 21 January 2008 - 11:38 AM.


#23 Nythrun

Nythrun

    Long since out to pasture

  • Modders
  • 1761 posts
  • Gender:Female

Posted 21 January 2008 - 01:11 PM

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 :band:

.tp2 spam is so hawt.
"You tell lies, too."
"Not I." The witch laughed; her laughter was clear and yet unpleasant. "I used to as a child, I confess. But I soon found the truth more disconcerting."

#24 devSin

devSin
  • Modders
  • 3017 posts
  • Gender:Male

Posted 21 January 2008 - 01:38 PM

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.

Edited by devSin, 21 January 2008 - 01:40 PM.


#25 aVENGER_(RR)

aVENGER_(RR)
  • Modders
  • 1008 posts
  • Gender:Not Telling

Posted 21 January 2008 - 01:45 PM

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. :band: 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.

#26 CamDawg

CamDawg

    ALL GLORY TO THE HYPNOTOAD

  • Gibberling Poobah
  • 9680 posts
  • Gender:Not Telling

Posted 21 January 2008 - 02:21 PM

We won't be changing dispellability.

Why is this Hypnotoad video so popu... ALL GLORY TO THE HYPNOTOAD.


#27 Nythrun

Nythrun

    Long since out to pasture

  • Modders
  • 1761 posts
  • Gender:Female

Posted 21 January 2008 - 02:50 PM

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.
"You tell lies, too."
"Not I." The witch laughed; her laughter was clear and yet unpleasant. "I used to as a child, I confess. But I soon found the truth more disconcerting."

#28 devSin

devSin
  • Modders
  • 3017 posts
  • Gender:Male

Posted 21 January 2008 - 03:15 PM

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.

#29 Nythrun

Nythrun

    Long since out to pasture

  • Modders
  • 1761 posts
  • Gender:Female

Posted 21 January 2008 - 04:09 PM

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 :D 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 :D 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 :band: 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 ;)
"You tell lies, too."
"Not I." The witch laughed; her laughter was clear and yet unpleasant. "I used to as a child, I confess. But I soon found the truth more disconcerting."

#30 CamDawg

CamDawg

    ALL GLORY TO THE HYPNOTOAD

  • Gibberling Poobah
  • 9680 posts
  • Gender:Not Telling

Posted 22 January 2008 - 05:09 AM

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.

Why is this Hypnotoad video so popu... ALL GLORY TO THE HYPNOTOAD.




Reply to this topic



  


0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users