Fix inflictor detection breakage in WorldThingDamaged (did not account for SWWMPuff).

This commit is contained in:
Mari the Deer 2022-06-07 21:00:48 +02:00
commit 52d0937139
2 changed files with 12 additions and 10 deletions

View file

@ -167,11 +167,13 @@ extend Class SWWMHandler
if ( (e.DamageType == 'Falling') && !e.DamageSource )
src = SWWMWhoPushedMe.RecallInstigator(e.Thing);
if ( (!src || !src.player || (src == e.Thing)) ) return;
let inflictor = e.Inflictor;
if ( inflictor is 'SWWMPuff' ) inflictor = inflictor.master;
let s = SWWMStats.Find(src.player);
if ( s )
{
s.kills++;
s.AddWeaponKill(e.Inflictor,e.Thing,e.DamageType);
s.AddWeaponKill(inflictor,e.Thing,e.DamageType);
}
if ( src == players[consoleplayer].mo )
{
@ -183,8 +185,8 @@ extend Class SWWMHandler
else if ( (!lastcombat || (gametic > lastcombat+50)) && !SWWMHDoomHandler.IsCuteGirl(e.Thing) ) // [HDoom] don't shout at the girls
{
int lc = 0;
Inventory buff = e.Inflictor?e.Inflictor.FindInventory('ParriedBuff'):null;
if ( !Random[DemoLines](0,3) && buff && (e.Thing is 'Cyberdemon') && (e.Inflictor is 'Rocket') && (buff.tracer == e.Thing) ) lc = AddOneliner("cybully",1,15);
Inventory buff = inflictor?inflictor.FindInventory('ParriedBuff'):null;
if ( !Random[DemoLines](0,3) && buff && (e.Thing is 'Cyberdemon') && (inflictor is 'Rocket') && (buff.tracer == e.Thing) ) lc = AddOneliner("cybully",1,15);
else if ( !Random[DemoLines](0,(e.Thing.bBOSS||e.Thing.FindInventory("BossMarker"))?1:2) && (e.DamageType == 'CriticalConcussion') ) lc = AddOneliner("ballskill",1,15);
else if ( !Random[DemoLines](0,(e.Thing.bBOSS||e.Thing.FindInventory("BossMarker"))?2:5) && (e.DamageType == 'Buttslam') ) lc = AddOneliner("asskill",1,15);
if ( !lc )
@ -202,7 +204,7 @@ extend Class SWWMHandler
{
if ( (e.Thing.bBOSS||e.Thing.FindInventory("BossMarker")) && ((e.DamageType == 'Dash') || (e.DamageType == 'Buttslam')) )
SWWMUtility.AchievementProgressInc("bossdash",1,src.player);
if ( (e.Inflictor is 'DeepImpact') && (e.DamageType == 'Push') )
if ( (inflictor is 'DeepImpact') && (e.DamageType == 'Push') )
SWWMUtility.AchievementProgressInc("sneeze",1,src.player);
else if ( e.DamageType == 'Buttslam' )
SWWMUtility.AchievementProgressInc("butts",1,src.player);
@ -212,11 +214,11 @@ extend Class SWWMHandler
SWWMUtility.AchievementProgressInc("thicc",1,src.player);
else if ( (e.DamageType == 'Love') && !(e.Thing is 'WolfensteinSS') && (e.Thing.Species != 'WolfensteinSS') )
SWWMUtility.AchievementProgressInc("love",1,src.player);
Inventory buff = e.Inflictor?e.Inflictor.FindInventory('ParriedBuff'):null;
Inventory buff = inflictor?inflictor.FindInventory('ParriedBuff'):null;
if ( buff )
{
SWWMUtility.AchievementProgressInc("reflect",1,src.player);
if ( (e.Thing is 'Cyberdemon') && (e.Inflictor is 'Rocket') && (buff.tracer == e.Thing) )
if ( (e.Thing is 'Cyberdemon') && (inflictor is 'Rocket') && (buff.tracer == e.Thing) )
SWWMUtility.MarkAchievement("cybully",src.player);
}
Inventory tk;
@ -299,13 +301,13 @@ extend Class SWWMHandler
score += 600;
if ( scr ) scr.AppendXString(StringTable.Localize(((e.Thing is 'WolfensteinSS')||(e.Thing.Species=='WolfensteinSS'))?"$SWWM_LOVED_ALT":"$SWWM_LOVED"),0,Font.FindFontColor('BlushPink'));
}
else if ( e.Inflictor is 'FroggyChair' )
else if ( inflictor is 'FroggyChair' )
{
score += 1440;
if ( scr ) scr.AppendXString(StringTable.Localize("$SWWM_FROGGED"),0,Font.CR_GREEN);
}
Inventory pb;
if ( e.Inflictor && (pb = e.Inflictor.FindInventory('ParriedBuff')) )
if ( inflictor && (pb = inflictor.FindInventory('ParriedBuff')) )
{
score += 200;
if ( pb.special1&1 ) score += 200;