KOVANEX
Kovan Savaşları — İki Koloni, Bir Yuva

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.

ESC ile geç
Kovanex — Kovan Savaşları
Başlangıç: Kovansız kalan Altın Koloni, uzun bir yolculuğun ardından ıssız bir ormanda boş bir kaya kovuğu keşfeder. Kraliçe işaret verir — bu ev olacak. Ancak tam o anda, Kehribar Koloni de aynı kovanı fark etmiştir.
Çatışma: İki koloni kovanın önünde karşılaşır. Geri adım atmak yok — kış yaklaşıyor ve kovanı bulamayan koloni yok olacak. İşçiler duvarlar örer, askerler mevzi alır, mühendisler savunma hattı kurar. Kraliçeleri koruyan taraf kovanı kazanır.
Olası Sonlar:
Altın Zaferi: Kehribar kraliçesi kovandan kovulur. Altın koloni yuvaya yerleşir, petek örmeye başlar.
Kehribar Zaferi: Altın kraliçesi geri çekilmek zorunda kalır. Kehribar koloni kovanı ele geçirir.
Yabancı Koloni: İki taraf da kovanı alamaz. Uzaktan bekleyen yabancı bir koloni fırsatı kaçırmaz ve kovanı ele geçirir.

Kovanex Pro

Faz 1: Konuşlanma (Altın)
Altın
TUR: 0

Altın Kovan

Rakip: Deneyimli

Kehribar Kovan


{ 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 = `
⚠ ${isEn?'Overheated — must move':'Aşırı ısındı — hareket et'}
`; else if (data.type==='M' && data.shieldBroken) warn = `
⚠ ${isEn?'Shield capacity burnt out':'Kalkan kapasitesi yandı'}
`; else if (data.type==='K' && g.phase==='PLAYING' && g.chk?.[data.player]) warn = `
⚠ ${isEn?'IN CHECK!':'ŞAH TEHDİDİ!'}
`; tt.innerHTML = `
${pIcon} ${pName.toUpperCase()}
${pDesc}
${stats ? `
${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'; }); >