/* ============================================================ mascots2.jsx — 仲間(協力者)4キャラ ① ウニ(まっくろくろすけ風) ② モグラ ③ ヤギ ④ 梅干し(男梅風) ピコ・パンダと同じ16ドット幅・同じ仕組み(window.PixelCreature を利用) pose: "stand" | "wave" | "sleep" ============================================================ */ /* ============================================================ ① ウニ — まっくろくろすけ風(黒い毛玉・大きな白目・トゲ) ============================================================ */ const UNI_PAL = { o: "var(--ink)", a: "var(--ink)", d: "#ffffff", dbase: "var(--ink)", "-": "var(--ink)", p: "var(--blush)", m: "oklch(0.66 0.17 22)", }; const UNI_STAND = [ "....o.o.o....", ".o.ooooooo.o.", "..ooooooooo..", ".ooooooooooo.", "ooooooooooooo", ".oodooooodoo.", "ooooooooooooo", ".opooooooopo.", "ooooommmooooo", ".ooooooooooo.", "..ooooooooo..", ".o.ooooooo.o.", "....o.o.o....", ]; const UNI_WAVE = [ "....o.o.o....", ".o.ooooooo.o.", "..ooooooooo..", ".ooooooooooo.", "ooooooooooooo", ".oodooooodoo.", "ooooooooooooo", ".opooooooopo.", "ooooommmooooo", ".ooooooooooo.", "..ooooooooo..", ".o.ooooooo.o.", "....o.o.o....", ]; const UNI_SLEEP = [ "....o.o.o....", ".o.ooooooo.o.", "..ooooooooo..", ".ooooooooooo.", "ooooooooooooo", ".oo-ooooo-oo.", "ooooooooooooo", ".opooooooopo.", "ooooommmooooo", ".ooooooooooo.", "..ooooooooo..", ".o.ooooooo.o.", "....o.o.o....", ]; function PixelUni({ pose = "stand" }) { return ( ); } /* ============================================================ ② モグラ — ずんぐり茶色・大きなピンクの鼻・小さな目・爪 ============================================================ */ const MOLE_O = "oklch(0.52 0.055 60)"; const MOLE_PAL = { o: MOLE_O, a: MOLE_O, d: "var(--ink)", dbase: MOLE_O, "-": "var(--ink)", n: "oklch(0.74 0.11 18)", p: "oklch(0.70 0.09 20)", m: "var(--ink)", c: "oklch(0.92 0.02 70)", s: "oklch(0.92 0.02 70)", }; const MOLE_STAND = [ "...oooooooooo...", "..oooooooooooo..", "..oooooooooooo..", "..oooodoodoooo..", "..ooooonnooooo..", ".aopooommooopoa.", "a.oooooooooooo.a", "..oooooooooooo..", "...oo......oo...", "...cc......cc...", ]; const MOLE_WAVE = [ "...oooooooooo...", "..oooooooooooo..", "..oooooooooooo..", "..oooodoodoooo..", "..ooooonnooooo..", ".aopooommooopo..", "a.oooooooooooo..", "..oooooooooooo..", "...oo......oo...", "...cc......cc...", ]; const MOLE_SLEEP = [ "...oooooooooo...", "..oooooooooooo..", "..oooooooooooo..", "..oooo-oo-oooo..", "..ooooonnooooo..", ".aopooommooopoa.", "a.oooooooooooo.a", "..oooooooooooo..", "...oo......oo...", "...cc......cc...", ]; function PixelMole({ pose = "stand" }) { return ( ); } /* ============================================================ ③ ヤギ — 参考画像どおり(クリーム・オリーブのツノ・ピンク耳/ほっぺ/口・あごひげ・茶の蹄) 16幅 / 目=黒(d) / dbase=クリーム ============================================================ */ const GOAT_O = "oklch(0.93 0.012 85)"; const GOAT_PAL = { o: GOAT_O, h: "oklch(0.53 0.06 95)", // ツノ(オリーブ #807344) p: "oklch(0.80 0.16 340)", // ピンク(ほっぺ・口) e: "oklch(0.90 0.06 340)", // 耳(薄いピンク) l: "oklch(0.83 0.018 300)", // あごひげ(ラベンダー) b: "oklch(0.43 0.06 55)", // 蹄・脚(茶 #6d4822) d: "var(--ink)", dbase: GOAT_O, // 目(黒) "-": "var(--ink)", }; // 0123456789012345 const GOAT_STAND = [ "...hh......hh...", "....hh....hh....", "...oooooooooo...", "oooooooooooooooo", ".eooooooooooooe.", "..oodoooooodoo..", ".oopoooooooopoo.", "b.ooooppppoooo.b", "..oooooooooooo..", "...oo.llll.oo...", "...bb..ll..bb...", "................", ]; const GOAT_WAVE = [ "...hh......hh...", "....hh....hh....", "...oooooooooo...", "oooooooooooooooo", ".eooooooooooooe.", "..oodoooooodoo..", ".oopoooooooopo..", "b.ooooppppoooo..", "..oooooooooooo..", "...oo.llll.oo...", "...bb..ll..bb...", "................", ]; const GOAT_SLEEP = [ "...hh......hh...", "....hh....hh....", "...oooooooooo...", "oooooooooooooooo", ".eooooooooooooe.", "..oo-oooooo-oo..", ".oopoooooooopoo.", "b.ooooppppoooo.b", "..oooooooooooo..", "...oo.llll.oo...", "...bb..ll..bb...", "................", ]; function PixelGoat({ pose = "stand" }) { return ( ); } /* ============================================================ /* ============================================================ ④ 梅干し — ウニのフォルム参考(赤い丸・しわ・へた跡)/ 緑なし 13幅 / 目=白(d) / dbase=梅の赤 ============================================================ */ const UME_O = "oklch(0.54 0.17 27)"; const UME_PAL = { o: UME_O, w: "oklch(0.43 0.15 27)", // しわ・へた跡(濃い赤) d: "oklch(0.97 0.012 60)", dbase: UME_O, // 目(白) p: "oklch(0.72 0.13 18)", // ほっぺ m: "oklch(0.33 0.12 27)", "-": "var(--ink)", // 口(すっぱい) }; const UME_STAND = [ "...............", ".....oowoo.....", "...ooooooooo...", "..ooooooooooo..", "..oowooooowoo..", ".ooooooooooooo.", ".oooodooodoooo.", ".oopooooooopoo.", ".ooooommmooooo.", ".ooooooooooooo.", "..ooowooowooo..", "..ooooowooooo..", "...ooooooooo...", ".....ooooo.....", "...............", ]; const UME_WAVE = [ "...............", ".....oowoo.....", "...ooooooooo...", "..ooooooooooo..", "..oowooooowoo..", ".ooooooooooooo.", ".oooodooodoooo.", ".oopooooooopoo.", ".ooooommmooooo.", ".ooooooooooooo.", "..ooowooowooo..", "..ooooowooooo..", "...ooooooooo...", ".....ooooo.....", "...............", ]; const UME_SLEEP = [ "...............", ".....oowoo.....", "...ooooooooo...", "..ooooooooooo..", "..oowooooowoo..", ".ooooooooooooo.", ".oooo-ooo-oooo.", ".oopooooooopoo.", ".ooooommmooooo.", ".ooooooooooooo.", "..ooowooowooo..", "..ooooowooooo..", "...ooooooooo...", ".....ooooo.....", "...............", ]; function PixelUme({ pose = "stand" }) { return ( ); } /* ---------- レジストリ ---------- */ const MASCOTS2 = [ { id: "uni", no: "03", name: "ウニ", Comp: PixelUni }, { id: "mole", no: "04", name: "モグラ", Comp: PixelMole }, { id: "goat", no: "05", name: "ヤギ", Comp: PixelGoat }, { id: "ume", no: "06", name: "梅干し", Comp: PixelUme }, ]; Object.assign(window, { PixelUni, PixelMole, PixelGoat, PixelUme, MASCOTS2 });