【解決】特定の条件で装備するとスキル追加される装備 &「おネンネしてな」の実装

こんにちは、いつもお世話になっております。

MVで制作中のゲームで、以下の2つのことができると大変ありがたいのですのが、自分なりに色々試し、またはプラグインを探すも見つからなかったため、お知恵をいただければと思い投稿しました。

1.特定の条件で装備するとスキル追加される装備

装備品に「スキル追加」をすると、その装備品を装備している間だけ当該スキルが使えます。
その装備品を、アクターが一定以上のレベルになったときに装備するとスキルが追加される、または特定のスイッチがONのときに装備するとスキルが追加されるという方法をがないか模索しています。

例えばですが、「炎の本」という装備品があり、装備したアクターがLV1のときは装備しても初級の炎の魔法しか使えないが、LV10以上のときに装備すると中級の炎の魔法が使えるという設定。
「形見の指輪」という装備品があり、特定のスイッチOFFの状態では装備してもスキルは追加されないが、あるイベントをクリア(スイッチON)した際に装備するとスキルが使えるように設定。

上の例ですと同じ名前で別々の装備を用意すればいいというツッコミが入りそうですが、ゲームの設計上どうしても同じIDの装備品で実現をしたいのです。実現する方法、またはプラグインがありましたらご教示ください。

2.「おネンネしてな」の実装
睡眠や混乱のステートに代表される、ダメージを受けると解除されるステートがあります。特定のステートにかかっているとき、または特定の装備品を身に着けているときにはダメージを与えても解除されない方法、実現するプラグインをご教示ください。

ブレイブリーデフォルト2で「おネンネしてな」というパッシブスキルがありますが、そのイメージです。


分かりにくいかもしれませんが、どうぞよろしくお願いします。
 
1に関しては一つだけ思い付いたのが、
・並列処理のコモンイベントで装備スキルを管理していくという方法。

・変数の操作:#0001 = アクター1のレベル
・条件分岐:アクター1が防具Aを装備している
・・・条件分岐 #0001 < 5
・・・・スキルの増減: アクター1, +スキル1
・・・・スキルの増減: アクター1, -スキル2
・・・それ以外のとき
・・・・スキルの増減: アクター1, +スキル1
・・・・スキルの増減: アクター1, +スキル2
・・・分岐終了
・それ以外のとき
・・スキルの増減: アクター1, -スキル1
・・スキルの増減: アクター1, -スキル2
・ 分岐終了

という風に大体出来ると思います。
ただ、戦闘中に装備を切り替える場合は戦闘中でも並列処理のコモンイベントを起動できるプラグインが必要になります。
 
 

rikudou

ユーザー
1については猫二郎さんの回答と被りますが、下記のアイデアがあります。

トリアコンタンさんの「メニュー内コモンイベントプラグイン」を使用し、
装備シーンで並列コモンイベントを実行する方法です。
(装備品自体には、スキルの設定をしません)

プラグインを導入したら、プラグインパラメータで装備シーンで並列実行されるコモンイベントを設定します。
コモンイベントの中身は、添付画像のように作りました。

common01.png

同じコモンイベント内にアクターごとの分岐を作れば
同じものを装備した場合でも、アクターによって覚えるスキルが異なる仕様にもできます。
(添付画像のコモンイベントの内容では、ハロルドとテレーゼでスキルを変えています)

間にスイッチでの条件分岐を入れていますが、これはなくても動作します。
スイッチでの条件分岐を挟んでいるのは、該当の装備をすでにしている場合、
スキルを覚える処理を重複して実行しないようにするためです。
※スキルを覚える処理が重複して実行されても特に問題は起こらないですが、
 このコモンイベントは装備シーンを開いている間はずっと並列で実行され続ける必要があるので、
 無駄な処理は実行しないようにして、並列処理の負荷を軽減するようにしています。

特定のスキルを覚える装備品やアクター毎の分岐が多い場合は、
(試していないので何とも言えませんが)処理が重くなる可能性もありますのでご注意ください。


2についてはアイデアがなく、申し訳ないです :kaocry:
 
1については、もうコモンイベントで実現できる方法があるみたいですので不要かもしれませんが、実現可能なプラグインを作ったのでついでに置いておきます。こんな感じで武器または防具のメモ欄に書くことで一定レベル以上、または特定のスイッチがONのときにスキルを取得可能な装備を作ることができます。
<EquipLearnSkill: id = 9, level = 99>
<EquipLearnSkill: id = 10, switch = 1>

2は眠くなってきたのでまた明日にでも。。。
【4/28追記】
2も作りました。ステートまたは装備のメモ欄に<NotRemoveStateByDamage>と記載すると、そのステートにかかっているまたはそれを装備している場合は敵に攻撃してもステートが解除されなくなります。
 

Attachments

  • EquipLearnSkill.js
    2.4 KB · 閲覧: 7
最後に編集:
早速ご回答をいただきありがとうございます!
試してみた結果は明日以降になりますがご報告させていただきます!
引き続きよろしくお願いします。

4/29追記
>うなぎおおとろさん
作成していただいたプラグインで、いずれも望んでいたとおりの結果となりました!本当にありがとうございました。

>十拳剣さん
ご紹介いただいたプラグインでは自分の勉強不足もあり実現ができなかったですが、新たにユニークなスキルを作成することができました。ありがとうございました。

>猫二郎さん、rikudouさん
コモンイベントの並列処理は考えもつかなかった方法で非常に勉強になりました!戦闘中に装備を入れ替えることが前提となるので、今の作品では難しいですが、何かの形で応用できればと考えています。

これで【解決】とさせてていただきます。
 
最後に編集:
>うなぎおおとろさん

解決としながら恐縮なのですが、作成いただいたNotRemoveStateByDamageですが、以下の機能を追加していただくことは可能でしょうか?
1.ダメージで解除されないステートをIDで指定できる。例えば、「睡眠」はダメージで解除されないが、「混乱」はダメージで解除されるようにする。

2.スキル、装備に加え、アクターやバトラーにもメモ欄等に記載することで特徴として設定できる。

可能であればという程度ですので、もしご検討いただけたら幸いです。
 
>うなぎおおとろさん

解決としながら恐縮なのですが、作成いただいたNotRemoveStateByDamageですが、以下の機能を追加していただくことは可能でしょうか?
1.ダメージで解除されないステートをIDで指定できる。例えば、「睡眠」はダメージで解除されないが、「混乱」はダメージで解除されるようにする。

2.スキル、装備に加え、アクターやバトラーにもメモ欄等に記載することで特徴として設定できる。

可能であればという程度ですので、もしご検討いただけたら幸いです。
1、2ともに対応しました。
1.ステートのメモ欄に<DisableNotRemoveStateByDamage>と記載することでステート解除無効の対象外にできます。
2.メモ欄を記載できる対象を「アクター、職業、ステート、装備、敵キャラ」に増やしました。
 

Attachments

  • NotRemoveStateByDamage.js
    2.8 KB · 閲覧: 9
トップ