cc_release
Permanently remove a creature from your party by specifying its nickname or species name.
Instructions
Release a creature from your party. This cannot be undone.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| nickname | Yes | The nickname (or species name) of the creature to release. |
Implementation Reference
- src/games/crittercatch/index.ts:344-372 (handler)The main handler function for the cc_release tool. It finds a party member by nickname (case-insensitive), permanently removes them from the party, renders a bond-tier farewell quote, then calls maybeAcceptPending to auto-join any pending catch if a slot opened.
server.tool( 'cc_release', 'Release a creature from your party. This cannot be undone.', { nickname: z.string().describe("The nickname (or species name) of the creature to release.") }, async ({ nickname }) => { const s = requireGame(); const turnBlock = checkTurn(s); if (turnBlock) return turnBlock; const idx = s.party.findIndex(m => m.nickname.toLowerCase() === nickname.toLowerCase()); if (idx === -1) { const names = s.party.map(m => m.nickname).join(', ') || 'empty'; return err(`No creature named "${nickname}" in your party.\n\nParty: ${names}`); } const member = s.party[idx]; const species = SPECIES[member.speciesId]; s.party.splice(idx, 1); addToLog(s, `Released ${member.nickname}.`); const lines = [ `${member.nickname} ${species.bondQuotes[bondTier(member.bondLevel)]}.`, 'Then it turns and goes.', ]; maybeAcceptPending(s, lines); lines.push('', renderParty(s)); return ok(lines.join('\n')); }, - The Zod schema for cc_release's input: a required string field 'nickname' described as 'The nickname (or species name) of the creature to release.'
{ nickname: z.string().describe("The nickname (or species name) of the creature to release.") }, - src/games/crittercatch/index.ts:344-345 (registration)Registration of the cc_release tool via server.tool() inside the registerCritterCatchTools function. The tool is named 'cc_release' with description 'Release a creature from your party. This cannot be undone.'
server.tool( 'cc_release', - Helper function maybeAcceptPending called by cc_release. If a creature is pending (party was full during catch), releasing a creature opens a slot and this function auto-joins the pending creature into the party.
function maybeAcceptPending(s: PlayerState, lines: string[]): void { if (!s.pendingCatch) return; const incoming = s.pendingCatch; const incomingSpecies = SPECIES[incoming.speciesId]; s.party.push(incoming); s.pendingCatch = null; addToLog(s, `${incoming.nickname} joined the party.`); lines.push( '', `${incoming.nickname} steps forward to take their place.`, '', incomingSpecies.description, `"${incomingSpecies.personalityNote}"`, ); if (incomingSpecies.secretTrait) { lines.push('', `✦ ${incomingSpecies.secretTrait}`); } }