Skip to content
This repository was archived by the owner on Jun 21, 2025. It is now read-only.

Conversation

@SrLicht
Copy link
Contributor

@SrLicht SrLicht commented Jun 27, 2023

With this extensions you can get damagetype from a DamageHandlerBase.

Examples

using PluginAPI.Core.Extensions;

[PluginEvent(ServerEventType.PlayerDeath)]
void OnPlayerDied(Player player, Player attacker, DamageHandlerBase damageHandler)
{
     DamageType type = damageHandler.GetDamageType();
			
     Log.Info("DamageType is " + type);
}
using PluginAPI.Core.Extensions;

[PluginEvent]
void OnPlayerDied(PlayerDeathEvent ev)
{
	DamageType type = ev.DamageHandler.GetDamageType();
			
	Log.Info("DamageType is " + type);
}

I even added some more specific ones for DamageType.Scp096 and DamageType.Scp939.

Scp939 and Scp096 specific DamageTypes

[PluginEvent(ServerEventType.PlayerDeath)]
void OnPlayerDied(Player player, Player attacker, DamageHandlerBase damageHandler)
{
    DamageType type = damageHandler.GetDamageType();

    if (type == DamageType.Scp096)
    {
        var typeScp096 = (damageHandler as Scp096DamageHandler).GetScp096DamageType();

        if (typeScp096 is DamageType.Scp096Charge)
        {
            // your code here
        }
    }

    if (type is DamageType.Scp939)
    {
        var typeScp939 = (damageHandler as Scp939DamageHandler).GetScp939DamageType();

        if (typeScp939 is DamageType.Scp939Claw)
        {
            // Your Code
        }
    }
}

Resolves #187

* The fact that I had to create an extension to get data from private filds is sad.

* Some DamageType are not available because I have no way to get them without modifying the events.

* DamageHandlerExtensions will probably be removed when Northwood implements its system.
* and enabling unsafe code
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants