How to Navigate the Spire
- Click a node to climb the way
- Choose your battles night or day
- Rest at fires, heal or train
- Each new card will grow your gain.
- At the summit face the fight
- Defeat the boss, win the night
May your code be bug-free and your coffee stay hot, May this birthday bring joy in each moment youβve got.


',
standing_desk: '
',
prime_hat: '
',
coffee_thermos: '
',
cpp_compiler: '
',
chat_mod_sword: '
'
};
return relicArt[relicId] || 'π';
}
function getRelicName(relicId) {
const names = {
mech_kb: 'Kinesis',
standing_desk: 'Motions',
prime_hat: 'VS Code',
coffee_thermos: 'Coffee Thermos',
cpp_compiler: 'C++ Compiler',
chat_mod_sword: 'Chat Mod Sword'
};
return names[relicId] || relicId;
}
function getRelicText(relicId) {
const texts = {
mech_kb: '+1 card draw each turn.',
standing_desk: '+10 Max HP.',
prime_hat: '-10% damage taken.',
coffee_thermos: 'Start each fight with Coffee Rush.',
cpp_compiler: 'First attack each turn deals double.',
chat_mod_sword: 'Start fights with 1 Weak on all enemies.'
};
return texts[relicId] || 'Unknown relic';
}
function getCardArt(cardId) {
const artMappings = {
strike: 'Monk_1.png',
'strike+': 'Monk_2.png',
defend: 'Monk_3.png',
'defend+': 'Monk_4.png',
coffee_rush: 'Monk_5.png', // Energy boost
'coffee_rush+': 'Monk_6.png', // Upgraded energy
macro: 'Monk_7.png', // Replay magic
refactor: 'Monk_8.png', // Refactoring tool
type_safety: 'Monk_9.png', // Protection
chat_ban: 'Monk_10.png', // Ban/restriction
segfault: 'Monk_11.png', // Powerful attack
null_pointer: 'Monk_12.png', // Precise strike
recursion: 'Monk_13.png', // Repetition
merge_conflict: 'Monk_14.png', // Dual attack
hotfix: 'Monk_15.png', // Emergency fix
production_deploy: 'Monk_16.png', // High risk/reward
gc: 'Monk_17.png', // Cleanup
async_await: 'Monk_18.png', // Time manipulation
stack_overflow: 'Monk_19.png', // Knowledge overflow
infinite_vim: 'Monk_20.png', // Infinite power
debug_print: 'Monk_21.png', // Information
git_commit: 'Monk_22.png', // Recording
memory_leak: 'Monk_23.png', // Draining effect
code_review: 'Monk_24.png', // Investigation
pair_programming: 'Monk_25.png', // Cooperation
rubber_duck: 'Monk_26.png', // Helpful companion
unit_test: 'Monk_27.png', // Testing/verification
sugar_crash: 'Monk_28.png' // Negative effect
};
const imagePath = artMappings[cardId];
if (imagePath) {
return `