Beamdog / nwn-issues

Neverwinter Nights: Enhanced Edition Technical Bug Tracker
http://nwn.beamdog.com
31 stars 1 forks source link

Free attacks should never follow an additional attack progression. #524

Open Prince-Raymond opened 9 months ago

Prince-Raymond commented 9 months ago

To Reproduce

Specifics

If needed, describe the bug

NWN:EE's combat UI erroneously applies a cumulative -5 penalty to every free attack after the first of the combat round. The additional attack progression stacks with the Monk's -3 unarmed attack progression and the standard -5 attack progression of all classes. This causes a character's BAB to literally become a penalty unto itself. It makes the investment in certain class features, feats and spells pointless. How a single-digit bonus becoming a double-digit penalty during combat could not possibly be forward or obvious enough to you, I will never understand. This is neither irrelevant nor insignificant, and I will kumite with anyone who tells me otherwise. I am 47 years old, 5'5" tall, and I'm roughly 150 pounds of DGAF.

Let me reiterate that I am not asking anyone to change the way NWN has been working, and I never will. All I've been asking is for someone to finally fix the way the game has not been working because NWN's combat UI is BROKEN. It WAS working until BioWare released Patch 1.68 18 years ago. BAB calculations for free attacks have been fucked up like a football bat ever since. To this very day, no one seems to know for sure how or why BioWare changed the way NWN was working back in 2006. Well, if no one seems to know for sure, who can say with 100% certainty that what's happening in the game currently is working "by design"? I can say with 100% certainty that no Dungeon Masters worth their salt, under normal circumstances, would ever force players to roll their free attacks at additional stacking -5 penalties unless whatever ability, class feature, feat or spell specified differently.

As far back as I can remember, none of the players wanted this change, none of the members on the BioBoards ever asked for this change, and BioWare never asked the NWN Community if it would be a good idea to make this change. They just went ahead and made it without so much as a word to anyone. There was no announcement, no "Heads up!", nothing. Regardless of the motive behind their lack of communication, BioWare should have said something to the players (you know, the customers who supported them by buying their game) out of professional courtesy. The players never got that courtesy. Instead, they got screwed with no Vaseline or a reach-around. How polite do you think that was?

If I am truly "correct" (meaning right) as Mr. @Shad000w said and this issue is incorrect (meaning wrong), then the only logical next step would be to put right what has been wrong for nearly two decades! I used to seek closure for this issue, but I'm way passed that. Fuck closure. I want justice and retribution for the players. Actually, that was a lie. The justice is for the players, the retribution is all mine. Anyone who has any objections toward this, feel free to MMO. No, it doesn't stand for massive multiplayer online. It stands for meet me outside. Please.

If warranted, add videos/screenshots to showcase the issue. AttackProgressionTest

000005 - BAB Test.zip

Shad000w commented 9 months ago

I am not part of the team solving these issues, but I am fairly educated in NWN and if I don't understand this, then there is a good chance that peoples who are solving these won't either.

The image cannot be opened (lead to discord) and image doesn't have highlighted parts of interest.

Maybe you should write a build and its BAB and what happens if there are attacks and free attacks and what should happen.

Or are you just suggesting that every free attack should have full BAB attack bonus?

Prince-Raymond commented 9 months ago

First, I am not suggesting that every free attack be done at full BAB. That would be ridiculously overpowered. Second, I was told I should try to shorten my bug reports. Now, it seems I did exactly what I was trying to avoid doing by obeying a community developer, and that was create confusion. Third and finally, what is there not to understand? I am clearly stating that every free attack that isn't granted by the Two-Weapon Fighting/Improved Two-Weapon Fighting feats should not have an additional -5 attack progression applied to them. None of the builds prior to Patch 1.68 had this additional attack progression. Why? Because none of those free attacks were originally designed to have one applied to them. It's that simple. What is the point of ever investing in certain class features, feats, and spells if nearly all the attacks they grant reduce your BAB to a penalty that renders them useless? That's not a rhetorical question, son.

I have outlined what attacks should be done at what BAB and re-uploaded the screenshot I took in the most recent edit of my report. I sincerely hope this clarifies things.

Let me also be clear that I am in no way, shape, or form asking for changes to be made on the PW/Server side of NWN:EE. This is exclusively for single-player campaign content only. I understand that PW Admins and Maintainers pay very close attention to how numbers translate to power, and I have no intention of ever touching what they do.

I just remembered a conversation I had with a former BioWare developer by the name of Mr. Brent Knowles. When I explained to him what was happening with this issue, he said, "Theoretically, internally, if someone at Beamdog had the 1.68 code and 1.67 code, they could do a diff on them just to see what may have changed. Guessing though that the source control was lost with time."

I have taken the liberty of linking the URLs to both the 1.67 and 1.68 Official Critical Rebuilds of the original NWN for download. Hopefully, this will be sufficient source control. If someone with the skills and the resources could possibly do the diff that Mr. Knowles had mentioned, I would greatly appreciate it. Please and thank you. https://neverwintervault.org/project/nwn1/other/patch/167-official-critical-rebuild-english https://neverwintervault.org/project/nwn1/other/patch/168-official-bioware-168-critical-rebuild

I would do the diff myself, but I am not a developer. I have neither the skills nor the resources to perform such a task. Even if I did, I do not have access to the source control.

Maybe, you could do a diff since you consider yourself fairly educated in NWN?

Or are you also suggesting that you have neither the skills nor the resources? I guess that explains why you are not part of the team solving these issues.

Finaldeath commented 9 months ago

@Prince-Raymond there was no need for that response to Shadooow, just edit to your original post like you did anyway.

A verbose response like you posted is completely unnecessary. Acting like this will get you banned. It puts off people posting reports in the first place.

Knock it off immediately.

Shad000w commented 9 months ago

First, I am not suggesting that every free attack be done at full BAB...

That was not meant as an attack but genuine question. I did not understand what was the problem from your original explanation and assumed that those "in control" might have the same issue. Also I was curious myself, maybe you don't know it, but while I am not part of the development team I do fix nwn bugs as a hobby too and so I wanted to know if there is anything to fix or not.

So yes, I checked rules and you are correct. And so I fixed it myself on my PW. Here is a code snippet you can with some modifications and additional work use to get this functionality on your PW as well:

int CNWSCreatureStats__GetAttackModifierVersus_Hook(CNWSCreatureStats * pThis, CNWSCreature * pTargetCreature) { int retVal = CNWSCreatureStats__GetAttackModifierVersus->CallOriginal<int>(pThis, pTargetCreature); if(pThis->m_pBaseCreature->m_pcCombatRound->m_nExtraAttacksTaken > 1 && pThis->m_pBaseCreature->m_pcCombatRound->GetAttack(pThis->m_pBaseCreature->m_pcCombatRound->m_nCurrentAttack)->m_nAttackType == 0) { retVal+= 5 * (pThis->m_pBaseCreature->m_pcCombatRound->m_nExtraAttacksTaken - 1); } return retVal; }

This makes every non-special (cleave, greatercleave, circle kick, ww) extra attack to be at full BAB.

Prince-Raymond commented 9 months ago

That was not meant as an attack but genuine question.

@Shad000w Sir, I owe you an apology. I didn't know how to take your comment, so I assumed the worst. @Finaldeath's response to my comment was a stark reminder why one should never assume. You only make an "ass" out of "u" and "me". Trying to learn how to cope/live with this issue has only served to put me even more on edge. That's no excuse, and I should never have taken my frustration out on a fellow player. Come March of next year, I will be 47 years old. I'm old enough to know better which means that I should act like it. I am truly sorry for the way I acted towards you, sir. I hope that someday you can forgive my transgression.

I appreciate the time and the effort you put into researching this issue independently. However, I am by no means anyone who can run a PW let alone maintain one. I'm just a player who also happens to be a huge, passionate fan of NWN. To this day, it is still my favorite single-player CRPG of all time despite its dated graphics. I'm one of those old-school gamers who prefers hard candy over eye candy if that makes any sense. A game doesn't have to be pretty for me to have fun, it just has to work. What first drew me into NWN was not only the story of the original "Wailing Death" campaign, but its gameplay mechanics. I consider myself to be fairly educated in the D&D 3rd Edition Rules. My education began when WotC debuted their first printing of D&D 3rd Edition at a bookstore in Orlando, FL on August 10, 2000. I think it was either Barnes & Noble or Waldenbooks. The name escapes my memory. The point I'm trying to make is other than Pool of Radiance: Ruins of Myth Drannor, NWN is the only adaptation of the D&D 3rd Edition rules that translates them as close as possible into digital form. That is nothing short of a miracle.

I think I may be misinterpreting what you said. When you say, "This makes every non-special (cleave, greatercleave, circle kick, ww) extra attack to be at full BAB.", what exactly do you mean? I'm only asking out of sincerity and for the purpose of clarification. My interpretation of full BAB means that an attack will be done at the highest BAB the character has at the current level. For example, let's use my build from the save game I uploaded in my report. He is able to attack 3 times per round unarmed at a BAB of +9/+6/+3. He enters combat with a group of enemies, and one of them provokes an Attack of Opportunity which he does at his "full BAB" of +9. That free attack scores a hit, and he proceeds to attack the same enemy at his normal unarmed attack progression. His first normal unarmed attack should be and is done at his full BAB of +9. He then attacks the same enemy again with his second normal unarmed attack at +6 BAB. That attack is good enough to score both the hit and damage to drop the enemy. This triggers his free Cleave attack. Now my question to you, sir is will this be done at its full attack value of +6 without the additional -5 penalty to the character's BAB, or will it be done at the character's full BAB of +9? Again, I am asking purely for clarification purposes.

Both fundamentally and mechanically, a character with the Cleave feat carries the momentum of his/her strike from the previous enemy he/she dropped to the next enemy within range. This is why both Cleave, and the killing blow should share the same BAB. This should also apply to Great Cleave. In my heart of hearts, even with Great Cleave nerfed down from being done at a character's full BAB to the same BAB of the killing blow, it will remain the superior feat considering there is no limit to the enemies it can drop in a combat round. If it keeps hitting and killing, it will knock down enemies like dominoes.

As for the screenshot issue, I have found that I can't view the image unless I have signed into my account. Once I am signed in, I can view it just fine. I think there may be some correlation between this issue and the 7-Zip issue @pF-arQon mentioned in a separate ticket. It seems Github has become not quite as user-friendly lately.

@Finaldeath My apologies for yet another verbose response. My comment was not intended to be. Thank you for bringing my error to my attention. It won't happen again, sir.

Shad000w commented 9 months ago

Now my question to you, sir is will this be done at its full attack value of +6 without the additional -5 penalty to the character's BAB, or will it be done at the character's full BAB of +9?

My code, that needs nwnx to work will only affect extra attacks not coming from special attacks like cleave, aoo, circle kick. Those will still work just as they do right now with no changes.

It will only make haste, flurry of blows, rapid shot, custom permanent/temporary extra attacks buffs and also divine power (which can be unwanted as it will make some builds quite overpowered - not the case of my PW as I changed that spell to replace actual BAB instead of giving extra attacks).

So an example: Monk +9/+6/+3 with haste and flurry of blows will be hitting for +7/+4/+1/+7 (haste)/+7 (flurry)

if aoo or cleave is triggered then it will be something like +7/+4/+1/+7/+7/+2 or +7 depending (after) which attack it was triggered (from). Not 100% correct, but pretty meaningless in my opinion (at least on high-magic lvl 40 based PW) and requires more than 5 minutes of coding and 5 minutes of testing to implement to match DnD rules. I simply presented a quick albeit dirty improvement of the issue. If I code cleave/circle kick/aoo to use current attack bonus I will let you know.

EDIT: Thinking about it. If it gave full BAB on all extra attack at some old patch. Divine Power is probably the reason why it was changed to what we have now. Divine power is giving extra attacks instead of replacing BAB, which is quite beneficial, more so to characters with less attacks per round. For example the classic cleric/bard/rdd build (28/2/10) with 15BAB preepic has 3 attacks per round base. With divine power he gets 2 extra attacks. If every extra attacks (excluding specials) has full BAB, then this builds attacks for full BAB/-5/-10/full BAB/full BAB up to 5 full BAB attacks if he has haste and uses flurry of blows as well. And there is not a way how to distinguish between a feat-coming or haste-source extra attack and a one from divine power. So I would say without also changing divine power the way I changed it on my PW, this is quite a balance breaker change...

Prince-Raymond commented 9 months ago

Roger that, Ghostrider.

What you said about Divine Power got me curious. I wonder if it has been changed since the posting of this comment. @pF-arQon stated, "I've found yet another variant of this, when using Rapid Shot on a Cleric along with Haste and Divine Power.

At Cleric6, casting DivPower to reach e.g. 14 AB (but with FTR BAB, and thus 2 APR now) should produce attacks at +14 and +14, which it does.

However, with Haste, that char should get THREE attacks, ALL of them +14, which it does not. instead, the attacks are +14/+14/+9.

And with Rapid Shot as well, that char should get FOUR attacks, ALL of them at +12. Unsurprisingly, it doesn't, but the error is even worse, and instead they end up with +12/+12/+7/+2. Obviously, that last attack is basically guaranteed to miss, making the whole combination rather pointless. :("

At any rate, I trust your judgement when it comes to that particular spell. My only gripe has been with the additional -5 progression that has been wrecking BAB's left and right for 17 years and change. My thanks and appreciation for the time and effort you have put into helping to resolve this issue. It means a lot.

Edit: Instead of giving extra attacks, shouldn't Divine Power just maximize a character's BAB at the current level and calculate the "new" BAB with a standard -5 progression (-3 for Monk unarmed), or is that not in the rules? I think both Divine Power and Tenser's Transformation function the same on paper. The only difference is one is an Arcane spell, and the other is a Divine spell. Please correct me if I am mistaken. Thank you again.

Shad000w commented 9 months ago

Edit: Instead of giving extra attacks, shouldn't Divine Power just maximize a character's BAB at the current level and calculate the "new" BAB with a standard -5 progression (-3 for Monk unarmed), or is that not in the rules? I think both Divine Power and Tenser's Transformation function the same on paper. The only difference is one is an Arcane spell, and the other is a Divine spell. Please correct me if I am mistaken. Thank you again.

Correct.

Prince-Raymond commented 9 months ago

Then somewhere between Patches 1.67 and 1.68, someone must have changed how Divine Power calculates a character's BAB by adding attacks to the spell's progression. This possibly, accidently caused a trickle-down effect creating the additional -5 attack progression that was added upon 1.68's release. Holy crap, literally!

Would it be possible for anyone to do a "diff" on the 1.67 and 1.68 code revisions? Please and thank you.

Edit: Do you think that changing Divine Power to be in line with its pen and paper namesake would be more balanced? By default, a character at high enough level would gain at least one extra attack simply because that character has a fighter BAB for the spell's duration. For example, a 6th level cleric should attack twice per round at +6/+1 BAB instead of attacking once per round at +4 BAB after casting Divine Power. A 20th level cleric should have 4 attacks per round at +20/+15/+10/+5 BAB after casting Divine Power. I don't see a reason why that particular spell should give more attacks than those, especially at full BAB.

IMHO, this would both help to keep BAB's from being too powerful and avoid wrongfully punishing players who will never use either Divine Power or Tenser's Transformation. What do you think, sir?

@Finaldeath Should I submit a separate ticket about Divine Power's mechanics, or no? Hope you all had a Merry Christmas.

Prince-Raymond commented 6 months ago

@Shad000w I found something I thought worth mentioning after visiting https://nwn.fandom.com/wiki/Divine_power. Under the Previous versions entry of the wiki page, theKrit wrote, "Prior to the 1.68 patch, the extra attacks were all at full base attack. In version 1.68 (only), they followed a -5 progression, but started at 5 less than the last normal attack."_. I wasn't sure if you already knew this or not.

Edit: @Shad000w I thought I should mention that I tested how Divine Power calculates a character's BAB with a pure 20th Level Cleric. I found that the spell granted the character both the BAB of a fighter and the intended attacks per round as it should. The problem was it added a second attack at the character's (new) full base attack bonus before factoring it at a -5 progression. The issue has been submitted as #618. Hopefully, someone can figure out the cause of that issue and this one, and they both will be fixed.