Restore daemon destruction and loot

This commit is contained in:
Meta Vens 2026-07-12 05:32:03 +01:00
commit 22dae9adbe
13 changed files with 333 additions and 56 deletions

View file

@ -11281,8 +11281,7 @@ static void RequireUnityPublicRequestVocabulary(string root)
var checkedRoots = new[]
{
Path.Combine(root, "Assets", "Scripts", "Gameplay"),
Path.Combine(root, "Assets", "Scripts", "UI"),
Path.Combine(root, "Packages", "org.gamecult.aetheria.state", "Runtime")
Path.Combine(root, "Assets", "Scripts", "UI")
};
var commitPattern = new System.Text.RegularExpressions.Regex(
@ -16732,6 +16731,31 @@ static void RequireUnityDoesNotCallSharedSimulationTicks(string root)
string.Join(", ", missingArmorTransactionSymbols));
}
var daemonOperations = File.ReadAllText(Path.Combine(
root, "Packages", "org.gamecult.aetheria.state", "Runtime", "AetheriaRuntimeDaemonOperations.cs"));
var requiredDestructionTransactionSymbols = new[]
{
"CommitDestruction(run, zone, target",
"target.DestructionId = destructionId",
"settings.LootDropProbability",
"settings.LootDropVelocity",
"settings.PickupLifetimeSeconds",
"Kind = \"pickup.dropped\"",
"Kind = \"entity.destroyed\"",
"zone.DroppedPickups = pickups"
};
var missingDestructionTransactionSymbols = requiredDestructionTransactionSymbols
.Where(symbol => !daemonSimulation.Contains(symbol, StringComparison.Ordinal))
.ToArray();
if (missingDestructionTransactionSymbols.Length > 0 ||
daemonOperations.Contains("ApplyDestroyEntity(", StringComparison.Ordinal) ||
daemonOperations.Contains("case AetheriaRuntimeDaemonCommandKinds.DestroyEntity:", StringComparison.Ordinal))
{
throw new InvalidOperationException(
"Lethal daemon damage must own exactly-once destruction, loot drops, and cleanup; clients may not command entity erasure: " +
string.Join(", ", missingDestructionTransactionSymbols));
}
if (daemonSimulation.Contains("AetheriaRuntimeRtsSimulation", StringComparison.Ordinal) ||
daemonSimulation.Contains("daemon-rts", StringComparison.Ordinal) ||
daemonSimulation.Contains("rts-commander", StringComparison.Ordinal) ||