Kovansız kalan Altın Koloni, uzun bir yolculuğun ardından
ıssız bir ormanda uygun bir kaya kovuğu keşfeder.
Ancak aynı anda, Kehribar Koloni de bu
kovanı fark etmiştir. İki koloni, aynı yuvayı ele geçirmek için
savaşa tutuşur.
Kraliçeni koru, rakip kraliçeyi kov — kovan senindir.
{ const g = GameState; const tt = document.getElementById('hoverTooltip'); if (!tt) return; const canvas = document.getElementById('gameCanvas'); if (!canvas) { tt.style.opacity='0'; tt.style.display='none'; return; } const rect = canvas.getBoundingClientRect(); const inside = e.clientX>=rect.left && e.clientX<=rect.right && e.clientY>=rect.top && e.clientY<=rect.bottom; if (!inside || g.phase==='GAMEOVER') { tt.style.opacity='0'; tt.style.display='none'; return; } const hex = pixelToHex(e.clientX-rect.left, e.clientY-rect.top); const key = `${hex.q},${hex.r}`; if (!board.has(key)) { tt.style.opacity='0'; tt.style.display='none'; return; } const data = board.get(key); if (!data) { tt.style.opacity='0'; tt.style.display='none'; return; } const isEn = currentLang === 'en'; const tr = i18n[currentLang]; const PIECE_ICONS = { K:'👑', M:'⚙️', A:'🐝', G:'🔭', D:'🏗️', I:'🌿', W:'🧱' }; const pName = data.type === 'W' ? t('wallName') : p(data.type); const pDesc = (t('desc') || {})[data.type] || ''; const pIcon = PIECE_ICONS[data.type] || '?'; const col = data.player==='gold' ? '#fbc531' : data.player==='amber' ? '#e15f41' : '#7a7265'; const dotCol = col; let stats = ''; if (data.type !== 'W') { if (isShielded) stats += `🛡 ${isEn?'Shielded':'Kalkan altında'}`; if (data.type === 'M') { const st = data.stationaryTurns || 0; if (st >= 5) stats += `🔥 ${isEn?'Overheated':'Aşırı ısındı'}`; else if (st >= 3) stats += `♨ ${isEn?`Heat ${st}/5`:`Isı ${st}/5`}`; if (data.shieldBroken) stats += `💀 ${isEn?'Shield gone':'Kalkan çöktü'}`; } if (data.type === 'I') { const promoteTo = isEn ? (GameState.config?.G ? 'Scout Bee' : 'Warrior Bee') : (GameState.config?.G ? 'Kaşif Arı' : 'Savaşçı Arı'); stats += `⬆ ${isEn?`Promotes→${promoteTo}`:`Terfi→${promoteTo}`}`; } const validCount = g.phase==='PLAYING' && data.player===g.turn ? calculateValidMoves(hex.q, hex.r, data, board).length : -1; if (validCount >= 0) stats += `${validCount} ${isEn?'moves':'hamle'}`; } let warn = ''; if (data.type==='M' && (data.stationaryTurns||0)>=5) warn = `
`; else if (data.type==='M' && data.shieldBroken) warn = `
`; else if (data.type==='K' && g.phase==='PLAYING' && g.chk?.[data.player]) warn = `
`; tt.innerHTML = `
${stats ? `
` : ''} ${warn} `; let px = e.clientX+18, py = e.clientY+18; if (px + 270 > window.innerWidth) px = e.clientX - 275; if (py + 160 > window.innerHeight) py = e.clientY - 165; tt.style.left = px + 'px'; tt.style.top = py + 'px'; tt.style.opacity = '1'; tt.style.display = 'block'; }); >