type_matchup
Calculate offensive damage multipliers for Pokémon battles by checking type effectiveness between attacking and defending types using PokeAPI data.
Instructions
Multiplicador de daño ofensivo usando PokeAPI/type.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| attacking | Yes | ||
| defending | Yes |
Implementation Reference
- src/index.ts:87-91 (handler)Inline anonymous handler function for the 'type_matchup' tool. It extracts attacking type and defending types from args, computes the multiplier using pokeapi.typeMultiplier, and returns formatted JSON content.}, async (args:any) => { const atk = String(args.attacking), def = (args.defending as string[]); const mult = await pokeapi.typeMultiplier(atk, def); return jsonContent({ attacking: atk, defending: def, multiplier: mult }); });
- src/index.ts:85-86 (schema)Input schema defining parameters for type_matchup: 'attacking' as string (offensive type), 'defending' as array of 1-2 strings (defensive types).type:'object', properties:{ attacking:{type:'string'}, defending:{type:'array', items:{type:'string'}, minItems:1, maxItems:2} }, required:['attacking','defending']
- src/index.ts:84-91 (registration)Registration of the 'type_matchup' tool using registerTool, including name, description, input schema, and inline handler.registerTool('type_matchup', 'Multiplicador de daño ofensivo usando PokeAPI/type.', { type:'object', properties:{ attacking:{type:'string'}, defending:{type:'array', items:{type:'string'}, minItems:1, maxItems:2} }, required:['attacking','defending'] }, async (args:any) => { const atk = String(args.attacking), def = (args.defending as string[]); const mult = await pokeapi.typeMultiplier(atk, def); return jsonContent({ attacking: atk, defending: def, multiplier: mult }); });
- src/pokeapi.ts:65-79 (helper)Core helper method in PokeAPI class that implements the type matchup calculation by fetching the attacking type's damage relations from PokeAPI, extracting double/half/no damage lists, and computing the product multiplier against the defending types.// Compute offensive multiplier using PokeAPI damage relations async typeMultiplier(attacking: string, defending: string[]): Promise<number> { const atk = await this.getType(attacking); const rel = atk.damage_relations; const dbl = rel.double_damage_to.map((t:AnyObj)=>t.name); const half = rel.half_damage_to.map((t:AnyObj)=>t.name); const zero = rel.no_damage_to.map((t:AnyObj)=>t.name); let mult = 1; for (const d of defending) { if (zero.includes(normName(d))) { mult *= 0; continue; } if (dbl.includes(normName(d))) mult *= 2; else if (half.includes(normName(d))) mult *= 0.5; } return mult; }