Follow up on my previous post: I was able to fix this problem. Now the text display effects are all written at the end of each spell header rather than the beginning.
This means that all the non-stackable spells like Armor of Faith now correctly show the buff expirations. Jim, there may be a simpler edit to your existing expirations.tph to achieve the same thing; my version uses ADD_SPELL_EFFECT rather than your INSERT_EXPIRE_MESSAGE.
If anyone wants to use this code, you can back up your existing jimfix expirations.tph, unzip mine and rename it to expirations.tph in the same file location.
I've added a few extra spells in here as well which you can freely edit, delete, etc. I like to have Grease, Web, Cloudkill etc. expirations. Note that in the .tph file, they're added to the 'target the caster' section rather than the 'affects a target' section. You can move those around as desired. If you're Webbing 10 enemies, however, the dialogue box gets jammed up with expirations on each target AND the timers stack each time the enemy fails another save. Total mess. Keeping the expiration on 'caster' means you see a single timer counting down 30 seconds, 12 seconds, 6, etc. simply so you know when your spell is about to end.
Sorry, I don't really check the forums anymore. I thought I would get emails if someone posted in this topic, but apparently that wasn't the case.
@Cahir Sure, here is the English translation file. If you post a Polish version I can include it in the next release.
@semaj577 Sorry, I'm not sure exactly what the issue is. Could you give a specific example of how to cause it? Might it be related to what Minsc2017 posted?
@Minsc2017 Is this a version difference with the EEs? In the classic verison + Fixpack installs I've played, you're prevented from stacking Armor of Faith via a protection from spell effect (opcode 206). In this case, the notifications must appear before that effect, which is why I inserted them at the beginning.
On the other hand, I have no idea why I decided to write my own function to insert the messages rather than just using ADD_SPELL_EFFECT, so I'll change that.
@Minsc2017 Is this a version difference with the EEs? In the classic verison + Fixpack installs I've played, you're prevented from stacking Armor of Faith via a protection from spell effect (opcode 206). In this case, the notifications must appear before that effect, which is why I inserted them at the beginning.
On the other hand, I have no idea why I decided to write my own function to insert the messages rather than just using ADD_SPELL_EFFECT, so I'll change that.
I've only modded on EE versions, but yes, it seems to be a widespread change to replace 206 functionality with 321.
I'm guessing the reason is that both opcode 206 and 321 prevent stacking, but 321 allows you to cast a fresh spell and 'reset the clock' without needing to wait for your first casting to expire.
I added a few other innates and spells to your list and I noticed my expirations weren't working for Berserker Enrage (spcl321). It seems to be the one and only spell that still uses opcode206 as the final effect. So it was preventing my EOF expirations from displaying.
My kludgey solution for my own game is to start with a 'clean' copy of spcl321 with that opcode 206 removed. Then I run the expirations, and I've added this snippet to your code:
/* put opcode 206 at end of Berserker Enrage SPCL321 */ COPY_EXISTING_REGEXP GLOB ~SPCL321.spl~ ~override~ PATCH_PRINT ~Add opcode 206 to end of %SOURCE_FILE%~ LPF ADD_SPELL_EFFECT INT_VAR opcode = 206 target =1 timing=0 duration=60 parameter1=74011 resist_dispel=2 STR_VAR resource=~SPCL321~ END BUT_ONLY_IF_IT_CHANGES
Obviously if this were to be part of a mod, I'd need to first remove the opcode206 line as part of the code rather than manually, then do expirations, and then add back opcode 206 as shown here.
For me, it was worth the little extra effort since I play permadeath games and knowing exactly when enrage is about to expire is one of the more crucial timers!
Barbarian rage isn't set up this way, only berserker enrage is. I assume it's to reflect the 'cool down' penalties possessed by enrage but not rage. So you can do several overlapping barbarian rages, but not berserker enrages. I kind of like the difference since rage is 30 seconds and enrage is 60 seconds. Barbarian rage is shorter duration but you have less risk of getting caught by something during the cooldown...
@Minsc2017 Thanks for checking that. It seems that the classic version doesn't even have opcode 321, so it must be an EE thing. Agreed that resetting the duration of buffs is a better solution than preventing you from recasting them. I want this mod to support both versions of the game, so I'll just put in a special case for enrage.
@GrimJim there seems to be a problem with Potions in my install; because of the way they work (opcode 146 on self casting a spell with the actual effects of the potion, but the op146 on the item itself has it's duration set to 0), your mod seems to be picking up the wrong duration and it marks that the potion expires immediately after drinking them.
I suggest you run the spells that give these effects through the function that gives real spells their expiration notices, as this seems to be the easiest fix that doesn't involve meddling in two files at once, and needs the least amount of work as well, to produce the same results (only difference with the current method (if it worked) is that the effects will share the source like this, which isn't what's currently happening, but honestly, I think this is even better).
@GrimJim I believe it's Item Revisions. Protection Scrolls also appear to be working like this. I'm not sure how other items with active abilities work, but I suppose it might be the same case for some of them (since some directly make use of Wizard spells, but some abilities do not have such a counterpart so it might not be the case).
Kind of bumping this thread. Does anybody know if Jimfix works well with SCS v31 or SCS v32? I had a lot of problems with the combat log in my last installation (SCS v31), but I've no idea if they had something to do with Jimfix.
Update: Looks like these problems came from elsewhere. After a full reinstallation they disappeared.
I'm having a minor issue with the combat log. In a fight with a lich there is a message that says "Valarien: Death" (Valarien is the name of my protagonist). Jimfix is the only mod I use that affects the combat log, so I'm wondering if this might have something to do with Jimfix.
Does anyone know if @GrimJim is still around?
I want to install the buff and item timers on my BGEE and BG2EE installs. Can I just install it on top of a bunch of mods or does it need to go before anything? I have SCS v31, atweaks, bgtweaks, and a few other minor mods.
I'm having a minor issue with the combat log. In a fight with a lich there is a message that says "Valarien: Death" (Valarien is the name of my protagonist). Jimfix is the only mod I use that affects the combat log, so I'm wondering if this might have something to do with Jimfix.
Does anyone know if @GrimJim is still around?
I want to install the buff and item timers on my BGEE and BG2EE installs. Can I just install it on top of a bunch of mods or does it need to go before anything? I have SCS v31, atweaks, bgtweaks, and a few other minor mods.
I (GrimJim) am back with a new account name and I would like to update Jimfix to work correctly with the latest version of SCS. As far as I can tell, here is what needs to be done:
The following component have been fixed by the Fixpack/EE or by SCS and are no longer needed:
Fix Sunfire Power Levels
Enable Spell Immunity in Sequencers/Triggers
Fix Smarter Abazibal
Fix Smarter Irenicus at the Throne
Remove Entourage from Ascension Fallen Solars
The following components are still relevant without updates:
Reveal all hidden doors Shield of Reflection works on SCS Flame Arrows: still necessary in my classic install, not sure about EE. Fix incorrect casting animations: there are some issues that this still fixes in my classic install, not sure about EE.
The following components need to be updated to the new way SCS names spells and for the new spells from IWD:
Add spell school notifications to the combat log
Add expiration notifications for buffs
Add expiration notifications for item buffs: Possibly this is still good
I am not sure about the following components:
Allow Spell Shield to block Wish Breach and Mordenkainen's Disjunction: As far as I can tell this should still work, but I never had a chance to test it in a real game so I would appreciate it if someone could confirm that this functions as intended. Prevent silent prebuffs: I did a little testing and it seems this is no longer an issue in SCS, but I would appreciate it if someone could confirm.
If anyone has used Jimfix with SCS v33, does the above seem correct?
To also address some of the issues that came up while I was gone:
I'm not particularly interested in supporting Item/Spell Revisions as I do not use those mods myself, but if someone would like to make Jimfix compatible with them I can include that in the main release.
I'm pretty sure this mod is not responsible for an erroneous death messages.
Minsc2017 would be the one to check with about his modifications.
Version 3.0 has been released. It mainly adds support for SCS v33 and the spells from IWD that it adds as well as the new class abilities in EE. It also deprecates a number of fixes that are no longer necessary.
From the testing I did, the Prevent Silent Prebuffs component is no longer necessary and has been deprecated. The component to let Spell Shield block Wish Breach and Disjunction is still necessary on Classic but not on EE, so it will not install on EE versions. If either of these changes are a mistake I can revert them.
The last version seems to be the 3.1a. Does any one know if there is any issues on an 2.6.6 EET game ?
What are your feedback with the followint two components ? Still relevant with latest version of SCS or some other mods ?
2 - Shield of Reflection works on SCS Flame Arrows
100 - Check for and fix incorrect spell animations
I haven't tried this mod yet but definitely planning to have it in modlist
Comments
This means that all the non-stackable spells like Armor of Faith now correctly show the buff expirations. Jim, there may be a simpler edit to your existing expirations.tph to achieve the same thing; my version uses ADD_SPELL_EFFECT rather than your INSERT_EXPIRE_MESSAGE.
If anyone wants to use this code, you can back up your existing jimfix expirations.tph, unzip mine and rename it to expirations.tph in the same file location.
I've added a few extra spells in here as well which you can freely edit, delete, etc. I like to have Grease, Web, Cloudkill etc. expirations. Note that in the .tph file, they're added to the 'target the caster' section rather than the 'affects a target' section. You can move those around as desired. If you're Webbing 10 enemies, however, the dialogue box gets jammed up with expirations on each target AND the timers stack each time the enemy fails another save. Total mess. Keeping the expiration on 'caster' means you see a single timer counting down 30 seconds, 12 seconds, 6, etc. simply so you know when your spell is about to end.
@Cahir Sure, here is the English translation file. If you post a Polish version I can include it in the next release.
@semaj577 Sorry, I'm not sure exactly what the issue is. Could you give a specific example of how to cause it? Might it be related to what Minsc2017 posted?
@Minsc2017 Is this a version difference with the EEs? In the classic verison + Fixpack installs I've played, you're prevented from stacking Armor of Faith via a protection from spell effect (opcode 206). In this case, the notifications must appear before that effect, which is why I inserted them at the beginning.
On the other hand, I have no idea why I decided to write my own function to insert the messages rather than just using ADD_SPELL_EFFECT, so I'll change that.
I'm guessing the reason is that both opcode 206 and 321 prevent stacking, but 321 allows you to cast a fresh spell and 'reset the clock' without needing to wait for your first casting to expire.
I added a few other innates and spells to your list and I noticed my expirations weren't working for Berserker Enrage (spcl321). It seems to be the one and only spell that still uses opcode206 as the final effect. So it was preventing my EOF expirations from displaying.
My kludgey solution for my own game is to start with a 'clean' copy of spcl321 with that opcode 206 removed. Then I run the expirations, and I've added this snippet to your code:
/* put opcode 206 at end of Berserker Enrage SPCL321 */
COPY_EXISTING_REGEXP GLOB ~SPCL321.spl~ ~override~
PATCH_PRINT ~Add opcode 206 to end of %SOURCE_FILE%~
LPF ADD_SPELL_EFFECT
INT_VAR opcode = 206 target =1 timing=0 duration=60 parameter1=74011 resist_dispel=2
STR_VAR resource=~SPCL321~ END
BUT_ONLY_IF_IT_CHANGES
Obviously if this were to be part of a mod, I'd need to first remove the opcode206 line as part of the code rather than manually, then do expirations, and then add back opcode 206 as shown here.
For me, it was worth the little extra effort since I play permadeath games and knowing exactly when enrage is about to expire is one of the more crucial timers!
Barbarian rage isn't set up this way, only berserker enrage is. I assume it's to reflect the 'cool down' penalties possessed by enrage but not rage. So you can do several overlapping barbarian rages, but not berserker enrages. I kind of like the difference since rage is 30 seconds and enrage is 60 seconds. Barbarian rage is shorter duration but you have less risk of getting caught by something during the cooldown...
I suggest you run the spells that give these effects through the function that gives real spells their expiration notices, as this seems to be the easiest fix that doesn't involve meddling in two files at once, and needs the least amount of work as well, to produce the same results (only difference with the current method (if it worked) is that the effects will share the source like this, which isn't what's currently happening, but honestly, I think this is even better).
Update: Looks like these problems came from elsewhere. After a full reinstallation they disappeared.
Screenshot:
I want to install the buff and item timers on my BGEE and BG2EE installs. Can I just install it on top of a bunch of mods or does it need to go before anything? I have SCS v31, atweaks, bgtweaks, and a few other minor mods.
Was it a project image, maybe (who was killed)?
I usually install it on top of everything.
You can check his last visit in his profile. It was in September, so unfortunately it looks like he's no longer active in this forum.
The following component have been fixed by the Fixpack/EE or by SCS and are no longer needed:
Fix Sunfire Power Levels
Enable Spell Immunity in Sequencers/Triggers
Fix Smarter Abazibal
Fix Smarter Irenicus at the Throne
Remove Entourage from Ascension Fallen Solars
The following components are still relevant without updates:
Reveal all hidden doors
Shield of Reflection works on SCS Flame Arrows: still necessary in my classic install, not sure about EE.
Fix incorrect casting animations: there are some issues that this still fixes in my classic install, not sure about EE.
The following components need to be updated to the new way SCS names spells and for the new spells from IWD:
Add spell school notifications to the combat log
Add expiration notifications for buffs
Add expiration notifications for item buffs: Possibly this is still good
I am not sure about the following components:
Allow Spell Shield to block Wish Breach and Mordenkainen's Disjunction: As far as I can tell this should still work, but I never had a chance to test it in a real game so I would appreciate it if someone could confirm that this functions as intended.
Prevent silent prebuffs: I did a little testing and it seems this is no longer an issue in SCS, but I would appreciate it if someone could confirm.
If anyone has used Jimfix with SCS v33, does the above seem correct?
To also address some of the issues that came up while I was gone:
From the testing I did, the Prevent Silent Prebuffs component is no longer necessary and has been deprecated. The component to let Spell Shield block Wish Breach and Disjunction is still necessary on Classic but not on EE, so it will not install on EE versions. If either of these changes are a mistake I can revert them.
The last version seems to be the 3.1a. Does any one know if there is any issues on an 2.6.6 EET game ?
What are your feedback with the followint two components ? Still relevant with latest version of SCS or some other mods ?
2 - Shield of Reflection works on SCS Flame Arrows
100 - Check for and fix incorrect spell animations
I haven't tried this mod yet but definitely planning to have it in modlist