Jump to content

SCS : dealing with mage Invisibility


Recommended Posts

16 hours ago, subtledoctor said:

I think people are missing the forest for the trees, a bit. 99% of people using this mod don’t have problems here. They want to cast spells at invisible enemies, but the vanilla game has taught them it is not possible. So they cast “Detect Invisible” and voilà, now they can. You have seen a handful of posts (five? six?) over the course of several years with complaints, and you see that as evidence of a systemic problems. But honestly, I am not convinced.

You shouldn't assume a lack of complaints is evidence of a lack of problems. No businessman would. The majority of players who download a mod and find something broken proceed to uninstall rather than create an account to complain. Many players over the years have relied on the only recruitable Conjurer as their sole mage, because of his excess spells gimmick, said NPC is now ineffective in SR + SCS and not obviously so from the outset, but an unwelcome surprise for the player after continuing their campaign for a bit and investing scrolls & xp on him.

Another example, in SR the 4th level arcane spell Protection from Elemental Energy had no in game effects until recently, because the 2da file it relies upon is not copied to override. That wasn't widely reported on either, but it was still definitely in need of a fix, because it did absolutely nothing when cast except use your action for the round.

Besides, how many new players created accounts to praise the mod over the same timespan, if it's only a handful of people complaining, how many are congratulatory?

Link to comment
6 hours ago, polytope said:

You shouldn't assume a lack of complaints is evidence of a lack of problems.

So we should… assume problems even in the absence of evidence? What are you saying?

6 hours ago, polytope said:

Many players over the years have relied on the only recruitable Conjurer as their sole mage, because of his excess spells gimmick, said NPC is now ineffective in SR + SCS

Not sure what you mean by “now ineffective” since nothing has changed with SR+SCS in many years. I’m struggling to find all the reports of people complaining Edwin is useless. Probably because he isn’t actually useless.

But in any event things are changing now - SR is making final adjustments for v4 and SCS is prepping v35. And in both cases, I suggest that spell attacks be able to target II enemies. Which would allow Edwin to lob abjurations at invisible mages, and thus make hime not useless. So… does your conviction that Edwin is broken mean you agree with that suggestion? Because that is the only question that SCS is trying to answer at the moment.

Edited by subtledoctor
Link to comment
1 hour ago, subtledoctor said:

Not sure what you mean by “now ineffective” since nothing has changed with SR+SCS in many years. I’m struggling to find all the reports of people complaining Edwin is useless. Probably because he isn’t actually useless.

3 other posters in this thread have noted this problem, but your criteria is flawed, to wit, of SR players, the subset who will notice must also install SCS and bring Edwin or their own Conjurer.

Remember your complaints of how my revisions to Dispel Magic were breaking things? After more than 1 year, only one person (you) had noticed this can happen in certain combinations of other mods. I could have equally casually dismissed your report as being contrary to the silent majority consensus, instead I conceded that because it could happen in certain installs, it was worth fixing.

1 hour ago, subtledoctor said:

But in any event things are changing now - SR is making final adjustments for v4 and SCS is prepping v35. And in both cases, I suggest that spell attacks be able to target II enemies.

It's already the default in SCS & (current) EE, I don't feel strongly about whether this option is chosen over any of the other several proposed alternatives so far, but it's a Spell Revisions issue, not something that needs to be bundled into SCS. It could very well turn up in combinations of SR and other content mods.

Link to comment
5 hours ago, polytope said:

I actually don’t remember that very well. My recollection is that It took me a while to understand what was going on, and once I did, my judgment was not that your mod was breaking things, but rather that your mod uses a reasonable technique that happens to not gel with my own rather idiosyncratic game installs. Once I figured out what was happening, I didn’t think your mod needed to change.

Anyway this all seems irrelevant. DavidW asked a simple question and it’s a bit weird that people aren’t giving him a simple answer. Consider a basic modded pre-EE game. But with and without SR, spell attacks cannot target invisible enemies. SCS changes this in the latter case, but carves out SR games as an exception to its normal way of doing things. For SR v35 the question is simply: should SCS continue making a special exception for SR? Or should it cease doing so?

I suggest eliminating the exception because 1) I presume not having an exception case would ultimately simplify things for SCS, and 2) it sounds like SR is moving in that direction anyway. (Why retain code carving out an exception for SR, if what is being excepted is no longer any different?)

Are you saying you want SCS to retain that exception solely because you think SR is “at fault?” And you want SR to change to change how it handles these spells, thus rendering meaningless the SCS exception you want to retain?

I just cannot fathom this. 

EDIT - I seem to be talking myself into the idea that removing the SR spell-attacks-target-invisible carve-out from SCS is the only reasonable plan…

Edited by subtledoctor
Link to comment
1 hour ago, subtledoctor said:

Anyway this all seems irrelevant. DavidW asked a simple question and it’s a bit weird that people aren’t giving him a simple answer. Consider a basic modded pre-EE game. But with and without SR, spell attacks cannot target invisible enemies. SCS changes this in the latter case, but carves out SR games as an exception to its normal way of doing things.

The answer will depend on whether SR's developers/maintainers want to change the underlying mechanic.

If not, SCS should modify the antimagic-type spells even if SR is detected, rather than skip all those.

However, if it's decided to update SR before the next SCS, and systematically address the underlying issue of Conjurers being unable to pierce mages with Improved Invisibility, then it would be unnecessary (and undesirable) for DavidW to fix it on his end. As I said, it potentially affects other AI mods, not just SCS, and leaves Conjurers as disadvantaged as Transmuters, who were considered to be tied for the worst mage kit, players don't expect to find a previously good character suddenly unable to fulfill a role they typically had.

Link to comment
3 hours ago, polytope said:

if it's decided to update SR before the next SCS, … then it would be unnecessary (and undesirable) for DavidW to fix it

I don’t think anyone is asking DavidW to “fix” anything. It’s just a question of whether SCS should apply special handling to SR spells, versus treat them in the usual SCS-preferred fashion. 

I mean, currently, I think it is accurate to say that when SR is detected, SCS assumes spell attacks cannot target invisible. If, as you suggest, SR changes its behavior but DavidW retains this assumption, then SCS will be operating under an incorrect assumption. I infer the results would range from “doesn’t matter, SCS can handle it” to “the incorrect assumption leads to poor behavior.” 

Whereas, if SCS ceases to give special treatment to SR and applies its own rule regardless of the underlying mods, then it will perform predictably no matter what SR does in this regard. And if SR makes the same change, then both mods will be in harmony and the performance will be identical. Is this not clearly the ideal result?

Edited by subtledoctor
Link to comment
8 hours ago, subtledoctor said:

If, as you suggest, SR changes its behavior but DavidW retains this assumption, then SCS will be operating under an incorrect assumption.

Yes, as I said:

11 hours ago, polytope said:

if it's decided to update SR before the next SCS, and systematically address the underlying issue of Conjurers being unable to pierce mages with Improved Invisibility, then it would be unnecessary (and undesirable) for DavidW to fix it on his end.

It will be contingent on who wants to update their mod first.

However, the behaviour in a default SR install is undesirable in that certain mage kits are nerfed in an unadvertized and unbalancing way, that's most visible when going up against SCS spellcasters with their layered protections, but it exists even without SCS.

8 hours ago, subtledoctor said:

Whereas, if SCS ceases to give special treatment to SR and applies its own rule regardless of the underlying mods, then it will perform predictably no matter what SR does in this regard. And if SR makes the same change, then both mods will be in harmony and the performance will be identical. Is this not clearly the ideal result?

That is very much dependent on WHICH proposed solution is used for SR, if any. We've had several completely different suggestions in this thread so far, no decision from the authors yet, it's harmonious only if both modders choose the same fix.

Edited by polytope
Link to comment
9 hours ago, polytope said:

That is very much dependent on WHICH proposed solution is used for SR

Ah! I understand now. I was speaking strictly of the limited, non-exclusive proposal to allow spell attacks to target invisible enemies. You were contemplating a larger set of possibilities. Fair enough, I take your point. However, given that these possibilities are non-exclusive, I still think that 1) SR should adopt that rule and conform with the SCS/EE standard, and 2) SCS should remove its SR exception with regard to that rule. What else to do is IMO a separate question.

Other solutions seem less likely and less ideal. If SR were to adopt your “specialists have universal access to 3rd-level spells” rule - setting aside that is exceedingly unlikely - the question remains what SCS should do. Keep in mind that SCS would not start having AI conjurers, or anyone else, cast Detect Invisible before lobbing magic attacks - 

Quote

(1) isn't going to happen: handling antimagic attacks is really complicated and deeply embedded into SCS, and I've been clear since Demivrgvs that I wasn't going to write a whole new version for SR

My advice for SCS, then, would be the same: stick to its preferred way of doing things and apply the rule allowing magic attacks to target invisible enemies, even when SR is installed. 

Final tl;dr (really!): I just don’t think SCS needs to keep maintaining special handling for SR in this regard. It seems to achieve little, so why keep up the effort? Why not simplify it? Anyone in this thread is capable of setting these spells to behave as they want, in any event; and most people outside this thread will likely not notice or care. 

Edited by subtledoctor
Link to comment
2 hours ago, subtledoctor said:

Final tl;dr (really!): I just don’t think SCS needs to keep maintaining special handling for SR in this regard. It seems to achieve little, so why keep up the effort? Why not simplify it? Anyone in this thread is capable of setting these spells to behave as they want, in any event; and most people outside this thread will likely not notice or care. 

It isn't exactly 'special handling'. SCS has lots of spell tweaks and I mostly have a systematic policy of not applying them to SR-modified spells (the few exceptions are things that will break SCS's antimagic logic, like breach not working on liches). That policy is partly conceptual (I don't really want to override SR's explicit design decisions), partly technical (it's quite a lot of work to make sure SCS spell tweaks work on SR given that it tends to rearrange spells quite a lot). 

The component of SCS that makes antimagic spells target through II isn't even really a tweak on EE (it just updates the documentation); relative to EE, the SR spells explicitly remove targeting through II. That's not *exactly* intentional (the recent changes to EE postdate most active work on SR) but it's certainly the case that SR has its own system of bypassing II and doesn't intentionally use mine. And I don't need the changes to avoid breaking SCS scripts, because SCS mages' ability to see through II when casting antimagic is hardcoded and doesn't rely on changes to the spell. (In principle I prefer SR's approach and might have adopted it if I'd thought of it fifteen years ago, but it's not a change I'd like to make now.)

At the moment, given this thread, I am inclined to leave this unchanged. SR introduces a functional antimagic system of its own and doesn't use SCS's. SCS scripts work basically fine with SR (it's perhaps a slight annoyance that enemy mages effectively get a free Detect Invisibility). It is arguably a flaw in SR's that Conjurers lack a functional way to deal with II, but I'm not sure that's my problem. (The way SCS v35 is coded would allow SR players to reenable the tweak for their own games easily enough.)

As a modest suggestion for how SR should fix this flaw: in pen-and-paper second edition AD&D Conjurers only lack access to the school of greater divination, defined as containing divination spells of 5th level and up (just Oracle and True Sight in unmodded BG2, I think). Applying that in BG would be a minimal change, backed by lore, would solve the problem without wider repercussions elsewhere, and would be pretty easy to code (I'd suggest doing it as a quick WEIDU patch after SR installs). A minor variant would be to restrict 'lesser divination' to levels 1-2, given that there are so few divinations above 4th level anyway. 

Link to comment
31 minutes ago, DavidW said:

At the moment, given this thread, I am inclined to leave this unchanged

:goodwork:  As long as SCS won’t suffer if SR itself makes this change in version 4b20, that’s totally fine. 

Turning to SR in the absence of SCS

31 minutes ago, DavidW said:

a modest suggestion: in pen-and-paper second edition AD&D Conjurers only lack access to the school of greater divination

I know… but I hate this. :laugh2:  If we’re going by PnP, Conjurers should not be able to cast Evocation spells, and from the complaints in this thread I hardly think people would like that. In the context of BG, I think Polytope’s idea is better. Give everyone access to minor opposition spells. (Transmuters might be saved by having access to Spell Thrust and Minor Deflection!)

Just, I like that idea better for an additional, optional mod. (Or an additional/optional component for SR - I’ve already written the mod, I would be happy to donate it.)

For SR I think it would be better to improve Glitterdust - a spell not contemplated by the 2E PHB - making it a full-fledged part of the anti-invisibility system. And more carefully define Nondetection so that it is not a simple/unbeatable way to frustrate Conjurers. 

Seems to me improving Glitterdust and allowing spell attacks to target invisible would completely “fix” conjurers. No?

Edited by subtledoctor
Link to comment
7 minutes ago, subtledoctor said:

Seems to me improving Glitterdust and allowing spell attacks to target invisible would completely “fix” conjurers. No?

As a non-SR player my own take on this isn't that significant, but fwiw I think that's the wrong way to think about it.

The vanilla game has a flaw in its mage-chess logic (ruthlessly exploited by Tactics) in that certain combinations of II and other protective spells are impregnable, because you can't target antimagic spells on II-protected creatures. SCS fixes this effectively, if crudely, by just making antimagic spells an exception to the normal rules for II (and the vanilla game adopted this as of version 2.6(?) of EE). SR has a different and arguably more elegant solution, through Detect Invisible and Truesight just giving you the opcode that lets you target II creatures. That solution works just fine, except that arguably it leaves Conjurers lacking a specific utility spell that they really need. (Yes, you might argue that Transmuters also have gaps, but that's not caused by SR and is true in pretty much any setup - and there is no core NPC mage who is a transmuter.)

Given that starting point, to me the minimally disruptive solution just seems to be: give them that spell! Doubly so since as it happens there's D&D lore that explicitly justifies it (IE games are not obliged to conform to PnP D&D but it's a nice bonus when something that is mechanically useful also has a D&D justification). Rewriting the whole system just to fix Conjurers looks overkill.

I coded this up just as a quick experiment to confirm that it's simple (it is, but 90% of the work is taken up by updating the class description):

DEFINE_ACTION_FUNCTION conjurers_get_lesser_divination
	INT_VAR max_divination_level=4 // highest level counted in lesser divination
			tra_old_obg2="-1" // set to the TRA ref of the line 'Opposition School:  Divination' from the oBG2 description (or its translation into another language)
			tra_new_obg2="-1" // set to the TRA ref of the line 'Opposition School: Greater Divination (divinations of level DW_LEVEL or higher)' (or its translation into another language, leaving DW_LEVEL untranslated)
			tra_old_ee="-1" // set to the TRA ref of the line 'May not learn or cast any spells of the Divination school.' from the EE description (or its translation into another language)
			tra_new_ee="-1" // set to the TRA ref of the line 'May not learn or cast any spells of the Greater Divination school (divinations of level DW_LEVEL or higher).' (or its translation into another language, leaving DW_LEVEL untranslated)
		
BEGIN

	// initialize array to store spells
	ACTION_CLEAR_ARRAY lesser_divination_spells

	// edit spells
	COPY_EXISTING_REGEXP "SPWI[1-9][0-9][0-9]\.spl$" override
		PATCH_IF BYTE_AT 0x25=3 && LONG_AT 0x34 <= max_divination_level BEGIN
			WRITE_BYTE 0x1e (THIS BAND (BNOT BIT7))
			SPRINT $lesser_divination_spells("%SOURCE_RES%") ""
		END	
	BUT_ONLY

	// edit scrolls
	
	COPY_EXISTING_REGEXP ".*\.itm$" override
		PATCH_IF BUFFER_LENGTH>0 && SHORT_AT 0x1c=11 BEGIN // basic scroll check
			match=0
			PHP_EACH lesser_divination_spells AS resref=>discard BEGIN
				match=match || INDEX_BUFFER ("%resref%")>=0
			END
			PATCH_IF match BEGIN
				WRITE_BYTE 0x2f (THIS BAND (BNOT BIT7))
			END
		END
	BUT_ONLY

	// edit description

	ACTION_IF GAME_IS "BG2EE BGEE EET IWDEE" BEGIN 
		// clastext exists, get descriptive string from it
		COPY_EXISTING - clastext.2da nowhere
			COUNT_2DA_COLS colcount
			READ_2DA_ENTRIES_NOW clastext_entries colcount
			FOR (row=0;row<clastext_entries;++row) BEGIN
				READ_2DA_ENTRY_FORMER clastext_entries row 0 class
				PATCH_IF "%class%" STR_EQ "CONJURER" BEGIN
					READ_2DA_ENTRY_FORMER clastext_entries row 4 descstr
				END
			END
		BUT_ONLY
		// set the string to sub out of the description
		ACTION_IF tra_old_ee>=0 BEGIN 
			OUTER_SPRINT string_old (AT tra_old_ee)
		END ELSE BEGIN
			OUTER_SPRINT string_old "May not learn or cast any spells of the Divination school."
		END
		// set the string to sub into the description
		ACTION_IF tra_new_ee>=0 BEGIN 
			OUTER_SPRINT string_new (AT tra_new_ee)
		END ELSE BEGIN
			OUTER_SPRINT string_new "May not learn or cast any spells of the Greater Divination school (divinations of level DW_LEVEL or higher)."
		END
	END ELSE BEGIN // hardcoded value in oBG2, shared in BGT/TUTU
		OUTER_SET descstr=9565
		// set the string to sub out of the description
		ACTION_IF tra_old_obg2>=0 BEGIN 
			OUTER_SPRINT string_old (AT tra_old_obg2)
		END ELSE BEGIN
			OUTER_SPRINT string_old "Opposition School:  Divination"
		END
		// set the string to sub into the description
		ACTION_IF tra_new_obg2>=0 BEGIN 
			OUTER_SPRINT string_new (AT tra_new_obg2)
		END ELSE BEGIN
			OUTER_SPRINT string_new "Opposition School: Greater Divination (divinations of level DW_LEVEL or higher)"
		END
	END
	ACTION_IF descstr>=0 BEGIN 
		ACTION_GET_STRREF descstr desc
		OUTER_PATCH_SAVE desc "%desc%" BEGIN
			REPLACE_TEXTUALLY "%string_old%" "%string_new%"
			gr_level=max_divination_level + 1
			REPLACE_TEXTUALLY DW_LEVEL "%gr_level%"
		END
		STRING_SET_EVALUATE descstr "%desc%"
		
	END

END

I might drop it into SCS as an optional tweak.

Link to comment

Well, from the get-go, I want to make Glitterdust work in this context anyway. Detect Invisible lets you see invisible things; Glitterdust stop things from being invisible (and thus is in a category with Invisibility Purge and Oracle, though the fluff differs). I like this duality, and I think both approaches should be effective in SR. Making that work well really boils down to fixing Nondetection.

Assuming that is fixed, and this is something Conjurers have access to… the question is, why change anything else? I mean there are surely reasons. But from a conservative “am I proposing to change someone else’s mod?” perspective, this lands me in “if it ain’t broke don’t fix it” territory.

And finally there is this: Conjurers are easily the best specialty. Every other specialist gives up important spells; this proposal would give back to Conjurers the one thing they can’t currently do. My jealous monkey brain wants to take something away from them, if we give them invisibility detection. If it’s down to an appeal to PnP, then take away Evocation instead of Divination. 

Edited by subtledoctor
Link to comment

Agreed that if you change SR's antimagic system for independent reasons and that makes the problem go away, it's moot.

On the specific idea: won't Glitterdust just bounce off (Minor) Globe of Invulnerability? (I mean, of course you can code around it doing so, but logically it ought to be blocked by it.)

Link to comment

…Which I guess is a good reason to allow Spell Thrust to target invisible enemies! :laugh:

EDIT - none of which addresses Nondetection, which I think is the real tricky part of all this. Currently it is a spell protection, and I don’t like that. But if it is a specific protection, then you would need to Breach it… and Breach cannot target invisible creatures, and Nondetection keeps you Invisible! 

Honestly, the very idea of dispelling it is weird, since there is a cloak that grants it permanently. Imagine a Cloak of Spell Deflection! 

I currently have it set up as Protection from Divination Attacks, meaning it helps you keep your II, Blur, and MI in the face of Invisibility Purge, Detect Illusions, and Oracle. But Faerie Fire, Glitterdust, Detect Invisible, and True Seeing can all bypass it. 

It would be interesting to remove it from the invisibility system, and set it up as an IWD-style Evasion, for direct-target attacks. Then an IWD thief with Nondetection could avoid both AoE Fireballs and direct-target Magic Missiles! But, this is an EE-only idea.

Edited by subtledoctor
Link to comment
19 hours ago, DavidW said:

That solution works just fine, except that arguably it leaves Conjurers lacking a specific utility spell that they really need. (Yes, you might argue that Transmuters also have gaps, but that's not caused by SR and is true in pretty much any setup - and there is no core NPC mage who is a transmuter.)

Given that starting point, to me the minimally disruptive solution just seems to be: give them that spell! Doubly so since as it happens there's D&D lore that explicitly justifies it (IE games are not obliged to conform to PnP D&D but it's a nice bonus when something that is mechanically useful also has a D&D justification). Rewriting the whole system just to fix Conjurers looks overkill.

I'm glad you liked my initial suggestion, since changing the usability flags of a spell and its associated scroll are minimally likely to cause cross-mod bugs compared to game-mechanical changes to spell effects. It also allows enemy AI controlled Conjurers to justifiably cast Detect Invisibility when they suspect unseen players are near.

19 hours ago, subtledoctor said:

And finally there is this: Conjurers are easily the best specialty. Every other specialist gives up important spells; this proposal would give back to Conjurers the one thing they can’t currently do. My jealous monkey brain wants to take something away from them, if we give them invisibility detection. If it’s down to an appeal to PnP, then take away Evocation instead of Divination. 

I'm legitimately unconvinced Conjurers are the best, unless perhaps in late-game dual classes like Conjurer->cleric (who does that?). I think if you're not playing ironman/no-reloads (which most players don't) Wild Mages have the highest power ceiling of any mage kit, and the sorcerer is obviously better than any single class mage if you are. Although the Conjurer may seem not to give up much utility, they also don't benefit much from the specialist penalty to saving throws on their spells, whereas an Invoker or Necromancer or even an Enchanter does (but Enchanters are really bad in vanilla actually because of a lack of [Chain]Contingency/Sequencer/Trigger type spells): Conjurers just throw Glitterdust with a harsher save, along with Flame Arrow and the Symbol spells. (Most) Symbols are better in SR, but even so, it's a long wait to get lvl 16, whereas an Invoker is disadvantaged by their lack of Sleep only until they get lvl 3 and can cast Stinking Cloud or better yet Web spells. Prismatic Spray is changed to alteration school by SR, so Conjurers no longer benefit from that one either.

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