Jump to content
DavidW

SCS v32 Release Candidate (now Version 8) Available for Testing

Recommended Posts

Guest Macnube

I figured it was something like that.

I'm pretty sure I would use it if it was available, although it's hard to know for certain without seeing the implementation - since it's disabled by default I'm assuming there were at least some issues that people didn't like about it?

In any case, consider me interested in having it back if you still think it would be a good fit for SCS.

As an aside, I'm really enjoying v32 so far - thanks kindly for all the work you've put in.

Share this post


Link to post

I think I recall I enabled that setting once upon a time, and was annoyed with characters clogging up the text log when you entered areas - if I'm recalling my vague memories correctly. I'm usually all for including everything in the combat log, but for this one type of situation, it'd be pretty rad if in this one situation they could do it "silently" instead. I'd definitely start enabling it then.

Edited by Bartimaeus

Share this post


Link to post
12 hours ago, DavidW said:

Can't reproduce. Shout and Great Shout exist on my install, both as spells and as scrolls. 

 

I used weidu to check to see which mods were impacted D5SHOUT and it seemed like  this is what it came up with as a result.

 

"Mods affecting D5SHOUT.SPL:
00000: /* created or unbiffed */ ~MIGHT_AND_GUILE/MIGHT_AND_GUILE.TP2~ 0 210 // 3E-Inspired Bard Overhaul & Multiclass Bards3.8.15"

 

So, nothing about SR or iwdification from SCS impacting it. I assume the only logical thing to do is to not use revised bard components or so? If you have any advice i'm all ears.

Share this post


Link to post
10 hours ago, Bartimaeus said:

I think I recall I enabled that setting once upon a time, and was annoyed with characters clogging up the text log when you entered areas - if I'm recalling my vague memories correctly. I'm usually all for including everything in the combat log, but for this one type of situation, it'd be pretty rad if in this one situation they could do it "silently" instead. I'd definitely start enabling it then.

IIRC it used to work this way by default, but people (tbh including me) got annoyed that wizards were all gray.

Share this post


Link to post
38 minutes ago, TheLoneTremere said:

 

I used weidu to check to see which mods were impacted D5SHOUT and it seemed like  this is what it came up with as a result.

 

"Mods affecting D5SHOUT.SPL:
00000: /* created or unbiffed */ ~MIGHT_AND_GUILE/MIGHT_AND_GUILE.TP2~ 0 210 // 3E-Inspired Bard Overhaul & Multiclass Bards3.8.15"

 

So, nothing about SR or iwdification from SCS impacting it. I assume the only logical thing to do is to not use revised bard components or so? If you have any advice i'm all ears.

What’s the significance of “d5shout”? That file isn’t used in the SCS implementation of shout or great shout.

Share this post


Link to post
2 minutes ago, DavidW said:

What’s the significance of “d5shout”? That file isn’t used in the SCS implementation of shout or great shout.

 

I did another test  on another file that claims to be wizard shout with this out come.

 

"

[WeiDU-FileChangelog.exe] WeiDU version 24500
weidu_external/lang/english/setup.tra file not found. Skipping...

Mods affecting SPCL302.SPL:
00000: /* created or unbiffed */ ~MIGHT_AND_GUILE/MIGHT_AND_GUILE.TP2~ 0 210 // 3E-Inspired Bard Overhaul & Multiclass Bards3.8.15
00001:  ~STRATAGEMS/SETUP-STRATAGEMS.TP2~ 0 1500 // Include arcane spells from Icewind Dale: Enhanced Editionv32 RC8"

Share this post


Link to post

Having looked around a bit in Might & Guile, it looks as if it introduces its own versions of both spells. SCS detects that, and doesn’t install its version.

Share this post


Link to post
51 minutes ago, DavidW said:

Having looked around a bit in Might & Guile, it looks as if it introduces its own versions of both spells. SCS detects that, and doesn’t install its version.

 

Yeah, seems it's a case of one or the other. I assume this can't be reconciled with a patch unless maybe the mod author of M&G would agree to try and make a work around?

Share this post


Link to post

OK, I've now had a look at what Might and Guile does. It's a bit weird: it (more specifically, its Bard component) introduces an *innate* version of Shout and Great Shout, in the SPCLxxx spell namespace. (That's fine so far.) But then it gives them WIZARD_SHOUT and WIZARD_GREAT_SHOUT spell.ids entries. That's a very odd thing to do, unless I'm missing something:

1) it breaks the contract that WIZARD_xxx always refers to the SPWIxxx namespace. Sufficiently careful code won't be confused by that, but it's at least somewhat dangerous.

2) more importantly, it uses a spell.ids entry that's reserved for a core (albeit IWD) spell, and uses it for a fundamentally different spell. (Specifically, one that doesn't have scrolls.) So any mod that sees that WIZARD_SHOUT is present and assumes it's a version of the Wizard's Shout spell is going to get confused.

If there's a rationale for this it's not obvious to me (comment welcome from @subtledoctorsince I think it's his mod). But in the meantime, I don't recommend using Might and Guile's bard component along with SCS's IWD spells (or with IWDification).

Share this post


Link to post
1 minute ago, DavidW said:

OK, I've now had a look at what Might and Guile does. It's a bit weird: it (more specifically, its Bard component) introduces an *innate* version of Shout and Great Shout, in the SPCLxxx spell namespace. (That's fine so far.) But then it gives them WIZARD_SHOUT and WIZARD_GREAT_SHOUT spell.ids entries. That's a very odd thing to do, unless I'm missing something:

1) it breaks the contract that WIZARD_xxx always refers to the SPWIxxx namespace. Sufficiently careful code won't be confused by that, but it's at least somewhat dangerous.

2) more importantly, it uses a spell.ids entry that's reserved for a core (albeit IWD) spell, and uses it for a fundamentally different spell. (Specifically, one that doesn't have scrolls.) So any mod that sees that WIZARD_SHOUT is present and assumes it's a version of the Wizard's Shout spell is going to get confused.

If there's a rationale for this it's not obvious to me (comment welcome from @subtledoctorsince I think it's his mod). But in the meantime, I don't recommend using Might and Guile's bard component along with SCS's IWD spells (or with IWDification).

 

\o/ Yay i brought a problem to attention!

Share this post


Link to post
Guest Macnube
3 hours ago, DavidW said:

IIRC it used to work this way by default, but people (tbh including me) got annoyed that wizards were all gray.

Makes sense. Do you have someone on the beamdog team you could reach out to, to see if maybe they would be willing to externalize the visual component of the stoneskin buff? Could be a nice addition to patch 2.6, in preparation for maybe restoring neutral prebuffing to SCS 33. I'd be happy to lend my voice to the request, but I bet you have a bit more pull =).

Share this post


Link to post
1 hour ago, DavidW said:

in the meantime, I don't recommend using Might and Guile's bard component along with ... IWDification.

Come now, let's not be hasty and give bad advice.  IWDification is installed before M&G, and M&G looks for the IWDification spells and uses them if they exist.  M&G and IWDification are perfectly, utterly, 1,000% compatible.

Now, if the player has not installed IWDification, I still want to give M&G bards access to the Shout spells, which are grouped with a few other sound/word-based spells and treated (for purposes of the mod) almost like a 9th school of magic: bardic magic.  This all worked perfectly well for plenty of time; in fairness, it all existed and worked fine well before SCS came along and started installing IWD spells.  (And tbh I'm still not totally clear on why SCS is suddenly doing that, rather than deferring to the players choice in adding them or not, by having installed IWDification beforehand... BUT I'm not asking you to justify that decision, I don't think it needs any justification.  It's fine.  It's just that it will necessarily create the need for adjustments elsewhere, since spell-adding mods like IWDification are generally installed looong before SCS in the load order, and a lot of mods heretofore have likely been assuming that order.)

The Shout spells need IDS entries because the array of spells available to bards operates via IDS names.  What the mod does is allow bards to cast spells spontaneously, using a casting system identical to the way sorcerers cast spells.  To do that, it needs to make innate clones of any wizard or priest spells that are available to bards.  It's been a while since I coded this but I think my rationale for making the spells innate rather than arcane is 1) if they were arcane I'd just have to make an innate clone anyway; and 2) given the assumption that spell-adding mods are installed before M&G, there's a decent likelihood that all of the available SPWI### slots might be taken, which would cause ADD_SPELL to fail and prevent the spells being added.  This is not a concern with SPCL### slots.

As for why I specifically used WIZARD_SHOUT: it's because the most likely event is that such spells will be added before M&G, not by M&G, and that's the spell that gets fed into the code that generates the spontaneous casting system.  I suppose that I could change it to BARD_SHOUT, but that would introduce the chance of bugs such as bards getting two different versions of the same spell.  At the time this was coded, there were no downsides or bugs resulting from calling it WIZARD_SHOUT.

So, that's the wall of text by way of explanation.  I have three thoughts going forward:

1) I'm not sure how SCS is adding these spells... but if ADD_SPELL is used shouldn't it just overwrite the IDS entry?  It's been a long time since I looked at this kind of stuff but my recollection is that "the last ADD_SPELL wins," if you will.  I don't think it would break M&G if SCS overwrote the spell; by using ADD_SPELL I thought I was allowing for the possibility that later mods might do so...

2) For players, notwithstanding that SCS now adds IWD spells and I fully expect, given the author, that it does an excellent job of adding them, my advice would be to continue to use IWDification for that purpose.  As I said, there are a number of mods (I can't say how many, I'd guess somewhere in between "several" and "lots") which expect spells to be added relatively early in the install order, and which may specifically look for whether IWD spells have been added early in the order.  SCS may do a fine job of adding them for its own purposes, but you may likely see issues from other mods if you decide something like "I don't need to use IWDification, I'll just let SCS add those spells."  Unless there's a specific, articulable reason not to use IWDification (such as the couple years when IWDification spells were not fully updated to IWDEE standards, during which time "B_Spells" stepped in to fill the gap)... then just use IWDification.  From what I've read SCS v32 is designed with IWDification compatibility in mind, it should not hurt anything to install both together.

3) I think it shouldn't break anything if I change the M&G version from WIZARD_SHOUT to BARD_SHOUT or something like that.  Not 100% on that - the spontaneous casting code is pretty complex (by my standards anyway) and I haven't looked at it in a while.  But assuming it doesn't break anything, or that it breaks things that are easily adjustable, then I'll make that change when I get a chance.

Edited by subtledoctor

Share this post


Link to post

Btw neither here nor there, but you might want to take a look at the addition I submitted to IWDification to make the IWD aorea-of-effect spells compatible with the Spell Revisions "Spell Deflection Blocks AoE Spells" component.  Unfortunately IWDification jams all of the spell-adding code into the main .tp2 file, but the gist of my addition is this:

1) Add each AoE arcane spell to an array after the spell is created:

OUTER_SET $arcane_aoe_spell(~WIZARD_SNILLOCS_SNOWBALL_SWARM~)=1

2) At the end of the arcane spells, run a variant of kreso's AoE Deflection code:

ACTION_IF MOD_IS_INSTALLED ~spell_rev.tp2~ ~55~ BEGIN
 ACTION_PHP_EACH arcane_aoe_spell AS spell_name => r2 BEGIN
  OUTER_SET spell_num = (IDS_OF_SYMBOL (~spell~ ~%spell_name%~))
  ACTION_IF spell_num > 0 BEGIN
	OUTER_SNPRINT 1 spell_type ~%spell_num%~
	OUTER_SNPRINT (0 - 3) type_num ~%spell_num%~
	ACTION_IF spell_type = 2 BEGIN
      OUTER_SPRINT i2 ~spwi%type_num%~
	  OUTER_SET found=0
	  OUTER_SPRINT letter ~d~
	  ACTION_FOR_EACH char_check IN d e f g h i j k l m BEGIN
	    ACTION_IF found=0 BEGIN
	      ACTION_IF NOT FILE_EXISTS_IN_GAME ~%i2%%char_check%.spl~ BEGIN
	        OUTER_SET found=1
	        OUTER_SPRINT letter ~%char_check%~
	      END
	    END
	  END
	  ACTION_IF found && r2 && (FILE_EXISTS_IN_GAME ~%i2%.spl~) BEGIN
		PRINT ~%i2% is arcane AoE~
	    COPY_EXISTING ~%i2%.spl~ ~override/%i2%%letter%.spl~ // cloning original into the secondary spell
	      WRITE_ASCII 0x8 ~~ (8) // clearing out the name
	      GET_OFFSET_ARRAY headers 0x64 4 0x68 2 0 0 0x28
	      PHP_EACH headers AS i => r BEGIN
	        WRITE_SHORT (r+0x0c) 1 // target = creature
	        WRITE_SHORT (r+0x26) 1 // projectile = none
	      END
	    BUT_ONLY
	    COPY_EXISTING ~%i2%.spl~ ~override~        // modifying the original
	      READ_LONG 0x34  level
	      READ_LONG 0x64  ab_off
	      READ_SHORT 0x68 ab_num
	      READ_LONG 0x6a  ef_off
	      READ_SHORT 0x70 cast_num // global effects aka casting features
	      total_eff=cast_num
	      FOR (i=0;i<ab_num;i+=1) BEGIN
	        READ_SHORT  (ab_off+i*0x28+0x1e) ef_num  // effect number
	        READ_SHORT  (ab_off+i*0x28+0x20) ef_ind  // effect index
	        total_eff+=ef_num
	      END
	      DELETE_BYTES ef_off ((total_eff - 1)*0x30)
	      DELETE_BYTES ab_off ((ab_num - 1)*0x28)
	      WRITE_SHORT 0x68 1
	      WRITE_LONG 0x6a  (ef_off - (ab_num - 1)*0x28)
	      WRITE_SHORT 0x70 0
	      WRITE_SHORT (ab_off+0x1e) 1
	      WRITE_SHORT (ab_off+0x20) 0
      // ability header
	      WRITE_SHORT (ab_off+0x10) 1 // level required
      // effect
	      offset=(ef_off - (ab_num - 1)*0x28)
	      WRITE_SHORT (offset+0x00) 146   // opcode = cast spell on creature
	      WRITE_BYTE  (offset+0x02) 2     // target = pre-target
	      WRITE_BYTE  (offset+0x03) level   // power level = spell level
	      WRITE_LONG  (offset+0x04) 0     // parameter 1 = caster's level
	      WRITE_LONG  (offset+0x08) 1     // parameter 2 = instant
	      WRITE_BYTE  (offset+0x0c) 1     // timing mode = permanent
	      WRITE_ASCII (offset+0x0d) ~~ (5)  // clearing out the space
	      WRITE_BYTE  (offset+0x12) 100   // probability 1 = 100%
	      WRITE_BYTE  (offset+0x13) 0     // probability 2 = 0%
	      WRITE_ASCIIE (offset+0x14) ~%i2%%letter%~ (8) // resource
	      WRITE_ASCII (offset+0x1c) ~~ (20) // clearing out the space
	    BUT_ONLY
	  END
	END
  END
 END // ACTION_PHP_EACH
END

3) Do the same thing for the AoE priest spells.  (I don't remember if the priest code is any different but you can find it at line 4996 of the submitted .tp2 variant.)

Share this post


Link to post
Guest
You are commenting as a guest. If you have an account, please sign in.
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.


×