Healthbar tweaks for compatibility with mods that dynamically change monster tags.

This commit is contained in:
Mari the Deer 2024-01-31 10:13:38 +01:00
commit d93432f2ed
3 changed files with 22 additions and 3 deletions

View file

@ -335,6 +335,7 @@ Class SWWMQuickCombatTracker : Inventory
SmoothLinearValueInterpolator intpl;
PlayerInfo myplayer; // for multiplayer compatibility (this breaks inventory logic, but alas...)
String mytag;
bool PMHack;
void UpdateTag( SWWMHandler hnd )
{
@ -367,6 +368,14 @@ Class SWWMQuickCombatTracker : Inventory
Super.AttachToOwner(other);
}
override bool HandlePickup( Inventory item )
{
// force update tag if Grace of Lilith has glitched our owner
if ( item.GetClassName() == 'CCards_Token_Glitched' )
UpdateTag();
return Super.HandlePickup(item);
}
static SWWMQuickCombatTracker Update( SWWMHandler hnd, PlayerInfo p, Actor target, int damage = 0 )
{
// no-damage entities get no healthbars
@ -421,6 +430,15 @@ Class SWWMQuickCombatTracker : Inventory
t.fadein = 0;
t.lvheight = target.Height;
t.UpdateTag(hnd);
// hack for some Project Malice void monsters that regularly change tags
switch ( target.GetClassName() )
{
case 'PM_EntropicAvatar':
case 'PM_Broken':
case 'PM_VoidFloater':
t.PMHack = true;
break;
}
return t;
}
@ -434,6 +452,7 @@ Class SWWMQuickCombatTracker : Inventory
Destroy();
return;
}
if ( PMHack && !Owner.isFrozen() ) UpdateTag();
// cap lifespan if owner is dead
if ( Owner.Health <= 0 ) lifespan = min(lifespan,35);
else lvheight = Owner.Height;