Skip to content

Commit 8f08a7c

Browse files
feat: kill enemies cheat (#447)
* Added cheats to kill all enemies or a specific target
1 parent 5a98859 commit 8f08a7c

File tree

1 file changed

+43
-2
lines changed

1 file changed

+43
-2
lines changed

Assets/BossRoom/Scripts/DebugCheats/DebugCheatsManager.cs

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,12 +62,12 @@ public void SpawnBoss()
6262

6363
public void KillTarget()
6464
{
65-
LogCheatNotImplemented("KillTarget");
65+
KillTargetServerRpc();
6666
}
6767

6868
public void KillAllEnemies()
6969
{
70-
LogCheatNotImplemented("KillAllEnemies");
70+
KillAllEnemiesServerRpc();
7171
}
7272

7373
public void ToggleGodMode()
@@ -121,6 +121,47 @@ void SpawnBossServerRpc(ServerRpcParams serverRpcParams = default)
121121
LogCheatUsedClientRPC(serverRpcParams.Receive.SenderClientId, "SpawnBoss");
122122
}
123123

124+
[ServerRpc(RequireOwnership = false)]
125+
void KillTargetServerRpc(ServerRpcParams serverRpcParams = default)
126+
{
127+
ulong clientId = serverRpcParams.Receive.SenderClientId;
128+
var playerServerCharacter = PlayerServerCharacter.GetPlayerServerCharacter(clientId);
129+
if (playerServerCharacter != null)
130+
{
131+
var targetId = playerServerCharacter.NetState.TargetId.Value;
132+
if (NetworkManager.Singleton.SpawnManager.SpawnedObjects.TryGetValue(targetId, out NetworkObject obj))
133+
{
134+
var damageable = obj.GetComponent<IDamageable>();
135+
if (damageable != null && damageable.IsDamageable())
136+
{
137+
damageable.ReceiveHP(playerServerCharacter, int.MinValue);
138+
LogCheatUsedClientRPC(serverRpcParams.Receive.SenderClientId, "KillTarget");
139+
}
140+
else
141+
{
142+
UnityEngine.Debug.Log($"Target {targetId} has no IDamageable component or cannot be damaged.");
143+
}
144+
}
145+
146+
}
147+
}
148+
149+
[ServerRpc(RequireOwnership = false)]
150+
void KillAllEnemiesServerRpc(ServerRpcParams serverRpcParams = default)
151+
{
152+
foreach (var serverCharacter in FindObjectsOfType<ServerCharacter>())
153+
{
154+
if (serverCharacter.IsNpc && serverCharacter.NetState.LifeState == LifeState.Alive)
155+
{
156+
if (serverCharacter.gameObject.TryGetComponent(out IDamageable damageable))
157+
{
158+
damageable.ReceiveHP(null, -serverCharacter.NetState.HitPoints);
159+
}
160+
}
161+
}
162+
LogCheatUsedClientRPC(serverRpcParams.Receive.SenderClientId, "KillAllEnemies");
163+
}
164+
124165
[ServerRpc(RequireOwnership = false)]
125166
void ToggleGodModeServerRpc(ServerRpcParams serverRpcParams = default)
126167
{

0 commit comments

Comments
 (0)