ミニゲーム: ログインボーナス

概要

「ログインボーナス」ミニゲームは、日付ごとに設定された報酬をカレンダーから受け取れる ユーティリティ MOD です。月間カレンダー、当日の報酬詳細、受取履歴のサマリーを 1 画面にまとめ、 プレイヤーの EXP やアイテム、SP を自動で付与します。受け取り情報はブラウザの localStorage(キー: mini_login_bonus_claims_v1)に保存され、ページ再読込後も保持されます。

画面構成

報酬ローテーション

報酬は 7 種類の基本報酬と 3 種類の特別報酬で構成され、日付に応じて切り替わります。名称や説明文は ローカライズ API に対応しており、プレースホルダーには報酬量を渡します。【F:games/login_bonus.js†L5-L138】

受取フロー

  1. カレンダーで当日が自動選択されます。別日をクリックすると詳細を確認できます。
  2. 当日分のみ受取ボタンが有効になります。過去分は履歴確認のみ、未来分はロック表示です。【F:games/login_bonus.js†L808-L839】
  3. 受取ボタンを押すと grantReward() が呼ばれ、報酬の種類別にプレイヤー API を介して成果を反映します。結果はメッセージログに逐次表示されます。【F:games/login_bonus.js†L880-L976】【F:games/login_bonus.js†L1010-L1066】
  4. 受け取った日付は state.claims に記録され、即座にカレンダーとサマリーが再描画されます。【F:games/login_bonus.js†L909-L930】

セッション中に獲得した EXP は state.sessionXp に加算され、 MiniExp のスコアとして返却されます(getScore())。【F:games/login_bonus.js†L217-L227】【F:games/login_bonus.js†L1079-L1103】

保存とローカライズ

受取履歴は localStorage に JSON で保存されます。破損したデータは読み込み時に排除され、 受取日時は ISO 形式(YYYY-MM-DD)で管理されます。ロケール変更イベントを購読し、タイトルやボタンなどを再翻訳します。【F:games/login_bonus.js†L210-L337】【F:games/login_bonus.js†L1121-L1134】

プレイヤー API との連携

オプション引数 opts.player に MiniExp 本編のプレイヤー API を渡すと、 以下のフックでゲーム内リソースを操作します。いずれも例外は握り潰さずログ出力し、失敗時はフォールバックのメッセージを表示します。【F:games/login_bonus.js†L214-L227】【F:games/login_bonus.js†L872-L1066】

アイテム名は ITEM_DEFS によるラベル定義を参照し、 .format.itemSummary などのローカライズキーを通じて多言語化されます。【F:games/login_bonus.js†L30-L109】【F:games/login_bonus.js†L238-L288】

カスタマイズのヒント