2025年1月19日日曜日

範囲攻撃アイテムの更新分

・2025/06/29

 全体的に処理をある程度整理。
#EffectRangeItemDefault.jsのOT_EffectRangeItemDefaultの各プロパティの名称を
範囲攻撃アイテムに設定できるカスパラの名称と一致するように修正。
(#EffectRangeItemDefault.jsの末尾で旧名称のプロパティに新名称の値をコピーする処理をしてますので互換性には問題ありません)

敵が範囲攻撃アイテムを使用する際の移動先のアルゴリズム修正。
特にキュウブ氏の「敵再移動.js」が導入されてる時に再移動持ちはそれを考慮する動きになります。
それに伴い#EffectRangeItemDefault.jsに以下の設定を追加。
(全てデフォルトでtrue設定、旧Verの挙動に近い動きにしたい場合は全てfalseに設定してください)
- OT_EffectRangeItemAIMinMove
    平地等でよく発生する余計な移動を行わないようにする。
    
- OT_EffectRangeItemAILeaveMove
    敵対勢力から離れた位置で使用するようになる。
    
- OT_EffectRangeItemAIRepeatMovePriority
    キュウブ氏の敵再移動.js導入時に
    再移動持ちの敵が移動力の消費が控えめになる位置で範囲攻撃アイテムを使うようになる。
    
- OT_EffectRangeItemAIQBRepeatMovePluginFindCheck
    キュウブ氏の敵再移動.js以外で敵が再移動できるようになるプラグインがあった時用の設定。

ダメージや回復演出について、ダメージ値や回復値一人づつポップアップする演出にできるように
カスパラIER_DamagePopupを追加。
これに伴いデフォルトでのダメージ値や回復値の表示は一人づつポップアップする演出になります。
旧Verにあった対象全員のダメージ値を一括で表示する演出をデフォルトにしたい場合は
#EffectRangeItemDefault.jsのIER_DamagePopupの設定値を
{Simple:true, Delay:50, DelayMiss:0}に修正してください。    

以下のカスパラの未設定時のデフォルト値を#EffectRangeItemDefault.jsで調整できるように修正。
また、設定方法についてエディターの「リソース」→「リソース使用箇所」→「アニメ」の
アニメーションを指定できる方法を追加。
・OT_UseDamageAnime 
・OT_UseDelGoodAnime
・OT_UseDelBadAnime 
・IER_HitAnime      
・IER_MissAnime     
・IER_RecoveryAnime 
・IER_DelGoodAnime  
・IER_DelBadAnime   

命中や回避時のアニメと同時に再生する効果音が設定可能になるように以下のカスパラ追加。
・IER_HitSound      
・IER_MissSound     
・IER_UseDamageSound
・IER_RecoverySound 
・IER_DeathSound    

#EffectRangeItemDefault.jsにダメージ値や回復値の色を指定する設定を追加。
IER_DamagePopupTextColor
IER_RecoveryPopupTextColor
IER_SimpleDamagePopupTextColor  
IER_SimpleRecoveryPopupTextColor
IER_SimpleMissPopupTextColor    

多数のユニットが一斉にIER_DelayFire.ForceFireが設定されている
遅延発動型の範囲攻撃アイテムを使用した際、
発動が次ターンに持ち越されるユニットが出てくる事があったので修正。

IER_FixedValue設定時の回復について回復値の表示は正常に表示されていたが
実際の回復値が反映されていなかったので修正。

アイテムの使用位置選択時に効果範囲内に入ったユニットの予測ダメージ値を
使用位置を決定するかキャンセルするまでキャッシュするように修正。
これにより敵が密集している所にカーソルを動かし続ける事によって発生するカクツキが軽減されました。

再移動スキル所持時、強制発動型でない遅延発動型の範囲攻撃の
発動及びキャンセル時に待機状態になる場合に再移動が行えるように修正。

「競合対策」フォルダにキュウブ氏の「敵再移動 ver 1.2」用の競合対策プラグインを作成。
(敵再移動.jsと同じ場所に置いてください)

・2025/04/06

範囲攻撃アイテムのアイテム情報ウィンドウに表示されるものを
「攻撃、命中、射程、範囲」だけの簡略表示にするカスパラIER_SimpleDescriptionを追加。
アイテム情報ウィンドウを簡略化した場合、カスパラの設定で攻撃や命中の項目に表示される
文字列の長さに応じてウィンドウの横幅は自動的に調整されます。
※全範囲攻撃アイテムの情報ウィンドウを簡略化したい場合は#EffectRangeItemDefault.jsの
 OT_EffectRangeItemDefault.SimpleDescriptionをtrueにしてください。
 
エディター側の「有効相手」を設定する事で「有効相手」に一致する対象のみに命中できるように修正。
例えば「クラスタイプ」で飛行系にチェックして不一致の設定を行えば飛行系には命中しない、
「地形グループ」で一致の設定を行えば特定の地形にいる敵にのみ命中という事ができるようになります。
上記の修正に伴い敵が使用する際のAI周りを修正。
 
#EffectRangeItemDefault.jsに以下の設定を追加
  • アイテム情報ウィンドウの横幅を調整する設定IER_WindowWidthAdjustPlusを追加(簡略化されていない場合のみ)

  • アイテム情報ウィンドウの文言を修正しやすくするためIER_DefineStringという文言設定を追加。

  • 威力と命中の値を最小限にする設定IER_WindowInfoSimplePowerAndHitを追加。

  • 範囲攻撃アイテムのアイテム情報ウィンドウの射程と効果範囲の表示で使用者を表すアイコンや使用位置を表すアイコンを変更できる設定(IER_WindowInfoRangeIcon、IER_WindowInfoEffectRangeDamageIcon、IER_WindowInfoEffectRangeRecoveryIcon)を追加。

 
範囲攻撃アイテムのアイテム情報ウィンドウのカスタマイズを行いやすくできるように
EffectRangeDamageItemInfo.jsを新規作成してEffectRangeDamage.jsにあったアイテム情報ウィンドウ周りの処理をそちらに移動。
同様にEffectRangeDamageUseSelectPos.jsを新規作成して
EffectRangeDamage.jsやDefineCustomItemFunction.jsの範囲攻撃アイテムのの発動位置選択時の処理をそちらに移動。

範囲攻撃アイテムの発動位置の選択時に効果範囲内の対象ユニット一覧の表示を調整。
  • 「対象[◯/◯] ◯, ◯キーで表示切替」の表示位置を修正。
  • ウィンドウの横幅を少し大きめに調整。画面解像度が640×480以上を超えた場合はさらに横幅は大きくなります。
  • ダメージ値や回復値が4桁を超える場合にはみ出ないように調整。
  • #EffectRangeItemDefault.jsのIER_EnemyWindowValueTextAdjustXで微調整可能。
  • 左側の「DMG:」や「命中:」を全角3文字を設定できるように修正。
  • 発動位置のカーソルが画面上部にある場合に対象ユニット一覧を画面下側に表示するように修正。
「スキル発動条件追加」との併用時に特定条件下で最大HP割合ダメージを受けると最大HPと同じダメージを受けてしまう問題を修正。

範囲攻撃アイテムのアイテム情報ウィンドウで威力が∞表示される場合に「威力」の文字が出ていない問題を修正。

IER_DelayFireが設定されていた場合に範囲攻撃アイテムのアイテム情報ウィンドウの2ページ目に表示される情報についてTargetDeadCancel、OutRangeFire、Redesignation、DeadNoCancel、AllowCounter、FireDoneWait、FireCancelWait、StateCancelが
設定されてた場合の情報が表示されるように修正。
(StateCancelはどの設定がされてても「特定ステートで発動中止」と表示されます)
 

・2025/03/01

遅延発動型アイテムのカスパラ設定について設定できるカスパラ追加。
    - IER_DelayFire.FireDoneWait           // 発動後に待機状態になるか
    - IER_DelayFire.FireCancelWait         // キャンセル時に待機状態になるか
    - IER_DelayFire.StateCancel.NoAction   // 行動不能のステートに掛かると発動準備状態が強制キャンセル
    - IER_DelayFire.StateCancel.Berserk    // 暴走のステートに掛かると発動準備状態が強制キャンセル
    - IER_DelayFire.StateCancel.Auto       // 自動AIのステートに掛かると発動準備状態が強制キャンセル
    - IER_DelayFire.StateCancel.NoPhysics  // 物理攻撃封印のステートに掛かると発動準備状態が強制キャンセル
    - IER_DelayFire.StateCancel.NoMagic    // 魔法封印のステートに掛かると発動準備状態が強制キャンセル
    - IER_DelayFire.StateCancel.NoItem     // アイテム封印のステートに掛かると発動準備状態が強制キャンセル
    - IER_DelayFire.StateCancel.NoWand     // 杖封印のステートに掛かると発動準備状態が強制キャンセル
    - IER_DelayFire.StateCancel.Keyword    // これの設定値がステートのカスパラIER_DelayFireCancelの値と同一ならば強制キャンセル
    
    - IER_DelayFire.WarningPanelSetting.PanelEnable // 発動までの間の効果範囲の表示
    - IER_DelayFire.WarningPanelSetting.TurnEnable  // 発動までの残りターン数表示
    - IER_DelayFire.WarningPanelSetting.LineEnable  // 発動者と発動位置の間の線を表示

    - IER_DelayFire.BeforeEffectData       // アイテム一覧から使った直後(発動準備状態になった時)に使用者を中心にアニメーションを再生。
    - IER_DelayFire.BeforeEffectPosTarget  // ↑のアニメーションの位置を発動位置を中心に再生するよう設定

これにより範囲攻撃アイテムごとに発動後に待機状態になるか、
キャンセル時に待機状態になるかの設定をする事が可能になった。

併用しているプラグインによっては
敵軍や同盟軍のターンが存在しない場合の時用の設定として
#EffectRangeItemDefaultにIER_DelayFireTrunCheckTypeを追加。

割合ダメージを行えるように以下のカスパラを追加
    - IER_FixedValue     // 固定ダメージ(or回復)値や割合ダメージ(or回復)の設定が可能

スキップ時の処理を修正。
範囲攻撃でステート付与を行った際、スキップ状態であっても
ステート付与アニメが再生されていたのをスキップするように修正。
演出スキップやターンスキップ中のダメージ表示やユニット消滅演出のスキップ可否を
#EffectRangeItemDefault.jsのOT_EffectRangeSkipModeDamageVisualSkipで調整可能に修正。

範囲攻撃アイテムのアイテム情報ウィンドウの横幅を大きめに調整。
それに伴いウィンドウ下部にあった切替方法案内をウィンドウ上部に移動。

範囲攻撃に巻き込めるユニットの情報ウィンドウのHPが
現在HPではなく最大HPが表示されていたので修正。

・2025/01/19

範囲攻撃の遅延発動設定が行える以下のカスパラを追加。
※さんごぱん氏の『ウェイトターンシステム』でも使用可能です。
    - IER_DelayFire ~ Turn             // ターン数
    - IER_DelayFire ~ SelfEffectData   // 発動準備中の使用者のエフェクト
    - IER_DelayFire ~ TargetEffectData // 発動準備中の使用位置のエフェクト
    - IER_DelayFire ~ Cancelable       // キャンセル許可
    - IER_DelayFire ~ ForceFire        // 強制発動
    - IER_DelayFire ~ TurnEndFire      // 強制発動設定時にターン終了後発動
    - IER_DelayFire ~ PosLinkUser      // 使用者と発動位置の位置連動
    - IER_DelayFire ~ TargetTracking   // カーソルをあわせたターゲットに追従
    - IER_DelayFire ~ TargetTrackingFilter // ターゲット追従のフィルター
    - IER_DelayFire ~ TargetDeadCancel // ターゲットに追従時にターゲット死亡で強制キャンセル
    - IER_DelayFire ~ OutRangeFire     // ターゲット追従時等で射程外になった時の発動を許可
    - IER_DelayFire ~ Redesignation    // 強制発動でない時の発動時に発動位置の再設定許可
    - IER_DelayFire ~ DeadNoCancel     // 使用者が死亡した際に発動が強制キャンセルされなくなる
    - IER_DelayFire ~ AllowCounter     // 発動準備中に戦闘を仕掛けられた際に反撃を許可

設定できるカスパラ追加。
    - IER_MinValue // 与えるダメージ・回復量の下限
    - IER_MaxValue // 与えるダメージ・回復量の上限
    - IER_MinHit   // 命中率の下限
    - IER_MaxHit   // 命中率の上限
    - IER_FakeInfiniteDisplay   // アイテム情報ウィンドウと攻撃予測ウィンドウの数値を∞でダミー表示
    - IER_CrosshairTarget       // 発動位置を敵or味方に合わせる必要があるかの有無
    - IER_CrosshairTargetFilter // 上記のフィルター
    
一部のカスパラの説明が抜けていたので追記
    - OT_TargetDamageDeath
    - IER_NoTargetUseNG

範囲攻撃の遅延発動型追加に伴いMaterial\OT_ExtraItemフォルダを追加。

範囲攻撃アイテム使用前の発動位置選択時の
カーソルの初期位置を発動者の位置に置くように修正。

範囲攻撃のアイテム情報ウィンドウ、攻撃予測ウィンドウのページ切り替えについて
どのキーで切り替えられるかが分かりやすくなるようにUI修正。
また、切り替え方法を変更。(旧Ver用の設定も残してます)

イベントコマンドの「アイテムの使用」で範囲攻撃を使用する前に
イベントコマンドの「スクリプトの実行」の「コード実行」にて
ユニットの位置にアイテムを使用する設定ができるように処理追加。

ファイルを細分化。EffectRangeItemDefault.jsの名前を#EffectRangeItemDefault.jsに変更。設定できるものも色々追加。
EffectRangeItemDefault.jsは上書き用のダミーとして残しています。
ただ、ちょっとスクリプト周りはもう少し整理するかも。
(特にカスパラの値を取得する関数は勢いで作ってたからオブジェクト化しておきたい)

#EffectRangeItemDefault.jsで効果範囲の赤色パネルについて
波打たないようにするかの設定できるように修正。

範囲攻撃のアイテム情報ウィンドウと攻撃予測ウィンドウの数値について
∞でダミー表示する手段を追加。(IER_FakeInfiniteDisplay)
また、固定ダメージで非常に大きいダメージ値になる場合も∞で表示するよう修正。
(#EffectRangeItemDefault.jsのOT_EffectRangeInfiniteValueで変更可能)