export function recordJump(session) {
session.behavioral.jumps += 1;
addDataShadow(session, 2);
}
export function recordMove(session, direction) {
if (direction < 0) session.behavioral.leftMoves += 1;
if (direction > 0) session.behavioral.rightMoves += 1;
}
export function recordPromptDecision(session, prompt, accepted) {
session.behavioral.promptDecisions.push({ prompt, accepted, t: Date.now() - session.startedAt });
if (accepted) {
session.currencies.convenience += 1;
addDataShadow(session, 22);
} else {
addDataShadow(session, 3);
}
}
export function recordPost(session) {
session.behavioral.posts += 1;
session.doppelgangers.push({ delay: 400 + session.doppelgangers.length * 160 });
addDataShadow(session, 34);
}
export function recordLurk(session) {
session.behavioral.lurks += 1;
addDataShadow(session, 4);
}
export function recordPurchase(session, item, price) {
session.behavioral.purchases.push({ item, price });
addDataShadow(session, 18 + Math.ceil(price / 20));
}
export function recordDeath(session) {
session.behavioral.deaths += 1;
addDataShadow(session, 10);
}
export function recordRageTap(session) {
session.behavioral.rageTaps += 1;
addDataShadow(session, 5);
}
export function updateIdle(session, idleMs) {
session.behavioral.longestIdleMs = Math.max(session.behavioral.longestIdleMs, idleMs);
session.behavioral.idleMs += idleMs;
}
export function addCookies(session, amount) {
session.currencies.cookies += amount;
addDataShadow(session, amount > 0 ? Math.max(1, Math.floor(amount / 5)) : 0);
}
export function addDataShadow(session, amount) {
session.currencies.dataShadow = Math.max(0, session.currencies.dataShadow + amount);
}
export function dominantDirection(session) {
const { leftMoves, rightMoves } = session.behavioral;
if (Math.abs(rightMoves - leftMoves) < 8) return 'center';
return rightMoves > leftMoves ? 'right' : 'left';
}
export function dataShadowPercent(session) {
return Math.min(100, Math.round(session.currencies.dataShadow / 12));
}