Jump to content

SR Revised V1.3.500 (2021 June 7th)


Bartimaeus

Recommended Posts

Is there a way to make Sequencers and Contingencies not consume spell charges when preparing them? I know @subtledoctor has I similar component in Blood and Magic but I'm half-way through my playthrough with SCS's similar component and I would rather avoid having to shake my mod install too much and instead make some NI edits myself.

I was looking at them in NearInfinity and I noticed there is a couple OP codes that trigger, store and release sequencers but I can't tell anything overly obvious about how to prevent them from using charges. Is this doable with small edits?

Link to post
5 minutes ago, NdranC said:

Is there a way to make Sequencers and Contingencies not consume spell charges when preparing them?

Well, if you change the spells from being a regular mage spell into innate spells and give the characters a couple of charges, they won't use the mage spells slots... anymore.

Link to post
16 minutes ago, NdranC said:

Is there a way to make Sequencers and Contingencies not consume spell charges when preparing them? I know @subtledoctor has I similar component in Blood and Magic but I'm half-way through my playthrough with SCS's similar component and I would rather avoid having to shake my mod install too much and instead make some NI edits myself.

I was looking at them in NearInfinity and I noticed there is a couple OP codes that trigger, store and release sequencers but I can't tell anything overly obvious about how to prevent them from using charges. Is this doable with small edits?

That version of sequencers requires changes to UI.menu.  The code was given to me by Kjeron:

Spoiler

 


COPY_EXISTING ~UI.MENU~ ~override~
	REPLACE_TEXTUALLY ~mageScreen:SequenceSpell( bookSpells\[currentBookSpell\].resref, bookSpells\[currentBookSpell\].masterResref )~ ~mageScreen:SequenceSpell( bookSpells[currentBookSpell].resref, 'DEFAULT' )~
	REPLACE_TEXTUALLY ~mageScreen:UnSequenceSpell( bottomSpells\[currentBottomSpell\].resref, bottomSpells\[currentBottomSpell\].masterResref )~ ~mageScreen:UnSequenceSpell( bottomSpells[currentBottomSpell].resref, 'DEFAULT' )~

INCLUDE	~TomeAndBlood/lib/SEQUENCER_MENU.TPA~

OUTER_SPRINT	resref ~DEFAULT~
OUTER_SPRINT custom ~~~~~
	function()
		local out = {}
		if characters[id].mageSpells ~= nil and characters[id].mageSpells[currentSpellLevel] ~= nil then
			for k,v in pairs(characters[id].mageSpells[currentSpellLevel]) do
				if mageScreen:SpellAllowedForContingency(v.level, v.resref) then
					if mageScreen:SpellSwappedInContingency(v.resref) then
						for key,value in pairs(contingencySwapTable) do
							value.castableCount = v.castableCount
							value.level = v.level
							table.insert(out, value)
						end
					else
						table.insert(out, v)
					end
				end
			end
		end
		if characters[id].priestSpells ~= nil and characters[id].priestSpells[currentSpellLevel] ~= nil then
			for k,v in pairs(characters[id].priestSpells[currentSpellLevel]) do
				if mageScreen:SpellAllowedForContingency(v.level, v.resref) then
					if mageScreen:SpellSwappedInContingency(v.resref) then
						for key,value in pairs(contingencySwapTable) do
							value.castableCount = v.castableCount
							value.level = v.level
							table.insert(out, value)
						end
					else
						table.insert(out, v)
					end
				end
			end
		end
		bookSpells = out
	end~~~~~
LAF	CREATE_SEQUENCER_MENU	STR_VAR	resref = ~~ custom = ~nil~	END
APPEND	~M_SQTOOL.LUA~	~~~~~SequencerMenu['%resref%'] = %WNL%%custom%~~~~~

 

 

 

No idea whether that will work if you apply it over a different Innate Sequencers mod.  If you are brave enough to try, definitely back up your game first. Me personally, I would just wait and use the different mod in my next playthrough.  These games really don't like to  be modded mid-stream.  Though, like I say, if you back up the game first then it doesn't hurt to try.

Also, from a balance perspective, if the sequencers themselves don't cost spell slots, and the spells you put into them don't cost spell slots... are you just getting a million instant spell casts for free?  There's a reason the four versions of Innate Sequencers in TnB cost slots for the spells you put in them, and the version that doesn't costs slots for the sequencers themselves.  You've gotta have a restraint on their use somewhere... (Also, the TnB versions can only be prepare out of combat - the point of the spell is not to instantly cast three other spells in the heat of battle, that you didn't have prepared beforehand. (Though if the game clock kept running while you set up your sequencer, like it did in the inventory screen in original BG1, I would happily relent on this point.))

Edited by subtledoctor
Link to post
42 minutes ago, subtledoctor said:

That version of sequencers requires changes to UI.menu.  The code was given to me by Kjeron:

  Reveal hidden contents

 



COPY_EXISTING ~UI.MENU~ ~override~
	REPLACE_TEXTUALLY ~mageScreen:SequenceSpell( bookSpells\[currentBookSpell\].resref, bookSpells\[currentBookSpell\].masterResref )~ ~mageScreen:SequenceSpell( bookSpells[currentBookSpell].resref, 'DEFAULT' )~
	REPLACE_TEXTUALLY ~mageScreen:UnSequenceSpell( bottomSpells\[currentBottomSpell\].resref, bottomSpells\[currentBottomSpell\].masterResref )~ ~mageScreen:UnSequenceSpell( bottomSpells[currentBottomSpell].resref, 'DEFAULT' )~

INCLUDE	~TomeAndBlood/lib/SEQUENCER_MENU.TPA~

OUTER_SPRINT	resref ~DEFAULT~
OUTER_SPRINT custom ~~~~~
	function()
		local out = {}
		if characters[id].mageSpells ~= nil and characters[id].mageSpells[currentSpellLevel] ~= nil then
			for k,v in pairs(characters[id].mageSpells[currentSpellLevel]) do
				if mageScreen:SpellAllowedForContingency(v.level, v.resref) then
					if mageScreen:SpellSwappedInContingency(v.resref) then
						for key,value in pairs(contingencySwapTable) do
							value.castableCount = v.castableCount
							value.level = v.level
							table.insert(out, value)
						end
					else
						table.insert(out, v)
					end
				end
			end
		end
		if characters[id].priestSpells ~= nil and characters[id].priestSpells[currentSpellLevel] ~= nil then
			for k,v in pairs(characters[id].priestSpells[currentSpellLevel]) do
				if mageScreen:SpellAllowedForContingency(v.level, v.resref) then
					if mageScreen:SpellSwappedInContingency(v.resref) then
						for key,value in pairs(contingencySwapTable) do
							value.castableCount = v.castableCount
							value.level = v.level
							table.insert(out, value)
						end
					else
						table.insert(out, v)
					end
				end
			end
		end
		bookSpells = out
	end~~~~~
LAF	CREATE_SEQUENCER_MENU	STR_VAR	resref = ~~ custom = ~nil~	END
APPEND	~M_SQTOOL.LUA~	~~~~~SequencerMenu['%resref%'] = %WNL%%custom%~~~~~

 

 

 

No idea whether that will work if you apply it over a different Innate Sequencers mod.  If you are brave enough to try, definitely back up your game first. Me personally, I would just wait and use the different mod in my next playthrough.  These games really don't like to  be modded mid-stream.  Though, like I say, if you back up the game first then it doesn't hurt to try.

Also, from a balance perspective, if the sequencers themselves don't cost spell slots, and the spells you put into them don't cost spell slots... are you just getting a million instant spell casts for free?  There's a reason the four versions of Innate Sequencers in TnB cost slots for the spells you put in them, and the version that doesn't costs slots for the sequencers themselves.  You've gotta have a restraint on their use somewhere... (Also, the TnB versions can only be prepare out of combat - the point of the spell is not to instantly cast three other spells in the heat of battle, that you didn't have prepared beforehand. (Though if the game clock kept running while you set up your sequencer, like it did in the inventory screen in original BG1, I would happily relent on this point.))

Balance:

Yeah, I'm toying around with the place Sequencers have in my gameplay. As someone that doesn't like to massively pre-buff (insert Overlord meme) or spam rests I though using Sequencers as Innate abilities would be great for "Buffing quickly in the middle of battle" if I had the foresight to prepare them ahead of time. The problem that I'm encountering at the moment is that is getting tiresome to manage all of them on all my mages since I'm having to sleep twice in a row, once to recover my spells and once to recover my spells that I just put in my sequencers. The end result is that most if not all of the time sequencers don't cost me spell charges but the trade-off is the tedium of resting.

Honestly, the reason why I wanted Innate sequencers to begin with was that I like metamagic in 5e and I felt that would make my sorcerer feel more like a 5e sorcerer. But after using them for a while I'm not sure they are creating the desired effect.

I think as long as sequencers can't be casted in combat not using charges in "theory" should not be an issue. I would also not purposely abuse them but that is up to the way I play the game.

------------------------------------

UI.menu code:

So in theory, since I already have the SCS component that makes sequencers innate, I should just be able to add that code to my UI.menu (anywhere?) and they should not use charges?

Edited by NdranC
Link to post

I don't know how SCS sequencers work - are they 1x/day?  If it's once per day the balance issue is not as bad.  TnB innate sequencers try to really be more convenient, by letting you re-fill the sequencer as soon as you use it (well, once the combat ends).  There is no limit to how often you can use them, except for the natural limit that doing so will suck up your memorized spells.  The way I ended up playing with it was, I always had one or two spells at the end of each day that I didn't cast; so I just put two of them into a sequencer before sleeping.  The spells that went into the sequencer may not have been optimal, but it meant I didn't have to memorize them for the next day, thus freeing up to more spell slots.  It worked pretty well.

TnB's "Option 5,"  in which putting spells into sequencers doesn't cost slots, makes sequencers themselves cost slots like in the normal game.  So you can memorize them more than once, if you want, getting lots of free lower-level spells in exchange for a few upper-level slots.  But using spell slots for the sequencers is the natural limit in this case.  Hmm, I suppose I could make an "Option 6" version of this in which the sequencers are once-per-day innates.  Then it would just amount to 2/5/8 free spells each day.  That wouldn't be the end of the world.

10 minutes ago, NdranC said:

So in theory, since I already have the SCS component that makes sequencers innate, I should just be able to add that code to my UI.menu (anywhere?) and they should not use charges?

No, you would have to adapt the code I posted into a Weidu mod, and run it.  And it needs Kjeron's "Sequencer_Menu" function.  If you 1) grab that function from TnB's /lib folder, and 2) make a little hotfix mod with the code I posted, and 3) install it in your game, then VERY theoretically, SCS' innate sequencers might work the way you want.  If I had to guess the chance of it working, I'd put it at somewhere less than 50%.  SCS's sequencers might not even be affected by this - I don't know what @DavidW did to make them innate, they might not be affected by that UI code the same way SPWI420 et al. would be.

Link to post

@subtledoctor Yes SCS innate metamagic makes them work once per day. It's also not great since for one, Sorcerers get them earlier than they should because as far as I can tell base sorcerers share the same clabma.2da file with mages so they have to have the same progression. The other thing is that for whatever reason this component always failed to patch contingency properly. I always had to manually get in game and edit it myself. Not sure if its EET or SR that it's conflicting with it but I never pursued looking into the problem.

On one side, I like your idea of using sequencers to just store left over spells, seems very efficient. On the other side I would likely find it a little fatiguing to remember what I have on each sequencer on each character and whether or not any of it would be useful right now. Maybe it's not that bad if I give it a try.

I think I'm going to follow your advice and just not touch it right now. I would probably spend a lot of time working on it and maybe I just need to look at them with a different perspective. I appreciate the answer regardless. Thanks.

 

Link to post
9 hours ago, subtledoctor said:

Going back to your first post, I noticed this, and i have to defend Kreso a bit.  50% chance to absorb every hit is IMHO way too powerful for a 1st-level spell.  The current SR version does this:

  • If you are only being attacked once per round, then that attack has a 50% chance to be absorbed.  Note, this is exactly the same as the version you liked with a 50% chance to absorb an attack overall.  Also if you are only facing one hit per round, you probably aren't really in much danger and don't need to spell to do much work.
  • If you are being attacked twice per round or more, then the spell will generally block 1 hit per round.  This is a good, interesting defense, and quite effective for a 1st-level spell.  For a caster, it can very well be the difference between getting a spell off vs. being interrupted.
  • A 50% chance to absorb every hit is what SR's Physical Mirror does, which is a 6th-level spell.

Also note that if you have a Luck bonus, like from Bard Song, then I think that 50% chance jumps to 100%, improving the function of Reflected Image.  (I don't know if that affects Physical Mirror too... if so, and Demi didn't realize it, that could definitely be a problem.)

It was crazy powerful, especially since Luck apparently affected how much it worked. But I didn't revert it for a reason, after all - just slightly increased its duration. To be honest, I've thought about increasing it more, since a base 5 rounds makes it pretty difficult to use, since it's too short to ever even think about pre-casting and 50% is not that reliable...but it hasn't really been on my mind. As it is, it's okay to absorb a few hits for early levels of fighter-mages, I guess.

Side-note: I'm pretty sure Kreso made the same exact change to Physical Mirror as he did to Reflect Image, so it's a moot point.

Edited by Bartimaeus
Link to post

Yeah, I know it is not a burning issue or anything, I just figured that it was worth posting the discussion for the sake of any potential future readers.

Meantime, I'll take a look at Physical Mirror.  I wonder if, instead of using the MI effect to block 50% of hits, it could block 100% of hits but only renew itself 50% of the time...?  Might need hidden Luck bonus to make that work, but that's doesn't offend me given the spell level and desired effect.  Having PM be a "Super Reflected Image" that actually blocks 1/2 of incoming hits, and is not dispelled by True Sight because it is not an illusionary protection, would make it a pretty awesome spell.

Not sure if implementing that is actually feasible, but I'll try.

Link to post
1 hour ago, subtledoctor said:

Yeah, I know it is not a burning issue or anything, I just figured that it was worth posting the discussion for the sake of any potential future readers.

Meantime, I'll take a look at Physical Mirror.  I wonder if, instead of using the MI effect to block 50% of hits, it could block 100% of hits but only renew itself 50% of the time...?  Might need hidden Luck bonus to make that work, but that's doesn't offend me given the spell level and desired effect.  Having PM be a "Super Reflected Image" that actually blocks 1/2 of incoming hits, and is not dispelled by True Sight because it is not an illusionary protection, would make it a pretty awesome spell.

Not sure if implementing that is actually feasible, but I'll try.

I can't really think of a good solution for Physical Mirror. I made it last longer in order to make up for the loss of power, but I still wasn't ever particularly happy with it.

Link to post
On 2/19/2020 at 1:14 AM, subtledoctor said:

In a sense, there are four kinds of invisibility (plus two edge cases):

...

I think that more or less covers everything. 

Ok, after playing a lot more BG2 and re-reading this amazing explanation into Invisibility I have a couple more questions.

1. Isn't True Sight a little weak? It gives you the "eyes" to see invisibility + dispels normal invisibility and low level illusions + blind immunity, that's all great, but almost every enemy I've encountered is rocking the 3rd level spell Non-Detection which prevents the dispels from working. Removing Non-Detection is not trivial since it needs to happen with a Remove Spell Protection type which will always go first for higher level spells like Spell Deflection. By the type the Spell Deflections are down the enemy is breach-able and therefore dead. Unless I'm grossly misunderstanding Invisibility again, the 2nd level Arcane Spell Detect Invisibility already does the most important bits that the 6th level True Seeing spell does when you take into account the abundance of non-detection.

2. My rogue friend started putting points into the thief skill "Detect Illusion" and as far as we have noticed it seems to ignore Non-Detection. He has been reliably destroying mirror images from mages for a while now. Again, this is sometimes really hard for me to track in the middle of combat so I wanted to make sure I'm not drawing the wrong conclusions. This is probably a good thing if indeed true since it makes rogues have a really strong place in late magic combat, but what are the limits? Can he "dispel" partial invisibility? Can he "dispel" sanctuary? Is 100 points enough?

3. Assuming Non-Detection is essentially "Spell Immunity: Divination", doesn't that make spells like the 5th level arcane spell Oracle kinda weak as well? Maybe my perceived problem is that I don't know how to really counter the abundance of Non-Detection besides bringing a rogue. It seems like this 3rd level spell can counter really high 5th and 6th level spells that have a 2nd level cheap alternative.

4. True Sight claims to dispel low level illusions, and mentions Reflected Image, Mirror Image and Blur. Are those the only ones besides highlighting the illusionary clones like mislead, project image and simulacrum?

Link to post
1 hour ago, NdranC said:

Unless I'm grossly misunderstanding Invisibility again, the 2nd level Arcane Spell Detect Invisibility already does the most important bits that the 6th level True Seeing spell does when you take into account the abundance of non-detection

Yes - See Invisible is substantially stronger than before. It’s actually noticeably better than Invisibility Purge, so much so that I’m thinking about giving priests See Invisible at 3rd level instead. True Seeing gives you protection from Blindness, which is important at high levels because PW: Blind can devastate your capabilities. With TnB I think it also destroys illusionary creatures. 

1 hour ago, NdranC said:

My rogue friend started putting points into the thief skill "Detect Illusion" and as far as we have noticed it seems to ignore Non-Detection. He has been reliably destroying mirror images from mages

Yeah, the thief skill is wildly, ridiculously OP. It’s also horribly hard-coded and there’s mot much to be done about it. It occurs to me that we could make a new sectype, ILLUSIONARYPROTECTIONS2, and move the existing illusionary protections like MI to the new sectype. That might limit the thief skill to dispelling invisibility. If it works via sectype. (Maybe @Bubb knows?)

EDIT - could also just prevent all thieves from putting points into that skill... :groucho:

1 hour ago, NdranC said:

Assuming Non-Detection is essentially "Spell Immunity: Divination", doesn't that make spells like the 5th level arcane spell Oracle kinda weak as well

Yeah Oracle is weak. It needs more - maybe something like Mass Know Opponent? Or Mass Clairvoyance? Either would fit the theme. Maybe both? That might be too strong...

1 hour ago, NdranC said:

True Sight claims to dispel low level illusions, and mentions Reflected Image, Mirror Image and Blur. Are those the only ones

Maybe Ghost Armor too?

1 hour ago, NdranC said:

Maybe my perceived problem is that I don't know how to really counter the abundance of Non-Detection besides bringing a rogue.

Yeah this is an issue. Thieves are too good against Non-Detection (renamed  to “Protection from Divination” in TnB), while divination spells are not good enough. 

One possibility that would only work in the EEs: you could change it to “Divination Shield,” and have it work like Spell Shield, blocking the first dispel attempt and letting the next one through. So the first enemy casting of Oracle or True Sight would destroy the Divination Shield but you could remain invisible; the mage with True Sight could hit you with Finger of Death (or Pierce Magic etc.), meanwhile his cleric buddy might cast Invisibility Purge or True Sight and then you would become fully visible to everybody. 

To limit the power of lowly See Invisible, we could make it unable to dispel Divination Shield.

Something like that. Since thieves generally need a couple rounds for their Detect Illusions skill to work, this might put divination spellcasters on an even footing... (would have to re-work TnB Illusionists, though...)

Edited by subtledoctor
Link to post
31 minutes ago, subtledoctor said:

Yeah, the thief skill is wildly, ridiculously OP. It’s also horribly hard-coded and there’s mot much to be done about it. It occurs to me that we could make a new sectype, ILLUSIONARYPROTECTIONS2, and move the existing illusionary protections like MI to the new sectype. That might limit the thief skill to dispelling invisibility. If it works via sectype. (Maybe @Bubb knows?)

The spell-dispelling part is just a mass-applied Opcode #220 with these params:

  • Param1 -> 9
  • Param2 -> 5
  • probabilityLower -> 0
  • probabilityUpper -> nDetectIllusion skill value
Link to post
1 minute ago, Bubb said:

The spell-dispelling part is just a mass-applied Opcode #220 with these params:

Oh!  Sweet.  So we could change what the skill can do - just dispel invisibility?  Just cancel illusionary images?

Gonna have to make some changes to TnB now...

Link to post
On 9/7/2018 at 2:30 AM, Bartimaeus said:

Waves of Fatigue: Temporarily revised to simulate fatigue instead of ineffectively trying to actually use fatigue. Previously, the first casting of this spell was borderline useless against a fully rested party, or instead absolutely completely crippling vs. a nearly fatigued party, while not having much of any effect upon enemies.

Curious how you decided to handle this?  I'm just addressing this now in my personal tweaks, and need to decide how to modify it.  Something like, -2 Luck penalty per casting? (Probably should still be stackable, since the AI expects it to be so - though I'm actually open-minded about that.)

Seems like it needs more juice - maybe more varied juice instead of just more Luck penalties.  What about, since Greater Malison was cut to a 2-point save penalty, adding a save penalty here?  It could be like Malison+.  "Even Greater Malison."

Maybe also add more effects simulating tiredness.  2-point penalty to Luck, no save, and then on a failed save an additional 2-point penalty to saving throws, -1/2 APR, and 2-point penalty to casting speed.  (In this case, those secondary  effects at least should definitely not be stackable.)

Link to post

"Surges of negative energy render all hostile living creatures in the spell's area fatigued, as if they haven't rested for a day. While fatigued, they suffer a -2 penalty to luck, movement rate, casting speed, and speed factor. Multiple castings of this spell are not cumulative."

Also a spell I don't like and never did like. Maybe you're on to something with gating some of the worse effects - like ApR and the casting speed penalties - to a saving throw while making others non-resistable, effectively making it into a "Greater Slow"...

Link to post
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...