≪解決済み≫覚えているだけでスキル威力を一律で上げるスキルを作りたい

miyomi
記事: 22
登録日時: 2024年10月25日(金) 02:32

≪解決済み≫覚えているだけでスキル威力を一律で上げるスキルを作りたい

投稿記事 by miyomi »

大変お世話になっております。
現在制作中のゲームで『覚えていると○○カテゴリのスキル威力のみ一律で10%上昇する』といったようなスキルを作りたいです。この○○カテゴリというのはスキルタイプでも構いませんし、メモに記載したタグによって分類する形でももちろんかまいません。
いろいろと調べてみたところ、やな様の『○○の知識』を使えばそれは再現できそうなのですが、こちらのプラグインはYEP Item Coreと競合してしまうようで、上記プラグインとともに実行するとスキルの威力が上がらなくなってしまいます。
ですので、他にカテゴリごとに一括でスキルの威力を上げられるようなプラグインをご存じであれば、教えていただけませんでしょうか。
もしくは、この二つの競合を回避する方法があれば、教えていただきたいです。

何卒、宜しくお願い致します。
最後に編集したユーザー miyomi [ 2025年1月04日(土) 12:35 ], 累計 1 回
アバター
虚構の城跡
記事: 714
登録日時: 2016年9月23日(金) 16:58
連絡する:

Re: 覚えているだけでスキル威力を一律で上げるスキルを作りたい

投稿記事 by 虚構の城跡 »

該当するアクターに
(a.atk * 4 - b.def * 2)*(a.isLearnedSkill(10) ? 1000 : 1)

という計算式を利用すれば、
使用者がスキル10番習得いたら威力が千倍になりますから、この式を参考に構築してください。
Ci-enを始めてみました〜
https://ci-en.net/creator/27000
miyomi
記事: 22
登録日時: 2024年10月25日(金) 02:32

Re: 覚えているだけでスキル威力を一律で上げるスキルを作りたい

投稿記事 by miyomi »

虚構の城跡さま、回答ありがとうございます。

計算式は確かに様々な状況に対応できる有用な方法だと思うのですが、今回作りたい威力増加スキルは1種類ではなく、様々な倍率の強化スキルを数十種類作りたいのです。
一応、事前に覚えているスキル数をカテゴリごとに変数に代入し、その変数をダメージ計算式に組み込む方法も考えたのですが、倍率が違うスキルが複数出てくると、一つ一つの計算式が膨大になってしまいます。
ですので、可能なら計算式ではなく、プラグインなどで簡単に制御できればなぁと考えていた次第です。
先にそちらを伝えておくべきでした、申し訳ありません。

ただ、もしも他に解決方法がなさそうであれば、計算式には頼らせていただくつもりです。
ご回答、本当にありがとうございました。
アバター
WTR
記事: 625
登録日時: 2015年12月22日(火) 19:14

Re: 覚えているだけでスキル威力を一律で上げるスキルを作りたい

投稿記事 by WTR »

○○の知識って https://plugin.fungamemake.com/archives/2012 ですよね?

これ本当に競合しますか?
YEP のほうは持ってないので見てないんですが
makeDamageValue を全く経由しないような改造をされてない限り
反映されなくなるってことはなさそうな作りに見えます。

実は〇〇の知識を導入してみて最初、あれ、効かない?と思ったんですが
新規プロジェクトに最初から入ってる回復アイテムのような
ダメージタイプがなく使用効果で回復効果が設定されているようなものには効かないというオチでした。
同じようなミスをしてたりしないでしょうか。
Twitter、はじめました。
https://twitter.com/wtr_in_reverie/
miyomi
記事: 22
登録日時: 2024年10月25日(金) 02:32

Re: 覚えているだけでスキル威力を一律で上げるスキルを作りたい

投稿記事 by miyomi »

WTRさま、大変お世話になっております。
プラグインのURLを貼り忘れていました、大変申し訳ございません。

やな様 ○○の知識
https://plugin.fungamemake.com/archives/2012
YEP item core
https://plugin.fungamemake.com/archives/10569

本当に競合するのか? とのことでしたので、改めてテストをしてみました。
上記2つ以外のプラグインをOFFにしたテストプロジェクトで、
実際に「攻撃」のメモ欄にテストと記載し、初期装備の剣のメモ欄に<テストの知識:+1000%>
これで○○の知識プラグインのみをONにして攻撃したところ、ダメージが500前後になるのに対し、item coreのほうもONにするとダメージが50前後にまで減少してしまいました。

ダメージタイプが存在せず、
使用効果で回復効果が設定されている場合は効果がないというのは初耳で驚きましたが、
今回はそれとはまた別の原因があるのではないのかと思います。
Item coreのほうがかなり特殊な作りをしているということなのですかね、、、

お手数おかけし申し訳ありませんが、もしまた何かわかりましたら教えてくださると幸いです。
アバター
WTR
記事: 625
登録日時: 2015年12月22日(火) 19:14

Re: 覚えているだけでスキル威力を一律で上げるスキルを作りたい

投稿記事 by WTR »

YEP item core もいれてやってみました。たしかに効かなくなりますね…

原因がなんとなくわかったのですが
YEP item core のプラグインパラメータの最後にある Midgame Note Parsing を true にすると回避できそうです。
非推奨とされているのでどの程度影響があるのかわからないのですが
セーブデータが肥大化してしまう模様。
* ============================================================================
* Independent Items and Midgame Note Parsing
* ============================================================================
*
* The "Midgame Note Parsing" option in the plugin parameters is made for any
* plugins that may only parse notetags midgame as opposed to at the loading of
* the game. This is an option that you should enable AT YOUR OWN RISK.
*
* Why is it at your own risk? Because enabling this option means independent
* items will keep their notedata, thus, increasing the file sizes of your save
* files several times bigger, and it can cause lag midgame, too.
〇〇の知識はアイテム等の note を参照しようとしてますが
YEP item core により生成された個別アイテムには note が存在しないのが問題で
オプションを true にすることで回避できるけど
YEP item core 側では要らないと思ってる note も複製するようになり
そのぶんセーブデータを圧迫する というようなことかと思います。
Twitter、はじめました。
https://twitter.com/wtr_in_reverie/
アバター
WTR
記事: 625
登録日時: 2015年12月22日(火) 19:14

Re: 覚えているだけでスキル威力を一律で上げるスキルを作りたい

投稿記事 by WTR »

それか、BattleKnowledge.js を書き換えてしまうか。
3か所で上のコードを下のものに置き換える。これなら YEP 側のオプションは推奨値のままで大丈夫かと思います。

100-101行目

コード: 全て選択

    BattleKnowledgeManager.initCond = function(note){
        var texts = obj.note.split('\n');

    BattleKnowledgeManager.initCond = function(meta){
        var texts = Object.entries(meta).map(([key, value]) => `<${key}:${value}>`);
170行目

コード: 全て選択

        obj._knowledge = this.initCond(obj.note);
        obj._knowledge = this.initCond(obj.meta);
248行目

コード: 全て選択

        var texts = item.note.split('/n');
        var texts = Object.entries(item.meta).map(([key, value]) => `<${key}:${value}>`);
Twitter、はじめました。
https://twitter.com/wtr_in_reverie/
miyomi
記事: 22
登録日時: 2024年10月25日(金) 02:32

Re: 覚えているだけでスキル威力を一律で上げるスキルを作りたい

投稿記事 by miyomi »

WTRさま、回答ありがとうございます。
Midgame Note Parsing を true にする、という方法で競合の回避を確認できました!
まさかこんなところに解決策が隠れているとは、、、本当にありがとうございます。

ただ、セーブデータの圧迫というのは気になるところです。ですので、あとから教えていただいたBattleKnowledge.js の書き換えというのを行ってみたのですが、これをするとプラグイン自体が無効になり、○○の知識単体でもスキルの威力が上がらなくなってしまいました。
エラーなどは出ませんが、競合時と同じように○○の知識を入れていないときと同様の挙動になってしまいます。

他のプラグインをOFFにした状態で数回試しても同じ結果だったのですが、
書き換えというのはjsフォルダ上のBattleKnowledge.jsを編集ツールで開き、
170行目であれば
obj._knowledge = this.initCond(obj.note);

obj._knowledge = this.initCond(obj.meta);
に変更する、といった形で問題ないのでしょうか?

何度も何度も申し訳ありませんが、ご教授いただければ幸いです。
ecf5DTTzl6h6lJj02
記事: 715
登録日時: 2018年12月23日(日) 13:55

Re: 覚えているだけでスキル威力を一律で上げるスキルを作りたい

投稿記事 by ecf5DTTzl6h6lJj02 »

こんにちは。
横から失礼します。
miyomi さんが書きました:WTRさま、回答ありがとうございます。
Midgame Note Parsing を true にする、という方法で競合の回避を確認できました!
まさかこんなところに解決策が隠れているとは、、、本当にありがとうございます。

ただ、セーブデータの圧迫というのは気になるところです。ですので、あとから教えていただいたBattleKnowledge.js の書き換えというのを行ってみたのですが、これをするとプラグイン自体が無効になり、○○の知識単体でもスキルの威力が上がらなくなってしまいました。
エラーなどは出ませんが、競合時と同じように○○の知識を入れていないときと同様の挙動になってしまいます。

他のプラグインをOFFにした状態で数回試しても同じ結果だったのですが、
書き換えというのはjsフォルダ上のBattleKnowledge.jsを編集ツールで開き、
170行目であれば
obj._knowledge = this.initCond(obj.note);

obj._knowledge = this.initCond(obj.meta);
に変更する、といった形で問題ないのでしょうか?

何度も何度も申し訳ありませんが、ご教授いただければ幸いです。
BattleKnowledge.js の書き換えは、
BattleKnowledgeManager の initialize メソッドの内容を、
YEP_ItemCore が導入されている場合は、ベースのアイテムを取得して、
そのアイテムのノートを参照するように書き換えるだけで済みそうな気がします。

168行目あたりにある、BattleKnowledgeManager.initialize というメソッドを

コード: 全て選択

    BattleKnowledgeManager.initialize = function(obj) {
        if (!obj._knowledge) {
            if ($plugins.some(plugin => plugin.name === 'YEP_ItemCore' && plugin.status)) {
                obj._knowledge = this.initCond(DataManager.getBaseItem(obj).note)
            } else {
                obj._knowledge = this.initCond(obj.note);
            }
        }
    };
と書き換えてみて、きちんと動作するか確認してみてください。

一応こちらの簡易チェックでは、動作しているように見えてますが、
きちんと確認してないので、動作しなかったらごめんなさい。
アバター
WTR
記事: 625
登録日時: 2015年12月22日(火) 19:14

Re: 覚えているだけでスキル威力を一律で上げるスキルを作りたい

投稿記事 by WTR »

getBaseItem ってなんだろう…と思ったら YEP item core のメソッドがあるんですね。
たしかにこれ使って initialize だけで済ませるのがよさそうですね。
Twitter、はじめました。
https://twitter.com/wtr_in_reverie/
返信する

“MV:質問”に戻る