#!/usr/bin/env node
import { Open5eClient } from './dist/open5e-client.js';
async function testCharacterBuildHelper() {
const client = new Open5eClient();
console.log('š§āāļø TESTING CHARACTER BUILD HELPER FUNCTIONALITY\n');
try {
// Test 1: Generate a basic character build
console.log('1ļøā£ BASIC CHARACTER BUILD GENERATION');
console.log(' Generating a balanced character build...');
const basicBuild = await client.generateCharacterBuild({
playstyle: 'balanced',
campaignType: 'mixed',
focusLevel: 5
});
console.log(` ⨠Generated: ${basicBuild.name}`);
console.log(` š Description: ${basicBuild.description.substring(0, 100)}...`);
console.log(` š Race: ${basicBuild.race.name}`);
console.log(` āļø Class: ${basicBuild.class.name}`);
console.log(` š Background: ${basicBuild.background.name}`);
console.log(` šÆ Playstyle: ${basicBuild.playstyle}\n`);
// Test 2: Generate a damage-focused build
console.log('2ļøā£ DAMAGE-FOCUSED BUILD');
console.log(' Generating a damage-focused character...');
const damageBuild = await client.generateCharacterBuild({
playstyle: 'damage',
campaignType: 'combat',
focusLevel: 8,
preferredClass: 'fighter'
});
console.log(` ā” Generated: ${damageBuild.name}`);
console.log(` šŖ Ability Priority: ${damageBuild.abilityScorePriority.join(', ')}`);
console.log(` š”ļø Suggested Feats: ${damageBuild.suggestedFeats.slice(0, 3).map(f => f.name).join(', ')}`);
console.log(` šÆ Strengths: ${damageBuild.strengths.slice(0, 2).join(', ')}`);
console.log(` ā ļø Weaknesses: ${damageBuild.weaknesses.slice(0, 2).join(', ')}\n`);
// Test 3: Generate a support build
console.log('3ļøā£ SUPPORT BUILD');
console.log(' Generating a support character...');
const supportBuild = await client.generateCharacterBuild({
playstyle: 'support',
campaignType: 'roleplay',
focusLevel: 6,
preferredRace: 'human'
});
console.log(` š¤ Generated: ${supportBuild.name}`);
console.log(` š® Spellcaster: ${supportBuild.class.spellcastingAbility ? 'Yes' : 'No'}`);
if (supportBuild.keySpells && supportBuild.keySpells.length > 0) {
console.log(` ⨠Key Spells: ${supportBuild.keySpells.slice(0, 3).map(s => s.name).join(', ')}`);
}
console.log(` š Equipment: ${supportBuild.recommendedEquipment.slice(0, 3).join(', ')}`);
console.log(` š Build Strategy: ${supportBuild.buildStrategy.substring(0, 80)}...\n`);
// Test 4: Show level progression
console.log('4ļøā£ LEVEL PROGRESSION EXAMPLE');
console.log(` Showing progression for ${basicBuild.name}:`);
basicBuild.levelProgression.slice(0, 5).forEach(level => {
console.log(` Level ${level.level}: ${level.features.join(', ')}`);
if (level.recommendations.length > 0) {
console.log(` š” ${level.recommendations[0]}`);
}
});
console.log('\nš CHARACTER BUILD HELPER SUMMARY:');
console.log('ā
Intelligent race/class/background selection');
console.log('ā
Playstyle-based optimization');
console.log('ā
Campaign type consideration');
console.log('ā
Suggested feat recommendations');
console.log('ā
Ability score priority guidance');
console.log('ā
Equipment recommendations');
console.log('ā
Level progression planning');
console.log('ā
Build strengths/weaknesses analysis');
console.log('ā
Key spell selection for casters');
console.log('ā
Strategic build advice');
} catch (error) {
console.error('ā Error testing character builds:', error.message);
if (error.stack) {
console.error('Stack trace:', error.stack);
}
}
}
testCharacterBuildHelper();