Project1
标题: 横版中敌人出现时出错 [打印本页]
作者: 小小小蚩尤 时间: 2012-8-21 19:00
标题: 横版中敌人出现时出错
敌人是一个。实际上也是一个,
但是上图中敌人出现时整个行走图
怎样把它和主角一样是单个的,并且是行走中的。
附上三段横版代码- #==============================================================================
- # ■ module N01 Ver2.4
- #------------------------------------------------------------------------------
- # サイドビューバトルのカスタマイズ項目です。
- #==============================================================================
- module N01
- #--------------------------------------------------------------------------
- # ● セッティング
- #--------------------------------------------------------------------------
- # アクター初期位置 一人目 二人目 三人目 四人目
- # X軸 Y軸 X軸 Y軸 X軸 Y軸 X軸 Y軸
- ACTOR_POSITION = [[415,130],[425,165],[435,200],[445,235]]
- # 戦闘メンバー最大数(多人数パーティスクリプト等で増えた時専用)
- # 上の初期位置も人数分増やしてください
- MAX_MEMBER = 4
-
- # 戦闘で行動終了後、次のバトラーが行動開始するまでに挟むウエイト時間
- ACTION_WAIT = 6
- # エネミーのコラプス(撃破時の退場)前に挟むウエイト時間
- COLLAPSE_WAIT = 12
- # 勝利前に挟むウエイト時間
- WIN_WAIT = 70
-
-
- # 武器なしで攻撃した場合のヒットアニメID
- NO_WEAPON = 82
- # 二刀流設定 武器二つ装備時の一発当たりのダメージ量を設定します。数値は%
- # 通常攻撃 スキル,アイテム
- TWO_SWORDS_STYLE = [ 60, 100]
- # ステート拡張・自動復活時のアニメID
- RESURRECTION = 41
- # 吸収攻撃で対象のHPが回復する場合、吸収者にダメージを与えるならtrue
- ABSORB_DAMAGE = true
-
- # ダメージ数字画像のファイル名(横へ等間隔で0~9と並べたシステムフォルダ内画像)
- DAMAGE_GRAPHICS = "Number+"
- # 回復数字画像のファイル名
- RECOVER_GRAPHICS = "Number-"
- # 数値の文字間隔
- NUM_INTERBAL = -3
- # 数値の表示時間
- NUM_DURATION = 68
- # ダメージウインドウを消し、文字だけ表示させる場合はtrue
- NON_DAMAGE_WINDOW = false
- # ダメージウインドウに表示させる単語。表示させたくない場合は""とします。
- POP_DAMAGE0 = "miss" # ダメージが0の時(数字の0はPOPしません)
- POP_MISS = "miss" # 攻撃が当たらなかった時
- POP_EVA = "miss" # 攻撃を回避した時
- POP_CRI = "重击!" # クリティカル時
- POP_MP_DAM = "MP吸收" # MPのダメージを受けた時
- POP_MP_REC = "MP恢复" # MPが回復した時
-
- # 影グラフィック 利用するならtrueしないならfalse
- SHADOW = true
- # 歩行グラフィック認識 歩行グラを利用するならtrueしないならfalse
- # falseにした場合、必ずファイルNo1以降を用意し、ファイルNo0は使わないように
- # またNo1以降の画像サイズは統一させる(全キャラ統一ではなくそのキャラで統一)
- WALK_ANIME = true
- # バトラーグラフィックのアニメセル数(横分割数)
- ANIME_PATTERN = 3
- # バトラーグラフィックのアニメ種類数(縦分割数)
- ANIME_KIND = 4
-
- # バックアタック(不意打ち時に画面反転) 利用するならtrueしないならfalse
- BACK_ATTACK = true
- # バックアタックで戦闘背景まで反転させないならfalse
- BACK_ATTACK_NON_BACK_MIRROR = true
- # バックアタック無効化設定 不意打ちに対しても効果を発揮。
- # 全て装備していることが条件で、スキルは取得しているだけで効果を発揮します。
- # バックアタックを無効化する武器ID 表記例) = [1] 複数ある表記例) = [1,2]
- NON_BACK_ATTACK_WEAPONS = []
- # バックアタックを無効化する盾ID
- NON_BACK_ATTACK_ARMOR1 = []
- # バックアタックを無効化する頭防具ID
- NON_BACK_ATTACK_ARMOR2 = []
- # バックアタックを無効化する体防具ID
- NON_BACK_ATTACK_ARMOR3 = []
- # バックアタックを無効化するアクセサリID
- NON_BACK_ATTACK_ARMOR4 = []
- # バックアタックを無効化するスキルID
- NON_BACK_ATTACK_SKILLS = []
- # 必ずバックアタックを発生させるスイッチNo(無効化よりも優先されます)
- BACK_ATTACK_SWITCH = []
-
- #==============================================================================
- # ■ 単発アクション
- #------------------------------------------------------------------------------
- # 通しアクションに利用するものです。これ単体では意味を持ちません。
- #==============================================================================
- # ここの単発アクション名同士は、かぶらないようにしてください。
- # 通しアクション名とかぶる分には問題ありません。
- ANIME = {
- #--------------------------------------------------------------------------
- # ● バトラーアニメ設定
- #--------------------------------------------------------------------------
- # ファイルNo…利用するグラフィックファイルのナンバー。
- # アクターの場合、0は歩行グラフィックを参照します。
- # 1以降は"キャラクターグラフィック名+_1"のように_の後のナンバーの
- # グラフィックを参照します。例)$ラルフ_1 のファイルNoは1
- # グラフィックは全てキャラクターフォルダから探します。
- #
- # 種類…グラフィックファイルのセルの縦位置。上から0~3と続きます。
- # 速度…アニメの更新速度。数字が低いほど早く更新します。
- # ループ… [0=往復ループ] [1=片道ループ] [2=片道のみでループしない]
- # 待ち…ループしない(2)場合、最後のアニメを表示してからの待ち(ウエイト)時間。
- # 固定…アニメせずに固定する場合、セル番号(横位置)を指定。固定しない通常は-1。逆再生は-2。
- # Z軸…手前に表示するならプラス。通常は画面下ほど手前に表示されます。
- # 影…影グラフィックを表示するならtrue、しない場合はfalse
- # 武器…武器を表示する場合は武器アクション名を。しない場合は""。
-
- # バトラーアニメ名 ファイルNo 種類 速度 ループ 待ち 固定 Z軸 影 武器
- "待機" => [ 0, 1, 15, 0, 0, -1, 0, true,"" ],
- "待機(固定)" => [ 0, 1, 10, 2, 0, 1, 0, true,"" ],
- "右向き(固定)" => [ 0, 2, 10, 1, 2, 1, 0, true,"" ],
- "ダメージ" => [ 0, 3, 4, 2, 0, -1, 0, true,"" ],
- "戦闘不能" => [ 0, 3, 10, 1, 8, 0, 0, true,"" ],
- "前進" => [ 0, 1, 1, 1, 0, -1, 0, true,"" ],
- "後退" => [ 0, 2, 2, 1, 0, -1, 0, true,"" ],
- "手前表示" => [ 0, 1, 2, 1, 0, -1, 600, true,"" ],
- "武器振り攻撃" => [ 0, 1, 1, 2, 0, -1, 2, true,"縦振り"],
- "武器振り攻撃L" => [ 0, 1, 1, 2, 0, -1, 2, true,"縦振りL"],
- "武器振り攻撃遅" => [ 0, 1, 6, 2, 0, -1, 2, true,"縦振り"],
- "武器回し下" => [ 0, 1, 2, 2, 0, -1, 2, true,"下半回転"],
- "武器回し上" => [ 0, 1, 2, 2, 0, -1, 2, true,"上半回転"],
- "武器掲げ" => [ 0, 1, 2, 2, 28, -1, 2, true,"掲げ"],
-
- #--------------------------------------------------------------------------
- # ● 武器アクション 武器グラフィックの動かし方
- #--------------------------------------------------------------------------
- # ここで使用する武器アクション名は、上のバトラーアニメ設定でのみ有効です。
-
- # X軸…横に動かす距離。
- # Y軸…縦に動かす距離。
- # Z軸…バトラーより手前に表示するならtrue。
- # 始度…動作前の最初の角度。半時計回りで0~360度。負が半時計回り。
- # 終度…動作後の角度。
- # 原点…回転元の原点。[0…中心] [1…左上] [2…右上] [3…左下] [4…右下]
- # 反転…trueにすると動作前にグラフィックを反転して表示します。
- # X拡…X軸拡大率、横の拡大率です。1が当倍、2が2倍、0.5が1/2になります。
- # Y拡…Y軸拡大率、縦の拡大率です。1が当倍、2が2倍、0.5が1/2になります。
- # 調X…微調整するX軸。この数字ぶん初期X座標が変化します。
- # 調Y…微調整するY軸。この数字ぶん初期Y座標が変化します。
- # 二刀…二刀流時限定で、左(項目でいうと下)の武器画像を表示するようにします。
- # 二刀流じゃなかった場合はバトラーアニメごと処理を飛ばします。
-
- # 武器アクション名 X軸 Y軸 Z軸 始度 終度 原点 反転 X拡 Y拡 調X 調Y 二刀
- "縦振り" => [ 6, 8,false,-135, 45, 4,false, 1, 1, -4, -6,false],
- "縦振りL" => [ 6, 8,false,-135, 45, 4,false, 1, 1, -4, -6, true],
- "下半回転" => [ 6, 8,false, 270, 45, 4,false, 1, 1, -4, -6,false],
- "上半回転" => [ 6, 8,false, 45,-100, 4,false, 1, 1, -4, -6,false],
- "掲げ" => [ 6, -4,false, 90, -45, 4,false, 1, 1, -4, -6,false],
- #--------------------------------------------------------------------------
- # ● バトラー移動 エネミーのX軸移動は逆計算になります
- #--------------------------------------------------------------------------
- # 目標…移動する座標の参照先 [0=自身の現在位置] [1=ターゲット] [2=画面] [3=初期位置]
- # X軸…対象から見たX座標。絶対値は最低でも時間より高く
- # Y軸…対象から見たY座標。絶対値は最低でも時間より高く
- # 時間…移動時間。大きいほど遅い。これを距離で割ったのが1フレーム移動距離です。
- # 加速…正は加速、負は減速。数値分1フレームの移動距離が増減しつづけます。
- # ジャンプ…ジャンプ軌道。正は下、負は上軌道。0はジャンプしません。
- # アニメ…その移動に利用するバトラーアニメ名。
-
- # 目標 X軸 Y軸 時間 加速 ジャンプ アニメ
- "移動しない" => [ 0, 0, 0, 1, 0, 0, "待機(固定)"],
- "戦闘開始前の位置へ" => [ 0, 54, 0, 1, 0, 0, "前進"],
- "一歩前移動" => [ 3, -32, 0, 18, -1, 0, "前進"],
- "一歩後移動" => [ 0, 32, 0, 8, -1, 0, "前進"],
- "四人攻撃移動1" => [ 2, 444, 96, 18, -1, 0, "前進"],
- "四人攻撃移動2" => [ 2, 444, 212, 18, -1, 0, "前進"],
- "四人攻撃移動3" => [ 2, 384, 64, 18, -1, 0, "前進"],
- "四人攻撃移動4" => [ 2, 384, 244, 18, -1, 0, "前進"],
- "被ダメージ" => [ 0, 32, 0, 4, -1, 0, "ダメージ"],
- "押し出す" => [ 0, 12, 0, 1, 1, 0, "ダメージ"],
- "味方逃走" => [ 0, 300, 0,300, 1, 0, "後退"],
- "逃走失敗" => [ 0, 48, 0, 16, 1, 0, "後退"],
- "勝利のジャンプ" => [ 0, 0, 0, 20, 0, -5, "前進"],
- "目標移動" => [ 1, 0, 0, 18, -1, 0, "前進"],
- "目標高速移動" => [ 1, 0, -12, 8, 0, -2, "前進"],
- "目標前移動" => [ 1, 24, 0, 12, -1, 0, "前進"],
- "目標前高速移動" => [ 1, 24, 0, 1, 0, 0, "前進"],
- "目標右前移動" => [ 1, 96, 32, 16, -1, 0, "前進"],
- "目標左前移動" => [ 1, 96, -32, 16, -1, 0, "前進"],
- "一歩前ジャンプ" => [ 0, -32, 0, 8, -1, -4, "前進"],
- "一歩後ジャンプ" => [ 0, 32, 0, 8, -1, -4, "後退"],
- "目標にジャンプ" => [ 1, 12, -12, 12, -1, -6, "前進"],
- "味方投げ" => [ 0, -24, 0, 16, 0, -2, "前進"],
- "踏みつけ" => [ 1, 12, -32, 12, -1, -6, "手前表示"],
- "一歩前ジャンプ叩き" => [ 0, -32, 0, 12, -1, -2, "武器振り攻撃"],
- "前ジャンプ叩き" => [ 1, 12, 0, 12, -1, -5, "武器振り攻撃遅"],
- "後方に払い上げ" => [ 1, 12, 0, 16, 0, -3, "武器振り攻撃"],
- "その場ジャンプ叩き" => [ 1, 0, 0, 16, 0, -5, "武器振り攻撃"],
- "払い抜け" => [ 1, -96, 0, 16, 2, 0, "武器振り攻撃"],
- "右払い抜け" => [ 1, -96, 32, 16, 2, 0, "武器振り攻撃"],
- "左払い抜け" => [ 1, -96, -32, 16, 2, 0, "武器振り攻撃"],
- "右払い抜け2" => [ 1,-128, 48, 16, 2, 0, "武器振り攻撃"],
- "左払い抜け2" => [ 1,-128, -48, 16, 2, 0, "武器振り攻撃"],
- "右穿" => [ 1, 96, 0, 16, 2, 0, "武器振り攻撃"],
- "移动目标身后" => [ 1, -64, 0, 16, 0, 0, "前進"],
- "后跳攻击" => [ 1, -32, 0, 16, 0, -5, "武器振り攻撃"],
- #--------------------------------------------------------------------------
- # ● バトラー浮遊 バトラーを影から離します
- #--------------------------------------------------------------------------
- # 判別…判別に使うので、すべて"float"で統一してください。
- # 始高…浮遊開始の高さ。符号が負で影より高く、正だと低くなります。
- # 終高…浮遊終了の高さ。移動系のアクションがあるまでこの高さを維持します。
- # 時間…浮遊にかける時間。
- # アニメ…浮遊に利用するバトラーアニメ名。
-
- # 判別 始高 終高 時間 アニメ
- "低空浮遊中" => ["float", -22, -20, 2, "待機(固定)"],
- "低空浮遊中2" => ["float", -22, -20, 20, "待機(固定)"],
- "低空浮遊中3" => ["float", -18, -20, 2, "待機(固定)"],
- "低空浮遊中4" => ["float", -20, -22, 2, "待機(固定)"],
- "ジャンプ停止" => ["float", 0, -80, 4, "待機(固定)"],
- "ジャンプ着地" => ["float", -22, 7, 15, "待機(固定)"],
- "持ち上げられる" => ["float", 0, -30, 4, "待機(固定)"],
-
- #--------------------------------------------------------------------------
- # ● 座標リセット 元の位置に戻る移動設定
- #--------------------------------------------------------------------------
- # 判別…判別に使うので、すべて"reset"で統一してください。
- # 時間…戻るのにかける時間。同じ時間でも距離が大きいと移動速度が変わります。
- # 加速…正は加速、負は減速。数値分1フレームの移動距離が増減しつづけます。
- # ジャンプ…ジャンプ軌道。正は下、負は上軌道。0はジャンプしません。
- # アニメ…その移動に利用するバトラーアニメ名を入れます。
-
- # 判別 時間 加速 ジャンプ アニメ
- "座標リセット" => ["reset", 16, 0, 0, "前進"],
- "後退リセット" => ["reset", 16, 0, 0, "後退"],
-
- #--------------------------------------------------------------------------
- # ● 強制アクション 自分以外のバトラーにアクションを取らせます
- #--------------------------------------------------------------------------
- # 識別…取らせるアクションが単発か通しか。"単発"はここの単発アクション名を。
- # "通し"とは単発アクションを組み合わせたものを指します。
- #
- # 対象…アクションを取らせる対象。0はターゲット、それ以外はそのステートNoが
- # 付いているバトラー全部を対象とします。
- # 数値に-マイナスを付けることで、その絶対値のスキルIDを習得している
- # 自分以外のアクターを対象とします(アクター限定)
- # インデックス(メンバー位置)で指定する場合、インデックス値に1000足します。
- # 指定したインデックスが自分だったり存在しない場合(戦闘不能や逃走)は
- # 0番から順に参照し、誰も該当しなかった時は行動を中断します。
- #
- # 復帰…アクション後位置を戻すなら座標リセット系の単発アクション名を入れます。
- # 戻さない場合""とします。
- # アクション名…強制するアクション名。識別が単発なら、単発アクション名を。
- # 通しなら通しアクション名を。
-
- # 識別 対象 復帰 アクション名
- "小吹き飛ばし" => ["単発", 0, "座標リセット", "押し出す"],
- "右回し" => ["単発", 0, "座標リセット", "右回り1回転"],
- "縦にぺしゃんこ" => ["単発", 0, "座標リセット", "縦縮み"],
- "着弾1" => ["単発", 0, "座標リセット", "対象から自身へ1"],
- "味方持ち上げ" => ["単発", 0, "", "持ち上げられる"],
- "ウルリカと攻撃" => ["通し", 18, "座標リセット", "ウルリカ合体攻撃1"],
- "四人で攻撃1" => ["通し", -101, "座標リセット", "四人合体攻撃1"],
- "四人で攻撃2" => ["通し", -102, "座標リセット", "四人合体攻撃2"],
- "四人で攻撃3" => ["通し", -103, "座標リセット", "四人合体攻撃3"],
- "味方投げ飛ばし" => ["通し", 1000, "座標リセット", "投げつけられる"],
-
- #--------------------------------------------------------------------------
- # ● ターゲット変更 バトラーの現在ターゲットしている対象を変えます
- #--------------------------------------------------------------------------
- # ※あくまでスプライトアクション上のターゲットを変えるだけで、戦闘上での
- # ターゲットは変更されません。戦闘行動中のバトラーだけが実行できます。
- # 判別…判別に使うので、すべて"target"で統一してください。
- #
- # 対象…ターゲットを変更させる対象。0はターゲット、それ以外はそのステートNoが
- # 付いているバトラー全部のターゲットを変えます。
- # 数値を負にすることでその絶対値のスキルIDを習得している味方全員を対象に。
- # インデックス(メンバー位置)で指定する場合、インデックス値に1000足します。
- # 指定したインデックスが自分だったり存在しない場合(戦闘不能や逃走)は
- # 0番から順に参照します。
- #
- # 変更先…変更先内容 0=自分に 1=自分のターゲットに
- # 2=自分のターゲットに変更後、自身のターゲットを変更相手に
- # 3=変更した自身のターゲットを戻す(事前に2を実行していること)
-
- # ターゲット変更名 判別 対象 変更先
- "標的を自身に" => ["target", 0, 0],
- "二人攻撃目標統一" => ["target", 18, 1],
- "四人攻撃目標統一" => ["target", 19, 1],
- "投げる相手選択" => ["target", 1000, 2],
- "投げつけ目標セット" => ["target", 1000, 3],
-
- #--------------------------------------------------------------------------
- # ● スキル派生 アクションを中断し、別のスキルに派生させます
- #--------------------------------------------------------------------------
- # 判別…判別に使うので、すべて"der"で統一してください。
- # 確率…派生する確率、0~100で。派生しなかった場合、残りアクションを続行します。
- # 習得…派生するスキルが未修得でも実行可能ならtrue
- # スキルID…派生するスキルのID
-
- # 派生名 判別 確率 習得 スキルID
- "ヒールに派生" => ["der", 100, true, 91],
- "適当に派生" => ["der", 100, true, 92],
- #--------------------------------------------------------------------------
- # ● アクション条件 条件を設定し、満たされなかったら以降の全行動を中断します
- #--------------------------------------------------------------------------
- # 判別…判別に使うので、すべて"nece"で統一してください。
- # 対象…条件を参照する対象。[0=自分] [1=ターゲット] [2=敵全体] [3=味方全体]
- # 内容… [0=ステート] [1=パラメータ] [2=スイッチ] [3=変数] [4=習得スキル]
- #
- # 条件…上の内容で決めた項目に合致する数値を入れます。
- # [0]ステート…ステートID
- # [1]パラメータ…[0=現HP] [1=現MP] [2=攻撃力] [3=防御力] [4=精神力] [5=敏捷性]
- # [2]スイッチ…ゲーム中のスイッチNo
- # [3]変数…ゲーム中の変数No
- # [4]習得スキル…特定のスキル習得を条件とし、そのスキルIDを指定します。
- #
- # 補足…上の条件補足。
- # [0]ステート…条件となる被ステート人数。
- # 符号が正でかかっている、負でかかっていないことが条件となります。
- # [1]パラメータ…パラメータの数値。対象が複数だと平均を出します。
- # 符号が正で数値以上、負で数値以下が条件となります。
- # [2]スイッチ…スイッチONが条件なら true、OFFが条件なら false
- # [3]変数…符号が正で数値以上、負で数値以下が条件となります。
- # [4]習得スキル…条件となるスキル習得人数。
-
- # 派生名 判別 対象 内容 条件 補足
- "二人攻撃条件確認" => ["nece", 3, 0, 18, 1],
- "四人攻撃条件確認" => ["nece", 3, 0, 19, 3],
- "浮遊ステート確認" => ["nece", 0, 0, 17, 1],
- "ネコに変身してるか"=> ["nece", 0, 0, 20, 1],
-
- #--------------------------------------------------------------------------
- # ● バトラー回転 画像を回転。反転と違い、武器アクションは反映されません
- #--------------------------------------------------------------------------
- # 判別…判別に使うので、すべて"angle"で統一してください。
- # 時間…回転にかける時間。
- # 始度…回転開始時の角度。0~360度を指定。正が半時計周り、負が時計周り。
- # 終度…回転終了時の角度。0~360度を指定。上記ともにエネミーは逆計算になります。
- # 復帰…trueにすると終了と同時に通常角度に戻る。falseはアクション中そのまま。
-
- # 判別 時間 始度 終度 復帰
- "倒れたまま" => ["angle", 1, -90, -90,false],
- "右回り1回転" => ["angle", 48, 0,-360,false],
- "左高速回転" => ["angle", 6, 0, 360,false],
- #--------------------------------------------------------------------------
- # ● バトラー拡大縮小 武器アクションは反映されません
- #--------------------------------------------------------------------------
- # 判別…判別に使うので、すべて"zoom"で統一してください。
- # 時間…拡大縮小にかける時間。
- # X拡…横の拡大率。1.0が等倍で、0.5が半分になります。
- # Y拡…縦の拡大率。1.0が等倍で、0.5が半分になります。
- # 復帰…trueにすると終了と同時に等倍に戻ります。falseはそのまま。
- # 拡大縮小中は一時的に転送元原点が変わりますが、この復帰で元に戻ります。
-
- # 判別 時間 X拡 Y拡 復帰
- "横縮み" => ["zoom", 16, 0.5, 1.0, true],
- "縦縮み" => ["zoom", 16, 1.0, 0.5, true],
-
- #--------------------------------------------------------------------------
- # ● 戦闘アニメ データベースの戦闘アニメを表示します
- #--------------------------------------------------------------------------
- # 判別…判別に使うので、すべて"anime"で統一してください。
- # ID…アニメID。-1で武器やスキルに設定されたアニメになりダメージを表示。
- # -2にするとスキルでも武器依存のアニメになります。
- # 対象… [0=自分] [1=ターゲット]
- # 反転…trueでアニメ画像が反転されます。
- # ウエイト…アニメ表示が終わるまで待つならtrue。
- # 二刀用…trueで二刀流時限定でアニメを実行。アニメIDを-1にした通常攻撃の場合は
- # 左武器に設定されたアニメを表示します。スキルはスキルアニメを再度実行。
-
- # 判別 ID 対象 反転 ウエイト 二刀用
- "対象アニメ" => ["anime", -1, 1, false,false, false],
- "対象アニメウエイト"=> ["anime", -1, 1, false, true, false],
- "対象アニメ武器" => ["anime", -2, 1, false,false, false],
- "対象アニメL" => ["anime", -1, 1, false,false, true],
- "打撃アニメ" => ["anime", -1, 1, false,false, false],
- "斬撃/必殺技1" => ["anime", 4, 0, false,false, false],
- "斬撃/必殺技2" => ["anime", 20, 1, false,false, false],
- "斬撃/必殺技3" => ["anime", 318, 1, false,false, false],
- "圣光突击" => ["anime", 76, 1, false,false, false],
- "圣光突击2" => ["anime", 90, 1, false,false, false],
- "觉醒1" => ["anime", 77, 4, false,false, false],
- "觉醒2" => ["anime", 78, 0, false,false, false],
- "觉醒3" => ["anime", 89, 0, false,false, false],
- "爆炎地狱" => ["anime", 79, 0, false,false, false],
- "寒冰审判" => ["anime", 81, 0, false,false, false],
- "雷击" => ["anime", 35, 1, false,false, false],
- "雷击2" => ["anime", 95, 1, false,false, false],
- "雷击3" => ["anime", 84, 1, false,false, false],
- "魔法发动1" => ["anime", 83, 0, false,false, false],
- "裂空1" => ["anime", 85, 1, false,false, false],
- "裂空2" => ["anime", 86, 1, false,false, false],
- "裂空3" => ["anime", 87, 1, false,false, false],
- "裂空4" => ["anime", 88, 0, false,false, false],
- "裂空5" => ["anime", 96, 1, false,false, false],
- "撕咬" => ["anime", 55, 1, false,false, false],
- "弩发射" => ["anime", 113, 0, false,false, false],
- "散弩" => ["anime", 114, 1, false,false, false],
- "突刺" => ["anime", 115, 1, false,false, false],
- "散弩2" => ["anime", 116, 0, false,false, false],
- "弩发射2" => ["anime", 117, 0, false,false, false],
- "冰箭1" => ["anime", 118, 0, false,false, false],
- "冰箭2" => ["anime", 119, 0, false,false, false],
- "冰箭3" => ["anime", 120, 1, false,false, false],
- "白羽之光" => ["anime", 110, 0, false,false, false],
- "白羽之光2" => ["anime", 121, 0, false,false, false],
- "白羽之光3" => ["anime", 122, 0, false,false, false],
- "毒箭" => ["anime", 123, 1, false,false, false],
- "寒冰之箭改" => ["anime", 125, 0, false,false, false],
- "寒冰之箭改2" => ["anime", 126, 0, false,false, false],
- "寒冰之箭改3" => ["anime", 127, 1, false,false, false],
- "白羽之光改" => ["anime", 128, 1, false,false, false],
- "白羽之光改2" => ["anime", 129, 0, false,false, false],
- "白羽之光改3" => ["anime", 130, 0, false,false, false],
- "白羽之光改4" => ["anime", 131, 0, false,false, false],
- "白羽之光改5" => ["anime", 132, 1, false,false, false],
- "爆炎之箭" => ["anime", 140, 0, false,false, false],
- "爆炎之箭2" => ["anime", 141, 0, false,false, false],
- "爆炎之箭3" => ["anime", 142, 1, false,false, false],
- "重力射击" => ["anime", 143, 0, false,false, false],
- "重力射击2" => ["anime", 144, 0, false,false, false],
- "重力射击3" => ["anime", 145, 0, false,false, false],
- "重力射击4" => ["anime", 146, 0, false,false, false],
- "重力射击5" => ["anime", 331, 1, false,false, false],
- "天堂突击" => ["anime", 148, 0, false,false, false],
- "天堂突击2" => ["anime", 149, 0, false,false, false],
- "天堂突击3" => ["anime", 150, 1, false,false, false],
- "天堂突击4" => ["anime", 151, 1, false,false, false],
- "天堂突击5" => ["anime", 152, 1, false,false, false],
- "天堂突击6" => ["anime", 153, 0, false,false, false],
- "重力球" => ["anime", 154, 0, false,false, false],
- "重力球2" => ["anime", 155, 0, false,false, false],
- "开枪" => ["anime", 157, 1, false,false, false],
- "枪击中" => ["anime", 158, 0, false,false, false],
- "哦" => ["anime", 160, 1, false,false, false],
- "枪击中2" => ["anime", 161, 0, false,false, false],
- "弹壳" => ["anime", 162, 0, false,false, false],
- "榴弹" => ["anime", 163, 0, false,false, false],
- "榴弹2" => ["anime", 164, 0, false,false, false],
- "穿甲弹" => ["anime", 165, 0, false,false, false],
- "震荡" => ["anime", 174, 0, false,false, false],
- "震荡2" => ["anime", 175, 0, false,false, false],
- "震荡3" => ["anime", 176, 0, false,false, false],
- "震荡4" => ["anime", 177, 0, false,false, false],
- "能量冲击" => ["anime", 181, 0, false,false, false],
- "炸裂冲击" => ["anime", 183, 0, false,false, false],
- "炸裂冲击2" => ["anime", 184, 0, false,false, false],
- "旋风冲击" => ["anime", 186, 0, false,false, false],
- "旋风冲击2" => ["anime", 185, 0, false,false, false],
- "炸裂冲击改" => ["anime", 187, 0, false,false, false],
- "炸裂冲击改2" => ["anime", 188, 0, false,false, false],
- "火拳" => ["anime", 189, 0, false,false, false],
- "火拳2" => ["anime", 190, 0, false,false, false],
- "手雷" => ["anime", 192, 0, false,false, false],
- "烈火拳" => ["anime", 194, 0, false,false, false],
- "烈火拳2" => ["anime", 195, 0, false,false, false],
- "烈火拳3" => ["anime", 196, 1, false,false, false],
- "地裂斩" => ["anime", 197, 1, false,false, false],
- "真空碎" => ["anime", 198, 0, false,false, false],
- "地裂碎" => ["anime", 200, 0, false,false, false],
- "地裂碎2" => ["anime", 201, 0, false,false, false],
- "真空碎2" => ["anime", 202, 1, false,false, false],
- "真空碎3" => ["anime", 203, 1, false,false, false],
- "真空碎4" => ["anime", 204, 1, false,false, false],
- "地裂斩改" => ["anime", 205, 0, false,false, false],
- "真空碎5" => ["anime", 206, 0, false,false, false],
- "雷暴" => ["anime", 38, 0, false,false, false],
- "黑洞" => ["anime", 66, 0, false,false, false],
- "混沌之祭" => ["anime", 207, 0, false,false, false],
- "混沌之祭2" => ["anime", 208, 0, false,false, false],
- "混沌之祭3" => ["anime", 210, 0, false,false, false],
- "混沌之祭4" => ["anime", 209, 1, false,false, false],
- "歼灭之炎" => ["anime", 14, 0, false,false, false],
- "歼灭之炎2" => ["anime", 32, 0, false,false, false],
- "寒冰地狱" => ["anime", 19, 0, false,false, false],
- "寒冰地狱2" => ["anime", 34, 0, false,false, false],
- "火魔法" => ["anime", 214, 0, false,false, false],
- "水魔法" => ["anime", 215, 0, false,false, false],
- "火魔法2" => ["anime", 216, 0, false,false, false],
- "水魔法2" => ["anime", 217, 0, false,false, false],
- "高温射线" => ["anime", 31, 0, false,false, false],
- "绞杀冰剑" => ["anime", 18, 1, false,false, false],
- "绞杀冰剑2" => ["anime", 33, 1, false,false, false],
- "星蓝之剑" => ["anime", 219, 0, false,false, false],
- "星蓝之剑2" => ["anime", 87, 0, false,false, false],
- "黑洞2" => ["anime", 222, 0, false,false, false],
- "飓风刹2" => ["anime", 226, 1, false,false, false],
- "破碎2" => ["anime", 227, 0, false,false, false],
- "毁灭残影" => ["anime", 228, 0, false,false, false],
- "毁灭残影2" => ["anime", 229, 0, false,false, false],
- "龙斩" => ["anime", 230, 0, false,false, false],
- "龙斩2" => ["anime", 231, 0, false,false, false],
- "龙斩3" => ["anime", 232, 0, false,false, false],
- "龙斩4" => ["anime", 233, 0, false,false, false],
- "银刃" => ["anime", 234, 1, false,false, false],
- "力爆" => ["anime", 237, 0, false,false, false],
- "浊流" => ["anime", 239, 0, false,false, false],
- "光箭" => ["anime", 243, 0, false,false, false],
- "光箭2" => ["anime", 242, 1, false,false, false],
- "沙漠风暴" => ["anime", 245, 0, false,false, false],
- "沙漠风暴2" => ["anime", 247, 0, false,false, false],
- "沙漠风暴3" => ["anime", 248, 0, false,false, false],
- "变身BUG" => ["anime", 250, 0, false,false, false],
- "火箭弹" => ["anime", 251, 0, false,false, false],
- "火箭弹2" => ["anime", 252, 0, false,false, false],
- "混沌之祭5" => ["anime", 256, 0, false,false, false],
- "剧毒风暴" => ["anime", 257, 0, false,false, false],
- "真空刺" => ["anime", 261, 0, false,false, false],
- "真空刺2" => ["anime", 258, 1, false,false, false],
- "真空刺改" => ["anime", 260, 0, false,false, false],
- "真空刺改2" => ["anime", 259, 0, false,false, false],
- "雷暴2" => ["anime", 36, 1, false,false, false],
- "冰球" => ["anime", 268, 0, false,false, false],
- "冰球2" => ["anime", 269, 1, false,false, false],
- "高温激光枪" => ["anime", 270, 0, false,false, false],
- "高温激光枪2" => ["anime", 271, 0, false,false, false],
- "半月碎" => ["anime", 273, 0, false,false, false],
- "半月碎2" => ["anime", 274, 0, false,false, false],
- "半月碎3" => ["anime", 275, 0, false,false, false],
- "凯兰J" => ["anime", 281, 0, false,false, false],
- "丽娜J" => ["anime", 282, 0, false,false, false],
- "亚特J" => ["anime", 283, 0, false,false, false],
- "迪安J" => ["anime", 284, 0, false,false, false],
- "凯兰J2" => ["anime", 285, 0, false,false, false],
- "丽娜J2" => ["anime", 286, 0, false,false, false],
- "亚特J2" => ["anime", 287, 0, false,false, false],
- "迪安J2" => ["anime", 288, 0, false,false, false],
- "愤怒中的绝望" => ["anime", 289, 0, false,false, false],
- "炸裂神弓" => ["anime", 290, 0, false,false, false],
- "狂暴" => ["anime", 291, 0, false,false, false],
- "炸裂射击" => ["anime", 292, 0, false,false, false],
- "神圣之翼" => ["anime", 293, 0, false,false, false],
- "导力全开" => ["anime", 294, 0, false,false, false],
- "敌斩击" => ["anime", 300, 1, false,false, false],
- "敌斩击2" => ["anime", 301, 1, false,false, false],
- "敌斩击3" => ["anime", 302, 1, false,false, false],
- "敌斩击4" => ["anime", 303, 1, false,false, false],
- "敌斩击5" => ["anime", 304, 1, false,false, false],
- "敌斩击6" => ["anime", 305, 1, false,false, false],
- "敌斩击7" => ["anime", 306, 1, false,false, false],
- "斩击" => ["anime", 315, 1, false,false, false],
- "斩击2" => ["anime", 316, 1, false,false, false],
- "斩击3" => ["anime", 317, 1, false,false, false],
- "斩击4" => ["anime", 310, 1, false,false, false],
- "斩击5" => ["anime", 319, 1, false,false, false],
- "斩击6" => ["anime", 320, 1, false,false, false],
- "杀戮" => ["anime", 323, 0, false,false, false],
- "杀戮2" => ["anime", 324, 0, false,false, false],
- "杀戮3" => ["anime", 325, 0, false,false, false],
- "杀戮改" => ["anime", 326, 0, false,false, false],
- "杀戮改2" => ["anime", 327, 0, false,false, false],
- "杀戮改3" => ["anime", 328, 0, false,false, false],
- "背射" => ["anime", 329, 0, false,false, false],
- "背射2" => ["anime", 330, 1, false,false, false],
- #--------------------------------------------------------------------------
- # ● アニメ飛ばし 戦闘アニメを飛ばします。飛び道具、遠距離攻撃用
- #--------------------------------------------------------------------------
- # ID…データベースで設定されているアニメのID。0はアニメを非表示に。
- # 対象…飛ばす対象 [0=ターゲット] [1=敵全体の中心] [2=味方全体の中心] [4=自身]
- # タイプ…[0=当たって消える] [1=直線に貫通]
- # 時間…アニメを飛ばす際の移動時間。大きいほど速度も遅い。
- # 軌道…アニメを飛ばす際の軌道。数値を入れると曲線に。正が下、負が上軌道。
- # 調X…微調整するX軸。飛ばす初期X座標が変化します。エネミーは自動で逆計算に。
- # 調Y…微調整するY軸。飛ばす初期Y座標が変化します。
- # 始…アニメを飛ばす際の開始位置。[0=自身] [1=対象] [2=移動させない]
- # Z座標…アニメや武器をキャラより手前に表示するならtrue
- # 武器…下の貼り付ける武器、スキルアクション名を入れます。利用しないなら""
-
- # 判別 ID 対象 タイプ 時間 軌 調X 調Y 始 Z座標 武器
- "魔法始動アニメ" => ["m_a", 30, 4, 0, 52, 0, 0, 0, 2,false,""],
- "火魔法始動アニメ"=> ["m_a", 214, 4, 0, 52, 0, 0, 0, 2,false,""],
- "水魔法始動アニメ"=> ["m_a", 215, 4, 0, 52, 0, 0, 0, 2,false,""],
- "暗魔法始動アニメ"=> ["m_a", 255, 4, 0, 52, 0, 0, 0, 2,false,""],
- "対象から自身へ1" => ["m_a", 4, 0, 0, 24, 0, 0, 0, 1,false,""],
- "武器投げ開始" => ["m_a", 0, 0, 0, 18, -24, 0, 0, 0,false,"回転投げ"],
- "武器投げ戻し" => ["m_a", 0, 0, 0, 18, 24, 0, 0, 1,false,"回転投げ"],
- "全体アニメ単体化"=> ["m_a", 80, 1, 0, 64, 0, 0, 0, 2, true,""],
-
- #--------------------------------------------------------------------------
- # ● アニメ飛ばしに貼り付ける武器画像アクション 上のアニメ飛ばし専用
- #--------------------------------------------------------------------------
- # 貼り付けた武器画像の動き。この画像は武器アクションの画像とは別に設定できます。
- # その場合貼り付ける画像は武器設定で行ってください。
- # 始度…動作前の最初の角度。半時計回りで0~360度。
- # 終度…動作後の角度。半時計回りで0~360度。
- # 時間…回転にかける時間。小さいほど早い。動作は消えるまでループし続けます。
-
- # 武器アクション名 始度 終度 時間
- "回転投げ" => [ 0, 360, 8],
-
- #--------------------------------------------------------------------------
- # ● アニメ飛ばしに貼り付けるスキル画像アクション 上のアニメ飛ばし専用
- #--------------------------------------------------------------------------
- # 貼り付けたスキル画像の動き。貼り付ける画像はスキル設定で行ってください。
- # 始度…動作前の最初の角度。半時計回りで0~360度。
- # 終度…動作後の角度。半時計回りで0~360度。
- # 時間…回転にかける時間。小さいほど早い。動作は消えるまでループし続けます。
- # 判別…判別に使うので、すべて"skill"で統一してください。
-
- # 武器アクション名 始度 終度 時間 判別
- "石投げ" => [ 0, 360, 8, "skill"],
-
- #--------------------------------------------------------------------------
- # ● ふきだしアニメ イベントに使うふきだしアイコンを表示
- #--------------------------------------------------------------------------
- # 判別…判別に使うので、すべて"balloon"で統一してください。
- # 種類…ふきだしの種類(縦位置)を0~9で指定
- # ループ…アニメ更新方法で、終了すると消えます。[0=片道] [1=往復]
-
- # ふきだし名 判別 種類 ループ
- "状態異常/汎用" => ["balloon", 6, 1],
- "状態異常/ピンチ" => ["balloon", 5, 1],
- "状態異常/睡眠" => ["balloon", 9, 1],
- "状態異常/中毒" => ["balloon", 1, 1],
- "状態異常/烧伤" => ["balloon", 3, 1],
- "状態異常/眩晕" => ["balloon", 0, 1],
- "状態異常/冰冻" => ["balloon", 4, 1],
- "状態異常/出血" => ["balloon", 2, 1],
-
- #--------------------------------------------------------------------------
- # ● サウンドの演奏
- #--------------------------------------------------------------------------
- # 判別…判別に使うので、すべて"sound"で統一してください。
- # 種別…効果音は"se" BGMは"bgm" BGSは"bgs"
- # ピッチ…ピッチ、50~150まで指定。音量…ボリューム どちらも100がデフォルト。
- # ファイル名…再生するファイル名。""にするとBGM、BGSを変えずに各種設定可能。
-
- # SE名 判別 種別 ピッチ 音量 SEファイル名
- "absorb1" => ["sound", "se", 80, 100, "absorb1"],
-
- #--------------------------------------------------------------------------
- # ● ゲーム全体のスピード変更 アクションの細部チェック用
- #--------------------------------------------------------------------------
- # 判別…判別に使うので、すべて"fps"で統一してください。
- # ゲームスピード…60がデフォルトで、低くなるほどスローになります。
- # ※このコマンドはFPSを直接変更するものです。取り扱いには注意してください。
- # またタイマーカウント、ゲーム内時間もその分ズレることになります。
-
- # 変更名 判別 ゲームスピード
- "スロー再生" => ["fps", 20],
- "通常再生に" => ["fps", 60],
-
- #--------------------------------------------------------------------------
- # ● ステート付与
- #--------------------------------------------------------------------------
- # 判別…判別に使うので、すべて"sta+"で統一してください。
- # 対象…[0=自分] [1=ターゲット] [2=敵全体] [3=味方全体] [4=自分を除く味方全体]
- # ステートID…付与するステートのID。「抵抗しない」ステート以外は抵抗します。
-
- # ステート付与名 判別 対象 ステートID
- "二人攻撃ステート付与" => ["sta+", 0, 18],
- "四人攻撃ステート付与" => ["sta+", 0, 19],
- "neko" => ["sta+", 0, 20],
-
- #--------------------------------------------------------------------------
- # ● ステート解除
- #--------------------------------------------------------------------------
- # 判別…判別に使うので、すべて"sta-"で統一してください。
- # 対象…[0=自分] [1=ターゲット] [2=敵全体] [3=味方全体] [4=自分を除く味方全体]
- # ステートID…解除するステートのID
-
- # ステート付与名 判別 対象 ステートID
- "二人攻撃ステート解除" => ["sta-", 3, 18],
- "四人攻撃ステート解除" => ["sta-", 3, 19],
- #--------------------------------------------------------------------------
- # ● バトラー画像ファイル変更 自身のみアクター限定
- #--------------------------------------------------------------------------
- # 判別…判別に使うので、すべて"change"で統一してください。
- # リセット…戦闘後も変更を反映させるならfalse。キャラチップも変わります。
- # ファイル名…変更する画像ファイル名。認識先を変えるので"_1"は指定しないように。
-
- # 変更名 判別 リセット ファイル名
- "ネコに変身" => ["change", true,"!$怪物38"],
- "沙漠风暴专用" => ["change", true,"!$沙漠风暴专用"],
- "沙漠风暴专用2" => ["change", true,"!$沙漠风暴专用2"],
- "変身解除" => ["change", true,"$ラルフ"],
- "沙漠风暴专用3" => ["change", true,"!$主角12"],
- "空白" => ["change", true,"无标题-1"],
- "变身解除2" => ["change", true,"!$主角2"],
- "变身解除3" => ["change", true,"!$主角1"],
-
- #--------------------------------------------------------------------------
- # ● ピクチャの表示 バトラー一体につき同時に1枚表示できます
- #--------------------------------------------------------------------------
- # 始X…移動開始位置。画面から見たX座標。ピクチャの左上を原点とします。
- # 始Y…移動開始位置。画面から見たY座標。
- # 終X…移動終了X座標。
- # 終Y…移動終了Y座標。
- # 時間…移動時間。大きいほど遅い。これを距離で割ったのが1フレーム移動距離です。
- # Z軸…HPウインドウよりも手前に表示するならtrue
- # ピクチャファイル名…ピクチャフォルダ内のファイル名。
-
- # 判別 始X 始Y 終X 終Y 時間 Z軸 ピクチャファイル名
- "カットイン1始" => ["pic",-280, 48, 0, 64, 14,false,"Actor2-3"],
- "カットイン1終" => ["pic", 0, 48, 550, 64, 12,false,"Actor2-3"],
-
- #--------------------------------------------------------------------------
- # ● ゲームスイッチの操作
- #--------------------------------------------------------------------------
- # 判別…判別に使うので、すべて"switch"で統一してください。
- # スイッチNo…何番のスイッチを操作するか
- # ON/OFF…ONにするならtrue、OFFにするならfalse
- #
- # スイッチ操作名 判別 スイッチNo ON/OFF
- "スイッチNo1/ON" => ["switch", 1, true],
-
- #--------------------------------------------------------------------------
- # ● ゲーム変数の操作
- #--------------------------------------------------------------------------
- # 判別…判別に使うので、すべて"variable"で統一してください。
- # 変数No…何番の変数を操作するか
- # 操作…[0=代入] [1=加算] [2=減算] [3=乗算] [4=除算] [5=剰余]
- # オペランド…演算の対象となる数値を指定します。
- #
- # 変数操作名 判別 変数No 操作 オペランド
- "変数No1/+1" => ["variable", 1, 1, 1],
-
- #--------------------------------------------------------------------------
- # ● その他 設定項目なし。ここで使われている名称は変更しないでください。
- #--------------------------------------------------------------------------
- # ピクチャ消去…表示しているピクチャを消します。
- # 残像ON…バトラーの軌跡に残像を残します。通しアクション中は残像し続けます。
- # 残像OFF…残像を消します。
- # 反転…画像を反転します。再度反転させるか座標リセットしない限り反転したまま。
- # 待機に移行しない…行動後、待機アクションを取らせません。
- # コラプス許可…ターゲットのHPが0になった場合、このタイミングでコラプスを
- # 開始させます。これがなければアクション終了時にコラプスします。
- # 二刀限定…この次の単発アクションのみ、二刀限定で行うようにします。
- # 二刀でなければ処理を飛ばし、次の単発アクションに移行します。
- # 非二刀限定…上とは逆に二刀ではないときのみ次の単発アクションを有効にします。
- # 個別処理開始…全体攻撃を個別で処理する場合の、リピート行動開始の目印です。
- # 個別処理終了…全体攻撃を個別で処理する場合の、リピート行動終了の目印です。
- # 初期位置変更…元の座標(初期位置)を今いる位置に変更します。
- # 初期位置変更解除…初期位置変更で変化した座標を元に戻します。
- # アクティブ解除…戦闘行動が終了したとみなし、直後に次のキャラが行動開始します。
- # コラプス許可機能も含んでおり、これ以降ダメージは与えられません。
- # 終了…行動の終了。これは入れなくてもアクションがなくなれば自動で認識します。
-
- "ピクチャ消去" => ["ピクチャ消去"],
- "残像ON" => ["残像ON"],
- "残像OFF" => ["残像OFF"],
- "反転" => ["反転"],
- "待機に移行しない"=> ["待機に移行しない"],
- "コラプス許可" => ["コラプス許可"],
- "二刀限定" => ["二刀限定"],
- "非二刀限定" => ["非二刀限定"],
- "個別処理開始" => ["個別処理開始"],
- "個別処理終了" => ["個別処理終了"],
- "初期位置変更" => ["初期位置変更"],
- "初期位置変更解除"=> ["初期位置変更解除"],
- "アクティブ解除" => ["アクティブ解除"],
- "終了" => ["終了"]
-
- #--------------------------------------------------------------------------
- # ● ウエイトについて
- #--------------------------------------------------------------------------
- # 単発アクションで数値のみの場合、それがそのままウエイト時間となります。
- # つまり単発アクション名に数値のみの名称は使えないので注意してください。
- # ウエイトは次のアクションに行かずに待つ時間ですが、バトラーアニメの更新は
- # 止まらずに行われます。
-
- }
- #==============================================================================
- # ■ 通しアクション
- #------------------------------------------------------------------------------
- # 上の単発アクションを組み合わせたもので、これが実際に取る行動となります
- #==============================================================================
- # ここの通しアクション名が下のアクター、エネミー指定アクションに使われます。
- # 行動は左側から順番に行われます。
- ACTION = {
- #------------------------------- 待機系 -----------------------------------------
- # 通しアクション名 行動
-
- "戦闘開始" => ["戦闘開始前の位置へ","座標リセット"],
-
- "待機" => ["待機"],
-
- "ピンチ待機" => ["移動しない","待機(固定)","状態異常/ピンチ","22"],
-
- "状態異常待機" => ["移動しない","待機(固定)","状態異常/汎用","22"],
-
- "睡眠待機" => ["移動しない","待機(固定)","状態異常/睡眠","22"],
-
- "浮遊待機" => ["待機(固定)","6","低空浮遊中","4",
- "低空浮遊中2","4","低空浮遊中3","4",
- "低空浮遊中4","4"],
-
- "出血待机" => ["移動しない","待機(固定)","状態異常/出血","22"],
-
- "眩晕待机" => ["移動しない","待機(固定)","状態異常/眩晕","22"],
-
- "中毒待机" => ["移動しない","待機(固定)","状態異常/中毒","22"],
-
- "烧伤待机" => ["移動しない","待機(固定)","状態異常/烧伤","22"],
- "冰冻待机" => ["移動しない","待機(固定)","状態異常/冰冻","22"],
- "怒绝" => ["待機(固定)","愤怒中的绝望","22"],
- "炸裂神弓" => ["待機(固定)","炸裂神弓","22"],
-
- "狂暴" => ["待機(固定)","狂暴","22"],
-
- "炸裂射击" => ["待機(固定)","炸裂射击","22"],
-
- "神圣之翼" => ["待機(固定)","神圣之翼","50"],
-
- "导力全开" => ["待機(固定)","导力全开","22"],
-
- "気絶" => ["倒れたまま","戦闘不能"],
-
- "ダメージ" => ["被ダメージ","座標リセット"],
-
- "逃走" => ["味方逃走"],
-
- "エネミー逃走" => ["味方逃走","座標リセット"],
-
- "逃走失敗" => ["逃走失敗","待機(固定)","8","座標リセット"],
-
- "コマンド入力" => ["一歩前移動"],
-
- "コマンド入力後" => ["座標リセット"],
-
- "防御" => ["待機(固定)","4","浮遊ステート確認","低空浮遊中",
- "2","低空浮遊中2","2","低空浮遊中3","2",
- "低空浮遊中4","2"],
-
- "回避" => ["一歩後ジャンプ","一歩後ジャンプ","待機(固定)","16",
- "座標リセット"],
-
- "エネミー回避" => ["一歩後ジャンプ","待機(固定)","16","座標リセット"],
-
- "勝利" => ["待機(固定)","16","右向き(固定)","勝利のジャンプ",
- "待機(固定)","待機に移行しない","ネコに変身してるか",
- "変身解除","待機(固定)","待機に移行しない",],
-
- "座標復帰" => ["座標リセット"],
-
- #------------------------------- 強制系 ----------------------------------------
-
- "ウルリカ合体攻撃1" => ["2","目標左前移動","待機(固定)",
- "魔法始動アニメ","武器回し下","武器掲げ",
- "48","右払い抜け","64","後退リセット"],
-
- "四人合体攻撃1" => ["2","四人攻撃移動2","待機(固定)","魔法始動アニメ",
- "武器回し下","武器掲げ","90",
- "左払い抜け","96","後退リセット"],
-
- "四人合体攻撃2" => ["2","四人攻撃移動3","待機(固定)","魔法始動アニメ",
- "武器回し下","武器掲げ","60","右払い抜け2","右回し",
- "対象アニメ","128","後退リセット"],
-
- "四人合体攻撃3" => ["2","四人攻撃移動4","待機(固定)","魔法始動アニメ",
- "武器回し下","武器掲げ","34","左払い抜け2","右回し",
- "対象アニメ","144","後退リセット"],
-
- "投げつけられる" => ["右回り1回転","4","目標高速移動","一歩後ジャンプ","4",
- "待機(固定)","一歩後ジャンプ","待機(固定)","32"],
-
- #--------------------------- 基本アクション系 ----------------------------------
-
- "通常攻撃" => ["目標前移動","武器振り攻撃","対象アニメウエイト",
- "1","武器振り攻撃L","対象アニメL","二刀限定","16",
- "コラプス許可","後退リセット"],
-
- "敵武器なし攻撃" => ["10","目標前移動","武器振り攻撃","対象アニメウエイト",
- "コラプス許可","後退リセット"],
-
- "汎用スキル使用" => ["一歩前移動","待機(固定)","魔法始動アニメ",
- "武器回し下","武器掲げ","武器振り攻撃",
- "対象アニメウエイト","コラプス許可","24","座標リセット"],
-
- "汎用スキル個別処理"=> ["一歩前移動","魔法始動アニメ","武器回し下","武器掲げ",
- "個別処理開始","武器振り攻撃","対象アニメ","24",
- "個別処理終了","コラプス許可","座標リセット"],
-
- "アイテム使用" => ["目標前移動","待機(固定)","24","対象アニメウエイト",
- "コラプス許可","座標リセット"],
-
- #------------------------------ スキル系 ---------------------------------------
-
- "多段攻撃" => ["前ジャンプ叩き","武器振り攻撃L","対象アニメ武器",
- "待機(固定)","16","対象アニメ武器","武器回し下",
- "武器回し上","4","その場ジャンプ叩き","武器振り攻撃L",
- "対象アニメ武器","待機(固定)","16","対象アニメ武器",
- "反転","武器振り攻撃","武器振り攻撃L","12","反転",
- "その場ジャンプ叩き","武器振り攻撃L","対象アニメ武器",
- "一歩後ジャンプ","一歩後ジャンプ","待機(固定)",
- "対象アニメ武器","払い抜け","武器振り攻撃L","コラプス許可",
- "残像OFF","16","後退リセット"],
-
- "多段攻撃ランダム用"=> ["前ジャンプ叩き","武器振り攻撃L","斩击3","対象アニメウエイト","待機(固定)","16",
- "前ジャンプ叩き","武器振り攻撃L","斩击3","対象アニメウエイト","待機(固定)","16",
- "前ジャンプ叩き","武器振り攻撃L","斩击3","対象アニメウエイト","待機(固定)","16",
- "前ジャンプ叩き","武器振り攻撃L","斩击3","対象アニメウエイト","20","コラプス許可","座標リセット"],
-
- "2段攻撃ランダム用"=> ["前ジャンプ叩き","斩击","対象アニメウエイト",
- "前ジャンプ叩き","斩击","対象アニメウエイト","一歩後ジャンプ","一歩後ジャンプ","待機(固定)","10",
- "対象アニメウエイト", "斩击2","払い抜け","小吹き飛ばし","武器振り攻撃L","18","コラプス許可","座標リセット"],
-
- "高速多段攻撃" => ["残像ON","前ジャンプ叩き","対象アニメ武器","武器振り攻撃L",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "一歩後ジャンプ",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "対象アニメ武器","払い抜け","武器振り攻撃L","コラプス許可",
- "一歩後ジャンプ",
- "コラプス許可","残像OFF","座標リセット"],
-
- "重击" => ["前ジャンプ叩き","対象アニメウエイト","武器振り攻撃L","待機(固定)",
- "コラプス許可","12","座標リセット"],
-
- "突刺" => ["目標前移動","払い抜け","対象アニメ武器","突刺","5","武器振り攻撃L","待機(固定)",
- "コラプス許可","12","座標リセット"],
-
- "毁灭残影" => ["毁灭残影","目標前高速移動","残像ON","移动目标身后","反転","待機(固定)","5",
- "后跳攻击","毁灭残影2","対象アニメウエイト","武器振り攻撃L",
- "武器振り攻撃","一歩後ジャンプ","一歩後ジャンプ","払い抜け","小吹き飛ばし",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","毁灭残影2","対象アニメウエイト",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","毁灭残影2","対象アニメウエイト",
- "一歩後ジャンプ","一歩後ジャンプ","待機(固定)",
- "毁灭残影2","対象アニメウエイト","払い抜け","武器振り攻撃L","コラプス許可",
- "コラプス許可","反転","座標リセット"],
-
- "高速99段攻撃" => ["残像ON","待機(固定)","魔法始動アニメ","カットイン1始",
- "75","カットイン1終","8",
-
- "武器振り攻撃","absorb1","待機(固定)","武器投げ開始","12","対象アニメ武器",
-
- "ジャンプ停止","個別処理開始",
- "標的を自身に","武器振り攻撃","着弾1","8",
- "対象アニメ武器","個別処理終了",
- "ジャンプ着地","座標リセット",
-
- "前ジャンプ叩き","対象アニメ武器",
-
- "武器振り攻撃L","対象アニメ武器",
-
- "武器振り攻撃","対象アニメ武器",
-
- "前ジャンプ叩き","対象アニメ武器",
-
- "武器振り攻撃","対象アニメ武器",
-
- "標的を自身に","対象アニメウエイト","対象アニメ武器",
-
- "武器振り攻撃","対象アニメ武器",
-
- "着弾1","20","対象アニメウエイト","対象アニメ武器",
-
- "武器振り攻撃","対象アニメ武器",
-
- "武器振り攻撃L","対象アニメ武器",
-
- "前ジャンプ叩き","対象アニメ武器",
-
- "反転", "武器振り攻撃","対象アニメ武器",
-
- "武器振り攻撃","absorb1","待機(固定)","武器投げ開始","12","対象アニメ武器",
-
- "武器振り攻撃","対象アニメ武器",
-
- "武器振り攻撃","対象アニメ武器",
-
- "標的を自身に","対象アニメウエイト","対象アニメ武器",
-
- "武器振り攻撃","absorb1","待機(固定)","武器投げ開始","12","対象アニメ武器",
-
- "武器振り攻撃","対象アニメ武器",
-
- "武器振り攻撃","対象アニメ武器",
-
- "標的を自身に","対象アニメウエイト","対象アニメ武器",
-
- "武器振り攻撃","absorb1","待機(固定)","武器投げ開始","12","対象アニメ武器",
-
- "着弾1","20","対象アニメウエイト","対象アニメ武器",
-
- "反転", "前ジャンプ叩き","対象アニメ武器",
-
- "武器振り攻撃","対象アニメ武器",
-
- "武器振り攻撃","対象アニメ武器",
-
- "武器振り攻撃","absorb1","待機(固定)","武器投げ開始","12","対象アニメ武器",
-
- "武器振り攻撃","absorb1","待機(固定)","武器投げ開始","12","対象アニメ武器",
-
- "武器振り攻撃","対象アニメ武器",
-
- "着弾1","20","対象アニメウエイト","対象アニメ武器",
-
- "武器振り攻撃","absorb1","待機(固定)","武器投げ開始","12","対象アニメ武器",
-
- "武器振り攻撃","対象アニメ武器",
-
- "武器振り攻撃L","対象アニメ武器",
-
- "前ジャンプ叩き","対象アニメ武器",
-
- "武器振り攻撃","対象アニメ武器",
-
- "武器振り攻撃","absorb1","待機(固定)","武器投げ開始","12","対象アニメ武器",
-
- "標的を自身に","対象アニメウエイト","対象アニメ武器",
-
- "前ジャンプ叩き","対象アニメ武器",
-
- "武器振り攻撃","対象アニメ武器",
-
- "武器振り攻撃","absorb1","待機(固定)","武器投げ開始","12","対象アニメ武器",
-
- "着弾1","20","対象アニメウエイト","対象アニメ武器",
-
- "前ジャンプ叩き","対象アニメ武器",
-
- "武器振り攻撃","対象アニメ武器",
-
- "武器振り攻撃L","対象アニメ武器",
-
- "反転", "前ジャンプ叩き","対象アニメ武器",
-
- "武器振り攻撃","対象アニメ武器",
-
- "武器振り攻撃","absorb1","待機(固定)","武器投げ開始","12","対象アニメ武器",
-
- "着弾1","20","対象アニメウエイト","対象アニメ武器",
-
- "武器振り攻撃","absorb1","待機(固定)","武器投げ開始","12","対象アニメ武器",
-
- "着弾1","20","対象アニメウエイト","対象アニメ武器",
-
- "前ジャンプ叩き","対象アニメ武器",
-
- "武器振り攻撃","対象アニメ武器",
-
- "反転", "前ジャンプ叩き","対象アニメ武器",
-
- "武器振り攻撃","対象アニメ武器",
-
- "武器振り攻撃","absorb1","待機(固定)","武器投げ開始","12","対象アニメ武器",
-
- "前ジャンプ叩き","対象アニメ武器",
-
- "武器振り攻撃L","対象アニメ武器",
-
- "武器振り攻撃","absorb1","待機(固定)","武器投げ開始","12","対象アニメ武器",
-
- "着弾1","20","対象アニメウエイト","対象アニメ武器",
-
- "前ジャンプ叩き","対象アニメ武器",
-
- "武器振り攻撃","対象アニメ武器",
-
- "反転", "前ジャンプ叩き","対象アニメ武器",
-
- "武器振り攻撃","対象アニメ武器",
-
- "武器振り攻撃","absorb1","待機(固定)","武器投げ開始","12","対象アニメ武器",
-
- "武器振り攻撃","absorb1","待機(固定)","武器投げ開始","12","対象アニメ武器",
-
- "武器振り攻撃","absorb1","待機(固定)","武器投げ開始","12","対象アニメ武器",
-
- "武器振り攻撃","absorb1","待機(固定)","武器投げ開始","12","対象アニメ武器",
-
- "武器振り攻撃","absorb1","待機(固定)","武器投げ開始","12","対象アニメ武器",
-
- "反転", "前ジャンプ叩き","対象アニメ武器",
- "前ジャンプ叩き","対象アニメ武器",
- "前ジャンプ叩き","対象アニメ武器",
- "前ジャンプ叩き","対象アニメ武器",
- "前ジャンプ叩き","対象アニメ武器",
- "前ジャンプ叩き","対象アニメ武器",
- "前ジャンプ叩き","対象アニメ武器",
- "前ジャンプ叩き","対象アニメ武器",
- "前ジャンプ叩き","対象アニメ武器",
-
- "対象アニメ武器", "払い抜け","小吹き飛ばし","武器振り攻撃L",
-
- "反転", "対象アニメ武器", "右穿","小吹き飛ばし","武器振り攻撃L",
-
- "反転", "対象アニメ武器", "払い抜け","小吹き飛ばし","武器振り攻撃L",
-
- "反転", "対象アニメ武器", "右穿","小吹き飛ばし","武器振り攻撃L",
-
-
- "対象アニメ武器", "払い抜け","小吹き飛ばし","武器振り攻撃L",
-
- "反転", "対象アニメ武器", "右穿","小吹き飛ばし","武器振り攻撃L",
-
- "反転", "対象アニメ武器", "払い抜け","小吹き飛ばし","武器振り攻撃L",
-
- "反転", "対象アニメ武器", "右穿","小吹き飛ばし","武器振り攻撃L",
-
-
- "対象アニメ武器", "払い抜け","小吹き飛ばし","武器振り攻撃L",
-
- "反転", "対象アニメ武器", "右穿","小吹き飛ばし","武器振り攻撃L",
-
- "反転", "対象アニメ武器", "払い抜け","小吹き飛ばし","武器振り攻撃L",
-
- "反転", "対象アニメ武器", "右穿","小吹き飛ばし","武器振り攻撃L","反転",
-
- "ジャンプ停止","個別処理開始",
- "標的を自身に","武器振り攻撃","着弾1","8",
- "対象アニメ武器","個別処理終了",
- "ジャンプ着地","座標リセット",
-
- "コラプス許可",
- "16","残像OFF","12","座標リセット",],
-
- "弓箭" => ["一歩前移動","待機(固定)","武器回し下","弩发射","5",
- "対象アニメウエイト","コラプス許可","10","座標リセット"],
-
- "弩" => ["一歩前移動","待機(固定)","武器回し下","弩发射2","5",
- "対象アニメウエイト","コラプス許可","10","座標リセット"],
-
- "枪" => ["一歩前移動","待機(固定)","武器回し下","枪击中",
- "対象アニメウエイト","コラプス許可","10","座標リセット"],
-
- "光箭" => ["一歩前移動","待機(固定)","武器回し下","光箭","5",
- "対象アニメウエイト","コラプス許可","10","座標リセット"],
-
- "魔导" => ["5","待機(固定)","武器振り攻撃","5",
- "対象アニメウエイト","コラプス許可","10","座標リセット"],
-
- "二人同時攻撃" => ["二人攻撃条件確認","二人攻撃目標統一","ウルリカと攻撃",
- "目標右前移動","待機(固定)","魔法始動アニメ","武器回し下",
- "武器掲げ","48","斬撃/必殺技2","左払い抜け","64","対象アニメ",
- "コラプス許可","後退リセット","二人攻撃ステート解除"],
-
- "二人同時攻撃準備" => ["二人攻撃ステート付与"],
-
- "四人同時攻撃" => ["四人攻撃条件確認","四人攻撃目標統一","四人で攻撃1",
- "四人で攻撃2","四人で攻撃3","四人攻撃移動1","待機(固定)",
- "魔法始動アニメ","武器回し下","武器掲げ","90",
- "斬撃/必殺技1","右払い抜け","64","対象アニメウエイト",
- "コラプス許可","後退リセット","合体攻撃解除"],
-
- "四人同時攻撃準備" => ["四人攻撃ステート付与"],
-
- "武器投げ" => ["一歩前移動","武器振り攻撃","Bow2","待機(固定)",
- "武器投げ開始","12","対象アニメ武器","コラプス許可",
- "武器投げ戻し","座標リセット"],
-
- "個別全体遠距離攻撃"=> ["一歩前ジャンプ","ジャンプ停止","個別処理開始",
- "標的を自身に","武器振り攻撃","着弾1","8",
- "対象アニメ武器","個別処理終了","コラプス許可",
- "ジャンプ着地","座標リセット"],
-
- "全体遠距離攻撃" => ["標的を自身に","武器振り攻撃","着弾1","20",
- "対象アニメウエイト","コラプス許可"],
-
- "ヒールに派生" => ["目標前移動","対象アニメ","武器振り攻撃",
- "16","ヒールに派生","座標リセット"],
-
- "適当に派生" => ["逃走失敗","魔法始動アニメ","武器回し下","武器掲げ",
- "8","対象アニメ","適当に派生","座標リセット"],
-
- "カットイン" => ["待機(固定)","魔法始動アニメ","カットイン1始",
- "75","カットイン1終","8","目標前移動",
- "武器振り攻撃","対象アニメウエイト","コラプス許可",
- "ピクチャ消去","後退リセット"],
-
- "踏み潰し" => ["目標にジャンプ","打撃アニメ","縦にぺしゃんこ","一歩後ジャンプ",
- "踏みつけ","打撃アニメ","縦にぺしゃんこ","一歩後ジャンプ",
- "踏みつけ","対象アニメ","縦にぺしゃんこ","一歩後ジャンプ",
- "一歩後ジャンプ","コラプス許可","待機(固定)","8","後退リセット"],
-
- "全体攻撃1" => ["一歩前移動","待機(固定)","魔法始動アニメ","武器回し下",
- "武器掲げ","全体アニメ単体化","武器振り攻撃","48",
- "対象アニメウエイト","コラプス許可","座標リセット"],
-
- "ネコに変身" => ["一歩前ジャンプ","待機(固定)","魔法始動アニメ","32",
- "ネコに変身","待機(固定)","neko","32","一歩後ジャンプ"],
-
- "味方投げつけ" => ["投げる相手選択","目標移動","味方持ち上げ","4",
- "absorb1","投げつけ目標セット","味方投げ飛ばし",
- "味方投げ","待機(固定)","対象アニメ","座標リセット",
- "待機(固定)","32"],
- "高速多段攻撃2" => ["残像ON","前ジャンプ叩き","対象アニメウエイト","武器振り攻撃L",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","飓风刹2","対象アニメウエイト",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","飓风刹2","対象アニメウエイト",
- "一歩後ジャンプ",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","飓风刹2","対象アニメウエイト",
- "飓风刹2","対象アニメウエイト","払い抜け","武器振り攻撃L","コラプス許可",
- "一歩後ジャンプ",
- "コラプス許可","残像OFF","座標リセット"],
-
- "高速多段攻撃3" => ["残像ON","前ジャンプ叩き","対象アニメ武器","武器振り攻撃L",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "一歩後ジャンプ","一歩後ジャンプ",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "一歩後ジャンプ","一歩後ジャンプ",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "一歩後ジャンプ","一歩後ジャンプ",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "対象アニメ武器","払い抜け","武器振り攻撃L","コラプス許可",
- "一歩後ジャンプ",
- "コラプス許可","残像OFF","座標リセット"],
- "高速多段攻撃4" => ["残像ON","前ジャンプ叩き","対象アニメ武器","武器振り攻撃L",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "后跳攻击",
- "一歩後ジャンプ","一歩後ジャンプ",
- "対象アニメ武器","払い抜け","武器振り攻撃L","コラプス許可",
- "コラプス許可","残像OFF","12","座標リセット"],
- "高速多段攻撃5" => ["残像ON","前ジャンプ叩き","対象アニメ武器","武器振り攻撃L",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "一歩後ジャンプ","一歩後ジャンプ","待機(固定)",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "一歩後ジャンプ","一歩後ジャンプ","待機(固定)",
- "対象アニメ武器","払い抜け","武器振り攻撃L","コラプス許可",
- "コラプス許可","残像OFF","12","座標リセット"],
- "悬空破" => ["残像ON","前ジャンプ叩き","银刃","対象アニメウエイト","武器振り攻撃L",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "银刃","対象アニメウエイト","払い抜け","武器振り攻撃L","コラプス許可",
- "コラプス許可","残像OFF","12","座標リセット"],
- "碎空绝" => ["前ジャンプ叩き","対象アニメ武器","武器振り攻撃L",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "武器振り攻撃","武器振り攻撃L",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "対象アニメ武器","武器振り攻撃L","コラプス許可",
- "コラプス許可","残像OFF","12","座標リセット"],
- "骑士剑法" => ["前ジャンプ叩き","対象アニメ武器",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "一歩後ジャンプ","目標前高速移動","武器振り攻撃L",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "一歩後ジャンプ",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "一歩後ジャンプ",
- "対象アニメ武器","払い抜け","武器振り攻撃L","コラプス許可",
- "コラプス許可","12","座標リセット"],
- "骑士剑法2" => ["残像ON","前ジャンプ叩き","対象アニメ武器",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "一歩後ジャンプ","目標前高速移動","武器振り攻撃L",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "一歩後ジャンプ",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "一歩後ジャンプ",
- "対象アニメ武器","払い抜け","武器振り攻撃L","コラプス許可",
- "コラプス許可","12","座標リセット","残像OFF",],
- "碎空绝2" => ["残像ON","前ジャンプ叩き","対象アニメ武器","武器振り攻撃L",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "武器振り攻撃","武器振り攻撃L",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "一歩後ジャンプ",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "対象アニメ武器","払い抜け","武器振り攻撃L","コラプス許可",
- "一歩後ジャンプ",
- "コラプス許可","残像OFF","座標リセット"],
-
- "突刺2" => ["目標前移動","払い抜け","対象アニメ武器","武器振り攻撃L",
- "一歩後ジャンプ",
- "目標前移動","払い抜け","対象アニメ武器","武器振り攻撃L",
- "一歩後ジャンプ",
- "目標前移動","払い抜け","対象アニメ武器","武器振り攻撃L",
- "コラプス許可","12","座標リセット"],
-
- "突刺3" => ["残像ON","目標前移動","払い抜け","対象アニメ武器","武器振り攻撃L",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "目標前移動","払い抜け","対象アニメ武器","武器振り攻撃L",
- "一歩後ジャンプ",
- "目標前移動","払い抜け","対象アニメ武器","武器振り攻撃L",
- "一歩後ジャンプ","一歩後ジャンプ","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "コラプス許可","12","残像OFF","座標リセット"],
-
- "突刺4" => ["残像ON","目標前移動","払い抜け","対象アニメ武器","武器振り攻撃L",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "払い抜け","小吹き飛ばし","対象アニメ武器","武器振り攻撃L","武器振り攻撃L",
- "一歩後ジャンプ","一歩後ジャンプ",
- "目標前高速移動","払い抜け","対象アニメ武器","武器振り攻撃遅",
- "一歩後ジャンプ",
- "武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "コラプス許可","12","残像OFF","座標リセット"],
-
- "突刺5" => ["残像ON","目標前移動","払い抜け","対象アニメ武器","武器振り攻撃",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "目標前移動","払い抜け","対象アニメ武器","武器振り攻撃遅",
- "一歩後ジャンプ",
- "目標前高速移動","払い抜け","対象アニメ武器","武器振り攻撃L",
- "一歩後ジャンプ","武器振り攻撃","小吹き飛ばし","武器振り攻撃L","対象アニメ武器",
- "コラプス許可","残像OFF","座標リセット"],
- "突刺6" => ["残像ON","目標前移動","払い抜け","対象アニメ武器","武器振り攻撃L",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "払い抜け","小吹き飛ばし","対象アニメ武器","武器振り攻撃L","武器振り攻撃L",
- "一歩後ジャンプ","一歩後ジャンプ",
- "目標前高速移動","払い抜け","対象アニメ武器","武器振り攻撃遅",
- "一歩後ジャンプ",
- "武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "一歩後ジャンプ","一歩後ジャンプ",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "一歩後ジャンプ",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "コラプス許可","12","残像OFF","座標リセット"],
- "多段攻撃2" => ["前ジャンプ叩き","武器振り攻撃L","対象アニメ武器",
- "待機(固定)","16","対象アニメ武器","武器回し下",
- "武器回し上","4","その場ジャンプ叩き","武器振り攻撃L",
- "対象アニメ武器","待機(固定)","16","対象アニメ武器",
- "武器振り攻撃","武器振り攻撃L","12",
- "その場ジャンプ叩き","武器振り攻撃L","対象アニメ武器",
- "一歩後ジャンプ","一歩後ジャンプ","待機(固定)","非二刀限定",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "一歩後ジャンプ","一歩後ジャンプ",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "対象アニメ武器","武器振り攻撃","コラプス許可","二刀限定",
- "残像OFF","16","後退リセット"],
- "重击2" => ["前ジャンプ叩き","対象アニメウエイト","斬撃/必殺技1","武器振り攻撃L","待機(固定)","50",
- "コラプス許可","12","座標リセット"],
- "重击3" => ["待機(固定)","前ジャンプ叩き","武器振り攻撃L","対象アニメウエイト","破碎2","待機(固定)","35",
- "コラプス許可","12","座標リセット"],
- "重击4" => ["前ジャンプ叩き","対象アニメ武器","斬撃/必殺技3","武器振り攻撃L","待機(固定)","20",
- "コラプス許可","12","座標リセット"],
- "圣光突击" => ["觉醒1","待機(固定)","30","前ジャンプ叩き","武器振り攻撃L","対象アニメ武器","圣光突击","20","待機(固定)",
- "前ジャンプ叩き","武器振り攻撃L","対象アニメ武器","圣光突击","20","待機(固定)",
- "前ジャンプ叩き","武器振り攻撃L","対象アニメ武器","圣光突击","20","待機(固定)",
- "前ジャンプ叩き","武器振り攻撃L","対象アニメ武器","圣光突击","20","待機(固定)",
- "前ジャンプ叩き","武器振り攻撃L","対象アニメ武器","圣光突击","20","待機(固定)",
- "前ジャンプ叩き","武器振り攻撃L","対象アニメ武器","圣光突击","10","待機(固定)","圣光突击2","50","待機(固定)","コラプス許可","座標リセット"],
- "爆炎地狱" => ["丽娜J2","50",
- "待機(固定)","32","武器振り攻撃遅","火魔法2","30","爆炎地狱",
- "対象アニメウエイト","5","対象アニメウエイト","10",
- "対象アニメウエイト","5","対象アニメウエイト","15",
- "対象アニメウエイト","10",
- "コラプス許可","12","座標リセット"],
- "寒冰审判" => ["丽娜J2","50",
- "待機(固定)","32","武器振り攻撃遅","水魔法2","30","寒冰审判","10",
- "対象アニメウエイト","15","対象アニメウエイト","30","対象アニメウエイト","30",
- "コラプス許可","12","座標リセット"],
- "死神裂空碎" => ["觉醒3","待機(固定)","32",
- "前ジャンプ叩き","武器振り攻撃L","対象アニメ武器","裂空2","5","待機(固定)",
- "一歩後ジャンプ","一歩後ジャンプ",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "目標前高速移動","武器振り攻撃L","小吹き飛ばし","対象アニメ武器",
- "一歩後ジャンプ","一歩後ジャンプ",
- "払い抜け","対象アニメ武器","武器振り攻撃L","裂空1","7","待機(固定)",
- "一歩後ジャンプ","一歩後ジャンプ",
- "前ジャンプ叩き","武器振り攻撃L","対象アニメ武器","裂空5","5","待機(固定)",
- "前ジャンプ叩き","武器振り攻撃L","対象アニメ武器","裂空5","5","待機(固定)",
- "前ジャンプ叩き","武器振り攻撃L","対象アニメ武器","裂空5","5","待機(固定)",
- "一歩後ジャンプ","一歩後ジャンプ","裂空4","待機(固定)","30",
- "対象アニメ武器","払い抜け","武器振り攻撃L","裂空3","50","待機(固定)",
- "コラプス許可","12","座標リセット"],
- "撕咬" => ["目標前移動","武器振り攻撃","撕咬","待機(固定)","10","対象アニメウエイト",
- "コラプス許可","後退リセット"],
- "散箭" => ["一歩前移動","待機(固定)","武器回し下","散弩2","5","散弩","10",
- "対象アニメウエイト","コラプス許可","10","座標リセット"],
- "散箭2" => ["一歩前移動","待機(固定)","武器回し下","光箭","5","光箭2","10",
- "対象アニメウエイト","コラプス許可","10","座標リセット"],
- "冰箭" => ["一歩前移動","待機(固定)","武器回し下","冰箭1","35","冰箭2","25","待機(固定)",
- "冰箭3","対象アニメウエイト","15","コラプス許可","10","座標リセット"],
- "空袭连射" => ["一歩前移動","待機(固定)","武器回し下","弩发射","5","散弩","10",
- "対象アニメウエイト","一歩後ジャンプ","一歩後ジャンプ",
- "武器回し下","弩发射","5","散弩","10","対象アニメウエイト",
- "武器回し下","弩发射","5","散弩","10","対象アニメウエイト",
- "武器回し下","弩发射","5","散弩","10","対象アニメウエイト",
- "コラプス許可","12","座標リセット"],
-
- "空袭连射2" => ["一歩前移動","待機(固定)","武器回し下","光箭","5","光箭2","10",
- "対象アニメウエイト","一歩後ジャンプ","一歩後ジャンプ",
- "武器回し下","光箭","5","光箭2","10","対象アニメウエイト",
- "武器回し下","光箭","5","光箭2","10","対象アニメウエイト",
- "武器回し下","光箭","5","光箭2","10","対象アニメウエイト",
- "コラプス許可","12","座標リセット"],
- "白羽之光" => ["一歩前移動","待機(固定)","武器回し下","白羽之光2","30","白羽之光3","対象アニメウエイト","50","待機(固定)",
- "白羽之光","対象アニメウエイト","25","コラプス許可","10","座標リセット"],
- "毒箭" => ["一歩前移動","待機(固定)","武器回し下","弩发射","5","毒箭",
- "対象アニメウエイト","10","コラプス許可","10","座標リセット"],
- "冰箭2" => ["一歩前移動","待機(固定)","武器回し下","寒冰之箭改","35","寒冰之箭改2","35","待機(固定)",
- "寒冰之箭改3","対象アニメウエイト","35",
- "コラプス許可","10","座標リセット"],
- "白羽之光2" => ["一歩前移動","待機(固定)","武器回し下","白羽之光改4","30","白羽之光改2","30","白羽之光改","対象アニメウエイト","50","待機(固定)",
- "白羽之光改3","対象アニメウエイト","白羽之光改5","5",
- "対象アニメウエイト","白羽之光改5","5","対象アニメウエイト","白羽之光改5","5",
- "対象アニメウエイト","白羽之光改5","5","対象アニメウエイト","白羽之光改5","5",
- "コラプス許可","10","座標リセット"],
- "火箭" => ["一歩前移動","待機(固定)","武器回し下","爆炎之箭2","25","待機(固定)",
- "爆炎之箭3","対象アニメウエイト","30","コラプス許可","10","座標リセット"],
- "天堂突击" => ["一歩前移動","待機(固定)","武器回し下","弩发射","5","散弩","10",
- "対象アニメウエイト","一歩後ジャンプ","一歩後ジャンプ",
- "武器回し下","弩发射","5","散弩","10","対象アニメウエイト",
- "武器回し下","弩发射","5","散弩","10","対象アニメウエイト",
- "武器回し下","弩发射","5","散弩","10","対象アニメウエイト",
- "コラプス許可","12","座標リセット"],
-
- "重力射击" => ["待機(固定)","凯兰J","50",
- "待機(固定)","武器回し下","重力射击","35","重力射击2","50",
- "重力射击3","対象アニメウエイト","50",
- "重力射击4","対象アニメウエイト","20",
- "コラプス許可","10","座標リセット"],
-
- "天空突击" => ["待機(固定)","凯兰J2","50",
- "一歩前移動","待機(固定)","武器回し下","天堂突击","対象アニメウエイト","20",
- "一歩後ジャンプ","一歩後ジャンプ",
- "武器回し下","天堂突击2","天堂突击3","対象アニメウエイト","10",
- "武器回し下","天堂突击2","天堂突击4","対象アニメウエイト","10",
- "武器回し下","天堂突击2","天堂突击3","対象アニメウエイト","10",
- "武器回し下","天堂突击2","天堂突击5","対象アニメウエイト","10",
- "武器回し下","天堂突击2","天堂突击3","対象アニメウエイト","10",
- "武器回し下","天堂突击2","天堂突击4","対象アニメウエイト","10",
- "武器回し下","天堂突击2","天堂突击5","対象アニメウエイト","10",
- "武器回し下","天堂突击2","天堂突击3","対象アニメウエイト","20",
- "一歩前移動","一歩前移動","待機(固定)","武器回し下","10","天堂突击6","対象アニメウエイト","20",
- "コラプス許可","10","座標リセット"],
- "重力球" => ["一歩後ジャンプ","待機(固定)","重力球","25",
- "前ジャンプ叩き","待機(固定)","5","重力球2",
- "対象アニメウエイト","白羽之光改5","10","対象アニメウエイト","白羽之光改5","10",
- "対象アニメウエイト","白羽之光改5","10","対象アニメウエイト","白羽之光改5","10",
- "対象アニメウエイト","白羽之光改5","10","対象アニメウエイト","白羽之光改5","10",
- "対象アニメウエイト","白羽之光改5","10","対象アニメウエイト","白羽之光改5","20",
- "コラプス許可","10","座標リセット"],
- "超级连射" => ["一歩後ジャンプ","待機(固定)","武器回し下","枪击中",
- "対象アニメウエイト","反転","一歩前移動","反転",
- "待機(固定)","武器回し下","枪击中","対象アニメウエイト",
- "枪击中","対象アニメウエイト",
- "待機(固定)","反転","一歩後ジャンプ","一歩後ジャンプ","反転","武器回し下","枪击中","対象アニメウエイト",
- "コラプス許可","12","座標リセット"],
- "超级连射2" => ["一歩後ジャンプ",
- "武器回し下","5","枪击中2","対象アニメウエイト",
- "弹壳","15",
- "コラプス許可","12","座標リセット"],
- "榴弹" => ["一歩後ジャンプ",
- "武器回し下","5","榴弹","40",
- "榴弹2","対象アニメウエイト","20","武器回し下",
- "弹壳","15",
- "コラプス許可","12","座標リセット"],
- "穿甲弹" => ["一歩後ジャンプ",
- "武器回し下","穿甲弹","5","対象アニメウエイト",
- "武器回し下","穿甲弹","5","対象アニメウエイト",
- "武器回し下","穿甲弹","5","対象アニメウエイト",
- "コラプス許可","12","座標リセット"],
-
- "震荡" => ["凯兰J","50",
- "一歩後ジャンプ","待機(固定)","武器回し下","5","震荡4","対象アニメウエイト","30",
- "震荡2","対象アニメウエイト","30",
- "コラプス許可","12","座標リセット"],
-
- "能量冲击" => ["一歩後ジャンプ","待機(固定)","能量冲击","25",
- "前ジャンプ叩き","待機(固定)","対象アニメウエイト",
- "コラプス許可","10","座標リセット"],
- "炸裂冲击" => ["前ジャンプ叩き","一歩後ジャンプ","一歩後ジャンプ","待機(固定)","炸裂冲击","40",
- "待機(固定)","武器回し下","炸裂冲击2","対象アニメウエイト","30",
- "コラプス許可","10","座標リセット"],
- "旋风" => ["亚特J","50",
- "一歩後ジャンプ","待機(固定)","旋风冲击","25",
- "前ジャンプ叩き","待機(固定)","5","旋风冲击2",
- "対象アニメウエイト","白羽之光改5","5","対象アニメウエイト","白羽之光改5","5",
- "対象アニメウエイト","白羽之光改5","5","対象アニメウエイト","白羽之光改5","5",
- "対象アニメウエイト","白羽之光改5","5","対象アニメウエイト","白羽之光改5","5",
- "対象アニメウエイト","白羽之光改5","5","対象アニメウエイト","白羽之光改5","5",
- "対象アニメウエイト","白羽之光改5","5","対象アニメウエイト","白羽之光改5","5",
- "対象アニメウエイト","白羽之光改5","5","対象アニメウエイト","白羽之光改5","20",
- "コラプス許可","10","座標リセット"],
- "炸裂冲击2" => ["前ジャンプ叩き","一歩後ジャンプ","一歩後ジャンプ","待機(固定)","炸裂冲击改","50",
- "待機(固定)","武器回し下","炸裂冲击改2","対象アニメウエイト","30",
- "コラプス許可","10","座標リセット"],
- "火拳" => ["一歩後ジャンプ","待機(固定)","火拳","30",
- "武器回し下","10","火拳2","10","対象アニメウエイト",
- "コラプス許可","10","座標リセット"],
- "手雷" => ["一歩後ジャンプ","待機(固定)","手雷","25",
- "対象アニメウエイト","10",
- "コラプス許可","10","座標リセット"],
- "烈火拳" => ["亚特J2","50",
- "一歩後ジャンプ","待機(固定)","烈火拳","35",
- "勝利のジャンプ","武器振り攻撃","烈火拳2","20","烈火拳3",
- "20","対象アニメウエイト","5","対象アニメウエイト","5","対象アニメウエイト","25",
- "コラプス許可","10","座標リセット"],
- "地裂斩" => ["前ジャンプ叩き","地裂斩","対象アニメウエイト","武器振り攻撃L","待機(固定)","20",
- "コラプス許可","12","座標リセット"],
- "真空碎" => ["迪安J","50",
- "待機(固定)","勝利のジャンプ","武器振り攻撃","真空碎","30",
- "対象アニメウエイト",
- "コラプス許可","10","座標リセット"],
- "地裂碎" => ["迪安J2","50",
- "待機(固定)","勝利のジャンプ","武器振り攻撃","地裂碎","30",
- "真空碎2","対象アニメウエイト","20","真空碎3","対象アニメウエイト","20",
- "真空碎4","対象アニメウエイト","20","勝利のジャンプ","武器振り攻撃","地裂斩改",
- "65","真空碎5","対象アニメウエイト","50","地裂碎2","対象アニメウエイト","30",
- "コラプス許可","10","座標リセット"],
- "雷暴" => ["一歩後ジャンプ","待機(固定)","魔法始動アニメ","武器回し下","10",
- "待機(固定)","雷暴","対象アニメウエイト","10","対象アニメウエイト","18",
- "対象アニメウエイト","20",
- "コラプス許可","10","座標リセット"],
- "黑洞" => ["一歩後ジャンプ","待機(固定)","武器回し下","魔法始動アニメ","10",
- "待機(固定)","黑洞","10","対象アニメウエイト","5",
- "対象アニメウエイト","5","対象アニメウエイト","5","対象アニメウエイト","5",
- "対象アニメウエイト","15","対象アニメウエイト","20",
- "コラプス許可","10","座標リセット"],
- "混沌" => ["待機(固定)","勝利のジャンプ","武器振り攻撃","混沌之祭","10","混沌之祭2",
- "25","混沌之祭3","対象アニメウエイト","30","混沌之祭4","対象アニメウエイト","5",
- "対象アニメウエイト","5","対象アニメウエイト","5","対象アニメウエイト","20",
- "コラプス許可","10","座標リセット"],
- "歼灭之炎" => ["火魔法始動アニメ","待機(固定)",
- "武器回し下","歼灭之炎","22","対象アニメウエイト","30","コラプス許可","10","座標リセット"],
- "高温射线" => ["火魔法始動アニメ","待機(固定)",
- "武器回し下","高温射线","5","対象アニメウエイト","3",
- "対象アニメウエイト","15","対象アニメウエイト","20",
- "コラプス許可","10","座標リセット"],
- "歼灭之炎2" => ["火魔法始動アニメ","待機(固定)",
- "武器回し下","歼灭之炎2","22","対象アニメウエイト","30","コラプス許可","10","座標リセット"],
- "寒冰地狱" => ["水魔法始動アニメ","待機(固定)",
- "武器回し下","寒冰地狱","30","対象アニメウエイト","20",
- "対象アニメウエイト","20",
- "コラプス許可","10","座標リセット"],
- "寒冰地狱2" => ["水魔法始動アニメ","待機(固定)",
- "武器回し下","寒冰地狱2","30","対象アニメウエイト","30",
- "対象アニメウエイト","20",
- "コラプス許可","10","座標リセット"],
- "绞杀冰剑" => ["水魔法始動アニメ","待機(固定)",
- "武器回し下","10","绞杀冰剑","5","対象アニメウエイト","15",
- "対象アニメウエイト","15","対象アニメウエイト","20",
- "コラプス許可","10","座標リセット"],
-
- "绞杀冰剑2" => ["水魔法始動アニメ","待機(固定)",
- "武器回し下","10","绞杀冰剑2","5","対象アニメウエイト","15",
- "対象アニメウエイト","15","対象アニメウエイト","20",
- "コラプス許可","10","座標リセット"],
-
- "星蓝之剑" => ["右払い抜け2","星蓝之剑","対象アニメウエイト","待機(固定)","50",
- "星蓝之剑2","対象アニメウエイト","35",
- "コラプス許可","10","座標リセット"],
-
- "黑洞2" => ["丽娜J2","50",
- "一歩後ジャンプ","裂空4","待機(固定)","25",
- "武器回し下","20","待機(固定)","5","黑洞2",
- "対象アニメウエイト","5","対象アニメウエイト","5",
- "対象アニメウエイト","5","対象アニメウエイト","5",
- "対象アニメウエイト","5","対象アニメウエイト","5",
- "対象アニメウエイト","5","対象アニメウエイト","5",
- "対象アニメウエイト","5","対象アニメウエイト","5",
- "対象アニメウエイト","5","対象アニメウエイト","5",
- "対象アニメウエイト","5","対象アニメウエイト","5",
- "対象アニメウエイト","5","対象アニメウエイト","5",
- "対象アニメウエイト","5","対象アニメウエイト","15",
- "コラプス許可","10","座標リセット"],
-
- "龙斩" => ["亚特J2","50",
- "龙斩","前ジャンプ叩き","龙斩2","対象アニメウエイト","武器振り攻撃L","待機(固定)","20",
- "一歩後ジャンプ","一歩後ジャンプ","待機(固定)","武器振り攻撃遅","20",
- "龙斩3","対象アニメウエイト","5","対象アニメウエイト","5",
- "対象アニメウエイト","5","対象アニメウエイト","25","一歩後ジャンプ","一歩後ジャンプ",
- "待機(固定)","裂空4","25","前ジャンプ叩き","龙斩4","対象アニメウエイト","武器振り攻撃L","待機(固定)","20",
- "コラプス許可","12","座標リセット"],
-
- "连环爆烈" => ["前ジャンプ叩き","地裂碎","対象アニメウエイト","武器振り攻撃L","20","待機(固定)",
- "前ジャンプ叩き","地裂碎","対象アニメウエイト","武器振り攻撃L","20",
- "前ジャンプ叩き","地裂碎","対象アニメウエイト","武器振り攻撃L","20",
- "前ジャンプ叩き","地裂碎","対象アニメウエイト","武器振り攻撃L","20",
- "コラプス許可","12","座標リセット"],
- "强力爆烈" => ["前ジャンプ叩き","力爆","対象アニメウエイト","武器振り攻撃L","待機(固定)","20",
- "コラプス許可","12","座標リセット"],
- "浊流" => ["魔法始動アニメ","15","浊流","対象アニメウエイト",
- "対象アニメウエイト","対象アニメウエイト","対象アニメウエイト",
- "コラプス許可","12","座標リセット"],
-
- "沙漠风暴" => ["凯兰J2","50",
- "一歩後ジャンプ","沙漠风暴2","沙漠风暴专用","60",
- "沙漠风暴","対象アニメウエイト","沙漠风暴","対象アニメウエイト",
- "沙漠风暴","対象アニメウエイト","沙漠风暴","対象アニメウエイト",
- "沙漠风暴","対象アニメウエイト","沙漠风暴","対象アニメウエイト",
- "沙漠风暴","対象アニメウエイト","沙漠风暴","対象アニメウエイト",
- "沙漠风暴","対象アニメウエイト","沙漠风暴","対象アニメウエイト",
- "沙漠风暴","対象アニメウエイト","沙漠风暴","対象アニメウエイト",
- "沙漠风暴","対象アニメウエイト","沙漠风暴","対象アニメウエイト",
- "沙漠风暴","対象アニメウエイト","沙漠风暴","対象アニメウエイト",
- "沙漠风暴","対象アニメウエイト","沙漠风暴","対象アニメウエイト",
- "沙漠风暴","対象アニメウエイト","沙漠风暴","対象アニメウエイト","10",
- "待機(固定)","沙漠风暴专用2","沙漠风暴3","40","变身BUG","沙漠风暴专用3","10","一歩後ジャンプ",
- "待機(固定)","火箭弹","50","火箭弹2","対象アニメウエイト","対象アニメウエイト",
- "コラプス許可","10","座標リセット"],
-
- "混沌2" => ["待機(固定)","暗魔法始動アニメ","武器振り攻撃","20","混沌之祭2",
- "35","混沌之祭4","5","対象アニメウエイト","5","対象アニメウエイト","5",
- "対象アニメウエイト","5","対象アニメウエイト","20",
- "コラプス許可","10","座標リセット"],
-
- "混沌3" => ["丽娜J","50",
- "待機(固定)","暗魔法始動アニメ","武器振り攻撃","20","混沌之祭5",
- "30","混沌之祭3","5","対象アニメウエイト","20",
- "コラプス許可","10","座標リセット"],
- "剧毒" => ["待機(固定)","暗魔法始動アニメ","武器振り攻撃","20","剧毒风暴",
- "対象アニメウエイト","10","対象アニメウエイト","10","対象アニメウエイト","20",
- "コラプス許可","10","座標リセット"],
-
- "真空刺" => ["3","真空刺","目標前高速移動",
- "払い抜け","対象アニメウエイト","待機(固定)","20",
- "コラプス許可","座標リセット"],
-
- "真空刺2" => ["真空刺改","8","目標前高速移動",
- "払い抜け","真空刺改2","対象アニメウエイト","待機(固定)","35",
- "コラプス許可","座標リセット"],
-
- "雷暴2" => ["一歩後ジャンプ","待機(固定)","魔法始動アニメ","武器回し下","10",
- "待機(固定)","雷暴2","対象アニメウエイト","35","対象アニメウエイト","20",
- "コラプス許可","10","座標リセット"],
-
- "冰球" => ["丽娜J","50","水魔法始動アニメ",
- "待機(固定)","武器回し下","冰球","40","冰球2","10","対象アニメウエイト","15",
- "対象アニメウエイト","15","対象アニメウエイト","20",
- "コラプス許可","10","座標リセット"],
-
- "高温激光" =>["丽娜J","50","火魔法始動アニメ",
- "待機(固定)","武器回し下","高温激光枪","75","高温激光枪2","対象アニメウエイト","35",
- "コラプス許可","10","座標リセット"],
-
- "半月碎" => ["亚特J","50",
- "半月碎3","目標前高速移動","残像ON","待機(固定)","反転","5","武器振り攻撃L","反転","半月碎","5",
- "対象アニメウエイト","35","待機(固定)","10","半月碎2",
- "対象アニメウエイト","5","対象アニメウエイト","5","対象アニメウエイト","5","対象アニメウエイト","30","反転",
- "コラプス許可","反転","座標リセット"],
-
- "重击/敌" => ["目標前移動","敌斩击2","対象アニメウエイト","20",
- "コラプス許可","座標リセット"],
-
- "连击/敌" => ["目標前移動","敌斩击","対象アニメウエイト","20",
- "目標前移動","敌斩击","対象アニメウエイト","20",
- "目標前移動","敌斩击","対象アニメウエイト","20",
- "コラプス許可","座標リセット"],
-
- "横扫/敌" => ["目標前移動","敌斩击3","対象アニメウエイト","30",
- "コラプス許可","座標リセット"],
-
- "突刺/敌" => ["目標前移動","敌斩击4","対象アニメウエイト","20",
- "コラプス許可","座標リセット"],
-
- "重击/敌2" => ["目標前移動","敌斩击5","対象アニメウエイト","20",
- "コラプス許可","座標リセット"],
-
- "连击/敌2" => ["目標前移動","敌斩击6","対象アニメウエイト","20",
- "目標前移動","敌斩击6","対象アニメウエイト","20",
- "目標前移動","敌斩击6","対象アニメウエイト","20",
- "コラプス許可","座標リセット"],
-
- "重击/敌3" => ["目標前移動","敌斩击7","対象アニメウエイト","20",
- "コラプス許可","座標リセット"],
-
- "双破" => ["前ジャンプ叩き","斩击4","対象アニメウエイト","武器振り攻撃L","待機(固定)",
- "20","一歩後移動","一歩後移動",
- "払い抜け","対象アニメウエイト","斩击5","小吹き飛ばし","武器振り攻撃L","20",
- "コラプス許可","12","座標リセット"],
-
- "杀戮盛宴" => ["杀戮3","残像ON","目標前高速移動","空白","10","杀戮","40",
- "变身BUG","变身解除2","座標リセット","待機(固定)","10","杀戮2","対象アニメウエイト","20",
- "コラプス許可","12","座標リセット"],
-
- "杀戮盛宴2" => ["杀戮改3","残像ON","目標前高速移動","空白","10","杀戮改","40",
- "变身BUG","变身解除2","座標リセット","待機(固定)","10","杀戮改2","対象アニメウエイト","20",
- "コラプス許可","12","座標リセット"],
-
- "杀戮盛宴3" => ["杀戮3","残像ON","目標前高速移動","空白","10","杀戮","40",
- "变身BUG","变身解除3","座標リセット","待機(固定)","10","杀戮2","対象アニメウエイト","20",
- "コラプス許可","12","座標リセット"],
-
- "背射" => ["毁灭残影","残像ON","目標前高速移動","移动目标身后","一歩前ジャンプ","反転","待機(固定)","武器回し下","背射",
- "8","背射2","対象アニメウエイト","20","残像OFF",
- "コラプス許可","12","座標リセット","反転",],
-
- #-------------------------------------------------------------------------------
- "終了" => ["終了"]}
- end
- #==============================================================================
- # ■ Game_Actor"その場ジャンプ叩き"
- #------------------------------------------------------------------------------
- # アクターごとに基本アクションを指定します
- #==============================================================================
- class Game_Actor < Game_Battler
- #--------------------------------------------------------------------------
- # ● アクターIDから素手(武器なし)時のアクションを決めます
- #--------------------------------------------------------------------------
- # when 1 ←この数字がアクターID
- # return "通常攻撃" ←対応する通しアクション名を入れてください
- def non_weapon
- case @actor_id
- when 1
- return "通常攻撃"
- end
- # 上記のアクターID以外すべてに適用されるアクション
- return "通常攻撃"
- end
- #--------------------------------------------------------------------------
- # ● 通常待機
- #--------------------------------------------------------------------------
- def normal
- case @actor_id
- when 1
- return "待機"
- end
- # 上記のアクターID以外すべてに適用されるアクション
- return "待機"
- end
- #--------------------------------------------------------------------------
- # ● ピンチ(HP1/4以下)
- #--------------------------------------------------------------------------
- def pinch
- case @actor_id
- when 1
- return "ピンチ待機"
- end
- # 上記のアクターID以外すべてに適用されるアクション
- return "ピンチ待機"
- end
- #--------------------------------------------------------------------------
- # ● 防御
- #--------------------------------------------------------------------------
- def defence
- case @actor_id
- when 1
- return "防御"
- end
- # 上記のアクターID以外すべてに適用されるアクション
- return "防御"
- end
- #--------------------------------------------------------------------------
- # ● ダメージ 対象アニメ時、ヒットしていればこのアクションを取ります
- #--------------------------------------------------------------------------
- def damage_hit
- case @actor_id
- when 1
- return "ダメージ"
- end
- # 上記のアクターID以外すべてに適用されるアクション
- return "ダメージ"
- end
- #--------------------------------------------------------------------------
- # ● 回避 対象アニメ時、ヒットしていなければこのアクションを取ります
- #--------------------------------------------------------------------------
- def evasion
- case @actor_id
- when 1
- return "回避"
- end
- # 上記のアクターID以外すべてに適用されるアクション
- return "回避"
- end
- #--------------------------------------------------------------------------
- # ● コマンド入力前動作
- #--------------------------------------------------------------------------
- def command_b
- case @actor_id
- when 1
- return "コマンド入力"
- end
- # 上記のアクターID以外すべてに適用されるアクション
- return "コマンド入力"
- end
- #--------------------------------------------------------------------------
- # ● コマンド入力後動作
- #--------------------------------------------------------------------------
- def command_a
- case @actor_id
- when 1
- return "コマンド入力後"
- end
- # 上記のアクターID以外すべてに適用されるアクション
- return "コマンド入力後"
- end
- #--------------------------------------------------------------------------
- # ● 逃走成功
- #--------------------------------------------------------------------------
- def run_success
- case @actor_id
- when 1
- return "逃走"
- end
- # 上記のアクターID以外すべてに適用されるアクション
- return "逃走"
- end
- #--------------------------------------------------------------------------
- # ● 逃走失敗
- #--------------------------------------------------------------------------
- def run_ng
- case @actor_id
- when 1
- return "逃走失敗"
- end
- # 上記のアクターID以外すべてに適用されるアクション
- return "逃走失敗"
- end
- #--------------------------------------------------------------------------
- # ● 勝利
- #--------------------------------------------------------------------------
- def win
- case @actor_id
- when 1
- return "勝利"
- end
- # 上記のアクターID以外すべてに適用されるアクション
- return "勝利"
- end
- #--------------------------------------------------------------------------
- # ● 戦闘突入時のアクション
- #--------------------------------------------------------------------------
- def first_action
- case @actor_id
- when 1
- return "戦闘開始"
- end
- # 上記のアクターID以外すべてに適用されるアクション
- return "戦闘開始"
- end
- #--------------------------------------------------------------------------
- # ● アクションが中断された場合の復帰アクション
- #--------------------------------------------------------------------------
- def recover_action
- case @actor_id
- when 1
- return "座標復帰"
- end
- # 上記のアクターID以外すべてに適用されるアクション
- return "座標復帰"
- end
- #--------------------------------------------------------------------------
- # ● 影グラフィック キャラクターフォルダから参照
- #--------------------------------------------------------------------------
- # return "shadow00" ←指定する画像ファイル名を入れてください
- def shadow
- case @actor_id
- when 1
- return "shadow00"
- end
- # 上記のアクターID以外すべてに適用される影グラフィック
- return "shadow00"
- end
- #--------------------------------------------------------------------------
- # ● 影グラフィックの位置を微調整
- #--------------------------------------------------------------------------
- # return [横座標, 縦座標]
- def shadow_plus
- case @actor_id
- when 1
- return [ 0, 4]
- end
- # 上記のアクターID以外すべてに適用される位置
- return [ 0, 4]
- end
- end
- #==============================================================================
- # ■ Game_Enemy
- #------------------------------------------------------------------------------
- # エネミーの基本アクション指定
- #==============================================================================
- class Game_Enemy < Game_Battler
- #--------------------------------------------------------------------------
- # ● エネミーIDから武器設定なしの通常攻撃アクションを決めます
- #--------------------------------------------------------------------------
- # when 1 ←この数字がエネミーID
- # return "敵武器なし攻撃" ←対応する通しアクション名を入れてください
- def base_action
- case @enemy_id
- when 1
- return "敵武器なし攻撃"
- end
- # 上記のエネミーID以外すべてに適用されるアクション
- return "敵武器なし攻撃"
- end
- #--------------------------------------------------------------------------
- # ● 通常待機
- #--------------------------------------------------------------------------
- def normal
- case @enemy_id
- when 1
- return "待機"
- end
- # 上記のエネミーID以外すべてに適用されるアクション
- return "待機"
- end
- #--------------------------------------------------------------------------
- # ● ピンチ(HP1/4以下)
- #--------------------------------------------------------------------------
- def pinch
- case @enemy_id
- when 1
- return "待機"
- end
- # 上記のエネミーID以外すべてに適用されるアクション
- return "待機"
- end
- #--------------------------------------------------------------------------
- # ● 防御
- #--------------------------------------------------------------------------
- def defence
- case @enemy_id
- when 1
- return "防御"
- end
- # 上記のエネミーID以外すべてに適用されるアクション
- return "防御"
- end
- #--------------------------------------------------------------------------
- # ● ダメージ 対象アニメ時、ヒットしていればこのアクションを取ります
- #--------------------------------------------------------------------------
- def damage_hit
- case @enemy_id
- when 1
- return "ダメージ"
- end
- # 上記のエネミーID以外すべてに適用されるアクション
- return "ダメージ"
- end
- #--------------------------------------------------------------------------
- # ● 回避 対象アニメ時、ヒットしてなければこのアクションを取ります
- #--------------------------------------------------------------------------
- def evasion
- case @enemy_id
- when 1
- return "エネミー回避"
- end
- # 上記のエネミーID以外すべてに適用されるアクション
- return "エネミー回避"
- end
- #--------------------------------------------------------------------------
- # ● 逃走
- #--------------------------------------------------------------------------
- def run_success
- case @enemy_id
- when 1
- return "エネミー逃走"
- end
- # 上記のエネミーID以外すべてに適用されるアクション
- return "エネミー逃走"
- end
- #--------------------------------------------------------------------------
- # ● 戦闘突入時のアクション
- #--------------------------------------------------------------------------
- def first_action
- case @enemy_id
- when 1
- return "戦闘開始"
- end
- # 上記のエネミーID以外すべてに適用されるアクション
- return "戦闘開始"
- end
- #--------------------------------------------------------------------------
- # ● アクションが中断された場合の復帰アクション
- #--------------------------------------------------------------------------
- def recover_action
- case @enemy_id
- when 1
- return "座標復帰"
- end
- # 上記のエネミーID以外すべてに適用されるアクション
- return "座標復帰"
- end
- #--------------------------------------------------------------------------
- # ● 影グラフィック キャラクターフォルダから参照
- #--------------------------------------------------------------------------
- # return "shadow01" ←指定する画像ファイル名を入れてください。
- def shadow
- case @enemy_id
- when 1
- return "shadow01"
- end
- # 上記のエネミーID以外すべてに適用される影グラフィック
- return "shadow01"
- end
- #--------------------------------------------------------------------------
- # ● 影グラフィックの位置を微調整
- #--------------------------------------------------------------------------
- # return [横座標, 縦座標]
- def shadow_plus
- case @enemy_id
- when 1
- return [ 0, -30]
- end
- # 上記のエネミーID以外すべてに適用される位置
- return [ 0, 0]
- end
- #--------------------------------------------------------------------------
- # ● エネミー武器設定 アクションとアニメは武器のものに反映されます
- #--------------------------------------------------------------------------
- # return 1 ←この数字が武器ID。0にすると素手扱いになります。
- # エネミーアニメをONにしていると画像も表示されます。
- def weapon
- case @enemy_id
- when 23
- return 152
- when 24
- return 152
- when 1
- return 152
- when 2
- return 152
- when 3
- return 152
- when 4
- return 152
- when 5
- return 152
- when 6
- return 152
- when 7
- return 154
- when 8
- return 154
- when 9
- return 152
- when 10
- return 152
- when 11
- return 152
- when 12
- return 152
- when 13
- return 152
- when 14
- return 152
- end
- # 上記のエネミーID以外すべてに適用される武器ID
- return 0
- end
- #--------------------------------------------------------------------------
- # ● 戦闘配置の微調整 データベースで設定できない広範囲の座標はここで調整
- #--------------------------------------------------------------------------
- # return [ 0, 0] => [X座標、Y座標] この数値分データベース上の配置から変化します
- def position_plus
- case @enemy_id
- when 1
- return [0, 0]
- end
- # 上記のエネミーID以外すべてに適用される座標調整
- return [ 0, 0]
- end
- #--------------------------------------------------------------------------
- # ● エネミーのコラプス(撃破時の退場)タイプ
- #--------------------------------------------------------------------------
- # コラプスさせずに残すなら1、ノーマルタイプは2、ボスタイプは3
- def collapse_type
- case @enemy_id
- when 7
- return 3
- when 14
- return 3
- end
- # 上記のエネミーID以外すべてに適用されるコラプス
- return 2
- end
- #--------------------------------------------------------------------------
- # ● エネミー行動回数 1ターンに何回行動するか
- #--------------------------------------------------------------------------
- # 回数 確率 補正
- # return [ 2, 100, 50]
- #
- # 回数…最大行動回数
- # 確率…次の行動を取る確率。数値は%
- # 補正…素早さ補正。行動するたびにこの数値%分素早さが低下
- def action_time
- case @enemy_id
- when 1
- return [ 1, 100, 100]
- end
- # 上記のエネミーID以外すべてに適用される行動回数
- return [ 1, 100, 100]
- end
- #--------------------------------------------------------------------------
- # ● エネミーアニメ
- #--------------------------------------------------------------------------
- # エネミーにアニメさせるか trueにするとアクターと同等の扱いになります。
- # [設定方法]
- # 1.エネミーのアニメ画像をキャラクターフォルダに用意
- # 2.データベースのエネミーバトラーファイル名を、参照するキャラファイル名にする
- def anime_on
- case @enemy_id
- when 17
- return true
- when 18
- return true
- when 19
- return true
- when 20
- return true
- when 21
- return true
- when 22
- return true
- when 30
- return true
- end
- # 上記のエネミーID以外すべてに適用されるアニメ設定
- return false
- end
- #--------------------------------------------------------------------------
- # ● エネミーアニメ時の自動反転
- #--------------------------------------------------------------------------
- # 上のアニメがONになっているエネミーの画像や武器アニメを自動反転させるならtrue
- def action_mirror
- case @enemy_id
- when 17
- return true
- when 18
- return true
- when 19
- return true
- when 20
- return true
- when 21
- return true
- when 22
- return true
- when 30
- return true
- end
- # 上記のエネミーID以外すべてに適用されるアニメ設定
- return false
- end
- end
- module RPG
- #==============================================================================
- # ■ module RPG
- #------------------------------------------------------------------------------
- # ステートアクション設定です。
- #==============================================================================
- class State
- #--------------------------------------------------------------------------
- # ● ID指定 ステートによって通常待機、ピンチのアクションが変わります。
- #--------------------------------------------------------------------------
- # when 1 ←この数字がステートID
- # return "気絶" ←対応する通しアクション名を入れてください
- def base_action
- case @id
- when 1 # 戦闘不能(HP0)時です。最優先で選択されます
- return "気絶"
- when 3,4,5,7,60
- return "状態異常待機"
- when 999
- return "睡眠待機"
- when 999
- return "浮遊待機"
- when 10
- return "出血待机"
- when 64
- return "出血待机"
- when 2
- return "中毒待机"
- when 67
- return "中毒待机"
- when 13
- return "烧伤待机"
- when 55
- return "眩晕待机"
- when 56
- return "眩晕待机"
- when 63
- return "眩晕待机"
- when 16
- return "冰冻待机"
- when 18
- return "冰冻待机"
- when 66
- return "冰冻待机"
- when 21
- return "怒绝"
- when 54
- return "炸裂神弓"
- when 23
- return "狂暴"
- when 59
- return "炸裂射击"
- when 68
- return "神圣之翼"
- when 25
- return "导力全开"
- end
- # 上記IDのステート以外すべてに適用される通しアクション
- return "待機"
- end
- #--------------------------------------------------------------------------
- # ● 拡張設定 ステートIDから拡張設定を決めます。重複可能。
- #--------------------------------------------------------------------------
- # "自動復活/50"…戦闘不能時に自動で復帰。戦闘不能付与で解除されない設定にすること。
- # /の後ろの数字は復帰時のHP(最大値からの割合%)復帰後ステートは自動解除される
- # "魔法反射/39"…魔法(物理攻撃以外)スキルを反射。/の後に反射時のアニメIDを入れる
- # "物理反射/39"…物理攻撃(スキル含む)を反射。/の後に反射時のアニメIDを入れる
- # "魔法無効/39"…魔法(物理攻撃以外)スキルを無効化。/の後に無効時のアニメIDを入れる
- # "物理無効/39"…物理攻撃(スキル含む)を無効化。/の後に無効時のアニメIDを入れる
- # "コスト吸収"…受けたスキルのコストを自身に還元。数値はPOPしません
- # "0ターン解除"…行動順にかかわらずそのターンでステートを解除
- # "エネミー除外"…エネミーに取らせたくないステートアクション
- # "POPなし"…ステート付加時、ダメージウインドウにステート名を表示しない
- # "アイコン非表示"…ステータスウインドウにステートアイコンを表示しない
- # "ステートアクション禁止"…ステートが付加しても待機アクションに反映させない
- # "スリップダメージ"…下のスリップダメージ設定を適用させます
- # "なし"…拡張なし
- def extension
- case @id
- when 1 # 戦闘不能
- return ["POPなし","エネミー除外"]
- when 2 # 毒
- return ["スリップダメージ"]
- when 13 # 烧伤
- return ["スリップダメージ"]
- when 10 # 出血
- return ["スリップダメージ"]
- when 64 # 出血2
- return ["スリップダメージ"]
- when 68 # 圣灵
- return ["スリップダメージ"]
- when 25 # 导力
- return ["スリップダメージ"]
- when 69 # 魔法反射
- return ["魔法反射/296"]
- when 30 # 完美防御
- return ["魔法無効/297","物理無効/297"]
- when 33 # 完美防御2
- return ["魔法無効/297","物理無効/297"]
- when 70 # 物理反射
- return ["物理反射/298"]
- when 999
- return ["0ターン解除","アイコン非表示"]
- when 999
- return ["0ターン解除","アイコン非表示"]
- when 999
- return ["アイコン非表示","ステートアクション禁止"]
- end
- # 上記のID以外すべてに適用される拡張設定
- return ["なし"]
- end
- #--------------------------------------------------------------------------
- # ● スリップダメージ拡張設定 スリップ回復も含まれます
- #--------------------------------------------------------------------------
- # when 1 ←この数字がステートID。上で"スリップダメージ"が付いている時のみ有効
- # 複数の設定も反映可。例)[["hp",0,5,true],["mp",0,5,true]]
- #
- # 対象 定数 割合 POP 戦闘不能許可
- # return [["hp", 0, 10, true, true]]
- #
- # 対象…スリップダメージ対象が HPなら"hp" MPなら"mp"
- # 定数…この数値がそのままダメージ。マイナスなら回復。数値は多少分散します
- # 割合…対象の最大値の割合でダメージ。数値は%。定数と足し算され多少分散します
- # POP…戦闘画面で数値をPOPさせるならtrue
- # 戦闘不能許可…HP0を許可するならtrue
- def slip_extension
- case @id
- when 2 # 毒
- return [["hp", 0, 1, true, true]]
- when 13 # 烧伤
- return [["hp", 0, 1, true, true]]
- when 10 # 出血
- return [["hp", 0, 5, true, true]]
- when 64 # 出血2
- return [["hp", 0, 5, true, true]]
- when 68 # 圣灵2
- return [["hp", 0, -10, true, true]]
- when 999 # MP1%回復
- return [["mp", 0, -1, false, true]]
- when 999 # MP2%回復
- return [["mp", 0, -2, false, true]]
- when 999 # MP3%回復
- return [["mp", 0, -3, false, true]]
- when 999 # MP4%回復
- return [["mp", 0, -4, false, true]]
- when 25 # MP10%回復
- return [["mp", 0, -10, false, true]]
- when 999 # MP6%回復
- return [["mp", 0, -6, false, true]]
- when 999 # HMコンバータ
- return [["hp", 0,10, true, true],["mp", 0, -5, true, true]]
- when 999 # MHコンバータ
- return [["hp", 0,-10, true, true],["mp", 0, 5, true, true]]
- end
- return []
- end
- end
- #==============================================================================
- # ■ module RPG
- #------------------------------------------------------------------------------
- # 武器アクション設定です。
- #==============================================================================
- class Weapon
- #--------------------------------------------------------------------------
- # ● アクション指定 装備している武器のIDから通常攻撃のアクションを決めます。
- #--------------------------------------------------------------------------
- # when 1 ←この数字が武器ID
- # return "通常攻撃" ←対応する通しアクション名を入れてください
- def base_action
- case @id
- when 4
- return "弩"
- when 3
- return "弓箭"
- when 27
- return "弓箭"
- when 28
- return "弓箭"
- when 29
- return "弓箭"
- when 30
- return "弓箭"
- when 31
- return "弓箭"
- when 32
- return "弓箭"
- when 33
- return "弓箭"
- when 34
- return "弓箭"
- when 36
- return "弩"
- when 37
- return "弩"
- when 38
- return "弩"
- when 39
- return "弩"
- when 40
- return "弩"
- when 41
- return "弩"
- when 42
- return "弩"
- when 43
- return "弩"
- when 45
- return "枪"
- when 46
- return "枪"
- when 47
- return "枪"
- when 48
- return "枪"
- when 139
- return "枪"
- when 141
- return "枪"
- when 112
- return "光箭"
- when 113
- return "光箭"
- when 114
- return "光箭"
- when 115
- return "光箭"
- when 116
- return "光箭"
- when 117
- return "光箭"
- when 118
- return "光箭"
- when 119
- return "光箭"
- when 135
- return "光箭"
- when 136
- return "光箭"
- when 147
- return "光箭"
- when 148
- return "光箭"
- when 121
- return "魔导"
- when 122
- return "魔导"
- when 123
- return "魔导"
- when 124
- return "魔导"
- when 137
- return "魔导"
- when 149
- return "魔导"
- end
- # 上記のID以外すべてに適用されるアクション
- return "通常攻撃"
- end
- #--------------------------------------------------------------------------
- # ● グラフィック指定 装備している武器のIDから武器グラフィックを指定します
- #--------------------------------------------------------------------------
- # return "001-Weapon01" ←対応する武器グラフィックのファイル名を入れてください
- # 武器グラフィックはキャラクターフォルダに入れてください
- # アイコンを利用する場合、IDにないものは全てアイコン画像を利用します
- # 特定の武器を非表示にしたい場合は空の画像を用意して、それを指定します
- def graphic
- case @id
- when 1
- return ""
- end
- # 上記ID以外は全てアイコン画像を利用
- return ""
- end
- #--------------------------------------------------------------------------
- # ● 飛ばしアニメに貼り付ける武器グラフィック キャラクターフォルダを参照します
- #--------------------------------------------------------------------------
- # アニメ飛ばし用の武器画像は上の設定とは別に指定。弓と矢の表現などに。
- # ここで設定しなかった武器は上の画像と同じになります。
- def flying_graphic
- case @id
- when 75
- return ""
- end
- # 上記ID以外は全て上の画像を利用
- return ""
- end
- end
- #==============================================================================
- # ■ module RPG
- #------------------------------------------------------------------------------
- # スキルアクション設定です。
- #==============================================================================
- class Skill
- #--------------------------------------------------------------------------
- # ● スキルIDからアクションを決めます。
- #--------------------------------------------------------------------------
- def base_action
- case @id
- when 156
- return "震荡"
- when 143
- return "背射"
- when 214
- return "重击/敌"
- when 215
- return "连击/敌"
- when 216
- return "横扫/敌"
- when 217
- return "突刺/敌"
- when 218
- return "重击/敌2"
- when 219
- return "连击/敌2"
- when 220
- return "重击/敌3"
- when 209
- return "半月碎"
- when 208
- return "高温激光"
- when 207
- return "冰球"
- when 181
- return "雷暴2"
- when 206
- return "剧毒"
- when 205
- return "沙漠风暴"
- when 203
- return "散箭2"
- when 202
- return "浊流"
- when 195
- return "黑洞2"
- when 198
- return "连环爆烈"
- when 199
- return "强力爆烈"
- when 194
- return "星蓝之剑"
- when 197
- return "龙斩"
- when 16
- return "绞杀冰剑"
- when 17
- return "寒冰地狱"
- when 37
- return "寒冰地狱2"
- when 35
- return "歼灭之炎2"
- when 36
- return "绞杀冰剑2"
- when 12
- return "歼灭之炎"
- when 34
- return "高温射线"
- when 186
- return "混沌3"
- when 182
- return "雷暴"
- when 185
- return "混沌2"
- when 171
- return "真空碎"
- when 172
- return "地裂碎"
- when 170
- return "地裂斩"
- when 168
- return "烈火拳"
- when 144
- return "手雷"
- when 166
- return "火拳"
- when 167
- return "旋风"
- when 159
- return "能量冲击"
- when 160
- return "炸裂冲击"
- when 164
- return "炸裂冲击2"
- when 154
- return "穿甲弹"
- when 153
- return "榴弹"
- when 151
- return "超级连射"
- when 152
- return "超级连射2"
- when 163
- return "重力球"
- when 146
- return "天空突击"
- when 145
- return "重力射击"
- when 141
- return "冰箭2"
- when 139
- return "毒箭"
- when 138
- return "白羽之光"
- when 142
- return "白羽之光2"
- when 136
- return "空袭连射"
- when 204
- return "空袭连射2"
- when 135
- return "散箭"
- when 137
- return "冰箭"
- when 66
- return "撕咬"
- when 1
- return "2段攻撃ランダム用"
- when 100
- return "死神裂空碎"
- when 98
- return "疾电之失"
- when 97
- return "寒冰审判"
- when 96
- return "爆炎地狱"
- when 53
- return "真空刺"
- when 60
- return "真空刺2"
- when 52
- return "双破"
- when 22
- return "高速多段攻撃3"
- when 29
- return "高速多段攻撃4"
- when 30
- return "高速多段攻撃5"
- when 32
- return "多段攻撃2"
- when 54
- return "骑士剑法"
- when 59
- return "骑士剑法2"
- when 999
- return "多段攻撃"
- when 5
- return "杀戮盛宴"
- when 221
- return "杀戮盛宴3"
- when 3
- return "多段攻撃ランダム用"
- when 999
- return "高速多段攻撃"
- when 19
- return "杀戮盛宴2"
- when 51
- return "重击"
- when 177
- return "地裂斩"
- when 95
- return "圣光突击"
- when 4
- return "重击2"
- when 20
- return "重击3"
- when 6
- return "重击4"
- when 161
- return "突刺"
- when 71
- return "突刺2"
- when 72
- return "突刺3"
- when 162
- return "突刺4"
- when 78
- return "突刺5"
- when 165
- return "突刺6"
- when 21
- return "毁灭残影"
- end
- # 上記のID以外すべてに適用されるアクション
- return "汎用スキル使用"
- end
- #--------------------------------------------------------------------------
- # ● 拡張設定 スキルIDから拡張設定を決めます。重複可能。
- #--------------------------------------------------------------------------
- # "必中"…絶対に攻撃が回避されない
- # "HP消費"…MP消費がHP消費に変わる
- # "%コストMAX"…スキルコストが最大MP(HP)からの割合に変化。例)MAXMP500でコスト10だとMP50消費に
- # "%コストNOW"…スキルコストが現在MP(HP)からの割合に変化
- # "反射無視"…魔法・物理スキル反射と無効化ステートを無視する
- # "%ダメージMAX/30"…ダメージ計算が対象の最大HP(MP)からの割合に変化。/から後の数値%分ダメージ
- # "%ダメージNOW/30"…ダメージ計算が対象の現在HP(MP)からの割合に変化。/から後の数値%分ダメージ
- # "コスト威力"…使用者の最大MP(HP)に対する消費MP(HP)の割合で威力が変化。MAX消費でそのままの威力、MAXの10%で威力1/10
- # "現HP威力"…使用者の最大HPに対する現在HPの割合で威力が変化。MAXでそのままの威力、MAXの10%で威力1/10
- # "現MP威力"…使用者の最大MPに対する現在MPの割合で威力が変化。MAXでそのままの威力、MAXの10%で威力1/10
- # "MP消費半分無効"…防具オプション「MP消費半分」を無効化
- # "ヘルプ非表示"…アクション時、ヘルプウインドウにスキル名を表示しない
- # "全域"…ターゲット範囲が敵味方全体に
- # "ランダムターゲット"…ターゲット内から一体をランダムで選ぶように
- # "自分以外"…ターゲット内から自分を除く
- # "ダメージアクション禁止"…ダメージを与えた際のアクションを取らせない
- # "行動前フラッシュなし"…行動時にバトラーを光らせない
- # "なし"…拡張なし
- def extension
- case @id
- when 11
- return ["ヘルプ非表示"]
- when 2
- return ["反射無視"]
- when 7
- return ["反射無視"]
- when 9
- return ["反射無視"]
- when 13
- return ["反射無視"]
- when 23
- return ["反射無視"]
- when 24
- return ["反射無視"]
- when 42
- return ["反射無視"]
- when 44
- return ["反射無視"]
- when 45
- return ["反射無視"]
- when 50
- return ["反射無視"]
- when 55
- return ["反射無視"]
- when 56
- return ["反射無視"]
- when 58
- return ["反射無視"]
- when 63
- return ["反射無視"]
- when 69
- return ["反射無視"]
- when 77
- return ["反射無視"]
- when 147
- return ["反射無視"]
- when 155
- return ["反射無視"]
- when 178
- return ["反射無視"]
- when 28
- return ["反射無視"]
- when 189
- return ["反射無視"]
- when 190
- return ["反射無視"]
- when 191
- return ["反射無視"]
- when 192
- return ["反射無視"]
- when 210
- return ["反射無視"]
- when 211
- return ["反射無視"]
- when 212
- return ["反射無視"]
- when 3
- return ["ランダムターゲット"]
- when 165
- return ["ランダムターゲット"]
- when 198
- return ["ランダムターゲット"]
- when 162
- return ["ランダムターゲット"]
- when 205
- return ["ランダムターゲット"]
- when 154
- return ["ランダムターゲット"]
- when 151
- return ["ランダムターゲット"]
- when 146
- return ["ランダムターゲット"]
- when 204
- return ["ランダムターゲット"]
- when 136
- return ["ランダムターゲット"]
- when 98
- return ["ランダムターゲット"]
- when 95
- return ["ランダムターゲット"]
- when 59
- return ["ランダムターゲット"]
- when 54
- return ["ランダムターゲット"]
- when 22
- return ["ランダムターゲット"]
- when 32
- return ["ランダムターゲット"]
- when 71
- return ["ランダムターゲット"]
- when 72
- return ["ランダムターゲット"]
- when 73
- return ["ランダムターゲット"]
- when 78
- return ["ランダムターゲット"]
- when 79
- return ["ランダムターゲット"]
- when 52
- return ["ランダムターゲット"]
- when 215
- return ["ランダムターゲット"]
- when 219
- return ["ランダムターゲット"]
- when 14
- return ["ダメージアクション禁止"]
- when 167
- return ["ダメージアクション禁止"]
- when 999
- return ["全域"]
- when 19
- return ["ヘルプ非表示","行動前フラッシュなし"]
- when 100
- return ["ダメージアクション禁止"]
- when 185
- return ["ダメージアクション禁止"]
- when 16
- return ["ダメージアクション禁止"]
- when 36
- return ["ダメージアクション禁止"]
- when 101
- return ["ヘルプ非表示","行動前フラッシュなし"]
- when 102
- return ["ヘルプ非表示","行動前フラッシュなし"]
- when 103
- return ["ヘルプ非表示","行動前フラッシュなし"]
- end
- # 上記のID以外すべてに適用される拡張設定
- return ["なし"]
- end
- #--------------------------------------------------------------------------
- # ● 飛ばしアニメに貼り付ける画像 キャラクターフォルダを参照します
- #--------------------------------------------------------------------------
- # スキルIDで画像を指定
- def flying_graphic
- case @id
- when 1
- return ""
- end
- # 上記ID以外は画像未使用
- return ""
- end
- end
- #==============================================================================
- # ■ module RPG
- #------------------------------------------------------------------------------
- # アイテムアクション設定です。
- #==============================================================================
- class Item
- #--------------------------------------------------------------------------
- # ● アイテムIDからアクションを決めます。
- #--------------------------------------------------------------------------
- def base_action
- case @id
- when 1
- return "アイテム使用"
- end
- # 上記のID以外すべてに適用されるアクション
- return "アイテム使用"
- end
- #--------------------------------------------------------------------------
- # ● 拡張設定 アイテムIDから拡張設定を決めます。重複可能。
- #--------------------------------------------------------------------------
- # "必中"…絶対に攻撃が回避されない
- # "反射無視"…魔法・物理反射と無効化ステートを無視する
- # "ヘルプ非表示"…ヘルプウインドウにアイテム名を表示しない
- # "全域"…ターゲット範囲が敵味方全体に
- # "ランダムターゲット"…ターゲット内から一体をランダムで選ぶように
- # "自分以外"…ターゲット内から自分を除く
- # "ダメージアクション禁止"…ダメージを与えた際のアクションを取らせない
- # "行動前フラッシュなし"…行動時にバトラーを光らせない
- # "なし"…拡張なし
- def extension
- case @id
- when 999
- return ["なし"]
- end
- # 上記のID以外すべてに適用される拡張設定
- return ["なし"]
- end
- end
- end
复制代码- #==============================================================================
- # ■ Sprite_Battler Ver2.4
- #------------------------------------------------------------------------------
- # バトラー表示用のスプライトです。
- #==============================================================================
- class Sprite_Battler < Sprite_Base
- #--------------------------------------------------------------------------
- # ● オブジェクト初期化
- #--------------------------------------------------------------------------
- def initialize(viewport, battler = nil)
- super(viewport)
- @battler = battler
- @battler_visible = false
- @effect_type = 0 # エフェクトの種類
- @effect_duration = 0 # エフェクトの残り時間
- @move_x = 0 # 変化したX座標の累計
- @move_y = 0 # 変化したY座標の累計
- @move_z = 0 # 変化したZ座標の累計
- @distanse_x = 0 # X座標の移動距離
- @distanse_y = 0 # Y座標の移動距離
- @moving_x = 0 #1フレームあたりのX座標移動距離
- @moving_y = 0 #1フレームあたりのY座標移動距離
- @move_speed_x = 0 # X座標の移動速度
- @move_speed_y = 0 # Y座標の移動速度
- @move_speed_plus_x = 0 # X座標の加減速時の補足移動速度
- @move_speed_plus_y = 0 # Y座標の加減速時の補足移動速度
- @move_boost_x = 0 # X座標加速度
- @move_boost_y = 0 # Y座標加速度
- @jump_time = 0 # ジャンプ時間
- @jump_time_plus = 0 # ジャンプ時間補足
- @jump_up = 0 # ジャンプ上昇
- @jump_down = 0 # ジャンプ下降
- @jump_size = 0 # ジャンプ高度
- @float_time = 0 # 浮遊時間
- @float_up = 0 # 1フレームあたりの浮遊高度
- @jump_plus = 0 # ジャンプに対する影位置補正
- @angle = 0 # 回転角度
- @angling = 0 # 1フレームあたりの回転角度
- @angle_time = 0 # 回転時間
- @angle_reset = 0 # 角度をリセットするか
- @zoom_x = 0 # 横の拡大率
- @zoom_y = 0 # 縦の拡大率
- @zooming_x = 0 # 1フレームあたりの横拡大率
- @zooming_y = 0 # 1フレームあたりの縦拡大率
- @zoom_time = 0 # 拡大時間
- @zoom_reset = 0 # 拡大をリセットするか
- @target_battler = [] # ターゲットバトラー情報
- @now_targets = [] # ターゲットバトラー記憶
- @pattern = 0 # セル横位置(更新位置)
- @pattern_back = false # リピートフラグ
- @wait = 0 # 次の動作待ち時間
- @unloop_wait = 0 # 非ループ系アニメ終了時の待ち時間
- @action = [] # 行動
- @anime_kind = 0 # セル縦位置(アニメ種類位置)
- @anime_speed = 0 # セル更新速度
- @frame = 0 # 消費されるセル更新時間
- @anime_loop = 0 # ループ方式
- @anime_end = false # バトラーのアニメが終わったか
- @anime_freeze = false # 固定アニメか
- @anime_freeze_kind = false # 固定するパターン位置
- @anime_moving = false # 飛ばしアニメ中か
- @base_width = N01::ANIME_PATTERN # セルの横分割数
- @base_height = N01::ANIME_KIND # セルの縦分割数
- @width = 0 # 横矩形
- @height = 0 # 縦矩形
- @picture_time = 0 # ピクチャー表示時間
- @individual_targets = [] # 個別処理の保持ターゲット
- @balloon_duration = 65 # ふきだしアニメ時間
- @reverse = false # アニメ逆転再生フラグ
- # バトラーがいない場合は処理を中断
- return @battler_visible = false if @battler == nil
- # バトラーがアクターの場合、またはエネミーアニメがオンの場合
- @anime_flug = true if @battler.actor?
- @anime_flug = true if [email protected]? && @battler.anime_on
- # バトラー作成
- make_battler
- end
- #--------------------------------------------------------------------------
- # ● バトラー作成
- #--------------------------------------------------------------------------
- def make_battler
- # 初期配置の取得
- @battler.base_position
- # 色相はバトラーとして認識
- @battler_hue = @battler.battler_hue
- # バトラーがアクターの場合、またはエネミーアニメがオンの場合
- if @anime_flug
- # メイン武器を用意
- @weapon_R = Sprite_Weapon.new(viewport,@battler)
- # 味方はキャラクター名、エネミーはバトラー名を取得
- @battler_name = @battler.character_name if @battler.actor?
- @battler_name = @battler.battler_name unless @battler.actor?
- # エネミー反転がオンの場合、画像を反転させる
- self.mirror = true if [email protected]? && @battler.action_mirror
- # 歩行グラフィックを利用するかどうかで転送元の矩形サイズの認識先を変える
- self.bitmap = Cache.character(@battler_name) if N01::WALK_ANIME
- self.bitmap = Cache.character(@battler_name + "_1") unless N01::WALK_ANIME
- # 転送元の矩形を取得
- @width = self.bitmap.width / @base_width
- @height = self.bitmap.height / @base_height
- # 矩形を設定
- @sx = @pattern * @width
- @sy = @anime_kind * @height
- # バトラー本体を描画
- self.src_rect.set(@sx, @sy, @width, @height)
- # アニメしないバトラーの場合
- else
- # ビットマップを取得、設定
- @battler_name = @battler.battler_name
- self.bitmap = Cache.battler(@battler_name, @battler_hue)
- @width = bitmap.width
- @height = bitmap.height
- end
- # バックアタック時には画像を反転させる
- self.mirror = false if self.mirror && $back_attack && N01::BACK_ATTACK
- self.mirror = true if $back_attack && !self.mirror && N01::BACK_ATTACK
- # 位置を初期化
- @battler.reset_coordinate
- # 原点を決定
- self.ox = @width / 2
- self.oy = @height * 2 / 3
- # スプライトの座標を設定
- update_move
- # アニメ飛ばし用スプライトを用意
- @move_anime = Sprite_MoveAnime.new(viewport,battler)
- # ピクチャ用スプライトを用意
- @picture = Sprite.new
- # 影スプライトを用意
- make_shadow if N01::SHADOW
- # ダメージスプライト作成
- @damage = Sprite_Damage.new(viewport,battler)
- end
- #--------------------------------------------------------------------------
- # ● 影作成
- #--------------------------------------------------------------------------
- def make_shadow
- @shadow.dispose if @shadow != nil
- @battler_hue = @battler.battler_hue
- @shadow = Sprite.new(viewport)
- @shadow.z = 200
- @shadow.visible = false
- # バトラーに当てられた影グラフィックを用意
- @shadow.bitmap = Cache.character(@battler.shadow)
- @shadow_height = @shadow.bitmap.height
- # 影位置の微調整用インスタンス
- @shadow_plus_x = @battler.shadow_plus[0] - @width / 2
- @shadow_plus_y = @battler.shadow_plus[1]
- # バトラー画像のサイズに合わせて影画像をリサイズ
- @shadow.zoom_x = @width * 1.0 / @shadow.bitmap.width
- # 更新
- update_shadow
- # フェードに影が引っかからないようにフラグを立てる
- @skip_shadow = true
- end
- #--------------------------------------------------------------------------
- # ● 解放
- #--------------------------------------------------------------------------
- def dispose
- self.bitmap.dispose if self.bitmap != nil
- @weapon_R.dispose if @weapon_R != nil
- @move_anime.dispose if @move_anime != nil
- @picture.dispose if @picture != nil
- @shadow.dispose if @shadow != nil
- @damage.dispose if @damage != nil
- @balloon.dispose if @balloon != nil
- mirage_off
- super
- end
- #--------------------------------------------------------------------------
- # ● ダメージアクション action = [アニメID,反転フラグ,リアクション許可]
- #--------------------------------------------------------------------------
- def damage_action(action)
- damage = @battler.hp_damage
- damage = @battler.mp_damage if @battler.mp_damage != 0
- # HPとMP両方同時にダメージがあるなら
- if @battler.hp_damage != 0 && @battler.mp_damage != 0
- @battler.double_damage = true
- damage = @battler.hp_damage
- end
- # 吸収攻撃でHP0の処理
- if action[0] == "absorb"
- absorb = true
- action[0] = nil
- end
- # ヒットしている時のみアニメ実行
- unless @battler.evaded or @battler.missed or action[0] == nil
- @battler.animation_id = action[0]
- @battler.animation_mirror = action[1]
- end
- # ダメージアクション実行
- start_action(@battler.damage_hit) if damage > 0 && action[2]
- # 攻撃が当たっていない場合は回避アクション実行
- if @battler.evaded or @battler.missed
- start_action(@battler.evasion) if action[2]
- Sound.play_evasion
- end
- @damage.damage_pop unless absorb or action[3] != nil
- end
- #--------------------------------------------------------------------------
- # ● ダメージ数値POP
- #--------------------------------------------------------------------------
- def damage_pop(damage)
- @damage.damage_pop(damage)
- end
- #--------------------------------------------------------------------------
- # ● 戦闘開始行動
- #--------------------------------------------------------------------------
- def first_action
- # 行動できるかチェックし、できなければそのステートのアクション開始
- action = @battler.first_action unless @battler.restriction == 4
- action = $data_states[@battler.state_id].base_action if @battler.states[0] != nil && @battler.restriction == 4
- start_action(action)
- @skip_shadow = false
- end
- #--------------------------------------------------------------------------
- # ● アクション開始
- #--------------------------------------------------------------------------
- def start_action(kind)
- # 各種動作を初期化
- reset
- # 現在取っている待機アクションを記憶
- stand_by
- # 新しいアクション内容の決定
- @action = N01::ACTION[kind].dup
- # 行動配列の先頭からシフト
- active = @action.shift
- # 自動で終了を付ける
- @action.push("終了")
- # 現在のアクションを決定
- @active_action = N01::ANIME[active]
- # ウエイト設定
- @wait = active.to_i if @active_action == nil
- # 単発アクション開始
- action
- end
- #--------------------------------------------------------------------------
- # ● 強制単発アクション開始
- #--------------------------------------------------------------------------
- def start_one_action(kind,back)
- # 各種動作を初期化
- reset
- # 現在取っている待機アクションを記憶
- stand_by
- # 座標リセットアクションをセッティング
- @action = [back]
- # 自動で終了を付ける
- @action.push("終了")
- # 現在のアクションを決定
- @active_action = N01::ANIME[kind]
- # 単発アクション開始
- action
- end
- #--------------------------------------------------------------------------
- # ● 次のアクションへ
- #--------------------------------------------------------------------------
- def next_action
- # ウェイト中の場合キャンセル
- return @wait -= 1 if @wait > 0
- # まだ全アニメセルが終了していない場合キャンセル
- return if @anime_end == false
- # 最後のアニメセル表示待ち
- return @unloop_wait -= 1 if @unloop_wait > 0
- # 行動配列の先頭からシフト
- active = @action.shift
- # 現在のアクションを決定
- @active_action = N01::ANIME[active]
- # ウエイト設定
- @wait = active.to_i if @active_action == nil
- # 単発アクション開始
- action
- end
- #--------------------------------------------------------------------------
- # ● 待機アクション
- #--------------------------------------------------------------------------
- def stand_by
- # 通常待機に
- @repeat_action = @battler.normal
- # HPが1/4でピンチモーションに
- @repeat_action = @battler.pinch if @battler.hp <= @battler.maxhp / 4
- # 防御中
- @repeat_action = @battler.defence if @battler.guarding?
- # 何もステートがなければ終了
- return if @battler.state_id == nil
- for state in @battler.states.reverse
- # アクション禁止のステートだったらスキップ
- next if state.extension.include?("ステートアクション禁止")
- # エネミーで禁止されているステートアクションだったらスキップ
- next if @battler.is_a?(Game_Enemy) && state.extension.include?("エネミー除外")
- # ステートのモーションに
- @repeat_action = state.base_action
- end
- end
- #--------------------------------------------------------------------------
- # ● 待機アクションの割り込み
- #--------------------------------------------------------------------------
- def push_stand_by
- action = @battler.normal
- action = @battler.pinch if @battler.hp <= @battler.maxhp / 4
- action = @battler.defence if @battler.guarding?
- for state in @battler.states.reverse
- # アクション禁止のステートだったらスキップ
- next if state.extension.include?("ステートアクション禁止")
- # エネミーで禁止されているステートアクションだったらスキップ
- next if @battler.is_a?(Game_Enemy) && state.extension.include?("エネミー除外")
- # ステートのモーションに
- action = state.base_action
- end
- @repeat_action = action
- # 割り込み
- @action.delete("終了")
- act = N01::ACTION[action].dup
- for i in 0...act.size
- @action.push(act[i])
- end
- @action.push("終了")
- end
- #--------------------------------------------------------------------------
- # ● 各種変化を初期化
- #--------------------------------------------------------------------------
- def reset
- self.zoom_x = self.zoom_y = 1
- self.oy = @height * 2 / 3
- @angle = self.angle = 0
- @anime_end = true
- @non_repeat = false
- @anime_freeze = false
- @unloop_wait = 0
- end
- #--------------------------------------------------------------------------
- # ● ジャンプを初期化
- #--------------------------------------------------------------------------
- def jump_reset
- @battler.jump = @jump_time = @jump_time_plus = @jump_up = @jump_down = 0
- @jump_size = @jump_plus = @float_time = @float_up = 0
- end
- #--------------------------------------------------------------------------
- # ● ターゲット情報を受け取る
- #--------------------------------------------------------------------------
- def get_target(target)
- # 個別処理中は中止(全域で自分が巻き込まれた時ターゲット情報が狂わないように)
- return if @battler.individual
- @target_battler = target
- end
- #--------------------------------------------------------------------------
- # ● アクション情報をバトラーに格納
- #--------------------------------------------------------------------------
- def send_action(action)
- @battler.play = 0
- @battler.play = action if @battler.active
- end
- #--------------------------------------------------------------------------
- # ● バトラー追加
- #--------------------------------------------------------------------------
- def battler_join
- if @battler.exist? && !@battler_visible
- # 戦闘不能からの復活なら処理をスキップ
- if @battler.revival && @anime_flug
- return @battler.revival = false
- elsif @battler.revival && !@anime_flug
- @battler.revival = false
- self.visible = true
- return
- end
- @anime_flug = true if @battler.actor?
- @anime_flug = true if [email protected]? && @battler.anime_on
- make_battler
- @damage = Sprite_Damage.new(viewport,battler)
- @join = true
- first_action
- end
- end
- #--------------------------------------------------------------------------
- # ● フレーム更新 ※再定義
- #--------------------------------------------------------------------------
- def update
- super
- # バトラーがいない場合スキップ
- return self.bitmap = nil if @battler == nil
- # バトラー追加
- battler_join
- # 次のアクションへ
- next_action
- # アニメパターン更新
- update_anime_pattern
- # ターゲット更新
- update_target
- # 強制アクション更新
- update_force_action
- # 座標更新
- update_move
- # 影更新
- update_shadow if @shadow != nil
- # 武器更新
- @weapon_R.update if @weapon_action
- # 浮遊更新
- update_float if @float_time > 0
- # 回転更新
- update_angle if @angle_time > 0
- # 拡大縮小更新
- update_zoom if @zoom_time > 0
- # 残像更新
- update_mirage if @mirage_flug
- # ピクチャ更新
- update_picture if @picture_time > 0
- # アニメ飛ばし更新
- update_move_anime if @anime_moving
- # ふきだしアニメ更新
- update_balloon if @balloon_duration <= 64
- # ダメージスプライト更新
- @damage.update
- setup_new_effect
- update_effect
- update_battler_bitmap
- end
- #--------------------------------------------------------------------------
- # ● アニメパターン更新
- #--------------------------------------------------------------------------
- def update_anime_pattern
- # 更新時間がくるまでスキップ
- return @frame -= 1 if @frame != 0
- # 必要な時だけ武器アニメ更新
- @weapon_R.action if @weapon_action && @weapon_R != nil
- # アニメのコマが最後まで到達したらリピート方法をチェック
- if @pattern_back
- # 往復ループ
- if @anime_loop == 0
- # 逆転再生
- if @reverse
- @pattern += 1
- if @pattern == @base_width - 1
- @pattern_back = false
- @anime_end = true
- end
- # 通常再生
- else
- @pattern -= 1
- if @pattern == 0
- @pattern_back = false
- @anime_end = true
- end
- end
- # 片道ループもしくはループしない
- else
- @anime_end = true
- if @anime_loop == 1
- @pattern = 0 if !@reverse
- @pattern = @base_width - 1 if @reverse
- @pattern_back = false
- end
- end
- # アニメのコマを進める
- else
- if @reverse
- @pattern -= 1
- @pattern_back = true if @pattern == 0
- else
- @pattern += 1
- @pattern_back = true if @pattern == @base_width - 1
- end
- end
- # 更新時間を初期化
- @frame = @anime_speed
- # アニメ固定の場合は横矩形を固定
- return if @anime_freeze
- # 転送元の矩形を設定
- return unless @anime_flug
- @sx = @pattern * @width
- @sy = @anime_kind * @height
- self.src_rect.set(@sx, @sy, @width, @height)
- end
- #--------------------------------------------------------------------------
- # ● ターゲット更新 action = ["N01target_change",ターゲット情報]
- #--------------------------------------------------------------------------
- def update_target
- # ターゲットチェック
- return if @battler.force_target == 0
- # 個別処理中は中止(全域で自分が巻き込まれた時ターゲット情報が狂わないように)
- return if @battler.individual
- @target_battler = @battler.force_target[1]
- @battler.force_target = 0
- end
- #--------------------------------------------------------------------------
- # ● 強制アクション更新 action = [識別,復帰,実行するアクション]
- #--------------------------------------------------------------------------
- def update_force_action
- # 強制アクションチェック
- action = @battler.force_action
- return if action == 0
- @battler.force_action = 0
- # アクティブ中は割り込ませない
- return if @battler.active
- # コラプスならそのまま行動に直結
- return collapse_action if action[0] == "N01collapse"
- # 単発ならそのまま行動に直結
- return start_one_action(action[2],action[1]) if action[0] == "単発"
- # 通しはアクションとして扱う
- start_action(action[2])
- # 座標復帰の有無
- return if action[1] == ""
- # 終了位置を入れ替えて復帰アクションを入れる
- @action.delete("終了")
- @action.push(action[1])
- @action.push("終了")
- end
- #--------------------------------------------------------------------------
- # ● 座標更新
- #--------------------------------------------------------------------------
- def update_move
- # 加減速で出る距離の増減を補完
- if @move_speed_plus_x > 0
- # 移動計算
- @move_x += @moving_x
- # 移動を実行
- @battler.move_x = @move_x
- @move_speed_plus_x -= 1
- elsif @move_speed_x > 0
- # 加速の場合
- if @move_boost_x != 0
- @moving_x += @move_boost_x
- end
- # 移動計算
- @move_x += @moving_x
- # 移動を実行
- @battler.move_x = @move_x
- @move_speed_x -= 1
- end
- # 加減速で出る距離の増減を補完
- if @move_speed_plus_y > 0
- # 移動計算
- @move_y += @moving_y
- # 移動を実行
- @battler.move_y = @move_y
- @move_speed_plus_y -= 1
- elsif @move_speed_y > 0
- # 加速の場合
- if @move_boost_y != 0
- @moving_y += @move_boost_y
- end
- # 移動計算
- @move_y += @moving_y
- # 移動を実行
- @battler.move_y = @move_y
- @move_speed_y -= 1
- end
- # ジャンプ上昇
- if @jump_up != 0
- # 移動計算
- @jump_plus += @jump_up
- # 移動を実行
- @battler.jump = @jump_plus
- @jump_up = @jump_up / 2
- @jump_time -= 1
- # ジャンプが頂点に達したら
- if @jump_time == 0 or @jump_up == @jump_sign
- @jump_down = @jump_up * 2 * @jump_sign * @jump_sign2
- @jump_time_plus += @jump_time * 2
- @jump_up = 0
- return
- end
- end
- # ジャンプ下降
- if @jump_down != 0
- if @jump_time_plus != 0
- @jump_time_plus -= 1
- elsif @jump_down != @jump_size
- # 移動計算
- @jump_plus += @jump_down
- # 移動を実行
- @battler.jump = @jump_plus
- @jump_down = @jump_down * 2
- if @jump_down == @jump_size
- if @jump_flug
- @jump_flug = false
- else
- # 移動計算
- @jump_plus += @jump_down
- # 移動を実行
- @battler.jump = @jump_plus
- @jump_down = @jump_size = 0
- end
- end
- end
- end
- # スプライトの座標を設定
- self.x = @battler.position_x
- self.y = @battler.position_y
- self.z = @battler.position_z
- end
- #--------------------------------------------------------------------------
- # ● 影更新
- #--------------------------------------------------------------------------
- def update_shadow
- @shadow.opacity = self.opacity
- @shadow.x = self.x + @shadow_plus_x
- @shadow.y = self.y + @shadow_plus_y - @jump_plus
- end
- #--------------------------------------------------------------------------
- # ● 浮遊更新
- #--------------------------------------------------------------------------
- def update_float
- @float_time -= 1
- @jump_plus += @float_up
- @battler.jump = @jump_plus
- end
- #--------------------------------------------------------------------------
- # ● 回転更新
- #--------------------------------------------------------------------------
- def update_angle
- # 回転実行
- @angle += @angling
- self.angle = @angle
- @angle_time -= 1
- # 回転時間がなくなったら項目をリセット
- return @angle = 0 if @angle_time == 0
- # 復帰フラグがあれば角度を0に戻す
- self.angle = 0 if @angle_reset
- end
- #--------------------------------------------------------------------------
- # ● 拡大縮小更新
- #--------------------------------------------------------------------------
- def update_zoom
- # 拡大縮小実行
- @zoom_x += @zooming_x
- @zoom_y += @zooming_y
- self.zoom_x = @zoom_x
- self.zoom_y = @zoom_y
- @zoom_time -= 1
- # 拡大縮小時間がなくなったら項目をリセット
- return if @zoom_time != 0
- @zoom_x = @zoom_y = 0
- self.oy = @height * 2 / 3
- # 復帰フラグがあれば戻す
- self.zoom_x = self.zoom_y = 1 if @zoom_reset
- end
- #--------------------------------------------------------------------------
- # ● 残像更新
- #--------------------------------------------------------------------------
- def update_mirage
- # 残像は最大3つまで表示し、2フレームごとに更新
- mirage(@mirage0) if @mirage_count == 1
- mirage(@mirage1) if @mirage_count == 3
- mirage(@mirage2) if @mirage_count == 5
- @mirage_count += 1
- @mirage_count = 0 if @mirage_count == 6
- end
- #--------------------------------------------------------------------------
- # ● ピクチャ更新
- #--------------------------------------------------------------------------
- def update_picture
- @picture_time -= 1
- @picture.x += @moving_pic_x
- @picture.y += @moving_pic_y
- end
- #--------------------------------------------------------------------------
- # ● アニメ飛ばし更新
- #--------------------------------------------------------------------------
- def update_move_anime
- @move_anime.update
- @anime_moving = false if @move_anime.finish?
- @move_anime.action_reset if @move_anime.finish?
- end
- #--------------------------------------------------------------------------
- # ● 崩壊エフェクトの更新 ※再定義
- #--------------------------------------------------------------------------
- def update_collapse
- normal_collapse if @collapse_type == 2
- boss_collapse1 if @collapse_type == 3
- end
- #--------------------------------------------------------------------------
- # ● ふきだしアニメ更新
- #--------------------------------------------------------------------------
- def update_balloon
- @balloon_duration -= 1 if @balloon_duration > 0 && !@balloon_back
- @balloon_duration += 1 if @balloon_back
- if @balloon_duration == 64
- @balloon_back = false
- @balloon.visible = false
- elsif @balloon_duration == 0
- @balloon.visible = false if @balloon_loop == 0
- @balloon_back = true if @balloon_loop == 1
- end
- @balloon.x = self.x
- @balloon.y = self.y
- @balloon.z = 10
- @balloon.opacity = self.opacity
- sx = 7 * 32 if @balloon_duration < 12
- sx = (7 - (@balloon_duration - 12) / 8) * 32 unless @balloon_duration < 12
- @balloon.src_rect.set(sx, @balloon_id * 32, 32, 32)
- end
- #--------------------------------------------------------------------------
- # ● 転送元ビットマップの更新 ※再定義
- #--------------------------------------------------------------------------
- def update_battler_bitmap
- return if @battler.actor?
- if @battler.battler_name != @battler_name or @battler.battler_hue != @battler_hue
- @battler_name = @battler.battler_name
- @battler_hue = @battler.battler_hue
- make_battler
- self.opacity = 0 if @battler.dead? or @battler.hidden
- end
- end
- #--------------------------------------------------------------------------
- # ● アクション実行
- #--------------------------------------------------------------------------
- def action
- return if @active_action == nil
- action = @active_action[0]
- # 反転の場合
- return mirroring if action == "反転"
- # 回転の場合
- return angling if action == "angle"
- # 拡大縮小の場合
- return zooming if action == "zoom"
- # 残像ONの場合
- return mirage_on if action == "残像ON"
- # 残像OFFの場合
- return mirage_off if action == "残像OFF"
- # ピクチャ表示の場合
- return picture if action == "pic"
- # ピクチャ消去の場合
- return @picture.visible = false && @picture_time = 0 if action == "ピクチャ消去"
- # グラフィックファイル変更の場合
- return graphics_change if action == "change"
- # 戦闘アニメ表示の場合
- return battle_anime if action == "anime"
- # ふきだしアニメ表示の場合
- return balloon_anime if action == "balloon"
- # BGM/BGS/SE演奏の場合
- return sound if action == "sound"
- # ゲームスイッチ操作の場合
- return $game_switches[@active_action[1]] = @active_action[2] if action == "switch"
- # ゲーム変数操作の場合
- return variable if action == "variable"
- # 二刀限定の場合
- return two_swords if action == "二刀限定"
- # 非二刀限定の場合
- return non_two_swords if action == "非二刀限定"
- # アクション条件の場合
- return necessary if action == "nece"
- # スキル派生の場合
- return derivating if action == "der"
- # 個別処理開始の場合
- return individual_action if action == "個別処理開始"
- # 個別処理終了の場合
- return individual_action_end if action == "個別処理終了"
- # 待機に移行しない場合
- return non_repeat if action == "待機に移行しない"
- # 初期位置変更の場合
- return @battler.change_base_position(self.x, self.y) if action == "初期位置変更"
- # 初期位置変更解除の場合
- return @battler.base_position if action == "初期位置変更解除"
- # ターゲット変更の場合
- return change_target if action == "target"
- # ターゲットのコラプス許可
- return send_action(action) if action == "コラプス許可"
- # アクティブ解除
- return send_action(action) if action == "アクティブ解除"
- # ステート付与の場合
- return state_on if action == "sta+"
- # ステート解除の場合
- return state_off if action == "sta-"
- # ゲーム全体のスピード変更の場合
- return Graphics.frame_rate = @active_action[1] if action == "fps"
- # 浮遊の場合
- return floating if action == "float"
- # 強制アクションの場合
- return force_action if @active_action.size == 4
- # 座標リセットの場合
- return reseting if @active_action.size == 5
- # 移動の場合
- return moving if @active_action.size == 7
- # バトラーアニメの場合
- return battler_anime if @active_action.size == 9
- # アニメ飛ばしの場合
- return moving_anime if @active_action.size == 11
- # 終了の場合
- return anime_finish if action == "終了"
- end
- #--------------------------------------------------------------------------
- # ● 反転実行
- #--------------------------------------------------------------------------
- def mirroring
- # すでに反転されていれば元に戻す
- if self.mirror
- self.mirror = false
- # 武器アニメも反映
- @weapon_R.mirroring if @anime_flug
- else
- self.mirror = true
- # 武器アニメも反映
- @weapon_R.mirroring if @anime_flug
- end
- end
- #--------------------------------------------------------------------------
- # ● 回転実行
- #--------------------------------------------------------------------------
- def angling
- # ジャンプを初期化
- jump_reset
- # 情報確認
- @angle_time = @active_action[1]
- start_angle = @active_action[2]
- end_angle = @active_action[3]
- @angle_reset = @active_action[4]
- # バックアタック時には逆に
- start_angle *= -1 if $back_attack
- end_angle *= -1 if $back_attack
- # エネミーは逆に
- start_angle *= -1 if @battler.is_a?(Game_Enemy)
- end_angle *= -1 if @battler.is_a?(Game_Enemy)
- # 時間が0以下なら即座に最終角度へ
- if @angle_time <= 0
- self.angle = end_angle
- return @angle_time = 0
- end
- # 回転時間から1フレームあたりの角度を出す
- @angling = (end_angle - start_angle) / @angle_time
- # 割り切れない余りを初期角度に
- @angle = (end_angle - start_angle) % @angle_time + start_angle
- end
- #--------------------------------------------------------------------------
- # ● 拡大縮小実行
- #--------------------------------------------------------------------------
- def zooming
- # ジャンプを初期化
- jump_reset
- # 情報確認
- @zoom_time = @active_action[1]
- zoom_x = @active_action[2] - 1
- zoom_y = @active_action[3] - 1
- @zoom_reset = @active_action[4]
- @zoom_x = @zoom_y = 1
- # 時間が0以下ならスキップ
- return @zoom_time = 0 if @zoom_time <= 0
- # 拡大時間から1フレームあたりの拡大率を出す
- @zooming_x = zoom_x / @zoom_time
- @zooming_y = zoom_y / @zoom_time
- end
- #--------------------------------------------------------------------------
- # ● 残像開始
- #--------------------------------------------------------------------------
- def mirage_on
- # 戦闘不能時には残像させない
- return if @battler.dead?
- @mirage0 = Sprite.new(self.viewport)
- @mirage1 = Sprite.new(self.viewport)
- @mirage2 = Sprite.new(self.viewport)
- @mirage_flug = true
- @mirage_count = 0
- end
- #--------------------------------------------------------------------------
- # ● 残像表示
- #--------------------------------------------------------------------------
- def mirage(body)
- body.bitmap = self.bitmap.dup
- body.x = self.x
- body.y = self.y
- body.ox = self.ox
- body.oy = self.oy
- body.z = self.z
- body.mirror = self.mirror
- body.angle = @angle
- body.opacity = 160
- body.zoom_x = self.zoom_x
- body.zoom_y = self.zoom_y
- body.src_rect.set(@sx, @sy, @width, @height) if @anime_flug
- body.src_rect.set(0, 0, @width, @height) unless @anime_flug
- end
- #--------------------------------------------------------------------------
- # ● 残像終了
- #--------------------------------------------------------------------------
- def mirage_off
- @mirage_flug = false
- @mirage0.dispose if @mirage0 != nil
- @mirage1.dispose if @mirage1 != nil
- @mirage2.dispose if @mirage2 != nil
- end
- #--------------------------------------------------------------------------
- # ● ピクチャ表示
- #--------------------------------------------------------------------------
- def picture
- # 移動開始位置を確認
- pic_x = @active_action[1]
- pic_y = @active_action[2]
- # 移動終了位置を確認
- pic_end_x = @active_action[3]
- pic_end_y = @active_action[4]
- @picture_time = @active_action[5]
- # 時間で割り、1フレーム当たりの移動速度を計算
- @moving_pic_x = (pic_end_x - pic_x)/ @picture_time
- @moving_pic_y = (pic_end_y - pic_y)/ @picture_time
- # 割り切れない場合最初に加算
- plus_x = (pic_end_x - pic_x)% @picture_time
- plus_y = (pic_end_y - pic_y)% @picture_time
- # ピクチャ表示
- @picture.bitmap = Cache.picture(@active_action[7])
- @picture.x = pic_x + plus_x
- @picture.y = pic_y + plus_y
- # Z座標調整
- @picture.z = 1
- @picture.z = 1000 if @active_action[6]
- @picture.visible = true
- end
- #--------------------------------------------------------------------------
- # ● グラフィックファイル変更
- #--------------------------------------------------------------------------
- def graphics_change
- # アクター限定
- return if @battler.is_a?(Game_Enemy)
- # グラフィック変更
- @battler_name = @active_action[2]
- # 歩行グラフィックを利用するかどうかで転送元の矩形サイズの認識先を変える
- self.bitmap = Cache.character(@battler_name) if N01::WALK_ANIME
- self.bitmap = Cache.character(@battler_name + "_1") unless N01::WALK_ANIME
- # 転送元の矩形を取得
- @width = self.bitmap.width / @base_width
- @height = self.bitmap.height / @base_height
- # 戦闘後も変更を反映させるならキャラチップもここで変更
- @battler.graphic_change(@active_action[2]) unless @active_action[1]
- end
- #--------------------------------------------------------------------------
- # ● 戦闘アニメ表示 [判別,ID,対象,反転,ウエイト,二刀フラグ]
- #--------------------------------------------------------------------------
- def battle_anime
- # エネミーの二刀フラグアニメ処理はキャンセル
- return if @active_action[5] && [email protected]?
- # 二刀ではないアクターの二刀フラグアニメ処理はキャンセル
- return if @active_action[5] && @battler.weapons[1] == nil
- # 二刀で右(上に配置された)武器がなく左(下に配置)だけ持ってる場合
- if @battler.actor?
- return if !@active_action[5] && @battler.weapons[0] == nil && @battler.weapons[1] != nil
- end
- anime_id = @active_action[1]
- # バックアタック時にアニメ画像を反転
- if $back_attack
- mirror = true if @active_action[3] == false
- mirror = false if @active_action[3]
- end
- # 武器とスキルアニメの場合
- if anime_id < 0
- # 行動の種類でアニメ先を分岐
- if @battler.action.skill? && anime_id != -2
- anime_id = @battler.action.skill.animation_id
- elsif @battler.action.item? && anime_id != -2
- anime_id = @battler.action.item.animation_id
- else
- # 武器がなければ素手アニメを使用
- anime_id = N01::NO_WEAPON
- if @battler.actor?
- weapon_id = @battler.weapon_id
- anime_id = $data_weapons[weapon_id].animation_id if weapon_id != 0
- # 二刀アニメの場合
- anime_id = @battler.atk_animation_id2 if @active_action[5]
- else
- weapon_id = @battler.weapon
- anime_id = $data_weapons[weapon_id].animation_id if weapon_id != 0
- end
- end
- # ウエイト設定
- @wait = $data_animations[anime_id].frame_max * 4 if $data_animations[anime_id] != nil && @active_action[4]
- waitflug = true
- # ダメージ表示のアニメなら、ダメージ計算を先に済ませるため処理を中断
- damage_action = [anime_id, mirror, true]
- return @battler.play = ["対象アニメ",damage_action] if @battler.active
- end
- # アニメ実行
- if @active_action[2] == 0 && $data_animations[anime_id] != nil
- @battler.animation_id = anime_id
- @battler.animation_mirror = mirror
- elsif $data_animations[anime_id] != nil
- for target in @target_battler
- target.animation_id = anime_id
- target.animation_mirror = mirror
- end
- end
- # ウエイト設定
- @wait = $data_animations[anime_id].frame_max * 4 if $data_animations[anime_id] != nil && @active_action[4] && !waitflug
- end
- #--------------------------------------------------------------------------
- # ● ふきだしアニメ表示
- #--------------------------------------------------------------------------
- def balloon_anime
- return if self.opacity == 0
- if @balloon == nil
- @balloon = Sprite.new
- @balloon.bitmap = Cache.system("Balloon")
- @balloon.ox = @width / 16
- @balloon.oy = @balloon.height / 10 + @height / 3
- end
- @balloon_id = @active_action[1]
- @balloon_loop = @active_action[2]
- @balloon_duration = 64
- @balloon_back = false
- update_balloon
- @balloon.visible = true
- end
- #--------------------------------------------------------------------------
- # ● BGM/BGS/SE演奏
- #--------------------------------------------------------------------------
- def sound
- # 情報を取得
- pitch = @active_action[2]
- vol = @active_action[3]
- name = @active_action[4]
- # 実行
- case @active_action[1]
- when "se"
- Audio.se_play("Audio/SE/" + name, vol, pitch)
- when "bgm"
- # 名前指定のない場合、現在のBGMを変えないように
- if @active_action[4] == ""
- now_bgm = RPG::BGM.last
- name = now_bgm.name
- end
- Audio.bgm_play("Audio/BGM/" + name, vol, pitch)
- when "bgs"
- # 名前指定のない場合、現在のBGSを変えないように
- if @active_action[4] == ""
- now_bgs = RPG::BGS.last
- name = now_bgs.name
- end
- Audio.bgs_play("Audio/BGS/" + name, vol, pitch)
- end
- end
- #--------------------------------------------------------------------------
- # ● ゲーム変数操作
- #--------------------------------------------------------------------------
- def variable
- # オペランドチェック
- operand = @active_action[3]
- # 変数操作で分岐
- case @active_action[2]
- when 0 # 代入
- $game_variables[@active_action[1]] = operand
- when 1 # 加算
- $game_variables[@active_action[1]] += operand
- when 2 # 減算
- $game_variables[@active_action[1]] -= operand
- when 3 # 乗算
- $game_variables[@active_action[1]] *= operand
- when 4 # 除算
- $game_variables[@active_action[1]] /= operand
- when 5 # 剰余
- $game_variables[@active_action[1]] %= operand
- end
- end
- #--------------------------------------------------------------------------
- # ● 二刀限定
- #--------------------------------------------------------------------------
- def two_swords
- # エネミーは処理させない
- return @action.shift unless @battler.actor?
- # 左(下部表示)に武器がなかったら次のアクションを除く
- return @action.shift if @battler.weapons[1] == nil
- # 行動配列の先頭からシフト
- active = @action.shift
- # 現在のアクションを決定
- @active_action = N01::ANIME[active]
- # ウエイト設定
- @wait = active.to_i if @active_action == nil
- # 単発アクション開始
- action
- end
- #--------------------------------------------------------------------------
- # ● 非二刀限定
- #--------------------------------------------------------------------------
- def non_two_swords
- # エネミーは処理させない
- return unless @battler.actor?
- # 左(下部表示)に武器があったら次のアクションを除く
- return @action.shift if @battler.weapons[1] != nil
- # 行動配列の先頭からシフト
- active = @action.shift
- # 現在のアクションを決定
- @active_action = N01::ANIME[active]
- # ウエイト設定
- @wait = active.to_i if @active_action == nil
- # 単発アクション開始
- action
- end
- #--------------------------------------------------------------------------
- # ● アクション条件
- #--------------------------------------------------------------------------
- def necessary
- nece1 = @active_action[3]
- nece2 = @active_action[4]
- # ターゲットチェック
- case @active_action[1]
- # 0自身 1ターゲット 2敵全体 3味方全体
- when 0
- target = [$game_party.members[@battler.index]] if @battler.is_a?(Game_Actor)
- target = [$game_troop.members[@battler.index]] if @battler.is_a?(Game_Enemy)
- when 1
- target = @target_battler
- when 2
- target = $game_troop.members
- when 3
- target = $game_party.members
- end
- # ターゲットが空の場合は失敗とみなす
- return start_action(@battler.recover_action) if target.size == 0
- # 内容チェック
- case @active_action[2]
- # ステートID指定だった場合
- when 0
- # 補足が正で「ステートにかかっている」、負は「かかっていない」が条件に
- state_on = true if nece2 > 0
- # 条件人数を出す
- state_member = nece2.abs
- # 0は仲間数を出す
- if nece2 == 0
- state_member = $game_party.members.size if @battler.is_a?(Game_Actor)
- state_member = $game_troop.members.size if @battler.is_a?(Game_Enemy)
- end
- # ターゲットのステートチェックし人数をカウント
- for member in target
- state_member -= 1 if member.state?(nece1)
- end
- # 条件が満たされていればアクション続行
- if state_member == 0 && state_on
- return
- elsif state_member == nece2.abs
- return if state_on == nil
- end
- # パラメータ指定だった場合
- when 1
- # 補足が正で「数値以上」、負は「数値以下」が条件に
- num_over = true if nece2 > 0
- # 参照数値
- num = 0
- # ターゲットのパラメータチェック
- for member in target
- # 参照パラメータで分岐
- case nece1
- when 0 # 現HP
- num += member.hp
- when 1 # 現MP
- num += member.mp
- when 2 # 攻撃力
- num += member.atk
- when 3 # 防御力
- num += member.def
- when 4 # 精神力
- num += member.spi
- when 5 # 敏捷性
- num += member.agi
- end
- end
- # 平均を出す
- num = num / target.size
- # 条件が満たされていればアクション続行
- if num > nece2.abs && num_over
- return
- elsif num < nece2.abs
- return if num_over == nil
- end
- # スイッチ指定だった場合
- when 2
- # 条件が満たされていればアクション続行
- if $game_switches[nece1]
- # 補足がtrueで「スイッチON」、falseは「スイッチOFF」が条件に
- return if nece2
- # スイッチがOFFの場合はON時とは逆に
- else
- return unless nece2
- end
- # 変数指定だった場合
- when 3
- # 補足が正で「数値以上」、負は「数値以下」が条件に
- if nece2 > 0
- return if $game_variables[nece1] > nece2
- else
- return unless $game_variables[nece1] > nece2.abs
- end
- # 習得スキル指定だった場合
- when 4
- # スキル条件人数を出す
- skill_member = nece2.abs
- for member in target
- skill_member -= 1 if member.skill_learn?(nece1)
- # 条件確認
- return if skill_member == 0
- end
- end
- # 条件を満たせなければ以降のアクションを中断
- return @action = ["終了"] if @non_repeat
- # 防御中は不自然に見えないように座標復帰させない
- action = @battler.recover_action
- action = @battler.defence if @battler.guarding?
- return start_action(action)
- end
- #--------------------------------------------------------------------------
- # ● スキル派生
- #--------------------------------------------------------------------------
- def derivating
- # 未修得スキルは派生不可なら
- return unless @active_action[2] && [email protected]_learn?(@active_action[3])
- # 確率分岐
- return if rand(100) > @active_action[1]
- # 派生成功
- @battler.derivation = @active_action[3]
- # 以降のアクションを中断
- @action = ["終了"]
- end
- #--------------------------------------------------------------------------
- # ● 個別処理開始
- #--------------------------------------------------------------------------
- def individual_action
- # リピートフラグオン
- @battler.individual = true
- # リピートアクションを保持
- @individual_act = @action.dup
- # ターゲットを保持し、行動ターゲットをひとつずつ抜き出す
- send_action(["個別処理"])
- @individual_targets = @target_battler.dup
- @target_battler = [@individual_targets.shift]
- end
- #--------------------------------------------------------------------------
- # ● 個別処理終了
- #--------------------------------------------------------------------------
- def individual_action_end
- # ターゲットが残っていないなら行動終了
- return @battler.individual = false if @individual_targets.size == 0
- @action = @individual_act.dup
- @target_battler = [@individual_targets.shift]
- end
- #--------------------------------------------------------------------------
- # ● 待機に移行しない
- #--------------------------------------------------------------------------
- def non_repeat
- @repeat_action = []
- @non_repeat = true
- anime_finish
- end
- #--------------------------------------------------------------------------
- # ● ターゲット変更 action = [判別, 変更する対象, 変更先]
- #--------------------------------------------------------------------------
- def change_target
- # 自身の変更したターゲットを元に戻す
- return @target_battler = @now_targets.dup if @active_action[2] == 3
- # 送るターゲット情報
- target = [@battler] if @active_action[2] == 0
- target = @target_battler.dup if @active_action[2] != 0
- # 自身のターゲットを送った相手にする場合、現在のターゲットを記憶
- if @active_action[2] == 2
- @now_targets = @target_battler.dup
- @target_battler = []
- end
- # 送るターゲットがインデックス指定の場合
- if @active_action[1] >= 1000
- members = $game_party.members if @battler.actor?
- members = $game_troop.members unless @battler.actor?
- index = @active_action[1] - 1000
- if index < members.size
- if members[index].exist? && @battler.index != index
- # ターゲット変更
- members[index].force_target = ["N01target_change", target]
- # 自身のターゲットを送った相手にする場合
- @target_battler = [members[index]] if @active_action[2] == 2
- change = true
- else
- for member in members
- next if @battler.index == member.index
- next unless member.exist?
- member.force_target = ["N01target_change", target]
- @target_battler = [member] if @active_action[2] == 2
- break change = true
- end
- end
- end
- # 送るターゲットがステートID指定だった場合
- elsif @active_action[1] > 0
- for member in $game_party.members + $game_troop.members
- if member.state?(@active_action[1])
- member.force_target = ["N01target_change", target]
- @target_battler.push(member) if @active_action[2] == 2
- change = true
- end
- end
- # 送るターゲットが習得スキル指定だった場合
- elsif @active_action[1] < 0
- skill_id = @active_action[1].abs
- for actor in $game_party.members
- if actor.skill_learn?(skill_id)
- actor.force_target = ["N01target_change", target]
- @target_battler.push(target) if @active_action[2] == 2
- change = true
- end
- end
- # 送るターゲットがターゲットだった場合
- else
- for member in @target_battler
- member.force_target = ["N01target_change", target]
- @target_battler.push(member) if @active_action[2] == 2
- change = true
- end
- end
- # 条件を満たせなければ以降のアクションを中断
- return if change
- return @action = ["終了"] if @non_repeat
- return start_action(@battler.recover_action)
- end
- #--------------------------------------------------------------------------
- # ● ステート付与
- #--------------------------------------------------------------------------
- def state_on
- state_id = @active_action[2]
- # 対象で分岐
- case @active_action[1]
- when 0
- @battler.add_state(state_id)
- when 1
- if @target_battler != nil
- for target in @target_battler
- target.add_state(state_id)
- end
- end
- when 2
- for target in $game_troop.members
- target.add_state(state_id)
- end
- when 3
- for target in $game_party.members
- target.add_state(state_id)
- end
- when 4
- for target in $game_party.members
- if target.index != @battler.index
- target.add_state(state_id)
- end
- end
- end
- end
- #--------------------------------------------------------------------------
- # ● ステート解除
- #--------------------------------------------------------------------------
- def state_off
- state_id = @active_action[2]
- # 対象で分岐
- case @active_action[1]
- when 0
- @battler.remove_state(state_id)
- when 1
- if @target_battler != nil
- for target in @target_battler
- target.remove_state(state_id)
- end
- end
- when 2
- for target in $game_troop.members
- target.remove_state(state_id)
- end
- when 3
- for target in $game_party.members
- target.remove_state(state_id)
- end
- when 4
- for target in $game_party.members
- if target.index != @battler.index
- target.remove_state(state_id)
- end
- end
- end
- end
- #--------------------------------------------------------------------------
- # ● 浮遊実行
- #--------------------------------------------------------------------------
- def floating
- # ジャンプを初期化
- jump_reset
- # 情報確認
- @jump_plus = @active_action[1]
- float_end = @active_action[2]
- @float_time = @active_action[3]
- # 1フレーム当たりの移動高度を計算
- @float_up = (float_end - @jump_plus)/ @float_time
- # 浮遊が完了するまで次のアクションに行かない
- @wait = @float_time
- # 浮遊アニメ設定を反映
- if @anime_flug
- move_anime = N01::ANIME[@active_action[4]]
- # グラフィック指定がない場合はスキップ
- if move_anime != nil
- # 現在のアクションを上書き
- @active_action = move_anime
- # バトラーアニメ開始
- battler_anime
- # 浮遊が完了したら即アニメが終わるように
- @anime_end = true
- end
- end
- # 初期高度に浮遊
- @battler.jump = @jump_plus
- end
- #--------------------------------------------------------------------------
- # ● 強制アクション
- #--------------------------------------------------------------------------
- def force_action
- # アクションが単発か通しか判別
- kind = @active_action[0]
- # 復帰の有無をチェック
- rebirth = @active_action[2]
- # 強制アクション内容を取得
- play = @active_action[3]
- # 上3つの情報をまとめて格納
- action = [kind,rebirth,play]
- # ターゲットがインデックス指定の場合
- if @active_action[1] >= 1000
- members = $game_party.members if @battler.actor?
- members = $game_troop.members unless @battler.actor?
- index = @active_action[1] - 1000
- if index < members.size
- if members[index].exist? && @battler.index != index
- # バトラー情報に渡す
- return members[index].force_action = action
- else
- for target in members
- next if @battler.index == target.index
- next unless target.exist?
- force = true
- break target.force_action = action
- end
- end
- end
- # 条件を満たせなければ以降のアクションを中断
- return if force
- return @action = ["終了"] if @non_repeat
- return start_action(@battler.recover_action)
- # ターゲット指定の場合
- elsif @active_action[1] == 0
- for target in @target_battler
- target.force_action = action if target != nil
- end
- # ステートID指定だった場合
- elsif @active_action[1] > 0
- for target in $game_party.members + $game_troop.members
- target.force_action = action if target.state?(@active_action[1])
- end
- # 習得スキル指定だった場合
- elsif @active_action[1] < 0
- # エネミーは処理させない
- return if @battler.is_a?(Game_Enemy)
- for actor in $game_party.members
- # 自分は除く
- unless actor.id == @battler.id
- # バトラー情報に渡す
- actor.force_action = action if actor.skill_id_learn?(@active_action[1].abs)
- end
- end
- end
- end
- #--------------------------------------------------------------------------
- # ● 座標リセット実行
- #--------------------------------------------------------------------------
- def reseting
- # ジャンプを初期化
- jump_reset
- # 回転を元に戻す
- self.angle = 0
- # 情報確認
- @distanse_x = @move_x * -1
- @distanse_y = @move_y * -1
- @move_speed_x = @active_action[1]
- @move_speed_y = @move_speed_x
- @move_boost_x = @active_action[2]
- @move_boost_y = @move_boost_x
- @jump = @active_action[3]
- # 移動計算
- move_distance
- # 移動アニメ設定を反映
- if @anime_flug
- move_anime = N01::ANIME[@active_action[4]]
- # グラフィック指定がない場合はスキップ
- if move_anime != nil
- # 現在のアクションを上書き
- @active_action = move_anime
- # バトラーアニメ開始
- battler_anime
- end
- # 移動が完了したら即アニメが終わるように
- @anime_end = true
- end
- end
- #--------------------------------------------------------------------------
- # ● 移動実行
- #--------------------------------------------------------------------------
- def moving
- # ジャンプを初期化
- jump_reset
- # X軸移動を便宜上抜き出す
- xx = @active_action[1]
- # バックアタック時にはX軸を逆に
- xx *= -1 if $back_attack
- # 移動目標のターゲットを確認
- case @active_action[0]
- when 0 # 自身
- @distanse_x = xx
- @distanse_y = @active_action[2]
- when 1 # ターゲット
- # ターゲットが決まってない場合、自身に変換
- if @target_battler == nil
- @distanse_x = xx
- @distanse_y = @active_action[2]
- else
- # ターゲット対象をひとつずつチェック
- target_x = 0
- target_y = 0
- time = 0
- for i in 0...@target_battler.size
- if @target_battler[i] != nil
- time += 1
- target_x += @target_battler[i].position_x
- target_y += @target_battler[i].position_y
- end
- end
- # ターゲットが空だった場合、自身に変換
- if time == 0
- @distanse_x = xx
- @distanse_y = @active_action[2]
- else
- # 複数ターゲットの中心を計算
- target_x = target_x / time
- target_y = target_y / time
- # 最終的な移動距離を算出
- @distanse_y = target_y - self.y + @active_action[2]
- # X座標はアクターとエネミーで逆計算
- if @battler.is_a?(Game_Actor)
- @distanse_x = target_x - self.x + xx
- else
- @distanse_x = self.x - target_x + xx
- end
- end
- end
- when 2 # 画面
- # X座標はアクターとエネミーで逆計算
- if @battler.is_a?(Game_Actor)
- @distanse_x = xx - self.x
- @distanse_x = Graphics.width + xx - self.x if $back_attack
- else
- @distanse_x = self.x - xx
- @distanse_x = self.x - (Graphics.width + xx) if $back_attack
- end
- @distanse_y = @active_action[2] - self.y
- when 3 # 初期位置
- # X座標はアクターとエネミーで逆計算
- if @battler.is_a?(Game_Actor)
- @distanse_x = xx + @battler.base_position_x - self.x
- else
- @distanse_x = xx + self.x - @battler.base_position_x
- end
- @distanse_y = @active_action[2] + @battler.base_position_y - @battler.position_y
- end
- @move_speed_x = @active_action[3]
- @move_speed_y = @active_action[3]
- @move_boost_x = @active_action[4]
- @move_boost_y = @active_action[4]
- @jump = @active_action[5]
- @jump_plus = 0
- # 移動計算
- move_distance
- # 移動アニメ設定を反映
- if @anime_flug
- move_anime = N01::ANIME[@active_action[6]]
- # グラフィック指定がない場合はスキップ
- if move_anime != nil
- # 現在のアクションを上書き
- @active_action = move_anime
- # バトラーアニメ開始
- battler_anime
- end
- # 移動が完了したら即アニメが終わるように
- @anime_end = true
- end
- end
- #--------------------------------------------------------------------------
- # ● 移動計算
- #--------------------------------------------------------------------------
- def move_distance
- # 速度が0の場合、その場に留まる
- if @move_speed_x == 0
- @moving_x = 0
- @moving_y = 0
- else
- # 1フレームあたりの移動距離を計算
- @moving_x = @distanse_x / @move_speed_x
- @moving_y = @distanse_y / @move_speed_y
- # 余った距離はこの時点で移動し消化
- over_x = @distanse_x % @move_speed_x
- over_y = @distanse_y % @move_speed_y
- @move_x += over_x
- @move_y += over_y
- @battler.move_x = @move_x
- @battler.move_y = @move_y
- @distanse_x -= over_x
- @distanse_y -= over_y
- end
- # 移動があるかどうかの判定
- if @distanse_x == 0
- @move_speed_x = 0
- end
- if @distanse_y == 0
- @move_speed_y = 0
- end
- # X座標移動計算
- # 加減速による移動フレーム数の修正
- boost_x = @moving_x
- move_x = 0
- # 加速がある場合
- if @move_boost_x > 0 && @distanse_x != 0
- # 加減速の正負を左右移動に合わせて変換
- if @distanse_x == 0
- @move_boost_x = 0
- elsif @distanse_x < 0
- @move_boost_x *= -1
- end
- # 距離の変化を事前計算
- for i in 0...@move_speed_x
- boost_x += @move_boost_x
- move_x += boost_x
- # オーバー距離を記録
- over_distance = @distanse_x - move_x
- # 右移動で距離オーバーする直前が何フレーム目だったか記録
- if @distanse_x > 0 && over_distance < 0
- @move_speed_x = i
- break
- # 左移動で距離オーバーする直前が何フレーム目だったか記録
- elsif @distanse_x < 0 && over_distance > 0
- @move_speed_x = i
- break
- end
- end
- # オーバー距離を一回前に戻す
- before = over_distance + boost_x
- # 余った距離を等速移動させるフレーム数を加算
- @move_speed_plus_x = (before / @moving_x).abs
- # それでも余った距離はこの時点で移動し消化
- @move_x += before % @moving_x
- @battler.move_x = @move_x
- # 減速がある場合
- elsif @move_boost_x < 0 && @distanse_x != 0
- # 加減速の正負を左右移動に合わせて変換
- if @distanse_x == 0
- @move_boost_x = 0
- elsif @distanse_x < 0
- @move_boost_x *= -1
- end
- # 距離の変化を事前計算
- for i in 0...@move_speed_x
- boost_x += @move_boost_x
- move_x += boost_x
- # 足りない距離を記録
- lost_distance = @distanse_x - move_x
- before = lost_distance
- # 右移動で速度が0になる直前が何フレーム目だったか記録
- if @distanse_x > 0 && boost_x < 0
- @move_speed_x = i - 1
- # 足りない距離を一回前に戻す
- before = lost_distance + boost_x
- break
- # 左移動で速度が0になる直前が何フレーム目だったか記録
- elsif @distanse_x < 0 && boost_x > 0
- @move_speed_x= i - 1
- # 足りない距離を一回前に戻す
- before = lost_distance + boost_x
- break
- end
- end
- # 足りない距離を等速移動させるフレーム数を加算
- plus = before / @moving_x
- @move_speed_plus_x = plus.abs
- # それでも余った距離はこの時点で移動し消化
- @move_x += before % @moving_x
- @battler.move_x = @move_x
- end
- # Y座標移動計算
- # 加減速による移動フレーム数の修正
- boost_y = @moving_y
- move_y = 0
- # 加速がある場合
- if @move_boost_y > 0 && @distanse_y != 0
- # 加減速の正負を左右移動に合わせて変換
- if @distanse_y == 0
- @move_boost_y = 0
- elsif @distanse_y < 0
- @move_boost_y *= -1
- end
- # 距離の変化を事前計算
- for i in 0...@move_speed_y
- boost_y += @move_boost_y
- move_y += boost_y
- # オーバー距離を記録
- over_distance = @distanse_y - move_y
- # 右移動で距離オーバーする直前が何フレーム目だったか記録
- if @distanse_y > 0 && over_distance < 0
- @move_speed_y = i
- break
- # 左移動で距離オーバーする直前が何フレーム目だったか記録
- elsif @distanse_y < 0 && over_distance > 0
- @move_speed_y = i
- break
- end
- end
- # オーバー距離を一回前に戻す
- before = over_distance + boost_y
- # 余った距離を等速移動させるフレーム数を加算
- @move_speed_plus_y = (before / @moving_y).abs
- # それでも余った距離はこの時点で移動し消化
- @move_y += before % @moving_y
- @battler.move_y = @move_y
- # 減速がある場合
- elsif @move_boost_y < 0 && @distanse_y != 0
- # 加減速の正負を左右移動に合わせて変換
- if @distanse_y == 0
- @move_boost_y = 0
- elsif @distanse_y < 0
- @move_boost_y *= -1
- end
- # 距離の変化を事前計算
- for i in 0...@move_speed_y
- boost_y += @move_boost_y
- move_y += boost_y
- # 足りない距離を記録
- lost_distance = @distanse_y - move_y
- before = lost_distance
- # 右移動で速度が0になる直前が何フレーム目だったか記録
- if @distanse_y > 0 && boost_y < 0
- @move_speed_y = i
- # 足りない距離を一回前に戻す
- before = lost_distance + boost_y
- break
- # 左移動で速度が0になる直前が何フレーム目だったか記録
- elsif @distanse_y < 0 && boost_y > 0
- @move_speed_y = i
- # 足りない距離を一回前に戻す
- before = lost_distance + boost_y
- break
- end
- end
- # 足りない距離を等速移動させるフレーム数を加算
- plus = before / @moving_y
- @move_speed_plus_y = plus.abs
- # それでも余った距離はこの時点で移動し消化
- @move_y += before % @moving_y
- @battler.move_y = @move_y
- end
- # 移動完了時間を算出
- x = @move_speed_plus_x + @move_speed_x
- y = @move_speed_plus_y + @move_speed_y
- if x > y
- end_time = x
- else
- end_time = y
- end
- # 移動が完了するまで次のアクションに行かない
- @wait = end_time
- # ジャンプ計算
- if @jump != 0
- # 移動がなくジャンプのみの場合
- if @wait == 0
- # 時間に計上
- @wait = @active_action[3]
- end
- # 移動完了時間からジャンプ時間を算出
- @jump_time = @wait / 2
- # 割り切れない場合の余り時間
- @jump_time_plus = @wait % 2
- # ジャンプの正負を判別
- @jump_sign = 0
- @jump_sign2 = 0
- if @jump < 0
- @jump_sign = -1
- @jump_sign2 = 1
- @jump = @jump * -1
- else
- @jump_sign = 1
- @jump_sign2 = -1
- end
- # ジャンプ初速度を決定
- @jump_up = 2 ** @jump * @jump_sign
- # ジャンプ時間の端数を微調整
- if @jump_time == 0
- @jump_up = 0
- elsif @jump_time != 1
- @jump_size = @jump_up * @jump_sign * @jump_sign2
- else
- @jump_size = @jump_up * 2 * @jump_sign * @jump_sign2
- @jump_flug = true
- end
- end
- end
- #--------------------------------------------------------------------------
- # ● バトラーアニメ開始
- #--------------------------------------------------------------------------
- def battler_anime
- # アニメ設定を反映
- @anime_kind = @active_action[1]
- @anime_speed = @active_action[2]
- @anime_loop = @active_action[3]
- # ウエイト時間があれば加算
- @unloop_wait = @active_action[4]
- @anime_end = true
- @reverse = false
- # 武器アクションがある場合だけ更新する
- if @weapon_R != nil && @active_action[8] != ""
- # 武器の設定をチェック
- weapon_kind = N01::ANIME[@active_action[8]]
- # エネミーと二刀ではないアクターの二刀フラグアニメ処理はキャンセル
- two_swords_flug = weapon_kind[11]
- return if two_swords_flug && [email protected]?
- return if two_swords_flug && @battler.weapons[1] == nil && @battler.actor?
- if @battler.actor? && @battler.weapons[0] == nil && !two_swords_flug
- @weapon_R.action_reset
- elsif @battler.actor? && @battler.weapons[1] == nil && two_swords_flug
- @weapon_R.action_reset
- elsif [email protected]? && @battler.weapon == 0
- @weapon_R.action_reset
- else
- # 初期化
- @weapon_R.action_reset
- # アニメパターンが固定だった場合の武器位置を取得
- if @active_action[5] != -1
- @weapon_R.freeze(@active_action[5])
- end
- # 武器画像を設定
- @weapon_R.weapon_graphics unless two_swords_flug
- @weapon_R.weapon_graphics(true) if two_swords_flug
- # 武器アクションを渡す
- @weapon_R.weapon_action(@active_action[8],@anime_loop)
- @weapon_action = true
- # 最初の武器アクションを更新
- @weapon_R.action
- end
- elsif @weapon_R != nil
- @weapon_R.action_reset
- end
- @anime_end = false
- # アニメパターンが固定だった場合
- if @active_action[5] != -1 && @active_action[5] != -2
- # フラグオン
- @anime_freeze = true
- # アニメが常に終了しているとみなす
- @anime_end = true
- # 片道逆転再生だった場合
- elsif @active_action[5] == -2
- @anime_freeze = false
- # フラグオン
- @reverse = true
- # 最初のアニメパターンを更新
- @pattern = @base_width - 1
- # 武器アニメがある時だけフレーム更新
- if @weapon_action && @weapon_R != nil
- @weapon_R.action
- @weapon_R.update
- end
- # 通常のアニメ更新の場合
- else
- @anime_freeze = false
- # 最初のアニメパターンを更新
- @pattern = 0
- # 武器アニメがある時だけフレーム更新
- if @weapon_action && @weapon_R != nil
- @weapon_R.action
- @weapon_R.update
- end
- end
- @pattern_back = false
- @frame = @anime_speed
- # Z座標設定
- @battler.move_z = @active_action[6]
- # 影の有無
- if @shadow != nil
- @shadow.visible = true if @active_action[7]
- @shadow.visible = false unless @active_action[7]
- @shadow.visible = false if @skip_shadow
- end
- # ナンバリングから読み取るファイル名を分岐
- if @active_action[0] == 0
- file_name = @battler_name
- else
- file_name = @battler_name + "_" + @active_action[0].to_s
- end
- # アニメしないバトラーなら処理終了
- return unless @anime_flug
- self.bitmap = Cache.character(file_name)
- # 転送元の矩形を設定
- @sx = @pattern * @width
- @sy = @anime_kind * @height
- @sx = @active_action[5] * @width if @anime_freeze
- self.src_rect.set(@sx, @sy, @width, @height)
- end
- #--------------------------------------------------------------------------
- # ● アニメ飛ばし
- #--------------------------------------------------------------------------
- def moving_anime
- # まだ前のアニメ飛ばしが残っているなら初期化
- @move_anime.action_reset if @anime_moving
- @anime_moving = true
- # バックアタック中はアニメ、武器画像反転
- mirror = false
- mirror = true if $back_attack
- # アニメID
- id = @active_action[1]
- # 対象
- target = @active_action[2]
- x = y = mem = 0
- # 対象が単体の場合
- if target == 0
- # ターゲットが決まってない場合、自身に変換
- if @target_battler == nil
- x = self.x
- y = self.y
- else
- # ターゲットが空の場合、自身に変換
- if @target_battler[0] == nil
- x = self.x
- y = self.y
- else
- # 最初に入っているターゲットに対象決定
- x = @target_battler[0].position_x
- y = @target_battler[0].position_y
- end
- end
- # 対象が敵の中心の場合
- elsif target == 1
- # 自身がアクターの場合はエネミーの中心を計算
- if @battler.is_a?(Game_Actor)
- for target in $game_troop.members
- x += target.position_x
- y += target.position_y
- mem += 1
- end
- x = x / mem
- y = y / mem
- # 自身がエネミーの場合はアクターの中心を計算
- else
- for target in $game_party.members
- x += target.position_x
- y += target.position_y
- mem += 1
- end
- x = x / mem
- y = y / mem
- end
- # 対象が味方の中心の場合
- elsif target == 2
- # 自身がアクターの場合はアクターの中心を計算
- if @battler.is_a?(Game_Actor)
- for target in $game_party.members
- x += target.position_x
- y += target.position_y
- mem += 1
- end
- x = x / mem
- y = y / mem
- # 自身がエネミーの場合はエネミーの中心を計算
- else
- for target in $game_troop.members
- x += target.position_x
- y += target.position_y
- mem += 1
- end
- x = x / mem
- y = y / mem
- end
- # 対象が自身の場合
- else
- x = self.x
- y = self.y
- end
- # 開始位置の微調整
- plus_x = @active_action[6]
- plus_y = @active_action[7]
- # エネミーはX軸を逆に
- plus_x *= -1 if @battler.is_a?(Game_Enemy)
- # 最終的な移動距離を算出
- distanse_x = x - self.x - plus_x
- distanse_y = y - self.y - plus_y
- # 飛ばしタイプ
- type = @active_action[3]
- # 速度
- speed = @active_action[4]
- # 軌道
- orbit = @active_action[5]
- # 自身が開始位置なら
- if @active_action[8] == 0
- @move_anime.base_x = self.x + plus_x
- @move_anime.base_y = self.y + plus_y
- # 対象が開始位置なら
- elsif @active_action[8] == 1
- @move_anime.base_x = x + plus_x
- @move_anime.base_y = y + plus_y
- # 距離を反対に
- distanse_y = distanse_y * -1
- distanse_x = distanse_x * -1
- # 動かさないなら
- else
- @move_anime.base_x = x
- @move_anime.base_y = y
- distanse_x = distanse_y = 0
- end
- # 武器アクションなしは武器表示しない
- if @active_action[10] == ""
- weapon = ""
- # アニメなしエネミーは武器表示しない
- elsif @anime_flug != true
- weapon = ""
- # 武器アクションがある場合
- else
- # 飛ばす武器グラフィックが指定されているかチェック
- if @battler.is_a?(Game_Actor)
- battler = $game_party.members[@battler.index]
- weapon_id = battler.weapon_id
- else
- battler = $game_troop.members[@battler.index]
- weapon_id = battler.weapon
- end
- # スキル画像利用か武器画像利用か判別
- weapon_act = N01::ANIME[@active_action[10]].dup if @active_action[10] != ""
- # 武器画像利用で素手でなければ
- if weapon_id != 0 && weapon_act.size == 3
- weapon_file = $data_weapons[weapon_id].flying_graphic
- # 別画像が指定されていなければ既存の武器グラフィックを取得
- if weapon_file == ""
- weapon_name = $data_weapons[weapon_id].graphic
- icon_weapon = false
- # さらに指定がなければアイコングラフィックを利用
- if weapon_name == ""
- weapon_name = $data_weapons[weapon_id].icon_index
- icon_weapon = true
- end
- # 指定されていればそのグラフィック名を取得
- else
- icon_weapon = false
- weapon_name = weapon_file
- end
- # 武器アクション情報を取得
- weapon = @active_action[10]
- # 武器画像利用で素手なら表示しない
- elsif weapon_act.size == 3
- weapon = ""
- # スキル画像利用
- elsif weapon_act != nil && @battler.action.skill != nil
- icon_weapon = false
- weapon_name = $data_skills[@battler.action.skill.id].flying_graphic
- weapon = @active_action[10]
- end
- end
- # Z座標を決定
- @move_anime.z = 1
- @move_anime.z = 1000 if @active_action[9]
- # 以上の情報を全てアニメ飛ばしスプライトに送る
- @move_anime.anime_action(id,mirror,distanse_x,distanse_y,type,speed,orbit,weapon,weapon_name,icon_weapon)
- end
- #--------------------------------------------------------------------------
- # ● アクション終了
- #--------------------------------------------------------------------------
- def anime_finish
- # 個別処理終了が省略された場合リピートさせる
- return individual_action_end if @individual_targets.size != 0
- # アクティブバトラーにアクション情報を格納
- send_action(@active_action[0]) if @battler.active
- # 残像があれば開放
- mirage_off if @mirage_flug
- # 待機アクションを繰り返す
- start_action(@repeat_action) unless @non_repeat
- end
- #--------------------------------------------------------------------------
- # ● コラプスアクション
- #--------------------------------------------------------------------------
- def collapse_action
- @non_repeat = true
- @effect_type = COLLAPSE
- @collapse_type = @battler.collapse_type unless @battler.actor?
- @battler_visible = false unless @battler.actor?
- @effect_duration = N01::COLLAPSE_WAIT + 48 if @collapse_type == 2
- @effect_duration = 401 if @collapse_type == 3
- end
- #--------------------------------------------------------------------------
- # ● ノーマルコラプス
- #--------------------------------------------------------------------------
- def normal_collapse
- if @effect_duration == 47
- Sound.play_enemy_collapse
- self.blend_type = 1
- self.color.set(255, 128, 128, 128)
- end
- self.opacity = 256 - (48 - @effect_duration) * 6 if @effect_duration <= 47
- end
- #--------------------------------------------------------------------------
- # ● ボスコラプス
- #--------------------------------------------------------------------------
- def boss_collapse1
- if @effect_duration == 320
- Audio.se_play("Audio/SE/Absorb1", 100, 80)
- self.flash(Color.new(255, 255, 255), 60)
- viewport.flash(Color.new(255, 255, 255), 20)
- end
- if @effect_duration == 280
- Audio.se_play("Audio/SE/Absorb1", 100, 80)
- self.flash(Color.new(255, 255, 255), 60)
- viewport.flash(Color.new(255, 255, 255), 20)
- end
- if @effect_duration == 220
- Audio.se_play("Audio/SE/Earth4", 100, 80)
- reset
- self.blend_type = 1
- self.color.set(255, 128, 128, 128)
- self.wave_amp = 6
- end
- if @effect_duration < 220
- self.src_rect.set(0, @effect_duration / 2 - 110, @width, @height)
- self.x += 8 if @effect_duration % 4 == 0
- self.x -= 8 if @effect_duration % 4 == 2
- self.wave_amp += 1 if @effect_duration % 10 == 0
- self.opacity = @effect_duration
- return if @effect_duration < 50
- Audio.se_play("Audio/SE/Earth4", 100, 50) if @effect_duration % 50 == 0
- end
- end
- end
复制代码- #==============================================================================
- # ■ Scene_Battle Ver2.4
- #------------------------------------------------------------------------------
- # バトル画面の処理を行うクラスです。
- #==============================================================================
- class Scene_Battle < Scene_Base
- #--------------------------------------------------------------------------
- # ● 終了処理
- #--------------------------------------------------------------------------
- alias terminate_n01 terminate
- def terminate
- terminate_n01
- # 二刀流の持ち替え処理を戻す
- for member in $game_party.members
- if member.two_swords_change
- member.change_equip_by_id(1, member.weapon_id)
- member.change_equip_by_id(0, 0)
- member.two_swords_change = false
- end
- end
- end
- #--------------------------------------------------------------------------
- # ● 戦闘開始の処理
- #--------------------------------------------------------------------------
- alias process_battle_start_n01 process_battle_start
- def process_battle_start
- process_battle_start_n01
- # 二刀流で左(下部表示)に武器を持ち右(上部表示)に武器を持たないように
- # している場合、ここで強制的に持ち替えさせる
- for member in $game_party.members
- if member.weapons[0] == nil and member.weapons[1] != nil
- member.change_equip_by_id(0, member.armor1_id)
- member.change_equip_by_id(1, 0)
- member.two_swords_change = true
- end
- end
- end
- #--------------------------------------------------------------------------
- # ● ヘルプウインドウの表示
- #--------------------------------------------------------------------------
- def pop_help(obj)
- return if obj.extension.include?("ヘルプ非表示")
- @help_window.set_text(obj.name, 1)
- @help_window.visible = true
- end
- #--------------------------------------------------------------------------
- # ● 情報表示ビューポートの移動
- #--------------------------------------------------------------------------
- def move1_info_viewport
- @info_viewport.ox = 0
- loop do
- update_basic
- @info_viewport.ox -= 0
- @party_command_window.x -= 0
- @actor_command_window.x += 0
- break if @info_viewport.ox == 0
- end
- end
- #--------------------------------------------------------------------------
- # ● 情報表示ビューポートの移動
- #--------------------------------------------------------------------------
- def move2_info_viewport
- @info_viewport.ox = 0
- loop do
- update_basic
- @info_viewport.ox -= 0
- @party_command_window.x += 0
- @actor_command_window.x -= 0
- break if @info_viewport.ox == 0
- end
- end
- #--------------------------------------------------------------------------
- # ● 次のアクターのコマンド入力へ
- #--------------------------------------------------------------------------
- alias next_actor_n01 next_actor
- def next_actor
- # 動けるキャラのみコマンドアクションを
- if @active_battler != nil && @active_battler.inputable? && @active_battler.actor?
- @spriteset.set_action(true, @actor_index,@active_battler.command_a)
- end
- # 最後のアクターの場合、アクションが終わるまで待つ
- @wait_count = 32 if @actor_index == $game_party.members.size-1
- next_actor_n01
- # 動けるキャラのみコマンドアクションを
- if @active_battler != nil && @active_battler.inputable? && @active_battler.actor?
- @spriteset.set_action(true, @actor_index,@active_battler.command_b)
- end
- end
- #--------------------------------------------------------------------------
- # ● 前のアクターのコマンド入力へ
- #--------------------------------------------------------------------------
- alias prior_actor_n01 prior_actor
- def prior_actor
- # 動けるキャラのみコマンドアクションを
- if @active_battler != nil && @active_battler.inputable? && @active_battler.actor?
- @active_battler.action.clear
- @spriteset.set_action(true, @actor_index,@active_battler.command_a)
- end
- prior_actor_n01
- # 動けるキャラのみコマンドアクションを
- if @active_battler != nil && @active_battler.inputable? && @active_battler.actor?
- @active_battler.action.clear
- @spriteset.set_action(true, @actor_index,@active_battler.command_b)
- end
- end
- #--------------------------------------------------------------------------
- # ● ターゲット選択の開始 ※再定義
- #--------------------------------------------------------------------------
- def start_target_enemy_selection
- start_target_selection
- end
- #--------------------------------------------------------------------------
- # ● ターゲット選択の開始 ※再定義
- #--------------------------------------------------------------------------
- def start_target_actor_selection
- start_target_selection(true)
- end
- #--------------------------------------------------------------------------
- # ● ターゲット選択の開始
- #--------------------------------------------------------------------------
- def start_target_selection(actor = false)
- members = $game_party.members if actor
- members = $game_troop.members unless actor
- # カーソルスプライトの作成
- @cursor = Sprite.new
- @cursor.bitmap = Cache.character("cursor")
- @cursor.src_rect.set(0, 0, 32, 32)
- @cursor_flame = 0
- @cursor.x = -200
- @cursor.y = -200
- @cursor.ox = @cursor.width
- @cursor.oy = @cursor.height
- # ターゲット名を表示するヘルプウインドウを作成
- @help_window = Window_Help.new if @help_window == nil
- # 不要なウインドウを消す
- @actor_command_window.active = false
- @skill_window.visible = false if @skill_window != nil
- @item_window.visible = false if @item_window != nil
- # 存在しているターゲットで最も番号の低い対象を最初に指すように
- @index = 0
- @max_index = members.size - 1
- # アクターは戦闘不能者でもターゲットできるようにエネミーと区別
- unless actor
- members.size.times do
- break if members[@index].exist?
- @index += 1
- end
- end
- @help_window.set_text(members[@index].name, 1)
- select_member(actor)
- end
- #--------------------------------------------------------------------------
- # ● ターゲット選択
- #--------------------------------------------------------------------------
- def select_member(actor = false)
- members = $game_party.members if actor
- members = $game_troop.members unless actor
- loop do
- update_basic
- @cursor_flame = 0 if @cursor_flame == 30
- @cursor.src_rect.set(0, 0, 32, 32) if @cursor_flame == 29
- @cursor.src_rect.set(0, 32, 32, 32) if @cursor_flame == 15
- point = @spriteset.set_cursor(actor, @index)
- @cursor.x = point[0]
- @cursor.y = point[1]
- @cursor_flame += 1
- if Input.trigger?(Input::B)
- Sound.play_cancel
- end_target_selection
- break
- elsif Input.trigger?(Input::C)
- Sound.play_decision
- @active_battler.action.target_index = @index
- end_target_selection
- end_skill_selection
- end_item_selection
- next_actor
- break
- end
- if Input.repeat?(Input::LEFT)
- if actor
- cursor_down(members, actor) if $back_attack
- cursor_up(members, actor) unless $back_attack
- else
- cursor_up(members, actor) if $back_attack
- cursor_down(members, actor) unless $back_attack
- end
- end
- if Input.repeat?(Input::RIGHT)
- if actor
- cursor_up(members, actor) if $back_attack
- cursor_down(members, actor) unless $back_attack
- else
- cursor_down(members, actor) if $back_attack
- cursor_up(members, actor) unless $back_attack
- end
- end
- cursor_up(members, actor) if Input.repeat?(Input::UP)
- cursor_down(members, actor) if Input.repeat?(Input::DOWN)
- end
- end
- #--------------------------------------------------------------------------
- # ● カーソルを前に移動
- #--------------------------------------------------------------------------
- def cursor_up(members, actor)
- Sound.play_cursor
- members.size.times do
- @index += members.size - 1
- @index %= members.size
- break if actor
- break if members[@index].exist?
- end
- @help_window.set_text(members[@index].name, 1)
- end
- #--------------------------------------------------------------------------
- # ● カーソルを次に移動
- #--------------------------------------------------------------------------
- def cursor_down(members, actor)
- Sound.play_cursor
- members.size.times do
- @index += 1
- @index %= members.size
- break if actor
- break if members[@index].exist? && !actor
- end
- @help_window.set_text(members[@index].name, 1)
- end
- #--------------------------------------------------------------------------
- # ● ターゲット選択の終了
- #--------------------------------------------------------------------------
- def end_target_selection
- @actor_command_window.active = true if @actor_command_window.index == 0
- @skill_window.visible = true if @skill_window != nil
- @item_window.visible = true if @item_window != nil
- @cursor.dispose
- @cursor = nil
- if @actor_command_window.index == 0
- @help_window.dispose
- @help_window = nil
- end
- end
- #--------------------------------------------------------------------------
- # ● 逃走の処理 ※再定義
- #--------------------------------------------------------------------------
- def process_escape
- @info_viewport.visible = false
- @message_window.visible = true
- text = sprintf(Vocab::EscapeStart, $game_party.name)
- $game_message.texts.push(text)
- if $game_troop.preemptive
- success = true
- else
- success = (rand(100) < @escape_ratio)
- end
- Sound.play_escape
- # 動けないアクターを除いて逃走成功アクション
- if success
- for actor in $game_party.members
- unless actor.restriction == 4
- @spriteset.set_action(true, actor.index,actor.run_success)
- end
- end
- wait_for_message
- battle_end(1)
- # 動けないアクターを除いて逃走失敗アクション
- else
- for actor in $game_party.members
- unless actor.restriction == 4
- @spriteset.set_action(true, actor.index,actor.run_ng)
- end
- end
- @escape_ratio += 10
- $game_message.texts.push('\.' + Vocab::EscapeFailure)
- wait_for_message
- $game_party.clear_actions
- start_main
- end
- end
- #--------------------------------------------------------------------------
- # ● 勝利の処理
- #--------------------------------------------------------------------------
- alias process_victory_n01 process_victory
- def process_victory
- @status_window.visible = true
- @message_window.visible = false
- # ボスコラプスはウエイトを長く挟む
- for enemy in $game_troop.members
- break boss_wait = true if enemy.collapse_type == 3
- end
- wait(440) if boss_wait
- wait(N01::WIN_WAIT) unless boss_wait
- # 動けないアクターを除いて勝利アクション
- for actor in $game_party.members
- unless actor.restriction == 4
- @spriteset.set_action(true, actor.index,actor.win)
- end
- end
- process_victory_n01
- end
- #--------------------------------------------------------------------------
- # ● 戦闘処理の実行開始 ※再定義
- #--------------------------------------------------------------------------
- def start_main
- $game_troop.increase_turn
- @info_viewport.visible = true
- @info_viewport.ox = 0
- @party_command_window.active = false
- @actor_command_window.active = false
- @status_window.index = @actor_index = -1
- @active_battler = nil
- @message_window.clear
- $game_troop.make_actions
- make_action_orders
- # 情報表示ビューポートの移動
- move1_info_viewport
- # スキル名を表示するヘルプウインドウを作成
- @help_window = Window_Help.new
- @help_window.visible = false
- process_battle_event
- end
- #--------------------------------------------------------------------------
- # ● バトルイベントの処理 ※再定義
- #--------------------------------------------------------------------------
- def process_battle_event
- loop do
- return if judge_win_loss
- return if $game_temp.next_scene != nil
- $game_troop.interpreter.update
- $game_troop.setup_battle_event
- @message_window.update
- if $game_message.visible
- @message_window.visible = true
- @status_window.visible = false
- end
- wait_for_message
- @message_window.visible = false
- @status_window.visible = true
- process_action if $game_troop.forcing_battler != nil
- return unless $game_troop.interpreter.running?
- update_basic
- end
- end
- #--------------------------------------------------------------------------
- # ● 行動順序作成
- #--------------------------------------------------------------------------
- alias make_action_orders_n01 make_action_orders
- def make_action_orders
- make_action_orders_n01
- # エネミーの行動回数チェック
- for enemy in $game_troop.members
- enemy.act_time = 0
- if enemy.action_time[0] != 1
- action_time = 0
- # 確率から回数を取得
- for i in 1...enemy.action_time[0]
- action_time += 1 if rand(100) < enemy.action_time[1]
- end
- enemy.act_time = action_time
- action_time.times do
- enemy_order_time(enemy)
- action_time -= 1
- break if action_time == 0
- end
- enemy.adj_speed = nil
- end
- end
- end
- #--------------------------------------------------------------------------
- # ● エネミーの行動回数作成
- #--------------------------------------------------------------------------
- def enemy_order_time(enemy)
- enemy.make_action_speed2(enemy.action_time[2])
- select_time = 0
- for member in @action_battlers
- select_time += 1
- break @action_battlers.push(enemy) if member.action.speed < enemy.adj_speed
- break @action_battlers.push(enemy) if select_time == @action_battlers.size
- end
- end
- #--------------------------------------------------------------------------
- # ● 戦闘行動の実行
- #--------------------------------------------------------------------------
- alias execute_action_n01 execute_action
- def execute_action
- # スキル、アイテム拡張で行動前にフラッシュさせない設定があるなら
- if @active_battler.action.kind != 0
- obj = @active_battler.action.skill if @active_battler.action.kind == 1
- obj = @active_battler.action.item if @active_battler.action.kind == 2
- if obj.extension.include?("行動前フラッシュなし")
- @active_battler.white_flash = false
- end
- end
- # バトラーをアクティブ化
- @active_battler.active = true
- execute_action_n01
- # スキル派生がある場合、行動続行
- if @active_battler.derivation != 0
- @active_battler.action.kind = 1
- @active_battler.action.skill_id = @active_battler.derivation
- @action_battlers.unshift(@active_battler)
- end
- # 複数回行動のエネミーがいる場合、次の行動を決定
- if !@active_battler.actor? && @active_battler.act_time != 0
- @active_battler.make_action
- @active_battler.act_time -= 1
- end
- end
- #--------------------------------------------------------------------------
- # ● ターン終了 ※再定義
- #--------------------------------------------------------------------------
- def turn_end
- for member in $game_party.members + $game_troop.members
- member.clear_action_results
- next unless member.exist?
- member.slip_damage = false
- actor = member.actor?
- damage = 0
- # 0ターン解除のステートがあるかチェック
- for state in member.states
- member.remove_state(state.id) if state.extension.include?("0ターン解除")
- # スリップダメージ実行 state = [ 対象, 定数, 割合, POP, 戦闘不能許可]
- next unless state.extension.include?("スリップダメージ")
- for ext in state.slip_extension
- if ext[0] == "hp"
- base_damage = ext[1] + member.maxhp * ext[2] / 100
- damage += base_damage + base_damage * (rand(5) - rand(5)) / 100
- slip_pop = ext[3]
- slip_dead = ext[4]
- slip_damage_flug = true
- member.slip_damage = true
- end
- end
- end
- # デフォルトのスリップダメージ
- if member.slip_damage? && member.exist? && !slip_damage_flug
- damage += member.apply_variance(member.maxhp / 10, 10)
- slip_dead = false
- slip_pop = true
- slip_damage_flug = true
- member.slip_damage = true
- end
- damage = member.hp - 1 if damage >= member.hp && slip_dead = false
- member.hp -= damage
- @spriteset.set_damage_pop(actor, member.index, damage) if slip_pop
- member.perform_collapse if member.dead? && member.slip_damage
- member.clear_action_results
- end
- @status_window.refresh
- # HPとMPのタイミングをずらす
- wait(55) if slip_damage_flug
- slip_damage_flug = false
- for member in $game_party.members + $game_troop.members
- member.clear_action_results
- next unless member.exist?
- actor = member.actor?
- mp_damage = 0
- for state in member.states
- next unless state.extension.include?("スリップダメージ")
- for ext in state.slip_extension
- if ext[0] == "mp"
- base_damage = ext[1] + member.maxmp * ext[2] / 100
- mp_damage += base_damage + base_damage * (rand(5) - rand(5)) / 100
- slip_pop = ext[2]
- slip_damage_flug = true
- end
- end
- member.mp_damage = mp_damage
- member.mp -= mp_damage
- @spriteset.set_damage_pop(actor, member.index, mp_damage) if slip_pop
- end
- member.clear_action_results
- end
- @status_window.refresh
- # ダメージと回復のタイミングをずらす
- wait(55) if slip_damage_flug
- # 自動回復があるか
- for member in $game_party.members
- if member.auto_hp_recover and member.exist?
- plus_hp = member.maxhp / 20
- member.hp += plus_hp
- @spriteset.set_damage_pop(true, member.index, plus_hp * -1)
- plus_hp_flug = true
- end
- member.clear_action_results
- end
- @status_window.refresh
- wait(55) if plus_hp_flug
- @help_window.dispose if @help_window != nil
- @help_window = nil
- move2_info_viewport
- $game_troop.turn_ending = true
- $game_troop.preemptive = false
- $game_troop.surprise = false
- process_battle_event
- $game_troop.turn_ending = false
- start_party_command_selection
- end
- #--------------------------------------------------------------------------
- # ● 戦闘行動の実行 : 攻撃 ※再定義
- #--------------------------------------------------------------------------
- def execute_action_attack
- # 行動中に死なないようメンバー全員を不死身化
- immortaling
- target_decision
- self_index = @active_battler.index
- if @active_battler.actor?
- if @active_battler.weapon_id == 0
- action = @active_battler.non_weapon
- else
- action = $data_weapons[@active_battler.weapon_id].base_action
- end
- else
- if @active_battler.weapon == 0
- action = @active_battler.base_action
- else
- action = $data_weapons[@active_battler.weapon].base_action
- end
- end
- @spriteset.set_action(@active_battler.actor?, self_index, action)
- playing_action
- end
- #--------------------------------------------------------------------------
- # ● 戦闘行動の実行 : 防御 ※再定義
- #--------------------------------------------------------------------------
- def execute_action_guard
- @help_window.set_text("防御", 1)
- @help_window.visible = true
- # バトラーのアクティブ化を解除
- @active_battler.active = false
- wait(45)
- @help_window.visible = false
- end
- #--------------------------------------------------------------------------
- # ● 戦闘行動の実行 : 逃走
- #--------------------------------------------------------------------------
- def execute_action_escape
- @spriteset.set_action(false, @active_battler.index, @active_battler.run_success)
- @help_window.set_text("逃走", 1)
- @help_window.visible = true
- # バトラーのアクティブ化を解除
- @active_battler.active = false
- @active_battler.escape
- Sound.play_escape
- wait(45)
- @help_window.visible = false
- end
- #--------------------------------------------------------------------------
- # ● 戦闘行動の実行 : 待機 ※再定義
- #--------------------------------------------------------------------------
- def execute_action_wait
- # バトラーのアクティブ化を解除
- @active_battler.active = false
- wait(45)
- end
- #--------------------------------------------------------------------------
- # ● 戦闘行動の実行 : スキル ※再定義
- #--------------------------------------------------------------------------
- def execute_action_skill
- # 行動中に死なないようメンバー全員を不死身化
- immortaling
- skill = @active_battler.action.skill
- # スキルコスト消費
- return if @active_battler.consum_skill_cost(skill) == false
- # ターゲット決定
- target_decision(skill)
- # アクション開始
- @spriteset.set_action(@active_battler.actor?, @active_battler.index, skill.base_action)
- # ヘルプウインドウにスキル名表示
- pop_help(skill)
- # アクション中
- playing_action
- # コモンイベント取得
- $game_temp.common_event_id = skill.common_event_id
- end
- #--------------------------------------------------------------------------
- # ● 戦闘行動の実行 : アイテム ※再定義
- #--------------------------------------------------------------------------
- def execute_action_item
- immortaling
- item = @active_battler.action.item
- $game_party.consume_item(item)
- target_decision(item)
- @spriteset.set_action(@active_battler.actor?, @active_battler.index, item.base_action)
- pop_help(item)
- playing_action
- $game_temp.common_event_id = item.common_event_id
- end
- #--------------------------------------------------------------------------
- # ● ターゲット決定
- #--------------------------------------------------------------------------
- def target_decision(obj = nil)
- @targets = @active_battler.action.make_targets
- # ターゲットがいない場合、アクション中断
- if @targets.size == 0
- action = @active_battler.recover_action
- @spriteset.set_action(@active_battler.actor?, @active_battler.index, action)
- end
- if obj != nil
- # デフォルトの複数回攻撃が設定されていれば単体ターゲットに変換
- if obj.for_two? or obj.for_three? or obj.dual?
- @targets = [@targets[0]]
- end
- # ランダムターゲットの場合、一体を選択しランダム範囲を保持
- if obj.extension.include?("ランダムターゲット")
- randum_targets = @targets.dup
- @targets = [randum_targets[rand(randum_targets.size)]]
- end
- end
- # ターゲット情報をバトラースプライトに送る
- @spriteset.set_target(@active_battler.actor?, @active_battler.index, @targets)
- end
- #--------------------------------------------------------------------------
- # ● アクション実行中
- #--------------------------------------------------------------------------
- def playing_action
- loop do
- update_basic
- # アクティブバトラーに格納されているアクション情報を見る
- action = @active_battler.play
- next if action == 0
- @active_battler.play = 0
- if action[0] == "個別処理"
- individual
- elsif action == "コラプス許可"
- unimmortaling
- elsif action == "アクティブ解除"
- break action_end
- elsif action == "終了"
- break action_end
- elsif action[0] == "対象アニメ"
- damage_action(action[1])
- end
- end
- end
- #--------------------------------------------------------------------------
- # ● 個別処理
- #--------------------------------------------------------------------------
- def individual
- # ターゲット情報を保持
- @individual_target = @targets
- @stand_by_target = @targets.dup
- end
- #--------------------------------------------------------------------------
- # ● コラプス禁止
- #--------------------------------------------------------------------------
- def immortaling
- # 全員に不死身付与
- for member in $game_party.members + $game_troop.members
- # 既に戦闘不能ならスキップ
- next if member.dead?
- # イベント等で不死身設定になっていたら解除を無効にするフラグを立てる
- member.non_dead = true if member.immortal
- member.immortal = true
- end
- end
- #--------------------------------------------------------------------------
- # ● コラプス許可
- #--------------------------------------------------------------------------
- def unimmortaling
- # 個別処理中はコラプス許可しない
- return if @active_battler.individual
- # 全員の不死身化解除(イベント等で不死身設定がされていれば除く)
- for member in $game_party.members + $game_troop.members
- next member.non_dead = false if member.non_dead
- next if member.dead?
- member.immortal = false
- member.add_state(1) if member.hp == 0
- member.perform_collapse
- end
- # この時点で待機アクションに即反映させる
- @targets = @stand_by_target if @stand_by_target != nil
- return if @targets == nil or @targets.size == 0
- for target in @targets
- @spriteset.set_stand_by_action(target.actor?, target.index)
- # 自動復活チェック
- next unless target.hp == 0
- resurrection(target)
- end
- end
- #--------------------------------------------------------------------------
- # ● 自動復活
- #--------------------------------------------------------------------------
- def resurrection(target)
- for state in target.states
- for ext in state.extension
- name = ext.split('')
- next unless name[0] == "自"
- wait(50)
- name = name.join
- name.slice!("自動復活/")
- target.hp = target.maxhp * name.to_i / 100
- target.remove_state(1)
- target.remove_state(state.id)
- target.animation_id = N01::RESURRECTION
- target.animation_mirror = true if $back_attack
- @status_window.refresh
- wait($data_animations[N01::RESURRECTION].frame_max * 4)
- end
- end
- end
- #--------------------------------------------------------------------------
- # ● 魔法反射・無効
- #--------------------------------------------------------------------------
- def magic_reflection(target, obj)
- return if obj.physical_attack
- for state in target.states
- for ext in state.extension
- name = ext.split('')
- next unless name[0] == "魔"
- if name[2] == "反"
- name = name.join
- name.slice!("魔法反射/")
- target.animation_id = name.to_i
- target.animation_mirror = true if $back_attack
- @reflection = true
- else
- name = name.join
- name.slice!("魔法無効/")
- target.animation_id = name.to_i
- target.animation_mirror = true if $back_attack
- @invalid = true
- end
- end
- end
- end
- #--------------------------------------------------------------------------
- # ● 物理反射・無効
- #--------------------------------------------------------------------------
- def physics_reflection(target, obj)
- return if obj != nil && !obj.physical_attack
- for state in target.states
- for ext in state.extension
- name = ext.split('')
- next unless name[0] == "物"
- if name[2] == "反"
- name = name.join
- name.slice!("物理反射/")
- target.animation_id = name.to_i
- target.animation_mirror = true if $back_attack
- @reflection = true
- else
- name = name.join
- name.slice!("物理無効/")
- target.animation_id = name.to_i
- target.animation_mirror = true if $back_attack
- @invalid = true
- end
- end
- end
- end
- #--------------------------------------------------------------------------
- # ● スキルコスト吸収
- #--------------------------------------------------------------------------
- def absorb_cost(target, obj)
- for state in target.states
- if state.extension.include?("コスト吸収")
- cost = @active_battler.calc_mp_cost(obj)
- # SP消費とHP消費で分ける
- return target.hp += cost if obj.extension.include?("HP消費")
- return target.mp += cost
- end
- end
- end
- #--------------------------------------------------------------------------
- # ● 吸収処理
- #--------------------------------------------------------------------------
- def absorb_attack(obj, target, index, actor)
- absorb = target.hp_damage
- absorb = target.mp_damage if target.mp_damage != 0
- # ターゲットが複数同時の吸収処理
- @wide_attack = true if obj.scope == 2 or obj.scope == 4 or obj.scope == 6 or obj.extension.include?("全域")
- if @wide_attack && @absorb == nil && @targets.size != 1
- # 吸収した分を戻す
- @active_battler.hp -= @active_battler.hp_damage
- @active_battler.mp -= @active_battler.mp_damage
- # 後で吸い戻す数値として加算
- @absorb = absorb
- @absorb_target_size = @targets.size - 2
- elsif @absorb != nil && @absorb_target_size > 0
- @active_battler.hp -= @active_battler.hp_damage
- @active_battler.mp -= @active_battler.mp_damage
- @absorb += absorb
- @absorb_target_size -= 1
- # 複数ターゲットの最終吸収処理
- elsif @absorb != nil
- # 吸収した分を戻す
- @active_battler.hp -= @active_battler.hp_damage
- @active_battler.mp -= @active_battler.mp_damage
- @absorb += absorb
- # ここで全吸収分を反映
- @active_battler.hp_damage = -@absorb
- @active_battler.mp_damage = -@absorb if target.mp_damage != 0
- @active_battler.hp -= @active_battler.hp_damage
- @active_battler.mp -= @active_battler.mp_damage
- # 吸収量が0の場合の吸収者側処理
- absorb_action = ["absorb", nil, false] if @absorb == 0
- absorb_action = [nil, nil, false] if @absorb != 0
- @spriteset.set_damage_action(actor, index, absorb_action)
- @active_battler.perform_collapse
- @absorb = nil
- @absorb_target_size = nil
- # 単体での吸収処理
- else
- if N01::ABSORB_DAMAGE
- # 吸収した分を戻す
- @active_battler.hp -= @active_battler.hp_damage
- @active_battler.mp -= @active_battler.mp_damage
- # 吸収反映
- @active_battler.hp_damage = -absorb
- @active_battler.mp_damage = -absorb if target.mp_damage != 0
- @active_battler.hp -= @active_battler.hp_damage
- @active_battler.mp -= @active_battler.mp_damage
- end
- # 吸収量が0の場合の吸収者側処理
- absorb_action = ["absorb", nil, false] if absorb == 0
- absorb_action = [nil, nil, false] if absorb != 0
- @spriteset.set_damage_action(actor, index, absorb_action)
- # 逆吸収でHP0になった場合
- @absorb_dead = true if @active_battler.hp == 0 && !@active_battler.non_dead
- end
- # 吸収量が0の場合の対象者側処理
- return 0 if absorb == 0
- end
- #--------------------------------------------------------------------------
- # ● アクション終了
- #--------------------------------------------------------------------------
- def action_end
- # 初期化
- @individual_target = nil
- @help_window.visible = false if @help_window != nil && @help_window.visible
- @active_battler.active = false
- @active_battler.clear_action_results
- # 念のため不死身化解除
- unimmortaling
- # 反射されていた場合
- if @active_battler.reflex != nil
- if @active_battler.action.skill?
- obj = @active_battler.action.skill
- @active_battler.perfect_skill_effect(@active_battler, obj)
- elsif @active_battler.action.item?
- obj = @active_battler.action.item
- @active_battler.item_effect(@active_battler, obj)
- else
- @active_battler.perfect_attack_effect(@active_battler)
- end
- pop_damage(@active_battler, obj, @active_battler.reflex)
- @active_battler.perform_collapse
- @active_battler.reflex = nil
- wait(N01::COLLAPSE_WAIT)
- end
- # 逆吸収で戦闘不能になった場合
- if @absorb_dead
- @active_battler.perform_collapse
- @absorb_dead = false
- wait(N01::COLLAPSE_WAIT)
- end
- # 次の行動までウエイトを挟む
- wait(N01::ACTION_WAIT)
- end
- #--------------------------------------------------------------------------
- # ● ダメージ処理
- #--------------------------------------------------------------------------
- def damage_action(action)
- # 個別処理の場合ターゲットを一つずつ抜き出す
- @targets = [@individual_target.shift] if @active_battler.individual
- # スキルの場合
- if @active_battler.action.skill?
- obj = @active_battler.action.skill
- for target in @targets
- return if target == nil
- return if target.dead? && !obj.for_dead_friend?
- # HPが0なら戦闘不能復活以外はミスしない
- target.revival = true if obj.for_dead_friend?
- if target.hp == 0 && !obj.for_dead_friend?
- target.perfect_skill_effect(@active_battler, obj)
- # 必中確認
- elsif obj.extension.include?("必中")
- target.perfect_skill_effect(@active_battler, obj)
- else
- # 反射確認
- magic_reflection(target, obj) unless obj.extension.include?("反射無視")
- physics_reflection(target, obj) unless obj.extension.include?("反射無視")
- # ダメージ計算
- target.skill_effect(@active_battler, obj) unless @reflection or @invalid
- end
- pop_damage(target, obj, action) unless @reflection or @invalid
- # コスト吸収確認
- absorb_cost(target, obj)
- # 反射アクション取得
- @active_battler.reflex = action if @reflection
- @reflection = false
- @invalid = false
- end
- # アイテムの場合
- elsif @active_battler.action.item?
- obj = @active_battler.action.item
- for target in @targets
- return if target == nil
- return if target.dead? && !obj.for_dead_friend?
- target.revival = true if obj.for_dead_friend?
- if target.hp == 0 && !obj.for_dead_friend?
- target.perfect_item_effect(@active_battler, obj)
- elsif obj.extension.include?("必中")
- target.perfect_item_effect(@active_battler, obj)
- else
- magic_reflection(target, obj) unless obj.extension.include?("反射無視")
- physics_reflection(target, obj) unless obj.extension.include?("反射無視")
- target.item_effect(@active_battler, obj) unless @reflection or @invalid
- end
- pop_damage(target, obj, action) unless @reflection or @invalid
- @active_battler.reflex = action if @reflection
- @reflection = false
- @invalid = false
- end
- # 通常攻撃の場合
- else
- for target in @targets
- return if target == nil or target.dead?
- physics_reflection(target, nil)
- target.perfect_attack_effect(@active_battler) if target.hp <= 0
- target.attack_effect(@active_battler) unless target.hp <= 0 or @reflection or @invalid
- pop_damage(target, nil, action) unless @reflection or @invalid
- # 反射アクション取得
- @active_battler.reflex = action if @reflection
- @reflection = false
- @invalid = false
- end
- end
- # ステータスウインドウをリフレッシュ
- @status_window.refresh
- # 連続行動中のランダムターゲットを考慮し、すぐに次のターゲットを選択
- return if obj == nil
- target_decision(obj) if obj.extension.include?("ランダムターゲット")
- end
- #--------------------------------------------------------------------------
- # ● ダメージ表示 action = [アニメID,反転フラグ,リアクション許可]
- #--------------------------------------------------------------------------
- def pop_damage(target, obj, action)
- index = @active_battler.index
- actor = @active_battler.actor?
- if obj != nil
- # スキルやアイテムが吸収属性なら
- absorb = absorb_attack(obj, target, index, actor) if obj.absorb_damage
- action.push(true) if absorb == 0
- # 拡張設定でダメージアクション禁止なら
- action[2] = false if obj.extension.include?("ダメージアクション禁止")
- end
- # 対象のリアクション
- @spriteset.set_damage_action(target.actor?, target.index, action)
- end
- end
- #==============================================================================
- # ■ Game_BattleAction
- #------------------------------------------------------------------------------
- # 戦闘行動を扱うクラスです。
- #==============================================================================
- class Game_BattleAction
- #--------------------------------------------------------------------------
- # ● 行動が有効か否かの判定 ※再定義
- #--------------------------------------------------------------------------
- def valid?
- return false if nothing? # 何もしない
- return true if @forcing # 行動強制中
- return false unless battler.movable? # 行動不能
- if skill? # スキル
- if battler.derivation != 0
- battler.derivation = 0
- return true
- end
- return false unless battler.skill_can_use?(skill)
- elsif item? # アイテム
- return false unless friends_unit.item_can_use?(item)
- end
- return true
- end
- #--------------------------------------------------------------------------
- # ● ターゲットの配列作成 ※再定義
- #--------------------------------------------------------------------------
- def make_targets
- if attack?
- return make_attack_targets
- elsif skill?
- targets = make_obj_targets(skill)
- targets = make_obj_targets2(skill, targets) if skill.extension != ["なし"]
- return targets
- elsif item?
- targets = make_obj_targets(item)
- targets = make_obj_targets2(item, targets) if item.extension != ["なし"]
- return targets
- end
- end
- #--------------------------------------------------------------------------
- # ● スキルまたはアイテムのターゲット作成の拡張
- #--------------------------------------------------------------------------
- def make_obj_targets2(obj, targets)
- if obj.extension.include?("全域")
- targets = []
- targets += opponents_unit.existing_members
- targets += friends_unit.existing_members
- end
- if obj.extension.include?("自分以外")
- targets.delete($game_party.members[battler.index]) if battler.actor?
- targets.delete($game_troop.members[battler.index]) unless battler.actor?
- end
- return targets.compact
- end
- end
- #==============================================================================
- # ■ Sprite_Base
- #------------------------------------------------------------------------------
- # アニメーションの表示処理を追加したスプライトのクラスです。
- #==============================================================================
- class Sprite_Base < Sprite
- #--------------------------------------------------------------------------
- # ● アニメーションの更新 アニメをスプライトに追従するように
- #--------------------------------------------------------------------------
- alias update_animation_n01 update_animation
- def update_animation
- @animation_ox = x - ox + width / 2
- @animation_oy = y - oy + height / 2
- update_animation_n01
- end
- end
- #==============================================================================
- # ■ Spriteset_Battle
- #------------------------------------------------------------------------------
- # バトル画面のスプライトをまとめたクラスです。
- #==============================================================================
- class Spriteset_Battle
- #--------------------------------------------------------------------------
- # ● エネミースプライトの作成
- #--------------------------------------------------------------------------
- def create_enemies
- @enemy_sprites = []
- for i in 0...$game_troop.members.size
- enemy = $game_troop.members[i]
- @enemy_sprites.push(Sprite_Battler.new(@viewport1, enemy))
- # バトル開始アクションを起こす
- @enemy_sprites[i].opacity = 0 if $game_troop.members[i].hidden
- @enemy_sprites[i].first_action if $game_troop.members[i] != nil
- end
- end
- #--------------------------------------------------------------------------
- # ● アクタースプライトの作成
- #--------------------------------------------------------------------------
- def create_actors
- @actor_sprites = []
- # メンバー最大数スプライトを用意
- member = N01::MAX_MEMBER
- for i in 0...member
- actor = $game_party.members[i]
- @actor_sprites.push(Sprite_Battler.new(@viewport1, actor))
- # バトル開始アクションを起こす
- @actor_sprites[i].first_action if $game_party.members[i] != nil
- end
- end
-
- #--------------------------------------------------------------------------
- # ● バックアタック
- #--------------------------------------------------------------------------
- def back_attack
- # 強制バックアタックならフラグオン
- for i in 0...N01::BACK_ATTACK_SWITCH.size
- return $back_attack = true if $game_switches[N01::BACK_ATTACK_SWITCH[i]]
- end
- # 不意打ちが発生していなければ処理を中断
- return $back_attack = false unless $game_troop.surprise && N01::BACK_ATTACK
- # 装備等によるバックアタック無効化をチェック
- for actor in $game_party.members
- return $back_attack = false if N01::NON_BACK_ATTACK_WEAPONS.include?(actor.weapon_id)
- return $back_attack = false if N01::NON_BACK_ATTACK_ARMOR1.include?(actor.armor1_id)
- return $back_attack = false if N01::NON_BACK_ATTACK_ARMOR2.include?(actor.armor2_id)
- return $back_attack = false if N01::NON_BACK_ATTACK_ARMOR3.include?(actor.armor3_id)
- return $back_attack = false if N01::NON_BACK_ATTACK_ARMOR4.include?(actor.armor4_id)
- for i in 0...N01::NON_BACK_ATTACK_SKILLS.size
- return $back_attack = false if actor.skill_id_learn?(N01::NON_BACK_ATTACK_SKILLS[i])
- end
- end
- # バックアタック発生
- $back_attack = true
- end
- #--------------------------------------------------------------------------
- # ● アクタースプライトの更新 ※再定義
- #--------------------------------------------------------------------------
- def update_actors
- for i in 0...$game_party.members.size
- if @actor_sprites[i].battler.id != $game_party.members[i].id
- @actor_sprites[i].battler = $game_party.members[i]
- @actor_sprites[i].make_battler
- @actor_sprites[i].first_action
- end
- end
- for sprite in @actor_sprites
- sprite.update
- end
- end
- #--------------------------------------------------------------------------
- # ● ダメージアクションセット
- #--------------------------------------------------------------------------
- def set_damage_action(actor, index, action)
- @actor_sprites[index].damage_action(action) if actor
- @enemy_sprites[index].damage_action(action) unless actor
- end
- #--------------------------------------------------------------------------
- # ● ダメージPOPセット
- #--------------------------------------------------------------------------
- def set_damage_pop(actor, index, damage)
- @actor_sprites[index].damage_pop(damage) if actor
- @enemy_sprites[index].damage_pop(damage) unless actor
- end
- #--------------------------------------------------------------------------
- # ● ターゲットセット
- #--------------------------------------------------------------------------
- def set_target(actor, index, target)
- @actor_sprites[index].get_target(target) if actor
- @enemy_sprites[index].get_target(target) unless actor
- end
- #--------------------------------------------------------------------------
- # ● アクションセット
- #--------------------------------------------------------------------------
- def set_action(actor, index, kind)
- @actor_sprites[index].start_action(kind) if actor
- @enemy_sprites[index].start_action(kind) unless actor
- end
- #--------------------------------------------------------------------------
- # ● 待機アクションセット
- #--------------------------------------------------------------------------
- def set_stand_by_action(actor, index)
- @actor_sprites[index].push_stand_by if actor
- @enemy_sprites[index].push_stand_by unless actor
- end
- #--------------------------------------------------------------------------
- # ● カーソル移動のセット
- #--------------------------------------------------------------------------
- def set_cursor(actor, index)
- return [@actor_sprites[index].x, @actor_sprites[index].y] if actor
- return [@enemy_sprites[index].x, @enemy_sprites[index].y] unless actor
- end
- end
- #==============================================================================
- # ■ Sprite_MoveAnime
- #------------------------------------------------------------------------------
- # アニメ飛ばし用のスプライトです。
- #==============================================================================
- class Sprite_MoveAnime < Sprite_Base
- #--------------------------------------------------------------------------
- # ● 公開インスタンス変数
- #--------------------------------------------------------------------------
- attr_accessor :battler
- attr_accessor :base_x # 自身の基本X座標
- attr_accessor :base_y # 自身の基本Y座標
- #--------------------------------------------------------------------------
- # ● オブジェクト初期化
- #--------------------------------------------------------------------------
- def initialize(viewport,battler = nil)
- super(viewport)
- @battler = battler
- self.visible = false
- @base_x = 0
- @base_y = 0
- @move_x = 0 # 動かしたX座標
- @move_y = 0 # 動かしたY座標
- @moving_x = 0 # 1フレーム当たり動かすX座標
- @moving_y = 0 # 1フレーム当たり動かすY座標
- @orbit = 0 # 円軌道
- @orbit_plus = 0 # 加算する円軌道
- @orbit_time = 0 # 円軌道計算時間
- @through = false # 貫通するかどうか
- @finish = false # 移動終了フラグ
- @time = 0 # 移動時間
- @angle = 0 # 武器の角度
- @angling = 0 # 1フレーム当たり動かす武器の角度
- end
- #--------------------------------------------------------------------------
- # ● アクションを取得
- #--------------------------------------------------------------------------
- def anime_action(id,mirror,distanse_x,distanse_y,type,speed,orbit,weapon,icon_index,icon_weapon)
- # 1フレームあたりの移動距離を算出
- @time = speed
- @moving_x = distanse_x / speed
- @moving_y = distanse_y / speed
- # 貫通するかどうか
- @through = true if type == 1
- # 円軌道を取得
- @orbit_plus = orbit
- @orbit_time = @time
- # 武器グラフィックの有無
- if weapon != ""
- action = N01::ANIME[weapon].dup
- @angle = action[0]
- end_angle = action[1]
- time = action[2]
- # 1フレームあたりの回転角度を出す
- @angling = (end_angle - @angle)/ time
- # 開始角度を取る
- self.angle = @angle
- # 武器グラフィックを表示
- self.mirror = mirror
- if icon_weapon
- self.bitmap = Cache.system("Iconset")
- self.src_rect.set(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)
- self.ox = 12
- self.oy = 12
- else
- self.bitmap = Cache.character(icon_index)
- self.ox = self.bitmap.width / 2
- self.oy = self.bitmap.height / 2
- end
- self.visible = true
- # バトラーより手前に表示
- self.z = 1000
- end
- # 最初は動かさず一回だけ表示
- self.x = @base_x + @move_x
- self.y = @base_y + @move_y + @orbit
- if id != 0
- animation = $data_animations[id]
- start_animation(animation, mirror)
- end
- end
- #--------------------------------------------------------------------------
- # ● 変化した動きをリセット
- #--------------------------------------------------------------------------
- def action_reset
- @moving_x = @moving_y = @move_x = @move_y = @base_x = @base_y = @orbit = 0
- @orbit_time = @angling = @angle = 0
- @through = self.visible = @finish = false
- dispose_animation
- end
- #--------------------------------------------------------------------------
- # ● 貫通終了
- #--------------------------------------------------------------------------
- def finish?
- return @finish
- end
- #--------------------------------------------------------------------------
- # ● フレーム更新
- #--------------------------------------------------------------------------
- def update
- super
- # 時間消費
- @time -= 1
- # 時間まで指定の動きを
- if @time >= 0
- @move_x += @moving_x
- @move_y += @moving_y
- # 円軌道計算
- if @time < @orbit_time / 2
- @orbit_plus = @orbit_plus * 5 / 4
- elsif @time == @orbit_time / 2
- @orbit_plus *= -1
- else
- @orbit_plus = @orbit_plus * 2 / 3
- end
- @orbit += @orbit_plus
- end
- # 時間がきても貫通ならそのまま直進
- @time = 100 if @time < 0 && @through
- @finish = true if @time < 0 && !@through
- # スプライトの座標を更新
- self.x = @base_x + @move_x
- self.y = @base_y + @move_y + @orbit
- # 貫通の場合、画面から消えたら終了フラグオン
- if self.x < -200 or self.x > 840 or self.y < -200 or self.y > 680
- @finish = true
- end
- # 武器グラフィック更新
- if self.visible
- @angle += @angling
- self.angle = @angle
- end
- end
- end
- #==============================================================================
- # ■ Sprite_Weapon
- #------------------------------------------------------------------------------
- # ウエポン表示用のスプライトです。
- #==============================================================================
- class Sprite_Weapon < Sprite_Base
- #--------------------------------------------------------------------------
- # ● 公開インスタンス変数
- #--------------------------------------------------------------------------
- attr_accessor :battler
- #--------------------------------------------------------------------------
- # ● オブジェクト初期化
- #--------------------------------------------------------------------------
- def initialize(viewport,battler = nil)
- super(viewport)
- @battler = battler
- @action = [] # 武器のアクション情報
- @move_x = 0 # 動かしたX座標
- @move_y = 0 # 動かしたY座標
- @move_z = 0 # 動かしたZ座標
- @plus_x = 0 # 微調整分のX座標
- @plus_y = 0 # 微調整分のY座標
- @angle = 0 # 武器の回転角度
- @zoom_x = 1 # 武器の横拡大率
- @zoom_y = 1 # 武器の縦拡大率
- @moving_x = 0 # 1フレーム当たり動かすX座標
- @moving_y = 0 # 1フレーム当たり動かすY座標
- @angling = 0 # 1フレーム当たりの回転角度
- @zooming_x = 1 # 1フレーム当たりの横拡大率
- @zooming_y = 1 # 1フレーム当たりの縦拡大率
- @freeze = -1 # 固定アニメ用武器位置
- @mirroring = false # バトラーが反転しているか
- @time = N01::ANIME_PATTERN + 1 # 更新回数
- # 武器を取得
- weapon_graphics
- end
- #--------------------------------------------------------------------------
- # ● 解放
- #--------------------------------------------------------------------------
- def dispose
- self.bitmap.dispose if self.bitmap != nil
- super
- end
- #--------------------------------------------------------------------------
- # ● 武器を取得
- #--------------------------------------------------------------------------
- def weapon_graphics(left = false)
- if @battler.actor?
- weapon = @battler.weapons[0] unless left
- weapon = @battler.weapons[1] if left
- else
- weapon = $data_weapons[@battler.weapon]
- # エネミー反転フラグ確認
- @mirroring = true if @battler.action_mirror
- end
- # 武器がなければ処理をキャンセル
- return if weapon == nil
- # アイコンを利用するなら
- if weapon.graphic == ""
- icon_index = weapon.icon_index
- self.bitmap = Cache.system("Iconset")
- self.src_rect.set(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)
- @weapon_width = @weapon_height = 24
- # ID指定があったら、アイコンではなくそのグラフィックを取得
- else
- self.bitmap = Cache.character(weapon.graphic)
- @weapon_width = self.bitmap.width
- @weapon_height = self.bitmap.height
- end
- end
- #--------------------------------------------------------------------------
- # ● アニメ固定時の武器位置を取得
- #--------------------------------------------------------------------------
- def freeze(action)
- @freeze = action
- end
- #--------------------------------------------------------------------------
- # ● 武器アクションを取得 freeze
- #--------------------------------------------------------------------------
- def weapon_action(action,loop)
- # 名称がない場合は非表示に
- if action == ""
- self.visible = false
- # 素手なら非表示に
- elsif @weapon_id == 0
- self.visible = false
- # 武器アクション情報を受け取る
- else
- @action = N01::ANIME[action]
- act0 = @action[0]
- act1 = @action[1]
- act2 = @action[2]
- act3 = @action[3]
- act4 = @action[4]
- act5 = @action[5]
- act6 = @action[6]
- act7 = @action[7]
- act8 = @action[8]
- act9 = @action[9]
- act10 = @action[10]
- # バトラーが反転してる場合、X軸の動きを逆に
- if @mirroring
- act0 *= -1
- act3 *= -1
- act4 *= -1
- act9 *= -1
- end
- # バックアタック時には逆に
- if $back_attack && N01::BACK_ATTACK
- act0 *= -1
- act3 *= -1
- act4 *= -1
- act9 *= -1
- end
- # キャラのアニメパターン数をチェック
- time = N01::ANIME_PATTERN
- # Z座標をチェック
- if act2
- self.z = @battler.position_z + 1
- else
- self.z = @battler.position_z - 1
- end
- # 反転はここで実行し、すでに反転している場合は元に戻す
- if act6
- if self.mirror
- self.mirror = false
- else
- self.mirror = true
- end
- end
- # バトラーの反転を反映
- if @mirroring
- if self.mirror
- self.mirror = false
- else
- self.mirror = true
- end
- end
- # バックアタック時には逆に
- if $back_attack && N01::BACK_ATTACK
- if self.mirror
- self.mirror = false
- else
- self.mirror = true
- end
- end
- # アニメパターン数で割った変化を計算
- @moving_x = act0 / time
- @moving_y = act1 / time
- # 最初の角度を代入
- @angle = act3
- self.angle = @angle
- # 更新角度を計算
- @angling = (act4 - act3)/ time
- # 角度が割り切れない場合、ここで余り分を回転加算
- @angle += (act4 - act3) % time
- # 拡大縮小
- @zooming_x = (1 - act7) / time
- @zooming_y = (1 - act8) / time
- # 反転してる場合、回転元の原点を逆に
- if self.mirror
- case act5
- when 1 # 左上→右上に
- act5 = 2
- when 2 # 右上→左上に
- act5 = 1
- when 3 # 左下→右下に
- act5 = 4
- when 4 # 右下→左下に
- act5 = 3
- end
- end
- # 回転元の原点を設定
- case act5
- when 0 # 中心
- self.ox = @weapon_width / 2
- self.oy = @weapon_height / 2
- when 1 # 左上
- self.ox = 0
- self.oy = 0
- when 2 # 右上
- self.ox = @weapon_width
- self.oy = 0
- when 3 # 左下
- self.ox = 0
- self.oy = @weapon_height
- when 4 # 右下
- self.ox = @weapon_width
- self.oy = @weapon_height
- end
- # 座標微調整
- @plus_x = act9
- @plus_y = act10
- # 往復ループならフラグオン
- @loop = true if loop == 0
- # 初回で0から始まるように、この時点で-1回の動きをさせる
- @angle -= @angling
- @zoom_x -= @zooming_x
- @zoom_y -= @zooming_y
- # スプライトの座標を更新
- @move_x -= @moving_x
- @move_y -= @moving_y
- @move_z = 1000 if act2
- # 固定アニメの場合、この時点で動きを消化
- if @freeze != -1
- for i in 0..@freeze + 1
- @angle += @angling
- @zoom_x += @zooming_x
- @zoom_y += @zooming_y
- # スプライトの座標を更新
- @move_x += @moving_x
- @move_y += @moving_y
- end
- @angling = 0
- @zooming_x = 0
- @zooming_y = 0
- @moving_x = 0
- @moving_y = 0
- end
- # 可視
- self.visible = true
- end
- end
- #--------------------------------------------------------------------------
- # ● 変化した動きを全部リセット
- #--------------------------------------------------------------------------
- def action_reset
- @moving_x = @moving_y = @move_x = @move_y = @plus_x = @plus_y = 0
- @angling = @zooming_x = @zooming_y = @angle = self.angle = @move_z = 0
- @zoom_x = @zoom_y = self.zoom_x = self.zoom_y = 1
- self.mirror = self.visible = @loop = false
- @freeze = -1
- @action = []
- @time = N01::ANIME_PATTERN + 1
- end
- #--------------------------------------------------------------------------
- # ● 往復ループさせる
- #--------------------------------------------------------------------------
- def action_loop
- # 動きを反対に
- @angling *= -1
- @zooming_x *= -1
- @zooming_y *= -1
- @moving_x *= -1
- @moving_y *= -1
- end
- #--------------------------------------------------------------------------
- # ● アクターが反転している場合、自身も反転させる
- #--------------------------------------------------------------------------
- def mirroring
- return @mirroring = false if @mirroring
- @mirroring = true
- end
- #--------------------------------------------------------------------------
- # ● アクターアニメが更新された時のみ武器アクションの変化を更新
- #--------------------------------------------------------------------------
- def action
- return if @time <= 0
- @time -= 1
- # 回転、拡大縮小を更新
- @angle += @angling
- @zoom_x += @zooming_x
- @zoom_y += @zooming_y
- # スプライトの座標を更新
- @move_x += @moving_x
- @move_y += @moving_y
- # 往復ループなら動きを反転
- if @loop && @time == 0
- @time = N01::ANIME_PATTERN + 1
- action_loop
- end
- end
- #--------------------------------------------------------------------------
- # ● フレーム更新
- #--------------------------------------------------------------------------
- def update
- super
- # 回転、拡大縮小を更新
- self.angle = @angle
- self.zoom_x = @zoom_x
- self.zoom_y = @zoom_y
- # スプライトの座標を更新
- self.x = @battler.position_x + @move_x + @plus_x
- self.y = @battler.position_y + @move_y + @plus_y
- self.z = @battler.position_z + @move_z - 1
- end
- end
- #==============================================================================
- # ■ Game_Battler (分割定義 1)
- #------------------------------------------------------------------------------
- # バトラーを扱うクラスです。
- #==============================================================================
- class Game_Battler
- #--------------------------------------------------------------------------
- # ● 公開インスタンス変数
- #--------------------------------------------------------------------------
- attr_accessor :hp_damage # 行動結果: HP ダメージ
- attr_accessor :mp_damage # 行動結果: MP ダメージ
- attr_accessor :move_x # X方向の移動補正
- attr_accessor :move_y # Y方向の移動補正
- attr_accessor :move_z # Z方向の移動補正
- attr_accessor :jump # ジャンプ補正
- attr_accessor :active # アクティブか
- attr_accessor :non_dead # 不死身フラグ
- attr_accessor :slip_damage # スリップダメージフラグ
- attr_accessor :derivation # スキル派生ID
- attr_accessor :individual # スキル派生ID
- attr_accessor :play # アクション情報
- attr_accessor :force_action # 強制されるアクション情報
- attr_accessor :force_target # ターゲット変更情報
- attr_accessor :revival # 復活
- attr_accessor :double_damage # HPMP両方同時ダメージ
- attr_accessor :reflex # スキル反射情報
- attr_accessor :absorb # スキルコスト吸収
- attr_reader :base_position_x # 初期配置X座標
- attr_reader :base_position_y # 初期配置Y座標
- #--------------------------------------------------------------------------
- # ● オブジェクト初期化
- #--------------------------------------------------------------------------
- alias initialize_n01 initialize
- def initialize
- initialize_n01
- @move_x = @move_y = @move_z = @plus_y = @jump = @derivation = @play = 0
- @force_action = @force_target = @base_position_x = @base_position_y = 0
- @absorb = @act_time = 0
- @active = @non_dead = @individual = @slip_damage = @revival = @double_damage = false
- end
- #--------------------------------------------------------------------------
- # ● 一番新しいステートIDを返す
- #--------------------------------------------------------------------------
- def state_id
- return @states[@states.size - 1]
- end
- #--------------------------------------------------------------------------
- # ● スキルの使用可能判定 ※再定義
- #--------------------------------------------------------------------------
- def skill_can_use?(skill)
- return false unless skill.is_a?(RPG::Skill)
- return false unless movable?
- return false if silent? and skill.spi_f > 0
- if skill.extension.include?("HP消費")
- return false if calc_mp_cost(skill) > hp
- else
- return false if calc_mp_cost(skill) > mp
- end
- if $game_temp.in_battle
- return skill.battle_ok?
- else
- return skill.menu_ok?
- end
- end
- #--------------------------------------------------------------------------
- # ● スキルの消費 MP 計算 ※再定義
- #--------------------------------------------------------------------------
- def calc_mp_cost(skill)
- if half_mp_cost && !skill.extension.include?("MP消費半分無効")
- cost = skill.mp_cost / 2
- else
- cost = skill.mp_cost
- end
- if skill.extension.include?("%コストMAX")
- return self.maxhp * cost / 100 if skill.extension.include?("HP消費")
- return self.maxmp * cost / 100
- elsif skill.extension.include?("%コストNOW")
- return self.hp * cost / 100 if skill.extension.include?("HP消費")
- return self.mp * cost / 100
- end
- return cost
- end
- #--------------------------------------------------------------------------
- # ● スキルコスト消費
- #--------------------------------------------------------------------------
- def consum_skill_cost(skill)
- return false unless skill_can_use?(skill)
- cost = calc_mp_cost(skill)
- return self.hp -= cost if skill.extension.include?("HP消費")
- return self.mp -= cost
- end
- #--------------------------------------------------------------------------
- # ● 通常攻撃によるダメージ計算 二刀流補正
- #--------------------------------------------------------------------------
- alias make_attack_damage_value_n01 make_attack_damage_value
- def make_attack_damage_value(attacker)
- make_attack_damage_value_n01(attacker)
- # 二本の武器を装備しているときのみ補正を有効に
- return unless attacker.actor?
- return if attacker.weapons[0] == nil
- return if attacker.weapons[1] == nil
- @hp_damage = @hp_damage * N01::TWO_SWORDS_STYLE[0] / 100
- end
- #--------------------------------------------------------------------------
- # ● スキルまたはアイテムによるダメージ計算 二刀流補正
- #--------------------------------------------------------------------------
- alias make_obj_damage_value_n01 make_obj_damage_value
- def make_obj_damage_value(user, obj)
- make_obj_damage_value_n01(user, obj)
- # 二本の武器を装備しているときのみ補正を有効に
- return unless user.actor?
- return if user.weapons[0] == nil
- return if user.weapons[1] == nil
- if obj.damage_to_mp
- @mp_damage = @mp_damage * N01::TWO_SWORDS_STYLE[1] / 100 # MP にダメージ
- else
- @hp_damage = @hp_damage * N01::TWO_SWORDS_STYLE[1] / 100 # HP にダメージ
- end
- end
- #--------------------------------------------------------------------------
- # ● 通常攻撃の効果適用 すでに戦闘不能で絶対に回避できない処理
- #--------------------------------------------------------------------------
- def perfect_attack_effect(attacker)
- clear_action_results
- make_attack_damage_value(attacker) # ダメージ計算
- execute_damage(attacker) # ダメージ反映
- apply_state_changes(attacker) # ステート変化
- end
- #--------------------------------------------------------------------------
- # ● スキルの効果適用 すでに戦闘不能で絶対に回避できない処理
- #--------------------------------------------------------------------------
- def perfect_skill_effect(user, skill)
- clear_action_results
- make_obj_damage_value(user, skill) # ダメージ計算
- make_obj_absorb_effect(user, skill) # 吸収効果計算
- execute_damage(user) # ダメージ反映
- apply_state_changes(skill) # ステート変化
- end
- #--------------------------------------------------------------------------
- # ● アイテムの効果適用 すでに戦闘不能で絶対に回避できない処理
- #--------------------------------------------------------------------------
- def perfect_item_effect(user, item)
- clear_action_results
- hp_recovery = calc_hp_recovery(user, item) # HP 回復量計算
- mp_recovery = calc_mp_recovery(user, item) # MP 回復量計算
- make_obj_damage_value(user, item) # ダメージ計算
- @hp_damage -= hp_recovery # HP 回復量を差し引く
- @mp_damage -= mp_recovery # MP 回復量を差し引く
- make_obj_absorb_effect(user, item) # 吸収効果計算
- execute_damage(user) # ダメージ反映
- item_growth_effect(user, item) # 成長効果適用
- if item.physical_attack and @hp_damage == 0 # 物理ノーダメージ判定
- return
- end
- apply_state_changes(item) # ステート変化
- end
- #--------------------------------------------------------------------------
- # ● ダメージの反映
- #--------------------------------------------------------------------------
- alias execute_damage_n01 execute_damage
- def execute_damage(user)
- execute_damage_n01(user)
- # 吸収の場合ここで処理を相殺
- if @absorbed
- user.hp_damage = -@hp_damage
- user.mp_damage = -@mp_damage
- end
- end
- #--------------------------------------------------------------------------
- # ● スキルの効果適用
- #--------------------------------------------------------------------------
- alias skill_effect_n01 skill_effect
- def skill_effect(user, obj)
- # 変化前のHPMPを保持
- nowhp = self.hp
- nowmp = self.mp
- # 現在HPMP威力計算用に変化前の使用者HPMPを取得
- if obj.extension.include?("HP消費")
- user_hp = user.hp + user.calc_mp_cost(obj)
- user_mp = user.mp
- else
- user_hp = user.hp
- user_mp = user.mp + user.calc_mp_cost(obj)
- end
- # 拡張設定チェック
- check_extension(obj)
- # ダメージ計算
- skill_effect_n01(user, obj)
- # ダメージ系の拡張がある場合ここで処理を相殺
- if @extension
- self.hp = nowhp
- self.mp = nowmp
- end
- # 攻撃が当たっていない場合は処理中断
- return if self.evaded or self.missed
- # ダメージ属性変換
- damage = @hp_damage unless obj.damage_to_mp
- damage = @mp_damage if obj.damage_to_mp
- # 割合ダメージ
- if @ratio_maxdamage != nil
- damage = self.maxhp * @ratio_maxdamage / 100 unless obj.damage_to_mp
- damage = self.maxmp * @ratio_maxdamage / 100 if obj.damage_to_mp
- end
- if @ratio_nowdamage != nil
- damage = self.hp * @ratio_nowdamage / 100 unless obj.damage_to_mp
- damage = self.mp * @ratio_nowdamage / 100 if obj.damage_to_mp
- end
- # コスト威力
- if @cost_damage
- cost = user.calc_mp_cost(obj)
- if obj.extension.include?("HP消費")
- damage = damage * cost / user.maxhp
- else
- damage = damage * cost / user.maxmp
- end
- end
- # 現在HP威力
- damage = damage * user_hp / user.maxhp if @nowhp_damage
- # 現在MP威力
- damage = damage * user_mp / user.maxmp if @nowmp_damage
- # ダメージ属性変換戻し
- @hp_damage = damage unless obj.damage_to_mp
- @mp_damage = damage if obj.damage_to_mp
- # 拡張反映
- if @extension
- self.hp -= @hp_damage
- self.mp -= @mp_damage
- end
- # 初期化
- @extension = false
- @cost_damage = false
- @nowhp_damage = false
- @nowmp_damage = false
- @ratio_maxdamage = nil
- @ratio_nowdamage = nil
- end
- #--------------------------------------------------------------------------
- # ● 拡張設定チェック
- #--------------------------------------------------------------------------
- def check_extension(skill)
- for ext in skill.extension
- # コスト威力
- if ext == "コスト威力"
- @extension = true
- next @cost_damage = true
- # 現在HP威力
- elsif ext == "現HP威力"
- @extension = true
- next @nowhp_damage = true
- # 現在MP威力
- elsif ext == "現MP威力"
- @extension = true
- next @nowmp_damage = true
- else
- # 割合ダメージ
- name = ext.split('')
- if name[5] == "M"
- name = name.join
- name.slice!("%ダメージMAX/")
- @extension = true
- next @ratio_maxdamage = name.to_i
- elsif name[5] == "N"
- name = name.join
- name.slice!("%ダメージNOW/")
- @extension = true
- next @ratio_nowdamage = name.to_i
- end
- end
- end
- end
- #--------------------------------------------------------------------------
- # ● 初期配置の変更
- #--------------------------------------------------------------------------
- def change_base_position(x, y)
- @base_position_x = x
- @base_position_y = y
- end
- #--------------------------------------------------------------------------
- # ● 初期化
- #--------------------------------------------------------------------------
- def reset_coordinate
- @move_x = @move_y = @move_z = @jump = @derivation = 0
- @active = @non_dead = @individual = false
- end
- #--------------------------------------------------------------------------
- # ● スリップダメージの効果適用
- #--------------------------------------------------------------------------
- def slip_damage_effect
- if slip_damage? and @hp > 0
- @hp_damage = apply_variance(maxhp / 10, 10)
- @hp_damage = @hp - 1 if @hp_damage >= @hp
- self.hp -= @hp_damage
- end
- end
- end
- #==============================================================================
- # ■ Game_Actor
- #------------------------------------------------------------------------------
- # アクターを扱うクラスです。
- #==============================================================================
- class Game_Actor < Game_Battler
- #--------------------------------------------------------------------------
- # ● 公開インスタンス変数
- #--------------------------------------------------------------------------
- attr_accessor :two_swords_change # 二刀流強制持ち替えフラグ
- #--------------------------------------------------------------------------
- # ● IDによるスキルの習得済み判定
- #--------------------------------------------------------------------------
- def skill_id_learn?(skill_id)
- return @skills.include?(skill_id)
- end
- #--------------------------------------------------------------------------
- # ● スキルの使用可能判定 ※再定義
- #--------------------------------------------------------------------------
- def skill_can_use?(skill)
- return super
- end
- #--------------------------------------------------------------------------
- # ● グラフィックの変更
- #--------------------------------------------------------------------------
- def graphic_change(character_name)
- @character_name = character_name
- end
- #--------------------------------------------------------------------------
- # ● コラプスの実行 ※再定義
- #--------------------------------------------------------------------------
- def perform_collapse
- Sound.play_actor_collapse if $game_temp.in_battle and dead?
- end
- #--------------------------------------------------------------------------
- # ● 初期配置の取得
- #--------------------------------------------------------------------------
- def base_position
- base = N01::ACTOR_POSITION[self.index]
- @base_position_x = base[0]
- @base_position_y = base[1]
- # バックアタック時はX軸を逆に
- @base_position_x = Graphics.width - base[0] if $back_attack && N01::BACK_ATTACK
- end
- #--------------------------------------------------------------------------
- # ● バトル画面 X 座標の取得
- #--------------------------------------------------------------------------
- def position_x
- return 0 if self.index == nil
- return @base_position_x + @move_x
- end
- #--------------------------------------------------------------------------
- # ● バトル画面 Y 座標の取得
- #--------------------------------------------------------------------------
- def position_y
- return 0 if self.index == nil
- return @base_position_y + @move_y + @jump
- end
- #--------------------------------------------------------------------------
- # ● バトル画面 Z 座標の取得
- #--------------------------------------------------------------------------
- def position_z
- return 0 if self.index == nil
- return self.index + @base_position_y + @move_y + @move_z - @jump + 200
- end
- end
- #==============================================================================
- # ■ Game_Enemy
- #------------------------------------------------------------------------------
- # エネミーを扱うクラスです。
- #==============================================================================
- class Game_Enemy < Game_Battler
- #--------------------------------------------------------------------------
- # ● 公開インスタンス変数
- #--------------------------------------------------------------------------
- attr_accessor :adj_speed # 複数回行動の速度補正
- attr_accessor :act_time # 行動数回
- #--------------------------------------------------------------------------
- # ● アクションスピードの決定 複数回行動用
- #--------------------------------------------------------------------------
- def make_action_speed2(adj)
- @adj_speed = self.action.speed if @adj_speed == nil
- @adj_speed = @adj_speed * adj / 100
- end
- #--------------------------------------------------------------------------
- # ● コラプスの実行 ※再定義
- #--------------------------------------------------------------------------
- def perform_collapse
- @force_action = ["N01collapse"] if $game_temp.in_battle and dead?
- end
- #--------------------------------------------------------------------------
- # ● 初期配置の取得
- #--------------------------------------------------------------------------
- def base_position
- return if self.index == nil
- # バトラー画像のサイズをチェックしY座標を修正
- bitmap = Bitmap.new("Graphics/Battlers/" + @battler_name) if !self.anime_on
- bitmap = Bitmap.new("Graphics/Characters/" + @battler_name) if self.anime_on && N01::WALK_ANIME
- bitmap = Bitmap.new("Graphics/Characters/" + @battler_name + "_1") if self.anime_on && !N01::WALK_ANIME
- height = bitmap.height
- @base_position_x = self.screen_x + self.position_plus[0]
- @base_position_y = self.screen_y + self.position_plus[1] - height / 3
- bitmap.dispose
- # バックアタック時はX軸を逆に
- if $back_attack && N01::BACK_ATTACK
- @base_position_x = Graphics.width - self.screen_x - self.position_plus[0]
- end
- end
- #--------------------------------------------------------------------------
- # ● バトル画面 X 座標の取得
- #--------------------------------------------------------------------------
- def position_x
- return @base_position_x - @move_x
- end
- #--------------------------------------------------------------------------
- # ● バトル画面 Y 座標の取得
- #--------------------------------------------------------------------------
- def position_y
- return @base_position_y + @move_y + @jump
- end
- #--------------------------------------------------------------------------
- # ● バトル画面 Z 座標の取得
- #--------------------------------------------------------------------------
- def position_z
- return position_y + @move_z - @jump + 200
- end
- end
- #==============================================================================
- # ■ Sprite_Damage
- #------------------------------------------------------------------------------
- # ダメージ表示のスプライトです。
- #==============================================================================
- class Sprite_Damage < Sprite_Base
- #--------------------------------------------------------------------------
- # ● 公開インスタンス変数
- #--------------------------------------------------------------------------
- attr_accessor :battler
- #--------------------------------------------------------------------------
- # ● オブジェクト初期化
- #--------------------------------------------------------------------------
- def initialize(viewport,battler = nil)
- super(viewport)
- @battler = battler
- @damage = 0
- @duration = 0
- @x = 0
- @y = 0
- @z_plus = 0
- @minus = false
- @num1 = Sprite.new(viewport)
- @num2 = Sprite.new(viewport)
- @num3 = Sprite.new(viewport)
- @num4 = Sprite.new(viewport)
- @num5 = Sprite.new(viewport)
- @num1.visible = false
- @num2.visible = false
- @num3.visible = false
- @num4.visible = false
- @num5.visible = false
- end
- #--------------------------------------------------------------------------
- # ● フレーム更新
- #--------------------------------------------------------------------------
- def update
- move_damage(@num5, @pop_time) if @num5.visible
- move_damage(@num4, @pop_time - 2) if @num4.visible
- move_damage(@num3, @pop_time - 4) if @num3.visible
- move_damage(@num2, @pop_time - 6) if @num2.visible
- move_damage(@num1, @pop_time - 8) if @num1.visible
- move_window if @window != nil
- @duration -= 1 if @duration > 0
- end
- #--------------------------------------------------------------------------
- # ● 数値の動き
- #--------------------------------------------------------------------------
- def move_damage(num, min)
- case @duration
- when min-1..min
- num.y -= 4
- when min-3..min-2
- num.y -= 3
- when min-6..min-4
- num.y -= 2
- when min-14..min-7
- num.y += 2
- when min-17..min-15
- num.y -= 2
- when min-23..min-18
- num.y += 1
- when min-27..min-24
- num.y -= 1
- when min-30..min-28
- num.y += 1
- when min-33..min-31
- num.y -= 1
- when min-36..min-34
- num.y += 1
- end
- next_damage if @battler.double_damage && @duration == min-34
- num.opacity = 256 - (12 - @duration) * 32
- num.visible = false if @duration == 0
- end
- #--------------------------------------------------------------------------
- # ● 文字ウインドウの動き
- #--------------------------------------------------------------------------
- def move_window
- @window.x -= 6 if @window_time > 0 && @window.x > 0
- @window_time -= 1
- if @duration == 0
- @window.dispose
- @window = nil
- end
- end
- #--------------------------------------------------------------------------
- # ● HPMP両方同時ダメージ
- #--------------------------------------------------------------------------
- def next_damage
- @battler.hp_damage = 0
- @battler.double_damage = false
- damage_pop
- end
- #--------------------------------------------------------------------------
- # ● ダメージPOP準備
- #--------------------------------------------------------------------------
- def damage_pop(num = nil)
- reset
- damage = battler.hp_damage
- # ステートの変化を抜き出す
- states = battler.added_states
- text = ""
- # MPダメージ用テキスト(HPMP両方同時ダメージは除く)
- if [email protected]_damage && @battler.mp_damage != 0
- text = N01::POP_MP_DAM if battler.mp_damage > 0
- text = N01::POP_MP_REC if battler.mp_damage < 0
- damage = battler.mp_damage
- end
- # スリップダメージはMPダメージ以外文字を表示させない
- if num == nil
- text = N01::POP_MISS if battler.missed && states == []
- text = N01::POP_DAMAGE0 if damage == 0 && states == [] && !battler.revival
- text = N01::POP_EVA if battler.evaded
- text = N01::POP_CRI if battler.critical
- for state in states
- # POPなし設定のステートは表示させない
- unless state.extension.include?("POPなし")
- text += " " if text != ""
- text += state.name
- end
- end
- else
- damage = num
- end
- # ダメージと回復を分ける
- @minus = false
- @minus = true if damage < 0
- damage = damage.abs
- # POP位置微調整
- adjust = -16
- adjust = 16 if $back_attack
- adjust = 0 if damage == 0
- @x = battler.position_x + adjust
- @y = battler.position_y
- window(text) if text != ""
- @pop_time = N01::NUM_DURATION
- # ダメージがなければ数字のPOPをさせない
- return @duration = @pop_time if damage == 0
- @num_time = -1
- damage_file(@num1, damage % 10, @pop_time - 7) if damage >= 0
- damage_file(@num2, (damage % 100)/10, @pop_time - 5) if damage >= 10
- damage_file(@num3, (damage % 1000)/100, @pop_time - 3) if damage >= 100
- damage_file(@num4, (damage % 10000)/1000, @pop_time - 1) if damage >= 1000
- damage_file(@num5, (damage % 100000)/10000, @pop_time + 1) if damage >= 10000
- end
- #--------------------------------------------------------------------------
- # ● 情報ウインドウ準備
- #--------------------------------------------------------------------------
- def window(text)
- @window = Window_Damage.new(@x - 64, @y - 22)
- @window.pop_text(text)
- @window_time = 5
- end
- #--------------------------------------------------------------------------
- # ● 数字画像準備
- #--------------------------------------------------------------------------
- def damage_file(num, cw, dur)
- num.visible = true
- # ファイル判別
- file = N01::DAMAGE_GRAPHICS
- file = N01::RECOVER_GRAPHICS if @minus
- # 数字
- num.bitmap = Cache.system(file)
- @num_time += 1
- sx = num.bitmap.width / 10
- num.src_rect.set(cw * sx, 0, sx, num.height)
- num.x = @x - (num.width + N01::NUM_INTERBAL) * @num_time
- num.y = @y
- num.z = 2000 - @num_time
- @duration = dur
- @window.x = num.x - @window.width + 64 if @window != nil && N01::NON_DAMAGE_WINDOW
- @window.x = num.x - @window.width + 26 if @window != nil && !N01::NON_DAMAGE_WINDOW
- @window.x = 0 if @window != nil && @window.x < 0
- end
- #--------------------------------------------------------------------------
- # ● ダメージリセット
- #--------------------------------------------------------------------------
- def reset
- @num5.visible = @num4.visible = @num3.visible = @num2.visible = @num1.visible = false
- @window.dispose if @window != nil
- @window = nil
- end
- #--------------------------------------------------------------------------
- # ● 開放
- #--------------------------------------------------------------------------
- def dispose
- super
- @num1.dispose
- @num2.dispose
- @num3.dispose
- @num4.dispose
- @num5.dispose
- @window.dispose if @window != nil
- end
- end
- #==============================================================================
- # ■ Window_Damage
- #------------------------------------------------------------------------------
- # クリティカル等を表示するウインドウです。
- #==============================================================================
- class Window_Damage < Window_Base
- #--------------------------------------------------------------------------
- # ● オブジェクト初期化
- #--------------------------------------------------------------------------
- def initialize(x, y)
- super(x, y, 160, 46)
- self.opacity = 0 if N01::NON_DAMAGE_WINDOW
- end
- #--------------------------------------------------------------------------
- # ● ウィンドウ内容の作成
- #--------------------------------------------------------------------------
- def create_contents
- self.contents.dispose
- self.contents = Bitmap.new(width - 32, height - 32)
- end
- #--------------------------------------------------------------------------
- # ● テキスト設定
- #--------------------------------------------------------------------------
- def pop_text(text, align = 1)
- self.contents.clear
- self.width = self.contents.text_size(text).width + 36
- self.contents = Bitmap.new(width - 32, height - 32)
- self.contents.font.color = normal_color
- self.contents.font.size = 16
- self.contents.draw_text(0,-8, width - 32, 32, text, align)
- end
- end
- #==============================================================================
- # ■ Window_Base
- #------------------------------------------------------------------------------
- # ゲーム中のすべてのウィンドウのスーパークラスです。
- #==============================================================================
- class Window_Base < Window
- #--------------------------------------------------------------------------
- # ● ステートの描画 ※再定義(ステートアイコンを表示しない設定を反映)
- #--------------------------------------------------------------------------
- def draw_actor_state(actor, x, y, width = 96)
- count = 0
- for state in actor.states
- break if state.extension.include?("アイコン非表示")
- draw_icon(state.icon_index, x + 24 * count, y)
- count += 1
- break if (24 * count > width - 24)
- end
- end
- end
-
复制代码