Repository navigation
Conversation
|
まずlinterがエラーを吐かないようにしてね |
Lapis-LJA
left a comment
There was a problem hiding this comment.
ちょっと簡単レビューなのだけど
- チャージ時間1.5秒につき~、って書いてあるけど、召喚数がEffect395のStack数だけ召喚、って扱いだから、395の付与時に1、チャージ3秒で+2で、3秒で3つ召喚できそう
- Objectがプレイヤー死亡時に消えなさそう (Effectのremoveとかで消すといいかも?)
- 何かしらでプレイヤーが待機してる弾から離れてる時に射撃すると、ワンチャンスタックが消費されるだけになりそう?
Lapis-LJA
left a comment
There was a problem hiding this comment.
長押しトリガーと長押し解除トリガーが実装されたので、ソレを使った実装にしよう、話はそれからだ
There was a problem hiding this comment.
このレビューはハルがAI自動レビューの動作テストのためにOpus5.5 Extra Highを使用してレビューを行なったものです。鵜呑みにせず、指摘を採用するかはお任せします。
指摘が 4 件あります。詳細は行コメントに書いています。
- 〔不具合〕代わりに召喚する弾に Damage・AttackType などが渡されず、命中するとエラーが表示されてダメージが0になる
- 〔不具合〕代わりの弾を動かす
tpが召喚した弾を選ぶとは限らない - 〔確認〕段階が上がるときのMP消費がなくなっている
- 〔不具合〕数が合わないときに消す弾を所有者で絞っておらず、ほかのプレイヤーの弾が消えることがある
| scoreboard players operation $UserID Temporary = @s UserID | ||
| execute as @e[type=marker,tag=1192.Idle,distance=..3] if score @s 1192.UserID = $UserID Temporary run scoreboard players add $BulletCount Temporary 1 | ||
| #数が合わないならObjectを削除する | ||
| execute if score $Stack Temporary < $BulletCount Temporary run kill @e[type=marker,tag=1192.Idle,distance=..3,sort=arbitrary,limit=1] |
There was a problem hiding this comment.
待機中の弾が Stack より多いときに消す弾を、所有者で絞り込まずに選んでいます。16行目は自分の弾だけを数えていますが、この行の kill は 1192.UserID を見ていないため、3ブロック以内にほかのプレイヤーの待機中の弾があると、そちらが消えることがあります。
この行が働くのは、例えば発射時に自分の弾が3ブロック以内になく、attack/.mcfunction で弾を発射できなかったときです。attack/.mcfunction の15〜24行目は発射できたかどうかに関係なく Stack を1減らします。また、代わりの弾を召喚するかを決める attack/.mcfunction 8行目の判定も、所有者を見ていません。自分の弾が近くになく、ほかのプレイヤーの弾が近くにあると、代わりの弾は召喚されず、Stack だけが減ります。
attack/.mcfunction の 1192.Launchable と同じように、所有者の弾にだけタグを付けてから1体を選ぶと、ほかのプレイヤーの弾を対象から外せます。
There was a problem hiding this comment.
一部が未解消です。ほかのプレイヤーの待機中の弾が消える件は解消されましたが、そのプレイヤーの弾が先に選ばれると、自分の余った弾が消えずに残ります。
36219d9 で、18行目は limit=1 で1体を選んでから、その1体が自分の弾かを確かめる形になりました。sort=arbitrary で選ばれた1体がほかのプレイヤーの弾なら、その tick は何も消しません。
検証用サーバー(Minecraft 1.20.4、このPRの head 4dd40f5)で確かめました。2人のプレイヤー D と E に Effect 396 を Stack 3 で付与して、待機中の弾を3体ずつ持たせ、1.5m離して立たせています。E を先に付与して、E の弾を entity の並びで先にしました。そのあと D の Stack を1にしています。
- D の弾は観測を終えるまでの約120 tick の間、3体のまま残りました。E の弾も3体のまま消えませんでした。
- 近くにほかの弾がないプレイヤー K で同じ操作をすると、5 tick 後には1体まで減りました。
attack/.mcfunction の11行目と同じように、自分の弾にだけタグを付けてから1体を選ぶと、ほかのプレイヤーの弾が先にあっても自分の弾を消せます。
Effect 396 の付与と Stack を1にする操作は、api:entity/mob/effect/give で代えています。
また、指摘に書いた attack/.mcfunction 8行目の判定(代わりの弾を召喚するかどうか)は変わっていません。自分の弾が近くになく、ほかのプレイヤーの待機中の弾が3ブロック以内にあると、代わりの弾は召喚されず、Stack だけが減ります。
There was a problem hiding this comment.
一部が未解消です。余った弾を消す件は解消されましたが、attack/.mcfunction 8行目の判定(代わりの弾を召喚するかどうか)は変わっていません。
ea99f93 で、18行目は自分の待機中の弾に 0396.RemovalCandidate を付けてから、その中の1体を選んで消す形になりました。
検証用サーバー(Minecraft 1.20.4、このPRの head ea99f93)で確かめました。前回と同じく、D と E に待機中の弾を3体ずつ持たせて1.5m離して立たせ、E の弾を entity の並びで先にしてから D の Stack を1にしています。
- D の弾は Stack を1にしてから5 tick 後には1体まで減り、その後も1体のままでした。E の弾は3体のまま残りました。
- 近くにほかの弾がないプレイヤー K でも、同じく5 tick 後に1体になりました。
8行目の判定は所有者を問わず、待機中の弾が足元から3ブロック以内にあるかを確かめています。上の状態から D と K の待機中の弾を消し、Stack 1 のまま撃って比べました。このとき D の近くには、E の待機中の弾が3体あります。
- D は弾が発射されないまま、Effect 396 がなくなりました。
- K は代わりの弾が発射されてから、Effect 396 がなくなりました。
8行目の判定を11行目の後に移し、自分の弾に付けた 1192.Launchable で判定すると、ほかのプレイヤーの弾が近くにあっても代わりの弾が召喚されます。この形は試していません。
# ランダムなObject 1192から1192.Idleを外す
execute as @e[type=marker,tag=1192.Idle,distance=..3] if score @s 1192.UserID = @p[tag=this] UserID run tag @s add 1192.Launchable
# なんらかの理由で自分のObjectが近くに存在しない場合、LaunchInstantlyをtrueにした状態のObjectを新しく召喚
execute unless entity @e[type=marker,tag=1192.Launchable,distance=..3] run function asset:artifact/1620.satelite_drop/attack/launch_new
execute anchored eyes positioned ^ ^-0.1 ^0.5 as @e[type=marker,tag=1192.Launchable,distance=..3,sort=arbitrary,limit=1] if score @s 1192.UserID = @p[tag=this] UserID run function asset:artifact/1620.satelite_drop/attack/launch
tag @e[type=marker,tag=1192.Launchable,distance=..3] remove 1192.LaunchableEffect 396 の付与と Stack を1にする操作は api:entity/mob/effect/give で、撃つ操作は core:handler/using_item の進捗の付与で代えています。待機中の弾は kill で消しました。
There was a problem hiding this comment.
修正を確認しました。attack/.mcfunction で代わりの弾を召喚するかの判定も解消されていて、この指摘への対応として問題ありません。
89ba2c1 で、判定は自分の弾に 1192.Launchable を付けた後に移り、1192.Launchable の有無で代わりの弾を召喚するようになりました。
検証用サーバー(Minecraft 1.20.4、このPRの head 89ba2c1)で、前回と同じ手順を流しました。
- D の近くに E の待機中の弾が3体ある状態で、自分の待機中の弾を消して撃つと、代わりの弾が発射されました。E の弾は3体のまま残りました。前回の head(ea99f93)では、D の弾は発射されませんでした。
- 余った弾を消す処理は前回と同じく、Stack を1にしてから5 tick 後には1体まで減り、E の弾は3体のまま残りました。
Lapis-LJA
left a comment
There was a problem hiding this comment.
提案:1.5秒のTCD持ちとし、3スタックになるまで長押しで生成する。生成後はTCD・MP条件を無視して発射できる。これならLCD以外は本質的には変わらず、今よりも素直な実装だと思うんだけど、どうだろう
…SB/Asset into dev/firgde_artifact1620
以下のAssetを追加