How the emotion is worked out
Price. The live side reads HYPE's perp oracle price straight from HyperCore every 3 seconds, on-chain through HyperEVM's oracle precompile (0x0000…0807, perp #159). Hyperliquid's validators publish it as a weighted median of exchange prices. The price from 24 hours ago comes from HyperCore's public API.
Score. The 24-hour change times 5, capped at ±100, so a 20% move is the most it counts. This is the rule in EVMSource.
Vibe. Each HiMan scales the change by its vibe: Peppy and Groovy ×1.33, Friendly and Curious ×1, Lazy ×0.8, Brave ×0.67. That's why a Brave HiMan stays calmer: inside the ±20% cap it runs from 4 to 91.
Emotion. The scaled change runs through 11 knots set from HYPE's real 24-hour moves over the past year, so ordinary days stay in the middle and the ends are rare but reachable. There are ten moods, one per band of ten: Heartbroken 1–10, Sad 11–20, Nervous 21–30, Uneasy 31–40, Calm 41–50, Content 51–60, Happy 61–70, Excited 71–80, Thrilled 81–90 and Hyped 91–100. For a Friendly HiMan, −9% and below is Heartbroken, a flat day is 50 (the top of Calm), +0.01% is Content and above +12.75% is Hyped. The live side uses the same whole-number maths as HiManMood.rawEmotion.
On-chain. HiManMood decides each vibe's mood once an hour, on the first of every 12 five-minute ticks, and leaves a band only when the emotion is 4 or more points beyond it, so a day see-sawing between −0.6% and +0.6% never changes the face. It then stores the emotion, kept inside the band of the mood held, as each token's Emotion trait (ERC-7496, key keccak256("emotion")) and puts it in the metadata. Marketplaces show it as "Emotion 43 of 100". The live side shows the emotion right now, so it can run up to an hour ahead of what the contract records.
Elysium. Elysium doesn't have HyperCore's oracle precompile yet. Until it does, the keeper signs this same oracle price and posts it on-chain; when the precompile ships, the contracts switch to reading it directly.