Repository navigation
Conversation
…into dev/IWBTK_1413
…into dev/IWBTK_1413
Lapis-LJA
left a comment
There was a problem hiding this comment.
魔法火で作ってる、って話が合ったから物理火属性になってるのは合ってる?
Asset/data/asset/tags/functions/artifact/register.jsonに登録されていないため、シャードのプールに登録されてなさそう
- AttackType を Physical から Magic に変更(Lore と Damage API の両方) - tags/functions/artifact/register.json に 1413 を登録 - 火柱の攻撃対象を tag=Enemy に限定し、不要な sort=nearest を削除 - Lore の AttackRange を実際の判定範囲 4 に合わせる Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 最も近い敵を中心(139.MainTarget)とし、中心には50、周囲の敵には25-50の乱数ダメージ - 周囲の敵への延焼演出を追加し、中心の火柱の演出を控えめに調整 - Lore とフレーバーテキストを新しい挙動に合わせて更新 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
attack から参照するため trigger 配下全体で有効な宣言にする Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1413 の tag 登録行を先頭から ID の近い位置へ移し、今後の競合を避ける Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
tatuharu
left a comment
There was a problem hiding this comment.
このレビューはハルがAI自動レビューの動作テストのためにOpus5.5 Extra Highを使用してレビューを行なったものです。鵜呑みにせず、指摘を採用するかはお任せします。
指摘が 1 件あります。詳細は行コメントに書いています。
- 〔不具合〕追加当たり判定を複数持つ敵には、延焼ダメージが判定の数だけ重ねて入る
| # 狙った敵へのダメージ | ||
| data modify storage api: Argument.Damage set value 50f | ||
| data modify storage api: Argument.AttackType set value "Magic" | ||
| data modify storage api: Argument.ElementType set value "Fire" | ||
| function api:damage/modifier | ||
| execute as @e[type=#lib:living_without_player,tag=139.MainTarget,distance=..4,limit=1] run function api:damage/ | ||
| function api:damage/reset | ||
|
|
||
| # 周囲の敵へのダメージ | ||
| execute as @e[type=#lib:living_without_player,tag=Enemy,tag=!139.MainTarget,tag=!Uninterferable,distance=..4] run function asset:artifact/1413.lighter/trigger/splash_damage |
There was a problem hiding this comment.
黒龍(0410)のように追加当たり判定(ExtendedCollision)を複数持つ敵に火柱を当てると、中心の敵から4m以内にある同じ敵の別の追加当たり判定にも、それぞれ延焼ダメージが入ります。本体は中心の敵への50に加えて、4m以内にある別の追加当たり判定の数だけ延焼のダメージ(25〜50)を重ねて受けます。
api:damage/ は、追加当たり判定から本体への転送を、api:damage/reset を呼ぶまでは本体ごとに1回に抑えます。single_damage_session(SDS)を開いている間は、reset を呼んでもこの記録が残ります。このPRでは中心の敵へのダメージのあと(23行目)と延焼の対象ごと(splash_damage.mcfunction の18行目)に reset を呼び、SDS も開いていないため、同じ本体への転送が延焼の対象ごとに通ります。黒龍・焔竜・闇竜(0410〜0412)は、AJ の locator に Enemy と ExtendedCollision を付けています。対象ごとにダメージを抽選する 1258 黎明の刃と 1632 フォトンバーストは、対象の処理全体を SDS で囲んでいます。
検証用サーバー(Minecraft 1.20.4、このPRの head a2ab19b)で確かめました。同じ本体へ転送する追加当たり判定を3つ(中心と、その左右3m)に並べて使うと、3回とも本体の MobEvents.Hurt が3件増えました(中心の敵への50と、延焼の36・31など)。同じ範囲に置いたハスクは毎回1件で、左右の2つを別の本体へ転送させた対照(1回)では各本体が1件ずつでした。attack を RCON から呼んだ場合は、SDS を開かないと3件、SDS の open と close で挟むと2回とも中心の敵への50の1件だけになりました。黒龍そのものは召喚せず、本体には黒龍の本体と同じタグを付けた slime を、追加当たり判定には asset:mob/0410.heiloang/init/locator を実行した slime を使い、右クリックは ClickCarrotEvent を1にして代えています。suggestion を適用したファイルでは試していません。
中心の敵へのダメージと延焼をまとめて SDS で囲むと、追加当たり判定を通したダメージは同じ本体へ最初の1回だけ入ります。
| # 狙った敵へのダメージ | |
| data modify storage api: Argument.Damage set value 50f | |
| data modify storage api: Argument.AttackType set value "Magic" | |
| data modify storage api: Argument.ElementType set value "Fire" | |
| function api:damage/modifier | |
| execute as @e[type=#lib:living_without_player,tag=139.MainTarget,distance=..4,limit=1] run function api:damage/ | |
| function api:damage/reset | |
| # 周囲の敵へのダメージ | |
| execute as @e[type=#lib:living_without_player,tag=Enemy,tag=!139.MainTarget,tag=!Uninterferable,distance=..4] run function asset:artifact/1413.lighter/trigger/splash_damage | |
| # 追加当たり判定から同じ本体へ重ねてダメージを与えないよう、セッションを開く | |
| function api:damage/single_damage_session/open | |
| # 狙った敵へのダメージ | |
| data modify storage api: Argument.Damage set value 50f | |
| data modify storage api: Argument.AttackType set value "Magic" | |
| data modify storage api: Argument.ElementType set value "Fire" | |
| function api:damage/modifier | |
| execute as @e[type=#lib:living_without_player,tag=139.MainTarget,distance=..4,limit=1] run function api:damage/ | |
| function api:damage/reset | |
| # 周囲の敵へのダメージ | |
| execute as @e[type=#lib:living_without_player,tag=Enemy,tag=!139.MainTarget,tag=!Uninterferable,distance=..4] run function asset:artifact/1413.lighter/trigger/splash_damage | |
| function api:damage/single_damage_session/close |
There was a problem hiding this comment.
修正を確認しました。追加当たり判定を複数持つ敵に延焼ダメージが判定の数だけ重ねて入る件は解消されていて、この指摘への対応として問題ありません。
7d0ea4c で、attack.mcfunction は中心の敵へのダメージの前(18行目)で single_damage_session を開き、延焼の処理のあと(30行目)で閉じるようになりました。suggestion と同じ形です。
検証用サーバー(Minecraft 1.20.4、このPRの head 7d0ea4c)で、前回と同じ手順で確かめました。同じ本体へ転送する追加当たり判定を3つ並べ、右クリックの経路で神器を3回使うと、本体の MobEvents.Hurt は毎回1件(中心の敵への50)だけ増えました。a2ab19b では3件でした。同じ範囲のハスクには毎回1件ずつ延焼が入り、左右の2つを別の本体へ転送させた対照では各本体に1件ずつ入りました。attack を RCON から呼んだ場合も本体は1件で、呼んだあとにセッションは閉じていました。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
| function api:damage/reset | ||
|
|
||
| # 周囲の敵へのダメージ | ||
| execute as @e[type=#lib:living_without_player,tag=Enemy,tag=!139.MainTarget,tag=!Uninterferable,distance=..4] run function asset:artifact/1413.lighter/trigger/splash_damage |
There was a problem hiding this comment.
こうすれば、splash_damage.mcfでat @sいらなさそう
| execute as @e[type=#lib:living_without_player,tag=Enemy,tag=!139.MainTarget,tag=!Uninterferable,distance=..4] run function asset:artifact/1413.lighter/trigger/splash_damage | |
| execute as @e[type=#lib:living_without_player,tag=Enemy,tag=!139.MainTarget,tag=!Uninterferable,distance=..4] at @s run function asset:artifact/1413.lighter/trigger/splash_damage |
| execute at @s run particle small_flame ~ ~0.8 ~ 0.25 0.4 0.25 0.02 12 normal @a | ||
| execute at @s run particle smoke ~ ~1.2 ~ 0.15 0.2 0.15 0.01 4 normal @a | ||
| execute at @s run playsound block.fire.ambient player @a ~ ~ ~ 0.4 1.4 0 |
There was a problem hiding this comment.
attack.mcfでat @sつければこっちはいらなさそう
あと、敵個別にplaysoundがあると、敵が密集してた時にめっっっっっっちゃうるさそう
| execute at @s run particle small_flame ~ ~0.8 ~ 0.25 0.4 0.25 0.02 12 normal @a | |
| execute at @s run particle smoke ~ ~1.2 ~ 0.15 0.2 0.15 0.01 4 normal @a | |
| execute at @s run playsound block.fire.ambient player @a ~ ~ ~ 0.4 1.4 0 | |
| particle small_flame ~ ~0.8 ~ 0.25 0.4 0.25 0.02 12 normal @a | |
| particle smoke ~ ~1.2 ~ 0.15 0.2 0.15 0.01 4 normal @a | |
| playsound block.fire.ambient player @a ~ ~ ~ 0.4 1.4 0 |
| # 前方に敵が居た場合、最も近い敵を中心に火柱を発生させる | ||
| execute at @s run tag @e[type=#lib:living_without_player,tag=Target,distance=..10,sort=nearest,limit=1] add 139.MainTarget | ||
| execute at @e[type=#lib:living_without_player,tag=139.MainTarget,distance=..10,limit=1] run function asset:artifact/1413.lighter/trigger/attack |
There was a problem hiding this comment.
実行者をこうしてしまえば、MainTarget自体が要らなくなりそう
※attackの先の処理も適宜変えてね
| # 前方に敵が居た場合、最も近い敵を中心に火柱を発生させる | |
| execute at @s run tag @e[type=#lib:living_without_player,tag=Target,distance=..10,sort=nearest,limit=1] add 139.MainTarget | |
| execute at @e[type=#lib:living_without_player,tag=139.MainTarget,distance=..10,limit=1] run function asset:artifact/1413.lighter/trigger/attack | |
| # 前方に敵が居た場合、最も近い敵を中心に火柱を発生させる | |
| execute as @e[type=#lib:living_without_player,tag=Target,distance=..10,sort=nearest,limit=1] run function asset:artifact/1413.lighter/trigger/attack |
一通りの流れ確認