Project1
标题:
【提问帖用】脚本
[打印本页]
作者:
yangjunyin2002
时间:
2013-3-2 19:52
标题:
【提问帖用】脚本
本帖最后由 yangjunyin2002 于 2013-3-2 20:19 编辑
额,我的那个提问帖横战出错,脚本很多,在那上太占了,也太乱了,就发这里来了。
不要误解!
(顺便说下,这横战脚本我就改了一小部分的技能啊。这是时间问题!)[出错的是ATB脚本的1521行(看提问帖去)]
还有,ATB设定 ATB 显血 战斗显示血条的3个脚本和┣STR15_Enemy HP Gauge脚本是我直接扔进去的,没修改。
┣ サイドビュー設定
#==============================================================================
# ■ module N01 for Sideview Ver3.4
#------------------------------------------------------------------------------
# サイドビューバトルのカスタマイズ項目です。
#==============================================================================
module N01
#--------------------------------------------------------------------------
# ● セッティング
#--------------------------------------------------------------------------
# アクター初期位置 一人目 二人目 三人目 四人目
# X軸 Y軸 X軸 Y軸 X軸 Y軸 X軸 Y軸
ACTOR_POSITION = [[415,135],[425,165],[435,200],[445,235],[350,165],]
# 戦闘メンバー最大数(多人数パーティスクリプト等で増えた時専用)
# 上の初期位置も人数分増やしてください
MAX_MEMBER = 5
# 戦闘で行動終了後、次のバトラーが行動開始するまでに挟むウエイト時間
ACTION_WAIT = 10
# エネミーのコラプス(撃破時の退場)前に挟むウエイト時間
COLLAPSE_WAIT = 12
# 勝利前に挟むウエイト時間
WIN_WAIT = 70
# バトルフロア(床みたいなの)位置設定 FLOOR = [ X軸, Y軸, 透明度]
FLOOR = [ 0, 96,128]
# 武器なしで攻撃した場合のヒットアニメID
NO_WEAPON = 11
# 二刀流設定 武器二つ装備時の一発当たりのダメージ量を設定します。数値は%
# 通常攻撃 スキル,アイテム
TWO_SWORDS_STYLE = [ 50, 100]
# ステート拡張・自動復活時のアニメID
RESURRECTION = 41
# ダメージ数字画像のファイル名(横へ等間隔で0~9と並べたシステムフォルダ内画像)
DAMAGE_GRAPHICS = "Number+"
# 回復数字画像のファイル名
RECOVER_GRAPHICS = "Number-"
# 数値の文字間隔
NUM_INTERBAL = -10
# 数値の表示時間
NUM_DURATION = 75
# ダメージウインドウを消し、文字だけ表示させる場合はtrue
NON_DAMAGE_WINDOW = true
# ダメージウインドウに表示させる単語。表示させたくない場合は""とします。
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 = false
# バックアタック無効化設定 不意打ちに対しても効果を発揮。
# 全て装備していることが条件で、スキルは取得しているだけで効果を発揮します。
# バックアタックを無効化する武器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軸 影 武器
"待機" => [ 1, 0, 15, 0, 0, -1, 0, true,"" ],
"待機3" => [ 1, 0, 15, 0, 0, -1, 0, true,"持武器3"],
"高速待機" => [ 1, 0, 0, 0, 0, -1, 0, true,"" ],
"高空刺动作" => [ 3, 0, 7, 2, 0, -1, 0, true,"高空刺-武器"],
"召唤毒刃" => [ 4, 3, 5, 2, 0, -1, 0, true,""],
"毒刃动作" => [ 3, 1, 3, 2, 0, -1, 0, true,""],
"投掷姿势" => [ 3, 2, 2, 2, 0, -1, 0, true,""],
"投掷姿势2" => [ 3, 2, 3, 2, 0, -1, 0, true,""],
"投掷姿势3" => [ 3, 2, 8, 2, 0, -1, 0, true,""],
"投掷姿势4" => [ 3, 2, 7, 2, 0, -1, 0, true,""],
"测试钝器挥舞" => [ 7, 1, 2, 2, 0, -1, 2, true,""],
"怒吼" => [ 4, 2, 8, 2, 0, -1, 0, true,"" ],
"呐喊" => [ 5, 0, 5, 2, 0, -1, 0, true,"" ],
"浮空待機" => [ 2, 2, 6, 0, 0, -1, 0, true,"持武器3" ],
"待機(固定)" => [ 1, 0, 10, 2, 0, 1, 0, true,"" ],
"防御待机" => [ 1, 0, 10, 2, 0, 1, 0, true,"持武器4" ],
"防御待机2" => [ 1, 0, 35, 2, 0, 1, 0, true,"防御时武器" ],
"惊讶" => [ 4, 3, 8, 0, 0, -1, 0, true,"" ],
"捂耳朵" => [ 6, 0, 3, 0, 0, -1, 0, true,"" ],
"捂耳朵2" => [ 6, 1, 3, 0, 0, -1, 0, true,"" ],
"キャラ消し待機" => [ 2, 2, 15, 0, 0, -1, 0, false,"" ],
"右向き(固定)" => [ 0, 2, 10, 1, 2, 1, 0, true,"" ],
"ダメージ" => [ 1, 1, 7, 2, 24, -1, 0, true,"" ],
"ダメージ2" => [ 1, 1, 7, 2, 24, -1, 0, true,"" ],
"空翻动作" => [ 4, 0, 5, 0, 0, -1, 0, true,"" ],
"空翻动作2" => [ 4, 2, 5, 0, 0, -1, 0, true,"" ],
"戦闘不能" => [ 2, 3, 10, 1, 8, 0, 0, true,"" ],
"前進" => [ 1, 3, 11, 2, 0, -1, 0, true,"持武器"],
"测试前进" => [ 7, 0, 11, 2, 0, -1, 0, true,""],
"前進-空" => [ 1, 3, 11, 2, 0, -1, 0, true,""],
"前進3" => [ 1, 3, 11, 2, 0, -1, 0, true,"持武器3"],
"持武器前進" => [ 1, 3, 11, 2, 0, -1, 0, true,"持武器2"],
"前進2" => [ 1, 3, 11, 2, 0, -1, 0, true,""],
"後退" => [ 1, 3, 11, 2, 0, -1, 0, true,"持武器"],
"特殊后退" => [ 2, 2, 11, 2, 0, -1, 0, true,"" ],
"手前表示" => [ 0, 1, 2, 1, 0, -1, 600, true,"" ],
"武器振り攻撃" => [ 3, 0, 1, 2, 0, -1, 2, true,"縦振り"],
"钝器挥舞" => [ 4, 0, 2, 2, 0, -1, 2, true,"縦振り3"],
"钝器挥舞2" => [ 4, 0, 10, 2, 0, -1, 2, true,"縦振り3"],
"钝器挥舞3" => [ 3, 0, 10, 2, 0, -1, 2, true,"縦振り3"],
"挥拳" => [ 3, 0, 3, 2, 0, -1, 2, true,"持武器3"],
"挥拳2" => [ 3, 2, 3, 2, 0, -1, 2, true,"持武器3"],
"挥拳3" => [ 3, 1, 3, 2, 0, -1, 2, true,"持武器3"],
"武器振り攻撃2" => [ 3, 0, 1, 2, 0, -1, 2, true,"縦振り2"],
"武器振り攻撃L" => [ 3, 0, 1, 2, 0, -1, 2, true,"縦振りL"],
"武器回し下" => [ 3, 1, 2, 2, 0, -1, 2, true,"下半回転"],
"武器回し上" => [ 0, 1, 2, 2, 0, -1, 2, true,"上半回転"],
"武器一回転上" => [ 3, 1, 4, 0, 0, -1, 2, true,"武器一回転"],
"武器掲げ" => [ 0, 1, 2, 2, 28, -1, 2, true,"掲げ"],
"高速武器振り攻撃"=> [ 3, 0, 0, 2, 0, -1, 2, true,"刀攻撃"],
"弓矢攻撃" => [ 3, 1, 1, 2, 8, -1, 2, true,"弓攻撃"],
"弓矢攻撃-空" => [ 3, 1, 1, 2, 8, -1, 2, true,"弓攻撃-空"],
"弓矢攻撃2" => [ 3, 1, 1, 2, 8, -1, 2, true,"弓攻撃2"],
"弓矢攻撃3" => [ 3, 1, 8, 2, 8, -1, 2, true,"弓攻撃"],
"突き攻撃" => [ 3, 0, 1, 2, 0, -1, 2, true,"剣突き刺し"],
"槍投げ" => [ 3, 2, 3, 2, 8, -1, 2, true,""],
"槍投げ後固定" => [ 3, 2, 3, 2, 8, 2, 2, true,""],
"銃で攻撃" => [ 3, 1, 1, 2, 0, -1, 2, true,"銃攻撃"],
"銃で攻撃2" => [ 3, 1, 1, 2, 0, -1, 2, true,"銃攻撃2"],
"銃で攻撃3" => [ 3, 1, 6, 2, 0, -1, 2, true,"銃攻撃3"],
"銃で攻撃4" => [ 3, 1, 1, 2, 0, -1, 2, true,"銃攻撃4"],
"銃で攻撃5" => [ 3, 1, 5, 2, 0, -1, 2, true,"銃攻撃5"],
"銃で攻撃6" => [ 3, 1, 1, 2, 0, -1, 2, true,"銃攻撃6"],
"銃で攻撃7" => [ 3, 1, 1, 2, 0, -1, 2, true,"銃攻撃7"],
"銃で攻撃8" => [ 3, 1, 1, 2, 0, -1, 2, true,"銃攻撃8"],
"銃で攻撃8-8" => [ 3, 1, 0, 2, 0, -1, 2, true,""],
"持M134" => [ 5, 0, 2, 2, 0, -1, 2, true,""],
"拿出M134" => [ 5, 1, 10, 2, 0, -1, 2, true,""],
"銃で攻撃8-3" => [ 4, 1, 1, 2, 0, -1, 2, true,"銃攻撃8"],
"銃で攻撃8-4" => [ 4, 1, 10, 2, 0, -1, 2, true,"銃攻撃8-4"],
"銃で攻撃8-5" => [ 3, 1, 15, 2, 0, -1, 2, true,"銃攻撃8-5"],
"銃で攻撃8-6" => [ 3, 1, 10, 2, 0, -1, 2, true,"銃攻撃8-6"],
"銃で攻撃8-7" => [ 4, 1, 10, 2, 0, -1, 2, true,"銃攻撃8-7"],
"銃で攻撃8-2" => [ 4, 1, 15, 2, 0, -1, 2, true,"銃攻撃8-2"],
"銃で攻撃9" => [ 3, 1, 1, 2, 0, -1, 2, true,"銃攻撃9"],
"銃で攻撃10" => [ 3, 1, 5, 2, 0, -1, 2, true,"銃攻撃10"],
"銃で攻撃11" => [ 3, 1, 1, 2, 0, -1, 2, true,"銃攻撃11"],
"没子弹" => [ 4, 3, 20, 2, 0, -1, 2, true,"銃攻撃8-2"],
"武器振り攻撃L" => [ 3, 0, 1, 2, 0, -1, 2, true,"縦振りL"],
"武器振り攻撃遅" => [ 3, 0, 8, 2, 0, -1, 2, true,"縦振りL"],
"武器振り攻撃遅2" => [ 3, 2, 8, 2, 0, -1, 2, true,""],
"剣突き刺し動作" => [ 3, 1, 2, 2, 0, -1, 2, true,"剣突き刺し"],
"刀攻撃下" => [ 3, 2, 1, 2, 0, -1, 2, true,"刀攻撃"],
"刀攻撃下-2" => [ 3, 2, 3, 2, 0, -1, 2, true,"刀攻撃"],
"旋转打" => [ 4, 1, 2, 2, 0, -1, 2, true,"旋转打武器"],
"投掷棒球" => [ 3, 2, 6, 2, 0, -1, 2, true,""],
"魔法挥舞" => [ 3, 1, 2, 2, 0, -1, 2, true,"持武器3"],
"魔法挥舞2" => [ 3, 1, 2, 2, 0, -1, 2, true,"刀攻撃"],
"枪专用" => [ 3, 5, 3, 2, 0, -1, 2, true,"枪专用"],
"刀攻撃下2" => [ 3, 2, 1, 2, 0, -1, 2, true,"刀攻撃2"],
"刀攻撃下3" => [ 3, 2, 1, 2, 0, -1, 2, true,"刀攻撃"],
"刀攻撃下4" => [ 4, 0, 3, 2, 0, -1, 2, true,"刀攻撃3"],
"刀攻撃下6" => [ 4, 0, 10, 2, 0, -1, 2, true,"刀攻撃5"],
"刀攻撃下5" => [ 3, 2, 1, 2, 0, -1, 2, true,"刀攻撃4"],
"刀攻撃下6" => [ 3, 2, 2, 2, 0, -1, 2, true,"刀攻撃6"],
"刀攻撃下6-2" => [ 3, 2, 5, 2, 0, -1, 2, true,"刀攻撃6"],
"刀攻撃下6-3" => [ 4, 0, 10, 2, 0, -1, 2, true,"刀攻撃10"],
"刀攻撃下7" => [ 3, 2, 5, 2, 0, -1, 2, true,"刀攻撃7"],
"刀攻撃下8" => [ 3, 2, 5, 2, 0, -1, 2, true,"刀攻撃8"],
"刀攻撃下9" => [ 3, 2, 2, 2, 0, -1, 2, true,"刀攻撃9"],
"刀攻撃下10" => [ 3, 2, 0, 2, 0, -1, 2, true,""],
"刀攻撃下11" => [ 3, 2, 2, 2, 0, -1, 2, true,"刀攻撃11"],
"接武器" => [ 2, 2, 5, 2, 0, -1, 2, true,"刀攻撃8"],
"刀攻撃下12" => [ 5, 1, 1, 2, 0, -1, 2, true,"刀攻撃"],
"刀攻撃ジャンプ" => [ 2, 1, 8, 2, 7, -1, 2, true,"刀攻撃"],
"武器構え待機" => [ 3, 0, 2, 2, 0, 0, 2, true,""],
"武器構え待機2" => [ 3, 0, 2, 2, 0, 0, 2, true,"掲げ4"],
"武器掲げ2" => [ 3, 1, 2, 2, 14, -1, 2, true,"掲げ2"],
"武器掲げ3" => [ 3, 1, 2, 2, 14, -1, 2, true,"掲げ3"],
"武器掲げ4" => [ 3, 1, 2, 2, 5, -1, 2, true,"掲げ2"],
"魔法詠唱" => [ 3, 3, 6, 0, 0, -1, 0, true,"持武器3" ],
"ピンチ待機" => [ 1, 2, 15, 0, 0, -1, 0, true,"" ],
"ピンチ待機-法" => [ 1, 2, 15, 0, 0, -1, 0, true,"持武器3" ],
"後ろ回避" => [ 2, 1, 8, 2, 1, -1, 0, true,"" ],
"後ろ回避2" => [ 3, 1, 8, 2, 1, -1, 0, true,"" ],
"後ろ回避3" => [ 3, 1, 8, 2, 1, -1, 0, true,"持武器3" ],
"後ろ回避武器あり"=> [ 2, 1, 8, 2, 1, -1, 0, true,"掲げ2" ],
"勝利待機" => [ 2, 0, 10, 2, 0, -1, 0, true,"持武器" ],
"勝利待機2" => [ 4, 2, 13, 2, 0, -1, 0, true,"持武器" ],
"装榴弹" => [ 2, 0, 5, 2, 0, -1, 0, true,"銃攻撃8-4" ],
"装弹夹" => [ 6, 2, 5, 2, 0, -1, 0, true,"銃攻撃8-8" ],
"待機2" => [ 1, 0, 15, 0, 0, -1, 0, true,"持武器" ],
"枪攻击动作" => [ 3, 0, 1, 2, 0, -1, 2, true,"枪攻击"],
"鄙视动作" => [ 4, 3, 15, 2, 0, -1, 2, true,"持武器"],
"突刺攻击-真" => [ 3, 1, 6, 2, 0, -1, 2, true,"突刺攻击"],
"突刺攻击-真2" => [ 3, 0, 1, 2, 0, -1, 2, true,"突刺攻击2"],
"突刺攻击-真3" => [ 3, 0, 20, 2, 0, -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, 5,true,-135, 65, 4,false, 1, 1, -7, -4,false],
"防御时武器" => [ -15, -15,true,0, 0, 1,false, 1, 1, -7, -4,false],
"縦振り3" => [ 3, 9,true,-225, 45, 4,false, 1, 1, -7, -4,false],
"縦振り2" => [ -30, 0,false, 180, 220, 4,false, 1, 1, -7, -4,false],
"弓攻撃" => [ 16, 8,true, -135, 45, 4,false, 1, 1, -4, -6,false],
"弓攻撃-空" => [ 16, 8,true, 45, 45, 4,false, 1, 1, -4, -6,false],
"弓攻撃2" => [ 16, 8,true, -135, -10, 4,false, 1, 1, -4, -6,false],
"銃攻撃" => [ 3, 8,true, 120, 30, 4,false, 1, 1, -4, -6,false],
"縦振りL" => [ 2, 8,false,-135, 75, 4,false, 1, 1, -4, -6,true],
"剣突き刺し" => [ 6, 5,false,-135, 120, 4,false, 1, 1, -4, -6,false],
"下半回転" => [ 6, 8,false, 270, 45, 4,false, 1, 1, -4, -6,false],
"刀攻撃" => [ 0, 0,false, 270, 120, 4,true, 1, 1, -4, -6,false],
"旋转打武器" => [ 0, 0,false, 0, 360, 4,true, 1, 1, -4, -6,false],
"刀攻撃2" => [ 0, 0,false,-135, 120, 4,true, 1, 1, -4, -6,false],
"高空刺-武器" => [ -5, 0,true, 90, 135, 4,false, 1, 1, -4, -6,false],
"刀攻撃3" => [ 0, 0,false, -270, 0, 4,true, 1, 1, -4, -6,false],
"刀攻撃5" => [ 0, 0,false, 0, 20, 4,true, 1, 1, -4, -6,false],
"刀攻撃4" => [ 0, 10,false, 0, -270, 4,true, 1, 1, -4, -6,false],
"刀攻撃6" => [ 0, 10,false, 120, 240, 4,true, 1, 1, -4, -6,false],
"刀攻撃10" => [ 0, 10,false, 0, 0, 4,true, 1, 1, -4, -6,false],
"刀攻撃8" => [ 10, 10,false, 300, 300, 4,true, 1, 1, -4, -6,false],
"刀攻撃9" => [ 10, 10,false, 300, 90, 4,true, 1, 1, -4, -6,false],
"刀攻撃7" => [ -50, 10,false, 360, -360, 4,true, 1, 1, -4, -6,false],
"刀攻撃11" => [ 0, 0,false, 270, 80, 4,true, 1, 1, -4, -6,false],
"上半回転" => [ 6, 8,false, 45,-100, 4,false, 1, 1, -4, -6,false],
"武器一回転" => [ -2, 10,false, 260,-100, 4,false, 1, 1, -4, -6,false],
"掲げ" => [ 6, -4,false, 90, -45, 4,false, 1, 1, -4, -6,false],
"掲げ2" => [ -2, 10,true, 90, -15, 4,false, 1, 1, -4, -6,false],
"掲げ3" => [ -2, 13,true, 90, -15, 4,false, 1, 1, -4, -6,false],
"掲げ4" => [ -2, 13,false,-135,-145, 4,false, 1, 1, -4, -6,false],
"持武器" => [ 0, -1,false, 60, 60, 0,false, 1, 1, 0, 0,false],
"持武器2" => [ -1, -1,false, 70, 70, 4,false, 1, 1, 0, 0,false],
"持武器3" => [ 5, -1,false, 315, 315, 3,false, 1, 1, 0, 0,false],
"持武器4" => [ 5, -1,false, 315, 315, 2,false, 1, 1, 0, 0,false],
"銃攻撃2" => [ 3, 8,true, 45, 45, 4,false, 1, 1, -4, -6,false],
"銃攻撃3" => [ 3, 8,true, 50, 20, 4,false, 1, 1, -4, -6,false],
"銃攻撃4" => [ -5, 8,true, 120, 10, 4,false, 1, 1, -4, -6,false],
"銃攻撃5" => [ 7, 3,true, 100, 50, 4,false, 1, 1, -4, -6,false],
"銃攻撃6" => [ 7, 3,true, 50, 30, 4,false, 1, 1, -4, -6,false],
"銃攻撃7" => [ -35, 0,true, 0, -5, 0,false, 0, 0, 0, 0,false],
"銃攻撃8" => [ 7, 3,true, 50, 30, 4,false, 1, 1, -4, -6,false],
"銃攻撃8-4" => [ 7, 3,true, 45, 90, 4,false, 1, 1, -4, -6,false],
"銃攻撃8-6" => [ 7, 3,true, 90, 90, 4,false, 1, 1, -4, -6,false],
"銃攻撃8-7" => [ 7, 3,true, 90, 50, 4,false, 1, 1, -4, -6,false],
"銃攻撃8-8" => [ 7, 16,true, -45, -45, 4,false, 1, 1, -4, -6,false],
"銃攻撃8-5" => [ 7, 3,true, 20, 20, 4,false, 1, 1, -4, -6,false],
"銃攻撃8-2" => [ 7, 3,true, 45, 45, 4,false, 1, 1, -4, -6,false],
"銃攻撃9" => [ 7, 3,true, 30, 10, 4,false, 1, 1, -4, -6,false],
"銃攻撃10" => [ 7, 3,true, 20, 50, 4,false, 1, 1, -4, -6,false],
"銃攻撃11" => [ 7, 3,true, 90, 70, 4,false, 1, 1, -4, -6,false],
"枪专用" => [ -5, 8,true, 50, 10, 4,false, 1, 1, -4, -15,false],
"枪专用2" => [ 20, 15,true, 13, 13, 4,false, 1, 1, -4, -15,false],
"枪攻击" => [ 6, 5,true, 45, 40, 4,false, 1, 1, -7, -4,false],
"突刺攻击" => [ 15, 8,true, 45, 45, 4,false, 1, 1, -4, -6,false],
"突刺攻击2" => [ -1, 8,true, 45, 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, "待機(固定)"],
"浮空暴击" => [ 10, -10, -20, 8, 2, 0, ""],
"戦闘開始前の位置へ" => [ 0, 54, 0, 1, 0, 0, "前進-空"],
"キャラ消し" => [ 0, 0, 0, 1, 0, 0, "キャラ消し待機"],
"一歩前移動" => [ 3, -32, 0, 18, -1, 0, "前進"],
"一歩前移動-法" => [ 3, -32, 0, 18, -1, 0, "前進3"],
"一歩前移動-慢" => [ 3, -32, 0, 35, -1, 0, "前進"],
"一歩前移動2" => [ 3, -32, 0, 35, -1, 0, "前進"],
"高速背射动作" => [ 1, -80, 0, 20, -1, 0, "特殊后退"],
"一歩後移動" => [ 0, 32, 0, 8, -1, 0, "前進"],
"一歩後移動2" => [ 0, 32, 0, 18, -1, 0, "刀攻撃下6"],
"后座力" => [ 0, 15, 0, 1, -1, 0, "前進"],
"后座力(小)" => [ 0, 8, 0, 1, -1, 0, "前進"],
"三人攻撃移動1" => [ 2, 410, 96, 18, -1, 0, "前進"],
"三人攻撃移動2" => [ 2, 440, 145, 18, -1, 0, "前進"],
"三人攻撃移動3" => [ 2, 410, 212, 18, -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, 10, 0, 4, -1, 0, "ダメージ"],
"押し出す" => [ 0, 12, 0, 1, 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, "待機(固定)"],
"高空刺" => [ 0, -25, 0, 25, 0, -5, "高空刺动作"],
"高空刺2" => [ 0, 50, 0, 25, 0, -5, "高空刺动作"],
"目標移動" => [ 1, 0, 0, 18, -1, 0, "前進"],
"测试目標移動" => [ 1, 0, 0, 18, -1, 0, "测试前進"],
"目標前移動" => [ 1, 24, 0, 12, -1, 0, "前進"],
"目標前移動2" => [ 1, 200, 0, 12, -1, 0, "前進"],
"目標前移動3" => [ 1, -50, -200, 24, -1, 0, "前進"],
"目標前移動4" => [ 1, 250, 0, 12, -1, 0, "前進"],
"目標前移動5" => [ 1, 100, 0, 12, -1, 0, "前進"],
"目標高速移動" => [ 1, 0, -12, 8, 0, -2, "前進"],
"目標前移動-战" => [ 1, 24, 0, 24, -1, 0, "持武器前進"],
"目標前移動-法" => [ 1, 70, 0, 24, -1, 0, "前進3"],
"目標前移動-法2" => [ 1, 100, 0, 24, -1, 0, "前進3"],
"目標前移動-弓" => [ 1, 18, 0, 24, -1, 0, "前進"],
"目標の背後へ高速移動"=> [ 1, 24, 0, 12, -1, 0, "前進"],
"目標前へ高速移動" => [ 1, 24, 0, 5, -5, 0, "前進"],
"目標前高速移動" => [ 1, 24, 0, 1, 0, 0, "前進"],
"目標前高速移動3" => [ 1, 24, 0, 5, 0, 0, "前進"],
"目標前高速移動4" => [ 1, -70, 0, 5, 0, 0, "前進"],
"目標前高速移動5" => [ 1, 150, 0, 1, 0, 0, "前進"],
"目標前高速移動2" => [ 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, "前進3"],
"一歩後ジャンプ" => [ 0, 32, 0, 8, -1, -4, "後退"],
"バックジャンプ" => [ 0, 32, 0, 24, -1, -4, "後ろ回避"],
"バックジャンプ-法" => [ 0, 32, 0, 24, -1, -4, "後ろ回避3"],
"バックジャンプ2" => [ 0, 5, 0, 1, -1, -4, "銃で攻撃8-2"],
"空翻" => [ 0, 10, -10, 24, -1, -4, "後ろ回避"],
"空翻2" => [ 0, 30, 0, 24, -1, -4, "空翻动作"],
"空翻3" => [ 0, 10, 0, 24, -1, -4, "空翻动作2"],
"バックジャンプ反" => [ 0, -32, 0, 24, -1, -4, "後ろ回避"],
"バックジャンプ遠" => [ 0, 64, 0, 24, -1, -4, "後ろ回避"],
"バックジャンプ超遠" => [ 0, 155, 0, 24, -1, -4, "後ろ回避"],
"空中投掷" => [ 0, 100, 0, 12, -1, -4, "投掷姿势4"],
"空中投掷2" => [ 0, 155, 0, 24, -1, -4, "召唤毒刃"],
"空中投掷3" => [ 0, 145, 0, 24, -1, -4, "召唤毒刃"],
"バックジャンプ遠-法" => [ 0, 64, 0, 24, -1, -4, "後ろ回避3"],
"バックジャンプ遠2" => [ 0, 100, 0, 100, -1, -4, "後ろ回避"],
"バックジャンプ遠反" => [ 0, -40, 0, 24, -1, -4, "後ろ回避"],
"バックジャンプ遠反2" => [ 0, -70, 0, 24, -1, -4, "後ろ回避"],
"バックジャンプ遠反3" => [ 0, -70, 0, 15, -1, -4, "投掷姿势4"],
"高速バックジャンプ" => [ 0, 32, 0, 10, 2, -4, "後ろ回避"],
"バックスタッブ" => [ 0, 148, 0, 15, 5, -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, 21, 1, -5, "武器振り攻撃遅"],
"前ジャンプ叩き2" => [ 1, 12, 0, 12, 1, -5, "武器振り攻撃遅2"],
"前ジャンプ叩き3" => [ 1, 12, 0, 21, 0, -5, "钝器挥舞2"],
"前ジャンプ叩き4" => [ 1, 12, 0, 30, 0, -5, "钝器挥舞2"],
"前ジャンプ叩き5" => [ 1, 12, 0, 30, 0, -5, "钝器挥舞3"],
"後方に払い上げ" => [ 1, 12, 0, 16, 0, -3, "武器振り攻撃"],
"その場ジャンプ叩き" => [ 1, 0, 0, 16, 0, -5, "武器振り攻撃"],
"その場ジャンプ斬り" => [ 1, 40, 0, 40, -10, -6, "武器構え待機"],
"その場ジャンプ斬り2" => [ 1, 36, 0, 50, 10, -5, "武器構え待機2"],
"刀攻撃ジャンプ斬り" => [ 1, 84, 0, 30, -9, -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, 128, 0, 16, 2, 0, "武器振り攻撃"],
"移动目标身后" => [ 1, -64, 0, 16, 0, 0, "前進"],
"移动目标身后2" => [ 1, 20, 0, 16, 0, 0, "前進"],
"前ジャンプ叩き" => [ 1, 12, 0, 12, -1, -5, "武器振り攻撃遅"],
#--------------------------------------------------------------------------
# ● バトラー浮遊 バトラーを影から離します
#--------------------------------------------------------------------------
# 判別…判別に使うので、すべて"float"で統一してください。
# 始高…浮遊開始の高さ。符号が負で影より高く、正だと低くなります。
# 終高…浮遊終了の高さ。移動系のアクションがあるまでこの高さを維持します。
# 時間…浮遊にかける時間。
# アニメ…浮遊に利用するバトラーアニメ名。
# 判別 始高 終高 時間 アニメ
"低空浮遊中0" => ["float", -22, -20, 2, "待機(固定)"],
"低空浮遊中20" => ["float", -20, -18, 2, "待機(固定)"],
"低空浮遊中30" => ["float", -18, -20, 2, "待機(固定)"],
"低空浮遊中40" => ["float", -20, -22, 2, "待機(固定)"],
"ジャンプ停止0" => ["float", 0, -80, 4, "待機(固定)"],
"ジャンプ着地0" => ["float", -80, 0, 4, "待機(固定)"],
"持ち上げられる0" => ["float", 0, -30, 4, "待機(固定)"],
"魔法浮空" => ["float", -40, -38, 2, "浮空待機"],
"浮空升起" => ["float", 0, -40, 8, "浮空待機"],
"浮空着地" => ["float", -38, 0, 4, "待機(固定)"],
#--------------------------------------------------------------------------
# ● 座標リセット 元の位置に戻る移動設定
#--------------------------------------------------------------------------
# 判別…判別に使うので、すべて"reset"で統一してください。
# 時間…戻るのにかける時間。同じ時間でも距離が大きいと移動速度が変わります。
# 加速…正は加速、負は減速。数値分1フレームの移動距離が増減しつづけます。
# ジャンプ…ジャンプ軌道。正は下、負は上軌道。0はジャンプしません。
# アニメ…その移動に利用するバトラーアニメ名を入れます。
# 判別 時間 加速 ジャンプ アニメ
"座標リセット" => ["reset", 22, 0, 0, "前進"],
"座標リセット-开始" => ["reset", 22, 0, 0, "前進-空"],
"座標リセット-法" => ["reset", 22, 0, 0, "前進3"],
"座標リセット-战" => ["reset", 22, 0, 0, "持武器前進"],
"後退リセット" => ["reset", 22, 0, 0, "前進"],
"後退リセット-法" => ["reset", 22, 0, 0, "前進3"],
"後退リセット-战" => ["reset", 22, 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, "座標リセット", "投げつけられる"],
"小吹き飛ばし" => ["単発", 0, "座標リセット", "押し出す"],
"右回し" => ["単発", 0, "座標リセット", "右回り1回転"],
"縦にぺしゃんこ" => ["単発", 0, "座標リセット", "縦縮み"],
"着弾1" => ["単発", 0, "座標リセット", "対象から自身へ1"],
"味方持ち上げ" => ["単発", 0, "", "持ち上げられる"],
"地すり残月で攻撃" => ["通し", -304, "座標リセット", "地すり残月"],
"三人で攻撃1" => ["通し", -301, "座標リセット", "乱れ雪月花1"],
"三人で攻撃2" => ["通し", -302, "座標リセット", "乱れ雪月花2"],
"不動剣で攻撃1" => ["通し", -307, "座標リセット", "不動剣1"],
"不動剣で攻撃2" => ["通し", -306, "座標リセット", "不動剣2"],
#--------------------------------------------------------------------------
# ● ターゲット変更 バトラーの現在ターゲットしている対象を変えます
#--------------------------------------------------------------------------
# ※あくまでスプライトアクション上のターゲットを変えるだけで、戦闘上での
# ターゲットは変更されません。戦闘行動中のバトラーだけが実行できます。
# 判別…判別に使うので、すべて"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],
"桜華狂咲に派生" => ["der", 100, true, 420],
"雨流狂落斬に派生" => ["der", 100, true, 421],
#--------------------------------------------------------------------------
# ● アクション条件 条件を設定し、満たされなかったら以降の全行動を中断します
#--------------------------------------------------------------------------
# 判別…判別に使うので、すべて"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, 38, 1],
"三人攻撃条件確認" => ["nece", 3, 0, 39, 2],
"四人攻撃条件確認" => ["nece", 3, 0, 19, 3],
"浮遊ステート確認" => ["nece", 0, 0, 17, 1],
"ネコに変身してるか"=> ["nece", 0, 0, 20, 1],
"死亡確認" => ["nece", 1, 0, 1, 1],
#--------------------------------------------------------------------------
# ● バトラー回転 画像を回転。反転と違い、武器アクションは反映されません
#--------------------------------------------------------------------------
# 判別…判別に使うので、すべて"angle"で統一してください。
# 時間…回転にかける時間。
# 始度…回転開始時の角度。0~360度を指定。正が半時計周り、負が時計周り。
# 終度…回転終了時の角度。0~360度を指定。上記ともにエネミーは逆計算になります。
# 復帰…trueにすると終了と同時に通常角度に戻る。falseはアクション中そのまま。
# 判別 時間 始度 終度 復帰
"倒れたまま" => ["angle", 1, 0, 0,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", 11, 1, false,false, false],
"対象アニメ2" => ["anime", -1, 1, true,false, false],
"雷击" => ["anime", 35, 1, false,false, false],
"冰冻" => ["anime", 26, 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],
"歼灭之炎" => ["anime", 89, 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],
"白羽之光4" => ["anime", 620, 1, 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", 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", 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", **, 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", **, 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],
"异次元" => ["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, 1, 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],
"雷暴2" => ["anime", 36, 1, 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, 0, false,false, false],
"斩击2" => ["anime", 316, 0, 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", 329, 0, false,false, false],
"背射2" => ["anime", 330, 1, false,false, false],
"斩击7" => ["anime", 332, 0, false,false, false],
"神剑" => ["anime", 335, 0, false,false, false],
"斩击8" => ["anime", 336, 1, false,false, false],
"碎血" => ["anime", 337, 0, false,false, false],
"碎血2" => ["anime", 340, 0, false,false, false],
"碎血3" => ["anime", 341, 1, false,false, false],
"重箭" => ["anime", 343, 0, false,false, false],
"重箭2" => ["anime", 344, 1, false,false, false],
"光箭" => ["anime", 345, 0, false,false, false],
"光箭2" => ["anime", 346, 0, false,false, false],
"背射3" => ["anime", 347, 0, false,false, false],
"天空射" => ["anime", 348, 0, false,false, false],
"天空射2" => ["anime", 349, 1, false,false, false],
"天空射3" => ["anime", 350, 1, false,false, false],
"天空射4" => ["anime", 351, 1, false,false, false],
"光剑" => ["anime", 352, 0, false,false, false],
"光剑2" => ["anime", 353, 1, false,false, false],
"光剑3" => ["anime", 354, 1, false,false, false],
"光剑4" => ["anime", 355, 1, false,false, false],
"恢复" => ["anime", 356, 0, false,false, false],
"巨剑" => ["anime", 358, 0, false,false, false],
"巨剑2" => ["anime", 359, 0, false,false, false],
"巨剑3" => ["anime", 360, 1, false,false, false],
"神恩" => ["anime", 212, 1, false,false, false],
"恢复2" => ["anime", 363, 0, false,false, false],
"霰弹" => ["anime", 364, 0, false,false, false],
"霰弹2" => ["anime", 365, 0, false,false, false],
"霰弹3" => ["anime", 366, 0, false,false, false],
"狙击" => ["anime", 367, 0, false,false, false],
"狙击2" => ["anime", 368, 0, false,false, false],
"钝击" => ["anime", 235, 1, false,false, false],
"剑气爆破" => ["anime", 371, 0, false,false, false],
"剑气爆破2" => ["anime", 372, 0, false,false, false],
"剑气爆破3" => ["anime", 369, 0, false,false, false],
"燃烧" => ["anime", 373, 1, false,false, false],
"烧尽" => ["anime", 374, 0, false,false, false],
"烧尽2" => ["anime", 375, 0, false,false, false],
"魔法阵" => ["anime", 342, 0, false,false, false],
"火魔法阵" => ["anime", 376, 0, false,false, false],
"火魔法阵2" => ["anime", 377, 0, false,false, false],
"火魔法阵3" => ["anime", 378, 0, false,false, false],
"火魔法阵4" => ["anime", 380, 0, false,false, false],
"冰剑" => ["anime", 381, 1, false,false, false],
"水魔法阵" => ["anime", 382, 0, false,false, false],
"水魔法阵2" => ["anime", 383, 0, false,false, false],
"冰魄" => ["anime", 384, 1, false,false, false],
"寒冰地狱" => ["anime", 385, 0, false,false, false],
"寒冰地狱2" => ["anime", 386, 0, false,false, false],
"寒冰地狱3" => ["anime", 387, 0, false,false, false],
"寒冰地狱4" => ["anime", 388, 1, false,false, false],
"大型火球" => ["anime", 389, 0, false,false, false],
"大型火球2" => ["anime", 390, 0, false,false, false],
"大型火球3" => ["anime", 391, 0, false,false, false],
"熔岩爆破" => ["anime", 392, 1, false,false, false],
"半月斩" => ["anime", 397, 0, false,false, false],
"半月斩2" => ["anime", 398, 0, false,false, false],
"半月斩3" => ["anime", 399, 0, false,false, false],
"突刺特效" => ["anime", 400, 0, false,false, false],
"直线冲刺" => ["anime", 401, 0, false,false, false],
"直线冲刺2" => ["anime", 402, 0, false,false, false],
"毁灭冲刺" => ["anime", 403, 0, false,false, false],
"毁灭冲刺2" => ["anime", 404, 0, false,false, false],
"召唤岩石" => ["anime", 408, 1, 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", 421, 1, false,false, false],
"血" => ["anime", 422, 1, false,false, false],
"血2" => ["anime", 423, 1, false,false, false],
"黑魔法" => ["anime", 255, 0, false,false, false],
"重力爆炸" => ["anime", 424, 0, false,false, false],
"黑魔法2" => ["anime", 425, 0, false,false, false],
"次元裂缝" => ["anime", 426, 0, false,false, false],
"次元裂缝2" => ["anime", 428, 0, false,false, false],
"黑魔法3" => ["anime", 429, 0, false,false, false],
"黑洞击中" => ["anime", 427, 1, false,false, false],
"黑魔法4" => ["anime", 431, 0, false,false, false],
"黑魔法5" => ["anime", 432, 0, false,false, false],
"凝点压缩" => ["anime", 433, 0, false,false, false],
"凝点压缩2" => ["anime", 434, 0, false,false, false],
"混沌之枪" => ["anime", 437, 1, false,false, false],
"黑魔法6" => ["anime", 439, 0, false,false, false],
"黑闪电" => ["anime", 440, 1, false,false, false],
"黑闪电2" => ["anime", 441, 1, false,false, false],
"黑闪电3" => ["anime", 442, 1, false,false, false],
"黑巨剑" => ["anime", 444, 0, false,false, false],
"黑魔法7" => ["anime", 443, 0, false,false, false],
"召唤巨剑" => ["anime", 445, 0, false,false, false],
"觉醒1" => ["anime", 436, 0, false,false, false],
"裁决之力" => ["anime", 447, 0, false,false, false],
"裁决之力2" => ["anime", 449, 0, false,false, false],
"黑魔法8" => ["anime", 448, 0, false,false, false],
"魔法镜面待机" => ["anime", 452, 0, false,false, false],
"剧毒地带" => ["anime", 453, 1, false,false, false],
"开枪" => ["anime", 455, 0, false,false, false],
"开枪2" => ["anime", 456, 0, false,false, false],
"开枪3" => ["anime", 457, 0, false,false, false],
"高速背射" => ["anime", 459, 0, false,false, false],
"高速背射2" => ["anime", 461, 0, false,false, false],
"高速背射3" => ["anime", 462, 0, false,false, false],
"魔光穿甲弹" => ["anime", 463, 0, false,false, false],
"瞬踢" => ["anime", 464, 0, false,false, false],
"瞬踢2" => ["anime", 465, 0, false,false, false],
"向下射击" => ["anime", 466, 0, false,false, false],
"向下射击2" => ["anime", 467, 0, false,false, false],
"向下射击3" => ["anime", 468, 0, false,false, false],
"枪旋转" => ["anime", 469, 0, false,false, false],
"暗开枪" => ["anime", 470, 0, false,false, false],
"枪口烟" => ["anime", 471, 0, false,false, false],
"映月" => ["anime", 473, 0, false,false, false],
"终结破坏" => ["anime", 475, 0, false,false, false],
"终结破坏2" => ["anime", 476, 0, false,false, false],
"终结破坏3" => ["anime", 477, 0, false,false, false],
"终结破坏4" => ["anime", 478, 0, false,false, false],
"终结破坏5" => ["anime", 479, 0, false,false, false],
"M134" => ["anime", 480, 0, false,false, false],
"M1342" => ["anime", 481, 0, false,false, false],
"毒蛇追踪炮" => ["anime", 483, 0, false,false, false],
"毒蛇追踪炮2" => ["anime", 484, 0, false,false, false],
"毒蛇追踪炮3" => ["anime", 485, 0, false,false, false],
"毒蛇追踪炮4" => ["anime", 486, 1, false,false, false],
"毒蛇追踪炮5" => ["anime", 487, 1, false,false, false],
"毒蛇追踪炮6" => ["anime", 488, 0, false,false, false],
"榴弹发射" => ["anime", 482, 0, false,false, false],
"混沌轰炸" => ["anime", 489, 0, false,false, false],
"混沌轰炸2" => ["anime", 490, 0, false,false, false],
"混沌轰炸3" => ["anime", 491, 0, false,false, false],
"混沌轰炸4" => ["anime", 492, 0, false,false, false],
"混沌轰炸5" => ["anime", 493, 1, false,false, false],
"消能射击" => ["anime", 496, 0, false,false, false],
"针刺射击" => ["anime", 497, 1, false,false, false],
"针刺装弹" => ["anime", 498, 0, false,false, false],
"换弹夹" => ["anime", 499, 0, false,false, false],
"换弹夹2" => ["anime", 500, 0, false,false, false],
"魔光瞬斩" => ["anime", 502, 0, false,false, false],
"破碎十字" => ["anime", 504, 1, false,false, false],
"破碎十字2" => ["anime", 505, 0, false,false, false],
"破碎十字3" => ["anime", 506, 0, false,false, false],
"破碎十字4" => ["anime", 507, 1, false,false, false],
"破碎十字5" => ["anime", 508, 0, false,false, false],
"毁灭气息" => ["anime", 509, 0, false,false, false],
"毁灭气息2" => ["anime", 510, 0, false,false, false],
"毁灭气息3" => ["anime", 512, 1, false,false, false],
"毁灭气息4" => ["anime", 435, 1, false,false, false],
"毁灭拔刀" => ["anime", 513, 1, false,false, false],
"毁灭拔刀2" => ["anime", 514, 0, false,false, false],
"毁灭拔刀3" => ["anime", 515, 0, false,false, false],
"毁灭拔刀4" => ["anime", 516, 1, false,false, false],
"重力爆破" => ["anime", 518, 0, false,false, false],
"重力回旋" => ["anime", 519, 0, false,false, false],
"重力回旋2" => ["anime", 520, 1, false,false, false],
"重力回旋3" => ["anime", 521, 1, false,false, false],
"重力回旋4" => ["anime", 522, 1, false,false, false],
"重力回旋5" => ["anime", 523, 0, false,false, false],
"毁灭石像" => ["anime", 524, 1, false,false, false],
"毁灭石像2" => ["anime", 525, 0, false,false, false],
"重力引爆" => ["anime", 526, 0, false,false, false],
"重力引爆2" => ["anime", 527, 0, false,false, false],
"重力引爆3" => ["anime", 528, 0, false,false, false],
"重力引爆4" => ["anime", 529, 0, false,false, false],
"血之代价" => ["anime", 531, 0, false,false, false],
"血之代价2" => ["anime", 532, 0, false,false, false],
"时间收割" => ["anime", 534, 0, false,false, false],
"时间收割2" => ["anime", 533, 0, false,false, false],
"粉碎" => ["anime", 537, 0, false,false, false],
"粉碎2" => ["anime", 538, 0, false,false, false],
"粉碎3" => ["anime", 536, 1, false,false, false],
"雷霆一击" => ["anime", 539, 0, false,false, false],
"雷霆一击2" => ["anime", 541, 0, false,false, false],
"雷霆一击3" => ["anime", 542, 0, false,false, false],
"死亡棒球" => ["anime", 543, 0, false,false, false],
"死亡棒球2" => ["anime", 545, 0, false,false, false],
"死亡棒球3" => ["anime", 546, 0, false,false, false],
"死亡棒球4" => ["anime", 547, 0, false,false, false],
"灰烬粉碎" => ["anime", 548, 0, false,false, false],
"灰烬粉碎2" => ["anime", 551, 0, false,false, false],
"灰烬粉碎3" => ["anime", 552, 1, false,false, false],
"灰烬粉碎4" => ["anime", 553, 1, false,false, false],
"灰烬粉碎5" => ["anime", 554, 1, false,false, false],
"灰烬粉碎6" => ["anime", 555, 0, false,false, false],
"灰烬粉碎7" => ["anime", 556, 0, false,false, false],
"灰烬粉碎击中" => ["anime", 549, 1, false,false, false],
"灰烬粉碎击中2" => ["anime", 550, 1, false,false, false],
"旋转锤" => ["anime", 557, 0, false,false, false],
"暴风锤" => ["anime", 559, 0, false,false, false],
"暴风锤2" => ["anime", 560, 0, false,false, false],
"暴风锤3" => ["anime", 561, 0, false,false, false],
"熔岩锤" => ["anime", 562, 0, false,false, false],
"熔岩锤2" => ["anime", 563, 0, false,false, false],
"范围冲击" => ["anime", 565, 0, false,false, false],
"范围冲击2" => ["anime", 566, 0, false,false, false],
"高速粉碎" => ["anime", 567, 0, false,false, false],
"高速粉碎2" => ["anime", 568, 0, false,false, false],
"高速粉碎3" => ["anime", 569, 1, false,false, false],
"高速粉碎4" => ["anime", 570, 1, false,false, false],
"高速粉碎5" => ["anime", 571, 1, false,false, false],
"极度鄙视" => ["anime", 572, 0, false,false, false],
"燃烧怒火" => ["anime", 573, 0, false,false, false],
"燃烧怒火2" => ["anime", 574, 0, false,false, false],
"自然毁灭" => ["anime", 577, 0, false,false, false],
"自然毁灭2" => ["anime", 578, 0, false,false, false],
"天空怒吼" => ["anime", 581, 0, false,false, false],
"天空怒吼2" => ["anime", 582, 0, false,false, false],
"雷霆重击" => ["anime", 585, 0, false,false, false],
"雷霆重击2" => ["anime", 586, 0, false,false, false],
"残忍突刺" => ["anime", 588, 0, false,false, false],
"雷霆突袭" => ["anime", 592, 1, false,false, false],
"充电突刺" => ["anime", 590, 0, false,false, false],
"充电突刺2" => ["anime", 593, 0, false,false, false],
"天空挥舞" => ["anime", 594, 1, false,false, false],
"天空挥舞2" => ["anime", 595, 1, false,false, false],
"天空挥舞3" => ["anime", 596, 1, false,false, false],
"天空挥舞4" => ["anime", 597, 1, false,false, false],
"天空挥舞5" => ["anime", 598, 0, false,false, false],
"天空挥舞6" => ["anime", 589, 1, false,false, false],
"毁灭剑气" => ["anime", 599, 0, false,false, false],
"毁灭剑气2" => ["anime", 600, 0, false,false, false],
"毁灭剑气3" => ["anime", 601, 0, false,false, false],
"毁灭剑气4" => ["anime", 602, 0, false,false, false],
"毁灭剑气5" => ["anime", 603, 1, false,false, false],
"雷霆半月" => ["anime", 604, 0, false,false, false],
"雷霆半月2" => ["anime", 605, 0, false,false, false],
"雷霆半月3" => ["anime", 606, 0, false,false, false],
"雷霆半月4" => ["anime", 607, 0, false,false, false],
"湮灭冲刺" => ["anime", 608, 0, false,false, false],
"湮灭冲刺2" => ["anime", 609, 0, false,false, false],
"湮灭冲刺3" => ["anime", 611, 0, false,false, false],
"愤怒中的绝望" => ["anime", 612, 0, false,false, false],
"愤怒中的绝望2" => ["anime", 613, 0, false,false, false],
"愤怒中的绝望3" => ["anime", 614, 0, false,false, false],
"致命斩击" => ["anime", 615, 0, false,false, false],
"光箭攻击" => ["anime", 616, 0, false,false, false],
"光能重箭" => ["anime", 618, 0, false,false, false],
"光能散箭" => ["anime", 620, 0, false,false, false],
"魔化冰箭" => ["anime", 623, 0, false,false, false],
"魔化冰箭2" => ["anime", 624, 0, false,false, false],
"光能突袭箭" => ["anime", 625, 0, false,false, false],
"高压光箭" => ["anime", 627, 0, false,false, false],
"高压光箭2" => ["anime", 628, 0, false,false, false],
"极速背射" => ["anime", 630, 0, false,false, false],
"极速背射2" => ["anime", 631, 0, false,false, false],
"极速背射3" => ["anime", 632, 0, false,false, false],
"极速背射4" => ["anime", 633, 0, false,false, false],
"多重突袭" => ["anime", 634, 0, false,false, false],
"多重突袭2" => ["anime", 635, 1, false,false, false],
"多重突袭3" => ["anime", 636, 1, false,false, false],
"多重突袭4" => ["anime", 637, 1, false,false, false],
"多重突袭5" => ["anime", 638, 1, false,false, false],
"多重突袭6" => ["anime", 639, 1, false,false, false],
"多重突袭7" => ["anime", 640, 0, false,false, false],
"天空神箭" => ["anime", 641, 0, false,false, false],
"天空神箭2" => ["anime", 642, 0, false,false, false],
"天空神箭3" => ["anime", 643, 0, false,false, false],
"能源补充" => ["anime", 645, 0, false,false, false],
"能源补充2" => ["anime", 646, 0, false,false, false],
"极度脑残" => ["anime", 647, 1, false,false, false],
"极度脑残2" => ["anime", 648, 0, false,false, false],
"星辰的裁决" => ["anime", 651, 0, false,false, false],
"十字斩" => ["anime", 653, 0, false,false, false],
"十字斩2" => ["anime", 654, 0, false,false, false],
"十字斩3" => ["anime", 655, 0, false,false, false],
"雷霆十字斩" => ["anime", 656, 0, false,false, false],
"雷霆十字斩2" => ["anime", 657, 0, false,false, false],
"雷霆十字斩3" => ["anime", 658, 0, false,false, false],
"雷霆十字斩4" => ["anime", 659, 1, false,false, false],
"穿梭光剑" => ["anime", 660, 0, false,false, false],
"穿梭光剑2" => ["anime", 661, 1, false,false, false],
"穿梭光剑3" => ["anime", 662, 1, false,false, false],
"穿梭光剑4" => ["anime", 663, 1, false,false, false],
"湮灭圣剑" => ["anime", 664, 0, false,false, false],
"湮灭圣剑2" => ["anime", 665, 0, false,false, false],
"神圣制裁" => ["anime", 666, 1, false,false, false],
"神圣制裁2" => ["anime", 667, 1, false,false, false],
"圣光风暴" => ["anime", 668, 1, false,false, false],
"圣光风暴2" => ["anime", 669, 1, false,false, false],
"圣光风暴3" => ["anime", 670, 1, false,false, false],
"士气呐喊" => ["anime", 671, 0, false,false, false],
"力量反射" => ["anime", 673, 0, false,false, false],
"拯救之手" => ["anime", 675, 1, false,false, false],
"灰烬燃烧" => ["anime", 676, 1, false,false, false],
"灰烬燃烧2" => ["anime", 677, 1, false,false, false],
"灰烬燃烧3" => ["anime", 678, 1, false,false, false],
"强化火法阵" => ["anime", 679, 0, false,false, false],
"强化水法阵" => ["anime", 692, 0, false,false, false],
"烈焰灰烬" => ["anime", 680, 0, false,false, false],
"烈焰灰烬2" => ["anime", 681, 0, false,false, false],
"强化火法阵2" => ["anime", 682, 0, false,false, false],
"熔岩地带" => ["anime", 683, 0, false,false, false],
"地狱火柱" => ["anime", 684, 0, false,false, false],
"烈焰天罚" => ["anime", 685, 0, false,false, false],
"烈焰天罚2" => ["anime", 686, 0, false,false, false],
"烈焰天罚3" => ["anime", 687, 0, false,false, false],
"烈焰天罚4" => ["anime", 688, 0, false,false, false],
"烈焰天罚5" => ["anime", 689, 0, false,false, false],
"烈焰天罚6" => ["anime", 690, 0, false,false, false],
"魔化冰剑" => ["anime", 691, 1, false,false, false],
"急冻炸弹" => ["anime", 693, 0, false,false, false],
"急冻冰刺" => ["anime", 696, 0, false,false, false],
"急冻冰刺2" => ["anime", 697, 0, false,false, false],
"强化水法阵2" => ["anime", 698, 0, false,false, false],
"强化水法阵3" => ["anime", 699, 0, false,false, false],
"零度空间" => ["anime", 700, 0, false,false, false],
"零度空间2" => ["anime", 701, 0, false,false, false],
"半月锤" => ["anime", 706, 0, false,false, false],
"半月锤2" => ["anime", 710, 0, false,false, false],
"半月锤3" => ["anime", 709, 1, false,false, false],
"神圣粉碎" => ["anime", 707, 0, false,false, false],
"神圣粉碎2" => ["anime", 708, 0, false,false, false],
"天罚" => ["anime", 711, 0, false,false, false],
"法师防御" => ["anime", 712, 0, false,false, false],
"冲锋连射" => ["anime", 713, 0, false,false, false],
"冲锋连射2" => ["anime", 714, 0, false,false, false],
"冲锋连射3" => ["anime", 715, 0, false,false, false],
"雷击" => ["anime", 720, 1, false,false, false],
"粉碎冲撞" => ["anime", 726, 0, false,false, false],
"地震咆哮" => ["anime", 727, 0, false,false, false],
"地震咆哮2" => ["anime", 728, 0, false,false, false],
"神圣痛击" => ["anime", 732, 0, false,false, false],
"神圣痛击2" => ["anime", 733, 0, false,false, false],
"神圣痛击2" => ["anime", 733, 0, false,false, false],
"幻月粉碎" => ["anime", 735, 0, false,false, false],
"幻月粉碎2" => ["anime", 736, 0, false,false, false],
"审判雷暴" => ["anime", 737, 1, false,false, false],
"审判雷暴2" => ["anime", 738, 0, false,false, false],
"审判雷暴3" => ["anime", 739, 1, false,false, false],
"审判雷暴4" => ["anime", 740, 0, false,false, false],
"审判雷暴5" => ["anime", 741, 0, false,false, false],
"圣光湮灭" => ["anime", 742, 0, false,false, false],
"圣光湮灭2" => ["anime", 743, 0, false,false, false],
"圣光湮灭3" => ["anime", 744, 0, false,false, false],
"圣光湮灭4" => ["anime", 745, 0, false,false, false],
"小刀投掷" => ["anime", 747, 0, false,false, false],
"强力投掷" => ["anime", 749, 0, false,false, false],
"闪电投掷" => ["anime", 751, 0, false,false, false],
"星辰破裂" => ["anime", 753, 0, false,false, false],
"暗杀" => ["anime", 756, 0, false,false, false],
"暗杀2" => ["anime", 757, 0, false,false, false],
"暗杀3" => ["anime", 758, 0, false,false, false],
"夺命背击" => ["anime", 760, 0, false,false, false],
"夺命背击2" => ["anime", 761, 0, false,false, false],
"夺命背击3" => ["anime", 762, 0, false,false, false],
"夺命背击4" => ["anime", 763, 1, false,false, false],
"夺命背击5" => ["anime", 759, 1, false,false, false],
"夺命背击7" => ["anime", 754, 1, false,false, false],
"无影之刃" => ["anime", 764, 0, false,false, false],
"无影之刃2" => ["anime", 765, 1, false,false, false],
"无影之刃3" => ["anime", 766, 0, false,false, false],
"无影之刃4" => ["anime", 767, 0, false,false, false],
"机械毒刃" => ["anime", 769, 0, false,false, false],
"机械毒刃2" => ["anime", 770, 0, false,false, false],
"机械毒刃3" => ["anime", 771, 0, false,false, false],
"强化暗杀" => ["anime", 773, 0, false,false, false],
"强化暗杀2" => ["anime", 774, 0, false,false, false],
"强化暗杀3" => ["anime", 775, 0, false,false, false],
"强化暗杀4" => ["anime", 776, 1, false,false, false],
"强化暗杀5" => ["anime", 777, 1, false,false, false],
"强化暗杀6" => ["anime", 785, 0, false,false, false],
"机械毁灭" => ["anime", 778, 0, false,false, false],
"机械毁灭2" => ["anime", 779, 0, false,false, false],
"机械毁灭3" => ["anime", 780, 0, false,false, false],
"机械毁灭4" => ["anime", 781, 1, false,false, false],
"机械毁灭5" => ["anime", 782, 1, false,false, false],
"机械毁灭6" => ["anime", 783, 0, false,false, false],
"机械毁灭7" => ["anime", 784, 0, false,false, false],
"无影轰炸" => ["anime", 786, 0, false,false, false],
"无影轰炸2" => ["anime", 787, 0, false,false, false],
"无影轰炸3" => ["anime", 788, 0, false,false, false],
"无影轰炸4" => ["anime", 789, 0, false,false, false],
"无影轰炸5" => ["anime", 790, 0, false,false, false],
"无影轰炸6" => ["anime", 791, 0, false,false, false],
"重力球2" => ["anime", 796, 1, false,false, false],
"金属重压" => ["anime", 797, 0, false,false, false],
"时间屏障" => ["anime", 806, 0, false,false, false],
"时间屏障2" => ["anime", 807, 0, false,false, false],
"怒火" => ["anime", 840, 0, false,false, false],
"流星" => ["anime", 842, 0, false,false, false],
"流星2" => ["anime", 843, 0, false,false, false],
"灰烬之雨" => ["anime", 844, 0, false,false, false],
"灰烬之雨2" => ["anime", 845, 0, false,false, false],
"巨大流星" => ["anime", 846, 0, false,false, false],
"墓地炸弹" => ["anime", 851, 0, false,false, false],
"墓地炸弹2" => ["anime", 852, 0, false,false, false],
"死亡墓碑" => ["anime", 854, 1, false,false, false],
"一闪" => ["anime", 857, 0, false,false, false],
"一闪2" => ["anime", 858, 1, false,false, false],
"一闪3" => ["anime", 859, 0, false,false, false],
"黑色抹杀" => ["anime", 860, 0, false,false, false],
"黑色抹杀2" => ["anime", 861, 0, false,false, false],
"重力雨" => ["anime", 862, 0, false,false, false],
"重力雨2" => ["anime", 863, 0, false,false, false],
"重力雨3" => ["anime", 864, 0, false,false, false],
"火力支援" => ["anime", 865, 0, false,false, false],
"强力穿甲弹" => ["anime", 866, 0, false,false, false],
"炎龙碎" => ["anime", 871, 0, false,false, false],
"炎龙碎2" => ["anime", 872, 0, false,false, false],
"炎龙碎3" => ["anime", 873, 0, false,false, false],
"燃烧改" => ["anime", 874, 0, false,false, false],
"燃烧改2" => ["anime", 875, 0, false,false, false],
"烧尽改" => ["anime", 876, 0, false,false, false],
"烧尽改2" => ["anime", 877, 0, false,false, false],
"熔岩风暴" => ["anime", 878, 0, false,false, false],
"熔岩风暴2" => ["anime", 879, 0, false,false, false],
"灰烬燃烧改" => ["anime", 881, 0, false,false, false],
"灰烬燃烧改2" => ["anime", 882, 0, 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, 20, 0, 0, 0, 2,false,""],
"流星启动" => ["m_a", 378, 4, 0, 62, 0, 0, 0, 2,false,""],
"剑气爆破2-2" => ["m_a", 372, 4, 0, 50, 0, 0, 0, 2,false,""],
"毁灭冲刺(旧)" => ["m_a", 404, 4, 0, 70, 0, 0, 0, 2,false,""],
"幽灵火炮" => ["m_a", 813, 8, 0, 8, 0, 0, 0, 2,false,""],
"幽灵火炮3" => ["m_a", 814, 8, 0, 8, 0, 0, 0, 2,false,""],
"灵子飓风炮2" => ["m_a", 856, 4, 0, 8, 0, 0, 0, 2,false,""],
"魔法始動火" => ["m_a", 376, 1, 0, 1, 0, 0, 0, 2,false,""],
"炎魔法始動アニメ"=> ["m_a", 123, 4, 0, 62, 0, 0, 0, 2,false,""],
"氷魔法始動アニメ"=> ["m_a", 124, 4, 0, 62, 0, 0, 0, 2,false,""],
"烈焰天罚启动"=> ["m_a", 378, 4, 0, 62, 0, 0, 0, 2,false,""],
"零度空间启动"=> ["m_a", 699, 4, 0, 62, 0, 0, 0, 2,false,""],
"雷魔法始動アニメ"=> ["m_a", 125, 4, 0, 62, 0, 0, 0, 2,false,""],
"土魔法始動アニメ"=> ["m_a", 126, 4, 0, 62, 0, 0, 0, 2,false,""],
"水魔法始動アニメ"=> ["m_a", 127, 4, 0, 62, 0, 0, 0, 2,false,""],
"風魔法始動アニメ"=> ["m_a", 128, 4, 0, 62, 0, 0, 0, 2,false,""],
"光魔法始動アニメ"=> ["m_a", 129, 4, 0, 62, 0, 0, 0, 2,false,""],
"闇魔法始動アニメ"=> ["m_a", 130, 4, 0, 62, 0, 0, 0, 2,false,""],
"無魔法始動アニメ"=> ["m_a", 132, 4, 0, 62, 0, 0, 0, 2,false,""],
"対象から自身へ1" => ["m_a", 4, 0, 0, 24, 0, 0, 0, 1,false,""],
"武器投げ開始" => ["m_a", 0, 2, 0, 18, 0, 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,""],
"ヒットエフェクト"=> ["m_a", 90, 0, 0, 48, 0, 0, 0, 2,true,""],
"桜花斬エフェクト"=> ["m_a", 91, 0, 0, 48, 0, 0, 0, 2,true,""],
"分身斬エフェクト"=> ["m_a", 104, 0, 0, 48, 0, 0, 0, 2,true,""],
"幻影剣始動" => ["m_a", 130, 4, 0, 160, 0, -0, 0, 1,true,""],
"幻影剣右上" => ["m_a", 131, 0, 0, 48, 0, 0, 0, 2,true,""],
"幻影剣左上" => ["m_a", 132, 0, 0, 48, 0, 0, 0, 2,true,""],
"幻影剣右" => ["m_a", 133, 0, 0, 48, 0, 0, 0, 2,true,""],
"幻影剣左" => ["m_a", 134, 0, 0, 48, 0, 0, 0, 2,true,""],
"不動剣エフェクト"=> ["m_a", 107, 0, 0, 78, 0, 0, 0, 2,true,""],
"爆熱剣エフェクト"=> ["m_a", 108, 0, 0, 78, 0, 0, 0, 2,true,""],
"盗むエフェクト" => ["m_a", 110, 0, 0, 78, 0, 0, 0, 2,true,""],
"雨流エフェクト" => ["m_a", 98, 0, 0, 158, 0, 0, 0, 2,true,""],
"月光剣エフェクト"=> ["m_a", 94, 0, 0, 38, 0, 0, 0, 2,true,""],
"槍投げエフェクト"=> ["m_a", 111, 4, 0, 14, 0, 0, 3, 2,false,""],
"必殺技始動アニメ"=> ["m_a", 86, 4, 0, 48, 0, 0, 0, 2,false,""],
"カットインエフェクト" => ["m_a", 118, 0, 0, 48, 0, 0, 0, 2,true,""],
"二刀流エフェクト1" => ["m_a", 315, 0, 0, 7, 0, 0, 0, 2,true,""],
"二刀流エフェクト2" => ["m_a", 316, 0, 0, 8, 0, 0, 0, 2,true,""],
"桜華狂咲エフェクト" => ["m_a", 119, 0, 0, 48, 0, 0, 0, 2,true,""],
"亀甲羅割りエフェクト" => ["m_a", 136, 0, 0, 90, 0, 0, 0, 2,true,""],
"風雪乱舞エフェクト" => ["m_a", 93, 0, 0, 98, 0, 0, 0, 2,true,""],
"月光剣エフェクト2" => ["m_a", 95, 0, 0, 38, 0, 0, 0, 2,true,""],
"地竜剣エフェクト1" => ["m_a", 96, 0, 0, 48, 0, 0, 0, 2,true,""],
"地竜剣エフェクト2" => ["m_a", 97, 0, 0, 48, 0, 0, 0, 2,true,""],
"雨流狂落斬エフェクト" => ["m_a", 138, 0, 0, 258, 0, 10, 0, 2,true,""],
"狂落斬2段目エフェクト"=> ["m_a", 139, 0, 0, 48, 0, 10, 0, 2,true,""],
"狂落斬3段目エフェクト"=> ["m_a", 140, 0, 0, 48, 0, 10, 0, 2,true,""],
"ファイアストームエフェクト"=> ["m_a", 106, 0, 0, 78, 0, 0, 0, 2,true,""],
"サンダーストームエフェクト"=> ["m_a", 120, 0, 0, 78, 0, 0, 0, 2,true,""],
"不動の精神エフェクト" => ["m_a", 109, 4, 0, 98, 0, 0, 0, 2,false,""],
"气合" => ["m_a", 148, 4, 0, 30, 0, 0, 0, 2,false,""],
#--------------------------------------------------------------------------
# ● アニメ飛ばしに貼り付ける武器画像アクション 上のアニメ飛ばし専用
#--------------------------------------------------------------------------
# 貼り付けた武器画像の動き。この画像は武器アクションの画像とは別に設定できます。
# その場合貼り付ける画像は武器設定で行ってください。
# 始度…動作前の最初の角度。半時計回りで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", 2, 0],
"状態異常/狂鬼" => ["balloon", 4, 0],
"状態異常/中毒" => ["balloon", 1, 1],
"状態異常/烧伤" => ["balloon", 3, 1],
"状態異常/眩晕" => ["balloon", 0, 1],
"状態異常/冰冻" => ["balloon", 4, 1],
"状態異常/出血" => ["balloon", 2, 1],
"状態異常/无语" => ["balloon", 7, 1],
#--------------------------------------------------------------------------
# ● サウンドの演奏
#--------------------------------------------------------------------------
# 判別…判別に使うので、すべて"sound"で統一してください。
# 種別…効果音は"se" BGMは"bgm" BGSは"bgs"
# ピッチ…ピッチ、50~150まで指定。音量…ボリューム どちらも100がデフォルト。
# ファイル名…再生するファイル名。""にするとBGM、BGSを変えずに各種設定可能。
# SE名 判別 種別 ピッチ 音量 SEファイル名
"absorb1" => ["sound", "se", 80, 100, "absorb1"],
"chime1" => ["sound", "se", 100, 100, "chime1"],
"darkness4" => ["sound", "se", 100, 100, "darkness4"],
"wind7" => ["sound", "se", 100, 100, "wind7"],
"wind7-2" => ["sound", "se", 125, 100, "wind7"],
"Fire1" => ["sound", "se", 125, 100, "Fire1"],
"Slash7" => ["sound", "se", 100, 200, "重击2"],
"毒攻击" => ["sound", "se", 200, 200, "081-Monster03"],
"凯兰被击" => ["sound", "se", 125, 100, "v配音-女惨叫-轻-007"],
"亚特被击" => ["sound", "se", 125, 100, "v配音-男惨叫-中-008"],
"丽娜被击" => ["sound", "se", 130, 100, "v配音-女惨叫-轻-007"],
#--------------------------------------------------------------------------
# ● ゲーム全体のスピード変更 アクションの細部チェック用
#--------------------------------------------------------------------------
# 判別…判別に使うので、すべて"fps"で統一してください。
# ゲームスピード…60がデフォルトで、低くなるほどスローになります。
# ※このコマンドはFPSを直接変更するものです。取り扱いには注意してください。
# 変更名 判別 ゲームスピード
"スロー再生" => ["fps", 20],
"半スロー再生" => ["fps", 40],
"通常再生" => ["fps", 60],
"半高速再生" => ["fps", 80],
"通速再生" => ["fps", 90],
"高速再生" => ["fps", 100],
"超高速再生" => ["fps", 175],
#--------------------------------------------------------------------------
# ● ステート付与
#--------------------------------------------------------------------------
# 判別…判別に使うので、すべて"sta+"で統一してください。
# 対象…[0=自分] [1=ターゲット] [2=敵全体] [3=味方全体] [4=自分を除く味方全体]
# ステートID…付与するステートのID。「抵抗しない」ステート以外は抵抗します。
# ステート付与名 判別 対象 ステートID
"二人攻撃ステート付与" => ["sta+", 0, 38],
"三人攻撃ステート付与" => ["sta+", 0, 39],
"四人攻撃ステート付与" => ["sta+", 0, 19],
"neko" => ["sta+", 0, 20],
#--------------------------------------------------------------------------
# ● ステート解除
#--------------------------------------------------------------------------
# 判別…判別に使うので、すべて"sta-"で統一してください。
# 対象…[0=自分] [1=ターゲット] [2=敵全体] [3=味方全体] [4=自分を除く味方全体]
# ステートID…解除するステートのID
# ステート付与名 判別 対象 ステートID
"二人攻撃ステート解除" => ["sta-", 3, 38],
"三人攻撃ステート解除" => ["sta-", 3, 39],
"四人攻撃ステート解除" => ["sta-", 3, 19],
#--------------------------------------------------------------------------
# ● バトラー画像ファイル変更 自身のみアクター限定
#--------------------------------------------------------------------------
# 判別…判別に使うので、すべて"change"で統一してください。
# リセット…戦闘後も変更を反映させるならfalse。キャラチップも変わります。
# ファイル名…変更する画像ファイル名。認識先を変えるので"_1"は指定しないように。
# 変更名 判別 リセット ファイル名
"ネコに変身" => ["change", true,"$ネコ"],
"终结毁灭变身" => ["change", true,"!$毁灭终结"],
"変身解除" => ["change", true,"$亚特(改)"],
"変身解除2" => ["change", true,"$艾丽莎"],
"変身解除3" => ["change", true,"$迪安-改"],
"変身解除4" => ["change", true,"$凯兰"],
"変身解除5" => ["change", true,"$水瓶天使"],
"空白" => ["change", true,"无标题-1"],
"空白2" => ["battlers", 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"],
"カットインリナリー始"=> ["pic",-640, 0, 0, 0, 11, true, "cutin002.png"],
"カットインリナリー終"=> ["pic", 0, 0, 0, 0, 1, true, "cutin002.png"],
#--------------------------------------------------------------------------
# ● ゲームスイッチの操作
#--------------------------------------------------------------------------
# 判別…判別に使うので、すべて"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],
#--------------------------------------------------------------------------
# ● スクリプトの操作
#--------------------------------------------------------------------------
# 判別…判別に使うので、すべて"script"で統一してください。
#
# 簡易的なスクリプトをアクションに割り込ませます。サンプルのp = 1 の部分に
# 任意のスクリプトを入れます。機能上、文字列は扱えません。
#
# 操作名 判別
"テストスクリプト" => ["script", "
p = 1
"],
#--------------------------------------------------------------------------
# ● その他 設定項目なし。ここで使われている名称は変更しないでください。
#--------------------------------------------------------------------------
# ピクチャ消去…表示しているピクチャを消します。
# 残像ON…バトラーの軌跡に残像を残します。通しアクション中は残像し続けます。
# 残像OFF…残像を消します。
# 反転…画像を反転します。再度反転させるか座標リセットしない限り反転したまま。
# 待機に移行しない…行動後、待機アクションを取らせません。
# コラプス許可…ターゲットのHPが0になった場合、このタイミングでコラプスを
# 開始させます。これがなければアクション終了時にコラプスします。
# 二刀限定…この次の単発アクションのみ、二刀限定で行うようにします。
# 二刀でなければ処理を飛ばし、次の単発アクションに移行します。
# 非二刀限定…上とは逆に二刀ではないときのみ次の単発アクションを有効にします。
# 個別処理開始…全体攻撃を個別で処理する場合の、リピート行動開始の目印です。
# 個別処理終了…全体攻撃を個別で処理する場合の、リピート行動終了の目印です。
# 初期位置変更…元の座標(初期位置)を今いる位置に変更します。
# 初期位置変更解除…初期位置変更で変化した座標を元に戻します。
# アクティブ解除…戦闘行動が終了したとみなし、直後に次のキャラが行動開始します。
# コラプス許可機能も含んでおり、これ以降ダメージは与えられません。
# 終了…行動の終了。これは入れなくてもアクションがなくなれば自動で認識します。
"ピクチャ消去" => ["ピクチャ消去"],
"残像ON" => ["残像ON"],
"残像OFF" => ["残像OFF"],
"反転" => ["反転"],
"待機に移行しない"=> ["待機に移行しない"],
"コラプス許可" => ["コラプス許可"],
"二刀限定" => ["二刀限定"],
"非二刀限定" => ["非二刀限定"],
"個別処理開始" => ["個別処理開始"],
"個別処理終了" => ["個別処理終了"],
"初期位置変更" => ["初期位置変更"],
"初期位置変更解除"=> ["初期位置変更解除"],
"アクティブ解除" => ["アクティブ解除"],
"終了" => ["終了"]
#--------------------------------------------------------------------------
# ● ウエイトについて
#--------------------------------------------------------------------------
# 単発アクションで数値のみの場合、それがそのままウエイト時間となります。
# つまり単発アクション名に数値のみの名称は使えないので注意してください。
# ウエイトは次のアクションに行かずに待つ時間ですが、バトラーアニメの更新は
# 止まらずに行われます。
}
#==============================================================================
# ■ 通しアクション
#------------------------------------------------------------------------------
# 上の単発アクションを組み合わせたもので、これが実際に取る行動となります
#==============================================================================
# ここの通しアクション名が下のアクター、エネミー指定アクションに使われます。
# 行動は左側から順番に行われます。
ACTION = {
#------------------------------- 待機系 -----------------------------------------
# 通しアクション名 行動
"戦闘開始" => ["戦闘開始前の位置へ","座標リセット"],
"戦闘開始-法" => ["戦闘開始前の位置へ","座標リセット-法"],
"待機" => ["待機2"],
"待機3" => ["待機3"],
"ピンチ待機" => ["移動しない","ピンチ待機","状態異常/ピンチ","22"],
"ピンチ待機-法" => ["移動しない","ピンチ待機-法","状態異常/ピンチ","22"],
"状態異常待機" => ["移動しない","待機(固定)","状態異常/汎用","22"],
"睡眠待機" => ["移動しない","待機(固定)","状態異常/睡眠","22"],
"出血待机" => ["移動しない","待機(固定)","状態異常/出血","22"],
"眩晕待机" => ["移動しない","待機(固定)","状態異常/眩晕","22"],
"中毒待机" => ["移動しない","待機(固定)","状態異常/中毒","22"],
"烧伤待机" => ["移動しない","待機(固定)","状態異常/烧伤","22"],
"无语待机" => ["移動しない","待機(固定)","状態異常/无语","22"],
"裁决之力-状态" => ["移動しない","待機(固定)","裁决之力2","50"],
"魔法反射" => ["移動しない","待機(固定)","魔法镜面待机","20"],
"极度脑残-待机" => ["移動しない","待機(固定)","极度脑残2","20"],
"血之代价待机" => ["移動しない","待機(固定)","血之代价2","15"],
"怒火燃烧-待机" => ["移動しない","待機(固定)","燃烧怒火2","15"],
"力量反射-待机" => ["移動しない","待機(固定)","力量反射","20"],
"怒绝-待机" => ["移動しない","待機(固定)","愤怒中的绝望3","25"],
"时间收割待机" => ["移動しない","待機(固定)","时间收割","35"],
"时间屏障待机" => ["移動しない","待機(固定)","时间屏障2","35"],
"冰冻待机" => ["移動しない","待機(固定)","状態異常/冰冻","22"],
"恢复待机" => ["待機(固定)","恢复","22"],
"恢复待机2" => ["待機(固定)","恢复2","22"],
"愤怒待机" => ["待機(固定)","怒火","22"],
"能源补充-待机" => ["移動しない","待機(固定)","能源补充2","22"],
"浮遊待機" => ["待機(固定)","6","低空浮遊中","4","低空浮遊中2","4","低空浮遊中3","4","低空浮遊中4","4"],
"気絶" => ["倒れたまま","戦闘不能"],
"ダメージ" => ["被ダメージ","座標リセット"],
"ダメージ凯兰" => ["5","凯兰被击","被ダメージ","座標リセット"],
"ダメージ亚特" => ["5","亚特被击","被ダメージ","座標リセット"],
"ダメージ丽娜" => ["5","丽娜被击","被ダメージ","座標リセット-法"],
"逃走" => ["味方逃走"],
"エネミー逃走" => ["味方逃走","座標リセット"],
"逃走失敗" => ["逃走失敗","待機(固定)","8","座標リセット"],
"コマンド入力" => ["一歩前移動"],
"コマンド入力-法" => ["一歩前移動-法"],
"コマンド入力後" => ["座標リセット"],
"コマンド入力後-法" => ["座標リセット-法"],
"防御" => ["防御待机2","4","浮遊ステート確認","低空浮遊中","2","低空浮遊中2","2","低空浮遊中3","2","低空浮遊中4","2"],
"防御-法" => ["移動しない","防御待机","法师防御","15"],
"回避" => ["バックジャンプ","待機(固定)","16","座標リセット"],
"回避2" => ["バックジャンプ","待機(固定)","16","座標リセット"],
"回避-法" => ["バックジャンプ-法","待機(固定)","16","座標リセット-法"],
"エネミー回避" => ["一歩後ジャンプ","待機(固定)","16","座標リセット"],
"勝利" => ["勝利待機","20","待機(固定)",],
"前移動" => ["一歩前移動"],
"後移動" => ["一歩後移動"],
"座標復帰" => ["座標リセット"],
#--------------------------- 基本アクション系 ----------------------------------
# 通しアクション名 行動
"通常攻撃" => ["目標前移動-战","武器振り攻撃","対象アニメウエイト",
"5","武器振り攻撃L","対象アニメL","二刀限定","16",
"コラプス許可","後退リセット"],
"通常攻撃強" => ["前ジャンプ叩き","対象アニメウエイト",
"5","二刀限定","16","コラプス許可","後退リセット"],
"刀攻撃" => ["目標前移動-战","刀攻撃下","対象アニメ","6",
"二刀限定","対象アニメウエイト","10",
"コラプス許可","後退リセット"],
"十字刀攻撃" => ["目標前移動","武器振り攻撃","対象アニメ","15",
"回転投げ","刀攻撃下7","対象アニメ","6",
"コラプス許可","後退リセット"],
"槍攻撃" => ["目標前移動","突き攻撃","対象アニメウエイト",
"5","二刀限定","1",
"コラプス許可","後退リセット"],
"槍投げ攻撃" => ["一歩後ジャンプ","槍投げエフェクト","槍投げ",
"対象アニメ","槍投げ後固定","17","二刀限定",
"コラプス許可","後退リセット"],
"二刀流攻撃" => ["目標前移動","武器振り攻撃","二刀流エフェクト1",
"二刀限定","刀攻撃下","二刀流エフェクト2","対象アニメウエイト",
"6","コラプス許可","後退リセット"],
"弓攻撃" => ["一歩後ジャンプ","10","弓矢攻撃","5","wind7-2","5","対象アニメウエイト",
"5","二刀限定","16",
"コラプス許可","後退リセット"],
"枪攻击" => ["バックジャンプ","开枪","銃で攻撃","対象アニメウエイト",
"5","対象アニメL","二刀限定","16",
"コラプス許可","後退リセット"],
"枪攻击2" => ["バックジャンプ","开枪2","銃で攻撃","対象アニメウエイト",
"5","対象アニメL","二刀限定","16",
"コラプス許可","後退リセット"],
"钝器" => ["目標前移動-战","钝器挥舞","対象アニメウエイト",
"コラプス許可","後退リセット"],
"敵・銃攻撃" => ["バックジャンプ","銃で攻撃","対象アニメウエイト","銃で攻撃",
"5","対象アニメL","対象アニメウエイト","16",
"コラプス許可","後退リセット"],
"霰弹枪" => ["霰弹2","銃で攻撃4","対象アニメウエイト","5","霰弹3","枪专用",
"5","対象アニメL","二刀限定","16",
"コラプス許可","後退リセット"],
"狙击枪" => ["バックジャンプ","銃で攻撃5","狙击","銃で攻撃6","対象アニメウエイト","5","狙击2","枪专用2","20",
"コラプス許可","後退リセット"],
"狙击枪2" => ["目標前移動","武器振り攻撃2","钝击","対象アニメウエイト","バックジャンプ",
"コラプス許可","後退リセット"],
"机关枪" => ["バックジャンプ","銃で攻撃7","机枪","対象アニメウエイト",
"銃で攻撃7","机枪","対象アニメウエイト","銃で攻撃7","机枪","対象アニメウエイト","20",
"コラプス許可","後退リセット"],
"長銃攻撃" => ["銃で攻撃","対象アニメウエイト",
"18","二刀限定","16",
"コラプス許可","後退リセット"],
"敵武器なし攻撃" => ["目標前移動","武器振り攻撃","対象アニメウエイト",
"コラプス許可","後退リセット"],
"動きなしスキル" => ["一歩前移動","待機(固定)","武器掲げ2",
"対象アニメウエイト","コラプス許可","5","座標リセット"],
"動きなしスキル敵" => ["一歩前移動","待機(固定)",
"対象アニメウエイト","コラプス許可","5","座標リセット"],
"汎用スキル使用" => ["一歩前移動","待機(固定)","魔法始動アニメ","武器回し下","武器掲げ","武器振り攻撃",
"対象アニメウエイト","コラプス許可","24","座標リセット"],
"汎用スキル個別処理"=> ["一歩前移動","魔法始動アニメ","武器回し下","武器掲げ","個別処理開始","武器振り攻撃","対象アニメ","24",
"個別処理終了","コラプス許可","座標リセット"],
"忍術スキル使用" => ["魔法詠唱","24","一歩前移動","待機(固定)","魔法始動アニメ",
"武器掲げ3","武器振り攻撃","対象アニメウエイト","コラプス許可","10","座標リセット"],
"必殺スキル使用" => ["一歩前移動","待機(固定)","必殺技始動アニメ","武器一回転上","12",
"対象アニメウエイト","コラプス許可","24","座標リセット"],
"アイテム使用" => ["目標前移動","待機(固定)","24","対象アニメウエイト",
"コラプス許可","座標リセット"],
"盗む" => ["待機(固定)","前ジャンプ叩き2","待機(固定)","高速バックジャンプ","対象アニメウエイト","座標リセット","7"],
#------------------------------ 詠唱系 ---------------------------------------
# 通しアクション名 行動
"炎魔法スキル使用" => ["炎魔法始動アニメ","魔法詠唱","24","一歩前移動","待機(固定)",
"武器掲げ4","武器振り攻撃",
"対象アニメウエイト","コラプス許可","10","座標リセット"],
"氷魔法スキル使用" => ["氷魔法始動アニメ","魔法詠唱","24","一歩前移動","待機(固定)",
"武器掲げ4","武器振り攻撃",
"対象アニメウエイト","コラプス許可","10","座標リセット"],
"雷魔法使用" => ["雷魔法始動アニメ","魔法詠唱","24","一歩前移動","待機(固定)",
"武器掲げ4","武器振り攻撃",
"対象アニメウエイト","コラプス許可","10","座標リセット"],
"土魔法使用" => ["土魔法始動アニメ","魔法詠唱","24","一歩前移動","待機(固定)",
"武器掲げ4","武器振り攻撃",
"対象アニメウエイト","コラプス許可","10","座標リセット"],
"水魔法使用" => ["水魔法始動アニメ","魔法詠唱","24","一歩前移動","待機(固定)",
"武器掲げ4","武器振り攻撃",
"対象アニメウエイト","コラプス許可","10","座標リセット"],
"风魔法使用" => ["風魔法始動アニメ","魔法詠唱","24","一歩前移動","待機(固定)",
"武器掲げ4","武器振り攻撃",
"対象アニメウエイト","コラプス許可","10","座標リセット"],
"光魔法使用" => ["光魔法始動アニメ","魔法詠唱","24","一歩前移動","待機(固定)",
"武器掲げ4","武器振り攻撃",
"対象アニメウエイト","コラプス許可","10","座標リセット"],
"暗魔法使用" => ["闇魔法始動アニメ","魔法詠唱","24","一歩前移動","待機(固定)",
"武器掲げ4","武器振り攻撃",
"対象アニメウエイト","コラプス許可","10","座標リセット"],
"魔法使用" => ["魔法始動アニメ","魔法詠唱","24","待機(固定)",
"対象アニメウエイト","コラプス許可","10","座標リセット"],
#------------------------------ 大剣スキル ---------------------------------------
# 通しアクション名 行動
"重撃斬" => ["目標前移動","刀攻撃下","対象アニメ","6","スロー再生","残像ON","前ジャンプ叩き","darkness4","対象アニメ武器",
"残像OFF","二刀限定","対象アニメウエイト","10",
"コラプス許可","通常再生","後退リセット"],
"波動斬" => ["一歩前移動","待機(固定)","武器回し下","武器掲げ","武器振り攻撃",
"対象アニメウエイト","コラプス許可","24","座標リセット"],
"飛鋭斬" => ["残像ON","目標前移動","刀攻撃下","対象アニメ","6","対象アニメ","6",
"コラプス許可","後退リセット","残像OFF"],
"諸刃斬" => ["目標前移動","武器振り攻撃","対象アニメ武器","5","武器振り攻撃",
"対象アニメ武器","その場ジャンプ叩き","一歩後ジャンプ","バックジャンプ","一歩後ジャンプ","10",
"残像ON","右払い抜け","残像OFF","対象アニメ武器","32","コラプス許可","後退リセット"],
#------------------------------ 小剣スキル ---------------------------------------
# 通しアクション名 行動
"連斬" => ["目標前移動","武器振り攻撃","対象アニメ武器","バックジャンプ",
"その場ジャンプ叩き","対象アニメ武器","32","コラプス許可","後退リセット"],
"三連斬" => ["目標前移動","武器振り攻撃","対象アニメ武器","5","武器振り攻撃",
"対象アニメ武器","バックジャンプ","3",
"その場ジャンプ叩き","対象アニメ武器","32","コラプス許可","後退リセット"],
"五連斬" => ["目標前移動","武器振り攻撃","対象アニメ武器","10","残像ON","左払い抜け","残像OFF","対象アニメ武器","反転","10",
"前ジャンプ叩き","対象アニメ武器","10","一歩前ジャンプ","武器振り攻撃","対象アニメ武器",
"10","武器振り攻撃","対象アニメ武器","コラプス許可","反転","後退リセット"],
"舞連撃" => ["目標前移動","対象アニメ武器","左払い抜け","10","対象アニメ武器","右左払い抜け",
"反転","残像ON","バックジャンプ2","10","バックジャンプ2",
"目標前移動","刀攻撃下","対象アニメ武器","5","対象アニメ武器","6",
"残像OFF","コラプス許可","反転","バックジャンプ","5","バックジャンプ遠","後退リセット"],
"烈光撃" => ["半スロー再生","目標にジャンプ","半高速再生","残像ON","武器振り攻撃","対象アニメ武器","10",
"バックジャンプ","5","バックジャンプ遠","目標前移動","対象アニメ武器","30",
"対象アニメ武器","バックジャンプ遠","残像OFF","通常再生","コラプス許可","後退リセット"],
#------------------------------ 銃剣スキル ---------------------------------------
# 通しアクション名 行動
"ガンブレード" => ["目標前移動","通速再生","刀攻撃下","対象アニメ武器","バックジャンプ",
"後方に払い上げ","対象アニメ武器","32","通常再生","コラプス許可","後退リセット"],
"ブレードスラッシュ"=> ["目標前移動","払い抜け","対象アニメ武器","反転","10","高速再生",
"一歩前ジャンプ","銃で攻撃","射撃アニメ","3","銃で攻撃","射撃アニメ","3","銃で攻撃","射撃アニメ",
"15","通常再生","コラプス許可","後退リセット","反転"],
"ブレードゲージュ" => ["バックジャンプ","超高速再生",
"銃で攻撃","射撃アニメ","1","銃で攻撃","射撃アニメ","1",
"銃で攻撃","射撃アニメ","1","銃で攻撃","射撃アニメ","1",
"銃で攻撃","射撃アニメ","1","銃で攻撃","射撃アニメ","1",
"銃で攻撃","射撃アニメ","1","銃で攻撃","射撃アニメ","1",
"銃で攻撃","射撃アニメ","1","銃で攻撃","射撃アニメ","1",
"15","通常再生","コラプス許可","後退リセット"],
"ブレードブレイク" => ["目標前移動","武器振り攻撃","対象アニメ武器","5","刀攻撃下","対象アニメ武器","5","武器振り攻撃","対象アニメ武器",
"5","刀攻撃ジャンプ斬り","対象アニメ武器","5","刀攻撃下","対象アニメ武器","15","コラプス許可","後退リセット"],
"ディードコルスター"=> ["目標前移動","武器振り攻撃","対象アニメ武器","5","刀攻撃下","対象アニメ武器","5","武器振り攻撃","対象アニメ武器",
"5","刀攻撃ジャンプ斬り","対象アニメ武器","5","刀攻撃下","対象アニメ武器","15","コラプス許可","後退リセット"],
"ブレードラフィーナ"=> ["残像ON","銃で攻撃","射撃アニメ","3","銃で攻撃","射撃アニメ","3","スロー再生","目標にジャンプ","通常再生",
"武器振り攻撃","対象アニメ武器","3",
"武器振り攻撃","対象アニメ武器","3",
"刀攻撃下","対象アニメ武器","3",
"払い抜け","対象アニメ武器","3","反転","超高速再生","目標移動","通常再生",
"刀攻撃下","対象アニメ武器","30",
"対象アニメ武器","刀攻撃ジャンプ斬り","3",
"反転","右払い抜け","対象アニメ武器","3",
"反転","1","超高速再生","目標移動","通常再生","刀攻撃下","対象アニメ武器","3",
"武器振り攻撃","3",
"反転","刀攻撃下","対象アニメ武器","3",
"武器振り攻撃","対象アニメ武器","3",
"払い抜け","対象アニメ武器","3",
"反転","銃で攻撃","射撃アニメ","3",
"スロー再生","その場ジャンプ叩き","対象アニメ武器","30",
"コラプス許可","通常再生","後退リセット","残像OFF","反転",],
#------------------------------ 長弓スキル ---------------------------------------
# 通しアクション名 行動
"リヴァイヴスナイプ" => ["目標前移動","バックジャンプ","10","弓矢攻撃","5","wind7-2","5","対象アニメウエイト",
"5","二刀限定","16","コラプス許可","後退リセット"],
"ヴェデルスナイプ" => ["一歩後ジャンプ","10","弓矢攻撃","5","wind7-2","5","対象アニメウエイト",
"10","弓矢攻撃","5","wind7-2","5","対象アニメウエイト",
"5","二刀限定","16","コラプス許可","後退リセット"],
#------------------------------ 短銃スキル ---------------------------------------
# 通しアクション名 行動
#------------------------------ 薬瓶スキル ---------------------------------------
# 通しアクション名 行動
"武器投げ" => ["一歩前移動","武器振り攻撃","wind7","待機(固定)",
"武器投げ開始","12","対象アニメ武器","コラプス許可",
"武器投げ戻し","座標リセット"],
"武器投げ2" => ["一歩前移動","武器振り攻撃","wind7","待機(固定)",
"武器投げ開始","12","対象アニメ武器","コラプス許可",
"座標リセット"],
"回復薬調合" => ["chime1","状態異常/閃き","勝利のジャンプ","15","目標前移動","待機(固定)","24","対象アニメウエイト",
"コラプス許可","座標リセット"],
"薬調合2" => ["chime1","状態異常/閃き","勝利のジャンプ","15","wind7","武器投げ開始","12","対象アニメウエイト","コラプス許可",
"座標リセット"],
#------------------------------ エネミースキル ---------------------------------------
# 通しアクション名 行動
"連続雷魔法スキル使用"=> ["雷魔法始動アニメ","魔法詠唱","24","一歩前移動","待機(固定)",
"武器掲げ2","武器振り攻撃",
"対象アニメウエイト","10","対象アニメウエイト","コラプス許可","10","座標リセット"],
"リデューゴ・ダンス" => ["目標前移動","武器振り攻撃","対象アニメ武器","武器振り攻撃",
"対象アニメ武器","バックジャンプ",
"その場ジャンプ叩き","対象アニメ武器","32","コラプス許可","後退リセット"],
"ボーンスプレッター" => ["バックジャンプ","5","バックジャンプ遠","高速再生","目標前移動","通常再生","対象アニメ武器","6","対象アニメ武器","6","対象アニメ武器","10","後退リセット",],
"ワームスパイラル" => ["目標前移動","超高速再生",
"一歩後移動","対象アニメ武器","5","目標後移動","一歩後移動","対象アニメ武器","5","目標前移動",
"一歩後移動","対象アニメ武器","5","目標後移動","一歩後移動","対象アニメ武器","5","目標前移動",
"一歩後移動","対象アニメ武器","5","目標後移動","通常再生","後退リセット",],
#------------------------------ その他・1 ---------------------------------------
# 通しアクション名 行動
"法撃" => ["目標前移動","武器振り攻撃","対象アニメ武器","バックジャンプ",
"32","コラプス許可","後退リセット"],
"ヤミノツルギ" => ["スロー再生","残像ON","武器振り攻撃","高速再生","目標前移動","武器振り攻撃",
"対象アニメ武器","通常再生","50","コラプス許可","後退リセット","25"],
"桜花斬" => ["待機(固定)","目標右前移動","必殺技始動アニメ","26","桜花斬エフェクト",
"払い抜け","22","対象アニメウエイト","桜華狂咲に派生","コラプス許可","24","座標リセット"],
"桜華狂咲" => ["反転","カットインエフェクト","武器掲げ3","8",
"カットインリナリー始","60","カットインリナリー終",
"ピクチャ消去","折り返し払い抜け","桜華狂咲エフェクト",
"対象アニメウエイト","34","コラプス許可","反転","座標リセット"],
"爆熱剣" => ["待機(固定)","目標左前移動","必殺技始動アニメ","26",
"爆熱剣エフェクト","払い抜け","22","対象アニメウエイト","コラプス許可","24","座標リセット"],
"不動の精神" => ["一歩前移動","待機(固定)","武器掲げ2",
"不動の精神エフェクト","45","不動の精神ステート付与",
"対象アニメウエイト","コラプス許可","座標リセット"],
"分身斬" => ["待機(固定)","残像ON","必殺技始動アニメ","武器一回転上","12",
"前ジャンプ叩き2","高速武器振り攻撃","分身斬エフェクト","対象アニメ","小吹き飛ばし",
"対象アニメ","瞬間後退リセット","前ジャンプ叩き2","高速武器振り攻撃","分身斬エフェクト","小吹き飛ばし",
"対象アニメ","瞬間後退リセット","前ジャンプ叩き2","高速武器振り攻撃","分身斬エフェクト","対象アニメ","小吹き飛ばし",
"対象アニメ","瞬間後退リセット","前ジャンプ叩き2","高速武器振り攻撃","分身斬エフェクト","対象アニメ","小吹き飛ばし",
"目標の背後へ高速移動","反転","15","バックスタッブ","対象アニメ武器",
"残像OFF","反転","高速バックジャンプ","対象アニメウエイト","座標リセット","コラプス許可","7"],
"幻影剣" => ["待機(固定)","キャラ消し","幻影剣始動","82","幻影剣右上","対象アニメ","小吹き飛ばし","5",
"幻影剣左上","5","小吹き飛ばし右","対象アニメ","幻影剣右","5","小吹き飛ばし","対象アニメ",
"幻影剣左","5","小吹き飛ばし右","対象アニメ","幻影剣右","5","小吹き飛ばし","対象アニメ",
"目標の背後へ高速移動","反転","残像ON","武器掲げ3","折り返し払い抜け",
"ヒットエフェクト","小吹き飛ばし右","15","残像OFF",
"対象アニメウエイト","座標リセット","反転","コラプス許可","7"],
"亀甲羅割り" => ["待機(固定)","目標前移動","亀甲羅割りエフェクト","その場ジャンプ斬り2",
"武器振り攻撃","小吹き飛ばし","40","一歩後ジャンプ","対象アニメウエイト","コラプス許可","座標リセット"],
"風雪乱舞" => ["魔法詠唱","28","一歩前移動","待機(固定)","魔法始動アニメ",
"武器掲げ2","風雪乱舞エフェクト","78","武器振り攻撃","20",
"対象アニメウエイト","コラプス許可","10","座標リセット"],
"ファイアストーム" => ["魔法詠唱","33","一歩前移動","待機(固定)",
"魔法始動アニメ","武器掲げ2","ファイアストームエフェクト",
"18","武器振り攻撃","40","対象アニメウエイト","コラプス許可","10","座標リセット"],
"サンダーストーム" => ["魔法詠唱","33","一歩前移動","待機(固定)","魔法始動アニメ",
"武器掲げ2","サンダーストームエフェクト","武器振り攻撃","90",
"対象アニメウエイト","コラプス許可","10","座標リセット"],
"月光剣" => ["待機(固定)","残像ON","目標前移動","6","刀攻撃下","月光剣エフェクト","刀攻撃ジャンプ斬り",
"小吹き飛ばし","残像OFF","一歩後ジャンプ","対象アニメウエイト","コラプス許可","10","座標リセット"],
"峰打" => ["待機(固定)","目標前移動","15","刀攻撃峰打","対象アニメウエイト","コラプス許可","10","座標リセット"],
"雨流" => ["待機(固定)","目標前移動","キャラ消し","小吹き飛ばし","雨流エフェクト","80","小吹き飛ばし",
"雨流狂落斬に派生","対象アニメウエイト","目標前へ高速移動","一歩後ジャンプ","コラプス許可","10","座標リセット"],
"雨流狂落斬" => ["カットインエフェクト","キャラ消し","雨流狂落斬エフェクト","75","小吹き飛ばし",
"狂落斬2段目エフェクト","8","小吹き飛ばし","狂落斬3段目エフェクト","8","小吹き飛ばし","20",
"対象アニメウエイト","一歩後ジャンプ","武器構え待機","コラプス許可","10","座標リセット"],
"地竜剣" => ["待機(固定)","剣突き刺し動作","地竜剣エフェクト1","16","目標前移動",
"地竜剣エフェクト2","刀攻撃ジャンプ斬り","小吹き飛ばし","一歩後ジャンプ",
"対象アニメウエイト","コラプス許可","10","座標リセット"],
"二段突き" => ["目標前移動","突き攻撃","ヒットエフェクト","対象アニメウエイト","2",
"突き攻撃","ヒットエフェクト","対象アニメウエイト","25","二刀限定","1","コラプス許可","後退リセット"],
"阿修羅" => ["目標前移動","武器振り攻撃","小吹き飛ばし","対象アニメ武器",
"目標前高速移動","武器振り攻撃","小吹き飛ばし","武器振り攻撃L","対象アニメ武器",
"目標前高速移動","武器振り攻撃","小吹き飛ばし","武器振り攻撃L","対象アニメ武器",
"目標前高速移動","武器振り攻撃","小吹き飛ばし","武器振り攻撃L","対象アニメ武器",
"目標前高速移動","武器振り攻撃","小吹き飛ばし","武器振り攻撃L","対象アニメ武器",
"目標前高速移動","武器振り攻撃","小吹き飛ばし","武器振り攻撃L","対象アニメ武器","コラプス許可","12","座標リセット"],
"乱れ雪月花発動" => ["三人攻撃条件確認","三人攻撃目標統一","三人で攻撃1","三人で攻撃2","三人攻撃移動3","待機(固定)",
"魔法始動アニメ","武器回し下","武器掲げ2","130","目標右前移動","必殺技始動アニメ","24",
"桜花斬エフェクト","左払い抜け","52","対象アニメウエイト","コラプス許可","後退リセット","合体攻撃解除"],
"不動剣発動" => ["三人攻撃条件確認","三人攻撃目標統一","不動剣で攻撃1","不動剣で攻撃2","三人攻撃移動3","待機(固定)",
"魔法始動アニメ","武器回し下","武器掲げ2","80","目標右前移動","武器一回転上","12",
"爆熱剣エフェクト","左払い抜け","52","対象アニメウエイト","コラプス許可","後退リセット","合体攻撃解除"],
#------------------------------ その他・2 ---------------------------------------
# 通しアクション名 行動
"ヒールに派生" => ["目標前移動","対象アニメ","武器振り攻撃",
"16","ヒールに派生","座標リセット"],
"適当に派生" => ["逃走失敗","魔法始動アニメ","武器回し下","武器掲げ",
"8","対象アニメ","適当に派生","座標リセット"],
"カットイン" => ["待機(固定)","魔法始動アニメ",
"75","カットイン1終","8","目標前移動",
"武器振り攻撃","対象アニメウエイト","コラプス許可",
"ピクチャ消去","後退リセット"],
"二人同時攻撃準備" => ["二人攻撃ステート付与"],
"四人同時攻撃準備" => ["四人攻撃ステート付与"],
"二人同時攻撃" => ["二人攻撃条件確認","二人攻撃目標統一","ウルリカと攻撃",
"目標右前移動","待機(固定)","魔法始動アニメ","武器回し下",
"武器掲げ","48","斬撃/必殺技1","左払い抜け","64","対象アニメ",
"コラプス許可","後退リセット","二人攻撃ステート解除"],
"四人同時攻撃" => ["四人攻撃条件確認","四人攻撃目標統一","四人で攻撃1",
"四人で攻撃2","四人で攻撃3","四人攻撃移動1","待機(固定)",
"魔法始動アニメ","武器回し下","武器掲げ","90",
"斬撃/必殺技1","右払い抜け","64","対象アニメウエイト",
"コラプス許可","後退リセット","合体攻撃解除"],
"個別全体遠距離攻撃"=> ["一歩前ジャンプ","ジャンプ停止","個別処理開始",
"標的を自身に","武器振り攻撃","着弾1","20",
"対象アニメ武器","個別処理終了","コラプス許可",
"ジャンプ着地","座標リセット"],
"全体遠距離攻撃" => ["標的を自身に","武器振り攻撃","着弾1","20",
"対象アニメウエイト","コラプス許可"],
"汎用スキル個別処理"=> ["一歩前移動","魔法始動アニメ","武器回し下","武器掲げ",
"個別処理開始","武器振り攻撃","対象アニメ","24",
"個別処理終了","コラプス許可","座標リセット"],
"全体攻撃1" => ["一歩前移動","待機(固定)","魔法始動アニメ","武器回し下",
"武器掲げ","全体アニメ単体化","武器振り攻撃","48",
"対象アニメウエイト","コラプス許可","座標リセット"],
"ネコに変身" => ["一歩前ジャンプ","待機(固定)","魔法始動アニメ","32",
"ネコに変身","待機(固定)","neko","32","一歩後ジャンプ"],
"味方投げつけ" => ["投げる相手選択","目標移動","味方持ち上げ","4",
"wind7","投げつけ目標セット","味方投げ飛ばし",
"味方投げ","待機(固定)","対象アニメ","座標リセット",
"待機(固定)","32"],
"踏み潰し" => ["目標にジャンプ","打撃アニメ","縦にぺしゃんこ","一歩後ジャンプ",
"踏みつけ","打撃アニメ","縦にぺしゃんこ","一歩後ジャンプ",
"踏みつけ","対象アニメ","縦にぺしゃんこ","一歩後ジャンプ",
"一歩後ジャンプ","コラプス許可","待機(固定)","8","後退リセット"],
"全体攻撃1" => ["一歩前移動","待機(固定)","魔法始動アニメ","武器回し下",
"武器掲げ","全体アニメ単体化","武器振り攻撃","48",
"対象アニメウエイト","コラプス許可","座標リセット"],
"ネコに変身" => ["一歩前ジャンプ","待機(固定)","魔法始動アニメ","32",
"ネコに変身","待機(固定)","neko","32","一歩後ジャンプ"],
"味方投げつけ" => ["投げる相手選択","目標移動","味方持ち上げ","4",
"wind7","投げつけ目標セット","味方投げ飛ばし",
"味方投げ","待機(固定)","対象アニメ","座標リセット","待機(固定)","32"],
"踏み潰し" => ["目標にジャンプ","打撃アニメ","縦にぺしゃんこ","一歩後ジャンプ",
"踏みつけ","打撃アニメ","縦にぺしゃんこ","一歩後ジャンプ",
"踏みつけ","対象アニメ","縦にぺしゃんこ","一歩後ジャンプ",
"一歩後ジャンプ","コラプス許可","待機(固定)","8","後退リセット"],
"多段攻撃" => ["残像ON","前ジャンプ叩き","武器振り攻撃L","対象アニメ武器",
"待機(固定)","16","対象アニメ武器","武器回し下",
"武器回し上","4","その場ジャンプ叩き","武器振り攻撃L",
"対象アニメ武器","待機(固定)","16","対象アニメ武器",
"反転","武器振り攻撃","武器振り攻撃L","12","反転",
"その場ジャンプ叩き","武器振り攻撃L","対象アニメ武器",
"一歩後ジャンプ","一歩後ジャンプ","待機(固定)",
"対象アニメ武器","払い抜け","武器振り攻撃L","コラプス許可",
"残像OFF","16","後退リセット"],
"多段攻撃ランダム用"=> ["前ジャンプ叩き","武器振り攻撃L","対象アニメ武器","待機(固定)","16",
"前ジャンプ叩き","武器振り攻撃L","対象アニメ武器","待機(固定)","16",
"前ジャンプ叩き","武器振り攻撃L","対象アニメ武器","待機(固定)","16",
"前ジャンプ叩き","武器振り攻撃L","対象アニメ武器","コラプス許可","座標リセット"],
"高速多段攻撃" => ["目標前移動","武器振り攻撃","小吹き飛ばし","対象アニメ武器",
"目標前高速移動","武器振り攻撃","小吹き飛ばし","武器振り攻撃L","対象アニメ武器",
"目標前高速移動","武器振り攻撃","小吹き飛ばし","武器振り攻撃L","対象アニメ武器",
"目標前高速移動","武器振り攻撃","小吹き飛ばし","武器振り攻撃L","対象アニメ武器",
"目標前高速移動","武器振り攻撃","小吹き飛ばし","武器振り攻撃L","対象アニメ武器",
"目標前高速移動","武器振り攻撃","小吹き飛ばし","武器振り攻撃L","対象アニメ武器",
"コラプス許可","12","座標リセット"],
"三连斩" => ["目標前移動-战","刀攻撃下","斩击","対象アニメウエイト","15",
"バックジャンプ","待機(固定)","10",
"目標前移動-战","対象アニメウエイト","斩击2","払い抜け","小吹き飛ばし",
"18","バックジャンプ","コラプス許可","座標リセット-战"],
"重击" => ["目標前移動-战","刀攻撃下","斩击3","対象アニメウエイト","6",
"コラプス許可","バックジャンプ","後退リセット-战"],
"重击2" => ["目標前移動-战","刀攻撃下","斩击7","対象アニメウエイト",
"コラプス許可","バックジャンプ","後退リセット-战"],
"阎灭神剑" => ["待機(固定)","勝利のジャンプ","武器振り攻撃","地裂碎","30",
"真空碎2","対象アニメウエイト","20","真空碎3","対象アニメウエイト","30",
"地裂碎2","対象アニメウエイト","30",
"コラプス許可","10","座標リセット-战"],
"突袭" => ["目標前移動-战","斩击3","対象アニメウエイト","刀攻撃下","6",
"目標前移動-战","武器振り攻撃","小吹き飛ばし","斩击3","対象アニメウエイト","6",
"一歩後ジャンプ",
"目標前移動-战","刀攻撃下","小吹き飛ばし","斩击3","対象アニメウエイト","バックジャンプ","10",
"目標前移動-战","刀攻撃下","斩击8","対象アニメウエイト",
"待機(固定)","6",
"コラプス許可","バックジャンプ","座標リセット-战"],
"碎血" => ["バックジャンプ","半スロー再生","目標にジャンプ","半高速再生","残像ON","刀攻撃下","碎血","対象アニメウエイト","30",
"バックジャンプ遠","目標前移動-战","刀攻撃下","碎血2","碎血3","対象アニメウエイト","10",
"残像OFF","通常再生",
"バックジャンプ","コラプス許可","後退リセット-战"],
"毁灭残影" => ["毁灭残影","5","目標前高速移動","残像ON","反転","待機(固定)",
"后跳攻击","毁灭残影2","対象アニメウエイト","武器振り攻撃",
"武器振り攻撃","一歩後ジャンプ","一歩後ジャンプ","払い抜け","小吹き飛ばし",
"目標前高速移動","刀攻撃下","小吹き飛ばし","毁灭残影2","対象アニメウエイト",
"目標前高速移動","刀攻撃下","小吹き飛ばし","毁灭残影2","対象アニメウエイト",
"一歩後ジャンプ","一歩後ジャンプ","待機(固定)",
"毁灭残影2","対象アニメウエイト","払い抜け","刀攻撃下","コラプス許可",
"コラプス許可","反転","座標リセット-战"],
"杀戮盛宴" => ["毁灭残影","6","残像ON","目標前高速移動","空白","10","杀戮改","40",
"变身BUG","变身解除2","座標リセット","待機(固定)","10","杀戮改2","対象アニメウエイト","20",
"コラプス許可","12","座標リセット"],
"弓箭" => ["一歩後移動","待機(固定)","弓矢攻撃","弩发射","10",
"対象アニメウエイト","コラプス許可","10","座標リセット"],
"重箭2" => ["待機(固定)","弓矢攻撃","重箭","25",
"重箭2","10","対象アニメウエイト","15","コラプス許可","10","座標リセット"],
"散箭" => ["バックジャンプ","待機(固定)","弓矢攻撃","散弩2","5","散弩","10",
"対象アニメウエイト","コラプス許可","10","座標リセット"],
"冰箭" => ["バックジャンプ","待機(固定)","弓矢攻撃","冰箭1","20","冰箭2","25","待機(固定)",
"冰箭3","対象アニメウエイト","15","コラプス許可","10","座標リセット"],
"突击射2" => ["待機(固定)","弓矢攻撃","弩发射","5","散弩","10",
"対象アニメウエイト","バックジャンプ",
"弓矢攻撃","弩发射","5","散弩","10","対象アニメウエイト",
"弓矢攻撃","弩发射","5","散弩","10","対象アニメウエイト",
"弓矢攻撃","弩发射","5","散弩","10","対象アニメウエイト",
"コラプス許可","12","座標リセット"],
"光箭" => ["残像ON","目標前移動4",
"待機(固定)","弓矢攻撃","光箭","20","光箭2",
"対象アニメウエイト","30",
"残像OFF","コラプス許可","10","座標リセット"],
"背射" => ["背射3","残像ON","目標前高速移動","反転","バックジャンプ遠反","一歩前ジャンプ","バックジャンプ遠反","待機(固定)","弓矢攻撃","背射",
"8","背射2","対象アニメウエイト","10","反転",
"バックジャンプ遠","一歩後ジャンプ","残像OFF",
"コラプス許可","12","座標リセット",],
"天空射" => ["バックジャンプ遠","弓矢攻撃2","天空射","50",
"天空射2","対象アニメウエイト","20","天空射3","対象アニメウエイト","20",
"天空射4","対象アニメウエイト","35",
"コラプス許可","10","座標リセット"],
"震荡箭" => ["目標前移動4","待機(固定)","弓矢攻撃","白羽之光2",
"30","白羽之光3","対象アニメウエイト","50","白羽之光","対象アニメウエイト","25",
"コラプス許可","25","座標リセット"],
"突刺" => ["目標前移動-战","突き攻撃","対象アニメウエイト",
"コラプス許可","後退リセット-战"],
"治愈" => ["移动目标身后2","10","魔法始動アニメ","魔法詠唱","24","待機(固定)",
"対象アニメウエイト","コラプス許可","10","座標リセット"],
"爆裂冲击" => ["目標前移動-战","刀攻撃下","十字斩","対象アニメ","5",
"武器振り攻撃","十字斩2","対象アニメ","5",
"刀攻撃下","十字斩3","対象アニメウエイト","20",
"コラプス許可","10","座標リセット-战"],
"完美防御" => ["魔法始動アニメ","魔法詠唱","24","待機(固定)",
"対象アニメウエイト","コラプス許可","10","座標リセット"],
"无影光剑" => ["光剑","20","残像ON","目標前高速移動",
"刀攻撃下","光剑2","対象アニメウエイト","3",
"目標前高速移動","刀攻撃下","光剑3","対象アニメウエイト","3",
"目標前高速移動","刀攻撃下","光剑2","対象アニメウエイト","3",
"目標前高速移動","刀攻撃下","光剑4","対象アニメウエイト","3",
"目標前高速移動","刀攻撃下","光剑3","対象アニメウエイト","3",
"バックジャンプ遠",
"コラプス許可","座標リセット-战","残像OFF",],
"治愈2" => ["魔法始動アニメ","魔法詠唱","24","待機(固定)",
"対象アニメウエイト","コラプス許可","10","座標リセット-战"],
"圣剑" => ["残像ON","目標前移動4","待機(固定)",
"巨剑2","刀攻撃下3","10","巨剑","10","巨剑3","対象アニメウエイト","30","巨剑3","対象アニメウエイト","40",
"コラプス許可","10","座標リセット-战","残像OFF",],
"神恩" => ["残像ON","バックジャンプ遠","待機(固定)",
"刀攻撃下3","3","神恩","70","対象アニメウエイト","25",
"コラプス許可","10","座標リセット-战","残像OFF",],
"魔法2" => ["移动目标身后2","10","魔法始動アニメ","魔法詠唱","24",
"対象アニメウエイト","コラプス許可","10","座標リセット"],
"魔法2-法" => ["移动目标身后2","10","魔法始動アニメ","魔法詠唱","24",
"対象アニメウエイト","コラプス許可","10","座標リセット-法"],
"普通攻击" => ["目標前移動","武器振り攻撃","対象アニメウエイト",
"5","武器振り攻撃L","対象アニメL","二刀限定","16",
"コラプス許可","後退リセット"],
"超级连射" => ["バックジャンプ","待機(固定)","开枪","銃で攻撃",
"対象アニメウエイト","反転","一歩前移動","反転","10","待機(固定)",
"待機(固定)","开枪","銃で攻撃","対象アニメウエイト",
"开枪","銃で攻撃","対象アニメウエイト",
"待機(固定)","反転","バックジャンプ遠","反転","开枪","銃で攻撃","対象アニメウエイト",
"コラプス許可","12","座標リセット"],
"超级扫射" => ["バックジャンプ遠","待機(固定)","沙漠风暴","銃で攻撃2","対象アニメウエイト",
"沙漠风暴","銃で攻撃2","対象アニメウエイト","沙漠风暴","銃で攻撃2","対象アニメウエイト",
"沙漠风暴","銃で攻撃2","対象アニメウエイト","沙漠风暴","銃で攻撃2","対象アニメウエイト",
"沙漠风暴","銃で攻撃2","対象アニメウエイト","沙漠风暴","銃で攻撃2","対象アニメウエイト",
"沙漠风暴","銃で攻撃2","対象アニメウエイト","沙漠风暴","銃で攻撃2","対象アニメウエイト",
"沙漠风暴","銃で攻撃2","対象アニメウエイト","沙漠风暴","銃で攻撃2","対象アニメウエイト",
"沙漠风暴","銃で攻撃2","対象アニメウエイト","沙漠风暴","銃で攻撃2","対象アニメウエイト",
"沙漠风暴","銃で攻撃2","対象アニメウエイト","沙漠风暴","銃で攻撃2","対象アニメウエイト",
"沙漠风暴","銃で攻撃2","対象アニメウエイト","銃で攻撃3","沙漠风暴3","30",
"コラプス許可","12","座標リセット"],
"连散" => ["バックジャンプ遠","霰弹","銃で攻撃4","対象アニメウエイト",
"霰弹","銃で攻撃4","対象アニメウエイト","霰弹","銃で攻撃4","対象アニメウエイト","20",
"コラプス許可","後退リセット"],
"剑气爆破" => ["一歩前移動","一歩前移動","刀攻撃下4","剑气爆破2","刀攻撃下6-3","目標前高速移動","剑气爆破","突刺攻击-真2","対象アニメウエイト","40",
"剑气爆破3","対象アニメウエイト","40",
"コラプス許可","後退リセット-战"],
"燃烧" => ["目標前移動-法","燃烧改","魔法詠唱","挥拳2","燃烧改2","対象アニメウエイト",
"20","コラプス許可","後退リセット-法"],
"烧尽" => ["目標前移動-法","烧尽改2","魔法詠唱","挥拳2","烧尽改","対象アニメウエイト",
"20","コラプス許可","後退リセット-法"],
"高温射线" => ["目標前移動-法2","熔岩风暴","魔法詠唱","5","熔岩风暴2","挥拳2","対象アニメ",
"5","対象アニメ","5","対象アニメ",
"20","コラプス許可","10","座標リセット-法"],
"歼灭之炎" => ["目標前移動4","火魔法阵2","魔法詠唱",
"火魔法阵3","大型火球","浮空待機",
"10","待機(固定)","魔法挥舞","大型火球2","40",
"大型火球3","対象アニメウエイト","5","対象アニメウエイト","5","対象アニメウエイト",
"待機(固定)","20","コラプス許可","10","座標リセット-法"],
"冰剑" => ["バックジャンプ-法","水魔法阵","魔法詠唱","魔法挥舞2","冰剑","3","対象アニメウエイト",
"20","コラプス許可","後退リセット-法"],
"冰魄" => ["バックジャンプ-法","水魔法阵2","魔法詠唱","魔法挥舞2","冰魄","対象アニメウエイト",
"20","コラプス許可","後退リセット-法"],
"绞杀冰剑" => ["バックジャンプ-法","水魔法阵2","魔法詠唱","魔法挥舞",
"绞杀冰剑2","5","対象アニメウエイト","15",
"対象アニメウエイト","15","対象アニメウエイト","20",
"コラプス許可","10","座標リセット-法"],
"寒冰审判" => ["目標前移動4","寒冰地狱","魔法詠唱",
"寒冰地狱2","30","浮空待機",
"寒冰地狱3","2","対象アニメウエイト","寒冰地狱4","40",
"待機(固定)","70","コラプス許可","10","座標リセット-法"],
"魔法重击" => ["バックジャンプ-法","魔法阵","魔法詠唱","魔法挥舞2","対象アニメウエイト",
"15","コラプス許可","後退リセット-法"],
"半月斩" => ["目標前移動5","待機(固定)","刀攻撃下4","半月斩","30","刀攻撃下5","半月斩2","対象アニメウエイト",
"20","半月斩3","対象アニメウエイト","25","対象アニメウエイト","25","対象アニメウエイト","15",
"20","コラプス許可","後退リセット"],
"突刺2" => ["目標前移動-战","突刺攻击-真","突刺特效","突刺攻击-真2","対象アニメウエイト","20",
"コラプス許可","後退リセット-战"],
"直线冲刺" => ["一歩前移動","一歩前移動","直线冲刺2","突刺攻击-真","目標前高速移動","直线冲刺","突刺攻击-真2","対象アニメウエイト","35",
"コラプス許可","後退リセット-战"],
"毁灭冲刺" => ["一歩前移動","一歩前移動","毁灭冲刺","突刺攻击-真3","目標前高速移動","毁灭冲刺2","突刺攻击-真2","対象アニメウエイト","50",
"コラプス許可","後退リセット-战"],
"召唤岩石" => ["一歩前移動","魔法始動アニメ","10","召唤岩石","15","対象アニメウエイト",
"15","コラプス許可","後退リセット"],
"重击/敌" => ["目標前移動","敌斩击2","対象アニメウエイト","20",
"コラプス許可","座標リセット"],
"重击/敌3" => ["目標前移動","対象アニメウエイト","20",
"コラプス許可","座標リセット"],
"重击/敌2" => ["目標前移動","敌斩击2","対象アニメ","15",
"目標前移動","敌斩击2","対象アニメ","20",
"コラプス許可","座標リセット"],
"连击/敌" => ["目標前移動","対象アニメ武器","20",
"目標前移動","対象アニメ武器","20",
"目標前移動","対象アニメ武器","20",
"コラプス許可","座標リセット"],
"范围黑洞" => ["待機(固定)","黑魔法","魔法詠唱","魔法挥舞2","10","范围黑洞",
"15","Slash7","対象アニメウエイト","12","Slash7","対象アニメウエイト","12",
"Slash7","対象アニメウエイト","12","Slash7","対象アニメウエイト","18","Slash7","対象アニメ","40",
"コラプス許可","10","座標リセット-法"],
"重力爆炸" => ["目標前移動4","待機(固定)","黑魔法2","魔法詠唱","魔法挥舞2","10","重力爆炸",
"58","Slash7","対象アニメウエイト","50",
"コラプス許可","10","座標リセット-法"],
"次元裂缝" => ["目標前移動4","待機(固定)","黑魔法3","魔法詠唱","魔法挥舞","10","次元裂缝2",
"8","次元裂缝","13","対象アニメ","15","対象アニメ","15",
"対象アニメ","15","黑洞击中","対象アニメ","15","対象アニメ","15",
"対象アニメ","15","対象アニメ","15","対象アニメ","15","対象アニメ","15","対象アニメ","30",
"コラプス許可","10","座標リセット-法"],
"凝点压缩" => ["目標前移動4","待機(固定)","黑魔法4","魔法詠唱","魔法挥舞","10","黑魔法5",
"45","凝点压缩","55","凝点压缩2","対象アニメ","20","対象アニメ","20","対象アニメ","20",
"コラプス許可","10","座標リセット-法"],
"混沌之枪" => ["待機(固定)","黑魔法6","魔法詠唱","魔法挥舞","10","混沌之枪",
"10","対象アニメウエイト","35",
"コラプス許可","10","座標リセット-法"],
"黑雷击" => ["待機(固定)","黑魔法3","魔法詠唱","魔法挥舞","10","黑闪电","対象アニメ","15",
"黑闪电","対象アニメ","15","黑闪电","対象アニメ","15","火魔法阵4",
"黑闪电","対象アニメ","15","黑闪电","対象アニメ","15","黑闪电","対象アニメ","15","火魔法阵4",
"黑闪电","対象アニメ","15","黑闪电","対象アニメ","15","黑闪电","対象アニメ","15","火魔法阵4",
"黑闪电","対象アニメ","15","黑闪电","対象アニメ","15","黑闪电","対象アニメ","火魔法阵4","30",
"コラプス許可","10","座標リセット-法"],
"地狱惩罚" => ["目標前移動4","待機(固定)","魔法詠唱","黑魔法7","魔法挥舞2","10","召唤巨剑","45","黑巨剑",
"20","対象アニメ","22","対象アニメ","22","対象アニメ","30",
"コラプス許可","10","座標リセット-法"],
"裁决之力" => ["残像ON","バックジャンプ遠","待機(固定)","魔法詠唱","黑魔法8","魔法挥舞","10","対象アニメ","35",
"コラプス許可","10","座標リセット-法","残像OFF"],
"剧毒地带" => ["バックジャンプ","黑魔法","魔法詠唱","魔法挥舞2",
"剧毒地带","20","毒攻击","対象アニメウエイト","10","毒攻击","対象アニメウエイト","5",
"毒攻击","対象アニメウエイト","8",
"20","コラプス許可","10","座標リセット-法"],
"枪攻击" => ["バックジャンプ","开枪","銃で攻撃8","対象アニメウエイト","10",
"コラプス許可","後退リセット"],
"命运裁决" => ["バックジャンプ","待機(固定)","开枪","銃で攻撃8",
"対象アニメウエイト","反転","一歩前移動2","反転","10","待機(固定)",
"待機(固定)","开枪2","銃で攻撃8","対象アニメウエイト",
"开枪","銃で攻撃8","対象アニメウエイト",
"待機(固定)","反転","バックジャンプ遠","反転","开枪3","銃で攻撃8","対象アニメウエイト",
"コラプス許可","12","座標リセット"],
"高速背射" => ["待機(固定)","高速背射3","武器投げ開始","10","背射3","残像ON","目標前高速移動2","高速背射2","高速背射动作","反転",
"待機(固定)","10","高速背射","銃で攻撃8","対象アニメ2","4","高速背射","銃で攻撃8","対象アニメ2","4",
"高速背射","銃で攻撃8","対象アニメ2","10","反転",
"バックジャンプ遠","一歩後ジャンプ","バックジャンプ遠","残像OFF",
"コラプス許可","12","座標リセット",],
"魔光穿甲弹" => ["バックジャンプ遠","魔光穿甲弹","10",
"銃で攻撃5","穿甲弹","5","銃で攻撃9","対象アニメ2","30",
"銃で攻撃10","穿甲弹","5","銃で攻撃9","対象アニメ2","30",
"銃で攻撃10","穿甲弹","5","銃で攻撃9","対象アニメ2","30",
"コラプス許可","12","座標リセット"],
"其卡斯之怒" => ["待機(固定)","枪旋转","武器投げ開始","10","背射3","残像ON","前ジャンプ叩き","挥拳","瞬踢","対象アニメ2","10","目標前移動",
"瞬踢2","対象アニメ2","空翻","バックジャンプ遠","バックジャンプ2","空翻2",
"バックジャンプ2","开枪","銃で攻撃8","対象アニメ2","バックジャンプ2","开枪2","銃で攻撃8","対象アニメ2",
"バックジャンプ2","开枪3","銃で攻撃8","対象アニメ2","バックジャンプ2","开枪","銃で攻撃8","対象アニメ2",
"バックジャンプ2","开枪2","銃で攻撃8","対象アニメ2","バックジャンプ2","开枪3","銃で攻撃8","対象アニメ2",
"バックジャンプ2","开枪","銃で攻撃8","対象アニメ2","バックジャンプ2","开枪2","銃で攻撃8","対象アニメ2",
"バックジャンプ2","开枪3","銃で攻撃8","対象アニメ2","バックジャンプ2","开枪","銃で攻撃8","対象アニメ2",
"バックジャンプ2","开枪2","銃で攻撃8","対象アニメ2","バックジャンプ2","开枪3","銃で攻撃8","対象アニメ2",
"バックジャンプ2","开枪","銃で攻撃8","対象アニメ2","バックジャンプ2","开枪2","銃で攻撃8","対象アニメ2",
"バックジャンプ2","开枪3","銃で攻撃8","対象アニメ2","バックジャンプ2","开枪","銃で攻撃8","対象アニメ2",
"バックジャンプ2","开枪2","銃で攻撃8","対象アニメ2","バックジャンプ2","开枪3","銃で攻撃8","対象アニメ2",
"空翻2","バックジャンプ","装弹夹","换弹夹","40","残像OFF",
"コラプス許可","12","座標リセット",],
"精确射击" => ["バックジャンプ","待機(固定)","銃で攻撃8-7",
"开枪3","銃で攻撃8-3","対象アニメウエイト","开枪","銃で攻撃8-3","対象アニメウエイト",
"开枪2","銃で攻撃8-3","対象アニメウエイト", "开枪3","銃で攻撃8-3","対象アニメウエイト","15",
"コラプス許可","12","座標リセット"],
"螺旋丸" => ["バックジャンプ","待機(固定)","旋风冲击","25",
"前ジャンプ叩き","待機(固定)","5","旋风冲击2",
"対象アニメ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","座標リセット"],
"映月" => ["残像ON","前ジャンプ叩き","映月","対象アニメ2","空翻3","バックジャンプ遠","待機(固定)","残像OFF",
"コラプス許可","12","座標リセット",],
"终结破坏2" => ["残像ON","反転","一歩前移動2","反転",
"开枪","銃で攻撃8-3","対象アニメ2","开枪2","銃で攻撃8-3","対象アニメ2",
"开枪3","銃で攻撃8-3","対象アニメ2","开枪3","銃で攻撃8-3","対象アニメ2",
"开枪2","銃で攻撃8-3","対象アニメ2","开枪","銃で攻撃8-3","対象アニメ2",
"开枪","銃で攻撃8-3","対象アニメ2","开枪3","銃で攻撃8-3","対象アニメ2",
"开枪2","銃で攻撃8-3","対象アニメ2","开枪2","銃で攻撃8-3","対象アニメ2",
"终结破坏4","终结破坏4","终结破坏4","终结破坏","没子弹",
"バックジャンプ","挥拳3","终结破坏2","30","终结破坏3","対象アニメウエイト","対象アニメウエイト",
"コラプス許可","12","座標リセット",],
"终结破坏" => ["残像ON","バックジャンプ",
"銃で攻撃5","M134","対象アニメ2","対象アニメ2","対象アニメ2","銃で攻撃8-3","銃で攻撃8-3","銃で攻撃8-3","30",
"M134","対象アニメ2","対象アニメ2","対象アニメ2","銃で攻撃8-3","銃で攻撃8-3","銃で攻撃8-3","30",
"M134","対象アニメ2","対象アニメ2","対象アニメ2","銃で攻撃8-3","銃で攻撃8-3","銃で攻撃8-3","10",
"コラプス許可","12","座標リセット",],
"毒蛇追踪炮" => ["目標前移動4","待機(固定)","魔法詠唱","魔法挥舞","10","毒蛇追踪炮","25",
"毒蛇追踪炮2","40","毒蛇追踪炮3","毒蛇追踪炮4","30","毒蛇追踪炮5","対象アニメウエイト","50",
"コラプス許可","30","座標リセット",],
"榴弹发射" => ["目標前移動4","装榴弹","终结破坏5","銃で攻撃8-6",
"銃で攻撃8-7","銃で攻撃8","榴弹发射","20","终结破坏3","対象アニメ2","50",
"コラプス許可","12","座標リセット",],
"混沌轰炸" => ["待機(固定)","魔法詠唱","魔法挥舞","10","混沌轰炸4","25",
"混沌轰炸","180","混沌轰炸3","25","対象アニメウエイト","30","対象アニメウエイト","20",
"混沌轰炸2","15","対象アニメウエイト","6","対象アニメウエイト","6","対象アニメウエイト","6",
"対象アニメウエイト","6","対象アニメウエイト","6","対象アニメウエイト","6","対象アニメウエイト","6",
"対象アニメウエイト","6","対象アニメウエイト","6","対象アニメウエイト","6","6","対象アニメウエイト",
"6","対象アニメウエイト","6","対象アニメウエイト","6","対象アニメウエイト","6","対象アニメウエイト",
"6","対象アニメウエイト","6","対象アニメウエイト","6","対象アニメウエイト","6","対象アニメウエイト",
"6","対象アニメウエイト","6","対象アニメウエイト","6","対象アニメウエイト","6","対象アニメウエイト",
"6","対象アニメウエイト","6","対象アニメウエイト","6","対象アニメウエイト","6","対象アニメウエイト",
"6","対象アニメウエイト","6","対象アニメウエイト","6","対象アニメウエイト","6","対象アニメウエイト",
"6","対象アニメウエイト","6","対象アニメウエイト","6","対象アニメウエイト","6","対象アニメウエイト",
"6","対象アニメウエイト","6","対象アニメウエイト","6","対象アニメウエイト","6","対象アニメウエイト",
"6","対象アニメウエイト","6","対象アニメウエイト","6","対象アニメウエイト","6","対象アニメウエイト",
"6","対象アニメウエイト","6","対象アニメウエイト","6","対象アニメウエイト","6","対象アニメウエイト",
"6","対象アニメウエイト","6","対象アニメウエイト","6","対象アニメウエイト","6","対象アニメウエイト",
"6","対象アニメウエイト","6","対象アニメウエイト","6","対象アニメウエイト","6","対象アニメウエイト",
"6","対象アニメウエイト","6","対象アニメウエイト","6","対象アニメウエイト","6","対象アニメウエイト",
"6","対象アニメウエイト","6","対象アニメウエイト","6","対象アニメウエイト","6","対象アニメウエイト",
"6","対象アニメウエイト","6","対象アニメウエイト","対象アニメウエイト","30","コラプス許可","30","座標リセット",],
"消能发射" => ["バックジャンプ","銃で攻撃5",
"銃で攻撃8","消能射击","15","対象アニメ2","15",
"コラプス許可","12","座標リセット",],
"针刺发射" => ["バックジャンプ","装榴弹","针刺装弹","銃で攻撃8-6",
"銃で攻撃8-7","銃で攻撃8","开枪2","5","针刺射击","25","対象アニメ2","20",
"コラプス許可","12","座標リセット",],
"更换弹夹" => ["バックジャンプ","装弹夹","换弹夹","30","対象アニメ2",
"コラプス許可","12","座標リセット",],
"更换弹夹2" => ["バックジャンプ","装弹夹","换弹夹2","30","対象アニメ2","20",
"コラプス許可","12","座標リセット",],
"魔光瞬斩" => ["目標前移動-战","刀攻撃下","魔光瞬斩","対象アニメ","40",
"コラプス許可","バックジャンプ","後退リセット-战"],
"破碎十字" => ["破碎十字3","刀攻撃下6",
"破碎十字5","5","残像ON","目標前高速移動","5","破碎十字","刀攻撃下","対象アニメ",
"5","破碎十字4","武器振り攻撃","対象アニメ","バックジャンプ遠","刀攻撃下","破碎十字2",
"10","混沌轰炸5","対象アニメ","15","混沌轰炸5","対象アニメ","30",
"コラプス許可","バックジャンプ","後退リセット-战"],
"毁灭气息" => ["刀攻撃下6","毁灭残影","5","目標前高速移動","残像ON","反転","待機(固定)",
"后跳攻击","毁灭气息3","対象アニメウエイト","武器振り攻撃",
"武器振り攻撃","一歩後ジャンプ","一歩後ジャンプ","払い抜け","小吹き飛ばし",
"目標前高速移動","刀攻撃下","小吹き飛ばし","毁灭气息3","対象アニメウエイト",
"目標前高速移動","刀攻撃下","小吹き飛ばし","毁灭气息3","対象アニメウエイト",
"目標前移動","反転","バックジャンプ遠",
"刀攻撃下","10","毁灭气息2","混沌轰炸5","対象アニメ","10","混沌轰炸5","対象アニメ","20",
"毁灭气息4","対象アニメ","30",
"コラプス許可","12","後退リセット-战"],
"湮灭神剑" => ["刀攻撃下6","破碎十字3","5","目標前高速移動","残像ON","待機(固定)",
"后跳攻击","毁灭拔刀","対象アニメウエイト","武器振り攻撃",
"武器振り攻撃","一歩後ジャンプ","一歩後ジャンプ","払い抜け","小吹き飛ばし",
"目標前高速移動","刀攻撃下","小吹き飛ばし","毁灭拔刀","対象アニメウエイト",
"目標前高速移動","刀攻撃下","小吹き飛ばし","毁灭拔刀","対象アニメウエイト",
"目標前高速移動","刀攻撃下","小吹き飛ばし","毁灭拔刀","対象アニメウエイト",
"目標前高速移動","刀攻撃下","小吹き飛ばし","毁灭拔刀","対象アニメウエイト",
"バックジャンプ遠","刀攻撃下6","毁灭拔刀2","待機(固定)","20","15",
"毁灭拔刀3","40","变身BUG","変身解除","勝利待機",
"毁灭拔刀4","対象アニメ","10","毁灭拔刀4","対象アニメ","10","毁灭拔刀4","対象アニメ","30",
"コラプス許可","12","後退リセット"],
"重力爆破" => ["目標前移動","刀攻撃下","毁灭拔刀","対象アニメ","10",
"バックジャンプ遠","重力爆破","刀攻撃下","10","Slash7","対象アニメウエイト",
"10","Slash7","対象アニメウエイト","10","Slash7","対象アニメウエイト","10","Slash7","対象アニメウエイト",
"15","Slash7","対象アニメウエイト","20",
"コラプス許可","バックジャンプ","後退リセット-战"],
"重力回旋" => ["目標前移動4",
"待機(固定)","刀攻撃下9","重力回旋","刀攻撃下10",
"重力回旋3","対象アニメウエイト","10","重力回旋2","対象アニメウエイト","10",
"重力回旋2","対象アニメウエイト","10","重力回旋3","対象アニメウエイト","10",
"重力回旋4","対象アニメウエイト","10","接武器","30",
"残像OFF","コラプス許可","10","座標リセット-战"],
"毁灭石像" => ["目標前移動4","待機(固定)","魔法詠唱","刀攻撃下","毁灭石像2","20","毁灭石像","対象アニメ","15",
"毁灭石像","対象アニメ","18","毁灭石像","対象アニメ","18","毁灭石像","対象アニメ","18",
"毁灭石像","対象アニメ","18","毁灭石像","対象アニメ","18","毁灭石像","対象アニメ","18",
"毁灭石像","対象アニメ","18","毁灭石像","対象アニメ","18","毁灭石像","対象アニメ","20",
"コラプス許可","10","座標リセット-战"],
"重力引爆" => ["目標前移動-战","バックジャンプ遠",
"魔法詠唱","待機(固定)","空白","重力引爆","80",
"変身解除","待機(固定)","勝利待機","5",
"重力引爆2","対象アニメ","20","重力引爆3","対象アニメ","20",
"重力引爆4","対象アニメ","30",
"コラプス許可","12","後退リセット-战"],
"灵毁" => ["バックジャンプ",
"魔法詠唱","待機(固定)","刀攻撃下","対象アニメ","30",
"コラプス許可","12","後退リセット-战"],
"血之代价" => ["バックジャンプ",
"魔法詠唱","勝利待機","対象アニメ","30",
"コラプス許可","12","後退リセット"],
"时间收割" => ["バックジャンプ",
"魔法詠唱","勝利待機","时间收割2","対象アニメ","30",
"コラプス許可","12","後退リセット-战"],
"粉碎" => ["粉碎2","刀攻撃下6","30",
"前ジャンプ叩き3","粉碎","対象アニメ","30",
"コラプス許可","バックジャンプ","後退リセット-战"],
"雷霆一击" => ["バックジャンプ","雷霆一击2","刀攻撃下6","25",
"雷霆一击3","前ジャンプ叩き4","5","雷霆一击","対象アニメ","50",
"コラプス許可","バックジャンプ","後退リセット-战"],
"死亡棒球" => ["目標前移動4","死亡棒球4","投掷棒球",
"刀攻撃下","死亡棒球","30","死亡棒球3","対象アニメ","10","対象アニメ","10","対象アニメ","70",
"コラプス許可","後退リセット"],
"灰烬粉碎" => ["目標前移動4","死亡棒球2","刀攻撃下6","50",
"待機(固定)","勝利のジャンプ","钝器挥舞","灰烬粉碎","30",
"灰烬粉碎3","対象アニメウエイト","20","灰烬粉碎4","対象アニメウエイト","20",
"灰烬粉碎5","対象アニメウエイト","20","勝利のジャンプ","钝器挥舞","灰烬粉碎7",
"65","灰烬粉碎6","灰烬粉碎击中2","対象アニメウエイト",
"50","灰烬粉碎2","灰烬粉碎击中","対象アニメウエイト","30",
"コラプス許可","10","座標リセット-战"],
"旋转锤" => ["目標前移動-战","旋转锤","刀攻撃下-2","対象アニメ","8","旋转锤","刀攻撃下-2","対象アニメ","8",
"旋转锤","刀攻撃下-2","対象アニメ","20",
"コラプス許可","12","後退リセット-战"],
"暴风锤" => ["目標前移動","暴风锤","旋转打","対象アニメ","暴风锤","旋转打","対象アニメ",
"暴风锤","旋转打","対象アニメ","暴风锤","旋转打","対象アニメ",
"暴风锤","旋转打","対象アニメ","暴风锤","旋转打","対象アニメ",
"暴风锤","旋转打","対象アニメ","暴风锤","旋转打","対象アニメ",
"コラプス許可","12","後退リセット"],
"熔岩锤" => ["バックジャンプ","熔岩锤2","刀攻撃下6","20",
"前ジャンプ叩き4","5","熔岩锤","対象アニメ","50",
"コラプス許可","後退リセット-战"],
"范围冲击" => ["バックジャンプ","范围冲击2","刀攻撃下6","50",
"待機(固定)","勝利のジャンプ","钝器挥舞","灰烬粉碎","灰烬粉碎击中2","対象アニメ","30",
"范围冲击","灰烬粉碎击中","対象アニメ","30",
"コラプス許可","後退リセット-战"],
"高速粉碎" => ["バックジャンプ","高速粉碎2","刀攻撃下6","15",
"破碎十字5","5","残像ON","目標前高速移動","待機(固定)","空白","5",
"高速粉碎","70","变身BUG","変身解除3","座標リセット","勝利待機2",
"高速粉碎3","対象アニメ","15","高速粉碎3","対象アニメ","15",
"高速粉碎4","対象アニメ","15","高速粉碎5","対象アニメ","15",
"高速粉碎4","対象アニメ","15","高速粉碎3","対象アニメ","15",
"高速粉碎3","対象アニメ","15","高速粉碎5","対象アニメ","30","残像OFF",
"コラプス許可","12","座標リセット-战"],
"极度鄙视" => ["一歩前移動-慢","鄙视动作","极度鄙视","15",
"対象アニメ","50",
"コラプス許可","後退リセット"],
"怒火燃烧" => ["バックジャンプ","刀攻撃下","燃烧怒火","対象アニメ","50",
"コラプス許可","後退リセット"],
"自然毁灭" => ["残像ON","一歩前移動","自然毁灭","70","自然毁灭2",
"対象アニメ","50","残像OFF",
"コラプス許可","後退リセット"],
"撕裂" => ["目標前移動","対象アニメ","10","目標前移動","対象アニメ","10",
"目標前移動","対象アニメ","10",
"20","コラプス許可","後退リセット"],
"天空怒吼" => ["残像ON","一歩前移動","天空怒吼2","40","天空怒吼","20",
"対象アニメ","10","対象アニメ","10","対象アニメ","40","残像OFF",
"コラプス許可","後退リセット"],
"雷霆重击" => ["雷霆重击2","刀攻撃下6","15",
"目標前移動-战","刀攻撃下","雷霆重击","対象アニメウエイト",
"コラプス許可","バックジャンプ","後退リセット-战"],
"残忍突刺" => ["目標前移動-战","突刺攻击-真","突刺攻击-真2","残忍突刺","対象アニメウエイト","20",
"コラプス許可","後退リセット-战"],
"雷霆突袭" => ["残像ON","目標前移動-战","雷霆突袭","対象アニメウエイト","刀攻撃下","6",
"目標前移動-战","武器振り攻撃","小吹き飛ばし","雷霆突袭","対象アニメウエイト","6",
"一歩後ジャンプ",
"目標前移動-战","刀攻撃下","小吹き飛ばし","雷霆突袭","対象アニメウエイト","バックジャンプ","10",
"目標前移動-战","刀攻撃下","雷霆重击","雷霆突袭","対象アニメウエイト",
"待機(固定)","15",
"コラプス許可","バックジャンプ","残像OFF","座標リセット-战"],
"充电冲刺" => ["一歩前移動","一歩前移動","充电突刺2","10","突刺攻击-真","目標前高速移動","充电突刺","突刺攻击-真2","対象アニメウエイト","35",
"コラプス許可","後退リセット-战"],
"天空挥舞" => ["バックジャンプ","天空挥舞5","刀攻撃下6","30",
"残像ON","目標前高速移動","待機(固定)","空白","20",
"天空挥舞","対象アニメ","2","天空挥舞4","対象アニメ","2","天空挥舞2","対象アニメ","50",
"天空挥舞2","対象アニメ","2","天空挥舞3","対象アニメ","2","天空挥舞","対象アニメ","2",
"天空挥舞2","対象アニメ","2","天空挥舞3","対象アニメ","2","天空挥舞","対象アニメ","2",
"天空挥舞","対象アニメ","2","天空挥舞4","対象アニメ","2","天空挥舞2","対象アニメ","2",
"天空挥舞","対象アニメ","2","天空挥舞3","対象アニメ","2","天空挥舞","対象アニメ","2",
"天空挥舞","対象アニメ","2","天空挥舞4","対象アニメ","2","天空挥舞2","対象アニメ","10",
"变身BUG","変身解除",
"残像OFF","コラプス許可","座標リセット-战"],
"毁灭剑气" => ["目標前移動-战","バックジャンプ遠","待機(固定)","刀攻撃下4","毁灭剑气","刀攻撃下6-3","30",
"刀攻撃下5","毁灭剑气2","対象アニメ","30","毁灭剑气3","対象アニメ","30",
"毁灭剑气4","対象アニメ","50",
"コラプス許可","後退リセット-战"],
"雷霆半月" => ["目標前移動-战","バックジャンプ遠","バックジャンプ遠","待機(固定)","刀攻撃下4","雷霆半月","30",
"刀攻撃下5","雷霆半月2","毁灭剑气5","対象アニメウエイト","50",
"雷霆半月3","対象アニメ","15","対象アニメ","10","対象アニメ","10","対象アニメ","30",
"20","コラプス許可","後退リセット-战"],
"湮灭冲刺" => ["一歩前移動","一歩前移動","湮灭冲刺","突刺攻击-真3","35",
"目標前高速移動","湮灭冲刺2","突刺攻击-真2","対象アニメ","30","対象アニメウエイト",
"コラプス許可","後退リセット-战"],
"愤怒中的绝望" => ["一歩前移動","一歩前移動","勝利待機","愤怒中的绝望","50","怒吼","愤怒中的绝望2","対象アニメ","35",
"コラプス許可","後退リセット"],
"致命砍击" => ["破碎十字3","刀攻撃下6",
"目標前移動","致命斩击","刀攻撃下","対象アニメ","50",
"コラプス許可","後退リセット"],
"光能重箭" => ["目標前移動4","弓矢攻撃","光能重箭","25",
"対象アニメウエイト","15","コラプス許可","10","座標リセット"],
"光能散箭" => ["バックジャンプ","待機(固定)","弓矢攻撃","光能散箭","10",
"対象アニメ","10","対象アニメ","25","コラプス許可","10","座標リセット"],
"魔化冰箭" => ["バックジャンプ","待機(固定)","弓矢攻撃","魔化冰箭","20","魔化冰箭2","25","待機(固定)",
"対象アニメウエイト","15","コラプス許可","10","座標リセット"],
"光能突击射" => ["待機(固定)","弓矢攻撃","光能突袭箭","15",
"対象アニメウエイト","バックジャンプ",
"弓矢攻撃","光能突袭箭","22","対象アニメウエイト",
"弓矢攻撃","光能突袭箭","22","対象アニメウエイト",
"弓矢攻撃","光能突袭箭","22","対象アニメウエイト",
"弓矢攻撃","光能突袭箭","22","対象アニメウエイト",
"弓矢攻撃","光能突袭箭","22","対象アニメウエイト",
"コラプス許可","12","座標リセット"],
"突袭光箭" => ["残像ON","前ジャンプ叩き","バックジャンプ遠","一歩後ジャンプ","バックジャンプ遠","弓矢攻撃","高压光箭2","15",
"高压光箭","10","対象アニメ","40",
"コラプス許可","10","座標リセット"],
"极速背射" => ["残像ON","バックジャンプ遠","待機(固定)","弓矢攻撃3","极速背射",
"対象アニメ","15","极速背射","対象アニメ","15",
"极速背射2","対象アニメ","15","极速背射3","対象アニメ","15",
"极速背射","対象アニメ","15","极速背射2","対象アニメ","15",
"极速背射3","対象アニメ","15","极速背射","対象アニメ","15",
"极速背射2","対象アニメ","15","极速背射3","対象アニメ","15",
"极速背射","対象アニメ","15","极速背射2","対象アニメ","15",
"极速背射3","対象アニメ","15","极速背射","対象アニメ","15","残像OFF",
"极速背射4","60",
"コラプス許可","12","座標リセット",],
"多重天空射" => ["バックジャンプ遠反","弓矢攻撃2","多重突袭7","30","多重突袭","70",
"多重突袭2","対象アニメウエイト","20","多重突袭3","対象アニメウエイト","20",
"多重突袭4","対象アニメウエイト","20","多重突袭5","対象アニメウエイト","20",
"多重突袭6","対象アニメウエイト","20","多重突袭4","対象アニメウエイト","20",
"多重突袭2","対象アニメウエイト","20","多重突袭3","対象アニメウエイト","20",
"多重突袭4","対象アニメウエイト","20","多重突袭2","対象アニメウエイト","20",
"コラプス許可","10","座標リセット"],
"天空神箭" => ["目標前移動4","待機(固定)","弓矢攻撃","天空神箭2","70",
"天空神箭3","70","天空神箭",
"対象アニメ","10","対象アニメ","10","対象アニメ","10","対象アニメ","50",
"コラプス許可","10","座標リセット"],
"能源补充" => ["一歩前移動","弓矢攻撃3","能源补充","対象アニメ","50",
"コラプス許可","10","座標リセット"],
"极度脑残" => ["一歩前移動","魔法詠唱","魔法挥舞","极度脑残","対象アニメウエイト",
"50","コラプス許可","後退リセット"],
"星辰的裁决" => ["目標前移動-战","突き攻撃","星辰的裁决","対象アニメウエイト",
"コラプス許可","後退リセット-战"],
"雷霆十字斩" => ["破碎十字3","刀攻撃下6","15",
"目標前移動-战","刀攻撃下","雷霆十字斩","対象アニメ","5",
"武器振り攻撃","雷霆十字斩2","対象アニメ","20","バックジャンプ",
"刀攻撃下","雷霆十字斩3","雷霆十字斩4","対象アニメ","10","雷霆十字斩4","対象アニメ","10",
"雷霆十字斩4","対象アニメ","30",
"コラプス許可","10","座標リセット-战"],
"穿梭光剑" => ["穿梭光剑","25","残像ON","目標前高速移動",
"刀攻撃下","穿梭光剑2","対象アニメ","5",
"目標前高速移動","刀攻撃下","穿梭光剑2","対象アニメ","2",
"目標前高速移動","刀攻撃下","穿梭光剑3","対象アニメ","2",
"目標前高速移動","刀攻撃下","穿梭光剑4","対象アニメ","2",
"目標前高速移動","刀攻撃下","穿梭光剑2","対象アニメ","2",
"目標前高速移動","刀攻撃下","穿梭光剑4","対象アニメ","2",
"目標前高速移動","刀攻撃下","穿梭光剑3","対象アニメ","2",
"目標前高速移動","刀攻撃下","穿梭光剑2","対象アニメ","30",
"バックジャンプ遠",
"コラプス許可","座標リセット-战","残像OFF",],
"湮灭圣剑" => ["残像ON","目標前移動4","待機(固定)",
"湮灭圣剑2","刀攻撃下3","30","湮灭圣剑","25",
"対象アニメ","30","対象アニメ","30","対象アニメ","50",
"コラプス許可","10","座標リセット","残像OFF",],
"神圣制裁" => ["一歩前移動","神圣制裁2","魔法詠唱","魔法挥舞","神圣制裁",
"30","対象アニメウエイト","30",
"20","コラプス許可","後退リセット"],
"圣光风暴" => ["一歩前移動","神圣制裁2","魔法詠唱","魔法挥舞","圣光风暴",
"対象アニメウエイト","20","圣光风暴2","対象アニメウエイト","30",
"圣光风暴3","対象アニメウエイト","20",
"20","コラプス許可","後退リセット"],
"士气呐喊" => ["一歩前移動","呐喊","士气呐喊","対象アニメウエイト",
"50","コラプス許可","後退リセット"],
"拯救之手" => ["移动目标身后2","10","魔法始動アニメ","魔法詠唱","24","待機(固定)",
"拯救之手","30","対象アニメウエイト","コラプス許可","10","座標リセット"],
"灰烬燃烧" => ["目標前移動-法","灰烬燃烧改","魔法詠唱","挥拳2","灰烬燃烧改2","対象アニメウエイト",
"40","コラプス許可","後退リセット-法"],
"烈焰灰烬" => ["目標前移動4","强化火法阵","魔法詠唱","魔法挥舞2","烈焰灰烬",
"35","流星2","対象アニメウエイト",
"40","コラプス許可","後退リセット-法"],
"熔岩地带" => ["目標前移動4","强化火法阵2","魔法詠唱","魔法挥舞2",
"熔岩地带","35","対象アニメ","15","対象アニメ","15","対象アニメ","15",
"対象アニメ","50",
"20","コラプス許可","10","座標リセット-法"],
"烈焰天罚" => ["目標前移動4","烈焰天罚启动","魔法詠唱","魔法挥舞",
"烈焰天罚4","25","烈焰天罚","対象アニメウエイト",
"魔法挥舞","烈焰天罚5","25","烈焰天罚2","対象アニメウエイト",
"魔法挥舞","烈焰天罚6","25","烈焰天罚3","対象アニメウエイト",
"待機(固定)","20","コラプス許可","10","座標リセット-法"],
"地狱火柱" => ["目標前移動4","烈焰天罚启动","魔法詠唱","魔法挥舞2",
"地狱火柱","15","対象アニメ","15","対象アニメ","15","対象アニメ",
"15","対象アニメ","15","対象アニメ","15","対象アニメ","15","対象アニメ",
"15","対象アニメ","30",
"待機(固定)","20","コラプス許可","10","座標リセット-法"],
"魔化冰剑" => ["バックジャンプ-法","强化水法阵","魔法詠唱","魔法挥舞2","魔化冰剑","10","対象アニメウエイト",
"30","コラプス許可","後退リセット-法"],
"急冻炸弹" => ["目標前移動4","强化水法阵","魔法詠唱","魔法挥舞2","急冻炸弹","対象アニメウエイト",
"20","コラプス許可","後退リセット-法"],
"急冻冰刺" => ["目標前移動4","强化水法阵2","魔法詠唱","魔法挥舞2","急冻冰刺","15",
"挥拳2","80","急冻冰刺2","50","対象アニメウエイト","30",
"コラプス許可","後退リセット-法"],
"零度空间" => ["目標前移動4","零度空间启动","魔法詠唱","魔法挥舞2",
"零度空间","70","零度空间2","対象アニメ","15","対象アニメ","15","対象アニメ",
"15","対象アニメ","15","対象アニメ","15","対象アニメ","15","対象アニメ",
"15","対象アニメ","15","対象アニメ","15","対象アニメ","30",
"待機(固定)","20","コラプス許可","10","座標リセット-法"],
"痛恨一击" => ["目標前移動-战","刀攻撃下","対象アニメウエイト",
"コラプス許可","後退リセット-战"],
"地裂斩" =>["待機(固定)","勝利のジャンプ","武器振り攻撃","真空碎","30",
"対象アニメウエイト",
"コラプス許可","10","座標リセット-战"],
"半月锤" => ["刀攻撃下6","半月锤2","25",
"目標前移動-战","刀攻撃下11","半月锤","8","対象アニメ","40",
"半月锤3","対象アニメ","35",
"コラプス許可","バックジャンプ","後退リセット-战"],
"神圣粉碎" => ["熔岩锤2","刀攻撃下6","20",
"前ジャンプ叩き4","5","神圣粉碎","対象アニメ","40",
"神圣粉碎2","灰烬粉碎击中","対象アニメ","60",
"コラプス許可","後退リセット-战"],
"天罚" => ["目標前移動-战","刀攻撃下","対象アニメ武器","15",
"刀攻撃下11","半月锤","8","対象アニメ","20",
"バックジャンプ","刀攻撃下","天罚","対象アニメ","15",
"対象アニメ","15","対象アニメ","30",
"コラプス許可","後退リセット-战"],
"雷电惩处" => ["一歩前移動","魔法始動アニメ","魔法詠唱","24","対象アニメ","15",
"対象アニメ","15","対象アニメ","15",
"コラプス許可","10","座標リセット"],
"粉碎冲撞" => ["一歩後移動","一歩後移動","15","粉碎冲撞","目標前高速移動3",
"対象アニメウエイト","15",
"コラプス許可","10","座標リセット"],
"地震咆哮" => ["一歩前移動","一歩前移動","地震咆哮","15",
"地震咆哮2","10","対象アニメウエイト","15",
"コラプス許可","10","座標リセット"],
"神圣痛击" => ["刀攻撃下6","神圣痛击2","25",
"目標前移動-战","神圣痛击","刀攻撃下","対象アニメウエイト",
"コラプス許可","後退リセット-战"],
"幻月粉碎" => ["刀攻撃下6","幻月粉碎2","30",
"目標前移動-战","刀攻撃下11","幻月粉碎","8","対象アニメ","5","対象アニメ","5",
"対象アニメ","40","灰烬粉碎击中","対象アニメ","35",
"コラプス許可","バックジャンプ","後退リセット-战"],
"审判雷暴" => ["目標前移動-战","刀攻撃下11","审判雷暴4","8","灰烬粉碎击中","対象アニメ","20",
"バックジャンプ遠","刀攻撃下","审判雷暴5","20","审判雷暴","対象アニメ","10",
"审判雷暴","対象アニメ","10","审判雷暴","対象アニメ","10","审判雷暴","対象アニメ","10",
"审判雷暴","対象アニメ","10","审判雷暴","対象アニメ","10","审判雷暴","対象アニメ","20",
"コラプス許可","後退リセット-战"],
"圣光湮灭" => ["刀攻撃下6","圣光湮灭","70",
"前ジャンプ叩き4","5","圣光湮灭2","対象アニメ","40",
"圣光湮灭3","対象アニメ","50",
"バックジャンプ遠","刀攻撃下","圣光湮灭4","対象アニメ","20","対象アニメ","20","対象アニメ","35",
"コラプス許可","後退リセット-战"],
"小刀" => ["目標前移動-战","突刺攻击-真","突刺攻击-真2","対象アニメウエイト",
"コラプス許可","後退リセット-战"],
"强力投掷" => ["目標前移動-战","バックジャンプ遠","强力投掷","投掷姿势2",
"対象アニメウエイト",
"コラプス許可","10","座標リセット"],
"闪电投掷" => ["目標前移動-战","バックジャンプ遠","バックジャンプ遠",
"投掷姿势","闪电投掷","対象アニメウエイト",
"コラプス許可","10","座標リセット"],
"星辰破裂" => ["目標前移動-战","バックジャンプ遠","バックジャンプ遠",
"星辰破裂","投掷姿势3","対象アニメウエイト",
"コラプス許可","10","座標リセット"],
"暗杀" => ["バックジャンプ","暗杀","魔法詠唱","10","目標前高速移動","暗杀2","反転","バックジャンプ遠反","一歩前ジャンプ",
"突刺攻击-真","暗杀3","突刺攻击-真2","対象アニメウエイト","反転",
"バックジャンプ遠","一歩後ジャンプ","残像OFF",
"コラプス許可","12","座標リセット"],
"夺命背击" => ["背射3","残像ON","目標前高速移動","反転","バックジャンプ遠反","一歩前ジャンプ",
"突刺攻击-真","夺命背击","突刺攻击-真2","夺命背击5","対象アニメ","20","反転",
"夺命背击3","空中投掷","夺命背击7","対象アニメ","残像OFF","20",
"コラプス許可","12","座標リセット",],
"无影之刃" => ["バックジャンプ","暗杀","魔法詠唱","10","目標前高速移動",
"待機(固定)","残像ON","无影之刃","40","无影之刃2","対象アニメ",
"变身BUG","変身解除","无影之刃3","高空刺","无影之刃4","対象アニメ","50",
"コラプス許可","12","座標リセット"],
"机械毒刃" => ["バックジャンプ","机械毒刃","召唤毒刃","机械毒刃2","目標前移動",
"机械毒刃3","毒刃动作","対象アニメウエイト",
"コラプス許可","12","座標リセット"],
"强化暗杀" => ["バックジャンプ","强化暗杀","魔法詠唱","待機(固定)","30","目標前高速移動",
"强化暗杀2","反転","バックジャンプ遠反","一歩前ジャンプ","一歩前ジャンプ",
"强化暗杀3","刀攻撃下","夺命背击5","対象アニメウエイト","25",
"高空刺2","强化暗杀6","対象アニメ","30","强化暗杀4","反転",
"バックジャンプ遠","一歩後ジャンプ","座標リセット",
"召唤毒刃","强化暗杀5","対象アニメ","50","残像OFF",
"コラプス許可","12"],
"机械毁灭" => ["背射3","残像ON","目標前高速移動","反転","一歩前ジャンプ","机械毁灭","バックジャンプ遠反3",
"机械毁灭5","対象アニメ","20","反転",
"机械毁灭2","空中投掷2","机械毁灭3","机械毁灭4","対象アニメ","10",
"机械毁灭4","対象アニメ","10","机械毁灭4","対象アニメ","10",
"机械毁灭4","対象アニメ","10","机械毁灭4","対象アニメ","10",
"机械毁灭4","対象アニメ","10","空白","机械毁灭6","110","机械毁灭7",
"対象アニメ","16","対象アニメ","16","対象アニメ","15","变身BUG","変身解除4",
"コラプス許可","12","座標リセット",],
"无影轰炸" => ["バックジャンプ","无影轰炸5","魔法詠唱","待機(固定)","30","目標前高速移動",
"空白","待機(固定)","残像ON","无影轰炸","40","无影之刃2","対象アニメ","30",
"无影轰炸2","130","无影轰炸4","対象アニメ","15","対象アニメ","85",
"变身BUG","変身解除4",
"コラプス許可","12","座標リセット"],
"重力球2" => ["一歩前移動","魔法始動アニメ","魔法詠唱","24","重力球2","25","対象アニメ","35",
"コラプス許可","10","座標リセット"],
"重力球3" => ["一歩前移動","魔法始動アニメ","魔法詠唱","24","金属重压","35","対象アニメ","80",
"コラプス許可","10","座標リセット"],
"时间屏障" => ["バックジャンプ","魔法始動アニメ","魔法詠唱","时间屏障","25","対象アニメウエイト","30",
"コラプス許可","後退リセット"],
"爆发" => ["10","挥拳3","対象アニメウエイト",
"20","コラプス許可","後退リセット-法"],
"召唤流星" => ["目標前移動4","流星启动","魔法詠唱","40",
"巨大流星","40","対象アニメウエイト","50",
"待機(固定)","20","コラプス許可","10","座標リセット-法"],
"灰烬之雨" => ["目標前移動4","待機(固定)","灰烬之雨2","魔法詠唱","70","灰烬之雨",
"30","対象アニメ","40","対象アニメ","20","対象アニメ","20","対象アニメ",
"58","対象アニメ","40",
"コラプス許可","10","座標リセット-法"],
"墓地炸弹" => ["残像ON","一歩前移動","10","墓地炸弹","70","墓地炸弹2",
"対象アニメ","50","残像OFF",
"コラプス許可","後退リセット"],
"死亡墓碑" => ["残像ON","一歩前移動","10","死亡墓碑","40",
"対象アニメ","40","残像OFF",
"コラプス許可","後退リセット"],
"无影光剑-2" => ["一闪3","20","残像ON","目標前高速移動5","3",
"一闪","対象アニメ","刀攻撃下12","70",
"一闪2","5","対象アニメウエイト","30",
"コラプス許可","座標リセット-战","残像OFF",],
"黑色抹杀" => ["残像ON","目標前移動4",
"待機(固定)","弓矢攻撃","黑色抹杀","80","黑色抹杀2",
"対象アニメウエイト","40",
"残像OFF","コラプス許可","10","座標リセット"],
"重力雨" => ["目標前移動4","待機(固定)","黑魔法3","魔法詠唱","魔法挥舞","10","重力雨",
"50","重力雨2","90","重力雨3","対象アニメ","20","対象アニメ","20",
"対象アニメ","20","対象アニメ","20","対象アニメ","20",
"対象アニメ","20","対象アニメ","40",
"コラプス許可","10","座標リセット-法"],
"魔法爆破" => ["异次元","目標前移動4","歼灭之炎"],
"强力穿甲弹" => ["バックジャンプ","10","强力穿甲弹","20","銃で攻撃8-8","40","対象アニメウエイト","30",
"コラプス許可","後退リセット"],
"炎龙碎" => ["バックジャンプ","炎龙碎","刀攻撃下6","25",
"炎龙碎2","前ジャンプ叩き5","5","炎龙碎3","対象アニメ","50",
"コラプス許可","バックジャンプ","後退リセット-战"],
#-------------------------------------------------------------------------------
"終了" => ["終了"]}
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 "待機"
when 4,5,12
return "待機3"
end
# 上記のアクターID以外すべてに適用されるアクション
return "待機"
end
#--------------------------------------------------------------------------
# ● ピンチ(HP1/4以下)
#--------------------------------------------------------------------------
def pinch
case @actor_id
when 1
return "ピンチ待機"
when 4,5,12
return "ピンチ待機-法"
end
# 上記のアクターID以外すべてに適用されるアクション
return "ピンチ待機"
end
#--------------------------------------------------------------------------
# ● 防御
#--------------------------------------------------------------------------
def defence
case @actor_id
when 1
return "防御"
when 4,5,12
return "防御-法"
end
# 上記のアクターID以外すべてに適用されるアクション
return "防御"
end
#--------------------------------------------------------------------------
# ● ダメージ 対象アニメ時、ヒットしていればこのアクションを取ります
#--------------------------------------------------------------------------
def damage_hit
case @actor_id
when 2,6,10
return "ダメージ凯兰"
when 1,7,9,3,8,11
return "ダメージ亚特"
when 4,5,12
return "ダメージ丽娜"
end
# 上記のアクターID以外すべてに適用されるアクション
return "ダメージ"
end
#--------------------------------------------------------------------------
# ● 回避 対象アニメ時、ヒットしていなければこのアクションを取ります
#--------------------------------------------------------------------------
def evasion
case @actor_id
when 1
return "回避"
when 4,5,12
return "回避-法"
end
# 上記のアクターID以外すべてに適用されるアクション
return "回避"
end
#--------------------------------------------------------------------------
# ● コマンド入力前動作
#--------------------------------------------------------------------------
def command_b
case @actor_id
when 1
return "コマンド入力"
when 4,5,12
return "コマンド入力-法"
end
# 上記のアクターID以外すべてに適用されるアクション
return "コマンド入力"
end
#--------------------------------------------------------------------------
# ● コマンド入力後動作
#--------------------------------------------------------------------------
def command_a
case @actor_id
when 1
return "コマンド入力後"
when 4,5,12
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 "戦闘開始"
when 4,5,12
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 13,14,15
return "shadow02"
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 ""
end
# 上記のエネミーID以外すべてに適用される影グラフィック
return ""
end
#--------------------------------------------------------------------------
# ● 影グラフィックの位置を微調整
#--------------------------------------------------------------------------
# return [横座標, 縦座標]
def shadow_plus
case @enemy_id
when 1
return [ 0, -8]
end
# 上記のエネミーID以外すべてに適用される位置
return [ 0, 0]
end
#--------------------------------------------------------------------------
# ● エネミー武器設定 アクションとアニメは武器のものに反映されます
#--------------------------------------------------------------------------
# return 1 ←この数字が武器ID。0にすると素手扱いになります。
# エネミーアニメをONにしていると画像も表示されます。
def weapon
case @enemy_id
when 1
return 88
when 2
return 89
when 3
return 88
when 4
return 90
when 10
return 87
when 11
return 87
when 12
return 87
when 13
return 87
when 14
return 87
when 15
return 96
when 16
return 97
when 18
return 102
when 19
return 103
when 20
return 104
when 22,23,24
return 112
when 25
return 113
when 5
return 166
when 6
return 167
when 7
return 169
when 8
return 170
when 26
return 174
when 27
return 175
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 4,15,16,24,25,8,26,27
return 3
end
# 上記のエネミーID以外すべてに適用されるコラプス
return 2
end
#--------------------------------------------------------------------------
# ● エネミー行動回数 1ターンに何回行動するか
#--------------------------------------------------------------------------
# 回数 確率 補正
# return [ 2, 100, 50]
#
# 回数…最大行動回数
# 確率…次の行動を取る確率。数値は%
# 補正…素早さ補正。行動するたびにこの数値%分素早さが低下
def action_time
case @enemy_id
when 105
return [ 2, 100, 100]
end
# 上記のエネミーID以外すべてに適用される行動回数
return [ 1, 100, 100]
end
#--------------------------------------------------------------------------
# ● エネミーアニメ
#--------------------------------------------------------------------------
# エネミーにアニメさせるか trueにするとアクターと同等の扱いになります。
# [設定方法]
# 1.エネミーのアニメ画像をキャラクターフォルダに用意
# 2.データベースのエネミーバトラーファイル名を、参照するキャラファイル名にする
def anime_on
case @enemy_id
when 999
return true
end
# 上記のエネミーID以外すべてに適用されるアニメ設定
return false
end
#--------------------------------------------------------------------------
# ● エネミーアニメ時の自動反転
#--------------------------------------------------------------------------
# 上のアニメがONになっているエネミーの画像や武器アニメを自動反転させるならtrue
def action_mirror
case @enemy_id
when 999
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,7,5
return "状態異常待機"
when 6
return "睡眠待機"
when 9
return "烧伤待机"
when 8
return "眩晕待机"
when 5
return "眩晕待机"
when 10
return "出血待机"
when 11
return "冰冻待机"
when 2,25,57
return "中毒待机"
when 4
return "无语待机"
when 17
return "恢复待机"
when 47
return "恢复待机"
when 18
return "恢复待机2"
when 23
return "裁决之力-状态"
when 24
return "魔法反射"
when 30
return "血之代价待机"
when 31
return "时间收割待机"
when 33
return "怒火燃烧-待机"
when 38
return "怒绝-待机"
when 42
return "能源补充-待机"
when 43
return "极度脑残-待机"
when 46
return "力量反射-待机"
when 58
return "时间屏障待机"
when 59
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 10 # 出血
return ["スリップダメージ"]
when 9 # 烧伤
return ["スリップダメージ"]
when 25,57 # 剧毒
return ["スリップダメージ"]
when 44 # リフレクション
return ["魔法反射/93"]
when 50 # MP1%回復
return ["POPなし","スリップダメージ"]
when 51 # MP2%回復
return ["POPなし","スリップダメージ"]
when 52 # MP3%回復
return ["POPなし","スリップダメージ"]
when 53 # MP4%回復
return ["POPなし","スリップダメージ"]
when 54 # MP5%回復
return ["POPなし","スリップダメージ"]
when 55 # MP6%回復
return ["POPなし","スリップダメージ"]
when 38 # MP无限
return ["スリップダメージ"]
when 27 # 能源消耗
return ["スリップダメージ"]
when 29 # 持续出血
return ["スリップダメージ"]
when 30 # 血之代价
return ["スリップダメージ"]
when 42 # 能源补充
return ["スリップダメージ"]
when 17 # HMコンバータ
return ["スリップダメージ"]
when 47 # HMコンバータ
return ["スリップダメージ"]
when 62 # MHコンバータ
return ["スリップダメージ"]
when 52 # 魔法填充
return ["スリップダメージ"]
when 16 # 完美防御
return ["魔法無効/297","物理無効/297"]
when 18 # 神恩
return ["魔法無効/297","物理無効/297","スリップダメージ"]
when 22 # 魔法镜面
return ["魔法無効/396"]
when 24 # 强魔法镜面
return ["魔法反射/450"]
when 46 # 强物理镜面
return ["物理反射/674"]
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 10 # 出血
return [["hp", 0, 2, true, true]]
when 9 # 烧伤
return [["hp", 0, 1, true, true]]
when 17 # 恢复
return [["hp", 0, -5, true, true]]
when 18 # 恢复2
return [["hp", 0, -10, true, true]]
when 25,57 # 剧毒
return [["hp", 0, 5, true, true]]
when 27 # 消能
return [["mp", 0, 15, true, true]]
when 29 # 持续出血
return [["hp", 0, 5, true, true]]
when 30 # 血之代价
return [["hp", 0, 10, true, true]]
when 38,52 # mp无限
return [["mp", 0, -100, true, true]]
when 42 # 能源补充
return [["mp", 0, -20, true, true]]
when 47 # 强化治愈
return [["hp", 0, -7, true, true]]
end
return []
end
end
#==============================================================================
# ■ module RPG
#------------------------------------------------------------------------------
# 武器アクション設定です。
#==============================================================================
class Weapon
#--------------------------------------------------------------------------
# ● アクション指定 装備している武器のIDから通常攻撃のアクションを決めます。
#--------------------------------------------------------------------------
# when 1 ←この数字が武器ID
# return "通常攻撃" ←対応する通しアクション名を入れてください
def base_action
case @id
when 1,9,10,11,12,13,14,15,16,2,18,19,20,21,22,23,24,25,78,79,80,81,82,83,84,85,93,98,105
return "刀攻撃"
when 115,116,117,118,133,134,135,136,144,156,157,158,159,181,182,**,184,185,186,187,**
return "刀攻撃"
when 190,191,192,193,194,195,196,197
return "刀攻撃"
when 3,27,28,29,30,31,32,33,34
return "弓箭"
when 92,108,151,152,153,154
return "枪攻击"
when 94
return "十字刀攻撃"
when 95,107
return "钝器"
when 99,111
return "光箭攻击"
when 5,36,37,38,39,40,41,42,43,106,109,124,125,126,127,168,178,179
return "小刀"
end
# 上記のID以外すべてに適用されるアクション
return "通常攻撃"
end
#--------------------------------------------------------------------------
# ● グラフィック指定 装備している武器のIDから武器グラフィックを指定します
#--------------------------------------------------------------------------
# return "001-Weapon01" ←対応する武器グラフィックのファイル名を入れてください
# 武器グラフィックはキャラクターフォルダに入れてください
# アイコンを利用する場合、IDにないものは全てアイコン画像を利用します
# 特定の武器を非表示にしたい場合は空の画像を用意して、それを指定します
def graphic
case @id
when 178
return "毒刺[强化1]"
when 179
return "毒刺[强化2]"
when 181
return "天空骑士的陨星之泣"
when 182
return "天空骑士的陨星之泣[强化1]"
when **
return "天空骑士的陨星之泣[强化1]"
when 184
return "天空骑士的陨星之泣[强化2]"
when 185
return "天空骑士的陨星之泣[强化2]"
when 186
return "天空骑士的陨星之泣[强化3]"
when 187
return "天空骑士的陨星之泣[强化3]"
when **
return "天空骑士的陨星之泣[强化4]"
when 190
return "天空骑士的巨人突击刃"
when 191
return "天空骑士的巨人突击刃[强化1]"
when 192
return "天空骑士的巨人突击刃[强化1]"
when 193
return "天空骑士的巨人突击刃[强化2]"
when 194
return "天空骑士的巨人突击刃[强化2]"
when 195
return "天空骑士的巨人突击刃[强化3]"
when 196
return "天空骑士的巨人突击刃[强化3]"
when 197
return "天空骑士的巨人突击刃[强化4]"
end
# 上記ID以外は全てアイコン画像を利用
return ""
end
#--------------------------------------------------------------------------
# ● 飛ばしアニメに貼り付ける武器グラフィック キャラクターフォルダを参照します
#--------------------------------------------------------------------------
# アニメ飛ばし用の武器画像は上の設定とは別に指定。弓と矢の表現などに。
# ここで設定しなかった武器は上の画像と同じになります。
def flying_graphic
case @id
when 999
return "毒刺[强化3]"
end
# 上記ID以外は全て上の画像を利用
return ""
end
end
#==============================================================================
# ■ module RPG
#------------------------------------------------------------------------------
# スキルアクション設定です。
#==============================================================================
class Skill
#--------------------------------------------------------------------------
# ● スキルIDからアクションを決めます。
#--------------------------------------------------------------------------
def base_action
case @id
when 2
return "突刺2"
when 1
return "重击"
when 3
return "突袭"
when 4
return "直线冲刺"
when 5
return "毁灭残影"
when 6
return "炎龙碎"
when 7
return "半月斩"
when 8
return "毁灭冲刺"
when 9
return "魔法2"
when 17
return "重箭"
when 18
return "散箭"
when 19
return "冰箭"
when 20
return "突击射"
when 21
return "光箭"
when 22
return "背射"
when 23
return "天空射"
when 24
return "震荡箭"
when 25
return "魔法2"
when 33
return "突刺"
when 34
return "治愈"
when 179
return "治愈"
when 35
return "爆裂冲击"
when 36
return "完美防御"
when 180
return "完美防御"
when 37
return "无影光剑"
when 38
return "治愈2"
when 181
return "治愈2"
when 39
return "圣剑"
when 40
return "神恩"
when 182
return "神恩"
when 41
return "魔法2"
when 49
return "燃烧"
when 50
return "烧尽"
when 51
return "高温射线"
when 52
return "召唤流星"
when 53
return "冰剑"
when 54
return "冰魄"
when 55
return "绞杀冰剑"
when 56
return "寒冰审判"
when 57
return "魔法2-法"
when 58
return "魔法重击"
when 62
return "魔法2-法"
when 69
return "召唤岩石"
when 70
return "连击/敌"
when 71
return "重击/敌"
when 72
return "重击/敌2"
when 74
return "范围黑洞"
when 75
return "重力爆炸"
when 76
return "次元裂缝"
when 77
return "凝点压缩"
when 78
return "混沌之枪"
when 79
return "黑雷击"
when 80
return "地狱惩罚"
when 81
return "重力雨"
when 83
return "魔法2"
when 84
return "剧毒地带"
when 86
return "命运裁决"
when 87
return "高速背射"
when 88
return "魔光穿甲弹"
when 89
return "其卡斯之怒"
when 90
return "精确射击"
when 91
return "榴弹发射"
when 92
return "毒蛇追踪炮"
when 93
return "混沌轰炸"
when 94
return "魔法爆破"
when 95
return "强力穿甲弹"
when 96
return "更换弹夹"
when 97
return "更换弹夹2"
when 101
return "魔光瞬斩"
when 102
return "破碎十字"
when 103
return "毁灭气息"
when 104
return "湮灭神剑"
when 105
return "重力爆破"
when 107
return "重力回旋"
when 106
return "毁灭石像"
when 108
return "重力引爆"
when 109
return "灵毁"
when 110
return "血之代价"
when 111
return "魔法2"
when 112
return "时间收割"
when 115
return "粉碎"
when 116
return "雷霆一击"
when 117
return "死亡棒球"
when 118
return "灰烬粉碎"
when 119
return "旋转锤"
when 120
return "熔岩锤"
when 121
return "范围冲击"
when 122
return "高速粉碎"
when 124
return "极度鄙视"
when 125
return "怒火燃烧"
when 129
return "自然毁灭"
when 130
return "撕裂"
when 131
return "天空怒吼"
when 134
return "雷霆重击"
when 135
return "残忍突刺"
when 136
return "雷霆突袭"
when 137
return "充电冲刺"
when 138
return "天空挥舞"
when 139
return "毁灭剑气"
when 140
return "雷霆半月"
when 141
return "湮灭冲刺"
when 145
return "魔法2"
when 146
return "魔法2"
when 147
return "愤怒中的绝望"
when 229
return "致命砍击"
when 150
return "光能重箭"
when 151
return "光能散箭"
when 152
return "魔化冰箭"
when 153
return "光能突击射"
when 154
return "黑色抹杀"
when 155
return "极速背射"
when 156
return "多重天空射"
when 157
return "天空神箭"
when 161
return "魔法2"
when 162
return "能源补充"
when 163
return "极度脑残"
when 164
return "映月"
when 166
return "星辰的裁决"
when 167
return "雷霆十字斩"
when 168
return "无影光剑-2"
when 169
return "湮灭圣剑"
when 170
return "神圣制裁"
when 171
return "圣光风暴"
when 175
return "士气呐喊"
when 176
return "魔法2"
when 177
return "拯救之手"
when 178
return "魔法2"
when 174
return "魔法2"
when 184
return "灰烬燃烧"
when 185
return "烈焰灰烬"
when 186
return "熔岩地带"
when 187
return "灰烬之雨"
when **
return "魔化冰剑"
when 189
return "急冻炸弹"
when 190
return "急冻冰刺"
when 191
return "零度空间"
when 192
return "魔法2"
when 195
return "魔法2"
when 196
return "魔法2"
when 198
return "痛恨一击"
when 200
return "天罚"
when 199
return "半月锤"
when 201
return "神圣粉碎"
when 204
return "雷电惩处"
when 205
return "重击/敌3"
when 206
return "粉碎冲撞"
when 207
return "地震咆哮"
when 209
return "神圣痛击"
when 210
return "幻月粉碎"
when 211
return "审判雷暴"
when 212
return "圣光湮灭"
when 214
return "小刀投掷"
when 215
return "强力投掷"
when 216
return "闪电投掷"
when 217
return "星辰破裂"
when 218
return "小刀"
when 219
return "暗杀"
when 220
return "夺命背击"
when 221
return "无影之刃"
when 223
return "机械毒刃"
when 224
return "强化暗杀"
when 225
return "机械毁灭"
when 226
return "无影轰炸"
when 237
return "重力球2"
when 236
return "雷电惩处"
when 238
return "重力球3"
when 239,240
return "重击/敌3"
when 231
return "时间屏障"
when 242
return "爆发"
when 243
return "墓地炸弹"
when 244
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 90
return ["必中"]
when 224
return ["必中"]
when 41,57,40,25,34,36,38,40,62,81,83
return ["反射無視"]
when 96,97,110,111,112,124,125,145,146,147,161,162,174,175,176,177,178,179,180,181,182
return ["反射無視"]
when 3
return ["ランダムターゲット"]
when 5
return ["ランダムターゲット"]
when 20
return ["ランダムターゲット"]
when 37
return ["ランダムターゲット"]
when 48
return ["ランダムターゲット"]
when 70
return ["ランダムターゲット"]
when 79
return ["ランダムターゲット"]
when 86
return ["ランダムターゲット"]
when 88
return ["ランダムターゲット"]
when 89
return ["ランダムターゲット"]
when 104
return ["ランダムターゲット"]
when 106
return ["ランダムターゲット"]
when 122
return ["ランダムターゲット"]
when 130
return ["ランダムターゲット"]
when 136
return ["ランダムターゲット"]
when 138
return ["ランダムターゲット"]
when 153
return ["ランダムターゲット"]
when 155
return ["ランダムターゲット"]
when 72,94
return ["ランダムターゲット"]
when 204
return ["ランダムターゲット"]
when 211
return ["ランダムターゲット"]
when 233
return ["ランダムターゲット"]
when 249
return ["ランダムターゲット"]
when 255
return ["ランダムターゲット"]
when 262
return ["ランダムターゲット"]
when 266
return ["ランダムターゲット"]
when 270,236
return ["ランダムターゲット"]
when 53,55
return ["ダメージアクション禁止"]
end
# 上記のID以外すべてに適用される拡張設定
return ["なし"]
end
#--------------------------------------------------------------------------
# ● 飛ばしアニメに貼り付ける画像 キャラクターフォルダを参照します
#--------------------------------------------------------------------------
# スキルIDで画像を指定
def flying_graphic
case @id
when 999
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 1
return ["なし"]
end
# 上記のID以外すべてに適用される拡張設定
return ["なし"]
end
end
end
复制代码
┣ Sideview 1
#==============================================================================
# ■ Sprite_Battler for Sideview Ver3.3
#------------------------------------------------------------------------------
# バトラー表示用のスプライトです。
#==============================================================================
class Sprite_Battler < Sprite_Base
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize(viewport, battler = nil)
super(viewport)
[url=home.php?mod=space&uid=133701]@battler[/url] = 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 # ジャンプに対する影位置補正
[url=home.php?mod=space&uid=124954]@Angle[/url] = 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 # リピートフラグ
[url=home.php?mod=space&uid=36110]@Wait[/url] = 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 # 横矩形
[url=home.php?mod=space&uid=291977]@height[/url] = 0 # 縦矩形
@picture_time = 0 # ピクチャー表示時間
@individual_targets = [] # 個別処理の保持ターゲット
@balloon_duration = 65 # ふきだしアニメ時間
[url=home.php?mod=space&uid=30269]@reverse[/url] = false # アニメ逆転再生フラグ
# バトラーがいない場合は処理を中断
return @battler_visible = false if [url=home.php?mod=space&uid=133701]@battler[/url] == nil
# バトラーがアクターの場合、またはエネミーアニメがオンの場合
@anime_flug = true if @battler.actor?
@anime_flug = true if
[email protected]
? && @battler.anime_on
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
[url=home.php?mod=space&uid=291977]@height[/url] = 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
# バックアタック時には画像を反転させる
if $back_attack && @battler.actor?
self.mirror = true
elsif $back_attack &&
[email protected]
?
self.mirror = true
self.mirror = false if @battler.action_mirror
else
self.mirror = false
self.mirror = true if
[email protected]
? && @battler.action_mirror
end
# 武器画像に反映
@weapon_R.mirroring if self.mirror && @weapon_R != nil
# 位置を初期化
@battler.reset_coordinate
# 原点を決定
self.ox = @width / 2
self.oy = @height * 2 / 3
# スプライトの座標を設定
update_move
# アニメ飛ばし用スプライトを用意
@move_anime = Sprite_MoveAnime.new(viewport,battler)
# ピクチャ用スプライトを用意
@picture = Sprite.new
# ダメージスプライト作成
@damage = Sprite_Damage.new(viewport,battler)
end
#--------------------------------------------------------------------------
# ● 影作成
#--------------------------------------------------------------------------
def make_shadow
@shadow.dispose if [url=home.php?mod=space&uid=31758]@Shadow[/url] != nil
@battler_hue = @battler.battler_hue
[url=home.php?mod=space&uid=31758]@Shadow[/url] = Sprite.new(viewport)
@shadow.z = self.z - 4
@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
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
# 画像変更リセット
@battler.graphic_change(@before_graphic) if @before_graphic != nil
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)
# 影スプライトを用意
make_shadow if N01::SHADOW
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("終了")
@anime_end = true
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
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 if @damage != nil
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 = @battler.position_x + @shadow_plus_x
@shadow.y = @battler.position_y + @shadow_plus_y - @jump_plus
@shadow.z = @battler.position_z - 4
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
if @battler.actor?
if @battler.character_name != @battler_name or @battler.battler_hue != @battler_hue
@battler_name = @battler.character_name
@battler_hue = @battler.battler_hue
end
else
if @battler.battler_name != @battler_name or @battler.battler_hue != @battler_hue
@battler_name = @battler.battler_name
@battler_hue = @battler.battler_hue
end
if
[email protected]
?
self.opacity = 0 if @effect_duration == 0 && @battler.collapse_type != 1
end
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 eval(@active_action[1]) if action == "script"
# 強制アクションの場合
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
# 戦闘後リセットする場合キャラチップ名を記憶
@before_graphic = @battler.character_name if @active_action[1]
@battler.graphic_change(@active_action[2])
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 if !@active_action[2] &&
[email protected]
_id_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_id_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) if rand(100) < @battler.state_probability(state_id)
when 1
if @target_battler != nil
for target in @target_battler
target.add_state(state_id) if rand(100) < target.state_probability(state_id)
end
end
when 2
for target in $game_troop.members
target.add_state(state_id) if rand(100) < target.state_probability(state_id)
end
when 3
for target in $game_party.members
target.add_state(state_id) if rand(100) < target.state_probability(state_id)
end
when 4
for target in $game_party.members
if target.index != @battler.index
target.add_state(state_id) if rand(100) < target.state_probability(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]
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
复制代码
作者:
yangjunyin2002
时间:
2013-3-2 20:00
抱歉,因为脚本太多且太长,单楼几乎发不下,还很卡,所以只能连贴了- -
┣ Sideview 2
#==============================================================================
# ■ Scene_Battle for Sideview Ver3.3
#------------------------------------------------------------------------------
# バトル画面の処理を行うクラスです。
#==============================================================================
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
#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
alias update_n01 update
def update
reset_stand_by_action
super
update_n01
end
#--------------------------------------------------------------------------
# ● イベント操作によるHP変動でキャラクターアクションを再設定
#--------------------------------------------------------------------------
def reset_stand_by_action
if $game_temp.status_window_refresh
$game_temp.status_window_refresh = false
for member in $game_party.members + $game_troop.members
@spriteset.set_stand_by_action(member.actor?, member.index)
# 自動復活チェック
resurrection(member) if member.hp == 0
end
@status_window.refresh
end
end
#--------------------------------------------------------------------------
# ● 敗北の処理
#--------------------------------------------------------------------------
alias process_defeat_n01 process_defeat
def process_defeat
for member in $game_party.members
@spriteset.set_stand_by_action(member.actor?, member.index)
end
process_defeat_n01
end
#--------------------------------------------------------------------------
# ● ヘルプウインドウの表示
#--------------------------------------------------------------------------
def pop_help(obj)
return if obj.extension.include?("ヘルプ非表示")
@help_window = Window_Help.new if @help_window == nil
@help_window.set_text(obj.name, 1)
@help_window.visible = true
end
#--------------------------------------------------------------------------
# ● 情報表示ビューポートの移動
#--------------------------------------------------------------------------
def move1_info_viewport
@info_viewport.ox = 128
loop do
update_basic
@info_viewport.ox -= 8
@party_command_window.x -= 8
@actor_command_window.x += 8
break if @info_viewport.ox == 64
end
end
#--------------------------------------------------------------------------
# ● 情報表示ビューポートの移動
#--------------------------------------------------------------------------
def move2_info_viewport
@info_viewport.ox = 64
loop do
update_basic
@info_viewport.ox -= 8
@party_command_window.x += 8
@actor_command_window.x -= 8
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.visible = false if @help_window != nil
@help_window2 = Window_Help.new if @help_window2 == 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_window2.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_window2.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_window2.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 @help_window2 != nil
@help_window2.dispose
@help_window2 = nil
end
@help_window.visible = true if @help_window != nil
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
if $game_troop.forcing_battler != nil
process_action
end
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
# 強制行動中のスキル派生
@active_battler.derivation = 0 if @active_battler.action.forcing
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)
return process_action
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
# @turn_sprite.visible = true
# @turn_window.visible = true
# @turn_sprite.update
# @turn_window.update
end
#--------------------------------------------------------------------------
# ● 戦闘行動の実行 : 攻撃 ※再定義
#--------------------------------------------------------------------------
def execute_action_attack
if @active_battler.actor?
if @active_battler.weapon_id == 0
action = @active_battler.non_weapon
# 行動中に死なないようメンバー全員を不死身化
immortaling
else
action = $data_weapons[@active_battler.weapon_id].base_action
# 戦闘不能付与の武器で不死身設定を分岐
if $data_weapons[@active_battler.weapon_id].state_set.include?(1)
for member in $game_party.members + $game_troop.members
next if member.immortal
next if member.dead?
member.dying = true
end
else
immortaling
end
end
else
if @active_battler.weapon == 0
action = @active_battler.base_action
immortaling
else
action = $data_weapons[@active_battler.weapon].base_action
if $data_weapons[@active_battler.weapon].state_set.include?(1)
for member in $game_party.members + $game_troop.members
next if member.immortal
next if member.dead?
member.dying = true
end
else
immortaling
end
end
end
target_decision
@spriteset.set_action(@active_battler.actor?, @active_battler.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
skill = @active_battler.action.skill
# 戦闘不能付与のスキルで不死身設定を分岐
if skill.plus_state_set.include?(1)
for member in $game_party.members + $game_troop.members
next if member.immortal
next if member.dead?
member.dying = true
end
else
# 行動中に死なないようメンバー全員を不死身化
immortaling
end
# スキル使用可能判定
return unless @active_battler.skill_can_use?(skill)
# ターゲット決定
target_decision(skill)
# アクション開始
@spriteset.set_action(@active_battler.actor?, @active_battler.index, skill.base_action)
# ヘルプウインドウにスキル名表示
pop_help(skill)
# アクション中
playing_action
# スキルコスト消費
@active_battler.consum_skill_cost(skill)
# ステータスウインドウをリフレッシュ
@status_window.refresh
# コモンイベント取得
$game_temp.common_event_id = skill.common_event_id
end
#--------------------------------------------------------------------------
# ● 戦闘行動の実行 : アイテム ※再定義
#--------------------------------------------------------------------------
def execute_action_item
item = @active_battler.action.item
# 戦闘不能付与のアイテムで不死身設定を分岐
if item.plus_state_set.include?(1)
for member in $game_party.members + $game_troop.members
next if member.immortal
next if member.dead?
member.dying = true
end
else
# 行動中に死なないようメンバー全員を不死身化
immortaling
end
$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
if member.dying
member.dying = false
if member.dead? or member.hp == 0
member.add_state(1)
member.perform_collapse
end
end
next 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
# 吸収量が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_sprites.push(Sprite_Battler.new(@viewport1, $game_troop.members[i]))
@enemy_sprites[i].opacity = 0 if $game_troop.members[i].hidden
end
end
#--------------------------------------------------------------------------
# ● アクタースプライトの作成
#--------------------------------------------------------------------------
def create_actors
@actor_sprites = []
# メンバー最大数スプライトを用意
for i in 0...N01::MAX_MEMBER
@actor_sprites.push(Sprite_Battler.new(@viewport1, $game_party.members[i]))
if $game_party.members[i] != nil
@actor_sprites[i].make_battler
@actor_sprites[i].first_action
end
end
end
#--------------------------------------------------------------------------
# ● バトルフロアスプライトの作成
#--------------------------------------------------------------------------
def create_battlefloor
@battlefloor_sprite = Sprite.new(@viewport1)
@battlefloor_sprite.bitmap = Cache.system("BattleFloor")
@battlefloor_sprite.x = N01::FLOOR[0]
@battlefloor_sprite.y = N01::FLOOR[1]
@battlefloor_sprite.opacity = N01::FLOOR[2]
@battlefloor_sprite.z = 1
# バックアタック時、フロアと背景を反転させる
back_attack
if $back_attack
@battlefloor_sprite.mirror = true
@battleback_sprite.mirror = true
$game_troop.surprise = true
else
$game_troop.surprise = false
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...@actor_sprites.size
if $party_change
$party_change = false
dispose_actors
return create_actors
end
if @actor_sprites[i].battler.id != $game_party.members[i].id
dispose_actors
return create_actors
end
@actor_sprites[i].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]
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
# キャラのアニメパターン数をチェック
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
# アニメパターン数で割った変化を計算
@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 :dying # 即死フラグ
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座標
attr_accessor :force_damage # イベントでのダメージ
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
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 = @force_damage = 0
@active = @non_dead = @individual = @slip_damage = @revival = false
@double_damage = @dying = 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 * 75 / 100
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
#--------------------------------------------------------------------------
# ● イベントでのダメージPOP
#--------------------------------------------------------------------------
def damage_num(num = nil)
return if dead? or !$game_temp.in_battle or num == 0
@force_damage = num
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)
@num6 = Sprite.new(viewport)
@num7 = Sprite.new(viewport)
@num8 = Sprite.new(viewport)
@num9 = Sprite.new(viewport)
@num1.visible = false
@num2.visible = false
@num3.visible = false
@num4.visible = false
@num5.visible = false
@num6.visible = false
@num7.visible = false
@num8.visible = false
@num9.visible = false
return if @battler.actor?
@bar_back = Sprite.new(viewport)
@bar_back.bitmap = Cache.system("bar_back")
@bar_back.z = 3000
@bar_back.visible = false
@bar = Sprite.new(viewport)
@bar.bitmap = Cache.system("hp_bar")
@bar.z = 3001
@bar.visible = false
@move_bar = 0
@pre_bar = 67 * @battler.hp / @battler.maxhp
end
#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
def update
force_damage
move_damage(@num9, @pop_time + 8) if @num9.visible
move_damage(@num8, @pop_time + 6) if @num8.visible
move_damage(@num7, @pop_time + 4) if @num7.visible
move_damage(@num6, @pop_time + 2) if @num6.visible
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_bar if @duration > 0
move_window if @window != nil
@duration -= 1 if @duration > 0
end
#--------------------------------------------------------------------------
# ● イベントでのダメージPOP
#--------------------------------------------------------------------------
def force_damage
if @battler.force_damage != 0
damage_pop(@battler.force_damage)
@battler.hp -= @battler.force_damage
@force_damage = true
@battler.force_damage = 0
$game_temp.status_window_refresh = true
end
end
#--------------------------------------------------------------------------
# ● 数値の動き
#--------------------------------------------------------------------------
def move_damage(num, min)
if @million
case @duration
when min-6..min
num.x -= 1
num.y -= 7
when min-12..min-7
num.y -= 2
when min-22..min-15
num.y -= 1
when min-38..min-32
num.x -= 1
num.y += 7
when min-47..min-44
num.y -= 1
when min-50..min-48
num.y += 1
when min-53..min-51
num.y -= 1
when min-56..min-54
num.y += 1
end
else
case @duration
when min-1..min
num.x -= 1
num.y -= 4
when min-3..min-2
num.x -= 1
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
end
next_damage if @battler.double_damage && @duration == min-34
num.opacity = 256 - (12 - @duration) * 32
num.visible = false if @duration == 0
if @force_damage && @duration == 0
@force_damage = false
@battler.perform_collapse
end
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
#--------------------------------------------------------------------------
# ● HPバーの動き
#--------------------------------------------------------------------------
def move_bar
return if @battler.actor?
@move_bar -= 1 if @move_bar > 0
@move_bar += 1 if @move_bar < 0
@bar.src_rect.set(0, 0, @pre_bar + @move_bar, 4)
if @duration == 1
@bar_back.visible = false
@bar.visible = false
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_DAMAGE0 if damage == 0 && states == [] && !battler.revival
text = N01::POP_MISS if battler.missed && states == []
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
# POP位置微調整
adjust = -16
adjust = 16 if $back_attack
adjust = 0 if damage == 0
@x = battler.position_x + adjust
@y = battler.position_y - 12
start_bar(damage) if damage != 0
# ダメージと回復を分ける
@minus = false
@minus = true if damage < 0
damage = damage.abs
window(text) if text != ""
@pop_time = N01::NUM_DURATION
# ダメージがなければ数字のPOPをさせない
return @duration = @pop_time if damage == 0
@num_time = -1
@damage = damage
@pop_time += 20 if @damage >= 10000
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
damage_file(@num6, (damage % 1000000)/100000, @pop_time + 3) if damage >= 100000
damage_file(@num7, (damage % 10000000)/1000000, @pop_time + 5) if damage >= 1000000
damage_file(@num8, (damage % 100000000)/10000000, @pop_time + 7) if damage >= 10000000
damage_file(@num9, (damage % 1000000000)/100000000, @pop_time + 9) if damage >= 100000000
end
#--------------------------------------------------------------------------
# ● バー準備
#--------------------------------------------------------------------------
def start_bar(damage)
return if @battler.actor?
return if @battler.enemy_id == 48
if damage < 0
return if @pre_bar == 67
damage *= -1
@move_bar = 67 * damage / @battler.maxhp
if 67 - @pre_bar < @move_bar
@move_bar = 67 - @pre_bar
end
@move_bar *= -1
else
@move_bar = 67 * damage / @battler.maxhp
@move_bar = @pre_bar if @battler.hp == 0
end
@pre_bar = 67 * @battler.hp / @battler.maxhp
#return if @move_bar == 0
@bar.src_rect.set(0, 0, @pre_bar + @move_bar, 4)
@bar_back.visible = @bar.visible = true
@bar_back.x = @x - 40
@bar.x = @bar_back.x + 4
@bar_back.y = @y + 18
@bar.y = @bar_back.y + 1
end
#--------------------------------------------------------------------------
# ● 情報ウインドウ準備
#--------------------------------------------------------------------------
def window(text)
@window = Window_Damage.new(@x - 40, @y - 40)
@window.pop_text(text)
@window_time = 5
end
#--------------------------------------------------------------------------
# ● 数字画像準備
#--------------------------------------------------------------------------
def damage_file(num, cw, dur)
@million = false
num.visible = true
adjust = 0
# ファイル判別
plus = ""
plus = "2" if @damage >= 1500
if @damage >= 4000
plus = "3"
@million = true
adjust = -4
end
file = N01::DAMAGE_GRAPHICS + plus
if @minus
plus = ""
plus = "2" if @damage <= -100
file = N01::RECOVER_GRAPHICS + plus
end
# 数字
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 + adjust) * @num_time - adjust * 10
num.y = @y
num.z = 2000 - @num_time
@duration = dur
@window.x = 0 if @window != nil && @window.x < 0
end
#--------------------------------------------------------------------------
# ● ダメージリセット
#--------------------------------------------------------------------------
def reset
@num9.visible = @num8.visible = @num7.visible = @num6.visible = @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
@num6.dispose
@num7.dispose
@num8.dispose
@num9.dispose
@window.dispose if @window != nil
return if @battler.actor?
@bar_back.dispose
@bar.dispose
end
end
#==============================================================================
# ■ Window_Damage
#------------------------------------------------------------------------------
# クリティカル等を表示するウインドウです。
#==============================================================================
class Window_Damage < Window_Base
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize(x, y)
super(x, y, 160, 46)
self.opacity = 0
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
#==============================================================================
# ■ Game_Temp
#------------------------------------------------------------------------------
# セーブデータに含まれない、一時的なデータを扱うクラスです。
#==============================================================================
class Game_Temp
#--------------------------------------------------------------------------
# ● 公開インスタンス変数
#--------------------------------------------------------------------------
attr_accessor :status_window_refresh # ステータスウインドウのリフレッシュフラグ
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
alias initialize_n01 initialize
def initialize
initialize_n01
@status_window_refresh = false
end
end
#==============================================================================
# ■ Game_Interpreter
#------------------------------------------------------------------------------
# イベントコマンドを実行するインタプリタです。
#==============================================================================
class Game_Interpreter
#--------------------------------------------------------------------------
# ● HP の増減
#--------------------------------------------------------------------------
def command_311
if $game_temp.in_battle
value = operate_value(@params[1], @params[2], @params[3])
iterate_actor_id(@params[0]) do |actor|
next if actor.dead?
if @params[4] == false and actor.hp + value <= 0
actor.damage_num(actor.hp - 1) # 戦闘不能が許可されていなければ 1 にする
else
actor.damage_num(-value)
end
end
return true
else
value = operate_value(@params[1], @params[2], @params[3])
iterate_actor_id(@params[0]) do |actor|
next if actor.dead?
if @params[4] == false and actor.hp + value <= 0
actor.hp = 1 # 戦闘不能が許可されていなければ 1 にする
else
actor.hp += value
end
actor.perform_collapse
end
if $game_party.all_dead?
$game_temp.next_scene = "gameover"
end
return true
end
end
#--------------------------------------------------------------------------
# ● 敵キャラの HP 増減
#--------------------------------------------------------------------------
def command_331
value = operate_value(@params[1], @params[2], @params[3])
iterate_enemy_index(@params[0]) do |enemy|
if enemy.hp > 0
if @params[4] == false and enemy.hp + value <= 0
enemy.damage_num(enemy.hp - 1) # 戦闘不能が許可されていなければ 1 にする
else
enemy.damage_num(-value)
end
end
end
return true
end
end
#==============================================================================
# ■ Game_Party
#------------------------------------------------------------------------------
# パーティを扱うクラスです。
#==============================================================================
class Game_Party < Game_Unit
#--------------------------------------------------------------------------
# ● アクターを加える
# actor_id : アクター ID
#--------------------------------------------------------------------------
alias add_actor_n01 add_actor
def add_actor(actor_id)
add_actor_n01(actor_id)
$party_change = true if actor_id == 4
end
#--------------------------------------------------------------------------
# ● アクターを外す
# actor_id : アクター ID
#--------------------------------------------------------------------------
alias remove_actor_n01 remove_actor
def remove_actor(actor_id)
remove_actor_n01(actor_id)
$party_change = true if actor_id == 4
end
end
复制代码
显血
#==============================================================================
# ■ module n01
#------------------------------------------------------------------------------
# ターゲット選択時のヘルプ表示セッティング Ver1.2
#==============================================================================
module N01
# 文字ステートを表示するならtrue
WORD_STATE_DISPLAY = true
# 何もステートがない時に表示する文字 ""とすると非表示になります
WORD_NORMAL_STATE = "正常"
# HPゲージを表示するならtrue ステート表示と併用可
HP_DISPLAY = true
# 上記設定をアクターに適用するならtrue
ACTOR_DISPLAY = true
# 上記設定を適用しないエネミーID 複数ある場合は[1,2,3]のように
ENEMY_NON_DISPLAY = []
# 非表示にするステートID 複数ある場合は[1,2,3]のように
STATE_NON_DISPLAY = []
end
#-------------------------------設定ここまで-----------------------------------
#==============================================================================
# ■ Window_Help
#------------------------------------------------------------------------------
# スキルやアイテムの説明、アクターのステータスなどを表示するウィンドウです。
#==============================================================================
class Window_Help < Window_Base
#--------------------------------------------------------------------------
# ● テキスト設定
#--------------------------------------------------------------------------
def set_text_n01add(member)
self.contents.clear
self.contents.font.color = normal_color
if !member.actor? && N01::ENEMY_NON_DISPLAY.include?(member.enemy_id)
return self.contents.draw_text(4, 0, self.width - 40, WLH, member.name, 1)
elsif member.actor? && !N01::ACTOR_DISPLAY
return self.contents.draw_text(4, 0, self.width - 40, WLH, member.name, 1)
end
if N01::WORD_STATE_DISPLAY && N01::HP_DISPLAY
self.contents.draw_text(0, 0, 180, WLH, member.name, 1)
#draw_actor_hp_plus2(member, 182, 0, 120)
draw_actor_hp(member, 182, 0, 120)
text = "["
for state in member.states
next if N01::STATE_NON_DISPLAY.include?(state.id)
text += " " if text != "["
text += state.name
end
text += N01::WORD_NORMAL_STATE if text == "["
text += "]"
text = "" if text == "[]"
self.contents.draw_text(315, 0, 195, WLH, text, 0)
elsif N01::WORD_STATE_DISPLAY
text = member.name + " ["
for state in member.states
next if N01::STATE_NON_DISPLAY.include?(state.id)
text += " " if text != member.name + " ["
text += state.name
end
text += N01::WORD_NORMAL_STATE if text == member.name + " ["
text += "]"
text = "" if text == "[]"
self.contents.draw_text(4, 0, self.width - 40, WLH, text, 1)
elsif N01::HP_DISPLAY
self.contents.draw_text(4, 0, 240, WLH, member.name, 1)
#draw_actor_hp_plus2(member, 262, 0, 120)
draw_actor_hp(member, 262, 0, 120)
end
end
end
#==============================================================================
# ■ Scene_Battle
#------------------------------------------------------------------------------
# バトル画面の処理を行うクラスです。
#==============================================================================
class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# ● ターゲット選択の開始
#--------------------------------------------------------------------------
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.visible = false if @help_window != nil
@help_window2 = Window_Help.new if @help_window2 == 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_window2.set_text_n01add(members[@index])
select_member(actor)
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_window2.set_text_n01add(members[@index])
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_window2.set_text_n01add(members[@index])
end
end
复制代码
ATB設定
#==============================================================================
# ■ module N02 for ATB Ver1.2
#------------------------------------------------------------------------------
# アクティブタイムバトルのカスタマイズ項目です。
#==============================================================================
module N02
#--------------------------------------------------------------------------
# ● 戦闘開始時のATBゲージ初期値セッティング
#--------------------------------------------------------------------------
# ATBゲージ初期値(アクター) 数値はゲージに対しての%
ATB_BASE_ACTOR = 30
# ATBゲージ初期値(エネミー)
ATB_BASE_ENEMY = 30
# ATBゲージ初期値に加えられるランダム値(アクターエネミー共通)
ATB_BASE_ADD = 30
#--------------------------------------------------------------------------
# ● アクティブタイプ(ユーザー設定を無効にした時のみ効果があります)
#--------------------------------------------------------------------------
# パーティコマンド(戦う・逃げる)選択中もゲージアップするならtrue
ATB_PARTY_COMMAND_WAIT = false
# 戦闘コマンド(攻撃・スキル等)選択中もゲージアップするならtrue
ATB_COMMAND_WAIT = false
# ターゲット選択中もゲージアップするならtrue
ATB_TARGET_WAIT = false
# スキル/アイテム選択中もゲージアップするならtrue
ATB_SELECT_WAIT = false
# 行動アクション中もゲージアップするならtrue (※自身の行動時はストップします)
ATB_ACTION_WAIT = false
#--------------------------------------------------------------------------
# ● ボタン入力によるゲージのアクティブ制御
#--------------------------------------------------------------------------
# Shiftキーを押している間、ゲージスピードを4倍に加速させる機能を利用するならtrue
ATB_SHIFT_BOOST = true
# Ctrlキーを押している間、強制的にゲージアップする機能を利用するならtrue
ATB_CTRL_ACTIVE = true
# Altキーを押している間、強制的にゲージを止める機能を利用するならtrue
ATB_ALT_WAIT = true
#--------------------------------------------------------------------------
# ● ATBゲージアップスピード(ユーザー設定を無効にした時のみ効果があります)
#--------------------------------------------------------------------------
# 1が最遅 5くらいがゆったり 10くらいが平均 20あたりで大した速さだ 500で なん…だと…?
ATB_SPEED = 10
#--------------------------------------------------------------------------
# ● ATBゲージアップスピード基準
#--------------------------------------------------------------------------
# ATBゲージアップスピードをどこに合わせるか
# 0;固定値
# 1;戦闘参加者の中で最も高い俊敏性
# 2;戦闘参加者の中で最も低い俊敏性
# 3;戦闘参加者の俊敏性の平均
ATB_BASE_SPEED = 1
# 上の設定で 0;固定値 にした場合の基準となる俊敏性値
ATB_ABSOLUTE_SPEED = 50
#--------------------------------------------------------------------------
# ● 先制、不意打ち(バックアタック)時の後攻者ATBゲージペナルティ
#--------------------------------------------------------------------------
# 数値の分、後攻者の初期値がマイナスでスタートします。100でゲージ1本分
ATB_BACKATTACK = 50
#--------------------------------------------------------------------------
# ● 逃走失敗時のATBゲージペナルティ
#--------------------------------------------------------------------------
# 逃走失敗時、味方全員のゲージがマイナスでリスタートします。100でゲージ1本分
ATB_RUN_NG = 50
#--------------------------------------------------------------------------
# ● 戦闘ターンカウント設定
#--------------------------------------------------------------------------
# 0;戦闘参加人数分行動したら1ターン経過
# 1;戦闘参加人数の半分が行動したら1ターン経過
# 2;誰か一人でも行動したら1ターン経過
ATB_TURN_COUNT = 1
#--------------------------------------------------------------------------
# ● スリップダメージ(毒やHP自動回復など)POPタイミング設定
#--------------------------------------------------------------------------
# 0;自身が行動する直前にHP数値POP処理、行動後にMP数値POP処理
# 1;1ターン経過ごとに全員同時POP処理
ATB_SLIP_DAMAGE = 0
#--------------------------------------------------------------------------
# ● 戦闘不能時のゲージ処理
#--------------------------------------------------------------------------
# 戦闘不能から復帰した際のATBゲージ初期値(%) 100で瞬間復帰、マイナスにもできます
ATB_DEAD_COUNT = 20
#--------------------------------------------------------------------------
# ● アクション終了後のATBゲージ設定
#--------------------------------------------------------------------------
# 行動後のゲージ再スタート量(%) ずっと下にID指定の個別設定があります
ATB_ATTACK_RESET = 20 # 通常攻撃
ATB_GUARD_RESET = 0 # 防御
ATB_SKILL_RESET = 0 # スキル
ATB_ITEM_RESET = 0 # アイテム
ATB_NONACT_RESET = 40 # 無行動
#--------------------------------------------------------------------------
# ● エネミーのATBゲージを表示するか ※エネミー設定で個別にできます
#--------------------------------------------------------------------------
ATB_ENEMY_ON = true
#--------------------------------------------------------------------------
# ● アクション時にATBゲージを隠すか
#--------------------------------------------------------------------------
ATB_ACTION_ACTOR_OFF = true # アクター
ATB_ACTION_ENEMY_OFF = true # エネミー
#--------------------------------------------------------------------------
# ● ATBゲージ位置調整 バックアタック時はX軸が自動で修正されます
#--------------------------------------------------------------------------
# X軸 Y軸
ATB_POSITION_ACTOR = [ -80, 20] # アクター
ATB_POSITION_ENEMY = [ 0, 20] # エネミー
# アクターのATBゲージをデフォルトのHPウインドウ内に表示するならtrue(上記設定は無視されます)
ATB_POSITION_HPWINDOW = false
#--------------------------------------------------------------------------
# ● ATBゲージ位置調整2 上でゲージをHPウインドウに表示するをtrueにした時限定
#--------------------------------------------------------------------------
# ゲージ位置を個別指定 一人目 二人目 三人目 四人目
# X軸 Y軸 X軸 Y軸 X軸 Y軸 X軸 Y軸
ATB_PARTY_POSITION = [[158,318],[158,342],[158,366],[158,390]]
# 戦闘メンバー最大数を独自に増やした時は上の設定位置も人数分増やしてください
#--------------------------------------------------------------------------
# ● ATBゲージグラフィック設定(システムフォルダ内にあるATBゲージ画像関連)
#--------------------------------------------------------------------------
# 画像ファイル名"atb_bar"は行動待ちのゲージ "act_bar"はチャージゲージ
# "atb_bar_active"はゲージ満タン時に表示される画像 "atb_bar_skin"はゲージスキン
# この4つの画像は座標設定を簡略化するため同じ画像サイズにして重ねて表示します
# 多少凝ったスキンが利用できるようにここで透明部分を除いた幅を指定します
#
# ゲージ画像の横幅(実際の画像ピクセル幅ではなく、透明部分を除いたピクセル幅)
# 1000できれいに割り切れる数字がベストです
ATB_WIDTH = 50
# ゲージのスタート位置(X座標で何ピクセル目からゲージグラフィックがあるか指定)
ATB_SPACE = 2
#--------------------------------------------------------------------------
# ● ATBゲージ(青色ゲージ)満タン時の効果音
#--------------------------------------------------------------------------
# ピッチ 音量 SEファイル名
ATB_MAX_SOUND01 = [150, 70, "Decision2"]
#--------------------------------------------------------------------------
# ● ACTゲージ(赤色ゲージ)満タン時の効果音
#--------------------------------------------------------------------------
# ピッチ 音量 SEファイル名
ACT_MAX_SOUND01 = [150, 70, "Chime2"]
#--------------------------------------------------------------------------
# ● コマンドキャラ送り時の効果音
#--------------------------------------------------------------------------
# ピッチ 音量 SEファイル名
NEXT_SOUND01 = [135, 70, "Miss"]
#--------------------------------------------------------------------------
# ● ユーザー設定(ウエイトやバトルスピードを遊び手が選択する)セッティング
#--------------------------------------------------------------------------
# ユーザー設定を有効にしメニューに入れるならtrue falseで以下の設定は全て無視
ATB_CUSTOMIZE = false
# シーン項目のコマンド名 コマンドはステータスの次に入ります
ATB_CUSTOMIZE_NAME = "ATB設定"
# アクティブ・ウエイト設定 上にあったアクティブタイプ(ATB_PARTY_COMMAND_WAITなど)は無視されます
# この設定の名称
ATB_MODE_NAME = "バトルモード"
# 3種類の項目がウインドウに並びます
# 下の番号(0~4)の位置をtrueにするとその場面がアクティブになります
#
# [0]パーティコマンド選択中 [1]戦闘コマンド選択中 [2]ターゲット選択中
# [3]スキル/アイテム選択中 [4]行動アクション中
#
# モード名称 [0] [1] [2] [3] [4]
ATB_MODE1 = ["ウエイト", false, false, false, false, false,]
ATB_MODE2 = ["セミアクティブ", false, false, false, false, true,]
ATB_MODE3 = ["アクティブ", true, true, true, true, true,]
# 上3種類のモードで表示されるヘルプコメント
ATB_MODE1_HELP = "全ての場面で時間が止まります"
ATB_MODE2_HELP = "戦闘アクション中のみ時間が経過します"
ATB_MODE3_HELP = "全ての場面で時間が経過します"
# ニューゲーム時の初期選択 [0]MODE1 [1]MODE2 [2]MODE3
ATB_NEWGAME_MODE = 1
# バトルスピード設定 上にあったATBゲージアップスピード(ATB_SPEED)は無視されます
# この設定の名称
ATB_SPEED_NAME = "バトルスピード"
# この設定のヘルプコメント
ATB_SPEED_HELP = "数値が大きいほどゲージが早く溜まります"
# 下の番号(1~9)が項目に並ぶので、それぞれゲージアップスピードを設定します
# 上のATBゲージアップスピード(ATB_SPEED)は無視されます
#
# [1] [2] [3] [4] [5] [6] [7] [8] [9]
ATB_SPEED_MODE = [ 1, 2, 4, 6, 10, 20, 40, 100, 500]
# ニューゲーム時の初期選択 数値がそのままカーソル位置になります
ATB_NEWGAME_SPEED = 5
#--------------------------------------------------------------------------
# ● ターゲット選択時のヘルプ表示セッティング
#--------------------------------------------------------------------------
# 文字ステートを表示するならtrue
WORD_STATE_DISPLAY = true
# 何もステートがない時に表示する文字 ""とすると非表示になります
WORD_NORMAL_STATE = "正常"
# HPゲージを表示するならtrue ステート表示と併用可
HP_DISPLAY = true
# 上記設定をアクターに適用するならtrue
ACTOR_DISPLAY = true
# 上記設定を適用しないエネミーID 複数ある場合は[1,2,3]のように
ENEMY_NON_DISPLAY = []
# 非表示にするステートID 複数ある場合は[1,2,3]のように
STATE_NON_DISPLAY = []
end
module RPG
#==============================================================================
# ■ module RPG
#------------------------------------------------------------------------------
# スキル設定
#==============================================================================
class Skill
#--------------------------------------------------------------------------
# ● チャージ設定
#--------------------------------------------------------------------------
# コマンド入力から実行するまでの時間をスキルIDごとに指定。魔法詠唱などに。
#
# when 1 ←スキルID
#
# 基準 必要ゲージ(%)
# ↓ ↓
# return [ 0, 50, 0, ""]
# end ↑ ↑
# 固定時の数値 チャージアクション
#
#
# 基準…0:固定値
# 1:戦闘参加者の中で最も高い俊敏性
# 2:戦闘参加者の中で最も低い俊敏性
# 3:戦闘参加者の俊敏性の平均
# 4:自身の俊敏性
#
# 必要ゲージ…上記基準ゲージ何%分必要か 200%でゲージ満タンまで2倍の時間が必要
# 10%でゲージ満タンまで1/10の時間 0%で即時実行になります
#
# 固定時の数値…基準を 0:固定値 にした場合基準となる俊敏性値
#
# チャージアクション…チャージ中のキャラが取るアクション | 200%でゲージ満タンまで2倍必要
# サイドビュー設定の通しアクション名を入れます
# ""にすると何もアクションを取らせません
def charge
case @id
when 2
return [ 4, 40, 0, ""]
end
# 上記ID以外のスキルは即時実行
return [ 4, 20, 0, ""]
end
#--------------------------------------------------------------------------
# ● アクション終了後のATBゲージ設定 100でゲージ1本分
#--------------------------------------------------------------------------
def recharge
case @id
when 1
return 30
end
# 上記ID以外のスキルは共通設定を使用
return N02::ATB_SKILL_RESET
end
#--------------------------------------------------------------------------
# ● 合体攻撃(指定キャラ全員が一斉に行動する)設定
#--------------------------------------------------------------------------
# 合体攻撃スキルIDを「,」で区切って入れます
# ↓
# [98, 99],
#
# 指定したいずれかのスキルIDを使用すると合体攻撃スキルを持っているキャラ全員が
# ATBゲージを溜めはじめ、全員がチャージまで完了するとアクションを実行します
# 溜めている途中で行動不能になったキャラが一人でもいるとキャンセルされます
# 合体攻撃準備中は別の合体攻撃が使用できません
#
# スキルID配列最初のIDのスキルを持っているキャラが実際のアクティブバトラーと
# なり、ダメージ計算等はこのキャラを基準にして行われます(例だとスキルID98番を
# 習得しているキャラが行動します)が、どのキャラが選択しても合体攻撃準備に入ります
def union_action
return [
[ 999, 999],
[999, 999, 999, 999],
[]]
end
end
#==============================================================================
# ■ module RPG
#------------------------------------------------------------------------------
# アイテム設定
#==============================================================================
class Item
#--------------------------------------------------------------------------
# ● チャージ設定 設定はスキルと同じ。
#--------------------------------------------------------------------------
def charge
case @id
when 1
return [ 4, 20, 0, ""]
end
# 上記ID以外のアイテムは即時実行
return [ 4, 0, 0, ""]
end
#--------------------------------------------------------------------------
# ● アクション終了時のATBゲージ設定 100でゲージ1本分
#--------------------------------------------------------------------------
def recharge
case @id
when 1
return 0
end
# 上記ID以外のアイテムは共通設定を使用
return N02::ATB_ITEM_RESET
end
end
#==============================================================================
# ■ module RPG
#------------------------------------------------------------------------------
# ステート設定
#==============================================================================
class State
#--------------------------------------------------------------------------
# ● ATBゲージにダメージを与えるステート ステート付加時に1回だけ実行します
#--------------------------------------------------------------------------
# チャージ中に受けるとチャージが解除され、ATBゲージ100%からダメージ分引かれます
# ATBダメージ目的のスキルを作るなら、サイドビューアクションでダメージを与えた後
# このステートを解除するアクションを入れてステートの表示優先度を0にし、ステート
# 耐性を利用してATBダメージに対する抵抗をバランスするのがオススメです
# 数値をプラスにするとゲージが増加し、100%を超えるとコマンド入力可能になります
# 数値は100でゲージ1本分
def atb_damage
case @id
when 8
return -100
end
# 上記ID以外のステート
return 0
end
#--------------------------------------------------------------------------
# ● 上記ATBダメージでゲージ0以下を許可するならtrue
#--------------------------------------------------------------------------
def atb_minus_damage
return false
end
end
#==============================================================================
# ■ module RPG
#------------------------------------------------------------------------------
# 武器設定
#==============================================================================
class Weapon
#--------------------------------------------------------------------------
# ● 通常攻撃は武器ごとのチャージ設定に依存します。設定はスキルと同じ。
#--------------------------------------------------------------------------
# 二刀時のチャージ時間は両方の武器の平均で、アクションは右手武器のものになります
def charge
case @id
when 2
return [ 4, 0, 0, ""]
end
# 上記ID以外の武器は即時実行
return [ 4, 0, 0, ""]
end
#--------------------------------------------------------------------------
# ● チャージ補正。特定の武器装備時にチャージ時間を短くしたい時とかに
#--------------------------------------------------------------------------
# 通常攻撃だけではなく全行動のチャージに効果があり、マイナスでチャージ時間が減ります
# 二刀時は両方の武器の平均になります
def charge_bonus
case @id
when 1
return 0
end
# 上記ID以外の武器は即時実行
return 0
end
#--------------------------------------------------------------------------
# ● アクション終了時のATBゲージ設定 通常攻撃にのみ効果あり。100でゲージ1本分
#--------------------------------------------------------------------------
# 武器は通常攻撃アクションにのみ効果があり、スキルやアイテムには反映されません
# 二刀時は両方の武器の平均になります
def recharge
case @id
when 1
return 20
end
# 上記ID以外の武器は共通設定を使用
return N02::ATB_ATTACK_RESET
end
#--------------------------------------------------------------------------
# ● 戦闘開始時のATBゲージ初期値 この数値だけ加算(マイナスで減算)されます 100でゲージ1本分
#--------------------------------------------------------------------------
# 二刀時は両方の武器の平均になります
def atb_base
case @id
when 1
return 0
end
# 上記ID以外の武器
return 0
end
end
#==============================================================================
# ■ module RPG
#------------------------------------------------------------------------------
# 防具設定 装備している数の分だけ効果は累積されます
#==============================================================================
class Armor
#--------------------------------------------------------------------------
# ● チャージ補正。特定の防具装備時にチャージ時間を短くしたい時とかに
#--------------------------------------------------------------------------
def charge_bonus
case @id
when 1
return 0
end
# 上記ID以外の防具は即時実行
return 0
end
#--------------------------------------------------------------------------
# ● 戦闘開始時のATBゲージ初期値 この数値だけ加算(マイナスで減算)されます
#--------------------------------------------------------------------------
def atb_base
case @id
when 1
return 0
end
# 上記ID以外の防具
return 0
end
end
end
#==============================================================================
# ■ Game_Actor
#------------------------------------------------------------------------------
# アクター設定
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ● アクターごとのチャージ設定(素手時) 設定はスキルと同じ。
#--------------------------------------------------------------------------
def charge
case @actor_id
when 1
return [ 4, 0, 0, ""]
end
# 上記ID以外のアクターは即時実行
return [ 4, 0, 0, ""]
end
#--------------------------------------------------------------------------
# ● アクション終了時のATBゲージ設定(素手時)
#--------------------------------------------------------------------------
# 通常攻撃で素手時のみ効果があります
def recharge
case @actor_id
when 1
return 20
end
# 上記ID以外のアクターは共通設定を使用
return N02::ATB_ATTACK_RESET
end
#--------------------------------------------------------------------------
# ● 戦闘開始時のATBゲージ初期値(共通設定を無視します)
#--------------------------------------------------------------------------
def atb_base
case @actor_id
when 1
return 30
end
# 上記ID以外のアクターは共通設定を使用
return N02::ATB_BASE_ACTOR
end
#--------------------------------------------------------------------------
# ● ATBゲージを表示するアクターを指定 表示するならtrue
#--------------------------------------------------------------------------
def atb_on
case @actor_id
when 1
return true
end
# 上記ID以外のアクター設定
return true
end
end
#==============================================================================
# ■ Game_Enemy
#------------------------------------------------------------------------------
# エネミー設定
#==============================================================================
class Game_Enemy < Game_Battler
#--------------------------------------------------------------------------
# ● エネミーごとのチャージ設定(素手時) 設定はスキルと同じ。
#--------------------------------------------------------------------------
def charge
case @enemy_id
when 1
return [ 4, 20, 0, ""]
end
# 上記ID以外のエネミーは即時実行
return [ 4, 0, 0, ""]
end
#--------------------------------------------------------------------------
# ● アクション終了時のATBゲージ設定(素手時)
#--------------------------------------------------------------------------
# 通常攻撃で素手時のみ効果があります
def recharge
case @enemy_id
when 1
return 20
end
# 上記ID以外のアクターは共通設定を使用
return N02::ATB_ATTACK_RESET
end
#--------------------------------------------------------------------------
# ● 戦闘開始時のATBゲージ初期値(共通設定を無視します)
#--------------------------------------------------------------------------
def atb_base
case @enemy_id
when 1
return 10
end
# 上記ID以外のエネミーは共通設定を使用
return N02::ATB_BASE_ENEMY
end
#--------------------------------------------------------------------------
# ● ATBゲージを表示するエネミーを指定(共通設定を無視します) 表示するならtrue
#--------------------------------------------------------------------------
def atb_on
case @enemy_id
when 1
return true
end
# 上記ID以外のエネミーは共通設定を使用
return N02::ATB_ENEMY_ON
end
end
复制代码
ATB
#==============================================================================
# ■ Scene_Battle for ATB Ver1.2
#------------------------------------------------------------------------------
# バトル画面の処理を行うクラスです。
#==============================================================================
class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# ● 開始処理
#--------------------------------------------------------------------------
alias start_n02 start
def start
$gauge_stop = true
$game_party.atb_customize
start_n02
end
#--------------------------------------------------------------------------
# ● 終了処理
#--------------------------------------------------------------------------
alias terminate_n02 terminate
def terminate
terminate_n02
# 二刀流の持ち替え処理を戻す
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
member.clear_sprite_effects
end
end
#--------------------------------------------------------------------------
# ● 戦闘開始の処理
#--------------------------------------------------------------------------
alias process_battle_start_n02 process_battle_start
def process_battle_start
@end_member = 0
preemptive if $game_troop.preemptive
surprise if $game_troop.surprise
@status_window.visible = true
process_battle_start_n02
@status_window.refresh
$gauge_stop = false
end
#--------------------------------------------------------------------------
# ● 先制処理
#--------------------------------------------------------------------------
def preemptive
$game_troop.preemptive = false
for member in $game_party.members + $game_troop.members
member.at_count = 1000 if member.actor?
member.at_count = N02::ATB_BACKATTACK * -10 if !member.actor?
end
end
#--------------------------------------------------------------------------
# ● 不意打ち処理
#--------------------------------------------------------------------------
def surprise
$game_troop.surprise = false
for member in $game_party.members + $game_troop.members
member.at_count = N02::ATB_BACKATTACK * -10 if member.actor?
member.at_count = 1000 if !member.actor?
end
end
#--------------------------------------------------------------------------
# ● 情報表示ビューポートの解放
#--------------------------------------------------------------------------
alias dispose_info_viewport_n02 dispose_info_viewport
def dispose_info_viewport
dispose_info_viewport_n02
@cursor.dispose if @cursor != nil &&
[email protected]
?
@help_window.dispose if @help_window != nil && !@help_window.disposed?
@help_window = nil
@help_window2.dispose if @help_window2 != nil && !@help_window2.disposed?
@help_window2 = nil
@skill_window.dispose if @skill_window != nil && !@skill_window.disposed?
@skill_window = nil
@item_window.dispose if @item_window != nil && !@item_window.disposed?
@skill_window = nil
end
#--------------------------------------------------------------------------
# ● フレーム更新 ※再定義
#--------------------------------------------------------------------------
def update
super
update_basic(true)
unless $game_message.visible # メッセージ表示中以外
return if judge_win_loss if @judge == nil # 勝敗判定
update_scene_change
end
end
#--------------------------------------------------------------------------
# ● 基本更新処理 ※再定義
#--------------------------------------------------------------------------
def update_basic(main = false)
Graphics.update unless main # ゲーム画面を更新
Input.update unless main # 入力情報を更新
$game_system.update # タイマーを更新
$game_troop.update # 敵グループを更新
@spriteset.update # スプライトセットを更新
@message_window.update # メッセージウィンドウを更新
update_info_viewport if !$gauge_stop # 情報表示ビューポートを更新
# カーソル更新
@cursor.update if @cursor != nil && @cursor.visible
# メッセージ表示中はこれ以降処理させない
if $game_message.visible
@spriteset.gauge_off
@info_viewport.visible = false
return @message_window.visible = true
end
return if $gauge_stop
# 戦闘中断、シーン切り替えの際これ以降は処理させない
return if @judge
return if $game_temp.next_scene != nil
# ATBを更新
update_atb
# ターゲット更新
update_target if @target_members != nil
# コマンド入力フェイズ
start_actor_command_selection if @command_members.size != 0 && !@command_phase
if @skill_window != nil
update_skill_selection # スキル選択
elsif @item_window != nil
update_item_selection # アイテム選択
elsif @party_command_window.visible && @party_command_window.active
update_party_command_selection # パーティコマンド選択
elsif @actor_command_window.active
update_actor_command_selection # アクターコマンド選択
end
end
#--------------------------------------------------------------------------
# ● ATB更新
#--------------------------------------------------------------------------
def update_atb
for member in $game_party.members + $game_troop.members
# ACT更新
return start_main(member) if member.act_active && !@action_battlers.include?(member) && !member.union_battler
# ATBアクター更新
if member.actor? && member.at_active && !@command_members.include?(member) && member.movable?
return start_auto_action(member) if member.auto_action?
return @command_members.push(member)
# ATBエネミー更新
elsif !member.actor? && member.at_active && !@command_members.include?(member) && member.movable?
return start_auto_action(member)
end
end
end
#--------------------------------------------------------------------------
# ● 自動行動開始
#--------------------------------------------------------------------------
def start_auto_action(member)
return if @judge
# 戦闘行動の作成
member.make_action if member.union_skill_id == 0
# チャージ設定
act_type = charge_set(member)
# 複数回行動の作成
member.act_time = member.action_time[0] if !member.actor?
# 行動ゲージに切り替え
@spriteset.change_act(act_type, member.actor?, member.index)
# チャージアクション
make_charge_action(member)
end
#--------------------------------------------------------------------------
# ● チャージ設定
#--------------------------------------------------------------------------
def charge_set(member)
act_type = member.charge
# 通常攻撃(二刀のチャージ時間は双方武器の平均)
if member.actor? && member.action.attack? && member.weapon_id != 0
act_type = member.weapons[0].charge if member.weapons[0] != nil
act_type2 = member.weapons[1].charge if member.weapons[1] != nil
act_type[1] = (act_type[1] + act_type2[1]) / 2 if act_type2 != nil
elsif member.action.attack?
act_type = $data_weapons[member.weapon_id].charge if member.actor? && member.weapon_id != 0
act_type = $data_weapons[member.weapon].charge if !member.actor? && member.weapon != 0
end
act_type = $data_skills[member.action.skill_id].charge if member.action.skill?
act_type = $data_items[member.action.item_id].charge if member.action.item?
# チャージボーナス加算
if member.actor?
act_type[1] += $data_weapons[member.weapon_id].charge_bonus if member.weapon_id != 0
for i in 0...member.armors.size
# 二刀はキャンセル
next if member.two_swords_style && member.armors[0] != nil && member.armors[0]
act_type[1] += member.armors[i].charge_bonus if member.armors[i] != nil
end
end
return act_type
end
#--------------------------------------------------------------------------
# ● 戦闘行動者の準備 ※再定義
#--------------------------------------------------------------------------
def start_main(member)
return if @judge
@message_window.clear
@action_battlers.push(member)
@status_window.refresh
member.charge_start = false
# アクティブバトラーがいなければ次の行動者をセット
set_next_active_battler if @active_battler == nil
end
#--------------------------------------------------------------------------
# ● ヘルプウインドウの表示 ※再定義
#--------------------------------------------------------------------------
def pop_help(obj)
return if @help_window == nil && obj.extension.include?("ヘルプ非表示")
return @help_window.visible = false if obj.extension.include?("ヘルプ非表示")
return if @skill_window != nil && @skill_window.visible
return if @item_window != nil && @item_window.visible
@help_window = Window_Help.new if @help_window == nil
@help_window.set_text(obj.name, 1)
@help_window.visible = true
end
#--------------------------------------------------------------------------
# ● チャージアクション作成
#--------------------------------------------------------------------------
def make_charge_action(member)
action = ""
case member.action.kind
when 0
if member.actor?
action = member.charge[3] if member.weapon_id == 0
action = $data_weapons[member.weapon_id].charge[3] if member.weapon_id != 0
else
action = member.charge[3] if member.weapon == 0
action = $data_weapons[member.weapon].charge[3] if member.weapon != 0
end
when 1;action = member.action.skill.charge[3]
when 2;action = member.action.item.charge[3]
end
member.charge_action = action
return if action == ""
member.charge_start = true
@spriteset.set_action(member.actor?, member.index, member.charge_action)
end
#--------------------------------------------------------------------------
# ● アクション実行中 ※再定義
#--------------------------------------------------------------------------
def playing_action
loop do
break if @judge
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 process_action
# スリップダメージ
hp_slip_damage(@active_battler) if N02::ATB_SLIP_DAMAGE == 0
# 合体攻撃処理
union_possibility?
process_union_skill if @active_battler.union_skill_id != 0
return set_next_active_battler if @active_battler.union_battler
# 暴走混乱処理
@active_battler.action.prepare unless @active_battler.action.forcing
# 戦闘行動開始
$in_action = true
@message_window.clear
@active_battler.white_flash = true
# ヘルプウインドウ表示
help_on
# 戦闘アクション実行
execute_action if @active_battler.action.valid? && @active_battler.restriction < 4
# ヘルプウインドウ隠蔽
help_off
# 強制行動などでバトラーが空になったら次の行動者へ
return set_next_active_battler if @active_battler == nil
# スリップダメージ
mp_slip_damage(@active_battler) if N02::ATB_SLIP_DAMAGE == 0
# 戦闘アクション終了
@message_window.clear
@active_battler.white_flash = false
$in_action = false
@spriteset.gauge_update
# 合体攻撃終了処理
end_union_skill if @active_battler.union_skill_id != 0
# スキル派生がある場合、行動続行
return set_next_active_battler if @active_battler.derivation != 0 && !@forcing_battler
# エネミーの複数回行動
return set_next_active_battler if enemy_order
# 戦闘行動終了
turn_end(@active_battler)
# 次の行動者へ
@action_battlers.delete(@active_battler)
set_next_active_battler
end
#--------------------------------------------------------------------------
# ● ヘルプウインドウ表示
#--------------------------------------------------------------------------
def help_on
@help_window = Window_Help.new if @help_window == nil
@help_window.visible = false
return @help_window.visible = true if @skill_window != nil && @skill_window.visible
return @help_window.visible = true if @item_window != nil && @item_window.visible
return @help_window.visible = true if @active_battler.action.guard?
return @help_window.visible = true if @active_battler.action.kind == 0 && @active_battler.action.basic == 2
end
#--------------------------------------------------------------------------
# ● ヘルプウインドウ隠蔽
#--------------------------------------------------------------------------
def help_off
return if @help_window == nil
return @help_window.visible = true if @skill_window != nil && @skill_window.visible
return @help_window.visible = true if @item_window != nil && @item_window.visible
@help_window.visible = false
end
#--------------------------------------------------------------------------
# ● アクション終了 ※再定義
#--------------------------------------------------------------------------
def action_end
# 初期化
@individual_target = nil
@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 union_skill?(member)
# スキルに合体攻撃設定があるかチェック
for union_action in member.action.skill.union_action
union_skills = union_action if union_action.size != 0 && union_action.include?(member.action.skill_id)
end
return if union_skills == nil
@partners = []
@union_targets = union_target_decision(member, member.action.skill)
@union_target_index = member.action.target_index
# 合体攻撃メンバーが使用可能かチェック
for skill_id in union_skills
for actor in $game_party.members
if actor.skill_can_use?($data_skills[skill_id]) && actor.skill_id_learn?(skill_id)
@partners.push(actor)
actor.union_skill_id = skill_id
end
end
end
# 合体攻撃使用不可
if @partners.size != union_skills.size
for actor in @partners do actor.union_skill_id = 0 end
@partners = nil
member.action.clear if !member.action.guard?
return
end
# 合体攻撃使用可
for actor in @partners
# パートナーアクション決定
actor.action.kind = 1
actor.action.skill_id = actor.union_skill_id
actor.action.target_index = member.action.target_index
# コマンド強制キャンセル
if @command_members.include?(actor)
force_action_command_cansel(actor)
start_auto_action(member)
end
end
$in_union_action = true
@union_size = 0
end
#--------------------------------------------------------------------------
# ● 合体攻撃可能か
#--------------------------------------------------------------------------
def union_possibility?
return if @partners == nil
for member in @partners
union_cansel = true unless member.inputable?
end
return if !union_cansel
end_union_skill
@active_battler.action.clear if !@active_battler.action.guard?
end
#--------------------------------------------------------------------------
# ● 合体攻撃ターゲット決定
#--------------------------------------------------------------------------
def union_target_decision(member, obj)
targets = member.action.make_targets
# デフォルトの複数回攻撃が設定されていれば単体ターゲットに変換
targets = [targets[0]] if obj.for_two? or obj.for_three? or obj.dual?
# ランダムターゲットの場合、一体を選択しランダム範囲を保持
if obj.extension.include?("ランダムターゲット")
randum_targets = targets.dup
targets = [randum_targets[rand(randum_targets.size)]]
end
# ターゲット情報をバトラースプライトに送る
@spriteset.set_target(member.actor?, member.index, targets)
return targets
end
#--------------------------------------------------------------------------
# ● 合体攻撃処理
#--------------------------------------------------------------------------
def process_union_skill
@union_size += 1
if @union_size != @partners.size
return @active_battler.union_battler = true
end
# 合体攻撃スタート
@action_battlers.delete(@active_battler)
@active_battler.active = false
@active_battler = @partners.shift
@active_battler.act_active = true
@active_battler.active = true
@active_battler.union_battler = false
@active_battler.action.kind = 1
@active_battler.action.skill_id = @active_battler.union_skill_id
@active_battler.action.target_index = @union_target_index
for member in @partners
member.action.kind = 1
member.action.skill_id = member.union_skill_id
member.action.target_index = @union_target_index
member.force_target = ["N01target_change", @union_targets]
@spriteset.update_target(true, member.index)
# アクション実行
@spriteset.set_action(true, member.index, member.action.skill.base_action)
end
end
#--------------------------------------------------------------------------
# ● 合体攻撃終了処理
#--------------------------------------------------------------------------
def end_union_skill
@active_battler.union_skill_id = 0
@active_battler.union_battler = false
for member in @partners
member.union_skill_id = 0
member.union_battler = false
member.action.clear
@action_battlers.delete(member)
turn_end(member)
end
@union_size = 0
@partners = nil
$in_union_action = false
end
#--------------------------------------------------------------------------
# ● エネミーの行動回数作成
#--------------------------------------------------------------------------
def enemy_order
return false if @active_battler.actor?
return false if @active_battler.act_time == 0 or !@active_battler.action.valid?
return true if rand(100) < @active_battler.action_time[1]
end
#--------------------------------------------------------------------------
# ● ターン終了(経過) ※再定義
#--------------------------------------------------------------------------
def turn_end(member)
$in_action = false
# アクション終了時のATBゲージ設定
recharge_action(member)
member.action.clear if !member.action.guard?
process_battle_event
# ターン経過カウント
@end_member += 1
passage = true if N02::ATB_TURN_COUNT == 2
if @end_member >= $game_party.members.size + $game_troop.members.size
passage = true if N02::ATB_TURN_COUNT == 0
passage = true if N02::ATB_TURN_COUNT == 1 && @end_member == 2
elsif @end_member == ($game_party.members.size + $game_troop.members.size) / 2
passage = true if N02::ATB_TURN_COUNT == 1
end
# スリップダメージ
if @slip_all_damage
for battlers in $game_party.members + $game_troop.members do mp_slip_damage(battlers) end
@slip_all_damage = false
@slip_all_damaged = true
end
return if !passage
# スリップダメージ
if N02::ATB_SLIP_DAMAGE == 1 && !@slip_all_damaged
for battlers in $game_party.members + $game_troop.members do hp_slip_damage(battlers) end
@slip_all_damage = true
end
@slip_all_damaged = false
@end_member = 0
$game_troop.increase_turn
$game_troop.turn_ending = true
$game_troop.turn_ending = false
@status_window.refresh
end
#--------------------------------------------------------------------------
# ● アクション終了時のATBゲージ設定
#--------------------------------------------------------------------------
def recharge_action(member)
member.act_count = 0
recharge = member.recharge
# 通常攻撃(二刀のチャージ時間は双方武器の平均)
if member.actor? && member.action.attack?
recharge = member.weapons[0].recharge if member.weapons[0] != nil
recharge2 = member.weapons[1].recharge if member.weapons[1] != nil
recharge = (recharge + recharge2) / 2 if recharge2 != nil
elsif member.action.attack?
act_type = $data_weapons[member.weapon].charge if member.weapon != 0
end
recharge = $data_skills[member.action.skill_id].recharge if member.action.skill?
recharge = $data_items[member.action.item_id].recharge if member.action.item?
recharge = N02::ATB_GUARD_RESET if member.action.guard?
# ATBゲージに切り替え
@spriteset.change_atb(10 * recharge, member.actor?, member.index)
@spriteset.gauge_refresh(member.actor?, member.index)
end
#--------------------------------------------------------------------------
# ● 次の行動者へ
#--------------------------------------------------------------------------
def set_next_active_battler
return if $game_party.all_dead? or $game_troop.all_dead?
# 全員の不死身化解除(イベント等で不死身設定がされていれば除く)
member_unimmortaling
# エネミー複数回行動時
@action_battlers.shift if @active_battler != nil && !@active_battler.actor? && @active_battler.act_time != 0
loop do
if $game_troop.forcing_battler != nil
@active_battler = $game_troop.forcing_battler
@action_battlers.delete(@active_battler)
$game_troop.forcing_battler = nil
else
@active_battler = @action_battlers.shift
end
@active_battler.action.clear if @active_battler != nil && @active_battler.dead?
return if @active_battler == nil
# 戦闘行動開始
return process_action if @active_battler.index != nil
end
end
#--------------------------------------------------------------------------
# ● バトルイベントの処理 ※再定義
#--------------------------------------------------------------------------
def process_battle_event
members_size = $game_party.members.size
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
reset_atb_actor if members_size != $game_party.members.size
if $game_troop.forcing_battler != nil
member_unimmortaling
$game_troop.forcing_battler.clear_sprite_effects
@spriteset.set_stand_by_action($game_troop.forcing_battler.actor?, $game_troop.forcing_battler.index)
set_next_active_battler
end
return unless $game_troop.interpreter.running?
update_basic
end
end
#--------------------------------------------------------------------------
# ● 全員の不死身化解除
#--------------------------------------------------------------------------
def member_unimmortaling
for member in $game_party.members + $game_troop.members
member.non_dead = true if member.immortal
next if member.non_dead
next if member.dead?
member.immortal = false
end
end
#--------------------------------------------------------------------------
# ● HPスリップダメージ
#--------------------------------------------------------------------------
def hp_slip_damage(member)
member.clear_action_results
return if !member.exist?
member.slip_damage = false
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
# 防具の自動回復があるか
if member.actor? && member.auto_hp_recover && member.exist?
damage -= member.maxhp / 20
slip_pop = true
end
# 戦闘不能不許可
damage = member.hp - 1 if damage >= member.hp && slip_dead = false
member.hp -= damage
@spriteset.set_damage_pop(member.actor?, member.index, damage) if slip_pop
member.perform_collapse if member.dead? && member.slip_damage
member.clear_action_results
@status_window.refresh
end
#--------------------------------------------------------------------------
# ● MPスリップダメージ
#--------------------------------------------------------------------------
def mp_slip_damage(member)
member.clear_action_results
return if !member.exist? or member.states.size == 0
member.slip_damage = false
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
end
member.mp_damage = mp_damage
member.mp -= mp_damage
@spriteset.set_damage_pop(member.actor?, member.index, mp_damage) if slip_pop
member.clear_action_results
@status_window.refresh
end
#--------------------------------------------------------------------------
# ● 戦闘行動の実行 : 防御 ※再定義
#--------------------------------------------------------------------------
def execute_action_guard
@help_window.set_text("防御", 1)
@help_window.visible = true
# バトラーのアクティブ化を解除
@active_battler.active = false
wait(45)
@help_window.visible = false if @help_window != nil
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 if @help_window != nil
end
#--------------------------------------------------------------------------
# ● パーティコマンド選択の開始 ※再定義
#--------------------------------------------------------------------------
def start_party_command_selection
@info_viewport.visible = true
@status_window.index = @actor_index = -1
end
#--------------------------------------------------------------------------
# ● 次のアクターのコマンド入力へ ※再定義
#--------------------------------------------------------------------------
def next_actor
end
#--------------------------------------------------------------------------
# ● 前のアクターのコマンド入力へ ※再定義
#--------------------------------------------------------------------------
def prior_actor
end
#--------------------------------------------------------------------------
# ● アクターコマンド選択の開始 ※再定義
#--------------------------------------------------------------------------
def start_actor_command_selection
$in_command = true
@command_phase = true
@command_member_index = 0
@commander = @command_members[@command_member_index]
@status_window.active = true
@status_window.index = @commander.index
# カーソルセット
@cursor = Sprite_Cursor.new if @cursor == nil
@cursor.set(@commander)
# 動けるキャラのみコマンドアクションを
@spriteset.set_action(true, @commander.index,@commander.command_b) if @commander.inputable?
@party_command_window.active = false
@actor_command_window.setup(@commander)
@actor_command_window.active = true
@actor_command_window.index = 0
@actor_command_window_on = true
@status_window.refresh
end
#--------------------------------------------------------------------------
# ● コマンド更新 ※再定義
#--------------------------------------------------------------------------
def update_actor_command_selection
# コマンド入力できる状態でなくなればキャンセル
return reset_command unless commanding?
if Input.trigger?(Input::B)
Input.update
Sound.play_decision
start_party_command
elsif Input.trigger?(Input::C)
Input.update
case @actor_command_window.index
when 0 # 攻撃
Sound.play_decision
@commander.action.set_attack
start_target_enemy_selection
when 1 # スキル
Sound.play_decision
$in_select = true
start_skill_selection
when 2 # 防御
Sound.play_decision
@commander.action.set_guard
end_command
when 3 # アイテム
Sound.play_decision
$in_select = true
start_item_selection
end
# →キーでコマンドキャラ送り
elsif Input.trigger?(Input::RIGHT)
next_commander
# ←キーでコマンドキャラ戻し
elsif Input.trigger?(Input::LEFT)
back_commander
end
end
#--------------------------------------------------------------------------
# ● コマンド入力できる状態か
#--------------------------------------------------------------------------
def commanding?
return false if @judge or $gauge_stop
return false if @commander != nil &&
[email protected]
?
return false if @commander != nil && @commander.union_skill_id != 0
return false if @commander != nil && @commander.at_count < 1000
return true
end
#--------------------------------------------------------------------------
# ● コマンドキャラ送り
#--------------------------------------------------------------------------
def next_commander
return if @command_members.size == 1 or @commander == nil
Audio.se_play("Audio/SE/" + N02::NEXT_SOUND01[2], N02::NEXT_SOUND01[1], N02::NEXT_SOUND01[0])
# 動けるキャラのみコマンド戻りアクションを
@spriteset.set_action(true, @commander.index,@commander.command_a) if @commander.inputable?
# コマンド待ちメンバーのインデックスが最後なら
if @command_member_index == @command_members.size - 1
@command_member_index = 0
# 次のキャラにコマンドを送る
else
@command_member_index += 1
end
@commander = @command_members[@command_member_index]
@status_window.index = @commander.index
@actor_command_window.setup(@commander)
# カーソルセット
@cursor.set(@commander)
# 動けるキャラのみコマンドアクションを
@spriteset.set_action(true, @commander.index,@commander.command_b) if @commander.inputable?
end
#--------------------------------------------------------------------------
# ● コマンドキャラ戻し
#--------------------------------------------------------------------------
def back_commander
return if @command_members.size == 1 or @commander == nil
Audio.se_play("Audio/SE/" + N02::NEXT_SOUND01[2], N02::NEXT_SOUND01[1], N02::NEXT_SOUND01[0])
# 動けるキャラのみコマンド戻りアクションを
@spriteset.set_action(true, @commander.index,@commander.command_a) if @commander.inputable?
# コマンド待ちメンバーのインデックスが最初なら
if @command_member_index == 0
@command_member_index = @command_members.size - 1
# 前のキャラにコマンドを送る
else
@command_member_index -= 1
end
@commander = @command_members[@command_member_index]
@status_window.index = @commander.index
# カーソルセット
@cursor.set(@commander)
# 動けるキャラのみコマンドアクションを
@spriteset.set_action(true, @commander.index,@commander.command_b) if @commander.inputable?
end
#--------------------------------------------------------------------------
# ● パーティコマンド選択の開始
#--------------------------------------------------------------------------
def start_party_command
$in_party_command = true
$in_command = false
@status_window.refresh
@status_window.index = @actor_index = -1
@info_viewport.visible = true
@message_window.visible = false
@pre_a_index = @actor_command_window.index
@actor_command_window.active = false
@actor_command_window.index = -1
@party_command_window.active = true
@party_command_window.index = 0
@party_command_window.visible = true
end
#--------------------------------------------------------------------------
# ● パーティコマンド選択の更新
#--------------------------------------------------------------------------
def update_party_command_selection
# コマンド入力できる状態でなくなればキャンセル
return reset_command unless commanding?
if Input.trigger?(Input::C)
case @party_command_window.index
when 0 # 戦う
Sound.play_decision
@status_window.index = @actor_index = -1
end_party_command
when 1 # 逃げる
return Sound.play_buzzer if $game_troop.can_escape == false
Sound.play_decision
end_party_command
process_escape if !@escape
end
elsif Input.trigger?(Input::B)
Sound.play_cancel
end_party_command
end
end
#--------------------------------------------------------------------------
# ● パーティコマンド選択の終了
#--------------------------------------------------------------------------
def end_party_command
$in_party_command = false
$in_command = true
@status_window.refresh
@message_window.visible = false
@party_command_window.active = false
@actor_command_window.active = true
@party_command_window.visible = false
@actor_command_window.index = @pre_a_index
@status_window.index = @commander.index
@status_window.active = true
end
#--------------------------------------------------------------------------
# ● 逃走の処理 ※再定義
#--------------------------------------------------------------------------
def process_escape
@escape = true
closed_window
@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
if !actor.non_dead
actor.immortal = false
if actor.hp == 0 and not actor.state?(1)
actor.add_state(1)
actor.added_states.push(1)
end
end
unless actor.restriction >= 4
@spriteset.set_action(true, actor.index,actor.run_success)
end
end
wait_for_message
@judge = true
if $game_party.all_dead?
process_defeat
battle_end(2)
else
battle_end(1)
end
# 動けないアクターを除いて逃走失敗アクション
else
for actor in $game_party.members
if !actor.non_dead
actor.immortal = false
if actor.hp == 0 and not actor.state?(1)
actor.add_state(1)
actor.added_states.push(1)
end
end
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
if $game_party.all_dead?
process_defeat
battle_end(2)
end
end
reset_atb_actor
@info_viewport.visible = true
@escape = false
for member in $game_party.members
member.clear_sprite_effects
end
end
#--------------------------------------------------------------------------
# ● アクターのATBを初期化
#--------------------------------------------------------------------------
def reset_atb_actor
@command_members = []
@commander = nil
$in_action = @command_phase = false
$in_command = $in_target = $in_select = false
@message_window.clear
for member in $game_party.members
@action_battlers.delete(member)
member.white_flash = false
member.action.clear
# ATBゲージに切り替え
@spriteset.change_atb(N02::ATB_RUN_NG * -10, member.actor?, member.index)
end
end
#--------------------------------------------------------------------------
# ● 開いているウインドウを閉じる
#--------------------------------------------------------------------------
def closed_window
@cursor.dispose if @cursor != nil
@cursor = nil
@help_window.dispose if @help_window != nil
@help_window = nil
@help_window2.dispose if @help_window2 != nil
@help_window2 = nil
@skill_window.dispose if @skill_window != nil
@skill_window = nil
@item_window.dispose if @item_window != nil
@item_window = nil
@actor_command_window_on = false if @actor_command_window != nil
@actor_command_window.active = false if @actor_command_window != nil
@party_command_window.visible = false if @party_command_window != nil
@party_command_window.active = false if @party_command_window != nil
@status_window.index = @actor_index = @actor_command_window.index = -1
end
#--------------------------------------------------------------------------
# ● ターゲット選択の開始 ※再定義
#--------------------------------------------------------------------------
def start_target_selection(actor = false)
$in_target = true
$in_command = $in_select = false
@target_actors = actor
@target_members = $game_party.members if @target_actors
@target_members = $game_troop.members unless @target_actors
# 不要なウインドウを消す
@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 = @target_members.size - 1
# アクターは戦闘不能者でもターゲットできるようにエネミーと区別
unless @target_actors
@target_members.size.times do
break if @target_members[@index].exist?
@index += 1
end
end
# カーソルセット
@cursor.set(@target_members[@index])
@help_window.visible = false if @help_window != nil
@help_window2 = Window_Help.new if @help_window2 == nil
@help_window2.set_text_n02add(@target_members[@index])
end
#--------------------------------------------------------------------------
# ● ターゲット選択更新 ※再定義
#--------------------------------------------------------------------------
def update_target
# コマンド入力できる状態でなくなればキャンセル
return reset_command unless commanding?
return end_target_selection(cansel = true) if $game_troop.all_dead?
cursor_down if !@target_members[@index].actor? && !@target_members[@index].exist?
if Input.trigger?(Input::B)
Input.update
Sound.play_cancel
end_target_selection(cansel = true)
elsif Input.trigger?(Input::C)
Input.update
Sound.play_decision
@commander.action.target_index = @index
end_target_selection
end_skill_selection
end_item_selection
@actor_command_window.active = false
next_actor
end
if Input.repeat?(Input::LEFT)
if @target_actors
cursor_down if $back_attack
cursor_up unless $back_attack
else
cursor_up if $back_attack
cursor_down unless $back_attack
end
end
if Input.repeat?(Input::RIGHT)
if @target_actors
cursor_up if $back_attack
cursor_down unless $back_attack
else
cursor_down if $back_attack
cursor_up unless $back_attack
end
end
cursor_up if Input.repeat?(Input::UP)
cursor_down if Input.repeat?(Input::DOWN)
end
#--------------------------------------------------------------------------
# ● カーソルを前に移動 ※再定義
#--------------------------------------------------------------------------
def cursor_up
Sound.play_cursor
@target_members.size.times do
@index += @target_members.size - 1
@index %= @target_members.size
break if @target_actors
break if @target_members[@index].exist?
end
# カーソルセット
@cursor.set(@target_members[@index])
@help_window2.set_text_n02add(@target_members[@index]) if @help_window2 != nil
end
#--------------------------------------------------------------------------
# ● カーソルを次に移動 ※再定義
#--------------------------------------------------------------------------
def cursor_down
Sound.play_cursor
@target_members.size.times do
@index += 1
@index %= @target_members.size
break if @target_actors
break if @target_members[@index].exist?
end
# カーソルセット
@cursor.set(@target_members[@index])
@help_window2.set_text_n02add(@target_members[@index]) if @help_window2 != nil
end
#--------------------------------------------------------------------------
# ● ターゲット選択の終了 再定義
#--------------------------------------------------------------------------
def end_target_selection(cansel = false)
$in_target = false
@help_window2.dispose if @help_window2 != nil
@help_window2 = nil
@help_window.visible = false if @help_window != nil
if @skill_window != nil
@skill_window.visible = @skill_window.active = true
@help_window.visible = true if @help_window != nil
@actor_command_window.active = false if cansel
$in_select = true if cansel
elsif @item_window != nil
@item_window.visible = @item_window.active = true
@help_window.visible = true if @help_window != nil
@actor_command_window.active = false if cansel
$in_select = true if cansel
end
@target_members = nil
end_command if !cansel
# カーソルセット
@cursor.set(@commander) if cansel
$in_command = true if cansel && @actor_command_window.index == 0
@actor_command_window.active = true if cansel && @actor_command_window.index == 0
end
#--------------------------------------------------------------------------
# ● コマンド初期化
#--------------------------------------------------------------------------
def reset_command
@message_window.visible = false
@party_command_window.active = false
@commander.action.clear
@party_command_window.visible = false
$in_command = $in_select = $in_target = false
@target_members = nil
@actor_command_window.active = false
@cursor.visible = false if @cursor != nil #20090924更新
@command_phase = false
end_skill_selection
end_item_selection
@party_command_window.active = @actor_command_window.active = false
@actor_command_window_on = false
@status_window.index = @actor_index = @actor_command_window.index = -1
@command_members.delete(@commander)
@commander = nil
end
#--------------------------------------------------------------------------
# ● 強制行動によるコマンドキャンセル
#--------------------------------------------------------------------------
def force_action_command_cansel(member)
return if !member.inputable?
# チャージ設定
act_type = charge_set(member)
# 行動ゲージに切り替え
@spriteset.change_act(act_type, member.actor?, member.index)
# 動けるキャラのみコマンド戻りアクションを
@spriteset.set_action(true, member.index,member.command_a) if member.actor? && member.inputable?
# チャージアクション
make_charge_action(member)
# 以下の処理はコマンド入力中のアクター限定
return if !member.actor? or @commander != member
# カーソル消去
@cursor.visible = false if @cursor != nil #20090924更新
@command_phase = false
# ウインドウ初期化
end_skill_selection
end_item_selection
$in_target = false
@help_window2.dispose if @help_window2 != nil
@help_window2 = nil
@help_window.visible = false if @help_window != nil
@party_command_window.active = @actor_command_window.active = false
@actor_command_window_on = false
@status_window.index = @actor_index = @actor_command_window.index = -1
@command_members.delete(member)
@commander = nil
@message_window.visible = false
@party_command_window.active = false
@party_command_window.visible = false
$in_command = $in_select = $in_target = false
@target_members = nil
end
#--------------------------------------------------------------------------
# ● コマンド入力終了
#--------------------------------------------------------------------------
def end_command
return if
[email protected]
?
$in_command = false
$in_select = false
# カーソル消去
@cursor.visible = false if @cursor != nil #20090924更新
@command_phase = false
# アクション実行時間チェック
act_type = charge_set(@commander)
# 行動ゲージに切り替え
@spriteset.change_act(act_type, true, @commander.index)
# 動けるキャラのみコマンド戻りアクションを
@spriteset.set_action(true, @commander.index,@commander.command_a) if @commander.inputable?
# チャージアクション
make_charge_action(@commander)
# 合体攻撃チェック
union_skill?(@commander) if @commander.action.skill? && @partners == nil
# ウインドウ初期化
@party_command_window.active = @actor_command_window.active = false
@actor_command_window_on = false
@status_window.index = @actor_index = @actor_command_window.index = -1
@command_members.delete(@commander)
@commander = nil
end
#--------------------------------------------------------------------------
# ● 情報表示ビューポートの作成 ※再定義
#--------------------------------------------------------------------------
def create_info_viewport
@command_members = []
@action_battlers = []
@info_viewport = Viewport.new(0, 288, 544, 128)
@info_viewport.z = 100
@status_window = Window_BattleStatus.new
@party_command_window = Window_PartyCommand2.new
@actor_command_window = Window_ActorCommand.new
@status_window.viewport = @info_viewport
@actor_command_window.viewport = @info_viewport
@status_window.x = 128
@actor_command_window.x = 672
@info_viewport.visible = false
@party_command_window.visible = false
@info_viewport.ox = 128
end
#--------------------------------------------------------------------------
# ● 情報表示ビューポートの更新 ※再定義
#--------------------------------------------------------------------------
def update_info_viewport
@party_command_window.update if @party_command_window.active
@actor_command_window.update if @actor_command_window.active
@status_window.update if @status_window.active
@message_window.visible = false if !$game_message.visible
@info_viewport.visible = true if !@message_window.visible
@actor_command_window.x += 32 if @actor_command_window.x < 672 && !@actor_command_window_on
@actor_command_window.x -= 32 if @actor_command_window.x > 544 && @actor_command_window_on
end
#--------------------------------------------------------------------------
# ● スキル選択の開始 ※再定義
#--------------------------------------------------------------------------
def start_skill_selection
@help_window = Window_Help.new if @help_window == nil
@help_window.visible = true
@skill_window = Window_Skill.new(0, 56, 544, 232, @commander)
@skill_window.z = 1000
@skill_window.help_window = @help_window
@actor_command_window.active = false
end
#--------------------------------------------------------------------------
# ● スキル選択の更新 ※再定義
#--------------------------------------------------------------------------
def update_skill_selection
# コマンド入力できる状態でなくなればキャンセル
return reset_command unless commanding?
@skill_window.active = true
@skill_window.update
@help_window.update
if Input.trigger?(Input::B)
Sound.play_cancel
end_skill_selection
$in_command = true
elsif Input.trigger?(Input::C)
@skill = @skill_window.skill
if @skill != nil
@commander.last_skill_id = @skill.id
end
if @commander.skill_can_use?(@skill)
return Sound.play_buzzer if @commander.union_skill?(@skill.id) &&
[email protected]
_skill_can_use?(@skill.id)
Sound.play_decision
determine_skill
else
Sound.play_buzzer
end
end
end
#--------------------------------------------------------------------------
# ● スキルの決定 ※再定義
#--------------------------------------------------------------------------
def determine_skill
@commander.action.set_skill(@skill.id)
@skill_window.active = false
if @skill.need_selection?
if @skill.for_opponent?
start_target_enemy_selection
else
start_target_actor_selection
end
else
end_skill_selection
end_target_selection
end
end
#--------------------------------------------------------------------------
# ● スキル選択の終了
#--------------------------------------------------------------------------
alias end_skill_selection_n01 end_skill_selection
def end_skill_selection
end_skill_selection_n01
$in_select = false
end
#--------------------------------------------------------------------------
# ● アイテム選択の開始 ※再定義
#--------------------------------------------------------------------------
def start_item_selection
@help_window = Window_Help.new if @help_window == nil
@help_window.visible = true
@item_window = Window_Item.new(0, 56, 544, 232)
@item_window.z = 1000
@item_window.help_window = @help_window
@actor_command_window.active = false
end
#--------------------------------------------------------------------------
# ● アイテム選択の更新 ※再定義
#--------------------------------------------------------------------------
def update_item_selection
# コマンド入力できる状態でなくなればキャンセル
return reset_command unless commanding?
@item_window.active = true
@item_window.update
@help_window.update
if Input.trigger?(Input::B)
Sound.play_cancel
end_item_selection
$in_select = true
elsif Input.trigger?(Input::C)
@item = @item_window.item
if @item != nil
$game_party.last_item_id = @item.id
end
if $game_party.item_can_use?(@item)
Sound.play_decision
determine_item
else
Sound.play_buzzer
end
end
end
#--------------------------------------------------------------------------
# ● アイテムの決定 ※再定義
#--------------------------------------------------------------------------
def determine_item
@commander.action.set_item(@item.id)
@item_window.active = false
if @item.need_selection?
if @item.for_opponent?
start_target_enemy_selection
else
start_target_actor_selection
end
else
end_item_selection
end_target_selection
end
end
#--------------------------------------------------------------------------
# ● アイテム選択の終了
#--------------------------------------------------------------------------
alias end_item_selection_n01 end_item_selection
def end_item_selection
end_item_selection_n01
$in_select = false
end
#--------------------------------------------------------------------------
# ● 勝敗判定 ※再定義
#--------------------------------------------------------------------------
def judge_win_loss
return true unless $game_temp.in_battle
if $game_party.all_dead?
@judge = true
$gauge_stop = true
closed_window
@spriteset.atb_dispose
$game_troop.clear_actions
$game_party.clear_actions
process_defeat
return true
elsif $game_troop.all_dead?
@judge = true
$gauge_stop = true
closed_window
@spriteset.atb_dispose
$game_troop.clear_actions
$game_party.clear_actions
process_victory
return true
else
return false
end
end
end
#==============================================================================
# ■ Game_Battler (分割定義 1)
#------------------------------------------------------------------------------
# バトラーを扱うクラスです。
#==============================================================================
class Game_Battler
#--------------------------------------------------------------------------
# ● 公開インスタンス変数
#--------------------------------------------------------------------------
attr_accessor :at_count # コマンド待ちゲージ(1000がMAX)
attr_accessor :at_active # コマンド入力可能
attr_accessor :atb_count_up # ATBカウントアップ中
attr_accessor :act_count # 行動待ちゲージ(1000がMAX)
attr_accessor :act_active # 行動可能
attr_accessor :at_speed # ゲージアップスピード基準値
attr_accessor :charge_action # チャージアクション
attr_accessor :charge_start # チャージ中か
attr_accessor :union_skill_id # 合体攻撃スキルID
attr_accessor :union_battler # 合体攻撃参加者か
attr_accessor :speed_level # 戦闘参加者の最速スピード基準
attr_accessor :low_speed_level # 戦闘参加者の最遅スピード基準
attr_accessor :graphics_width # バトラー画像1セルあたりの横幅
attr_accessor :graphics_height # バトラー画像1セルあたりの縦幅
#--------------------------------------------------------------------------
# ● ステートの付加 ATBダメージ処理を追加
#--------------------------------------------------------------------------
alias add_state_n02 add_state
def add_state(state_id)
add_state_n02(state_id)
if $data_states[state_id].atb_damage != 0
@at_count = @at_count + $data_states[state_id].atb_damage * 10
@at_count = 0 if @at_count < 0 && !$data_states[state_id].atb_minus_damage
@at_count = 1000 if @at_count > 1000
# ATBダメージでチャージキャンセル
if $data_states[state_id].atb_damage < 0
@act_count = 0
@act_active = false
@at_active = false
@atb_count_up = true
end
end
end
#--------------------------------------------------------------------------
# ● 戦闘開始時のAT設定
#--------------------------------------------------------------------------
def atb_setting
# 初期化
@at_count = @act_count = @speed_level = @low_speed_level = @union_skill_id = 0
@at_active = @act_active = @atb_count_up = @charge_start = @union_battler = false
$in_party_command = $in_command = $in_target = $in_select = $in_action = false
@charge_action = normal
$in_union_action = false
# ゲージアップスピード(戦闘速度)
@at_speed = $game_party.atb_control[1]
# ユーザー設定を使わない場合
return if N02::ATB_CUSTOMIZE
@at_speed = N02::ATB_SPEED
end
#--------------------------------------------------------------------------
# ● ATBスピード基準値リフレッシュ
#--------------------------------------------------------------------------
def atb_base_speed_refresh
battle_members = $game_party.members + $game_troop.members
battle_members.sort! do |a,b|
b.agi - a.agi
end
self.speed_level = battle_members[0].agi
self.low_speed_level = battle_members[battle_members.size - 1].agi
end
#--------------------------------------------------------------------------
# ● 自動行動判定
#--------------------------------------------------------------------------
def auto_action?
return true if berserker? or confusion? or auto_battle or @union_skill_id != 0
return false
end
#--------------------------------------------------------------------------
# ● 合体攻撃スキル判定
#--------------------------------------------------------------------------
def union_skill?(skill_id)
# スキルに合体攻撃設定があるかチェック
for union_action in $data_skills[skill_id].union_action
union_skills = union_action if union_action.size != 0 && union_action.include?(skill_id)
end
return false if union_skills == nil
return true
end
#--------------------------------------------------------------------------
# ● 合体攻撃使用可能判定
#--------------------------------------------------------------------------
def union_skill_can_use?(skill_id)
return false if $in_union_action
for union_action in $data_skills[skill_id].union_action
union_skills = union_action if union_action.size != 0 && union_action.include?(skill_id)
end
return false if union_skills == nil
partners = []
# 合体攻撃メンバーが使用可能かチェック
for skill_id in union_skills
for actor in $game_party.members
if actor.skill_can_use?($data_skills[skill_id]) && actor.skill_id_learn?(skill_id)
partners.push(actor)
end
end
end
return false if partners.size != union_skills.size
return true
end
end
#==============================================================================
# ■ Game_Party
#------------------------------------------------------------------------------
# パーティを扱うクラスです。
#==============================================================================
class Game_Party < Game_Unit
#--------------------------------------------------------------------------
# ● 公開インスタンス変数
#--------------------------------------------------------------------------
attr_accessor :atb_custom # ATBユーザー設定
attr_accessor :atb_control # ATB設定
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
alias initialize_n02 initialize
def initialize
initialize_n02
@atb_control = []
@atb_custom = [N02::ATB_NEWGAME_MODE, N02::ATB_NEWGAME_SPEED - 1]
end
#--------------------------------------------------------------------------
# ● ユーザー設定をATB設定に反映
#--------------------------------------------------------------------------
def atb_customize
# ウエイト・アクティブ設定を格納
case @atb_custom[0]
when 0;@atb_control[0] = N02::ATB_MODE1
when 1;@atb_control[0] = N02::ATB_MODE2
when 2;@atb_control[0] = N02::ATB_MODE3
end
# 戦闘速度を格納
@atb_control[1] = N02::ATB_SPEED_MODE[@atb_custom[1]]
# ユーザー設定を使わない場合
return if N02::ATB_CUSTOMIZE
@atb_control[0] = ["",N02::ATB_PARTY_COMMAND_WAIT, N02::ATB_COMMAND_WAIT, N02::ATB_TARGET_WAIT, N02::ATB_SELECT_WAIT, N02::ATB_ACTION_WAIT]
@atb_control[1] = N02::ATB_SPEED
end
end
#==============================================================================
# ■ Sprite_MoveAnime
#------------------------------------------------------------------------------
# ATBゲージ用のスプライトです。
#==============================================================================
class Sprite_ATB < Sprite_Base
#--------------------------------------------------------------------------
# ● 公開インスタンス変数
#--------------------------------------------------------------------------
attr_accessor :battler
attr_accessor :count # 更新カウント
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize(viewport,battler = nil)
super(viewport)
@battler = battler
@count = 0
@base_atb_count = 1
@restriction_count = 0
@state_freeze = false
@update = 0
@pre_width = 0
make_gauge
start_atb
@party_command_wait = $game_party.atb_control[0][1]
@command_wait = $game_party.atb_control[0][2]
@target_wait = $game_party.atb_control[0][3]
@select_wait = $game_party.atb_control[0][4]
@action_wait = $game_party.atb_control[0][5]
end
#--------------------------------------------------------------------------
# ● ATB初期値セッティング
#--------------------------------------------------------------------------
def start_atb
atb = battler.atb_base * 10 + rand(N02::ATB_BASE_ADD) * 10
if battler.actor?
atb1 = battler.weapons[0].atb_base * 10 if battler.weapons[0] != nil
atb2 = battler.weapons[1].atb_base * 10 if battler.weapons[1] != nil
atb1 = atb if atb1 == nil
atb2 = atb1 if atb2 == nil
atb += (atb1 + atb2) / 2
for i in 0...battler.armors.size
# 二刀はキャンセル
next if battler.two_swords_style && battler.armors[0] != nil && battler.armors[0]
atb += battler.armors[i].atb_base * 10 if battler.armors[i] != nil
end
end
change_atb(atb)
end
#--------------------------------------------------------------------------
# ● ゲージ作成
#--------------------------------------------------------------------------
def make_gauge
self.bitmap = Cache.system("atb_bar_skin")
@gauge = Sprite.new(viewport)
@gauge.bitmap = Cache.system("atb_bar")
@gauge_max = Sprite.new(viewport)
@gauge_max.bitmap = Cache.system("atb_bar_active")
@gauge_max.visible = false
@gauge_division = 1000 / N02::ATB_WIDTH
@gauge_space = N02::ATB_SPACE
end
#--------------------------------------------------------------------------
# ● 座標セット
#--------------------------------------------------------------------------
def set(x, y)
self.ox = @gauge.ox = @gauge_max.ox = self.bitmap.width / 2
self.oy = @gauge.oy = @gauge_max.oy = self.bitmap.height / 2
self.visible = @gauge.visible = @gauge_max.visible = false
if @battler.actor? && N02::ATB_POSITION_HPWINDOW
self.z = @gauge.z = @gauge_max.z = 1000
self.x = @gauge.x = @gauge_max.x = N02::ATB_PARTY_POSITION[@battler.index][0]
self.y = @gauge.y = @gauge_max.y = N02::ATB_PARTY_POSITION[@battler.index][1]
return
end
adjust = N02::ATB_POSITION_ENEMY
adjust = N02::ATB_POSITION_ACTOR if battler.actor?
self.x = @gauge.x = @gauge_max.x = x + adjust[0]
self.x = @gauge.x = @gauge_max.x = x - adjust[0] if $back_attack
self.y = @gauge.y = @gauge_max.y = y + adjust[1]
self.z = @gauge.z = @gauge_max.z = battler.position_z + 10
@gauge_max.z += 1
end
#--------------------------------------------------------------------------
# ● ATBゲージ切り替え
#--------------------------------------------------------------------------
def change_atb(restart_gauge = 0)
@battler.atb_base_speed_refresh
case N02::ATB_BASE_SPEED
when 0
return @base_atb_count = @battler.at_speed * battler.agi if N02::ATB_ABSOLUTE_SPEED == 0
@base_atb_count = @battler.at_speed * battler.agi / N02::ATB_ABSOLUTE_SPEED
when 1
return @base_atb_count = @battler.at_speed * battler.agi if @battler.speed_level == 0
@base_atb_count = @battler.at_speed * battler.agi / @battler.speed_level
when 2
return @base_atb_count = @battler.at_speed * @battler.agi if @battler.low_speed_level == 0
@base_atb_count = @battler.at_speed * @battler.agi / @battler.low_speed_level
when 3
return @base_atb_count = @battler.at_speed * @battler.agi if @battler.speed_level / 2 + @battler.low_speed_level / 2 == 0
@base_atb_count = @battler.at_speed * @battler.agi / (@battler.speed_level / 2 + @battler.low_speed_level / 2)
end
@base_atb_count = 1 if @base_atb_count == 0
@battler.at_count = restart_gauge
@battler.act_count = 0
@gauge.bitmap = Cache.system("atb_bar")
@battler.act_active = false
@battler.at_active = false
@battler.atb_count_up = true
end
#--------------------------------------------------------------------------
# ● ACTゲージ切り替え
#--------------------------------------------------------------------------
def change_act(act_type)
change_atb
case act_type[0]
when 0
base = @battler.at_speed * @battler.agi
base = @battler.at_speed * @battler.agi / act_type[2] if act_type[2] != 0
when 1
base = @battler.at_speed * @battler.agi / @battler.speed_level
when 2
base = @battler.at_speed * @battler.agi if @battler.low_speed_level == 0
base = @battler.at_speed * @battler.agi / @battler.low_speed_level
when 3
base = @battler.at_speed * @battler.agi if @battler.speed_level / 2 + @battler.low_speed_level / 2 == 0
base = @battler.at_speed * @battler.agi / (@battler.speed_level / 2 + @battler.low_speed_level / 2)
when 4
base = @battler.at_speed
end
if act_type[1] <= 0
@base_act_count = 1000
else
@base_act_count = base * 100 / act_type[1]
end
@base_act_count = 1 if @base_act_count == 0
@battler.act_count = 0
@gauge.bitmap = Cache.system("act_bar")
@battler.atb_count_up = false
@battler.at_active = false
end
#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
def update
# ステート管理
states_control
# 強制ゲージストップ
return if $gauge_stop or
[email protected]
? or $game_message.visible
# アクションウエイト
wait = true if $in_action && !@action_wait
wait = false if $in_action && @action_wait
# パーティコマンド選択中ウエイト
wait = true if $in_party_command && !@party_command_wait
wait = false if $in_party_command && @party_command_wait
# 戦闘コマンド選択中ウエイト
wait = true if $in_command && !@command_wait
wait = false if $in_command && @command_wait
# ターゲット選択中ウエイト
wait = true if $in_target && !@target_wait
wait = false if $in_target && @target_wait
# スキル/アイテム選択中ウエイト
wait = true if $in_select && !@select_wait
wait = false if $in_select && @select_wait
# アクション中はゲージを消すか
self.visible = @gauge.visible = true
self.visible = @gauge_max.visible = @gauge.visible = false if @battler.act_active && N02::ATB_ACTION_ENEMY_OFF &&
[email protected]
? && @battler.union_skill_id == 0
self.visible = @gauge_max.visible = @gauge.visible = false if @battler.act_active && N02::ATB_ACTION_ACTOR_OFF && @battler.actor? && @battler.union_skill_id == 0
# ゲージ表示設定
self.visible = @gauge.visible = @gauge_max.visible = false if
[email protected]
_on
self.visible = @gauge.visible = @gauge_max.visible = false if @battler.actor? && $game_message.visible && N02::ATB_POSITION_HPWINDOW
# 見えないエネミーはゲージ隠蔽
self.visible = @gauge.visible = @gauge_max.visible = false if
[email protected]
? &&
[email protected]
?
# ボタン入力によるゲージ制御
wait = true if Input.press?(Input::ALT) && N02::ATB_ALT_WAIT
wait = false if Input.press?(Input::CTRL) && N02::ATB_CTRL_ACTIVE
# 自身のみアクションウエイト
wait = true if @battler.act_active
# ゲージウエイト
return if wait
# ステートによるゲージストップ処理
return recover_states_freeze if @state_freeze
# ゲージカウントアップ
gauge_update
# ゲージ描画
return if @pre_width == @gauge_space + @battler.act_count / @gauge_division &&
[email protected]
_count_up
return if @pre_width == @gauge_space + @battler.at_count / @gauge_division && @battler.atb_count_up
gauge_refresh
end
#--------------------------------------------------------------------------
# ● ゲージカウントアップ
#--------------------------------------------------------------------------
def gauge_update
# ACTカウントアップ
act if
[email protected]
_count_up &&
[email protected]
_active &&
[email protected]
_active
# ATBカウントアップ
atb if @battler.atb_count_up
end
#--------------------------------------------------------------------------
# ● ゲージリフレッシュ
#--------------------------------------------------------------------------
def gauge_refresh
@gauge_max.visible = false if
[email protected]
_active &&
[email protected]
_active
@gauge.src_rect.width = @pre_width = @gauge_space + @battler.act_count / @gauge_division if
[email protected]
_count_up &&
[email protected]
_active &&
[email protected]
_active
@gauge.src_rect.width = @pre_width = @gauge_space + @battler.at_count / @gauge_division if @battler.atb_count_up
end
#--------------------------------------------------------------------------
# ● ゲージ隠蔽
#--------------------------------------------------------------------------
def off
self.visible = @gauge.visible = @gauge_max.visible = false
end
#--------------------------------------------------------------------------
# ● ゲージ表示
#--------------------------------------------------------------------------
def on
self.visible = @gauge.visible = @gauge_max.visible = true
gauge_refresh
end
#--------------------------------------------------------------------------
# ● ステート管理
#--------------------------------------------------------------------------
def states_control
if !@state_freeze &&
[email protected]
?
# 行動不能はゲージを0に
@restriction_count = @battler.at_count
@state_freeze = true
@atb_dead = true if @battler.dead? && !@atb_dead
change_atb(0)
gauge_refresh
self.visible = @gauge_max.visible = @gauge.visible = false if
[email protected]
? &&
[email protected]
?
# ステート復帰時
elsif @battler.movable? && @state_freeze
@state_freeze = false
# 戦闘不能復帰時のゲージ処理
return if !@atb_dead
change_atb(N02::ATB_DEAD_COUNT * 10)
@atb_dead = false
gauge_refresh
end
end
#--------------------------------------------------------------------------
# ● ステートによるゲージストップ回復
#--------------------------------------------------------------------------
def recover_states_freeze
@restriction_count += @base_atb_count
@restriction_count += @base_atb_count * 2 if Input.press?(Input::SHIFT) && N02::ATB_SHIFT_BOOST
if @restriction_count >= 1000
# ステート自然回復許可
@battler.remove_states_auto
@restriction_count = 0
end
end
#--------------------------------------------------------------------------
# ● ATBカウント
#--------------------------------------------------------------------------
def atb
if @battler.at_count <= 1000
@gauge_max.visible = false
@battler.at_count += @base_atb_count
@battler.at_count += @base_atb_count * 2 if Input.press?(Input::SHIFT) && N02::ATB_SHIFT_BOOST
end
# ATBゲージMAX
if @battler.at_count >= 1000
# ステート自然回復
@battler.remove_states_auto
@battler.atb_count_up = false
@battler.at_active = true
@gauge.src_rect.width = 52
return if
[email protected]
_on
Audio.se_play("Audio/SE/" + N02::ATB_MAX_SOUND01[2], N02::ATB_MAX_SOUND01[1], N02::ATB_MAX_SOUND01[0])
@gauge_max.visible = true
end
@battler.act_active = false
end
#--------------------------------------------------------------------------
# ● ACTカウント
#--------------------------------------------------------------------------
def act
if @battler.act_count <= 1000
@gauge_max.visible = false
@battler.act_count += @base_act_count
@battler.at_count += @base_atb_count * 3 if Input.press?(Input::SHIFT) && N02::ATB_SHIFT_BOOST
end
# ACTゲージMAX
if @battler.act_count >= 1000 &&
[email protected]
_active
@battler.act_active = true
@gauge.src_rect.width = 52
return if
[email protected]
_on
Audio.se_play("Audio/SE/" + N02::ACT_MAX_SOUND01[2], N02::ACT_MAX_SOUND01[1], N02::ACT_MAX_SOUND01[0])
@gauge_max.visible = true
end
end
#--------------------------------------------------------------------------
# ● 解放
#--------------------------------------------------------------------------
def dispose
super
@gauge.dispose
@gauge_max.dispose
end
end
#==============================================================================
# ■ Sprite_Cursor
#------------------------------------------------------------------------------
# カーソルのスプライトです。
#==============================================================================
class Sprite_Cursor < Sprite_Base
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
super
create_target_cursor
end
#--------------------------------------------------------------------------
# ● ターゲットカーソルスプライトの作成
#--------------------------------------------------------------------------
def create_target_cursor
self.bitmap = Cache.system("cursor")
@width = self.bitmap.width
@height = self.bitmap.height / 3
self.src_rect.set(0, 0, @width, @height)
@cursor_flame = 0
self.x = @pre_x = 272
self.y = @pre_y = 208
self.z = 300
self.ox = @width
self.oy = @height
self.visible = false
@time = 0
@flash_time = 0
end
#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
def update
# カーソル画像更新
@cursor_flame = 0 if @cursor_flame == 40
self.src_rect.set(0, 0, @width, @height) if @cursor_flame == 0
self.src_rect.set(0, @height, @width, @height) if @cursor_flame == 10
self.src_rect.set(0, 2 * @height, @width, @height) if @cursor_flame == 20
self.src_rect.set(0, @height, @width, @height) if @cursor_flame == 30
@cursor_flame += 1
# カーソル座標更新
return if @battler == nil
# ターゲットを光らせる
@flash_time -= 1
if @flash_time == 0 && @battler.exist? &&
[email protected]
@battler.white_flash = true
@flash_time = 20
end
if @time == 0
self.x = @battler.position_x
return self.y = @battler.position_y - @battler.graphics_width / 5
end
@time -= 1
self.x = @pre_x + (@battler.position_x - @pre_x) * (9 - @time) / 9
self.y = @pre_y + (@battler.position_y - @battler.graphics_width / 5 - @pre_y) * (9 - @time) / 9
end
#--------------------------------------------------------------------------
# ● カーソル移動情報セット
#--------------------------------------------------------------------------
def set(battler)
self.visible = true
@battler = battler
return if @battler == nil
@battler.white_flash = true if @battler.exist? &&
[email protected]
@time = 9
@flash_time = 20
@pre_x = self.x
@pre_y = self.y
end
end
#==============================================================================
# ■ Sprite_Battler
#------------------------------------------------------------------------------
# バトラー表示用のスプライトです。
#==============================================================================
class Sprite_Battler < Sprite_Base
#--------------------------------------------------------------------------
# ● バトラー作成
#--------------------------------------------------------------------------
alias make_battler_n01 make_battler
def make_battler
make_battler_n01
@battler.graphics_width = @width
@battler.graphics_height = @height
make_atb
end
#--------------------------------------------------------------------------
# ● 解放
#--------------------------------------------------------------------------
alias dispose_n01 dispose
def dispose
dispose_n01
@atb_gauge.dispose if @atb_gauge != nil
end
#--------------------------------------------------------------------------
# ● 待機アクション ※再定義
#--------------------------------------------------------------------------
def stand_by
# チャージアクションを優先
@battler.charge_start = false if @battler.charge_start &&
[email protected]
?
return @repeat_action = @battler.charge_action if @battler.charge_start
# 通常待機に
@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
#--------------------------------------------------------------------------
# ● ATBゲージ作成
#--------------------------------------------------------------------------
def make_atb
return if battler == nil
battler.atb_setting
if battler.actor? && N02::ATB_POSITION_HPWINDOW
@atb_gauge = Sprite_ATB.new(@viewport2,battler)
else
@atb_gauge = Sprite_ATB.new(viewport,battler)
end
@atb_gauge.set(self.x, self.y)
end
#--------------------------------------------------------------------------
# ● ATBゲージビューポート作成
#--------------------------------------------------------------------------
def make_atb_viewport(new_viewport)
@viewport2 = new_viewport
end
#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
alias update_n01 update
def update
update_n01
# ATB更新
@atb_gauge.update if @atb_gauge != nil
end
#--------------------------------------------------------------------------
# ● ゲージ更新
#--------------------------------------------------------------------------
def gauge_update
@atb_gauge.gauge_update if @atb_gauge != nil
end
#--------------------------------------------------------------------------
# ● ゲージリフレッシュ
#--------------------------------------------------------------------------
def gauge_refresh
@atb_gauge.gauge_refresh if @atb_gauge != nil
end
#--------------------------------------------------------------------------
# ● ゲージ表示
#--------------------------------------------------------------------------
def gauge_on
@atb_gauge.on if @atb_gauge != nil
end
#--------------------------------------------------------------------------
# ● ゲージ隠蔽
#--------------------------------------------------------------------------
def gauge_off
@atb_gauge.off if @atb_gauge != nil
end
#--------------------------------------------------------------------------
# ● ATBゲージ切り替え
#--------------------------------------------------------------------------
def change_atb(restart_gauge)
@atb_gauge.change_atb(restart_gauge) if @atb_gauge != nil
end
#--------------------------------------------------------------------------
# ● ACTゲージ切り替え
#--------------------------------------------------------------------------
def change_act(act_type)
@atb_gauge.change_act(act_type) if @atb_gauge != nil
end
#--------------------------------------------------------------------------
# ● ATBゲージ開放
#--------------------------------------------------------------------------
def atb_dispose
@atb_gauge.dispose if @atb_gauge != nil
@atb_gauge = nil
end
end
#==============================================================================
# ■ Spriteset_Battle
#------------------------------------------------------------------------------
# バトル画面のスプライトをまとめたクラスです。
#==============================================================================
class Spriteset_Battle
#--------------------------------------------------------------------------
# ● アクタースプライトの作成
#--------------------------------------------------------------------------
alias create_actors_n01 create_actors
def create_actors
create_actors_n01
if N02::ATB_POSITION_HPWINDOW
for sprites in @actor_sprites + @enemy_sprites
sprites.make_atb_viewport(@viewport4)
end
end
end
#--------------------------------------------------------------------------
# ● ターゲット情報リフレッシュ
#--------------------------------------------------------------------------
def update_target(actor, index)
@actor_sprites[index].update_target if actor
@enemy_sprites[index].update_target unless actor
end
#--------------------------------------------------------------------------
# ● ゲージ更新
#--------------------------------------------------------------------------
def gauge_update
for sprites in @actor_sprites + @enemy_sprites
sprites.gauge_update if sprites != nil
end
end
#--------------------------------------------------------------------------
# ● ゲージリフレッシュ
#--------------------------------------------------------------------------
def gauge_refresh(actor, index)
@actor_sprites[index].gauge_refresh if actor
@enemy_sprites[index].gauge_refresh unless actor
end
#--------------------------------------------------------------------------
# ● ゲージ表示
#--------------------------------------------------------------------------
def gauge_on
for sprites in @actor_sprites + @enemy_sprites
sprites.gauge_on if sprites != nil
end
end
#--------------------------------------------------------------------------
# ● ゲージ隠蔽
#--------------------------------------------------------------------------
def gauge_off
for sprites in @actor_sprites + @enemy_sprites
sprites.gauge_off if sprites != nil
end
end
#--------------------------------------------------------------------------
# ● ATBゲージ切り替え
#--------------------------------------------------------------------------
def change_atb(restart_gauge, actor, index)
@actor_sprites[index].change_atb(restart_gauge) if actor
@enemy_sprites[index].change_atb(restart_gauge) unless actor
end
#--------------------------------------------------------------------------
# ● ACTゲージ切り替え
#--------------------------------------------------------------------------
def change_act(act_type, actor, index)
@actor_sprites[index].change_act(act_type) if actor
@enemy_sprites[index].change_act(act_type) unless actor
end
#--------------------------------------------------------------------------
# ● ATBゲージ一斉開放
#--------------------------------------------------------------------------
def atb_dispose
for sprites in @actor_sprites + @enemy_sprites
sprites.atb_dispose if sprites != nil
end
end
end
#==============================================================================
# ■ Window_Help
#------------------------------------------------------------------------------
# スキルやアイテムの説明、アクターのステータスなどを表示するウィンドウです。
#==============================================================================
class Window_Help < Window_Base
#--------------------------------------------------------------------------
# ● テキスト設定
#--------------------------------------------------------------------------
def set_text_n02add(member)
return if member == nil
self.contents.clear
self.contents.font.color = normal_color
if !member.actor? && N02::ENEMY_NON_DISPLAY.include?(member.enemy_id)
return self.contents.draw_text(4, 0, self.width - 40, WLH, member.name, 1)
elsif member.actor? && !N02::ACTOR_DISPLAY
return self.contents.draw_text(4, 0, self.width - 40, WLH, member.name, 1)
end
if N02::WORD_STATE_DISPLAY && N02::HP_DISPLAY
self.contents.draw_text(0, 0, 180, WLH, member.name, 1)
draw_actor_hp(member, 182, 0, 120)
text = "["
for state in member.states
next if N02::STATE_NON_DISPLAY.include?(state.id)
text += " " if text != "["
text += state.name
end
text += N02::WORD_NORMAL_STATE if text == "["
text += "]"
text = "" if text == "[]"
self.contents.draw_text(315, 0, 195, WLH, text, 0)
elsif N02::WORD_STATE_DISPLAY
text = member.name + " ["
for state in member.states
next if N02::STATE_NON_DISPLAY.include?(state.id)
text += " " if text != member.name + " ["
text += state.name
end
text += N02::WORD_NORMAL_STATE if text == member.name + " ["
text += "]"
text = "" if text == "[]"
self.contents.draw_text(4, 0, self.width - 40, WLH, text, 1)
elsif N02::HP_DISPLAY
self.contents.draw_text(4, 0, 240, WLH, member.name, 1)
draw_actor_hp(member, 262, 0, 120)
end
end
end
#==============================================================================
# ■ Window_Skill
#------------------------------------------------------------------------------
# スキル画面などで、使用できるスキルの一覧を表示するウィンドウです。
#==============================================================================
class Window_Skill < Window_Selectable
#--------------------------------------------------------------------------
# ● 項目の描画 ※再定義
#--------------------------------------------------------------------------
def draw_item(index)
rect = item_rect(index)
self.contents.clear_rect(rect)
skill = @data[index]
if skill != nil
rect.width -= 4
enabled = @actor.skill_can_use?(skill)
enabled = @actor.union_skill_can_use?(skill.id) if @actor.union_skill?(skill.id)
draw_item_name(skill, rect.x, rect.y, enabled)
self.contents.draw_text(rect, @actor.calc_mp_cost(skill), 2)
end
end
end
#==============================================================================
# ■ Window_BattleStatus
#------------------------------------------------------------------------------
# バトル画面でパーティメンバーのステータスを表示するウィンドウです。
#==============================================================================
class Window_BattleStatus < Window_Selectable
#--------------------------------------------------------------------------
# ● カーソルを下に移動 ※再定義
#--------------------------------------------------------------------------
def cursor_down(wrap = false)
end
#--------------------------------------------------------------------------
# ● カーソルを上に移動 ※再定義
#--------------------------------------------------------------------------
def cursor_up(wrap = false)
end
#--------------------------------------------------------------------------
# ● フレーム更新 ※再定義
#--------------------------------------------------------------------------
def update
super
update_cursor
call_update_help
end
end
#==============================================================================
# ■ Window_PartyCommand2
#------------------------------------------------------------------------------
# バトル画面で、戦うか逃げるかを選択するウィンドウです。
#==============================================================================
class Window_PartyCommand2 < Window_Selectable
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
super(0, 234, 544, 56)
@item_max = 2
@column_max = 2
self.contents.draw_text(32, 0, 96, WLH, "战斗", 2)
self.contents.draw_text(310, 0, 96, WLH, "逃跑", 2) if $game_troop.can_escape
self.contents.font.color.alpha = 128
self.contents.draw_text(310, 0, 96, WLH, "逃跑", 2) if !$game_troop.can_escape
self.active = false
end
end
#==============================================================================
# ■ Window_MenuATB
#------------------------------------------------------------------------------
# メニュー画面でATB設定を表示するウィンドウです。
#==============================================================================
class Window_ATB_active < Window_Selectable
# アクティブタイムバトルのカスタマイズ項目からのテキスト
ATB_MODE_NAME = N02::ATB_MODE_NAME
ATB_MODE1 = N02::ATB_MODE1[0]
ATB_MODE2 = N02::ATB_MODE2[0]
ATB_MODE3 = N02::ATB_MODE3[0]
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
super(0, 174, 544, 56)
@item_max = 3
@column_max = 3
set_active
self.active = true
self.index = $game_party.atb_custom[0]
end
#--------------------------------------------------------------------------
# ● アクティブ化
#--------------------------------------------------------------------------
def set_active
self.contents.clear
self.contents.font.size = 15
self.contents.font.color = crisis_color
self.contents.draw_text( 0, 0, 100, WLH, ATB_MODE_NAME, 0)
self.contents.draw_text( 0, 0, 100, WLH, ATB_MODE_NAME, 0)
self.contents.font.size = 20
self.contents.font.color = normal_color
refresh
end
#--------------------------------------------------------------------------
# ● アクティブ解除
#--------------------------------------------------------------------------
def non_active
self.contents.clear
self.contents.font.size = 15
self.contents.font.color = system_color
self.contents.draw_text( 0, 0, 100, WLH, ATB_MODE_NAME, 0)
self.contents.font.size = 20
self.contents.font.color = normal_color
refresh
end
#--------------------------------------------------------------------------
# ● 項目を描画する矩形の取得
#--------------------------------------------------------------------------
def refresh
case $game_party.atb_custom[0]
when 0
self.contents.draw_text(100, 0, 140, WLH, ATB_MODE1, 1)
self.contents.font.color.alpha = 100
self.contents.draw_text(240, 0, 140, WLH, ATB_MODE2, 1)
self.contents.draw_text(380, 0, 140, WLH, ATB_MODE3, 1)
when 1
self.contents.font.color.alpha = 100
self.contents.draw_text(100, 0, 140, WLH, ATB_MODE1, 1)
self.contents.font.color = normal_color
self.contents.draw_text(240, 0, 140, WLH, ATB_MODE2, 1)
self.contents.font.color.alpha = 100
self.contents.draw_text(380, 0, 140, WLH, ATB_MODE3, 1)
when 2
self.contents.font.color.alpha = 100
self.contents.draw_text(100, 0, 140, WLH, ATB_MODE1, 1)
self.contents.draw_text(240, 0, 140, WLH, ATB_MODE2, 1)
self.contents.font.color = normal_color
self.contents.draw_text(380, 0, 140, WLH, ATB_MODE3, 1)
end
end
#--------------------------------------------------------------------------
# ● 項目を描画する矩形の取得
#--------------------------------------------------------------------------
def item_rect(index)
rect = Rect.new(0, 0, 0, 0)
rect.width = 140
rect.height = 24
rect.x = index % @column_max * rect.width + 100
rect.y = index / @column_max * WLH
return rect
end
end
#==============================================================================
# ■ Window_MenuATB
#------------------------------------------------------------------------------
# メニュー画面でATB設定を表示するウィンドウです。
#==============================================================================
class Window_ATB_speed < Window_Selectable
# アクティブタイムバトルのカスタマイズ項目からのテキスト
ATB_MODE_NAME = N02::ATB_SPEED_NAME
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
super(0, 230, 544, 56)
@item_max = 9
@column_max = 9
non_active
self.active = false
self.index = -1
end
#--------------------------------------------------------------------------
# ● アクティブ化
#--------------------------------------------------------------------------
def set_active
self.contents.clear
self.contents.font.size = 15
self.contents.font.color = crisis_color
self.contents.draw_text( 0, 0, 140, WLH, ATB_MODE_NAME, 0)
self.contents.draw_text( 0, 0, 140, WLH, ATB_MODE_NAME, 0)
self.contents.font.size = 22
self.contents.font.color = normal_color
refresh
end
#--------------------------------------------------------------------------
# ● アクティブ解除
#--------------------------------------------------------------------------
def non_active
self.contents.clear
self.contents.font.size = 15
self.contents.font.color = system_color
self.contents.draw_text( 0, 0, 140, WLH, ATB_MODE_NAME, 0)
self.contents.font.size = 22
self.contents.font.color = normal_color
refresh
end
#--------------------------------------------------------------------------
# ● 項目を描画する矩形の取得
#--------------------------------------------------------------------------
def refresh
self.contents.font.color.alpha = 96
self.contents.draw_text(94 + 38 * 0, 0, 140, WLH, "1", 1)
self.contents.draw_text(94 + 38 * 1, 0, 140, WLH, "2", 1)
self.contents.draw_text(94 + 38 * 2, 0, 140, WLH, "3", 1)
self.contents.draw_text(94 + 38 * 3, 0, 140, WLH, "4", 1)
self.contents.draw_text(94 + 38 * 4, 0, 140, WLH, "5", 1)
self.contents.draw_text(94 + 38 * 5, 0, 140, WLH, "6", 1)
self.contents.draw_text(94 + 38 * 6, 0, 140, WLH, "7", 1)
self.contents.draw_text(94 + 38 * 7, 0, 140, WLH, "8", 1)
self.contents.draw_text(94 + 38 * 8, 0, 140, WLH, "9", 1)
self.contents.font.color.alpha = 256
case $game_party.atb_custom[1]
when 0;self.contents.draw_text(94 + 38 * 0, 0, 140, WLH, "1", 1)
when 1;self.contents.draw_text(94 + 38 * 1, 0, 140, WLH, "2", 1)
when 2;self.contents.draw_text(94 + 38 * 2, 0, 140, WLH, "3", 1)
when 3;self.contents.draw_text(94 + 38 * 3, 0, 140, WLH, "4", 1)
when 4;self.contents.draw_text(94 + 38 * 4, 0, 140, WLH, "5", 1)
when 5;self.contents.draw_text(94 + 38 * 5, 0, 140, WLH, "6", 1)
when 6;self.contents.draw_text(94 + 38 * 6, 0, 140, WLH, "7", 1)
when 7;self.contents.draw_text(94 + 38 * 7, 0, 140, WLH, "8", 1)
when 8;self.contents.draw_text(94 + 38 * 8, 0, 140, WLH, "9", 1)
end
end
#--------------------------------------------------------------------------
# ● 項目を描画する矩形の取得
#--------------------------------------------------------------------------
def item_rect(index)
rect = Rect.new(0, 0, 0, 0)
rect.width = 38
rect.height = 24
rect.x = index % @column_max * rect.width + 145
rect.y = index / @column_max * WLH
return rect
end
end
#==============================================================================
# ■ Window_ATB_Help
#------------------------------------------------------------------------------
# ATB設定の説明を表示するウィンドウです。
#==============================================================================
class Window_ATB_Help < Window_Base
# アクティブタイムバトルのカスタマイズ項目からのテキスト
ATB_MODE_NAME = N02::ATB_MODE_NAME
ATB_MODE1 = N02::ATB_MODE1[0]
ATB_MODE2 = N02::ATB_MODE2[0]
ATB_MODE3 = N02::ATB_MODE3[0]
ATB_MODE1_HELP = N02::ATB_MODE1_HELP
ATB_MODE2_HELP = N02::ATB_MODE2_HELP
ATB_MODE3_HELP = N02::ATB_MODE3_HELP
ATB_SPEED_NAME = N02::ATB_SPEED_NAME
ATB_SPEED_HELP = N02::ATB_SPEED_HELP
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
super(0, 56, 544, 96)
end
#--------------------------------------------------------------------------
# ● テキスト設定
#--------------------------------------------------------------------------
def set_text_active(index)
text1 = ATB_MODE_NAME + " ["
case index
when 0
text1 += ATB_MODE1 + "]"
text2 = ATB_MODE1_HELP
when 1
text1 += ATB_MODE2 + "]"
text2 = ATB_MODE2_HELP
when 2
text1 += ATB_MODE3 + "]"
text2 = ATB_MODE3_HELP
end
self.contents.clear
self.contents.font.color = crisis_color
self.contents.draw_text(4, 4, self.width - 40, WLH, text1, 0)
self.contents.font.color = normal_color
self.contents.draw_text(4, 34, self.width - 40, WLH, text2, 0)
end
#--------------------------------------------------------------------------
# ● テキスト設定
#--------------------------------------------------------------------------
def set_text_speed
text1 = ATB_SPEED_NAME
text2 = ATB_SPEED_HELP
self.contents.clear
self.contents.font.color = crisis_color
self.contents.draw_text(4, 4, self.width - 40, WLH, text1, 0)
self.contents.font.color = normal_color
self.contents.draw_text(4, 34, self.width - 40, WLH, text2, 0)
end
end
#==============================================================================
# ■ Window_ATB_Help
#------------------------------------------------------------------------------
# ATB設定タイトル・操作を表示するウィンドウです。
#==============================================================================
class Window_ATB_Title < Window_Base
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
super(0, 0, 544, 56)
refresh
end
#--------------------------------------------------------------------------
# ● テキスト設定
#--------------------------------------------------------------------------
def refresh
text1 = N02::ATB_CUSTOMIZE_NAME
text2 = "↑↓キーで移動 ←→キーで選択 決定キーで設定"
self.contents.clear
self.contents.font.color = system_color
self.contents.draw_text(4, 0, 96, WLH, text1, 0)
self.contents.font.color = normal_color
self.contents.draw_text(110, 0, 420, WLH, text2, 0)
end
end
#==============================================================================
# ■ Scene_ATB
#------------------------------------------------------------------------------
# ATB設定を行うクラスです。
#==============================================================================
class Scene_ATB < Scene_Base
#--------------------------------------------------------------------------
# ● 開始処理
#--------------------------------------------------------------------------
def start
super
create_menu_background
@title_window = Window_ATB_Title.new
@help_window = Window_ATB_Help.new
@active_window = Window_ATB_active.new
@speed_window = Window_ATB_speed.new
@help_window.set_text_active(@active_window.index)
@active_window_index = @active_window.index
@speed_window_index = $game_party.atb_custom[1]
end
#--------------------------------------------------------------------------
# ● 終了処理
#--------------------------------------------------------------------------
def terminate
super
$game_party.atb_customize
dispose_menu_background
@title_window.dispose
@help_window.dispose
@active_window.dispose
@speed_window.dispose
end
#--------------------------------------------------------------------------
# ● 元の画面へ戻る
#--------------------------------------------------------------------------
def return_scene
$scene = Scene_Menu.new(4)
end
#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
def update
super
update_menu_background
@help_window.update
@active_window.update
@speed_window.update
if @active_window.active
update_active_selection
elsif @speed_window.active
update_speed_selection
end
end
#--------------------------------------------------------------------------
# ● アイテム選択の更新
#--------------------------------------------------------------------------
def update_active_selection
if Input.trigger?(Input::B)
Sound.play_cancel
return_scene
elsif Input.trigger?(Input::C)
Sound.play_decision
$game_party.atb_custom[0] = @active_window.index
@active_window.set_active
elsif Input.trigger?(Input::UP) or Input.trigger?(Input::DOWN)
Sound.play_cursor
@speed_window.active = true
@speed_window.set_active
@speed_window.index = @speed_window_index
@active_window.active = false
@active_window.non_active
@active_window_index = @active_window.index
@active_window.index = -1
@help_window.set_text_speed
elsif Input.trigger?(Input::LEFT) or Input.trigger?(Input::RIGHT)
@help_window.set_text_active(@active_window.index)
end
end
#--------------------------------------------------------------------------
# ● ターゲット選択の更新
#--------------------------------------------------------------------------
def update_speed_selection
if Input.trigger?(Input::B)
Sound.play_cancel
return_scene
elsif Input.trigger?(Input::C)
Sound.play_decision
$game_party.atb_custom[1] = @speed_window.index
@speed_window.set_active
elsif Input.trigger?(Input::UP) or Input.trigger?(Input::DOWN)
Sound.play_cursor
@active_window.active = true
@active_window.set_active
@active_window.index = @active_window_index
@speed_window.active = false
@speed_window.non_active
@speed_window_index = @speed_window.index
@speed_window.index = -1
@help_window.set_text_active(@active_window.index)
end
end
end
#==============================================================================
# ■ Scene_File
#------------------------------------------------------------------------------
# ファイル画面の処理を行うクラスです。
#==============================================================================
class Scene_File < Scene_Base
#--------------------------------------------------------------------------
# ● 元の画面へ戻る ※再定義
#--------------------------------------------------------------------------
def return_scene
if @from_title
$scene = Scene_Title.new
elsif @from_event
$scene = Scene_Map.new
else
$scene = Scene_Menu.new(5)
end
end
end
#==============================================================================
# ■ Scene_End
#------------------------------------------------------------------------------
# ゲーム終了画面の処理を行うクラスです。
#==============================================================================
class Scene_End < Scene_Base
#--------------------------------------------------------------------------
# ● 元の画面へ戻る ※再定義
#--------------------------------------------------------------------------
def return_scene
$scene = Scene_Menu.new(6)
end
end
#==============================================================================
# ■ Scene_Menu
#------------------------------------------------------------------------------
# メニュー画面の処理を行うクラスです。
#==============================================================================
class Scene_Menu < Scene_Base
#--------------------------------------------------------------------------
# ● コマンドウィンドウの作成
#--------------------------------------------------------------------------
alias create_command_window_n02 create_command_window
def create_command_window
return create_command_window_n02 if !N02::ATB_CUSTOMIZE
s1 = Vocab::item
s2 = Vocab::skill
s3 = Vocab::equip
s4 = Vocab::status
s5 = N02::ATB_CUSTOMIZE_NAME
s6 = Vocab::save
s7 = Vocab::game_end
@command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7])
@command_window.index = @menu_index
if $game_party.members.size == 0 # パーティ人数が 0 人の場合
@command_window.draw_item(0, false) # アイテムを無効化
@command_window.draw_item(1, false) # スキルを無効化
@command_window.draw_item(2, false) # 装備を無効化
@command_window.draw_item(3, false) # ステータスを無効化
end
if $game_system.save_disabled # セーブ禁止の場合
@command_window.draw_item(5, false) # セーブを無効化
end
end
#--------------------------------------------------------------------------
# ● コマンド選択の更新
#--------------------------------------------------------------------------
alias update_command_selection_n02 update_command_selection
def update_command_selection
return update_command_selection_n02 if !N02::ATB_CUSTOMIZE
if Input.trigger?(Input::B)
Sound.play_cancel
$scene = Scene_Map.new
elsif Input.trigger?(Input::C)
if $game_party.members.size == 0 and @command_window.index < 4
Sound.play_buzzer
return
elsif $game_system.save_disabled and @command_window.index == 5
Sound.play_buzzer
return
end
Sound.play_decision
case @command_window.index
when 0 # アイテム
$scene = Scene_Item.new
when 1,2,3 # スキル、装備、ステータス
start_actor_selection
when 4 # ATB設定
$scene = Scene_ATB.new
when 5 # セーブ
$scene = Scene_File.new(true, false, false)
when 6 # ゲーム終了
$scene = Scene_End.new
end
end
end
end
复制代码
作者:
yangjunyin2002
时间:
2013-3-2 20:04
这应该是最后一楼了
除了发的外,还有战斗血条对应、战斗信息、更改战斗背景、战斗雾效果、技能横列表示这几个脚本
┣STR15_Enemy HP Gauge
#==============================================================================
# ★RGSS2
# STR15_Enemy HP Gauge v1.1a
# By star:http://strcatyou.u-abel.net/
# Translated by Mr. Bubble
#
# ・Show HP gauge of enemies when hit.
# ・You can hide a specified enemy's HP gauge by adding "HIDEHP" to
# the enemy's Notes field in the Database.
# ・Updated with a back attack fix by Moonlight. Use this version ONLY with the
# ATB+SBS scripts.
#------------------------------------------------------------------------------
#==============================================================================
# ★このスクリプトの機能を有効にする
if true
#==============================================================================
# ■ Sprite_Battler
#==============================================================================
class Sprite_Battler < Sprite_Base
# Word used in enemy Notes field to hide HP gauge
GAUGE_M = "HIDEHP"
# Gauge back color [Border color, Inside color]
GAUGE_BC = [Color.new(0,0,0), Color.new(32,48,64)]
# Color gradient [Left, Right]
GAUGE_GC = [Color.new(64,128,96), Color.new(96,192,160)]
#
GAUGE_W = 70 # Gauge width
GAUGE_H = 6 # Gauge height
GAUGE_S = 8 # Gauge speed (more than 2)
GAUGE_T = 640 # Gauge display length (more 510)
GAUGE_O = 16 # Gauge opacity
#
GAUGE_V = false # STR cursor appears when damaged. Requires STRxx Cursor. # ※XP風バトルを導入してない場合は有効にしないでください
#--------------------------------------------------------------------------
# ● ゲージスプライト作成(追加)
#--------------------------------------------------------------------------
def create_enhpgauge
g_width = GAUGE_W # 幅
g_height = GAUGE_H # 高さ
f_color = GAUGE_BC # ゲージバックカラー
g_color = GAUGE_GC # ゲージカラー
# ビットマップ作成
bitmap = Bitmap.new(g_width, g_height * 2)
# 上半分:ゲージバック
bitmap.fill_rect(0, 0, g_width, g_height, f_color[0]) # 枠外
bitmap.fill_rect(1, 1, g_width - 2, g_height - 2, f_color[1]) # 枠内
# 下半分:グラデゲージ
bitmap.gradient_fill_rect(1, g_height + 1, g_width - 2, g_height - 2,
g_color[0], g_color[1]) # グラデ
# スプライト作成 # [0] = ゲージバック; [1] = ゲージ
@hp_gauge = [Sprite.new, Sprite.new]
for i in 0..1
sprite = @hp_gauge[i]
sprite.viewport = self.viewport
sprite.bitmap = bitmap
sprite.src_rect.set(0, 0, g_width, g_height)
sprite.src_rect.y = g_height if i == 1
if $back_attack && N01::BACK_ATTACK && N01::BACK_ATTACK_NON_BACK_MIRROR
sprite.x = Graphics.width - @battler.screen_x
else
sprite.x = @battler.screen_x
end
sprite.y = @battler.screen_y - 8
sprite.ox = g_width / 2
sprite.oy = g_height / 2
sprite.z = 200
sprite.z += 20 if i == 1
sprite.opacity = 0
end
# いろいろ
@enid = @battler.enemy_id
@hp = @battler.hp
@gauge_width = GAUGE_W + 1
@gauge_opacity = 0
end
#--------------------------------------------------------------------------
# ● ゲージ更新(追加)
#--------------------------------------------------------------------------
def enhpgauge_update
# エネミーIDが変動していたらメモの内容を再取得・可視状態も更新
if @enid != @battler.enemy_id
@enid = @battler.enemy_id
@gauge_visible = true
@gauge_visible = false if $data_enemies[@enid].note.include?(GAUGE_M)
for i in @hp_gauge do i.visible = @gauge_visible end
end
return unless @gauge_visible
# ゲージ更新
if @hp != @battler.hp
g_width = (@battler.hp / (@battler.maxhp * 1.0))
@gauge_width = ((GAUGE_W * g_width) + 1).truncate
@gauge_opacity = GAUGE_T
@hp = @battler.hp
end
# 幅
g_width = @hp_gauge[1].src_rect.width
speed = GAUGE_S
rect = @hp_gauge[1].src_rect
rect.width = (@gauge_width + (g_width * (speed - 1))) / speed
if rect.width != @gauge_width
if rect.width > @gauge_width
rect.width -= 1
else
rect.width += 1
end
end
rect.width = 2 if rect.width <= 1 and @hp > 0
# 透明度
if GAUGE_V and @battler.cursor_flash
@gauge_opacity += GAUGE_O * 2 if @gauge_opacity <= GAUGE_T / 2
else
@gauge_opacity -= GAUGE_O if @gauge_opacity > 0
end
# 透明度適用
for i in @hp_gauge do i.opacity = @gauge_opacity end
end
#--------------------------------------------------------------------------
# ● オブジェクト初期化(エイリアス)
#--------------------------------------------------------------------------
alias initialize_str15 initialize
def initialize(viewport, battler = nil)
initialize_str15(viewport, battler)
if @battler.is_a?(Game_Enemy)
create_enhpgauge
@gauge_visible = true
@gauge_visible = false if $data_enemies[@enid].note.include?(GAUGE_M)
for i in @hp_gauge do i.visible = @gauge_visible end
end
end
#--------------------------------------------------------------------------
# ● 解放(エイリアス)
#--------------------------------------------------------------------------
alias dispose_str15 dispose
def dispose
dispose_str15
if @battler.is_a?(Game_Enemy)
@hp_gauge[0].bitmap.dispose
@hp_gauge[0].dispose
@hp_gauge[1].dispose
end
end
#--------------------------------------------------------------------------
# ● フレーム更新(エイリアス)
#--------------------------------------------------------------------------
alias update_str15 update
def update
update_str15
enhpgauge_update if @battler.is_a?(Game_Enemy)
end
end
#
end
复制代码
作者:
吐槽砖家
时间:
2013-3-2 20:08
本帖最后由 吐槽砖家 于 2013-3-2 20:10 编辑
开水得了。移动也行。
@tjjlb
作者:
LBQ
时间:
2013-3-2 20:50
为啥你老是搞【提问帖用】,这种东西= =。这种东西要真的觉得占地方也用记事本上传一个脚本文件不好吗= =
作者:
失格迷白
时间:
2013-3-3 12:11
您非法使用第三方脚本修改系统数据,即将对您封号处理
作者:
1367393986
时间:
2013-3-8 12:21
= =好长的脚本....
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1