In order to fix some annoyances (not necessarily full blown bugs, but potentially) in Denial and Ghost which will occur until we come up with a more workable solution to what I've come to call the ?Death Order issue, I'd like to add:
// Fix for Denial before Ghost - this does icky things if we don't run ghost first.
// Once we "fix" ?death, things like this won't be an issue.
StatsInv = RPGStatsInv(Killed.FindInventoryType(class'RPGStatsInv'));
// Loop through - stop when you find ghost. If you've found denial by then, then
// you have Denial before Ghost and Ghost needs to run first.
if (StatsInv != None)
for (y = 0; y < StatsInv.Data.Abilities.length && !gotghost; y++)
if (StatsInv.Data.Abilities[y] == class'DruidNoWeaponDrop')
gotdenial = true;
if (StatsInv.Data.Abilities[y] == class'DruidGhost')
gotghost = true;
GhostLevel = StatsInv.Data.AbilityLevels[y];
if (gotghost && gotdenial)
// If DruidGhost returns true, we need to return true - and the bAP check in Ghost
// should result in DruidGhost's PD (when run by RPGRules) doing nothing.
if(class'DruidGhost'.static.PreventDeath(Killed, Killer, DamageType, HitLocation, GhostLevel, bAlreadyPrevented))
// End Denial before Ghost fix.
After the 'bAlreadyPrevented' check in DruidNoWeaponDrop's PreventDeath function.