From db2ef18c8b10ade2a2c51fa834cedf5835386a9a Mon Sep 17 00:00:00 2001
From: bewe <93899302+bernarduswillson@users.noreply.github.com>
Date: Sat, 11 May 2024 02:38:32 +0700
Subject: [PATCH] fix: initial stage

---
 Assets/Audio/Music/Safehouse.mp3              |   3 +
 Assets/Audio/Music/Safehouse.mp3.meta         |  23 ++
 .../Scenes/EntranceIntro/EntranceIntro.unity  |   2 +-
 Assets/Scenes/InitialStage.unity              |   9 +-
 Assets/Scenes/MainMenu.unity                  |   2 +
 Assets/Script/Audio/AudioManager.cs           |  29 +++
 Assets/Script/CutScene1.cs                    |   3 +-
 Assets/Script/Menu/GameOver.cs                |   7 +-
 Assets/Script/Menu/MainMenu.cs                |   7 +-
 Assets/Script/Menu/PauseMenu.cs               |   3 +
 Assets/Script/Menu/StatisticsMenu.cs          |   7 +-
 Assets/Script/Player/PlayerHealth.cs          |   1 +
 Assets/Script/Player/PlayerInventory.cs       |  91 +++----
 Assets/Script/SaveLoad/SaveSystem.cs          |   2 -
 Assets/Script/Shop/Shop.cs                    |   4 +-
 Assets/Script/Stage/Stage.cs                  |  29 ++-
 Assets/Script/Stage/StageManager.cs           |  13 +-
 Assets/Script/Weapon/GunSystem.cs             |   1 +
 Assets/Timeline/EntranceIntro.playable        | 233 ++++++++++++++++--
 19 files changed, 382 insertions(+), 87 deletions(-)
 create mode 100644 Assets/Audio/Music/Safehouse.mp3
 create mode 100644 Assets/Audio/Music/Safehouse.mp3.meta

diff --git a/Assets/Audio/Music/Safehouse.mp3 b/Assets/Audio/Music/Safehouse.mp3
new file mode 100644
index 00000000..0f1d3296
--- /dev/null
+++ b/Assets/Audio/Music/Safehouse.mp3
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4f106a1a2af2cfda4d1db13b3a4eee881a2e35f5f2071e31e3972aad0e930d7b
+size 2554706
diff --git a/Assets/Audio/Music/Safehouse.mp3.meta b/Assets/Audio/Music/Safehouse.mp3.meta
new file mode 100644
index 00000000..7f7f68d9
--- /dev/null
+++ b/Assets/Audio/Music/Safehouse.mp3.meta
@@ -0,0 +1,23 @@
+fileFormatVersion: 2
+guid: a0d8574371bc61745828d0d989d84525
+AudioImporter:
+  externalObjects: {}
+  serializedVersion: 7
+  defaultSettings:
+    serializedVersion: 2
+    loadType: 0
+    sampleRateSetting: 0
+    sampleRateOverride: 44100
+    compressionFormat: 1
+    quality: 1
+    conversionMode: 0
+    preloadAudioData: 0
+  platformSettingOverrides: {}
+  forceToMono: 0
+  normalize: 1
+  loadInBackground: 0
+  ambisonic: 0
+  3D: 1
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Scenes/EntranceIntro/EntranceIntro.unity b/Assets/Scenes/EntranceIntro/EntranceIntro.unity
index e2fbb51f..7ba920a8 100644
--- a/Assets/Scenes/EntranceIntro/EntranceIntro.unity
+++ b/Assets/Scenes/EntranceIntro/EntranceIntro.unity
@@ -4583,7 +4583,7 @@ Transform:
   m_GameObject: {fileID: 322265032}
   serializedVersion: 2
   m_LocalRotation: {x: -0.09861505, y: 0.80913347, z: 0.1420819, w: 0.5615967}
-  m_LocalPosition: {x: 10.599443, y: 3.380136, z: 15.979986}
+  m_LocalPosition: {x: 46.4119, y: 3.35, z: 21.89056}
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_ConstrainProportionsScale: 0
   m_Children:
diff --git a/Assets/Scenes/InitialStage.unity b/Assets/Scenes/InitialStage.unity
index fbc370aa..e779deb8 100644
--- a/Assets/Scenes/InitialStage.unity
+++ b/Assets/Scenes/InitialStage.unity
@@ -2709,7 +2709,7 @@ GameObject:
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
-  m_IsActive: 0
+  m_IsActive: 1
 --- !u!114 &211348305
 MonoBehaviour:
   m_ObjectHideFlags: 0
@@ -5705,6 +5705,11 @@ PrefabInstance:
       propertyPath: weapon3
       value: 
       objectReference: {fileID: 1865389150}
+    - target: {fileID: 5459010658768178930, guid: da6f8a21a762b8b449958966637f7373,
+        type: 3}
+      propertyPath: currentWeapon
+      value: 
+      objectReference: {fileID: 1956890867}
     - target: {fileID: 5459010658768178930, guid: da6f8a21a762b8b449958966637f7373,
         type: 3}
       propertyPath: currentWeaponName
@@ -5801,7 +5806,7 @@ PrefabInstance:
     - target: {fileID: 8801761984308425835, guid: da6f8a21a762b8b449958966637f7373,
         type: 3}
       propertyPath: cooldown
-      value: 10
+      value: 20
       objectReference: {fileID: 0}
     - target: {fileID: 8801761984308425835, guid: da6f8a21a762b8b449958966637f7373,
         type: 3}
diff --git a/Assets/Scenes/MainMenu.unity b/Assets/Scenes/MainMenu.unity
index 8ad359f8..f35c8d39 100644
--- a/Assets/Scenes/MainMenu.unity
+++ b/Assets/Scenes/MainMenu.unity
@@ -6935,6 +6935,8 @@ MonoBehaviour:
     clip: {fileID: 8300000, guid: 2cdc839e83c059143877eaa41d3af757, type: 3}
   - name: Stage
     clip: {fileID: 8300000, guid: ec63382be8c7ec743b171a0dc777d134, type: 3}
+  - name: Safehouse
+    clip: {fileID: 8300000, guid: 6248f91324353264a8946a9edf89440f, type: 3}
   sfxSounds:
   - name: OceanAmbience
     clip: {fileID: 8300000, guid: 20b7f9ab362cd9141a1534895361b4b0, type: 3}
diff --git a/Assets/Script/Audio/AudioManager.cs b/Assets/Script/Audio/AudioManager.cs
index f2c43d6f..c5171abd 100644
--- a/Assets/Script/Audio/AudioManager.cs
+++ b/Assets/Script/Audio/AudioManager.cs
@@ -85,6 +85,35 @@ public class AudioManager : MonoBehaviour
         fadeOutCoroutine = null;
     }
 
+    public void StopSFX(string name)
+    {
+        Sound s = Array.Find(sfxSounds, sound => sound.name == name);
+        if (s == null)
+        {
+            Debug.LogWarning("Sound: " + name + " not found!");
+            return;
+        }
+
+        if (sfxSource.isPlaying)
+        {
+            StartCoroutine(FadeOutSFX(2f));
+        }
+    }
+
+    private IEnumerator FadeOutSFX(float duration)
+    {
+        float startVolume = sfxSource.volume;
+
+        for (float t = 0; t < duration; t += Time.deltaTime)
+        {
+            sfxSource.volume = Mathf.Lerp(startVolume, 0, t / duration);
+            yield return null;
+        }
+
+        sfxSource.volume = 0;
+        sfxSource.Stop();
+    }
+
     public void PlaySFX(string name)
     {
         Sound s = Array.Find(sfxSounds, sound => sound.name == name);
diff --git a/Assets/Script/CutScene1.cs b/Assets/Script/CutScene1.cs
index 2cdbf630..419f7b59 100644
--- a/Assets/Script/CutScene1.cs
+++ b/Assets/Script/CutScene1.cs
@@ -14,6 +14,7 @@ public class CutScene1 : MonoBehaviour
     public void Finish()
     {
         SceneManager.LoadScene(2);
-        AudioManager.instance.PlayMusic("Stage");
+        AudioManager.instance.StopSFX("OceanAmbience");
+        AudioManager.instance.StopSFX("GhostAmbience");
     }
 }
diff --git a/Assets/Script/Menu/GameOver.cs b/Assets/Script/Menu/GameOver.cs
index 75fba183..673524f4 100644
--- a/Assets/Script/Menu/GameOver.cs
+++ b/Assets/Script/Menu/GameOver.cs
@@ -40,7 +40,12 @@ public class GameOver : MonoBehaviour
         string formattedDistance = distanceInKm.ToString("F2");
         distance.text = formattedDistance + " km";  
 
-        playTime.text = string.Format("{0:D2}:{1:D2}:{2:D2}", (int)GlobalPreference.Instance.GetPlayTime() / 3600, (int)GlobalPreference.Instance.GetPlayTime() / 60, (int)GlobalPreference.Instance.GetPlayTime() % 60);
+        float playTimeInSeconds = GlobalPreference.Instance.GetPlayTime();
+        int hours = (int)(playTimeInSeconds / 3600);
+        int remainingSecondsAfterHours = (int)(playTimeInSeconds % 3600);
+        int minutes = (int)(remainingSecondsAfterHours / 60);
+        int seconds = (int)(remainingSecondsAfterHours % 60);
+        playTime.text = string.Format("{0:D2}:{1:D2}:{2:D2}", hours, minutes, seconds);
     }
 
     public void StartFade()
diff --git a/Assets/Script/Menu/MainMenu.cs b/Assets/Script/Menu/MainMenu.cs
index e91e6912..f2a49811 100644
--- a/Assets/Script/Menu/MainMenu.cs
+++ b/Assets/Script/Menu/MainMenu.cs
@@ -23,25 +23,22 @@ public class MainMenu : MonoBehaviour
     void Start()
     {
         newGame.Select();
+        FadeOut.SetActive(false);
     }
 
     public void StartGame()
     {
-        Debug.Log("Panggil aku dong");
         SaveData data = new SaveData();
         SaveLoadManager.Instance.SetSaveData(data);
         FadeOut.SetActive(true);
-        /*StartCoroutine(StartGameWithDelay());*/
-        SceneManager.LoadScene(1);
+        StartCoroutine(StartGameWithDelay());
         AudioManager.instance.StopMusic();
     }
 
     private IEnumerator StartGameWithDelay()
     {
         yield return new WaitForSeconds(2);
-        Debug.Log("MASUKKKK");
         SceneManager.LoadScene(1);
-        FadeOut.SetActive(false);
     }
 
     public void LoadGame()
diff --git a/Assets/Script/Menu/PauseMenu.cs b/Assets/Script/Menu/PauseMenu.cs
index 2ad7120f..4dde3eb0 100644
--- a/Assets/Script/Menu/PauseMenu.cs
+++ b/Assets/Script/Menu/PauseMenu.cs
@@ -92,5 +92,8 @@ public class PauseMenu : MonoBehaviour
     public void LoadMenu()
     {
         SceneManager.LoadScene("MainMenu");
+        Time.timeScale = 1f;
+        GameIsPaused = false;
+        pauseMenuUI.SetActive(false);
     }
 }
diff --git a/Assets/Script/Menu/StatisticsMenu.cs b/Assets/Script/Menu/StatisticsMenu.cs
index c5decc2b..91ecf30c 100644
--- a/Assets/Script/Menu/StatisticsMenu.cs
+++ b/Assets/Script/Menu/StatisticsMenu.cs
@@ -28,6 +28,11 @@ public class StatisticsMenu : MonoBehaviour
         string formattedDistance = distanceInKm.ToString("F2");
         distanceTraveled.text = formattedDistance + " km";
 
-        playTime.text = string.Format("{0:D2}:{1:D2}:{2:D2}", (int)PlayerPrefs.GetFloat("PlayTime") / 3600, (int)PlayerPrefs.GetFloat("PlayTime") / 60, (int)PlayerPrefs.GetFloat("PlayTime") % 60);
+        float playTimeInSeconds = PlayerPrefs.GetFloat("PlayTime");
+        int hours = (int)(playTimeInSeconds / 3600);
+        int remainingSecondsAfterHours = (int)(playTimeInSeconds % 3600);
+        int minutes = (int)(remainingSecondsAfterHours / 60);
+        int seconds = (int)(remainingSecondsAfterHours % 60);
+        playTime.text = string.Format("{0:D2}:{1:D2}:{2:D2}", hours, minutes, seconds);
     }
 }
diff --git a/Assets/Script/Player/PlayerHealth.cs b/Assets/Script/Player/PlayerHealth.cs
index 9d725016..868bde78 100644
--- a/Assets/Script/Player/PlayerHealth.cs
+++ b/Assets/Script/Player/PlayerHealth.cs
@@ -75,6 +75,7 @@ public class PlayerHealth : MonoBehaviour
         float fillF = frontHealthBar.fillAmount;
         float fillB = backHealthBar.fillAmount;
         float hFraction = health / maxHealth;
+
         if (fillB > hFraction)
         {
             frontHealthBar.fillAmount = hFraction;
diff --git a/Assets/Script/Player/PlayerInventory.cs b/Assets/Script/Player/PlayerInventory.cs
index 273002f1..604f9be8 100644
--- a/Assets/Script/Player/PlayerInventory.cs
+++ b/Assets/Script/Player/PlayerInventory.cs
@@ -44,7 +44,9 @@ public class PlayerInventory : MonoBehaviour
 
             if (data.attackPetHealth > 0)
             {
-                Pet wolf = Instantiate(Resources.Load("Prefabs/Wolf Pet/Wolf Pet") as GameObject, transform.position, Quaternion.identity).GetComponent<Pet>();
+                var pet = Instantiate(Resources.Load("Prefabs/Wolf Pet/Prefabs/Wolf") as GameObject, transform.position, Quaternion.identity);
+                Pet wolf = pet.GetComponent<Pet>();
+                pet.SetActive(true);
                 wolf.health = (int)data.attackPetHealth;
                 playerPets.Add(wolf);
             }
@@ -60,53 +62,53 @@ public class PlayerInventory : MonoBehaviour
             {
                 playerPets.Remove(pet);
             }
+        }
 
-            if (playerPets.Count == 2)
+        if (playerPets.Count == 2)
+        {
+            UpdateHealthUI1(playerPets[0]);
+            UpdateHealthUI2(playerPets[1]);
+            if (playerPets[0].type == "Healer")
+            {
+                petName1.text = "Healing Orb";
+                GlobalPreference.Instance.SetPlayerHealerPetHealth(playerPets[0].health);
+            }
+            else if (playerPets[0].type == "Attack")
+            {
+                petName1.text = "Wolf";
+                GlobalPreference.Instance.SetPlayerAttackPetHealth(playerPets[0].health);
+            }
+            if (playerPets[1].type == "Healer")
             {
-                UpdateHealthUI1(playerPets[0]);
-                UpdateHealthUI2(playerPets[1]);
-                if (playerPets[0].type == "Healer")
-                {
-                    petName1.text = "Healing Orb";
-                    GlobalPreference.Instance.SetPlayerHealerPetHealth(playerPets[0].health);
-                }
-                else if (playerPets[0].type == "Attack")
-                {
-                    petName1.text = "Wolf";
-                    GlobalPreference.Instance.SetPlayerAttackPetHealth(playerPets[0].health);
-                }
-                if (playerPets[1].type == "Healer")
-                {
-                    petName2.text = "Healing Orb";
-                    GlobalPreference.Instance.SetPlayerHealerPetHealth(playerPets[1].health);
-                }
-                else if (playerPets[1].type == "Attack")
-                {
-                    petName2.text = "Wolf";
-                    GlobalPreference.Instance.SetPlayerAttackPetHealth(playerPets[1].health);
-                }
-                petHealthBar1.SetActive(true);
-                petHealthBar2.SetActive(true);
+                petName2.text = "Healing Orb";
+                GlobalPreference.Instance.SetPlayerHealerPetHealth(playerPets[1].health);
             }
-            else if (playerPets.Count == 1)
+            else if (playerPets[1].type == "Attack")
             {
-                UpdateHealthUI1(pet);
-                if (pet.type == "Healer")
-                {
-                    petName1.text = "Healing Orb";
-                    GlobalPreference.Instance.SetPlayerHealerPetHealth(pet.health);
-                }
-                else if (pet.type == "Attack")
-                {
-                    petName1.text = "Wolf";
-                    GlobalPreference.Instance.SetPlayerAttackPetHealth(pet.health);
-                }
-                petHealthBar1.SetActive(true);
-                petHealthBar2.SetActive(false);
+                petName2.text = "Wolf";
+                GlobalPreference.Instance.SetPlayerAttackPetHealth(playerPets[1].health);
             }
+            petHealthBar1.SetActive(true);
+            petHealthBar2.SetActive(true);
         }
-        
-        if (playerPets.Count == 0)
+        else if (playerPets.Count == 1)
+        {
+            playerPets[0].health = Mathf.Clamp(playerPets[0].health, 0, playerPets[0].maxHealth);
+            UpdateHealthUI1(playerPets[0]);
+            if (playerPets[0].type == "Healer")
+            {
+                petName1.text = "Healing Orb";
+                GlobalPreference.Instance.SetPlayerHealerPetHealth(playerPets[0].health);
+            }
+            else if (playerPets[0].type == "Attack")
+            {
+                petName1.text = "Wolf";
+                GlobalPreference.Instance.SetPlayerAttackPetHealth(playerPets[0].health);
+            }
+            petHealthBar1.SetActive(true);
+            petHealthBar2.SetActive(false);
+        }
+        else if (playerPets.Count == 0)
         {
             GlobalPreference.Instance.SetPlayerHealerPetHealth(0);
             GlobalPreference.Instance.SetPlayerAttackPetHealth(0);
@@ -143,7 +145,8 @@ public class PlayerInventory : MonoBehaviour
     {
         float fillF = frontHealthBar1.fillAmount;
         float fillB = backHealthBar1.fillAmount;
-        float hFraction = pet.health / pet.maxHealth;
+        float hFraction = (float)pet.health / pet.maxHealth;
+
         if (fillB > hFraction)
         {
             frontHealthBar1.fillAmount = hFraction;
@@ -166,7 +169,7 @@ public class PlayerInventory : MonoBehaviour
     {
         float fillF = frontHealthBar2.fillAmount;
         float fillB = backHealthBar2.fillAmount;
-        float hFraction = pet.health / pet.maxHealth;
+        float hFraction = (float)pet.health / pet.maxHealth;
         if (fillB > hFraction)
         {
             frontHealthBar2.fillAmount = hFraction;
diff --git a/Assets/Script/SaveLoad/SaveSystem.cs b/Assets/Script/SaveLoad/SaveSystem.cs
index 83f9fa7d..f5bdeab8 100644
--- a/Assets/Script/SaveLoad/SaveSystem.cs
+++ b/Assets/Script/SaveLoad/SaveSystem.cs
@@ -28,7 +28,6 @@ public static class SaveSystem
         }
         else
         {
-            Debug.Log("Save File not found");
             return null;
         }
     }
@@ -43,7 +42,6 @@ public static class SaveSystem
         }
         else
         {
-            Debug.Log("Save File not found");
         }
     }
 }
diff --git a/Assets/Script/Shop/Shop.cs b/Assets/Script/Shop/Shop.cs
index 1713df17..d124b503 100644
--- a/Assets/Script/Shop/Shop.cs
+++ b/Assets/Script/Shop/Shop.cs
@@ -117,7 +117,7 @@ public class Shop : MonoBehaviour
         if (playerGolds >= healerPrice)
         {
             GlobalPreference.Instance.SetPlayerGold(playerGolds - healerPrice);
-            var pet = Instantiate(healerObject, player.transform.position, Quaternion.identity);
+            var pet = Instantiate(Resources.Load("Prefabs/Fairy Pet/Fairy Pet") as GameObject, player.transform.position, Quaternion.identity);
             playerInventory.addPet(pet.GetComponent<Pet>());
             isThereHealer = true;
         }
@@ -144,7 +144,7 @@ public class Shop : MonoBehaviour
         if(playerGolds >= wolfPrice)
         {
             GlobalPreference.Instance.SetPlayerGold(playerGolds - wolfPrice);
-            var pet = Instantiate(wolfObject, player.transform.position, Quaternion.identity);
+            var pet = Instantiate(Resources.Load("Prefabs/Wolf Pet/Prefabs/Wolf") as GameObject, player.transform.position, Quaternion.identity);
             playerInventory.addPet(pet.GetComponent<Pet>());
             isThereWolf = true;
         }
diff --git a/Assets/Script/Stage/Stage.cs b/Assets/Script/Stage/Stage.cs
index 20d7ae80..97d55a5f 100644
--- a/Assets/Script/Stage/Stage.cs
+++ b/Assets/Script/Stage/Stage.cs
@@ -54,6 +54,7 @@ public class Stage : MonoBehaviour
             {
                 CheckSpawnerCompletion();
             }
+
             if (stageId == 2 && currentQuest == quest[0])
             {
                 survivalTimer += Time.deltaTime;
@@ -63,6 +64,8 @@ public class Stage : MonoBehaviour
                     ProceedNextQuest(1);
                     GameObject.FindGameObjectWithTag("Shopkeeper").GetComponent<EventOnlyInteractable>().promptMessage = "Shopkeeper (E)";
                     GameObject.FindGameObjectWithTag("Shopkeeper").GetComponent<EventOnlyInteractable>().isActive = true;
+
+                    StartCoroutine(MusicTransition1());
                 }
             }
             questLabel.text = currentQuest;
@@ -88,16 +91,29 @@ public class Stage : MonoBehaviour
         }
     }
 
+    public IEnumerator MusicTransition1()
+    {
+        AudioManager.instance.StopMusic();
+        yield return new WaitForSeconds(2f);
+        AudioManager.instance.PlayMusic("Safehouse");
+    }
+
+    public IEnumerator MusicTransition2()
+    {
+        AudioManager.instance.StopMusic();
+        yield return new WaitForSeconds(2f);
+        AudioManager.instance.PlayMusic("Stage");
+    }
+
     public void StartStage()
     {
+        StartCoroutine(MusicTransition2());
         foreach (var spawner in spawnControllers)
         {
             spawner.StartSpawning();
         }
     }
 
-    
-
     public bool CheckSpawnerCompletion()
     {
         foreach (var spawner in spawnControllers)
@@ -107,8 +123,7 @@ public class Stage : MonoBehaviour
                 return false;
             }
         }
-        // AudioManager.instance.PlaySFX("StageComplete");
-        AudioManager.instance.StopMusic();
+
         if (stageId == 1 && isActive)
         {
             Debug.Log("musuh selesai");
@@ -123,6 +138,8 @@ public class Stage : MonoBehaviour
             GameObject.FindGameObjectWithTag("Gate 2").GetComponent<EventOnlyInteractable>().promptMessage = "Press E to open the gate";
             GameObject.FindGameObjectWithTag("Gate 2").GetComponent<EventOnlyInteractable>().isActive = true;
         }
+
+        StartCoroutine(MusicTransition1());
         return true;
     }
 
@@ -152,8 +169,11 @@ public class Stage : MonoBehaviour
             ProceedNextQuest(2);
             GameObject.FindGameObjectWithTag("Gate 2").GetComponent<EventOnlyInteractable>().promptMessage = "";
             GameObject.FindGameObjectWithTag("Gate 2").GetComponent<EventOnlyInteractable>().isActive = false;
+
             GameObject.FindGameObjectWithTag("Boat").GetComponent<EventOnlyInteractable>().promptMessage = "Go to Boss Arena (E)";
             GameObject.FindGameObjectWithTag("Boat").GetComponent<EventOnlyInteractable>().isActive = true;
+
+            saveButton.interactable = true;
         }
         
     }
@@ -176,6 +196,7 @@ public class Stage : MonoBehaviour
             GameObject.FindGameObjectWithTag("Shopkeeper").GetComponent<EventOnlyInteractable>().isActive = false;
         }
 
+
         saveButton.interactable = true;
     }
 
diff --git a/Assets/Script/Stage/StageManager.cs b/Assets/Script/Stage/StageManager.cs
index 001c44c6..395ca19b 100644
--- a/Assets/Script/Stage/StageManager.cs
+++ b/Assets/Script/Stage/StageManager.cs
@@ -25,11 +25,11 @@ public class StageManager : MonoBehaviour
             currentStage = (int)data.stageNumber;
             if (currentStage == 2)
             {
-                if (GameObject.FindGameObjectWithTag("Player") != null) 
+                /*if (GameObject.FindGameObjectWithTag("Player") != null) 
                 {
-                    GameObject.FindGameObjectWithTag("Player").transform.localPosition = new Vector3(-18.026f, 20.801f, 49.536f);
-                }
-                GameObject.FindGameObjectWithTag("Gate").GetComponent<Animator>().SetTrigger("OpenGate");
+                    GameObject.FindGameObjectWithTag("Player").GetComponent<CharacterController>().center = new Vector3(-18.026f, 20.801f, 49.536f);
+                }*/
+                /*GameObject.FindGameObjectWithTag("Gate").GetComponent<Animator>().SetTrigger("OpenGate");*/
             }
         }
 
@@ -54,6 +54,11 @@ public class StageManager : MonoBehaviour
                 chapterText.SetActive(true);
                 chapterTextMesh.text = "CHAPTER 2";
             }
+            else if (currentStage == 3)
+            {
+                chapterText.SetActive(true);
+                chapterTextMesh.text = "CHAPTER 3";
+            }
 
             GlobalPreference.Instance.setStageNumber(currentStage);
             StartCoroutine(HideChapterText());
diff --git a/Assets/Script/Weapon/GunSystem.cs b/Assets/Script/Weapon/GunSystem.cs
index 4c218052..83bf21a3 100644
--- a/Assets/Script/Weapon/GunSystem.cs
+++ b/Assets/Script/Weapon/GunSystem.cs
@@ -42,6 +42,7 @@ public class GunSystem : MonoBehaviour
         readyToShoot = true;
         reloading = false;
         inputManager = player.GetComponent<InputManager>();
+        isActiveWeapon = true;
     }
 
     private void Update()
diff --git a/Assets/Timeline/EntranceIntro.playable b/Assets/Timeline/EntranceIntro.playable
index 5a520551..1c3c0a7f 100644
--- a/Assets/Timeline/EntranceIntro.playable
+++ b/Assets/Timeline/EntranceIntro.playable
@@ -438,6 +438,28 @@ MonoBehaviour:
   m_Markers:
     m_Objects:
     - {fileID: 7017475428051020058}
+--- !u!114 &2057740836184029763
+MonoBehaviour:
+  m_ObjectHideFlags: 1
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 030f85c3f73729f4f976f66ffb23b875, type: 3}
+  m_Name: Recorded (3)
+  m_EditorClassIdentifier: 
+  m_Clip: {fileID: 4909446276190046052}
+  m_Position: {x: 0, y: 0, z: 0}
+  m_EulerAngles: {x: 0, y: 0, z: 0}
+  m_UseTrackMatchFields: 1
+  m_MatchTargetFields: 63
+  m_RemoveStartOffset: 0
+  m_ApplyFootIK: 1
+  m_Loop: 0
+  m_Version: 1
+  m_Rotation: {x: 0, y: 0, z: 0, w: 1}
 --- !u!114 &2647497156481244554
 MonoBehaviour:
   m_ObjectHideFlags: 1
@@ -1021,25 +1043,7 @@ MonoBehaviour:
     m_BlendOutDuration: -1
     m_MixInCurve:
       serializedVersion: 2
-      m_Curve:
-      - serializedVersion: 3
-        time: 0
-        value: 0
-        inSlope: 0
-        outSlope: 0
-        tangentMode: 0
-        weightedMode: 0
-        inWeight: 0
-        outWeight: 0
-      - serializedVersion: 3
-        time: 1
-        value: 1
-        inSlope: 0
-        outSlope: 0
-        tangentMode: 0
-        weightedMode: 0
-        inWeight: 0
-        outWeight: 0
+      m_Curve: []
       m_PreInfinity: 2
       m_PostInfinity: 2
       m_RotationOrder: 4
@@ -1154,6 +1158,126 @@ MonoBehaviour:
   m_OpenClipOffsetRotation: {x: 0, y: 0, z: 0, w: 1}
   m_Rotation: {x: 0, y: 0, z: 0, w: 1}
   m_ApplyOffsets: 0
+--- !u!74 &4909446276190046052
+AnimationClip:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: Recorded (3)
+  serializedVersion: 7
+  m_Legacy: 0
+  m_Compressed: 0
+  m_UseHighQualityCurve: 1
+  m_RotationCurves: []
+  m_CompressedRotationCurves: []
+  m_EulerCurves: []
+  m_PositionCurves: []
+  m_ScaleCurves: []
+  m_FloatCurves:
+  - serializedVersion: 2
+    curve:
+      serializedVersion: 2
+      m_Curve:
+      - serializedVersion: 3
+        time: 0
+        value: 1
+        inSlope: 0
+        outSlope: 0
+        tangentMode: 136
+        weightedMode: 0
+        inWeight: 0.33333334
+        outWeight: 0.33333334
+      - serializedVersion: 3
+        time: 0.93333334
+        value: 0
+        inSlope: 0
+        outSlope: 0
+        tangentMode: 136
+        weightedMode: 0
+        inWeight: 0.33333334
+        outWeight: 0.33333334
+      m_PreInfinity: 2
+      m_PostInfinity: 2
+      m_RotationOrder: 4
+    attribute: m_Color.a
+    path: 
+    classID: 114
+    script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+    flags: 0
+  m_PPtrCurves: []
+  m_SampleRate: 120
+  m_WrapMode: 0
+  m_Bounds:
+    m_Center: {x: 0, y: 0, z: 0}
+    m_Extent: {x: 0, y: 0, z: 0}
+  m_ClipBindingConstant:
+    genericBindings:
+    - serializedVersion: 2
+      path: 0
+      attribute: 304273561
+      script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+      typeID: 114
+      customType: 0
+      isPPtrCurve: 0
+      isIntCurve: 0
+      isSerializeReferenceCurve: 0
+    pptrCurveMapping: []
+  m_AnimationClipSettings:
+    serializedVersion: 2
+    m_AdditiveReferencePoseClip: {fileID: 0}
+    m_AdditiveReferencePoseTime: 0
+    m_StartTime: 0
+    m_StopTime: 0.93333334
+    m_OrientationOffsetY: 0
+    m_Level: 0
+    m_CycleOffset: 0
+    m_HasAdditiveReferencePose: 0
+    m_LoopTime: 0
+    m_LoopBlend: 0
+    m_LoopBlendOrientation: 0
+    m_LoopBlendPositionY: 0
+    m_LoopBlendPositionXZ: 0
+    m_KeepOriginalOrientation: 0
+    m_KeepOriginalPositionY: 1
+    m_KeepOriginalPositionXZ: 0
+    m_HeightFromFeet: 0
+    m_Mirror: 0
+  m_EditorCurves:
+  - serializedVersion: 2
+    curve:
+      serializedVersion: 2
+      m_Curve:
+      - serializedVersion: 3
+        time: 0
+        value: 1
+        inSlope: 0
+        outSlope: 0
+        tangentMode: 136
+        weightedMode: 0
+        inWeight: 0.33333334
+        outWeight: 0.33333334
+      - serializedVersion: 3
+        time: 0.93333334
+        value: 0
+        inSlope: 0
+        outSlope: 0
+        tangentMode: 136
+        weightedMode: 0
+        inWeight: 0.33333334
+        outWeight: 0.33333334
+      m_PreInfinity: 2
+      m_PostInfinity: 2
+      m_RotationOrder: 4
+    attribute: m_Color.a
+    path: 
+    classID: 114
+    script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+    flags: 0
+  m_EulerEditorCurves: []
+  m_HasGenericRootTransform: 0
+  m_HasMotionFloatCurves: 0
+  m_Events: []
 --- !u!74 &5136047176708661745
 AnimationClip:
   m_ObjectHideFlags: 0
@@ -1717,8 +1841,77 @@ MonoBehaviour:
     m_PostExtrapolationMode: 1
     m_PreExtrapolationMode: 1
     m_PostExtrapolationTime: Infinity
-    m_PreExtrapolationTime: 8.85
+    m_PreExtrapolationTime: 0
     m_DisplayName: Recorded (2)
+  - m_Version: 1
+    m_Start: 0
+    m_ClipIn: 0
+    m_Asset: {fileID: 2057740836184029763}
+    m_Duration: 0.9583333333333334
+    m_TimeScale: 1
+    m_ParentTrack: {fileID: 8908925201628745394}
+    m_EaseInDuration: 0
+    m_EaseOutDuration: 0
+    m_BlendInDuration: -1
+    m_BlendOutDuration: -1
+    m_MixInCurve:
+      serializedVersion: 2
+      m_Curve:
+      - serializedVersion: 3
+        time: 0
+        value: 0
+        inSlope: 0
+        outSlope: 0
+        tangentMode: 0
+        weightedMode: 0
+        inWeight: 0
+        outWeight: 0
+      - serializedVersion: 3
+        time: 1
+        value: 1
+        inSlope: 0
+        outSlope: 0
+        tangentMode: 0
+        weightedMode: 0
+        inWeight: 0
+        outWeight: 0
+      m_PreInfinity: 2
+      m_PostInfinity: 2
+      m_RotationOrder: 4
+    m_MixOutCurve:
+      serializedVersion: 2
+      m_Curve:
+      - serializedVersion: 3
+        time: 0
+        value: 1
+        inSlope: 0
+        outSlope: 0
+        tangentMode: 0
+        weightedMode: 0
+        inWeight: 0
+        outWeight: 0
+      - serializedVersion: 3
+        time: 1
+        value: 0
+        inSlope: 0
+        outSlope: 0
+        tangentMode: 0
+        weightedMode: 0
+        inWeight: 0
+        outWeight: 0
+      m_PreInfinity: 2
+      m_PostInfinity: 2
+      m_RotationOrder: 4
+    m_BlendInCurveMode: 0
+    m_BlendOutCurveMode: 0
+    m_ExposedParameterNames: []
+    m_AnimationCurves: {fileID: 0}
+    m_Recordable: 1
+    m_PostExtrapolationMode: 1
+    m_PreExtrapolationMode: 1
+    m_PostExtrapolationTime: 7.891666666666667
+    m_PreExtrapolationTime: 0
+    m_DisplayName: Recorded (3)
   m_Markers:
     m_Objects: []
   m_InfiniteClipPreExtrapolation: 1
-- 
GitLab