private void MenuMouseFix() { var flag = BonfireManager.Instance.IsBonfireInteracting; if (m_lastMenuFix != flag) { m_lastMenuFix = flag; Character c = CharacterManager.Instance.GetFirstLocalCharacter(); if (c.CharacterUI.PendingDemoCharSelectionScreen is Panel panel) { if (m_lastMenuFix) { panel.Show(); } else { panel.Hide(); } } else if (m_lastMenuFix) { GameObject obj = new GameObject(); obj.transform.parent = c.transform; obj.SetActive(true); Panel newPanel = obj.AddComponent <Panel>(); At.SetValue(newPanel, typeof(CharacterUI), c.CharacterUI, "PendingDemoCharSelectionScreen"); newPanel.Show(); } } }
public IEnumerator BonfireCoroutine() { foreach (PlayerSystem ps in Global.Lobby.PlayersInLobby.Where(x => x.IsLocalPlayer)) { Character c = ps.ControlledCharacter; c.Stats.RestoreAllVitals(); At.SetValue(true, typeof(Character), c, "m_invincible"); c.CharacterControl.InputLocked = true; c.CastSpell(Character.SpellCastType.Sit, c.gameObject, Character.SpellCastModifier.Immobilized, 1, -1f); } yield return(new WaitForSeconds(1f)); while (IsBonfireInteracting || NetworkLevelLoader.Instance.IsGameplayPaused) { yield return(null); } foreach (Character c in CharacterManager.Instance.Characters.Values) { if (c.IsAI) { if ((bool)OutSouls.config.GetValue(Settings.Bonfires_Heal_Enemies)) { if (c.Health <= 0) { if (!PhotonNetwork.isNonMasterClientInRoom) { var wasEnabled = c.gameObject.activeSelf; c.RessurectCampingSquad(); c.gameObject.SetActive(false); if (wasEnabled) { c.gameObject.SetActive(true); } } } else { c.ResetStats(); } } } else { At.SetValue(false, typeof(Character), c, "m_invincible"); c.CharacterControl.InputLocked = false; c.ForceCancel(true, true); } } if ((bool)OutSouls.config.GetValue(Settings.Bonfires_Heal_Enemies)) { foreach (SplitPlayer player in SplitScreenManager.Instance.LocalPlayers) { player.CharUI.ShowInfoNotification("Nearby enemies have been resurrected..."); } //StartCoroutine(OutSoulsGUI.Instance.SetMessage("Nearby foes have been resurrected...", 3)); } }
public IEnumerator ResetArea() { Dictionary <string, Vector3> positions = new Dictionary <string, Vector3>(); if (!PhotonNetwork.isNonMasterClientInRoom) { foreach (PlayerSystem ps in Global.Lobby.PlayersInLobby) { Character c = ps.ControlledCharacter; positions.Add(c.UID, c.transform.position); } } BlackFade.Instance.StartFade(true); yield return(new WaitForSeconds(1f)); IsBonfireInteracting = false; Area area = AreaManager.Instance.GetAreaFromSceneName(SceneManagerHelper.ActiveSceneName); float origReset = (float)At.GetValue(typeof(Area), area, "m_resetTime"); At.SetValue(-999, typeof(Area), area, "m_resetTime"); NetworkLevelLoader.Instance.ReloadLevel(0, true, -1, 0, true); while (NetworkLevelLoader.Instance.IsGameplayPaused) { yield return(null); } foreach (KeyValuePair <string, Vector3> entry in positions) { if (CharacterManager.Instance.GetCharacter(entry.Key) is Character c) { c.Teleport(entry.Value, Quaternion.identity); c.CharacterControl.InputLocked = false; At.SetValue(false, typeof(Character), c, "m_invincible"); c.Stats.RestoreAllVitals(); c.ResetCastType(); c.ForceCancel(true, true); } } Debug.Log("Restoring original reset time to " + origReset); At.SetValue(origReset, typeof(Area), area, "m_resetTime"); yield return(null); }
// usually called from LoadScene. Also by the Sync functions when you join a host. public IEnumerator SetupBonfireLocal(Vector3 position, string uid) { Debug.Log("Setting up bonfire at: " + position.ToString() + ", uid: " + uid); var bonfire = new GameObject("Bonfire_" + uid); bonfire.transform.position = position; var activatedCampfire = ResourcesPrefabManager.Instance.GetItemPrefab(5000101).GetComponent <Deployable>().DeployedStateItemPrefab.VisualPrefab; var fireVisuals = Instantiate(activatedCampfire.gameObject); fireVisuals.transform.parent = bonfire.transform; fireVisuals.transform.position = bonfire.transform.position; var swordVisuals = Instantiate(ResourcesPrefabManager.Instance.GetItemPrefab(2000151).VisualPrefab.gameObject); swordVisuals.transform.parent = bonfire.transform; swordVisuals.transform.position = bonfire.transform.position + Vector3.up; swordVisuals.transform.rotation = Quaternion.Euler(0, 0, 90); var sigilVisuals = Instantiate(ResourcesPrefabManager.Instance.GetItemPrefab(8000010).VisualPrefab.gameObject); sigilVisuals.transform.parent = bonfire.transform; sigilVisuals.transform.position = bonfire.transform.position; // interaction gameobject base GameObject actionHolder = new GameObject("Interaction_Holder"); actionHolder.transform.parent = bonfire.transform; actionHolder.transform.position = bonfire.transform.position; // setup components InteractionTriggerBase triggerBase = actionHolder.AddComponent <InteractionTriggerBase>(); InteractionActivator activator = actionHolder.AddComponent <InteractionActivator>(); InteractionBase interactBase = actionHolder.AddComponent <InteractionBase>(); // setup the trigger base triggerBase.SetHolderUID(uid); triggerBase.GenerateColliderIfNone = true; triggerBase.IsLargeTrigger = true; triggerBase.DetectionPriority = -9999; triggerBase.SetActivator(activator); // setup the interaction activator activator.SetUID(uid); At.SetValue("Rest at <color=#fc4e03>Bonfire</color>", typeof(InteractionActivator), activator, "m_overrideBasicText"); At.SetValue(interactBase, typeof(InteractionActivator), activator, "m_sceneBasicInteraction"); // setup the event interaction base interactBase.OnActivationEvent = BonfireEvent; // =========== finalize =========== // bonfire.gameObject.SetActive(true); yield return(new WaitForSeconds(0.1f)); //activator.Reregister(); foreach (ParticleSystem ps in fireVisuals.GetComponentsInChildren <ParticleSystem>()) { ps.Play(); var m = ps.main; m.prewarm = true; m.playOnAwake = true; } foreach (Light light in fireVisuals.GetComponentsInChildren <Light>()) { light.gameObject.SetActive(true); } foreach (SoundPlayer sound in fireVisuals.GetComponentsInChildren <SoundPlayer>()) { sound.Play(false); } }