public static bool Prefix( // ReSharper disable InconsistentNaming // ReSharper disable SuggestBaseTypeForParameter LandmarkEntitySpawner __instance) // ReSharper restore SuggestBaseTypeForParameter // ReSharper restore InconsistentNaming { if (!Semih_Network.IsHost) { return(true); } if (__instance.entityType != AI_NetworkBehaviourType.Llama && __instance.entityType != AI_NetworkBehaviourType.Chicken && __instance.entityType != AI_NetworkBehaviourType.Goat) { return(true); } if (m_isInPatchMode) { return(true); } var oldPosition = __instance.transform.position; try { m_isInPatchMode = true; var usableLocations = __instance.landmark.GetComponentsInChildren <MonoBehaviour>() .Where(p => m_usableItemNames.Any(u => p.name.Contains(u))) .ToArray(); __instance.landmark.OnLandmarkRemoved += OnLandmarkRemoved; for (var i = 1; i < DomesticSpawnFactor; i++) { var range = Random.Range(0, usableLocations.Length); __instance.transform.position = usableLocations[range].transform.position; Traverse.Create(__instance).Method("CreateEntity").GetValue(); m_disposableAnimals.Enqueue(__instance.spawnedEntityBehaviour.ObjectIndex); } } finally { __instance.transform.position = oldPosition; m_isInPatchMode = false; } return(true); }
public static bool Prefix( // ReSharper disable InconsistentNaming // ReSharper disable SuggestBaseTypeForParameter LandmarkEntitySpawner __instance) // ReSharper restore SuggestBaseTypeForParameter // ReSharper restore InconsistentNaming { if (!Semih_Network.IsHost) { return(true); } if (!m_domesticTypes.Contains(__instance.entityType)) { return(true); } if (m_isInPatchMode) { return(true); } try { m_isInPatchMode = true; var usableLocations = __instance.landmark.GetComponentsInChildren <MonoBehaviour>() .Where(p => m_usableItemNames.Any(u => p.name.Contains(u))) .ToArray(); __instance.landmark.OnLandmarkRemoved += OnLandmarkRemoved; for (var i = 1; i < DomesticSpawnFactor; i++) { var rangePosition = Random.Range(0, usableLocations.Length); var rangeDomesticTypes = Random.Range(0, m_domesticTypes.Length); var position = usableLocations[rangePosition].transform.position; var domesticType = m_domesticTypes[rangeDomesticTypes]; var behaviour = SpawnAnimal(domesticType, position); m_disposableAnimals.Enqueue(behaviour.ObjectIndex); } } finally { m_isInPatchMode = false; } return(true); }