Jump to content

Protection from Undead, fixable?


Recommended Posts

In BG1 these scrolls might have been balanced, because most undead are randomly encountered fodder & pests (skeletons/zombies/ghouls/ghasts etc.) with boss types like the demon knight not being counted as undead (neither are original BG skeleton warriors). In BG2 where there are a lot of powerful undead who are worth massive amounts of xp and/or lootable for powerful equipment and/or being plot-important creatures the scroll just breaks things, in particular despite the description of not protecting from magical attacks it does prevent any undead targeting the user with single target spells and abilities.

Solutions I've seen other modders implement so far:

  • Ancient (Tactics) some enemies like Bodhi aren't classed as undead (which prevent certain weapons, spells and abilites from working as intended), liches have an auto dispel thing in their script.
  • Scroll is nerfed to prevent only energy drain (has its own problems, not all drainers are undead and permanent NPP is anyway pretty cheap in vanilla)
  • With SCS some bosses (demiliches, Bodhi, shade lord) specifically remove this scroll (without dispelling other buffs) and liches are more liberal in their use of AoE magic.

Other possible solutions:

  • Flag the natural attacks of any undead monster as cursed weapons and implement scroll based opcode #120 versus cursed weapons (has a problem for undead using normal weapons, particularly missiles, or perhaps that's fine... and also protects you from the occasional fighter wielding a cursed weapon lol, unless of course the mod moves these to his inventory and grants him an undroppable, uncursed copy).
  • Grant a simple +20 to AC versus undead (kind of like the potion of magic shielding, except that they'll hit on crits unless an aura based debuff penalizes undead critical hit rolls by 1 every round).
  • Externalize all undead special touch attacks as .spl files and the scroll protects from all such (thus is less powerful than its description suggests, as physical damage from undead can still kill you)

Options #1 and #2 also need detectability of the scroll and revision of undead monster's scripts so that they'll realize the protected character can't be hit. The third choice looks to be the easiest, but also somehow the blandest and most obvious. Thoughts?

Edited by polytope
Link to comment
58 minutes ago, subtledoctor said:

I like the idea of being completely ignored, like a super Sanctuary effect. But like Sanctuary, the effect should end if you stab them. So just give all undead a contingency that says if they are hit or damaged or whatever, they radiate a wide AoE effect that cancels the scroll’s protection. 

I considered that but have a couple of issues:

  1. Undead with offensive spells and magical or psionic abilities (liches, death tyrants, alhoon etc.) still aren't able to target the protected character unless and until attacked (because there are situations when they're mixed with other enemies, the Twisted Rune, obviously), contrary to the scroll's description.
  2. If a character without protection from undead attacks an undead, in response it gets removed even from allies who might have just been intended to hide and contribute buffs/healing/summons (because energy-drainable, poor AC etc.), likewise it makes the character visible to all undead and not just the one against whom the warding was broken.

Here is the (not entirely satisfying) code by which my scripted demiliches currently cope with protection from undead scrolls, they will generally ignore character's warded by such unless left alone with them, at any rate, the protected would be targeted last:

IF
	General(Myself,HUMANOID)
	See(NearestEnemyOf(Myself))
	!GlobalTimerNotExpired("Polyflip","LOCALS")
THEN
	RESPONSE #100
		ChangeGeneral(Myself,UNDEAD)
END

IF
	General(Myself,UNDEAD)
	!See(NearestEnemyOf(Myself))
	CombatCounterGT(0)
	TookDamage()
	!GlobalTimerNotExpired("Polyflip","LOCALS")
THEN
	RESPONSE #100
		ChangeGeneral(Myself,HUMANOID)
		SetGlobalTimer("Polyflip","LOCALS",24)
END

IF
	General(Myself,UNDEAD)
	!See(NearestEnemyOf(Myself))
	HPPercentLT(Myself,100)
	!GlobalTimerNotExpired("Polyflip","LOCALS")
	OR(6)
		Range(Player1,7)
		Range(Player2,7)
		Range(Player3,7)
		Range(Player4,7)
		Range(Player5,7)
		Range(Player6,7)
THEN
	RESPONSE #100
		ChangeGeneral(Myself,HUMANOID)
		SetGlobalTimer("Polyflip","LOCALS",24)
END

 

Link to comment

Can the maximum level of the item be used to make only some undead of certain level affected? That would kind of solve what you said: only minor undead like in BG1 would ignore the protected, but powerful ones like liches, provided they have a reasonable level, would not.

Link to comment
10 hours ago, suy said:

Can the maximum level of the item be used to make only some undead of certain level affected? That would kind of solve what you said: only minor undead like in BG1 would ignore the protected, but powerful ones like liches, provided they have a reasonable level, would not.

Opcode #100 can only restrict by ids entry and not level, certainly it would be possible for the scroll to exclusively protect from race = ghoul/skeleton/zombie/shadow etc. but then I'd need to patch every undead in the game to have their race changed if their HD/level is above a certain threshold and furthermore contrary to the scroll's description powerful undead - like ancient vampires - could still kill the user with physical attacks, while low HD undead who nevertheless have spells or spell like abilities (wight mages or whatever, like in IWD, if anyone adds them...) can't target the scroll user with magical attacks.

Link to comment

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...