From 9499efe5189217e0926b004d24ec4dbc1e9fac71 Mon Sep 17 00:00:00 2001 From: scove Date: Fri, 5 Jun 2026 12:22:00 +0700 Subject: [PATCH] Update --- .gemini-workspace-history/active-context.md | 55 +++++- .idea/.idea.HALLUCINATE/.idea/workspace.xml | 79 +++----- .../Basic Locomotion/Mixers/FOR AI GAME.mixer | 173 ++++++++++++++++++ .../Mixers/FOR AI GAME.mixer.meta | 8 + Assets/Audio/For AI GAME.meta | 8 + Assets/Audio/For AI GAME/Win.mp3 | Bin 0 -> 67709 bytes Assets/Audio/For AI GAME/Win.mp3.meta | 23 +++ Assets/Audio/For AI GAME/alert.mp3 | Bin 0 -> 38452 bytes Assets/Audio/For AI GAME/alert.mp3.meta | 23 +++ Assets/Audio/For AI GAME/gun shot.mp3 | Bin 0 -> 35328 bytes Assets/Audio/For AI GAME/gun shot.mp3.meta | 23 +++ Assets/Audio/For AI GAME/hit.mp3 | Bin 0 -> 23405 bytes Assets/Audio/For AI GAME/hit.mp3.meta | 23 +++ Assets/Audio/For AI GAME/interact.mp3 | Bin 0 -> 67709 bytes Assets/Audio/For AI GAME/interact.mp3.meta | 23 +++ Assets/Audio/For AI GAME/response.mp3 | Bin 0 -> 104489 bytes Assets/Audio/For AI GAME/response.mp3.meta | 23 +++ Assets/Audio/For AI GAME/warning.mp3 | Bin 0 -> 39288 bytes Assets/Audio/For AI GAME/warning.mp3.meta | 23 +++ .../Sound Track/steam archement sound.mp3 | Bin 0 -> 18432 bytes .../steam archement sound.mp3.meta | 23 +++ .../Invector@V-Bot/Materials/base-1.mat | 3 +- .../Invector@V-Bot/Materials/base-2.mat | 3 +- .../Invector@V-Bot/Materials/chrome.mat | 1 + .../Invector@V-Bot/Materials/metal.mat | 3 +- .../Invector@V-Bot/Materials/rubber.mat | 3 +- .../ArrowLifeSettings.asset | 0 .../ArrowLifeSettings.asset.meta | 0 .../CameraStates.meta | 0 .../vBasicLocomotiont@CameraState.asset | 0 .../vBasicLocomotiont@CameraState.asset.meta | 0 .../vFastShooter@CameraState.asset | 0 .../vFastShooter@CameraState.asset.meta | 0 .../vMeleeCombat@CameraState.asset | 0 .../vMeleeCombat@CameraState.asset.meta | 0 .../vShooterMelee@CameraState.asset | 0 .../vShooterMelee@CameraState.asset.meta | 0 .../vShooterOnly@CameraState.asset | 0 .../vShooterOnly@CameraState.asset.meta | 0 Assets/Presets/FOR AI GAME.asset | 60 ++++++ Assets/Presets/FOR AI GAME.asset.meta | 8 + Assets/Scenes/Cho môn AI/Only AI.unity | 50 ++++- 42 files changed, 570 insertions(+), 68 deletions(-) create mode 100644 Assets/Audio/Basic Locomotion/Mixers/FOR AI GAME.mixer create mode 100644 Assets/Audio/Basic Locomotion/Mixers/FOR AI GAME.mixer.meta create mode 100644 Assets/Audio/For AI GAME.meta create mode 100644 Assets/Audio/For AI GAME/Win.mp3 create mode 100644 Assets/Audio/For AI GAME/Win.mp3.meta create mode 100644 Assets/Audio/For AI GAME/alert.mp3 create mode 100644 Assets/Audio/For AI GAME/alert.mp3.meta create mode 100644 Assets/Audio/For AI GAME/gun shot.mp3 create mode 100644 Assets/Audio/For AI GAME/gun shot.mp3.meta create mode 100644 Assets/Audio/For AI GAME/hit.mp3 create mode 100644 Assets/Audio/For AI GAME/hit.mp3.meta create mode 100644 Assets/Audio/For AI GAME/interact.mp3 create mode 100644 Assets/Audio/For AI GAME/interact.mp3.meta create mode 100644 Assets/Audio/For AI GAME/response.mp3 create mode 100644 Assets/Audio/For AI GAME/response.mp3.meta create mode 100644 Assets/Audio/For AI GAME/warning.mp3 create mode 100644 Assets/Audio/For AI GAME/warning.mp3.meta create mode 100644 Assets/Audio/Sound Track/steam archement sound.mp3 create mode 100644 Assets/Audio/Sound Track/steam archement sound.mp3.meta rename Assets/{Scripts/Player/ArcherySystem/Prefabs => Presets}/ArrowLifeSettings.asset (100%) rename Assets/{Scripts/Player/ArcherySystem/Prefabs => Presets}/ArrowLifeSettings.asset.meta (100%) rename Assets/{Scripts/Player/CharacterCreator => Presets}/CameraStates.meta (100%) rename Assets/{Scripts/Player/CharacterCreator => Presets}/CameraStates/vBasicLocomotiont@CameraState.asset (100%) rename Assets/{Scripts/Player/CharacterCreator => Presets}/CameraStates/vBasicLocomotiont@CameraState.asset.meta (100%) rename Assets/{Scripts/Player/CharacterCreator => Presets}/CameraStates/vFastShooter@CameraState.asset (100%) rename Assets/{Scripts/Player/CharacterCreator => Presets}/CameraStates/vFastShooter@CameraState.asset.meta (100%) rename Assets/{Scripts/Player/CharacterCreator => Presets}/CameraStates/vMeleeCombat@CameraState.asset (100%) rename Assets/{Scripts/Player/CharacterCreator => Presets}/CameraStates/vMeleeCombat@CameraState.asset.meta (100%) rename Assets/{Scripts/Player/CharacterCreator => Presets}/CameraStates/vShooterMelee@CameraState.asset (100%) rename Assets/{Scripts/Player/CharacterCreator => Presets}/CameraStates/vShooterMelee@CameraState.asset.meta (100%) rename Assets/{Scripts/Player/CharacterCreator => Presets}/CameraStates/vShooterOnly@CameraState.asset (100%) rename Assets/{Scripts/Player/CharacterCreator => Presets}/CameraStates/vShooterOnly@CameraState.asset.meta (100%) create mode 100644 Assets/Presets/FOR AI GAME.asset create mode 100644 Assets/Presets/FOR AI GAME.asset.meta diff --git a/.gemini-workspace-history/active-context.md b/.gemini-workspace-history/active-context.md index 3a22e1bc..bbe81d14 100644 --- a/.gemini-workspace-history/active-context.md +++ b/.gemini-workspace-history/active-context.md @@ -1,7 +1,50 @@ -## Full Previous Session Transcript (from session-2026-05-03-21-30.json.gz) +## Full Previous Session Transcript (from session-2026-06-04-23-01.json.gz) -{"sessionId":"80c3dd2c-c638-41b5-a07b-9ef013ad0353","projectHash":"7f18566d1c908d23dd7efd873d3cb46f94e7b050573aabcd900d1036d7568a6b","startTime":"2026-05-03T14:29:43.753Z","lastUpdated":"2026-05-03T14:29:43.753Z","kind":"main"} -{"id":"f7d8c960-b144-4e3d-811e-bf0b7126104c","timestamp":"2026-05-03T14:29:43.920Z","type":"info","content":"You have 1 extension with an update available. Run \"/extensions update caveman\"."} -{"$set":{"lastUpdated":"2026-05-03T14:29:43.921Z"}} -{"id":"ea9ba94c-7a81-4542-ba31-1194c50909a5","timestamp":"2026-05-03T14:29:44.372Z","type":"info","content":"No summary found for the last session. Please use the 'workspace-summarizer' skill to generate one if needed."} -{"$set":{"lastUpdated":"2026-05-03T14:29:44.373Z"}} +{"sessionId":"d701ffb7-bb80-48c7-a18b-30dcbd000b6e","projectHash":"7f18566d1c908d23dd7efd873d3cb46f94e7b050573aabcd900d1036d7568a6b","startTime":"2026-06-04T15:52:51.857Z","lastUpdated":"2026-06-04T15:52:51.857Z","kind":"main"} +{"$set":{"messages":[{"id":"d04923d38bb0f6017037e74183378ef4","timestamp":"2026-06-04T15:52:51.858Z","type":"user","content":[{"text":"\nThis is the Gemini CLI. We are setting up the context for our chat.\nToday's date is Thursday, June 4, 2026 (formatted according to the user's locale).\nMy operating system is: win32\nThe project's temporary directory is: C:\\Users\\scove\\.gemini\\tmp\\hallucinate\n- **Workspace Directories:**\n - E:\\Learning_Progress\\Projects\\HALLUCINATE\n - C:\\Users\\scove\\.gemini\\extensions\\caveman\\skills\\caveman\n - C:\\Users\\scove\\.gemini\\extensions\\superpowers\\skills\\using-superpowers\n- **Directory Structure:**\n\nShowing up to 200 items (files + folders). Folders or files indicated with ... contain more items not shown, were ignored, or the display limit (200 items) was reached.\n\nE:\\Learning_Progress\\Projects\\HALLUCINATE\\\n├───.gitignore\n├───GEMINI.md\n├───README.md\n├───.ai\\\n│ └───mcp\\\n├───.gemini-workspace-history\\\n│ ├───active-context.md\n│ ├───session-2026-04-30-21-39.json.gz\n│ ├───session-2026-04-30-21-47.json.gz\n│ ├───session-2026-05-01-01-26.json.gz\n│ ├───session-2026-05-01-01-51.json.gz\n│ ├───session-2026-05-01-02-25.json.gz\n│ ├───session-2026-05-01-14-48.json.gz\n│ ├───session-2026-05-01-16-53.json.gz\n│ ├───session-2026-05-01-17-28.json.gz\n│ ├───session-2026-05-01-17-29.json.gz\n│ ├───session-2026-05-01-17-31.json.gz\n│ ├───session-2026-05-01-18-10.json.gz\n│ ├───session-2026-05-01-20-30.json.gz\n│ ├───session-2026-05-01-20-42.json.gz\n│ ├───session-2026-05-01-21-05.json.gz\n│ ├───session-2026-05-01-21-07.json.gz\n│ ├───session-2026-05-01-21-10.json.gz\n│ ├───session-2026-05-01-21-11.json.gz\n│ ├───session-2026-05-01-21-51.json.gz\n│ ├───session-2026-05-01-23-27.json.gz\n│ ├───session-2026-05-02-00-00.json.gz\n│ ├───session-2026-05-03-21-30.json.gz\n│ └───summary-2026-04-30.md\n├───.git\\...\n├───.idea\\\n│ ├───.idea.HALLUCINATE\\\n│ │ └───.idea\\\n│ └───.idea.HALLUCINATION\\\n│ └───.idea\\\n├───Assets\\\n│ ├───_Recovery.meta\n│ ├───All for one.meta\n│ ├───Animation.meta\n│ ├───Audio.meta\n│ ├───Editor.meta\n│ ├───Fonts.meta\n│ ├───InventoryData.json\n│ ├───InventoryData.json.meta\n│ ├───Materials.meta\n│ ├───Models.meta\n│ ├───Plugin.meta\n│ ├───Prefabs.meta\n│ ├───Presets.meta\n│ ├───Resources.meta\n│ ├───Scenes.meta\n│ ├───Scove.meta\n│ ├───Scripts.meta\n│ ├───Settings.meta\n│ ├───Shaders.meta\n│ ├───TEST CUA TUAN.meta\n│ ├───Textures.meta\n│ ├───Third Parties.meta\n│ ├───UI.meta\n│ ├───_Recovery\\\n│ │ ├───0 (1).unity\n│ │ ├───0 (1).unity.meta\n│ │ ├───0 (10).unity\n│ │ ├───0 (10).unity.meta\n│ │ ├───0 (11).unity\n│ │ ├───0 (11).unity.meta\n│ │ ├───0 (12).unity\n│ │ ├───0 (12).unity.meta\n│ │ ├───0 (13).unity\n│ │ ├───0 (13).unity.meta\n│ │ ├───0 (14).unity\n│ │ ├───0 (14).unity.meta\n│ │ ├───0 (2).unity\n│ │ ├───0 (2).unity.meta\n│ │ ├───0 (3).unity\n│ │ ├───0 (3).unity.meta\n│ │ ├───0 (4).unity\n│ │ ├───0 (4).unity.meta\n│ │ ├───0 (5).unity\n│ │ ├───0 (5).unity.meta\n│ │ ├───0 (6).unity\n│ │ ├───0 (6).unity.meta\n│ │ ├───0 (7).unity\n│ │ ├───0 (7).unity.meta\n│ │ ├───0 (8).unity\n│ │ ├───0 (8).unity.meta\n│ │ ├───0 (9).unity\n│ │ ├───0 (9).unity.meta\n│ │ ├───0.unity\n│ │ └───0.unity.meta\n│ ├───.gemini-workspace-history\\\n│ │ ├───active-context.md\n│ │ ├───session-2026-05-02-00-01.json.gz\n│ │ └───session-2026-05-02-19-42.json.gz\n│ ├───.idea\\\n│ │ ├───.gitignore\n│ │ ├───encodings.xml\n│ │ ├───indexLayout.xml\n│ │ └───vcs.xml\n│ ├───All for one\\\n│ │ ├───Basic Locomotion Demo.meta\n│ │ ├───Invector_InventoryExamples.unity\n│ │ ├───Invector_InventoryExamples.unity.meta\n│ │ ├───Melee Demo.meta\n│ │ ├───Shooting Demo.meta\n│ │ ├───Simple Melee AI.meta\n│ │ ├───TargetTrainingMiniGame.meta\n│ │ ├───Basic Locomotion Demo\\\n│ │ ├───Melee Demo\\\n│ │ ├───Shooting Demo\\\n│ │ ├───Simple Melee AI\\\n│ │ └───TargetTrainingMiniGame\\\n│ ├───Animation\\\n│ │ ├───Basic Locomotion.meta\n│ │ ├───Melee Combat.meta\n│ │ ├───Player Prototype.meta\n│ │ ├───Shooter.meta\n│ │ ├───UI Animation.meta\n│ │ ├───Basic Locomotion\\\n│ │ └───...\n│ ├───Audio\\\n│ ├───Editor\\\n│ ├───Fonts\\\n│ ├───Materials\\\n│ ├───Models\\\n│ ├───Plugin\\\n│ ├───Prefabs\\\n│ ├───Presets\\\n│ ├───Resources\\\n│ ├───Scenes\\\n│ ├───Scove\\\n│ ├───Scripts\\\n│ ├───Settings\\\n│ ├───Shaders\\\n│ ├───TEST CUA TUAN\\\n│ ├───Textures\\\n│ ├───Third Parties\\\n│ └───UI\\\n├───Build\\...\n├───document\\\n├───Library\\...\n├───Logs\\...\n├───obj\\...\n├───Packages\\\n│ ├───manifest.json\n│ ├───packages-lock.json\n│ └───app.rive.rive-unity\\\n├───ProjectSettings\\\n│ ├───AudioManager.asset\n│ ├───ClusterInputManager.asset\n│ ├───DynamicsManager.asset\n│ ├───EditorBuildSettings.asset\n│ ├───EditorSettings.asset\n│ ├───GraphicsSettings.asset\n│ ├───InputManager.asset\n│ ├───MemorySettings.asset\n│ ├───MultiplayerManager.asset\n│ ├───NavMeshAreas.asset\n│ ├───PackageManagerSettings.asset\n│ ├───Physics2DSettings.asset\n│ ├───PresetManager.asset\n│ ├───ProjectSettings.asset\n│ ├───ProjectVersion.txt\n│ ├───QualitySettings.asset\n│ ├───SceneTemplateSettings.json\n│ ├───ShaderGraphSettings.asset\n│ ├───TagManager.asset\n│ ├───TimelineSettings.asset\n│ ├───TimeManager.asset\n│ ├───UnityConnectSettings.asset\n│ ├───URPProjectSettings.asset\n│ ├───VersionControlSettings.asset\n│ ├───VFXManager.asset\n│ ├───XRSettings.asset\n│ └───Packages\\\n├───Temp\\...\n├───UIElementsSchema\\\n│ ├───UIElements.xsd\n│ ├───Unity.Multiplayer.PlayMode.Editor.xsd\n│ ├───Unity.Profiling.Editor.UI.xsd\n│ ├───Unity.Profiling.Editor.xsd\n│ ├───Unity.UI.Builder.xsd\n│ ├───Unity.UIToolkit.Editor.xsd\n│ ├───UnityEditor.Accessibility.xsd\n│ ├───UnityEditor.Audio.UIElements.xsd\n│ ├───UnityEditor.Experimental.GraphView.xsd\n│ ├───UnityEditor.Inspector.GraphicsSettingsInspectors.xsd\n│ ├───UnityEditor.Inspector.xsd\n│ ├───UnityEditor.Overlays.xsd\n│ ├───UnityEditor.PackageManager.UI.Internal.xsd\n│ ├───UnityEditor.Rendering.xsd\n│ ├───UnityEditor.Search.xsd\n│ ├───UnityEditor.ShaderGraph.Drawing.xsd\n│ ├───UnityEditor.ShortcutManagement.xsd\n│ ├───UnityEditor.Toolbars.xsd\n│ ├───UnityEditor.U2D.Sprites.SpriteEditorTool.xsd\n│ ├───UnityEditor.UIElements.Debugger.xsd\n│ ├───UnityEditor.UIElements.ProjectSettings.xsd\n│ ├───UnityEditor.UIElements.xsd\n│ └───UnityEngine.UIElements.xsd\n└───UserSettings\\...\nShowing up to 200 items (files + folders).\n\nC:\\Users\\scove\\.gemini\\extensions\\caveman\\skills\\caveman\\\n└───SKILL.md\nShowing up to 200 items (files + folders).\n\nC:\\Users\\scove\\.gemini\\extensions\\superpowers\\skills\\using-superpowers\\\n├───SKILL.md\n└───references\\\n ├───codex-tools.md\n ├───copilot-tools.md\n └───gemini-tools.md\n\n\n\n\n--- Context from: C:/Users/scove/.gemini/extensions/caveman/GEMINI.md ---\n\n---\nname: caveman\ndescription: >\n Ultra-compressed communication mode. Cuts token usage ~75% by speaking like caveman\n while keeping full technical accuracy. Supports intensity levels: lite, full (default), ultra,\n wenyan-lite, wenyan-full, wenyan-ultra.\n Use when user says \"caveman mode\", \"talk like caveman\", \"use caveman\", \"less tokens\",\n \"be brief\", or invokes /caveman. Also auto-triggers when token efficiency is requested.\n---\n\nRespond terse like smart caveman. All technical substance stay. Only fluff die.\n\n## Persistence\n\nACTIVE EVERY RESPONSE. No revert after many turns. No filler drift. Still active if unsure. Off only: \"stop caveman\" / \"normal mode\".\n\nDefault: **full**. Switch: `/caveman lite|full|ultra`.\n\n## Rules\n\nDrop: articles (a/an/the), filler (just/really/basically/actually/simply), pleasantries (sure/certainly/of course/happy to), hedging. Fragments OK. Short synonyms (big not extensive, fix not \"implement a solution for\"). Technical terms exact. Code blocks unchanged. Errors quoted exact.\n\nPattern: `[thing] [action] [reason]. [next step].`\n\nNot: \"Sure! I'd be happy to help you with that. The issue you're experiencing is likely caused by...\"\nYes: \"Bug in auth middleware. Token expiry check use `<` not `<=`. Fix:\"\n\n## Intensity\n\n| Level | What change |\n|-------|------------|\n| **lite** | No filler/hedging. Keep articles + full sentences. Professional but tight |\n| **full** | Drop articles, fragments OK, short synonyms. Classic caveman |\n| **ultra** | Abbreviate (DB/auth/config/req/res/fn/impl), strip conjunctions, arrows for causality (X → Y), one word when one word enough |\n| **wenyan-lite** | Semi-classical. Drop filler/hedging but keep grammar structure, classical register |\n| **wenyan-full** | Maximum classical terseness. Fully 文言文. 80-90% character reduction. Classical sentence patterns, verbs precede objects, subjects often omitted, classical particles (之/乃/為/其) |\n| **wenyan-ultra** | Extreme abbreviation while keeping classical Chinese feel. Maximum compression, ultra terse |\n\nExample — \"Why React component re-render?\"\n- lite: \"Your component re-renders because you create a new object reference each render. Wrap it in `useMemo`.\"\n- full: \"New object ref each render. Inline object prop = new ref = re-render. Wrap in `useMemo`.\"\n- ultra: \"Inline obj prop → new ref → re-render. `useMemo`.\"\n- wenyan-lite: \"組件頻重繪,以每繪新生對象參照故。以 useMemo 包之。\"\n- wenyan-full: \"物出新參照,致重繪。useMemo .Wrap之。\"\n- wenyan-ultra: \"新參照→重繪。useMemo Wrap。\"\n\nExample — \"Explain database connection pooling.\"\n- lite: \"Connection pooling reuses open connections instead of creating new ones per request. Avoids repeated handshake overhead.\"\n- full: \"Pool reuse open DB connections. No new connection per request. Skip handshake overhead.\"\n- ultra: \"Pool = reuse DB conn. Skip handshake → fast under load.\"\n- wenyan-full: \"池reuse open connection。不每req新開。skip handshake overhead。\"\n- wenyan-ultra: \"池reuse conn。skip handshake → fast。\"\n\n## Auto-Clarity\n\nDrop caveman for: security warnings, irreversible action confirmations, multi-step sequences where fragment order risks misread, user asks to clarify or repeats question. Resume caveman after clear part done.\n\nExample — destructive op:\n> **Warning:** This will permanently delete all rows in the `users` table and cannot be undone.\n> ```sql\n> DROP TABLE users;\n> ```\n> Caveman resume. Verify backup exist first.\n\n## Boundaries\n\nCode/commits/PRs: write normal. \"stop caveman\" or \"normal mode\": revert. Level persist until changed or session end.\n\n\n---\nname: caveman-commit\ndescription: >\n Ultra-compressed commit message generator. Cuts noise from commit messages while preserving\n intent and reasoning. Conventional Commits format. Subject ≤50 chars, body only when \"why\"\n isn't obvious. Use when user says \"write a commit\", \"commit message\", \"generate commit\",\n \"/commit\", or invokes /caveman-commit. Auto-triggers when staging changes.\n---\n\nWrite commit messages terse and exact. Conventional Commits format. No fluff. Why over what.\n\n## Rules\n\n**Subject line:**\n- `(): ` — `` optional\n- Types: `feat`, `fix`, `refactor`, `perf`, `docs`, `test`, `chore`, `build`, `ci`, `style`, `revert`\n- Imperative mood: \"add\", \"fix\", \"remove\" — not \"added\", \"adds\", \"adding\"\n- ≤50 chars when possible, hard cap 72\n- No trailing period\n- Match project convention for capitalization after the colon\n\n**Body (only if needed):**\n- Skip entirely when subject is self-explanatory\n- Add body only for: non-obvious *why*, breaking changes, migration notes, linked issues\n- Wrap at 72 chars\n- Bullets `-` not `*`\n- Reference issues/PRs at end: `Closes #42`, `Refs #17`\n\n**What NEVER goes in:**\n- \"This commit does X\", \"I\", \"we\", \"now\", \"currently\" — the diff says what\n- \"As requested by...\" — use Co-authored-by trailer\n- \"Generated with Claude Code\" or any AI attribution\n- Emoji (unless project convention requires)\n- Restating the file name when scope already says it\n\n## Examples\n\nDiff: new endpoint for user profile with body explaining the why\n- ❌ \"feat: add a new endpoint to get user profile information from the database\"\n- ✅\n ```\n feat(api): add GET /users/:id/profile\n\n Mobile client needs profile data without the full user payload\n to reduce LTE bandwidth on cold-launch screens.\n\n Closes #128\n ```\n\nDiff: breaking API change\n- ✅\n ```\n feat(api)!: rename /v1/orders to /v1/checkout\n\n BREAKING CHANGE: clients on /v1/orders must migrate to /v1/checkout\n before 2026-06-01. Old route returns 410 after that date.\n ```\n\n## Auto-Clarity\n\nAlways include body for: breaking changes, security fixes, data migrations, anything reverting a prior commit. Never compress these into subject-only — future debuggers need the context.\n\n## Boundaries\n\nOnly generates the commit message. Does not run `git commit`, does not stage files, does not amend. Output the message as a code block ready to paste. \"stop caveman-commit\" or \"normal mode\": revert to verbose commit style.\n\n\n---\nname: caveman-review\ndescription: >\n Ultra-compressed code review comments. Cuts noise from PR feedback while preserving\n the actionable signal. Each comment is one line: location, problem, fix. Use when user\n says \"review this PR\", \"code review\", \"review the diff\", \"/review\", or invokes\n /caveman-review. Auto-triggers when reviewing pull requests.\n---\n\nWrite code review comments terse and actionable. One line per finding. Location, problem, fix. No throat-clearing.\n\n## Rules\n\n**Format:** `L: . .` — or `:L: ...` when reviewing multi-file diffs.\n\n**Severity prefix (optional, when mixed):**\n- `🔴 bug:` — broken behavior, will cause incident\n- `🟡 risk:` — works but fragile (race, missing null check, swallowed error)\n- `🔵 nit:` — style, naming, micro-optim. Author can ignore\n- `❓ q:` — genuine question, not a suggestion\n\n**Drop:**\n- \"I noticed that...\", \"It seems like...\", \"You might want to consider...\"\n- \"This is just a suggestion but...\" — use `nit:` instead\n- \"Great work!\", \"Looks good overall but...\" — say it once at the top, not per comment\n- Restating what the line does — the reviewer can read the diff\n- Hedging (\"perhaps\", \"maybe\", \"I think\") — if unsure use `q:`\n\n**Keep:**\n- Exact line numbers\n- Exact symbol/function/variable names in backticks\n- Concrete fix, not \"consider refactoring this\"\n- The *why* if the fix isn't obvious from the problem statement\n\n## Examples\n\n❌ \"I noticed that on line 42 you're not checking if the user object is null before accessing the email property. This could potentially cause a crash if the user is not found in the database. You might want to add a null check here.\"\n\n✅ `L42: 🔴 bug: user can be null after .find(). Add guard before .email.`\n\n❌ \"It looks like this function is doing a lot of things and might benefit from being broken up into smaller functions for readability.\"\n\n✅ `L88-140: 🔵 nit: 50-line fn does 4 things. Extract validate/normalize/persist.`\n\n❌ \"Have you considered what happens if the API returns a 429? I think we should probably handle that case.\"\n\n✅ `L23: 🟡 risk: no retry on 429. Wrap in withBackoff(3).`\n\n## Auto-Clarity\n\nDrop terse mode for: security findings (CVE-class bugs need full explanation + reference), architectural disagreements (need rationale, not just a one-liner), and onboarding contexts where the author is new and needs the \"why\". In those cases write a normal paragraph, then resume terse for the rest.\n\n## Boundaries\n\nReviews only — does not write the code fix, does not approve/request-changes, does not run linters. Output the comment(s) ready to paste into the PR. \"stop caveman-review\" or \"normal mode\": revert to verbose review style.\n\n\n---\nname: caveman-compress\ndescription: >\n Compress natural language memory files (CLAUDE.md, todos, preferences) into caveman format\n to save input tokens. Preserves all technical substance, code, URLs, and structure.\n Compressed version overwrites the original file. Human-readable backup saved as FILE.original.md.\n Trigger: /caveman:compress or \"compress memory file\"\n---\n\n# Caveman Compress\n\n## Purpose\n\nCompress natural language files (CLAUDE.md, todos, preferences) into caveman-speak to reduce input tokens. Compressed version overwrites original. Human-readable backup saved as `.original.md`.\n\n## Trigger\n\n`/caveman:compress ` or when user asks to compress a memory file.\n\n## Process\n\n1. The compression scripts live in `caveman-compress/scripts/` (adjacent to this SKILL.md). If the path is not immediately available, search for `caveman-compress/scripts/__main__.py`.\n\n2. Run:\n\ncd caveman-compress && python3 -m scripts \n\n3. The CLI will:\n- detect file type (no tokens)\n- call Claude to compress\n- validate output (no tokens)\n- if errors: cherry-pick fix with Claude (targeted fixes only, no recompression)\n- retry up to 2 times\n- if still failing after 2 retries: report error to user, leave original file untouched\n\n4. Return result to user\n\n## Compression Rules\n\n### Remove\n- Articles: a, an, the\n- Filler: just, really, basically, actually, simply, essentially, generally\n- Pleasantries: \"sure\", \"certainly\", \"of course\", \"happy to\", \"I'd recommend\"\n- Hedging: \"it might be worth\", \"you could consider\", \"it would be good to\"\n- Redundant phrasing: \"in order to\" → \"to\", \"make sure to\" → \"ensure\", \"the reason is because\" → \"because\"\n- Connective fluff: \"however\", \"furthermore\", \"additionally\", \"in addition\"\n\n### Preserve EXACTLY (never modify)\n- Code blocks (fenced ``` and indented)\n- Inline code (`backtick content`)\n- URLs and links (full URLs, markdown links)\n- File paths (`/src/components/...`, `./config.yaml`)\n- Commands (`npm install`, `git commit`, `docker build`)\n- Technical terms (library names, API names, protocols, algorithms)\n- Proper nouns (project names, people, companies)\n- Dates, version numbers, numeric values\n- Environment variables (`$HOME`, `NODE_ENV`)\n\n### Preserve Structure\n- All markdown headings (keep exact heading text, compress body below)\n- Bullet point hierarchy (keep nesting level)\n- Numbered lists (keep numbering)\n- Tables (compress cell text, keep structure)\n- Frontmatter/YAML headers in markdown files\n\n### Compress\n- Use short synonyms: \"big\" not \"extensive\", \"fix\" not \"implement a solution for\", \"use\" not \"utilize\"\n- Fragments OK: \"Run tests before commit\" not \"You should always run tests before committing\"\n- Drop \"you should\", \"make sure to\", \"remember to\" — just state the action\n- Merge redundant bullets that say the same thing differently\n- Keep one example where multiple examples show the same pattern\n\nCRITICAL RULE:\nAnything inside ``` ... ``` must be copied EXACTLY.\nDo not:\n- remove comments\n- remove spacing\n- reorder lines\n- shorten commands\n- simplify anything\n\nInline code (`...`) must be preserved EXACTLY.\nDo not modify anything inside backticks.\n\nIf file contains code blocks:\n- Treat code blocks as read-only regions\n- Only compress text outside them\n- Do not merge sections around code\n\n## Pattern\n\nOriginal:\n> You should always make sure to run the test suite before pushing any changes to the main branch. This is important because it helps catch bugs early and prevents broken builds from being deployed to production.\n\nCompressed:\n> Run tests before push to main. Catch bugs early, prevent broken prod deploys.\n\nOriginal:\n> The application uses a microservices architecture with the following components. The API gateway handles all incoming requests and routes them to the appropriate service. The authentication service is responsible for managing user sessions and JWT tokens.\n\nCompressed:\n> Microservices architecture. API gateway route all requests to services. Auth service manage user sessions + JWT tokens.\n\n## Boundaries\n\n- ONLY compress natural language files (.md, .txt, extensionless)\n- NEVER modify: .py, .js, .ts, .json, .yaml, .yml, .toml, .env, .lock, .css, .html, .xml, .sql, .sh\n- If file has mixed content (prose + code), compress ONLY the prose sections\n- If unsure whether something is code or prose, leave it unchanged\n- Original file is backed up as FILE.original.md before overwriting\n- Never compress FILE.original.md (skip it)\n\n\n--- End of Context from: C:/Users/scove/.gemini/extensions/caveman/GEMINI.md ---\n\n--- Context from: C:/Users/scove/.gemini/extensions/co-researcher/GEMINI.md ---\n# Co-Researcher Agents for Gemini\n\nThis project provides PhD-level research capabilities for your Gemini CLI sessions.\n\n## Available Agents\n\n### Available Skills\nSee `skills/` for the full list of capabilities, including:\n- `research-methodology`\n- `literature-review`\n- `critical-analysis`\n- `hypothesis-testing`\n- `lateral-thinking`\n- `qualitative-research`\n- `quantitative-analysis`\n- `peer-review`\n- `ethics-review`\n- `grant-writing`\n\n\n## How to use in Gemini CLI\n\nGemini automatically discovers these agents when you run it from this directory. You can invoke them by name:\n\n```bash\ngemini \"Use the literature-review skill to find recent papers on room temperature superconductors\"\ngemini \"Ask the critical-analysis skill to review my methodology in proposal.md\"\n```\n\nThe CLI reads the context from `agents/` and this `GEMINI.md` file automatically.\nIt also has access to the specialized skills in the `skills/` directory.\n\n### Available Skills\nSee `skills/` for the full list of capabilities, including:\n- `research-methodology`\n- `literature-review`\n- `critical-analysis`\n--- End of Context from: C:/Users/scove/.gemini/extensions/co-researcher/GEMINI.md ---\n\n--- Context from: C:/Users/scove/.gemini/extensions/oh-my-product/GEMINI.md ---\n# oh-my-product Extension Context\r\n\r\nThis extension is the canonical public entry point for the `oh-my-product` workflow.\r\n\r\n> **Shared context**: See `context/omp-core.md` for the full agent catalog, workflow stages, quality gates, and state conventions.\r\n\r\n## Context Layers (priority order)\r\n1. **System/Runtime** — Gemini CLI constraints (immutable)\r\n2. **Project Standards** — This file (`GEMINI.md`) + `context/omp-core.md`\r\n3. **Session Memory** — `.omp/state/`, memory entries\r\n4. **Active Task** — Current plan, taskboard, PRD\r\n5. **Execution Traces** — Recent iteration results\r\n\r\n## Product intent\r\n- Keep orchestration incremental (MVP-first).\r\n- Default runtime backend is **tmux**.\r\n- Subagents are **experimental opt-in** only.\r\n- Setup defaults to **project scope**.\r\n\r\n## Preferred command flow\r\n1. `oh-my-product setup --scope project` (alias: `omp setup --scope project`)\r\n2. ensure `.gemini/agents/catalog.json` exists (repo contributor fallback: `npm run setup:subagents`)\r\n3. `oh-my-product doctor`\r\n4. `oh-my-product team run --task \"...\"`\r\n5. `oh-my-product verify`\r\n6. Optional MCP server surface: `oh-my-product mcp serve --dry-run --json`\r\n7. Optional live team bridge: `omx team 3:executor \"...\"`\r\n\r\n## Discoverability notes\r\n- Gemini's extension install preview may expose skills more visibly than command prompts.\r\n- Preview is not the full feature list: extension command TOML assets can still be installed even when they are not explicitly enumerated during install.\r\n- If preview output looks sparse, verify availability with direct CLI commands instead of relying on the preview screen alone.\r\n\r\nPrimary command families:\r\n- `setup`\r\n- `doctor`\r\n- `team run` / `team assemble` / `team plan` / `team prd` / `team exec`\r\n- `team subagents`\r\n- `team verify`\r\n- `tools`\r\n- `hud`\r\n- `intent` / `mode` / `approval` / `reasoning`\r\n- `workspace` / `taskboard` / `checkpoint`\r\n- `ralph` / `ultrawork` / `loop`\r\n- `consensus` / `optimize` / `memory` / `rules`\r\n- `launch` / `stop`\r\n\r\n## Guardrails\r\n- Do not skip sandbox checks when a task requires shell execution.\r\n- Prefer actionable failure output (what failed + how to fix it).\r\n- Keep state transitions observable under `.omp/state/`.\r\n\r\n## Handoff expectations\r\nWhen executing team tasks, include:\r\n- command(s) run,\r\n- final exit status,\r\n- key state/log paths for follow-up.\n--- End of Context from: C:/Users/scove/.gemini/extensions/oh-my-product/GEMINI.md ---\n\n--- Context from: C:/Users/scove/.gemini/extensions/superpowers/GEMINI.md ---\n\n---\nname: using-superpowers\ndescription: Use when starting any conversation - establishes how to find and use skills, requiring Skill tool invocation before ANY response including clarifying questions\n---\n\n\nIf you were dispatched as a subagent to execute a specific task, skip this skill.\n\n\n\nIf you think there is even a 1% chance a skill might apply to what you are doing, you ABSOLUTELY MUST invoke the skill.\n\nIF A SKILL APPLIES TO YOUR TASK, YOU DO NOT HAVE A CHOICE. YOU MUST USE IT.\n\nThis is not negotiable. This is not optional. You cannot rationalize your way out of this.\n\n\n## Instruction Priority\n\nSuperpowers skills override default system prompt behavior, but **user instructions always take precedence**:\n\n1. **User's explicit instructions** (CLAUDE.md, GEMINI.md, AGENTS.md, direct requests) — highest priority\n2. **Superpowers skills** — override default system behavior where they conflict\n3. **Default system prompt** — lowest priority\n\nIf CLAUDE.md, GEMINI.md, or AGENTS.md says \"don't use TDD\" and a skill says \"always use TDD,\" follow the user's instructions. The user is in control.\n\n## How to Access Skills\n\n**In Claude Code:** Use the `Skill` tool. When you invoke a skill, its content is loaded and presented to you—follow it directly. Never use the Read tool on skill files.\n\n**In Copilot CLI:** Use the `skill` tool. Skills are auto-discovered from installed plugins. The `skill` tool works the same as Claude Code's `Skill` tool.\n\n**In Gemini CLI:** Skills activate via the `activate_skill` tool. Gemini loads skill metadata at session start and activates the full content on demand.\n\n**In other environments:** Check your platform's documentation for how skills are loaded.\n\n## Platform Adaptation\n\nSkills use Claude Code tool names. Non-CC platforms: see `references/copilot-tools.md` (Copilot CLI), `references/codex-tools.md` (Codex) for tool equivalents. Gemini CLI users get the tool mapping loaded automatically via GEMINI.md.\n\n# Using Skills\n\n## The Rule\n\n**Invoke relevant or requested skills BEFORE any response or action.** Even a 1% chance a skill might apply means that you should invoke the skill to check. If an invoked skill turns out to be wrong for the situation, you don't need to use it.\n\n```dot\ndigraph skill_flow {\n \"User message received\" [shape=doublecircle];\n \"About to EnterPlanMode?\" [shape=doublecircle];\n \"Already brainstormed?\" [shape=diamond];\n \"Invoke brainstorming skill\" [shape=box];\n \"Might any skill apply?\" [shape=diamond];\n \"Invoke Skill tool\" [shape=box];\n \"Announce: 'Using [skill] to [purpose]'\" [shape=box];\n \"Has checklist?\" [shape=diamond];\n \"Create TodoWrite todo per item\" [shape=box];\n \"Follow skill exactly\" [shape=box];\n \"Respond (including clarifications)\" [shape=doublecircle];\n\n \"About to EnterPlanMode?\" -> \"Already brainstormed?\";\n \"Already brainstormed?\" -> \"Invoke brainstorming skill\" [label=\"no\"];\n \"Already brainstormed?\" -> \"Might any skill apply?\" [label=\"yes\"];\n \"Invoke brainstorming skill\" -> \"Might any skill apply?\";\n\n \"User message received\" -> \"Might any skill apply?\";\n \"Might any skill apply?\" -> \"Invoke Skill tool\" [label=\"yes, even 1%\"];\n \"Might any skill apply?\" -> \"Respond (including clarifications)\" [label=\"definitely not\"];\n \"Invoke Skill tool\" -> \"Announce: 'Using [skill] to [purpose]'\";\n \"Announce: 'Using [skill] to [purpose]'\" -> \"Has checklist?\";\n \"Has checklist?\" -> \"Create TodoWrite todo per item\" [label=\"yes\"];\n \"Has checklist?\" -> \"Follow skill exactly\" [label=\"no\"];\n \"Create TodoWrite todo per item\" -> \"Follow skill exactly\";\n}\n```\n\n## Red Flags\n\nThese thoughts mean STOP—you're rationalizing:\n\n| Thought | Reality |\n|---------|---------|\n| \"This is just a simple question\" | Questions are tasks. Check for skills. |\n| \"I need more context first\" | Skill check comes BEFORE clarifying questions. |\n| \"Let me explore the codebase first\" | Skills tell you HOW to explore. Check first. |\n| \"I can check git/files quickly\" | Files lack conversation context. Check for skills. |\n| \"Let me gather information first\" | Skills tell you HOW to gather information. |\n| \"This doesn't need a formal skill\" | If a skill exists, use it. |\n| \"I remember this skill\" | Skills evolve. Read current version. |\n| \"This doesn't count as a task\" | Action = task. Check for skills. |\n| \"The skill is overkill\" | Simple things become complex. Use it. |\n| \"I'll just do this one thing first\" | Check BEFORE doing anything. |\n| \"This feels productive\" | Undisciplined action wastes time. Skills prevent this. |\n| \"I know what that means\" | Knowing the concept ≠ using the skill. Invoke it. |\n\n## Skill Priority\n\nWhen multiple skills could apply, use this order:\n\n1. **Process skills first** (brainstorming, debugging) - these determine HOW to approach the task\n2. **Implementation skills second** (frontend-design, mcp-builder) - these guide execution\n\n\"Let's build X\" → brainstorming first, then implementation skills.\n\"Fix this bug\" → debugging first, then domain-specific skills.\n\n## Skill Types\n\n**Rigid** (TDD, debugging): Follow exactly. Don't adapt away discipline.\n\n**Flexible** (patterns): Adapt principles to context.\n\nThe skill itself tells you which.\n\n## User Instructions\n\nInstructions say WHAT, not HOW. \"Add X\" or \"Fix Y\" doesn't mean skip workflows.\n\n\n\n# Gemini CLI Tool Mapping\n\nSkills use Claude Code tool names. When you encounter these in a skill, use your platform equivalent:\n\n| Skill references | Gemini CLI equivalent |\n|-----------------|----------------------|\n| `Read` (file reading) | `read_file` |\n| `Write` (file creation) | `write_file` |\n| `Edit` (file editing) | `replace` |\n| `Bash` (run commands) | `run_shell_command` |\n| `Grep` (search file content) | `grep_search` |\n| `Glob` (search files by name) | `glob` |\n| `TodoWrite` (task tracking) | `write_todos` |\n| `Skill` tool (invoke a skill) | `activate_skill` |\n| `WebSearch` | `google_web_search` |\n| `WebFetch` | `web_fetch` |\n| `Task` tool (dispatch subagent) | No equivalent — Gemini CLI does not support subagents |\n\n## No subagent support\n\nGemini CLI has no equivalent to Claude Code's `Task` tool. Skills that rely on subagent dispatch (`subagent-driven-development`, `dispatching-parallel-agents`) will fall back to single-session execution via `executing-plans`.\n\n## Additional Gemini CLI tools\n\nThese tools are available in Gemini CLI but have no Claude Code equivalent:\n\n| Tool | Purpose |\n|------|---------|\n| `list_directory` | List files and subdirectories |\n| `save_memory` | Persist facts to GEMINI.md across sessions |\n| `ask_user` | Request structured input from the user |\n| `tracker_create_task` | Rich task management (create, update, list, visualize) |\n| `enter_plan_mode` / `exit_plan_mode` | Switch to read-only research mode before making changes |\n\n\n--- End of Context from: C:/Users/scove/.gemini/extensions/superpowers/GEMINI.md ---\n\n\n--- Context from: E:/Learning_Progress/Projects/HALLUCINATE/GEMINI.md ---\n/# 🌑 PROJECT HALLUCINATE - AI Instructions\r\n\r\nĐây là file hướng dẫn dành cho Gemini CLI để hiểu bối cảnh và quy chuẩn của dự án HALLUCINATE.\r\n\r\n## 🛠 Stack Kỹ thuật\r\n- **Engine:** Unity 6 (6000.3.10f1 LTS)\r\n- **Networking:** Photon Fusion (State Sync, Client-Side Prediction)\r\n- **Render Pipeline:** Universal Render Pipeline (URP)\r\n- **Architecture:** State Machine (Player), Interface-based Interaction (`IInteractable`).\r\n\r\n## 📂 Quy chuẩn Cấu trúc Thư mục\r\nTuân thủ nghiêm ngặt cấu trúc:\r\n- `Assets/Scripts/GameSetup/Maze/`: Các thuật toán tạo mê cung.\r\n- `Assets/Scripts/Player Controller/`: Logic di chuyển và State Machine của người chơi.\r\n- `Assets/Scripts/UI/`: Logic giao diện và Lobby.\r\n- `Assets/Scripts/Fusion/`: Các script liên quan đến Network và Spawner.\r\n\r\n## 📜 Quy ước Coding & Logic\r\n1. **Networking:**\r\n - Luôn sử dụng `FixedUpdateNetwork` thay vì `Update/FixedUpdate` cho các logic cần đồng bộ.\r\n - Sử dụng thuộc tính `[Networked]` cho các biến cần đồng bộ trạng thái.\r\n - Ưu tiên Client-Side Prediction và Reconciliation.\r\n2. **Character Control:**\r\n - Sử dụng State Machine để quản lý trạng thái di chuyển (Idle, Move, Sprint, Jump, Dash).\r\n - Camera Dynamics (Shake, FOV Kick) phải được xử lý mượt mà.\r\n3. **Interactions:**\r\n - Mọi vật thể có thể tương tác phải kế thừa từ `IInteractable` hoặc `BaseInteractable`.\r\n4. **Formatting:**\r\n - Luôn sử dụng PascalCase cho tên Method và Class.\r\n - camelCase cho biến private/local.\r\n\r\n## 🤖 Chỉ thị cho AI\r\n- **Phản hồi:** Ngắn gọn, súc tích, đi thẳng vào vấn đề kỹ thuật.\r\n- **An toàn:** Không bao giờ tự ý commit code trừ khi được yêu cầu rõ ràng.\r\n- **Tự động hóa:** Luôn cập nhật `MEMORY.md` sau mỗi thay đổi lớn hoặc khi kết thúc phiên làm việc.\n--- End of Context from: E:/Learning_Progress/Projects/HALLUCINATE/GEMINI.md ---\n\nThe following are instructions provided by the tool server 'context7':\n---[start of server instructions]---\nUse this server to fetch current documentation whenever the user asks about a library, framework, SDK, API, CLI tool, or cloud service -- even well-known ones like React, Next.js, Prisma, Express, Tailwind, Django, or Spring Boot. This includes API syntax, configuration, version migration, library-specific debugging, setup instructions, and CLI tool usage. Use even when you think you know the answer -- your training data may not reflect recent changes. Prefer this over web search for library docs.\n\nDo not use for: refactoring, writing scripts from scratch, debugging business logic, code review, or general programming concepts.\n---[end of server instructions]---\n\n\n"}]}],"lastUpdated":"2026-06-04T15:52:51.858Z"}} +{"id":"b4ea6283-8c94-48ed-991c-56637bbd98e8","timestamp":"2026-06-04T15:54:04.149Z","type":"user","content":[{"text":"Here is the user's editor context as a JSON object. This is for your information only.\n```json\n{\n \"activeFile\": {\n \"path\": \"E:/Learning_Progress/Projects/HALLUCINATE/Assets/Scripts/Player/CharacterController/vThirdPersonInput.cs\",\n \"cursor\": {\n \"line\": 609,\n \"character\": 55\n }\n },\n \"otherOpenFiles\": [\n \"E:/Learning_Progress/Projects/HALLUCINATE/Assets/Scripts/Camera/vThirdPersonCamera.cs\",\n \"E:/Learning_Progress/Projects/HALLUCINATE/Assets/Scripts/Camera/vThirdPersonCameraListData.cs\",\n \"E:/Learning_Progress/Projects/HALLUCINATE/Assets/Scripts/Camera/vThirdPersonCameraState.cs\",\n \"E:/Learning_Progress/Projects/HALLUCINATE/Assets/Scripts/Cho mon AI/FinishGate.cs\",\n \"E:/Learning_Progress/Projects/HALLUCINATE/Assets/Scripts/Interaction/Item Manager/vDrawHideMeleeWeapons.cs\",\n \"E:/Learning_Progress/Projects/HALLUCINATE/Assets/Scripts/Player/Shooter/vLockOnShooter.cs\"\n ]\n}\n```"}]} +{"$set":{"lastUpdated":"2026-06-04T15:54:04.150Z"}} +{"id":"fecaa807-b3d3-4491-9c41-25e20114ddca","timestamp":"2026-06-04T15:54:19.653Z","type":"user","content":[{"text":"giúp tôi thêm hệ thống âm thanh cho game này, đặc biết là âm thanh cho UI và khi nhặt vật phẩm @Assets\\Scripts\\Cho mon AI\\** lấy thông tin từ trong này cũng như các âm thanh cho AI NPC nữa @Assets\\Scripts\\AI NPC\\**"},{"text":"\n--- Content from referenced files ---"},{"text":"\nContent from @Assets\\Scripts\\AI NPC\\BehavourTreeCore.cs:\n"},{"text":"using System.Collections.Generic;\nusing UnityEngine;\n\npublic enum NodeState\n{\n Success, Failure, Running\n}\n\npublic abstract class Node\n{\n protected NodeState state;\n public NodeState State => state;\n public abstract NodeState Evaluate();\n}\n\npublic class Selector : Node\n{\n protected List nodes = new List(); // children nodes\n \n public Selector(List nodes)\n {\n this.nodes = nodes;\n }\n \n public override NodeState Evaluate()\n {\n foreach (var node in nodes)\n {\n switch (node.Evaluate())\n {\n case NodeState.Failure:\n continue;\n case NodeState.Success:\n state = NodeState.Success;\n return state;\n case NodeState.Running:\n state = NodeState.Running;\n return state;\n }\n }\n state = NodeState.Failure;\n return state;\n }\n}"},{"text":"\nContent from @Assets\\Scripts\\AI NPC\\BehavourTreeCore.cs.meta:\n"},{"text":"fileFormatVersion: 2\nguid: 05bb68bbe2862134ab45f5267ec4b6bb"},{"text":"\nContent from @Assets\\Scripts\\AI NPC\\EnemyAI.cs:\n"},{"text":"using System.Collections.Generic;\nusing UnityEngine;\nusing UnityEngine.AI; // Cần thiết để dùng NavMesh\n\n[RequireComponent(typeof(NavMeshAgent))] // Tự động thêm component này nếu chưa có\npublic class EnemyAI : MonoBehaviour\n{\n [Header(\"References\")]\n public Transform player;\n\n [Header(\"Detection\")]\n public float detectRange = 10f;\n public float moveSpeed = 3f;\n public float rotateSpeed = 50f;\n\n [Header(\"Patrol Area\")]\n public float patrolRadius = 15f; // Bán kính khu vực tuần tra\n public float patrolWaitTime = 2f; // Thời gian đứng chờ trước khi đi điểm khác\n private Vector3 startPosition;\n private float currentWaitTime;\n\n [Header(\"Artifact\")]\n public bool playerHasArtifact;\n\n [Header(\"Laser\")]\n public GameObject laserPrefab;\n public Transform firePoint;\n public float minShootDelay = 1f;\n public float maxShootDelay = 3f;\n\n private float nextShootTime;\n private NavMeshAgent agent;\n\n public Node behaviorTreeRoot;\n\n private void Start()\n {\n agent = GetComponent();\n agent.speed = moveSpeed;\n \n // Lưu lại vị trí ban đầu để làm tâm của khu vực tuần tra\n startPosition = transform.position; \n \n nextShootTime = Time.time + Random.Range(minShootDelay, maxShootDelay);\n InitBehaviorTree();\n FindPlayer();\n }\n\n private void Update()\n {\n // Nếu mất reference (Player chết hoặc chưa spawn), liên tục tìm lại\n if (player == null)\n {\n FindPlayer();\n }\n\n // Chỉ chạy AI nếu đã tìm thấy player (hoặc bạn có thể cho tuần tra ngay cả khi chưa có player tùy logic game)\n behaviorTreeRoot?.Evaluate();\n }\n\n private void FindPlayer()\n {\n GameObject playerObj = GameObject.FindGameObjectWithTag(\"Player\");\n if (playerObj != null)\n {\n player = playerObj.transform;\n }\n }\n\n private void InitBehaviorTree()\n {\n // Player có artifact -> focus + shoot\n var laserSequence = new Sequence(new List\n {\n new TaskNode(CheckHasArtifact),\n new TaskNode(ActionFocusAndShoot)\n });\n\n // Thấy player -> chạy tới\n var chaseSequence = new Sequence(new List\n {\n new TaskNode(CheckCanSeePlayer),\n new TaskNode(ActionMoveToPlayer)\n });\n\n // Không thấy ai -> Tuần tra bằng NavMesh\n var patrolNode = new TaskNode(ActionPatrol);\n\n behaviorTreeRoot = new Selector(new List\n {\n laserSequence,\n chaseSequence,\n patrolNode\n });\n }\n\n #region CONDITIONS\n\n private NodeState CheckHasArtifact()\n {\n return playerHasArtifact ? NodeState.Success : NodeState.Failure;\n }\n\n private NodeState CheckCanSeePlayer()\n {\n if (player == null) return NodeState.Failure;\n\n float distance = Vector3.Distance(transform.position, player.position);\n\n if (distance <= detectRange)\n {\n return NodeState.Success;\n }\n\n return NodeState.Failure;\n }\n\n #endregion\n\n #region ACTIONS\n\n private NodeState ActionPatrol()\n {\n // Debug.Log(\"Patrolling...\");\n if (!agent.isActiveAndEnabled || !agent.isOnNavMesh) return NodeState.Failure;\n\n agent.isStopped = false; // Đảm bảo NPC được phép di chuyển\n agent.speed = moveSpeed * 0.5f; // Đi dạo nên đi chậm lại một chút\n\n // Kiểm tra xem NPC đã đến điểm đích chưa\n if (!agent.pathPending && agent.remainingDistance <= agent.stoppingDistance)\n {\n currentWaitTime += Time.deltaTime;\n\n // Chờ một lúc rồi mới chọn điểm mới\n if (currentWaitTime >= patrolWaitTime)\n {\n // Tìm một điểm ngẫu nhiên trong bán kính cho trước\n Vector3 randomDirection = Random.insideUnitSphere * patrolRadius;\n randomDirection += startPosition;\n NavMeshHit hit;\n \n // Đảm bảo điểm ngẫu nhiên nằm trên bề mặt NavMesh hợp lệ\n if (NavMesh.SamplePosition(randomDirection, out hit, patrolRadius, 1))\n {\n agent.SetDestination(hit.position);\n }\n currentWaitTime = 0f;\n }\n }\n\n return NodeState.Running;\n }\n\n private NodeState ActionMoveToPlayer()\n {\n if (player == null) return NodeState.Failure;\n\n // Debug.Log(\"Chasing Player\");\n \n if (!agent.isActiveAndEnabled || !agent.isOnNavMesh) return NodeState.Failure;\n\n agent.isStopped = false;\n agent.speed = moveSpeed; // Phục hồi tốc độ rượt đuổi\n agent.SetDestination(player.position);\n\n return NodeState.Running;\n }\n\n private NodeState ActionFocusAndShoot()\n {\n if (player == null) return NodeState.Failure;\n\n // Debug.Log(\"Focus and Shoot!\");\n \n if (!agent.isActiveAndEnabled || !agent.isOnNavMesh) return NodeState.Failure;\n\n // Dừng NavMeshAgent lại để đứng bắn, tránh bị trượt\n agent.isStopped = true;\n\n // Focus player\n Vector3 dir = player.position - transform.position;\n dir.y = 0f;\n\n if (dir != Vector3.zero)\n {\n Quaternion targetRotation = Quaternion.LookRotation(dir);\n transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, rotateSpeed * Time.deltaTime);\n }\n\n // Shoot with random delay\n if (Time.time >= nextShootTime)\n {\n ShootLaser();\n nextShootTime = Time.time + Random.Range(minShootDelay, maxShootDelay);\n }\n\n return NodeState.Running;\n }\n\n private void ShootLaser()\n {\n if (laserPrefab == null || firePoint == null) return;\n Instantiate(laserPrefab, firePoint.position, firePoint.rotation);\n // Debug.Log(\"Laser Shot!\");\n }\n\n #endregion\n}"},{"text":"\nContent from @Assets\\Scripts\\AI NPC\\EnemyAI.cs.meta:\n"},{"text":"fileFormatVersion: 2\nguid: 2224c27a7e8678e4a85f6604ba5e669a"},{"text":"\nContent from @Assets\\Scripts\\AI NPC\\GerminiNPC.cs:\n"},{"text":"using System;\nusing System.Collections;\nusing System.Text;\nusing UnityEngine;\nusing UnityEngine.InputSystem;\nusing UnityEngine.Networking;\n\n[Serializable]\npublic class Part\n{\n public string text;\n}\n\n[Serializable]\npublic class Content\n{\n public Part[] parts;\n}\n\n[Serializable]\npublic class Candidate\n{\n public Content content;\n}\n\n[Serializable]\npublic class GeminiResponse\n{\n public Candidate[] candidates;\n}\n\npublic class GerminiNPC : MonoBehaviour\n{\n [SerializeField]\n private string apiKey = \"AQ.Ab8RN6I2hU_p8yHiPNNHtWzYBiLugbPP22gC6lzTWaYEWj4v0g\";\n [SerializeField]\n private string germiniURL =\n \"https://generativelanguage.googleapis.com/v1beta/models/gemini-flash-latest:generateContent\";\n\n public string npcPersona =\n \"Ngươi là một lão thợ rèn cọc cằn tên là Tom, ngươi rất ghét những kẻ mang phế liệu đến tiệm của mình. Chỉ trả lời ngắn gọn trong 2 câu, theo phong cách trung cổ.\";\n\n public string playerHeldItem = \"Thanh kiếm rỉ sét\";\n public float interactionDistance = 5f; // Khoảng cách tối đa để nói chuyện\n public Transform playerTransform; // Gán transform của Player vào đây\n\n private void Update()\n {\n if (Keyboard.current != null && Keyboard.current.fKey.wasPressedThisFrame)\n {\n if (CanSeePlayer())\n {\n StartCoroutine(GetGerminiReponse());\n }\n else\n {\n Debug.Log(\"Hệ thống: Bạn ở quá xa hoặc bị tường che khuất!\");\n }\n }\n }\n\n private bool CanSeePlayer()\n {\n if (playerTransform == null)\n {\n // Tự tìm player nếu chưa gán\n GameObject player = GameObject.FindGameObjectWithTag(\"Player\");\n if (player != null) playerTransform = player.transform;\n else return false;\n }\n\n // 1. Check khoảng cách\n float dist = Vector3.Distance(transform.position, playerTransform.position);\n if (dist > interactionDistance) return false;\n\n // 2. Check xem có bị tường che không (Raycast)\n Vector3 direction = (playerTransform.position + Vector3.up) - (transform.position + Vector3.up);\n RaycastHit hit;\n if (Physics.Raycast(transform.position + Vector3.up, direction, out hit, interactionDistance))\n {\n if (hit.collider.CompareTag(\"Player\") || hit.collider.transform.IsChildOf(playerTransform))\n {\n return true; // Thấy đầu/người player\n }\n }\n\n return false;\n }\n\n private IEnumerator GetGerminiReponse()\n {\n var jsonBody = $@\"{{\n \"\"systemInstruction\"\": {{\"\"parts\"\": [{{ \"\"text\"\": \"\"{npcPersona}\"\" }}]}},\n \"\"contents\"\": [{{\"\"parts\"\": [{{ \"\"text\"\": \"\"Ta muốn bán cho ông món đồ này: {playerHeldItem}\"\"}}]}}]\n }}\";\n\n // 1. Sửa tham số thành ?key= (trước đó là ?ket=)\n var requestURL = $\"{germiniURL}?key={apiKey}\";\n\n // 2. Sử dụng requestURL (có chứa key) thay vì germiniURL gốc\n using (var request = new UnityWebRequest(requestURL, \"POST\"))\n {\n var bodyRaw = Encoding.UTF8.GetBytes(jsonBody);\n request.uploadHandler = new UploadHandlerRaw(bodyRaw);\n request.downloadHandler = new DownloadHandlerBuffer();\n request.SetRequestHeader(\"Content-Type\", \"application/json\");\n\n yield return request.SendWebRequest();\n\n if (request.result == UnityWebRequest.Result.ProtocolError || request.result == UnityWebRequest.Result.ConnectionError)\n {\n Debug.LogError($\"[Gemini Error] {request.error} - Response: {request.downloadHandler.text}\");\n }\n else\n {\n var responseTEXT = request.downloadHandler.text;\n try\n {\n var geminiResponse = JsonUtility.FromJson(responseTEXT);\n if (geminiResponse != null && geminiResponse.candidates != null && geminiResponse.candidates.Length > 0)\n {\n var npcResponse = geminiResponse.candidates[0].content.parts[0].text;\n Debug.Log($\"Tom: {npcResponse}\");\n }\n }\n catch (Exception e)\n {\n Debug.LogError($\"[JSON Parse Error] {e.Message}\");\n }\n }\n }\n }\n}"},{"text":"\nContent from @Assets\\Scripts\\AI NPC\\GerminiNPC.cs.meta:\n"},{"text":"fileFormatVersion: 2\nguid: 4efda4e7a7dcac84ca938e2264ed0276"},{"text":"\nContent from @Assets\\Scripts\\AI NPC\\LaserProjectile.cs:\n"},{"text":"using UnityEngine;\n\npublic class LaserProjectile : MonoBehaviour\n{\n public float speed = 5f;\n public float lifeTime = 5f;\n\n private void Start()\n {\n Destroy(gameObject, lifeTime);\n }\n\n private void Update()\n {\n transform.position +=\n transform.forward *\n speed *\n Time.deltaTime;\n }\n\n private void OnTriggerEnter(Collider other)\n {\n if (other.CompareTag(\"Player\"))\n {\n Debug.Log(\"Player Hit\");\n\n Destroy(gameObject);\n }\n }\n}"},{"text":"\nContent from @Assets\\Scripts\\AI NPC\\LaserProjectile.cs.meta:\n"},{"text":"fileFormatVersion: 2\nguid: 4e4f602386d4d484ea7a2a3b0c19ac21"},{"text":"\nContent from @Assets\\Scripts\\AI NPC\\RagNPC.cs:\n"},{"text":"using UnityEngine;\n\npublic class RagNPC : MonoBehaviour\n{\n // Start is called once before the first execution of Update after the MonoBehaviour is created\n void Start()\n {\n \n }\n\n // Update is called once per frame\n void Update()\n {\n \n }\n}"},{"text":"\nContent from @Assets\\Scripts\\AI NPC\\RagNPC.cs.meta:\n"},{"text":"fileFormatVersion: 2\nguid: 30cdc86fe97fa95428a4b31052cfb22f"},{"text":"\nContent from @Assets\\Scripts\\AI NPC\\Sequence.cs:\n"},{"text":"using System.Collections.Generic;\n\npublic class Sequence : Node\n{\n private List nodes = new List();\n\n public Sequence(List nodes)\n {\n this.nodes = nodes;\n }\n\n public override NodeState Evaluate()\n {\n var isAnyChildRunning = false;\n foreach (var node in nodes)\n {\n switch (node.Evaluate())\n {\n case NodeState.Failure:\n state = NodeState.Failure;\n return state;\n case NodeState.Success:\n continue;\n case NodeState.Running:\n isAnyChildRunning = true;\n continue;\n }\n }\n state = isAnyChildRunning ? NodeState.Running : NodeState.Success;\n return state;\n }\n}\npublic class TaskNode : Node\n{\n public delegate NodeState TaskDelegate();\n private TaskDelegate action;\n\n public TaskNode(TaskDelegate action)\n {\n this.action = action;\n }\n \n public override NodeState Evaluate()\n {\n return action();\n }\n}"},{"text":"\nContent from @Assets\\Scripts\\AI NPC\\Sequence.cs.meta:\n"},{"text":"fileFormatVersion: 2\nguid: bfbdb66c26ddee84199051308b223b09"},{"text":"\nContent from @Assets\\Scripts\\Cho mon AI\\FinishGate.cs:\n"},{"text":"using UnityEngine;\nusing UnityEngine.SceneManagement;\nusing System.Collections;\n\npublic class FinishGate : MonoBehaviour\n{\n [Header(\"Cài đặt UI Chính\")]\n public GameObject winPanel; \n public GameObject warningUI; // Thông báo \"Bạn chưa nhặt rương nào!\"\n\n [Header(\"Cài đặt Sao trên HUD (Giao diện chính)\")]\n public GameObject hudStar1;\n public GameObject hudStar2;\n public GameObject hudStar3;\n\n [Header(\"Cài đặt Sao trên Bảng Win (Kết thúc)\")]\n public GameObject winStar1;\n public GameObject winStar2;\n public GameObject winStar3;\n\n private void Start()\n {\n Time.timeScale = 1f;\n \n if (winPanel != null) winPanel.SetActive(false);\n if (warningUI != null) warningUI.SetActive(false);\n \n // Ẩn tất cả sao lúc bắt đầu\n UpdateStarsUI(0);\n UpdateWinStarsUI(0);\n }\n\n private void OnTriggerEnter(Collider other)\n {\n if (other.CompareTag(\"Check\"))\n {\n PlayerInventory player = other.GetComponentInChildren();\n if (player == null) player = other.GetComponentInParent();\n\n if (player != null)\n {\n if (player.treasuresCollected > 0)\n {\n Debug.Log($\"[Gate] VỀ ĐÍCH! Kết thúc màn chơi với {player.treasuresCollected} sao.\");\n WinGame(player.treasuresCollected);\n }\n else\n {\n Debug.Log(\"[Gate] Bạn chưa nhặt rương nào, hãy đi tìm rương trước khi về.\");\n StopAllCoroutines();\n StartCoroutine(ShowTempUI(warningUI));\n }\n }\n }\n }\n\n // Hàm public để TreasureItem có thể gọi cập nhật HUD ngay khi nhặt\n public void UpdateStarsUI(int count)\n {\n if (hudStar1) hudStar1.SetActive(count >= 1);\n if (hudStar2) hudStar2.SetActive(count >= 2);\n if (hudStar3) hudStar3.SetActive(count >= 3);\n }\n\n void UpdateWinStarsUI(int count)\n {\n if (winStar1) winStar1.SetActive(count >= 1);\n if (winStar2) winStar2.SetActive(count >= 2);\n if (winStar3) winStar3.SetActive(count >= 3);\n }\n\n void WinGame(int count) \n {\n if (winPanel != null) \n {\n winPanel.SetActive(true);\n UpdateWinStarsUI(count); // Hiện số sao tương ứng trên bảng kết thúc\n }\n \n Time.timeScale = 0f; \n Cursor.lockState = CursorLockMode.None;\n Cursor.visible = true;\n }\n\n IEnumerator ShowTempUI(GameObject ui)\n {\n if (ui == null) yield break;\n ui.SetActive(true);\n yield return new WaitForSeconds(3f);\n ui.SetActive(false);\n }\n\n public void RestartGame() \n { \n Time.timeScale = 1f;\n SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);\n }\n\n public void QuitGame()\n {\n Application.Quit();\n #if UNITY_EDITOR\n UnityEditor.EditorApplication.isPlaying = false;\n #endif\n }\n}"},{"text":"\nContent from @Assets\\Scripts\\Cho mon AI\\FinishGate.cs.meta:\n"},{"text":"fileFormatVersion: 2\nguid: b97ebb3ed2a03534cbba257defc374a6"},{"text":"\nContent from @Assets\\Scripts\\Cho mon AI\\PlayerInventory.cs:\n"},{"text":"using UnityEngine;\n\npublic class PlayerInventory : MonoBehaviour\n{\n [Header(\"Cấu hình túi đồ\")]\n public int treasuresCollected = 0; // Số lượng rương đang cầm trên người trong lần chạy này\n public int totalTreasuresNeeded = 3; // Mục tiêu tối đa (3 rương = 3 sao)\n}"},{"text":"\nContent from @Assets\\Scripts\\Cho mon AI\\PlayerInventory.cs.meta:\n"},{"text":"fileFormatVersion: 2\nguid: 16509f68a17b8004096bcf4acce328d6"},{"text":"\nContent from @Assets\\Scripts\\Cho mon AI\\TreasureItem.cs:\n"},{"text":"using UnityEngine;\nusing System.Collections;\n\npublic class TreasureItem : MonoBehaviour\n{\n [Header(\"Cài đặt UI thông báo\")]\n public GameObject notificationText; // Text \"Đã nhặt Cổ vật\"\n\n private void OnTriggerEnter(Collider other)\n {\n if (other.CompareTag(\"Player\"))\n {\n PlayerInventory player = other.GetComponentInChildren();\n if (player == null) player = other.GetComponentInParent();\n \n if (player != null)\n {\n // 1. Tăng số lượng rương đang giữ\n player.treasuresCollected++;\n Debug.Log($\"[Chest] NHẶT THÀNH CÔNG! Số rương hiện tại: {player.treasuresCollected}\");\n\n // 2. Cập nhật sao trên HUD ngay lập tức (Tìm FinishGate để mượn hàm update)\n FinishGate gate = Object.FindAnyObjectByType();\n if (gate != null)\n {\n gate.UpdateStarsUI(player.treasuresCollected);\n }\n\n // 3. Kích hoạt trạng thái truy đuổi cho toàn bộ Enemy AI\n SetEnemiesAlertState(true);\n\n if (notificationText != null)\n {\n StopAllCoroutines();\n StartCoroutine(ShowNotification());\n }\n \n // Biến mất rương\n gameObject.SetActive(false);\n }\n }\n }\n\n private void SetEnemiesAlertState(bool state)\n {\n EnemyAI[] allEnemies = Object.FindObjectsByType(FindObjectsSortMode.None);\n foreach (EnemyAI enemy in allEnemies)\n {\n enemy.playerHasArtifact = state;\n }\n }\n\n IEnumerator ShowNotification()\n {\n notificationText.SetActive(true);\n yield return new WaitForSeconds(2f);\n notificationText.SetActive(false);\n }\n}"},{"text":"\nContent from @Assets\\Scripts\\Cho mon AI\\TreasureItem.cs.meta:\n"},{"text":"fileFormatVersion: 2\nguid: 0bb610721d69d41438dc6d3a2b000705"},{"text":"\n--- End of content ---"}],"displayContent":[{"text":"giúp tôi thêm hệ thống âm thanh cho game này, đặc biết là âm thanh cho UI và khi nhặt vật phẩm @\"Assets/Scripts/Cho mon AI/\" lấy thông tin từ trong này cũng như các âm thanh cho AI NPC nữa @\"Assets/Scripts/AI NPC/\""}]} +{"$set":{"lastUpdated":"2026-06-04T15:54:19.653Z"}} +{"id":"01df9f87-f88f-47d6-9e2c-40c00fe2966f","timestamp":"2026-06-04T15:54:29.527Z","type":"gemini","content":"","thoughts":[{"subject":"Analyzing Audio Integration","description":"I'm currently reviewing the scripts to pinpoint the ideal integration points for the requested audio features: UI sounds, item pickups, and AI chatter. My focus is on efficiently weaving in the audio logic where it makes the most sense.","timestamp":"2026-06-04T15:54:24.218Z"},{"subject":"Developing Audio Triggers","description":"I'm proceeding with implementing an `AudioManager` singleton for global sounds like UI interactions and item pickups. Simultaneously, I'm embedding local `AudioSource` components within the `FinishGate.cs` and `TreasureItem.cs` scripts to manage specific in-game audio events. Next steps involve addressing AI-related sound triggers.","timestamp":"2026-06-04T15:54:26.007Z"},{"subject":"Implementing Audio Effects","description":"I'm now focusing on adding specific sound effects. This includes implementing audio for alerts, footsteps, and shooting, and modifying scripts like `LaserProjectile.cs` for projectile sounds, and `GerminiNPC.cs` for dialogue cues. I’m also creating a new `AudioManager.cs` file to manage these sounds.","timestamp":"2026-06-04T15:54:27.868Z"},{"subject":"Refining Audio Management","description":"I'm prioritizing the creation of the core `AudioManager.cs`. After that, I'll systematically update existing scripts like `FinishGate.cs` and `TreasureItem.cs`, adding necessary `AudioClip` fields before proceeding with sound effect implementation. I'm considering the best approach for playing these sounds.","timestamp":"2026-06-04T15:54:29.239Z"}],"tokens":{"input":34971,"output":161,"cached":0,"thoughts":1062,"tool":0,"total":36194},"model":"gemini-3-flash-preview"} +{"$set":{"lastUpdated":"2026-06-04T15:54:29.527Z"}} +{"id":"01df9f87-f88f-47d6-9e2c-40c00fe2966f","timestamp":"2026-06-04T15:54:29.527Z","type":"gemini","content":"","thoughts":[{"subject":"Analyzing Audio Integration","description":"I'm currently reviewing the scripts to pinpoint the ideal integration points for the requested audio features: UI sounds, item pickups, and AI chatter. My focus is on efficiently weaving in the audio logic where it makes the most sense.","timestamp":"2026-06-04T15:54:24.218Z"},{"subject":"Developing Audio Triggers","description":"I'm proceeding with implementing an `AudioManager` singleton for global sounds like UI interactions and item pickups. Simultaneously, I'm embedding local `AudioSource` components within the `FinishGate.cs` and `TreasureItem.cs` scripts to manage specific in-game audio events. Next steps involve addressing AI-related sound triggers.","timestamp":"2026-06-04T15:54:26.007Z"},{"subject":"Implementing Audio Effects","description":"I'm now focusing on adding specific sound effects. This includes implementing audio for alerts, footsteps, and shooting, and modifying scripts like `LaserProjectile.cs` for projectile sounds, and `GerminiNPC.cs` for dialogue cues. I’m also creating a new `AudioManager.cs` file to manage these sounds.","timestamp":"2026-06-04T15:54:27.868Z"},{"subject":"Refining Audio Management","description":"I'm prioritizing the creation of the core `AudioManager.cs`. After that, I'll systematically update existing scripts like `FinishGate.cs` and `TreasureItem.cs`, adding necessary `AudioClip` fields before proceeding with sound effect implementation. I'm considering the best approach for playing these sounds.","timestamp":"2026-06-04T15:54:29.239Z"}],"tokens":{"input":34971,"output":161,"cached":0,"thoughts":1062,"tool":0,"total":36194},"model":"gemini-3-flash-preview","toolCalls":[{"id":"update_topic__update_topic_1780588469374_0","name":"update_topic","args":{"strategic_intent":"Researching existing audio implementation and preparing to implement a centralized AudioManager.","title":"Adding Audio System Phase 1: Research & Core Implementation","summary":"I have analyzed the provided scripts for UI (FinishGate), Item Pickups (TreasureItem), and AI (EnemyAI, GerminiNPC). I plan to implement a centralized AudioManager to handle global SFX and UI sounds, and then inject audio triggers into the existing logic. I will first check for any existing audio-related scripts in the project to ensure consistency."},"result":[{"functionResponse":{"id":"update_topic__update_topic_1780588469374_0","name":"update_topic","response":{"output":"Current topic: \"Adding Audio System Phase 1: Research & Core Implementation\"\nTopic summary: I have analyzed the provided scripts for UI (FinishGate), Item Pickups (TreasureItem), and AI (EnemyAI, GerminiNPC). I plan to implement a centralized AudioManager to handle global SFX and UI sounds, and then inject audio triggers into the existing logic. I will first check for any existing audio-related scripts in the project to ensure consistency.\n\nStrategic Intent: Researching existing audio implementation and preparing to implement a centralized AudioManager."}}}],"status":"success","timestamp":"2026-06-04T15:54:30.500Z","resultDisplay":"## 📂 Topic: **Adding Audio System Phase 1: Research & Core Implementation**\n\n**Summary:**\nI have analyzed the provided scripts for UI (FinishGate), Item Pickups (TreasureItem), and AI (EnemyAI, GerminiNPC). I plan to implement a centralized AudioManager to handle global SFX and UI sounds, and then inject audio triggers into the existing logic. I will first check for any existing audio-related scripts in the project to ensure consistency.\n\n> [!STRATEGY]\n> **Intent:** Researching existing audio implementation and preparing to implement a centralized AudioManager.","description":"Update topic to: \"Adding Audio System Phase 1: Research & Core Implementation\"","displayName":"Update Topic Context","renderOutputAsMarkdown":true},{"id":"grep_search__grep_search_1780588469383_1","name":"grep_search","args":{"pattern":"AudioSource|AudioClip|PlayOneShot","include_pattern":"Assets/Scripts/**/*.cs"},"result":[{"functionResponse":{"id":"grep_search__grep_search_1780588469383_1","name":"grep_search","response":{"output":"Found 89 matches for pattern \"AudioSource|AudioClip|PlayOneShot\" across 3 workspace directories (filter: \"Assets/Scripts/**/*.cs\"):\n---\nFile: HALLUCINATE\\Assets\\Scripts\\Audio\\AudioDatabase.cs\nL12: public AudioClip Clip;\n---\nFile: HALLUCINATE\\Assets\\Scripts\\Audio\\AudioManager.cs\nL16: private List _pool;\nL40: _pool = new List();\nL43: GameObject go = new GameObject($\"AudioSource_{i}\");\nL45: AudioSource source = go.AddComponent();\nL83: AudioSource source = GetNextSource();\nL104: private AudioSource GetNextSource()\nL107: AudioSource source = _pool[_currentIndex];\n---\nFile: HALLUCINATE\\Assets\\Scripts\\GameSetup\\ObjectInteraction.cs\nL10: public AudioClip interactionSound;\n---\nFile: HALLUCINATE\\Assets\\Scripts\\Interaction\\BaseInteractable.cs\nL23: // AudioSource.PlayClipAtPoint(interactionData.interactionSound, transform.position);\n---\nFile: HALLUCINATE\\Assets\\Scripts\\Interaction\\DoorInteractable.cs\nL40: // Đảm bảo có AudioSource\nL41: var source = woodDoorScript.GetComponent();\nL42: if (source == null) source = woodDoorScript.gameObject.AddComponent();\n---\nFile: HALLUCINATE\\Assets\\Scripts\\Player\\FootStep\\Editor\\vAudioSurfaceEditor.cs\nL10: string[] ignoreProperties = new string[] { \"TextureOrMaterialNames\", \"audioClips\" };\nL40: DrawSimpleList(surface.FindProperty(\"audioClips\"), true);\nL55: case \"audioClips\":\nL134: var clip = dragged as AudioClip;\n---\nFile: HALLUCINATE\\Assets\\Scripts\\Player\\FootStep\\Editor\\vFootStepEditor.cs\nL204: DrawSimpleList(surface.FindPropertyRelative(\"audioClips\"), true);\nL324: var clip = dragged as AudioClip;\n---\nFile: HALLUCINATE\\Assets\\Scripts\\Player\\FootStep\\Scripts\\vAudioSurface.cs\nL9: public AudioSource audioSource;\nL10: public AudioMixerGroup audioMixerGroup; // The AudioSource that will play the clips.\nL12: public List audioClips; // The different clips that can be played on this surface.\nL27: audioClips = new List();\nL71: if (audioClips == null || audioClips.Count == 0)\nL76: AudioSource source = null;\nL77: if (audioSource != null)\nL79: source = Instantiate(audioSource, footStepObject.sender.position, Quaternion.identity);\nL82: if (audioSource)\nL89: int index = randomSource.Next(audioClips.Count);\nL90: source.PlayOneShot(audioClips[index], footStepObject.volume);\n---\nFile: HALLUCINATE\\Assets\\Scripts\\Player\\FootStep\\Scripts\\vAudioSurfaceControl.cs\nL5: [RequireComponent(typeof(AudioSource))]\nL8: AudioSource source;\nL15: public void PlayOneShot(AudioClip clip, float volume)\nL17: if (!source) source = GetComponent();\nL19: source.PlayOneShot(clip, volume);\nL33: if (!source) source = GetComponent();\n---\nFile: HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Animator\\vTriggerSoundByState.cs\nL8: public GameObject audioSource;\nL9: public List sounds;\nL36: if (audioSource != null)\nL37: audioObject = Instantiate(audioSource.gameObject, animator.transform.position, Quaternion.identity) as GameObject;\nL45: var source = audioObject.gameObject.GetComponent();\nL47: source.PlayOneShot(clip);\n---\nFile: HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Interactables\\vPickupItem.cs\nL7: AudioSource _audioSource;\nL8: public AudioClip _audioClip;\nL13: _audioSource = GetComponent();\nL18: if (other.CompareTag(\"Player\") && !_audioSource.isPlaying)\nL24: _audioSource.PlayOneShot(_audioClip);\nL25: Destroy(gameObject, _audioClip.length);\n---\nFile: HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Utils\\PlaySoundLoop.cs\nL5: [RequireComponent(typeof(AudioSource))]\nL8: public AudioClip[] clips;\nL13: protected AudioSource source;\nL25: source = GetComponent();\nL72: AudioClip clip = clips[Random.Range(0, clips.Length)];\nL77: source.PlayOneShot(clip);\n---\nFile: HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Utils\\vPlayRandomClip.cs\nL4: [RequireComponent(typeof(AudioSource))]\nL8: public AudioClip[] clips;\nL9: public AudioSource audioSource;\nL16: if (!audioSource) audioSource = GetComponent();\nL25: if (audioSource)\nL31: audioSource.PlayOneShot(clips[index]);\n---\nFile: HALLUCINATE\\Assets\\Scripts\\Player\\MeleeWeapon\\vHitEffects.cs\nL5: [vClassHeader(\"Hit Effects\", \"Search for the 'AudioSource' prefab in the project or create your own custom AudioSource.\")]\nL8: public GameObject audioSource;\nL9: public AudioClip[] hitSounds;\nL10: public AudioClip[] recoilSounds;\nL12: public AudioClip[] defSounds;\nL27: if (audioSource != null && hitSounds.Length > 0)\nL30: var audioObj = Instantiate(audioSource, transform.position, transform.rotation) as GameObject;\nL31: audioObj.GetComponent().PlayOneShot(clip);\nL37: if (audioSource != null && recoilSounds.Length > 0)\nL40: var audioObj = Instantiate(audioSource, transform.position, transform.rotation) as GameObject;\nL41: audioObj.GetComponent().PlayOneShot(clip);\nL54: if (audioSource != null && defSounds.Length > 0)\nL57: var audioObj = Instantiate(audioSource, transform.position, transform.rotation) as GameObject;\nL58: audioObj.GetComponent().PlayOneShot(clip);\n---\nFile: HALLUCINATE\\Assets\\Scripts\\Player\\Ragdoll\\vRagdoll.cs\nL27: public AudioSource collisionSource;\nL28: public AudioClip collisionClip;\nL184: var _collisionPrefab = new GameObject(\"ragdollAudioSource\");\nL187: collisionSource = _collisionPrefab.AddComponent();\n---\nFile: HALLUCINATE\\Assets\\Scripts\\Player\\Weapon\\vShooterWeapon.cs\nL138: public AudioSource reloadSource;\nL139: public AudioClip reloadClip;\nL140: public AudioClip finishReloadClip;\nL251: source.PlayOneShot(fireClip);\nL382: reloadSource.PlayOneShot(reloadClip);\nL392: reloadSource.PlayOneShot(finishReloadClip);\n---\nFile: HALLUCINATE\\Assets\\Scripts\\Player\\Weapon\\vShooterWeaponBase.cs\nL75: public AudioSource source;\nL76: public AudioClip fireClip;\nL77: public AudioClip emptyClip;\nL415: source.PlayOneShot(fireClip);\nL467: source.PlayOneShot(emptyClip);\n---"}}}],"status":"success","timestamp":"2026-06-04T15:54:30.500Z","resultDisplay":{"summary":"Found 89 matches","matches":[{"filePath":"HALLUCINATE\\Assets\\Scripts\\Audio\\AudioDatabase.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Audio\\AudioDatabase.cs","lineNumber":12,"line":" public AudioClip Clip;"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Audio\\AudioManager.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Audio\\AudioManager.cs","lineNumber":16,"line":" private List _pool;"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Audio\\AudioManager.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Audio\\AudioManager.cs","lineNumber":40,"line":" _pool = new List();"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Audio\\AudioManager.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Audio\\AudioManager.cs","lineNumber":43,"line":" GameObject go = new GameObject($\"AudioSource_{i}\");"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Audio\\AudioManager.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Audio\\AudioManager.cs","lineNumber":45,"line":" AudioSource source = go.AddComponent();"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Audio\\AudioManager.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Audio\\AudioManager.cs","lineNumber":83,"line":" AudioSource source = GetNextSource();"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Audio\\AudioManager.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Audio\\AudioManager.cs","lineNumber":104,"line":" private AudioSource GetNextSource()"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Audio\\AudioManager.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Audio\\AudioManager.cs","lineNumber":107,"line":" AudioSource source = _pool[_currentIndex];"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\GameSetup\\ObjectInteraction.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\GameSetup\\ObjectInteraction.cs","lineNumber":10,"line":" public AudioClip interactionSound;"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Interaction\\BaseInteractable.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Interaction\\BaseInteractable.cs","lineNumber":23,"line":" // AudioSource.PlayClipAtPoint(interactionData.interactionSound, transform.position);"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Interaction\\DoorInteractable.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Interaction\\DoorInteractable.cs","lineNumber":40,"line":" // Đảm bảo có AudioSource"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Interaction\\DoorInteractable.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Interaction\\DoorInteractable.cs","lineNumber":41,"line":" var source = woodDoorScript.GetComponent();"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Interaction\\DoorInteractable.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Interaction\\DoorInteractable.cs","lineNumber":42,"line":" if (source == null) source = woodDoorScript.gameObject.AddComponent();"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\FootStep\\Editor\\vAudioSurfaceEditor.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\FootStep\\Editor\\vAudioSurfaceEditor.cs","lineNumber":10,"line":" string[] ignoreProperties = new string[] { \"TextureOrMaterialNames\", \"audioClips\" };"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\FootStep\\Editor\\vAudioSurfaceEditor.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\FootStep\\Editor\\vAudioSurfaceEditor.cs","lineNumber":40,"line":" DrawSimpleList(surface.FindProperty(\"audioClips\"), true);"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\FootStep\\Editor\\vAudioSurfaceEditor.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\FootStep\\Editor\\vAudioSurfaceEditor.cs","lineNumber":55,"line":" case \"audioClips\":"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\FootStep\\Editor\\vAudioSurfaceEditor.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\FootStep\\Editor\\vAudioSurfaceEditor.cs","lineNumber":134,"line":" var clip = dragged as AudioClip;"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\FootStep\\Editor\\vFootStepEditor.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\FootStep\\Editor\\vFootStepEditor.cs","lineNumber":204,"line":" DrawSimpleList(surface.FindPropertyRelative(\"audioClips\"), true);"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\FootStep\\Editor\\vFootStepEditor.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\FootStep\\Editor\\vFootStepEditor.cs","lineNumber":324,"line":" var clip = dragged as AudioClip;"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\FootStep\\Scripts\\vAudioSurface.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\FootStep\\Scripts\\vAudioSurface.cs","lineNumber":9,"line":" public AudioSource audioSource;"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\FootStep\\Scripts\\vAudioSurface.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\FootStep\\Scripts\\vAudioSurface.cs","lineNumber":10,"line":" public AudioMixerGroup audioMixerGroup; // The AudioSource that will play the clips. "},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\FootStep\\Scripts\\vAudioSurface.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\FootStep\\Scripts\\vAudioSurface.cs","lineNumber":12,"line":" public List audioClips; // The different clips that can be played on this surface. "},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\FootStep\\Scripts\\vAudioSurface.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\FootStep\\Scripts\\vAudioSurface.cs","lineNumber":27,"line":" audioClips = new List();"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\FootStep\\Scripts\\vAudioSurface.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\FootStep\\Scripts\\vAudioSurface.cs","lineNumber":71,"line":" if (audioClips == null || audioClips.Count == 0)"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\FootStep\\Scripts\\vAudioSurface.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\FootStep\\Scripts\\vAudioSurface.cs","lineNumber":76,"line":" AudioSource source = null;"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\FootStep\\Scripts\\vAudioSurface.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\FootStep\\Scripts\\vAudioSurface.cs","lineNumber":77,"line":" if (audioSource != null)"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\FootStep\\Scripts\\vAudioSurface.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\FootStep\\Scripts\\vAudioSurface.cs","lineNumber":79,"line":" source = Instantiate(audioSource, footStepObject.sender.position, Quaternion.identity);"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\FootStep\\Scripts\\vAudioSurface.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\FootStep\\Scripts\\vAudioSurface.cs","lineNumber":82,"line":" if (audioSource)"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\FootStep\\Scripts\\vAudioSurface.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\FootStep\\Scripts\\vAudioSurface.cs","lineNumber":89,"line":" int index = randomSource.Next(audioClips.Count);"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\FootStep\\Scripts\\vAudioSurface.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\FootStep\\Scripts\\vAudioSurface.cs","lineNumber":90,"line":" source.PlayOneShot(audioClips[index], footStepObject.volume);"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\FootStep\\Scripts\\vAudioSurfaceControl.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\FootStep\\Scripts\\vAudioSurfaceControl.cs","lineNumber":5,"line":" [RequireComponent(typeof(AudioSource))]"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\FootStep\\Scripts\\vAudioSurfaceControl.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\FootStep\\Scripts\\vAudioSurfaceControl.cs","lineNumber":8,"line":" AudioSource source;"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\FootStep\\Scripts\\vAudioSurfaceControl.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\FootStep\\Scripts\\vAudioSurfaceControl.cs","lineNumber":15,"line":" public void PlayOneShot(AudioClip clip, float volume)"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\FootStep\\Scripts\\vAudioSurfaceControl.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\FootStep\\Scripts\\vAudioSurfaceControl.cs","lineNumber":17,"line":" if (!source) source = GetComponent();"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\FootStep\\Scripts\\vAudioSurfaceControl.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\FootStep\\Scripts\\vAudioSurfaceControl.cs","lineNumber":19,"line":" source.PlayOneShot(clip, volume);"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\FootStep\\Scripts\\vAudioSurfaceControl.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\FootStep\\Scripts\\vAudioSurfaceControl.cs","lineNumber":33,"line":" if (!source) source = GetComponent();"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Animator\\vTriggerSoundByState.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Animator\\vTriggerSoundByState.cs","lineNumber":8,"line":" public GameObject audioSource;"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Animator\\vTriggerSoundByState.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Animator\\vTriggerSoundByState.cs","lineNumber":9,"line":" public List sounds;"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Animator\\vTriggerSoundByState.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Animator\\vTriggerSoundByState.cs","lineNumber":36,"line":" if (audioSource != null)"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Animator\\vTriggerSoundByState.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Animator\\vTriggerSoundByState.cs","lineNumber":37,"line":" audioObject = Instantiate(audioSource.gameObject, animator.transform.position, Quaternion.identity) as GameObject;"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Animator\\vTriggerSoundByState.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Animator\\vTriggerSoundByState.cs","lineNumber":45,"line":" var source = audioObject.gameObject.GetComponent();"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Animator\\vTriggerSoundByState.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Animator\\vTriggerSoundByState.cs","lineNumber":47,"line":" source.PlayOneShot(clip);"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Interactables\\vPickupItem.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Interactables\\vPickupItem.cs","lineNumber":7,"line":" AudioSource _audioSource;"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Interactables\\vPickupItem.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Interactables\\vPickupItem.cs","lineNumber":8,"line":" public AudioClip _audioClip;"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Interactables\\vPickupItem.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Interactables\\vPickupItem.cs","lineNumber":13,"line":" _audioSource = GetComponent();"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Interactables\\vPickupItem.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Interactables\\vPickupItem.cs","lineNumber":18,"line":" if (other.CompareTag(\"Player\") && !_audioSource.isPlaying)"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Interactables\\vPickupItem.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Interactables\\vPickupItem.cs","lineNumber":24,"line":" _audioSource.PlayOneShot(_audioClip);"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Interactables\\vPickupItem.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Interactables\\vPickupItem.cs","lineNumber":25,"line":" Destroy(gameObject, _audioClip.length);"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Utils\\PlaySoundLoop.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Utils\\PlaySoundLoop.cs","lineNumber":5,"line":"[RequireComponent(typeof(AudioSource))]"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Utils\\PlaySoundLoop.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Utils\\PlaySoundLoop.cs","lineNumber":8,"line":" public AudioClip[] clips;"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Utils\\PlaySoundLoop.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Utils\\PlaySoundLoop.cs","lineNumber":13,"line":" protected AudioSource source;"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Utils\\PlaySoundLoop.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Utils\\PlaySoundLoop.cs","lineNumber":25,"line":" source = GetComponent();"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Utils\\PlaySoundLoop.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Utils\\PlaySoundLoop.cs","lineNumber":72,"line":" AudioClip clip = clips[Random.Range(0, clips.Length)];"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Utils\\PlaySoundLoop.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Utils\\PlaySoundLoop.cs","lineNumber":77,"line":" source.PlayOneShot(clip);"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Utils\\vPlayRandomClip.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Utils\\vPlayRandomClip.cs","lineNumber":4,"line":" [RequireComponent(typeof(AudioSource))]"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Utils\\vPlayRandomClip.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Utils\\vPlayRandomClip.cs","lineNumber":8,"line":" public AudioClip[] clips;"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Utils\\vPlayRandomClip.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Utils\\vPlayRandomClip.cs","lineNumber":9,"line":" public AudioSource audioSource;"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Utils\\vPlayRandomClip.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Utils\\vPlayRandomClip.cs","lineNumber":16,"line":" if (!audioSource) audioSource = GetComponent();"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Utils\\vPlayRandomClip.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Utils\\vPlayRandomClip.cs","lineNumber":25,"line":" if (audioSource)"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Utils\\vPlayRandomClip.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Utils\\vPlayRandomClip.cs","lineNumber":31,"line":" audioSource.PlayOneShot(clips[index]);"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\MeleeWeapon\\vHitEffects.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\MeleeWeapon\\vHitEffects.cs","lineNumber":5,"line":" [vClassHeader(\"Hit Effects\", \"Search for the 'AudioSource' prefab in the project or create your own custom AudioSource.\")]"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\MeleeWeapon\\vHitEffects.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\MeleeWeapon\\vHitEffects.cs","lineNumber":8,"line":" public GameObject audioSource;"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\MeleeWeapon\\vHitEffects.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\MeleeWeapon\\vHitEffects.cs","lineNumber":9,"line":" public AudioClip[] hitSounds;"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\MeleeWeapon\\vHitEffects.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\MeleeWeapon\\vHitEffects.cs","lineNumber":10,"line":" public AudioClip[] recoilSounds;"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\MeleeWeapon\\vHitEffects.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\MeleeWeapon\\vHitEffects.cs","lineNumber":12,"line":" public AudioClip[] defSounds;"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\MeleeWeapon\\vHitEffects.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\MeleeWeapon\\vHitEffects.cs","lineNumber":27,"line":" if (audioSource != null && hitSounds.Length > 0)"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\MeleeWeapon\\vHitEffects.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\MeleeWeapon\\vHitEffects.cs","lineNumber":30,"line":" var audioObj = Instantiate(audioSource, transform.position, transform.rotation) as GameObject;"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\MeleeWeapon\\vHitEffects.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\MeleeWeapon\\vHitEffects.cs","lineNumber":31,"line":" audioObj.GetComponent().PlayOneShot(clip);"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\MeleeWeapon\\vHitEffects.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\MeleeWeapon\\vHitEffects.cs","lineNumber":37,"line":" if (audioSource != null && recoilSounds.Length > 0)"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\MeleeWeapon\\vHitEffects.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\MeleeWeapon\\vHitEffects.cs","lineNumber":40,"line":" var audioObj = Instantiate(audioSource, transform.position, transform.rotation) as GameObject;"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\MeleeWeapon\\vHitEffects.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\MeleeWeapon\\vHitEffects.cs","lineNumber":41,"line":" audioObj.GetComponent().PlayOneShot(clip);"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\MeleeWeapon\\vHitEffects.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\MeleeWeapon\\vHitEffects.cs","lineNumber":54,"line":" if (audioSource != null && defSounds.Length > 0)"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\MeleeWeapon\\vHitEffects.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\MeleeWeapon\\vHitEffects.cs","lineNumber":57,"line":" var audioObj = Instantiate(audioSource, transform.position, transform.rotation) as GameObject;"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\MeleeWeapon\\vHitEffects.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\MeleeWeapon\\vHitEffects.cs","lineNumber":58,"line":" audioObj.GetComponent().PlayOneShot(clip);"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\Ragdoll\\vRagdoll.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\Ragdoll\\vRagdoll.cs","lineNumber":27,"line":" public AudioSource collisionSource;"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\Ragdoll\\vRagdoll.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\Ragdoll\\vRagdoll.cs","lineNumber":28,"line":" public AudioClip collisionClip;"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\Ragdoll\\vRagdoll.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\Ragdoll\\vRagdoll.cs","lineNumber":184,"line":" var _collisionPrefab = new GameObject(\"ragdollAudioSource\");"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\Ragdoll\\vRagdoll.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\Ragdoll\\vRagdoll.cs","lineNumber":187,"line":" collisionSource = _collisionPrefab.AddComponent();"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\Weapon\\vShooterWeapon.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\Weapon\\vShooterWeapon.cs","lineNumber":138,"line":" public AudioSource reloadSource;"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\Weapon\\vShooterWeapon.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\Weapon\\vShooterWeapon.cs","lineNumber":139,"line":" public AudioClip reloadClip;"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\Weapon\\vShooterWeapon.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\Weapon\\vShooterWeapon.cs","lineNumber":140,"line":" public AudioClip finishReloadClip;"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\Weapon\\vShooterWeapon.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\Weapon\\vShooterWeapon.cs","lineNumber":251,"line":" source.PlayOneShot(fireClip);"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\Weapon\\vShooterWeapon.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\Weapon\\vShooterWeapon.cs","lineNumber":382,"line":" reloadSource.PlayOneShot(reloadClip);"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\Weapon\\vShooterWeapon.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\Weapon\\vShooterWeapon.cs","lineNumber":392,"line":" reloadSource.PlayOneShot(finishReloadClip);"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\Weapon\\vShooterWeaponBase.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\Weapon\\vShooterWeaponBase.cs","lineNumber":75,"line":" public AudioSource source;"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\Weapon\\vShooterWeaponBase.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\Weapon\\vShooterWeaponBase.cs","lineNumber":76,"line":" public AudioClip fireClip;"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\Weapon\\vShooterWeaponBase.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\Weapon\\vShooterWeaponBase.cs","lineNumber":77,"line":" public AudioClip emptyClip;"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\Weapon\\vShooterWeaponBase.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\Weapon\\vShooterWeaponBase.cs","lineNumber":415,"line":" source.PlayOneShot(fireClip);"},{"filePath":"HALLUCINATE\\Assets\\Scripts\\Player\\Weapon\\vShooterWeaponBase.cs","absolutePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Player\\Weapon\\vShooterWeaponBase.cs","lineNumber":467,"line":" source.PlayOneShot(emptyClip);"}]},"description":"'AudioSource|AudioClip|PlayOneShot' in Assets/Scripts/**/*.cs across all workspace directories","displayName":"SearchText","renderOutputAsMarkdown":true}]} +{"id":"d181cafb-fdd2-41e5-b4d2-13538cd74d1e","timestamp":"2026-06-04T15:54:30.501Z","type":"user","content":[{"functionResponse":{"id":"update_topic__update_topic_1780588469374_0","name":"update_topic","response":{"output":"Current topic: \"Adding Audio System Phase 1: Research & Core Implementation\"\nTopic summary: I have analyzed the provided scripts for UI (FinishGate), Item Pickups (TreasureItem), and AI (EnemyAI, GerminiNPC). I plan to implement a centralized AudioManager to handle global SFX and UI sounds, and then inject audio triggers into the existing logic. I will first check for any existing audio-related scripts in the project to ensure consistency.\n\nStrategic Intent: Researching existing audio implementation and preparing to implement a centralized AudioManager."}}},{"functionResponse":{"id":"grep_search__grep_search_1780588469383_1","name":"grep_search","response":{"output":"Found 89 matches for pattern \"AudioSource|AudioClip|PlayOneShot\" across 3 workspace directories (filter: \"Assets/Scripts/**/*.cs\"):\n---\nFile: HALLUCINATE\\Assets\\Scripts\\Audio\\AudioDatabase.cs\nL12: public AudioClip Clip;\n---\nFile: HALLUCINATE\\Assets\\Scripts\\Audio\\AudioManager.cs\nL16: private List _pool;\nL40: _pool = new List();\nL43: GameObject go = new GameObject($\"AudioSource_{i}\");\nL45: AudioSource source = go.AddComponent();\nL83: AudioSource source = GetNextSource();\nL104: private AudioSource GetNextSource()\nL107: AudioSource source = _pool[_currentIndex];\n---\nFile: HALLUCINATE\\Assets\\Scripts\\GameSetup\\ObjectInteraction.cs\nL10: public AudioClip interactionSound;\n---\nFile: HALLUCINATE\\Assets\\Scripts\\Interaction\\BaseInteractable.cs\nL23: // AudioSource.PlayClipAtPoint(interactionData.interactionSound, transform.position);\n---\nFile: HALLUCINATE\\Assets\\Scripts\\Interaction\\DoorInteractable.cs\nL40: // Đảm bảo có AudioSource\nL41: var source = woodDoorScript.GetComponent();\nL42: if (source == null) source = woodDoorScript.gameObject.AddComponent();\n---\nFile: HALLUCINATE\\Assets\\Scripts\\Player\\FootStep\\Editor\\vAudioSurfaceEditor.cs\nL10: string[] ignoreProperties = new string[] { \"TextureOrMaterialNames\", \"audioClips\" };\nL40: DrawSimpleList(surface.FindProperty(\"audioClips\"), true);\nL55: case \"audioClips\":\nL134: var clip = dragged as AudioClip;\n---\nFile: HALLUCINATE\\Assets\\Scripts\\Player\\FootStep\\Editor\\vFootStepEditor.cs\nL204: DrawSimpleList(surface.FindPropertyRelative(\"audioClips\"), true);\nL324: var clip = dragged as AudioClip;\n---\nFile: HALLUCINATE\\Assets\\Scripts\\Player\\FootStep\\Scripts\\vAudioSurface.cs\nL9: public AudioSource audioSource;\nL10: public AudioMixerGroup audioMixerGroup; // The AudioSource that will play the clips.\nL12: public List audioClips; // The different clips that can be played on this surface.\nL27: audioClips = new List();\nL71: if (audioClips == null || audioClips.Count == 0)\nL76: AudioSource source = null;\nL77: if (audioSource != null)\nL79: source = Instantiate(audioSource, footStepObject.sender.position, Quaternion.identity);\nL82: if (audioSource)\nL89: int index = randomSource.Next(audioClips.Count);\nL90: source.PlayOneShot(audioClips[index], footStepObject.volume);\n---\nFile: HALLUCINATE\\Assets\\Scripts\\Player\\FootStep\\Scripts\\vAudioSurfaceControl.cs\nL5: [RequireComponent(typeof(AudioSource))]\nL8: AudioSource source;\nL15: public void PlayOneShot(AudioClip clip, float volume)\nL17: if (!source) source = GetComponent();\nL19: source.PlayOneShot(clip, volume);\nL33: if (!source) source = GetComponent();\n---\nFile: HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Animator\\vTriggerSoundByState.cs\nL8: public GameObject audioSource;\nL9: public List sounds;\nL36: if (audioSource != null)\nL37: audioObject = Instantiate(audioSource.gameObject, animator.transform.position, Quaternion.identity) as GameObject;\nL45: var source = audioObject.gameObject.GetComponent();\nL47: source.PlayOneShot(clip);\n---\nFile: HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Interactables\\vPickupItem.cs\nL7: AudioSource _audioSource;\nL8: public AudioClip _audioClip;\nL13: _audioSource = GetComponent();\nL18: if (other.CompareTag(\"Player\") && !_audioSource.isPlaying)\nL24: _audioSource.PlayOneShot(_audioClip);\nL25: Destroy(gameObject, _audioClip.length);\n---\nFile: HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Utils\\PlaySoundLoop.cs\nL5: [RequireComponent(typeof(AudioSource))]\nL8: public AudioClip[] clips;\nL13: protected AudioSource source;\nL25: source = GetComponent();\nL72: AudioClip clip = clips[Random.Range(0, clips.Length)];\nL77: source.PlayOneShot(clip);\n---\nFile: HALLUCINATE\\Assets\\Scripts\\Player\\Generic\\Utils\\vPlayRandomClip.cs\nL4: [RequireComponent(typeof(AudioSource))]\nL8: public AudioClip[] clips;\nL9: public AudioSource audioSource;\nL16: if (!audioSource) audioSource = GetComponent();\nL25: if (audioSource)\nL31: audioSource.PlayOneShot(clips[index]);\n---\nFile: HALLUCINATE\\Assets\\Scripts\\Player\\MeleeWeapon\\vHitEffects.cs\nL5: [vClassHeader(\"Hit Effects\", \"Search for the 'AudioSource' prefab in the project or create your own custom AudioSource.\")]\nL8: public GameObject audioSource;\nL9: public AudioClip[] hitSounds;\nL10: public AudioClip[] recoilSounds;\nL12: public AudioClip[] defSounds;\nL27: if (audioSource != null && hitSounds.Length > 0)\nL30: var audioObj = Instantiate(audioSource, transform.position, transform.rotation) as GameObject;\nL31: audioObj.GetComponent().PlayOneShot(clip);\nL37: if (audioSource != null && recoilSounds.Length > 0)\nL40: var audioObj = Instantiate(audioSource, transform.position, transform.rotation) as GameObject;\nL41: audioObj.GetComponent().PlayOneShot(clip);\nL54: if (audioSource != null && defSounds.Length > 0)\nL57: var audioObj = Instantiate(audioSource, transform.position, transform.rotation) as GameObject;\nL58: audioObj.GetComponent().PlayOneShot(clip);\n---\nFile: HALLUCINATE\\Assets\\Scripts\\Player\\Ragdoll\\vRagdoll.cs\nL27: public AudioSource collisionSource;\nL28: public AudioClip collisionClip;\nL184: var _collisionPrefab = new GameObject(\"ragdollAudioSource\");\nL187: collisionSource = _collisionPrefab.AddComponent();\n---\nFile: HALLUCINATE\\Assets\\Scripts\\Player\\Weapon\\vShooterWeapon.cs\nL138: public AudioSource reloadSource;\nL139: public AudioClip reloadClip;\nL140: public AudioClip finishReloadClip;\nL251: source.PlayOneShot(fireClip);\nL382: reloadSource.PlayOneShot(reloadClip);\nL392: reloadSource.PlayOneShot(finishReloadClip);\n---\nFile: HALLUCINATE\\Assets\\Scripts\\Player\\Weapon\\vShooterWeaponBase.cs\nL75: public AudioSource source;\nL76: public AudioClip fireClip;\nL77: public AudioClip emptyClip;\nL415: source.PlayOneShot(fireClip);\nL467: source.PlayOneShot(emptyClip);\n---"}}}]} +{"$set":{"lastUpdated":"2026-06-04T15:54:30.501Z"}} +{"id":"7eb4d3a7-b697-4863-9851-e31496691b62","timestamp":"2026-06-04T15:54:33.595Z","type":"gemini","content":"","thoughts":[{"subject":"Investigating Audio System","description":"I'm currently reviewing the existing `AudioManager` in `Assets/Scripts/Audio/AudioManager.cs` to assess its implementation. My goal is to determine if it's suitable for current needs or if modifications are required, while also considering the presence of `vAudioSurface` and other Invector audio scripts.","timestamp":"2026-06-04T15:54:33.448Z"}],"tokens":{"input":38216,"output":26,"cached":0,"thoughts":110,"tool":0,"total":38352},"model":"gemini-3-flash-preview"} +{"$set":{"lastUpdated":"2026-06-04T15:54:33.595Z"}} +{"id":"7eb4d3a7-b697-4863-9851-e31496691b62","timestamp":"2026-06-04T15:54:33.595Z","type":"gemini","content":"","thoughts":[{"subject":"Investigating Audio System","description":"I'm currently reviewing the existing `AudioManager` in `Assets/Scripts/Audio/AudioManager.cs` to assess its implementation. My goal is to determine if it's suitable for current needs or if modifications are required, while also considering the presence of `vAudioSurface` and other Invector audio scripts.","timestamp":"2026-06-04T15:54:33.448Z"}],"tokens":{"input":38216,"output":26,"cached":0,"thoughts":110,"tool":0,"total":38352},"model":"gemini-3-flash-preview","toolCalls":[{"id":"read_file__read_file_1780588473454_0","name":"read_file","args":{"file_path":"Assets/Scripts/Audio/AudioManager.cs"},"result":[{"functionResponse":{"id":"read_file__read_file_1780588473454_0","name":"read_file","response":{"output":"using System.Collections.Generic;\nusing UnityEngine;\nusing UnityEngine.Audio;\n\nnamespace Hallucinate.Audio\n{\n public class AudioManager : MonoBehaviour\n {\n public static AudioManager Instance { get; private set; }\n\n [Header(\"Settings\")]\n [SerializeField] private AudioDatabase database;\n [SerializeField] private int poolSize = 20;\n [SerializeField] private AudioMixerGroup defaultGroup;\n\n private List _pool;\n private int _currentIndex = 0;\n\n private void Awake()\n {\n if (Instance != null && Instance != this)\n {\n Destroy(gameObject);\n return;\n }\n Instance = this;\n DontDestroyOnLoad(gameObject);\n\n InitializePool();\n if (database != null) database.Initialize();\n }\n\n private void Start()\n {\n ApplyAllVolumes();\n }\n\n private void InitializePool()\n {\n _pool = new List();\n for (int i = 0; i < poolSize; i++)\n {\n GameObject go = new GameObject($\"AudioSource_{i}\");\n go.transform.SetParent(transform);\n AudioSource source = go.AddComponent();\n source.playOnAwake = false;\n _pool.Add(source);\n }\n }\n\n public void ApplyAllVolumes()\n {\n SetVolume(\"MasterVolume\", PlayerPrefs.GetFloat(\"MasterVolume\", 80f));\n SetVolume(\"MusicVolume\", PlayerPrefs.GetFloat(\"MusicVolume\", 80f));\n SetVolume(\"VFXVolume\", PlayerPrefs.GetFloat(\"VFXVolume\", 80f));\n SetVolume(\"PlayerVolume\", PlayerPrefs.GetFloat(\"PlayerVolume\", 80f));\n SetVolume(\"UIVolume\", PlayerPrefs.GetFloat(\"UIVolume\", 80f));\n }\n\n public void SetVolume(string key, float volume)\n {\n if (defaultGroup == null || defaultGroup.audioMixer == null) return;\n\n // Chuyển đổi từ 0-100 sang dB (-80f đến 0f hoặc 20f tùy mixer)\n // Công thức: dB = 20 * log10(volume / 100)\n float db = volume <= 0.001f ? -80f : Mathf.Log10(volume / 100f) * 20f;\n \n // Đảm bảo Parameter đã được EXPOSE trong AudioMixer với tên tương ứng (MasterVolume, MusicVolume, etc.)\n defaultGroup.audioMixer.SetFloat(key, db);\n }\n\n public void Play(string sampleName, float volumeMult = 1f, float pitchMult = 1f, Vector3? position = null)\n {\n if (database == null) return;\n\n var sample = database.GetSample(sampleName);\n if (sample == null || sample.Clip == null)\n {\n // Silence or log warning if needed\n return;\n }\n\n AudioSource source = GetNextSource();\n \n // Setup source\n source.clip = sample.Clip;\n source.volume = sample.DefaultVolume * volumeMult;\n source.pitch = sample.DefaultPitch * pitchMult;\n source.outputAudioMixerGroup = sample.MixerGroup != null ? sample.MixerGroup : defaultGroup;\n\n if (position.HasValue)\n {\n source.spatialBlend = 1f; // 3D\n source.transform.position = position.Value;\n }\n else\n {\n source.spatialBlend = 0f; // 2D\n }\n\n source.Play();\n }\n\n private AudioSource GetNextSource()\n {\n // Simple round-robin for now, can be improved to find truly \"idle\" sources\n AudioSource source = _pool[_currentIndex];\n _currentIndex = (_currentIndex + 1) % poolSize;\n return source;\n }\n\n public void PlayRandom(string baseName, int variants, float volumeMult = 1f, float pitchMult = 1f)\n {\n int rand = UnityEngine.Random.Range(1, variants + 1);\n Play($\"{baseName}-{rand}\", volumeMult, pitchMult);\n }\n\n // Helper for UI/Global easy access\n public static void PlayGlobal(string name, float volume = 1f, float pitch = 1f)\n {\n if (Instance != null) Instance.Play(name, volume, pitch);\n }\n\n public static void PlayRandomGlobal(string baseName, int variants, float volume = 1f, float pitch = 1f)\n {\n if (Instance != null) Instance.PlayRandom(baseName, variants, volume, pitch);\n }\n }\n}\n"}}}],"status":"success","timestamp":"2026-06-04T15:54:33.607Z","resultDisplay":"","description":"Assets\\...\\Audio\\AudioManager.cs","displayName":"ReadFile","renderOutputAsMarkdown":true}]} +{"id":"b3d8489a-2510-4dcf-b524-133db185d7c0","timestamp":"2026-06-04T15:54:33.608Z","type":"user","content":[{"functionResponse":{"id":"read_file__read_file_1780588473454_0","name":"read_file","response":{"output":"using System.Collections.Generic;\nusing UnityEngine;\nusing UnityEngine.Audio;\n\nnamespace Hallucinate.Audio\n{\n public class AudioManager : MonoBehaviour\n {\n public static AudioManager Instance { get; private set; }\n\n [Header(\"Settings\")]\n [SerializeField] private AudioDatabase database;\n [SerializeField] private int poolSize = 20;\n [SerializeField] private AudioMixerGroup defaultGroup;\n\n private List _pool;\n private int _currentIndex = 0;\n\n private void Awake()\n {\n if (Instance != null && Instance != this)\n {\n Destroy(gameObject);\n return;\n }\n Instance = this;\n DontDestroyOnLoad(gameObject);\n\n InitializePool();\n if (database != null) database.Initialize();\n }\n\n private void Start()\n {\n ApplyAllVolumes();\n }\n\n private void InitializePool()\n {\n _pool = new List();\n for (int i = 0; i < poolSize; i++)\n {\n GameObject go = new GameObject($\"AudioSource_{i}\");\n go.transform.SetParent(transform);\n AudioSource source = go.AddComponent();\n source.playOnAwake = false;\n _pool.Add(source);\n }\n }\n\n public void ApplyAllVolumes()\n {\n SetVolume(\"MasterVolume\", PlayerPrefs.GetFloat(\"MasterVolume\", 80f));\n SetVolume(\"MusicVolume\", PlayerPrefs.GetFloat(\"MusicVolume\", 80f));\n SetVolume(\"VFXVolume\", PlayerPrefs.GetFloat(\"VFXVolume\", 80f));\n SetVolume(\"PlayerVolume\", PlayerPrefs.GetFloat(\"PlayerVolume\", 80f));\n SetVolume(\"UIVolume\", PlayerPrefs.GetFloat(\"UIVolume\", 80f));\n }\n\n public void SetVolume(string key, float volume)\n {\n if (defaultGroup == null || defaultGroup.audioMixer == null) return;\n\n // Chuyển đổi từ 0-100 sang dB (-80f đến 0f hoặc 20f tùy mixer)\n // Công thức: dB = 20 * log10(volume / 100)\n float db = volume <= 0.001f ? -80f : Mathf.Log10(volume / 100f) * 20f;\n \n // Đảm bảo Parameter đã được EXPOSE trong AudioMixer với tên tương ứng (MasterVolume, MusicVolume, etc.)\n defaultGroup.audioMixer.SetFloat(key, db);\n }\n\n public void Play(string sampleName, float volumeMult = 1f, float pitchMult = 1f, Vector3? position = null)\n {\n if (database == null) return;\n\n var sample = database.GetSample(sampleName);\n if (sample == null || sample.Clip == null)\n {\n // Silence or log warning if needed\n return;\n }\n\n AudioSource source = GetNextSource();\n \n // Setup source\n source.clip = sample.Clip;\n source.volume = sample.DefaultVolume * volumeMult;\n source.pitch = sample.DefaultPitch * pitchMult;\n source.outputAudioMixerGroup = sample.MixerGroup != null ? sample.MixerGroup : defaultGroup;\n\n if (position.HasValue)\n {\n source.spatialBlend = 1f; // 3D\n source.transform.position = position.Value;\n }\n else\n {\n source.spatialBlend = 0f; // 2D\n }\n\n source.Play();\n }\n\n private AudioSource GetNextSource()\n {\n // Simple round-robin for now, can be improved to find truly \"idle\" sources\n AudioSource source = _pool[_currentIndex];\n _currentIndex = (_currentIndex + 1) % poolSize;\n return source;\n }\n\n public void PlayRandom(string baseName, int variants, float volumeMult = 1f, float pitchMult = 1f)\n {\n int rand = UnityEngine.Random.Range(1, variants + 1);\n Play($\"{baseName}-{rand}\", volumeMult, pitchMult);\n }\n\n // Helper for UI/Global easy access\n public static void PlayGlobal(string name, float volume = 1f, float pitch = 1f)\n {\n if (Instance != null) Instance.Play(name, volume, pitch);\n }\n\n public static void PlayRandomGlobal(string baseName, int variants, float volume = 1f, float pitch = 1f)\n {\n if (Instance != null) Instance.PlayRandom(baseName, variants, volume, pitch);\n }\n }\n}\n"}}}]} +{"$set":{"lastUpdated":"2026-06-04T15:54:33.608Z"}} +{"id":"0d12cce2-f1aa-4691-a506-57041e0e89b3","timestamp":"2026-06-04T15:54:36.298Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":39477,"output":27,"cached":35697,"thoughts":26,"tool":0,"total":39530},"model":"gemini-3-flash-preview"} +{"$set":{"lastUpdated":"2026-06-04T15:54:36.298Z"}} +{"id":"0d12cce2-f1aa-4691-a506-57041e0e89b3","timestamp":"2026-06-04T15:54:36.298Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":39477,"output":27,"cached":35697,"thoughts":26,"tool":0,"total":39530},"model":"gemini-3-flash-preview","toolCalls":[{"id":"read_file__read_file_1780588476154_0","name":"read_file","args":{"file_path":"Assets/Scripts/Audio/AudioDatabase.cs"},"result":[{"functionResponse":{"id":"read_file__read_file_1780588476154_0","name":"read_file","response":{"output":"using System;\nusing System.Collections.Generic;\nusing UnityEngine;\nusing UnityEngine.Audio;\n\nnamespace Hallucinate.Audio\n{\n [Serializable]\n public class AudioSample\n {\n public string Name;\n public AudioClip Clip;\n [Range(0f, 1f)] public float DefaultVolume = 1f;\n [Range(0.1f, 3f)] public float DefaultPitch = 1f;\n public AudioMixerGroup MixerGroup;\n }\n\n [CreateAssetMenu(fileName = \"AudioDatabase\", menuName = \"Hallucinate/Audio/Audio Database\")]\n public class AudioDatabase : ScriptableObject\n {\n [SerializeField] private List samples = new List();\n\n private Dictionary _sampleCache;\n\n public void Initialize()\n {\n _sampleCache = new Dictionary();\n foreach (var sample in samples)\n {\n if (!string.IsNullOrEmpty(sample.Name) && !_sampleCache.ContainsKey(sample.Name))\n {\n _sampleCache.Add(sample.Name, sample);\n }\n }\n }\n\n public AudioSample GetSample(string name)\n {\n if (_sampleCache == null) Initialize();\n \n if (_sampleCache.TryGetValue(name, out var sample))\n {\n return sample;\n }\n return null;\n }\n }\n}\n"}}}],"status":"success","timestamp":"2026-06-04T15:54:36.311Z","resultDisplay":"","description":"Assets\\...\\Audio\\AudioDatabase.cs","displayName":"ReadFile","renderOutputAsMarkdown":true}]} +{"id":"963283af-388a-409a-8e9e-746d8cb3e485","timestamp":"2026-06-04T15:54:36.312Z","type":"user","content":[{"functionResponse":{"id":"read_file__read_file_1780588476154_0","name":"read_file","response":{"output":"using System;\nusing System.Collections.Generic;\nusing UnityEngine;\nusing UnityEngine.Audio;\n\nnamespace Hallucinate.Audio\n{\n [Serializable]\n public class AudioSample\n {\n public string Name;\n public AudioClip Clip;\n [Range(0f, 1f)] public float DefaultVolume = 1f;\n [Range(0.1f, 3f)] public float DefaultPitch = 1f;\n public AudioMixerGroup MixerGroup;\n }\n\n [CreateAssetMenu(fileName = \"AudioDatabase\", menuName = \"Hallucinate/Audio/Audio Database\")]\n public class AudioDatabase : ScriptableObject\n {\n [SerializeField] private List samples = new List();\n\n private Dictionary _sampleCache;\n\n public void Initialize()\n {\n _sampleCache = new Dictionary();\n foreach (var sample in samples)\n {\n if (!string.IsNullOrEmpty(sample.Name) && !_sampleCache.ContainsKey(sample.Name))\n {\n _sampleCache.Add(sample.Name, sample);\n }\n }\n }\n\n public AudioSample GetSample(string name)\n {\n if (_sampleCache == null) Initialize();\n \n if (_sampleCache.TryGetValue(name, out var sample))\n {\n return sample;\n }\n return null;\n }\n }\n}\n"}}}]} +{"$set":{"lastUpdated":"2026-06-04T15:54:36.312Z"}} +{"id":"af38b3c7-20b0-4ab0-983b-2e2831e36fd5","timestamp":"2026-06-04T15:54:52.764Z","type":"gemini","content":"","thoughts":[{"subject":"Exploring Audio Integration","description":"I've reviewed the existing `AudioManager`, finding it well-structured with its `ScriptableObject` database. My focus is now on seamlessly integrating the requested UI and item pickup audio functionalities, considering the user's provided files and potential unfamiliarity with the current setup.","timestamp":"2026-06-04T15:54:40.359Z"},{"subject":"Implementing Audio Triggers","description":"I've identified the `Hallucinate.Audio` namespace for the `AudioManager`. My next steps involve integrating specific audio playback calls within `FinishGate`, `TreasureItem`, `EnemyAI`, `GerminiNPC`, and `LaserProjectile` scripts. This will ensure UI, item pickup, and various AI-related sounds are triggered correctly, referencing the `AudioManager.PlayGlobal` and `AudioManager.Instance.Play` methods.","timestamp":"2026-06-04T15:54:42.610Z"}],"tokens":{"input":39867,"output":2023,"cached":35689,"thoughts":657,"tool":0,"total":42547},"model":"gemini-3-flash-preview"} +{"$set":{"lastUpdated":"2026-06-04T15:54:52.764Z"}} +{"id":"af38b3c7-20b0-4ab0-983b-2e2831e36fd5","timestamp":"2026-06-04T15:54:52.764Z","type":"gemini","content":"","thoughts":[{"subject":"Exploring Audio Integration","description":"I've reviewed the existing `AudioManager`, finding it well-structured with its `ScriptableObject` database. My focus is now on seamlessly integrating the requested UI and item pickup audio functionalities, considering the user's provided files and potential unfamiliarity with the current setup.","timestamp":"2026-06-04T15:54:40.359Z"},{"subject":"Implementing Audio Triggers","description":"I've identified the `Hallucinate.Audio` namespace for the `AudioManager`. My next steps involve integrating specific audio playback calls within `FinishGate`, `TreasureItem`, `EnemyAI`, `GerminiNPC`, and `LaserProjectile` scripts. This will ensure UI, item pickup, and various AI-related sounds are triggered correctly, referencing the `AudioManager.PlayGlobal` and `AudioManager.Instance.Play` methods.","timestamp":"2026-06-04T15:54:42.610Z"}],"tokens":{"input":39867,"output":2023,"cached":35689,"thoughts":657,"tool":0,"total":42547},"model":"gemini-3-flash-preview","toolCalls":[{"id":"update_topic__update_topic_1780588492253_0","name":"update_topic","args":{"title":"Adding Audio System Phase 2: UI Sound Integration","summary":"I have identified an existing AudioManager system in the project that uses a string-based lookup via an AudioDatabase. I will now integrate this system into FinishGate.cs to provide audio feedback for winning, warnings, and button interactions. I will use string fields for sound names to allow the user to easily configure them in the Unity Inspector.","strategic_intent":"Integrating AudioManager triggers into FinishGate.cs for UI sounds."},"result":[{"functionResponse":{"id":"update_topic__update_topic_1780588492253_0","name":"update_topic","response":{"output":"Current topic: \"Adding Audio System Phase 2: UI Sound Integration\"\nTopic summary: I have identified an existing AudioManager system in the project that uses a string-based lookup via an AudioDatabase. I will now integrate this system into FinishGate.cs to provide audio feedback for winning, warnings, and button interactions. I will use string fields for sound names to allow the user to easily configure them in the Unity Inspector.\n\nStrategic Intent: Integrating AudioManager triggers into FinishGate.cs for UI sounds."}}}],"status":"success","timestamp":"2026-06-04T15:54:52.797Z","resultDisplay":"## 📂 Topic: **Adding Audio System Phase 2: UI Sound Integration**\n\n**Summary:**\nI have identified an existing AudioManager system in the project that uses a string-based lookup via an AudioDatabase. I will now integrate this system into FinishGate.cs to provide audio feedback for winning, warnings, and button interactions. I will use string fields for sound names to allow the user to easily configure them in the Unity Inspector.\n\n> [!STRATEGY]\n> **Intent:** Integrating AudioManager triggers into FinishGate.cs for UI sounds.","description":"Update topic to: \"Adding Audio System Phase 2: UI Sound Integration\"","displayName":"Update Topic Context","renderOutputAsMarkdown":true},{"id":"replace__replace_1780588492762_1","name":"replace","args":{"instruction":"Integrate AudioManager triggers for UI sounds. Add sound name fields and play them at appropriate events (Win, Warning, Restart, Quit).","old_string":"using UnityEngine;\nusing UnityEngine.SceneManagement;\nusing System.Collections;\n\npublic class FinishGate : MonoBehaviour\n{\n [Header(\"Cài đặt UI Chính\")]\n public GameObject winPanel; \n public GameObject warningUI; // Thông báo \"Bạn chưa nhặt rương nào!\"\n\n [Header(\"Cài đặt Sao trên HUD (Giao diện chính)\")]\n public GameObject hudStar1;\n public GameObject hudStar2;\n public GameObject hudStar3;\n\n [Header(\"Cài đặt Sao trên Bảng Win (Kết thúc)\")]\n public GameObject winStar1;\n public GameObject winStar2;\n public GameObject winStar3;\n\n private void Start()\n {\n Time.timeScale = 1f;\n \n if (winPanel != null) winPanel.SetActive(false);\n if (warningUI != null) warningUI.SetActive(false);\n \n // Ẩn tất cả sao lúc bắt đầu\n UpdateStarsUI(0);\n UpdateWinStarsUI(0);\n }\n\n private void OnTriggerEnter(Collider other)\n {\n if (other.CompareTag(\"Check\"))\n {\n PlayerInventory player = other.GetComponentInChildren();\n if (player == null) player = other.GetComponentInParent();\n\n if (player != null)\n {\n if (player.treasuresCollected > 0)\n {\n Debug.Log($\"[Gate] VỀ ĐÍCH! Kết thúc màn chơi với {player.treasuresCollected} sao.\");\n WinGame(player.treasuresCollected);\n }\n else\n {\n Debug.Log(\"[Gate] Bạn chưa nhặt rương nào, hãy đi tìm rương trước khi về.\");\n StopAllCoroutines();\n StartCoroutine(ShowTempUI(warningUI));\n }\n }\n }\n }\n\n // Hàm public để TreasureItem có thể gọi cập nhật HUD ngay khi nhặt\n public void UpdateStarsUI(int count)\n {\n if (hudStar1) hudStar1.SetActive(count >= 1);\n if (hudStar2) hudStar2.SetActive(count >= 2);\n if (hudStar3) hudStar3.SetActive(count >= 3);\n }\n\n void UpdateWinStarsUI(int count)\n {\n if (winStar1) winStar1.SetActive(count >= 1);\n if (winStar2) winStar2.SetActive(count >= 2);\n if (winStar3) winStar3.SetActive(count >= 3);\n }\n\n void WinGame(int count) \n {\n if (winPanel != null) \n {\n winPanel.SetActive(true);\n UpdateWinStarsUI(count); // Hiện số sao tương ứng trên bảng kết thúc\n }\n \n Time.timeScale = 0f; \n Cursor.lockState = CursorLockMode.None;\n Cursor.visible = true;\n }\n\n IEnumerator ShowTempUI(GameObject ui)\n {\n if (ui == null) yield break;\n ui.SetActive(true);\n yield return new WaitForSeconds(3f);\n ui.SetActive(false);\n }\n\n public void RestartGame() \n { \n Time.timeScale = 1f;\n SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);\n }\n\n public void QuitGame()\n {\n Application.Quit();\n #if UNITY_EDITOR\n UnityEditor.EditorApplication.isPlaying = false;\n #endif\n }\n}\n","allow_multiple":false,"new_string":"using UnityEngine;\nusing UnityEngine.SceneManagement;\nusing System.Collections;\nusing Hallucinate.Audio; // Import namespace for AudioManager\n\npublic class FinishGate : MonoBehaviour\n{\n [Header(\"Cài đặt UI Chính\")]\n public GameObject winPanel; \n public GameObject warningUI; // Thông báo \"Bạn chưa nhặt rương nào!\"\n\n [Header(\"Cài đặt Sao trên HUD (Giao diện chính)\")]\n public GameObject hudStar1;\n public GameObject hudStar2;\n public GameObject hudStar3;\n\n [Header(\"Cài đặt Sao trên Bảng Win (Kết thúc)\")]\n public GameObject winStar1;\n public GameObject winStar2;\n public GameObject winStar3;\n\n [Header(\"Cài đặt Âm thanh\")]\n public string winSound = \"UI_Win\";\n public string warningSound = \"UI_Warning\";\n public string clickSound = \"UI_Click\";\n\n private void Start()\n {\n Time.timeScale = 1f;\n \n if (winPanel != null) winPanel.SetActive(false);\n if (warningUI != null) warningUI.SetActive(false);\n \n // Ẩn tất cả sao lúc bắt đầu\n UpdateStarsUI(0);\n UpdateWinStarsUI(0);\n }\n\n private void OnTriggerEnter(Collider other)\n {\n if (other.CompareTag(\"Check\"))\n {\n PlayerInventory player = other.GetComponentInChildren();\n if (player == null) player = other.GetComponentInParent();\n\n if (player != null)\n {\n if (player.treasuresCollected > 0)\n {\n Debug.Log($\"[Gate] VỀ ĐÍCH! Kết thúc màn chơi với {player.treasuresCollected} sao.\");\n WinGame(player.treasuresCollected);\n }\n else\n {\n Debug.Log(\"[Gate] Bạn chưa nhặt rương nào, hãy đi tìm rương trước khi về.\");\n StopAllCoroutines();\n StartCoroutine(ShowTempUI(warningUI));\n }\n }\n }\n }\n\n // Hàm public để TreasureItem có thể gọi cập nhật HUD ngay khi nhặt\n public void UpdateStarsUI(int count)\n {\n if (hudStar1) hudStar1.SetActive(count >= 1);\n if (hudStar2) hudStar2.SetActive(count >= 2);\n if (hudStar3) hudStar3.SetActive(count >= 3);\n }\n\n void UpdateWinStarsUI(int count)\n {\n if (winStar1) winStar1.SetActive(count >= 1);\n if (winStar2) winStar2.SetActive(count >= 2);\n if (winStar3) winStar3.SetActive(count >= 3);\n }\n\n void WinGame(int count) \n {\n if (winPanel != null) \n {\n winPanel.SetActive(true);\n UpdateWinStarsUI(count); // Hiện số sao tương ứng trên bảng kết thúc\n }\n \n AudioManager.PlayGlobal(winSound); // Chạy âm thanh thắng cuộc\n \n Time.timeScale = 0f; \n Cursor.lockState = CursorLockMode.None;\n Cursor.visible = true;\n }\n\n IEnumerator ShowTempUI(GameObject ui)\n {\n if (ui == null) yield break;\n ui.SetActive(true);\n \n if (ui == warningUI) AudioManager.PlayGlobal(warningSound); // Chạy âm thanh cảnh báo\n\n yield return new WaitForSeconds(3f);\n ui.SetActive(false);\n }\n\n public void RestartGame() \n { \n AudioManager.PlayGlobal(clickSound); // Âm thanh click nút\n Time.timeScale = 1f;\n SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);\n }\n\n public void QuitGame()\n {\n AudioManager.PlayGlobal(clickSound); // Âm thanh click nút\n Application.Quit();\n #if UNITY_EDITOR\n UnityEditor.EditorApplication.isPlaying = false;\n #endif\n }\n}\n","file_path":"Assets/Scripts/Cho mon AI/FinishGate.cs"},"result":[{"functionResponse":{"id":"replace__replace_1780588492762_1","name":"replace","response":{"output":"Successfully modified file: E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Cho mon AI\\FinishGate.cs (1 replacements). Here is the updated code:\nusing UnityEngine;\nusing UnityEngine.SceneManagement;\nusing System.Collections;\nusing Hallucinate.Audio; // Import namespace for AudioManager\n\npublic class FinishGate : MonoBehaviour\n{\n [Header(\"Cài đặt UI Chính\")]\n public GameObject winPanel; \n public GameObject warningUI; // Thông báo \"Bạn chưa nhặt rương nào!\"\n\n [Header(\"Cài đặt Sao trên HUD (Giao diện chính)\")]\n public GameObject hudStar1;\n public GameObject hudStar2;\n public GameObject hudStar3;\n\n [Header(\"Cài đặt Sao trên Bảng Win (Kết thúc)\")]\n public GameObject winStar1;\n public GameObject winStar2;\n public GameObject winStar3;\n\n [Header(\"Cài đặt Âm thanh\")]\n public string winSound = \"UI_Win\";\n public string warningSound = \"UI_Warning\";\n public string clickSound = \"UI_Click\";\n\n private void Start()\n {\n Time.timeScale = 1f;\n \n if (winPanel != null) winPanel.SetActive(false);\n if (warningUI != null) warningUI.SetActive(false);\n \n // Ẩn tất cả sao lúc bắt đầu\n UpdateStarsUI(0);\n UpdateWinStarsUI(0);\n }\n\n private void OnTriggerEnter(Collider other)\n {\n if (other.CompareTag(\"Check\"))\n {\n PlayerInventory player = other.GetComponentInChildren();\n if (player == null) player = other.GetComponentInParent();\n\n if (player != null)\n {\n if (player.treasuresCollected > 0)\n {\n Debug.Log($\"[Gate] VỀ ĐÍCH! Kết thúc màn chơi với {player.treasuresCollected} sao.\");\n WinGame(player.treasuresCollected);\n }\n else\n {\n Debug.Log(\"[Gate] Bạn chưa nhặt rương nào, hãy đi tìm rương trước khi về.\");\n StopAllCoroutines();\n StartCoroutine(ShowTempUI(warningUI));\n }\n }\n }\n }\n\n // Hàm public để TreasureItem có thể gọi cập nhật HUD ngay khi nhặt\n public void UpdateStarsUI(int count)\n {\n if (hudStar1) hudStar1.SetActive(count >= 1);\n if (hudStar2) hudStar2.SetActive(count >= 2);\n if (hudStar3) hudStar3.SetActive(count >= 3);\n }\n\n void UpdateWinStarsUI(int count)\n {\n if (winStar1) winStar1.SetActive(count >= 1);\n if (winStar2) winStar2.SetActive(count >= 2);\n if (winStar3) winStar3.SetActive(count >= 3);\n }\n\n void WinGame(int count) \n {\n if (winPanel != null) \n {\n winPanel.SetActive(true);\n UpdateWinStarsUI(count); // Hiện số sao tương ứng trên bảng kết thúc\n }\n \n AudioManager.PlayGlobal(winSound); // Chạy âm thanh thắng cuộc\n \n Time.timeScale = 0f; \n Cursor.lockState = CursorLockMode.None;\n Cursor.visible = true;\n }\n\n IEnumerator ShowTempUI(GameObject ui)\n {\n if (ui == null) yield break;\n ui.SetActive(true);\n \n if (ui == warningUI) AudioManager.PlayGlobal(warningSound); // Chạy âm thanh cảnh báo\n\n yield return new WaitForSeconds(3f);\n ui.SetActive(false);\n }\n\n public void RestartGame() \n { \n AudioManager.PlayGlobal(clickSound); // Âm thanh click nút\n Time.timeScale = 1f;\n SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);\n }\n\n public void QuitGame()\n {\n AudioManager.PlayGlobal(clickSound); // Âm thanh click nút\n Application.Quit();\n #if UNITY_EDITOR\n UnityEditor.EditorApplication.isPlaying = false;\n #endif\n }\n}\n"}}}],"status":"success","timestamp":"2026-06-04T15:54:52.797Z","resultDisplay":{"fileDiff":"Index: FinishGate.cs\n===================================================================\n--- FinishGate.cs\tCurrent\n+++ FinishGate.cs\tProposed\n@@ -1,6 +1,7 @@\n using UnityEngine;\n using UnityEngine.SceneManagement;\n using System.Collections;\n+using Hallucinate.Audio; // Import namespace for AudioManager\n \n public class FinishGate : MonoBehaviour\n {\n@@ -18,6 +19,11 @@\n public GameObject winStar2;\n public GameObject winStar3;\n \n+ [Header(\"Cài đặt Âm thanh\")]\n+ public string winSound = \"UI_Win\";\n+ public string warningSound = \"UI_Warning\";\n+ public string clickSound = \"UI_Click\";\n+\n private void Start()\n {\n Time.timeScale = 1f;\n@@ -76,6 +82,8 @@\n winPanel.SetActive(true);\n UpdateWinStarsUI(count); // Hiện số sao tương ứng trên bảng kết thúc\n }\n+ \n+ AudioManager.PlayGlobal(winSound); // Chạy âm thanh thắng cuộc\n \n Time.timeScale = 0f; \n Cursor.lockState = CursorLockMode.None;\n@@ -86,18 +94,23 @@\n {\n if (ui == null) yield break;\n ui.SetActive(true);\n+ \n+ if (ui == warningUI) AudioManager.PlayGlobal(warningSound); // Chạy âm thanh cảnh báo\n+\n yield return new WaitForSeconds(3f);\n ui.SetActive(false);\n }\n \n public void RestartGame() \n { \n+ AudioManager.PlayGlobal(clickSound); // Âm thanh click nút\n Time.timeScale = 1f;\n SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);\n }\n \n public void QuitGame()\n {\n+ AudioManager.PlayGlobal(clickSound); // Âm thanh click nút\n Application.Quit();\n #if UNITY_EDITOR\n UnityEditor.EditorApplication.isPlaying = false;\n","fileName":"FinishGate.cs","filePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Cho mon AI\\FinishGate.cs","originalContent":"using UnityEngine;\nusing UnityEngine.SceneManagement;\nusing System.Collections;\n\npublic class FinishGate : MonoBehaviour\n{\n [Header(\"Cài đặt UI Chính\")]\n public GameObject winPanel; \n public GameObject warningUI; // Thông báo \"Bạn chưa nhặt rương nào!\"\n\n [Header(\"Cài đặt Sao trên HUD (Giao diện chính)\")]\n public GameObject hudStar1;\n public GameObject hudStar2;\n public GameObject hudStar3;\n\n [Header(\"Cài đặt Sao trên Bảng Win (Kết thúc)\")]\n public GameObject winStar1;\n public GameObject winStar2;\n public GameObject winStar3;\n\n private void Start()\n {\n Time.timeScale = 1f;\n \n if (winPanel != null) winPanel.SetActive(false);\n if (warningUI != null) warningUI.SetActive(false);\n \n // Ẩn tất cả sao lúc bắt đầu\n UpdateStarsUI(0);\n UpdateWinStarsUI(0);\n }\n\n private void OnTriggerEnter(Collider other)\n {\n if (other.CompareTag(\"Check\"))\n {\n PlayerInventory player = other.GetComponentInChildren();\n if (player == null) player = other.GetComponentInParent();\n\n if (player != null)\n {\n if (player.treasuresCollected > 0)\n {\n Debug.Log($\"[Gate] VỀ ĐÍCH! Kết thúc màn chơi với {player.treasuresCollected} sao.\");\n WinGame(player.treasuresCollected);\n }\n else\n {\n Debug.Log(\"[Gate] Bạn chưa nhặt rương nào, hãy đi tìm rương trước khi về.\");\n StopAllCoroutines();\n StartCoroutine(ShowTempUI(warningUI));\n }\n }\n }\n }\n\n // Hàm public để TreasureItem có thể gọi cập nhật HUD ngay khi nhặt\n public void UpdateStarsUI(int count)\n {\n if (hudStar1) hudStar1.SetActive(count >= 1);\n if (hudStar2) hudStar2.SetActive(count >= 2);\n if (hudStar3) hudStar3.SetActive(count >= 3);\n }\n\n void UpdateWinStarsUI(int count)\n {\n if (winStar1) winStar1.SetActive(count >= 1);\n if (winStar2) winStar2.SetActive(count >= 2);\n if (winStar3) winStar3.SetActive(count >= 3);\n }\n\n void WinGame(int count) \n {\n if (winPanel != null) \n {\n winPanel.SetActive(true);\n UpdateWinStarsUI(count); // Hiện số sao tương ứng trên bảng kết thúc\n }\n \n Time.timeScale = 0f; \n Cursor.lockState = CursorLockMode.None;\n Cursor.visible = true;\n }\n\n IEnumerator ShowTempUI(GameObject ui)\n {\n if (ui == null) yield break;\n ui.SetActive(true);\n yield return new WaitForSeconds(3f);\n ui.SetActive(false);\n }\n\n public void RestartGame() \n { \n Time.timeScale = 1f;\n SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);\n }\n\n public void QuitGame()\n {\n Application.Quit();\n #if UNITY_EDITOR\n UnityEditor.EditorApplication.isPlaying = false;\n #endif\n }\n}\n","newContent":"using UnityEngine;\nusing UnityEngine.SceneManagement;\nusing System.Collections;\nusing Hallucinate.Audio; // Import namespace for AudioManager\n\npublic class FinishGate : MonoBehaviour\n{\n [Header(\"Cài đặt UI Chính\")]\n public GameObject winPanel; \n public GameObject warningUI; // Thông báo \"Bạn chưa nhặt rương nào!\"\n\n [Header(\"Cài đặt Sao trên HUD (Giao diện chính)\")]\n public GameObject hudStar1;\n public GameObject hudStar2;\n public GameObject hudStar3;\n\n [Header(\"Cài đặt Sao trên Bảng Win (Kết thúc)\")]\n public GameObject winStar1;\n public GameObject winStar2;\n public GameObject winStar3;\n\n [Header(\"Cài đặt Âm thanh\")]\n public string winSound = \"UI_Win\";\n public string warningSound = \"UI_Warning\";\n public string clickSound = \"UI_Click\";\n\n private void Start()\n {\n Time.timeScale = 1f;\n \n if (winPanel != null) winPanel.SetActive(false);\n if (warningUI != null) warningUI.SetActive(false);\n \n // Ẩn tất cả sao lúc bắt đầu\n UpdateStarsUI(0);\n UpdateWinStarsUI(0);\n }\n\n private void OnTriggerEnter(Collider other)\n {\n if (other.CompareTag(\"Check\"))\n {\n PlayerInventory player = other.GetComponentInChildren();\n if (player == null) player = other.GetComponentInParent();\n\n if (player != null)\n {\n if (player.treasuresCollected > 0)\n {\n Debug.Log($\"[Gate] VỀ ĐÍCH! Kết thúc màn chơi với {player.treasuresCollected} sao.\");\n WinGame(player.treasuresCollected);\n }\n else\n {\n Debug.Log(\"[Gate] Bạn chưa nhặt rương nào, hãy đi tìm rương trước khi về.\");\n StopAllCoroutines();\n StartCoroutine(ShowTempUI(warningUI));\n }\n }\n }\n }\n\n // Hàm public để TreasureItem có thể gọi cập nhật HUD ngay khi nhặt\n public void UpdateStarsUI(int count)\n {\n if (hudStar1) hudStar1.SetActive(count >= 1);\n if (hudStar2) hudStar2.SetActive(count >= 2);\n if (hudStar3) hudStar3.SetActive(count >= 3);\n }\n\n void UpdateWinStarsUI(int count)\n {\n if (winStar1) winStar1.SetActive(count >= 1);\n if (winStar2) winStar2.SetActive(count >= 2);\n if (winStar3) winStar3.SetActive(count >= 3);\n }\n\n void WinGame(int count) \n {\n if (winPanel != null) \n {\n winPanel.SetActive(true);\n UpdateWinStarsUI(count); // Hiện số sao tương ứng trên bảng kết thúc\n }\n \n AudioManager.PlayGlobal(winSound); // Chạy âm thanh thắng cuộc\n \n Time.timeScale = 0f; \n Cursor.lockState = CursorLockMode.None;\n Cursor.visible = true;\n }\n\n IEnumerator ShowTempUI(GameObject ui)\n {\n if (ui == null) yield break;\n ui.SetActive(true);\n \n if (ui == warningUI) AudioManager.PlayGlobal(warningSound); // Chạy âm thanh cảnh báo\n\n yield return new WaitForSeconds(3f);\n ui.SetActive(false);\n }\n\n public void RestartGame() \n { \n AudioManager.PlayGlobal(clickSound); // Âm thanh click nút\n Time.timeScale = 1f;\n SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);\n }\n\n public void QuitGame()\n {\n AudioManager.PlayGlobal(clickSound); // Âm thanh click nút\n Application.Quit();\n #if UNITY_EDITOR\n UnityEditor.EditorApplication.isPlaying = false;\n #endif\n }\n}\n","diffStat":{"model_added_lines":13,"model_removed_lines":0,"model_added_chars":530,"model_removed_chars":0,"user_added_lines":0,"user_removed_lines":0,"user_added_chars":0,"user_removed_chars":0},"isNewFile":false},"description":"Assets\\...\\Cho mon AI\\FinishGate.cs: using UnityEngine;... => using UnityEngine;...","displayName":"Edit","renderOutputAsMarkdown":true}]} +{"id":"c9d959f9-65fd-43a7-a73b-a5b1d6c8bc9b","timestamp":"2026-06-04T15:54:53.197Z","type":"user","content":[{"functionResponse":{"id":"update_topic__update_topic_1780588492253_0","name":"update_topic","response":{"output":"Current topic: \"Adding Audio System Phase 2: UI Sound Integration\"\nTopic summary: I have identified an existing AudioManager system in the project that uses a string-based lookup via an AudioDatabase. I will now integrate this system into FinishGate.cs to provide audio feedback for winning, warnings, and button interactions. I will use string fields for sound names to allow the user to easily configure them in the Unity Inspector.\n\nStrategic Intent: Integrating AudioManager triggers into FinishGate.cs for UI sounds."}}},{"functionResponse":{"id":"replace__replace_1780588492762_1","name":"replace","response":{"output":"Successfully modified file: E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Cho mon AI\\FinishGate.cs (1 replacements). Here is the updated code:\nusing UnityEngine;\nusing UnityEngine.SceneManagement;\nusing System.Collections;\nusing Hallucinate.Audio; // Import namespace for AudioManager\n\npublic class FinishGate : MonoBehaviour\n{\n [Header(\"Cài đặt UI Chính\")]\n public GameObject winPanel; \n public GameObject warningUI; // Thông báo \"Bạn chưa nhặt rương nào!\"\n\n [Header(\"Cài đặt Sao trên HUD (Giao diện chính)\")]\n public GameObject hudStar1;\n public GameObject hudStar2;\n public GameObject hudStar3;\n\n [Header(\"Cài đặt Sao trên Bảng Win (Kết thúc)\")]\n public GameObject winStar1;\n public GameObject winStar2;\n public GameObject winStar3;\n\n [Header(\"Cài đặt Âm thanh\")]\n public string winSound = \"UI_Win\";\n public string warningSound = \"UI_Warning\";\n public string clickSound = \"UI_Click\";\n\n private void Start()\n {\n Time.timeScale = 1f;\n \n if (winPanel != null) winPanel.SetActive(false);\n if (warningUI != null) warningUI.SetActive(false);\n \n // Ẩn tất cả sao lúc bắt đầu\n UpdateStarsUI(0);\n UpdateWinStarsUI(0);\n }\n\n private void OnTriggerEnter(Collider other)\n {\n if (other.CompareTag(\"Check\"))\n {\n PlayerInventory player = other.GetComponentInChildren();\n if (player == null) player = other.GetComponentInParent();\n\n if (player != null)\n {\n if (player.treasuresCollected > 0)\n {\n Debug.Log($\"[Gate] VỀ ĐÍCH! Kết thúc màn chơi với {player.treasuresCollected} sao.\");\n WinGame(player.treasuresCollected);\n }\n else\n {\n Debug.Log(\"[Gate] Bạn chưa nhặt rương nào, hãy đi tìm rương trước khi về.\");\n StopAllCoroutines();\n StartCoroutine(ShowTempUI(warningUI));\n }\n }\n }\n }\n\n // Hàm public để TreasureItem có thể gọi cập nhật HUD ngay khi nhặt\n public void UpdateStarsUI(int count)\n {\n if (hudStar1) hudStar1.SetActive(count >= 1);\n if (hudStar2) hudStar2.SetActive(count >= 2);\n if (hudStar3) hudStar3.SetActive(count >= 3);\n }\n\n void UpdateWinStarsUI(int count)\n {\n if (winStar1) winStar1.SetActive(count >= 1);\n if (winStar2) winStar2.SetActive(count >= 2);\n if (winStar3) winStar3.SetActive(count >= 3);\n }\n\n void WinGame(int count) \n {\n if (winPanel != null) \n {\n winPanel.SetActive(true);\n UpdateWinStarsUI(count); // Hiện số sao tương ứng trên bảng kết thúc\n }\n \n AudioManager.PlayGlobal(winSound); // Chạy âm thanh thắng cuộc\n \n Time.timeScale = 0f; \n Cursor.lockState = CursorLockMode.None;\n Cursor.visible = true;\n }\n\n IEnumerator ShowTempUI(GameObject ui)\n {\n if (ui == null) yield break;\n ui.SetActive(true);\n \n if (ui == warningUI) AudioManager.PlayGlobal(warningSound); // Chạy âm thanh cảnh báo\n\n yield return new WaitForSeconds(3f);\n ui.SetActive(false);\n }\n\n public void RestartGame() \n { \n AudioManager.PlayGlobal(clickSound); // Âm thanh click nút\n Time.timeScale = 1f;\n SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);\n }\n\n public void QuitGame()\n {\n AudioManager.PlayGlobal(clickSound); // Âm thanh click nút\n Application.Quit();\n #if UNITY_EDITOR\n UnityEditor.EditorApplication.isPlaying = false;\n #endif\n }\n}\n"}}}]} +{"$set":{"lastUpdated":"2026-06-04T15:54:53.197Z"}} +{"id":"2673b2c4-0b76-480c-9637-07917062d88b","timestamp":"2026-06-04T15:55:00.550Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":43650,"output":904,"cached":0,"thoughts":18,"tool":0,"total":44572},"model":"gemini-3-flash-preview"} +{"$set":{"lastUpdated":"2026-06-04T15:55:00.550Z"}} +{"id":"2673b2c4-0b76-480c-9637-07917062d88b","timestamp":"2026-06-04T15:55:00.550Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":43650,"output":904,"cached":0,"thoughts":18,"tool":0,"total":44572},"model":"gemini-3-flash-preview","toolCalls":[{"id":"update_topic__update_topic_1780588500066_0","name":"update_topic","args":{"summary":"I am adding a pickup sound trigger to TreasureItem.cs using the AudioManager. This will provide audio feedback when the player collects a treasure artifact. I'll use a spatial sound if possible, or a global one for clarity.","title":"Adding Audio System Phase 3: Pickup Sound Integration","strategic_intent":"Integrating pickup sound into TreasureItem.cs."},"result":[{"functionResponse":{"id":"update_topic__update_topic_1780588500066_0","name":"update_topic","response":{"output":"Current topic: \"Adding Audio System Phase 3: Pickup Sound Integration\"\nTopic summary: I am adding a pickup sound trigger to TreasureItem.cs using the AudioManager. This will provide audio feedback when the player collects a treasure artifact. I'll use a spatial sound if possible, or a global one for clarity.\n\nStrategic Intent: Integrating pickup sound into TreasureItem.cs."}}}],"status":"success","timestamp":"2026-06-04T15:55:00.579Z","resultDisplay":"## 📂 Topic: **Adding Audio System Phase 3: Pickup Sound Integration**\n\n**Summary:**\nI am adding a pickup sound trigger to TreasureItem.cs using the AudioManager. This will provide audio feedback when the player collects a treasure artifact. I'll use a spatial sound if possible, or a global one for clarity.\n\n> [!STRATEGY]\n> **Intent:** Integrating pickup sound into TreasureItem.cs.","description":"Update topic to: \"Adding Audio System Phase 3: Pickup Sound Integration\"","displayName":"Update Topic Context","renderOutputAsMarkdown":true},{"id":"replace__replace_1780588500549_1","name":"replace","args":{"file_path":"Assets/Scripts/Cho mon AI/TreasureItem.cs","instruction":"Add pickup sound trigger using AudioManager.","new_string":"using UnityEngine;\nusing System.Collections;\nusing Hallucinate.Audio;\n\npublic class TreasureItem : MonoBehaviour\n{\n [Header(\"Cài đặt UI thông báo\")]\n public GameObject notificationText; // Text \"Đã nhặt Cổ vật\"\n\n [Header(\"Cài đặt Âm thanh\")]\n public string pickupSound = \"Item_Pickup\";\n\n private void OnTriggerEnter(Collider other)\n {\n if (other.CompareTag(\"Player\"))\n {\n PlayerInventory player = other.GetComponentInChildren();\n if (player == null) player = other.GetComponentInParent();\n \n if (player != null)\n {\n // 1. Tăng số lượng rương đang giữ\n player.treasuresCollected++;\n Debug.Log($\"[Chest] NHẶT THÀNH CÔNG! Số rương hiện tại: {player.treasuresCollected}\");\n\n // 2. Cập nhật sao trên HUD ngay lập tức (Tìm FinishGate để mượn hàm update)\n FinishGate gate = Object.FindAnyObjectByType();\n if (gate != null)\n {\n gate.UpdateStarsUI(player.treasuresCollected);\n }\n\n // 3. Kích hoạt trạng thái truy đuổi cho toàn bộ Enemy AI\n SetEnemiesAlertState(true);\n\n // 4. Chạy âm thanh nhặt đồ\n if (AudioManager.Instance != null)\n {\n AudioManager.Instance.Play(pickupSound, position: transform.position);\n }\n\n if (notificationText != null)\n {\n StopAllCoroutines();\n StartCoroutine(ShowNotification());\n }\n \n // Biến mất rương\n gameObject.SetActive(false);\n }\n }\n }\n","allow_multiple":false,"old_string":"using UnityEngine;\nusing System.Collections;\n\npublic class TreasureItem : MonoBehaviour\n{\n [Header(\"Cài đặt UI thông báo\")]\n public GameObject notificationText; // Text \"Đã nhặt Cổ vật\"\n\n private void OnTriggerEnter(Collider other)\n {\n if (other.CompareTag(\"Player\"))\n {\n PlayerInventory player = other.GetComponentInChildren();\n if (player == null) player = other.GetComponentInParent();\n \n if (player != null)\n {\n // 1. Tăng số lượng rương đang giữ\n player.treasuresCollected++;\n Debug.Log($\"[Chest] NHẶT THÀNH CÔNG! Số rương hiện tại: {player.treasuresCollected}\");\n\n // 2. Cập nhật sao trên HUD ngay lập tức (Tìm FinishGate để mượn hàm update)\n FinishGate gate = Object.FindAnyObjectByType();\n if (gate != null)\n {\n gate.UpdateStarsUI(player.treasuresCollected);\n }\n\n // 3. Kích hoạt trạng thái truy đuổi cho toàn bộ Enemy AI\n SetEnemiesAlertState(true);\n\n if (notificationText != null)\n {\n StopAllCoroutines();\n StartCoroutine(ShowNotification());\n }\n \n // Biến mất rương\n gameObject.SetActive(false);\n }\n }\n }\n"},"result":[{"functionResponse":{"id":"replace__replace_1780588500549_1","name":"replace","response":{"output":"Successfully modified file: E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Cho mon AI\\TreasureItem.cs (1 replacements). Here is the updated code:\nusing UnityEngine;\nusing System.Collections;\nusing Hallucinate.Audio;\n\npublic class TreasureItem : MonoBehaviour\n{\n [Header(\"Cài đặt UI thông báo\")]\n public GameObject notificationText; // Text \"Đã nhặt Cổ vật\"\n\n [Header(\"Cài đặt Âm thanh\")]\n public string pickupSound = \"Item_Pickup\";\n\n private void OnTriggerEnter(Collider other)\n {\n if (other.CompareTag(\"Player\"))\n {\n PlayerInventory player = other.GetComponentInChildren();\n if (player == null) player = other.GetComponentInParent();\n \n if (player != null)\n {\n // 1. Tăng số lượng rương đang giữ\n player.treasuresCollected++;\n Debug.Log($\"[Chest] NHẶT THÀNH CÔNG! Số rương hiện tại: {player.treasuresCollected}\");\n\n // 2. Cập nhật sao trên HUD ngay lập tức (Tìm FinishGate để mượn hàm update)\n FinishGate gate = Object.FindAnyObjectByType();\n if (gate != null)\n {\n gate.UpdateStarsUI(player.treasuresCollected);\n }\n\n // 3. Kích hoạt trạng thái truy đuổi cho toàn bộ Enemy AI\n SetEnemiesAlertState(true);\n\n // 4. Chạy âm thanh nhặt đồ\n if (AudioManager.Instance != null)\n {\n AudioManager.Instance.Play(pickupSound, position: transform.position);\n }\n\n if (notificationText != null)\n {\n StopAllCoroutines();\n StartCoroutine(ShowNotification());\n }\n \n // Biến mất rương\n gameObject.SetActive(false);\n }\n }\n }\n\n private void SetEnemiesAlertState(bool state)\n {\n EnemyAI[] allEnemies = Object.FindObjectsByType(FindObjectsSortMode.None);\n foreach (EnemyAI enemy in allEnemies)\n {\n enemy.playerHasArtifact = state;\n }\n }\n\n IEnumerator ShowNotification()\n {\n notificationText.SetActive(true);\n yield return new WaitForSeconds(2f);\n notificationText.SetActive(false);\n }\n}\n"}}}],"status":"success","timestamp":"2026-06-04T15:55:00.579Z","resultDisplay":{"fileDiff":"Index: TreasureItem.cs\n===================================================================\n--- TreasureItem.cs\tCurrent\n+++ TreasureItem.cs\tProposed\n@@ -1,11 +1,15 @@\n using UnityEngine;\n using System.Collections;\n+using Hallucinate.Audio;\n \n public class TreasureItem : MonoBehaviour\n {\n [Header(\"Cài đặt UI thông báo\")]\n public GameObject notificationText; // Text \"Đã nhặt Cổ vật\"\n \n+ [Header(\"Cài đặt Âm thanh\")]\n+ public string pickupSound = \"Item_Pickup\";\n+\n private void OnTriggerEnter(Collider other)\n {\n if (other.CompareTag(\"Player\"))\n@@ -29,6 +33,12 @@\n // 3. Kích hoạt trạng thái truy đuổi cho toàn bộ Enemy AI\n SetEnemiesAlertState(true);\n \n+ // 4. Chạy âm thanh nhặt đồ\n+ if (AudioManager.Instance != null)\n+ {\n+ AudioManager.Instance.Play(pickupSound, position: transform.position);\n+ }\n+\n if (notificationText != null)\n {\n StopAllCoroutines();\n","fileName":"TreasureItem.cs","filePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Cho mon AI\\TreasureItem.cs","originalContent":"using UnityEngine;\nusing System.Collections;\n\npublic class TreasureItem : MonoBehaviour\n{\n [Header(\"Cài đặt UI thông báo\")]\n public GameObject notificationText; // Text \"Đã nhặt Cổ vật\"\n\n private void OnTriggerEnter(Collider other)\n {\n if (other.CompareTag(\"Player\"))\n {\n PlayerInventory player = other.GetComponentInChildren();\n if (player == null) player = other.GetComponentInParent();\n \n if (player != null)\n {\n // 1. Tăng số lượng rương đang giữ\n player.treasuresCollected++;\n Debug.Log($\"[Chest] NHẶT THÀNH CÔNG! Số rương hiện tại: {player.treasuresCollected}\");\n\n // 2. Cập nhật sao trên HUD ngay lập tức (Tìm FinishGate để mượn hàm update)\n FinishGate gate = Object.FindAnyObjectByType();\n if (gate != null)\n {\n gate.UpdateStarsUI(player.treasuresCollected);\n }\n\n // 3. Kích hoạt trạng thái truy đuổi cho toàn bộ Enemy AI\n SetEnemiesAlertState(true);\n\n if (notificationText != null)\n {\n StopAllCoroutines();\n StartCoroutine(ShowNotification());\n }\n \n // Biến mất rương\n gameObject.SetActive(false);\n }\n }\n }\n\n private void SetEnemiesAlertState(bool state)\n {\n EnemyAI[] allEnemies = Object.FindObjectsByType(FindObjectsSortMode.None);\n foreach (EnemyAI enemy in allEnemies)\n {\n enemy.playerHasArtifact = state;\n }\n }\n\n IEnumerator ShowNotification()\n {\n notificationText.SetActive(true);\n yield return new WaitForSeconds(2f);\n notificationText.SetActive(false);\n }\n}\n","newContent":"using UnityEngine;\nusing System.Collections;\nusing Hallucinate.Audio;\n\npublic class TreasureItem : MonoBehaviour\n{\n [Header(\"Cài đặt UI thông báo\")]\n public GameObject notificationText; // Text \"Đã nhặt Cổ vật\"\n\n [Header(\"Cài đặt Âm thanh\")]\n public string pickupSound = \"Item_Pickup\";\n\n private void OnTriggerEnter(Collider other)\n {\n if (other.CompareTag(\"Player\"))\n {\n PlayerInventory player = other.GetComponentInChildren();\n if (player == null) player = other.GetComponentInParent();\n \n if (player != null)\n {\n // 1. Tăng số lượng rương đang giữ\n player.treasuresCollected++;\n Debug.Log($\"[Chest] NHẶT THÀNH CÔNG! Số rương hiện tại: {player.treasuresCollected}\");\n\n // 2. Cập nhật sao trên HUD ngay lập tức (Tìm FinishGate để mượn hàm update)\n FinishGate gate = Object.FindAnyObjectByType();\n if (gate != null)\n {\n gate.UpdateStarsUI(player.treasuresCollected);\n }\n\n // 3. Kích hoạt trạng thái truy đuổi cho toàn bộ Enemy AI\n SetEnemiesAlertState(true);\n\n // 4. Chạy âm thanh nhặt đồ\n if (AudioManager.Instance != null)\n {\n AudioManager.Instance.Play(pickupSound, position: transform.position);\n }\n\n if (notificationText != null)\n {\n StopAllCoroutines();\n StartCoroutine(ShowNotification());\n }\n \n // Biến mất rương\n gameObject.SetActive(false);\n }\n }\n }\n\n private void SetEnemiesAlertState(bool state)\n {\n EnemyAI[] allEnemies = Object.FindObjectsByType(FindObjectsSortMode.None);\n foreach (EnemyAI enemy in allEnemies)\n {\n enemy.playerHasArtifact = state;\n }\n }\n\n IEnumerator ShowNotification()\n {\n notificationText.SetActive(true);\n yield return new WaitForSeconds(2f);\n notificationText.SetActive(false);\n }\n}\n","diffStat":{"model_added_lines":10,"model_removed_lines":0,"model_added_chars":319,"model_removed_chars":0,"user_added_lines":0,"user_removed_lines":0,"user_added_chars":0,"user_removed_chars":0},"isNewFile":false},"description":"Assets\\...\\TreasureItem.cs: using UnityEngine;... => using UnityEngine;...","displayName":"Edit","renderOutputAsMarkdown":true}]} +{"id":"4e674779-5aad-4c8f-9f99-41296afd4561","timestamp":"2026-06-04T15:55:01.012Z","type":"user","content":[{"functionResponse":{"id":"update_topic__update_topic_1780588500066_0","name":"update_topic","response":{"output":"Current topic: \"Adding Audio System Phase 3: Pickup Sound Integration\"\nTopic summary: I am adding a pickup sound trigger to TreasureItem.cs using the AudioManager. This will provide audio feedback when the player collects a treasure artifact. I'll use a spatial sound if possible, or a global one for clarity.\n\nStrategic Intent: Integrating pickup sound into TreasureItem.cs."}}},{"functionResponse":{"id":"replace__replace_1780588500549_1","name":"replace","response":{"output":"Successfully modified file: E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\Cho mon AI\\TreasureItem.cs (1 replacements). Here is the updated code:\nusing UnityEngine;\nusing System.Collections;\nusing Hallucinate.Audio;\n\npublic class TreasureItem : MonoBehaviour\n{\n [Header(\"Cài đặt UI thông báo\")]\n public GameObject notificationText; // Text \"Đã nhặt Cổ vật\"\n\n [Header(\"Cài đặt Âm thanh\")]\n public string pickupSound = \"Item_Pickup\";\n\n private void OnTriggerEnter(Collider other)\n {\n if (other.CompareTag(\"Player\"))\n {\n PlayerInventory player = other.GetComponentInChildren();\n if (player == null) player = other.GetComponentInParent();\n \n if (player != null)\n {\n // 1. Tăng số lượng rương đang giữ\n player.treasuresCollected++;\n Debug.Log($\"[Chest] NHẶT THÀNH CÔNG! Số rương hiện tại: {player.treasuresCollected}\");\n\n // 2. Cập nhật sao trên HUD ngay lập tức (Tìm FinishGate để mượn hàm update)\n FinishGate gate = Object.FindAnyObjectByType();\n if (gate != null)\n {\n gate.UpdateStarsUI(player.treasuresCollected);\n }\n\n // 3. Kích hoạt trạng thái truy đuổi cho toàn bộ Enemy AI\n SetEnemiesAlertState(true);\n\n // 4. Chạy âm thanh nhặt đồ\n if (AudioManager.Instance != null)\n {\n AudioManager.Instance.Play(pickupSound, position: transform.position);\n }\n\n if (notificationText != null)\n {\n StopAllCoroutines();\n StartCoroutine(ShowNotification());\n }\n \n // Biến mất rương\n gameObject.SetActive(false);\n }\n }\n }\n\n private void SetEnemiesAlertState(bool state)\n {\n EnemyAI[] allEnemies = Object.FindObjectsByType(FindObjectsSortMode.None);\n foreach (EnemyAI enemy in allEnemies)\n {\n enemy.playerHasArtifact = state;\n }\n }\n\n IEnumerator ShowNotification()\n {\n notificationText.SetActive(true);\n yield return new WaitForSeconds(2f);\n notificationText.SetActive(false);\n }\n}\n"}}}]} +{"$set":{"lastUpdated":"2026-06-04T15:55:01.013Z"}} +{"id":"600b1d15-5226-480c-bd0d-555cb01eb4ba","timestamp":"2026-06-04T15:55:20.365Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":45200,"output":3320,"cached":39698,"thoughts":17,"tool":0,"total":48537},"model":"gemini-3-flash-preview"} +{"$set":{"lastUpdated":"2026-06-04T15:55:20.366Z"}} +{"id":"600b1d15-5226-480c-bd0d-555cb01eb4ba","timestamp":"2026-06-04T15:55:20.365Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":45200,"output":3320,"cached":39698,"thoughts":17,"tool":0,"total":48537},"model":"gemini-3-flash-preview","toolCalls":[{"id":"update_topic__update_topic_1780588519866_0","name":"update_topic","args":{"title":"Adding Audio System Phase 4: Enemy AI Audio Integration","strategic_intent":"Integrating alert and shooting sounds into EnemyAI.cs.","summary":"I am adding audio triggers to the EnemyAI.cs script. Specifically, I'll add an alert sound when the AI detects the player and starts chasing, and a shooting sound when it fires a laser. These will be spatialized sounds to help the player locate threats."},"result":[{"functionResponse":{"id":"update_topic__update_topic_1780588519866_0","name":"update_topic","response":{"output":"Current topic: \"Adding Audio System Phase 4: Enemy AI Audio Integration\"\nTopic summary: I am adding audio triggers to the EnemyAI.cs script. Specifically, I'll add an alert sound when the AI detects the player and starts chasing, and a shooting sound when it fires a laser. These will be spatialized sounds to help the player locate threats.\n\nStrategic Intent: Integrating alert and shooting sounds into EnemyAI.cs."}}}],"status":"success","timestamp":"2026-06-04T15:55:20.404Z","resultDisplay":"## 📂 Topic: **Adding Audio System Phase 4: Enemy AI Audio Integration**\n\n**Summary:**\nI am adding audio triggers to the EnemyAI.cs script. Specifically, I'll add an alert sound when the AI detects the player and starts chasing, and a shooting sound when it fires a laser. These will be spatialized sounds to help the player locate threats.\n\n> [!STRATEGY]\n> **Intent:** Integrating alert and shooting sounds into EnemyAI.cs.","description":"Update topic to: \"Adding Audio System Phase 4: Enemy AI Audio Integration\"","displayName":"Update Topic Context","renderOutputAsMarkdown":true},{"id":"replace__replace_1780588520363_1","name":"replace","args":{"old_string":"using System.Collections.Generic;\nusing UnityEngine;\nusing UnityEngine.AI; // Cần thiết để dùng NavMesh\n\n[RequireComponent(typeof(NavMeshAgent))] // Tự động thêm component này nếu chưa có\npublic class EnemyAI : MonoBehaviour\n{\n [Header(\"References\")]\n public Transform player;\n\n [Header(\"Detection\")]\n public float detectRange = 10f;\n public float moveSpeed = 3f;\n public float rotateSpeed = 50f;\n\n [Header(\"Patrol Area\")]\n public float patrolRadius = 15f; // Bán kính khu vực tuần tra\n public float patrolWaitTime = 2f; // Thời gian đứng chờ trước khi đi điểm khác\n private Vector3 startPosition;\n private float currentWaitTime;\n\n [Header(\"Artifact\")]\n public bool playerHasArtifact;\n\n [Header(\"Laser\")]\n public GameObject laserPrefab;\n public Transform firePoint;\n public float minShootDelay = 1f;\n public float maxShootDelay = 3f;\n\n private float nextShootTime;\n private NavMeshAgent agent;\n\n public Node behaviorTreeRoot;\n\n private void Start()\n {\n agent = GetComponent();\n agent.speed = moveSpeed;\n \n // Lưu lại vị trí ban đầu để làm tâm của khu vực tuần tra\n startPosition = transform.position; \n \n nextShootTime = Time.time + Random.Range(minShootDelay, maxShootDelay);\n InitBehaviorTree();\n FindPlayer();\n }\n\n private void Update()\n {\n // Nếu mất reference (Player chết hoặc chưa spawn), liên tục tìm lại\n if (player == null)\n {\n FindPlayer();\n }\n\n // Chỉ chạy AI nếu đã tìm thấy player (hoặc bạn có thể cho tuần tra ngay cả khi chưa có player tùy logic game)\n behaviorTreeRoot?.Evaluate();\n }\n\n private void FindPlayer()\n {\n GameObject playerObj = GameObject.FindGameObjectWithTag(\"Player\");\n if (playerObj != null)\n {\n player = playerObj.transform;\n }\n }\n\n private void InitBehaviorTree()\n {\n // Player có artifact -> focus + shoot\n var laserSequence = new Sequence(new List\n {\n new TaskNode(CheckHasArtifact),\n new TaskNode(ActionFocusAndShoot)\n });\n\n // Thấy player -> chạy tới\n var chaseSequence = new Sequence(new List\n {\n new TaskNode(CheckCanSeePlayer),\n new TaskNode(ActionMoveToPlayer)\n });\n\n // Không thấy ai -> Tuần tra bằng NavMesh\n var patrolNode = new TaskNode(ActionPatrol);\n\n behaviorTreeRoot = new Selector(new List\n {\n laserSequence,\n chaseSequence,\n patrolNode\n });\n }\n\n #region CONDITIONS\n\n private NodeState CheckHasArtifact()\n {\n return playerHasArtifact ? NodeState.Success : NodeState.Failure;\n }\n\n private NodeState CheckCanSeePlayer()\n {\n if (player == null) return NodeState.Failure;\n\n float distance = Vector3.Distance(transform.position, player.position);\n\n if (distance <= detectRange)\n {\n return NodeState.Success;\n }\n\n return NodeState.Failure;\n }\n\n #endregion\n\n #region ACTIONS\n\n private NodeState ActionPatrol()\n {\n // Debug.Log(\"Patrolling...\");\n if (!agent.isActiveAndEnabled || !agent.isOnNavMesh) return NodeState.Failure;\n\n agent.isStopped = false; // Đảm bảo NPC được phép di chuyển\n agent.speed = moveSpeed * 0.5f; // Đi dạo nên đi chậm lại một chút\n\n // Kiểm tra xem NPC đã đến điểm đích chưa\n if (!agent.pathPending && agent.remainingDistance <= agent.stoppingDistance)\n {\n currentWaitTime += Time.deltaTime;\n\n // Chờ một lúc rồi mới chọn điểm mới\n if (currentWaitTime >= patrolWaitTime)\n {\n // Tìm một điểm ngẫu nhiên trong bán kính cho trước\n Vector3 randomDirection = Random.insideUnitSphere * patrolRadius;\n randomDirection += startPosition;\n NavMeshHit hit;\n \n // Đảm bảo điểm ngẫu nhiên nằm trên bề mặt NavMesh hợp lệ\n if (NavMesh.SamplePosition(randomDirection, out hit, patrolRadius, 1))\n {\n agent.SetDestination(hit.position);\n }\n currentWaitTime = 0f;\n }\n }\n\n return NodeState.Running;\n }\n\n private NodeState ActionMoveToPlayer()\n {\n if (player == null) return NodeState.Failure;\n\n // Debug.Log(\"Chasing Player\");\n \n if (!agent.isActiveAndEnabled || !agent.isOnNavMesh) return NodeState.Failure;\n\n agent.isStopped = false;\n agent.speed = moveSpeed; // Phục hồi tốc độ rượt đuổi\n agent.SetDestination(player.position);\n\n return NodeState.Running;\n }\n\n private NodeState ActionFocusAndShoot()\n {\n if (player == null) return NodeState.Failure;\n\n // Debug.Log(\"Focus and Shoot!\");\n \n if (!agent.isActiveAndEnabled || !agent.isOnNavMesh) return NodeState.Failure;\n\n // Dừng NavMeshAgent lại để đứng bắn, tránh bị trượt\n agent.isStopped = true;\n\n // Focus player\n Vector3 dir = player.position - transform.position;\n dir.y = 0f;\n\n if (dir != Vector3.zero)\n {\n Quaternion targetRotation = Quaternion.LookRotation(dir);\n transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, rotateSpeed * Time.deltaTime);\n }\n\n // Shoot with random delay\n if (Time.time >= nextShootTime)\n {\n ShootLaser();\n nextShootTime = Time.time + Random.Range(minShootDelay, maxShootDelay);\n }\n\n return NodeState.Running;\n }\n\n private void ShootLaser()\n {\n if (laserPrefab == null || firePoint == null) return;\n Instantiate(laserPrefab, firePoint.position, firePoint.rotation);\n // Debug.Log(\"Laser Shot!\");\n }\n\n #endregion\n}\n","file_path":"Assets/Scripts/AI NPC/EnemyAI.cs","allow_multiple":false,"new_string":"using System.Collections.Generic;\nusing UnityEngine;\nusing UnityEngine.AI; // Cần thiết để dùng NavMesh\nusing Hallucinate.Audio;\n\n[RequireComponent(typeof(NavMeshAgent))] // Tự động thêm component này nếu chưa có\npublic class EnemyAI : MonoBehaviour\n{\n [Header(\"References\")]\n public Transform player;\n\n [Header(\"Detection\")]\n public float detectRange = 10f;\n public float moveSpeed = 3f;\n public float rotateSpeed = 50f;\n\n [Header(\"Patrol Area\")]\n public float patrolRadius = 15f; // Bán kính khu vực tuần tra\n public float patrolWaitTime = 2f; // Thời gian đứng chờ trước khi đi điểm khác\n private Vector3 startPosition;\n private float currentWaitTime;\n\n [Header(\"Artifact\")]\n public bool playerHasArtifact;\n\n [Header(\"Laser\")]\n public GameObject laserPrefab;\n public Transform firePoint;\n public float minShootDelay = 1f;\n public float maxShootDelay = 3f;\n\n [Header(\"Audio\")]\n public string alertSound = \"Enemy_Alert\";\n public string shootSound = \"Enemy_Shoot\";\n private bool hasSpottedPlayer; // Để chỉ kêu alert 1 lần\n\n private float nextShootTime;\n private NavMeshAgent agent;\n\n public Node behaviorTreeRoot;\n\n private void Start()\n {\n agent = GetComponent();\n agent.speed = moveSpeed;\n \n // Lưu lại vị trí ban đầu để làm tâm của khu vực tuần tra\n startPosition = transform.position; \n \n nextShootTime = Time.time + Random.Range(minShootDelay, maxShootDelay);\n InitBehaviorTree();\n FindPlayer();\n }\n\n private void Update()\n {\n // Nếu mất reference (Player chết hoặc chưa spawn), liên tục tìm lại\n if (player == null)\n {\n FindPlayer();\n }\n\n // Chỉ chạy AI nếu đã tìm thấy player (hoặc bạn có thể cho tuần tra ngay cả khi chưa có player tùy logic game)\n behaviorTreeRoot?.Evaluate();\n }\n\n private void FindPlayer()\n {\n GameObject playerObj = GameObject.FindGameObjectWithTag(\"Player\");\n if (playerObj != null)\n {\n player = playerObj.transform;\n }\n }\n\n private void InitBehaviorTree()\n {\n // Player có artifact -> focus + shoot\n var laserSequence = new Sequence(new List\n {\n new TaskNode(CheckHasArtifact),\n new TaskNode(ActionFocusAndShoot)\n });\n\n // Thấy player -> chạy tới\n var chaseSequence = new Sequence(new List\n {\n new TaskNode(CheckCanSeePlayer),\n new TaskNode(ActionMoveToPlayer)\n });\n\n // Không thấy ai -> Tuần tra bằng NavMesh\n var patrolNode = new TaskNode(ActionPatrol);\n\n behaviorTreeRoot = new Selector(new List\n {\n laserSequence,\n chaseSequence,\n patrolNode\n });\n }\n\n #region CONDITIONS\n\n private NodeState CheckHasArtifact()\n {\n return playerHasArtifact ? NodeState.Success : NodeState.Failure;\n }\n\n private NodeState CheckCanSeePlayer()\n {\n if (player == null) return NodeState.Failure;\n\n float distance = Vector3.Distance(transform.position, player.position);\n\n if (distance <= detectRange)\n {\n if (!hasSpottedPlayer)\n {\n hasSpottedPlayer = true;\n AudioManager.Instance?.Play(alertSound, position: transform.position);\n }\n return NodeState.Success;\n }\n\n hasSpottedPlayer = false; // Reset nếu player ra khỏi tầm mắt\n return NodeState.Failure;\n }\n\n #endregion\n\n #region ACTIONS\n\n private NodeState ActionPatrol()\n {\n // Debug.Log(\"Patrolling...\");\n if (!agent.isActiveAndEnabled || !agent.isOnNavMesh) return NodeState.Failure;\n\n agent.isStopped = false; // Đảm bảo NPC được phép di chuyển\n agent.speed = moveSpeed * 0.5f; // Đi dạo nên đi chậm lại một chút\n\n // Kiểm tra xem NPC đã đến điểm đích chưa\n if (!agent.pathPending && agent.remainingDistance <= agent.stoppingDistance)\n {\n currentWaitTime += Time.deltaTime;\n\n // Chờ một lúc rồi mới chọn điểm mới\n if (currentWaitTime >= patrolWaitTime)\n {\n // Tìm một điểm ngẫu nhiên trong bán kính cho trước\n Vector3 randomDirection = Random.insideUnitSphere * patrolRadius;\n randomDirection += startPosition;\n NavMeshHit hit;\n \n // Đảm bảo điểm ngẫu nhiên nằm trên bề mặt NavMesh hợp lệ\n if (NavMesh.SamplePosition(randomDirection, out hit, patrolRadius, 1))\n {\n agent.SetDestination(hit.position);\n }\n currentWaitTime = 0f;\n }\n }\n\n return NodeState.Running;\n }\n\n private NodeState ActionMoveToPlayer()\n {\n if (player == null) return NodeState.Failure;\n\n // Debug.Log(\"Chasing Player\");\n \n if (!agent.isActiveAndEnabled || !agent.isOnNavMesh) return NodeState.Failure;\n\n agent.isStopped = false;\n agent.speed = moveSpeed; // Phục hồi tốc độ rượt đuổi\n agent.SetDestination(player.position);\n\n return NodeState.Running;\n }\n\n private NodeState ActionFocusAndShoot()\n {\n if (player == null) return NodeState.Failure;\n\n // Debug.Log(\"Focus and Shoot!\");\n \n if (!agent.isActiveAndEnabled || !agent.isOnNavMesh) return NodeState.Failure;\n\n // Dừng NavMeshAgent lại để đứng bắn, tránh bị trượt\n agent.isStopped = true;\n\n // Focus player\n Vector3 dir = player.position - transform.position;\n dir.y = 0f;\n\n if (dir != Vector3.zero)\n {\n Quaternion targetRotation = Quaternion.LookRotation(dir);\n transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, rotateSpeed * Time.deltaTime);\n }\n\n // Shoot with random delay\n if (Time.time >= nextShootTime)\n {\n ShootLaser();\n nextShootTime = Time.time + Random.Range(minShootDelay, maxShootDelay);\n }\n\n return NodeState.Running;\n }\n\n private void ShootLaser()\n {\n if (laserPrefab == null || firePoint == null) return;\n Instantiate(laserPrefab, firePoint.position, firePoint.rotation);\n AudioManager.Instance?.Play(shootSound, position: transform.position);\n // Debug.Log(\"Laser Shot!\");\n }\n\n #endregion\n}\n","instruction":"Add alert and shooting sounds to EnemyAI.cs using AudioManager. Alert should play once when detecting player. Shoot should play each time laser is fired."},"result":[{"functionResponse":{"id":"replace__replace_1780588520363_1","name":"replace","response":{"output":"Successfully modified file: E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\AI NPC\\EnemyAI.cs (1 replacements). Here is the updated code:\nusing System.Collections.Generic;\nusing UnityEngine;\nusing UnityEngine.AI; // Cần thiết để dùng NavMesh\nusing Hallucinate.Audio;\n\n[RequireComponent(typeof(NavMeshAgent))] // Tự động thêm component này nếu chưa có\npublic class EnemyAI : MonoBehaviour\n{\n [Header(\"References\")]\n public Transform player;\n\n [Header(\"Detection\")]\n public float detectRange = 10f;\n public float moveSpeed = 3f;\n public float rotateSpeed = 50f;\n\n [Header(\"Patrol Area\")]\n public float patrolRadius = 15f; // Bán kính khu vực tuần tra\n public float patrolWaitTime = 2f; // Thời gian đứng chờ trước khi đi điểm khác\n private Vector3 startPosition;\n private float currentWaitTime;\n\n [Header(\"Artifact\")]\n public bool playerHasArtifact;\n\n [Header(\"Laser\")]\n public GameObject laserPrefab;\n public Transform firePoint;\n public float minShootDelay = 1f;\n public float maxShootDelay = 3f;\n\n [Header(\"Audio\")]\n public string alertSound = \"Enemy_Alert\";\n public string shootSound = \"Enemy_Shoot\";\n private bool hasSpottedPlayer; // Để chỉ kêu alert 1 lần\n\n private float nextShootTime;\n private NavMeshAgent agent;\n\n public Node behaviorTreeRoot;\n\n private void Start()\n {\n agent = GetComponent();\n agent.speed = moveSpeed;\n\n // Lưu lại vị trí ban đầu để làm tâm của khu vực tuần tra\n startPosition = transform.position; \n\n nextShootTime = Time.time + Random.Range(minShootDelay, maxShootDelay);\n InitBehaviorTree();\n FindPlayer();\n }\n\n private void Update()\n {\n // Nếu mất reference (Player chết hoặc chưa spawn), liên tục tìm lại\n if (player == null)\n {\n FindPlayer();\n }\n\n // Chỉ chạy AI nếu đã tìm thấy player (hoặc bạn có thể cho tuần tra ngay cả khi chưa có player tùy logic game)\n behaviorTreeRoot?.Evaluate();\n }\n\n private void FindPlayer()\n {\n GameObject playerObj = GameObject.FindGameObjectWithTag(\"Player\");\n if (playerObj != null)\n {\n player = playerObj.transform;\n }\n }\n\n private void InitBehaviorTree()\n {\n // Player có artifact -> focus + shoot\n var laserSequence = new Sequence(new List\n {\n new TaskNode(CheckHasArtifact),\n new TaskNode(ActionFocusAndShoot)\n });\n\n // Thấy player -> chạy tới\n var chaseSequence = new Sequence(new List\n {\n new TaskNode(CheckCanSeePlayer),\n new TaskNode(ActionMoveToPlayer)\n });\n\n // Không thấy ai -> Tuần tra bằng NavMesh\n var patrolNode = new TaskNode(ActionPatrol);\n\n behaviorTreeRoot = new Selector(new List\n {\n laserSequence,\n chaseSequence,\n patrolNode\n });\n }\n\n #region CONDITIONS\n\n private NodeState CheckHasArtifact()\n {\n return playerHasArtifact ? NodeState.Success : NodeState.Failure;\n }\n\n private NodeState CheckCanSeePlayer()\n {\n if (player == null) return NodeState.Failure;\n\n float distance = Vector3.Distance(transform.position, player.position);\n\n if (distance <= detectRange)\n {\n if (!hasSpottedPlayer)\n {\n hasSpottedPlayer = true;\n AudioManager.Instance?.Play(alertSound, position: transform.position);\n }\n return NodeState.Success;\n }\n\n hasSpottedPlayer = false; // Reset nếu player ra khỏi tầm mắt\n return NodeState.Failure;\n }\n\n #endregion\n\n #region ACTIONS\n\n private NodeState ActionPatrol()\n {\n // Debug.Log(\"Patrolling...\");\n if (!agent.isActiveAndEnabled || !agent.isOnNavMesh) return NodeState.Failure;\n\n agent.isStopped = false; // Đảm bảo NPC được phép di chuyển\n agent.speed = moveSpeed * 0.5f; // Đi dạo nên đi chậm lại một chút\n\n // Kiểm tra xem NPC đã đến điểm đích chưa\n if (!agent.pathPending && agent.remainingDistance <= agent.stoppingDistance)\n {\n currentWaitTime += Time.deltaTime;\n\n // Chờ một lúc rồi mới chọn điểm mới\n if (currentWaitTime >= patrolWaitTime)\n {\n // Tìm một điểm ngẫu nhiên trong bán kính cho trước\n Vector3 randomDirection = Random.insideUnitSphere * patrolRadius;\n randomDirection += startPosition;\n NavMeshHit hit;\n\n // Đảm bảo điểm ngẫu nhiên nằm trên bề mặt NavMesh hợp lệ\n if (NavMesh.SamplePosition(randomDirection, out hit, patrolRadius, 1))\n {\n agent.SetDestination(hit.position);\n }\n currentWaitTime = 0f;\n }\n }\n\n return NodeState.Running;\n }\n\n private NodeState ActionMoveToPlayer()\n {\n if (player == null) return NodeState.Failure;\n\n // Debug.Log(\"Chasing Player\");\n\n if (!agent.isActiveAndEnabled || !agent.isOnNavMesh) return NodeState.Failure;\n\n agent.isStopped = false;\n agent.speed = moveSpeed; // Phục hồi tốc độ rượt đuổi\n agent.SetDestination(player.position);\n\n return NodeState.Running;\n }\n\n private NodeState ActionFocusAndShoot()\n {\n if (player == null) return NodeState.Failure;\n\n // Debug.Log(\"Focus and Shoot!\");\n\n if (!agent.isActiveAndEnabled || !agent.isOnNavMesh) return NodeState.Failure;\n\n // Dừng NavMeshAgent lại để đứng bắn, tránh bị trượt\n agent.isStopped = true;\n\n // Focus player\n Vector3 dir = player.position - transform.position;\n dir.y = 0f;\n\n if (dir != Vector3.zero)\n {\n Quaternion targetRotation = Quaternion.LookRotation(dir);\n transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, rotateSpeed * Time.deltaTime);\n }\n\n // Shoot with random delay\n if (Time.time >= nextShootTime)\n {\n ShootLaser();\n nextShootTime = Time.time + Random.Range(minShootDelay, maxShootDelay);\n }\n\n return NodeState.Running;\n }\n\n private void ShootLaser()\n {\n if (laserPrefab == null || firePoint == null) return;\n Instantiate(laserPrefab, firePoint.position, firePoint.rotation);\n AudioManager.Instance?.Play(shootSound, position: transform.position);\n // Debug.Log(\"Laser Shot!\");\n }\n\n #endregion\n}"}}}],"status":"success","timestamp":"2026-06-04T15:55:20.404Z","resultDisplay":{"fileDiff":"Index: EnemyAI.cs\n===================================================================\n--- EnemyAI.cs\tCurrent\n+++ EnemyAI.cs\tProposed\n@@ -1,6 +1,7 @@\n using System.Collections.Generic;\n using UnityEngine;\n using UnityEngine.AI; // Cần thiết để dùng NavMesh\n+using Hallucinate.Audio;\n \n [RequireComponent(typeof(NavMeshAgent))] // Tự động thêm component này nếu chưa có\n public class EnemyAI : MonoBehaviour\n@@ -28,6 +29,11 @@\n public float minShootDelay = 1f;\n public float maxShootDelay = 3f;\n \n+ [Header(\"Audio\")]\n+ public string alertSound = \"Enemy_Alert\";\n+ public string shootSound = \"Enemy_Shoot\";\n+ private bool hasSpottedPlayer; // Để chỉ kêu alert 1 lần\n+\n private float nextShootTime;\n private NavMeshAgent agent;\n \n@@ -37,10 +43,10 @@\n {\n agent = GetComponent();\n agent.speed = moveSpeed;\n- \n+\n // Lưu lại vị trí ban đầu để làm tâm của khu vực tuần tra\n startPosition = transform.position; \n- \n+\n nextShootTime = Time.time + Random.Range(minShootDelay, maxShootDelay);\n InitBehaviorTree();\n FindPlayer();\n@@ -109,9 +115,15 @@\n \n if (distance <= detectRange)\n {\n+ if (!hasSpottedPlayer)\n+ {\n+ hasSpottedPlayer = true;\n+ AudioManager.Instance?.Play(alertSound, position: transform.position);\n+ }\n return NodeState.Success;\n }\n \n+ hasSpottedPlayer = false; // Reset nếu player ra khỏi tầm mắt\n return NodeState.Failure;\n }\n \n@@ -139,7 +151,7 @@\n Vector3 randomDirection = Random.insideUnitSphere * patrolRadius;\n randomDirection += startPosition;\n NavMeshHit hit;\n- \n+\n // Đảm bảo điểm ngẫu nhiên nằm trên bề mặt NavMesh hợp lệ\n if (NavMesh.SamplePosition(randomDirection, out hit, patrolRadius, 1))\n {\n@@ -157,7 +169,7 @@\n if (player == null) return NodeState.Failure;\n \n // Debug.Log(\"Chasing Player\");\n- \n+\n if (!agent.isActiveAndEnabled || !agent.isOnNavMesh) return NodeState.Failure;\n \n agent.isStopped = false;\n@@ -172,7 +184,7 @@\n if (player == null) return NodeState.Failure;\n \n // Debug.Log(\"Focus and Shoot!\");\n- \n+\n if (!agent.isActiveAndEnabled || !agent.isOnNavMesh) return NodeState.Failure;\n \n // Dừng NavMeshAgent lại để đứng bắn, tránh bị trượt\n@@ -202,6 +214,7 @@\n {\n if (laserPrefab == null || firePoint == null) return;\n Instantiate(laserPrefab, firePoint.position, firePoint.rotation);\n+ AudioManager.Instance?.Play(shootSound, position: transform.position);\n // Debug.Log(\"Laser Shot!\");\n }\n \n","fileName":"EnemyAI.cs","filePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\AI NPC\\EnemyAI.cs","originalContent":"using System.Collections.Generic;\nusing UnityEngine;\nusing UnityEngine.AI; // Cần thiết để dùng NavMesh\n\n[RequireComponent(typeof(NavMeshAgent))] // Tự động thêm component này nếu chưa có\npublic class EnemyAI : MonoBehaviour\n{\n [Header(\"References\")]\n public Transform player;\n\n [Header(\"Detection\")]\n public float detectRange = 10f;\n public float moveSpeed = 3f;\n public float rotateSpeed = 50f;\n\n [Header(\"Patrol Area\")]\n public float patrolRadius = 15f; // Bán kính khu vực tuần tra\n public float patrolWaitTime = 2f; // Thời gian đứng chờ trước khi đi điểm khác\n private Vector3 startPosition;\n private float currentWaitTime;\n\n [Header(\"Artifact\")]\n public bool playerHasArtifact;\n\n [Header(\"Laser\")]\n public GameObject laserPrefab;\n public Transform firePoint;\n public float minShootDelay = 1f;\n public float maxShootDelay = 3f;\n\n private float nextShootTime;\n private NavMeshAgent agent;\n\n public Node behaviorTreeRoot;\n\n private void Start()\n {\n agent = GetComponent();\n agent.speed = moveSpeed;\n \n // Lưu lại vị trí ban đầu để làm tâm của khu vực tuần tra\n startPosition = transform.position; \n \n nextShootTime = Time.time + Random.Range(minShootDelay, maxShootDelay);\n InitBehaviorTree();\n FindPlayer();\n }\n\n private void Update()\n {\n // Nếu mất reference (Player chết hoặc chưa spawn), liên tục tìm lại\n if (player == null)\n {\n FindPlayer();\n }\n\n // Chỉ chạy AI nếu đã tìm thấy player (hoặc bạn có thể cho tuần tra ngay cả khi chưa có player tùy logic game)\n behaviorTreeRoot?.Evaluate();\n }\n\n private void FindPlayer()\n {\n GameObject playerObj = GameObject.FindGameObjectWithTag(\"Player\");\n if (playerObj != null)\n {\n player = playerObj.transform;\n }\n }\n\n private void InitBehaviorTree()\n {\n // Player có artifact -> focus + shoot\n var laserSequence = new Sequence(new List\n {\n new TaskNode(CheckHasArtifact),\n new TaskNode(ActionFocusAndShoot)\n });\n\n // Thấy player -> chạy tới\n var chaseSequence = new Sequence(new List\n {\n new TaskNode(CheckCanSeePlayer),\n new TaskNode(ActionMoveToPlayer)\n });\n\n // Không thấy ai -> Tuần tra bằng NavMesh\n var patrolNode = new TaskNode(ActionPatrol);\n\n behaviorTreeRoot = new Selector(new List\n {\n laserSequence,\n chaseSequence,\n patrolNode\n });\n }\n\n #region CONDITIONS\n\n private NodeState CheckHasArtifact()\n {\n return playerHasArtifact ? NodeState.Success : NodeState.Failure;\n }\n\n private NodeState CheckCanSeePlayer()\n {\n if (player == null) return NodeState.Failure;\n\n float distance = Vector3.Distance(transform.position, player.position);\n\n if (distance <= detectRange)\n {\n return NodeState.Success;\n }\n\n return NodeState.Failure;\n }\n\n #endregion\n\n #region ACTIONS\n\n private NodeState ActionPatrol()\n {\n // Debug.Log(\"Patrolling...\");\n if (!agent.isActiveAndEnabled || !agent.isOnNavMesh) return NodeState.Failure;\n\n agent.isStopped = false; // Đảm bảo NPC được phép di chuyển\n agent.speed = moveSpeed * 0.5f; // Đi dạo nên đi chậm lại một chút\n\n // Kiểm tra xem NPC đã đến điểm đích chưa\n if (!agent.pathPending && agent.remainingDistance <= agent.stoppingDistance)\n {\n currentWaitTime += Time.deltaTime;\n\n // Chờ một lúc rồi mới chọn điểm mới\n if (currentWaitTime >= patrolWaitTime)\n {\n // Tìm một điểm ngẫu nhiên trong bán kính cho trước\n Vector3 randomDirection = Random.insideUnitSphere * patrolRadius;\n randomDirection += startPosition;\n NavMeshHit hit;\n \n // Đảm bảo điểm ngẫu nhiên nằm trên bề mặt NavMesh hợp lệ\n if (NavMesh.SamplePosition(randomDirection, out hit, patrolRadius, 1))\n {\n agent.SetDestination(hit.position);\n }\n currentWaitTime = 0f;\n }\n }\n\n return NodeState.Running;\n }\n\n private NodeState ActionMoveToPlayer()\n {\n if (player == null) return NodeState.Failure;\n\n // Debug.Log(\"Chasing Player\");\n \n if (!agent.isActiveAndEnabled || !agent.isOnNavMesh) return NodeState.Failure;\n\n agent.isStopped = false;\n agent.speed = moveSpeed; // Phục hồi tốc độ rượt đuổi\n agent.SetDestination(player.position);\n\n return NodeState.Running;\n }\n\n private NodeState ActionFocusAndShoot()\n {\n if (player == null) return NodeState.Failure;\n\n // Debug.Log(\"Focus and Shoot!\");\n \n if (!agent.isActiveAndEnabled || !agent.isOnNavMesh) return NodeState.Failure;\n\n // Dừng NavMeshAgent lại để đứng bắn, tránh bị trượt\n agent.isStopped = true;\n\n // Focus player\n Vector3 dir = player.position - transform.position;\n dir.y = 0f;\n\n if (dir != Vector3.zero)\n {\n Quaternion targetRotation = Quaternion.LookRotation(dir);\n transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, rotateSpeed * Time.deltaTime);\n }\n\n // Shoot with random delay\n if (Time.time >= nextShootTime)\n {\n ShootLaser();\n nextShootTime = Time.time + Random.Range(minShootDelay, maxShootDelay);\n }\n\n return NodeState.Running;\n }\n\n private void ShootLaser()\n {\n if (laserPrefab == null || firePoint == null) return;\n Instantiate(laserPrefab, firePoint.position, firePoint.rotation);\n // Debug.Log(\"Laser Shot!\");\n }\n\n #endregion\n}","newContent":"using System.Collections.Generic;\nusing UnityEngine;\nusing UnityEngine.AI; // Cần thiết để dùng NavMesh\nusing Hallucinate.Audio;\n\n[RequireComponent(typeof(NavMeshAgent))] // Tự động thêm component này nếu chưa có\npublic class EnemyAI : MonoBehaviour\n{\n [Header(\"References\")]\n public Transform player;\n\n [Header(\"Detection\")]\n public float detectRange = 10f;\n public float moveSpeed = 3f;\n public float rotateSpeed = 50f;\n\n [Header(\"Patrol Area\")]\n public float patrolRadius = 15f; // Bán kính khu vực tuần tra\n public float patrolWaitTime = 2f; // Thời gian đứng chờ trước khi đi điểm khác\n private Vector3 startPosition;\n private float currentWaitTime;\n\n [Header(\"Artifact\")]\n public bool playerHasArtifact;\n\n [Header(\"Laser\")]\n public GameObject laserPrefab;\n public Transform firePoint;\n public float minShootDelay = 1f;\n public float maxShootDelay = 3f;\n\n [Header(\"Audio\")]\n public string alertSound = \"Enemy_Alert\";\n public string shootSound = \"Enemy_Shoot\";\n private bool hasSpottedPlayer; // Để chỉ kêu alert 1 lần\n\n private float nextShootTime;\n private NavMeshAgent agent;\n\n public Node behaviorTreeRoot;\n\n private void Start()\n {\n agent = GetComponent();\n agent.speed = moveSpeed;\n\n // Lưu lại vị trí ban đầu để làm tâm của khu vực tuần tra\n startPosition = transform.position; \n\n nextShootTime = Time.time + Random.Range(minShootDelay, maxShootDelay);\n InitBehaviorTree();\n FindPlayer();\n }\n\n private void Update()\n {\n // Nếu mất reference (Player chết hoặc chưa spawn), liên tục tìm lại\n if (player == null)\n {\n FindPlayer();\n }\n\n // Chỉ chạy AI nếu đã tìm thấy player (hoặc bạn có thể cho tuần tra ngay cả khi chưa có player tùy logic game)\n behaviorTreeRoot?.Evaluate();\n }\n\n private void FindPlayer()\n {\n GameObject playerObj = GameObject.FindGameObjectWithTag(\"Player\");\n if (playerObj != null)\n {\n player = playerObj.transform;\n }\n }\n\n private void InitBehaviorTree()\n {\n // Player có artifact -> focus + shoot\n var laserSequence = new Sequence(new List\n {\n new TaskNode(CheckHasArtifact),\n new TaskNode(ActionFocusAndShoot)\n });\n\n // Thấy player -> chạy tới\n var chaseSequence = new Sequence(new List\n {\n new TaskNode(CheckCanSeePlayer),\n new TaskNode(ActionMoveToPlayer)\n });\n\n // Không thấy ai -> Tuần tra bằng NavMesh\n var patrolNode = new TaskNode(ActionPatrol);\n\n behaviorTreeRoot = new Selector(new List\n {\n laserSequence,\n chaseSequence,\n patrolNode\n });\n }\n\n #region CONDITIONS\n\n private NodeState CheckHasArtifact()\n {\n return playerHasArtifact ? NodeState.Success : NodeState.Failure;\n }\n\n private NodeState CheckCanSeePlayer()\n {\n if (player == null) return NodeState.Failure;\n\n float distance = Vector3.Distance(transform.position, player.position);\n\n if (distance <= detectRange)\n {\n if (!hasSpottedPlayer)\n {\n hasSpottedPlayer = true;\n AudioManager.Instance?.Play(alertSound, position: transform.position);\n }\n return NodeState.Success;\n }\n\n hasSpottedPlayer = false; // Reset nếu player ra khỏi tầm mắt\n return NodeState.Failure;\n }\n\n #endregion\n\n #region ACTIONS\n\n private NodeState ActionPatrol()\n {\n // Debug.Log(\"Patrolling...\");\n if (!agent.isActiveAndEnabled || !agent.isOnNavMesh) return NodeState.Failure;\n\n agent.isStopped = false; // Đảm bảo NPC được phép di chuyển\n agent.speed = moveSpeed * 0.5f; // Đi dạo nên đi chậm lại một chút\n\n // Kiểm tra xem NPC đã đến điểm đích chưa\n if (!agent.pathPending && agent.remainingDistance <= agent.stoppingDistance)\n {\n currentWaitTime += Time.deltaTime;\n\n // Chờ một lúc rồi mới chọn điểm mới\n if (currentWaitTime >= patrolWaitTime)\n {\n // Tìm một điểm ngẫu nhiên trong bán kính cho trước\n Vector3 randomDirection = Random.insideUnitSphere * patrolRadius;\n randomDirection += startPosition;\n NavMeshHit hit;\n\n // Đảm bảo điểm ngẫu nhiên nằm trên bề mặt NavMesh hợp lệ\n if (NavMesh.SamplePosition(randomDirection, out hit, patrolRadius, 1))\n {\n agent.SetDestination(hit.position);\n }\n currentWaitTime = 0f;\n }\n }\n\n return NodeState.Running;\n }\n\n private NodeState ActionMoveToPlayer()\n {\n if (player == null) return NodeState.Failure;\n\n // Debug.Log(\"Chasing Player\");\n\n if (!agent.isActiveAndEnabled || !agent.isOnNavMesh) return NodeState.Failure;\n\n agent.isStopped = false;\n agent.speed = moveSpeed; // Phục hồi tốc độ rượt đuổi\n agent.SetDestination(player.position);\n\n return NodeState.Running;\n }\n\n private NodeState ActionFocusAndShoot()\n {\n if (player == null) return NodeState.Failure;\n\n // Debug.Log(\"Focus and Shoot!\");\n\n if (!agent.isActiveAndEnabled || !agent.isOnNavMesh) return NodeState.Failure;\n\n // Dừng NavMeshAgent lại để đứng bắn, tránh bị trượt\n agent.isStopped = true;\n\n // Focus player\n Vector3 dir = player.position - transform.position;\n dir.y = 0f;\n\n if (dir != Vector3.zero)\n {\n Quaternion targetRotation = Quaternion.LookRotation(dir);\n transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, rotateSpeed * Time.deltaTime);\n }\n\n // Shoot with random delay\n if (Time.time >= nextShootTime)\n {\n ShootLaser();\n nextShootTime = Time.time + Random.Range(minShootDelay, maxShootDelay);\n }\n\n return NodeState.Running;\n }\n\n private void ShootLaser()\n {\n if (laserPrefab == null || firePoint == null) return;\n Instantiate(laserPrefab, firePoint.position, firePoint.rotation);\n AudioManager.Instance?.Play(shootSound, position: transform.position);\n // Debug.Log(\"Laser Shot!\");\n }\n\n #endregion\n}","diffStat":{"model_added_lines":18,"model_removed_lines":5,"model_added_chars":528,"model_removed_chars":48,"user_added_lines":0,"user_removed_lines":0,"user_added_chars":0,"user_removed_chars":0},"isNewFile":false},"description":"Assets\\Scripts\\AI NPC\\EnemyAI.cs: using System.Collections.Gener... => using System.Collections.Gener...","displayName":"Edit","renderOutputAsMarkdown":true}]} +{"id":"73cbdbe4-b12f-4933-bb75-20ef57922e44","timestamp":"2026-06-04T15:55:20.855Z","type":"user","content":[{"functionResponse":{"id":"update_topic__update_topic_1780588519866_0","name":"update_topic","response":{"output":"Current topic: \"Adding Audio System Phase 4: Enemy AI Audio Integration\"\nTopic summary: I am adding audio triggers to the EnemyAI.cs script. Specifically, I'll add an alert sound when the AI detects the player and starts chasing, and a shooting sound when it fires a laser. These will be spatialized sounds to help the player locate threats.\n\nStrategic Intent: Integrating alert and shooting sounds into EnemyAI.cs."}}},{"functionResponse":{"id":"replace__replace_1780588520363_1","name":"replace","response":{"output":"Successfully modified file: E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\AI NPC\\EnemyAI.cs (1 replacements). Here is the updated code:\nusing System.Collections.Generic;\nusing UnityEngine;\nusing UnityEngine.AI; // Cần thiết để dùng NavMesh\nusing Hallucinate.Audio;\n\n[RequireComponent(typeof(NavMeshAgent))] // Tự động thêm component này nếu chưa có\npublic class EnemyAI : MonoBehaviour\n{\n [Header(\"References\")]\n public Transform player;\n\n [Header(\"Detection\")]\n public float detectRange = 10f;\n public float moveSpeed = 3f;\n public float rotateSpeed = 50f;\n\n [Header(\"Patrol Area\")]\n public float patrolRadius = 15f; // Bán kính khu vực tuần tra\n public float patrolWaitTime = 2f; // Thời gian đứng chờ trước khi đi điểm khác\n private Vector3 startPosition;\n private float currentWaitTime;\n\n [Header(\"Artifact\")]\n public bool playerHasArtifact;\n\n [Header(\"Laser\")]\n public GameObject laserPrefab;\n public Transform firePoint;\n public float minShootDelay = 1f;\n public float maxShootDelay = 3f;\n\n [Header(\"Audio\")]\n public string alertSound = \"Enemy_Alert\";\n public string shootSound = \"Enemy_Shoot\";\n private bool hasSpottedPlayer; // Để chỉ kêu alert 1 lần\n\n private float nextShootTime;\n private NavMeshAgent agent;\n\n public Node behaviorTreeRoot;\n\n private void Start()\n {\n agent = GetComponent();\n agent.speed = moveSpeed;\n\n // Lưu lại vị trí ban đầu để làm tâm của khu vực tuần tra\n startPosition = transform.position; \n\n nextShootTime = Time.time + Random.Range(minShootDelay, maxShootDelay);\n InitBehaviorTree();\n FindPlayer();\n }\n\n private void Update()\n {\n // Nếu mất reference (Player chết hoặc chưa spawn), liên tục tìm lại\n if (player == null)\n {\n FindPlayer();\n }\n\n // Chỉ chạy AI nếu đã tìm thấy player (hoặc bạn có thể cho tuần tra ngay cả khi chưa có player tùy logic game)\n behaviorTreeRoot?.Evaluate();\n }\n\n private void FindPlayer()\n {\n GameObject playerObj = GameObject.FindGameObjectWithTag(\"Player\");\n if (playerObj != null)\n {\n player = playerObj.transform;\n }\n }\n\n private void InitBehaviorTree()\n {\n // Player có artifact -> focus + shoot\n var laserSequence = new Sequence(new List\n {\n new TaskNode(CheckHasArtifact),\n new TaskNode(ActionFocusAndShoot)\n });\n\n // Thấy player -> chạy tới\n var chaseSequence = new Sequence(new List\n {\n new TaskNode(CheckCanSeePlayer),\n new TaskNode(ActionMoveToPlayer)\n });\n\n // Không thấy ai -> Tuần tra bằng NavMesh\n var patrolNode = new TaskNode(ActionPatrol);\n\n behaviorTreeRoot = new Selector(new List\n {\n laserSequence,\n chaseSequence,\n patrolNode\n });\n }\n\n #region CONDITIONS\n\n private NodeState CheckHasArtifact()\n {\n return playerHasArtifact ? NodeState.Success : NodeState.Failure;\n }\n\n private NodeState CheckCanSeePlayer()\n {\n if (player == null) return NodeState.Failure;\n\n float distance = Vector3.Distance(transform.position, player.position);\n\n if (distance <= detectRange)\n {\n if (!hasSpottedPlayer)\n {\n hasSpottedPlayer = true;\n AudioManager.Instance?.Play(alertSound, position: transform.position);\n }\n return NodeState.Success;\n }\n\n hasSpottedPlayer = false; // Reset nếu player ra khỏi tầm mắt\n return NodeState.Failure;\n }\n\n #endregion\n\n #region ACTIONS\n\n private NodeState ActionPatrol()\n {\n // Debug.Log(\"Patrolling...\");\n if (!agent.isActiveAndEnabled || !agent.isOnNavMesh) return NodeState.Failure;\n\n agent.isStopped = false; // Đảm bảo NPC được phép di chuyển\n agent.speed = moveSpeed * 0.5f; // Đi dạo nên đi chậm lại một chút\n\n // Kiểm tra xem NPC đã đến điểm đích chưa\n if (!agent.pathPending && agent.remainingDistance <= agent.stoppingDistance)\n {\n currentWaitTime += Time.deltaTime;\n\n // Chờ một lúc rồi mới chọn điểm mới\n if (currentWaitTime >= patrolWaitTime)\n {\n // Tìm một điểm ngẫu nhiên trong bán kính cho trước\n Vector3 randomDirection = Random.insideUnitSphere * patrolRadius;\n randomDirection += startPosition;\n NavMeshHit hit;\n\n // Đảm bảo điểm ngẫu nhiên nằm trên bề mặt NavMesh hợp lệ\n if (NavMesh.SamplePosition(randomDirection, out hit, patrolRadius, 1))\n {\n agent.SetDestination(hit.position);\n }\n currentWaitTime = 0f;\n }\n }\n\n return NodeState.Running;\n }\n\n private NodeState ActionMoveToPlayer()\n {\n if (player == null) return NodeState.Failure;\n\n // Debug.Log(\"Chasing Player\");\n\n if (!agent.isActiveAndEnabled || !agent.isOnNavMesh) return NodeState.Failure;\n\n agent.isStopped = false;\n agent.speed = moveSpeed; // Phục hồi tốc độ rượt đuổi\n agent.SetDestination(player.position);\n\n return NodeState.Running;\n }\n\n private NodeState ActionFocusAndShoot()\n {\n if (player == null) return NodeState.Failure;\n\n // Debug.Log(\"Focus and Shoot!\");\n\n if (!agent.isActiveAndEnabled || !agent.isOnNavMesh) return NodeState.Failure;\n\n // Dừng NavMeshAgent lại để đứng bắn, tránh bị trượt\n agent.isStopped = true;\n\n // Focus player\n Vector3 dir = player.position - transform.position;\n dir.y = 0f;\n\n if (dir != Vector3.zero)\n {\n Quaternion targetRotation = Quaternion.LookRotation(dir);\n transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, rotateSpeed * Time.deltaTime);\n }\n\n // Shoot with random delay\n if (Time.time >= nextShootTime)\n {\n ShootLaser();\n nextShootTime = Time.time + Random.Range(minShootDelay, maxShootDelay);\n }\n\n return NodeState.Running;\n }\n\n private void ShootLaser()\n {\n if (laserPrefab == null || firePoint == null) return;\n Instantiate(laserPrefab, firePoint.position, firePoint.rotation);\n AudioManager.Instance?.Play(shootSound, position: transform.position);\n // Debug.Log(\"Laser Shot!\");\n }\n\n #endregion\n}"}}}]} +{"$set":{"lastUpdated":"2026-06-04T15:55:20.855Z"}} +{"id":"77901aaa-25a2-4576-81eb-74460ae66801","timestamp":"2026-06-04T15:55:36.382Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":50266,"output":2517,"cached":43752,"thoughts":18,"tool":0,"total":52801},"model":"gemini-3-flash-preview"} +{"$set":{"lastUpdated":"2026-06-04T15:55:36.383Z"}} +{"id":"77901aaa-25a2-4576-81eb-74460ae66801","timestamp":"2026-06-04T15:55:36.382Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":50266,"output":2517,"cached":43752,"thoughts":18,"tool":0,"total":52801},"model":"gemini-3-flash-preview","toolCalls":[{"id":"update_topic__update_topic_1780588535872_0","name":"update_topic","args":{"strategic_intent":"Integrating interaction sounds into GerminiNPC.cs.","title":"Adding Audio System Phase 5: NPC Interaction Audio Integration","summary":"I am adding audio triggers to GerminiNPC.cs to provide feedback during NPC interactions. I'll play a sound when the player starts a conversation and another when the NPC (AI) responds. This enhances the immersive experience of interacting with Tom the blacksmith."},"result":[{"functionResponse":{"id":"update_topic__update_topic_1780588535872_0","name":"update_topic","response":{"output":"Current topic: \"Adding Audio System Phase 5: NPC Interaction Audio Integration\"\nTopic summary: I am adding audio triggers to GerminiNPC.cs to provide feedback during NPC interactions. I'll play a sound when the player starts a conversation and another when the NPC (AI) responds. This enhances the immersive experience of interacting with Tom the blacksmith.\n\nStrategic Intent: Integrating interaction sounds into GerminiNPC.cs."}}}],"status":"success","timestamp":"2026-06-04T15:55:36.411Z","resultDisplay":"## 📂 Topic: **Adding Audio System Phase 5: NPC Interaction Audio Integration**\n\n**Summary:**\nI am adding audio triggers to GerminiNPC.cs to provide feedback during NPC interactions. I'll play a sound when the player starts a conversation and another when the NPC (AI) responds. This enhances the immersive experience of interacting with Tom the blacksmith.\n\n> [!STRATEGY]\n> **Intent:** Integrating interaction sounds into GerminiNPC.cs.","description":"Update topic to: \"Adding Audio System Phase 5: NPC Interaction Audio Integration\"","displayName":"Update Topic Context","renderOutputAsMarkdown":true},{"id":"replace__replace_1780588536381_1","name":"replace","args":{"new_string":"using System;\nusing System.Collections;\nusing System.Text;\nusing UnityEngine;\nusing UnityEngine.InputSystem;\nusing UnityEngine.Networking;\nusing Hallucinate.Audio;\n\n[Serializable]\npublic class Part\n{\n public string text;\n}\n\n[Serializable]\npublic class Content\n{\n public Part[] parts;\n}\n\n[Serializable]\npublic class Candidate\n{\n public Content content;\n}\n\n[Serializable]\npublic class GeminiResponse\n{\n public Candidate[] candidates;\n}\n\npublic class GerminiNPC : MonoBehaviour\n{\n [SerializeField]\n private string apiKey = \"AQ.Ab8RN6I2hU_p8yHiPNNHtWzYBiLugbPP22gC6lzTWaYEWj4v0g\";\n [SerializeField]\n private string germiniURL =\n \"https://generativelanguage.googleapis.com/v1beta/models/gemini-flash-latest:generateContent\";\n\n public string npcPersona =\n \"Ngươi là một lão thợ rèn cọc cằn tên là Tom, ngươi rất ghét những kẻ mang phế liệu đến tiệm của mình. Chỉ trả lời ngắn gọn trong 2 câu, theo phong cách trung cổ.\";\n\n public string playerHeldItem = \"Thanh kiếm rỉ sét\";\n public float interactionDistance = 5f; // Khoảng cách tối đa để nói chuyện\n public Transform playerTransform; // Gán transform của Player vào đây\n\n [Header(\"Audio\")]\n public string startTalkSound = \"NPC_Interact\";\n public string responseSound = \"NPC_Response\";\n\n private void Update()\n {\n if (Keyboard.current != null && Keyboard.current.fKey.wasPressedThisFrame)\n {\n if (CanSeePlayer())\n {\n AudioManager.Instance?.Play(startTalkSound, position: transform.position);\n StartCoroutine(GetGerminiReponse());\n }\n else\n {\n Debug.Log(\"Hệ thống: Bạn ở quá xa hoặc bị tường che khuất!\");\n }\n }\n }\n\n private bool CanSeePlayer()\n {\n if (playerTransform == null)\n {\n // Tự tìm player nếu chưa gán\n GameObject player = GameObject.FindGameObjectWithTag(\"Player\");\n if (player != null) playerTransform = player.transform;\n else return false;\n }\n\n // 1. Check khoảng cách\n float dist = Vector3.Distance(transform.position, playerTransform.position);\n if (dist > interactionDistance) return false;\n\n // 2. Check xem có bị tường che không (Raycast)\n Vector3 direction = (playerTransform.position + Vector3.up) - (transform.position + Vector3.up);\n RaycastHit hit;\n if (Physics.Raycast(transform.position + Vector3.up, direction, out hit, interactionDistance))\n {\n if (hit.collider.CompareTag(\"Player\") || hit.collider.transform.IsChildOf(playerTransform))\n {\n return true; // Thấy đầu/người player\n }\n }\n\n return false;\n }\n\n private IEnumerator GetGerminiReponse()\n {\n var jsonBody = $@\"{{\n \"\"systemInstruction\"\": {{\"\"parts\"\": [{{ \"\"text\"\": \"\"{npcPersona}\"\" }}]}},\n \"\"contents\"\": [{{\"\"parts\"\": [{{ \"\"text\"\": \"\"Ta muốn bán cho ông món đồ này: {playerHeldItem}\"\"}}]}}]\n }}\";\n\n // 1. Sửa tham số thành ?key= (trước đó là ?ket=)\n var requestURL = $\"{germiniURL}?key={apiKey}\";\n\n // 2. Sử dụng requestURL (có chứa key) thay vì germiniURL gốc\n using (var request = new UnityWebRequest(requestURL, \"POST\"))\n {\n var bodyRaw = Encoding.UTF8.GetBytes(jsonBody);\n request.uploadHandler = new UploadHandlerRaw(bodyRaw);\n request.downloadHandler = new DownloadHandlerBuffer();\n request.SetRequestHeader(\"Content-Type\", \"application/json\");\n\n yield return request.SendWebRequest();\n\n if (request.result == UnityWebRequest.Result.ProtocolError || request.result == UnityWebRequest.Result.ConnectionError)\n {\n Debug.LogError($\"[Gemini Error] {request.error} - Response: {request.downloadHandler.text}\");\n }\n else\n {\n var responseTEXT = request.downloadHandler.text;\n try\n {\n var geminiResponse = JsonUtility.FromJson(responseTEXT);\n if (geminiResponse != null && geminiResponse.candidates != null && geminiResponse.candidates.Length > 0)\n {\n var npcResponse = geminiResponse.candidates[0].content.parts[0].text;\n Debug.Log($\"Tom: {npcResponse}\");\n AudioManager.Instance?.Play(responseSound, position: transform.position);\n }\n }\n catch (Exception e)\n {\n Debug.LogError($\"[JSON Parse Error] {e.Message}\");\n }\n }\n }\n }\n}\n","old_string":"using System;\nusing System.Collections;\nusing System.Text;\nusing UnityEngine;\nusing UnityEngine.InputSystem;\nusing UnityEngine.Networking;\n\n[Serializable]\npublic class Part\n{\n public string text;\n}\n\n[Serializable]\npublic class Content\n{\n public Part[] parts;\n}\n\n[Serializable]\npublic class Candidate\n{\n public Content content;\n}\n\n[Serializable]\npublic class GeminiResponse\n{\n public Candidate[] candidates;\n}\n\npublic class GerminiNPC : MonoBehaviour\n{\n [SerializeField]\n private string apiKey = \"AQ.Ab8RN6I2hU_p8yHiPNNHtWzYBiLugbPP22gC6lzTWaYEWj4v0g\";\n [SerializeField]\n private string germiniURL =\n \"https://generativelanguage.googleapis.com/v1beta/models/gemini-flash-latest:generateContent\";\n\n public string npcPersona =\n \"Ngươi là một lão thợ rèn cọc cằn tên là Tom, ngươi rất ghét những kẻ mang phế liệu đến tiệm của mình. Chỉ trả lời ngắn gọn trong 2 câu, theo phong cách trung cổ.\";\n\n public string playerHeldItem = \"Thanh kiếm rỉ sét\";\n public float interactionDistance = 5f; // Khoảng cách tối đa để nói chuyện\n public Transform playerTransform; // Gán transform của Player vào đây\n\n private void Update()\n {\n if (Keyboard.current != null && Keyboard.current.fKey.wasPressedThisFrame)\n {\n if (CanSeePlayer())\n {\n StartCoroutine(GetGerminiReponse());\n }\n else\n {\n Debug.Log(\"Hệ thống: Bạn ở quá xa hoặc bị tường che khuất!\");\n }\n }\n }\n\n private bool CanSeePlayer()\n {\n if (playerTransform == null)\n {\n // Tự tìm player nếu chưa gán\n GameObject player = GameObject.FindGameObjectWithTag(\"Player\");\n if (player != null) playerTransform = player.transform;\n else return false;\n }\n\n // 1. Check khoảng cách\n float dist = Vector3.Distance(transform.position, playerTransform.position);\n if (dist > interactionDistance) return false;\n\n // 2. Check xem có bị tường che không (Raycast)\n Vector3 direction = (playerTransform.position + Vector3.up) - (transform.position + Vector3.up);\n RaycastHit hit;\n if (Physics.Raycast(transform.position + Vector3.up, direction, out hit, interactionDistance))\n {\n if (hit.collider.CompareTag(\"Player\") || hit.collider.transform.IsChildOf(playerTransform))\n {\n return true; // Thấy đầu/người player\n }\n }\n\n return false;\n }\n\n private IEnumerator GetGerminiReponse()\n {\n var jsonBody = $@\"{{\n \"\"systemInstruction\"\": {{\"\"parts\"\": [{{ \"\"text\"\": \"\"{npcPersona}\"\" }}]}},\n \"\"contents\"\": [{{\"\"parts\"\": [{{ \"\"text\"\": \"\"Ta muốn bán cho ông món đồ này: {playerHeldItem}\"\"}}]}}]\n }}\";\n\n // 1. Sửa tham số thành ?key= (trước đó là ?ket=)\n var requestURL = $\"{germiniURL}?key={apiKey}\";\n\n // 2. Sử dụng requestURL (có chứa key) thay vì germiniURL gốc\n using (var request = new UnityWebRequest(requestURL, \"POST\"))\n {\n var bodyRaw = Encoding.UTF8.GetBytes(jsonBody);\n request.uploadHandler = new UploadHandlerRaw(bodyRaw);\n request.downloadHandler = new DownloadHandlerBuffer();\n request.SetRequestHeader(\"Content-Type\", \"application/json\");\n\n yield return request.SendWebRequest();\n\n if (request.result == UnityWebRequest.Result.ProtocolError || request.result == UnityWebRequest.Result.ConnectionError)\n {\n Debug.LogError($\"[Gemini Error] {request.error} - Response: {request.downloadHandler.text}\");\n }\n else\n {\n var responseTEXT = request.downloadHandler.text;\n try\n {\n var geminiResponse = JsonUtility.FromJson(responseTEXT);\n if (geminiResponse != null && geminiResponse.candidates != null && geminiResponse.candidates.Length > 0)\n {\n var npcResponse = geminiResponse.candidates[0].content.parts[0].text;\n Debug.Log($\"Tom: {npcResponse}\");\n }\n }\n catch (Exception e)\n {\n Debug.LogError($\"[JSON Parse Error] {e.Message}\");\n }\n }\n }\n }\n}\n","instruction":"Add interaction sounds to GerminiNPC.cs using AudioManager. Play sound when starting talk and when receiving response.","file_path":"Assets/Scripts/AI NPC/GerminiNPC.cs","allow_multiple":false},"result":[{"functionResponse":{"id":"replace__replace_1780588536381_1","name":"replace","response":{"output":"Successfully modified file: E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\AI NPC\\GerminiNPC.cs (1 replacements). Here is the updated code:\nusing System;\nusing System.Collections;\nusing System.Text;\nusing UnityEngine;\nusing UnityEngine.InputSystem;\nusing UnityEngine.Networking;\nusing Hallucinate.Audio;\n\n[Serializable]\npublic class Part\n{\n public string text;\n}\n\n[Serializable]\npublic class Content\n{\n public Part[] parts;\n}\n\n[Serializable]\npublic class Candidate\n{\n public Content content;\n}\n\n[Serializable]\npublic class GeminiResponse\n{\n public Candidate[] candidates;\n}\n\npublic class GerminiNPC : MonoBehaviour\n{\n [SerializeField]\n private string apiKey = \"AQ.Ab8RN6I2hU_p8yHiPNNHtWzYBiLugbPP22gC6lzTWaYEWj4v0g\";\n [SerializeField]\n private string germiniURL =\n \"https://generativelanguage.googleapis.com/v1beta/models/gemini-flash-latest:generateContent\";\n\n public string npcPersona =\n \"Ngươi là một lão thợ rèn cọc cằn tên là Tom, ngươi rất ghét những kẻ mang phế liệu đến tiệm của mình. Chỉ trả lời ngắn gọn trong 2 câu, theo phong cách trung cổ.\";\n\n public string playerHeldItem = \"Thanh kiếm rỉ sét\";\n public float interactionDistance = 5f; // Khoảng cách tối đa để nói chuyện\n public Transform playerTransform; // Gán transform của Player vào đây\n\n [Header(\"Audio\")]\n public string startTalkSound = \"NPC_Interact\";\n public string responseSound = \"NPC_Response\";\n\n private void Update()\n {\n if (Keyboard.current != null && Keyboard.current.fKey.wasPressedThisFrame)\n {\n if (CanSeePlayer())\n {\n AudioManager.Instance?.Play(startTalkSound, position: transform.position);\n StartCoroutine(GetGerminiReponse());\n }\n else\n {\n Debug.Log(\"Hệ thống: Bạn ở quá xa hoặc bị tường che khuất!\");\n }\n }\n }\n\n private bool CanSeePlayer()\n {\n if (playerTransform == null)\n {\n // Tự tìm player nếu chưa gán\n GameObject player = GameObject.FindGameObjectWithTag(\"Player\");\n if (player != null) playerTransform = player.transform;\n else return false;\n }\n\n // 1. Check khoảng cách\n float dist = Vector3.Distance(transform.position, playerTransform.position);\n if (dist > interactionDistance) return false;\n\n // 2. Check xem có bị tường che không (Raycast)\n Vector3 direction = (playerTransform.position + Vector3.up) - (transform.position + Vector3.up);\n RaycastHit hit;\n if (Physics.Raycast(transform.position + Vector3.up, direction, out hit, interactionDistance))\n {\n if (hit.collider.CompareTag(\"Player\") || hit.collider.transform.IsChildOf(playerTransform))\n {\n return true; // Thấy đầu/người player\n }\n }\n\n return false;\n }\n\n private IEnumerator GetGerminiReponse()\n {\n var jsonBody = $@\"{{\n \"\"systemInstruction\"\": {{\"\"parts\"\": [{{ \"\"text\"\": \"\"{npcPersona}\"\" }}]}},\n \"\"contents\"\": [{{\"\"parts\"\": [{{ \"\"text\"\": \"\"Ta muốn bán cho ông món đồ này: {playerHeldItem}\"\"}}]}}]\n }}\";\n\n // 1. Sửa tham số thành ?key= (trước đó là ?ket=)\n var requestURL = $\"{germiniURL}?key={apiKey}\";\n\n // 2. Sử dụng requestURL (có chứa key) thay vì germiniURL gốc\n using (var request = new UnityWebRequest(requestURL, \"POST\"))\n {\n var bodyRaw = Encoding.UTF8.GetBytes(jsonBody);\n request.uploadHandler = new UploadHandlerRaw(bodyRaw);\n request.downloadHandler = new DownloadHandlerBuffer();\n request.SetRequestHeader(\"Content-Type\", \"application/json\");\n\n yield return request.SendWebRequest();\n\n if (request.result == UnityWebRequest.Result.ProtocolError || request.result == UnityWebRequest.Result.ConnectionError)\n {\n Debug.LogError($\"[Gemini Error] {request.error} - Response: {request.downloadHandler.text}\");\n }\n else\n {\n var responseTEXT = request.downloadHandler.text;\n try\n {\n var geminiResponse = JsonUtility.FromJson(responseTEXT);\n if (geminiResponse != null && geminiResponse.candidates != null && geminiResponse.candidates.Length > 0)\n {\n var npcResponse = geminiResponse.candidates[0].content.parts[0].text;\n Debug.Log($\"Tom: {npcResponse}\");\n AudioManager.Instance?.Play(responseSound, position: transform.position);\n }\n }\n catch (Exception e)\n {\n Debug.LogError($\"[JSON Parse Error] {e.Message}\");\n }\n }\n }\n }\n}\n"}}}],"status":"success","timestamp":"2026-06-04T15:55:36.411Z","resultDisplay":{"fileDiff":"Index: GerminiNPC.cs\n===================================================================\n--- GerminiNPC.cs\tCurrent\n+++ GerminiNPC.cs\tProposed\n@@ -4,6 +4,7 @@\n using UnityEngine;\n using UnityEngine.InputSystem;\n using UnityEngine.Networking;\n+using Hallucinate.Audio;\n \n [Serializable]\n public class Part\n@@ -44,12 +45,17 @@\n public float interactionDistance = 5f; // Khoảng cách tối đa để nói chuyện\n public Transform playerTransform; // Gán transform của Player vào đây\n \n+ [Header(\"Audio\")]\n+ public string startTalkSound = \"NPC_Interact\";\n+ public string responseSound = \"NPC_Response\";\n+\n private void Update()\n {\n if (Keyboard.current != null && Keyboard.current.fKey.wasPressedThisFrame)\n {\n if (CanSeePlayer())\n {\n+ AudioManager.Instance?.Play(startTalkSound, position: transform.position);\n StartCoroutine(GetGerminiReponse());\n }\n else\n@@ -121,6 +127,7 @@\n {\n var npcResponse = geminiResponse.candidates[0].content.parts[0].text;\n Debug.Log($\"Tom: {npcResponse}\");\n+ AudioManager.Instance?.Play(responseSound, position: transform.position);\n }\n }\n catch (Exception e)\n","fileName":"GerminiNPC.cs","filePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\AI NPC\\GerminiNPC.cs","originalContent":"using System;\nusing System.Collections;\nusing System.Text;\nusing UnityEngine;\nusing UnityEngine.InputSystem;\nusing UnityEngine.Networking;\n\n[Serializable]\npublic class Part\n{\n public string text;\n}\n\n[Serializable]\npublic class Content\n{\n public Part[] parts;\n}\n\n[Serializable]\npublic class Candidate\n{\n public Content content;\n}\n\n[Serializable]\npublic class GeminiResponse\n{\n public Candidate[] candidates;\n}\n\npublic class GerminiNPC : MonoBehaviour\n{\n [SerializeField]\n private string apiKey = \"AQ.Ab8RN6I2hU_p8yHiPNNHtWzYBiLugbPP22gC6lzTWaYEWj4v0g\";\n [SerializeField]\n private string germiniURL =\n \"https://generativelanguage.googleapis.com/v1beta/models/gemini-flash-latest:generateContent\";\n\n public string npcPersona =\n \"Ngươi là một lão thợ rèn cọc cằn tên là Tom, ngươi rất ghét những kẻ mang phế liệu đến tiệm của mình. Chỉ trả lời ngắn gọn trong 2 câu, theo phong cách trung cổ.\";\n\n public string playerHeldItem = \"Thanh kiếm rỉ sét\";\n public float interactionDistance = 5f; // Khoảng cách tối đa để nói chuyện\n public Transform playerTransform; // Gán transform của Player vào đây\n\n private void Update()\n {\n if (Keyboard.current != null && Keyboard.current.fKey.wasPressedThisFrame)\n {\n if (CanSeePlayer())\n {\n StartCoroutine(GetGerminiReponse());\n }\n else\n {\n Debug.Log(\"Hệ thống: Bạn ở quá xa hoặc bị tường che khuất!\");\n }\n }\n }\n\n private bool CanSeePlayer()\n {\n if (playerTransform == null)\n {\n // Tự tìm player nếu chưa gán\n GameObject player = GameObject.FindGameObjectWithTag(\"Player\");\n if (player != null) playerTransform = player.transform;\n else return false;\n }\n\n // 1. Check khoảng cách\n float dist = Vector3.Distance(transform.position, playerTransform.position);\n if (dist > interactionDistance) return false;\n\n // 2. Check xem có bị tường che không (Raycast)\n Vector3 direction = (playerTransform.position + Vector3.up) - (transform.position + Vector3.up);\n RaycastHit hit;\n if (Physics.Raycast(transform.position + Vector3.up, direction, out hit, interactionDistance))\n {\n if (hit.collider.CompareTag(\"Player\") || hit.collider.transform.IsChildOf(playerTransform))\n {\n return true; // Thấy đầu/người player\n }\n }\n\n return false;\n }\n\n private IEnumerator GetGerminiReponse()\n {\n var jsonBody = $@\"{{\n \"\"systemInstruction\"\": {{\"\"parts\"\": [{{ \"\"text\"\": \"\"{npcPersona}\"\" }}]}},\n \"\"contents\"\": [{{\"\"parts\"\": [{{ \"\"text\"\": \"\"Ta muốn bán cho ông món đồ này: {playerHeldItem}\"\"}}]}}]\n }}\";\n\n // 1. Sửa tham số thành ?key= (trước đó là ?ket=)\n var requestURL = $\"{germiniURL}?key={apiKey}\";\n\n // 2. Sử dụng requestURL (có chứa key) thay vì germiniURL gốc\n using (var request = new UnityWebRequest(requestURL, \"POST\"))\n {\n var bodyRaw = Encoding.UTF8.GetBytes(jsonBody);\n request.uploadHandler = new UploadHandlerRaw(bodyRaw);\n request.downloadHandler = new DownloadHandlerBuffer();\n request.SetRequestHeader(\"Content-Type\", \"application/json\");\n\n yield return request.SendWebRequest();\n\n if (request.result == UnityWebRequest.Result.ProtocolError || request.result == UnityWebRequest.Result.ConnectionError)\n {\n Debug.LogError($\"[Gemini Error] {request.error} - Response: {request.downloadHandler.text}\");\n }\n else\n {\n var responseTEXT = request.downloadHandler.text;\n try\n {\n var geminiResponse = JsonUtility.FromJson(responseTEXT);\n if (geminiResponse != null && geminiResponse.candidates != null && geminiResponse.candidates.Length > 0)\n {\n var npcResponse = geminiResponse.candidates[0].content.parts[0].text;\n Debug.Log($\"Tom: {npcResponse}\");\n }\n }\n catch (Exception e)\n {\n Debug.LogError($\"[JSON Parse Error] {e.Message}\");\n }\n }\n }\n }\n}\n","newContent":"using System;\nusing System.Collections;\nusing System.Text;\nusing UnityEngine;\nusing UnityEngine.InputSystem;\nusing UnityEngine.Networking;\nusing Hallucinate.Audio;\n\n[Serializable]\npublic class Part\n{\n public string text;\n}\n\n[Serializable]\npublic class Content\n{\n public Part[] parts;\n}\n\n[Serializable]\npublic class Candidate\n{\n public Content content;\n}\n\n[Serializable]\npublic class GeminiResponse\n{\n public Candidate[] candidates;\n}\n\npublic class GerminiNPC : MonoBehaviour\n{\n [SerializeField]\n private string apiKey = \"AQ.Ab8RN6I2hU_p8yHiPNNHtWzYBiLugbPP22gC6lzTWaYEWj4v0g\";\n [SerializeField]\n private string germiniURL =\n \"https://generativelanguage.googleapis.com/v1beta/models/gemini-flash-latest:generateContent\";\n\n public string npcPersona =\n \"Ngươi là một lão thợ rèn cọc cằn tên là Tom, ngươi rất ghét những kẻ mang phế liệu đến tiệm của mình. Chỉ trả lời ngắn gọn trong 2 câu, theo phong cách trung cổ.\";\n\n public string playerHeldItem = \"Thanh kiếm rỉ sét\";\n public float interactionDistance = 5f; // Khoảng cách tối đa để nói chuyện\n public Transform playerTransform; // Gán transform của Player vào đây\n\n [Header(\"Audio\")]\n public string startTalkSound = \"NPC_Interact\";\n public string responseSound = \"NPC_Response\";\n\n private void Update()\n {\n if (Keyboard.current != null && Keyboard.current.fKey.wasPressedThisFrame)\n {\n if (CanSeePlayer())\n {\n AudioManager.Instance?.Play(startTalkSound, position: transform.position);\n StartCoroutine(GetGerminiReponse());\n }\n else\n {\n Debug.Log(\"Hệ thống: Bạn ở quá xa hoặc bị tường che khuất!\");\n }\n }\n }\n\n private bool CanSeePlayer()\n {\n if (playerTransform == null)\n {\n // Tự tìm player nếu chưa gán\n GameObject player = GameObject.FindGameObjectWithTag(\"Player\");\n if (player != null) playerTransform = player.transform;\n else return false;\n }\n\n // 1. Check khoảng cách\n float dist = Vector3.Distance(transform.position, playerTransform.position);\n if (dist > interactionDistance) return false;\n\n // 2. Check xem có bị tường che không (Raycast)\n Vector3 direction = (playerTransform.position + Vector3.up) - (transform.position + Vector3.up);\n RaycastHit hit;\n if (Physics.Raycast(transform.position + Vector3.up, direction, out hit, interactionDistance))\n {\n if (hit.collider.CompareTag(\"Player\") || hit.collider.transform.IsChildOf(playerTransform))\n {\n return true; // Thấy đầu/người player\n }\n }\n\n return false;\n }\n\n private IEnumerator GetGerminiReponse()\n {\n var jsonBody = $@\"{{\n \"\"systemInstruction\"\": {{\"\"parts\"\": [{{ \"\"text\"\": \"\"{npcPersona}\"\" }}]}},\n \"\"contents\"\": [{{\"\"parts\"\": [{{ \"\"text\"\": \"\"Ta muốn bán cho ông món đồ này: {playerHeldItem}\"\"}}]}}]\n }}\";\n\n // 1. Sửa tham số thành ?key= (trước đó là ?ket=)\n var requestURL = $\"{germiniURL}?key={apiKey}\";\n\n // 2. Sử dụng requestURL (có chứa key) thay vì germiniURL gốc\n using (var request = new UnityWebRequest(requestURL, \"POST\"))\n {\n var bodyRaw = Encoding.UTF8.GetBytes(jsonBody);\n request.uploadHandler = new UploadHandlerRaw(bodyRaw);\n request.downloadHandler = new DownloadHandlerBuffer();\n request.SetRequestHeader(\"Content-Type\", \"application/json\");\n\n yield return request.SendWebRequest();\n\n if (request.result == UnityWebRequest.Result.ProtocolError || request.result == UnityWebRequest.Result.ConnectionError)\n {\n Debug.LogError($\"[Gemini Error] {request.error} - Response: {request.downloadHandler.text}\");\n }\n else\n {\n var responseTEXT = request.downloadHandler.text;\n try\n {\n var geminiResponse = JsonUtility.FromJson(responseTEXT);\n if (geminiResponse != null && geminiResponse.candidates != null && geminiResponse.candidates.Length > 0)\n {\n var npcResponse = geminiResponse.candidates[0].content.parts[0].text;\n Debug.Log($\"Tom: {npcResponse}\");\n AudioManager.Instance?.Play(responseSound, position: transform.position);\n }\n }\n catch (Exception e)\n {\n Debug.LogError($\"[JSON Parse Error] {e.Message}\");\n }\n }\n }\n }\n}\n","diffStat":{"model_added_lines":7,"model_removed_lines":0,"model_added_chars":331,"model_removed_chars":0,"user_added_lines":0,"user_removed_lines":0,"user_added_chars":0,"user_removed_chars":0},"isNewFile":false},"description":"Assets\\Scripts\\AI NPC\\GerminiNPC.cs: using System;... => using System;...","displayName":"Edit","renderOutputAsMarkdown":true}]} +{"id":"1491ee9f-18d5-4cf3-aeda-c536d11c2003","timestamp":"2026-06-04T15:55:36.829Z","type":"user","content":[{"functionResponse":{"id":"update_topic__update_topic_1780588535872_0","name":"update_topic","response":{"output":"Current topic: \"Adding Audio System Phase 5: NPC Interaction Audio Integration\"\nTopic summary: I am adding audio triggers to GerminiNPC.cs to provide feedback during NPC interactions. I'll play a sound when the player starts a conversation and another when the NPC (AI) responds. This enhances the immersive experience of interacting with Tom the blacksmith.\n\nStrategic Intent: Integrating interaction sounds into GerminiNPC.cs."}}},{"functionResponse":{"id":"replace__replace_1780588536381_1","name":"replace","response":{"output":"Successfully modified file: E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\AI NPC\\GerminiNPC.cs (1 replacements). Here is the updated code:\nusing System;\nusing System.Collections;\nusing System.Text;\nusing UnityEngine;\nusing UnityEngine.InputSystem;\nusing UnityEngine.Networking;\nusing Hallucinate.Audio;\n\n[Serializable]\npublic class Part\n{\n public string text;\n}\n\n[Serializable]\npublic class Content\n{\n public Part[] parts;\n}\n\n[Serializable]\npublic class Candidate\n{\n public Content content;\n}\n\n[Serializable]\npublic class GeminiResponse\n{\n public Candidate[] candidates;\n}\n\npublic class GerminiNPC : MonoBehaviour\n{\n [SerializeField]\n private string apiKey = \"AQ.Ab8RN6I2hU_p8yHiPNNHtWzYBiLugbPP22gC6lzTWaYEWj4v0g\";\n [SerializeField]\n private string germiniURL =\n \"https://generativelanguage.googleapis.com/v1beta/models/gemini-flash-latest:generateContent\";\n\n public string npcPersona =\n \"Ngươi là một lão thợ rèn cọc cằn tên là Tom, ngươi rất ghét những kẻ mang phế liệu đến tiệm của mình. Chỉ trả lời ngắn gọn trong 2 câu, theo phong cách trung cổ.\";\n\n public string playerHeldItem = \"Thanh kiếm rỉ sét\";\n public float interactionDistance = 5f; // Khoảng cách tối đa để nói chuyện\n public Transform playerTransform; // Gán transform của Player vào đây\n\n [Header(\"Audio\")]\n public string startTalkSound = \"NPC_Interact\";\n public string responseSound = \"NPC_Response\";\n\n private void Update()\n {\n if (Keyboard.current != null && Keyboard.current.fKey.wasPressedThisFrame)\n {\n if (CanSeePlayer())\n {\n AudioManager.Instance?.Play(startTalkSound, position: transform.position);\n StartCoroutine(GetGerminiReponse());\n }\n else\n {\n Debug.Log(\"Hệ thống: Bạn ở quá xa hoặc bị tường che khuất!\");\n }\n }\n }\n\n private bool CanSeePlayer()\n {\n if (playerTransform == null)\n {\n // Tự tìm player nếu chưa gán\n GameObject player = GameObject.FindGameObjectWithTag(\"Player\");\n if (player != null) playerTransform = player.transform;\n else return false;\n }\n\n // 1. Check khoảng cách\n float dist = Vector3.Distance(transform.position, playerTransform.position);\n if (dist > interactionDistance) return false;\n\n // 2. Check xem có bị tường che không (Raycast)\n Vector3 direction = (playerTransform.position + Vector3.up) - (transform.position + Vector3.up);\n RaycastHit hit;\n if (Physics.Raycast(transform.position + Vector3.up, direction, out hit, interactionDistance))\n {\n if (hit.collider.CompareTag(\"Player\") || hit.collider.transform.IsChildOf(playerTransform))\n {\n return true; // Thấy đầu/người player\n }\n }\n\n return false;\n }\n\n private IEnumerator GetGerminiReponse()\n {\n var jsonBody = $@\"{{\n \"\"systemInstruction\"\": {{\"\"parts\"\": [{{ \"\"text\"\": \"\"{npcPersona}\"\" }}]}},\n \"\"contents\"\": [{{\"\"parts\"\": [{{ \"\"text\"\": \"\"Ta muốn bán cho ông món đồ này: {playerHeldItem}\"\"}}]}}]\n }}\";\n\n // 1. Sửa tham số thành ?key= (trước đó là ?ket=)\n var requestURL = $\"{germiniURL}?key={apiKey}\";\n\n // 2. Sử dụng requestURL (có chứa key) thay vì germiniURL gốc\n using (var request = new UnityWebRequest(requestURL, \"POST\"))\n {\n var bodyRaw = Encoding.UTF8.GetBytes(jsonBody);\n request.uploadHandler = new UploadHandlerRaw(bodyRaw);\n request.downloadHandler = new DownloadHandlerBuffer();\n request.SetRequestHeader(\"Content-Type\", \"application/json\");\n\n yield return request.SendWebRequest();\n\n if (request.result == UnityWebRequest.Result.ProtocolError || request.result == UnityWebRequest.Result.ConnectionError)\n {\n Debug.LogError($\"[Gemini Error] {request.error} - Response: {request.downloadHandler.text}\");\n }\n else\n {\n var responseTEXT = request.downloadHandler.text;\n try\n {\n var geminiResponse = JsonUtility.FromJson(responseTEXT);\n if (geminiResponse != null && geminiResponse.candidates != null && geminiResponse.candidates.Length > 0)\n {\n var npcResponse = geminiResponse.candidates[0].content.parts[0].text;\n Debug.Log($\"Tom: {npcResponse}\");\n AudioManager.Instance?.Play(responseSound, position: transform.position);\n }\n }\n catch (Exception e)\n {\n Debug.LogError($\"[JSON Parse Error] {e.Message}\");\n }\n }\n }\n }\n}\n"}}}]} +{"$set":{"lastUpdated":"2026-06-04T15:55:36.829Z"}} +{"id":"f1ac6c4f-576e-443c-9c8b-4752dda83fae","timestamp":"2026-06-04T15:55:41.521Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":54114,"output":492,"cached":47774,"thoughts":16,"tool":0,"total":54622},"model":"gemini-3-flash-preview"} +{"$set":{"lastUpdated":"2026-06-04T15:55:41.521Z"}} +{"id":"f1ac6c4f-576e-443c-9c8b-4752dda83fae","timestamp":"2026-06-04T15:55:41.521Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":54114,"output":492,"cached":47774,"thoughts":16,"tool":0,"total":54622},"model":"gemini-3-flash-preview","toolCalls":[{"id":"update_topic__update_topic_1780588541218_0","name":"update_topic","args":{"title":"Adding Audio System Phase 6: Projectile Audio Integration","summary":"I am adding a hit sound to the LaserProjectile.cs script. This will play a sound when the laser hits the player, providing immediate audio feedback for taking damage. I'll use the AudioManager for this, ensuring the sound is played at the impact position.","strategic_intent":"Integrating hit sounds into LaserProjectile.cs."},"result":[{"functionResponse":{"id":"update_topic__update_topic_1780588541218_0","name":"update_topic","response":{"output":"Current topic: \"Adding Audio System Phase 6: Projectile Audio Integration\"\nTopic summary: I am adding a hit sound to the LaserProjectile.cs script. This will play a sound when the laser hits the player, providing immediate audio feedback for taking damage. I'll use the AudioManager for this, ensuring the sound is played at the impact position.\n\nStrategic Intent: Integrating hit sounds into LaserProjectile.cs."}}}],"status":"success","timestamp":"2026-06-04T15:55:41.549Z","resultDisplay":"## 📂 Topic: **Adding Audio System Phase 6: Projectile Audio Integration**\n\n**Summary:**\nI am adding a hit sound to the LaserProjectile.cs script. This will play a sound when the laser hits the player, providing immediate audio feedback for taking damage. I'll use the AudioManager for this, ensuring the sound is played at the impact position.\n\n> [!STRATEGY]\n> **Intent:** Integrating hit sounds into LaserProjectile.cs.","description":"Update topic to: \"Adding Audio System Phase 6: Projectile Audio Integration\"","displayName":"Update Topic Context","renderOutputAsMarkdown":true},{"id":"replace__replace_1780588541520_1","name":"replace","args":{"allow_multiple":false,"file_path":"Assets/Scripts/AI NPC/LaserProjectile.cs","new_string":"using UnityEngine;\nusing Hallucinate.Audio;\n\npublic class LaserProjectile : MonoBehaviour\n{\n public float speed = 5f;\n public float lifeTime = 5f;\n\n [Header(\"Audio\")]\n public string hitSound = \"Laser_Hit\";\n\n private void Start()\n {\n Destroy(gameObject, lifeTime);\n }\n\n private void Update()\n {\n transform.position +=\n transform.forward *\n speed *\n Time.deltaTime;\n }\n\n private void OnTriggerEnter(Collider other)\n {\n if (other.CompareTag(\"Player\"))\n {\n Debug.Log(\"Player Hit\");\n \n AudioManager.Instance?.Play(hitSound, position: transform.position);\n\n Destroy(gameObject);\n }\n }\n}\n","old_string":"using UnityEngine;\n\npublic class LaserProjectile : MonoBehaviour\n{\n public float speed = 5f;\n public float lifeTime = 5f;\n\n private void Start()\n {\n Destroy(gameObject, lifeTime);\n }\n\n private void Update()\n {\n transform.position +=\n transform.forward *\n speed *\n Time.deltaTime;\n }\n\n private void OnTriggerEnter(Collider other)\n {\n if (other.CompareTag(\"Player\"))\n {\n Debug.Log(\"Player Hit\");\n\n Destroy(gameObject);\n }\n }\n}\n","instruction":"Add hit sound to LaserProjectile.cs using AudioManager. Play sound when hitting player."},"result":[{"functionResponse":{"id":"replace__replace_1780588541520_1","name":"replace","response":{"output":"Successfully modified file: E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\AI NPC\\LaserProjectile.cs (1 replacements). Here is the updated code:\nusing UnityEngine;\nusing Hallucinate.Audio;\n\npublic class LaserProjectile : MonoBehaviour\n{\n public float speed = 5f;\n public float lifeTime = 5f;\n\n [Header(\"Audio\")]\n public string hitSound = \"Laser_Hit\";\n\n private void Start()\n {\n Destroy(gameObject, lifeTime);\n }\n\n private void Update()\n {\n transform.position +=\n transform.forward *\n speed *\n Time.deltaTime;\n }\n\n private void OnTriggerEnter(Collider other)\n {\n if (other.CompareTag(\"Player\"))\n {\n Debug.Log(\"Player Hit\");\n\n AudioManager.Instance?.Play(hitSound, position: transform.position);\n\n Destroy(gameObject);\n }\n }\n}"}}}],"status":"success","timestamp":"2026-06-04T15:55:41.549Z","resultDisplay":{"fileDiff":"Index: LaserProjectile.cs\n===================================================================\n--- LaserProjectile.cs\tCurrent\n+++ LaserProjectile.cs\tProposed\n@@ -1,10 +1,14 @@\n using UnityEngine;\n+using Hallucinate.Audio;\n \n public class LaserProjectile : MonoBehaviour\n {\n public float speed = 5f;\n public float lifeTime = 5f;\n \n+ [Header(\"Audio\")]\n+ public string hitSound = \"Laser_Hit\";\n+\n private void Start()\n {\n Destroy(gameObject, lifeTime);\n@@ -24,6 +28,8 @@\n {\n Debug.Log(\"Player Hit\");\n \n+ AudioManager.Instance?.Play(hitSound, position: transform.position);\n+\n Destroy(gameObject);\n }\n }\n","fileName":"LaserProjectile.cs","filePath":"E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\AI NPC\\LaserProjectile.cs","originalContent":"using UnityEngine;\n\npublic class LaserProjectile : MonoBehaviour\n{\n public float speed = 5f;\n public float lifeTime = 5f;\n\n private void Start()\n {\n Destroy(gameObject, lifeTime);\n }\n\n private void Update()\n {\n transform.position +=\n transform.forward *\n speed *\n Time.deltaTime;\n }\n\n private void OnTriggerEnter(Collider other)\n {\n if (other.CompareTag(\"Player\"))\n {\n Debug.Log(\"Player Hit\");\n\n Destroy(gameObject);\n }\n }\n}","newContent":"using UnityEngine;\nusing Hallucinate.Audio;\n\npublic class LaserProjectile : MonoBehaviour\n{\n public float speed = 5f;\n public float lifeTime = 5f;\n\n [Header(\"Audio\")]\n public string hitSound = \"Laser_Hit\";\n\n private void Start()\n {\n Destroy(gameObject, lifeTime);\n }\n\n private void Update()\n {\n transform.position +=\n transform.forward *\n speed *\n Time.deltaTime;\n }\n\n private void OnTriggerEnter(Collider other)\n {\n if (other.CompareTag(\"Player\"))\n {\n Debug.Log(\"Player Hit\");\n\n AudioManager.Instance?.Play(hitSound, position: transform.position);\n\n Destroy(gameObject);\n }\n }\n}","diffStat":{"model_added_lines":6,"model_removed_lines":0,"model_added_chars":166,"model_removed_chars":0,"user_added_lines":0,"user_removed_lines":0,"user_added_chars":0,"user_removed_chars":0},"isNewFile":false},"description":"Assets\\...\\LaserProjectile.cs: using UnityEngine;... => using UnityEngine;...","displayName":"Edit","renderOutputAsMarkdown":true}]} +{"id":"94890825-1198-444e-9870-ed12e820649d","timestamp":"2026-06-04T15:55:41.968Z","type":"user","content":[{"functionResponse":{"id":"update_topic__update_topic_1780588541218_0","name":"update_topic","response":{"output":"Current topic: \"Adding Audio System Phase 6: Projectile Audio Integration\"\nTopic summary: I am adding a hit sound to the LaserProjectile.cs script. This will play a sound when the laser hits the player, providing immediate audio feedback for taking damage. I'll use the AudioManager for this, ensuring the sound is played at the impact position.\n\nStrategic Intent: Integrating hit sounds into LaserProjectile.cs."}}},{"functionResponse":{"id":"replace__replace_1780588541520_1","name":"replace","response":{"output":"Successfully modified file: E:\\Learning_Progress\\Projects\\HALLUCINATE\\Assets\\Scripts\\AI NPC\\LaserProjectile.cs (1 replacements). Here is the updated code:\nusing UnityEngine;\nusing Hallucinate.Audio;\n\npublic class LaserProjectile : MonoBehaviour\n{\n public float speed = 5f;\n public float lifeTime = 5f;\n\n [Header(\"Audio\")]\n public string hitSound = \"Laser_Hit\";\n\n private void Start()\n {\n Destroy(gameObject, lifeTime);\n }\n\n private void Update()\n {\n transform.position +=\n transform.forward *\n speed *\n Time.deltaTime;\n }\n\n private void OnTriggerEnter(Collider other)\n {\n if (other.CompareTag(\"Player\"))\n {\n Debug.Log(\"Player Hit\");\n\n AudioManager.Instance?.Play(hitSound, position: transform.position);\n\n Destroy(gameObject);\n }\n }\n}"}}}]} +{"$set":{"lastUpdated":"2026-06-04T15:55:41.969Z"}} +{"id":"09860809-058d-4c19-8075-cec05e97202e","timestamp":"2026-06-04T15:55:53.074Z","type":"gemini","content":"Tôi đã tích hợp hệ thống âm thanh vào các script bạn yêu cầu bằng cách sử dụng `AudioManager` đã có sẵn trong dự án của bạn (`Hallucinate.Audio`). \n\nDưới đây là tóm tắt các thay đổi:\n\n### 1. Âm thanh cho UI (`FinishGate.cs`)\nTôi đã thêm các biến để bạn có thể cấu hình tên âm thanh trong Inspector:\n- **Win Sound (`UI_Win`)**: Phát khi bạn về đích thành công với ít nhất 1 rương.\n- **Warning Sound (`UI_Warning`)**: Phát khi bạn chạm vào cổng mà chưa nhặt được rương nào.\n- **Click Sound (`UI_Click`)**: Phát khi bạn nhấn nút \"Restart\" hoặc \"Quit\".\n\n### 2. Âm thanh nhặt vật phẩm (`TreasureItem.cs`)\n- **Pickup Sound (`Item_Pickup`)**: Khi người chơi nhặt rương, âm thanh sẽ phát ra tại vị trí của rương đó.\n\n### 3. Âm thanh cho AI NPC (`EnemyAI.cs` & `LaserProjectile.cs`)\n- **Alert Sound (`Enemy_Alert`)**: Phát ra khi NPC phát hiện người chơi và bắt đầu đuổi theo (chỉ phát 1 lần khi phát hiện).\n- **Shoot Sound (`Enemy_Shoot`)**: Phát ra mỗi khi NPC bắn Laser.\n- **Hit Sound (`Laser_Hit`)**: Phát ra khi tia Laser trúng vào người chơi.\n\n### 4. Âm thanh tương tác với NPC Tom (`GerminiNPC.cs`)\n- **Interact Sound (`NPC_Interact`)**: Phát khi bạn nhấn phím 'F' để bắt đầu nói chuyện với Tom.\n- **Response Sound (`NPC_Response`)**: Phát ngay khi nhận được câu trả lời từ AI (Gemini).\n\n---\n\n### ⚠️ Lưu ý quan trọng để âm thanh hoạt động:\nVì dự án của bạn sử dụng hệ thống `AudioDatabase` (ScriptableObject), bạn cần thực hiện các bước sau trong Unity Editor:\n\n1. Tìm file **AudioDatabase** (thường nằm trong `Assets/.../Settings/` hoặc bạn có thể tạo mới từ menu `Create > Hallucinate > Audio > Audio Database`).\n2. Thêm các **AudioSample** mới vào danh sách `samples` với tên (`Name`) trùng khớp với các chuỗi tôi đã đặt mặc định (hoặc bạn tự đổi tên trong Inspector của từng Object):\n - `UI_Win`\n - `UI_Warning`\n - `UI_Click`\n - `Item_Pickup`\n - `Enemy_Alert`\n - `Enemy_Shoot`\n - `Laser_Hit`\n - `NPC_Interact`\n - `NPC_Response`\n3. Kéo các file âm thanh (`AudioClip`) tương ứng vào từng Sample đó.\n4. Đảm bảo trong Scene của bạn có một Object tên là `AudioManager` và đã gán file `AudioDatabase` này vào nó.\n\nBây giờ game của bạn đã có chiều sâu hơn rất nhiều với các phản hồi bằng âm thanh!","thoughts":[{"subject":"Integrating Audio Triggers","description":"I've successfully woven audio cues into the core functionalities, enhancing immersion across various interactions. This includes crucial feedback for finishing gates, immediate confirmation for treasure acquisition, and critical alerts for enemy actions.","timestamp":"2026-06-04T15:55:48.737Z"}],"tokens":{"input":54907,"output":661,"cached":51720,"thoughts":234,"tool":0,"total":55802},"model":"gemini-3-flash-preview"} +{"$set":{"lastUpdated":"2026-06-04T15:55:53.074Z"}} diff --git a/.idea/.idea.HALLUCINATE/.idea/workspace.xml b/.idea/.idea.HALLUCINATE/.idea/workspace.xml index 17875496..118b9970 100644 --- a/.idea/.idea.HALLUCINATE/.idea/workspace.xml +++ b/.idea/.idea.HALLUCINATE/.idea/workspace.xml @@ -5,63 +5,27 @@ + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - diff --git a/Assets/Audio/Basic Locomotion/Mixers/FOR AI GAME.mixer b/Assets/Audio/Basic Locomotion/Mixers/FOR AI GAME.mixer new file mode 100644 index 00000000..60f815fe --- /dev/null +++ b/Assets/Audio/Basic Locomotion/Mixers/FOR AI GAME.mixer @@ -0,0 +1,173 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!244 &-8884289898024163737 +AudioMixerEffectController: + m_ObjectHideFlags: 3 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_EffectID: bff6f9e383f985042b8fd3121bef233e + m_EffectName: Attenuation + m_MixLevel: ede1dc4de3f030f439ef07f797b3d5ae + m_Parameters: [] + m_SendTarget: {fileID: 0} + m_EnableWetMix: 0 + m_Bypass: 0 +--- !u!244 &-5864968286415327506 +AudioMixerEffectController: + m_ObjectHideFlags: 3 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_EffectID: 435acadc3eb92094e8330acf87679bb9 + m_EffectName: Attenuation + m_MixLevel: 542df85896b7f8243b55fa8b5a9bf9b5 + m_Parameters: [] + m_SendTarget: {fileID: 0} + m_EnableWetMix: 0 + m_Bypass: 0 +--- !u!244 &-4762669937127778309 +AudioMixerEffectController: + m_ObjectHideFlags: 3 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_EffectID: 22e19dbde0eb4464eb29229c3558cab5 + m_EffectName: Attenuation + m_MixLevel: d876b0dabada3684b98da1e1138e8c3c + m_Parameters: [] + m_SendTarget: {fileID: 0} + m_EnableWetMix: 0 + m_Bypass: 0 +--- !u!243 &-1471001429421628056 +AudioMixerGroupController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: SFX + m_AudioMixer: {fileID: 24100000} + m_GroupID: 2aa1f6fadafbeca48a43840258469ae5 + m_Children: [] + m_Volume: 27be8a879c26ddd4585dbedff31a33e3 + m_Pitch: f1ae2bd0e8fc34f4db264ffe53dc2ac0 + m_Send: 00000000000000000000000000000000 + m_Effects: + - {fileID: -5864968286415327506} + m_UserColorIndex: 0 + m_Mute: 0 + m_Solo: 0 + m_BypassEffects: 0 +--- !u!241 &24100000 +AudioMixerController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: FOR AI GAME + m_OutputGroup: {fileID: 0} + m_MasterGroup: {fileID: 24300002} + m_Snapshots: + - {fileID: 24500006} + m_StartSnapshot: {fileID: 24500006} + m_SuspendThreshold: -80 + m_EnableSuspend: 1 + m_UpdateMode: 0 + m_ExposedParameters: [] + m_AudioMixerGroupViews: + - guids: + - f31c09d88c9703d4aae5faeb43b19082 + - 7008ba24a90a9bb459f22ae0c4c63e63 + - 2aa1f6fadafbeca48a43840258469ae5 + - 5c9d887a047f7b64d8f69645f36efa66 + name: View + m_CurrentViewIndex: 0 + m_TargetSnapshot: {fileID: 24500006} +--- !u!243 &24300002 +AudioMixerGroupController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Master + m_AudioMixer: {fileID: 24100000} + m_GroupID: f31c09d88c9703d4aae5faeb43b19082 + m_Children: + - {fileID: 1981398924599129215} + - {fileID: -1471001429421628056} + - {fileID: 7865516719922154317} + m_Volume: 9d220dd29b931844f8bf0cabe811b681 + m_Pitch: 1d85ba48dbcf4e44dac924de1c3b9082 + m_Send: 00000000000000000000000000000000 + m_Effects: + - {fileID: 24400004} + m_UserColorIndex: 0 + m_Mute: 0 + m_Solo: 0 + m_BypassEffects: 0 +--- !u!244 &24400004 +AudioMixerEffectController: + m_ObjectHideFlags: 3 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_EffectID: efaabada50079884192e696d3007f502 + m_EffectName: Attenuation + m_MixLevel: 8bfe36ac8977f8e49895dc4ddbadc83d + m_Parameters: [] + m_SendTarget: {fileID: 0} + m_EnableWetMix: 0 + m_Bypass: 0 +--- !u!245 &24500006 +AudioMixerSnapshotController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Snapshot + m_AudioMixer: {fileID: 24100000} + m_SnapshotID: a078347f22c3bce4aaceb48b3ae72eef + m_FloatValues: {} + m_TransitionOverrides: {} +--- !u!243 &1981398924599129215 +AudioMixerGroupController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Music + m_AudioMixer: {fileID: 24100000} + m_GroupID: 7008ba24a90a9bb459f22ae0c4c63e63 + m_Children: [] + m_Volume: bf1d95a6c9abe924fa3d98795325cc1b + m_Pitch: 12f824d2417bc324ca4e4ac7552606ce + m_Send: 00000000000000000000000000000000 + m_Effects: + - {fileID: -8884289898024163737} + m_UserColorIndex: 0 + m_Mute: 0 + m_Solo: 0 + m_BypassEffects: 0 +--- !u!243 &7865516719922154317 +AudioMixerGroupController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: UI + m_AudioMixer: {fileID: 24100000} + m_GroupID: 5c9d887a047f7b64d8f69645f36efa66 + m_Children: [] + m_Volume: 6b8a96f21df846741a0036e2a182ec15 + m_Pitch: a2bd369043e3009409563b89524f9ad1 + m_Send: 00000000000000000000000000000000 + m_Effects: + - {fileID: -4762669937127778309} + m_UserColorIndex: 0 + m_Mute: 0 + m_Solo: 0 + m_BypassEffects: 0 diff --git a/Assets/Audio/Basic Locomotion/Mixers/FOR AI GAME.mixer.meta b/Assets/Audio/Basic Locomotion/Mixers/FOR AI GAME.mixer.meta new file mode 100644 index 00000000..598cd484 --- /dev/null +++ b/Assets/Audio/Basic Locomotion/Mixers/FOR AI GAME.mixer.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a622ceda579315442bd0a82d6626974c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 24100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Audio/For AI GAME.meta b/Assets/Audio/For AI GAME.meta new file mode 100644 index 00000000..28408038 --- /dev/null +++ b/Assets/Audio/For AI GAME.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7caf670b1e3eb404199b8d38786988e4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Audio/For AI GAME/Win.mp3 b/Assets/Audio/For AI GAME/Win.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..2485964f601352ded27b8389a38f8cbe66c490c3 GIT binary patch literal 67709 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 T$ literal 0 HcmV?d00001 diff --git a/Assets/Audio/For AI GAME/alert.mp3.meta b/Assets/Audio/For AI GAME/alert.mp3.meta new file mode 100644 index 00000000..c2aa7119 --- /dev/null +++ b/Assets/Audio/For AI GAME/alert.mp3.meta @@ -0,0 +1,23 @@ +fileFormatVersion: 2 +guid: d5f9671eecb70364f8282999c81d8295 +AudioImporter: + externalObjects: {} + serializedVersion: 8 + 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/Audio/For AI GAME/gun shot.mp3 b/Assets/Audio/For AI GAME/gun shot.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..ccf5f82596bcfd3a784474af78d11e1ed0b274fe GIT binary patch literal 35328 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 literal 0 HcmV?d00001 diff --git a/Assets/Audio/For AI GAME/gun shot.mp3.meta b/Assets/Audio/For AI GAME/gun shot.mp3.meta new file mode 100644 index 00000000..9ffa74a8 --- /dev/null +++ b/Assets/Audio/For AI GAME/gun shot.mp3.meta @@ -0,0 +1,23 @@ +fileFormatVersion: 2 +guid: de0b7f47746d51f48b733b64b307540e +AudioImporter: + externalObjects: {} + serializedVersion: 8 + 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/Audio/For AI GAME/hit.mp3 b/Assets/Audio/For AI GAME/hit.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..3086081ab960b92d6bc99165e6143341fb169bb5 GIT binary patch literal 23405 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�NnE25fg5m!zuw<_%m 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�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 z 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 %#ouPJf)(PxB?`qx&}LQDO5p*>X4H(p8$>8?C? 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 literal 0 HcmV?d00001 diff --git a/Assets/Audio/For AI GAME/warning.mp3.meta b/Assets/Audio/For AI GAME/warning.mp3.meta new file mode 100644 index 00000000..0e64f271 --- /dev/null +++ b/Assets/Audio/For AI GAME/warning.mp3.meta @@ -0,0 +1,23 @@ +fileFormatVersion: 2 +guid: 32b49cf6b9e2e8e408663785554c3e75 +AudioImporter: + externalObjects: {} + serializedVersion: 8 + 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/Audio/Sound Track/steam archement sound.mp3 b/Assets/Audio/Sound Track/steam archement sound.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..ca309c869b8cafb644a521a14608e89159350910 GIT binary patch literal 18432 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 Ywmv${(`Ckn-PWP-R317CMqmg403&Vc#Q*>R literal 0 HcmV?d00001 diff --git a/Assets/Audio/Sound Track/steam archement sound.mp3.meta b/Assets/Audio/Sound Track/steam archement sound.mp3.meta new file mode 100644 index 00000000..9aa922ba --- /dev/null +++ b/Assets/Audio/Sound Track/steam archement sound.mp3.meta @@ -0,0 +1,23 @@ +fileFormatVersion: 2 +guid: 3ce04f501a2f4a74c8667176a01c655b +AudioImporter: + externalObjects: {} + serializedVersion: 8 + 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/Models/Character/Characters/Invector@V-Bot/Materials/base-1.mat b/Assets/Models/Character/Characters/Invector@V-Bot/Materials/base-1.mat index b56fa4c3..51be7ac8 100644 --- a/Assets/Models/Character/Characters/Invector@V-Bot/Materials/base-1.mat +++ b/Assets/Models/Character/Characters/Invector@V-Bot/Materials/base-1.mat @@ -42,6 +42,7 @@ Material: disabledShaderPasses: - MOTIONVECTORS - DepthOnly + - SHADOWCASTER m_LockedProperties: m_SavedProperties: serializedVersion: 3 @@ -140,7 +141,7 @@ Material: - _ZWrite: 0 m_Colors: - _BaseColor: {r: 0.80784315, g: 0.25490195, b: 0.25490195, a: 1} - - _Color: {r: 1, g: 1, b: 1, a: 1} + - _Color: {r: 0.80784315, g: 0.25490192, b: 0.25490192, a: 1} - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} m_BuildTextureStacks: [] diff --git a/Assets/Models/Character/Characters/Invector@V-Bot/Materials/base-2.mat b/Assets/Models/Character/Characters/Invector@V-Bot/Materials/base-2.mat index 5fb8a218..c4a067df 100644 --- a/Assets/Models/Character/Characters/Invector@V-Bot/Materials/base-2.mat +++ b/Assets/Models/Character/Characters/Invector@V-Bot/Materials/base-2.mat @@ -40,6 +40,7 @@ Material: disabledShaderPasses: - MOTIONVECTORS - DepthOnly + - SHADOWCASTER m_LockedProperties: m_SavedProperties: serializedVersion: 3 @@ -138,7 +139,7 @@ Material: - _ZWrite: 0 m_Colors: - _BaseColor: {r: 0.0080758305, g: 0.0080758305, b: 0.0080758305, a: 1} - - _Color: {r: 1, g: 1, b: 1, a: 1} + - _Color: {r: 0.0080758305, g: 0.0080758305, b: 0.0080758305, a: 1} - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} m_BuildTextureStacks: [] diff --git a/Assets/Models/Character/Characters/Invector@V-Bot/Materials/chrome.mat b/Assets/Models/Character/Characters/Invector@V-Bot/Materials/chrome.mat index bbde2852..e518ae45 100644 --- a/Assets/Models/Character/Characters/Invector@V-Bot/Materials/chrome.mat +++ b/Assets/Models/Character/Characters/Invector@V-Bot/Materials/chrome.mat @@ -26,6 +26,7 @@ Material: disabledShaderPasses: - MOTIONVECTORS - DepthOnly + - SHADOWCASTER m_LockedProperties: m_SavedProperties: serializedVersion: 3 diff --git a/Assets/Models/Character/Characters/Invector@V-Bot/Materials/metal.mat b/Assets/Models/Character/Characters/Invector@V-Bot/Materials/metal.mat index 83eb8f75..ccf23eb6 100644 --- a/Assets/Models/Character/Characters/Invector@V-Bot/Materials/metal.mat +++ b/Assets/Models/Character/Characters/Invector@V-Bot/Materials/metal.mat @@ -26,6 +26,7 @@ Material: disabledShaderPasses: - MOTIONVECTORS - DepthOnly + - SHADOWCASTER m_LockedProperties: m_SavedProperties: serializedVersion: 3 @@ -124,7 +125,7 @@ Material: - _ZWrite: 0 m_Colors: - _BaseColor: {r: 0, g: 0, b: 0, a: 1} - - _Color: {r: 1, g: 1, b: 1, a: 1} + - _Color: {r: 0, g: 0, b: 0, a: 1} - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} m_BuildTextureStacks: [] diff --git a/Assets/Models/Character/Characters/Invector@V-Bot/Materials/rubber.mat b/Assets/Models/Character/Characters/Invector@V-Bot/Materials/rubber.mat index 1eefb020..eb5f31cd 100644 --- a/Assets/Models/Character/Characters/Invector@V-Bot/Materials/rubber.mat +++ b/Assets/Models/Character/Characters/Invector@V-Bot/Materials/rubber.mat @@ -26,6 +26,7 @@ Material: disabledShaderPasses: - MOTIONVECTORS - DepthOnly + - SHADOWCASTER m_LockedProperties: m_SavedProperties: serializedVersion: 3 @@ -124,7 +125,7 @@ Material: - _ZWrite: 0 m_Colors: - _BaseColor: {r: 0.035217915, g: 0.035217915, b: 0.035217915, a: 1} - - _Color: {r: 1, g: 1, b: 1, a: 1} + - _Color: {r: 0.035217915, g: 0.035217915, b: 0.035217915, a: 1} - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} m_BuildTextureStacks: [] diff --git a/Assets/Scripts/Player/ArcherySystem/Prefabs/ArrowLifeSettings.asset b/Assets/Presets/ArrowLifeSettings.asset similarity index 100% rename from Assets/Scripts/Player/ArcherySystem/Prefabs/ArrowLifeSettings.asset rename to Assets/Presets/ArrowLifeSettings.asset diff --git a/Assets/Scripts/Player/ArcherySystem/Prefabs/ArrowLifeSettings.asset.meta b/Assets/Presets/ArrowLifeSettings.asset.meta similarity index 100% rename from Assets/Scripts/Player/ArcherySystem/Prefabs/ArrowLifeSettings.asset.meta rename to Assets/Presets/ArrowLifeSettings.asset.meta diff --git a/Assets/Scripts/Player/CharacterCreator/CameraStates.meta b/Assets/Presets/CameraStates.meta similarity index 100% rename from Assets/Scripts/Player/CharacterCreator/CameraStates.meta rename to Assets/Presets/CameraStates.meta diff --git a/Assets/Scripts/Player/CharacterCreator/CameraStates/vBasicLocomotiont@CameraState.asset b/Assets/Presets/CameraStates/vBasicLocomotiont@CameraState.asset similarity index 100% rename from Assets/Scripts/Player/CharacterCreator/CameraStates/vBasicLocomotiont@CameraState.asset rename to Assets/Presets/CameraStates/vBasicLocomotiont@CameraState.asset diff --git a/Assets/Scripts/Player/CharacterCreator/CameraStates/vBasicLocomotiont@CameraState.asset.meta b/Assets/Presets/CameraStates/vBasicLocomotiont@CameraState.asset.meta similarity index 100% rename from Assets/Scripts/Player/CharacterCreator/CameraStates/vBasicLocomotiont@CameraState.asset.meta rename to Assets/Presets/CameraStates/vBasicLocomotiont@CameraState.asset.meta diff --git a/Assets/Scripts/Player/CharacterCreator/CameraStates/vFastShooter@CameraState.asset b/Assets/Presets/CameraStates/vFastShooter@CameraState.asset similarity index 100% rename from Assets/Scripts/Player/CharacterCreator/CameraStates/vFastShooter@CameraState.asset rename to Assets/Presets/CameraStates/vFastShooter@CameraState.asset diff --git a/Assets/Scripts/Player/CharacterCreator/CameraStates/vFastShooter@CameraState.asset.meta b/Assets/Presets/CameraStates/vFastShooter@CameraState.asset.meta similarity index 100% rename from Assets/Scripts/Player/CharacterCreator/CameraStates/vFastShooter@CameraState.asset.meta rename to Assets/Presets/CameraStates/vFastShooter@CameraState.asset.meta diff --git a/Assets/Scripts/Player/CharacterCreator/CameraStates/vMeleeCombat@CameraState.asset b/Assets/Presets/CameraStates/vMeleeCombat@CameraState.asset similarity index 100% rename from Assets/Scripts/Player/CharacterCreator/CameraStates/vMeleeCombat@CameraState.asset rename to Assets/Presets/CameraStates/vMeleeCombat@CameraState.asset diff --git a/Assets/Scripts/Player/CharacterCreator/CameraStates/vMeleeCombat@CameraState.asset.meta b/Assets/Presets/CameraStates/vMeleeCombat@CameraState.asset.meta similarity index 100% rename from Assets/Scripts/Player/CharacterCreator/CameraStates/vMeleeCombat@CameraState.asset.meta rename to Assets/Presets/CameraStates/vMeleeCombat@CameraState.asset.meta diff --git a/Assets/Scripts/Player/CharacterCreator/CameraStates/vShooterMelee@CameraState.asset b/Assets/Presets/CameraStates/vShooterMelee@CameraState.asset similarity index 100% rename from Assets/Scripts/Player/CharacterCreator/CameraStates/vShooterMelee@CameraState.asset rename to Assets/Presets/CameraStates/vShooterMelee@CameraState.asset diff --git a/Assets/Scripts/Player/CharacterCreator/CameraStates/vShooterMelee@CameraState.asset.meta b/Assets/Presets/CameraStates/vShooterMelee@CameraState.asset.meta similarity index 100% rename from Assets/Scripts/Player/CharacterCreator/CameraStates/vShooterMelee@CameraState.asset.meta rename to Assets/Presets/CameraStates/vShooterMelee@CameraState.asset.meta diff --git a/Assets/Scripts/Player/CharacterCreator/CameraStates/vShooterOnly@CameraState.asset b/Assets/Presets/CameraStates/vShooterOnly@CameraState.asset similarity index 100% rename from Assets/Scripts/Player/CharacterCreator/CameraStates/vShooterOnly@CameraState.asset rename to Assets/Presets/CameraStates/vShooterOnly@CameraState.asset diff --git a/Assets/Scripts/Player/CharacterCreator/CameraStates/vShooterOnly@CameraState.asset.meta b/Assets/Presets/CameraStates/vShooterOnly@CameraState.asset.meta similarity index 100% rename from Assets/Scripts/Player/CharacterCreator/CameraStates/vShooterOnly@CameraState.asset.meta rename to Assets/Presets/CameraStates/vShooterOnly@CameraState.asset.meta diff --git a/Assets/Presets/FOR AI GAME.asset b/Assets/Presets/FOR AI GAME.asset new file mode 100644 index 00000000..9c51b164 --- /dev/null +++ b/Assets/Presets/FOR AI GAME.asset @@ -0,0 +1,60 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + 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: e54b0675598e3f946be47398a01b918a, type: 3} + m_Name: FOR AI GAME + m_EditorClassIdentifier: Assembly-CSharp::Hallucinate.Audio.AudioDatabase + samples: + - Name: UI_Win + Clip: {fileID: 8300000, guid: fecdee2673ce2f542a3db1a8b56d1571, type: 3} + DefaultVolume: 1 + DefaultPitch: 1 + MixerGroup: {fileID: 0} + - Name: UI_Warning + Clip: {fileID: 8300000, guid: 32b49cf6b9e2e8e408663785554c3e75, type: 3} + DefaultVolume: 1 + DefaultPitch: 1 + MixerGroup: {fileID: 0} + - Name: UI_Click + Clip: {fileID: 8300000, guid: 30f85fcee050492448db7f91217910b3, type: 3} + DefaultVolume: 1 + DefaultPitch: 1 + MixerGroup: {fileID: 0} + - Name: Item_Pickup + Clip: {fileID: 8300000, guid: b1ae905972eed154497f5454b22ba711, type: 3} + DefaultVolume: 1 + DefaultPitch: 1 + MixerGroup: {fileID: 0} + - Name: Enemy_Alert + Clip: {fileID: 8300000, guid: d5f9671eecb70364f8282999c81d8295, type: 3} + DefaultVolume: 1 + DefaultPitch: 1 + MixerGroup: {fileID: 0} + - Name: Enemy_Shoot + Clip: {fileID: 8300000, guid: de0b7f47746d51f48b733b64b307540e, type: 3} + DefaultVolume: 1 + DefaultPitch: 1 + MixerGroup: {fileID: 0} + - Name: Laser_Hit + Clip: {fileID: 8300000, guid: e14cb014b8c41bf4a98768f2e4b4c1d7, type: 3} + DefaultVolume: 1 + DefaultPitch: 1 + MixerGroup: {fileID: 0} + - Name: NPC_Interact + Clip: {fileID: 8300000, guid: 6d36adcf33e186c4cbe64a4c149e138f, type: 3} + DefaultVolume: 1 + DefaultPitch: 1 + MixerGroup: {fileID: 0} + - Name: NPC_Response + Clip: {fileID: 8300000, guid: 7c266b12aa7ed1a49bf7ea0889d32302, type: 3} + DefaultVolume: 1 + DefaultPitch: 1 + MixerGroup: {fileID: 0} diff --git a/Assets/Presets/FOR AI GAME.asset.meta b/Assets/Presets/FOR AI GAME.asset.meta new file mode 100644 index 00000000..eed7064d --- /dev/null +++ b/Assets/Presets/FOR AI GAME.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a8afc185646130b409f5826ef0670577 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/Cho môn AI/Only AI.unity b/Assets/Scenes/Cho môn AI/Only AI.unity index a71d4d2a..e20229a1 100644 --- a/Assets/Scenes/Cho môn AI/Only AI.unity +++ b/Assets/Scenes/Cho môn AI/Only AI.unity @@ -42114,7 +42114,7 @@ MeshCollider: serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 - m_Mesh: {fileID: 397969231} + m_Mesh: {fileID: 450248321} --- !u!33 &302804014 MeshFilter: m_ObjectHideFlags: 10 @@ -134492,6 +134492,53 @@ Transform: m_Children: [] m_Father: {fileID: 333057066} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1158761164 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1158761166} + - component: {fileID: 1158761165} + m_Layer: 0 + m_Name: Audio Manager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1158761165 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1158761164} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 35bf1b4a2b113c048874a8a4a3ea18b3, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::Hallucinate.Audio.AudioManager + database: {fileID: 11400000, guid: a8afc185646130b409f5826ef0670577, type: 2} + poolSize: 20 + defaultGroup: {fileID: 24300002, guid: a622ceda579315442bd0a82d6626974c, type: 2} +--- !u!4 &1158761166 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1158761164} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2.42363, y: 10.37505, z: 16.23287} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!43 &1167863508 Mesh: m_ObjectHideFlags: 0 @@ -150382,3 +150429,4 @@ SceneRoots: - {fileID: 570772201} - {fileID: 1645920186} - {fileID: 640822033} + - {fileID: 1158761166}