diff --git a/managed/SwiftlyS2.PluginTemplate/nupkgs/SwiftlyS2.CS2.PluginTemplate.1.0.1.nupkg b/managed/SwiftlyS2.PluginTemplate/nupkgs/SwiftlyS2.CS2.PluginTemplate.1.0.1.nupkg
new file mode 100644
index 000000000..f92fb06a2
Binary files /dev/null and b/managed/SwiftlyS2.PluginTemplate/nupkgs/SwiftlyS2.CS2.PluginTemplate.1.0.1.nupkg differ
diff --git a/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CBaseEntity.cs b/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CBaseEntity.cs
index 3afa100f2..750e48697 100644
--- a/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CBaseEntity.cs
+++ b/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CBaseEntity.cs
@@ -1,4 +1,5 @@
using SwiftlyS2.Shared.Natives;
+using SwiftlyS2.Shared.Players;
namespace SwiftlyS2.Shared.SchemaDefinitions;
@@ -17,6 +18,12 @@ public partial interface CBaseEntity
/// Gets the absolute rotation of the entity.
///
public QAngle? AbsRotation { get; }
+
+ ///
+ /// Gets the team of the entity.
+ ///
+ public Team Team { get; set; }
+
///
/// Teleports the entity to the specified position, orientation, and velocity.
///
@@ -25,7 +32,7 @@ public partial interface CBaseEntity
/// The target position to move the entity to. If null, the entity's position is not changed.
/// The target orientation to set for the entity. If null, the entity's orientation is not changed.
/// The velocity to apply to the entity after teleportation. If null, the entity's velocity is not changed.
- public void Teleport(Vector? position, QAngle? angle, Vector? velocity);
+ public void Teleport( Vector? position, QAngle? angle, Vector? velocity );
///
diff --git a/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CBaseEntityImpl.cs b/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CBaseEntityImpl.cs
index 0be83aebd..b05e38d8f 100644
--- a/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CBaseEntityImpl.cs
+++ b/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CBaseEntityImpl.cs
@@ -1,5 +1,6 @@
using SwiftlyS2.Core.Natives;
using SwiftlyS2.Shared.Natives;
+using SwiftlyS2.Shared.Players;
using SwiftlyS2.Shared.SchemaDefinitions;
namespace SwiftlyS2.Core.SchemaDefinitions;
@@ -15,6 +16,11 @@ public CEntitySubclassVDataBase VData {
public Vector? AbsOrigin => CBodyComponent?.SceneNode?.AbsOrigin;
public QAngle? AbsRotation => CBodyComponent?.SceneNode?.AbsRotation;
+ public Team Team {
+ get => (Team)TeamNum;
+ set => TeamNum = (byte)value;
+ }
+
public void Teleport( Vector? position, QAngle? angle, Vector? velocity )
{
unsafe
diff --git a/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CCSGameRules.cs b/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CCSGameRules.cs
index f5b0f7539..a155c9db7 100644
--- a/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CCSGameRules.cs
+++ b/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CCSGameRules.cs
@@ -1,4 +1,5 @@
-using SwiftlyS2.Shared.Natives;
+using SwiftlyS2.Shared.Misc;
+using SwiftlyS2.Shared.Natives;
using SwiftlyS2.Shared.SchemaDefinitions;
using SwiftlyS2.Shared.Schemas;
@@ -19,4 +20,6 @@ public partial interface CCSGameRules
/// The reason for ending the round
/// The delay before ending the round
public void TerminateRound( RoundEndReason reason, float delay );
+
+ public GamePhase GamePhaseEnum { get; set; }
}
\ No newline at end of file
diff --git a/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CCSGameRulesImpl.cs b/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CCSGameRulesImpl.cs
index 2d568ed54..06e813558 100644
--- a/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CCSGameRulesImpl.cs
+++ b/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CCSGameRulesImpl.cs
@@ -1,4 +1,5 @@
using SwiftlyS2.Core.Natives;
+using SwiftlyS2.Shared.Misc;
using SwiftlyS2.Shared.Natives;
using SwiftlyS2.Shared.SchemaDefinitions;
using SwiftlyS2.Shared.Schemas;
@@ -17,4 +18,9 @@ public void TerminateRound( RoundEndReason reason, float delay )
{
GameFunctions.TerminateRound(Address, (uint)reason, delay);
}
+
+ public GamePhase GamePhaseEnum {
+ get => (GamePhase)GamePhase;
+ set => GamePhase = (int)value;
+ }
}
\ No newline at end of file
diff --git a/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CCSObserverPawn.cs b/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CCSObserverPawn.cs
new file mode 100644
index 000000000..7c2839fbe
--- /dev/null
+++ b/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CCSObserverPawn.cs
@@ -0,0 +1,9 @@
+namespace SwiftlyS2.Shared.SchemaDefinitions;
+
+public partial interface CCSObserverPawn
+{
+ public new CCSObserver_ObserverServices? ObserverServices { get; }
+ public new CCSObserver_MovementServices? MovementServices { get; }
+ public new CCSObserver_CameraServices? CameraServices { get; }
+ public new CCSObserver_UseServices? UseServices { get; }
+}
\ No newline at end of file
diff --git a/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CCSObserverPawnImpl.cs b/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CCSObserverPawnImpl.cs
new file mode 100644
index 000000000..d9cdb2a1b
--- /dev/null
+++ b/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CCSObserverPawnImpl.cs
@@ -0,0 +1,11 @@
+using SwiftlyS2.Shared.SchemaDefinitions;
+
+namespace SwiftlyS2.Core.SchemaDefinitions;
+
+internal partial class CCSObserverPawnImpl : CCSObserverPawn
+{
+ public new CCSObserver_ObserverServices? ObserverServices => base.ObserverServices?.As();
+ public new CCSObserver_MovementServices? MovementServices => base.MovementServices?.As();
+ public new CCSObserver_CameraServices? CameraServices => base.CameraServices?.As();
+ public new CCSObserver_UseServices? UseServices => base.UseServices?.As();
+}
\ No newline at end of file
diff --git a/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CCSPlayerPawn.cs b/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CCSPlayerPawn.cs
new file mode 100644
index 000000000..f29cca508
--- /dev/null
+++ b/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CCSPlayerPawn.cs
@@ -0,0 +1,11 @@
+namespace SwiftlyS2.Shared.SchemaDefinitions;
+
+public partial interface CCSPlayerPawn
+{
+ public new CCSPlayer_WeaponServices? WeaponServices { get; }
+ public new CCSPlayer_ItemServices? ItemServices { get; }
+ public new CCSPlayer_UseServices? UseServices { get; }
+ public new CCSPlayer_WaterServices? WaterServices { get; }
+ public new CCSPlayer_MovementServices? MovementServices { get; }
+ public new CCSPlayer_CameraServices? CameraServices { get; }
+}
\ No newline at end of file
diff --git a/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CCSPlayerPawnImpl.cs b/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CCSPlayerPawnImpl.cs
new file mode 100644
index 000000000..3468d9c67
--- /dev/null
+++ b/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CCSPlayerPawnImpl.cs
@@ -0,0 +1,13 @@
+using SwiftlyS2.Shared.SchemaDefinitions;
+
+namespace SwiftlyS2.Core.SchemaDefinitions;
+
+internal partial class CCSPlayerPawnImpl : CCSPlayerPawn
+{
+ public new CCSPlayer_WeaponServices? WeaponServices => base.WeaponServices?.As();
+ public new CCSPlayer_ItemServices? ItemServices => base.ItemServices?.As();
+ public new CCSPlayer_UseServices? UseServices => base.UseServices?.As();
+ public new CCSPlayer_WaterServices? WaterServices => base.WaterServices?.As();
+ public new CCSPlayer_MovementServices? MovementServices => base.MovementServices?.As();
+ public new CCSPlayer_CameraServices? CameraServices => base.CameraServices?.As();
+}
\ No newline at end of file
diff --git a/managed/src/SwiftlyS2.Generated/Schemas/Interfaces/CCSPlayerPawn.cs b/managed/src/SwiftlyS2.Generated/Schemas/Interfaces/CCSPlayerPawn.cs
index 4b08e414e..4a6bb0007 100644
--- a/managed/src/SwiftlyS2.Generated/Schemas/Interfaces/CCSPlayerPawn.cs
+++ b/managed/src/SwiftlyS2.Generated/Schemas/Interfaces/CCSPlayerPawn.cs
@@ -12,7 +12,6 @@ public partial interface CCSPlayerPawn : CCSPlayerPawnBase, ISchemaClass.From(nint handle) => new CCSPlayerPawnImpl(handle);
static int ISchemaClass.Size => 7280;
-
public CCSPlayer_BulletServices? BulletServices { get; }
diff --git a/managed/src/SwiftlyS2.Shared/Misc/GamePhase.cs b/managed/src/SwiftlyS2.Shared/Misc/GamePhase.cs
new file mode 100644
index 000000000..20f699302
--- /dev/null
+++ b/managed/src/SwiftlyS2.Shared/Misc/GamePhase.cs
@@ -0,0 +1,12 @@
+namespace SwiftlyS2.Shared.Misc;
+
+public enum GamePhase : short
+{
+ GAMEPHASE_WARMUP_ROUND = 0,
+ GAMEPHASE_PLAYING_STANDARD = 1,
+ GAMEPHASE_PLAYING_FIRST_HALF = 2,
+ GAMEPHASE_PLAYING_SECOND_HALF = 3,
+ GAMEPHASE_HALFTIME = 4,
+ GAMEPHASE_MATCH_ENDED = 5,
+ GAMEPHASE_MAX = 6
+}
\ No newline at end of file