キャラクターに特徴ある戦闘をさせたいと思ってプログラムを作っています。
例えば
・ある特定キャラAのLukによって【戦う】が【斬鉄剣】に変わってダメージ9999が出る。
・ある特定キャラBが対峙している敵キャラが女だった場合、攻撃を全て避ける事が出来る。
・ある特定キャラCが戦闘に参加している時、戦闘経験を重ねたら仲間の使用する技を習得することができる。
等です。
それを実現するために、rpg_objectsのGame_Action内の項目を使って編集しています。
if文を使って条件分岐をしているのですが、
・【現在戦っている敵のメモ欄】を摘出する。
・【現在戦いに参加しているメンバー(特定キャラC)がいる時】
の指定方法が分かりません。
this.subject()あたりが怪しいとにらんでおり、data系の項目などを入れたりもしましたが
「みつかりません」と返ってきます。
・(target == $gameActors.actor(11)などは上手くいきました。)
どうやって指定すればいいのでしょうか?ご回答をよろしくお願いします。
また、ここ見れば【指定のやり方わかるよ】という場所があったら教えて頂けると助かります。
キャラクターに特徴ある戦闘スタイルを付けたい。
- Plasma Dark
- 記事: 736
- 登録日時: 2020年2月08日(土) 02:29
- 連絡する:
Re: キャラクターに特徴ある戦闘スタイルを付けたい。
Game_Action の subject 関数や引数として渡される target は Game_Battler を継承したクラス(Game_Actor または Game_Enemy)のインスタンスです。this.subject()あたりが怪しいとにらんでおり、data系の項目などを入れたりもしましたが
「みつかりません」と返ってきます。
・(target == $gameActors.actor(11)などは上手くいきました。)
例えば、 subject 関数の戻り値がアクターの場合は、 this.subject().actor() でアクターのデータを取得できます。敵の場合は this.subject().enemy() です。
Game_Battler クラスには自身がアクターであるか敵であるかを判定するメソッドがそれぞれ用意されているので、そのメソッドで判定してからデータを取得すると良いでしょう。
Bが女性特性をもつ敵キャラからの攻撃を確実に回避する、という仕様と想像してお話します。ある特定キャラBが対峙している敵キャラが女だった場合、攻撃を全て避ける事が出来る。
攻撃の回避判定は Game_Action.prototype.apply 関数内で行われているので、その計算式に細工してあげれば良いでしょう。
itemEva 関数で計算される回避率が 0~1未満の乱数より大きければ回避成立ですので、 itemEva 関数で条件を満たした時に必ず1を返してあげると安全かと思います。
コード: 全て選択
const _Game_Action_itemEva = Game_Action.prototype.itemEva;
Game_Action.prototype.itemEva = function (target) {
const subject = this.subject();
if (subject.isEnemy() && subject.enemy().meta.isWoman && target.isActor() && target.actor().meta.absoluteEvadeFromWoman) {
return 1;
}
return _Game_Action_itemEva.call(this, target);
};
これは習得タイミング次第で書く場所が変わってきますが、戦闘参加メンバーは Game_Party.prototype.battleMembers 関数で取得できます。ある特定キャラCが戦闘に参加している時、戦闘経験を重ねたら仲間の使用する技を習得することができる。
その中に特定のメタ情報を持つアクターがいれば良い、ということであれば、以下のような式で判定できるはずです。
コード: 全て選択
$gameParty.battleMembers().some(member => member.actor().meta.learnFriendSkill)
Re: キャラクターに特徴ある戦闘スタイルを付けたい。
Plasma Dark 様
私事の事情と元気がなくなったのと教えてもらったscript作成の動作確認が原因で返信が遅れました。
申し訳ありません。
教えて頂いた通りやってみたところ無事に動作させることが出来ました。
ありがとうございます。
上記3つ以外にも特徴のある動きのキャラクターも作成することが出来ました。
script作成で、また新たな問題が発生いたしましたので
新しい質問項目にて投稿させていただきます。
私事の事情と元気がなくなったのと教えてもらったscript作成の動作確認が原因で返信が遅れました。
申し訳ありません。
教えて頂いた通りやってみたところ無事に動作させることが出来ました。
ありがとうございます。
上記3つ以外にも特徴のある動きのキャラクターも作成することが出来ました。
script作成で、また新たな問題が発生いたしましたので
新しい質問項目にて投稿させていただきます。