feat: initialize sunrise with 100-player shared rooms

This commit is contained in:
2026-10-30 16:36:35 +09:00
commit 31d6eac4c2
257 changed files with 66063 additions and 0 deletions
+29
View File
@@ -0,0 +1,29 @@
export type RainGearItem = 'umbrella' | 'raincoat' | 'hood';
/** Equipment is independent of movement and emotes. */
export function createRainGearState() {
const worn = { umbrella: false, raincoat: false, hood: false };
let available = false;
return {
get available() { return available; },
get umbrella() { return worn.umbrella; },
get raincoat() { return worn.raincoat; },
get hood() { return worn.hood; },
apply(state: { umbrella: boolean; raincoat: boolean; hood: boolean }) {
worn.umbrella = state.umbrella;
worn.raincoat = state.raincoat;
worn.hood = state.raincoat && state.hood;
},
updateWeather(rain: number, snowfall: number) {
available = rain > 0 || snowfall > 0;
if (!available) { worn.umbrella = false; worn.raincoat = false; worn.hood = false; }
},
toggle(item: RainGearItem) {
if (!available) return false;
if (item === 'hood' && !worn.raincoat) return false;
worn[item] = !worn[item];
if (!worn.raincoat) worn.hood = false;
return true;
},
};
}