diff --git a/NewHorizons/Builder/Props/NomaiTextBuilder.cs b/NewHorizons/Builder/Props/NomaiTextBuilder.cs index 85a0a5c6..f6a7ed34 100644 --- a/NewHorizons/Builder/Props/NomaiTextBuilder.cs +++ b/NewHorizons/Builder/Props/NomaiTextBuilder.cs @@ -18,6 +18,7 @@ namespace NewHorizons.Builder.Props { private static List _arcPrefabs; private static List _childArcPrefabs; + private static List _ghostArcPrefabs; private static GameObject _scrollPrefab; private static GameObject _computerPrefab; private static GameObject _cairnPrefab; @@ -29,22 +30,32 @@ namespace NewHorizons.Builder.Props var existingArcs = GameObject.FindObjectsOfType().Select(x => x?._nomaiWallText?.gameObject?.transform?.Find("Arc 1")?.gameObject).Where(x => x != null).ToArray(); _arcPrefabs = new List(); _childArcPrefabs = new List(); - for (int i = 0; i < existingArcs.Count(); i++) + foreach (var existingArc in existingArcs) { - if (existingArcs[i].GetComponent().material.name.Contains("Child")) + if (existingArc.GetComponent().material.name.Contains("Child")) { - var arc = existingArcs[i].InstantiateInactive(); + var arc = existingArc.InstantiateInactive(); arc.name = "Arc (Child)"; _childArcPrefabs.Add(arc); } else { - var arc = existingArcs[i].InstantiateInactive(); + var arc = existingArc.InstantiateInactive(); arc.name = "Arc"; _arcPrefabs.Add(arc); } } + var existingGhostArcs = GameObject.FindObjectsOfType().Select(x => x?._textLine?.gameObject).Where(x => x != null).ToArray(); + _ghostArcPrefabs = new List(); + foreach (var existingArc in existingGhostArcs) + { + Logger.Log("Found ghost"); + var arc = existingArc.InstantiateInactive(); + arc.name = "Arc"; + _ghostArcPrefabs.Add(arc); + } + _scrollPrefab = GameObject.Find("BrittleHollow_Body/Sector_BH/Sector_NorthHemisphere/Sector_NorthPole/Sector_HangingCity/Sector_HangingCity_District2/Interactables_HangingCity_District2/Prefab_NOM_Scroll").InstantiateInactive(); _scrollPrefab.name = "Prefab_NOM_Scroll"; @@ -73,7 +84,15 @@ namespace NewHorizons.Builder.Props nomaiWallTextObj.transform.parent = sector?.transform ?? go.transform; nomaiWallTextObj.transform.localPosition = info.position; - nomaiWallTextObj.transform.rotation = Quaternion.FromToRotation(Vector3.up, info.normal) * nomaiWallTextObj.transform.rotation; + if (info.normal != null) + { + nomaiWallTextObj.transform.LookAt(nomaiWallTextObj.transform.position + info.normal); + nomaiWallTextObj.transform.rotation = Quaternion.FromToRotation(Vector3.up, Vector3.forward) * nomaiWallTextObj.transform.rotation; + } + if(info.rotation != null) + { + nomaiWallTextObj.transform.localRotation = Quaternion.Euler(info.rotation); + } nomaiWallTextObj.SetActive(true); } @@ -285,10 +304,15 @@ namespace NewHorizons.Builder.Props var parent = parentID == -1 ? null : arcsByID[parentID]; GameObject arc; - if (info.arcInfo != null && info.arcInfo[i].type == "child") + var type = info.arcInfo != null ? info.arcInfo[i].type : "adult"; + if (type == "child") { arc = _childArcPrefabs[Random.Range(0, _childArcPrefabs.Count())].InstantiateInactive(); } + else if(type == "stranger") + { + arc = _ghostArcPrefabs[Random.Range(0, _ghostArcPrefabs.Count())].InstantiateInactive(); + } else { arc = _arcPrefabs[Random.Range(0, _arcPrefabs.Count())].InstantiateInactive();