Current source: Rusty Rabbit Fluffle. Loading from fluffle structure.
Companion HTML: open hare_brained.html | Personality JS: open hare_brained.js
Files found in avatar/
Files found in images/
No gallery images found.
Files found in notes/
Extraction notes for Hare-Brained Rusty Rabbit - Manifest label: Hare-Brained - Registered label: Hare-Brained - DemoOrder from playerlist.js: 5 - PersonalityLevel from register(...): 5 - Companion title: Hare-Brained Rusty Rabbit Companion - Companion sections: Working notes, Main tuning knobs, Starter recipe, Questions to ask after a tournament, Safe edit checklist If DemoOrder and PersonalityLevel differ, keep both. They appear to serve different roles.
Files found in prompts/
Hare-Brained Rusty Rabbit Core identity: Opportunistic and tactical, but a bit inconsistent.
Rabbit: Hare-Brained Rusty Rabbit RabbitID: hare_brained Demo order: 5 Personality level: 5 Cheat door: none Core identity: Opportunistic and tactical, but a bit inconsistent. Strategy hooks present: - forceAction: 0 - filterActions: 1 - scoreAction: 1 - chooseAction: 0 - describeStrategy: 0 Voice categories: 20 Voice lines total: 240 Sample voice lines: - ahead: Keep pushing. - bad_move: Oh, that was lively in the wrong way. - behind: Then I need sharper pace. - bonus_move: Lovely. I am still in motion. - capture: Got it. - close_game: No soft moves now. - erase: Snip that out. - good_move: There. Much better. - human_move_bad: You hesitated in public. - human_move_good: Hah, that had sting. - lose_match: I rushed the wrong thing. - lose_tournament: I lost the rhythm somewhere. - my_turn: Quick one. - start_match: Right then, no dithering. - taunt: You blinked first. - thinking: Too much thinking spoils a good leap. - tile_place: More ground to run on. - token_place: Tag this before they do. - win_match: Quick enough. - win_tournament: A whole day at speed.
Files found in personality/
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Hare-Brained Rusty Rabbit Companion</title>
<style>
:root{
--bg:#071118;
--bg2:#050B10;
--card:rgba(10,22,32,0.72);
--card2:rgba(6,12,18,0.68);
--line:rgba(160,200,255,0.14);
--text:#E6F1FF;
--muted:#AFC4D9;
--green:#00fd00;
--yellow:#ffff00;
--cyan:#00fdfd;
--red:#ff4040;
}
*{box-sizing:border-box}
html,body{height:100%}
body{
margin:0;
font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;
background:
radial-gradient(1200px 800px at 50% -200px, rgba(120,200,255,0.18), rgba(0,0,0,0) 60%),
linear-gradient(180deg,var(--bg) 0%,var(--bg2) 100%);
color:var(--text);
line-height:1.5;
}
.page{
max-width:1100px;
margin:0 auto;
padding:22px 14px 40px;
}
.card{
background:linear-gradient(180deg,var(--card),var(--card2));
border:1px solid var(--line);
border-radius:16px;
box-shadow:0 20px 60px rgba(0,0,0,.45);
padding:20px;
}
h1,h2,h3{margin:0 0 10px 0;color:var(--text)}
h1{font-size:34px;line-height:1.15}
h2{
margin-top:30px;
padding-top:10px;
border-top:1px solid rgba(255,255,255,0.12);
font-size:24px;
}
h3{margin-top:18px;font-size:19px}
p,li{font-size:16px}
code,pre{
font-family:Consolas,"Courier New",monospace;
font-size:14px;
}
pre{
background:rgba(0,0,0,.28);
border:1px solid rgba(255,255,255,.12);
color:#dfefff;
padding:12px;
overflow:auto;
white-space:pre-wrap;
border-radius:10px;
}
.box{
background:linear-gradient(180deg,var(--card),var(--card2));
border:1px solid var(--line);
padding:14px;
margin:14px 0;
border-radius:14px;
box-shadow:0 12px 30px rgba(0,0,0,.28);
}
.warn{
background:linear-gradient(180deg, rgba(70,42,10,.78), rgba(45,24,6,.72));
border:1px solid rgba(225,185,107,.55);
}
.good{
background:linear-gradient(180deg, rgba(20,60,28,.78), rgba(10,34,16,.72));
border:1px solid rgba(143,196,143,.55);
}
table{
width:100%;
border-collapse:collapse;
margin:12px 0;
background:rgba(0,0,0,.12);
}
th,td{
border:1px solid rgba(255,255,255,.12);
padding:8px 10px;
text-align:left;
vertical-align:top;
}
th{
background:rgba(119,208,255,.10);
color:#dff4ff;
}
a{color:#9fd6ff}
a:hover{text-decoration:underline}
.small{font-size:14px;color:var(--muted)}
ul{margin-top:8px}
.siteHeader{
position:sticky;
top:0;
z-index:999;
backdrop-filter:blur(10px);
background:linear-gradient(180deg, rgba(6,12,18,0.92), rgba(6,12,18,0.72));
border-bottom:1px solid rgba(160,200,255,0.12);
}
.siteHeader .inner{
max-width:1600px;
margin:0 auto;
padding:14px 14px;
display:flex;
align-items:baseline;
justify-content:space-between;
gap:16px;
}
.brand{font-weight:800; letter-spacing:.3px}
.brand small{
display:block;
font-weight:500;
opacity:.78;
margin-top:4px;
color:var(--muted);
}
.headerRight{
font-size:13px;
opacity:.82;
text-align:right;
line-height:1.25;
color:var(--muted);
}
.btnlink, .navbtn{
display:inline-block;
padding:10px 14px;
border-radius:12px;
border:1px solid rgba(255,255,255,.18);
background:rgba(0,0,0,.35);
text-decoration:none;
font-weight:600;
}
.btn-green{color:#00ff00}
.btn-red{color:#ff4040}
.btn-yellow{color:#ffff00}
.btn-play{
padding:1px 10px;
border:2px solid rgba(255,255,0,.18);
color:#8080ff;
}
</style>
</head><body>
<header class="siteHeader">
<div class="inner">
<div class="brand">
<a href="../index.php" class="btnlink btn-green">FJD1.COM</a>
Trigame
<a href="index.html" class="btnlink btn-red">Fluffle Guide</a>
<a href="../../about.html" class="navbtn" style="color:#ff8080;">About</a>
<a href="../../help.html" class="btnlink btn-yellow">Instructions · Help</a>
<a href="../../problem.html" class="navbtn" style="color:#ffd580;">Single-Tile Problem</a>
<a href="../../trigame.html" class="btnlink btn-play"><img src="../../images/trigame002.jpg" width="80" style="vertical-align:middle;"> PLAY </a>
<small>Legacy prototype (2002) - modern Canvas versions (2026)</small>
</div>
<div class="headerRight">
Frank Davies - fjd1.com<br>
Fluffle companion and personality tuning notes
</div>
</div>
</header>
<div class="page"><div class="card">
<div class="page">
<img src="../../images/hare_brained.jpg" width="200" style="border-radius:12px; border:2px solid rgba(255,255,0,.18);" align="right">
<h1>Hare-Brained Rusty Rabbit</h1>
<p><strong>Core identity:</strong> Opportunistic and tactical, but a bit inconsistent.</p>
<div class="box">
<strong>Personality sketch</strong><br>
Hare-Brained can spot immediate tactical chances and pounce on them, yet does not always follow through with discipline. When the ideas line up it looks clever; when they do not, it looks distractible and impulsive.
</div>
<div class="box">
<strong>What this page is for</strong><br>
Use this as a plain-language companion while tweaking <code>hare_brained.js</code>.
</div>
<h2>Working notes</h2>
<ul><li>Hare-Brained is a good rabbit to push toward more tiles than are strictly wise.</li><li>He improved when given stronger tile preference, but still can cash in too early.</li><li>He should feel less efficient than top rabbits, but more exciting than a timid one.</li></ul>
<h2>Main tuning knobs</h2>
<table><tr><th>Tile appetite</th><td>High</td></tr><tr><th>Token appetite</th><td>Delayed a bit</td></tr><tr><th>Good experiments</th><td>More local expansion off his own branches</td></tr><tr><th>Danger sign</th><td>If he becomes as efficient as Warren, he stops feeling hare-brained</td></tr></table>
<h2>Starter recipe</h2>
<div class="box good">Use stronger tile filtering early and medium token penalties. Reward connected growth and future socket creation.</div>
<h2>Questions to ask after a tournament</h2>
<ol>
<li>Did this rabbit actually feel like its name?</li>
<li>Did it win by the method I intended, or by accident?</li>
<li>Did it create board growth, punish board growth, or cash in on someone else’s board?</li>
<li>Did this rabbit become too similar to another one?</li>
</ol>
<h2>Safe edit checklist</h2>
<ul>
<li>Change only one main idea at a time.</li>
<li>Keep a backup before changing heavy filters.</li>
<li>Prefer score nudges before hard move filters.</li>
<li>Run a small tournament instead of trusting one match.</li>
</ul>
<h3>Current hare_brained.js</h3>
<pre id="jsview"></pre>
<pre id="jsview"></pre>
<script>
fetch('hare_brained.js')
.then(r => {
if (!r.ok) throw new Error('HTTP ' + r.status);
return r.text();
})
.then(t => {
jsview.textContent = t;
})
.catch(err => {
jsview.textContent = 'Could not load hare_brained.js\n' + err;
});
</script>
<p class="small"><a href="index.html">Back to companion index</a></p>
</div>
</div></div>
</body></html>
(function(){
const register = window.RustyPersonalities && window.RustyPersonalities.register;
if(!register) return;
function num(v, fallback){
const n = Number(v);
return Number.isFinite(n) ? n : (fallback || 0);
}
function getTileCountForSeat(ctx, seat){
if(!ctx) return 0;
const tc = ctx.tileCount;
if(typeof tc === 'number') return num(tc, 0);
if(Array.isArray(tc)) return num(tc[seat], 0);
if(typeof tc === 'function'){
try{
return num(tc(seat), 0);
}catch(_){
try{
return num(tc(), 0);
}catch(__){
return 0;
}
}
}
if(tc && typeof tc === 'object') return num(tc[seat], 0);
return 0;
}
function countMyPlacedTiles(ctx){
return getTileCountForSeat(ctx, ctx && ctx.seat);
}
function hasPlacedAt(ctx, i, j){
if(!ctx) return false;
try{
if(typeof ctx.hasPlacedAt === 'function') return !!ctx.hasPlacedAt(i, j);
}catch(_){ }
try{
if(typeof ctx.isPlaced === 'function') return !!ctx.isPlaced(i, j);
}catch(_){ }
try{
if(typeof ctx.placedAt === 'function') return !!ctx.placedAt(i, j);
}catch(_){ }
try{
if(typeof ctx.getTileAt === 'function') return !!ctx.getTileAt(i, j);
}catch(_){ }
try{
if(typeof ctx.tileAt === 'function') return !!ctx.tileAt(i, j);
}catch(_){ }
const k = `${i},${j}`;
try{
if(ctx.placed && typeof ctx.placed.has === 'function') return !!ctx.placed.has(k);
}catch(_){ }
try{
if(ctx.tiles && typeof ctx.tiles.has === 'function') return !!ctx.tiles.has(k);
}catch(_){ }
return false;
}
function seatForTileAt(ctx, i, j){
if(!ctx) return null;
try{
if(typeof ctx.tileSeatAt === 'function'){
const v = ctx.tileSeatAt(i, j);
if(Number.isFinite(v)) return v;
}
}catch(_){ }
try{
if(typeof ctx.tileOwnerAt === 'function'){
const v = ctx.tileOwnerAt(i, j);
if(Number.isFinite(v)) return v;
}
}catch(_){ }
try{
if(typeof ctx.ownerAt === 'function'){
const v = ctx.ownerAt(i, j);
if(Number.isFinite(v)) return v;
}
}catch(_){ }
const k = `${i},${j}`;
let t = null;
try{
if(ctx.placed && typeof ctx.placed.get === 'function') t = ctx.placed.get(k);
else if(ctx.tiles && typeof ctx.tiles.get === 'function') t = ctx.tiles.get(k);
}catch(_){ }
if(t && typeof t === 'object'){
for(const key of ['seat','owner','player','pIndex','playerIndex']){
const v = t[key];
if(Number.isFinite(v)) return v;
}
}
return hasPlacedAt(ctx, i, j) ? null : null;
}
function isOwnTileAt(ctx, i, j){
const seat = seatForTileAt(ctx, i, j);
if(Number.isFinite(seat)) return seat === ctx.seat;
return hasPlacedAt(ctx, i, j);
}
function lineLengthThroughMove(ctx, move, dx, dy){
if(!move) return 0;
let total = 1;
for(const dir of [-1, 1]){
let step = 1;
while(step <= 6){
const ii = move.i + dx * step * dir;
const jj = move.j + dy * step * dir;
if(!isOwnTileAt(ctx, ii, jj)) break;
total += 1;
step += 1;
}
}
return total;
}
function rowAndClusterBias(ctx, move){
if(!move || !Number.isFinite(move.i) || !Number.isFinite(move.j)) return 0;
const lines = [
lineLengthThroughMove(ctx, move, 1, 0),
lineLengthThroughMove(ctx, move, 0, 1),
lineLengthThroughMove(ctx, move, 1, 1)
].sort((a,b)=>b-a);
const bestLine = lines[0] || 1;
const secondLine = lines[1] || 1;
let score = 0;
// Prefer strings first, with a smaller reward for chunky clusters.
if(bestLine >= 4) score += 68;
else if(bestLine === 3) score += 42;
else if(bestLine === 2) score += 18;
if(bestLine >= 2 && secondLine >= 2) score += 16;
return score;
}
function openingTileBias(ctx){
const mine = countMyPlacedTiles(ctx);
if(mine <= 2) return 180;
if(mine <= 5) return 128;
if(mine <= 8) return 86;
if(mine <= 11) return 42;
return 10;
}
register({
level: 5,
id: 'hare_brained',
label: 'Hare-Brained',
filterActions(ctx){
const actions = Array.isArray(ctx && ctx.actions) ? ctx.actions : [];
const tileActions = actions.filter(a => a && a.type === 'tile');
if(!tileActions.length) return actions;
const mine = countMyPlacedTiles(ctx);
if(ctx.phase === 0 && mine <= 10) return tileActions;
if(ctx.phase === 1 && mine <= 7) return tileActions;
return actions;
},
scoreAction(ctx){
const action = ctx && ctx.action;
if(!action) return 0;
let score = 0;
const mine = countMyPlacedTiles(ctx);
if(action.type === 'tile'){
score += openingTileBias(ctx);
try{
score += (ctx.adjacentPlacedCount(action.move) || 0) * 26;
}catch(_){ }
score += rowAndClusterBias(ctx, action.move);
try{
score += ctx.withTempTileForSeat(
action.move,
ctx.seat,
()=> Math.min(48, (ctx.openSocketMoves(true).length || 0) * 0.45)
) || 0;
}catch(_){ }
try{
score += ctx.withTempTileForSeat(
action.move,
ctx.seat,
()=> (ctx.estimateBestTokenGainForSeat(ctx.seat, 32) || 0) * 6
) || 0;
}catch(_){ }
}
if(action.type === 'token'){
if(mine <= 5) score -= 22;
else if(mine <= 8) score -= 10;
else if(mine <= 11) score -= 3;
else score += 8;
}
if(action.type === 'eraseToken') score += 8;
if(action.type === 'eraseTile') score -= 20;
return score;
}
});
})();
level: 5,
id: 'hare_brained',
label: 'Hare-Brained',
filterActions(ctx){
const actions = Array.isArray(ctx && ctx.actions) ? ctx.actions : [];
const tileActions = actions.filter(a => a && a.type === 'tile');
if(!tileActions.length) return actions;
const mine = countMyPlacedTiles(ctx);
if(ctx.phase === 0 && mine <= 10) return tileActions;
if(ctx.phase === 1 && mine <= 7) return tileActions;
return actions;
},
scoreAction(ctx){
const action = ctx && ctx.action;
if(!action) return 0;
let score = 0;
const mine = countMyPlacedTiles(ctx);
if(action.type === 'tile'){
score += openingTileBias(ctx);
try{
score += (ctx.adjacentPlacedCount(action.move) || 0) * 26;
}catch(_){ }
score += rowAndClusterBias(ctx, action.move);
try{
score += ctx.withTempTileForSeat(
action.move,
ctx.seat,
()=> Math.min(48, (ctx.openSocketMoves(true).length || 0) * 0.45)
) || 0;
}catch(_){ }
try{
score += ctx.withTempTileForSeat(
action.move,
ctx.seat,
()=> (ctx.estimateBestTokenGainForSeat(ctx.seat, 32) || 0) * 6
) || 0;
}catch(_){ }
}
if(action.type === 'token'){
if(mine <= 5) score -= 22;
else if(mine <= 8) score -= 10;
else if(mine <= 11) score -= 3;
else score += 8;
}
if(action.type === 'eraseToken') score += 8;
if(action.type === 'eraseTile') score -= 20;
return score;
}
Files found in voices/
window.TRIGAME_VOICES = window.TRIGAME_VOICES || {};
window.TRIGAME_VOICES["hare_brained"] = {
"start_match": [
"Right then, no dithering.",
"Fast paws, bright eyes.",
"I am already halfway into a plan.",
"Let us not overthink this.",
"Let us not overthink this I intend to set the tone.",
"Fast paws, bright eyes There is work to do.",
"I am already halfway into a plan I intend to set the tone.",
"Let us not overthink this There is work to do.",
"I am already halfway into a plan A fresh beginning seldom stays innocent.",
"Right then, no dithering There is work to do.",
"I am already halfway into a plan The board seems awake.",
"Right then, no dithering A fresh beginning seldom stays innocent."
],
"my_turn": [
"Quick one.",
"I have it. Probably.",
"Move now, justify later.",
"No time to dawdle.",
"Move now, justify later I am ready.",
"Quick one Let us continue.",
"I have it. Probably Let us continue.",
"I have it. Probably I am ready.",
"Quick one The next choice matters.",
"I have it. Probably The next choice matters.",
"No time to dawdle This move will say something.",
"No time to dawdle I am ready."
],
"thinking": [
"Too much thinking spoils a good leap.",
"Momentum has its own wisdom.",
"I need a sharp move, not a pretty one.",
"Fast can still be right.",
"Fast can still be right The answer is in the shape.",
"Fast can still be right A small clue changes everything.",
"Too much thinking spoils a good leap The answer is in the shape.",
"Momentum has its own wisdom There is more here than first appears.",
"I need a sharp move, not a pretty one The answer is in the shape.",
"Fast can still be right There is more here than first appears.",
"I need a sharp move, not a pretty one There is more here than first appears.",
"Momentum has its own wisdom A small clue changes everything."
],
"good_move": [
"There. Much better.",
"That had some bite.",
"Quick and useful.",
"I like the look of that.",
"Quick and useful The shape tightened in my favor.",
"Quick and useful I can use this.",
"Quick and useful That should matter later.",
"I like the look of that The shape tightened in my favor.",
"Quick and useful The board approves.",
"That had some bite The board approves.",
"That had some bite That should matter later.",
"There. Much better The board approves."
],
"bad_move": [
"Oh, that was lively in the wrong way.",
"I may have outrun my own idea.",
"Too fast by half.",
"That had enthusiasm but not accuracy.",
"I may have outrun my own idea I will not repeat it.",
"Oh, that was lively in the wrong way A correction will be needed.",
"Too fast by half A correction will be needed.",
"Oh, that was lively in the wrong way That opened the wrong door.",
"That had enthusiasm but not accuracy A correction will be needed.",
"That had enthusiasm but not accuracy That opened the wrong door.",
"Too fast by half It looked better a breath ago.",
"Too fast by half I will not repeat it."
],
"bonus_move": [
"Lovely. I am still in motion.",
"Another one? Excellent.",
"Keep the pace up.",
"I can press this.",
"Lovely. I am still in motion I should make this count.",
"I can press this I should make this count.",
"Lovely. I am still in motion That changes the rhythm.",
"Keep the pace up Extra time is dangerous.",
"Lovely. I am still in motion Opportunity compounds quickly.",
"Keep the pace up That changes the rhythm.",
"I can press this Opportunity compounds quickly.",
"Another one? Excellent Extra time is dangerous."
],
"tile_place": [
"More ground to run on.",
"I need fresh space.",
"Extend the chase.",
"A tile for speed.",
"Extend the chase This changes the map.",
"A tile for speed A new foundation always matters.",
"I need fresh space The future will care about that tile.",
"Extend the chase A new foundation always matters.",
"I need fresh space This changes the map.",
"A tile for speed That should open something useful.",
"Extend the chase The future will care about that tile.",
"A tile for speed The future will care about that tile."
],
"token_place": [
"Tag this before they do.",
"Claim it now.",
"A quick mark.",
"This point is worth the sprint.",
"Claim it now A small mark can decide a game.",
"This point is worth the sprint Claims should be deliberate.",
"Claim it now That point carries weight.",
"A quick mark That point will matter.",
"Claim it now That point will matter.",
"A quick mark Claims should be deliberate.",
"A quick mark That point carries weight.",
"Tag this before they do That point will matter."
],
"erase": [
"Snip that out.",
"Too messy. Remove it.",
"I do not need that in my way.",
"Out it goes.",
"I do not need that in my way Not everything deserves to remain.",
"Out it goes Sometimes removal is cleaner.",
"Snip that out Sometimes removal is cleaner.",
"Too messy. Remove it Not everything deserves to remain.",
"Out it goes Not everything deserves to remain.",
"Out it goes Less can be more lethal.",
"Snip that out Less can be more lethal.",
"I do not need that in my way Subtraction has its uses."
],
"capture": [
"Got it.",
"That landed well.",
"Speed does count.",
"A tidy little pounce.",
"Got it That was worth taking.",
"That landed well The board finally yielded.",
"That landed well A good conversion.",
"A tidy little pounce That was worth taking.",
"That landed well The shape has paid out.",
"Got it The shape has paid out.",
"A tidy little pounce A good conversion.",
"Speed does count That was worth taking."
],
"ahead": [
"Keep pushing.",
"Do not slow now.",
"Make them hurry.",
"I want them reacting.",
"Do not slow now A lead needs discipline.",
"Keep pushing Now the board tests restraint.",
"Make them hurry A lead needs discipline.",
"Keep pushing A lead needs discipline.",
"I want them reacting A lead needs discipline.",
"Make them hurry Now the board tests restraint.",
"Do not slow now Pressure should increase from here.",
"I want them reacting This is where composure matters."
],
"behind": [
"Then I need sharper pace.",
"No sulking. Move.",
"A fast comeback is still a comeback.",
"Pressure fixes many things.",
"Pressure fixes many things Recovery is a technical art.",
"Then I need sharper pace One turn can reverse plenty.",
"A fast comeback is still a comeback There is still leverage here.",
"No sulking. Move Recovery is a technical art.",
"No sulking. Move One turn can reverse plenty.",
"Then I need sharper pace There is still leverage here.",
"A fast comeback is still a comeback Recovery is a technical art.",
"Pressure fixes many things Pressure can be rebuilt."
],
"taunt": [
"You blinked first.",
"Too slow.",
"I was always taking that.",
"You let me in there.",
"Too slow Some mistakes deserve immediate attention.",
"Too slow I thank you for the opening.",
"You blinked first You offered more than you meant to.",
"You blinked first That was generous of you.",
"You blinked first I thank you for the opening.",
"You let me in there I thank you for the opening.",
"You let me in there You offered more than you meant to.",
"Too slow That was generous of you."
],
"human_move_good": [
"Hah, that had sting.",
"Nicely done.",
"You moved with intent there.",
"That was brisk and smart.",
"Hah, that had sting Well chosen.",
"You moved with intent there Well chosen.",
"You moved with intent there That had merit.",
"Nicely done That had merit.",
"Nicely done Well chosen.",
"That was brisk and smart That had merit.",
"You moved with intent there I noticed that.",
"Nicely done You understood the moment."
],
"human_move_bad": [
"You hesitated in public.",
"That was loose.",
"I am taking advantage of that.",
"You left a door open.",
"You left a door open That will be remembered.",
"I am taking advantage of that I saw what you gave up.",
"You left a door open You should have reconsidered.",
"That was loose I saw what you gave up.",
"That was loose You should have reconsidered.",
"I am taking advantage of that You should have reconsidered.",
"You left a door open I saw what you gave up.",
"That was loose That weakens your case."
],
"close_game": [
"No soft moves now.",
"This is sprint country.",
"One crisp turn decides it.",
"The finish line is close.",
"This is sprint country A single detail may decide it.",
"No soft moves now The ending has begun.",
"One crisp turn decides it The margin is thin now.",
"This is sprint country The margin is thin now.",
"One crisp turn decides it The ending has begun.",
"No soft moves now The margin is thin now.",
"This is sprint country There is no room left for vanity.",
"The finish line is close There is no room left for vanity."
],
"win_match": [
"Quick enough.",
"That was fun.",
"Pace carried the day.",
"I like winning on the run.",
"Pace carried the day I will keep that one.",
"Quick enough That concluded acceptably.",
"That was fun A useful result.",
"I like winning on the run That concluded acceptably.",
"That was fun The board closed in my favor.",
"That was fun I will keep that one.",
"Pace carried the day The board closed in my favor.",
"I like winning on the run I will keep that one."
],
"lose_match": [
"I rushed the wrong thing.",
"They handled the pace better.",
"Too much hurry, not enough bite.",
"Again, then.",
"Too much hurry, not enough bite That outcome is informative.",
"Too much hurry, not enough bite So be it.",
"Again, then The next board will be less forgiving.",
"Again, then That outcome is informative.",
"They handled the pace better That outcome is informative.",
"I rushed the wrong thing I have taken notes.",
"They handled the pace better The next board will be less forgiving.",
"Too much hurry, not enough bite I have taken notes."
],
"win_tournament": [
"A whole day at speed.",
"Momentum is a beautiful thing.",
"They never quite caught my rhythm.",
"Fast paws, good result.",
"Momentum is a beautiful thing A fine total in the end.",
"Momentum is a beautiful thing The table is settled.",
"They never quite caught my rhythm A fine total in the end.",
"Fast paws, good result The table is settled.",
"Fast paws, good result Consistency has its rewards.",
"They never quite caught my rhythm Consistency has its rewards.",
"Momentum is a beautiful thing The longer arc favored me.",
"A whole day at speed The longer arc favored me."
],
"lose_tournament": [
"I lost the rhythm somewhere.",
"Too many fast mistakes.",
"I needed cleaner pressure.",
"Next time, quicker and sharper.",
"I lost the rhythm somewhere The table owes me another try.",
"Next time, quicker and sharper The long arc bent elsewhere.",
"Too many fast mistakes The table owes me another try.",
"Too many fast mistakes Not the final word.",
"I needed cleaner pressure The table owes me another try.",
"Next time, quicker and sharper Not the final word.",
"Next time, quicker and sharper The table owes me another try.",
"I lost the rhythm somewhere I will amend that result later."
]
};
{
"start_match": [
"Right then, no dithering.",
"Fast paws, bright eyes.",
"I am already halfway into a plan.",
"Let us not overthink this.",
"Let us not overthink this I intend to set the tone.",
"Fast paws, bright eyes There is work to do.",
"I am already halfway into a plan I intend to set the tone.",
"Let us not overthink this There is work to do.",
"I am already halfway into a plan A fresh beginning seldom stays innocent.",
"Right then, no dithering There is work to do.",
"I am already halfway into a plan The board seems awake.",
"Right then, no dithering A fresh beginning seldom stays innocent."
],
"my_turn": [
"Quick one.",
"I have it. Probably.",
"Move now, justify later.",
"No time to dawdle.",
"Move now, justify later I am ready.",
"Quick one Let us continue.",
"I have it. Probably Let us continue.",
"I have it. Probably I am ready.",
"Quick one The next choice matters.",
"I have it. Probably The next choice matters.",
"No time to dawdle This move will say something.",
"No time to dawdle I am ready."
],
"thinking": [
"Too much thinking spoils a good leap.",
"Momentum has its own wisdom.",
"I need a sharp move, not a pretty one.",
"Fast can still be right.",
"Fast can still be right The answer is in the shape.",
"Fast can still be right A small clue changes everything.",
"Too much thinking spoils a good leap The answer is in the shape.",
"Momentum has its own wisdom There is more here than first appears.",
"I need a sharp move, not a pretty one The answer is in the shape.",
"Fast can still be right There is more here than first appears.",
"I need a sharp move, not a pretty one There is more here than first appears.",
"Momentum has its own wisdom A small clue changes everything."
],
"good_move": [
"There. Much better.",
"That had some bite.",
"Quick and useful.",
"I like the look of that.",
"Quick and useful The shape tightened in my favor.",
"Quick and useful I can use this.",
"Quick and useful That should matter later.",
"I like the look of that The shape tightened in my favor.",
"Quick and useful The board approves.",
"That had some bite The board approves.",
"That had some bite That should matter later.",
"There. Much better The board approves."
],
"bad_move": [
"Oh, that was lively in the wrong way.",
"I may have outrun my own idea.",
"Too fast by half.",
"That had enthusiasm but not accuracy.",
"I may have outrun my own idea I will not repeat it.",
"Oh, that was lively in the wrong way A correction will be needed.",
"Too fast by half A correction will be needed.",
"Oh, that was lively in the wrong way That opened the wrong door.",
"That had enthusiasm but not accuracy A correction will be needed.",
"That had enthusiasm but not accuracy That opened the wrong door.",
"Too fast by half It looked better a breath ago.",
"Too fast by half I will not repeat it."
],
"bonus_move": [
"Lovely. I am still in motion.",
"Another one? Excellent.",
"Keep the pace up.",
"I can press this.",
"Lovely. I am still in motion I should make this count.",
"I can press this I should make this count.",
"Lovely. I am still in motion That changes the rhythm.",
"Keep the pace up Extra time is dangerous.",
"Lovely. I am still in motion Opportunity compounds quickly.",
"Keep the pace up That changes the rhythm.",
"I can press this Opportunity compounds quickly.",
"Another one? Excellent Extra time is dangerous."
],
"tile_place": [
"More ground to run on.",
"I need fresh space.",
"Extend the chase.",
"A tile for speed.",
"Extend the chase This changes the map.",
"A tile for speed A new foundation always matters.",
"I need fresh space The future will care about that tile.",
"Extend the chase A new foundation always matters.",
"I need fresh space This changes the map.",
"A tile for speed That should open something useful.",
"Extend the chase The future will care about that tile.",
"A tile for speed The future will care about that tile."
],
"token_place": [
"Tag this before they do.",
"Claim it now.",
"A quick mark.",
"This point is worth the sprint.",
"Claim it now A small mark can decide a game.",
"This point is worth the sprint Claims should be deliberate.",
"Claim it now That point carries weight.",
"A quick mark That point will matter.",
"Claim it now That point will matter.",
"A quick mark Claims should be deliberate.",
"A quick mark That point carries weight.",
"Tag this before they do That point will matter."
],
"erase": [
"Snip that out.",
"Too messy. Remove it.",
"I do not need that in my way.",
"Out it goes.",
"I do not need that in my way Not everything deserves to remain.",
"Out it goes Sometimes removal is cleaner.",
"Snip that out Sometimes removal is cleaner.",
"Too messy. Remove it Not everything deserves to remain.",
"Out it goes Not everything deserves to remain.",
"Out it goes Less can be more lethal.",
"Snip that out Less can be more lethal.",
"I do not need that in my way Subtraction has its uses."
],
"capture": [
"Got it.",
"That landed well.",
"Speed does count.",
"A tidy little pounce.",
"Got it That was worth taking.",
"That landed well The board finally yielded.",
"That landed well A good conversion.",
"A tidy little pounce That was worth taking.",
"That landed well The shape has paid out.",
"Got it The shape has paid out.",
"A tidy little pounce A good conversion.",
"Speed does count That was worth taking."
],
"ahead": [
"Keep pushing.",
"Do not slow now.",
"Make them hurry.",
"I want them reacting.",
"Do not slow now A lead needs discipline.",
"Keep pushing Now the board tests restraint.",
"Make them hurry A lead needs discipline.",
"Keep pushing A lead needs discipline.",
"I want them reacting A lead needs discipline.",
"Make them hurry Now the board tests restraint.",
"Do not slow now Pressure should increase from here.",
"I want them reacting This is where composure matters."
],
"behind": [
"Then I need sharper pace.",
"No sulking. Move.",
"A fast comeback is still a comeback.",
"Pressure fixes many things.",
"Pressure fixes many things Recovery is a technical art.",
"Then I need sharper pace One turn can reverse plenty.",
"A fast comeback is still a comeback There is still leverage here.",
"No sulking. Move Recovery is a technical art.",
"No sulking. Move One turn can reverse plenty.",
"Then I need sharper pace There is still leverage here.",
"A fast comeback is still a comeback Recovery is a technical art.",
"Pressure fixes many things Pressure can be rebuilt."
],
"taunt": [
"You blinked first.",
"Too slow.",
"I was always taking that.",
"You let me in there.",
"Too slow Some mistakes deserve immediate attention.",
"Too slow I thank you for the opening.",
"You blinked first You offered more than you meant to.",
"You blinked first That was generous of you.",
"You blinked first I thank you for the opening.",
"You let me in there I thank you for the opening.",
"You let me in there You offered more than you meant to.",
"Too slow That was generous of you."
],
"human_move_good": [
"Hah, that had sting.",
"Nicely done.",
"You moved with intent there.",
"That was brisk and smart.",
"Hah, that had sting Well chosen.",
"You moved with intent there Well chosen.",
"You moved with intent there That had merit.",
"Nicely done That had merit.",
"Nicely done Well chosen.",
"That was brisk and smart That had merit.",
"You moved with intent there I noticed that.",
"Nicely done You understood the moment."
],
"human_move_bad": [
"You hesitated in public.",
"That was loose.",
"I am taking advantage of that.",
"You left a door open.",
"You left a door open That will be remembered.",
"I am taking advantage of that I saw what you gave up.",
"You left a door open You should have reconsidered.",
"That was loose I saw what you gave up.",
"That was loose You should have reconsidered.",
"I am taking advantage of that You should have reconsidered.",
"You left a door open I saw what you gave up.",
"That was loose That weakens your case."
],
"close_game": [
"No soft moves now.",
"This is sprint country.",
"One crisp turn decides it.",
"The finish line is close.",
"This is sprint country A single detail may decide it.",
"No soft moves now The ending has begun.",
"One crisp turn decides it The margin is thin now.",
"This is sprint country The margin is thin now.",
"One crisp turn decides it The ending has begun.",
"No soft moves now The margin is thin now.",
"This is sprint country There is no room left for vanity.",
"The finish line is close There is no room left for vanity."
],
"win_match": [
"Quick enough.",
"That was fun.",
"Pace carried the day.",
"I like winning on the run.",
"Pace carried the day I will keep that one.",
"Quick enough That concluded acceptably.",
"That was fun A useful result.",
"I like winning on the run That concluded acceptably.",
"That was fun The board closed in my favor.",
"That was fun I will keep that one.",
"Pace carried the day The board closed in my favor.",
"I like winning on the run I will keep that one."
],
"lose_match": [
"I rushed the wrong thing.",
"They handled the pace better.",
"Too much hurry, not enough bite.",
"Again, then.",
"Too much hurry, not enough bite That outcome is informative.",
"Too much hurry, not enough bite So be it.",
"Again, then The next board will be less forgiving.",
"Again, then That outcome is informative.",
"They handled the pace better That outcome is informative.",
"I rushed the wrong thing I have taken notes.",
"They handled the pace better The next board will be less forgiving.",
"Too much hurry, not enough bite I have taken notes."
],
"win_tournament": [
"A whole day at speed.",
"Momentum is a beautiful thing.",
"They never quite caught my rhythm.",
"Fast paws, good result.",
"Momentum is a beautiful thing A fine total in the end.",
"Momentum is a beautiful thing The table is settled.",
"They never quite caught my rhythm A fine total in the end.",
"Fast paws, good result The table is settled.",
"Fast paws, good result Consistency has its rewards.",
"They never quite caught my rhythm Consistency has its rewards.",
"Momentum is a beautiful thing The longer arc favored me.",
"A whole day at speed The longer arc favored me."
],
"lose_tournament": [
"I lost the rhythm somewhere.",
"Too many fast mistakes.",
"I needed cleaner pressure.",
"Next time, quicker and sharper.",
"I lost the rhythm somewhere The table owes me another try.",
"Next time, quicker and sharper The long arc bent elsewhere.",
"Too many fast mistakes The table owes me another try.",
"Too many fast mistakes Not the final word.",
"I needed cleaner pressure The table owes me another try.",
"Next time, quicker and sharper Not the final word.",
"Next time, quicker and sharper The table owes me another try.",
"I lost the rhythm somewhere I will amend that result later."
]
}
RabbitID,VoiceCategory,LineCount,SampleLine hare_brained,start_match,12,"Right then, no dithering." hare_brained,my_turn,12,Quick one. hare_brained,thinking,12,Too much thinking spoils a good leap. hare_brained,good_move,12,There. Much better. hare_brained,bad_move,12,"Oh, that was lively in the wrong way." hare_brained,bonus_move,12,Lovely. I am still in motion. hare_brained,tile_place,12,More ground to run on. hare_brained,token_place,12,Tag this before they do. hare_brained,erase,12,Snip that out. hare_brained,capture,12,Got it. hare_brained,ahead,12,Keep pushing. hare_brained,behind,12,Then I need sharper pace. hare_brained,taunt,12,You blinked first. hare_brained,human_move_good,12,"Hah, that had sting." hare_brained,human_move_bad,12,You hesitated in public. hare_brained,close_game,12,No soft moves now. hare_brained,win_match,12,Quick enough. hare_brained,lose_match,12,I rushed the wrong thing. hare_brained,win_tournament,12,A whole day at speed. hare_brained,lose_tournament,12,I lost the rhythm somewhere.