Skip to content

[Artifact 1464] コール:デンキナマズの作成 - #2101

Open
firgde wants to merge 29 commits into
masterfrom
dev/firgde_1464
Open

firgde wants to merge 29 commits into
masterfrom
dev/firgde_1464

Conversation

@firgde

@firgde firgde commented Aug 2, 2026

Copy link
Copy Markdown
Member

以下のAssetを追加

  • Artifact 1464 コール:デンキナマズ
  • Object 1160 デンキナマズ

Comment thread Asset/data/asset/functions/object/1160.electric_catfish/tick/attack.mcfunction Outdated
Comment thread Asset/data/asset/functions/object/1160.electric_catfish/tick/attack.mcfunction Outdated
Comment thread Asset/data/asset/functions/object/1160.electric_catfish/tick/attack.mcfunction Outdated
Comment thread Asset/data/asset/functions/object/1160.electric_catfish/tick/check.mcfunction Outdated
Comment on lines +7 to +22
# 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

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1160.Cooldownをフィールドを使った実装にするとobjectivesの追加無しで実装できそう
めんどいと思うのでやらなくてもいい

Comment thread Asset/data/asset/functions/object/1160.electric_catfish/tick/attack.mcfunction Outdated
Comment thread Asset/data/asset/functions/object/1160.electric_catfish/tick/attack.mcfunction Outdated
Comment thread Asset/data/asset/functions/object/1160.electric_catfish/tick/attack.mcfunction Outdated
Comment thread Asset/data/asset/functions/object/1160.electric_catfish/tick/.mcfunction Outdated

@tatuharu tatuharu left a comment •

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

このレビューはハルがAI自動レビューの動作テストのためにOpus5.5 Extra Highを使用してレビューを行なったものです。鵜呑みにせず、指摘を採用するかはお任せします。

指摘が 3 件あります。詳細は行コメントに書いています。

  • 〔不具合〕周囲へのダメージで、modifier が補正した値を上書きしており、攻撃補正がかからない
  • 〔不具合〕ブロックの端で使うとナマズがすぐ消え、MPとクールダウンだけが消費される
  • 〔軽微〕踏んだ Mob を選ぶ範囲が判定と後始末の範囲とそろっておらず、大きな Mob にダメージが入らないことがある

Comment thread Asset/data/asset/functions/object/1160.electric_catfish/tick/attack.mcfunction Outdated
Comment thread Asset/data/asset/functions/object/1160.electric_catfish/tick/attack.mcfunction Outdated

@tatuharu tatuharu left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

このレビューはハルが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

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

存在時間を 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倍)。

Suggested change
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 を適用したコードは確かめていません。

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

修正を確認しました。ナマズが召喚の直後に消える件は解消されていて、この指摘への対応として問題ありません。

3a95e0f で、11行目は this.Tick から存在時間を読むようになりました。

検証用サーバー(Minecraft 1.20.4、このPRの head 179a21d)で、前回と同じ手順で確かめました。神器を使うとナマズが残り、General.Object.Tick は使用の1 tick後に1199、20 tick後に1180でした。

function api:damage/reset

# 周囲のMobにもダメージ
$execute store result storage api: Argument.Damage double $(DamageMultiplier) run data get storage asset:context this.Damage

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 に直します。

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

修正を確認しました。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でした。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants