diff --git a/EXILED/Exiled.API/Enums/DamageType.cs b/EXILED/Exiled.API/Enums/DamageType.cs index bb6f2524d..0cd0206b9 100644 --- a/EXILED/Exiled.API/Enums/DamageType.cs +++ b/EXILED/Exiled.API/Enums/DamageType.cs @@ -8,7 +8,6 @@ namespace Exiled.API.Enums { using Features; - using PlayerRoles; /// @@ -60,9 +59,9 @@ public enum DamageType Firearm, /// - /// Damage dealt by a . + /// Damage dealt by a when . /// - MicroHid, + MicroHidPrimaryFire, /// /// Damage dealt by a Tesla Gate. @@ -77,7 +76,7 @@ public enum DamageType /// /// Damage dealt by frag grenades. /// - Explosion, + ExplosionGrenade, /// /// Damage dealt by SCP-018. @@ -135,9 +134,9 @@ public enum DamageType Scp049, /// - /// Damage caused by . + /// Damage caused by with unspecified .. /// - Scp096, + Scp096Other, /// /// Damage caused by . @@ -145,7 +144,7 @@ public enum DamageType Scp173, /// - /// Damage caused by . + /// Damage caused by with . /// Scp939, @@ -288,5 +287,85 @@ public enum DamageType /// Damage caused by . /// Scp1509, + + /// + /// Damage caused by with . + /// + Scp939Claw, + + /// + /// Damage caused by with . + /// + Scp939LungeTarget, + + /// + /// Damage caused by with . + /// + Scp939LungeSecondary, + + /// + /// Damage caused by with . + /// + Scp096GateKill, + + /// + /// Damage caused by with . + /// + Scp096SlapLeft, + + /// + /// Damage caused by with . + /// + Scp096SlapRight, + + /// + /// Damage caused by with . + /// + Scp096Charge, + + /// + /// Damage caused by when it's stealing the skin of a . + /// + Scp3114SkinSteal, + + /// + /// Damage cause by the of ."/> + /// + ExplosionScp018, + + /// + /// Damage cause by the of combining with ."/> + /// + ExplosionCola, + + /// + /// Damage cause by the of ."/> + /// + ExplosionPinkCandy, + + /// + /// Damage cause by the ray of ."/> + /// + ExplosionDisruptor, + + /// + /// Damage cause by the of ."/> + /// + ExplosionJailbird, + + /// + /// Damage cause by the explosion of or any other not valid ExplosionType."/> + /// + ExplosionCustom, + + /// + /// Damage dealt by a when . + /// + MicroHidChargeFire, + + /// + /// Damage dealt by a when . + /// + MicroHidBrokenFire, } } diff --git a/EXILED/Exiled.API/Extensions/DamageTypeExtensions.cs b/EXILED/Exiled.API/Extensions/DamageTypeExtensions.cs index 6fde63477..874753af0 100644 --- a/EXILED/Exiled.API/Extensions/DamageTypeExtensions.cs +++ b/EXILED/Exiled.API/Extensions/DamageTypeExtensions.cs @@ -12,9 +12,12 @@ namespace Exiled.API.Extensions using Enums; using Features; + using InventorySystem.Items.MicroHID.Modules; using InventorySystem.Items.Scp1509; + using PlayerRoles; using PlayerRoles.PlayableScps.Scp1507; using PlayerRoles.PlayableScps.Scp3114; + using PlayerRoles.PlayableScps.Scp939; using PlayerStatsSystem; /// @@ -24,34 +27,37 @@ public static class DamageTypeExtensions { private static readonly Dictionary TranslationConversionInternal = new() { + { DeathTranslations.Recontained, DamageType.Recontainment }, + { DeathTranslations.Warhead, DamageType.Warhead }, + { DeathTranslations.Scp049, DamageType.Scp049 }, + { DeathTranslations.Unknown, DamageType.Unknown }, { DeathTranslations.Asphyxiated, DamageType.Asphyxiation }, { DeathTranslations.Bleeding, DamageType.Bleeding }, - { DeathTranslations.Crushed, DamageType.Crushed }, - { DeathTranslations.Decontamination, DamageType.Decontamination }, - { DeathTranslations.Explosion, DamageType.Explosion }, { DeathTranslations.Falldown, DamageType.Falldown }, + { DeathTranslations.PocketDecay, DamageType.PocketDimension }, + { DeathTranslations.Decontamination, DamageType.Decontamination }, { DeathTranslations.Poisoned, DamageType.Poison }, - { DeathTranslations.Recontained, DamageType.Recontainment }, - { DeathTranslations.Scp049, DamageType.Scp049 }, - { DeathTranslations.Scp096, DamageType.Scp096 }, - { DeathTranslations.Scp173, DamageType.Scp173 }, { DeathTranslations.Scp207, DamageType.Scp207 }, - { DeathTranslations.Scp939Lunge, DamageType.Scp939 }, - { DeathTranslations.Scp939Other, DamageType.Scp939 }, - { DeathTranslations.Scp3114Slap, DamageType.Scp3114 }, + { DeathTranslations.SeveredHands, DamageType.SeveredHands }, + { DeathTranslations.MicroHID, DamageType.MicroHidPrimaryFire }, { DeathTranslations.Tesla, DamageType.Tesla }, - { DeathTranslations.Unknown, DamageType.Unknown }, - { DeathTranslations.Warhead, DamageType.Warhead }, + { DeathTranslations.Explosion, DamageType.ExplosionCustom }, + { DeathTranslations.Scp096, DamageType.Scp096Other }, + { DeathTranslations.Scp173, DamageType.Scp173 }, + { DeathTranslations.Scp939Lunge, DamageType.Scp939LungeTarget }, { DeathTranslations.Zombie, DamageType.Scp0492 }, { DeathTranslations.BulletWounds, DamageType.Firearm }, - { DeathTranslations.PocketDecay, DamageType.PocketDimension }, - { DeathTranslations.SeveredHands, DamageType.SeveredHands }, - { DeathTranslations.FriendlyFireDetector, DamageType.FriendlyFireDetector }, + { DeathTranslations.Crushed, DamageType.Crushed }, { DeathTranslations.UsedAs106Bait, DamageType.FemurBreaker }, - { DeathTranslations.MicroHID, DamageType.MicroHid }, + { DeathTranslations.FriendlyFireDetector, DamageType.FriendlyFireDetector }, { DeathTranslations.Hypothermia, DamageType.Hypothermia }, + { DeathTranslations.CardiacArrest, DamageType.CardiacArrest }, + { DeathTranslations.Scp939Other, DamageType.Scp939Claw }, + { DeathTranslations.Scp3114Slap, DamageType.Scp3114 }, { DeathTranslations.MarshmallowMan, DamageType.Marshmallow }, { DeathTranslations.Scp1344, DamageType.SeveredEyes }, + { DeathTranslations.Scp1507Peck, DamageType.Scp1507 }, + { DeathTranslations.Scp127Bullets, DamageType.Scp127 }, { DeathTranslations.Scp1509, DamageType.Scp1509 }, }; @@ -69,7 +75,7 @@ public static class DamageTypeExtensions { ItemType.GunCOM18, DamageType.Com18 }, { ItemType.GunFSP9, DamageType.Fsp9 }, { ItemType.GunE11SR, DamageType.E11Sr }, - { ItemType.MicroHID, DamageType.MicroHid }, + { ItemType.MicroHID, DamageType.MicroHidPrimaryFire }, { ItemType.ParticleDisruptor, DamageType.ParticleDisruptor }, { ItemType.Jailbird, DamageType.Jailbird }, { ItemType.GunFRMG0, DamageType.Frmg0 }, @@ -101,7 +107,7 @@ public static class DamageTypeExtensions public static bool IsWeapon(this DamageType type, bool checkNonFirearm = true) => type switch { DamageType.Crossvec or DamageType.Logicer or DamageType.Revolver or DamageType.Shotgun or DamageType.AK or DamageType.Com15 or DamageType.Com18 or DamageType.E11Sr or DamageType.Fsp9 or DamageType.ParticleDisruptor or DamageType.Com45 or DamageType.Frmg0 or DamageType.A7 => true, - DamageType.MicroHid or DamageType.Jailbird when checkNonFirearm => true, + DamageType.MicroHidPrimaryFire or DamageType.MicroHidChargeFire or DamageType.MicroHidBrokenFire or DamageType.Jailbird when checkNonFirearm => true, _ => false, }; @@ -113,11 +119,46 @@ public static class DamageTypeExtensions /// Returns whether the is caused by SCP. public static bool IsScp(this DamageType type, bool checkItems = true) => type switch { - DamageType.Scp or DamageType.Scp049 or DamageType.Scp096 or DamageType.Scp106 or DamageType.Scp173 or DamageType.Scp939 or DamageType.Scp0492 or DamageType.Scp3114 => true, + DamageType.Scp or DamageType.Scp049 or DamageType.Scp096SlapLeft or DamageType.Scp096SlapRight or DamageType.Scp096Charge or DamageType.Scp096GateKill or DamageType.Scp096Other or DamageType.Scp106 or DamageType.Scp173 or DamageType.Scp939 or DamageType.Scp939Claw or DamageType.Scp939LungeTarget or DamageType.Scp939LungeSecondary or DamageType.Scp0492 or DamageType.Scp3114 or DamageType.Scp3114SkinSteal => true, DamageType.Scp018 or DamageType.Scp207 when checkItems => true, _ => false, }; + /// + /// Check if a damage type is caused by >. + /// + /// The damage type to be checked. + /// Returns whether the is caused by SCP. + public static bool IsScp096(this DamageType type) => type is DamageType.Scp096SlapLeft or DamageType.Scp096SlapRight or DamageType.Scp096Charge or DamageType.Scp096GateKill or DamageType.Scp096Other; + + /// + /// Check if a damage type is caused by >. + /// + /// The damage type to be checked. + /// Returns whether the is caused by SCP. + public static bool IsScp939(this DamageType type) => type is DamageType.Scp939 or DamageType.Scp939Claw or DamageType.Scp939LungeTarget or DamageType.Scp939LungeSecondary; + + /// + /// Check if a damage type is caused by >. + /// + /// The damage type to be checked. + /// Returns whether the is caused by SCP. + public static bool IsScp049(this DamageType type) => type is DamageType.Scp049 or DamageType.CardiacArrest; + + /// + /// Check if a damage type is caused by >. + /// + /// The damage type to be checked. + /// Returns whether the is caused by SCP. + public static bool IsScp3114(this DamageType type) => type is DamageType.Scp3114 or DamageType.Scp3114SkinSteal or DamageType.Strangled; + + /// + /// Check if a damage type is caused by >. + /// + /// The damage type to be checked. + /// Returns whether the is caused by SCP. + public static bool IsMicroHid(this DamageType type) => type is DamageType.MicroHidPrimaryFire or DamageType.MicroHidChargeFire or DamageType.MicroHidBrokenFire; + /// /// Check if a damage type is caused by a status effect. /// @@ -125,7 +166,7 @@ public static class DamageTypeExtensions /// Returns whether the is caused by status effect. public static bool IsStatusEffect(this DamageType type) => type switch { - DamageType.Asphyxiation or DamageType.Poison or DamageType.Bleeding or DamageType.Scp207 or DamageType.Hypothermia or DamageType.Strangled => true, + DamageType.Asphyxiation or DamageType.Poison or DamageType.Bleeding or DamageType.Scp207 or DamageType.Hypothermia or DamageType.Strangled or DamageType.SeveredHands or DamageType.SeveredEyes or DamageType.PocketDimension => true, _ => false, }; @@ -138,20 +179,44 @@ public static DamageType GetDamageType(DamageHandlerBase damageHandlerBase) { switch (damageHandlerBase) { + case Features.DamageHandlers.GenericDamageHandler genericDamageHandler: + return GetDamageType(genericDamageHandler.Base); case CustomReasonDamageHandler: return DamageType.Custom; case WarheadDamageHandler: return DamageType.Warhead; - case ExplosionDamageHandler: - return DamageType.Explosion; + case ExplosionDamageHandler explosionDamageHandler: + return explosionDamageHandler.ExplosionType switch + { + ExplosionType.Grenade => DamageType.ExplosionGrenade, + ExplosionType.SCP018 => DamageType.ExplosionScp018, + ExplosionType.PinkCandy => DamageType.ExplosionPinkCandy, + ExplosionType.Cola => DamageType.ExplosionCola, + ExplosionType.Disruptor => DamageType.ExplosionDisruptor, + ExplosionType.Jailbird => DamageType.ExplosionJailbird, + _ => DamageType.ExplosionCustom, + }; case Scp018DamageHandler: return DamageType.Scp018; case RecontainmentDamageHandler: return DamageType.Recontainment; - case Scp096DamageHandler: - return DamageType.Scp096; - case MicroHidDamageHandler: - return DamageType.MicroHid; + case Scp096DamageHandler scp096DamageHandler: + return scp096DamageHandler._attackType switch + { + Scp096DamageHandler.AttackType.GateKill => DamageType.Scp096GateKill, + Scp096DamageHandler.AttackType.SlapLeft => DamageType.Scp096SlapLeft, + Scp096DamageHandler.AttackType.SlapRight => DamageType.Scp096SlapRight, + Scp096DamageHandler.AttackType.Charge => DamageType.Scp096Charge, + _ => DamageType.Scp096Other, + }; + case MicroHidDamageHandler microHidDamageHandler: + return microHidDamageHandler.FiringMode switch + { + MicroHidFiringMode.PrimaryFire => DamageType.MicroHidPrimaryFire, + MicroHidFiringMode.ChargeFire => DamageType.MicroHidChargeFire, + MicroHidFiringMode.BrokenFire => DamageType.MicroHidBrokenFire, + _ => DamageType.Unknown, + }; case DisruptorDamageHandler: return DamageType.ParticleDisruptor; case Scp1507DamageHandler: @@ -172,26 +237,45 @@ public static DamageType GetDamageType(DamageHandlerBase damageHandlerBase) Scp049DamageHandler.AttackType.Scp0492 => DamageType.Scp0492, _ => DamageType.Unknown, }; + case Scp939DamageHandler scp939DamageHandler: + return scp939DamageHandler.Scp939DamageType switch + { + Scp939DamageType.Claw => DamageType.Scp939Claw, + Scp939DamageType.LungeTarget => DamageType.Scp939LungeTarget, + Scp939DamageType.LungeSecondary => DamageType.Scp939LungeSecondary, + _ => DamageType.Scp939, + }; case Scp3114DamageHandler scp3114DamageHandler: return scp3114DamageHandler.Subtype switch { Scp3114DamageHandler.HandlerType.Strangulation => DamageType.Strangled, - Scp3114DamageHandler.HandlerType.SkinSteal => DamageType.Scp3114, + Scp3114DamageHandler.HandlerType.SkinSteal => DamageType.Scp3114SkinSteal, Scp3114DamageHandler.HandlerType.Slap => DamageType.Scp3114, _ => DamageType.Unknown, }; case FirearmDamageHandler firearmDamageHandler: - return ItemConversion.ContainsKey(firearmDamageHandler.WeaponType) ? ItemConversion[firearmDamageHandler.WeaponType] : DamageType.Firearm; + { + if (ItemConversion.ContainsKey(firearmDamageHandler.WeaponType)) + return ItemConversion[firearmDamageHandler.WeaponType]; + + if (damageHandlerBase.GetType().Assembly.FullName.StartsWith("Assembly-CSharp")) + Log.Warn($"{nameof(DamageTypeExtensions)}.{nameof(damageHandlerBase)}: No matching {nameof(DamageType)} for {nameof(ScpDamageHandler)} with ItemType {firearmDamageHandler.WeaponType}, type will be reported as {DamageType.Firearm}. Report this to EXILED Devs."); + + return DamageType.Firearm; + } case ScpDamageHandler scpDamageHandler: { - DeathTranslation translation = DeathTranslations.TranslationsById[scpDamageHandler._translationId]; - if (translation.Id == DeathTranslations.PocketDecay.Id) + if (scpDamageHandler._translationId == DeathTranslations.PocketDecay.Id) return DamageType.Scp106; - return TranslationIdConversion.ContainsKey(translation.Id) - ? TranslationIdConversion[translation.Id] - : DamageType.Scp; + if (TranslationIdConversion.ContainsKey(scpDamageHandler._translationId)) + return TranslationIdConversion[scpDamageHandler._translationId]; + + if (damageHandlerBase.GetType().Assembly.FullName.StartsWith("Assembly-CSharp")) + Log.Warn($"{nameof(DamageTypeExtensions)}.{nameof(damageHandlerBase)}: No matching {nameof(DamageType)} for {nameof(ScpDamageHandler)} with ID {scpDamageHandler._translationId}, type will be reported as {DamageType.Scp}. Report this to EXILED Devs."); + + return DamageType.Scp; } case UniversalDamageHandler universal: @@ -201,7 +285,9 @@ public static DamageType GetDamageType(DamageHandlerBase damageHandlerBase) if (TranslationIdConversion.ContainsKey(translation.Id)) return TranslationIdConversion[translation.Id]; - Log.Warn($"{nameof(DamageTypeExtensions)}.{nameof(damageHandlerBase)}: No matching {nameof(DamageType)} for {nameof(UniversalDamageHandler)} with ID {translation.Id}, type will be reported as {DamageType.Unknown}. Report this to EXILED Devs."); + if (damageHandlerBase.GetType().Assembly.FullName.StartsWith("Assembly-CSharp")) + Log.Warn($"{nameof(DamageTypeExtensions)}.{nameof(damageHandlerBase)}: No matching {nameof(DamageType)} for {nameof(UniversalDamageHandler)} with ID {translation.Id}, type will be reported as {DamageType.Unknown}. Report this to EXILED Devs."); + return DamageType.Unknown; } @@ -209,11 +295,19 @@ public static DamageType GetDamageType(DamageHandlerBase damageHandlerBase) { if (Player.TryGet(attackerDamageHandler.Attacker, out Player attacker) && attacker.CurrentItem?.Type == ItemType.MarshmallowItem) return DamageType.Marshmallow; + + if (damageHandlerBase.GetType().Assembly.FullName.StartsWith("Assembly-CSharp")) + Log.Warn($"{nameof(DamageTypeExtensions)}.{nameof(damageHandlerBase)}: No matching {nameof(DamageType)} for {nameof(AttackerDamageHandler)} with Type {attackerDamageHandler.GetType()}, type will be reported as {DamageType.Unknown}. Report this to EXILED Devs."); return DamageType.Unknown; } - } - return DamageType.Unknown; + default: + { + if (damageHandlerBase.GetType().Assembly.FullName.StartsWith("Assembly-CSharp")) + Log.Warn($"{nameof(DamageTypeExtensions)}.{nameof(damageHandlerBase)}: No matching {nameof(DamageType)} with Type {damageHandlerBase.GetType()}, type will be reported as {DamageType.Unknown}. Report this to EXILED Devs."); + return DamageType.Unknown; + } + } } } } diff --git a/EXILED/Exiled.API/Features/DamageHandlers/DamageHandlerBase.cs b/EXILED/Exiled.API/Features/DamageHandlers/DamageHandlerBase.cs index 6a9b8f456..c1e062074 100644 --- a/EXILED/Exiled.API/Features/DamageHandlers/DamageHandlerBase.cs +++ b/EXILED/Exiled.API/Features/DamageHandlers/DamageHandlerBase.cs @@ -94,7 +94,7 @@ public virtual DamageType Type if (field != DamageType.Unknown) return field; - field = GetDamageType(); + field = DamageTypeExtensions.GetDamageType(Base); return field; } @@ -185,101 +185,6 @@ public bool BaseIs(out T param) return true; } - /// - /// Gets the assosiated with . - /// - /// from which should be get. If null, will be used. - /// Assosiated . - protected DamageType GetDamageType(BaseHandler damageHandler = null) - { - damageHandler ??= Base; - - switch (damageHandler) - { - case GenericDamageHandler genericDamageHandler: - return GetDamageType(genericDamageHandler.Base); - case CustomReasonDamageHandler: - return DamageType.Custom; - case WarheadDamageHandler: - return DamageType.Warhead; - case ExplosionDamageHandler: - return DamageType.Explosion; - case Scp018DamageHandler: - return DamageType.Scp018; - case RecontainmentDamageHandler: - return DamageType.Recontainment; - case MicroHidDamageHandler: - return DamageType.MicroHid; - case DisruptorDamageHandler: - return DamageType.ParticleDisruptor; - case Scp939DamageHandler: - return DamageType.Scp939; - case JailbirdDamageHandler: - return DamageType.Jailbird; - case Scp1507DamageHandler: - return DamageType.Scp1507; - case Scp956DamageHandler: - return DamageType.Scp956; - case SnowballDamageHandler: - return DamageType.SnowBall; - case GrayCandyDamageHandler: - return DamageType.GrayCandy; - case Scp1509DamageHandler: - return DamageType.Scp1509; - case Scp3114DamageHandler scp3114DamageHandler: - return scp3114DamageHandler.Subtype switch - { - Scp3114DamageHandler.HandlerType.Strangulation => DamageType.Strangled, - Scp3114DamageHandler.HandlerType.SkinSteal => DamageType.Scp3114, - Scp3114DamageHandler.HandlerType.Slap => DamageType.Scp3114, - _ => DamageType.Unknown, - }; - case Scp049DamageHandler scp049DamageHandler: - return scp049DamageHandler.DamageSubType switch - { - Scp049DamageHandler.AttackType.CardiacArrest => DamageType.CardiacArrest, - Scp049DamageHandler.AttackType.Instakill => DamageType.Scp049, - Scp049DamageHandler.AttackType.Scp0492 => DamageType.Scp0492, - _ => DamageType.Unknown, - }; - case UniversalDamageHandler universal: - DeathTranslation translation = DeathTranslations.TranslationsById[universal.TranslationId]; - - if (DamageTypeExtensions.TranslationIdConversion.ContainsKey(translation.Id)) - return DamageTypeExtensions.TranslationIdConversion[translation.Id]; - - Log.Warn($"{nameof(DamageHandler)}.{nameof(Type)}: No matching {nameof(DamageType)} for {nameof(UniversalDamageHandler)} with ID {translation.Id}, type will be reported as {DamageType.Unknown}. Report this to EXILED Devs."); - break; - case PlayerStatsSystem.FirearmDamageHandler firearmDamageHandler: - return Item.Get(firearmDamageHandler.Firearm).FirearmType switch - { - FirearmType.A7 => DamageType.A7, - FirearmType.Com15 => DamageType.Com15, - FirearmType.Com18 => DamageType.Com18, - FirearmType.Crossvec => DamageType.Crossvec, - FirearmType.Logicer => DamageType.Logicer, - FirearmType.Revolver => DamageType.Revolver, - FirearmType.Scp127 => DamageType.Scp127, - FirearmType.Shotgun => DamageType.Shotgun, - FirearmType.AK => DamageType.AK, - FirearmType.ParticleDisruptor => DamageType.ParticleDisruptor, - FirearmType.E11SR => DamageType.E11Sr, - FirearmType.FSP9 => DamageType.Fsp9, - FirearmType.FRMG0 => DamageType.Frmg0, - _ => DamageType.Firearm - }; - - case PlayerStatsSystem.AttackerDamageHandler attackerDamageHandler: - { - if (Player.TryGet(attackerDamageHandler.Attacker, out Player attacker) && attacker.CurrentItem?.Type == ItemType.MarshmallowItem) - return DamageType.Marshmallow; - return DamageType.Unknown; - } - } - - return DamageType.Unknown; - } - /// /// A wrapper to easily manipulate the behavior of . /// diff --git a/EXILED/Exiled.API/Features/DamageHandlers/FirearmDamageHandler.cs b/EXILED/Exiled.API/Features/DamageHandlers/FirearmDamageHandler.cs index adcd074a3..ec8b66b4b 100644 --- a/EXILED/Exiled.API/Features/DamageHandlers/FirearmDamageHandler.cs +++ b/EXILED/Exiled.API/Features/DamageHandlers/FirearmDamageHandler.cs @@ -35,14 +35,6 @@ public FirearmDamageHandler(Item item, Player target, BaseHandler baseHandler) Item = item; } - /// - public override DamageType Type => Item switch - { - Firearm _ when DamageTypeExtensions.ItemConversion.ContainsKey(Item.Type) => DamageTypeExtensions.ItemConversion[Item.Type], - MicroHid _ => DamageType.MicroHid, - _ => DamageType.Firearm, - }; - /// /// Gets or sets the used by the damage handler. /// diff --git a/EXILED/Exiled.API/Features/DamageHandlers/GenericDamageHandler.cs b/EXILED/Exiled.API/Features/DamageHandlers/GenericDamageHandler.cs index d55324798..2e202ed4d 100644 --- a/EXILED/Exiled.API/Features/DamageHandlers/GenericDamageHandler.cs +++ b/EXILED/Exiled.API/Features/DamageHandlers/GenericDamageHandler.cs @@ -122,12 +122,14 @@ public GenericDamageHandler(Player player, Player attacker, float damage, Damage case DamageType.GrayCandy: Base = new GrayCandyDamageHandler(Attacker.Hub, damage); break; - case DamageType.MicroHid: + case DamageType.MicroHidPrimaryFire: + case DamageType.MicroHidChargeFire: + case DamageType.MicroHidBrokenFire: InventorySystem.Items.MicroHID.MicroHIDItem microHidOwner = new(); microHidOwner.Owner = attacker.ReferenceHub; Base = new MicroHidDamageHandler(damage, microHidOwner); break; - case DamageType.Explosion: + case DamageType.ExplosionGrenade: Base = new ExplosionDamageHandler(attacker.Footprint, UnityEngine.Vector3.zero, damage, 0, ExplosionType.Grenade); break; case DamageType.Firearm: @@ -173,7 +175,7 @@ public GenericDamageHandler(Player player, Player attacker, float damage, Damage case DamageType.ParticleDisruptor: Base = new DisruptorDamageHandler(new (Item.Create(ItemType.ParticleDisruptor, attacker).Base as InventorySystem.Items.Firearms.Firearm, InventorySystem.Items.Firearms.Modules.DisruptorActionModule.FiringState.FiringSingle), Vector3.up, damage); break; - case DamageType.Scp096: + case DamageType.Scp096Other: Scp096Role curr096 = attacker.ReferenceHub.roleManager.CurrentRole as Scp096Role ?? new Scp096Role(); if (curr096 != null) diff --git a/EXILED/Exiled.API/Features/DamageHandlers/ScpDamageHandler.cs b/EXILED/Exiled.API/Features/DamageHandlers/ScpDamageHandler.cs index 6d44b06d0..08a7cec8d 100644 --- a/EXILED/Exiled.API/Features/DamageHandlers/ScpDamageHandler.cs +++ b/EXILED/Exiled.API/Features/DamageHandlers/ScpDamageHandler.cs @@ -30,34 +30,5 @@ public ScpDamageHandler(Player target, BaseHandler baseHandler) : base(target, baseHandler) { } - - /// - public override DamageType Type - { - get - { - switch (Base) - { - case Scp096DamageHandler: - return DamageType.Scp096; - case Scp049DamageHandler scp049DamageHandler: - return scp049DamageHandler.DamageSubType switch - { - Scp049DamageHandler.AttackType.Scp0492 => DamageType.Scp0492, - _ => DamageType.Scp049, - }; - case BaseScpHandler scp: - { - DeathTranslation translation = DeathTranslations.TranslationsById[scp._translationId]; - if (translation.Id == DeathTranslations.PocketDecay.Id) - return DamageType.Scp106; - return DamageTypeExtensions.TranslationIdConversion.ContainsKey(translation.Id) ? DamageTypeExtensions.TranslationIdConversion[translation.Id] : DamageType.Scp; - } - - default: - return base.Type; - } - } - } } } \ No newline at end of file