feat(sasch40): v4.0 full-screen mobile conversion, Hinter den Bergen room with Liars Dice, beat-only concert audio, and updated art
This commit is contained in:
@@ -308,6 +308,92 @@ async function runPlaytest() {
|
||||
await new Promise(r => setTimeout(r, 400));
|
||||
}
|
||||
|
||||
// Test Münchanien Signpost Hint Dialog
|
||||
console.log('🪧 Testing Münchanien Signpost Hint...');
|
||||
const signBtn = await page.$('.hotspot-sign-munchanien');
|
||||
if (signBtn) {
|
||||
await signBtn.click();
|
||||
await new Promise(r => setTimeout(r, 700));
|
||||
console.log('📸 11b: Capturing Münchanien Signpost Hint Modal...');
|
||||
await page.screenshot({ path: path.join(SCREENSHOTS_DIR, '11b_tavern_munchanien_hint.png') });
|
||||
const hintCloseBtn = await page.$('.intro-modal-box .action-btn');
|
||||
if (hintCloseBtn) await hintCloseBtn.click();
|
||||
await new Promise(r => setTimeout(r, 400));
|
||||
}
|
||||
|
||||
// Test Hinter den Bergen (Taiwan Valley & Papa Markus)
|
||||
console.log('🏮 Navigating to Hinter den Bergen...');
|
||||
const hdbDoor = await page.$('.hotspot-door-hinter-den-bergen');
|
||||
if (hdbDoor) {
|
||||
await hdbDoor.click();
|
||||
} else {
|
||||
const hdbTab = await page.$('.room-tab:nth-child(5)');
|
||||
if (hdbTab) await hdbTab.click();
|
||||
}
|
||||
await new Promise(r => setTimeout(r, 1000));
|
||||
|
||||
console.log('📸 11c: Capturing Hinter den Bergen Scene (Taiwan Alpine Skyline & Papa Markus)...');
|
||||
await page.screenshot({ path: path.join(SCREENSHOTS_DIR, '11c_tavern_hinter_den_bergen.png') });
|
||||
|
||||
// Click Markus for Liar's Dice
|
||||
const markusBtn = await page.$('.hotspot-markus');
|
||||
if (markusBtn) {
|
||||
await markusBtn.click();
|
||||
await new Promise(r => setTimeout(r, 700));
|
||||
console.log('📸 11d: Capturing Papa Markus Dialog...');
|
||||
await page.screenshot({ path: path.join(SCREENSHOTS_DIR, '11d_tavern_markus_dialog.png') });
|
||||
|
||||
// Click "🎲 Auf geht's Papa, Liar's Dice spielen!" -> opens intro modal
|
||||
const startDiceIntroBtn = await page.$('.dialog-actions .action-btn');
|
||||
if (startDiceIntroBtn) {
|
||||
await startDiceIntroBtn.click();
|
||||
await new Promise(r => setTimeout(r, 800));
|
||||
console.log('📸 11e: Capturing Liar\'s Dice INTRO Modal...');
|
||||
await page.screenshot({ path: path.join(SCREENSHOTS_DIR, '11e_tavern_liars_dice_intro.png') });
|
||||
|
||||
// Start Liar's Dice Match
|
||||
const startMatchBtn = await page.$('.start-duel-action-btn');
|
||||
if (startMatchBtn) {
|
||||
await startMatchBtn.click();
|
||||
await new Promise(r => setTimeout(r, 1200));
|
||||
console.log('📸 11f: Capturing Liar\'s Dice Initial Round View...');
|
||||
await page.screenshot({ path: path.join(SCREENSHOTS_DIR, '11f_tavern_liars_dice_gameplay.png') });
|
||||
|
||||
// Submit player bid
|
||||
const bidBtn = await page.$('.bid-action-btn');
|
||||
if (bidBtn) {
|
||||
await bidBtn.click();
|
||||
await new Promise(r => setTimeout(r, 1500)); // wait for Markus response
|
||||
console.log('📸 11g: Capturing Liar\'s Dice Markus Counter-Bid...');
|
||||
await page.screenshot({ path: path.join(SCREENSHOTS_DIR, '11g_tavern_liars_dice_markus_turn.png') });
|
||||
}
|
||||
|
||||
// Call bluff
|
||||
const bluffBtn = await page.$('.call-bluff-btn');
|
||||
if (bluffBtn) {
|
||||
await bluffBtn.click();
|
||||
await new Promise(r => setTimeout(r, 1200)); // wait for shot animation
|
||||
console.log('📸 11h: Capturing Liar\'s Dice Bluff Resolution & Gaoliang Shot...');
|
||||
await page.screenshot({ path: path.join(SCREENSHOTS_DIR, '11h_tavern_liars_dice_bluff_call.png') });
|
||||
}
|
||||
|
||||
// Close modal
|
||||
const closeDiceBtn = await page.$('.liars-dice-box .duel-close-btn');
|
||||
if (closeDiceBtn) {
|
||||
await closeDiceBtn.click();
|
||||
await new Promise(r => setTimeout(r, 400));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Return to Hinterland
|
||||
const backToHinterland = await page.$('.hotspot-door-back-hinterland');
|
||||
if (backToHinterland) {
|
||||
await backToHinterland.click();
|
||||
await new Promise(r => setTimeout(r, 600));
|
||||
}
|
||||
|
||||
// Test Gstanzl Duel Intro & Gameplay
|
||||
console.log('⚔️ Testing Gstanzl-Fechten Intro & Minigame...');
|
||||
const duelBtn = await page.$('.duel-trigger');
|
||||
|
||||
Reference in New Issue
Block a user