public override void OnItemLoaded() { base.OnItemLoaded(); if (Signals == null) { Signals = new string[RequiredSignalCount]; for (int i = 0; i < RequiredSignalCount; i++) { Signals[i] = string.Empty; } } else if (Signals.Length != RequiredSignalCount) { string[] newSignals = new string[RequiredSignalCount]; if (Signals.Length < RequiredSignalCount) { Signals.CopyTo(newSignals, 0); for (int i = Signals.Length; i < RequiredSignalCount; i++) { newSignals[i] = string.Empty; } } else { for (int i = 0; i < RequiredSignalCount; i++) { newSignals[i] = Signals[i]; } } Signals = newSignals; } ActivatingItemPrefabs.Clear(); if (!string.IsNullOrEmpty(ActivatingItems)) { foreach (var activatingItem in ActivatingItems.Split(',')) { if (MapEntityPrefab.Find(null, identifier: activatingItem, showErrorMessages: false) is ItemPrefab prefab) { ActivatingItemPrefabs.Add(prefab); } else { ItemPrefab.Prefabs.Where(p => p.Tags.Any(t => t.Equals(activatingItem, StringComparison.OrdinalIgnoreCase))) .ForEach(p => ActivatingItemPrefabs.Add(p)); } } if (ActivatingItemPrefabs.None()) { DebugConsole.ThrowError($"Error in item \"{item.Name}\": no activating item prefabs found with identifiers or tags \"{ActivatingItems}\""); } } var containers = item.GetComponents <ItemContainer>().ToList(); if (containers.Count != 1) { DebugConsole.ThrowError($"Error in item \"{item.Name}\": the ButtonTerminal component requires exactly one ItemContainer component!"); return; } Container = containers[0]; OnItemLoadedProjSpecific(); }