Jump to content

Starting to think about SR in SCSII


DavidW

Recommended Posts

I thought I'd put a few notes for interested people (notably Demivrgvs) as to what I need to do to make SCSII allow for SR. (At the moment I'm going for "all-or-nothing" compatibility, and not supporting compatibility with partial installs of SR). I should stress that it will probably be several months at least till I turn my attention to this.

 

As I've already noted, I can't really handle significant changes in the grid of defensive and antimagic spells, so the issue is really: what new offensive spells should I be using? ("New" construed broadly: damaging, disabling, summoning...)

 

Basically, I can't use any non-party-friendly area effect. Other than that, I can handle most things. (For this reason, SCSv10 uses Glyph of Warding and Silence when SR is installed, since both become party-friendly.)

 

So the most important thing I need is a list of the relevant spells, plus a handle to get hold of them (their IDS entry and/or their filename) and some quick advice as to how to use them. I'll write the AI code myself and code it to be installed if SR is present.

 

Then I need to get the spells into the game. There are two ways of doing this. The simplest is to hot-swap them with existing spells. I can take as input a table like this one:

SPWI304 SPWI302
SPWI305 SPWI311 SPWI312

That swaps all instances of SPWI304 for SPWI302, and swaps all instances of SPWI305 for either SPWI311 or SPWI312 (determined randomly at install time). Ideally new spells should be the same school as old spells (else specialist wizards might cheat) but that's somewhat in tension with SR's goal of increasing the range of usable spells.

 

The more sophisticated way is just to rewrite SCS's existing spell-selection algorithms so there's an SR-friendly version. These algorithms look like this:

 

	WHILE $nummem(2)<=$numspells(~%newlevel%~ 2) AND $numspells(~%newlevel%~ 2)>0 BEGIN

	SET $nummem(2)=$nummem(2)+1

	PATCH_IF ~%kit%~ STRING_EQUAL_CASE ~invoker~ THEN BEGIN

		PATCH_IF ~newlevel~>6 THEN BEGIN
			SET ~choice~=RANDOM(1 4)
			PATCH_IF ~choice~<3 THEN BEGIN
				ADD_MEMORIZED_SPELL ~spwi205~ #1 ~wizard~ //Horror
			END ELSE BEGIN
				PATCH_IF ~choice~=3 THEN BEGIN
					ADD_MEMORIZED_SPELL ~spwi215~ #1 ~wizard~ // Web
				END ELSE BEGIN
					ADD_MEMORIZED_SPELL ~spwi213~ #1 ~wizard~ // Stinking Cloud
				END
			END
		END ELSE BEGIN
			ADD_MEMORIZED_SPELL ~spwi205~ #1 ~wizard~ //Horror
		END

	END

	PATCH_IF ~%kit%~ STRING_EQUAL_CASE ~enchanter~ THEN BEGIN

		SET ~choice~=RANDOM(1 8)
		PATCH_IF ~choice~<4 THEN BEGIN
			ADD_MEMORIZED_SPELL ~spwi220~ #1 ~wizard~ //Power Word: Sleep
		END ELSE BEGIN
			PATCH_IF ~choice~<6 THEN BEGIN
				ADD_MEMORIZED_SPELL ~spwi221~ #1 ~wizard~ // Ray of Enfeeblement
			END ELSE BEGIN
					 PATCH_IF ~choice~=6 THEN BEGIN
						  ADD_MEMORIZED_SPELL ~spwi211~ #1 ~wizard~ // Melf's Acid Arrow
						 END ELSE BEGIN
						  ADD_MEMORIZED_SPELL ~spwi224~ #1 ~wizard~ // Glitterdust
						 END
			END
		END

	END	

	PATCH_IF (~%kit%~ STRING_EQUAL_CASE ~conjurer~ OR ~%kit%~ STRING_EQUAL_CASE ~fighter-mage~) THEN BEGIN

		SET ~choice~=RANDOM(1 8)
		PATCH_IF ~choice~<4 THEN BEGIN
			ADD_MEMORIZED_SPELL ~spwi211~ #1 ~wizard~ // Melf's Acid Arrow
		END ELSE BEGIN
			PATCH_IF ~choice~<6 THEN BEGIN
				ADD_MEMORIZED_SPELL ~spwi220~ #1 ~wizard~ //Power Word: Sleep
			END ELSE BEGIN
				 PATCH_IF ~choice~=6 THEN BEGIN
						  ADD_MEMORIZED_SPELL ~spwi205~ #1 ~wizard~ // Horror
						 END ELSE BEGIN
						  ADD_MEMORIZED_SPELL ~spwi224~ #1 ~wizard~ // Glitterdust
						 END
			END
		END
	END

	PATCH_IF (~%kit%~ STRING_EQUAL_CASE ~necromancer~) THEN BEGIN

		SET ~choice~=RANDOM(1 8)
		PATCH_IF ~choice~<4 THEN BEGIN
			ADD_MEMORIZED_SPELL ~spwi205~ #1 ~wizard~ // Horror
		END ELSE BEGIN
			PATCH_IF ~choice~<6 THEN BEGIN
				ADD_MEMORIZED_SPELL ~spwi211~ #1 ~wizard~ // Melf's Acid Arrow
			END ELSE BEGIN
				 PATCH_IF ~choice~=6 THEN BEGIN
						  ADD_MEMORIZED_SPELL ~spwi221~ #1 ~wizard~ // Ray of Enfeeblement
						 END ELSE BEGIN
						  ADD_MEMORIZED_SPELL ~spwi224~ #1 ~wizard~ // Glitterdust
						 END
			END
		END
	END


END

 

One block for each level, obviously. In a completely ideal world, either I or someone else would produce one of these for each level of SR spells. (The idea is not just to keep to the letter of the law regarding what spells each specialist has, but insofar as possible to keep to the flavour of their speciality.)

 

As I say, none of this is going to get incorporated into SCSII for a while, but I thought I'd put it up in case there's interest.

Link to comment
I thought I'd put a few notes for interested people (notably Demivrgvs) as to what I need to do to make SCSII allow for SR. (At the moment I'm going for "all-or-nothing" compatibility, and not supporting compatibility with partial installs of SR). I should stress that it will probably be several months at least till I turn my attention to this.
That's great to hear. :worship: Regarding the "all-or-nothing" approach, I think you should go for it without regrets. :p

 

As I've already noted, I can't really handle significant changes in the grid of defensive and antimagic spells, so the issue is really: what new offensive spells should I be using? ("New" construed broadly: damaging, disabling, summoning...)

 

Basically, I can't use any non-party-friendly area effect. Other than that, I can handle most things. (For this reason, SCSv10 uses Glyph of Warding and Silence when SR is installed, since both become party-friendly.)

On this matter I may already say a few things...

 

1) SR never changes a party-friendly AoE for a not-friendly one exactly to prevent AI weirdness (I've managed to nerf ADHW anyway ;) ).

 

2) New spells are and will always remain extremely rare within SR.

 

3) When I replace a spell with a different one I generally try to keep it as similar as possible to the original one. For example:

- 7th level divine spell Confusion is replaced with Sphere of Chaos

- 7th level divine spell Conjure Earth Elemental is replaced with Summon Shambling Mound

 

Ideally new spells should be the same school as old spells (else specialist wizards might cheat) but that's somewhat in tension with SR's goal of increasing the range of usable spells.
This is something I've done a few times but it was needed imo because some schools were treated pretty badly (e.g. Enchantment) while others didn't need so much dedicated spells (e.g. Conjuration). Anyway, as long as I don't change the original school into the opposite one (e.g. a necromantic spell into an illusion one, or an evocation into an enchantment) I don't think it will cause noticeable conceptual issues with specialist mages.

 

The worst replacement I've done still is 'Rigid Thinking - Contagion', but:

- both are single target, "disabling" spells

- it's a priest's spell, and thus doesn't interfere with specialization schools

- I think I'll never do again such a noticeable change :p

 

So the most important thing I need is a list of the relevant spells, plus a handle to get hold of them (their IDS entry and/or their filename) and some quick advice as to how to use them. I'll write the AI code myself and code it to be installed if SR is present.
Obviously I'll help you as much as I can, but regarding "how to use SR spells" I think a few players around here may know it much better than me having effectively played entire games with it.
Link to comment
Ideally new spells should be the same school as old spells (else specialist wizards might cheat) but that's somewhat in tension with SR's goal of increasing the range of usable spells.
This is something I've done a few times but it was needed imo because some schools were treated pretty badly (e.g. Enchantment) while others didn't need so much dedicated spells (e.g. Conjuration). Anyway, as long as I don't change the original school into the opposite one (e.g. a necromantic spell into an illusion one, or an evocation into an enchantment) I don't think it will cause noticeable conceptual issues with specialist mages.

 

Yes, I think that's right.

Link to comment

Just a confirmation : Does Spell Immunity abjuration of SR also protect from antimagic spells ?

 

I have read a bit on this forum and I suppose you have finally kept vanilla version. If yes, I wonder if your version of glitterdust is not a bit overpowed : all creatures became visible without allow a save O_o Damn, it makes the combo SI D +II underpowed....

 

It seems you have done this version of glitterdust assuming your own version of SI abjuration exist . But if you take vanilla version of SI abjuration, I think glitterdust should be more or less as in vanilla .

 

Futhermore, it seems your current version of glitterdust is incompatible with Rogue rebalancing :p

Link to comment
Just a confirmation : Does Spell Immunity abjuration of SR also protect from antimagic spells ?
Not anymore since V2.9.

 

I have read a bit on this forum and I suppose you have finally kept vanilla version. If yes, I wonder if your version of glitterdust is not a bit overpowed : all creatures became visible without allow a save O_o Damn, it makes the combo SI D +II underpowed....
Are you taking into account that the AoE now is 10' radius instead of 30'? It's still weaker than in PnP.

 

And regarding SR's Glitterdust being able to bypass SI:Div, it seems an obvious fix imo. Why on earth should a Conjuration spell being stopped by a anti-Divination spell?

 

It seems you have done this version of glitterdust assuming your own version of SI abjuration exist . But if you take vanilla version of SI abjuration, I think glitterdust should be more or less as in vanilla.
What's the matter with SI:Abj? Glitterdust shouldn't have nothing to do with SI:Abj...

 

Futhermore, it seems your current version of glitterdust is incompatible with Rogue rebalancing :p
Not true...the issue is that the "not allowed to hide for 4 rounds" effect makes some RR characters behave in a sub-optimal way if affected (as they may try to hide anyway). Considering the small AoE and that the effect allows a quite easy save I don't think this spell can cause havoc, even if you decide for some reason to spam tons of Glitterdusts everywhere.
Link to comment
What's the matter with SI:Abj? Glitterdust shouldn't have nothing to do with SI:Abj...

Let's take your old version of SI abjuration : the only way to make visible a creatures who got SI abj + SI Div + II should be your current version of glitterdust. In this case, improvement of glitterdust could be justified.

 

Nervermind, i must be too much severe...

Link to comment
Just a confirmation : Does Spell Immunity abjuration of SR

Futhermore, it seems your current version of glitterdust is incompatible with Rogue rebalancing :p

Not true...the issue is that the "not allowed to hide for 4 rounds" effect makes some RR characters behave in a sub-optimal way if affected (as they may try to hide anyway). Considering the small AoE and that the effect allows a quite easy save I don't think this spell can cause havoc, even if you decide for some reason to spam tons of Glitterdusts everywhere.

 

For clarity, SR's version of the Glitterdust spell prevents characters from becoming invisible and/or hiding for its duration. Since the AI opponents have no way of detecting this via their scripts, they will be completely unaware of this effect and thus act dumb until it expires (i.e. they will needlessly waste invisibility potions and/or spells instead of fighting, running away or healing).

 

Also, as noted before, this issue doesn't affect only Rogue Rebalancing opponents. It actually applies to every AI mod out there which uses invisibility/hiding (i.e. SCS I & II, Quest Pack, Tactics, Big Picture, Ascension...etc.) and even to some of the unmodded game scripts. DavidW and I already brought this up earlier but Demi was unwilling to remove this feature from the spell.

Link to comment
Well, personally I like the way SR's Glitterdust works and I am happy that he didn't intend to remove that feature which does nothing but make the spell much more interesting and useful.

 

... but Avenger_RR's concern, and mine, is that it does something else too: it causes enemies who try to hide to behave in a way which is tactically suboptimal and unrealistically immersion-breaking.

Link to comment
Well, personally I like the way SR's Glitterdust works and I am happy that he didn't intend to remove that feature which does nothing but make the spell much more interesting and useful.

 

... but Avenger_RR's concern, and mine, is that it does something else too: it causes enemies who try to hide to behave in a way which is tactically suboptimal and unrealistically immersion-breaking.

 

Absolutely.

 

But - in my ignorance - I ask you: wouldn't it be possible for the AI to account for it somehow?

Link to comment
Well, personally I like the way SR's Glitterdust works and I am happy that he didn't intend to remove that feature which does nothing but make the spell much more interesting and useful.

 

... but Avenger_RR's concern, and mine, is that it does something else too: it causes enemies who try to hide to behave in a way which is tactically suboptimal and unrealistically immersion-breaking.

 

Absolutely.

 

But - in my ignorance - I ask you: wouldn't it be possible for the AI to account for it somehow?

 

Well, it would be possible to add Glitterdust to Detectable Spells. Though I'm not sure where it would fit: there is a hardcoded limit on the number of distinct detectable effects. It would then in turn be possible to code thieves only to hide if they're not Glitterdusted. It would be a lot harder to code all this to happen only if SR's version of Glitterdust is installed, but it could be done. It would be harder still - but not impossible - to do the more systematic rethink needed to get thieves to adopt a broader strategy which allows for something like this happening. (Their best strategy, at a guess, would be to run away and wait for the spell to wear off, since it's short duration.) It would even, in principle, be possible for a mod like SCSII to "play host" to code that updated older mods (like BP or Ascension) and indeed, the vanilla game, to avoid the problem in the same way.

 

... but I hope it's obvious that this is far too much work, and far too large a source of problems, to be something that's going to happen.

Link to comment

As a compromise, GD can be altered to 'true sight' it's victims every round it's active, maybe with 50% chance of success.

That would still hurt somewhat AI but not that much and, more importatnly, there'll be one less 101th thingy around.

Link to comment

DavidW,

 

I see the problem under a better light now, thanks.

 

But quoting the Glitterdust's description found in the BG2 manual:

 

"Note that this reveals invisible creatures."

 

For this reason, I'd welcome thea addition of Glitterdust to DS (if space can be found of course), whether I have SR installed or not.

Link to comment
DavidW,

 

I see the problem under a better light now, thanks.

 

But quoting the Glitterdust's description found in the BG2 manual:

 

"Note that this reveals invisible creatures."

 

For this reason, I'd welcome thea addition of Glitterdust to DS (if space can be found of course), whether I have SR installed or not.

 

It does indeed reveal invisible creatures: the spell breaks invisibility. But a DS addition isn't needed to handle that standard-game effect: StateCheck(Myself,STATE_INVISIBLE) does that fine.

Link to comment
As a compromise, GD can be altered to 'true sight' it's victims every round it's active, maybe with 50% chance of success.
Well, no, because you can see the character with the glitter dust full time... not just have the ability tho see him once per round before he stealths himself again to backstad you(cause the weakness of the true sight spell is that it works only once in a turn).

Now, if we disenhance the GD's chance to dispel the invisibility by 50%(so the thief can gain stealth 50% of every time he tries) with resistance against every stealth effecting action, we gain the exact effect we wish the GD has, with the first reveal of course... and the AI shouldn't suffer that much, after all the thief does other stuff too even if he is not stealthed in the encounters, right?

Link to comment

Archived

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

×
×
  • Create New...