Jump to content

No Shapeshifter patch?


Recommended Posts

I believe Loke is referring to the dispellable claw issue with shapeshifter druids, which has been languishing in the pending fixes forum for some time now. Dispel magic kills anything in the magic weapon slot of a creature, regardless of how it was created and with what parameters. Basically, a shapeshifter in druid form would always lose their werewolf claws if hit with a dispel magic. It's a bug in that, being lycanthropes, dispel magic shouldn't affect their shapeshifting at all, and also an exploit in that once that paw is gone you can go back to using your Hackmaster +12 with your enhanced abilities from the shapeshift.

 

It's a pretty simple fix; I think the big question was whether or not generic druid shapeshifting abilities should also be undispellable.

Link to comment

By "generic shapeshifting abilities" do you mean the wolf-form itself (or whatever) should be undispellable? If so, I'd say yes. Since as you suggest, it's controlled lycanthropism - closer to a disease than magic.

 

Edit: The follow-on question that occurred to me was whether lycanthropy is dipellable ('curable') by cure disease. According to the 2e PHB: "When cast by a priest of at least 12th level, this spell [cure disease] cures lycanthropy if cast within three days of the infection." So... I dunno if that's even relevant to shapeshifters since one may probably safely assume they were infected over 3 days ago.

 

It also says that dispel magic "has a chance to remove spells and spell-like effects (including device effects and innate abilities) from creatures or objects." So... hmm. But it also says "Certain spells or effects cannot be dispelled;" although I can't find a specific reference, shapeshifting could be one of those I suppose.

Link to comment
By "generic shapeshifting abilities" do you mean the wolf-form itself (or whatever) should be undispellable? If so, I'd say yes. Since as you suggest, it's controlled lycanthropism - closer to a disease than magic.
Not all shapeshifting abilities are manifestations of controlled lycanthropy. Generic druids can shapeshift, but only shapeshifters (the kit) are lycanthropes. The "non-magical" werewolf form should certainly not be dispellable, but since non-lycanthrope druids shapeshift by way of magic of some kind, those forms being susceptible to dispelling makes sense to me.
Link to comment
Not all shapeshifting abilities are manifestations of controlled lycanthropy. Generic druids can shapeshift, but only shapeshifters (the kit) are lycanthropes.

Yes, exactly. No one's suggested that the wereforms of a shapeshifter are dispellable at all; otherwise you could run around the game and force werefoos into human form or fooweres into foo form. Currently, vanilla druids lose their paws to dispel magic but not their form when shapechanged, same as shapeshifters.

Link to comment

Well, here's more 2e contradiction for you (from the DMG):

While often considered a disease, lycanthropy can more properly be described as a natural condition, in some cases, or a curse, in others. In either case, it is immune to the effects of cure disease spells and powers. Freeing a character from the torments of lycanthropy is a more involved and complicated matter than just casting a single spell.

 

True lycanthropy is neither a curse nor a contagion, but the ability, possessed by a limited number of species, to change into an animal shape at will. As such, true lycanthropes are not affected by the phases of the moon, darkness, or any other limitations on their changing abilities indicated in the folklore of werewolves.

Now it doesn't seem to say anywhere what a druid's generic shapeshifting ability is considered, but it sounds pretty close to this. Except that humans probably aren't one of these species in question, but perhaps druids are an exception, having gained the shapeshifting ability by communing with nature and the beasts, or whatever.

 

As a practical matter, I'd find it kind of silly if a druid's shapeshifting ability could be dispelled. So if a druid in eagle form gets hit by a 'dispel magic' he automatically goes *splat*?

 

As a technical matter, I think if you're making one effect dispellable (the paw), you should make the other dispellable. Or make them both undispellable.

 

I guess people will go either way on this, so why not just stick it in the existing Shapeshifter Rebalancing component in Tweaks, or make it a separate optional component.

Link to comment
Depends on what you mean by bugs. While the Fixpack contains plenty of tweaks (ok, that joke is getting old), the Shapeshifter Rebalancing component is found in the Tweak Pack.

Well that's what I mean-in the readme for the tweakpack, Weimer listed what the werewolf forms should get, and listed what they didn't-the lack of immunity to normal weapons, bugged magical and elemental resistance and the paws don't do the correct damage for both forms too.

 

The reason I'm bring it up is because-as you very well know-I spent a few weeks patching up the shapeshifter kit so it actually worked the way it was supposed to, and I was checking this fixpack to see if it had already been done and I'd wasted my time. Imagine my surprise when the answer was apparently 'Nope.'

 

I've never installed the 'rebalancing' tweak by Weimer because it does too many things I'm iffy about-I can see the reason for making it work via equipping the claws as a weapon for example, but I prefer to do it via a spell. The ability to cast spells is another thing that really put me off it.

Link to comment

I've seen statements from the devs (please don't ask me to find a link ;) ) that the shapeshifter was not given full lycanthropic abilities because of balance concerns. So the only actual bug here is the disspellable paw.

Link to comment
I've seen statements from the devs (please don't ask me to find a link ;) ) that the shapeshifter was not given full lycanthropic abilities because of balance concerns. So the only actual bug here is the disspellable paw.

Find a link please. ;)

 

Joking aside, I can understand why-both forms are not exactly pushovers anymore now I've 'fixed' them.

Link to comment

Edit: Ugh, that was a mess

 

Ok, looking at my various sourcebooks, at high levels (it doesn't say what "high levels" are) Druids are considered natural shapeshifters along with lycanthropes and doppelgangers, etc)

 

On the other hand, the Polymorph spells are all explicitly dispellable.

 

Thirdly, Shape Change (greater) can be argued to be undispellable as the caster does not shift back to their original form on death. Then again, they do shift back when the spell expires. Given the power of the spell, I'd be inclined to go with undispellable..

 

 

So, the rules I would follow are as below:

 

Innate ability to shapeshift: not dispellable.

Mage spells of the Polymorph variety: dispellable

Shapeshift via items: dispellable

Greater Shape Change (not dispellable, though this probably warrants further discussion)

Any form changing spell that mentions how it emits a strong magical aura/presence: dispellable

 

 

 

 

Natural shapeshifters (lycanthropes, dopplegangers, higher level druids, etc.)

are affected for but one round, and can then resume their normal form.

This is pulled from the description of Polymorph other and stating how Natural shapeshifters are only affected for one round.

Link to comment

OK, I've been playing around with this a bit. I've included all druid shapeshifting, the slayer change, druid HLA elemental transformations, polymorph squirrel from Sphere of Chaos, polymorphs from the Cloak of the Sewers, and the arcane spell Shapechange. These seem to be the intended set of 'undisspellable' shape changes by Bio; missing are items from touch attacks, magically created weapons (i.e Spiritual Hammer, Black Blade o' Disaster, etc.) and the fourth level arcane polymorph spells.

 

The basic idea for the fix is that the 'paws' created by the various shape change spells re-create themselves every few seconds via a slightly delayed spell. When a dispel magic hits, the paw disappears and the spell kicks in a few moments later with a shiny new paw. All of the shapeshift-back-to-normal-form spells interrupt this cycle, allowing the paw to go away permanently.

 

Now, it works dandy on a technical level. But the paw recreation spell fires every few seconds and resets the animation cycle. It doesn't seem to interrupt any actual actions or scripts, but it makes the character animation a bit jerky. On this alone I think it should be optional, especially as some of these paw items are also used by normal creatures, i.e. the iron golem and mind flayer weapons used by Shapechange are also used by, uh, iron golems and mind flayers.

 

At any rate, here's the code I'm currently using to patch this if anyone wants to check it out or play around (you'll also need the attached spell file). If anyone wants to play around with it or, even better, suggest a better fix, I'm all ears. :)

 

COPY ~bg2fixpack/spl/cdbrblp.spl~ ~override/cdbrblp.spl~
 ~bg2fixpack/spl/cdbrblp.spl~ ~override/cdbrbrp.spl~
 ~bg2fixpack/spl/cdbrblp.spl~ ~override/cddruear.spl~
 ~bg2fixpack/spl/cdbrblp.spl~ ~override/cddrufir.spl~
 ~bg2fixpack/spl/cdbrblp.spl~ ~override/cdearthr.spl~
 ~bg2fixpack/spl/cdbrblp.spl~ ~override/cdfirern.spl~
 ~bg2fixpack/spl/cdbrblp.spl~ ~override/cdgoliro.spl~
 ~bg2fixpack/spl/cdbrblp.spl~ ~override/cdmindfl.spl~
 ~bg2fixpack/spl/cdbrblp.spl~ ~override/cdplyjel.spl~
 ~bg2fixpack/spl/cdbrblp.spl~ ~override/cdplytro.spl~
 ~bg2fixpack/spl/cdbrblp.spl~ ~override/cdpolyra.spl~
 ~bg2fixpack/spl/cdbrblp.spl~ ~override/cdshakti.spl~
 ~bg2fixpack/spl/cdbrblp.spl~ ~override/cdslayer.spl~
 ~bg2fixpack/spl/cdbrblp.spl~ ~override/cdsquirp.spl~
 ~bg2fixpack/spl/cdbrblp.spl~ ~override/cdtrolla.spl~
 ~bg2fixpack/spl/cdbrblp.spl~ ~override/cdwolfgr.spl~
 ~bg2fixpack/spl/cdbrblp.spl~ ~override/cdwolfm.spl~
 WRITE_ASCIIE 0xac "%DEST_RES%" #8
 WRITE_SHORT  0xac 100 // restore probability

COPY_EXISTING ~brblp.itm~	~override~ // Shapeshifts Black Bear
		  ~brbrp.itm~	~override~ // Shapeshifts Brown Bear, Shapeshifts Werewolf, Shapeshifts Greater Werewolf
		  ~druear.itm~   ~override~ // earth elemental transformation
		  ~drufir.itm~   ~override~ // fire elemental transformation
		  ~earthrn.itm~  ~override~ // Shapechange Earth Elemental
		  ~firern.itm~   ~override~ // Shapechange Fire Elemental
		  ~goliro.itm~   ~override~ // used by iron golems, Shapechange Iron Golem
		  ~mindflay.itm~ ~override~ // used by mind flayers, Shapechange Mind Flayer
		  ~plyjelly.itm~ ~override~ // jelly from cloak of sewers
		  ~plytroll.itm~ ~override~ // troll from cloak of sewers
		  ~polyrat.itm~  ~override~ // rat from cloak of sewers
		  ~shakti1.itm~  ~override~ // short sword +4
		  ~slayerwp.itm~ ~override~ // slayer, Slayer Change
		  ~squirp.itm~   ~override~ // Sphere of Chaos
		  ~trollall.itm~ ~override~ // Shapechange Giant Troll
		  ~wolfgr.itm~   ~override~ // Shapechange Greater Wolfwere
		  ~wolfm.itm~	~override~ // Shapeshifts Wolf
 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 "new_fx" = 1
 WRITE_SHORT  0x70 ("%fx_num%" + "%new_fx%")
 FOR (index2 = 0; index2 < abil_num; index2 = index2 + 1) BEGIN // cycle thru abilities
READ_SHORT  ("%abil_off%" + 0x20 + ("%index2%" * 0x38)) "abil_fx_idx"
WRITE_SHORT ("%abil_off%" + 0x20 + ("%index2%" * 0x38)) ("%abil_fx_idx%" + "%new_fx%")
 END
 INSERT_BYTES   ("%fx_off%"	   ) 0x30
WRITE_SHORT  ("%fx_off%"	   ) 146  // cast spell
WRITE_BYTE   ("%fx_off%" + 0x02) 1 // target: self
WRITE_LONG   ("%fx_off%" + 0x08) 1 // cast instantly
WRITE_BYTE   ("%fx_off%" + 0x0c) 3 // delay/limited
WRITE_LONG   ("%fx_off%" + 0x0e) 2 // duration
WRITE_BYTE   ("%fx_off%" + 0x12) 100 // probability
WRITE_ASCIIE ("%fx_off%" + 0x14) ~cd%SOURCE_RES%~ // resref
WRITE_SHORT  ("%fx_off%" + 0x1c) 0 // lop off last two characters
 BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~spin122.spl~  ~override~
		  ~spin123.spl~  ~override~
		  ~spin124.spl~  ~override~
		  ~spin150.spl~  ~override~
		  ~spin151.spl~  ~override~
		  ~spin152.spl~  ~override~
		  ~spin153.spl~  ~override~
		  ~spin154.spl~  ~override~
		  ~spin155.spl~  ~override~
		  ~spin156.spl~  ~override~
		  ~spin157.spl~  ~override~
		  ~spin529.spl~  ~override~
		  ~spin550.spl~  ~override~
		  ~spin667.spl~  ~override~
		  ~spin718.spl~  ~override~
		  ~spin779.spl~  ~override~
		  ~spin992.spl~  ~override~
		  ~spinhum.spl~  ~override~
		  ~spmdslay.spl~ ~override~
		  ~spwi489.spl~  ~override~
		  ~spwi490.spl~  ~override~
		  ~spwi491.spl~  ~override~
		  ~spwi493.spl~  ~override~
		  ~spwi494.spl~  ~override~
		  ~spwi495.spl~  ~override~
		  ~spwi496.spl~  ~override~
		  ~spwi497.spl~  ~override~
		  ~spwi498.spl~  ~override~
		  ~spwi499.spl~  ~override~
		  ~spwm113.spl~  ~override~
 READ_LONG  0x64 "abil_off"
 READ_SHORT 0x68 "abil_num"
 READ_LONG  0x6a "fx_off"
 SET "fx_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" = ("%abil_fx_idx%" + "%fx_delta%")
FOR (index2 = 0; index2 < abil_fx_num; index2 = index2 + 1) BEGIN
  READ_BYTE  ("%fx_off%" +		(("%abil_fx_idx%" + "%index2%") * 0x30)) "opcode"
  READ_ASCII ("%fx_off%" + 0x14 + (("%abil_fx_idx%" + "%index2%") * 0x30)) "item"
  PATCH_IF (("%opcode%" = 112) AND
			(("%item%" STRING_COMPARE_CASE "brblp" = 0) OR
			 ("%item%" STRING_COMPARE_CASE "brbrp" = 0) OR
			 ("%item%" STRING_COMPARE_CASE "druear" = 0) OR
			 ("%item%" STRING_COMPARE_CASE "drufir" = 0) OR
			 ("%item%" STRING_COMPARE_CASE "earthrn" = 0) OR
			 ("%item%" STRING_COMPARE_CASE "firern" = 0) OR
			 ("%item%" STRING_COMPARE_CASE "goliro" = 0) OR
			 ("%item%" STRING_COMPARE_CASE "mindflay" = 0) OR
			 ("%item%" STRING_COMPARE_CASE "plyjelly" = 0) OR
			 ("%item%" STRING_COMPARE_CASE "plytroll" = 0) OR
			 ("%item%" STRING_COMPARE_CASE "polyrat" = 0) OR
			 ("%item%" STRING_COMPARE_CASE "shakti1" = 0) OR
			 ("%item%" STRING_COMPARE_CASE "slayerwp" = 0) OR
			 ("%item%" STRING_COMPARE_CASE "squirp" = 0) OR
			 ("%item%" STRING_COMPARE_CASE "trollall" = 0) OR
			 ("%item%" STRING_COMPARE_CASE "wolfgr" = 0) OR
			 ("%item%" STRING_COMPARE_CASE "wolfm" = 0))) BEGIN  // create item
	INSERT_BYTES   ("%fx_off%" +		("%abil_fx_idx%" * 0x30)) 0x30
	  WRITE_SHORT  ("%fx_off%" +		("%abil_fx_idx%" * 0x30)) 206   // protection from spell
	  WRITE_BYTE   ("%fx_off%" + 0x02 + ("%abil_fx_idx%" * 0x30)) 1 // self
	  WRITE_LONG   ("%fx_off%" + 0x04 + ("%abil_fx_idx%" * 0x30)) 0xffffffff // no string
	  WRITE_LONG   ("%fx_off%" + 0x0e + ("%abil_fx_idx%" * 0x30)) 6 // duration
	  WRITE_BYTE   ("%fx_off%" + 0x12 + ("%abil_fx_idx%" * 0x30)) 100 // probability
	  WRITE_ASCIIE ("%fx_off%" + 0x14 + ("%abil_fx_idx%" * 0x30)) ~cd%item%~ // spell
	  WRITE_SHORT  ("%fx_off%" + 0x1c + ("%abil_fx_idx%" * 0x30)) 0 // knocks off last two characters
	SET "abil_fx_num" = "%abil_fx_num%" + 1
	SET "index2" = "%index2%" + 1
	SET "fx_delta" = "%fx_delta%" + 1
  END
END
WRITE_SHORT ("%abil_off%" + 0x1e + (0x28 * "%index%")) "%abil_fx_num%"
WRITE_SHORT ("%abil_off%" + 0x20 + (0x28 * "%index%")) "%abil_fx_idx%"
 END
 BUT_ONLY_IF_IT_CHANGES

cdbrblp.zip

Link to comment

I'm not sure I personally would install a solution that has even a potential for stutter. Is there any way of implementing a more graceful solution? Maybe make all shapeshifted forms and weapons undispellable but maybe have a duration? Or maybe put some sort of check in baldur.bcs to destroy the items under certain conditions... I dunno.

Link to comment
I'm not sure I personally would install a solution that has even a potential for stutter.

AFAICT, only the animation is jerky. I was able to move, attack, etc. without issue, but I had posted it in the hopes that others would play around with it. This fix has been relegated to a separate OBC component since I don't have more time to play around with it.

 

Maybe make all shapeshifted forms and weapons undispellable but maybe have a duration?
Dispel magic kills anything in the magic weapon slot of a creature, regardless of how it was created and with what parameters.
Link to comment

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...