#============================================================================== # ☆VXAce RGSS3 「連続アニメーション」☆ #      EnDlEss DREamER # URL:http://mitsu-evo.6.ql.bz/ # 製作者 mitsu-evo # Last:2012/1/20 #   スキルで設定個数分のアニメーションを表示する # ▼ バトルレイアウト変更よりも下に。 #============================================================================== =begin 使用方法 スキルのメモ欄に「<連続アニメ:10,20,30>」と記入すると 指定スキル使用時に通常設定のアニメーション後に アニメーションIDの10番・20番・30番を表示する。 通常攻撃と同じアニメは「-1」を入れて下さい。 スキルのメモ欄に「<使用者アニメ:10,20,30>」と記入すると 指定スキル使用前にスキル使用バトラーにアニメーションを表示します。 連続アニメと同じくいくらでも連続して表示します。 ただし、通常攻撃と同じアニメ指定は出来ません。 =end $ed_rgss3 = {} if $ed_rgss3 == nil $ed_rgss3["ed_continuity_anime"] = true COUNTINUITY_ANIME_MEMO = "連続アニメ" # 連続アニメ用スキルのメモ欄指定文字 SKILL_USER_ANIME_MEMO = "使用者アニメ" # スキル使用者アニメ用スキルのメモ欄指定文字 #============================================================================== # ■ Scene_Battle #------------------------------------------------------------------------------ #  バトル画面の処理を行うクラスです。 #============================================================================== class Scene_Battle < Scene_Base #-------------------------------------------------------------------------- # ● スキルアニメのメモ欄取得 #-------------------------------------------------------------------------- def skill_anime_memo(skill) skill_note = [] skill_note2 = [] a = skill.note.scan(/<#{COUNTINUITY_ANIME_MEMO}[::](-?\d+(?:[ ]*,[ ]*-?\d+)*)>/) a.flatten! # 連続アニメ unless a == [] and a.empty? $1.scan(/-?\d+/).each { |num| skill_note.push(num.to_i)} @skill_continuity_anime = skill_note else @skill_continuity_anime = [] end b = skill.note.scan(/<#{SKILL_USER_ANIME_MEMO}[::](-?\d+(?:[ ]*,[ ]*-?\d+)*)>/) b.flatten! # スキル使用者アニメ unless b == [] and b.empty? $1.scan(/-?\d+/).each { |num| skill_note2.push(num.to_i)} @skill_user_anime = skill_note2 else @skill_user_anime = [] end end #-------------------------------------------------------------------------- # ● 戦闘行動の実行 : スキル #-------------------------------------------------------------------------- alias ed_continuity_anime_execute_action execute_action def execute_action item = @subject.current_action.item skill_anime_memo(item) ed_continuity_anime_execute_action end #-------------------------------------------------------------------------- # ● スキル使用者アニメーションの表示 # targets : 対象者の配列 # animation_id : アニメーション ID (-1: 通常攻撃と同じ) #-------------------------------------------------------------------------- def befor_skill_display_animation unless @skill_user_anime == nil or @skill_user_anime == [] # スキル使用者アニメの場合 for anime in @skill_user_anime if anime > 0 # targets はバトラーを格納する配列なので、一人の場合は二重にする。 battler = [] battler << @subject # mirror は アクターなら反転無し。敵なら反転有り。 if $ed_rgss3["ed_battle_scene"] if @subject.is_a?(Game_Enemy) # 敵のバックアタック:右側に居る場合 ? 反転なし : 反転有り mirror = @subject.back_attack? ? false : true else # 味方のバックアタック:左側に居る場合 ? 反転あり : 反転なし mirror = @subject.back_attack? ? true : false end else # 敵の場合は反転アニメ。 mirror = @subject.is_a?(Game_Enemy) ? true : false end show_normal_animation(battler, anime, mirror) wait_for_animation end end @skill_user_anime = [] end end #-------------------------------------------------------------------------- # ● アニメーションの表示 # targets : 対象者の配列 # animation_id : アニメーション ID (-1: 通常攻撃と同じ) #-------------------------------------------------------------------------- alias ed_continuity_anime_show_animation show_animation def show_animation(targets, animation_id) # バトルレイアウト変更:extensionが導入されていないならここで処理。 befor_skill_display_animation unless $ed_rgss3["ed_battle_extension"] unless @skill_continuity_anime == nil or @skill_continuity_anime == [] # 連続アニメの場合 ed_continuity_anime_show_animation(targets, animation_id) for anime in @skill_continuity_anime if anime < 0 show_attack_animation(targets) else ed_continuity_anime_show_animation(targets, anime) end end @skill_continuity_anime = [] else # 通常アニメの場合 ed_continuity_anime_show_animation(targets, animation_id) end end end