MODガイド AI編
タスク(AI_TASK)
- 基本タスク
- AIパッケージ
- プレイヤーオーダー
- TP_URGENT
- TP_NON_URGENT
- TP_FLUFF
優先度の目安は以下の通りです。
- 必要な時に最優先で使うべきタスクはTP_URGENT
- 普段の行動に使うタスクはTP_NON_URGENT
- フォールバック用のタスクはTP_FLUFF
- TARGET_SPECIFIC
対象:タスクに依存 - TARGET_SELF
対象:自身 - TARGET_LEADER
対象:自部隊のリーダー - TARGET_SQUAD_MISSION
対象:現在使用中のAIパッケージの目標
例えばボディーガードは契約相手を対象にします。 - TARGET_HOME_GATE
対象:自宅
基本タスク
以下の4種類あります。
- キャラクター共通
- 勢力固有
- 種族固有
- プレイヤー固有
- 優先度:TP_URGENT相当
- ウェイト:標準
- val0:効果なし
優先度はAI_TASKのclassificationで設定します。 - val1:ウェイト
FACTIONのAI fallbackとは仕組みが異なり、互換性はありません。
該当のバージョンでクリーンアップしたMODは、プレイヤーのPROTECT_ALLIESが発動しないバグを抱えているため、修正または使用を中止してください。
- val0:効果なし
優先度はAI_TASKのclassificationで設定します。 - val1:ウェイト
NPCまたは動物に登録します。プレイヤーの人型キャラクターは対象外です。
- AQUIRE_FOOD_AT_HOMEBASE(食料を探す)
- 優先度:TP_URGENT相当
- ウェイト:やや低い
- 優先度:TP_URGENT相当
- GRAB_ONE_FOOD(地面の食料を食べる) ※動物のみ
- 優先度:TP_URGENT相当
- ウェイト:やや低い
- 優先度:TP_URGENT相当
プレイヤーの動物は死骸を食べるタスクが削除されます。 以下のタスクは設定次第で登録されます。
- 負傷時にベッドで寝る
- 回復後の起床
- アイテムを収納
- 椅子に座る
AIパッケージ(AI_PACKAGE)
- タスクの開始時刻
- タスクの終了時刻
- タスクのウェイト
- AIパッケージの開始条件
- AIパッケージの終了条件
- AIパッケージの連携条件
- 目標・目的地
- 他者への対応
- デフォルトの移動速度
- アンロード中の移動先
- 部隊メンバー全員にLeader AI Goalsを適用
- Squad AI Goalsが存在する場合、部隊のリーダー以外に対してSquad AI Goalsに置き換え
- Squad2 AI Goalsが存在する場合、squad2とanimal2に対してSquad2 AI Goalsに置き換え
- 部隊が所有する奴隷にSlave AI Goalsを適用
- val0:タスクの開始時刻
0~24を設定します。 - val1:タスクの終了時刻
0~24を設定します。 - val2:タスクのウェイト
0は100扱いのため、ウェイトを上げようとして0を50にすると逆に下がります。
タスク自体にもウェイトが存在しているので、val2が低くても優先される場合があります。
- AIパッケージの開始条件
- AIパッケージの終了条件
- AIパッケージの連携条件
- 目標・目的地
- 他者への対応
- デフォルトの移動速度
- Leader AI Goals
- Squad AI Goals
- Squad2 AI Goals
- Slave AI Goals
従って、部隊メンバー全員に対して共通のタスクを追加する場合は、Leader AI Goalsの設定のみで十分です。
連携元のパッケージが終了条件と連携条件を満たした場合に設定したパッケージが起動します。
AIパッケージ:種類と優先順位
- AI契約
- キャンペーン
- AI contract
- キャンペーン
- 通常のAIパッケージ
- replacement AI
- SQUAD_TEMPLATEのAI Packages
- FACTIONのAI fallback
- replacement AI
AIパッケージ:通常のAIパッケージ
val0:優先度
この項目のみAI_PACKAGEのLeads toが有効ですが、同じAIパッケージをAI Packagesに設定しないと維持できません。
優先度が0かつ一番最初に登録するため、優先順位が最も低いAIパッケージです。
- DIALOGUE_LINEのchange AIを実行
- 捕縛時
一時的に本隊から分離すると再び合流するまで以下のAIパッケージを使います。- 奴隷のみString ID:5344-gamedata.base
- 他はString ID:CAPTURED_NPC
- 奴隷のみString ID:5344-gamedata.base
PLATOONのreplacementAIに保存しており永続的に有効です。
他のAIパッケージが開始条件を満たさない場合にデフォルトパッケージを無条件で開始します。
AIパッケージ:AI契約
AI契約を実行すると終了条件を満たすまで使用するAIパッケージが変更されます。
契約中のAIパッケージはPLATOONのcontractjobに保存されます。
- DIALOGUE_LINEのAI contract
- キャンペーン
契約中に別のAIパッケージを指定すると上書きされます。ただし、同じAIパッケージを指定しても契約期間は更新不可です。
- 第一フェーズ(進軍)
- FACTION_CAMPAIGNのpt1 AI leader
- FACTION_CAMPAIGNのpt1 AI others
- FACTION_CAMPAIGNのpt1 AI leader
- 第二フェーズ(メイン)
- FACTION_CAMPAIGNのpt2 AI leader
- FACTION_CAMPAIGNのpt2 AI others
- FACTION_CAMPAIGNのpt2 AI leader
- 第三フェーズ(撤退)
- FACTION_CAMPAIGNのretreat AI leader
- FACTION_CAMPAIGNのretreat AI others
- FACTION_CAMPAIGNのretreat AI leader
最も優先度が高く、AI contractは解約されます。(後からAI contractを実行してもキャンペーンのAIパッケージに上書きされます)
DA_VICTORY_PHASEを実行すると第四フェーズに移行しますが、victory AI leaderとvictory AI othersは無効な設定項目のため、AI契約を上書きできません。
この仕様を利用してAI contractと同時に実行するとAI contractのAIパッケージを維持できます。
Signal 1, 25:撤退
担ぎ上げ後に自勢力の街へ帰還する目的で使います。
また、キャンペーンは開始条件を無視できるので、出発地点に撤退する用途で使用可能です。
- 部隊メンバーの1人以上が担ぎ上げ状態になる
- 自勢力の街に到着
- SIG_RETREAT_C***_RAID
ホームタウン
ホームタウンがない場合は現在地に最も近い自勢力の街 - SIG_RETREAT_C***_RAID_TO_NEAREST_NEST
現在地に最も近い自勢力の街
Signal 4, 6, 23:パトロール
SIG_START_PATROL等は定期的な外出に使います。
- リーダーが街の外または街に入ってから8時間経過
- PLATOONのintactがTrue
- 部隊メンバー全員が何も担いでいない
- 檻に空きがある ※SIG_C***_START_PATROLのみ
- PLATOONのintactがFalse
- パトロール開始から12時間経過
Signal 5:部隊の負傷
SIG_SQUAD_NOT_INTACTはキャンペーンで出発地点に撤退する目的で使いますが、被害が軽微だと即座に終了条件を満たして別のAIパッケージに移行します。
Signal 10, 24:囚人の回収
SIG_GATHER_UP_ALL_LOCAL_PRISONERS_UNHOLYはホーリーネーション用でパラディンが異種族または女性の囚人をリバース送りにするために使います。
一方、SIG_GATHER_UP_ALL_LOCAL_PRISONERSは種族・性別を問いません。
このパッケージは囚人を奴隷化して檻から出すまで実施可能で、連行はSignal 11と28で実施します。
- PLATOONのintactがTrue
- 以下の条件を満たす街が存在する
- 自勢力
- TOWNのtypeがTOWN_SLAVE_CAMP、TOWN_PRISON以外
- 収監中のキャラクターが存在する ※SIG_GATHER_UP_ALL_LOCAL_PRISONERS_UNHOLYは男性かつRACE_GROUPが同じキャラクターを除外
- 自勢力
- 囚人が0人になる
- 連行する人数が部隊人数の3倍を超える
Signal 11, 28:奴隷の移送
- 非敵対勢力
- TOWNのtypeがTOWN_SLAVE_CAMP
SIG_SLAVER_SHIP_TO_ANYWHERE_CLOSEは以下の街も対象
- 非敵対勢力
- TOWNのtypeがTOWN_TOWN
- BD_SLAVE_STORAGEの建物を含む
Signal 16:各街を放浪
SIG_WANDERING_TOWN_TO_TOWNは主にフィールドの徘徊部隊が街を目指すために使います。
- 滞在時間(5~8)経過かつ6時~21時の間
- 滞在中のプレイヤー拠点がプライベートになる
目的地以外でも条件を満たすので、通りがかっただけでも放浪が終了します。
- 所属勢力と非敵対 ※FACTIONのdefault relationが-30未満の街は味方勢力であること
- 所属勢力のnot realがFalse
- 所属勢力のfundamental typeがOT_BANDIT以外 ※自勢力がOT_BANDITなら無視
- TOWNのis publicがTrue ※自勢力はFalseも可
- TOWNのtypeが以下のいずれか ※プレイヤー拠点はtypeに関係なく対象
- TOWN_TOWN
- TOWN_VILLAGE
- TOWN_SLAVE_CAMP
- TOWN_MILITARY
- TOWN_TOWN
- 自勢力のno-go zonesは除外
何故かTOWN_OUTPOSTが対象外のため、ウェイステーションに人が来ません。
キャラバンがニュークラリアに引き寄せられる原因でもありますが、対策として道を引いて誘導する方法があります。
Signal 17, 26, 27:街に滞在
SIG_HANG_OUT_AT_BARはBD_BARの建物に滞在します。
SIG_HANG_OUT_OUTDOORS_ONLYとSIG_C***_AT_HOMEは屋外に滞在します。
- 現在地がホームタウン
- 現在地が非敵対勢力の街かつBD_BARの建物が存在する
- 開始条件を満たさなくなった時
- 滞在中のプレイヤー拠点がプライベートになる
- 現在地の街
- ホームタウン
- 以下の条件を満たす現在地に最も近い街
- 非敵対勢力
- TOWNのtypeがTOWN_TOWNまたはTOWN_NEST ※TOWN_TOWNが優先
- 非敵対勢力
- is hostileがTrue
- 訪問先の勢力
- 第二フェーズ
ただし、プライベートな街や巣にも滞在します。
Signal 33:AI契約
SIG_TIMED_CONTRACTはAI contractを前提とします。
- is hostileがTrue
- 訪問先の勢力
- 第二フェーズ
Signal 12:ボディーガード
SIG_BODYGUARDはAI contractを前提として雇用者を保護します。
- 契約期間満了
- 裏切り行為が発覚
攻撃や犯行が裏切り行為に該当します。
Signal 13:AI契約(奴隷からの脱却)
SIG_BECOME_EX_SLAVEはAI contractを前提として奴隷・逃亡奴隷以外になるまで同行を依頼します。
時間がかかるため、バニラはSIG_OUT_OF_DANGERを使っています。
Signal 14:AI契約(危険地帯からの脱出)
SIG_OUT_OF_DANGERはAI contractを前提として安全な場所への誘導を依頼します。
- 契約期間満了
- 現在地が以下のいずれか
- プレイヤー拠点
- 味方勢力の街
- 上記以外は以下の全てを満たすこと
- 非戦闘状態
- 周囲に敵がいない
- 逃亡奴隷/元奴隷は現在地の街の勢力が主人の勢力でないこと
- 非戦闘状態
- プレイヤー拠点
Signal 15, 31:拠点防衛
ボディーガードの拠点版です。
SIG_DEFEND_PLAYER_TOWN_TIMEDとSIG_DEFEND_PLAYER_TOWN_CAMPAIGNで終了条件が少し異なります。後者の方がプレイヤーに有利な条件です。
- 契約期間満了
SIG_DEFEND_PLAYER_TOWN_CAMPAIGNはプレイヤーに対する敵対的なキャンペーンが終了するまで延長します。 - 裏切り行為が発覚
攻撃や犯行が裏切り行為に該当します。
Signal 19:進軍
WAR_GATHER_FORCESはキャンペーンを前提として目的地を設定します。
Signal 20, 32:拠点襲撃
WAR_ASSAULT_TOWNとWAR_ASSAULT_TOWN_C***はキャンペーンを前提として目的地で敵対化します。
- 動物以外
- FACTIONのnot realがFalse
- FACTIONのfundamental typeがOT_BANDIT以外
- 双方が目的地に滞在中
- 3人担ぎ上げ
- 1人以上担ぎ上げて一定時間経過
Signal 29:ランダムな拠点襲撃
SIG_PASSING_BY_TOWN_ASSAULTはキャンペーン以外でプレイヤーの拠点を襲撃する目的で使います。
- オプションの「敵が町を攻撃する頻度」が「決してない」以外
- PLATOONのintactがTrue
- 門または壁を設置している ※is gatewayがTrue(ラグーンの足場など)も対象
- プレイヤー勢力と中立または敵対関係
- 現在地の街の所属勢力がプレイヤー
- PLATOONのintactがFalse
- 攻撃対象の街にいる気絶・死亡以外のプレイヤーが0人(開始時に遠く離れているキャラクターはカウント対象外)
Signal 30:拠点の占領
SIG_OCCUPY_CONQUERED_TOWNはLeads toによる連携を前提として対象の街を占領します。
別パッケージのLeads toによる連携が必要です。
Signal 22:難民
SIG_REFUGEE_DISBANDはキャンプの徘徊部隊向けで、別のキャンプへ避難します。
- ホームタウンが死亡状態になる
- 2人以下の部隊かつリーダーが奴隷状態(逃亡・元含む)になる
目的地が存在する場合はホームタウンを目的地に変更します。
Signal:その他
上記以外のsignal funcは常に開始可能であり、常に終了不可です。
従って、優先度は0を推奨します。
- is hostileがTrue
- 訪問先の勢力
- 第二フェーズ
他は終了条件を満たせずAI contractが永続化します。
とあるキャラクターは以下の仕組みで地の果てまで追いかけて来ます。
- signal func:SIG_DEFEAT_SQUAD (AI契約が永続化)
- unloaded func:UPJOB_TRAVEL_TARGET (アンロード中は目標を追跡)
- 街の住人 (デスポーンしない)
- 非ユニーク (アンロードしてもホームタウンに戻さない)
キャンペーンのsignal funcについて
キャンペーンの各フェーズごとに推奨のsignal funcを紹介します。
- 終了条件
終了条件を満たすと通常のAIパッケージに切り替わってしまいます。 - 目的地が訪問先
これを満たさないと滞在が困難です。 - 他者への対応
敵扱いになると同盟関係でも攻撃が当たってしまいます。
- 敵対的キャンペーン中立でも敵対化させるため、Signal 20を推奨します。
誘拐が目的ならSignal 32を使います。 - 友好的キャンペーン中立でも味方化させるため、Signal 31を推奨します。
- 中立的キャンペーン他者への対応が変化しないSignal 19を推奨します。
キャラバンの訪問イベントのように滞在なしで撤退させる場合はpt2 AI leaderを未設定にします。
- 敵対的キャンペーンプレイヤー含め街にいるキャラクター全員を攻撃対象にする場合はSignal 20で問題ありません。
プレイヤーと協力して街を攻撃する場合はSignal 20が使えないので、以下の方針になります。
- 攻撃先の勢力と敵対関係の場合
Signal 19またはSignal 29を推奨します。 - 攻撃先の勢力と中立関係の場合
積極的に敵対化させるならSignal 29を推奨します。味方を守るAIを利用してプレイヤーの攻撃を起点に攻撃先と敵対化させるならSignal 19で問題ありません。本来、Signal 29は対プレイヤーのみ開始条件を満たせますが、開始条件を無視できるAI契約ならNPCに対して起動できます。
- その他
Signal 30を使うとNPCの街が占領された状態になります。
- 攻撃先の勢力と敵対関係の場合
- 友好的キャンペーン強制的な味方化は不可能です。Signal 31(Signal 16)を使うとプレイヤー拠点に向かいます。
ただし、同盟関係を前提にSignal 19を使う分には問題ないです。 - 中立的キャンペーンSignal 19を推奨します。
敢えて終了条件を満たす設定にして通常のAIパッケージを使うのもありです。
unloaded func
キャンペーン中はunloaded funcの設定を無視してUPJOB_TRAVEL_TARGETまたはUPJOB_TRAVEL_TARGET_FASTになります。
- ホームタウンとの距離が一定以上
- 本隊から分離した部隊
タスク:LOOT_THE_DEAD
従って、PT_TRAITOROUSは略奪する機会が多く、PT_HONORABLEは略奪する機会が少ないです。
タスク:JOB_MEDIC
- 味方
- 以下を満たす気絶中の中立キャラクター
- 治療側勢力のheals strangersがTrue
- DC_I_SHOULD_HELP_THIS_GUYがTrue
※自分のNPC classがOT_BANDIT以外かつ相手のNPC classがOT_BANDITは対象外
- 治療側勢力のheals strangersがTrue
- 自宅の檻に収監中のキャラクター
- 自勢力の奴隷
- 以下を満たす担がれているキャラクター
- 自身の現在地が街の外
- 自勢力が担いでいる
- 動物以外
- 自身の現在地が街の外
タスク:RELAX_IN_TOWN_PACKAGE
BF_CHAIRを使います。
Signal 17はBD_BARの建物、Signal 26, 27は屋外が対象です。
タスク:STAY_IN_HOME
- BF_MINE
- BF_RESEARCH
- BF_REFINERY
- BF_TRAINING
- BF_CRAFTING
- BF_CHAIR
タスク:SIT_AROUND
- BF_TRAINING ※NPCのみ
- BF_CHAIR
- BF_THRONE
対象の街は以下の通りです。
- プレイヤーは自拠点
- NPCはホームタウン
- SIG_OCCUPY_CONQUERED_TOWNで占領した街
占領した街の所属勢力の家具を使います。
プレイヤーは「仕事がない時に座る」で設定可能です。
タスク:SIT_ON_THRONE
リーダーのみ使用可能です。
タスク:PATROL_TOWN
目的地の中心から一定距離以内を徘徊します。
タスク:STAND_AT_GUARD_NODE_HOMETOWN_OUTSIDE
ホームタウンの屋外のNODE_GUARD_SPOTで待機します。
屋外のNODE_GUARD_SPOTはドアの両斜め前方に自動配置されます。通常のドアは2か所ですが、門は4か所配置されます。
また、このノードはbar squadsの出現位置も兼ねています。
担ぎ上げ系のタスクと担ぎ降ろし系のタスクは別になっているので、ウェイトに気を付けないと「担ぐ→NODEに反応→降ろす→担ぐ→...」の無限ループが発生します。
タスク:STAND_AT_SHOPKEEPER_NODE
このノードはresidentsの出現位置も兼ねています。
タスク:STAND_AT_GUARD_NODE_HOMEBUILDING
NODE_GUARD_SPOTがない場合はNODE_GENARALで待機します。
また、STAND_AT_GUARD_NODE_HOMEBUILDING_INDOORS_ONLYは屋内のみ対象です。
タスク:WANDER_TOWN
使い勝手が良くなく、バニラでは未使用です。
タスク:MAKE_ANNOUNCEMENT_FAST
MAKE_ANNOUNCEMENTもありますが、特に違いはありません。
タスク:TRAVEL_TO_TARGET_PACKAGE
キャンペーンの目標は以下の通りです。
リーダー部隊:訪問先
他の部隊:リーダー部隊
タスク:TRAVEL_TO_TARGET_TOWN_FAST
TRAVEL_TO_TARGET_TOWNとの違いはデフォルトの移動速度だけです。
ただし、AIパッケージや部隊の設定を優先します。
タスク:RUN_AROUND_TOWN_LOOKING_FOR_PEOPLE
ランダムに目的地にある建物に侵入します。
おまけ:プレイヤー拠点に酒場を作る
- SQUAD_TEMPLATEのbuilding designationがBD_BARであるString IDをメモ
バニラデータなら「14487-rebirth.mod」等が該当します。 - 普段通りに拠点を作成する
- 酒場にする建物を選定
- 開発者モードで建物の座標をメモ
- セーブ(念のため別名でセーブ)
- zoneファイルを特定
以下の計算でzone.X.Z.zoneを特定します。
X = floor(32 + X座標 / 4608)
Z = floor(32 + Z座標 / 4608) - FCSで開く
- 対象の建物を探す
nameでフィルタリングすると見つかるはずです。
同じ種類の建物が複数存在する場合は、以下の方法で座標を調べると対象かどうか判別可能です。- String IDの末尾「-S23」を除いた文字列をメモ
- String ID: 0-buildinglistのInstancesからメモした文字列の名前を探す
- ダブルクリックしてInstanceを開いてPositionを確認
- String IDの末尾「-S23」を除いた文字列をメモ
- 対象のsquad templateにBD_BARのString IDを設定
ついでにnameを変更して名前を付けた方がわかりやすいです。 - 保存してFCSを閉じる
- セーブデータをロード
- 椅子やテーブルを設置して拠点をパブリックにする
滞在中のNPCが椅子に座れば成功です。
おまけ:NPCの街にプレイヤーが運営する酒場を作る
residentsに以下のSQUAD_TEMPLATEを設定し、購入可能な酒場を出現させます。
- sell home:True
- building designation:BD_BAR
This guide was created by its original author on the Steam Community. Are you the author and want it removed? Request removal.