#製作者:奈々(なな) #このスクリプトは製作途中のサンプルです。作品への利用はご遠慮願います。 module Nana module MoonPhase #月相を格納する変数ID(イベントチェック用) #新月を0、満月を4とし、0,1,2,3,4,5,6,7と移行する PHASE_VAL = 0 #月相を格納する変数ID(戦闘計算用) #新月を0、満月を100とし、0,25,50,75,100,75,50,25と移行する MOON_VAL = 0 #月相に対応するスイッチID #新月から順に、対応するスイッチがONに、それ以外がOFFになる PHASE_SW = [0, 0, 0, 0, 0, 0, 0] #マップ画面において、月相が変化する歩数 WOLK = 0 #バトル画面において、月相が変化するターン数 TURN = 0 #月グラフィックの位置(マップ画面) # 0:左寄せ 1:中央寄せ 2:右寄せ MAP_POS = 0 #月グラフィックの位置(バトル画面) # 0:左寄せ 1:中央寄せ 2:右寄せ BATTLE_POS = 0 end end #============================================================================== # ■ Game_System #------------------------------------------------------------------------------ # システム周りのデータを扱うクラスです。セーブやメニューの禁止状態などを保存 # します。このクラスのインスタンスは $game_system で参照されます。 #============================================================================== class Game_System #-------------------------------------------------------------------------- # ● 公開インスタンス変数 #-------------------------------------------------------------------------- attr_accessor :moon_phase # 月相 #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- alias moon_initialize initialize def initialize moon_initialize @moon_phase = 0 end end #============================================================================== # ■ Spriteset_Map #------------------------------------------------------------------------------ # マップ画面のスプライトやタイルマップなどをまとめたクラスです。このクラスは # Scene_Map クラスの内部で使用されます。 #============================================================================== class Spriteset_Map #-------------------------------------------------------------------------- # ● タイマースプライトの作成 #-------------------------------------------------------------------------- #initializeをaliasすると都合が悪いのでここに挿入 alias moon_create_timer create_timer def create_timer moon_create_timer create_moon end #-------------------------------------------------------------------------- # ● 月相の作成 #-------------------------------------------------------------------------- def create_moon @moon = Sprite_Moon.new(@viewport1) @moon.z = 500 end #-------------------------------------------------------------------------- # ● 解放 #-------------------------------------------------------------------------- alias moon_dispose dispose def dispose moon_dispose @moon.dispose end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- alias moon_update update def update moon_update @moon.update if @moon end end #============================================================================== # ■ Sprite_Moon #------------------------------------------------------------------------------ # 月相のスプライト。 #============================================================================== class Sprite_Moon < Sprite #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- def initialize(viewport) super(viewport) self.bitmap = Cache.system("Moon") phase = $game_system.moon_phase self.src_rect.set(phase*bitmap.width/8, 0, bitmap.width/8, bitmap.height) pos = $game_party.in_battle ? Nana::MoonPhase::MAP_POS : Nana::MoonPhase::BATTLE_POS case pos when 1 self.x = (Graphics.width - self.width) / 2 when 2 self.x = Graphics.width - self.width end end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- def update super phase = $game_system.moon_phase self.src_rect.set(phase*bitmap.width/8, 0, bitmap.width/8, bitmap.height) end end