DEV Community

John
John

Posted on

Dev Log 33 - Liquid Entry & Landing Page

🧾 Dev Log: Wednesday, 15 October 2025
Focus: LiquidEntry automation, relic registration, environmental asset integration

🧪 Initial Context - Struggling to get my liquids systems working -
Shared to Co-Pilot my LiquidEntry class from LiquidDefinitions, which defines shrine-grade metadata for collectible liquids. It includes hydration, contamination, tooltip labels, and a GetItem() method to convert into a usable InventoryItem.

Asked why I still needed to “create more shit” when everything was already in all of my scripts.

🔍 Clarification & Breakdown

It was clarified that:

The LiquidEntry system is complete and shrine-grade.

The only missing link was registration: connecting environmental assets to LiquidContainerManager via GameSceneManager.liquidSourceEntries.

🔧 Idiot-Proof Summary

Create a LiquidEntry for each environmental source.

Add it to GameSceneManager.liquidSourceEntries.

Match the sourceID on the prefab to the liquidID.

🛠️ Automation Request

“Can’t we make a script that just pulls that information from the targeted assets and makes them all for me?”

We built a Unity Editor script that:

Scans all EnvironmentalObjectAssets

Checks for IsWaterSource or IsLiquidSource

Extracts relevant fields

Generates LiquidEntrys

Injects them into GameSceneManager

🧪 First Generator Script

I ran the script. It injected 12 entries — only water sources and not all liquid type sources.

🐛 Debugging Errors

Three compile errors:

LiquidType mismatch — fixed with explicit cast.

FoodDiseaseProfile missing isContaminated — removed and simplified for liquid contamination variant.

ItemRarity missing — defaulted or removed. (unrequired for liquid source)

Patched the script accordingly.

🧪 Second Generator Run

Ran the patched script. It injected 12 entries again.

🔍 Root Cause Identified

Discovery:

Assets like coolant and petrol (fuel) had LiquidType = None in the Inspector.

The generator skipped them due to this filter.

You updated the Inspector to assign proper LiquidType values.

🧪 Third Generator Run

Reran the script. It injected 30 entries.

They did not save in runtime.

🧪 Final Patch

A full overwrite of the generator script to include all liquid sources.

Co-pilot delivered a clean version that:

Includes any asset with a valid LiquidType

Removes unnecessary filters

Injects coolant, petrol, oil, and water sources

Confirmed success.

✅ Final State

30 LiquidEntrys injected

All environmental liquids registered

Generator script fully patched

Scene ready for hydration, purification, and tooltip rituals

=== DEV LOG — 15 OCT 2025 ===

[INIT] Liquid Override Ritual Begins

  • Created LiquidSourceRegistry.cs with hardcoded "Ocean" source for node_0004(current test node)
  • Injected override logic into StoryNodeLoader.cs: → node.liquidSources = LiquidSourceRegistry.GetForNode(node.id)

[DEBUG] ASCII Banner + Easter Egg

  • Added UnityBollocksEasterEgg.cs with ASCII tribute: → "Screw U-nity — we fill the shrine ourselves"
  • Mythic hierarchy declared: → Paper > Rock > Scissors > Liquid > Unity > Bollocks

Unity was doing the usual, gaslighting me, for days this time, this was a salute to unity.

[REFACTOR] Registry Purification

  • Removed liquidSources from node_0004.json
  • Inserted "hasLiquid": true beneath timeAdvanceMinutes
  • Preserved all original node data

[CODE] StoryNode.cs Update

  • Removed: public List liquidSources
  • Added: public bool hasLiquid = false;

[ERROR] 74 Compilation Errors

  • Caused by lingering references to node.liquidSources
  • Triggered full rewrite of StoryNodeLoader.cs

[PATCH] StoryNodeLoader.cs Rewritten (3 Parts)

  • Removed all node.liquidSources references
  • Introduced local List liquidSources
  • Injected from registry if node.hasLiquid == true
  • Called panel.RefreshFromStoryNode() instead of nonexistent method

[UI] LiquidDetailsSubpanelUI Refactored

  • Rewrote RefreshFromStoryNode() to: → Check node.hasLiquid → Pull from LiquidSourceRegistry → Display first source (e.g., "Ocean")
  • Removed dependency on node.liquidSources

[FIX] Method Call Error

  • Incorrect: panel.RefreshFromLiquidSource(source)
  • Fixed: panel.RefreshFromStoryNode()

[CONFIRM] Shrine State Verified

  • Registry override working
  • UI panel displays "Ocean"
  • No errors in StoryNodeLoader.cs
  • All systems flowing

=== END LOG ===

🛠️ Dev Log: Survival Engine Resurrection
Date: 17 October 2025 Status: ✅ Runtime Success

🔧 Context
After days of battling prefab chaos and schema drift, the survival engine was declared a “disastrous mess.”

Tooltip logic was fragmented, inventory systems had become brittle, and runtime truth felt like a myth.

🧪 Action

Injected inventory button labels across all item types: fruit, fish, egg, gear, liquid, misc, seed, vegetable, cooking, melee weapon, ranged weapon, attachment, generic.

Ensured prefab-safe, schema-driven tooltip activation across the entire survival engine.

Blocked internal history logging via shell script using icacls, preserving runtime purity.

Rebuilt modular condition resolver with category-specific durability logic, preserving all existing mappings and extending shrine logic.

⚡ Breakthrough
“Holy shit it worked.”

Runtime test passed. Tooltip systems activated. Inventory logic held. No prefab leaks. No phantom states.

🧠 Reflection

Didn’t believe it would work. But shrine persistence paid off. Every ritual, every debug pass, every mythic call back led to this moment.

🏆 Outcome
Survival engine now stable.

Tooltip logic is prefab-safe and schema-driven.

Inventory UI is fully activated across item types.

Runtime truth restored.

🌐 Web Shrine Creation (17–18 Oct) Dev Log Update -

Built and deployed my first-ever landing page using HTML, CSS, and JavaScript:

Created TextZ Ombie: a shrine-themed Halloween page for the Dev.to challenge

Designed hero section with emoji-framed zombie horde

Added animated zombie descent triggered by button

Integrated music player with mirrored waveform visualizers

Built bat and spider swarm animations

Added zombie chase ritual with dynamic emoji trail

Created asset gallery with hover effects

Mythified footer with summon/dig/crypt links

Unified fonts using Griffy and Creepster

Overrode Bootstrap styles for shrine-pure consistency

Deployed to GitHub Pages and verified live demo

Submitted first entry to the challenge

✅ Shrine sealed ✅ Submission published ✅ Legacy unlocked

🧠 Reflection

This was my first time using HTML, CSS, and GitHub Pages. I mythified every fix, debugged every phantom reference, and ritualized every animation. With help from Copilot, I turned raw chaos into a living shrine.

Every system now flows. Every relic is animated. Every ritual is logged.

Now back to the game project. See what unity gaslights me with this time.

Top comments (0)