Skip to content
This repository was archived by the owner on Jul 8, 2025. It is now read-only.
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions EXILED/Exiled.API/Enums/DamageType.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,7 @@ namespace Exiled.API.Enums
/// Identifiers for types of damage.
/// </summary>
/// <seealso cref="Player.Hurt(float, DamageType, string)"/>
/// <seealso cref="Player.Hurt(Player, float, DamageType, Features.DamageHandlers.DamageHandlerBase.CassieAnnouncement)"/>
/// <seealso cref="Player.Hurt(Player, float, DamageType, Features.DamageHandlers.DamageHandlerBase.CassieAnnouncement, string)"/>
/// <seealso cref="Player.Hurt(Player, float, DamageType, Features.DamageHandlers.DamageHandlerBase.CassieAnnouncement, string, bool)"/>
/// <seealso cref="Player.Kill(DamageType, string)"/>
public enum DamageType
{
Expand Down Expand Up @@ -275,4 +274,4 @@ public enum DamageType
/// </summary>
Scp127,
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ namespace Exiled.API.Features.DamageHandlers
using Footprinting;
using Items;

using PlayerRoles;
using PlayerRoles.PlayableScps.Scp096;
using PlayerRoles.PlayableScps.Scp939;

Expand All @@ -29,6 +30,7 @@ public class GenericDamageHandler : CustomReasonDamageHandler
private Player player;
private DamageType damageType;
private DamageHandlerBase.CassieAnnouncement customCassieAnnouncement;
private bool overrideCassieForAllRole;

/// <summary>
/// Initializes a new instance of the <see cref="GenericDamageHandler"/> class.
Expand All @@ -40,11 +42,13 @@ public class GenericDamageHandler : CustomReasonDamageHandler
/// <param name="damageType"> Damage type. </param>
/// <param name="cassieAnnouncement"> Custom cassie announcment. </param>
/// <param name="damageText"> Text to provide to player death screen. </param>
public GenericDamageHandler(Player player, Player attacker, float damage, DamageType damageType, DamageHandlerBase.CassieAnnouncement cassieAnnouncement, string damageText = null)
/// <param name="overrideCassieForAllRole">Whether to play Cassie for non-SCPs as well.</param>
public GenericDamageHandler(Player player, Player attacker, float damage, DamageType damageType, DamageHandlerBase.CassieAnnouncement cassieAnnouncement, string damageText = null, bool overrideCassieForAllRole = false)
: base(DamageTextDefault)
{
this.player = player;
this.damageType = damageType;
this.overrideCassieForAllRole = overrideCassieForAllRole;
cassieAnnouncement ??= DamageHandlerBase.CassieAnnouncement.Default;
customCassieAnnouncement = cassieAnnouncement;

Expand Down Expand Up @@ -237,7 +241,7 @@ public override HandlerOutput ApplyDamage(ReferenceHub ply)
HandlerOutput output = base.ApplyDamage(ply);
if (output is HandlerOutput.Death)
{
if (customCassieAnnouncement?.Announcement != null)
if (customCassieAnnouncement?.Announcement != null && (overrideCassieForAllRole || ply.IsSCP()))
{
Cassie.Message(customCassieAnnouncement.Announcement);
}
Expand Down
17 changes: 4 additions & 13 deletions EXILED/Exiled.API/Features/Player.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2139,19 +2139,10 @@ public int GetScpPreference(RoleTypeId roleType)
/// <param name="amount">The <see langword="float"/> amount of damage to deal.</param>
/// <param name="damageType">The <see cref="DamageType"/> of the damage dealt.</param>
/// <param name="cassieAnnouncement">The <see cref="CassieAnnouncement"/> cassie announcement to make if the damage kills the player.</param>
public void Hurt(Player attacker, float amount, DamageType damageType = DamageType.Unknown, CassieAnnouncement cassieAnnouncement = null) =>
Hurt(new GenericDamageHandler(this, attacker, amount, damageType, cassieAnnouncement));

/// <summary>
/// Hurts the player.
/// </summary>
/// <param name="attacker">The <see cref="Player"/> attacking player.</param>
/// <param name="amount">The <see langword="float"/> amount of damage to deal.</param>
/// <param name="damageType">The <see cref="DamageType"/> of the damage dealt.</param>
/// <param name="cassieAnnouncement">The <see cref="CassieAnnouncement"/> cassie announcement to make if the damage kills the player.</param>
/// <param name="deathText"> The <see langword="string"/> death text to appear on <see cref="Player"/> screen. </param>
public void Hurt(Player attacker, float amount, DamageType damageType = DamageType.Unknown, CassieAnnouncement cassieAnnouncement = null, string deathText = null) =>
Hurt(new GenericDamageHandler(this, attacker, amount, damageType, cassieAnnouncement, deathText));
/// <param name="deathText">The <see langword="string"/> death text to appear on <see cref="Player"/> screen.</param>
/// <param name="overrideCassieForAllRole">Whether to play Cassie for non-SCPs as well.</param>
public void Hurt(Player attacker, float amount, DamageType damageType = DamageType.Unknown, CassieAnnouncement cassieAnnouncement = null, string deathText = null, bool overrideCassieForAllRole = false) =>
Hurt(new GenericDamageHandler(this, attacker, amount, damageType, cassieAnnouncement, deathText, overrideCassieForAllRole));

/// <summary>
/// Hurts the player.
Expand Down
Loading