feat: select paired emote lines from own character

This commit is contained in:
2026-10-15 11:38:28 +09:00
parent 6a3a0ad4b9
commit fc5e475f24
10 changed files with 75 additions and 33 deletions
+11 -2
View File
@@ -7,12 +7,21 @@ test('emotes validate fixed choices, rate limit each player and expire without c
const emotes = createEmotes();
assert.equal(emotes.send(0, '<script>', 1000), false);
assert.equal(emotes.send(0, 'greet', 1000), true);
assert.equal(emotes.send(0, 'taunt', 1001), false);
assert.equal(emotes.send(0, 'mistake', 1001), false);
assert.equal(emotes.send(1, 'thanks', 1001), true);
assert.equal(emotes.view(1001)[0]?.id, 'greet');
const snapshot = emotes.view(1001);
snapshot[0]!.id = 'threaten';
assert.equal(emotes.view(1001)[0]?.id, 'greet');
assert.equal(emotes.view(1000 + EMOTE_DURATION_MS)[0], null);
assert.equal(emotes.send(0, 'taunt', 1000 + EMOTE_COOLDOWN_MS), true);
assert.equal(emotes.send(0, 'mistake', 1000 + EMOTE_COOLDOWN_MS), true);
});
test('emote variants are fixed when sent and invalid variants are rejected', () => {
const emotes = createEmotes();
assert.equal(emotes.send(0, 'greet', 0, 2), false);
assert.equal(emotes.send(0, 'greet', 0, 0), true);
assert.equal(emotes.send(1, 'greet', 0, 1), true);
assert.equal(emotes.view(1)[0]?.variant, 0);
assert.equal(emotes.view(2)[1]?.variant, 1);
});