diff --git a/Asset/data/asset/functions/artifact/1555.shift_change/give/1.trigger.mcfunction b/Asset/data/asset/functions/artifact/1555.shift_change/give/1.trigger.mcfunction new file mode 100644 index 0000000000..2d8faa0327 --- /dev/null +++ b/Asset/data/asset/functions/artifact/1555.shift_change/give/1.trigger.mcfunction @@ -0,0 +1,7 @@ +#> asset:artifact/1555.shift_change/give/1.trigger +# +# 神器の取得処理の呼び出し時に実行されるfunction +# +# @within tag/function asset:artifact/give + +execute if data storage asset:context {id:1555} run function asset:artifact/1555.shift_change/give/2.give \ No newline at end of file diff --git a/Asset/data/asset/functions/artifact/1555.shift_change/give/2.give.mcfunction b/Asset/data/asset/functions/artifact/1555.shift_change/give/2.give.mcfunction new file mode 100644 index 0000000000..e03e0a2947 --- /dev/null +++ b/Asset/data/asset/functions/artifact/1555.shift_change/give/2.give.mcfunction @@ -0,0 +1,67 @@ +#> asset:artifact/1555.shift_change/give/2.give +# +# 神器の作成部 ここでID等を定義する +# +# @user +# @within function asset:artifact/1555.shift_change/give/1.trigger + +# 神器の説明や消費MPなどをここで設定する。 +# 最後にasset:artifact/common/giveを実行することで入手可能。 + +# 神器のID (int) スプレッドシートの値を入れる + data modify storage asset:artifact ID set value 1555 +# 神器のベースアイテム + data modify storage asset:artifact Item set value "minecraft:carrot_on_a_stick" +# 神器の名前 (TextComponentString) + data modify storage asset:artifact Name set value '[{"text":"シフト","color":"#0E82E8","bold":true},{"text":"チェンジ","color":"#C9A410"}]' + data modify storage asset:artifact Lore set value ['{"text":"サーバー内のランダムな味方1名と位置を入れ替える","color":"white"}'] +# 消費アイテム ({Item: TextComponent, Count: int, Extra?: TextComponent}) (オプション) + # data modify storage asset:artifact ConsumeItem.Item set value '{"translate":"item.minecraft.stick"}' + # data modify storage asset:artifact ConsumeItem.Count set value 1 + # data modify storage asset:artifact ConsumeItem.Extra set value +# 使用回数 (int) (オプション) + data modify storage asset:artifact RemainingCount set value 5 +# 神器を発動できるスロット (string) Wikiを参照 + data modify storage asset:artifact Slot set value "mainhand" +# 神器のトリガー (string) Wikiを参照 + data modify storage asset:artifact Trigger set value "onClick" +# 神器の発動条件 (TextComponentString) (オプション) + # data modify storage asset:artifact Condition set value +# 攻撃に関する情報 -Damage量 (literal[]/literal) Wikiを参照 (オプション) + # data modify storage asset:artifact AttackInfo.Damage set value [0,0] +# 攻撃に関する情報 -攻撃タイプ (string[]) Wikiを参照 (オプション) + # data modify storage asset:artifact AttackInfo.AttackType set value [Physical,Magic] +# 攻撃に関する情報 -攻撃属性 (string[]) Wikiを参照 (オプション) + # data modify storage asset:artifact AttackInfo.ElementType set value [Fire,Water,Thunder,None] +# 攻撃に関する情報 -防御無視 (boolean) Wikiを参照 (オプション) + # data modify storage asset:artifact AttackInfo.BypassResist set value +# 攻撃に関する情報 -範囲攻撃 (string) Wikiを参照 (オプション) + # data modify storage asset:artifact AttackInfo.IsRangeAttack set value +# 攻撃に関する情報 -攻撃範囲 (literal) Wikiを参照 (オプション) + # data modify storage asset:artifact AttackInfo.AttackRange set value +# MP消費量 (int) + data modify storage asset:artifact MPCost set value 30 +# MP必要量 (int) (オプション) + # data modify storage asset:artifact MPRequire set value +# MP回復量 (int) + # data modify storage asset:artifact MPHealWhenHit set value +# 神器のクールダウン (int) (オプション) + data modify storage asset:artifact LocalCooldown set value 200 +# 種別クールダウン ({Type: string, Duration: int}) (オプション) + # data modify storage asset:artifact TypeCooldown.Type set value + # data modify storage asset:artifact TypeCooldown.Duration set value +# グローバルクールダウン (int) (オプション) + # data modify storage asset:artifact SpecialCooldown set value +# クールダウンによる使用不可のメッセージを非表示にするか否か (boolean) (オプション) + # data modify storage asset:artifact DisableCooldownMessage set value +# MP不足による使用不可のメッセージを非表示にするか否か (boolean) (オプション) + # data modify storage asset:artifact DisableMPMessage set value +# 破壊時の音を鳴らさないかどうか (boolean) (オプション) + # data modify storage asset:artifact DisableBreakSound set value +# 扱える神 (string[]) Wikiを参照 + data modify storage asset:artifact CanUsedGod set value "ALL" +# カスタムNBT (NBTCompound) 追加で指定したいNBT (オプション) + # data modify storage asset:artifact CustomNBT set value {} + +# 神器の入手用function + function asset:artifact/common/give diff --git a/Asset/data/asset/functions/artifact/1555.shift_change/register.mcfunction b/Asset/data/asset/functions/artifact/1555.shift_change/register.mcfunction new file mode 100644 index 0000000000..8379e670cc --- /dev/null +++ b/Asset/data/asset/functions/artifact/1555.shift_change/register.mcfunction @@ -0,0 +1,7 @@ +#> asset:artifact/1555.shift_change/register +# +# 神器プールへの登録処理 +# +# @within tag/function asset:artifact/register + +data modify storage asset:artifact RarityRegistry[2] append value [1555] \ No newline at end of file diff --git a/Asset/data/asset/functions/artifact/1555.shift_change/trigger/1.trigger.mcfunction b/Asset/data/asset/functions/artifact/1555.shift_change/trigger/1.trigger.mcfunction new file mode 100644 index 0000000000..26e2ace8f4 --- /dev/null +++ b/Asset/data/asset/functions/artifact/1555.shift_change/trigger/1.trigger.mcfunction @@ -0,0 +1,8 @@ +#> asset:artifact/1555.shift_change/trigger/1.trigger +# +# 指定したイベントタイミングで実行されるfunction +# +# @within tag/function asset:artifact/** + +# storage asset:idのmainhandに装備している神器のIDが入っているので比較し、~/2.check_condition.mcfunctionを実行する + execute if data storage asset:context id{mainhand:1555} run function asset:artifact/1555.shift_change/trigger/2.check_condition \ No newline at end of file diff --git a/Asset/data/asset/functions/artifact/1555.shift_change/trigger/2.check_condition.mcfunction b/Asset/data/asset/functions/artifact/1555.shift_change/trigger/2.check_condition.mcfunction new file mode 100644 index 0000000000..a53c98e2b7 --- /dev/null +++ b/Asset/data/asset/functions/artifact/1555.shift_change/trigger/2.check_condition.mcfunction @@ -0,0 +1,21 @@ +#> asset:artifact/1555.shift_change/trigger/2.check_condition +# +# 神器の発動条件をチェックします +# +# @within function asset:artifact/1555.shift_change/trigger/1.trigger + +# 神器の基本的な条件の確認を行うfunction、成功している場合CanUsedタグが付く + function asset:artifact/common/check_condition/mainhand + +# 他にアイテム等確認する場合はここに書く +# 自身がワープ可能か + execute if entity @s[tag=CanUsed] if entity @s[predicate=lib:is_ban_tp_area] run tellraw @s {"text":"不思議な力が転送を妨害した。","color":"dark_aqua"} + execute if entity @s[predicate=lib:is_ban_tp_area] run tag @s remove CanUsed +# そもそも他人がいるか + execute if entity @s[tag=CanUsed] unless entity @a[tag=!this] run return run tellraw @s [{"text": "おや?このサーバーにはあなたしかいないようですよ?","color": "gray"}] + execute unless entity @a[tag=!this] run tag @s remove CanUsed +# 入れ替え可能なプレイヤーがいるか + execute if entity @s[tag=CanUsed] unless entity @a[tag=!this,predicate=!lib:is_ban_tp_area] run return run tellraw @s [{"text": "皆さんは今立て込んだ状況のようです...時間をおいて再度お試しください","color": "gray"}] + execute unless entity @a[tag=!this,predicate=!lib:is_ban_tp_area] run tag @s remove CanUsed +# CanUsedタグをチェックして3.main.mcfunctionを実行する + execute if entity @s[tag=CanUsed] run function asset:artifact/1555.shift_change/trigger/3.main diff --git a/Asset/data/asset/functions/artifact/1555.shift_change/trigger/3.main.mcfunction b/Asset/data/asset/functions/artifact/1555.shift_change/trigger/3.main.mcfunction new file mode 100644 index 0000000000..3c82e0dbd0 --- /dev/null +++ b/Asset/data/asset/functions/artifact/1555.shift_change/trigger/3.main.mcfunction @@ -0,0 +1,47 @@ +#> asset:artifact/1555.shift_change/trigger/3.main +# +# 神器のメイン処理部 +# +# @within function asset:artifact/1555.shift_change/trigger/2.check_condition +#> private +# @private + #declare tag 177.Changed + #declare tag 177.ChangeMarker + + +# 基本的な使用時の処理(MP消費や使用回数の処理など)を行う + function asset:artifact/common/use/mainhand + +# ここから先は神器側の効果の処理を書く +# 念のためtagとmarkerを削除 + tag @a remove 177.Changed + kill @e[type=marker,tag=177.ChangeMarker] + +# 入れ替え対象を決定 + tag @r[tag=!this,predicate=!lib:is_ban_tp_area] add 177.Changed + +# 対象の場所にマーカー設置 + execute at @a[tag=177.Changed,limit=1] run summon marker ~ ~ ~ {Tags:["177.ChangeMarker"]} + +# マーカー自身の向きを、対象のプレイヤーの向きと同期する + execute as @e[type=marker,tag=177.ChangeMarker,limit=1] at @s rotated as @a[tag=177.Changed,limit=1] run tp @s ~ ~ ~ ~ ~ + +# 対象を自身の場所・向きへtp + tp @a[tag=177.Changed,limit=1] ~ ~ ~ ~ ~ + +# 自分をマーカー(対象が元いた場所・向き)にテレポートさせる + execute at @e[type=marker,tag=177.ChangeMarker,limit=1] rotated as @e[type=marker,tag=177.ChangeMarker,limit=1] run tp @s ~ ~ ~ ~ ~ + +# 1. 自分の場所でパーティクルと音を鳴らす + particle minecraft:reverse_portal ~ ~1 ~ 0.5 1 0.5 0.05 40 normal @a + playsound minecraft:item.chorus_fruit.teleport player @a ~ ~ ~ 1.0 1.0 0 + +# 2. 対象の場所でパーティクルと音を鳴らす + execute at @a[tag=177.Changed,limit=1] run particle minecraft:reverse_portal ~ ~1 ~ 0.5 1 0.5 0.05 40 normal @a + execute at @a[tag=177.Changed,limit=1] run playsound minecraft:item.chorus_fruit.teleport player @a ~ ~ ~ 1.0 1.0 0 + +# マーカーを削除する + kill @e[type=marker,tag=177.ChangeMarker] + +# 味方のターゲットタグを外してリセットする + tag @a remove 177.Changed diff --git a/Asset/data/asset/tags/functions/artifact/click.carrot_on_a_stick.json b/Asset/data/asset/tags/functions/artifact/click.carrot_on_a_stick.json index 8b0fecd8b5..3a468d9996 100644 --- a/Asset/data/asset/tags/functions/artifact/click.carrot_on_a_stick.json +++ b/Asset/data/asset/tags/functions/artifact/click.carrot_on_a_stick.json @@ -1,5 +1,6 @@ { "values": [ + "asset:artifact/1555.shift_change/trigger/1.trigger", "asset:artifact/1332.bebebeam/trigger/1.trigger", "asset:artifact/1306.will_o_wisp/trigger/1.trigger", "asset:artifact/1144.cradle_of_azure_moon/trigger/1.trigger", @@ -177,4 +178,4 @@ "asset:artifact/2001.staff_of_the_willless/trigger/1.trigger", "asset:artifact/0019.scripture/trigger/1.trigger" ] -} +} \ No newline at end of file diff --git a/Asset/data/asset/tags/functions/artifact/give.json b/Asset/data/asset/tags/functions/artifact/give.json index 4af19ef38c..19fbe161b9 100644 --- a/Asset/data/asset/tags/functions/artifact/give.json +++ b/Asset/data/asset/tags/functions/artifact/give.json @@ -1,5 +1,6 @@ { "values": [ + "asset:artifact/1555.shift_change/give/1.trigger", "asset:artifact/1534.drop_in_the_bucket/give/1.trigger", "asset:artifact/1366.shaved_ice_melon/give/1.trigger", "asset:artifact/1365.shaved_ice_blue_hawaii/give/1.trigger", diff --git a/Asset/data/asset/tags/functions/artifact/register.json b/Asset/data/asset/tags/functions/artifact/register.json index 98587f21f2..c520370b23 100644 --- a/Asset/data/asset/tags/functions/artifact/register.json +++ b/Asset/data/asset/tags/functions/artifact/register.json @@ -1,5 +1,6 @@ { "values": [ + "asset:artifact/1555.shift_change/register", "asset:artifact/1534.drop_in_the_bucket/register", "asset:artifact/1365.shaved_ice_blue_hawaii/register", "asset:artifact/1366.shaved_ice_melon/register",