diff --git a/Asset/data/asset/functions/artifact/0101.grimoire/give/1.trigger.mcfunction b/Asset/data/asset/functions/artifact/0101.grimoire/give/1.trigger.mcfunction new file mode 100644 index 0000000000..f93923ef02 --- /dev/null +++ b/Asset/data/asset/functions/artifact/0101.grimoire/give/1.trigger.mcfunction @@ -0,0 +1,7 @@ +#> asset:artifact/0101.grimoire/give/1.trigger +# +# 神器の取得処理の呼び出し時に実行されるfunction +# +# @within tag/function asset:artifact/give + +execute if data storage asset:context {id:101} run function asset:artifact/0101.grimoire/give/2.give \ No newline at end of file diff --git a/Asset/data/asset/functions/artifact/0101.grimoire/give/2.give.mcfunction b/Asset/data/asset/functions/artifact/0101.grimoire/give/2.give.mcfunction new file mode 100644 index 0000000000..3e0fc2cc6e --- /dev/null +++ b/Asset/data/asset/functions/artifact/0101.grimoire/give/2.give.mcfunction @@ -0,0 +1,68 @@ +#> asset:artifact/0101.grimoire/give/2.give +# +# 神器の作成部 ここでID等を定義する +# +# @user +# @within function asset:artifact/0101.grimoire/give/1.trigger + +# 神器の説明や消費MPなどをここで設定する。 +# 最後にasset:artifact/common/giveを実行することで入手可能。 + +# 神器のID (int) スプレッドシートの値を入れる + data modify storage asset:artifact ID set value 101 +# 神器のベースアイテム + data modify storage asset:artifact Item set value "minecraft:carrot_on_a_stick" +# 神器の名前 (TextComponentString) + data modify storage asset:artifact Name set value '{"text":"グリモワール","color":"dark_green"}' +# 神器の説明文 (TextComponentString[]) + data modify storage asset:artifact Lore set value ['{"text":"ランダムな属性の遠距離魔法を召喚する魔術書"}'] +# 消費アイテム ({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 +# 神器を発動できるスロット (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 [80] +# 攻撃に関する情報 -攻撃タイプ (string[]) Wikiを参照 (オプション) + data modify storage asset:artifact AttackInfo.AttackType set value [Magic] +# 攻撃に関する情報 -攻撃属性 (string[]) Wikiを参照 (オプション) + data modify storage asset:artifact AttackInfo.ElementType set value [Fire,Water,Thunder] +# 攻撃に関する情報 -防御無視 (boolean) Wikiを参照 (オプション) + # data modify storage asset:artifact AttackInfo.BypassResist set value +# 攻撃に関する情報 -範囲攻撃 (string) Wikiを参照 (オプション) + data modify storage asset:artifact AttackInfo.IsRangeAttack set value "every" +# 攻撃に関する情報 -攻撃範囲 (literal) Wikiを参照 (オプション) + data modify storage asset:artifact AttackInfo.AttackRange set value 10 +# MP消費量 (int) + # data modify storage asset:artifact MPCost set value +# MP必要量 (int) (オプション) + # data modify storage asset:artifact MPRequire set value 20 +# MP回復量 (int) + data modify storage asset:artifact MPHealWhenHit set value 11 +# 神器のクールダウン (int) (オプション) + # data modify storage asset:artifact LocalCooldown set value +# 種別クールダウン ({Type: string, Duration: int}) (オプション) + data modify storage asset:artifact TypeCooldown.Type set value "longRange" + data modify storage asset:artifact TypeCooldown.Duration set value 16 +# グローバルクールダウン (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 ["Flora","Nyaptov","Wi-ki","Rumor"] +# カスタム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/0101.grimoire/register.mcfunction b/Asset/data/asset/functions/artifact/0101.grimoire/register.mcfunction new file mode 100644 index 0000000000..13d5b9db36 --- /dev/null +++ b/Asset/data/asset/functions/artifact/0101.grimoire/register.mcfunction @@ -0,0 +1,8 @@ +#> asset:artifact/0101.grimoire/register +# +# 神器プールへの登録処理 +# +# @within tag/function asset:artifact/register + +data modify storage asset:artifact RarityRegistry[2] append value [101] +data modify storage asset:artifact RarityRegistryWithColor.Red[2] append value [101] diff --git a/Asset/data/asset/functions/artifact/0101.grimoire/trigger/1.trigger.mcfunction b/Asset/data/asset/functions/artifact/0101.grimoire/trigger/1.trigger.mcfunction new file mode 100644 index 0000000000..815b320a41 --- /dev/null +++ b/Asset/data/asset/functions/artifact/0101.grimoire/trigger/1.trigger.mcfunction @@ -0,0 +1,8 @@ +#> asset:artifact/0101.grimoire/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:101} run function asset:artifact/0101.grimoire/trigger/2.check_condition \ No newline at end of file diff --git a/Asset/data/asset/functions/artifact/0101.grimoire/trigger/2.check_condition.mcfunction b/Asset/data/asset/functions/artifact/0101.grimoire/trigger/2.check_condition.mcfunction new file mode 100644 index 0000000000..9bf5726ac7 --- /dev/null +++ b/Asset/data/asset/functions/artifact/0101.grimoire/trigger/2.check_condition.mcfunction @@ -0,0 +1,12 @@ +#> asset:artifact/0101.grimoire/trigger/2.check_condition +# +# 神器の発動条件をチェックします +# +# @within function asset:artifact/0101.grimoire/trigger/1.trigger + +# 神器の基本的な条件の確認を行うfunction、成功している場合CanUsedタグが付く + function asset:artifact/common/check_condition/mainhand +# 他にアイテム等確認する場合はここに書く + +# CanUsedタグをチェックして3.main.mcfunctionを実行する + execute if entity @s[tag=CanUsed] run function asset:artifact/0101.grimoire/trigger/3.main \ No newline at end of file diff --git a/Asset/data/asset/functions/artifact/0101.grimoire/trigger/3.main.mcfunction b/Asset/data/asset/functions/artifact/0101.grimoire/trigger/3.main.mcfunction new file mode 100644 index 0000000000..da76a46e83 --- /dev/null +++ b/Asset/data/asset/functions/artifact/0101.grimoire/trigger/3.main.mcfunction @@ -0,0 +1,18 @@ +#> asset:artifact/0101.grimoire/trigger/3.main +# +# 神器のメイン処理部 +# +# @within function asset:artifact/0101.grimoire/trigger/2.check_condition + +# 基本的な使用時の処理(MP消費や使用回数の処理など)を行う + function asset:artifact/common/use/mainhand + +# ここから先は神器側の効果の処理を書く +# 音 + playsound item.book.page_turn player @a ~ ~ ~ +# 属性抽選 + execute store result storage asset:temp type int 1 run random value 0..2 + execute if data storage asset:temp {type:0} anchored eyes run function asset:artifact/0101.grimoire/trigger/ballet/fire + execute if data storage asset:temp {type:1} anchored eyes run function asset:artifact/0101.grimoire/trigger/ballet/water + execute if data storage asset:temp {type:2} anchored eyes run function asset:artifact/0101.grimoire/trigger/ballet/thunder + data remove storage asset:temp type diff --git a/Asset/data/asset/functions/artifact/0101.grimoire/trigger/ballet/fire.mcfunction b/Asset/data/asset/functions/artifact/0101.grimoire/trigger/ballet/fire.mcfunction new file mode 100644 index 0000000000..cefa451652 --- /dev/null +++ b/Asset/data/asset/functions/artifact/0101.grimoire/trigger/ballet/fire.mcfunction @@ -0,0 +1,22 @@ +#> asset:artifact/0101.grimoire/trigger/ballet/fire +# +# 火の弾道 +# +# @within function +# asset:artifact/0101.grimoire/trigger/3.main +# asset:artifact/0101.grimoire/trigger/ballet/fire + +# 弾道 + particle minecraft:dust 1 0 0 1 + +# ブロックに当たったら起爆 + execute unless block ~ ~ ~ #lib:no_collision/ run return run function asset:artifact/0101.grimoire/trigger/ballet/fire_hit + +# 射程外に出ても起爆 + execute unless entity @s[distance=..10] run return run function asset:artifact/0101.grimoire/trigger/ballet/fire_hit + +# 敵に当たってももちろん起爆 + execute positioned ~-0.5 ~-0.5 ~-0.5 as @e[type=#lib:living_without_player,tag=Enemy,tag=!Uninterferable,dx=0] positioned ~0.5 ~0.5 ~0.5 run return run function asset:artifact/0101.grimoire/trigger/ballet/fire_hit + +# 起爆しないなら再起 + execute positioned ^ ^ ^0.5 run function asset:artifact/0101.grimoire/trigger/ballet/fire diff --git a/Asset/data/asset/functions/artifact/0101.grimoire/trigger/ballet/fire_hit.mcfunction b/Asset/data/asset/functions/artifact/0101.grimoire/trigger/ballet/fire_hit.mcfunction new file mode 100644 index 0000000000..6d91598e74 --- /dev/null +++ b/Asset/data/asset/functions/artifact/0101.grimoire/trigger/ballet/fire_hit.mcfunction @@ -0,0 +1,19 @@ +#> asset:artifact/0101.grimoire/trigger/ballet/fire_hit +# +# 着弾処理 +# +# @within function asset:artifact/0101.grimoire/trigger/ballet/fire + +# 演出 + particle minecraft:flame ~ ~1 ~ 0.5 0.5 0.5 0.05 40 + playsound item.firecharge.use player @a ~ ~ ~ +# 引数の設定 + data modify storage api: Argument.Damage set value 80f + data modify storage api: Argument.AttackType set value "Magic" + data modify storage api: Argument.ElementType set value "Fire" +# 補正functionを実行 + function api:damage/modifier +# 範囲ダメージ + execute as @e[type=#lib:living_without_player,distance=..2] run function api:damage/ +# リセット + function api:damage/reset diff --git a/Asset/data/asset/functions/artifact/0101.grimoire/trigger/ballet/thunder.mcfunction b/Asset/data/asset/functions/artifact/0101.grimoire/trigger/ballet/thunder.mcfunction new file mode 100644 index 0000000000..58eea093f7 --- /dev/null +++ b/Asset/data/asset/functions/artifact/0101.grimoire/trigger/ballet/thunder.mcfunction @@ -0,0 +1,22 @@ +#> asset:artifact/0101.grimoire/trigger/ballet/thunder +# +# 雷の弾道 +# +# @within function +# asset:artifact/0101.grimoire/trigger/3.main +# asset:artifact/0101.grimoire/trigger/ballet/thunder + +# 弾道 + particle minecraft:dust 1 0.902 0 1 + +# ブロックに当たったら起爆 + execute unless block ~ ~ ~ #lib:no_collision/ run return run function asset:artifact/0101.grimoire/trigger/ballet/thunder_hit + +# 射程外に出ても起爆 + execute unless entity @s[distance=..10] run return run function asset:artifact/0101.grimoire/trigger/ballet/thunder_hit + +# 敵に当たってももちろん起爆 + execute positioned ~-0.5 ~-0.5 ~-0.5 as @e[type=#lib:living_without_player,tag=Enemy,tag=!Uninterferable,dx=0] positioned ~0.5 ~0.5 ~0.5 run return run function asset:artifact/0101.grimoire/trigger/ballet/thunder_hit + +# 起爆しないなら再起 + execute positioned ^ ^ ^0.5 run function asset:artifact/0101.grimoire/trigger/ballet/thunder diff --git a/Asset/data/asset/functions/artifact/0101.grimoire/trigger/ballet/thunder_hit.mcfunction b/Asset/data/asset/functions/artifact/0101.grimoire/trigger/ballet/thunder_hit.mcfunction new file mode 100644 index 0000000000..9a1941de84 --- /dev/null +++ b/Asset/data/asset/functions/artifact/0101.grimoire/trigger/ballet/thunder_hit.mcfunction @@ -0,0 +1,25 @@ +#> asset:artifact/0101.grimoire/trigger/ballet/thunder_hit +# +# 着弾処理 +# +# @within function asset:artifact/0101.grimoire/trigger/ballet/thunder + +# 演出 + data modify storage api: Argument.ID set value 2257 + data modify storage api: Argument.FieldOverride.Scale set value 4f + function api:object/summon + playsound entity.generic.explode player @a ~ ~ ~ + +# 引数の設定 + data modify storage api: Argument.Damage set value 80f + data modify storage api: Argument.AttackType set value "Magic" + data modify storage api: Argument.ElementType set value "Thunder" + +# 補正functionを実行 + function api:damage/modifier + +# 範囲ダメージ + execute as @e[type=#lib:living_without_player,distance=..2] run function api:damage/ +# リセット + + function api:damage/reset diff --git a/Asset/data/asset/functions/artifact/0101.grimoire/trigger/ballet/water.mcfunction b/Asset/data/asset/functions/artifact/0101.grimoire/trigger/ballet/water.mcfunction new file mode 100644 index 0000000000..538392ad2f --- /dev/null +++ b/Asset/data/asset/functions/artifact/0101.grimoire/trigger/ballet/water.mcfunction @@ -0,0 +1,22 @@ +#> asset:artifact/0101.grimoire/trigger/ballet/water +# +# 水の弾道 +# +# @within function +# asset:artifact/0101.grimoire/trigger/3.main +# asset:artifact/0101.grimoire/trigger/ballet/water + +# 弾道 + particle minecraft:dust 0.133 0 1 1 + +# ブロックに当たったら起爆 + execute unless block ~ ~ ~ #lib:no_collision/ run return run function asset:artifact/0101.grimoire/trigger/ballet/water_hit + +# 射程外に出ても起爆 + execute unless entity @s[distance=..10] run return run function asset:artifact/0101.grimoire/trigger/ballet/water_hit + +# 敵に当たってももちろん起爆 + execute positioned ~-0.5 ~-0.5 ~-0.5 as @e[type=#lib:living_without_player,tag=Enemy,tag=!Uninterferable,dx=0] positioned ~0.5 ~0.5 ~0.5 run return run function asset:artifact/0101.grimoire/trigger/ballet/water_hit + +# 起爆しないなら再起 + execute positioned ^ ^ ^0.5 run function asset:artifact/0101.grimoire/trigger/ballet/water diff --git a/Asset/data/asset/functions/artifact/0101.grimoire/trigger/ballet/water_hit.mcfunction b/Asset/data/asset/functions/artifact/0101.grimoire/trigger/ballet/water_hit.mcfunction new file mode 100644 index 0000000000..1afc859aa0 --- /dev/null +++ b/Asset/data/asset/functions/artifact/0101.grimoire/trigger/ballet/water_hit.mcfunction @@ -0,0 +1,25 @@ +#> asset:artifact/0101.grimoire/trigger/ballet/water_hit +# +# 着弾処理 +# +# @within function asset:artifact/0101.grimoire/trigger/ballet/water + +# 演出 + data modify storage api: Argument.ID set value 2256 + data modify storage api: Argument.FieldOverride.Scale set value 4f + function api:object/summon + playsound entity.player.splash player @a ~ ~ ~ + +# 引数の設定 + data modify storage api: Argument.Damage set value 80f + data modify storage api: Argument.AttackType set value "Magic" + data modify storage api: Argument.ElementType set value "Water" + +# 補正functionを実行 + function api:damage/modifier + +# 範囲ダメージ + execute as @e[type=#lib:living_without_player,distance=..2] run function api:damage/ + +# リセット + function api:damage/reset 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..7ef2d50db9 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/0101.grimoire/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", diff --git a/Asset/data/asset/tags/functions/artifact/give.json b/Asset/data/asset/tags/functions/artifact/give.json index 4af19ef38c..b55da1aab4 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/0101.grimoire/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..8abd9fa1da 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/0101.grimoire/register", "asset:artifact/1534.drop_in_the_bucket/register", "asset:artifact/1365.shaved_ice_blue_hawaii/register", "asset:artifact/1366.shaved_ice_melon/register", @@ -315,4 +316,4 @@ "asset:artifact/1027.fire_of_rebirth/register", "asset:artifact/1111.rod_o_redeem/register" ] -} \ No newline at end of file +}