makefuture / games / accept-the-cookie / game / systems / behavioral.js
207 words
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
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));
}

static mirror of HEAD · about · clone: git clone https://git.makefuture.ro/makefuture.git