Czechdungeon Czech Dungeon 1 < 2026 Release >
// PhantomElixir.cs
using UnityEngine;
[CreateAssetMenu(menuName = "Items/Phantom Elixir")]
public class PhantomElixir : ScriptableObject, IConsumable
public float invisibilityDuration = 15f;
public float runeVisionDuration = 30f;
public void Consume(PlayerController player)
player.StartCoroutine(ApplyEffects(player));
private System.Collections.IEnumerator ApplyEffects(PlayerController player)
// 1️⃣ Invisibility
player.SetInvisible(true);
yield return new WaitForSeconds(invisibilityDuration);
player.SetInvisible(false);
// 2️⃣ Rune Vision (still active after invisibility ends)
player.runeVisionTimer = runeVisionDuration;
player.EnableRuneVision(true);
yield return new WaitForSeconds(runeVisionDuration);
player.EnableRuneVision(false);
Make sure your PlayerController implements SetInvisible(bool) (e.g., toggling the renderer’s layer to “InvisibleToAI”) and EnableRuneVision(bool) (e.g., swapping a post‑process material that highlights runes).
// JournalManager.cs (add a new entry method)
public void AddEntry(string title, string body, Sprite illustration = null)
// Your existing UI logic…
// In AlchemyPuzzle.cs, after puzzle solved:
private void SpawnElixir()
// … existing spawn code …
JournalManager.Instance.AddEntry(
"The Alchemist’s Secret",
"The hidden lab belonged to Master Radek, a 16th‑century alchemist…\n" +
"His Phantom Elixir grants temporary invisibility and reveals the unseen runes.",
Resources.Load<Sprite>("Journal/AlchemistSketch"));
// Unlock achievement
AchievementManager.Instance.Unlock("AlchemistApprentice");
Collect all herbs in the level (they appear as glowing blue clusters on floor tiles). czechdungeon czech dungeon 1