diff --git a/Asset/data/asset/functions/artifact/1363.hydra_fang/give/1.trigger.mcfunction b/Asset/data/asset/functions/artifact/1363.hydra_fang/give/1.trigger.mcfunction new file mode 100644 index 0000000000..3d1aaef188 --- /dev/null +++ b/Asset/data/asset/functions/artifact/1363.hydra_fang/give/1.trigger.mcfunction @@ -0,0 +1,7 @@ +#> asset:artifact/1363.hydra_fang/give/1.trigger +# +# 神器の取得処理の呼び出し時に実行されるfunction +# +# @within tag/function asset:artifact/give + +execute if data storage asset:context {id:1363} run function asset:artifact/1363.hydra_fang/give/2.give \ No newline at end of file diff --git a/Asset/data/asset/functions/artifact/1363.hydra_fang/give/2.give.mcfunction b/Asset/data/asset/functions/artifact/1363.hydra_fang/give/2.give.mcfunction new file mode 100644 index 0000000000..08598fb9b6 --- /dev/null +++ b/Asset/data/asset/functions/artifact/1363.hydra_fang/give/2.give.mcfunction @@ -0,0 +1,73 @@ +#> asset:artifact/1363.hydra_fang/give/2.give +# +# 神器の作成部 ここでID等を定義する +# +# @user +# @within function asset:artifact/1363.hydra_fang/give/1.trigger + +# 神器の説明や消費MPなどをここで設定する。 +# 最後にasset:artifact/common/giveを実行することで入手可能。 + +# 神器のID (int) スプレッドシートの値を入れる + data modify storage asset:artifact ID set value 1363 +# 神器のベースアイテム + data modify storage asset:artifact Item set value "minecraft:stick" +# 神器の名前 (TextComponentString) + data modify storage asset:artifact Name set value '{"text":"ヒドラの毒牙","color":"#0e8012"}' +# 神器の説明文 (TextComponentString[]) + data modify storage asset:artifact Lore set value ['{"text":"攻撃対象に与ダメージと同じ属性で","color":"white"}','{"text":"与ダメージ量の100%分の追撃を与える(最大1000)","color":"white"}','{"text":"このダメージは自身のステータス補正の影響を受けない","color":"white"}','{"text":"猛毒が滴る魔獣の牙","color":"gray"}','{"text":"一度傷をつければ最後、死に至るまで獲物を逃がさない","color":"gray"}'] +# 消費アイテム ({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 "hotbar" +# 神器のトリガー (string) Wikiを参照 + data modify storage asset:artifact Trigger set value "onAttack" +# 効果が重複可能か否か (boolean) (オプション) + # data modify storage asset:artifact EnableDuplication set value +# 神器の発動条件 (TextComponentString) (オプション) + data modify storage asset:artifact Condition set value '{"text":"継続ダメージで攻撃","color":"white"}' +# 攻撃に関する情報 -Damage量 (literal[]/literal) Wikiを参照 (オプション) + data modify storage asset:artifact AttackInfo.Damage set value [0,1000] +# 攻撃に関する情報 -攻撃タイプ (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 "never" +# 攻撃に関する情報 -攻撃範囲 (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 +# MP回復量 (int) + # data modify storage asset:artifact MPHealWhenHit set value +# 神器のクールダウン (int) (オプション) + data modify storage asset:artifact LocalCooldown set value 10 +# 種別クールダウン ({Type: string, Duration: int}) (オプション) + # data modify storage asset:artifact TypeCooldown.Type set value + # data modify storage asset:artifact TypeCooldown.Duration set value +# 第二種別クールダウン ({Type: string, Duration: int}) (オプション) + # data modify storage asset:artifact SecondaryTypeCooldown.Type set value + # data modify storage asset:artifact SecondaryTypeCooldown.Duration set value +# グローバルクールダウン (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 true +# 破壊時の音を鳴らさないかどうか (boolean) (オプション) + # data modify storage asset:artifact DisableBreakSound set value +# 扱える神 (string[]) Wikiを参照 + data modify storage asset:artifact CanUsedGod set value ["Urban", "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/1363.hydra_fang/register.mcfunction b/Asset/data/asset/functions/artifact/1363.hydra_fang/register.mcfunction new file mode 100644 index 0000000000..9c3eb274f0 --- /dev/null +++ b/Asset/data/asset/functions/artifact/1363.hydra_fang/register.mcfunction @@ -0,0 +1,8 @@ +#> asset:artifact/1363.hydra_fang/register +# +# 神器プールへの登録処理 +# +# @within tag/function asset:artifact/register + +data modify storage asset:artifact RarityRegistry[2] append value [1363] +data modify storage asset:artifact RarityRegistryWithColor.Red[2] append value [1363] diff --git a/Asset/data/asset/functions/artifact/1363.hydra_fang/trigger/1.trigger.mcfunction b/Asset/data/asset/functions/artifact/1363.hydra_fang/trigger/1.trigger.mcfunction new file mode 100644 index 0000000000..77f0253a3b --- /dev/null +++ b/Asset/data/asset/functions/artifact/1363.hydra_fang/trigger/1.trigger.mcfunction @@ -0,0 +1,8 @@ +#> asset:artifact/1363.hydra_fang/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:[1363]} run function asset:artifact/1363.hydra_fang/trigger/2.check_condition \ No newline at end of file diff --git a/Asset/data/asset/functions/artifact/1363.hydra_fang/trigger/2.check_condition.mcfunction b/Asset/data/asset/functions/artifact/1363.hydra_fang/trigger/2.check_condition.mcfunction new file mode 100644 index 0000000000..1a5c905419 --- /dev/null +++ b/Asset/data/asset/functions/artifact/1363.hydra_fang/trigger/2.check_condition.mcfunction @@ -0,0 +1,25 @@ +#> asset:artifact/1363.hydra_fang/trigger/2.check_condition +# +# 神器の発動条件をチェックします +# +# @within function asset:artifact/1363.hydra_fang/trigger/1.trigger + +# ID指定する + data modify storage asset:artifact TargetID set value 1363 +# 神器の基本的な条件の確認を行うfunction、成功している場合CanUsedタグが付く + function asset:artifact/common/check_condition/hotbar +# 他にアイテム等確認する場合はここに書く + +# CanUsedでないならreturn + execute if entity @s[tag=!CanUsed] run return fail + +# IsDoT:trueでないならreturn + execute unless data storage asset:context Attack{IsDoT:true} run tag @s remove CanUsed + execute if entity @s[tag=!CanUsed] run return fail + +# Victimが64ブロック以内にいなければreturn + execute unless entity @e[type=#lib:living_without_player,tag=Victim,tag=!Uninterferable,distance=..64] run tag @s remove CanUsed + execute if entity @s[tag=!CanUsed] run return fail + +# 3.main.mcfunctionを実行する + function asset:artifact/1363.hydra_fang/trigger/3.main diff --git a/Asset/data/asset/functions/artifact/1363.hydra_fang/trigger/3.main.mcfunction b/Asset/data/asset/functions/artifact/1363.hydra_fang/trigger/3.main.mcfunction new file mode 100644 index 0000000000..06659ca3b0 --- /dev/null +++ b/Asset/data/asset/functions/artifact/1363.hydra_fang/trigger/3.main.mcfunction @@ -0,0 +1,24 @@ +#> asset:artifact/1363.hydra_fang/trigger/3.main +# +# 神器のメイン処理部 +# +# @within function asset:artifact/1363.hydra_fang/trigger/2.check_condition + +# 基本的な使用時の処理(MP消費や使用回数の処理など)を行う + function asset:artifact/common/use/hotbar + +# ここから先は神器側の効果の処理を書く + +# SingleDamageSession Open + function api:damage/single_damage_session/open + +# 再帰でそれぞれに与えたダメージのN%分のダメージを与える + data modify storage asset:temp Temp.To set from storage asset:context Attack.To + data modify storage asset:temp Temp.Amounts set from storage asset:context Attack.Amounts + function asset:artifact/1363.hydra_fang/trigger/recursive + +# SingleDamageSession Close + function api:damage/single_damage_session/close + +# リセット + data remove storage asset:temp Temp diff --git a/Asset/data/asset/functions/artifact/1363.hydra_fang/trigger/damage.m.mcfunction b/Asset/data/asset/functions/artifact/1363.hydra_fang/trigger/damage.m.mcfunction new file mode 100644 index 0000000000..ecb27bb719 --- /dev/null +++ b/Asset/data/asset/functions/artifact/1363.hydra_fang/trigger/damage.m.mcfunction @@ -0,0 +1,30 @@ +#> asset:artifact/1363.hydra_fang/trigger/damage.m +# +# +# +# @within function asset:artifact/1363.hydra_fang/trigger/recursive + +#> Private +# @private + #declare score_holder $Damage + #declare score_holder $MaxDamage + +# ダメージ量を取得 + execute store result score $Damage Temporary run data get storage asset:temp Temp.Amounts[-1] 100 + +# ダメージ上限 (100倍) + scoreboard players set $MaxDamage Temporary 100000 + +# 自身のステータス補正を無視するダメージ + execute store result storage api: Argument.Damage float 0.01 run scoreboard players operation $Damage Temporary < $MaxDamage Temporary + data modify storage api: Argument.AttackType set from storage asset:context Attack.AttackType + data modify storage api: Argument.ElementType set from storage asset:context Attack.ElementType + data modify storage api: Argument.BypassModifier set value true + function api:damage/modifier + data modify storage api: Argument.BypassModifier set value false + $execute as @e[type=#lib:living_without_player,tag=Victim,tag=!Uninterferable,scores={MobUUID=$(MobUUID)},distance=..64,limit=1] run function api:damage/ + function api:damage/reset + +# リセット + scoreboard players reset $Damage Temporary + scoreboard players reset $MaxDamage Temporary diff --git a/Asset/data/asset/functions/artifact/1363.hydra_fang/trigger/recursive.mcfunction b/Asset/data/asset/functions/artifact/1363.hydra_fang/trigger/recursive.mcfunction new file mode 100644 index 0000000000..0470da5a58 --- /dev/null +++ b/Asset/data/asset/functions/artifact/1363.hydra_fang/trigger/recursive.mcfunction @@ -0,0 +1,18 @@ +#> asset:artifact/1363.hydra_fang/trigger/recursive +# +# +# +# @within function +# asset:artifact/1363.hydra_fang/trigger/3.main +# asset:artifact/1363.hydra_fang/trigger/recursive + +# Attack.Toの最後尾のIDから順にダメージを与える + data modify storage asset:temp Temp.MobUUID set from storage asset:temp Temp.To[-1] + function asset:artifact/1363.hydra_fang/trigger/damage.m with storage asset:temp Temp + +# 最後尾の要素を削除 + data remove storage asset:temp Temp.To[-1] + data remove storage asset:temp Temp.Amounts[-1] + +# 要素がまだあれば再帰 + execute if data storage asset:temp Temp.To[0] run function asset:artifact/1363.hydra_fang/trigger/recursive diff --git a/Asset/data/asset/tags/functions/artifact/attack.json b/Asset/data/asset/tags/functions/artifact/attack.json index 2758c71743..b454749aaf 100644 --- a/Asset/data/asset/tags/functions/artifact/attack.json +++ b/Asset/data/asset/tags/functions/artifact/attack.json @@ -1,5 +1,6 @@ { "values": [ + "asset:artifact/1363.hydra_fang/trigger/1.trigger", "asset:artifact/0897.lightning_broach/trigger/1.trigger", "asset:artifact/0554.catastrophe/attack/1.trigger", "asset:artifact/1110.lantern_of_firefly/trigger/1.trigger", @@ -8,4 +9,4 @@ "asset:artifact/0664.soul_fire_armor/attack/1.trigger", "asset:artifact/0724.oblivious_snow/attack/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 29367d4386..3af842939c 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/1363.hydra_fang/give/1.trigger", "asset:artifact/1401.yuzu/give/1.trigger", "asset:artifact/1144.cradle_of_azure_moon/give/1.trigger", "asset:artifact/1317.oblivious_feather/give/1.trigger", @@ -519,4 +520,4 @@ "asset:artifact/0735.collision_plate/give/1.trigger", "asset:artifact/0745.blade_of_whirlwind/give/1.trigger" ] -} \ No newline at end of file +} diff --git a/Asset/data/asset/tags/functions/artifact/register.json b/Asset/data/asset/tags/functions/artifact/register.json index 5f27f1abc4..d297c4c38f 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/1363.hydra_fang/register", "asset:artifact/1401.yuzu/register", "asset:artifact/1144.cradle_of_azure_moon/register", "asset:artifact/1317.oblivious_feather/register", @@ -297,4 +298,4 @@ "asset:artifact/1027.fire_of_rebirth/register", "asset:artifact/1111.rod_o_redeem/register" ] -} \ No newline at end of file +}