@ -15790,6 +15790,32 @@
if (monsterEntourage.length === 0) return;
if (playerStats.isDead) return; // Can't fight when dead
// Store current camera state for later restoration
const preCombatCamera = {
center: map.getCenter(),
zoom: map.getZoom(),
pitch: map.getPitch(),
bearing: map.getBearing()
};
// Animate camera to zoom in on monster (drone-style)
if (clickedMonster.position) {
const monsterPos = [clickedMonster.position.lng, clickedMonster.position.lat];
// Fly to monster with dramatic zoom and pitch
map.flyTo({
center: monsterPos,
zoom: 19, // Close zoom
pitch: 60, // Tilt camera down like a drone
bearing: map.getBearing(), // Keep current rotation
duration: 1200, // 1.2 second animation
easing: (t) => t < 0.5 ? 2 * t * t : 1 - Math . pow ( -2 * t + 2 , 2 ) / 2 / / Ease in-out
});
// Wait for animation to complete before showing combat UI
await new Promise(resolve => setTimeout(resolve, 1200));
}
// Mark sync engine as in combat (suppresses non-critical save errors)
statsSyncState.inCombat = true;
@ -15847,7 +15873,8 @@
targetingMode: false, // True when selecting targets for multi-hit skill
pendingSkill: null, // The skill waiting to be executed
pendingTargets: [], // Array of target indices for each hit
totalHitsToSelect: 0 // Total number of hits to select targets for
totalHitsToSelect: 0, // Total number of hits to select targets for
preCombatCamera: preCombatCamera // Store camera state for restoration after combat
};
showCombatUI();
@ -17027,6 +17054,20 @@
function closeCombatUI() {
console.log('[DEBUG] closeCombatUI called');
document.getElementById('combatOverlay').style.display = 'none';
// Restore camera to pre-combat position with smooth animation
if (combatState & & combatState.preCombatCamera) {
const cam = combatState.preCombatCamera;
map.flyTo({
center: cam.center,
zoom: cam.zoom,
pitch: cam.pitch,
bearing: cam.bearing,
duration: 800, // Slightly faster return
easing: (t) => t < 0.5 ? 2 * t * t : 1 - Math . pow ( -2 * t + 2 , 2 ) / 2
});
}
combatState = null;
monsterActiveAnimations = {}; // Clear animation tracking