2038年12月31日金曜日

SRPG Studio用のスクリプト素材

SRPG Studio用のスクリプト素材を公開しています。
下記のURLからダウンロードが行えます。

問い合わせや不具合修正連絡を行いたい人はこちらをご確認ください。
 

◆お知らせ:2024/04/27

・MP(EP)&必殺ゲージ追加についてUseRecovery(EP・FP回復値)を設定したアイテム使用時にエラーが発生すると連絡があったため確認した所、EPかFPどちらか片方だけしか使用しないようにした場合にエラーが起こる事を確認したため対応中(そこまで時間かからないかも)
 
・攻撃相手のEP/FPを変化させる武器のカスタムパラメータをつけられないかという要望があったので対応検討中(難易度低~中ぐらい?)
 
・範囲攻撃プラグインについて範囲攻撃による地形変化に関して一定ターンで元に戻せるかという要望があったので対応検討中(おそらく難易度高)
 

◆更新詳細(最終更新日:2024/03/10)

・MP(EP)&必殺ゲージ追加(2024/03/10)

  EP/FPが特定の値になった時のステート付与設定について処理を大幅改修。
  今まではターン開始時のみ付与チェックを行ってたが  ターン開始時以外にユニットの行動終了や自動イベントが終了する毎にチェックを行うように修正。
  ターン開始時のEP/FPの回復処理について従来はHPの回復・ダメージ処理をする関数の最後に追加するような形だったが処理を独立化させ  StraightFlowに処理を挿入する事によって競合が起こりづらくなるように修正。
  最大EP上限値と最大FP上限値の定数等の設定はAddStatusDefine.jsに移動。
  ターン毎のFPの回復値がEPのものを取得していたので修正。

◆配布素材内容

■敵の行動のランダム化

敵の行動について、通常はシミュレートによって出たスコアの中から一番高いものから選択されますが、
シミュレートで出たスコアが高い行動を複数ピックアップして、その中からランダムで選択するようにします。

SRPG Studioの敵のアルゴリズムは攻撃対象が二人以上いる場合は与ダメが大きい(それか撃破可能な)相手だけを狙い、攻撃される対象が狙われない場所に移動しない限りは他に攻撃可能な対象が幾ら居てもそちらに攻撃する事は絶対ありません。
また、状態異常付与武器は封印系のような余程強力なものでないと基本的には攻撃時の与ダメが大きい武器の使用を優先してしまいます。
例えば威力が4の武器と威力が1で毒を与える武器の両方を敵が持ってた場合、毒の効果が余程強力でない限りは毒持ちの武器を使う事はありません。

このプラグインを導入すると攻撃対象が二人以上いる場合は与ダメが大きい相手を必ず狙う事が無くなり、威力の高い武器を使いつつ時折状態異常付与の武器で攻撃する事が可能になります。

このプラグインは1つのユニットに二種類以上の攻撃方法(低威力だけど厄介な異常付与持ち、異常付与持ちは無いけど高威力)を持たせたい場合、ゲーム後半で敵に予測外の動きをさせる事で緊張感を持たせたい場合に有効です。

※AIを修正するプラグインとの競合にご注意ください

■スキル発動条件追加

導入する事により発動率を設定できるスキルにカスタムパラメータ―を渡す事で
発動確率を50+(力×0.5)などのように設定する事ができたり、
HPが50%以下など発動条件を設定できるようになります。

また、 連続攻撃A(2回攻撃)、連続攻撃B(3回攻撃)など設定が違うけど同じスキルを複数持っていた場合にエディタ側の発動確立が高いもののみ発動チェックされるという仕様をカスパラによる優先順で各スキル毎に発動チェックが行うようにし、発動チェックが最初に成功したもののスキルを使用するように挙動が修正されます。

 上記の発動条件のスクリプトで設定できる項目
・発動率にプラスされる絶対値
・発動率の倍率に小数点指定
・発動率の下限と上限
・相手の見切りを無視して発動できるスキルか
・発動者のステータス(現EP、LVなど現HP以外のパラメータも指定可能になりました)
・発動者の武器が物理か魔法か
・相手のステータス(現EP、LVなど現HP以外のパラメータも指定可能になりました)
・相手の武器が物理か魔法か・ターン数がN以上で発動可
・ターン数がN以下で発動可
・ターン数が特定の倍数で発動可
・こちらから攻撃を仕掛けたか否か
・直接攻撃か間接攻撃か
・相手よりステータスが上回っているか(複数指定可)
・相手よりステータスが下回っているか(複数指定可)
・1戦闘での発動可能回数・1ターン内での発動可能回数
・1マップ内での発動可能回数
・自分の攻撃回数
・相手の攻撃回数
・相手との距離
・発動に必要な消費EPと消費FPを設定可能
・フュージョン状態
・相手のフュージョン状態
・ステート付与状態
・相手のステート付与状態
・装備している武器タイプ
・相手の装備している武器タイプ
・ユニットコマンドから選択したか(コマンドスキル)
・コマンドスキル選択後からの持続ターン数
・コマンドスキル実行後から再選択するまでに必要なターン数
・同じカテゴリのスキルを持っていた(例えば攻撃回数が異なる連続攻撃を二つ持ってる)場合の発動優先度を設定

■スキル追加

導入する事により下記のスキルを使用できるようになります。

・クリティカル倍率が変更されるスキル
・発動するとクリティカルになるスキル(上記と組み合わせればFEの怒りを再現可能)
・発動時に防御力を無視するスキル
・発動時に2~5回ランダム攻撃スキル
・ダメージを吸収して回復するスキル
・発動時に戦闘続行するスキル
・攻撃命中時に相手の攻撃ラウンド回数を減らすスキル
・スキル所有者の攻撃力と攻撃対象の防御力を特定ステータスに依存させる

■出撃禁止設定

マップ設定でカスタムパラメータを渡す事により出撃禁止するユニットを設定できるようになります。
また、イベントの「スクリプト実行」からユニット毎に出撃禁止設定を行えます。

■バトルトーク

導入して設定を行うことで戦闘中にミニセリフが表示され、セリフ発生時に
キャラの表情を変更する事ができるようになります。
※ダウンロードURLの参考動画参照

■範囲攻撃アイテム

導入する事により範囲攻撃を行えるアイテムが使用できます。
・アイテムの威力にユニット能力や武器威力を反映させる事ができます。
(攻撃力に加算されるユニット能力を速さや技依存にする等が可能になる設定や最終的な攻撃力に補正値を掛ける設定も可能)
・アイテム使用時にエフェクトの再生が行えます。
 またHIT時のエフェクト、回避時のエフェクト、使用時のダメージ時のエフェクトを指定可能です。
・使用時に反動ダメージやステートの付与、消滅させたりできます・命中率が設定できユニットの能力を命中率に反映させることができます、固定にする事も可
・当たったユニットに対してステートの付与、消滅させたりできます。
 付与・消滅ステートは複数指定可能で付与確率も設定できます
・効果範囲の形を十字型にしたり、ブレス型にすることができます
・特定の地形効果を持つマップチップの地形を変更する事が可能です。 
・設定によって与えたダメージの何%分、HPが回復する処理追加

・ウィンドウの表示について、有効射程と有効範囲などはgame.iniの[keyboard]のSYSTEMで指定したキー(デフォルト:左shift)を押すことで表示されます。


・効果範囲内のキャラへのダメージや命中率が表示されます。game.iniの[keyboard]のSYSTEMで指定したキー(デフォルト:左shift)で表示切替可能。

・現状確認できてる問題
範囲攻撃で発射向きで効果範囲が変わるタイプを敵が使用する場合に明後日の方向に使用する事があります。2023/07/03にて修正しましたが使用する際の発動位置について若干精度が低くなる事があります。  

■MP(EP)&必殺ゲージ追加

導入することにより、ユニットのパラメータにEP(MP)とFP(必殺ゲージ)が追加されます。
また、武器とアイテムの使用判定にEPとFPの残量が条件に加わえる設定が可能になります。
EPは通常のゲームにあるMPと同様な感じの使用を想定、
FPは毎ターンのチャージを前提とした使用を想定しております。(EPもFP同様にチャージ設定可能)
EP、FPが特定域になった際にターン開始時にステート付与されるように設定が可能です。
移動量に応じてEPとFPを消費できるよう設定できます。
攻撃命中、攻撃ミス、被弾、回避持にEP・FPの回復できる設定ができます。
イベントコマンドの「スクリプトの実行」でEP・FPの最大値と現在値、毎ターン回復量の変更、EP・FPの最大値と現在値が取得可能です。
(デフォルトの名前はEPですが、当時MPが公式で実装されるかもしれないと想定した上での名称です。現状、公式側でMPが実装される気配は無さそうなのでMPという名称に変更しても問題有りません)

■ダメージ補正・誤差設定

導入する事によりダメージにレベル差補正や誤差が生じるようになります。
 

2023年10月25日水曜日

問い合わせについて

◆メールでの問い合わせについて

平日に問い合わせが来た場合は基本的に色々忙しい&疲れて眠ってる可能性高いので回答に時間がかかります(3、4日ほど)休日は内容にもよりますが1、2日ほどで返信するようにしますが、こちらの都合によっては3、4日ほど回答に時間がかかる事があります。
なお、不具合連絡(もしくは改修)についての対応は連絡を受信した旨の通知、調査等の告知はブログ内で行われ、基本的に修正完了以外は返信はしませんのでご了承ください。(対応困難なものや調査した結果、別の原因である可能性がある場合は返信する可能性はあります)
また、修正対応につきましては1、2週間ほど掛かる場合がありますのでご了承ください。

※連絡先メールアドレスは「詳細プロフィールを表示」のお問い合わせ→メール
 または素材の利用規約に記載しております。
※本スクリプトと一切関係無い質問はご遠慮お願いします。(この場合は確実に返信しません)

※2017年10月にコメントで来ていた要望を4ヵ月ぐらい見逃すという不注意を起こして
 いたためコメント欄は現在書き込めないようにしています。
 ご要望や不具合通知についてはメールでお願いします。
 万一コメントを書き込めても作者が目を通せる保証はありません。

◆リクエストについて

当方では新規素材作成のリクエストや、
個人や団体に対しての専用の素材制作及び提供は承っておりません。

既存素材に関するリクエストにつきましては承っており、
リクエスト内容や当方の都合にもよりますが対応等については検討はさせていただきます。

 

2022年12月6日火曜日

Fallout4 備忘録

Fallout4のModを弄り回してた時に気づいた点やあまり他サイトで触れられてないような事に関するメモ。

SkyrimにあったGame.GetCurrentCrosshairRef関数について

Fallout4には標準機能として存在しない。(だがGetCurrentConsoleRefというConsole Utilを使わない限りデバッグにしかほぼ用途が無いものはしっかりと残してる)
後述するLL FourPlay communityというスクリプト拡張プラグインにてほぼ同じ機能のLastCrossHairRef関数とLastCrossHairActor関数が使えるようになる。

特定対象のアクティベート時にRキーで追加コマンドを実行するタイプのModについて

これはダミーPerkにAdd Activate Choiceを設定してプレイヤーに持たせる事で実現させてるが
このAdd Activate Choiceが設定されてるPerkを複数取得した場合、
発動条件を満たした追加コマンドが2つ以上あるとコマンドが表示されなくなり、Rキーを押しても追加コマンドが実行できないという問題が発生する。
(A、B、Cのコマンド追加Perkをプレイヤーが所有し、AとCの条件に一致した対象にクロスヘアを合わせてもRキーコマンドが表示されなくなる)
おまけにこの追加コマンドを実行するキーの指定が不能なため競合した時の解決もかなり困難となる。(最悪どちらかの追加コマンドModを切る必要がある)

このPerkによる追加コマンドはSkyrimにあったGame.GetCurrentCrosshairRef関数が消えた事によってクロスヘア上のアクターを取得できる手段が無くなったため
その代打手段として使われていたが現在はLL FourPlay communityというスクリプト拡張プラグインでGame.GetCurrentCrosshairRef関数と同機能の関数が使えるようになったため
目の前の対象に特殊な事をやりたいModを作る場合は上記の問題回避のためにもLL FourPlay communityの関数とOnKeyDownの組み合わせでModを制作するのが安全。

スクリプト拡張プラグインについて

Fallout4のスクリプト拡張プラグインは自分が見つけた範囲では下記の通り。
(Skyrimだと前提Modにスクリプト拡張プラグインを指定したものがあるのと色んな所で解説してる所が多いため見つけやすいがFalloutだとスクリプト拡張プラグインを前提Modにしたものが少なく知名度がかなり低いから見つけづらい。)

  • SUP F4SE

Jsonファイルの読み書きや一時保存用の変数の仕様が可能になる。
現状だと、唯一外部ファイルを使用できるようになるスクリプト拡張プラグインであるため
SkyrimのPapyrusUtil SEを使ったModにあるようなMod設定の保存や読込、ゲームのロード時にMod設定の自動読込を作成したい時は必須。

ちなみにこの拡張プラグインはSkyrimにもSUP SKSEという名前で存在する。

  • Console Util

コンソールコマンドをスクリプトから実行する関数を追加する。
SkyrimのConsole Utilと同機能。

  • LL FourPlay community

Skyrimで存在してFallout4で何故か消えた関数の一部がこの拡張プラグインで使えるようになる。
クロスヘア上のアクターに対して特定のキーを押す事で何かのアクションをするというスクリプトを作る場合は必須。
(ただ、ダウンロードサイトはnexusとは別サイトでそちらもダウンロードのためにアカウント登録する必要がある)

Game.GetPlayerFollowers関数の仕様

現在コンパニオンになっているアクターではなくプレイヤーに追従しているアクター達を配列で返す。だが、待機命令で待機してたり戦闘中だと配列に含まれないためOblivionやSkyrim(要powerofthree's papyrus extender)の類似関数と同じ感覚で使うと痛い目を見る。(OblivionのGetNumFollowersはちゃんと取得できてたのに…GetCurrentCrosshairRef関数の件もそうだがスクリプト関連は何で一部退化しとるんだ…)

SUP F4SEがあれば周囲のアクターを取得できる関数が存在するため下記のコードで取得できる。(スクリプトエンジンもSkyrimよりマシになった感じはするが負荷がありそうだから多様は禁物。)

Actor[] Function GetFollowers()
    Cell pCell = Game.GetPlayer().GetParentCell()
    Actor[] followers = new Actor[0]
    Actor[] acts = SUP_F4SE.GetActorsInCell(pCell)
    int i = 0
    while (i < acts.length)
        if acts[i].IsPlayerTeammate()
            followers.add(acts[i])
        endif
        i += 1
    endWhile
    return followers
EndFunction

2020年4月29日水曜日

更新のお知らせ 2020/04/28 5/4追加修正

要望内容の対応、及び不具合の修正、修正が完了しました。
今回の修正で範囲攻撃アイテムが大幅に修正されております。
特にカスタムパラメータ未設定時のデフォルト値が変更されているため、スクリプトを既に使用している方は注意してください。(EffectRangeItemDefault.jsで変更可能)

5/4追加修正:
敵が大勢いるマップで処理が重くなるという報告があり確認。
AI処理で確実に範囲外にいるキャラに対するスコアチェック処理をスキップして、処理を軽減するように修正。
また、無差別系で敵味方が周囲に入り乱れてると被害の出さない場所にアイテムを使用できる場合でも使用しない可能性があったため処理を修正。

■範囲攻撃アイテム

-----要望-----
●命中率100%の指定
IER_HitValueの数値に関わらず必中指定ができるようにして欲しい

→新しいカスタムパラメータ:IER_HitMarkを追加

●効果範囲『全域』の指定
効果範囲について全域指定できるようにして欲しい。

→カスタムパラメータ:IER_EffectRangeTypeに99を指定で可能
 
●効果音を重複させない
HP回復やステート回復など一度に対象全員のエフェクト(効果音)が発生する場合
人数分の音が重なって音がかなり大きくなってしまうので
『効果音は一人分しか鳴らさない』のような指定が可能にして欲しい。

新しいカスタムパラメータ:IER_SoundDuplicateを追加、重複するのはtrueに設定した時のみに修正。(未設定時のデフォルトはfalse)


-----以下、それ以外で修正した内容------
●敵が範囲攻撃アイテムを使う時のAI処理を大幅修正。処理速度が大幅に改善。  (まだ見直しの余地ありだが前よりも余程マシになってるためリリース)

最低限のカスタムパラメータ(威力[IER_Value])で汎用的に動作するようにデフォルト値を見直し。デフォルト値を定義したファイル、EffectRangeItemDefault.jsを作成。
 
●色々煮詰まってた説明ウィンドウを修正、game.iniの[keyboard]のSYSTEMで指定したキー(デフォルト:左shift)で表示切替可能にして、有効射程と有効範囲はマスを表示して範囲が分かりやすくなるようにした。


●効果範囲内のキャラへのダメージや命中率が表示されるように修正、
game.iniの[keyboard]のSYSTEMで指定したキー(デフォルト:左shift)で表示切替可能




●範囲効果のタイプに四角(ボックス)型を追加。
 
●効果範囲のタイプでブレス型の場合、カーソルを使用者の斜めに移動すると極端な処理落ちが発生する問題を修正。 

●効果範囲のタイプをブレス型にした場合、射程タイプを強制的に十字型になるように。
 ●カスタムパラメータ:IER_HitReflection(ユニットの技を命中率に加算、武器の命中値を命中率に加算)について、指定が非常にややこしいため、パラメータをIER_HitReflectionUnit、IER_HitReflectionWeaponに分割。(旧型式、新方式どちらの指定でも可能です)

2020年3月29日日曜日

更新のお知らせ 2020/03/29

要望の対応及び修正を行いました。

■スキル発動条件
コマンドスキルでなくてもクールタイムの設定を可能に修正。

クールタイムが設定されているスキル使用後のクールタイム中
ユニットのステータス画面のスキルアイコンが薄暗くなり、
スキルアイコン下部とスキルウィンドウ内に再使用までのターン数が表示されるように修正。

持続ターン数が設定されているコマンドスキル使用時に
ユニットのステータス画面のスキルアイコンが点滅し、アイコン上部に持続ターン数が表示されるように修正。

2020年2月23日日曜日

不具合修正完了 2020/02/23

下記の不具合の対応が完了しました。

■範囲攻撃アイテム
OT_Recoveryをtrueにしての範囲回復時に使用者が対象に含まれていた場合、
使用者に対する回復処理が二回行われていた問題を修正。
取得経験値についてreadmeに効果範囲内に対象が複数いた場合等の記載が無かったため追記。

2020年1月7日火曜日

不具合修正完了 2020/01/07

下記の不具合及び要望の対応が完了しました。

■スキル発動条件追加
イベントコマンド「強制戦闘」においてスキル発動が許可されない。