【サイトについて】
* RPGツクールMVを使った、ゲームを一層楽しくするためのアイディアや、豆知識、プラグインなどを紹介していきます。あくまで個人の考えに基づく記事ですので、参考程度にお読みいただければ幸いです。
<< 戦闘中、敵の前に立ちはだかる仲間の作り方 | main | MV1.0.1→1.1.0 Javascript変更部分 >>
スポンサーサイト
0

    一定期間更新がないため広告を表示しています

    | - | |- |
    カスタムステート(状態異常)を作ろう!
    0
      こんにちは。

      まずはじめに。
      公式角川エンターブレイン様のツクール開発部様ならびに、沢山の方々のリツイート&ファボ&フォローなどのおかげで、予想以上のアクセスを頂きました。本当にありがとうございます。まずは厚く御礼申し上げます。
      「oggとm4aの軽量化とループタグ引き継ぎ」の一件をまとめるために簡素に作ったブログでしたが、せっかくだからもっと面白いことをやってみようと開設初日にいきなり方向転換し、溜まっているアイディアやお蔵入りしたアイディアなど、色んなことを書き留める場にしようと思い立ちました。また、プラグイン作者様による素晴らしいプラグインなどもどんどん細かく紹介出来ればいいなとも思っています。このブログを訪れる皆さんと、皆さんの作品を触れた人々が沢山沢山感動する様な、そんな場にしていきたいですね。

      さぁ、今回はカスタムステート、オリジナルの状態異常を作りましょう。
      毒・眠り・混乱・マヒ・呪いなど、どのRPGでもよく聞く名前の状態異常はツールにデフォルトで入っていますね。
      「割とよく聞くのに、あれは作れないのかな?」というステートの作り方を綴っていきたいと思います。

      ■石化状態の作り方

      石化はマヒと大体同じ扱いですが、
      マヒは敵からダメージをもらうのに対して、
      敵からは狙われず、自然回復もしないってイメージですよね。
      特定の攻撃をもらうと砕け散るというのがFF10でありましたが。

      とりあえずデータベースの[ステート]に設定する内容としては、こんな感じでいいと思います。



      続いてそのステートを付加する[スキル]の設定。
      分かりやすく「石化パウダー」にしておきましょうか。
      確率は適当にいじって下さい。ここでは耐性装備無しだと100%かかる様にしています。



      さて戦闘です。「石化パウダー!」



      全員石化したら、普通は全滅ですが、



      この設定のままだと全滅にはならないので、TYPE74RX-Tさんが作成されておられる「全員が自然回復不能な行動不能ステートを受けると全滅」というプラグインをご利用くださいませ。便利です。

      「えっ!? じゃあこの記事意味なくない?」って思われている方は、落ち着いてよく見てください。

      ちゃんと全員灰色になって石化した姿になっているでしょう!

      ツクールの標準機能ですと、状態異常のアニメーションが頭の上でうにょうにょ動くしか出来ませんし、わざわざ全員分のキャラグラフィックを画像ソフトでいじって灰色にして・・なんてのも大変ですよね。

      石化ステートが付加されたキャラクターを、プラグインで灰色に染めます。
      多分幾つか編集出来る箇所、もっと最適な編集位置はあると思うのですが、私はここに入れています。

      rpg_sprites.jsの845行目、Sprite_Actor.prototype.refreshMotion。
      中に直接書き加えてもいいのですが、これも外部プラグインの方に書きますね。
       
      (function() {

          // ステート時のグラフィック変化
          var Sprite_Actor_prototype_refreshMotion = Sprite_Actor.prototype.refreshMotion;

          Sprite_Actor.prototype.refreshMotion = function() {
              Sprite_Actor_prototype_refreshMotion.call(this);
              // 石化状態にかかった時
              if (this._actor._states[0] == 13) {
                  this._mainSprite._colorTone = [0,0,0,255];
              }else{
                  this._mainSprite._colorTone = [0,0,0,0];
              }

           }

      })();

      Sprite_Actor.prototype.refreshMotion関数の中に
      「ステート13がかかっている時に、キャラクターグラフィックの配色を灰色にする」
      という処理を挟み込んでいます。

      this._actor._states[0] == 13
      この13という数字を、石化のステートIDにしてください。

      this._mainSprite._colorTone = [0,0,0,255];
      これが戦闘キャラグラフィックの色調を設定するものです。
      コンマ区切りの4つの数字の意味は、左から[赤,緑,青,グレー]。
      数字が大きければ大きいほど、その色調が強くなります。
      ここでは赤・緑・青が0、グレーが255なので、グレーのみで色調が構成された状態・・
      つまり灰色、石の色、というわけですね。

      ここは色々いじって試してみて下さい。

      [-150,-100,-180,90] で緑っぽくすればゾンビ状態になりますし、



      [0,50,255,0] で青くすれば凍結状態なんかのステートも作れますし、



      [255,25,255,0] でステート設定のSV 重ね合わせを[魅了]にする事で、
      魅了状態という事をピンクにしてより分かりやすくする事が出来ますね。



      では応用編といきましょうか。
      FFでおなじみ、こんな技を作ってみました。



      この技でなんと、



      パニア姫がちっちゃくなっちゃった!!!!

      これもスクリプトをいじる事で実装可能ですが、
      前回の記事を見た人にはピンと来ていると思います。おわかりですね?
       
      (function() {

          // ステート時のグラフィック変化
          var Sprite_Actor_prototype_refreshMotion = Sprite_Actor.prototype.refreshMotion;

          Sprite_Actor.prototype.refreshMotion = function() {
              Sprite_Actor_prototype_refreshMotion.call(this);
             // 小人状態にかかった時
              if (this._actor._states[0] == 14) {
                  this.scale.x = 0.5;
                  this.scale.y = 0.5;
              }else{
                  this.scale.x = 1;
                  this.scale.y = 1;
              }

          }

      })();

      ご覧の通り、Sprite_Actor.prototype.refreshMotion関数の中に、今度は
      「ステートID: 14がかかっている時に、キャラクターグラフィックを0.5倍にする」
      という処理を挟み込んでいます。
      前回の記事でルバンシュをでかくしたあの変数を使います。

      本体側でのステートID:14の設定はこんな感じにしています。



      石化と違って普通に行動可能。
      ただし攻撃力・防御力はスカスカです。
      魔法力までは弱めてはいないので、魔法で攻撃するしか無いって感じですね。

      あ。石化状態も小人状態も「ステート解除:石化」「ステート解除:小人」のスキルやアイテムで元の姿に戻れますのでご安心ください。戦闘以外での石化・小人グラフィックなどは用意するのもスクリプトを作るのも割と面倒だと思うので、戦闘終了時に解除にしておくのが優しさかも知れませんね(私が面倒なだけです)。


      ■動物の姿に変身させられる魔法の作り方

      いま私が製作中のゲーム「Graystory〜ラハと魔法の園〜」は沢山の魔法が飛び交う魔法学園の物語。
      人を動物に変える魔法なんてのも出てきます。あのメガネの魔法少年のシリーズ映画にも何度か出てきましたよね。

      あれを実際戦闘中にやってみました。こんな感じです。



      「ラットフラッシュ」という技を敵が使うと・・



      なんと、剣士ルバンシュとパニア姫がねずみの姿に!!

      ちょっと待って、何で某ゲームでメジャーなトー○の魔法でカエルにしたり、ポー○ーの魔法で豚にしなかったの?」と突っ込みが色んな方から入ると思いますが、有志の方が作成されたネズミのバトルグラフィック素材が海外のツクール関連の掲示板にあったからです。
      今回の記事サンプルに使わせていただきました。作者さんありがとうございます。

      で、今回はどんなスクリプトを作るのかと言うと、
      これは実はスクリプトをいじらずとも、本体だけで出来ちゃうんです
      ただし、サイドビューバトル用の動物のキャラグラフィックが必要です。
      (これが全然なくて・・このブログが流行って動物シリーズの素材がどんどん増えていくのに期待します。出来ない私は他力本願・・)

      ともかく、設定方法です。まず[ステート]から。



      攻撃力と防御力、魔法防御は弱く設定。そしてネズミにされると魔法が使えなくなる、という形にしたいので「スキルタイプ封印」で魔法は封印しましょう。
      ここでは「戦闘終了時に解除」にチェックを入れていますが、変身した姿の動物のキャラグラフィックと治す手段があれば、別にそのままでもいいです。

      続いて、ネズミに変身させる[スキル]の設定。



      ステート付加にさっき設定した「変身」、
      そして「コモンイベント」を使います
      これがこのステートを実装するための肝となります。

      [コモンイベント:変身]はこの様になっています。



      つまりアクター4人の条件分岐ですね。
      ルバンシュが変身ステートにかかったら、アクターの画像変更でバトラーのグラフィックを変更・・という様な形です。

      ちなみに治し方ですが、
      「変身回復」のコモンイベントを作って、今度は逆にします。
      ちなみにステート解除は、このコモンイベントの画像変更処理の後に入れてください。回復アイテムにステート解除とコモンイベントを同時に入れると、ステート解除の方が優先されるのか、コモンイベントがうまく動作しませんでした。



      注意すべき点として、
      ステートの画面で「戦闘終了時に解除」にチェックを入れている場合。
      ステートは戦闘終了後に消えてもグラフィック自体は変身後の姿のままなので、
      戦闘終了後にこのコモンイベントを発動させることは忘れずにしておいてくださいね。
      ボス戦なら戦闘処理の後に入れればいいですが、雑魚戦ならちょっと面倒なので、戦闘終了後に解除させない様にし、セーブポイントやアイテムでコモンイベントを発動させた方が早いでしょう。

      コモンイベントで設定していくのはある意味スクリプトよりもかなり面倒ではありますが、一番大変なのはやはり動物のグラフィックの用意ですよね。色や大きさの変化だけで良かった石化・小人化が3〜4行のスクリプトで済む分どれだけ楽だったか、、;

      ちなみに、全員がネズミにさせられて4匹ネズミが並んだ絵がかなり不気味で、私自身まともに画面を見られませんでした(笑)。カエルが並ぶ絵も苦手なんですけどもね、、可愛らしい動物のサイドビューキャラグラフィック、流行るといいですね!

      さてさて、いかがだったでしょうか。
      キャラクターの色や大きさ、姿が変わる系の状態異常にしぼって作り方を解説させて頂きましたが、まだまだ世の中には色んなステートがありますよね。かかると炎のダメージを2倍受けるとか、かかるとHP以外にMPまで減っていくとか。。

      今回の記事を作る過程で、状態異常のかかったキャラの色調を変更するプラグイン「StateColor.js」を作りました。
      [ステート]画面のメモ欄に、



      こんな感じで、



      <chara_tone: 数値1,数値2,数値3,数値4>

      上を参考に、4つの数字を入力する事でステートにかかった時の配色が変更可能です。
      プラグインの中の数値をいちいち調整するより楽だと思います。
      こちらからダウンロード出来る様にしています。
      ダウンロード

      (※お詫び
       今回の記事は、重ねがけや他のステートがかかっている時のケースに対応していません。
       配列の0番目しか取得していないためです。
       ループさせて配列から色調変更のステートを参照すれば良いのは分かっているのですが、
       ひとまず「こんな風にやれば出来るよ」ってやり方の紹介のみとさせていただきますので、
       状態異常が1種類のイベント戦などにご利用いただけると嬉しいです。
       プラグインは有志さんによる修正も希望です;)


      状態異常攻撃は戦闘においてはとても面倒くさいイメージがありますが「戦闘を面白く演出する」という意味では、無くてはならない存在だと思います。
      これからも戦闘を面白くするためのアイディアなどはどんどん提案していきたいと思いますので、今後とも当ブログをよろしくお願いいたします。
      (公開中のRPG「ナイトオブシンデレラ」もよろしくです)
      | 戦闘 | 17:28 |- |
      スポンサーサイト
      0
        | - | 17:28 |- |
        PR