Restore daemon destruction and loot
This commit is contained in:
parent
861b82f2ff
commit
22dae9adbe
13 changed files with 333 additions and 56 deletions
|
|
@ -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) ||
|
||||
|
|
|
|||
Loading…
Reference in a new issue