Releases: Unity-Environmental-University/Horticulture-Scripts
Release list
v0.3.23-pre
Version 0.3.23
🧩 Modloader Enhancements
- Improved load/unload safety:
- Added safety mechanisms for mod loading and unloading.
- Modular treatment system:
- Implemented affliction-specific effectiveness for treatment applications.
- Added mod card registration from JSON and AssetBundles, including visuals handling.
🌱 Gameplay & Logic
- Refined plant spread logic:
- Reworked to randomly select afflictions with circular safety.
- Enhanced turn-based effect handling:
- Improved
SpotDataHolderfor more effective turn-based effects. - Added
ClearLocationCardByExpirymethod inPlacedCardHolder.
- Improved
- Updated notification mechanisms:
- Refactored in
PlacedCardHolderfor better error handling and efficiency.
- Refactored in
🎨 Visuals & Assets
- Prefab updates:
- Added new animations and rigs for plants, including wave animation for players.
- Updated textures for peppers, coleus, and mums.
- Fixed various prefab issues and adjusted greenhouse materials.
- Scene enhancements:
- Integrated player hands animation for opening cutscene.
- Fixed bugs causing shop visibility issues and level progression failures.
🛠️ Systems & Code Architecture
- Refactored
SpotDataHolder:- Improved null-checks and plant caching efficiency.
- Streamlined effect handling comments and temporary-effect logic.
- Added icon sizing helper:
- Implemented child-layout routine in
Plant UI manager.
- Implemented child-layout routine in
🗂️ Project Structure
- Version updates:
- Updated project version to .
- Namespace consistency:
- Renamed
ModLoadertoModLoadingacross the project for clarity.
- Renamed
IOS: For now, You can Join the Public IOS TestFlight
Full Changelog: v0.3.22-pre...v0.3.23-pre
v0.3.22-pre
Version 0.3.22
🧩 Treatment & Efficacy Systems
- Enhanced treatment efficacy management:
- Added dynamic treatment discovery and efficacy support
- Introduced
Efficacyfield to treatment data - Added treatment efficacy calculation with debug output
- Implemented clamping for treatment efficacy values (0-100)
- Safely handle treatment efficacy lookups with fallback to default values
🧠 Gameplay & Logic
- Code cleanup and refactoring:
- Removed duplicate
TickDayandGetCardmethods fromModAffliction - Streamlined prefab handling in
PlantHealthBarHandler - Removed redundant infect/egg reducers in
PlantController - Refactored unit tests for cleaner construction
- Removed duplicate
🎨 Visuals & Assets
- Scene updates:
- Re-added
RelationshipManagerback to the scene - Updated workflow for improved asset management
- Re-added
🧪 Systems & Code Architecture
- General improvements:
- Cleaned up temporary object creation logic
- Renamed
relationalEfficaciestorelationalEfficacysinTreatmentEfficacyHandler - Removed unnecessary debug statements for better performance
📜 Project Structure
- Branch updates:
- Updated Josey's branch with the latest changes
- General project maintenance and ignore file updates
IOS: For now, You can Join the Public IOS TestFlight
Full Changelog: v0.3.21-pre...v0.3.22-pre
v0.3.21-pre
Version 0.3.21
🛠️ Modloader Implementation
- Improved load/unload safety:
- Added safety measures to the modloader for better stability.
- Modular treatment system:
- Implemented affliction-specific effectiveness for treatment applications.
- Enhanced treatment application logic for improved gameplay.
🌱 Gameplay & Logic
- Refined plant mechanics:
- Reworked spread logic for plants to randomly select afflictions with safety checks.
- Enhanced
SpotDataHolderfor turn-based effects and improved error handling. - Added card type restrictions in
PlacedCardHolderwith verification tests.
- Animation improvements:
- Added player hands animation for opening cutscene.
- Integrated UI animation control methods into
TurnControllerfor smoother gameplay.
🎨 Visuals & Assets
- Prefab updates:
- Updated and fixed various prefabs, including
coleusandcucumber. - Added new rigs and animations for plants, including wave animations for players.
- Replaced models for peppers, coleus, and mums; added texture files for these plants.
- Updated and fixed various prefabs, including
- Material adjustments:
- Adjusted greenhouse materials and plant pot designs.
⚙️ Systems & Code Architecture
- Refactoring and optimizations:
- Refactored
SpotDataHolderfor cleaner null-checks and efficient plant caching. - Improved notification mechanisms in
PlacedCardHolder. - Renamed
ModLoadernamespace toModLoadingfor consistency across the project.
- Refactored
📜 Project Structure
- Version updates:
- Updated project version to reflect recent changes.
- Metadata and asset fixes:
- Added narration and fixed various asset-related issues.
Merged PRs
- Introduce ModLoader & Refactor and enhance modular treatment system by @DonovanMontoya in #5
IOS: For now, You can Join the Public IOS TestFlight
Full Changelog: v0.3.20-pre...v0.3.21-pre
v0.3.20-pre
Version 0.3.20
🧩 Stickers & Status Systems
- Expanded sticker infrastructure:
- Added
StickerPersistenceTestto verify sticker state is retained across turns and game objects - Fixed early implementation issues related to sticker cloning and application
- Added
- Integrated infection/egg level tracking into treatments:
- Treatments now support partial curing by setting infect/egg levels
- Extended
IAfflictionCardinterface withBaseInfectLevelandBaseEggLevelproperties - Introduced
InfectLevels.csto unify infection level types across systems
🧠 Gameplay & Logic
- Refactored treatment application logic:
- Added reduction methods for infection and egg levels
- Optimized affliction handling in
PlantController - Improved debug and UI update consistency
PlantManagerlist renamed tocachedPlantswith improved null-safetyRetainedCardHolder,Click3D, andDeckManagernow clean up tween animations on destroy usingSetLink
🎨 Visuals & Assets
- Added new plant prefab: Cucumber
- Includes first-pass rig and idle animation
- New textures and materials included
- Updated prefab flag positioning
- Updated existing prefabs to better represent plant health (e.g., heart indicators)
- Updated aphid and general plant text assets
🧪 Systems & Code Architecture
- Added
IPlantCardandIAfflictionCardinterfaces to extendICardlogic cleanly - Updated card cloning logic to support new infection properties
- Removed obsolete infect/egg UI elements
- Refactored naming conventions across infection-related classes
- Added documentation to
PlantControllerfor easier onboarding and system understanding
🧪 Project Structure
- Upgraded Unity to 6000.2.0f1
- Updated project version to 0.3.20
IOS: For now, You can Join the Public IOS TestFlight
Full Changelog: v0.3.19-pre...v0.3.20-pre
v0.3.19-pre
Version 0.3.19
🧠 Gameplay & Logic
- Tutorial refinements:
- Converted tutorial money goal to a class variable
- Made tutorial decks non-static to prevent persistence
- Advanced tutorial turn via
EndRound(advanceTutorial: ...)to avoid accidental skips - Tracked tutorial completion and reset
currentRoundpost-tutorial - Introduced a tutorial turn count constant and gradual card introduction
- Round flow improvements:
- End rounds early if all plants are healthy or have zero value
- Improved affliction spread condition checks
- Retained card handling:
- Added locking/unlocking, selection animation, and safer return logic
- Strengthened null checks and visual restoration when retained cards change
- Balance/content updates:
- Added Spider Mites and Fungus Gnats afflictions and cards
- Added Spinosad and Imidacloprid treatments and cards; updated values/descriptions
- Renamed NeemOil to HorticulturalOil across classes
🎬 Cinematics & Animation
- Cinematic system:
- Added
CinematicDirectorwithPlayScene, timeline control, and skip support - Triggered aphids cinematic during tutorial at the correct time
- Added
postAphidsTimelineand integrated withCardGameMaster
- Added
- Robot sequencing:
- Integrated
RobotCardGameSequencerand improved look-target handling - Centralized sequencing enable/disable and PlayerPrefs usage
- Integrated
- Card/sticker animation:
- Implemented animated card display and selection (DOTween)
- Kept hover animations accurate via
Click3D.UpdateOriginalTransform
🎨 Visuals & UI
- Inspection and popup UX:
- Enabled plant inspection via
InspectFromClick+SiteDataFetcher PopUpControllersupports null images and pauses time during display
- Enabled plant inspection via
- Card/sticker presentation:
- Stickers: hover scaling, fan layout arrangement, and disabled clicks on applied stickers
- Switched card visuals to Materials; improved material handling
- Quality and camera:
- Mobile-focused quality settings UI; device-specific FOV handling
- Display mode/resolution dropdowns; safer initialization for mobile UI
🧪 Systems & Code Architecture
- Sticker system:
- Introduced
StickerDefinition,StickerView,ISticker,CopySticker,CopyStickerDefinition, andValueReducerSticker - Added selection toggling, application rules, and serialization/deserialization in
GameStateManager - Implemented
ModifyValuein card classes; cloned visuals to avoid state leaks
- Introduced
- Save/load and restoration:
- Implemented game state save/load for turn, score, deck, and plants
- Restored plants with preserved states; sequenced restoration; triggered shader updates post-restore
- Suppressed/cleared queued effects during deck restoration; refreshed action hand
- Deck/turn refactors:
- Extracted
ClearActionCardVisualsfor reuse - Returned
IEnumeratorfrom plant placement to avoid race conditions; yielded inTurnController - Cloned cards in
_plantHand(and other hands) to prevent unwanted persistence
- Extracted
- Input and interaction safety:
- Debounced placement clicks; prevented duplicate clicks and immediate pickups
- Centralized input module access via
CardGameMaster.Instance.uiInputModule
- Audio and sequencing:
- Centralized audio handling; added robot narration audio source/clip
- Unified
PlayOneShotusage and player hand audio source
- Card/action plumbing:
- Refactored
PlantCardFunctionsand card interaction logic; improved error/null handling - Added interfaces/base class for Plant Location Cards
- Queued and played plant effects consistently via
PlantEffectRequest
- Refactored
🧪 Tests
- Added regression test for
CardViewdestruction - Added tests for
ValueReducerStickerbehaviors - Added Play Mode tests for
SiteDataFetcher; updated asmdef for TMP dependency - Improved test scaffolding in
TurnTester/DeckTester; silenced setup warnings
🧹 Codebase Cleanup
- Removed tutorial override that forced it on; pruned deprecated/unused logic
- Switched references to GUIDs; updated naming and comments
- Removed unused audio managers; streamlined coroutines and namespaces
- Added documentation for Audio, Cinematics, and Classes systems
🔧 Project & Infrastructure
- Updated
.gitignore - Added PlayerPrefs-backed toggles (e.g., tutorial enabled, sequencing)
- Minor README fixes and repo maintenance
IOS: For now, You can Join the Public IOS TestFlight
Full Changelog: https://github.com/Unity-Environmental-University/Horticulture-Scripts/commits/v0.3.19-pre
v0.3.18-pre
Version 0.3.18
🧠 Gameplay & Logic
- Tutorial system refinements:
- Extracted money goal into a class variable
- Tutorial decks made non-static to prevent data persistence
- Turn advancement logic now ensures users can't accidentally skip tutorial steps
- Resets
currentRoundafter tutorial completion
- Improved end-round logic: rounds now end early if all plants are healthy or have zero value
🎬 Cinematics & Animation
- Added new face animations: annoyed, confused, default, disappointed, excited, looking right, shocked, static
- Integrated animations for Lines 4, 6, 8, and 9
- Reworked Timeline animations for smoother transitions
- Polished facial positioning
- Imported and prepped cinematics for new voice lines
🎨 Visuals & UI
- Added support for closing inspection mode via UI
- Introduced the "Super Vanilla" font
- Updated
PopUpControllerto support null image states and pause game time during display
🧪 Systems & Code Architecture
- Refactored
DeckManager:- Added
ClearActionCardVisualsmethod for reuse - Cloned cards in
_afflictionHandand_actionHandto avoid persistence issues
- Added
- Refactored
TurnControllerfor improved affliction spread and tutorial logic - Updated
PopUpController,RobotController,MenuManagerfor better maintainability - Added null checks to improve test coverage
- Silenced test warnings in
DeckTesterandTurnTester
🧹 Codebase Cleanup
- Removed tutorial override that forced it on
- Cleaned up unused or deprecated logic
- Adjusted project settings and animation metadata for consistency
🧪 Project Structure
- Updated project version to 0.3.18
IOS: For now, You can Join the Public IOS TestFlight
Full Changelog: v0.3.17-pre...v0.3.18-pre
v0.3.17-pre
Version 0.3.17
🧠 Gameplay & Logic
-
Implemented a structured tutorial system:
- Tutorial now progresses over turns with dynamic card introductions
- Added tutorial decks and turn tracking
- Aphids cinematic now plays during tutorial, with logic adjustments in
TurnController
-
Refactored
isSequencingEnabledinto a PlayerPrefs-backed static value for global access, allowing easier configuration and consistent toggling of cinematic sequencing across all scenes -
Updated
ApplyQueuedTreatmentsto useisRetainedItemwhen clearing retained card slots
🎬 Cinematics & Animation
- Integrated new Florabot animations for Lines 1, 3, and 10
- Reimported robot rig and animations for better sync
- Tutorial cinematic (aphids-focused) now plays early in the game
- Camera target in
RobotCardGameSequencernow dynamically switches between the player androbotCameraObjto enhance cinematic framing and narrative pacing - Introduced
CutsceneUIController.csto manage input during cinematics - Added skip scene support to
CinematicDirector.cs
🎨 Visuals & UI
- Separated robot materials for better customization
- Integrated DoTween animation for retained card visuals
- Added fan animation for environmental polish
- Added
FlorabotNarrationvoice clips and triggers
🧪 Systems & Code Architecture
- Refactored
SiteDataFetcherto use async/await and added logging for fallback resolution (local → cache → remote) - Refactored
MenuManagerand added null-safety toCardGameMaster - Disabled iPadOS FOV adjustments temporarily due to inconsistent camera behavior; pending future review for device-specific tuning
🔉 Audio
- Bumped volume for
QueueSelectSFX - Added robot audio source and improved voice cue integration
🧹 Codebase Cleanup
- Removed redundant commas, bookmarks, and outdated logic in cinematic setup
- General cleanup across scene and script files
🧪 Project Structure
- Updated project version to 0.3.17
IOS: For now, You can Join the Public IOS TestFlight
Full Changelog: v0.3.16-pre...v0.3.17-pre
v0.3.16-pre
Version 0.3.16
🧠 Gameplay & Logic
- Improved sequence timing and control for the intro cinematic and UI transitions
- Adjusted game flow for smoother transitions between cinematic and gameplay phases
🎬 Cinematic & Narrative
- Polished intro cinematic: better sync across visuals, voice lines, and facial animations
- Sequencing logic refined for consistent playback across platforms
🎨 Visuals & UI
- Minor visual improvements to UI elements during and after cinematic playback
- Enhanced clarity of scene and menu transitions
🧪 Systems & Project Structure
- Upgraded project to Unity 6000.1.11f1
- Refactored scene structure and scripts to support improved cinematic and UI integration
🧹 Codebase Cleanup
- General cleanup of logic scripts and scene organization
🧪 Project Structure
- Updated project version to 0.3.16
IOS: For now, You can Join the Public IOS TestFlight
Full Changelog: v0.3.15-pre...v0.3.16-pre
v0.3.15-pre
Version 0.3.15
🎬 New Feature: Intro Cinematic
- Added a full intro cinematic using Unity Timeline and
RobotCardGameSequencer - Integrated UI animations, scripted sequences, and spatialized audio
- Sequencing controlled via
CinematicDirectorwith safety checks for flow control - Supports voice-over playback with
RobotVoiceControllerand synchronized facial animations
🧠 Gameplay & Logic
- Implemented card locking/unlocking systems in
RetainedCardHolderandTurnControllerto regulate card economy - Enhanced turn system with queued plant effects for more consistent feedback
🔊 Audio
- Introduced
SoundSystemMaster.csto centralize SFX and voice management - Added new sound effects, including pop and narration cues
- Integrated audio mixer to separate voice and sound effects
- Updated scripts to use
PlayOneShotfor clearer sound management
🎨 Visuals & UI
- Added expressive face texture maps for Florabot (
O_O,o_O) - Upgraded robot model to higher-poly version while retaining original rig
- Introduced UI animations for sequencing and interaction feedback
- New card sprites added
🧪 Systems & Code Architecture
- Refactored and cleaned up
TurnController,DeckManager,PlantController,CardClasses, and more - Replaced
AudioResourceusage with standardAudioClip - Added
PlantEffectRequestfor managing plant events - Improved null-safety, streamlined method signatures, and removed unused flags/properties
- Added
SiteDataFetcher.csand improved test hierarchy generation inDeckTester
🎮 Scenes
- Updated scenes to integrate new cinematic, visuals, and logic hooks
🧹 Codebase Cleanup
- Removed redundant code, cleaned up flags, and fixed abstract class misuse
- General readability and maintenance improvements
🧪 Project Structure
- Updated project version to 0.3.15
What's Changed
- Fix sound duplication in TurnController in #1
- Fix class name in MainScene in #2
- Fix typo in README in #3
Full Changelog: v0.3.14-pre...v0.3.15-pre
v0.3.14-pre
Version 0.3.14
🧠 Gameplay & Logic
- Improved redraw mechanics by ensuring cards aren't duplicated or lost
- Fixed scoring inconsistencies after card redraws
- Added Card storage features
🧪 Systems & Code Architecture
- Updated logic for detecting card states post-redraw
- Refactored portions of the redraw handling for better clarity and reliability
🎨 Visuals & UI
- Adjusted UI feedback to better reflect redraw costs and outcomes
🧹 Codebase Cleanup
- Minor internal cleanups related to turn flow and redraw tracking
Full Changelog: v0.3.13-pre...v0.3.14-pre