226 lines
9.3 KiB
C#
226 lines
9.3 KiB
C#
using System.Collections;
|
|
using UnityEngine;
|
|
using UnityEngine.SceneManagement;
|
|
|
|
public class EOTDREWRITE_FountainCutscene : MonoBehaviour
|
|
{
|
|
[Header("Cutscene References")]
|
|
[SerializeField]
|
|
private PlayerManager Kris;
|
|
|
|
[SerializeField]
|
|
private GameObject soulShine;
|
|
|
|
[SerializeField]
|
|
private Susie_Follower Susie;
|
|
|
|
[SerializeField]
|
|
private Susie_Follower Ralsei;
|
|
|
|
[SerializeField]
|
|
private EOTDREWRITE_FountainColor fountainColorManager;
|
|
|
|
[SerializeField]
|
|
private Transform startingSusiePosition;
|
|
|
|
[SerializeField]
|
|
private int CutsceneIndex;
|
|
|
|
[SerializeField]
|
|
private Animator[] fountainAnimators;
|
|
|
|
[SerializeField]
|
|
private GameObject FountainSealUI;
|
|
|
|
[Header("Cutscene Chats")]
|
|
[SerializeField]
|
|
private ChatboxSusieFountain Chatter;
|
|
|
|
[SerializeField]
|
|
private INT_Chat ChatterDefault;
|
|
|
|
[SerializeField]
|
|
private CHATBOXTEXT susieText;
|
|
|
|
[Header("Cutscene Sounds")]
|
|
[SerializeField]
|
|
private AudioSource cutsceneSource;
|
|
|
|
[SerializeField]
|
|
private AudioClip SFX_soulShine;
|
|
|
|
[SerializeField]
|
|
private AudioClip SFX_dontforget;
|
|
|
|
[SerializeField]
|
|
private AudioClip mus_rumble;
|
|
|
|
[SerializeField]
|
|
private AudioClip mus_finalfountain;
|
|
|
|
private void Start()
|
|
{
|
|
Kris = PlayerManager.Instance;
|
|
Kris.PlayerSpriteRenderer.color = Color.black;
|
|
mus_rumble.LoadAudioData();
|
|
mus_finalfountain.LoadAudioData();
|
|
Ralsei.RotateSusieToDirection(Vector2.up);
|
|
StartCoroutine(Cutscene());
|
|
}
|
|
|
|
public void IncrementCutscene()
|
|
{
|
|
CutsceneIndex++;
|
|
}
|
|
|
|
private IEnumerator Cutscene()
|
|
{
|
|
yield return null;
|
|
DarkworldMenu.Instance.CanOpenMenu = false;
|
|
Susie = PartyMemberSystem.Instance.HasMemberInParty(PartyMemberSystem.Instance.Default_SusieDarkworld).PartyMemberFollowSettings;
|
|
Susie.transform.Find("Shadow").gameObject.SetActive(value: true);
|
|
Susie.transform.Find("Shadow").GetComponent<SpriteRenderer>().color = Color.black;
|
|
Susie.transform.Find("FountainLight").gameObject.SetActive(value: true);
|
|
fountainColorManager.spriteRenderers.Add(Susie.transform.Find("FountainLight").GetComponent<SpriteRenderer>());
|
|
fountainColorManager.originalDarknesses.Add(1f);
|
|
Susie.SusieAnimator.GetComponent<SpriteRenderer>().color = Color.black;
|
|
Susie.FollowingEnabled = false;
|
|
Susie.transform.position = startingSusiePosition.position;
|
|
DEBUG_EnableMarkiplier.ChangeMarkiplierState(DEBUG_EnableMarkiplier.MarkiplierEmotions.Horror);
|
|
yield return new WaitForSeconds(1f);
|
|
while (Kris.transform.position.y < -2f && Susie.transform.position.y < -3f)
|
|
{
|
|
yield return null;
|
|
if (Kris.transform.position != new Vector3(Kris.transform.position.x, -2f, 0f))
|
|
{
|
|
Kris.transform.position = Vector2.MoveTowards(Kris.transform.position, new Vector3(Kris.transform.position.x, -2f, 0f), 1.5f * Time.deltaTime);
|
|
Kris._PMove.AnimationOverriden = true;
|
|
Kris._PMove._anim.SetBool("MOVING", value: true);
|
|
Kris._PMove._anim.SetFloat("MOVEMENTX", 0f);
|
|
Kris._PMove._anim.SetFloat("MOVEMENTY", 1f);
|
|
Kris._PMove._anim.speed = 0.65f;
|
|
}
|
|
else
|
|
{
|
|
Kris._PMove._anim.SetBool("MOVING", value: false);
|
|
Kris._PMove._anim.SetFloat("MOVEMENTX", 0f);
|
|
Kris._PMove._anim.SetFloat("MOVEMENTY", 1f);
|
|
}
|
|
if (Susie.transform.position != new Vector3(Susie.transform.position.x, -3f, 0f))
|
|
{
|
|
Susie.transform.position = Vector2.MoveTowards(Susie.transform.position, new Vector3(Susie.transform.position.x, -3f, 0f), 1.5f * Time.deltaTime);
|
|
Susie.AnimationOverriden = true;
|
|
Susie.SusieAnimator.Play("Walk");
|
|
Susie.SusieAnimator.SetFloat("VelocityX", 0f);
|
|
Susie.SusieAnimator.SetFloat("VelocityY", 1f);
|
|
Susie.SusieAnimator.SetFloat("VelocityMagnitude", 1f);
|
|
Susie.SusieAnimator.speed = 0.65f;
|
|
}
|
|
else
|
|
{
|
|
Susie.SusieAnimator.Play("Idle");
|
|
Susie.SusieAnimator.SetFloat("VelocityX", 0f);
|
|
Susie.SusieAnimator.SetFloat("VelocityY", 1f);
|
|
Susie.SusieAnimator.SetFloat("VelocityMagnitude", 1f);
|
|
}
|
|
}
|
|
Kris._PMove._anim.SetBool("MOVING", value: false);
|
|
Kris._PMove._anim.SetFloat("MOVEMENTX", 0f);
|
|
Kris._PMove._anim.SetFloat("MOVEMENTY", 1f);
|
|
Kris._PMove._anim.speed = 1f;
|
|
Susie.SusieAnimator.Play("Idle");
|
|
Susie.SusieAnimator.SetFloat("VelocityX", 0f);
|
|
Susie.SusieAnimator.SetFloat("VelocityY", 1f);
|
|
Susie.SusieAnimator.SetFloat("VelocityMagnitude", 0f);
|
|
Susie.SusieAnimator.speed = 1f;
|
|
yield return new WaitForSeconds(1.5f);
|
|
Chatter.RunText(susieText, 0, null, ResetCurrentTextIndex: false);
|
|
while (CutsceneIndex < 1)
|
|
{
|
|
yield return null;
|
|
}
|
|
yield return new WaitForSeconds(1f);
|
|
while (Kris.transform.position.y < -0.75f)
|
|
{
|
|
yield return null;
|
|
if (Kris.transform.position != new Vector3(Kris.transform.position.x, -0.75f, 0f))
|
|
{
|
|
Kris.transform.position = Vector2.MoveTowards(Kris.transform.position, new Vector3(Kris.transform.position.x, -0.75f, 0f), 1.5f * Time.deltaTime);
|
|
Kris._PMove.AnimationOverriden = true;
|
|
Kris._PMove._anim.SetBool("MOVING", value: true);
|
|
Kris._PMove._anim.SetFloat("MOVEMENTX", 0f);
|
|
Kris._PMove._anim.SetFloat("MOVEMENTY", 1f);
|
|
Kris._PMove._anim.speed = 0.65f;
|
|
}
|
|
}
|
|
Kris._PMove._anim.SetBool("MOVING", value: false);
|
|
Kris._PMove._anim.SetFloat("MOVEMENTX", 0f);
|
|
Kris._PMove._anim.SetFloat("MOVEMENTY", 1f);
|
|
Kris._PMove._anim.speed = 1f;
|
|
yield return new WaitForSeconds(1f);
|
|
Chatter.RunText(susieText, 1, null, ResetCurrentTextIndex: false);
|
|
DEBUG_EnableMarkiplier.ChangeMarkiplierState(DEBUG_EnableMarkiplier.MarkiplierEmotions.Crying);
|
|
while (CutsceneIndex < 2)
|
|
{
|
|
yield return null;
|
|
}
|
|
soulShine.transform.position = Kris.transform.position;
|
|
soulShine.SetActive(value: true);
|
|
cutsceneSource.PlayOneShot(SFX_soulShine);
|
|
MusicManager.PlaySong(mus_rumble, FadePreviousSong: false, 0f);
|
|
yield return new WaitForSeconds(2.5f);
|
|
DEBUG_EnableMarkiplier.ChangeMarkiplierState(DEBUG_EnableMarkiplier.MarkiplierEmotions.Annoyed);
|
|
UI_FADE.Instance.StartFadeIn(-1, 0.5f);
|
|
while (CameraManager.instance.transform.position.y < 3.35f)
|
|
{
|
|
yield return null;
|
|
if (CameraManager.instance.transform.position != new Vector3(CameraManager.instance.transform.position.x, 3.35f, -10f))
|
|
{
|
|
CameraManager.instance.transform.position = Vector3.MoveTowards(CameraManager.instance.transform.position, new Vector3(CameraManager.instance.transform.position.x, 3.35f, -10f), 1.5f * Time.deltaTime);
|
|
}
|
|
}
|
|
CameraManager.instance.transform.position = new Vector3(1.5f, 3.5f, -10f);
|
|
UI_FADE.Instance.StartFadeOut(0.5f);
|
|
DEBUG_EnableMarkiplier.ChangeMarkiplierState(DEBUG_EnableMarkiplier.MarkiplierEmotions.Shock);
|
|
MusicManager.PlaySong(mus_finalfountain, FadePreviousSong: true, 0.15f);
|
|
yield return new WaitForSeconds(2f);
|
|
ChatterDefault.RUN();
|
|
Kris.PlayerSpriteRenderer.color = Color.white;
|
|
Kris._PMove.AnimationOverriden = false;
|
|
Kris._PMove.InDarkworld = false;
|
|
LightworldMenu.Instance.CanOpenMenu = false;
|
|
while (CutsceneIndex < 3)
|
|
{
|
|
yield return null;
|
|
}
|
|
DEBUG_EnableMarkiplier.ChangeMarkiplierState(DEBUG_EnableMarkiplier.MarkiplierEmotions.Crying);
|
|
StartCoroutine(songFountainSync());
|
|
while (CameraManager.instance.transform.position.y < 42f)
|
|
{
|
|
yield return null;
|
|
if (CameraManager.instance.transform.position != new Vector3(CameraManager.instance.transform.position.x, 42f, -10f))
|
|
{
|
|
CameraManager.instance.transform.position = Vector3.MoveTowards(CameraManager.instance.transform.position, new Vector3(CameraManager.instance.transform.position.x, 42f, -10f), 4f * Time.deltaTime);
|
|
}
|
|
}
|
|
}
|
|
|
|
private IEnumerator songFountainSync()
|
|
{
|
|
yield return new WaitForSeconds(1.5f);
|
|
MusicManager.StopSong(Fade: true, 0.5f);
|
|
cutsceneSource.PlayOneShot(SFX_dontforget);
|
|
Animator[] array = fountainAnimators;
|
|
for (int i = 0; i < array.Length; i++)
|
|
{
|
|
array[i].SetTrigger("PlayFountainSeal");
|
|
}
|
|
yield return new WaitForSeconds(3f);
|
|
FountainSealUI.SetActive(value: true);
|
|
yield return new WaitForSeconds(1.5f);
|
|
UI_FADE.Instance.StartFadeIn(-1, 0.25f);
|
|
yield return new WaitForSeconds(3.5f);
|
|
SceneManager.LoadScene(23);
|
|
}
|
|
}
|