Repository navigation
Conversation
| # Tick加算 | ||
| scoreboard players add @s General.Object.Tick 1 | ||
|
|
||
| # クールダウン | ||
| execute if score @s 1160.Cooldown matches 1.. run scoreboard players remove @s 1160.Cooldown 1 | ||
| execute if score @s 1160.Cooldown matches 0 run tag @s remove 1160.Inactive | ||
|
|
||
| # 踏まれたどうかをチェック | ||
| execute unless entity @s[tag=1160.Inactive] positioned ~-0.5 ~ ~-0.5 as @e[type=#lib:living_without_player,dx=0,sort=nearest,limit=1] positioned ~ ~-0.8 ~ if entity @s[dx=0] run function asset:object/1160.electric_catfish/tick/check | ||
| execute if entity @e[tag=1160.SteppedOn,distance=..2] at @s run function asset:object/1160.electric_catfish/tick/attack | ||
|
|
||
| # 足元にブロックがないなら消す | ||
| execute if block ~ ~-0.1 ~ #lib:no_collision/ run scoreboard players set @s General.Object.Tick 1200 | ||
|
|
||
| # 消滅処理 | ||
| execute if score @s General.Object.Tick matches 1200.. run function asset:object/1160.electric_catfish/tick/kill |
There was a problem hiding this comment.
1160.Cooldownをフィールドを使った実装にするとobjectivesの追加無しで実装できそう
めんどいと思うのでやらなくてもいい
There was a problem hiding this comment.
このレビューはハルがAI自動レビューの動作テストのためにOpus5.5 Extra Highを使用してレビューを行なったものです。鵜呑みにせず、指摘を採用するかはお任せします。
指摘が 3 件あります。詳細は行コメントに書いています。
- 〔不具合〕周囲へのダメージで、modifier が補正した値を上書きしており、攻撃補正がかからない
- 〔不具合〕ブロックの端で使うとナマズがすぐ消え、MPとクールダウンだけが消費される
- 〔軽微〕踏んだ Mob を選ぶ範囲が判定と後始末の範囲とそろっておらず、大きな Mob にダメージが入らないことがある
tatuharu
left a comment
There was a problem hiding this comment.
このレビューはハルがAI自動レビューの動作テストのためにOpus5.5 Extra Highを使用してレビューを行なったものです。鵜呑みにせず、指摘を採用するかはお任せします。
指摘が 2 件あります。詳細は行コメントに書いています。
- 〔不具合〕神器を使ってもナマズが召喚の直後に消え、攻撃しない
- 〔軽微〕macro を使うようになった
tick/attackの名前が.m.mcfunctionになっていない
| execute align xz run tp @s ~0.5 ~ ~0.5 | ||
|
|
||
| # 存在する時間を設定 | ||
| execute store result score @s General.Object.Tick run data get storage asset:context this.Ticks |
There was a problem hiding this comment.
存在時間を this.Ticks から読んでいますが、神器と register が設定する Field は Tick です。そのため General.Object.Tick が0になり、ナマズは最初の tick で消えます。
c17364f で、存在時間は trigger/3.main の FieldOverride.Tick(1200)から設定し、tick ごとに1ずつ減らして0以下で消す形になりました。ところがこの行が読む this.Ticks はないので、General.Object.Tick は0になります。最初の tick に tick/.mcfunction の8行目で-1になり、22行目で tick/kill が呼ばれます。
検証用サーバー(Minecraft 1.20.4、このPRの head c17364f)で確かめました。神器を使うと MP は100から20に減りましたが、使用の1・2・20 tick後のどれにもナマズはいませんでした。trigger/3.main と同じ FieldOverride で RCON から召喚すると、召喚した直後の General.Object.Tick は0で、Field には Tick: 1200 があり、Ticks はありませんでした。召喚した直後に General.Object.Tick を1200にしたナマズでは、範囲攻撃は 4354cce で確かめたときと同じく動き、角を踏んだラヴェジャーに200、周囲のラヴェジャーに100のダメージが入りました(使用者の攻撃補正は2倍)。
| execute store result score @s General.Object.Tick run data get storage asset:context this.Ticks | |
| execute store result score @s General.Object.Tick run data get storage asset:context this.Tick |
suggestion を適用したコードは確かめていません。
| function api:damage/reset | ||
|
|
||
| # 周囲のMobにもダメージ | ||
| $execute store result storage api: Argument.Damage double $(DamageMultiplier) run data get storage asset:context this.Damage |
There was a problem hiding this comment.
c17364f で27行目と31行目に macro の行が加わりましたが、関数の名前は attack.mcfunction のままです。master で macro の行を含む関数101件のうち98件は、名前が m.mcfunction で終わります(*.m.mcfunction か m.mcfunction)。DevSpace の AGENTS.md の「共通のmcfunction規約」にも、既存の関数に macro を足すときは改名し、呼出元と IMP Doc の関数名も直すとあります。
tick/attack.m.mcfunction に改名する場合は、1行目の IMP Doc を #> asset:object/1160.electric_catfish/tick/attack.m に、tick/.mcfunction の16行目の呼び出しを tick/attack.m に直します。
There was a problem hiding this comment.
修正を確認しました。tick/attack の名前の件は解消されていて、この指摘への対応として問題ありません。
179a21d で tick/attack.m.mcfunction に改名され、1行目の IMP Doc と tick/.mcfunction の16行目の呼び出しも tick/attack.m になりました。PR の中に、改名前の tick/attack を呼ぶ箇所は残っていません。
検証用サーバー(Minecraft 1.20.4、このPRの head 179a21d)で、改名後の関数から範囲攻撃が動くことも確かめました。ラヴェジャーがナマズのいるブロックの角を踏むと、Hurt イベントのダメージは、踏んだラヴェジャーが200、周囲のラヴェジャーが100でした。
以下のAssetを追加