【RGSS3】小ネタスクリプト改造03
執筆者:神凪洸
- 追加更新:「非命中でも得TPさせたい!」
- 追加更新:「MP消費率の反映を一定値以上の時にしたい!」
これらは全てVXAce(RGSS3)の小ネタです。
この記事では、■戦闘系 を集めてあります。
変更する箇所は、その部分をコピペしてコメントアウトして取っておき
どこを変更したかわかりやすいよう、 #記号などで目印をつけておくと便利っすよ!
■戦闘開始・終了系
◆マップBGMやBGSをそのまま引き継ぎたい!!
BattleManagerの60行目あたりにある ●戦闘BGMの演奏 を探しましょう。
$game_system.battle_bgm.play と RPG::BGS.stop をコメントアウトするだけっす!!
さらに応用ヽ(`Д´)ノ
それぞれの末尾に unless $game_switches[n]や$game_variables[n]==a などをいれて
指定条件の時にだけデフォルト状態にしたり、引き継いだりすることができるようになるっすよ!
◆戦闘画面に移行した時もトランジション再生!
Game_Battleの●開始処理の下辺りに
#-------------------------------------------------------------------------- #
● フェードイン時トランジション再生
#--------------------------------------------------------------------------
def perform_transition
Graphics.transition(20, "Graphics/System/BattleStart", 100)
Graphics.update
end
を追加するっす。すると、フェードイントランジションしてくれるっす。
別のトランジション画像を用意して、ファイル名(BattleStart)を変えたりしてもいいっすね!
◆トランジションの速度もっと早くしたい!
or遅くしたい!
Game_Mapの●戦闘前トランジション実行 を探しましょう。
Graphics.transition(60, "Graphics/System/BattleStart", 100)の60がスピードっす。
小さくすると速く、大きくすると遅くなるっす。
さらに応用!!ヽ(`Д´)ノ
100の部分を弄ると、フェードアウトしてく滑らかさが変わるっす。
小さくするとギザギザに…… 使いドコロはワカラナイ。
◆戦闘背景未指定のあのぐるぐるどうにかしたい!
Spriteset_Battleの●マップ画像を加工した戦闘背景用ビットマップの作成 を探しましょう。
bitmap.radial_blur(120, 16) をコメントアウトするだけっす。
◆逃走成功率を手軽に変えたい!
BattleManagerの●逃走成功率の作成 を探しましょう。
@escape_ratio = 以降のスクリプトを自由に設定するだけっす。
ちなみに @escape_ratio = 1.0 にすると必ず逃げられるようになるっす。
さらに応用!!ヽ(`Д´)ノ
$game_switches[id] や $game_variables[id]を使う事で、
特定の戦闘だけ逃げやすくなる、絶対に逃げられる等も作れるっす。
@escape_ratio = 1.0 if $game_switches[id] でスイッチIDがONの時、必ず逃げれる。
@escape_ratio = 0.5 if $game_variables[id] <= 数値 で指定変数が数値以下の時、
2分の1の確率で逃げれる。
注意として、当てはまらなかった場合の指定を必ずする事っす。
◆戦闘不能時にMPとTPも0にしたい!
又は、特定数値にしたい!
Game_Battlerの●戦闘不能になる を探しましょう。
@hp = 0 の下に
@mp = 数値
@tp = 数値 をいれるだけっす。
◆戦闘不能から復活した時の回復値を変更したい!
戦闘に負けて、マップ画面に移行した時戦闘不能者が復活しますが
回復はたったの1!!!これを好きな値で復活させることができるっす!
BattleManagerの261行目あたりにある ●戦闘メンバーの復活(敗北時) を探しましょう。
その中の数値を変更するだけ!!
さらに応用ヽ(`Д´)ノ
数値の代わりに以下も入れられるっす。
actor.mhp #全回復
$game_variables[n] #指定した変数の値回復
actor.mhp / 2 #最大HPの半分回復 ……etc
さらに応用ヽ(`Д´)ノ
戦闘不能ステートが戦闘後解除でマップ移行する際の回復値は
Game_Battlerの157行目あたりにある ●戦闘不能から復活 を探しましょう。
1の部分をお好きな数値に変更するだけ!(厳密には戦闘終了直後にスッと元気になる)
◆戦闘勝利の雰囲気に合うME素材が
中々見つからない……
BattleManagerの●勝利の処理 を探しましょう。
play_battle_end_me の下に
Audio.se_play("Audio/SE/ファイル名", 音量, ピッチ)
Audio.se_play("Audio/SE/ファイル名", 音量, ピッチ) を追加する事で、MEがなくても、
SEの組み合わせ再生でかっこいい勝利MEが作れちゃう!!かも?
SEをMEフォルダにいれれば、出来ますがSEでもそのファイルを使う場合は
その分容量が増えるので、この技法は容量節約にもなるっすよ。
■戦闘スキル系
◆特定ステートがかかってる時にダメージを受けると、即死するステートを作りたい!
Game_Battlerの●被ダメージ時の処理 を探しましょう。
charge_tp_by_damage(value.to_f / mhp) の下に
self.add_state(1) if self.state?(id)
とする事で、特定ステートにかかってる状態で、
1ダメでも喰らうと即死しちゃうステートが、作れるっすよ!
◆分散度によるダメージ減少を軽減したい!
Game_Battlerの●分散度の適用 を探しましょう。
var = rand(amp + 1) + rand(amp + 1) - amp の下に
var >= 0 ? var : var = var + amp * p #分散度による減少軽減
とする事で、分散度によるダメージ減少が軽減されます。
pには0.1~の好きな数値を入れてください。※0.5以上の方が実感しやすくなる。
分散度を高くし、分散0で4桁以上出る場合、ダメージ結果が通常よりも
大きく減ってしまう事があります。
分散度を高くして確率でいつもより大きなダメージが出ることがあるよ!
みたいなスキルを作る際には有効な手立てです。
さらに応用ヽ(`Д´)ノ
追加した処理を書き換えて、
var >= 0 ? var : var = var - amp * p 逆にダメージ減少を増やしたり
var >= 0 ? var : var = 0 ダメージ減少はなしにしたり
var >= 0 ? var = 0 : var ダメージ増加をあえてなしにする
var >= 0 ? var : var = var + amp * $game_variables[p] 変数の値によって、減少度が変わる
などにも可能です。
※変数に小数点以下の数値をいれるには、イベントコマンド「スクリプト」で
$game_variables[n] = 0.1 などといれてください。
◆分散度の結果を均等にしたい!
デフォルトの分散度計算は、中央値が算出されやすくなっています。
例えば分散度10にした場合、ダメージ100の時
90~110の間の数値が出やすく90や110は出にくいということです。
これをきちんと90~110までバランスよく出るようにできます。
Game_Battlerの●分散度の適用 を探しましょう。
var = rand(amp + 1) + rand(amp + 1) - amp を
var = rand(amp * 2 + 1) - amp とするだけです。
◆非命中でも得TPさせたい!
デフォルトのスキル設定には、命中する度に「得TP(TPチャージ率加味)」分のTPをチャージします。
これを命中してなくても、使った時点でTPを得るように仕様変更するっす!
技を使う度に解放される力とか、PT共有のTPなどの設定がある場合にいいっすね!
Game_Battlerの513行目あたりにあるitem_user_effect(user, item)を
その下にあるendの下に移動させるだけっす!
当然ですが、連続回数やスキル対象数(効果範囲)が多いスキルはどんどこTPが溜まっていくので
バランス調整は入念に!
◆MP消費率の反映を一定値以上の時にしたい!
デフォルトでは、消費MPが1だろうと10だろうと、MP消費率の設定は全部にかかるっす。
そうなると、消費コストが低いスキルは軒並みコストゼロになってしまうことが多く
それを考慮して低めに設定しても、コスト高に対する恩恵が全くないという状況があるっす。
そんな時に役立つ、小ネタっす!
Game_BattlerBaseの638行目あたりにある● スキルの消費 MP 計算を探しましょう。
その中にある (skill.mp_cost * mcr).to_i というのを以下のように改造するっす。
(skill.mp_cost >= 11? skill.mp_cost * mcr : skill.mp_cost).to_i
こうすると、消費コストが11以上の時にMP消費率が反映されるようになるっす。
11の部分をお好きな数値に設定してね!
■戦闘システム系
◆レベルキャップを実装したい!
Game_Actorの94行目あたりにある●最大レベル を探しましょう。
actor.max_levelを
[actor.max_level + $game_variables[変数ID],99].min に変更するだけっす!
デタベの初期最大レベルを変更して、指定変数に数値を代入or加算していくことでレベルキャップができます。「99」は最終レベル(上限値)です。この数値はお好きな数値に変更してください。
レベル上げすぎ防止策としてシナリオ進行具合で徐々に解放させたり、やりこみ要素としていれたり出来るっすよ。
さらに応用ヽ(`Д´)ノ
if $game_switches[スイッチID] == true
99 #キャップなし時の最大レベル。好きな数値でおk
else
[actor.max_level + $game_variables[変数ID],99].min
※もしくは変数値のみで指定も可 [$game_variables[変数ID],99].min
end
とすることで、指定スイッチのONOFFでレベルキャップ制を切り替え可能。
ゲーム最初の難易度やモード選択などに。途中で切り替える場合は現在レベルが変わってしまう可能性があるので注意。
0コメント