FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

【ツクールMV(トリニティも?)向けテクニック】計算式を使って、デフォ機能のみで特殊なスキルを作ってみよう!

ブログの方は完全ご無沙汰気味になっておりますが、
今回、ツクールフォーラムにてシトラス様が企画された
ツクールMVアドベントカレンダー2018」にて1日分いただきましたので、
久々にブログ更新させていただきます。
(※企画概要については割愛させていただきます)

さて、僕からは以下のテーマで書いていこうと思います。

プラグイン不要!
計算式を使って、デフォ機能のみで
特殊なスキルを作ってみよう!


今年3月にサイトにて【データサンプル・ネオ】という
RPGツクールMVで使用できるデータベースサンプル集を
公開したのですが、
それを制作した中で、戦闘計算式を駆使すると
様々な特殊効果のスキルを再現できることを知りました。

一見プラグインが必要そうな効果でも
デフォルト機能だけで再現できちゃうんです!
プラグインを使わない縛りとか、競合が怖いので使いたくないとか、
そういう方達には朗報ですね。

そして、まだ試しておりませんが、MVを家庭用ゲーム機に移植した
いろんな意味で話題のMVトリニティにも応用できるかもしれません。
(今、バグ多発でかなり背水の陣っぽいので、
 公式さんには頑張っていただきたいところですが…)

話が逸れましたね。早速行ってみましょう。

【その1.FFのグラビデ】
対象の現在HPの1/2とか1/4とか作品によってばらつきがありますが、
今回は【データベースサンプル・ネオ】で採用している
1/4で作っていきましょう。

計算式の欄に以下の赤字のように設定してください。
----------------------------
b.hp / 4

※b:対象の
※hp:現在HP
----------------------------
そして、分散値を0%にしましょう。

これで終わりです。
簡単でしょう?

この4を2にすると対象の現在HPの1/2ダメージを
与える効果になります。
そしてダメージのばらつきをなくすための
分散値を0%設定です。

実際のスキル画面は以下になります。
(画像をクリックすると大きい画像が表示されます。)
blog01.jpg 


【その2.残りHPを1にする攻撃】
イベント戦で劣勢に立たせるためによく使われるスキルです。

計算式の欄に以下の赤字のように設定してください。
----------------------------
b.hp - 1

※b:対象の
※hp:現在HP
----------------------------
そして、分散値を0%にしましょう。

見ての通り、先程のグラビデの応用です。
これで対象のHPから-1したダメージが与えられるので
残りHPを1にすることができます。
こちらもダメージのばらつきをなくして
戦闘不能にならないよう、分散値を0%にしましょう。


【その3.ポケモンのベノムショック】
まずベノムショックとは、ポケモンに出てくるワザの一つで、
相手が毒状態の時、与えるダメージが2倍になるというものです。
一見プラグインが必要そうに見えますが、
これも計算式の設定で実はできてしまいます。

計算式の欄に以下の赤字のように設定してください。
----------------------------
a.atk * 4 * (b.isStateAffected(4) ? 2 : 1) - b.def * 2

※a:使用者の
※b:対象の
※atk:攻撃力
※def:防御力
※.isStateAffected(4) ?:4番のステートにかかっているか?
----------------------------
なんか見慣れない文字列が出てきましたが、
とりあえず形と意味だけ覚えておいてください。

上記の注釈にもございますが、
".isStateAffected(4) ?"という文字列が
"4番のステートにかかっているか?"という意味で
そのあとに続く"2 : 1"
かかっていたら"2"、かかっていなかったら"1"という結果に分岐する
ということになります。

つまり、" * (b.isStateAffected(4) ? 2 : 1)"
"対象が4番のステートにかかっていたら2倍、かかっていなかったら等倍"
ということになります。

デフォルトでは4番が毒状態のため、
ベノムショックと同じ効果をこれで再現できます。

実際のスキル画面は以下になります。
(画像をクリックすると大きい画像が表示されます。)
blog02.jpg 

※補足1
"b.isStateAffected(4)"のbをaに変更すると
自分が4番のステートにかかっていたらという形になります。
属性を付けるステートにかかっている時、
その属性のスキルのダメージを上げるという表現もできます。

※補足2
"2 : 1"の箇所で使えるのは整数のみです。
小数は使用しても効果が発揮されません。


【その4.ピンチの時に通常攻撃の威力が2倍】
FFとかだとピンチの時に9999ダメージ与えたりする魔法とか
あったりしますが、それに通ずるものがございます。
こちらもプラグインが必要そうに見えて、デフォの戦闘式のみで
作れるスキルです。

計算式の欄に以下の赤字のように設定してください。
----------------------------
a.atk * 4 * (a.hp <= a.mhp / 5 ? 3 : 1) - b.def * 2

※a:使用者の
※b:対象の
※atk:攻撃力
※def:防御力
※a.hp <= a.mhp / 5 ?:使用者の現在HPが使用者の最大HPの20%以下か?
(最大HPを100%と考え、5で割るため、20%)
----------------------------
先程のベノムショックと同じように分岐がございます。

"a.hp <= a.mhp / 5 ?"という文字列が
"使用者の現在HPが使用者の最大HPの20%以下か?"という意味で
そのあとに続く"3 : 1"
かかっていたら"3"、かかっていなかったら"1"という結果に分岐する
ということになります。

つまり、" * (a.hp <= a.mhp / 5 ? 3 : 1)"
"使用者の現在HPが最大HPの20%以下なら3倍、そうでない時は等倍"
ということになります。

これでピンチ時の攻撃ダメージが増えるスキルを
再現できました。

実際のスキル画面は以下になります。
(画像をクリックすると大きい画像が表示されます。)
blog03.jpg 

※補足
"3 : 1"の箇所で使えるのは整数のみです。
小数は使用しても効果が発揮されません。


【その5.FFの銭投げ(DQのゴールドシャワー)】
いわゆる所持金を使用して、消費した額に応じて
ダメージが変わるという技です。

所持金とかゲームのシステムに関わる部分だし
これこそプラグインが必要じゃないかと思われますが、
なんとこれ自体もデフォの計算式で表現できます。

計算式の欄に以下の赤字のように設定してください。
----------------------------
$gameParty.gold() / 10

※$gameParty.gold():所持金
----------------------------
そして、分散値を0%にしましょう。

終了(え

"$gameParty.gold()"という文字列は
現在の所持金を代入するという意味で
上記の計算式だと所持金の1/10のダメージを与える
という意味になります。

さすがに所持金を減らす処理までは計算式ではできないので、
そこはコモンイベントで所持金減らすようにしましょう。

実際のスキル画面は以下になります。
(画像をクリックすると大きい画像が表示されます。)
blog04.jpg 

※補足
"$gameParty.~"は他にも以下のものが使えます。

$gameParty.steps()→現在の歩数
$gameTroop.turnCount()→現在の戦闘ターン数
$gameSystem.battleCount()→戦闘回数
$gameSystem.winCount()→勝利回数
$gameSystem.escapeCount()→逃走回数
$gameSystem.playtime()→プレイ時間
$gameTimer.seconds()→タイマーの残り秒数
$gameSystem.saveCount()→セーブ回数


【その6.FFのレベル5デス】
レベルが5の倍数であれば、問答無用で即死状態にできる
最凶の青魔法です。

この魔法の効果まで、デフォルトの計算式でできちゃいます。

…と、言いたいところですが、
さすがに条件分岐でステートにするという処理は
計算式だとできないので、
(もしかしたらできるかもしれませんが…)
9999ダメージで代用しようと思います。
ご了承ください。

計算式の欄に以下の赤字のように設定してください。
----------------------------
if ( b.level%5 == 0 ) {9999} else {0}

※b:対象の
※if:もしも
※else:そうでなければ
※.level%5 == 0:レベルを5で割って、余りが0なら
----------------------------
そして、分散値を0%にしましょう。

"b.level%5 == 0"の部分でレベル倍数を決めていますね。
これは"対象のレベルを5で割って、余りが0なら"
という意味なので、すなわち対象のレベルが5の倍数ならとなります。
つまり54に変更すれば、レベルが4の倍数ならになります。

そのため、"if ( b.level%5 == 0 ) {9999} else {0}"の意味は
もしも対象のレベルが5の倍数なら9999ダメージ。
そうでなければノーダメージということになります。

ただし、デフォルトでレベルの概念があるのは味方側のみなので
敵にレベルを与えるプラグインを入れなければ、
敵専用のスキルという扱い方しかできないかなと思います。

実際のスキル画面は以下になります。
(画像をクリックすると大きい画像が表示されます。)
blog05.jpg 


僕が紹介するのは以上です。
今紹介したものを応用すると、様々なスキルが
デフォルトの機能だけで作れちゃいます。

本当のことを言うと、計算式は今紹介したもの以外にもございます
ただ、僕が実践的に使用していないので、
今回は敢えて割愛させていただきました。

もし気になる方は「ツクールMV 計算式」でGoogle等で検索かけてみてください。

それでは、僕からは以上とさせていただきます。
閲覧ありがとうございました!

スポンサーサイト

コメントの投稿

非公開コメント

プロフィール

ハルマキ@春巻P

Author:ハルマキ@春巻P
RPGツクールでゲームを作っている傍ら、音楽素材やVOCALOID曲を作っている者です。

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。