Browse Source

Fix statting on death crash (#8308)

pull/8285/merge
Eric Robinson 3 months ago committed by GitHub
parent
commit
15f2ac4272
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 8
      Source/control/control_panel.cpp
  2. 6
      Source/player.cpp
  3. 4
      docs/CHANGELOG.md

8
Source/control/control_panel.cpp

@ -680,6 +680,9 @@ void CheckChrBtns()
{ {
const Player &myPlayer = *MyPlayer; const Player &myPlayer = *MyPlayer;
if (myPlayer._pmode == PM_DEATH)
return;
if (CharPanelButtonActive || myPlayer._pStatPts == 0) if (CharPanelButtonActive || myPlayer._pStatPts == 0)
return; return;
@ -698,6 +701,11 @@ void CheckChrBtns()
void ReleaseChrBtns(bool addAllStatPoints) void ReleaseChrBtns(bool addAllStatPoints)
{ {
const Player &myPlayer = *MyPlayer;
if (myPlayer._pmode == PM_DEATH)
return;
CharPanelButtonActive = false; CharPanelButtonActive = false;
for (auto attribute : enum_values<CharacterAttribute>()) { for (auto attribute : enum_values<CharacterAttribute>()) {
auto buttonId = static_cast<size_t>(attribute); auto buttonId = static_cast<size_t>(attribute);

6
Source/player.cpp

@ -2108,7 +2108,7 @@ void LoadPlrGFX(Player &player, player_graphic graphic)
return; return;
const HeroClass cls = GetPlayerSpriteClass(player._pClass); const HeroClass cls = GetPlayerSpriteClass(player._pClass);
const PlayerWeaponGraphic animWeaponId = GetPlayerWeaponGraphic(graphic, static_cast<PlayerWeaponGraphic>(player._pgfxnum & 0xF)); PlayerWeaponGraphic animWeaponId = GetPlayerWeaponGraphic(graphic, static_cast<PlayerWeaponGraphic>(player._pgfxnum & 0xF));
const PlayerSpriteData &spriteData = GetPlayerSpriteDataForClass(cls); const PlayerSpriteData &spriteData = GetPlayerSpriteDataForClass(cls);
const char *path = spriteData.classPath.c_str(); const char *path = spriteData.classPath.c_str();
@ -2145,8 +2145,8 @@ void LoadPlrGFX(Player &player, player_graphic graphic)
szCel = "qm"; szCel = "qm";
break; break;
case player_graphic::Death: case player_graphic::Death:
if (animWeaponId != PlayerWeaponGraphic::Unarmed) // Only one Death animation exists, for unarmed characters
return; animWeaponId = PlayerWeaponGraphic::Unarmed;
szCel = "dt"; szCel = "dt";
break; break;
case player_graphic::Block: case player_graphic::Block:

4
docs/CHANGELOG.md

@ -14,6 +14,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Music doesn't unmute when focus is lost on level transition with Auto Pause On Focus Lost disabled - Music doesn't unmute when focus is lost on level transition with Auto Pause On Focus Lost disabled
- Image ghosting visible on border of map in higher resolutions - Image ghosting visible on border of map in higher resolutions
#### Stability / Performance / System
- Crashes related to player graphics rendering in death state
## DevilutionX 1.5.2 ## DevilutionX 1.5.2
### Bug Fixes ### Bug Fixes

Loading…
Cancel
Save