Skip to content

[Artifact 1453] 霜華の弓の作成#2056

Open
ogachu0331 wants to merge 6 commits into
masterfrom
dev/ogachu_artifact1453
Open

[Artifact 1453] 霜華の弓の作成#2056
ogachu0331 wants to merge 6 commits into
masterfrom
dev/ogachu_artifact1453

Conversation

@ogachu0331

Copy link
Copy Markdown

霜華の弓とそのobjectの作成

@ogachu0331 ogachu0331 requested review from ChenCMD and Lapis-LJA and removed request for ChenCMD June 10, 2026 01:39
@ogachu0331 ogachu0331 changed the title [Artifact 1453] 霜華の弓 [Artifact 1453] 霜華の弓の作成 Jun 10, 2026

@EllaCoat EllaCoat 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.

まぁ大雑把に見ただけだから、まだありそうだけど、取り敢えず軽く見た感じの指摘ねー
[NITS] とか [MUST] とかの意味は調べたら出てくるので、調べて()

Comment on lines +9 to +10
scoreboard objectives add Ffb.Charge dummy
scoreboard objectives add Ffb.LatestChargeTick dummy

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.

[NITS]
神器用スコアに関してだけど、可能であれば「神器 ID」を冒頭につけてもらえると良いかも。
神器 ID : 1453 (36進数の場合 14D) なので……

Suggested change
scoreboard objectives add Ffb.Charge dummy
scoreboard objectives add Ffb.LatestChargeTick dummy
scoreboard objectives add 14D.Charge dummy
scoreboard objectives add 14D.LatestChargeTick dummy

こうだと、この神器のスコアであることがひと目で分かるよー。

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

修正しました!

Comment on lines +10 to +11
# 基本的な使用時の処理(MP消費や使用回数の処理など)を行う
function asset:artifact/common/use/mainhand

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.

[MUST]
コピペミスだとは思うけど、
function asset:artifact/common/use/mainhand が 2 回起動してしまっているから、なにかしら理由がないなら消して欲しいー
(なにか理由があるなら、それはそれで返信お願いー)

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

完全にミスですね
修正しました

@@ -0,0 +1,10 @@
#> asset:artifact/1453.frost_flake_bow/using_item/0.load

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.

[MUST]
同じスコアを 2 重登録する必要はなさそう。
多分 Linter のエラーを消すためだと思うけど、`0.load' はテンプレート経由で作成しない限り、load 時に呼ばれないから気をつけて。

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

削除しました

# @within tag/function asset:artifact/load

#> 定義類はここに
# @within function asset:artifact/1453.frost_flake_bow/trigger/**

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.

[IMO]
ここをこうすると、Linter がエラーを消してくれるよー

Suggested change
# @within function asset:artifact/1453.frost_flake_bow/trigger/**
# @within function asset:artifact/1453.frost_flake_bow/**

元々は trigger 以下のファイル全部でスコアを使って良いよってルールなんだけど、
今回は using_item でも使いたいだろうから、こうすると良いと思う。

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

やり方わからなかったので助かります
修正しました!

Comment on lines +17 to +18
# チャージ段階をFieldOverrideへ
data modify storage api: Argument.FieldOverride.Charge set from storage api: Return.Effect.Stack

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.

[WANT]
多分、FieldOverride.Charge は使われていない……気がするんだけど、どうだろう?
使わなさそうなら、消しちゃっても良いかな。

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

使わないので消しました

execute if score @s Ffb.Charge matches 20 anchored eyes positioned ^ ^ ^1 run function asset:artifact/1453.frost_flake_bow/using_item/vfx/charge1

execute if score @s Ffb.Charge matches 30 run playsound ui.toast.in player @s ~ ~ ~ 1 1.3
execute if score @s Ffb.Charge matches 34 run playsound entity.experience_orb.pickup player @s ~ ~ ~ 0.1 2

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.

[Q]
うちのラビリア(Claude)が気になったらしいので質問。
Charge のスコアが 30 で二段階目チャージが終了しているという認識なんだけど
それ以降の演出として用意している感じで OK ?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

だいたいそんな感じですね
(チャージした後も引いてるプレイヤーにチャージ終わったよ感のある音を鳴らしたかった)
再生を4tick遅らせてるのはこうすると前の音(ui.toast.in)といい感じに合うからで、演出以上の
理由は特にないです。

# 神器の発動条件 (TextComponentString) (オプション)
data modify storage asset:artifact Condition set value '{"text":"最大まで引き絞る"}'
# 攻撃に関する情報 -Damage量 (literal[]/literal) Wikiを参照 (オプション)
data modify storage asset:artifact AttackInfo.Damage set value "800-1120 / 500-700"

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.

[Q]
これはどっちが 1 段目でどっちが 2 段目かな?
仮に 1 段目が右だとしたら、既存神器の慣習として、左に変えたほうが良いかもしれない
(そもそもとして、こういう場合の表記が難しいのも分かる)

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

1段目が右だったので変えました!

@EllaCoat EllaCoat 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.

もう一度レビューして洗い出し直したので、再度直してー

# 5. 計算結果をdata(ストレージ)に戻す
# ※取得時に100倍、倍率計算で100倍のスケールになっているため、戻す時に 0.0001 (1万分の1) を掛けて元のスケールに戻します
execute store result storage asset:context this.Damage double 0.0001 run scoreboard players get $value Temporary
scoreboard players reset * Temporary

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.

[MUST]
これは絶対にやらないで!(強い断言)
この世に存在するスコアを持ちうる存在の Temporary スコアを全てリセットする
=> この世に存在するエンティティ全員を対象として実行するから非常に重い!

あと、コアデータパックの方に Temporary を tick を跨いで使っているものもあるから、普通にシステムが破壊されちゃいますわ~

なのでリセットする場合は、以下のような明示式にしましょう。

    scoreboard players reset $multiplier Temporary
    scoreboard players reset $value Temporary

(余談:私は下の方が好きだけど、同じスコアホルダーが何処かで使われる可能性もあるので、上の方が安全ではある。よく分からないなら、上で OK)

    scoreboard players reset $multiplier
    scoreboard players reset $value

# 接頭語として ID を使ったりすると、スコアホルダー被りが発生しづらくて個人的には好き
# 以下は例、AU はいわゆる 36 進数表記
    scoreboard players reset $AU.Temp

Comment on lines +9 to +11
scoreboard players set $4 Temporary 4
scoreboard players set $100 Temporary 100

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.

[WANT]
コアデータパックの方に既に Const スコアで定数スコアが用意されているので、それを使ってー
https://github.com/ProjectTSB/TheSkyBlessing/blob/master/TheSkyBlessing/data/core/functions/define_const.mcfunction

後、面倒かもしれないけど $multiplier とかのスコアホルダーは基本的に、定数スコアでもない限り declare しておくと良いよー

#> Private
# @private
    #declare score_holder $multiplier
    #declare score_holder $value

# 5. 計算結果をdata(ストレージ)に戻す
# ※取得時に100倍、倍率計算で100倍のスケールになっているため、戻す時に 0.0001 (1万分の1) を掛けて元のスケールに戻します
execute store result storage asset:context this.BloomDamage double 0.0001 run scoreboard players get $value Temporary
scoreboard players reset * Temporary

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.

[MUST]
別箇所で指摘したのと同様の理由

Comment on lines +57 to +58
execute store result score $UserID Temporary run data get storage asset:context this.UserID
execute as @a if score @s UserID = $UserID Temporary run function api:damage/modifier

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.

[WANT]
想定 $UserID Temporary のリセット忘れ
$UserID Temporary 自体はそこまで使われていないけど、スコアホルダー被りによるバグが若干怖い)

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.

2 participants