{
if (!this.player) return;
this.time = this.player.currentTime;
if (!this.player.paused) {
setTimeout(updateTimeFn, this.interval);
}
};
setTimeout(updateTimeFn, this.interval);
gtag('event', 'audio_start', {
'audio_title': 'Level 999 N - \"悪辣\"',
'audio_url': 'https://listen.style/p/backroomsbanashi/3pnzp039',
'audio_current_time': this.time
});
});
this.player.addEventListener('timeupdate', () => {
this.updateProgressBar();
if (this.hasPlayed && Math.floor(this.time / 30) != Math.floor(this.lastPosition / 30)) {
this.updatePosition();
}
// 95%以上再生で完了リクエスト送信
if (this.player.duration > 0 && this.time > (this.player.duration * 0.95) && !this.completedSent) {
this.completedSent = true;
this.updatePosition();
}
// 巻き戻しリセット
if (this.player.duration > 0 && this.time < (this.player.duration * 0.9)) {
this.completedSent = false;
}
});
this.player.addEventListener('pause', () => {
this.playing = false;
if (this.hasPlayed) {
this.updatePosition();
}
});
window.addEventListener('beforeunload', () => {
if (this.player && !this.player.paused) this.updatePosition();
});
this.player.addEventListener('ratechange', () => {
this.updatePlaybackRate();
});
this.player.addEventListener('loadeddata', () => {
if (this._loadeddataTriggered) return;
this._loadeddataTriggered = true;
this.player.currentTime = this.time;
this.lastPosition = this.time;
this.player.playbackRate = this.speed;
}, { once: true });
},
playEpisode(start) {
// console.log('play', this.time);
if ((start <= this.player.currentTime) && (this.player.currentTime <= (start + 5))) {
if (this.player.paused) {
this.player.play();
}
return;
}
this.time = start;
this.player.currentTime = this.time;
this.player.play();
// console.log(this.time);
},
togglePlay() {
this.player.paused ? this.player.play() : this.player.pause();
},
updatePosition() {
this.lastPosition = this.time;
fetch('https://listen.style/p/01hfkthbqfc8m7z714kw40x9td/01hfkthbtxw5v6ecz5vf9j64bs/update_position', {
method: 'POST',
body: JSON.stringify({ time: this.time }),
headers: { 'Content-Type': 'application/json','X-CSRF-TOKEN': 'Al1aoI1t9YxuF3ezFCyV4DjeTgU9iW5PzhupjHIZ'}
});
},
updatePlaybackRate() {
fetch('https://listen.style/update_playback_rate', {
method: 'POST',
body: JSON.stringify({ rate: this.player.playbackRate }),
headers: { 'Content-Type': 'application/json','X-CSRF-TOKEN': 'Al1aoI1t9YxuF3ezFCyV4DjeTgU9iW5PzhupjHIZ'}
});
},
updateTime(t) {
if (t < 0) {
t = 0;
} else if (this.player.duration < t) {
t = Math.max(this.player.duration - 3, 0);
}
this.time = t;
this.player.currentTime = t;
this.updateProgressBar();
},
updateProgressBar(percent) {
if (!percent) {
percent = this.time * 100 / this.player.duration;
}
this.progressBar.style.width = percent + '%';
this.progressBar.parentElement.setAttribute('aria-valuenow', Math.floor(percent));
},
setupKeyboardShortcuts() {
document.addEventListener('keydown', (event) => {
const playerElement = document.activeElement.tagName === 'INPUT' || document.activeElement.tagName === 'TEXTAREA' || document.activeElement.isContentEditable;
if (playerElement) return; // Ignore key events when input or textarea is focused
const shiftNotAllowedShortcuts = ['Space', 'KeyK', 'KeyM', 'ArrowLeft', 'ArrowRight', 'KeyJ', 'KeyL', 'KeyS', 'ArrowUp', 'ArrowDown'];
if (shiftNotAllowedShortcuts.includes(event.code) && event.shiftKey) {
// If shift is pressed and the shortcut should not allow shift, return
return;
}
switch (event.code) {
case 'Space':
case 'KeyK':
event.preventDefault();
this.togglePlay();
break;
case 'KeyM':
event.preventDefault();
this.player.muted = !this.player.muted;
break;
case 'ArrowLeft':
event.preventDefault();
this.updateTime(this.time - 5);
break;
case 'ArrowRight':
event.preventDefault();
this.updateTime(this.time + 5);
break;
case 'KeyJ':
event.preventDefault();
this.updateTime(this.time - 10);
break;
case 'KeyL':
event.preventDefault();
this.updateTime(this.time + 10);
break;
case 'KeyS':
event.preventDefault();
this.addStar();
break;
case 'Period': // >
event.preventDefault();
if (event.shiftKey) {
this.speed = Math.min(Math.max(parseFloat(this.speed) + 0.1, 0.5), 4.0);
this.speed = parseFloat(this.speed);
this.player.playbackRate = this.speed;
}
break;
case 'Comma': // <
event.preventDefault();
if (event.shiftKey) {
this.speed = Math.min(Math.max(parseFloat(this.speed) - 0.1, 0.5), 4.0);
this.speed = parseFloat(this.speed);
this.player.playbackRate = this.speed;
}
break;
case 'ArrowUp':
event.preventDefault();
this.changeVolume(parseFloat(this.volume) + 0.05);
break;
case 'ArrowDown':
event.preventDefault();
this.changeVolume(parseFloat(this.volume) - 0.05);
break;
default:
break;
}
});
},
changeVolume(volume) {
if (this.player && (volume >= 0 && volume <= 1)) {
this.volume = volume;
this.player.volume = this.volume;
}
}
}" x-init="
window.addEventListener('notify', event => {
showNotification(event.detail.message);
});
window.addEventListener('replace-text', event => {
replaceText(event.detail.searchString, event.detail.replacementString);
});
const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');
if (mediaQuery.matches) {
document.documentElement.classList.add('dark');
}
setupKeyboardShortcuts();
">
タイトル: Level 999 N - "悪辣"
作者: Oda_keeent
ソース: http://japan-backrooms-wiki.wikidot.com/level-999-n
作成年: 2022
ライセンス: CC BY-SA 3.0
©️The Backrooms JP Wiki: http://japan-backrooms-wiki.wikidot.com
#Backrooms #バックルーム #SF
作者: Oda_keeent
ソース: http://japan-backrooms-wiki.wikidot.com/level-999-n
作成年: 2022
ライセンス: CC BY-SA 3.0
©️The Backrooms JP Wiki: http://japan-backrooms-wiki.wikidot.com
#Backrooms #バックルーム #SF
感想
まだ感想はありません。最初の1件を書きましょう!
サマリー
Level 999 Nでは、地下鉄のような構造が続く空間で、休息の場や一時的な生活の場として利用することができます。放浪者の多くはここで休憩しています。しかし、長期間この階層に留まると、口述の出口付近に外れ落ちる可能性があります。
Level 999 Nの概要
Level 999 N 危険度① 空間信頼性・安定 実体信頼性・実体なし
Level 999 Nとは、バックルームの999N番目の階層である。
概要
Level 999 Nは、地下鉄のような構造が続く空間である。線路やベンチ、改札口や改札口や自販機などが確認されている。
自販機には現実世界と同じような飲料、スナック菓子が置かれており、問題なく購入・接種が可能である。空気は湿っており、わずかにカビ臭い。
Level 999 Nの駅のホームは、気温が程よく保たれており、また、自販機が確実に設置されている。
そのため、休息の場、あるいは一時的な生活の場として利用可能であり、この階層への入り方も相まって、放浪者の多くがここで休憩することになるだろう。
Level 999 Nの駅構内には無人売店があり、食料品や娯楽用品を容易に入手できる。
自販機や売店は品切れになっても数分後に補充され、再び購入が可能になる。
スタッフルームには真新しいタオルや湯沸かし器、簡易的なシャワーなどが設置されており、どれも問題なく利用できる。
中にはここでの定住を選ぶ放浪者も少なくないようだ。
しかし、長期間この階層に留まると、口述の出口付近に外れ落ちることがある。
Level 999 Nでは何種類かのフリーWi-Fiが使用可能であり、場所によって使用できるWi-Fiの種類は異なる。
ほとんどの場合、Wi-Fiパスワードはパスワードである。
接続した場合、位置情報は日本国内のランダムな都市を示す。
Level 999 Nの特徴と出口
Level 999 Nを探索していると、特定の方向から車の走行音や人間の話し声などが聞こえてくることがある。
その音の方向に向かうほど音量は大きくなっていき、最終的に出口と呼ばれる階段の上に扉がある空間に出る。
出口の扉には窓が張られているが、白い光により外部の風景を見ることはできない。
音はこの扉の奥から発せられているようであり、この時点でほとんどの放浪者は現実世界への帰還の希望を抱く。
階段を登るたびに空気が乾燥していき、カビ臭さは薄まっていく。
最終的に扉に手をかけると、放浪者はレベル0にたどり着く。
入り口と出口。階層への入り方。
Level 100 N以降の階層にて外れ落ちた際に、ごく稀にLevel 999 Nにたどり着く。
階層からの出方。出口の扉を開けるとレベル0にたどり着く。
Wi-Fi、危険度1、実態なし、居住可能、空間安定、補給可能、通常階層通路のタグがついています。
レベル999階層ですね。
放浪者によって撮影されたレベル999Nの出口。
なんかよくあるホテルとか学校とかの一番上って感じですね。
白い光が入ってますね。
実態なしの階層もあるんだなぁ。
実質レベル0と同じ感じですかね。
レベル0も似たような、でもあれは実態がいるかもしれないって言ってたな。
レベル0じゃないか、レベル1と似たような感じなのかな。
食べ物とかがあって、こっちの方がでも快適そうですね。
スタッフルームには真新しいタオルや湯沸かし器、簡易的なシャワー。
カプセルホテルみたいな感じだな。
長期間この階層に留まると後日の出口付近に外れ落ちることがある。
出口付近に外れ落ちることがある。
チェックアウトしてくださいね、みたいなことかな。
レベル0に行ってまた放浪してくださいよ、みたいな。
数字が大きいからって危険度が高いってわけでもないんですね。
面白いな。
ではまた次回お疲れ様です。
04:58
コメント
スクロール