diff --git a/EXILED/Exiled.API/Features/Roles/Role.cs b/EXILED/Exiled.API/Features/Roles/Role.cs
index ef6d8dceab..5e4869a728 100644
--- a/EXILED/Exiled.API/Features/Roles/Role.cs
+++ b/EXILED/Exiled.API/Features/Roles/Role.cs
@@ -27,6 +27,7 @@ namespace Exiled.API.Features.Roles
using Scp079GameRole = PlayerRoles.PlayableScps.Scp079.Scp079Role;
using Scp096GameRole = PlayerRoles.PlayableScps.Scp096.Scp096Role;
using Scp106GameRole = PlayerRoles.PlayableScps.Scp106.Scp106Role;
+ using Scp1507GameRole = PlayerRoles.PlayableScps.Scp1507.Scp1507Role;
using Scp173GameRole = PlayerRoles.PlayableScps.Scp173.Scp173Role;
using Scp3114GameRole = PlayerRoles.PlayableScps.Scp3114.Scp3114Role;
using Scp939GameRole = PlayerRoles.PlayableScps.Scp939.Scp939Role;
@@ -235,7 +236,8 @@ public virtual void Set(RoleTypeId newRole, SpawnReason reason, RoleSpawnFlags s
FilmmakerGameRole filmmakerRole => new FilmMakerRole(filmmakerRole),
NoneGameRole noneRole => new NoneRole(noneRole),
DestroyedGameRole destroyedRole => new DestroyedRole(destroyedRole),
- _ => null,
+ Scp1507GameRole scp1507 => new Scp1507Role(scp1507),
+ _ => throw new Exception($"Missing role found in Exiled.API.Features.Roles.Role::Create ({role?.RoleTypeId}). Please contact an Exiled developer."),
};
}
}
diff --git a/EXILED/Exiled.API/Features/Roles/Scp1507Role.cs b/EXILED/Exiled.API/Features/Roles/Scp1507Role.cs
new file mode 100644
index 0000000000..3bc5807086
--- /dev/null
+++ b/EXILED/Exiled.API/Features/Roles/Scp1507Role.cs
@@ -0,0 +1,67 @@
+// -----------------------------------------------------------------------
+//
+// Copyright (c) ExMod Team. All rights reserved.
+// Licensed under the CC BY-SA 3.0 license.
+//
+// -----------------------------------------------------------------------
+
+namespace Exiled.API.Features.Roles
+{
+ using System.Collections.Generic;
+
+ using Exiled.API.Enums;
+ using Exiled.API.Features.Pools;
+
+ using PlayerRoles;
+ using PlayerRoles.PlayableScps;
+ using PlayerRoles.PlayableScps.HumeShield;
+ using PlayerRoles.PlayableScps.Scp939;
+ using PlayerRoles.PlayableScps.Scp939.Mimicry;
+ using PlayerRoles.PlayableScps.Scp939.Ripples;
+ using PlayerRoles.Subroutines;
+
+ using RelativePositioning;
+
+ using UnityEngine;
+
+ using Scp1507GameRole = PlayerRoles.PlayableScps.Scp1507.Scp1507Role;
+
+ ///
+ /// Defines a role that represents SCP-1507.
+ ///
+ public class Scp1507Role : FpcRole, ISubroutinedScpRole, IHumeShieldRole, ISpawnableScp
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// the base .
+ internal Scp1507Role(Scp1507GameRole baseRole)
+ : base(baseRole)
+ {
+ Base = baseRole;
+ SubroutineModule = baseRole.SubroutineModule;
+ HumeShieldModule = baseRole.HumeShieldModule;
+ }
+
+ ///
+ public override RoleTypeId Type => Base._roleTypeId;
+
+ ///
+ public SubroutineManagerModule SubroutineModule { get; }
+
+ ///
+ public HumeShieldModuleBase HumeShieldModule { get; }
+
+ ///
+ /// Gets the instance.
+ ///
+ public new Scp1507GameRole Base { get; }
+
+ ///
+ /// Gets the Spawn Chance of SCP-939.
+ ///
+ /// The List of Roles already spawned.
+ /// The Spawn Chance.
+ public float GetSpawnChance(List alreadySpawned) => Base is ISpawnableScp spawnableScp ? spawnableScp.GetSpawnChance(alreadySpawned) : 0;
+ }
+}