artifoxel / WTPFamiliars

Enhanced-edition-compatible version of Rabain/Salk's expanded familiar mod
1 stars 1 forks source link

Issue with familiars' HP gain at level up? #1

Open Salk73 opened 2 years ago

Salk73 commented 2 years ago

One user posted the following at Gibberlings3:

"On 2.6, familiar HP seems to be buggy. Hit points are correct for levels one and two for tested familiars (the Chaotic cast; cat, faerie dragon and quasit), but after that start doing weird things. Sometimes the hit points go down, instead of increasing. Or they only increase by one or two points - this is still before level 10, when hit point gain should be four per level. At level 9, familiars only have 9 HP total.

This was originally noticed on my EET installation, but was retested on a clean BGEE install with only modmerge used in addition to WTP Familiars. BG Radar Overlay was what first caused me to notice the inconsistencies, and I tested to make sure it wasn't simply outputting an incorrect value, primarily by having party members kick my poor cat with no weapons to see if it got knocked out with only a very small amount of damage compared to what its HP should be.

Other features that are gained on level up, such as damage resistances for the quasit, appeared to be properly applied. This behavior remains in the 2.7 version that I just saw as I came to report this bug."

Link: https://www.gibberlings3.net/forums/topic/23874-wtp-familiars-revised-find-familiar-spell/page/12/#comment-315396

My suspicion is that the Empowerment sequence which dynamically adjusts some familiars' HP total might interfere with the level up sequence which modifies the total HP as well. It may have escaped my attention although I'd be surprised.

Some investigative work is needed.

Can you please test the level up process?

Thanks!

CrackBaby1 commented 2 years ago

I was the author of the above bug report on Gibberlings3.

I apologize for taking so long to move the report to here, it's been a busy week, and I wanted to do a bit more investigation work to try and help as much as possible.

This testing was done in my BGEE game with no other mods than DlcMerger. BG Radar Overlay was used for watching numbers on the familiar as it leveled up. At levels one and two, as noted in Salk's post above, hit points were correct - 4 and 8 respectively. After that, things get weird. At level 3, max HP briefly jumps to 12 as expected, but then gets reduced down to 6 after a delay of about three seconds. This process continues until level 9 where I hit the level cap.

BGEE Level | HP | HP After Delay L01 | 04 | 04 L02 | 08 | 08 L03 | 12 | 06 L04 | 10 | 04 L05 | 08 | 05 L06 | 09 | 06 L07 | 10 | 07 L08 | 11 | 08 L09 | 12 | 09

During the leveling process, while max HP will jump by the expected value each level (+4 from whatever the current max HP is), the current HP will only increase the value in the delay column. So, at level 3, my max HP goes from 8 to 12, but the current HP actually drops to 6. Then a few seconds later, the max HP is reduced to 6. Again, this process repeats at every level.

This pattern was repeated in my EET game as well, where I tested all the way to level 20. Though, in that game, HP at level one started at six. Pattern is essentially the same in this game, aside from the extra two health to start. Weirdly, at level 5, HP return to the BGEE values until level 9.

EET Level | HP | HP After Delay L01 | 06 | 06 L02 | 10 | 10 L03 | 14 | 08 L04 | 12 | 06 L05 | 10 | 05 L06 | 09 | 06 L07 | 10 | 07 L08 | 11 | 08 L09 | 12 | 09 L10 | 11 | 10 L15 | 12 | 11 L16 | 13 | 12 L17 | 14 | 13 L18 | 15 | 14 L19 | 16 | 15 L20 | 17 | 16

Hopefully this helps a bit, as I had limited success in following what's going on in the scripts to help figure out what might be causing this. Also, sorry for the formatting of the tables above - apparently github doesn't like multiple spaces, or tabs to make sure they all line up nicely. Hopefully it makes sense.

Salk73 commented 2 years ago

CrackBaby1,

thanks for the detailed report. Can you confirm that the same happens with the Fairie Dragon? If my suspicions are correct this issue should NOT affect the Fairie Dragon but the Cat, the Quasit and the Ferret.

CrackBaby1 commented 2 years ago

Did some quick testing this morning before work, on all the familiars from every alignment.

It affects every familiar the same. First two levels are fine, then things go wonky as noted above, until they all have 9 HP at level 9.

Salk73 commented 2 years ago

Alright, good to know.

I will only be able to test the non-EE version of this mod on BGT but if the issue isn't present there then it means that there is a problem with the EE specific port. Honestly, I find difficult that such a glaring bug had escaped my testing in the past but one never knows...

CrackBaby1 commented 2 years ago

So, did some more playing around, and looking at how other mods (such as Shadow Magic) do familiar leveling, I found an alternative way of adding HP.

As an experiment, I dashed out the line in the level up script that applied the spell which gave HP, and replaced it with the following: ChangeStat(Myself,MAXHITPOINTS,4,ADD) I'm aware that the spell that gives HP does other things too, but those weren't super relevant for testing purposes. Anyways, when doing this, HP went up to where they were supposed to go each level. There was still some fluctuation of the HP total for a few seconds after level up, presumably from other parts of the script that apply things, but the end result was what I was expecting - four more max health than from the previous level.

Is it possible that there's just so many different things modifying health, the game isn't happy with so many stacking spells that do the same thing? While it doesn't appear like there's weirdness with other attributes on familiars (at least, none I could find with the limited knowledge I have on how to test stuff like that), I did see there was a way to add pretty much every modifier to creatures in this fashion. I don't know if this is more, or less efficient than having 50 spell effects, but I figured since I found it, I'd mention it as something maybe being worth looking into.

Salk73 commented 2 years ago

Hi!

Using ChangeStat() sounds way more efficient but I created this modification for the classic engine and that function was not available to me.

We will see what artyfox says once he's taken a look at this but good suggestion anyway.

Salk73 commented 2 years ago

From a few preliminary tests (levelling up familiars) done on BGT (classic engine) I am not able to reproduce this issue.

burner1024 commented 1 year ago

I'm not sure if this empowerement is a good idea to begin with, but if done properly, it should work via effects, rather than scripts. Something aura-like on PC.

Salk73 commented 1 year ago

Empowerment seemed a decent idea to me and it is there to stay, but I would like to know what you dislike about it.

About its implementation, I was not supposed to be the coder for WTP Familiars, but I didn't find any volunteer to do the job so I did what I could. During my own testing (BGT), things seemed to be working fine enough with empowerment and everything else. Said that, I am very much aware that there were better solutions (arrays, I guess) using functions/methods I never became familiar with.

I have also no experience whatsoever about how fine the EE port works. I fear the maintainer here is no longer maintaining...

burner1024 commented 1 year ago

Empowerment seemed a decent idea to me and it is there to stay, but I would like to know what you dislike about it.

Don't see any source/foundation.

Said that, I am very much aware that there were better solutions (arrays, I guess) using functions/methods I never became familiar with.

I mean ditching the scripting for empowerment and implementing it with spells and effects. I'm fairly sure it will work faster and more reliable than scripts.

Salk73 commented 1 year ago

Don't see any source/foundation.

Oh, I understand. It's something that has simply to do with gameplay and balance between the three classes of familiars.

I mean ditching the scripting for empowerment and implementing it with spells and effects. I'm fairly sure it will work faster and more reliable than scripts.

I believe you. But scripting is the only area I had a little familiarity with, so I would have needed external help. As I said, nobody volunteered.

burner1024 commented 1 year ago

It's something that has simply to do with gameplay and balance between the three classes of familiars.

Yeah, the gameplay also puzzles me. What, I should keep moving the familiar after the mage or something? But they can't attack from distance... what use is the bonus if it's not fighting? Or should the mage follow the familiar to the front lines to empower it? I've no idea how to utilize this mechanic intelligently.

But scripting is the only area I had a little familiarity with, so I would have needed external help. As I said, nobody volunteered.

Anyway, before making content changes, I'd recommend reconciling multiple mod versions - original, @flamewing's, @artyfox's, so that there's one unified distro.