This breaks plenty of core aspects of my mod, which doesn't create its own monsters, and depends on the knowledge of what projectiles killed which monster by what source.
For example:
Code: Select all
Override Void WorldThingDamaged(WorldEvent e)
{
If (e.Inflictor && e.Thing.bISMONSTER && e.Thing.bKILLED && e.DamageSource)
If ((e.Inflictor.CheckClass("ChargedBurstTracer1") || e.Inflictor.CheckClass("ChargedBurstTracer2") || e.Inflictor.CheckClass("ChargedBurstTracer3")) && (e.Thing.CheckClass("Fatso") || e.Thing.CheckClass("Fatso", AAPTR_DEFAULT, 1)) && e.DamageSource.CountInv("MC_PowerShot"))
{
e.DamageSource.A_GiveInventory("PowerShotMasteryCounter");
e.DamageSource.A_GiveInventory("MasteryTicker");
}
If (e.Inflictor.CheckClass("SuperShotgunTracer"))
{
If (e.DamageSource.CountInv("MC_DoubleTrouble") && !(e.DamageSource.CountInv("PowerDoubleTroubleKillCounter1") && e.DamageSource.CountInv("PowerDoubleTroubleKillCounter2")))
{
If (e.DamageSource.CountInv("PowerDoubleTroubleKillCounter1") && !e.Thing.CountInv("PowerAlreadyHit"))
{
e.DamageSource.A_GiveInventory("DoubleTroubleKillCounter2");
}
Else
{
e.Thing.A_GiveInventory("AlreadyHit");
e.DamageSource.A_GiveInventory("DoubleTroubleKillCounter1");
}
}
}
If (e.Inflictor.CheckClass("HARTracer"))
{
If (e.DamageSource.CountInv("MC_DevastatorRounds") && e.Inflictor.CountInv("TacticalScopeReady") && !e.Thing.CountInv("PowerAlreadyHit"))
{
e.Thing.A_GiveInventory("AlreadyHit");
e.DamageSource.A_GiveInventory("DevastatorRoundsMasteryCounter");
e.DamageSource.A_GiveInventory("MasteryTicker");
Let Messenger = EOA_PlayerBase(e.DamageSource);
If (Messenger)
{
Messenger.PrintUpgradeProgress("Weapon Upgrade Challenge:", "Devastator Rounds", "DevastatorRoundsMasteryCounter");
}
}
}
If (e.Inflictor.CheckClass("RemoteDetonationExplosion") && e.DamageSource.CountInv("MC_ExternalPayload") && !(e.Inflictor.CountInv("ExternalPayloadKillCounter") >= 3))
{
e.Inflictor.A_GiveInventory("ExternalPayloadKillCounter");
If (e.Inflictor.CountInv("ExternalPayloadKillCounter") >= 3)
{
e.DamageSource.A_GiveInventory("ExternalPayloadMasteryCounter");
e.DamageSource.A_GiveInventory("MasteryTicker");
}
}
}
}