diasurgical / devilutionX

Diablo build for modern operating systems
Other
8.04k stars 792 forks source link

Bug fixes from unofficial Hellfire 1.02.A5 #1147

Open AJenbo opened 3 years ago

AJenbo commented 3 years ago
julealgon commented 3 years ago

Quick Attack (Melee): Did not actually increase your attack speed; now it has the same effect as Fast Attack

LMAO. What a terrible way to "fix" it 🤣

julealgon commented 3 years ago

Rejuvenation Potion: No longer looks identical to Full Rejuvenation while on the ground; is now a dim gold, as seemed intended Long War Bow: Gains what appears to be its intended inventory graphic (previously looked identical to Long Battle Bow)

Wait, are there separate CELs for those that are not used?

julealgon commented 3 years ago

Warlord of Blood: Loses Lightning Immunity, gains Lightning Resistance (now the same as his lackeys) Sir Gorash: Gains Fire Resistance, Lightning Resistance, and Magic Resistance Na-Krul: Retains Fire Immunity, but Lightning and Magic immunities lowered to resistances

These seem like completely arbitrary balance changes.

julealgon commented 3 years ago

of Peril: Now properly updates your Life Orb to show damage taken (previously only updated if you had Life Steal)

What? Can someone elaborate on this one a bit more?

julealgon commented 3 years ago

Monster Ranged Attacks: BEWARE! Most monsters previously couldn't hit you up close with arrows or spells; now they can

This is also news to me. What are we talking about here?

julealgon commented 3 years ago

Service Menus: Item lists shown when getting services from Cain, Griswold and Adria didn't show uniques in gold text

Interesting one. Simple, nice and consistent. I like it.

AJenbo commented 3 years ago

Rejuvenation Potion: No longer looks identical to Full Rejuvenation while on the ground; is now a dim gold, as seemed intended Long War Bow: Gains what appears to be its intended inventory graphic (previously looked identical to Long Battle Bow)

Wait, are there separate CELs for those that are not used?

i think they are simply recoloring uring trn, but i have no idea :D

AJenbo commented 3 years ago

Monster Ranged Attacks: BEWARE! Most monsters previously couldn't hit you up close with arrows or spells; now they can

This is also news to me. What are we talking about here?

i know hellfire change the missile spawn to be in front of monsters instead of on them, this was probably done to have the hawkdemon spawn goo balls next to itself, but this could be a consequence of it. it would also make missiles reach there targets ealer then in d1

NiteKat commented 3 years ago

Player Deadlock: Switching gear during combat could freeze your hero indefinitely

This is also in Vanilla 1.09, and learned recently you can actually break out of this state, at least with Warrior. Spamming shift left click can eventually break you out, but I forget some of the details... I think you might not be able to break out with certain weapons, and it's easier with some other? I suspect there's a small window of frames where you can rescue yourself from this state.

AJenbo commented 3 years ago

Player Deadlock: Switching gear during combat could freeze your hero indefinitely

This is also in Vanilla 1.09, and learned recently you can actually break out of this state, at least with Warrior. Spamming shift left click can eventually break you out, but I forget some of the details... I think you might not be able to break out with certain weapons, and it's easier with some other? I suspect there's a small window of frames where you can rescue yourself from this state.

Do you know exactly what time frame this has to happen in?

galaxyhaxz commented 3 years ago

Could you make it so if the player mode isn't stand then you can't remove gear?

julealgon commented 3 years ago

Could you make it so if the player mode isn't stand then you can't remove gear?

That would make the game a lot more clunky.

galaxyhaxz commented 3 years ago

Could also allow changing gear when walking, just not attacking or casting a spell.

qndel commented 3 years ago

or blocking :D

julealgon commented 3 years ago

Isn't that the case already though?

StephenCWills commented 3 years ago

of Peril: Now properly updates your Life Orb to show damage taken (previously only updated if you had Life Steal)

What? Can someone elaborate on this one a bit more?

This probably has to do with the drawhpflag variable. I did a bit of investigation on this when working on the Mana Shield fixes.

Before the Mana Shield fixes, the logic for of Peril didn't set drawhpflag. https://github.com/diasurgical/devilutionX/blob/4c0581ca5edb8ed884200c2b7b7cab1663d84ca0/Source/player.cpp#L2518

You can see here how the logic for Life Steal does set that flag just a few lines down. https://github.com/diasurgical/devilutionX/blob/4c0581ca5edb8ed884200c2b7b7cab1663d84ca0/Source/player.cpp#L2545

Assuming I'm right about this being the cause, the Mana Shield fix would have solved this by setting drawhpflag any time the player's health changes. https://github.com/diasurgical/devilutionX/blob/4faf09c2df103597071a0d24cf4d0226b8400ed9/Source/player.cpp#L2048

Also note that if you were playing DevilutionX in a window wider than 640 pixels, you never would have seen this bug. When I was investigating drawhpflag, I stumbled upon the following conditional statement that leads to setting drawhpflag to true in every frame if your screen width is greater than the panel width. https://github.com/diasurgical/devilutionX/blob/4c0581ca5edb8ed884200c2b7b7cab1663d84ca0/Source/scrollrt.cpp#L1559

julealgon commented 3 years ago

We need to get rid of all these draw flags and just draw everything on every frame IMHO.

AJenbo commented 3 years ago

It's a big hit to performance on small devices. RG300 runs at 27fps as is.

StephenCWills commented 3 years ago

I just tested a Scimitar of Peril in 640x480 window mode against builds before and after the Mana Shield fixes. I was able to reproduce the issue before the fixes, but not after. That corroborates the theory that drawhpflag is to blame.

AJenbo commented 3 years ago

Marked "of Peril: Now properly updates your Life Orb to show damage taken (previously only updated if you had Life Steal)" as fixed.

StephenCWills commented 3 years ago

Fire Arrow Traps: Insanely high damage significantly reduced; beware though, they can still kill you if you're weakened

1672