Helper Cats System
Deck-based helper system providing passive bonuses and triggered effects during gameplay.
Overview
Helper cats are collectible cards. During gameplay, they provide:
| Type | Behavior |
|---|---|
| Reactive | Trigger on specific conditions (cake combos) |
| Passive | Always-on multiplier bonuses |
| Active | Player-activated abilities with cooldowns |
Key Classes
HelperCatData
Location: Assets/_Game/Scripts/Data/HelperCatData.cs
ScriptableObject defining a helper cat:
public class HelperCatData : ScriptableObject{ public string catName; public HelperCatEffectType effectType; // Reactive, Passive, Active public List<CakeComboData> triggerCombos; public float scoreMultiplier; public int bonusPoints; public bool HasActiveAbility; // ...}HelperCatsManager
Location: Assets/_Game/Scripts/Managers/HelperCatsManager.cs
Runtime gameplay coordinator:
| Method | Purpose |
|---|---|
OnCakeDelivered() | Process reactive effects per cake |
OnOrderCompleted() | Process order completion effects |
GetPassiveMultiplierBonus() | Sum all passive bonuses |
OnChainBroken() | Reset combo state |
SetDeckFromGameRun() | Initialize with deck data |
CafeDeckData
Location: Assets/_Game/Scripts/Data/CafeDeckData.cs
Current deck configuration:
public class CafeDeckData{ public List<HelperCatData> HelperCats;
public List<HelperCatData> GetReactiveHelperCats(); public List<HelperCatData> GetPassiveHelperCats(); public List<HelperCatData> GetActiveHelperCats(); public void AddHelperCat(HelperCatData cat);}PersistentHelperCatManager
Location: Assets/_Game/Scripts/Managers/PersistentHelperCatManager.cs
Manages owned helper cats across sessions (persistent service):
- Tracks all owned helper cats
- Survives scene transitions
- Syncs with save data
Active Abilities
Location: Assets/_Game/Scripts/Systems/ActiveHelperCats/
Active abilities have cooldowns and player-triggered effects:
public interface IActiveHelperAbility{ void Activate(OrderingCat target); float Cooldown { get; } bool IsReady { get; }}Components:
ActiveHelperCatsController- Main ability controllerAbilityVisualHandler- Visual effects per ability- Individual abilities in
Abilities/folder
Combo System
Helper cats trigger via CakeComboData:
| Combo Type | Description |
|---|---|
SPECIFIC_CAKE | Match exact cake type |
COUNT | N cakes of a type in a row |
SEQUENCE | Specific cake order |
SET | Any combination of required cakes |
PATTERN_COUNT | Flexible pattern matching |
Example combo:
// Triggers when 3 chocolate cakes delivered in a rownew CakeComboData { type = ComboType.COUNT, requiredCount = 3, cakeCategory = CakeCategory.Chocolate}Effect Application
// ComboEffect accumulates bonusespublic class ComboEffect{ public int baseScoreToAdd; public float multiplierToAdd; public float orderTimeToAdd; // Time extension}Meta Progression: Unlock on Star Completion
Helper cats can be unlocked as rewards for completing star levels for the first time.
Configuration
In game_config.json, each star level has an unlockHelperCats array of ScriptableObject asset names:
{ "starLevelNumber": 1, "unlockHelperCats": ["BabyHelperCat", "CatOfGreedHelperCat"]}Unlock Flow
- Player completes all days in a star run
WorkDayProgress.CompleteStarLevel()adds aStarCompletionRecordGameRunStateManager.OnWorkDayProgressCompleted()callsHelperCatUnlockService.ProcessStarLevelUnlocks()- Service checks if this is the first completion (
GetCompletionCount == 1) - Resolves cat IDs via
HelperCatDatabase.GetHelperCatByAssetName() - Adds new cats via
PersistentHelperCatManager.AddHelperCat() - Saves the game and returns the list to the victory screen
Key Classes
| Class | Location | Purpose |
|---|---|---|
HelperCatUnlockService | Systems/Progression/ | Static service: resolves + unlocks cats |
HelperCatDetailUI | UI/ | Reusable modal popup (icon, name, description, flavor text) |
VictoryScreenUnlockedCatEntry | UI/ | Small card for victory screen grid |
UI
- Victory Screen: Shows unlocked cats section when cats are newly earned
- Management Panel: “View” button on each card opens
HelperCatDetailUImodal - Detail Modal: Shows cat icon, name, description, flavor text, and effect type
Adding Unlock Rewards
- Add the helper cat asset name to
unlockHelperCatsin the star level config ingame_config.json - The asset name must match the ScriptableObject file name in
HelperCatDatabase - Optionally fill in
flavorTexton theHelperCatDataScriptableObject for the detail popup
Adding New Helper Cats
- Create
HelperCatDataScriptableObject inAssets/_Game/Data/HelperCats/ - Configure trigger combos and effects
- Add to
HelperCatDatabase - For active abilities: implement
IActiveHelperAbility - Test via
HelperCatsManagerTests