Skip to content

mobの仕様

Ponpon edited this page May 5, 2023 · 30 revisions

目次

ステータス

行動AI

Call類

指定方法

AI.Death,AI.Time,AI.Damage,AI.Initial,AI.Attack,AI.Passenger.Call,AI.Block,AI.Tick,AI.Turn[].Skill[].Callで指定する。
リスト形式になっており、Executeタグでどのように実行させるかを変えられる。10個までスキルを登録できる。

root #List
└ {
  ├ Name
  ├ Condition #List
  │ └ {
  │   ├ Name
  │   ├ Inverse
  │   ├ Logic
  │   ├ (Global)
  │   └ <条件データ>
  │     └ <子タグ>
  ├ Settings #List
  │ └ {
  │   ├ Name
  │   ├ (Global)
  │   └ <設定データ>
  ├ Execute
  ├ (Position)
  ├ (Element)
  ├ (CallOnExit)
  └ <スキルデータ>
     └ <子タグ>
       └ <孫タグ>

Name

必須。スキル名を指定する。
リストの中に一つでもあればCallが実行される。


Condition

任意。スキルを実行する条件を指定する。
以下子タグの説明。

Name

必須。条件名を指定する。

Inverse

任意。bool値を指定する。
trueのとき、条件が失敗するとスキルを発動する。

Logic

任意。OR,ANDの2つが有効。複数個の条件があった場合のOR,AND指定をする。
未指定の場合、ANDで処理される。

Global

任意。Call[0].Condition[0]に指定する。trueにすると、そのconditionの結果が、他のCallにも反映される。

<条件データ>

必須。条件判定に使用するデータを指定する。
以上Conditionタグの子タグの説明。


Settings

任意。CallSkillの実行に関する設定集を指定する。
以下子タグの説明。

Name

必須。設定名を指定する。

Global

任意。Call[0].Settings[0]に指定する。trueにすると、そのsettingsで設定した実行基準が、他のCallにも反映される。

<設定データ>

必須。CallSkillを実行するための設定に使用するデータを指定する。


Execute

Call[0]のスキルにのみ使用する。
未指定の場合、リストの中のスキルを[0]から順番に同時に実行する。
"Random"の場合、リストの中のスキルをランダムに1つ選択し実行する。
"If"の場合、リストの0番目から順番に実行チェックをして、成功したらそれ1つのみを実行する。スキルが失敗したときはmob_data: Successを0bにして失敗判定にする。

Position

AI.Attackのトリガーにのみ使える。
Call[0]のスキルにのみ使用する。
未指定の場合、攻撃を受けたプレイヤーの位置を実行位置にする。
"Source"の場合、近接なら攻撃を与えたMobが実行位置に、遠距離なら投てき物を召喚したMobが実行位置になる。

Element

List型 Fire Ice Lightning Light Darkのみ指定可能。
Physicalは使用不可。
AI.Damageのトリガーにのみ使える。
Call[0]のスキルにのみ使用する。
未指定の場合、属性の検知はしない。
Fire Iceを記述した場合、炎属性、氷属性の攻撃をMobが受けた場合、スキルを実行する。

CallOnExit

Turnで実行するスキルに設定する。
TurnがExitするときに、そのTurnのSkill[0].Call[0]CallOnExitがある場合、動作する。
trueの場合、TurnがExitするときにIntervalが0になったときと同じようにスキルが実行される。
これにより、スキルのインターバルはリセットされ、次回Turnからは次のスキルが実行するようになる。

<スキルデータ>

実行するスキルのデータを追加する。

<子タグ>

スキルデータの下のデータ。

<孫タグ>

子タグの下のデータ。

Mobが実行できるスキルの詳細設定一覧

おさらいとまとめ

{Execute:"①",Name:"②",③,Condition:[{④,⑤}]},{Name:"②",③,Condition:[{④,⑤}],Settings:[{⑥,⑦}]}

Execute 任意。必ず1つ目のNameに記述。

スキル名 ここの記載によって③の項目が変わる

スキルデータ

条件データ 任意。Condition内の指定。

Inverse 任意。④が必須。④の条件失敗した場合に発動。Logicも同様任意ではあるが書かない場合ANDになる。

設定名 CallSkillに対してどのような設定をするかの指定

設定データ 設定に関する指定

指定例

Callに記述する例をまとめる。
シートに直接コピペすることができます。

Condition,CallSkill,CallSettings全部乗せ

{Name:"ChangeTurn",Random:true,Condition:[{Name:"HasTarget",Logic:"OR",Target:{Look:"player",Radius:32},Inverse:true},{Name:"RandomChance",Chance:0.45d}]},{Name:"Kill",Condition:[{Name:"RandomChance",Chance:0.45d}]},{Name:"Spawn",SpawnEntities:[[{Tags:[DebugRoom,Ground,Blow,Sinensama,SpawnParticles],Level:10}]],Settings:[{Name:"Direction",Target:{Look:"Self"},Direction:[0f,0f],Speed:1d}]}
{Execute:"Random",Name:"Step",Condition:[{Name:"HasTarget",Logic:"AND",Target:{Look:"player",Radius:16}},{Name:"RandomChance",Chance:0.75d,Inverse:true}],Target:{Look:"player",Radius:16},Speed:0.08d,SpeedRange:1.2d},{Name:"Spawn",SpawnEntities:[[{Tags:[Global,Other,Blow,Bullet,LatticeBullet],Level:1}]],Condition:[{Name:"RandomChance",Chance:0.45d}],Settings:[{Name:"Direction",Direction:[0.0f,-90.0f],Speed:0.8d}]},{Name:"MergeNBT",NBT:{CutomName:'{"translate":"もう怒ったぞー!"}',CustomNameVisible:true}}

CallDamageに指定

{Element:[Fire,Light],Name:"Teleport",Settings:[{Direction:[0f,-90f],DirectionRange:[180.0f,180.0f],Absolute:{Horizontal:true,Vertical:true},Speed:4.5d,SpeedRange:7.5}]}

Execute:"If"の例

[{Execute:"If",Name:"Message",Message:'{"translate":"コンディションがないので必ずこれが実行"}'},{Name:"Message",Message:'{"translate":"実行されない"}'}]
[{Execute:"If",Condition:[{Name:"HasTarget",Target:{Look:"player",Radius:8f}}],Name:"Message",Message:'{"text":"プレイヤーがいる"}'},{Name:"Message",Message:'{"text":"プレイヤーがいない"}'}]
[{Execute:"If",Condition:[{Name:"RandomChance",Chance:0.33}],Name:"Message",Message:'{"text":"A 33%"}'},{Condition:[{Name:"RandomChance",Chance:0.33}],Name:"Message",Message:'{"text":"B 33%"}'},{Name:"Message",Message:'{"text":"C 33%"}'}]

Mob情報のストレージ管理

CustomNameへのレベル表示

CustomNameに自身の名前 Lv10のようにレベルが表示される。
透明化の効果を持っているモブは表示されない(仕様)。
反転の名前(Grummなど)やレベルを表示させたくない場合は、シートのベース列のTagsにHideLevelタグを追加する。

カスタムDeathLootTable

死亡時に落とすアイテムを設定する。複数設定でき、それぞれに確率と個数を設定することができる。
HasLootTableタグを持っている場合、死亡処理で実行される。

LootTable #List
└ {
  ├ Loot
  ├ Item
  │ ├ id
  │ ├ tag
  │ └ Count
  ├ Chance
  ├ Count
  └ CountRange

Loot

Itemがなければ必須。ルートテーブルのパスを指定する。


Item

Lootがなければ必須。アイテム情報を指定する。
以下子タグの説明

id

必須。アイテムのIDを指定する。

tag

任意。アイテムのNBTを指定する。

Count

任意。アイテムの個数を指定する。無ければ1つになる。

以上Itemタグの子タグの説明。


Chance

必須。double型。0~1の範囲で確率を指定する。
0.0001単位で指定。

Count

必須。int型。ルートテーブル排出の回数を指定する。
Lootの場合、ここでの回数分ルートテーブルが抽選される。
Itemの場合、これは無視される。

CountRange

任意。int型。指定することで、Countの結果をCount ~ CountRangeにすることができる。
CountとCountRangeの数値の合計が99を超えないようにする。

村人の交易情報更新

話しかけるだけで村人の交易内容を新しいものへ更新するシステム。
以下の2つを満たした村人にのみ更新処理が実行される。

  1. タグUpdateOffersの付与
  2. ArmorItems[0].tag.SpawnTagsの指定

2番のアイテムに関しては

{id:"minecraft:stick",Count:1b,tag:{CustomModelData:1,SpawnTags:[]}}

を使うとよい。SpawnTagsには更新する交易データが入っているMobへのパスを指定する。(通常その村人自身へのパスを指定する。)

アナライズログ

共通スキルのアナライズを使用してMobの情報を得るときに、Mobが考えていることやMobからのメッセージを表示するシステム。

  1. タグAnalyseLogの付与
  2. MobのOhMyDatの"ステータス".AnalyseLogにテキストを指定

mobの被ダメージ量表示

製作手引き
重要
仕様
定義
便利なページ
Clone this wiki locally