開発日誌

テクニック

[ 天下御免!からくり屋敷 ] [ テクニック ] [ 素材 ] [ プラグイン/スクリプト ] [ ツクール情報 ] 正しい蘇生術

2018-08-12 01:35:53

お久しぶりです!

続編の制作を始めると、既存部分に不具合があっても修正が困難になるので、心ゆくまで修正しようとしています。

敵が蘇生方術を使ってくる際に、複数の死亡者がいたとしても、必ず先頭の死亡者を蘇生させてくるような気がしていました。ランダムで選ばれるはずなのにおかしいな、と思っていろいろ調べてみた結果、プリセットスクリプトの不具合であることが分かりました。

Game_BattleActionのdecide_random_targetメソッドにおいて、対象が味方単体(for_friend?)ならば(生存中の)味方からターゲットをランダムに決定、対象が戦闘不能の味方単体(for_dead_friend?)ならば戦闘不能の味方からランダムに決定、としているのですが、for_friend?にはfor_dead_friend?の場合も含まれるので、この判定順序では対象を戦闘不能の味方にしていても、通常の味方単体で選ばれてしまいます。

というわけで、判定の順序を入れ替えたら、蘇生対象がちゃんとランダムに選ばれるようになりました。

また、蘇生や途中で仲間を召喚する際に、アニメーションが表示されていないことに気付きました。蘇生や召喚した時点では、まだ対象が非表示の状態になっているため、アニメーションも表示されないのだろうと思って諦めていたのですが、修正の仕方が分かったので、ちゃんと表示されるようにしました。

今さらVX用のスクリプトに、どこまで需要があるのか分かりませんが、修正版のスクリプトを公開します。

蘇生対象者の選択修正は、Game_BattleActionのdecide_random_targetメソッドを直接書き換えています。また、アニメーションの表示はSprite_Battlerに親クラスであるSprite_Baseのanimation_set_spritesメソッドを継承して追加定義しています。この辺りに関わる改変スクリプトを入れている場合は、競合で正常に動作しない可能性がありますので、ご注意ください。

質問やアドバイスなどはコメント欄まで、お気軽にどうぞ。素材利用条件などについては、このサイトについての「提供素材について」の項目などをご覧ください。

[ 天下御免!からくり屋敷 ] [ テクニック ] 賢い敵の行動

2017-11-05 11:13:58

自分の攻撃力や防御力を上げてくる敵がいます。

既に上がっているところに、重ねて上げようとしても無駄になります。初期の頃の敵ならともかく、後半の強敵はそういう無駄行動はなくして、苦戦させられるようにしたいと思っています。

そこで考えたのは、攻撃力上昇可とか防御力上昇可のステートを用意して、バトルイベントで毎ターンそれぞれの敵の状態を確認し、攻撃力上昇状態になっていなければ攻撃力上昇可のステートを付与、敵の行動パターンではステートが攻撃力上昇可の場合に限って攻撃力上昇をやってくる、という風にしています。

この、バトルイベントで毎ターン確認する、というのがなかなか曲者で、条件のターン数a+b*xというのは、各バトラーが行動を決定し終わった後に発動するため、その時点での状態を行動に反映できません。一方で、条件をターン終了後にすると、1ターン目は発動しないため、最初のターンにその手の行動をしてこなくなってしまいます。

ツクールのヘルプの書きぶりから、条件を0ターン目にしてスパンをターンにすれば、もしや毎ターンのコマンド入力前にイベントが発動するのかと思ったのですが、やはりそのようなことはなく、結局0ターン目とターン終了後の2ページに同じものを記述することで、希望の動作を実現しました。もう少しスマートなやり方はないものでしょうか……。無理に標準機能で実装しようとせず、スクリプトでやればよかった。

この、敵キャラの行動パターン設定は、今のツクールMVでも全く変わっていませんが、せめて条件を複数設定できるとか、もう少し柔軟な設定ができるようになるといいのですがね。メモとかもないので、自作の条件を設定しようとすると、このようにバトルイベントと組み合わせるしかないですよね。

[ 天下御免!からくり屋敷 ] [ テクニック ] [ 素材 ] [ プラグイン/スクリプト ] [ ツクール情報 ] 画面全体アニメーションの不具合修正

2017-10-29 16:44:30

RPGツクールVXのプリセットスクリプトのバグというか仕様として、アニメーションの基準位置が「画面」に設定されていても、対象となるキャラクターの分だけアニメーションが表示される、というものがあります。

単に重なって表示されるだけなので、実害がないと言えばないのですが、透明度を設定している場合は、重なっている分だけ濃く表示されてしまうため、気になると言えば気になります。

これまでは、EnDlEss DREamERさんの「アニメーション軽量化」を参考に、全体アニメーションの場合は最初の1体分だけを表示するようにしていたのですが、これだと今度は、対象のフラッシュが最初の1体にしか反映されないため、全体技なのに単体技のように見えてしまうという点が気になっていました。

というわけで、いろいろいじって、アニメーションは1体分だけ、ただし対象のフラッシュは対象者ごとに全部反映させる、というスクリプトを作ったので公開します。今さらVX用のスクリプトに、どこまで需要があるのかは分かりませんが……。

晴れて敵全体がフラッシュするようになった

問題なく意図通りに動作しているはずですが、アニメーションの仕様はいまいちよく把握していないので、思わぬエラーが潜んでいる可能性があります。また、なるべくaliasを用いた追加定義にしていますが、アニメーション周りの改変スクリプトを入れている場合は、競合で正常に動作しない可能性がありますので、ご注意ください。

質問やアドバイスなどはコメント欄まで、お気軽にどうぞ。素材利用条件などについては、このサイトについての「提供素材について」の項目などをご覧ください。

いやー、それにしても、この1ヶ月で相当制作が進みました。最初からこのペースで進めていれば、とっくの昔に完成していたものを……!

[ 天下御免!からくり屋敷 ] [ テクニック ] [ 素材 ] [ プラグイン/スクリプト ] 経験値増減アイテム作成スクリプト

2014-04-09 00:01:31

3月はアイテムやモンスターの整理で、あまり制作が進みませんでした。

その代わりと言っては何ですが、その過程で新しく作ったスクリプトをシェアします。

その名の通り、経験値を増減させるアイテムを実装するスクリプトです。

経験値の増減はコモンイベントを使ってもできるのですが、対象者を選ぶところがスマートにはいかないため、スクリプトにしてみました。VX用となります。

対象となるアイテムのメモ欄に、

PANDA::ExpPoints = n

と記述すればOKです。nには増減させたい数値が入ります。減らすことはあまりないかと思いますが、マイナスの数値を入れることも可能です。HPが満タンの時にHP回復が使えないのと同様に、経験値が上限に達している場合は使用できないようになります。

メニューでの使用が前提なので、レベルアップ時のメッセージなどは表示されません。ただ、レベルアップで新しいスキルを覚える場合など、そのメッセージも表示されないので、その辺りはもう一工夫する必要があるかもしれません。『天下御免!からくり屋敷』では、レベルアップでスキルを覚えることはないので、気にしていないのですが…。

質問やアドバイスなどはコメント欄まで、お気軽にどうぞ。素材利用条件などについては、このサイトについての「提供素材について」の項目などをご覧ください。

それでですね、その経験値を増加させるアイテムとして、桃・栗・柿の3種類を用意したのですが、素材集にある柿以外の、桃と栗のアイコンで、綺麗なのをご存知の方がいたら、ぜひ教えてください。

自力で(玉ネギを改造して)描いてみたんだけど、どうしてもきれいにならないの…(;;)

[ 天下御免!からくり屋敷 ] [ テクニック ] [ 素材 ] [ プラグイン/スクリプト ] 全員攻撃スクリプト

2013-09-23 16:33:26

制作は再開したものの、半年も中断していたので、なかなか調子が戻らない…。

1日1セリフという超スローペースで、途中になっていたイベントの一つを、なんとか完成させました。

今回作ったのは、「全員攻撃」の戦闘コマンドが解禁されるイベントです。「全員攻撃」とは、パーティー全員が先頭の敵に通常攻撃を行うコマンドです。要するに、決定キーを連打するのと同じ効果が得られます。

そんな便利なコマンドなら、イベントで解禁じゃなくて、最初っから使えるようにしとけよ、って感じですが、個人的に戦闘は、何も考えずにただただ殴りまくれば倒せる、というよりも、倒す順番を工夫したり、魔法を適宜使うことで、より効率的に倒せる、というバランスが好きなので、あまり通常攻撃連打に慣れてほしくなかったりします。

ただ、そうは言っても、明らかに格下の相手だったり、あと一撃で倒せる、という時には、全員攻撃があると便利なのは事実なので、途中のイベントで解禁されるようにしました。

このイベントを組み込むために、既にできあがっているマップの一部を、大きく作り替える羽目に…。

なお、この全員攻撃コマンドは、割と汎用性も高いと思われるので、スクリプトを公開します。今さらながら、VX用となりますので、ご注意を。

指定したスイッチがONになっている時に、戦闘のパーティーコマンドに「全員攻撃」が追加されます。

スクリプトの冒頭の、

PANDA_ALL_ATTACK_SWITCH = 1

となっている数字を、全員攻撃を解禁するスイッチ番号に変えてください。

特に解禁とかは必要なく、最初から使えるようにしたい場合は、スクリプトの条件式を改造するか、あるいは、最初の自動イベントで該当するスイッチをONにしてしまえばOKです。

質問やアドバイスなどはコメント欄まで、お気軽にどうぞ。素材利用条件などについては、このサイトについての「提供素材について」の項目などをご覧ください。