<aside> <img src="/icons/reorder_gray.svg" alt="/icons/reorder_gray.svg" width="40px" />
Navigation
</aside>
<aside> ⚡
Frenzy Mode is a timed catch-the-icon minigame that forces every chest hit to crit while active, built on top of a general reusable timed-effect system other timed effects (including Effectors) reuse.
</aside>
Frenzy Mode covers two layers: the minigame itself (icon spawn, catch/miss, activation, guaranteed crits, music pitch) and the underlying effect-timer system it's built on. ActiveEffectController tracks any timed effect's remaining duration by id and fires start/tick/end events; UIActiveEffectBadge is a generic countdown badge bound to one effect id - both are also reused by Effectors (see Effectors).
Activate() fades the active music's pitch and starts the timed effect via ActiveEffectController.StartEffect; the crit guarantee itself lives in ClickerController.RegisterChestHit, not here.IClickableObject, flies from one screen edge to the other with a sine bob, and fires OnCaught or OnMissed depending on whether it was tapped in time.ChestSpawnAreaController's vertical band, and blocking spawns while Frenzy is already active or the icon is already out. Calls FrenzyController.Activate() on catch.StartEffect, IsActive, GetRemaining, GetIcon, plus OnEffectStarted / OnEffectTick / OnEffectEnded events keyed by effect id. Any script can start a timed effect through this without Frenzy involved at all.effectId field, not hardcoded.isCritical = FrenzyController.IsActive || Random.value < critChance short-circuits the crit roll while Frenzy is running, guaranteeing every chest hit crits - see Core Clicker Loop.