// Injects the mutations into the spanwers private static void AddMutations(DirectedActorSpawner spawn) { ZoneDirector.Zone zone = spawn.GetComponentInParent <Region>().GetZoneId(); foreach (DirectedActorSpawner.SpawnConstraint constraint in spawn.constraints) { foreach (Identifiable.Id id in MUTATIONS.Keys) { if (MUTATIONS[id].Item1 != ZoneDirector.Zone.NONE && zone != MUTATIONS[id].Item1) { continue; } SlimeSet.Member slime = constraint.slimeset.members .FirstOrDefault(member => member.prefab.GetComponent <Identifiable>().id == id); if (slime == null) { continue; } List <SlimeSet.Member> members = new List <SlimeSet.Member>(constraint.slimeset.members) { new SlimeSet.Member { prefab = GameContext.Instance.LookupDirector.GetPrefab(MUTATIONS[id].Item2), weight = slime.weight / 3 } }; constraint.slimeset.members = members.ToArray(); } } }
public static void Postfix(DirectedActorSpawner __instance) { foreach (var v in DirectedActorSpawnerRegistry.spawnerFixers) { if (v.Key(__instance)) { v.Value(__instance); } } }