text:
#> asset:artifact/0971.laser_eye_helmet/shot/3.main
#
# 神器のメイン処理部
#
# @within function asset:artifact/0971.laser_eye_helmet/shot/2.check_condition

#> Private
# @private
    #declare tag SpreadMarker

# 基本的な使用時の処理(MP消費や使用回数の処理など)を行う
    function asset:artifact/common/use/head

# ここから先は神器側の効果の処理を書く

# 演出
    playsound minecraft:block.respawn_anchor.deplete player @a ~ ~ ~ 1 2

# 前方拡散設定
    execute anchored eyes positioned ^ ^ ^ run summon marker ~ ~ ~ {Tags:["SpreadMarker"]}
    data modify storage lib: Argument.Distance set value 3.0
    data modify storage lib: Argument.Spread set value 0.5
# 前方拡散を実行する
    execute as @e[type=marker,tag=SpreadMarker,limit=1] run function lib:forward_spreader/circle
# 発砲
    execute anchored eyes facing entity @e[type=marker,tag=SpreadMarker,limit=1] feet run function asset:artifact/0971.laser_eye_helmet/shot/bullet
    tag @s remove Landing

# リセット
    kill @e[type=marker,tag=SpreadMarker]
    scoreboard players reset $Appropriate_Distance Temporary
    scoreboard players reset $Distance_Damping Temporary
    scoreboard players reset $MinDamage Temporary
    scoreboard players reset $Damage Temporary


text:
#> asset:artifact/0971.laser_eye_helmet/shot/hit
#
#
# @within function
#    asset:artifact/0971.laser_eye_helmet/shot/3.main
#    asset:artifact/0971.laser_eye_helmet/shot/bullet

# ここから先は神器側の効果の処理を書く

# 一定の距離から距離減衰するための距離(適正距離をメートル*2で指定)
    scoreboard players set $Appropriate_Distance Temporary 10
# 最低ダメージ保証
    scoreboard players set $MinDamage Temporary 20

# ダメージ設定
    # ダメージ
        scoreboard players add $Damage Temporary 50
    # 属性
        data modify storage lib: Argument.AttackType set value "Physical"
        data modify storage lib: Argument.ElementType set value "Water"
    # もし、適正距離じゃなかった場合、距離-適正距離=減少ダメージにする
        execute if score $Distance_Damping Temporary >= $Appropriate_Distance Temporary run function asset:artifact/0971.laser_eye_helmet/shot/damage_attenuation
    # ダメージ量確定
        execute store result storage lib: Argument.Damage float 1 run scoreboard players get $Damage Temporary
    # ダメージ
        function lib:damage/modifier
        execute as @e[tag=LandingTarget] run function lib:damage/
# リセット
    function lib:damage/reset

# 着弾タグを消す
    tag @e[tag=LandingTarget] remove LandingTarget

repo_name: ProjectTSB/TheSkyBlessing

repo_language: mcfunction

mime_type: text/plain


text:
#> asset:artifact/0971.laser_eye_helmet/shot/1.trigger
#
# 指定したイベントタイミングで実行されるfunction
#
# @within tag/function asset:artifact/**

# storage asset:idのheadに装備している神器のIDが入っているので比較し、~/2.check_condition.mcfunctionを実行する
    execute if data storage asset:context id{head:971} run function asset:artifact/0971.laser_eye_helmet/shot/2.check_condition


text:
#> asset:artifact/0971.laser_eye_helmet/shot/_index.d
# @private

#> tag
# @within function
#   asset:artifact/0971.laser_eye_helmet/shot/**
    #declare tag Landing
    #declare tag LandingTarget
    #declare score_holder $Distance_Damping
    #declare score_holder $Appropriate_Distance
    #declare score_holder $Damage
    #declare score_holder $MinDamage


text:
#> asset:artifact/0971.laser_eye_helmet/shot/damage_attenuation
#
#
#
# @within function asset:artifact/0971.laser_eye_helmet/shot/hit

# ダメージ減らす
    scoreboard players operation $Distance_Damping Temporary -= $Appropriate_Distance Temporary
    scoreboard players operation $Damage Temporary -= $Distance_Damping Temporary
# ダメージ減らしすぎて最低ダメージを下回った時
    execute if score $Damage Temporary <= $MinDamage Temporary run scoreboard players operation $Damage Temporary = $MinDamage Temporary


text:
#> asset:artifact/1012.sharpened_stone_sword/give/1.trigger
#
# 神器の取得処理の呼び出し時に実行されるfunction
#
# @within tag/function asset:artifact/give

execute if data storage asset:context {id:1012} run function asset:artifact/1012.sharpened_stone_sword/give/2.give


text:
#> asset:artifact/1012.sharpened_stone_sword/give/2.give
#
# 神器の作成部 ここでID等を定義する
#
# @user
# @within function asset:artifact/1012.sharpened_stone_sword/give/1.trigger

# 神器の説明や消費MPなどをここで設定する。
# 最後にasset:artifact/common/giveを実行することで入手可能。

# 神器のID (int) スプレッドシートの値を入れる
    data modify storage asset:artifact ID set value 1012
# 神器のベースアイテム
    data modify storage asset:artifact Item set value "minecraft:stick"
# 神器の名前 (TextComponentString)
    data modify storage asset:artifact Name set value '{"text":"研がれた石の剣","color":"white"}'
# 神器の説明文 (TextComponentString[])
    data modify storage asset:artifact Lore set value ['{"text":"神々の砥石で研がれたその剣は","color":"gray"}','{"text":"邪悪な敵に立ち向かうのに、十分なほどの鋭さを持つ。","color":"gray"}']
# MP以外の消費物 (TextComponentString) (オプション)
    # data modify storage asset:artifact CostText set value
# 使用回数 (int) (オプション)
    data modify storage asset:artifact RemainingCount set value 80
# 神器を発動できるスロット (string) Wikiを参照
    data modify storage asset:artifact Slot set value "mainhand"
# 神器のトリガー (string) Wikiを参照
    data modify storage asset:artifact Trigger set value "onAttackByMelee"
# 神器の発動条件 (TextComponentString) (オプション)
    # data modify storage asset:artifact Condition set value
# 攻撃に関する情報 -Damage量 (literal[]/literal) Wikiを参照 (オプション)
    data modify storage asset:artifact AttackInfo.Damage set value [45]
# 攻撃に関する情報 -攻撃タイプ (string[]) Wikiを参照 (オプション)
    data modify storage asset:artifact AttackInfo.AttackType set value [Physical]
# 攻撃に関する情報 -攻撃属性 (string[]) Wikiを参照 (オプション)
    data modify storage asset:artifact AttackInfo.ElementType set value [None]
# 攻撃に関する情報 -防御無視 (boolean) Wikiを参照 (オプション)
    # data modify storage asset:artifact AttackInfo.BypassResist set value
# 攻撃に関する情報 -範囲攻撃 (string) Wikiを参照 (オプション)
    data modify storage asset:artifact AttackInfo.IsRangeAttack set value "never"
# 攻撃に関する情報 -攻撃範囲 (literal) Wikiを参照 (オプション)
    # data modify storage asset:artifact AttackInfo.AttackRange set value
# MP消費量 (int)
    data modify storage asset:artifact MPCost set value 0
# MP必要量 (int) (オプション)
    # data modify storage asset:artifact MPRequire set value
# 神器のクールダウン (int) (オプション)
    data modify storage asset:artifact LocalCooldown set value 15
# グローバルクールダウン (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
# 扱える神 (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


text:
#> asset:artifact/1012.sharpened_stone_sword/trigger/2.check_condition
#
# 神器の発動条件をチェックします
#
# @within function asset:artifact/1012.sharpened_stone_sword/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/1012.sharpened_stone_sword/trigger/3.main


text:
#> asset:artifact/1012.sharpened_stone_sword/trigger/3.main
#
# 神器のメイン処理部
#
# @within function asset:artifact/1012.sharpened_stone_sword/trigger/2.check_condition

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

# ここから先は神器側の効果の処理を書く

# 演出
    playsound entity.player.attack.sweep player @a ~ ~ ~ 0.8 1 0

# ダメージ
    data modify storage lib: Argument.Damage set value 45.0f
    data modify storage lib: Argument.AttackType set value "Physical"
    function lib:damage/modifier
    execute as @e[type=#lib:living,tag=Victim,distance=..6] run function lib:damage/
    function lib:damage/reset


text:
#> asset:artifact/1012.sharpened_stone_sword/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:1012} run function asset:artifact/1012.sharpened_stone_sword/trigger/2.check_condition


text:
#> asset:artifact/0264.heal_lv.5/register
#
# 神器プールへの登録処理
#
# @within tag/function asset:artifact/register

data modify storage asset:artifact RarityRegistry[3] append value 264


text:
#> asset:artifact/0264.heal_lv.5/give/1.trigger
#
# 神器の取得処理の呼び出し時に実行されるfunction
#
# @within tag/function asset:artifact/give

execute if data storage asset:context {id:264} run function asset:artifact/0264.heal_lv.5/give/2.give


text:
#> asset:artifact/0264.heal_lv.5/give/2.give
#
# 神器の作成部 ここでID等を定義する
#
# @user
# @within function asset:artifact/0264.heal_lv.5/give/1.trigger

# 神器の説明や消費MPなどをここで設定する。
# 最後にasset:artifact/common/giveを実行することで入手可能。

# 神器のID (int) スプレッドシートの値を入れる
    data modify storage asset:artifact ID set value 264
# 神器のベースアイテム
    data modify storage asset:artifact Item set value "minecraft:carrot_on_a_stick"
# 神器の名前 (TextComponentString)
    data modify storage asset:artifact Name set value '{"text":"ヒール レベル5"}'
# 神器の説明文 (TextComponentString[])
    data modify storage asset:artifact Lore set value ['{"text":"治癒の祈りを通じて"}','{"text":"発動者および味方を回復する。"}','""','{"text":"[詳細]","color":"#ffde6e"}','[{"text":"体力を","color":"white"},{"text":"7.5","color":"#6e99ff"},{"text":"回復する。","color":"white"}]']
# MP以外の消費物 (TextComponentString) (オプション)
    # data modify storage asset:artifact CostText 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 [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 15
# MP必要量 (int) (オプション)
    # data modify storage asset:artifact MPRequire set value
# 神器のクールダウン (int) (オプション)
    data modify storage asset:artifact LocalCooldown set value 20
# グローバルクールダウン (int) (オプション)
    # data modify storage asset:artifact SpecialCooldown set value
# クールダウンによる使用不可のメッセージを非表示にするか否か (boolean) (オプション)
    data modify storage asset:artifact DisableCooldownMessage set value true
# MP不足による使用不可のメッセージを非表示にするか否か (boolean) (オプション)
    # data modify storage asset:artifact DisableMPMessage 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


text:
#> asset:artifact/0264.heal_lv.5/trigger/2.check_condition
#
# 神器の発動条件をチェックします
#
# @within function asset:artifact/0264.heal_lv.5/trigger/1.trigger

# 神器の基本的な条件の確認を行うfunction、成功している場合CanUsedタグが付く auto/feet/legs/chest/head/mainhand/offhandを記載してね
    function asset:artifact/common/check_condition/mainhand
# 他にアイテム等確認する場合はここに書く

# CanUsedタグをチェックして3.main.mcfunctionを実行する
    execute if entity @s[tag=CanUsed] run function asset:artifact/0264.heal_lv.5/trigger/3.main


text:
#> asset:artifact/0264.heal_lv.5/trigger/3.main
#
# 神器のメイン処理部
#
# @within function asset:artifact/0264.heal_lv.5/trigger/2.check_condition

# 基本的な使用時の処理(MP消費や使用回数の処理など)を行う auto/feet/legs/chest/head/mainhand/offhandを記載してね
    function asset:artifact/common/use/mainhand

# ここから先は神器側の効果の処理を書く
# 演出
    playsound minecraft:entity.evoker.cast_spell player @a ~ ~ ~ 0.6 0.8
    playsound minecraft:entity.evoker.cast_spell player @a ~ ~ ~ 0.8 1.8
    playsound minecraft:entity.evoker.prepare_summon player @a ~ ~ ~ 0.6 1.17
    playsound minecraft:block.enchantment_table.use player @a ~ ~ ~ 1.0 1.4
    summon minecraft:area_effect_cloud ~ ~0.3 ~ {Age:0,Duration:5,WaitTime:0,Radius:3f,Tags:[],Particle:"dust 1 1 0.5 1"}
    summon minecraft:area_effect_cloud ~ ~0.0 ~ {Age:0,Duration:5,WaitTime:0,Radius:3f,Tags:[],Particle:"dust 1 1 0.5 1"}
    summon minecraft:area_effect_cloud ~ ~0.2 ~ {Age:0,Duration:1,WaitTime:0,Radius:3f,Tags:[],Particle:"totem_of_undying"}
# 回復
    data modify storage lib: Argument.Heal set value 7.5f
    function lib:heal/modifier
    execute as @a[distance=..3,sort=nearest,limit=6] run function lib:heal/
# リセット
    function lib:heal/reset


text:
#> asset:artifact/0264.heal_lv.5/trigger/1.trigger
#
# 指定したイベントタイミングで実行されるfunction
#
# @within tag/function asset:artifact/**

# storage asset:idのauto/feet/legs/chest/head/mainhand/offhandに装備している神器のIDが入っているので比較し、~/2.check_condition.mcfunctionを実行する
    execute if data storage asset:context id{mainhand:264} run function asset:artifact/0264.heal_lv.5/trigger/2.check_condition


text:
#> asset:artifact/0607.u_and_w_06/register
#
# 神器プールへの登録処理
#
# @within tag/function asset:artifact/register

data modify storage asset:artifact RarityRegistry[2] append value 607


text:
#> asset:artifact/0607.u_and_w_06/give/1.trigger
#
# 神器の取得処理の呼び出し時に実行されるfunction
#
# @within tag/function asset:artifact/give

execute if data storage asset:context {id:607} run function asset:artifact/0607.u_and_w_06/give/2.give


text:
#> asset:artifact/0607.u_and_w_06/give/2.give
#
# 神器の作成部 ここでID等を定義する
#
# @user
# @within function asset:artifact/0607.u_and_w_06/give/1.trigger

# 神器の説明や消費MPなどをここで設定する。
# 最後にasset:artifact/common/giveを実行することで入手可能。

# 神器のID (int) スプレッドシートの値を入れる
    data modify storage asset:artifact ID set value 607
# 神器のベースアイテム
    data modify storage asset:artifact Item set value "minecraft:carrot_on_a_stick"
# 神器の名前 (TextComponentString)
    data modify storage asset:artifact Name set value '{"text":"U&W-06","color":"gray","bold":true,"italic":false,"underlined":true}'
# 神器の説明文 (TextComponentString[])
    data modify storage asset:artifact Lore set value ['{"text":"とある神が協力をして作り上げた神器 "}','{"text":"しかし、お互い馬が合わなかったのか "}','[{"text":"少し"},{"text":"歪な性能","color":"gray","italic":true},{"text":"をしている"}]','{"text":" "}','{"text":"再利用可能な工夫がされている","bold":true,"underlined":true}']
# MP以外の消費物 (TextComponentString) (オプション)
    # data modify storage asset:artifact CostText set value
# 使用回数 (int) (オプション)
    data modify storage asset:artifact RemainingCount set value 6
# 神器を発動できるスロット (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 [20]
# 攻撃に関する情報 -攻撃タイプ (string[]) Wikiを参照 (オプション)
    data modify storage asset:artifact AttackInfo.AttackType set value [Physical]
# 攻撃に関する情報 -攻撃属性 (string[]) Wikiを参照 (オプション)
    data modify storage asset:artifact AttackInfo.ElementType set value [None]
# 攻撃に関する情報 -防御無視 (boolean) Wikiを参照 (オプション)
    # data modify storage asset:artifact AttackInfo.BypassResist set value
# 攻撃に関する情報 -範囲攻撃 (string) Wikiを参照 (オプション)
    data modify storage asset:artifact AttackInfo.IsRangeAttack set value "never"
# 攻撃に関する情報 -攻撃範囲 (literal) Wikiを参照 (オプション)
    data modify storage asset:artifact AttackInfo.AttackRange set value 30
# MP消費量 (int)
    data modify storage asset:artifact MPCost set value 0
# MP必要量 (int) (オプション)
    # data modify storage asset:artifact MPRequire set value
# 神器のクールダウン (int) (オプション)
    # data modify storage asset:artifact LocalCooldown 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
# 扱える神 (string[]) Wikiを参照
    data modify storage asset:artifact CanUsedGod set value ["Urban", "Wi-ki"]
# カスタムNBT (NBTCompound) 追加で指定したいNBT (オプション)
    # data modify storage asset:artifact CustomNBT set value {}

# 神器の入手用function
    function asset:artifact/common/give


text:
#> asset:artifact/0607.u_and_w_06/trigger/2.check_condition
#
# 神器の発動条件をチェックします
#
# @within function asset:artifact/0607.u_and_w_06/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/0607.u_and_w_06/trigger/3.main


text:
#> asset:artifact/0607.u_and_w_06/trigger/3.main
#
# 神器のメイン処理部
#
# @within function asset:artifact/0607.u_and_w_06/trigger/2.check_condition
#> Private
# @private
    #declare score_holder $UseCount
    #declare score_holder $Random
    #declare tag SpreadMarker

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

# ここから先は神器側の効果の処理を書く

# 演出
    playsound minecraft:entity.zombie.attack_wooden_door player @s ~ ~ ~ 1 2
    playsound minecraft:entity.zombie.attack_wooden_door player @s ~ ~ ~ 1 0
    playsound minecraft:entity.generic.explode player @a ~ ~ ~ 0.8 2

# 残り回数が1回の時発動した場合
    execute unless data storage asset:context Items.mainhand.id run data modify storage api: Argument.ID set value 608
    execute unless data storage asset:context Items.mainhand.id run function api:artifact/give/from_id

# 前方拡散設定
    summon marker ~ ~ ~ {Tags:["SpreadMarker"]}
    data modify storage lib: Argument.Distance set value 2.0
    data modify storage lib: Argument.Spread set value 0.3

# ランダムで拡散率がひどいことになる
    # 疑似乱数取得
        execute store result score $Random Temporary run function lib:random/
    # ほしい範囲に剰余算
        scoreboard players operation $Random Temporary %= $100 Const
    # 10%で発動
        execute if score $Random Temporary matches 0..9 run data modify storage lib: Argument.Spread set value 2
    # 50%で発動
        execute if score $Random Temporary matches 10..69 run data modify storage lib: Argument.Distance set value 5.0
        execute if score $Random Temporary matches 10..69 run data modify storage lib: Argument.Spread set value 0.1

# 前方拡散を実行する
    execute as @e[type=marker,tag=SpreadMarker,limit=1] run function lib:forward_spreader/circle

# 発砲
    execute facing entity @e[type=marker,tag=SpreadMarker,limit=1] feet anchored eyes positioned ^ ^ ^ run function asset:artifact/0607.u_and_w_06/trigger/3.1.bullet
    tag @s remove Landing

# 向きを変える
    tp @s ~ ~ ~ ~ ~-1

# リセット
    kill @e[type=marker,tag=SpreadMarker]
    scoreboard players reset $Random Temporary


text:
#> asset:artifact/0607.u_and_w_06/trigger/1.trigger
#
# 指定したイベントタイミングで実行されるfunction
#
# @within tag/function asset:artifact/**

# storage asset:idのautoに装備している神器のIDが入っているので比較し、~/2.check_condition.mcfunctionを実行する
    execute if data storage asset:context id{mainhand:607} run function asset:artifact/0607.u_and_w_06/trigger/2.check_condition


text:
#> asset:artifact/0607.u_and_w_06/trigger/3.2.hit
#
#
# @within function
#    asset:artifact/0607.u_and_w_06/trigger/3.main
#    asset:artifact/0607.u_and_w_06/trigger/3.1.bullet

# ここから先は神器側の効果の処理を書く

# 演出
    execute at @e[tag=LandingTarget,limit=1] run particle minecraft:block redstone_block ~ ~1.2 ~ 0.4 0.4 0.4 0 4

# ダメージ設定
    # ダメージ
        data modify storage lib: Argument.Damage set value 20.0f
    # 第一属性
        data modify storage lib: Argument.AttackType set value "Physical"
    # ダメージ
        function lib:damage/modifier
        execute as @e[tag=LandingTarget] run function lib:damage/
# リセット
    function lib:damage/reset

# 着弾タグを消す
    tag @e[tag=LandingTarget] remove LandingTarget


text:
#> asset:artifact/0607.u_and_w_06/trigger/_index.d
# @private

#> tag
# @within function
#   asset:artifact/0607.u_and_w_06/trigger/**
    #declare tag Landing
    #declare tag LandingTarget


text:
#> asset:artifact/0607.u_and_w_06/trigger/3.1.bullet
#
# ビーム部
#
# @within function
#    asset:artifact/0607.u_and_w_06/trigger/3.main
#    asset:artifact/0607.u_and_w_06/trigger/3.1.bullet

# ここから先は神器側の効果の処理を書く

# 着弾検知
    execute positioned ~-0.5 ~-0.5 ~-0.5 if entity @e[type=#lib:living,type=!player,tag=!Uninterferable,dx=0] run tag @s add Landing
    execute unless block ^ ^ ^0.5 #lib:no_collision run tag @s add Landing

# ターゲットにタグ付与
    execute positioned ~-0.5 ~-0.5 ~-0.5 if entity @e[type=#lib:living,type=!player,tag=!Uninterferable,dx=0] run tag @e[type=#lib:living,type=!player,tag=!Uninterferable,dx=0,limit=1] add LandingTarget

# 演出
    particle dust 0.161 0.161 0.161 1 ~ ~ ~ 0 0 0 0 0

# 着弾
    execute if entity @s[tag=Landing] run function asset:artifact/0607.u_and_w_06/trigger/3.2.hit

# 再起
    execute positioned ^ ^ ^0.5 if entity @s[tag=!Landing,distance=..30] run function asset:artifact/0607.u_and_w_06/trigger/3.1.bullet


text:
#> asset:artifact/0556.catastrophe/register
#
# 神器プールへの登録処理
#
# @within tag/function asset:artifact/register

data modify storage asset:artifact RarityRegistry[4] append value 556


text:
#> asset:artifact/0556.catastrophe/give/1.trigger
#
# 神器の取得処理の呼び出し時に実行されるfunction
#
# @within tag/function asset:artifact/give

execute if data storage asset:context {id:556} run function asset:artifact/0556.catastrophe/give/2.give


text:
#> asset:artifact/0556.catastrophe/give/2.give
#
# 神器の作成部 ここでID等を定義する
#
# @user
# @within function asset:artifact/0556.catastrophe/give/1.trigger

# 神器の説明や消費MPなどをここで設定する。
# 最後にasset:artifact/common/giveを実行することで入手可能。

# 神器のID (int) スプレッドシートの値を入れる
    data modify storage asset:artifact ID set value 556
# 神器のベースアイテム
    data modify storage asset:artifact Item set value "minecraft:netherite_leggings"
# 神器の名前 (TextComponentString)
    data modify storage asset:artifact Name set value '[{"text":"†","color":"white"},{"text":"カタストロフィ","color":"gray"},{"text":"†","color":"white"}]'
# 神器の説明文 (TextComponentString[])
    data modify storage asset:artifact Lore set value ['[{"text":"崩壊の騎士のための装備"}]','[{"text":"傷付く度に、快楽を求めた"}]']
# MP以外の消費物 (TextComponentString) (オプション)
    # data modify storage asset:artifact CostText set value
# 使用回数 (int) (オプション)
    # data modify storage asset:artifact RemainingCount set value
# 神器を発動できるスロット (string) Wikiを参照
    data modify storage asset:artifact Slot set value "legs"
# 神器のトリガー (string) Wikiを参照
    data modify storage asset:artifact Trigger set value "onDamageFromEntity"
# 神器の発動条件 (TextComponentString) (オプション)
    data modify storage asset:artifact Condition set value '{"text":"繋がる総てを身に纏う"}'
# 攻撃に関する情報 -Damage量 (literal[]/literal) Wikiを参照 (オプション)
    data modify storage asset:artifact AttackInfo.Damage set value 600
# 攻撃に関する情報 -攻撃タイプ (string[]) Wikiを参照 (オプション)
    data modify storage asset:artifact AttackInfo.AttackType set value [Magic]
# 攻撃に関する情報 -攻撃属性 (string[]) Wikiを参照 (オプション)
    data modify storage asset:artifact AttackInfo.ElementType set value [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 5
# MP必要量 (int) (オプション)
    # data modify storage asset:artifact MPRequire set value
# 神器のクールダウン (int) (オプション)
    # data modify storage asset:artifact LocalCooldown 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
# 扱える神 (string[]) Wikiを参照
    data modify storage asset:artifact CanUsedGod set value ["Flora", "Urban", "Wi-ki"]
# カスタムNBT (NBTCompound) 追加で指定したいNBT (オプション)
    data modify storage asset:artifact CustomNBT set value {Unbreakable:1b,AttributeModifiers:[{AttributeName:"generic.armor",Name:"generic.armor",Amount:6,Operation:0,UUID:[I;1,1,556,4],Slot:"legs"},{AttributeName:"generic.armor_toughness",Name:"generic.armor_toughness",Amount:2.5,Operation:0,UUID:[I;1,1,556,4],Slot:"legs"}]}

# 神器の入手用function
    function asset:artifact/common/give


text:
#> asset:artifact/0772.dolphin_amulet/register
#
# 神器プールへの登録処理
#
# @within tag/function asset:artifact/register

data modify storage asset:artifact RarityRegistry[1] append value 772


text:
#> asset:artifact/0772.dolphin_amulet/give/1.trigger
#
# 神器の取得処理の呼び出し時に実行されるfunction
#
# @within tag/function asset:artifact/give

execute if data storage asset:context {id:772} run function asset:artifact/0772.dolphin_amulet/give/2.give


text:
#> asset:artifact/0772.dolphin_amulet/give/2.give
#
# 神器の作成部 ここでID等を定義する
#
# @user
# @within function asset:artifact/0772.dolphin_amulet/give/1.trigger

# 神器の説明や消費MPなどをここで設定する。
# 最後にasset:artifact/common/giveを実行することで入手可能。

# 神器のID (int) スプレッドシートの値を入れる
    data modify storage asset:artifact ID set value 772
# 神器のベースアイテム
    data modify storage asset:artifact Item set value "minecraft:stick"
# 神器の名前 (TextComponentString)
    data modify storage asset:artifact Name set value '{"text":"イルカのお守り","color":"#96FFFC"}'
# 神器の説明文 (TextComponentString[])
    data modify storage asset:artifact Lore set value ['{"text":"水面を跳ねるイルカを模したお守り。","color":"white"}','[{"text":"持っていると水中を悠々と泳ぐことができる。","color":"white"}]']
# MP以外の消費物 (TextComponentString) (オプション)
    # data modify storage asset:artifact CostText set value
# 使用回数 (int) (オプション)
    # data modify storage asset:artifact RemainingCount set value
# 神器を発動できるスロット (string) Wikiを参照
    data modify storage asset:artifact Slot set value "hotbar"
# 神器のトリガー (string) Wikiを参照
    data modify storage asset:artifact Trigger set value "passive"
# 神器の発動条件 (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 0
# MP必要量 (int) (オプション)
    # data modify storage asset:artifact MPRequire set value
# 神器のクールダウン (int) (オプション)
    data modify storage asset:artifact LocalCooldown set value 200
# グローバルクールダウン (int) (オプション)
    # data modify storage asset:artifact SpecialCooldown set value
# クールダウンによる使用不可のメッセージを非表示にするか否か (boolean) (オプション)
    data modify storage asset:artifact DisableCooldownMessage set value true
# MP不足による使用不可のメッセージを非表示にするか否か (boolean) (オプション)
    # data modify storage asset:artifact DisableMPMessage set value
# 扱える神 (string[]) Wikiを参照
    data modify storage asset:artifact CanUsedGod set value ["Flora", "Urban", "Wi-ki", "Rumor"]
# カスタムNBT (NBTCompound) 追加で指定したいNBT (オプション)
    # data modify storage asset:artifact CustomNBT set value {}

# 神器の入手用function
    function asset:artifact/common/give


text:
#> asset:artifact/0772.dolphin_amulet/trigger/2.check_condition
#
# 神器の発動条件をチェックします
#
# @within function asset:artifact/0772.dolphin_amulet/trigger/1.trigger

# ID指定する
    data modify storage asset:artifact TargetID set value 772
# 神器の基本的な条件の確認を行うfunction、成功している場合CanUsedタグが付く
    function asset:artifact/common/check_condition/hotbar
# 他にアイテム等確認する場合はここに書く

# CanUsedタグをチェックして3.main.mcfunctionを実行する
    execute if entity @s[tag=CanUsed] run function asset:artifact/0772.dolphin_amulet/trigger/3.main


text:
#> asset:artifact/0772.dolphin_amulet/trigger/3.main
#
# 神器のメイン処理部
#
# @within function asset:artifact/0772.dolphin_amulet/trigger/2.check_condition

# 基本的な使用時の処理(MP消費や使用回数の処理など)を行う
    function asset:artifact/common/use/hotbar

# ここから先は神器側の効果の処理を書く

# 演出
    particle dolphin ~ ~ ~ 1 1 1 0 140 normal @a

# 確率で音
    execute if predicate lib:random_pass_per/15 run playsound entity.dolphin.ambient_water neutral @s ~ ~ ~ 0.4 1 0

# エフェクト
    effect give @s dolphins_grace 11 0 true
    effect give @s water_breathing 11 0 true


text:
#> asset:artifact/0772.dolphin_amulet/trigger/1.trigger
#
# 指定したイベントタイミングで実行されるfunction
#
# @within tag/function asset:artifact/**

# storage asset:idの%slot%に装備している神器のIDが入っているので比較し、~/2.check_condition.mcfunctionを実行する
    execute if data storage asset:context id{hotbar:[772]} run function asset:artifact/0772.dolphin_amulet/trigger/2.check_condition


text:
#> asset:artifact/0565.heartland/register
#
# 神器プールへの登録処理
#
# @within tag/function asset:artifact/register

data modify storage asset:artifact RarityRegistry[2] append value 565


text:
#> asset:artifact/0565.heartland/give/1.trigger
#
# 神器の取得処理の呼び出し時に実行されるfunction
#
# @within tag/function asset:artifact/give

execute if data storage asset:context {id:565} run function asset:artifact/0565.heartland/give/2.give


text:
#> asset:artifact/0565.heartland/give/2.give
#
# 神器の作成部 ここでID等を定義する
#
# @user
# @within function asset:artifact/0565.heartland/give/1.trigger

# 神器の説明や消費MPなどをここで設定する。
# 最後にasset:artifact/common/giveを実行することで入手可能。

# 神器のID (int) スプレッドシートの値を入れる
    data modify storage asset:artifact ID set value 565
# 神器のベースアイテム
    data modify storage asset:artifact Item set value "minecraft:leather_boots"
# 神器の名前 (TextComponentString)
    data modify storage asset:artifact Name set value '[{"text":"ハート","color":"light_purple","bold":true},{"text":"ランド","color":"green","bold":true}]'
# 神器の説明文 (TextComponentString[])
    data modify storage asset:artifact Lore set value ['[{"text":"大地の加護を得た衣"}]','[{"text":"駆け出すものに"},{"text":"祝福","color":"light_purple"},{"text":"を。","color":"white"}]']
# MP以外の消費物 (TextComponentString) (オプション)
    # data modify storage asset:artifact CostText set value
# 使用回数 (int) (オプション)
    # data modify storage asset:artifact RemainingCount set value
# 神器を発動できるスロット (string) Wikiを参照
    data modify storage asset:artifact Slot set value "feet"
# 神器のトリガー (string) Wikiを参照
    data modify storage asset:artifact Trigger set value "passive"
# 神器の発動条件 (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 0
# MP必要量 (int) (オプション)
    # data modify storage asset:artifact MPRequire set value
# 神器のクールダウン (int) (オプション)
    # data modify storage asset:artifact LocalCooldown 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
# 扱える神 (string[]) Wikiを参照
    data modify storage asset:artifact CanUsedGod set value ["Flora", "Nyaptov", "Rumor"]
# カスタムNBT (NBTCompound) 追加で指定したいNBT (オプション)
    data modify storage asset:artifact CustomNBT set value {display:{color:26112},HideFlags:64,Unbreakable:1b,Enchantments:[{id:unbreaking,lvl:3},{id:protection,lvl:5},{id:mending,lvl:1}],AttributeModifiers:[{UUID:[I;1,1,565,3],AttributeName:"generic.armor",Name:"armor",Slot:feet,Operation:0,Amount:3},{UUID:[I;1,1,565,3],AttributeName:"generic.max_health",Name:"max_health",Slot:feet,Operation:0,Amount:4},{UUID:[I;1,1,565,3],AttributeName:"generic.movement_speed",Name:"speed",Slot:feet,Operation:1,Amount:0.3}]}

# 神器の入手用function
    function asset:artifact/common/give


text:
#> asset:artifact/0777.jade_armor/register
#
# 神器プールへの登録処理
#
# @within tag/function asset:artifact/register

data modify storage asset:artifact RarityRegistry[3] append value 777


text:
#> asset:artifact/0777.jade_armor/give/1.trigger
#
# 神器の取得処理の呼び出し時に実行されるfunction
#
# @within tag/function asset:artifact/give

execute if data storage asset:context {id:777} run function asset:artifact/0777.jade_armor/give/2.give


text:
#> asset:artifact/0777.jade_armor/give/2.give
#
# 神器の作成部 ここでID等を定義する
#
# @user
# @within function asset:artifact/0777.jade_armor/give/1.trigger

# 神器の説明や消費MPなどをここで設定する。
# 最後にasset:artifact/common/giveを実行することで入手可能。

# 神器のID (int) スプレッドシートの値を入れる
    data modify storage asset:artifact ID set value 777
# 神器のベースアイテム
    data modify storage asset:artifact Item set value "minecraft:leather_leggings"
# 神器の名前 (TextComponentString)
    data modify storage asset:artifact Name set value '{"text":"翡翠の鎧","color":"#38b48b"}'
# 神器の説明文 (TextComponentString[])
    data modify storage asset:artifact Lore set value ['[{"text":"美しい渓流で取れた翡翠で作られた鎧","color":"#38B48B"}]','[{"text":"装着者は水の加護を得る","color":"#38B48B"}]','[{"text":"水耐性+5% 水攻撃+5% ","color":"aqua"},{"text":"MP回復量+4% ","color":"green"}]','[{"text":"雷耐性-5%","color":"dark_red"}]']
# MP以外の消費物 (TextComponentString) (オプション)
    # data modify storage asset:artifact CostText set value
# 使用回数 (int) (オプション)
    # data modify storage asset:artifact RemainingCount set value
# 神器を発動できるスロット (string) Wikiを参照
    data modify storage asset:artifact Slot set value "legs"
# 神器のトリガー (string) Wikiを参照
    data modify storage asset:artifact Trigger set value "equipping"
# 神器の発動条件 (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 0
# MP必要量 (int) (オプション)
    # data modify storage asset:artifact MPRequire set value
# 神器のクールダウン (int) (オプション)
    # data modify storage asset:artifact LocalCooldown 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
# 扱える神 (string[]) Wikiを参照
    data modify storage asset:artifact CanUsedGod set value ["Flora", "Nyaptov", "Rumor"]
# カスタムNBT (NBTCompound) 追加で指定したいNBT (オプション)
    data modify storage asset:artifact CustomNBT set value {HideFlags:68,display:{color:3716235},Unbreakable:1b,AttributeModifiers:[{AttributeName:"generic.armor",Name:"generic.armor",Amount:6,Operation:0,UUID:[I;1,1,777,4],Slot:"legs"},{AttributeName:"generic.armor_toughness",Name:"generic.armor_toughness",Amount:1,Operation:0,UUID:[I;1,1,777,4],Slot:"legs"}]}

# 神器の入手用function
    function asset:artifact/common/give


text:
#> asset:artifact/0777.jade_armor/trigger/2.check_condition
#
# 神器の発動条件をチェックします
#
# @within function asset:artifact/0777.jade_armor/trigger/1.trigger

# 神器の基本的な条件の確認を行うfunction、成功している場合CanUsedタグが付く
    function asset:artifact/common/check_condition/legs
# 他にアイテム等確認する場合はここに書く

# CanUsedタグをチェックして3.main.mcfunctionを実行する
    execute if entity @s[tag=CanUsed] run function asset:artifact/0777.jade_armor/trigger/3.main


text:
#> asset:artifact/0777.jade_armor/trigger/3.main
#
# 神器のメイン処理部
#
# @within function asset:artifact/0777.jade_armor/trigger/2.check_condition

# 基本的な使用時の処理(MP消費や使用回数の処理など)を行う
    function asset:artifact/common/use/legs

# ここから先は神器側の効果の処理を書く

# 演出
    particle dust 0.220 0.706 0.545 1 ~ ~0.6 ~ 0.4 0.2 0.4 1 50 normal
    particle rain ~ ~0.6 ~ 0.4 0.2 0.4 0 60 normal @a
    playsound entity.player.splash player @a ~ ~ ~ 0.8 1.7 0
    playsound block.amethyst_block.hit player @a ~ ~ ~ 0.7 1.5 0

# 水耐性+5%
    data modify storage api: Argument.UUID set value [I;1,1,777,4]
    data modify storage api: Argument.Amount set value 0.05
    data modify storage api: Argument.Operation set value "multiply_base"
    function api:modifier/defense/water/add

# 水攻撃+5%
    data modify storage api: Argument.UUID set value [I;1,1,777,4]
    data modify storage api: Argument.Amount set value 0.05
    data modify storage api: Argument.Operation set value "multiply_base"
    function api:modifier/attack/water/add

# 雷耐性-5%
    data modify storage api: Argument.UUID set value [I;1,1,777,4]
    data modify storage api: Argument.Amount set value -0.05
    data modify storage api: Argument.Operation set value "multiply_base"
    function api:modifier/defense/thunder/add

# MP回復量+4%
    data modify storage api: Argument.UUID set value [I;1,1,777,4]
    data modify storage api: Argument.Amount set value 0.04
    data modify storage api: Argument.Operation set value "multiply_base"
    function api:modifier/mp_regen/add


text:
#> asset:artifact/0777.jade_armor/trigger/1.trigger
#
# 指定したイベントタイミングで実行されるfunction
#
# @within tag/function asset:artifact/**

# storage asset:idのlegsに装備している神器のIDが入っているので比較し、~/2.check_condition.mcfunctionを実行する
    execute if data storage asset:context id{legs:777} run function asset:artifact/0777.jade_armor/trigger/2.check_condition


text:
#> asset:artifact/0777.jade_armor/trigger/dis_equip/main
#
# 装備を外した時のメイン処理
#
# @within function asset:artifact/0777.jade_armor/trigger/dis_equip/

# 水耐性+5%
    data modify storage api: Argument.UUID set value [I;1,1,777,4]
    function api:modifier/defense/water/remove

# 水攻撃+5%
    data modify storage api: Argument.UUID set value [I;1,1,777,4]
    function api:modifier/attack/water/remove

# 雷耐性-5%
    data modify storage api: Argument.UUID set value [I;1,1,777,4]
    function api:modifier/defense/thunder/remove

# MP回復量+4%
    data modify storage api: Argument.UUID set value [I;1,1,777,4]
    function api:modifier/mp_regen/remove


text:
#> asset:artifact/0664.soul_fire_armor/register
#
# 神器プールへの登録処理
#
# @within tag/function asset:artifact/register

data modify storage asset:artifact RarityRegistry[4] append value 664


text:
#> asset:artifact/0664.soul_fire_armor/give/1.trigger
#
# 神器の取得処理の呼び出し時に実行されるfunction
#
# @within tag/function asset:artifact/give

execute if data storage asset:context {id:664} run function asset:artifact/0664.soul_fire_armor/give/2.give


text:
#> asset:artifact/0664.soul_fire_armor/give/2.give
#
# 神器の作成部 ここでID等を定義する
#
# @user
# @within function asset:artifact/0664.soul_fire_armor/give/1.trigger

# 神器の説明や消費MPなどをここで設定する。
# 最後にasset:artifact/common/giveを実行することで入手可能。

# 神器のID (int) スプレッドシートの値を入れる
    data modify storage asset:artifact ID set value 664
# 神器のベースアイテム
    data modify storage asset:artifact Item set value "minecraft:leather_helmet"
# 神器の名前 (TextComponentString)
    data modify storage asset:artifact Name set value '{"text":"魂炎纏","color":"#01A7AC","bold":true}'
# 神器の説明文 (TextComponentString[])
    data modify storage asset:artifact Lore set value ['{"text":"魂炎を纏う者に代償を。","color":"aqua"}','{"text":"代償背負いし者へ力を。","color":"aqua"}','[{"text":"物理攻撃+5% ","color":"dark_green"},{"text":"火耐性+10% 火攻撃+10% ","color":"red"}]','[{"text":"MP回復量+8% ","color":"green"},{"text":"最大体力-10%","color":"dark_red"}]']
# MP以外の消費物 (TextComponentString) (オプション)
    # data modify storage asset:artifact CostText set value
# 使用回数 (int) (オプション)
    # data modify storage asset:artifact RemainingCount set value
# 神器を発動できるスロット (string) Wikiを参照
    data modify storage asset:artifact Slot set value "head"
# 神器のトリガー (string) Wikiを参照
    data modify storage asset:artifact Trigger set value "equipping"
# 神器の発動条件 (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 0
# MP必要量 (int) (オプション)
    # data modify storage asset:artifact MPRequire set value
# 神器のクールダウン (int) (オプション)
    # data modify storage asset:artifact LocalCooldown 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
# 扱える神 (string[]) Wikiを参照
    data modify storage asset:artifact CanUsedGod set value ["Urban", "Nyaptov", "Rumor"]
# カスタムNBT (NBTCompound) 追加で指定したいNBT (オプション)
    data modify storage asset:artifact CustomNBT set value {HideFlags:68,display:{color:3071974},Unbreakable:1b,AttributeModifiers:[{AttributeName:"generic.armor",Name:"generic.armor",Amount:5,Operation:0,UUID:[I;1,1,664,6],Slot:"head"},{AttributeName:"generic.armor_toughness",Name:"generic.armor_toughness",Amount:2.5,Operation:0,UUID:[I;1,1,664,6],Slot:"head"}]}

# 神器の入手用function
    function asset:artifact/common/give


text:
#> asset:artifact/0664.soul_fire_armor/trigger/2.check_condition
#
# 神器の発動条件をチェックします
#
# @within function asset:artifact/0664.soul_fire_armor/trigger/1.trigger

# 神器の基本的な条件の確認を行うfunction、成功している場合CanUsedタグが付く
    function asset:artifact/common/check_condition/head
# 他にアイテム等確認する場合はここに書く

# CanUsedタグをチェックして3.main.mcfunctionを実行する
    execute if entity @s[tag=CanUsed] run function asset:artifact/0664.soul_fire_armor/trigger/3.main


text:
#> asset:artifact/0664.soul_fire_armor/trigger/3.main
#
# 神器のメイン処理部
#
# @within function asset:artifact/0664.soul_fire_armor/trigger/2.check_condition

# 基本的な使用時の処理(MP消費や使用回数の処理など)を行う
    function asset:artifact/common/use/head

# ここから先は神器側の効果の処理を書く

# 演出
    execute unless data storage asset:context id.all{head:664,chest:665,legs:666,feet:667} positioned ~ ~1.7 ~ facing entity @s eyes rotated ~ 0 run function asset:artifact/0664.soul_fire_armor/trigger/particle
    playsound block.fire.ambient player @a ~ ~ ~ 1.5 0.8 0
    playsound particle.soul_escape player @a ~ ~ ~ 2 0 0
    playsound minecraft:block.sculk_sensor.clicking player @a ~ ~ ~ 0.8 0
    playsound ogg:mob.vex.idle1 player @a ~ ~ ~ 1 0 0

# 物理攻撃+5%
    data modify storage api: Argument.UUID set value [I;1,1,664,6]
    data modify storage api: Argument.Amount set value 0.05
    data modify storage api: Argument.Operation set value "multiply_base"
    function api:modifier/attack/physical/add

# 火耐性+10%
    data modify storage api: Argument.UUID set value [I;1,1,664,6]
    data modify storage api: Argument.Amount set value 0.1
    data modify storage api: Argument.Operation set value "multiply_base"
    function api:modifier/defense/fire/add

# 火攻撃+10%
    data modify storage api: Argument.UUID set value [I;1,1,664,6]
    data modify storage api: Argument.Amount set value 0.1
    data modify storage api: Argument.Operation set value "multiply_base"
    function api:modifier/attack/fire/add

# MP回復量+8%
    data modify storage api: Argument.UUID set value [I;1,1,664,6]
    data modify storage api: Argument.Amount set value 0.08
    data modify storage api: Argument.Operation set value "multiply_base"
    function api:modifier/mp_regen/add

# 最大体力-10%
    attribute @s generic.max_health modifier add 00000001-0000-0001-0000-029800000006 "MaxHealthDown" -0.1 multiply_base

# 最大体力を反映するための即時回復
    effect give @s instant_health 1 0

# フルセット検知
    execute if data storage asset:context id.all{head:664,chest:665,legs:666,feet:667} run function asset:artifact/0664.soul_fire_armor/trigger/fullset/


text:
#> asset:artifact/0664.soul_fire_armor/trigger/particle
#
#
#
# @within function
#   asset:artifact/0664.soul_fire_armor/trigger/3.main
#   asset:artifact/0665.soul_fire_armor/trigger/3.main
#   asset:artifact/0666.soul_fire_armor/trigger/3.main
#   asset:artifact/0667.soul_fire_armor/trigger/3.main

# 収束するパーティクル
    execute rotated ~00 0 positioned ^ ^ ^1 facing entity @s eyes rotated ~ 0 run particle soul ~ ~ ~ ^ ^ ^100000000 0.0000000005 0
    execute rotated ~20 0 positioned ^ ^ ^1 facing entity @s eyes rotated ~ 0 run particle soul ~ ~ ~ ^ ^ ^100000000 0.0000000005 0
    execute rotated ~40 0 positioned ^ ^ ^1 facing entity @s eyes rotated ~ 0 run particle soul ~ ~ ~ ^ ^ ^100000000 0.0000000005 0
    execute rotated ~60 0 positioned ^ ^ ^1 facing entity @s eyes rotated ~ 0 run particle soul ~ ~ ~ ^ ^ ^100000000 0.0000000005 0
    execute rotated ~80 0 positioned ^ ^ ^1 facing entity @s eyes rotated ~ 0 run particle soul ~ ~ ~ ^ ^ ^100000000 0.0000000005 0
    execute rotated ~100 0 positioned ^ ^ ^1 facing entity @s eyes rotated ~ 0 run particle soul ~ ~ ~ ^ ^ ^100000000 0.0000000005 0
    execute rotated ~120 0 positioned ^ ^ ^1 facing entity @s eyes rotated ~ 0 run particle soul ~ ~ ~ ^ ^ ^100000000 0.0000000005 0
    execute rotated ~140 0 positioned ^ ^ ^1 facing entity @s eyes rotated ~ 0 run particle soul ~ ~ ~ ^ ^ ^100000000 0.0000000005 0
    execute rotated ~160 0 positioned ^ ^ ^1 facing entity @s eyes rotated ~ 0 run particle soul ~ ~ ~ ^ ^ ^100000000 0.0000000005 0
    execute rotated ~180 0 positioned ^ ^ ^1 facing entity @s eyes rotated ~ 0 run particle soul ~ ~ ~ ^ ^ ^100000000 0.0000000005 0
    execute rotated ~200 0 positioned ^ ^ ^1 facing entity @s eyes rotated ~ 0 run particle soul ~ ~ ~ ^ ^ ^100000000 0.0000000005 0
    execute rotated ~220 0 positioned ^ ^ ^1 facing entity @s eyes rotated ~ 0 run particle soul ~ ~ ~ ^ ^ ^100000000 0.0000000005 0
    execute rotated ~240 0 positioned ^ ^ ^1 facing entity @s eyes rotated ~ 0 run particle soul ~ ~ ~ ^ ^ ^100000000 0.0000000005 0
    execute rotated ~260 0 positioned ^ ^ ^1 facing entity @s eyes rotated ~ 0 run particle soul ~ ~ ~ ^ ^ ^100000000 0.0000000005 0
    execute rotated ~280 0 positioned ^ ^ ^1 facing entity @s eyes rotated ~ 0 run particle soul ~ ~ ~ ^ ^ ^100000000 0.0000000005 0
    execute rotated ~300 0 positioned ^ ^ ^1 facing entity @s eyes rotated ~ 0 run particle soul ~ ~ ~ ^ ^ ^100000000 0.0000000005 0
    execute rotated ~320 0 positioned ^ ^ ^1 facing entity @s eyes rotated ~ 0 run particle soul ~ ~ ~ ^ ^ ^100000000 0.0000000005 0
    execute rotated ~340 0 positioned ^ ^ ^1 facing entity @s eyes rotated ~ 0 run particle soul ~ ~ ~ ^ ^ ^100000000 0.0000000005 0

    execute rotated ~00 0 positioned ^ ^ ^1.5 facing entity @s eyes rotated ~ 0 run particle soul_fire_flame ~ ~ ~ ^ ^ ^100000000 0.00000000075 0
    execute rotated ~20 0 positioned ^ ^ ^1.5 facing entity @s eyes rotated ~ 0 run particle soul_fire_flame ~ ~ ~ ^ ^ ^100000000 0.00000000075 0
    execute rotated ~40 0 positioned ^ ^ ^1.5 facing entity @s eyes rotated ~ 0 run particle soul_fire_flame ~ ~ ~ ^ ^ ^100000000 0.00000000075 0
    execute rotated ~60 0 positioned ^ ^ ^1.5 facing entity @s eyes rotated ~ 0 run particle soul_fire_flame ~ ~ ~ ^ ^ ^100000000 0.00000000075 0
    execute rotated ~80 0 positioned ^ ^ ^1.5 facing entity @s eyes rotated ~ 0 run particle soul_fire_flame ~ ~ ~ ^ ^ ^100000000 0.00000000075 0
    execute rotated ~100 0 positioned ^ ^ ^1.5 facing entity @s eyes rotated ~ 0 run particle soul_fire_flame ~ ~ ~ ^ ^ ^100000000 0.00000000075 0
    execute rotated ~120 0 positioned ^ ^ ^1.5 facing entity @s eyes rotated ~ 0 run particle soul_fire_flame ~ ~ ~ ^ ^ ^100000000 0.00000000075 0
    execute rotated ~140 0 positioned ^ ^ ^1.5 facing entity @s eyes rotated ~ 0 run particle soul_fire_flame ~ ~ ~ ^ ^ ^100000000 0.00000000075 0
    execute rotated ~160 0 positioned ^ ^ ^1.5 facing entity @s eyes rotated ~ 0 run particle soul_fire_flame ~ ~ ~ ^ ^ ^100000000 0.00000000075 0
    execute rotated ~180 0 positioned ^ ^ ^1.5 facing entity @s eyes rotated ~ 0 run particle soul_fire_flame ~ ~ ~ ^ ^ ^100000000 0.00000000075 0
    execute rotated ~200 0 positioned ^ ^ ^1.5 facing entity @s eyes rotated ~ 0 run particle soul_fire_flame ~ ~ ~ ^ ^ ^100000000 0.00000000075 0
    execute rotated ~220 0 positioned ^ ^ ^1.5 facing entity @s eyes rotated ~ 0 run particle soul_fire_flame ~ ~ ~ ^ ^ ^100000000 0.00000000075 0
    execute rotated ~240 0 positioned ^ ^ ^1.5 facing entity @s eyes rotated ~ 0 run particle soul_fire_flame ~ ~ ~ ^ ^ ^100000000 0.00000000075 0
    execute rotated ~260 0 positioned ^ ^ ^1.5 facing entity @s eyes rotated ~ 0 run particle soul_fire_flame ~ ~ ~ ^ ^ ^100000000 0.00000000075 0
    execute rotated ~280 0 positioned ^ ^ ^1.5 facing entity @s eyes rotated ~ 0 run particle soul_fire_flame ~ ~ ~ ^ ^ ^100000000 0.00000000075 0
    execute rotated ~300 0 positioned ^ ^ ^1.5 facing entity @s eyes rotated ~ 0 run particle soul_fire_flame ~ ~ ~ ^ ^ ^100000000 0.00000000075 0
    execute rotated ~320 0 positioned ^ ^ ^1.5 facing entity @s eyes rotated ~ 0 run particle soul_fire_flame ~ ~ ~ ^ ^ ^100000000 0.00000000075 0
    execute rotated ~340 0 positioned ^ ^ ^1.5 facing entity @s eyes rotated ~ 0 run particle soul_fire_flame ~ ~ ~ ^ ^ ^100000000 0.00000000075 0


text:
#> asset:artifact/0664.soul_fire_armor/trigger/0.load
#
# 神器に利用するスコアボード等の初期化処理
#
# @within tag/function asset:artifact/load

#> 定義類はここに
# @within function asset:artifact/0664.soul_fire_armor/trigger/fullset/**
    scoreboard objectives add IG.AttackCT dummy


text:
#> asset:artifact/0664.soul_fire_armor/trigger/particle2
#
#
#
# @within function
#   asset:artifact/0664.soul_fire_armor/trigger/dis_equip/main
#   asset:artifact/0665.soul_fire_armor/trigger/dis_equip/main
#   asset:artifact/0666.soul_fire_armor/trigger/dis_equip/main
#   asset:artifact/0667.soul_fire_armor/trigger/dis_equip/main
#   asset:artifact/0664.soul_fire_armor/trigger/fullset/fullset_dis_equip

# 拡散するパーティクル
    execute rotated ~00 0 run particle soul ~ ~ ~ ^ ^ ^100000000 0.0000000005 0
    execute rotated ~20 0 run particle soul ~ ~ ~ ^ ^ ^100000000 0.0000000005 0
    execute rotated ~40 0 run particle soul ~ ~ ~ ^ ^ ^100000000 0.0000000005 0
    execute rotated ~60 0 run particle soul ~ ~ ~ ^ ^ ^100000000 0.0000000005 0
    execute rotated ~80 0 run particle soul ~ ~ ~ ^ ^ ^100000000 0.0000000005 0
    execute rotated ~100 0 run particle soul ~ ~ ~ ^ ^ ^100000000 0.0000000005 0
    execute rotated ~120 0 run particle soul ~ ~ ~ ^ ^ ^100000000 0.0000000005 0
    execute rotated ~140 0 run particle soul ~ ~ ~ ^ ^ ^100000000 0.0000000005 0
    execute rotated ~160 0 run particle soul ~ ~ ~ ^ ^ ^100000000 0.0000000005 0
    execute rotated ~180 0 run particle soul ~ ~ ~ ^ ^ ^100000000 0.0000000005 0
    execute rotated ~200 0 run particle soul ~ ~ ~ ^ ^ ^100000000 0.0000000005 0
    execute rotated ~220 0 run particle soul ~ ~ ~ ^ ^ ^100000000 0.0000000005 0
    execute rotated ~240 0 run particle soul ~ ~ ~ ^ ^ ^100000000 0.0000000005 0
    execute rotated ~260 0 run particle soul ~ ~ ~ ^ ^ ^100000000 0.0000000005 0
    execute rotated ~280 0 run particle soul ~ ~ ~ ^ ^ ^100000000 0.0000000005 0
    execute rotated ~300 0 run particle soul ~ ~ ~ ^ ^ ^100000000 0.0000000005 0
    execute rotated ~320 0 run particle soul ~ ~ ~ ^ ^ ^100000000 0.0000000005 0
    execute rotated ~340 0 run particle soul ~ ~ ~ ^ ^ ^100000000 0.0000000005 0

    execute rotated ~00 0 run particle soul_fire_flame ~ ~ ~ ^ ^ ^100000000 0.00000000075 0
    execute rotated ~20 0 run particle soul_fire_flame ~ ~ ~ ^ ^ ^100000000 0.00000000075 0
    execute rotated ~40 0 run particle soul_fire_flame ~ ~ ~ ^ ^ ^100000000 0.00000000075 0
    execute rotated ~60 0 run particle soul_fire_flame ~ ~ ~ ^ ^ ^100000000 0.00000000075 0
    execute rotated ~80 0 run particle soul_fire_flame ~ ~ ~ ^ ^ ^100000000 0.00000000075 0
    execute rotated ~100 0 run particle soul_fire_flame ~ ~ ~ ^ ^ ^100000000 0.00000000075 0
    execute rotated ~120 0 run particle soul_fire_flame ~ ~ ~ ^ ^ ^100000000 0.00000000075 0
    execute rotated ~140 0 run particle soul_fire_flame ~ ~ ~ ^ ^ ^100000000 0.00000000075 0
    execute rotated ~160 0 run particle soul_fire_flame ~ ~ ~ ^ ^ ^100000000 0.00000000075 0
    execute rotated ~180 0 run particle soul_fire_flame ~ ~ ~ ^ ^ ^100000000 0.00000000075 0
    execute rotated ~200 0 run particle soul_fire_flame ~ ~ ~ ^ ^ ^100000000 0.00000000075 0
    execute rotated ~220 0 run particle soul_fire_flame ~ ~ ~ ^ ^ ^100000000 0.00000000075 0
    execute rotated ~240 0 run particle soul_fire_flame ~ ~ ~ ^ ^ ^100000000 0.00000000075 0
    execute rotated ~260 0 run particle soul_fire_flame ~ ~ ~ ^ ^ ^100000000 0.00000000075 0
    execute rotated ~280 0 run particle soul_fire_flame ~ ~ ~ ^ ^ ^100000000 0.00000000075 0
    execute rotated ~300 0 run particle soul_fire_flame ~ ~ ~ ^ ^ ^100000000 0.00000000075 0
    execute rotated ~320 0 run particle soul_fire_flame ~ ~ ~ ^ ^ ^100000000 0.00000000075 0
    execute rotated ~340 0 run particle soul_fire_flame ~ ~ ~ ^ ^ ^100000000 0.00000000075 0


text:
#> asset:artifact/0664.soul_fire_armor/trigger/rejoin_process
#
# 使い方は必ずwikiを見ること
#
# @within tag/function asset:rejoin

# スケジュールループ再開
    execute if entity @s[tag=IG.Fullset] at @s run schedule function asset:artifact/0664.soul_fire_armor/trigger/fullset/loop 1t replace


text:
#> asset:artifact/0664.soul_fire_armor/trigger/1.trigger
#
# 指定したイベントタイミングで実行されるfunction
#
# @within tag/function asset:artifact/**

# storage asset:idのheadに装備している神器のIDが入っているので比較し、~/2.check_condition.mcfunctionを実行する
    execute if data storage asset:context id{head:664} run function asset:artifact/0664.soul_fire_armor/trigger/2.check_condition


text:
#> asset:artifact/0664.soul_fire_armor/trigger/_index.d
# @private

#> フルセットTag
# @within function
#   asset:artifact/0664.soul_fire_armor/trigger/**
#   asset:artifact/0664.soul_fire_armor/trigger/fullset/**
#   asset:artifact/0664.soul_fire_armor/trigger/dis_equip/main
#   asset:artifact/0665.soul_fire_armor/trigger/dis_equip/main
#   asset:artifact/0666.soul_fire_armor/trigger/dis_equip/main
#   asset:artifact/0667.soul_fire_armor/trigger/dis_equip/main
    #declare tag IG.Fullset


text:
#> asset:artifact/0664.soul_fire_armor/trigger/dis_equip/main
#
# 装備を外した時のメイン処理
#
# @within function asset:artifact/0664.soul_fire_armor/trigger/dis_equip/

# 演出
    execute if entity @s[tag=!IG.Fullset] positioned ~ ~1.7 ~ run function asset:artifact/0664.soul_fire_armor/trigger/particle2
    playsound block.fire.ambient player @a ~ ~ ~ 1.5 0.8 0
    playsound particle.soul_escape player @a ~ ~ ~ 2 0 0
    playsound ogg:mob.vex.idle1 player @a ~ ~ ~ 1 0 0

# 物理攻撃
    data modify storage api: Argument.UUID set value [I;1,1,664,6]
    function api:modifier/attack/physical/remove

# 火耐性
    data modify storage api: Argument.UUID set value [I;1,1,664,6]
    function api:modifier/defense/fire/remove

# 火攻撃
    data modify storage api: Argument.UUID set value [I;1,1,664,6]
    function api:modifier/attack/fire/remove

# MP回復量
    data modify storage api: Argument.UUID set value [I;1,1,664,6]
    function api:modifier/mp_regen/remove

# 最大体力
    attribute @s generic.max_health modifier remove 00000001-0000-0001-0000-029800000006

# フルセット解除
    execute if entity @s[tag=IG.Fullset] run function asset:artifact/0664.soul_fire_armor/trigger/fullset/fullset_dis_equip


text:
#> asset:artifact/0664.soul_fire_armor/trigger/fullset/melee_trigger
#
# フルセット検知して近接攻撃するよ
#
# @within tag/function asset:artifact/attack/melee

# 攻撃
    execute if entity @s[tag=IG.Fullset] unless entity @s[scores={IG.AttackCT=0..}] run function asset:artifact/0664.soul_fire_armor/trigger/fullset/melee


text:
#> asset:artifact/0664.soul_fire_armor/trigger/fullset/melee
#
# フルセット時の近接攻撃
#
# @within function asset:artifact/0664.soul_fire_armor/trigger/fullset/melee_trigger

# 演出
    execute as @e[type=#lib:living,type=!player,tag=Victim,distance=..6] at @s run function asset:artifact/0664.soul_fire_armor/trigger/fullset/particle
    execute at @e[type=#lib:living,type=!player,tag=Victim,distance=..6] run playsound block.fire.ambient player @a ~ ~ ~ 2 0.8 0
    execute at @e[type=#lib:living,type=!player,tag=Victim,distance=..6] run playsound particle.soul_escape player @a ~ ~ ~ 2 0 0
    execute at @e[type=#lib:living,type=!player,tag=Victim,distance=..6] run playsound minecraft:block.sculk_sensor.clicking player @a ~ ~ ~ 0.6 0.4 0

# ダメージ設定
        data modify storage lib: Argument.Damage set value 80.0f
        data modify storage lib: Argument.AttackType set value "Physical"
        data modify storage lib: Argument.ElementType set value "Fire"
        function lib:damage/modifier
        execute as @e[type=#lib:living,type=!player,tag=Victim,distance=..6] run function lib:damage/
# リセット
    function lib:damage/reset

# クールタイム設定
    scoreboard players set @s IG.AttackCT 40