diff --git a/.github/workflows/datapack-linter.yml b/.github/workflows/datapack-linter.yml index be919c1e84..9c6f37ce6a 100644 --- a/.github/workflows/datapack-linter.yml +++ b/.github/workflows/datapack-linter.yml @@ -51,9 +51,10 @@ jobs: REPOSITORY: ProjectTSB/TheSkyBlessing BRANCH: master VISIBILITY_FILTER: | - function@asset:artifact/ARTIFACT_NAME/trigger/2.check_condition - function@asset:artifact/ARTIFACT_NAME/trigger/3.main - function@asset:artifact/ARTIFACT_NAME/give/2.give + function@asset:artifact/ARTIFACT_NAME/TRIGGER_NAME/ + function@asset:artifact/ARTIFACT_NAME/TRIGGER_NAME/check + function@asset:artifact/ARTIFACT_NAME/enroll_pool + function@asset:artifact/ARTIFACT_NAME/register function@asset:effect/EFFECT_NAME/register function@asset:effect/EFFECT_NAME/given/ function@asset:effect/EFFECT_NAME/tick/ diff --git a/TheSkyBlessing/data/api/functions/artifact/box/from_id.mcfunction b/TheSkyBlessing/data/api/functions/artifact/box/from_id.mcfunction index 0c4dca2cca..885eb44a52 100644 --- a/TheSkyBlessing/data/api/functions/artifact/box/from_id.mcfunction +++ b/TheSkyBlessing/data/api/functions/artifact/box/from_id.mcfunction @@ -7,14 +7,10 @@ # validate execute unless data storage api: Argument.ID run tellraw @a [{"storage":"global","nbt":"Prefix.ERROR"},{"text":"引数が足りません","color":"white"},{"text":" ID","color":"red"}] -# 既存にasset:context idが存在する場合に備えて退避させる - function asset_manager:common/context/id/stash -# 代入 - data modify storage asset:context id set from storage api: Argument.ID - data modify storage asset:context Type set value "box" + execute unless data storage api: Argument.ID run return fail # 呼び出し - execute if data storage api: Argument.ID run function #asset:artifact/give -# 退避させたasset:context idを戻す - function asset_manager:common/context/id/pop + data modify storage api: Argument.Type set value "box" + function api:artifact/core/from_id # リセット data remove storage api: Argument.ID + data remove storage api: Argument.Type diff --git a/TheSkyBlessing/data/api/functions/artifact/box/from_rarity.mcfunction b/TheSkyBlessing/data/api/functions/artifact/box/from_rarity.mcfunction index 9a4d8bdf88..00d103e339 100644 --- a/TheSkyBlessing/data/api/functions/artifact/box/from_rarity.mcfunction +++ b/TheSkyBlessing/data/api/functions/artifact/box/from_rarity.mcfunction @@ -7,8 +7,10 @@ # validate execute unless data storage api: Argument.Rarity run tellraw @a [{"storage":"global","nbt":"Prefix.ERROR"},{"text":"引数が足りません","color":"white"},{"text":" Rarity","color":"red"}] + execute unless data storage api: Argument.Rarity run return fail # 呼び出し - data modify storage asset:context Type set value "box" - execute if data storage api: Argument.Rarity run function asset_manager:artifact/give/ + data modify storage api: Argument.Type set value "box" + function api:artifact/core/from_rarity/ # リセット data remove storage api: Argument.Rarity + data remove storage api: Argument.Type diff --git a/TheSkyBlessing/data/api/functions/artifact/core/from_id.mcfunction b/TheSkyBlessing/data/api/functions/artifact/core/from_id.mcfunction new file mode 100644 index 0000000000..70b973ff8c --- /dev/null +++ b/TheSkyBlessing/data/api/functions/artifact/core/from_id.mcfunction @@ -0,0 +1,22 @@ +#> api:artifact/core/from_id +# @within function +# api:artifact/*/from_id +# api:artifact/core/from_rarity/foreach + +# 既存にasset:context idが存在する場合に備えて退避させる + function asset_manager:common/context/id/stash + +# ID + data modify storage asset:context id set from storage api: Argument.ID +# データ登録 + function asset_manager:artifact/give/register.m with storage asset:context +# validate + execute unless data storage asset:artifact ID run tellraw @a [{"storage":"global","nbt":"Prefix.ERROR"},{"text":"このIDの神器は存在しません "},{"storage":"api:","nbt":"Argument.ID","color":"red"}] +# データをfill + execute if data storage asset:artifact ID run data modify storage asset:context Type set from storage api: Argument.Type + execute if data storage asset:artifact ID if data storage asset:context {Type:"drop"} run data modify storage asset:context Important set from storage api: Argument.Important +# 神器をgive + execute if data storage asset:artifact ID run function asset_manager:artifact/give/ + +# 退避させたasset:context idを戻す + function asset_manager:common/context/id/pop diff --git a/TheSkyBlessing/data/api/functions/artifact/core/from_rarity/.mcfunction b/TheSkyBlessing/data/api/functions/artifact/core/from_rarity/.mcfunction new file mode 100644 index 0000000000..a1d8a68d04 --- /dev/null +++ b/TheSkyBlessing/data/api/functions/artifact/core/from_rarity/.mcfunction @@ -0,0 +1,56 @@ +#> api:artifact/core/from_rarity/ +# +# +# +# @within function api:artifact/*/from_rarity + +#> For calc +# @private + #declare score_holder $CandidateLength + #declare score_holder $Argument.Index + #declare score_holder $Pulls + +# セッション開ける + function lib:array/session/open +# 該当レアリティのデータを取得 + execute if data storage api: Argument{Rarity:1} run data modify storage lib: Array set from storage asset:artifact ShardPool[1] + execute if data storage api: Argument{Rarity:2} run data modify storage lib: Array set from storage asset:artifact ShardPool[2] + execute if data storage api: Argument{Rarity:3} run data modify storage lib: Array set from storage asset:artifact ShardPool[3] + execute if data storage api: Argument{Rarity:4} run data modify storage lib: Array set from storage asset:artifact ShardPool[4] +# データサイズを取得 + execute store result score $CandidateLength Temporary if data storage lib: Array[] +# 対象Indexを決定 + execute if data storage api: Argument{Rarity:1} run data modify storage lib: Args.key set value "artifact_lv-1" + execute if data storage api: Argument{Rarity:2} run data modify storage lib: Args.key set value "artifact_lv-2" + execute if data storage api: Argument{Rarity:3} run data modify storage lib: Args.key set value "artifact_lv-3" + execute if data storage api: Argument{Rarity:4} run data modify storage lib: Args.key set value "artifact_lv-4" + execute store result storage lib: Args.max int 1 run scoreboard players get $CandidateLength Temporary + execute store result storage lib: Args.scarcity_history_size int 0.35 run scoreboard players get $CandidateLength Temporary + execute store result score $Argument.Index Lib run function lib:random/with_biased/manual.m with storage lib: Args +# 候補データを操作して対象Indexを-1に持ってくる + function lib:array/move +# 一旦リセット + data modify storage asset:artifact Picks set from storage lib: Array[-1] + function lib:array/session/close +# 候補データの再設定 + function lib:array/session/open + data modify storage lib: Array set from storage asset:artifact Picks +# プル数を乱数により設定 +# $Pulls = floor( $CandidateLength * 0.30~0.70(e2) ) / e2 + execute store result score $CandidateLength Temporary if data storage lib: Array[] + scoreboard players remove $CandidateLength Temporary 1 + execute store result score $Pulls Temporary run function lib:random/ + scoreboard players operation $Pulls Temporary %= $41 Const + scoreboard players add $Pulls Temporary 30 + scoreboard players operation $Pulls Temporary *= $CandidateLength Temporary + scoreboard players operation $Pulls Temporary /= $100 Const +# シャッフルして取り出す + data modify storage asset:artifact Type set from storage asset:context Type + function lib:array/shuffle + execute if score $Pulls Temporary matches 0.. if data storage lib: Array[0] run function api:artifact/core/from_rarity/foreach +# リセット + function lib:array/session/close + scoreboard players reset $CandidateLength Temporary + scoreboard players reset $Pulls Temporary + data remove storage lib: Args + data remove storage asset:artifact Picks diff --git a/TheSkyBlessing/data/api/functions/artifact/core/from_rarity/foreach.mcfunction b/TheSkyBlessing/data/api/functions/artifact/core/from_rarity/foreach.mcfunction new file mode 100644 index 0000000000..59545adc3f --- /dev/null +++ b/TheSkyBlessing/data/api/functions/artifact/core/from_rarity/foreach.mcfunction @@ -0,0 +1,16 @@ +#> asset_manager:artifact/give/foreach +# @within function asset_manager:artifact/give/* + +#> private +# @private + #declare score_holder $Pulls + +# 引数に代入 + data modify storage api: Argument.ID set from storage lib: Array[-1] +# 呼び出し + function api:artifact/core/from_id + +# リセット&ループ + data remove storage lib: Array[-1] + scoreboard players remove $Pulls Temporary 1 + execute if score $Pulls Temporary matches 0.. run function api:artifact/core/from_rarity/foreach diff --git a/TheSkyBlessing/data/api/functions/artifact/give/from_id.mcfunction b/TheSkyBlessing/data/api/functions/artifact/give/from_id.mcfunction index fb7dc8a5e9..ab005682c3 100644 --- a/TheSkyBlessing/data/api/functions/artifact/give/from_id.mcfunction +++ b/TheSkyBlessing/data/api/functions/artifact/give/from_id.mcfunction @@ -7,14 +7,10 @@ # validate execute unless data storage api: Argument.ID run tellraw @a [{"storage":"global","nbt":"Prefix.ERROR"},{"text":"引数が足りません","color":"white"},{"text":" ID","color":"red"}] -# 既存にasset:context idが存在する場合に備えて退避させる - function asset_manager:common/context/id/stash -# 代入 - data modify storage asset:context id set from storage api: Argument.ID - data modify storage asset:context Type set value "give" + execute unless data storage api: Argument.ID run return fail # 呼び出し - execute if data storage api: Argument.ID run function #asset:artifact/give -# 退避させたasset:context idを戻す - function asset_manager:common/context/id/pop + data modify storage api: Argument.Type set value "give" + function api:artifact/core/from_id # リセット data remove storage api: Argument.ID + data remove storage api: Argument.Type diff --git a/TheSkyBlessing/data/api/functions/artifact/give/from_rarity.mcfunction b/TheSkyBlessing/data/api/functions/artifact/give/from_rarity.mcfunction index 3286ff99fc..c2750fc220 100644 --- a/TheSkyBlessing/data/api/functions/artifact/give/from_rarity.mcfunction +++ b/TheSkyBlessing/data/api/functions/artifact/give/from_rarity.mcfunction @@ -7,8 +7,10 @@ # validate execute unless data storage api: Argument.Rarity run tellraw @a [{"storage":"global","nbt":"Prefix.ERROR"},{"text":"引数が足りません","color":"white"},{"text":" Rarity","color":"red"}] + execute unless data storage api: Argument.Rarity run return fail # 呼び出し - data modify storage asset:context Type set value "give" - execute if data storage api: Argument.Rarity run function asset_manager:artifact/give/ + data modify storage api: Argument.Type set value "give" + function api:artifact/core/from_rarity/ # リセット data remove storage api: Argument.Rarity + data remove storage api: Argument.Type diff --git a/TheSkyBlessing/data/api/functions/artifact/replace/from_id.mcfunction b/TheSkyBlessing/data/api/functions/artifact/replace/from_id.mcfunction index 8a571b4c4b..5d9943d4fa 100644 --- a/TheSkyBlessing/data/api/functions/artifact/replace/from_id.mcfunction +++ b/TheSkyBlessing/data/api/functions/artifact/replace/from_id.mcfunction @@ -3,22 +3,18 @@ # 神器Assetの入手処理を叩く処理 # # @input storage api: -# Argument.ID -# Argument.Slot +# Argument.ID : int +# Argument.Slot? : string (default: "mainhand") # @api # validate execute unless data storage api: Argument.ID run tellraw @a [{"storage":"global","nbt":"Prefix.ERROR"},{"text":"引数が足りません","color":"white"},{"text":" ID","color":"red"}] -# 既存にasset:context idが存在する場合に備えて退避させる - function asset_manager:common/context/id/stash -# 代入 - data modify storage asset:context id set from storage api: Argument.ID - execute if data storage api: Argument.Slot run data modify storage asset:context Slot set from storage api: Argument.Slot - data modify storage asset:context Type set value "replace" + execute unless data storage api: Argument.ID run return fail + execute unless data storage api: Argument.Slot run data modify storage api: Argument.Slot set value "mainhand" # 呼び出し - execute if data storage api: Argument.ID run function #asset:artifact/give -# 退避させたasset:context idを戻す - function asset_manager:common/context/id/pop + data modify storage api: Argument.Type set value "replace" + function api:artifact/core/from_id # リセット data remove storage api: Argument.ID data remove storage api: Argument.Slot + data remove storage api: Argument.Type diff --git a/TheSkyBlessing/data/api/functions/artifact/replace/from_rarity.mcfunction b/TheSkyBlessing/data/api/functions/artifact/replace/from_rarity.mcfunction index 3c65c27a16..f0ce78fb4b 100644 --- a/TheSkyBlessing/data/api/functions/artifact/replace/from_rarity.mcfunction +++ b/TheSkyBlessing/data/api/functions/artifact/replace/from_rarity.mcfunction @@ -2,13 +2,19 @@ # # 神器Assetの入手処理を叩く処理 # -# @input storage api: Argument.Rarity +# @input storage api: +# Argument.Rarity : (1 | 2 | 3 | 4) +# Argument.Slot? : string (default: "mainhand") # @api # validate execute unless data storage api: Argument.Rarity run tellraw @a [{"storage":"global","nbt":"Prefix.ERROR"},{"text":"引数が足りません","color":"white"},{"text":" Rarity","color":"red"}] + execute unless data storage api: Argument.Rarity run return fail + execute unless data storage api: Argument.Slot run data modify storage api: Argument.Slot set value "mainhand" # 呼び出し - data modify storage asset:context Type set value "replace" - execute if data storage api: Argument.Rarity run function asset_manager:artifact/give/ + data modify storage api: Argument.Type set value "replace" + function api:artifact/core/from_rarity/ # リセット data remove storage api: Argument.Rarity + data remove storage api: Argument.Slot + data remove storage api: Argument.Type diff --git a/TheSkyBlessing/data/api/functions/artifact/spawn/from_id.mcfunction b/TheSkyBlessing/data/api/functions/artifact/spawn/from_id.mcfunction index a902bd56d1..d1e6263bab 100644 --- a/TheSkyBlessing/data/api/functions/artifact/spawn/from_id.mcfunction +++ b/TheSkyBlessing/data/api/functions/artifact/spawn/from_id.mcfunction @@ -3,23 +3,18 @@ # 神器Assetの入手処理を叩く処理 # # @input storage api: -# Argument.Rarity : (1 | 2 | 3 | 4) -# Argument.Important : boolean +# Argument.ID : int +# Argument.Important? : boolean (default: false) # @api # validate execute unless data storage api: Argument.ID run tellraw @a [{"storage":"global","nbt":"Prefix.ERROR"},{"text":"引数が足りません","color":"white"},{"text":" ID","color":"red"}] -# 既存にasset:context idが存在する場合に備えて退避させる - function asset_manager:common/context/id/stash -# 代入 - data modify storage asset:context id set from storage api: Argument.ID - data modify storage asset:context Type set value "drop" - data modify storage asset:context Important set from storage api: Argument.Important + execute unless data storage api: Argument.ID run return fail + execute unless data storage api: Argument.Important run data modify storage api: Argument.Important set value false # 呼び出し - execute if data storage api: Argument.ID run function #asset:artifact/give -# 退避させたasset:context idを戻す - function asset_manager:common/context/id/pop + data modify storage api: Argument.Type set value "drop" + function api:artifact/core/from_id # リセット - data remove storage asset:context Important data remove storage api: Argument.ID data remove storage api: Argument.Important + data remove storage api: Argument.Type diff --git a/TheSkyBlessing/data/api/functions/artifact/spawn/from_rarity.mcfunction b/TheSkyBlessing/data/api/functions/artifact/spawn/from_rarity.mcfunction index 4bec0faf18..b204baf2c0 100644 --- a/TheSkyBlessing/data/api/functions/artifact/spawn/from_rarity.mcfunction +++ b/TheSkyBlessing/data/api/functions/artifact/spawn/from_rarity.mcfunction @@ -4,16 +4,17 @@ # # @input storage api: # Argument.Rarity : (1 | 2 | 3 | 4) -# Argument.Important : boolean +# Argument.Important? : boolean (default: false) # @api # validate execute unless data storage api: Argument.Rarity run tellraw @a [{"storage":"global","nbt":"Prefix.ERROR"},{"text":"引数が足りません","color":"white"},{"text":" Rarity","color":"red"}] + execute unless data storage api: Argument.Rarity run return fail + execute unless data storage api: Argument.Important run data modify storage api: Argument.Important set value false # 呼び出し - data modify storage asset:context Type set value "drop" - data modify storage asset:context Important set from storage api: Argument.Important - execute if data storage api: Argument.Rarity run function asset_manager:artifact/give/ + data modify storage api: Argument.Type set value "drop" + function api:artifact/core/from_rarity/ # リセット - data remove storage asset:context Important data remove storage api: Argument.Rarity data remove storage api: Argument.Important + data remove storage api: Argument.Type diff --git a/TheSkyBlessing/data/api/functions/damage/core/attack.mcfunction b/TheSkyBlessing/data/api/functions/damage/core/attack.mcfunction index bc3bef748e..b48cd28e61 100644 --- a/TheSkyBlessing/data/api/functions/damage/core/attack.mcfunction +++ b/TheSkyBlessing/data/api/functions/damage/core/attack.mcfunction @@ -31,7 +31,6 @@ # リセット scoreboard players reset $Health Temporary scoreboard players reset $Damage Temporary - data remove storage api: ModifiedDamage # MP 回復 execute if data storage api: Argument.AdditionalMPHeal if entity @s[type=!player] as @a if score @s UserID = $LatestModifiedUser UserID run function api:damage/core/mp_heal diff --git a/TheSkyBlessing/data/api/functions/damage/core/trigger_events/non-player/kill_and_death/push_from_attacker.mcfunction b/TheSkyBlessing/data/api/functions/damage/core/trigger_events/non-player/kill_and_death/push_from_attacker.mcfunction index 93e77e278c..d6cef44a3b 100644 --- a/TheSkyBlessing/data/api/functions/damage/core/trigger_events/non-player/kill_and_death/push_from_attacker.mcfunction +++ b/TheSkyBlessing/data/api/functions/damage/core/trigger_events/non-player/kill_and_death/push_from_attacker.mcfunction @@ -8,9 +8,9 @@ execute unless predicate api:mob/has_forward_target store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].MobEvents.Death[-1].From int 1 run scoreboard players get @s UserID # プレイヤーにイベントを追加する function oh_my_dat:please - data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].ArtifactEvents.Killed append value {Type: "api",IsVanilla:false} - execute store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].ArtifactEvents.Killed[-1].To int 1 run scoreboard players get $DamagerUUID Temporary - execute store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].ArtifactEvents.Killed[-1].Amount double 0.01 run scoreboard players get $Damage Temporary - data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].ArtifactEvents.Killed[-1].AttackType set from storage api: Argument.AttackType - data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].ArtifactEvents.Killed[-1].ElementType set from storage api: Argument.ElementType - data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].ArtifactEvents.Killed[-1].Metadata set from storage api: Argument.Metadata + data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].ArtifactEvents.Kill append value {Type: "api",IsVanilla:false} + execute store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].ArtifactEvents.Kill[-1].To int 1 run scoreboard players get $DamagerUUID Temporary + execute store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].ArtifactEvents.Kill[-1].Amount double 0.01 run scoreboard players get $Damage Temporary + data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].ArtifactEvents.Kill[-1].AttackType set from storage api: Argument.AttackType + data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].ArtifactEvents.Kill[-1].ElementType set from storage api: Argument.ElementType + data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].ArtifactEvents.Kill[-1].Metadata set from storage api: Argument.Metadata diff --git a/TheSkyBlessing/data/api/functions/modifier/core/fall_damage/add.mcfunction b/TheSkyBlessing/data/api/functions/modifier/core/defense/fall/add.mcfunction similarity index 64% rename from TheSkyBlessing/data/api/functions/modifier/core/fall_damage/add.mcfunction rename to TheSkyBlessing/data/api/functions/modifier/core/defense/fall/add.mcfunction index 4a79b6c36d..a1320958e5 100644 --- a/TheSkyBlessing/data/api/functions/modifier/core/fall_damage/add.mcfunction +++ b/TheSkyBlessing/data/api/functions/modifier/core/defense/fall/add.mcfunction @@ -1,15 +1,15 @@ -#> api:modifier/core/fall_damage/add +#> api:modifier/core/defense/fall/add # # # -# @within function api:modifier/fall_damage/add +# @within function api:modifier/defense/fall/add # UserStorage呼び出し function oh_my_dat:please # 無ければ入れる - execute unless data storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].Attributes.Modifier.FallDamage[0] run data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].Attributes.Modifier.FallDamage set value [] + execute unless data storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].Attributes.Modifier.Defense.Fall[0] run data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].Attributes.Modifier.Defense.Fall set value [] # 同じUUIDのModifierを削除する - data modify storage api: Modifiers set from storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].Attributes.Modifier.FallDamage + data modify storage api: Modifiers set from storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].Attributes.Modifier.Defense.Fall data modify storage api: NewModifiers set value [] data remove storage api: Removed function api:modifier/core/common/remove_modifier @@ -17,13 +17,13 @@ # 新しいModifierを追加する data modify storage api: Modifiers append value {} data modify storage api: Modifiers[-1].UUID set from storage api: Argument.UUID - data modify storage api: Modifiers[-1].Amount set from storage api: Argument.Amount + execute store result storage api: Modifiers[-1].Amount double -0.001 run data get storage api: Argument.Amount 1000 data modify storage api: Modifiers[-1].Operation set from storage api: Argument.Operation - data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].Attributes.Modifier.FallDamage set from storage api: Modifiers + data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].Attributes.Modifier.Defense.Fall set from storage api: Modifiers # データを更新 - data modify storage api: Base set from storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].Attributes.Default.FallDamage + data modify storage api: Base set from storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].Attributes.Default.Defense.Fall function api:modifier/core/common/update_modifier/ - data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].Attributes.Value.FallDamage set from storage api: Modifier + data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].Attributes.Value.Defense.Fall set from storage api: Modifier # リセット data remove storage api: Base data remove storage api: Modifiers diff --git a/TheSkyBlessing/data/api/functions/modifier/core/fall_damage/remove.mcfunction b/TheSkyBlessing/data/api/functions/modifier/core/defense/fall/remove.mcfunction similarity index 61% rename from TheSkyBlessing/data/api/functions/modifier/core/fall_damage/remove.mcfunction rename to TheSkyBlessing/data/api/functions/modifier/core/defense/fall/remove.mcfunction index 2ae464476e..0ae1731e0e 100644 --- a/TheSkyBlessing/data/api/functions/modifier/core/fall_damage/remove.mcfunction +++ b/TheSkyBlessing/data/api/functions/modifier/core/defense/fall/remove.mcfunction @@ -1,25 +1,27 @@ -#> api:modifier/core/fall_damage/remove +#> api:modifier/core/defense/fall/remove # # # -# @within function api:modifier/fall_damage/remove +# @within function api:modifier/defense/fall/remove # UserStorage呼び出し function oh_my_dat:please # 無ければ入れる - data modify storage api: Modifiers set from storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].Attributes.Modifier.FallDamage + data modify storage api: Modifiers set from storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].Attributes.Modifier.Defense.Fall # 配列の初期化 data modify storage api: NewModifiers set value [] data remove storage api: Removed # フィルタ function api:modifier/core/common/remove_modifier +# 削除されたデータの加工 + execute store result storage api: Removed.Amount double -0.001 run data get storage api: Removed.Amount 1000 # 新しい配列を戻す data modify storage api: Modifiers set from storage api: NewModifiers - data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].Attributes.Modifier.FallDamage set from storage api: Modifiers + data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].Attributes.Modifier.Defense.Fall set from storage api: Modifiers # データの更新 - data modify storage api: Base set from storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].Attributes.Default.FallDamage + data modify storage api: Base set from storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].Attributes.Default.Defense.Fall function api:modifier/core/common/update_modifier/ - data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].Attributes.Value.FallDamage set from storage api: Modifier + data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].Attributes.Value.Defense.Fall set from storage api: Modifier # リセット data remove storage api: Base data remove storage api: Modifiers diff --git a/TheSkyBlessing/data/api/functions/modifier/fall_damage/add.mcfunction b/TheSkyBlessing/data/api/functions/modifier/defense/fall/add.mcfunction similarity index 88% rename from TheSkyBlessing/data/api/functions/modifier/fall_damage/add.mcfunction rename to TheSkyBlessing/data/api/functions/modifier/defense/fall/add.mcfunction index 1b85836218..1e2a237a55 100644 --- a/TheSkyBlessing/data/api/functions/modifier/fall_damage/add.mcfunction +++ b/TheSkyBlessing/data/api/functions/modifier/defense/fall/add.mcfunction @@ -1,4 +1,4 @@ -#> api:modifier/fall_damage/add +#> api:modifier/defense/fall/add # # # @@ -13,7 +13,7 @@ # データ検証 function api:modifier/core/common/validate # データが正しいなら入れる - execute if data storage api: Argument.UUID if data storage api: Argument.Amount if data storage api: Argument.Operation run function api:modifier/core/fall_damage/add + execute if data storage api: Argument.UUID if data storage api: Argument.Amount if data storage api: Argument.Operation run function api:modifier/core/defense/fall/add # リセット data remove storage api: Argument.UUID data remove storage api: Argument.Amount diff --git a/TheSkyBlessing/data/api/functions/modifier/defense/fall/get.mcfunction b/TheSkyBlessing/data/api/functions/modifier/defense/fall/get.mcfunction new file mode 100644 index 0000000000..27be821675 --- /dev/null +++ b/TheSkyBlessing/data/api/functions/modifier/defense/fall/get.mcfunction @@ -0,0 +1,12 @@ +#> api:modifier/defense/fall/get +# +# +# +# @input as player +# @output storage api: +# Return.Defense.Fall : double +# @api + +function api:mob/apply_to_forward_target/with_idempotent.m {CB:"oh_my_dat:please",IsForwardedOnly:true} +data remove storage api: Return.Defense.Fall +data modify storage api: Return.Defense.Fall set from storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].Attributes.Value.Defense.Fall diff --git a/TheSkyBlessing/data/api/functions/modifier/fall_damage/remove.mcfunction b/TheSkyBlessing/data/api/functions/modifier/defense/fall/remove.mcfunction similarity index 87% rename from TheSkyBlessing/data/api/functions/modifier/fall_damage/remove.mcfunction rename to TheSkyBlessing/data/api/functions/modifier/defense/fall/remove.mcfunction index 2277d1bb85..18ec60cd05 100644 --- a/TheSkyBlessing/data/api/functions/modifier/fall_damage/remove.mcfunction +++ b/TheSkyBlessing/data/api/functions/modifier/defense/fall/remove.mcfunction @@ -1,4 +1,4 @@ -#> api:modifier/fall_damage/remove +#> api:modifier/defense/fall/remove # # # @@ -12,6 +12,6 @@ # データ検証 execute unless data storage api: Argument.UUID run tellraw @a [{"storage":"global","nbt":"Prefix.ERROR"},{"text":"引数が足りません","color":"white"},{"text":" UUID","color":"red"}] # データが正しいなら消す - execute if data storage api: Argument.UUID run function api:modifier/core/fall_damage/remove + execute if data storage api: Argument.UUID run function api:modifier/core/defense/fall/remove # リセット data remove storage api: Argument.UUID diff --git a/TheSkyBlessing/data/api/functions/modifier/fall_damage/get.mcfunction b/TheSkyBlessing/data/api/functions/modifier/fall_damage/get.mcfunction deleted file mode 100644 index c15cd601a1..0000000000 --- a/TheSkyBlessing/data/api/functions/modifier/fall_damage/get.mcfunction +++ /dev/null @@ -1,12 +0,0 @@ -#> api:modifier/fall_damage/get -# -# -# -# @input as player -# @output storage api: -# Return.FallDamage : double -# @api - -function api:mob/apply_to_forward_target/with_idempotent.m {CB:"oh_my_dat:please",IsForwardedOnly:true} -data remove storage api: Return.FallDamage -data modify storage api: Return.FallDamage set from storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].Attributes.Value.FallDamage diff --git a/TheSkyBlessing/data/asset/functions/_index.d.mcfunction b/TheSkyBlessing/data/asset/functions/_index.d.mcfunction new file mode 100644 index 0000000000..6fb5357d27 --- /dev/null +++ b/TheSkyBlessing/data/asset/functions/_index.d.mcfunction @@ -0,0 +1,6 @@ +#> asset:_index.d +# @private + +#> 処理用一時storage +# @within * asset:** + #declare storage asset:temp diff --git a/TheSkyBlessing/data/asset/functions/artifact/alias/65500/attack/.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/alias/65500/attack/.mcfunction new file mode 100644 index 0000000000..bd66f8a149 --- /dev/null +++ b/TheSkyBlessing/data/asset/functions/artifact/alias/65500/attack/.mcfunction @@ -0,0 +1,8 @@ +#> asset:artifact/alias/65500/attack/ +# +# 神器のトリガー処理のエイリアス +# +# @within asset_manager:artifact/triggers/attack/attack.m + +# 元の登録処理を呼び出す + function asset:artifact/ex/attack/ diff --git a/TheSkyBlessing/data/asset/functions/artifact/alias/65500/attack/check.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/alias/65500/attack/check.mcfunction new file mode 100644 index 0000000000..0ba05596bd --- /dev/null +++ b/TheSkyBlessing/data/asset/functions/artifact/alias/65500/attack/check.mcfunction @@ -0,0 +1,8 @@ +#> asset:artifact/alias/65500/attack/check +# +# 神器の使用条件の確認処理のエイリアス +# +# @within asset_manager:artifact/triggers/attack/check.m + +# 元の登録処理を呼び出す + function asset:artifact/ex/attack/check diff --git a/TheSkyBlessing/data/asset/functions/artifact/alias/65500/dis_equip.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/alias/65500/dis_equip.mcfunction new file mode 100644 index 0000000000..593092c1df --- /dev/null +++ b/TheSkyBlessing/data/asset/functions/artifact/alias/65500/dis_equip.mcfunction @@ -0,0 +1,8 @@ +#> asset:artifact/alias/65500/dis_equip +# +# 神器の装備解除時の処理のエイリアス +# +# @within asset_manager:artifact/triggers/dis_equip/dis_equip.m + +# 元の登録処理を呼び出す + function asset:artifact/ex/dis_equip/ diff --git a/TheSkyBlessing/data/asset/functions/artifact/alias/65500/equip.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/alias/65500/equip.mcfunction new file mode 100644 index 0000000000..ea39aac9af --- /dev/null +++ b/TheSkyBlessing/data/asset/functions/artifact/alias/65500/equip.mcfunction @@ -0,0 +1,8 @@ +#> asset:artifact/alias/65500/equip +# +# 神器の装備時の処理のエイリアス +# +# @within asset_manager:artifact/triggers/equip/equip.m + +# 元の登録処理を呼び出す + function asset:artifact/ex/equip/ diff --git a/TheSkyBlessing/data/asset/functions/artifact/alias/65500/register.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/alias/65500/register.mcfunction new file mode 100644 index 0000000000..faf2db6b10 --- /dev/null +++ b/TheSkyBlessing/data/asset/functions/artifact/alias/65500/register.mcfunction @@ -0,0 +1,8 @@ +#> asset:artifact/alias/65500/register +# +# 神器の生成処理のエイリアス +# +# @within asset_manager:artifact/triggers/register.m + +# 元の登録処理を呼び出す + function asset:artifact/ex/register diff --git a/TheSkyBlessing/data/asset/functions/artifact/alias/65501/register.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/alias/65501/register.mcfunction new file mode 100644 index 0000000000..199d5c1c9c --- /dev/null +++ b/TheSkyBlessing/data/asset/functions/artifact/alias/65501/register.mcfunction @@ -0,0 +1,7 @@ +#> asset:artifact/alias/65501/register +# +# 神器の生成処理のエイリアス +# +# @within function asset_manager:artifact/give/register.m + +function asset:artifact/ex.1/register diff --git a/TheSkyBlessing/data/asset/functions/artifact/alias/65501/shot/.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/alias/65501/shot/.mcfunction new file mode 100644 index 0000000000..cb122b9f7c --- /dev/null +++ b/TheSkyBlessing/data/asset/functions/artifact/alias/65501/shot/.mcfunction @@ -0,0 +1,8 @@ +#> asset:artifact/alias/65501/shot/ +# +# 神器のトリガー処理のエイリアス +# +# @within asset_manager:artifact/triggers/shot/shot.m + +# 元の登録処理を呼び出す + function asset:artifact/ex.1/shot/ diff --git a/TheSkyBlessing/data/asset/functions/artifact/alias/65501/shot/check.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/alias/65501/shot/check.mcfunction new file mode 100644 index 0000000000..4d255116ce --- /dev/null +++ b/TheSkyBlessing/data/asset/functions/artifact/alias/65501/shot/check.mcfunction @@ -0,0 +1,8 @@ +#> asset:artifact/alias/65501/shot/check +# +# 神器の使用条件の確認処理のエイリアス +# +# @within asset_manager:artifact/triggers/shot/check.m + +# 元の登録処理を呼び出す + function asset:artifact/ex.1/shot/check diff --git a/TheSkyBlessing/data/asset/functions/artifact/common/_index.d.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/common/_index.d.mcfunction deleted file mode 100644 index fa00d3aa64..0000000000 --- a/TheSkyBlessing/data/asset/functions/artifact/common/_index.d.mcfunction +++ /dev/null @@ -1,14 +0,0 @@ -#> asset:artifact/common/_index.d -# @private - -#> ReturnTag -# @within function -# asset:artifact/*/*/2.check_condition -# asset:artifact/*/*/2.check_condition/** -# asset_manager:artifact/check/ -# asset:artifact/common/use/* - #declare tag CanUsed - -#> 処理用一時storage -# @within * asset:** - #declare storage asset:temp \ No newline at end of file diff --git a/TheSkyBlessing/data/asset/functions/artifact/common/check_condition/auto.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/common/check_condition/auto.mcfunction deleted file mode 100644 index 3224b75678..0000000000 --- a/TheSkyBlessing/data/asset/functions/artifact/common/check_condition/auto.mcfunction +++ /dev/null @@ -1,11 +0,0 @@ -#> asset:artifact/common/check_condition/auto -# -# 神器の基礎的な発動条件をチェックします -# -# 発動可能な場合実行者に`CanUsed`のtagが付与されます。 -# -# @output tag @s CanUsed -# @within function asset:artifact/*/*/2.check_condition - -data modify storage asset:artifact TargetSlot set value 'auto' -function asset_manager:artifact/check/ \ No newline at end of file diff --git a/TheSkyBlessing/data/asset/functions/artifact/common/check_condition/chest.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/common/check_condition/chest.mcfunction deleted file mode 100644 index 9f3235c900..0000000000 --- a/TheSkyBlessing/data/asset/functions/artifact/common/check_condition/chest.mcfunction +++ /dev/null @@ -1,11 +0,0 @@ -#> asset:artifact/common/check_condition/chest -# -# チェストプレートの神器の基礎的な発動条件をチェックします -# -# 発動可能な場合実行者に`CanUsed`のtagが付与されます。 -# -# @output tag @s CanUsed -# @within function asset:artifact/*/*/2.check_condition - -data modify storage asset:artifact TargetSlot set value 'chest' -function asset_manager:artifact/check/ \ No newline at end of file diff --git a/TheSkyBlessing/data/asset/functions/artifact/common/check_condition/feet.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/common/check_condition/feet.mcfunction deleted file mode 100644 index e9923184d9..0000000000 --- a/TheSkyBlessing/data/asset/functions/artifact/common/check_condition/feet.mcfunction +++ /dev/null @@ -1,11 +0,0 @@ -#> asset:artifact/common/check_condition/feet -# -# ブーツの神器の基礎的な発動条件をチェックします -# -# 発動可能な場合実行者に`CanUsed`のtagが付与されます。 -# -# @output tag @s CanUsed -# @within function asset:artifact/*/*/2.check_condition - -data modify storage asset:artifact TargetSlot set value 'feet' -function asset_manager:artifact/check/ \ No newline at end of file diff --git a/TheSkyBlessing/data/asset/functions/artifact/common/check_condition/head.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/common/check_condition/head.mcfunction deleted file mode 100644 index fae76193ee..0000000000 --- a/TheSkyBlessing/data/asset/functions/artifact/common/check_condition/head.mcfunction +++ /dev/null @@ -1,11 +0,0 @@ -#> asset:artifact/common/check_condition/head -# -# ヘルメットの神器の基礎的な発動条件をチェックします -# -# 発動可能な場合実行者に`CanUsed`のtagが付与されます。 -# -# @output tag @s CanUsed -# @within function asset:artifact/*/*/2.check_condition - -data modify storage asset:artifact TargetSlot set value 'head' -function asset_manager:artifact/check/ \ No newline at end of file diff --git a/TheSkyBlessing/data/asset/functions/artifact/common/check_condition/hotbar.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/common/check_condition/hotbar.mcfunction deleted file mode 100644 index ff7a3a2c4c..0000000000 --- a/TheSkyBlessing/data/asset/functions/artifact/common/check_condition/hotbar.mcfunction +++ /dev/null @@ -1,11 +0,0 @@ -#> asset:artifact/common/check_condition/hotbar -# -# ヘルメットの神器の基礎的な発動条件をチェックします -# -# 発動可能な場合実行者に`CanUsed`のtagが付与されます。 -# -# @output tag @s CanUsed -# @within function asset:artifact/*/*/2.check_condition - -data modify storage asset:artifact TargetSlot set value 'hotbar' -function asset_manager:artifact/check/ \ No newline at end of file diff --git a/TheSkyBlessing/data/asset/functions/artifact/common/check_condition/legs.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/common/check_condition/legs.mcfunction deleted file mode 100644 index 9a955612e0..0000000000 --- a/TheSkyBlessing/data/asset/functions/artifact/common/check_condition/legs.mcfunction +++ /dev/null @@ -1,11 +0,0 @@ -#> asset:artifact/common/check_condition/legs -# -# レギンスの神器の基礎的な発動条件をチェックします -# -# 発動可能な場合実行者に`CanUsed`のtagが付与されます。 -# -# @output tag @s CanUsed -# @within function asset:artifact/*/*/2.check_condition - -data modify storage asset:artifact TargetSlot set value 'legs' -function asset_manager:artifact/check/ \ No newline at end of file diff --git a/TheSkyBlessing/data/asset/functions/artifact/common/check_condition/mainhand.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/common/check_condition/mainhand.mcfunction deleted file mode 100644 index 28001a2e68..0000000000 --- a/TheSkyBlessing/data/asset/functions/artifact/common/check_condition/mainhand.mcfunction +++ /dev/null @@ -1,12 +0,0 @@ -#> asset:artifact/common/check_condition/mainhand -# -# メインハンドの神器の基礎的な発動条件をチェックします -# -# 発動可能な場合実行者に`CanUsed`のtagが付与されます。 -# -# @input as player -# @output tag @s CanUsed -# @within function asset:artifact/*/*/2.check_condition - -data modify storage asset:artifact TargetSlot set value 'mainhand' -function asset_manager:artifact/check/ \ No newline at end of file diff --git a/TheSkyBlessing/data/asset/functions/artifact/common/check_condition/offhand.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/common/check_condition/offhand.mcfunction deleted file mode 100644 index 2f6aa94f6b..0000000000 --- a/TheSkyBlessing/data/asset/functions/artifact/common/check_condition/offhand.mcfunction +++ /dev/null @@ -1,11 +0,0 @@ -#> asset:artifact/common/check_condition/offhand -# -# オフハンドの神器の基礎的な発動条件をチェックします -# -# 発動可能な場合実行者に`CanUsed`のtagが付与されます。 -# -# @output tag @s CanUsed -# @within function asset:artifact/*/*/2.check_condition - -data modify storage asset:artifact TargetSlot set value 'offhand' -function asset_manager:artifact/check/ \ No newline at end of file diff --git a/TheSkyBlessing/data/asset/functions/artifact/common/give.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/common/give.mcfunction deleted file mode 100644 index 3b4338520e..0000000000 --- a/TheSkyBlessing/data/asset/functions/artifact/common/give.mcfunction +++ /dev/null @@ -1,79 +0,0 @@ -#> asset:artifact/common/give -# -# 神器を入手します -# -# @input storage asset:artifact -# ID : int -# Item : ItemID -# Name : TextComponent -# Lore : TextComponent[] -# RemainingCount? : int -# Slot : Slot -# Trigger : Trigger -# Condition? : TextComponent -# EnableDuplication? : boolean -# AttackInfo? : Component -# MPCost : int -# MPRequire? : int -# ConsumeItem? : {Item: TextComponent, Count: int, Extra?: TextComponent} -# LocalCooldown? : int -# TypeCooldown? : {Type: enum(CooldownType), Duration: int} -# SpecialCooldown? : int -# DisableCooldownMessage? : boolean -# DisableMPMessage? : boolean -# DisableBreakSound? : boolean -# CanUsedGod : God[] -# @output item 神器 -# @within function asset:artifact/*/give/2.give - -#> Inv -# @private -#declare score_holder $InvSize - -# storage検証 - execute unless data storage asset:artifact ID run tellraw @a [{"storage":"global","nbt":"Prefix.ERROR"},{"text":"引数が足りません"},{"text":" ID","color":"red"}] - execute unless data storage asset:artifact Item run tellraw @a [{"storage":"global","nbt":"Prefix.ERROR"},{"text":"引数が足りません"},{"text":" Item","color":"red"}] - execute unless data storage asset:artifact Name run tellraw @a [{"storage":"global","nbt":"Prefix.ERROR"},{"text":"引数が足りません"},{"text":" Name","color":"red"}] - execute unless data storage asset:artifact Lore run tellraw @a [{"storage":"global","nbt":"Prefix.ERROR"},{"text":"引数が足りません"},{"text":" Lore","color":"red"}] - execute unless data storage asset:artifact Slot run tellraw @a [{"storage":"global","nbt":"Prefix.ERROR"},{"text":"引数が足りません"},{"text":" Slot","color":"red"}] - execute unless data storage asset:artifact Trigger run tellraw @a [{"storage":"global","nbt":"Prefix.ERROR"},{"text":"引数が足りません"},{"text":" Trigger","color":"red"}] - execute unless data storage asset:artifact MPCost unless data storage asset:artifact MPHealWhenHit run tellraw @a [{"storage":"global","nbt":"Prefix.ERROR"},{"text":"引数が足りません"},{"text":" MPCost","color":"red"},{"text":" or","color":"white"},{"text":" MPHealWhenHit","color":"red"}] - execute unless data storage asset:artifact CanUsedGod run tellraw @a [{"storage":"global","nbt":"Prefix.ERROR"},{"text":"引数が足りません"},{"text":" CanUsedGod","color":"red"}] -# 各データ設定 - function asset_manager:artifact/create/set_data -# 神器排出 - execute unless data storage asset:context Type run data modify storage asset:context Type set value "give" - # execute if data storage asset:context {Type:"box"} // 何もする必要がない - execute if data storage asset:context {Type:"drop"} run loot spawn ~ ~ ~ mine 10000 0 10000 debug_stick - execute if data storage asset:context {Type:"drop",Important:true} as @e[type=item,nbt={Item:{tag:{TSB:{}}}},distance=..0.3] run function asset:artifact/common/protect - execute if data storage asset:context {Type:"give"} run function api:inventory/get_size - execute if data storage asset:context {Type:"give"} if score $InvSize Lib matches ..35 run loot give @s mine 10000 0 10000 debug_stick - execute if data storage asset:context {Type:"give"} if score $InvSize Lib matches 36.. run loot spawn ~ ~ ~ mine 10000 0 10000 debug_stick - execute if data storage asset:context {Type:"give"} if score $InvSize Lib matches 36.. as @e[type=item,nbt={Item:{tag:{TSB:{}}}},distance=..0.3] run function asset:artifact/common/protect - execute if data storage asset:context {Type:"replace"} run function asset:artifact/common/replace - -# リセット - scoreboard players reset $InvSize Lib - data remove storage asset:context Type - data remove storage asset:artifact ID - data remove storage asset:artifact Item - data remove storage asset:artifact Name - data remove storage asset:artifact Lore - data remove storage asset:artifact RemainingCount - data remove storage asset:artifact Slot - data remove storage asset:artifact Trigger - data remove storage asset:artifact Condition - data remove storage asset:artifact EnableDuplication - data remove storage asset:artifact AttackInfo - data remove storage asset:artifact MPCost - data remove storage asset:artifact MPRequire - data remove storage asset:artifact ConsumeItem - data remove storage asset:artifact CanUsedGod - data remove storage asset:artifact CustomNBT - data remove storage asset:artifact LocalCooldown - data remove storage asset:artifact TypeCooldown - data remove storage asset:artifact SpecialCooldown - data remove storage asset:artifact DisableCooldownMessage - data remove storage asset:artifact DisableMPMessage - data remove storage asset:artifact DisableBreakSound - data remove storage asset:artifact MPHealWhenHit diff --git a/TheSkyBlessing/data/asset/functions/artifact/common/use/auto.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/common/use/auto.mcfunction deleted file mode 100644 index 30eff10b0e..0000000000 --- a/TheSkyBlessing/data/asset/functions/artifact/common/use/auto.mcfunction +++ /dev/null @@ -1,9 +0,0 @@ -#> asset:artifact/common/use/auto -# -# 神器の使用時共通処理を実行します -# -# @within function asset:artifact/*/*/3.main - -data modify storage asset:artifact TargetSlot set value 'auto' -function asset_manager:artifact/use/ -tag @s remove CanUsed \ No newline at end of file diff --git a/TheSkyBlessing/data/asset/functions/artifact/common/use/chest.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/common/use/chest.mcfunction deleted file mode 100644 index f1d6b7467c..0000000000 --- a/TheSkyBlessing/data/asset/functions/artifact/common/use/chest.mcfunction +++ /dev/null @@ -1,9 +0,0 @@ -#> asset:artifact/common/use/chest -# -# チェストプレートの神器の使用時共通処理を実行します -# -# @within function asset:artifact/*/*/3.main - -data modify storage asset:artifact TargetSlot set value 'chest' -function asset_manager:artifact/use/ -tag @s remove CanUsed \ No newline at end of file diff --git a/TheSkyBlessing/data/asset/functions/artifact/common/use/feet.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/common/use/feet.mcfunction deleted file mode 100644 index 1c0b80e92b..0000000000 --- a/TheSkyBlessing/data/asset/functions/artifact/common/use/feet.mcfunction +++ /dev/null @@ -1,9 +0,0 @@ -#> asset:artifact/common/use/feet -# -# ブーツの神器の使用時共通処理を実行します -# -# @within function asset:artifact/*/*/3.main - -data modify storage asset:artifact TargetSlot set value 'feet' -function asset_manager:artifact/use/ -tag @s remove CanUsed \ No newline at end of file diff --git a/TheSkyBlessing/data/asset/functions/artifact/common/use/head.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/common/use/head.mcfunction deleted file mode 100644 index bae73d00a0..0000000000 --- a/TheSkyBlessing/data/asset/functions/artifact/common/use/head.mcfunction +++ /dev/null @@ -1,9 +0,0 @@ -#> asset:artifact/common/use/head -# -# ヘルメットの神器の使用時共通処理を実行します -# -# @within function asset:artifact/*/*/3.main - -data modify storage asset:artifact TargetSlot set value 'head' -function asset_manager:artifact/use/ -tag @s remove CanUsed \ No newline at end of file diff --git a/TheSkyBlessing/data/asset/functions/artifact/common/use/hotbar.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/common/use/hotbar.mcfunction deleted file mode 100644 index 4050d05af7..0000000000 --- a/TheSkyBlessing/data/asset/functions/artifact/common/use/hotbar.mcfunction +++ /dev/null @@ -1,9 +0,0 @@ -#> asset:artifact/common/use/hotbar -# -# チェストプレートの神器の使用時共通処理を実行します -# -# @within function asset:artifact/*/*/3.main - -data modify storage asset:artifact TargetSlot set value 'hotbar' -function asset_manager:artifact/use/ -tag @s remove CanUsed \ No newline at end of file diff --git a/TheSkyBlessing/data/asset/functions/artifact/common/use/legs.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/common/use/legs.mcfunction deleted file mode 100644 index e46b6e4b0b..0000000000 --- a/TheSkyBlessing/data/asset/functions/artifact/common/use/legs.mcfunction +++ /dev/null @@ -1,9 +0,0 @@ -#> asset:artifact/common/use/legs -# -# レギンスの神器の使用時共通処理を実行します -# -# @within function asset:artifact/*/*/3.main - -data modify storage asset:artifact TargetSlot set value 'legs' -function asset_manager:artifact/use/ -tag @s remove CanUsed \ No newline at end of file diff --git a/TheSkyBlessing/data/asset/functions/artifact/common/use/mainhand.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/common/use/mainhand.mcfunction deleted file mode 100644 index a19ebaa025..0000000000 --- a/TheSkyBlessing/data/asset/functions/artifact/common/use/mainhand.mcfunction +++ /dev/null @@ -1,9 +0,0 @@ -#> asset:artifact/common/use/mainhand -# -# メインハンドの神器の使用時共通処理を実行します -# -# @within function asset:artifact/*/*/3.main - -data modify storage asset:artifact TargetSlot set value 'mainhand' -function asset_manager:artifact/use/ -tag @s remove CanUsed \ No newline at end of file diff --git a/TheSkyBlessing/data/asset/functions/artifact/common/use/offhand.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/common/use/offhand.mcfunction deleted file mode 100644 index cf0da34146..0000000000 --- a/TheSkyBlessing/data/asset/functions/artifact/common/use/offhand.mcfunction +++ /dev/null @@ -1,9 +0,0 @@ -#> asset:artifact/common/use/offhand -# -# オフハンドの神器の使用時共通処理を実行します -# -# @within function asset:artifact/*/*/3.main - -data modify storage asset:artifact TargetSlot set value 'offhand' -function asset_manager:artifact/use/ -tag @s remove CanUsed \ No newline at end of file diff --git a/TheSkyBlessing/data/asset/functions/artifact/enum/index/.m.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/enum/index/.m.mcfunction new file mode 100644 index 0000000000..9954ec12ad --- /dev/null +++ b/TheSkyBlessing/data/asset/functions/artifact/enum/index/.m.mcfunction @@ -0,0 +1,9 @@ +#> asset:artifact/enum/index/.m +# +# +# +# @input args Index : int +# @output storage asset:artifact Enum.Slot +# @public + +$return run function asset:artifact/enum/index/$(Index) diff --git a/TheSkyBlessing/data/asset/functions/artifact/enum/index/1.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/enum/index/1.mcfunction new file mode 100644 index 0000000000..ce47d01a9b --- /dev/null +++ b/TheSkyBlessing/data/asset/functions/artifact/enum/index/1.mcfunction @@ -0,0 +1,9 @@ +#> asset:artifact/enum/index/1 +# +# +# +# @output storage asset:artifact Enum.Slot +# @public + +data modify storage asset:artifact Enum.Slot set value "mainhand" +return run data get storage asset:artifact Enum.Slot diff --git a/TheSkyBlessing/data/asset/functions/artifact/enum/index/10.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/enum/index/10.mcfunction new file mode 100644 index 0000000000..7b313b5978 --- /dev/null +++ b/TheSkyBlessing/data/asset/functions/artifact/enum/index/10.mcfunction @@ -0,0 +1,9 @@ +#> asset:artifact/enum/index/10 +# +# +# +# @output storage asset:artifact Enum.Slot +# @public + +data modify storage asset:artifact Enum.Slot set value "hotbar" +return run data get storage asset:artifact Enum.Slot diff --git a/TheSkyBlessing/data/asset/functions/artifact/enum/index/11.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/enum/index/11.mcfunction new file mode 100644 index 0000000000..ef57df70a2 --- /dev/null +++ b/TheSkyBlessing/data/asset/functions/artifact/enum/index/11.mcfunction @@ -0,0 +1,9 @@ +#> asset:artifact/enum/index/11 +# +# +# +# @output storage asset:artifact Enum.Slot +# @public + +data modify storage asset:artifact Enum.Slot set value "hotbar" +return run data get storage asset:artifact Enum.Slot diff --git a/TheSkyBlessing/data/asset/functions/artifact/enum/index/12.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/enum/index/12.mcfunction new file mode 100644 index 0000000000..2ace9b8e7a --- /dev/null +++ b/TheSkyBlessing/data/asset/functions/artifact/enum/index/12.mcfunction @@ -0,0 +1,9 @@ +#> asset:artifact/enum/index/12 +# +# +# +# @output storage asset:artifact Enum.Slot +# @public + +data modify storage asset:artifact Enum.Slot set value "hotbar" +return run data get storage asset:artifact Enum.Slot diff --git a/TheSkyBlessing/data/asset/functions/artifact/enum/index/13.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/enum/index/13.mcfunction new file mode 100644 index 0000000000..e5f764ff7d --- /dev/null +++ b/TheSkyBlessing/data/asset/functions/artifact/enum/index/13.mcfunction @@ -0,0 +1,9 @@ +#> asset:artifact/enum/index/13 +# +# +# +# @output storage asset:artifact Enum.Slot +# @public + +data modify storage asset:artifact Enum.Slot set value "hotbar" +return run data get storage asset:artifact Enum.Slot diff --git a/TheSkyBlessing/data/asset/functions/artifact/enum/index/14.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/enum/index/14.mcfunction new file mode 100644 index 0000000000..d128bde644 --- /dev/null +++ b/TheSkyBlessing/data/asset/functions/artifact/enum/index/14.mcfunction @@ -0,0 +1,9 @@ +#> asset:artifact/enum/index/14 +# +# +# +# @output storage asset:artifact Enum.Slot +# @public + +data modify storage asset:artifact Enum.Slot set value "hotbar" +return run data get storage asset:artifact Enum.Slot diff --git a/TheSkyBlessing/data/asset/functions/artifact/enum/index/15.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/enum/index/15.mcfunction new file mode 100644 index 0000000000..bb963de9de --- /dev/null +++ b/TheSkyBlessing/data/asset/functions/artifact/enum/index/15.mcfunction @@ -0,0 +1,9 @@ +#> asset:artifact/enum/index/15 +# +# +# +# @output storage asset:artifact Enum.Slot +# @public + +data modify storage asset:artifact Enum.Slot set value "hotbar" +return run data get storage asset:artifact Enum.Slot diff --git a/TheSkyBlessing/data/asset/functions/artifact/enum/index/16.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/enum/index/16.mcfunction new file mode 100644 index 0000000000..281b7f5b96 --- /dev/null +++ b/TheSkyBlessing/data/asset/functions/artifact/enum/index/16.mcfunction @@ -0,0 +1,9 @@ +#> asset:artifact/enum/index/16 +# +# +# +# @output storage asset:artifact Enum.Slot +# @public + +data modify storage asset:artifact Enum.Slot set value "hotbar" +return run data get storage asset:artifact Enum.Slot diff --git a/TheSkyBlessing/data/asset/functions/artifact/enum/index/2.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/enum/index/2.mcfunction new file mode 100644 index 0000000000..7c5bb8692a --- /dev/null +++ b/TheSkyBlessing/data/asset/functions/artifact/enum/index/2.mcfunction @@ -0,0 +1,9 @@ +#> asset:artifact/enum/index/2 +# +# +# +# @output storage asset:artifact Enum.Slot +# @public + +data modify storage asset:artifact Enum.Slot set value "offhand" +return run data get storage asset:artifact Enum.Slot diff --git a/TheSkyBlessing/data/asset/functions/artifact/enum/index/3.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/enum/index/3.mcfunction new file mode 100644 index 0000000000..c19bb1dd9a --- /dev/null +++ b/TheSkyBlessing/data/asset/functions/artifact/enum/index/3.mcfunction @@ -0,0 +1,9 @@ +#> asset:artifact/enum/index/3 +# +# +# +# @output storage asset:artifact Enum.Slot +# @public + +data modify storage asset:artifact Enum.Slot set value "feet" +return run data get storage asset:artifact Enum.Slot diff --git a/TheSkyBlessing/data/asset/functions/artifact/enum/index/4.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/enum/index/4.mcfunction new file mode 100644 index 0000000000..de28003735 --- /dev/null +++ b/TheSkyBlessing/data/asset/functions/artifact/enum/index/4.mcfunction @@ -0,0 +1,9 @@ +#> asset:artifact/enum/index/4 +# +# +# +# @output storage asset:artifact Enum.Slot +# @public + +data modify storage asset:artifact Enum.Slot set value "legs" +return run data get storage asset:artifact Enum.Slot diff --git a/TheSkyBlessing/data/asset/functions/artifact/enum/index/5.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/enum/index/5.mcfunction new file mode 100644 index 0000000000..efdaa268e1 --- /dev/null +++ b/TheSkyBlessing/data/asset/functions/artifact/enum/index/5.mcfunction @@ -0,0 +1,9 @@ +#> asset:artifact/enum/index/5 +# +# +# +# @output storage asset:artifact Enum.Slot +# @public + +data modify storage asset:artifact Enum.Slot set value "chest" +return run data get storage asset:artifact Enum.Slot diff --git a/TheSkyBlessing/data/asset/functions/artifact/enum/index/6.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/enum/index/6.mcfunction new file mode 100644 index 0000000000..beee145547 --- /dev/null +++ b/TheSkyBlessing/data/asset/functions/artifact/enum/index/6.mcfunction @@ -0,0 +1,9 @@ +#> asset:artifact/enum/index/6 +# +# +# +# @output storage asset:artifact Enum.Slot +# @public + +data modify storage asset:artifact Enum.Slot set value "head" +return run data get storage asset:artifact Enum.Slot diff --git a/TheSkyBlessing/data/asset/functions/artifact/enum/index/7.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/enum/index/7.mcfunction new file mode 100644 index 0000000000..66660df4c5 --- /dev/null +++ b/TheSkyBlessing/data/asset/functions/artifact/enum/index/7.mcfunction @@ -0,0 +1,9 @@ +#> asset:artifact/enum/index/7 +# +# +# +# @output storage asset:artifact Enum.Slot +# @public + +data modify storage asset:artifact Enum.Slot set value "hotbar" +return run data get storage asset:artifact Enum.Slot diff --git a/TheSkyBlessing/data/asset/functions/artifact/enum/index/8.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/enum/index/8.mcfunction new file mode 100644 index 0000000000..4027e21d2e --- /dev/null +++ b/TheSkyBlessing/data/asset/functions/artifact/enum/index/8.mcfunction @@ -0,0 +1,9 @@ +#> asset:artifact/enum/index/8 +# +# +# +# @output storage asset:artifact Enum.Slot +# @public + +data modify storage asset:artifact Enum.Slot set value "hotbar" +return run data get storage asset:artifact Enum.Slot diff --git a/TheSkyBlessing/data/asset/functions/artifact/enum/index/9.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/enum/index/9.mcfunction new file mode 100644 index 0000000000..3b7a603531 --- /dev/null +++ b/TheSkyBlessing/data/asset/functions/artifact/enum/index/9.mcfunction @@ -0,0 +1,9 @@ +#> asset:artifact/enum/index/9 +# +# +# +# @output storage asset:artifact Enum.Slot +# @public + +data modify storage asset:artifact Enum.Slot set value "hotbar" +return run data get storage asset:artifact Enum.Slot diff --git a/TheSkyBlessing/data/asset/functions/artifact/enum/slot/.m.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/enum/slot/.m.mcfunction new file mode 100644 index 0000000000..11336a7371 --- /dev/null +++ b/TheSkyBlessing/data/asset/functions/artifact/enum/slot/.m.mcfunction @@ -0,0 +1,9 @@ +#> asset:artifact/enum/slot/.m +# +# +# +# @input args Slot : string +# @output storage asset:artifact Enum.Index +# @public + +$return run function asset:artifact/enum/slot/$(Slot) diff --git a/TheSkyBlessing/data/asset/functions/artifact/enum/slot/chest.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/enum/slot/chest.mcfunction new file mode 100644 index 0000000000..31a9b90e8e --- /dev/null +++ b/TheSkyBlessing/data/asset/functions/artifact/enum/slot/chest.mcfunction @@ -0,0 +1,9 @@ +#> asset:artifact/enum/slot/chest +# +# +# +# @output storage asset:artifact Enum.Index +# @public + +data modify storage asset:artifact Enum.Index set value 5 +return run data get storage asset:artifact Enum.Index diff --git a/TheSkyBlessing/data/asset/functions/artifact/enum/slot/feet.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/enum/slot/feet.mcfunction new file mode 100644 index 0000000000..947f5eadd8 --- /dev/null +++ b/TheSkyBlessing/data/asset/functions/artifact/enum/slot/feet.mcfunction @@ -0,0 +1,9 @@ +#> asset:artifact/enum/slot/feet +# +# +# +# @output storage asset:artifact Enum.Index +# @public + +data modify storage asset:artifact Enum.Index set value 3 +return run data get storage asset:artifact Enum.Index diff --git a/TheSkyBlessing/data/asset/functions/artifact/enum/slot/head.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/enum/slot/head.mcfunction new file mode 100644 index 0000000000..bb3ea63b76 --- /dev/null +++ b/TheSkyBlessing/data/asset/functions/artifact/enum/slot/head.mcfunction @@ -0,0 +1,9 @@ +#> asset:artifact/enum/slot/head +# +# +# +# @output storage asset:artifact Enum.Index +# @public + +data modify storage asset:artifact Enum.Index set value 6 +return run data get storage asset:artifact Enum.Index diff --git a/TheSkyBlessing/data/asset/functions/artifact/enum/slot/hotbar.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/enum/slot/hotbar.mcfunction new file mode 100644 index 0000000000..564a519650 --- /dev/null +++ b/TheSkyBlessing/data/asset/functions/artifact/enum/slot/hotbar.mcfunction @@ -0,0 +1,9 @@ +#> asset:artifact/enum/slot/hotbar +# +# +# +# @output storage asset:artifact Enum.Index +# @public + +data modify storage asset:artifact Enum.Index set value 7 +return run data get storage asset:artifact Enum.Index diff --git a/TheSkyBlessing/data/asset/functions/artifact/enum/slot/legs.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/enum/slot/legs.mcfunction new file mode 100644 index 0000000000..4968590537 --- /dev/null +++ b/TheSkyBlessing/data/asset/functions/artifact/enum/slot/legs.mcfunction @@ -0,0 +1,9 @@ +#> asset:artifact/enum/slot/legs +# +# +# +# @output storage asset:artifact Enum.Index +# @public + +data modify storage asset:artifact Enum.Index set value 4 +return run data get storage asset:artifact Enum.Index diff --git a/TheSkyBlessing/data/asset/functions/artifact/enum/slot/mainhand.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/enum/slot/mainhand.mcfunction new file mode 100644 index 0000000000..b8c47cf0da --- /dev/null +++ b/TheSkyBlessing/data/asset/functions/artifact/enum/slot/mainhand.mcfunction @@ -0,0 +1,9 @@ +#> asset:artifact/enum/slot/mainhand +# +# +# +# @output storage asset:artifact Enum.Index +# @public + +data modify storage asset:artifact Enum.Index set value 1 +return run data get storage asset:artifact Enum.Index diff --git a/TheSkyBlessing/data/asset/functions/artifact/enum/slot/offhand.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/enum/slot/offhand.mcfunction new file mode 100644 index 0000000000..2417368a94 --- /dev/null +++ b/TheSkyBlessing/data/asset/functions/artifact/enum/slot/offhand.mcfunction @@ -0,0 +1,9 @@ +#> asset:artifact/enum/slot/offhand +# +# +# +# @output storage asset:artifact Enum.Index +# @public + +data modify storage asset:artifact Enum.Index set value 2 +return run data get storage asset:artifact Enum.Index diff --git a/TheSkyBlessing/data/asset/functions/artifact/example/give/2.give.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/ex.1/register.mcfunction similarity index 79% rename from TheSkyBlessing/data/asset/functions/artifact/example/give/2.give.mcfunction rename to TheSkyBlessing/data/asset/functions/artifact/ex.1/register.mcfunction index 9f25850449..57104e924b 100644 --- a/TheSkyBlessing/data/asset/functions/artifact/example/give/2.give.mcfunction +++ b/TheSkyBlessing/data/asset/functions/artifact/ex.1/register.mcfunction @@ -1,14 +1,10 @@ -#> asset:artifact/example/give/2.give +#> asset:artifact/ex.1/register # -# 神器の作成部 ここでID等を定義する +# 神器の生成処理 # -# @user -# @private +# @within function asset:artifact/alias/65501/register -# 神器の説明や消費MPなどをここで設定する。 -# 最後にasset:artifact/common/giveを実行することで入手可能。 - -data modify storage asset:artifact ID set value 2147483647 +data modify storage asset:artifact ID set value 65501 data modify storage asset:artifact Item set value "minecraft:bow" @@ -49,6 +45,4 @@ data modify storage asset:artifact SpecialCooldown set value 20 data modify storage asset:artifact CanUsedGod set value "ALL" -data modify storage asset:artifact CustomNBT set value {Unbreakable:1b,AttributeModifiers:[]} - -function asset:artifact/common/give +data modify storage asset:artifact CustomNBT set value {AttributeModifiers:[]} diff --git a/TheSkyBlessing/data/asset/functions/artifact/example/trigger/3.main.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/ex.1/shot/.mcfunction similarity index 74% rename from TheSkyBlessing/data/asset/functions/artifact/example/trigger/3.main.mcfunction rename to TheSkyBlessing/data/asset/functions/artifact/ex.1/shot/.mcfunction index 2a6dc51c43..638fba85ce 100644 --- a/TheSkyBlessing/data/asset/functions/artifact/example/trigger/3.main.mcfunction +++ b/TheSkyBlessing/data/asset/functions/artifact/ex.1/shot/.mcfunction @@ -1,19 +1,14 @@ -#> asset:artifact/example/trigger/3.main +#> asset:artifact/ex.1/shot/ # -# 神器のメイン処理部 +# 神器のトリガー処理 # -# @within function asset:artifact/example/trigger/2.check_condition +# @within function asset:artifact/alias/65501/shot/ #> private # @private #declare tag Ex.Init #declare tag Ex.Motion -# 基本的な使用時の処理(MP消費や使用回数の処理など)を行う - function asset:artifact/common/use/mainhand - -# ここから先は神器側の効果の処理を書く - # 召喚 execute anchored eyes run summon firework_rocket ^ ^ ^0.5 {Tags:["Ex.Init"],LifeTime:20,FireworksItem:{id:"minecraft:firework_rocket",Count:1b,tag:{Fireworks:{Explosions:[{Type:1b,Colors:[I;16701501,3847130],Flicker:1b}]}}},ShotAtAngle:1b} # 回転 diff --git a/TheSkyBlessing/data/asset/functions/artifact/ex.1/shot/check.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/ex.1/shot/check.mcfunction new file mode 100644 index 0000000000..1152a34450 --- /dev/null +++ b/TheSkyBlessing/data/asset/functions/artifact/ex.1/shot/check.mcfunction @@ -0,0 +1,8 @@ +#> asset:artifact/ex.1/shot/check +# +# 神器の使用条件の確認処理 +# +# @within function asset:artifact/alias/65501/shot/check + +# 矢を消す + kill @e[type=#arrows,tag=ShotArrow,distance=..5] diff --git a/TheSkyBlessing/data/asset/functions/artifact/ex/attack/.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/ex/attack/.mcfunction new file mode 100644 index 0000000000..f633246bff --- /dev/null +++ b/TheSkyBlessing/data/asset/functions/artifact/ex/attack/.mcfunction @@ -0,0 +1,15 @@ +#> asset:artifact/ex/attack/ +# +# 神器のトリガー +# +# @within function asset:artifact/alias/65500/attack/ + +# VFX + execute at @e[type=#lib:living,type=!player,tag=Victim,distance=..60] run particle dust -1 0 0 1 ~ ~1.5 ~ 0.05 1 0.05 0 150 + execute at @e[type=#lib:living,type=!player,tag=Victim,distance=..60] run playsound minecraft:entity.elder_guardian.curse player @a ~ ~ ~ 0.3 1.4 + +# 各エンティティにダメージを与える + execute as @e[type=#lib:living,type=!player,tag=Victim,distance=..60] run function asset:artifact/ex/attack/kill + +# リセット + function api:damage/reset diff --git a/TheSkyBlessing/data/asset/functions/artifact/ex/attack/check.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/ex/attack/check.mcfunction new file mode 100644 index 0000000000..e41006477f --- /dev/null +++ b/TheSkyBlessing/data/asset/functions/artifact/ex/attack/check.mcfunction @@ -0,0 +1,8 @@ +#> asset:artifact/ex/attack/check +# +# 神器の使用条件の確認処理 +# +# @within function asset:artifact/alias/65500/attack/check + +# バニラの攻撃じゃなかったら使えないようにする + execute unless data storage asset:context Attack{IsVanilla:true} run tag @s remove CanUsed diff --git a/TheSkyBlessing/data/asset/functions/artifact/ex/attack/damage.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/ex/attack/damage.mcfunction new file mode 100644 index 0000000000..a995297ef7 --- /dev/null +++ b/TheSkyBlessing/data/asset/functions/artifact/ex/attack/damage.mcfunction @@ -0,0 +1,13 @@ +#> asset:artifact/ex/attack/damage +# +# +# +# @within function asset:artifact/ex/attack/ + +execute store result storage api: Argument.Damage float 1 run function api:mob/get_max_health +data modify storage api: Argument.AttackType set value "Physical" +data modify storage api: Argument.ElementType set value "None" +data modify storage api: Argument.FixedDamage set value 1b +execute unless data storage api: {DamageLibModified:true} as @p[tag=this] run function api:damage/modifier +execute if data storage api: {DamageLibModified:true} as @p[tag=this] run function api:damage/modifier_continuation +function api:damage/ diff --git a/TheSkyBlessing/data/asset/functions/artifact/ex/attack/kill.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/ex/attack/kill.mcfunction new file mode 100644 index 0000000000..bcb68a2577 --- /dev/null +++ b/TheSkyBlessing/data/asset/functions/artifact/ex/attack/kill.mcfunction @@ -0,0 +1,17 @@ +#> asset:artifact/ex/attack/kill +# +# +# +# @within function asset:artifact/ex/attack/ + +#> private +# @private + #declare tag RemovingEntity + #declare score_holder $Fluctuation + #declare function lib:status_log/show_health + +tag @s add RemovingEntity + +function api:mob/get_health +execute store result score $Fluctuation Lib run data get storage api: Return.Health -100 +function lib:status_log/show_health diff --git a/TheSkyBlessing/data/asset/functions/artifact/ex/dis_equip/.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/ex/dis_equip/.mcfunction new file mode 100644 index 0000000000..3d8ba2fb19 --- /dev/null +++ b/TheSkyBlessing/data/asset/functions/artifact/ex/dis_equip/.mcfunction @@ -0,0 +1,8 @@ +#> asset:artifact/ex/dis_equip/ +# +# 神器の装備解除時の処理 +# +# @within function asset:artifact/alias/65500/dis_equip + +# 演出 + playsound minecraft:item.armor.equip_generic player @a ~ ~ ~ 1 0.8 diff --git a/TheSkyBlessing/data/asset/functions/artifact/ex/equip/.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/ex/equip/.mcfunction new file mode 100644 index 0000000000..f0f237b28c --- /dev/null +++ b/TheSkyBlessing/data/asset/functions/artifact/ex/equip/.mcfunction @@ -0,0 +1,14 @@ +#> asset:artifact/ex/equip/ +# +# 神器の装備した時の処理 +# +# @within function asset:artifact/alias/65500/equip + +# VFX + playsound ogg:block.smithing_table.smithing_table2 player @a ~ ~ ~ 0.5 1.6 + playsound minecraft:item.armor.equip_iron player @a ~ ~ ~ 0.5 1 + playsound ogg:random.levelup player @a ~ ~ ~ 0.6 2 + particle dust 0.278 0.733 1 1 ~ ~1 ~ 0.2 0.2 0.2 0 20 + particle crit ~ ~1 ~ 0 0 0 0.5 10 + particle dust 100000000 1 1 1 ~ ~1.5 ~ 0.5 1 0.5 0 150 + playsound minecraft:block.beacon.activate player @a ~ ~ ~ 1 2 diff --git a/TheSkyBlessing/data/asset/functions/artifact/ex/register.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/ex/register.mcfunction new file mode 100644 index 0000000000..0fb140296b --- /dev/null +++ b/TheSkyBlessing/data/asset/functions/artifact/ex/register.mcfunction @@ -0,0 +1,34 @@ +#> asset:artifact/ex/register +# +# 神器の作成部 ここでID等を定義する +# +# @within function asset:artifact/alias/65500/register + +data modify storage asset:artifact ID set value 65500 +data modify storage asset:artifact Item set value "minecraft:stick" +data modify storage asset:artifact Name set value '{"text":"","extra":[{"text":"イーカロス","color":"dark_red"}]}' +data modify storage asset:artifact Lore set value ['{"text":"ある地に潜む研究者の末裔が作り出した、"}','{"text":"対天使兵器の最高傑作。"}','{"text":"攻撃した敵の傷口をさらに開き、致命傷に至らせる。"}','{"text":"「いかなる犠牲によっても、","color":"gray","italic":true}','{"text":"かの翼人らを討ち滅ぼさなければならぬのだ。」","color":"gray","italic":true}'] +# data modify storage asset:artifact RemainingCount set value +# data modify storage asset:artifact RemainingCountMax set value +data modify storage asset:artifact Slot set value "hotbar" +data modify storage asset:artifact Trigger set value "attack" +data modify storage asset:artifact SubTriggers set value ["equip"] +# data modify storage asset:artifact Condition set value +data modify storage asset:artifact AttackInfo set value {Damage:["???"],AttackType:[Physical],ElementType:[None],BypassResist:true,IsRangeAttack:never} +# data modify storage asset:artifact ConsumeItem set value {Item:'{"text":""}',Count:0} +data modify storage asset:artifact MPCost set value 100 +# data modify storage asset:artifact MPRequire set value +data modify storage asset:artifact LocalCooldown set value 0 +# data modify storage asset:artifact TypeCooldown set value {Type:"shortRange",Duration:1} +# data modify storage asset:artifact SpecialCooldown set value +data modify storage asset:artifact DisableCooldownMessage set value true +data modify storage asset:artifact DisableMPMessage set value true +data modify storage asset:artifact DisableBreakSound set value true +# data modify storage asset:artifact EquipID set value +data modify storage asset:artifact Modifiers set value [] +data modify storage asset:artifact Modifiers append value {Type:"attack/base",Amount:0.05d,Operation:"multiply_base",MaxStack:9} +data modify storage asset:artifact Modifiers append value {Type:"defense/base",Amount:0.05d,Operation:"multiply_base",MaxStack:9} +data modify storage asset:artifact Modifiers append value {Type:"max_health",Amount:0.025d,Operation:"multiply_base",MaxStack:9} +data modify storage asset:artifact Modifiers append value {Type:"max_mp",Amount:0.025d,Operation:"multiply_base",MaxStack:9} +data modify storage asset:artifact CanUsedGod set value "ALL" +# data modify storage asset:artifact CustomNBT set value {} diff --git a/TheSkyBlessing/data/asset/functions/artifact/example/trigger/1.trigger.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/example/trigger/1.trigger.mcfunction deleted file mode 100644 index ec9b9fc6da..0000000000 --- a/TheSkyBlessing/data/asset/functions/artifact/example/trigger/1.trigger.mcfunction +++ /dev/null @@ -1,9 +0,0 @@ -#> asset:artifact/example/trigger/1.trigger -# -# 指定したイベントタイミングで実行されるfunction -# ここで自身の神器が判定をしてmain処理を呼び出す -# -# @within tag/function asset:artifact/** - -# storage asset:context idのfeet/legs/chest/head/mainhand/offhandに装備している神器のIDが入っているので比較し、~/2.check_condition.mcfunctionを実行する - execute if data storage asset:context id{mainhand:2147483647} run function asset:artifact/example/trigger/2.check_condition diff --git a/TheSkyBlessing/data/asset/functions/artifact/example/trigger/2.check_condition.mcfunction b/TheSkyBlessing/data/asset/functions/artifact/example/trigger/2.check_condition.mcfunction deleted file mode 100644 index f0f7bd8fff..0000000000 --- a/TheSkyBlessing/data/asset/functions/artifact/example/trigger/2.check_condition.mcfunction +++ /dev/null @@ -1,14 +0,0 @@ -#> asset:artifact/example/trigger/2.check_condition -# -# 神器の発動条件をチェックします -# -# @within function asset:artifact/example/trigger/1.trigger - -# 神器IDの設定 - data modify storage asset:artifact TargetID set value 2147483647 -# 神器の基本的な条件の確認を行うfunction、成功している場合CanUsedタグが付く - function asset:artifact/common/check_condition/mainhand -# 矢を消す - kill @e[type=#arrows,tag=ShotArrow,distance=..5] -# CanUsedタグをチェックして3.main.mcfunctionを実行する - execute if entity @s[tag=CanUsed] run function asset:artifact/example/trigger/3.main diff --git a/TheSkyBlessing/data/asset/tags/functions/artifact/attack.json b/TheSkyBlessing/data/asset/tags/functions/artifact/attack.json deleted file mode 100644 index a956ec088a..0000000000 --- a/TheSkyBlessing/data/asset/tags/functions/artifact/attack.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "values": [ - ] -} diff --git a/TheSkyBlessing/data/asset/tags/functions/artifact/attack/explosion.json b/TheSkyBlessing/data/asset/tags/functions/artifact/attack/explosion.json deleted file mode 100644 index 0d17807366..0000000000 --- a/TheSkyBlessing/data/asset/tags/functions/artifact/attack/explosion.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - - ] -} \ No newline at end of file diff --git a/TheSkyBlessing/data/asset/tags/functions/artifact/attack/melee.json b/TheSkyBlessing/data/asset/tags/functions/artifact/attack/melee.json deleted file mode 100644 index a956ec088a..0000000000 --- a/TheSkyBlessing/data/asset/tags/functions/artifact/attack/melee.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "values": [ - ] -} diff --git a/TheSkyBlessing/data/asset/tags/functions/artifact/click.carrot_on_a_stick.json b/TheSkyBlessing/data/asset/tags/functions/artifact/click.carrot_on_a_stick.json deleted file mode 100644 index 5c922d2bbf..0000000000 --- a/TheSkyBlessing/data/asset/tags/functions/artifact/click.carrot_on_a_stick.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - - ] -} diff --git a/TheSkyBlessing/data/asset/tags/functions/artifact/damage.json b/TheSkyBlessing/data/asset/tags/functions/artifact/damage.json deleted file mode 100644 index 5c922d2bbf..0000000000 --- a/TheSkyBlessing/data/asset/tags/functions/artifact/damage.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - - ] -} diff --git a/TheSkyBlessing/data/asset/tags/functions/artifact/damage/drowning.json b/TheSkyBlessing/data/asset/tags/functions/artifact/damage/drowning.json deleted file mode 100644 index 0d17807366..0000000000 --- a/TheSkyBlessing/data/asset/tags/functions/artifact/damage/drowning.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - - ] -} \ No newline at end of file diff --git a/TheSkyBlessing/data/asset/tags/functions/artifact/damage/explosion.json b/TheSkyBlessing/data/asset/tags/functions/artifact/damage/explosion.json deleted file mode 100644 index 0d17807366..0000000000 --- a/TheSkyBlessing/data/asset/tags/functions/artifact/damage/explosion.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - - ] -} \ No newline at end of file diff --git a/TheSkyBlessing/data/asset/tags/functions/artifact/damage/fire.json b/TheSkyBlessing/data/asset/tags/functions/artifact/damage/fire.json deleted file mode 100644 index 5c922d2bbf..0000000000 --- a/TheSkyBlessing/data/asset/tags/functions/artifact/damage/fire.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - - ] -} diff --git a/TheSkyBlessing/data/asset/tags/functions/artifact/damage/freezing.json b/TheSkyBlessing/data/asset/tags/functions/artifact/damage/freezing.json deleted file mode 100644 index 0d17807366..0000000000 --- a/TheSkyBlessing/data/asset/tags/functions/artifact/damage/freezing.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - - ] -} \ No newline at end of file diff --git a/TheSkyBlessing/data/asset/tags/functions/artifact/damage/from_entity/.json b/TheSkyBlessing/data/asset/tags/functions/artifact/damage/from_entity/.json deleted file mode 100644 index 5c922d2bbf..0000000000 --- a/TheSkyBlessing/data/asset/tags/functions/artifact/damage/from_entity/.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - - ] -} diff --git a/TheSkyBlessing/data/asset/tags/functions/artifact/damage/from_entity/blocked.json b/TheSkyBlessing/data/asset/tags/functions/artifact/damage/from_entity/blocked.json deleted file mode 100644 index d8df97c7b4..0000000000 --- a/TheSkyBlessing/data/asset/tags/functions/artifact/damage/from_entity/blocked.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - - ] -} \ No newline at end of file diff --git a/TheSkyBlessing/data/asset/tags/functions/artifact/damage/from_entity/explosion.json b/TheSkyBlessing/data/asset/tags/functions/artifact/damage/from_entity/explosion.json deleted file mode 100644 index 0d17807366..0000000000 --- a/TheSkyBlessing/data/asset/tags/functions/artifact/damage/from_entity/explosion.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - - ] -} \ No newline at end of file diff --git a/TheSkyBlessing/data/asset/tags/functions/artifact/damage/from_entity/melee.json b/TheSkyBlessing/data/asset/tags/functions/artifact/damage/from_entity/melee.json deleted file mode 100644 index d8df97c7b4..0000000000 --- a/TheSkyBlessing/data/asset/tags/functions/artifact/damage/from_entity/melee.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - - ] -} \ No newline at end of file diff --git a/TheSkyBlessing/data/asset/tags/functions/artifact/damage/from_entity/projectile.json b/TheSkyBlessing/data/asset/tags/functions/artifact/damage/from_entity/projectile.json deleted file mode 100644 index d8df97c7b4..0000000000 --- a/TheSkyBlessing/data/asset/tags/functions/artifact/damage/from_entity/projectile.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - - ] -} \ No newline at end of file diff --git a/TheSkyBlessing/data/asset/tags/functions/artifact/damage/lightning.json b/TheSkyBlessing/data/asset/tags/functions/artifact/damage/lightning.json deleted file mode 100644 index 0d17807366..0000000000 --- a/TheSkyBlessing/data/asset/tags/functions/artifact/damage/lightning.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - - ] -} \ No newline at end of file diff --git a/TheSkyBlessing/data/asset/tags/functions/artifact/damage/melee.json b/TheSkyBlessing/data/asset/tags/functions/artifact/damage/melee.json deleted file mode 100644 index 0d17807366..0000000000 --- a/TheSkyBlessing/data/asset/tags/functions/artifact/damage/melee.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - - ] -} \ No newline at end of file diff --git a/TheSkyBlessing/data/asset/tags/functions/artifact/damage/other.json b/TheSkyBlessing/data/asset/tags/functions/artifact/damage/other.json deleted file mode 100644 index 0d17807366..0000000000 --- a/TheSkyBlessing/data/asset/tags/functions/artifact/damage/other.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - - ] -} \ No newline at end of file diff --git a/TheSkyBlessing/data/asset/tags/functions/artifact/damage/projectile.json b/TheSkyBlessing/data/asset/tags/functions/artifact/damage/projectile.json deleted file mode 100644 index 0d17807366..0000000000 --- a/TheSkyBlessing/data/asset/tags/functions/artifact/damage/projectile.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - - ] -} \ No newline at end of file diff --git a/TheSkyBlessing/data/asset/tags/functions/artifact/dis_equip.json b/TheSkyBlessing/data/asset/tags/functions/artifact/dis_equip.json deleted file mode 100644 index 5c922d2bbf..0000000000 --- a/TheSkyBlessing/data/asset/tags/functions/artifact/dis_equip.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - - ] -} diff --git a/TheSkyBlessing/data/asset/tags/functions/artifact/attack/projectile.json b/TheSkyBlessing/data/asset/tags/functions/artifact/enroll_pool.json similarity index 100% rename from TheSkyBlessing/data/asset/tags/functions/artifact/attack/projectile.json rename to TheSkyBlessing/data/asset/tags/functions/artifact/enroll_pool.json diff --git a/TheSkyBlessing/data/asset/tags/functions/artifact/equip.json b/TheSkyBlessing/data/asset/tags/functions/artifact/equip.json deleted file mode 100644 index 5c922d2bbf..0000000000 --- a/TheSkyBlessing/data/asset/tags/functions/artifact/equip.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - - ] -} diff --git a/TheSkyBlessing/data/asset/tags/functions/artifact/give.json b/TheSkyBlessing/data/asset/tags/functions/artifact/give.json deleted file mode 100644 index 5c922d2bbf..0000000000 --- a/TheSkyBlessing/data/asset/tags/functions/artifact/give.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - - ] -} diff --git a/TheSkyBlessing/data/asset/tags/functions/artifact/heal.json b/TheSkyBlessing/data/asset/tags/functions/artifact/heal.json deleted file mode 100644 index 5c922d2bbf..0000000000 --- a/TheSkyBlessing/data/asset/tags/functions/artifact/heal.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - - ] -} diff --git a/TheSkyBlessing/data/asset/tags/functions/artifact/killed.json b/TheSkyBlessing/data/asset/tags/functions/artifact/killed.json deleted file mode 100644 index 5c922d2bbf..0000000000 --- a/TheSkyBlessing/data/asset/tags/functions/artifact/killed.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - - ] -} diff --git a/TheSkyBlessing/data/asset/tags/functions/artifact/killed/explosion.json b/TheSkyBlessing/data/asset/tags/functions/artifact/killed/explosion.json deleted file mode 100644 index 5c922d2bbf..0000000000 --- a/TheSkyBlessing/data/asset/tags/functions/artifact/killed/explosion.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - - ] -} diff --git a/TheSkyBlessing/data/asset/tags/functions/artifact/killed/melee.json b/TheSkyBlessing/data/asset/tags/functions/artifact/killed/melee.json deleted file mode 100644 index 5c922d2bbf..0000000000 --- a/TheSkyBlessing/data/asset/tags/functions/artifact/killed/melee.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - - ] -} diff --git a/TheSkyBlessing/data/asset/tags/functions/artifact/killed/projectile.json b/TheSkyBlessing/data/asset/tags/functions/artifact/killed/projectile.json deleted file mode 100644 index d8df97c7b4..0000000000 --- a/TheSkyBlessing/data/asset/tags/functions/artifact/killed/projectile.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - - ] -} \ No newline at end of file diff --git a/TheSkyBlessing/data/asset/tags/functions/artifact/receive_heal.json b/TheSkyBlessing/data/asset/tags/functions/artifact/receive_heal.json deleted file mode 100644 index 5c922d2bbf..0000000000 --- a/TheSkyBlessing/data/asset/tags/functions/artifact/receive_heal.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - - ] -} diff --git a/TheSkyBlessing/data/asset/tags/functions/artifact/register.json b/TheSkyBlessing/data/asset/tags/functions/artifact/register.json deleted file mode 100644 index 5c922d2bbf..0000000000 --- a/TheSkyBlessing/data/asset/tags/functions/artifact/register.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - - ] -} diff --git a/TheSkyBlessing/data/asset/tags/functions/artifact/shot.json b/TheSkyBlessing/data/asset/tags/functions/artifact/shot.json deleted file mode 100644 index bdd084cc78..0000000000 --- a/TheSkyBlessing/data/asset/tags/functions/artifact/shot.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "asset:artifact/example/trigger/1.trigger" - ] -} diff --git a/TheSkyBlessing/data/asset/tags/functions/artifact/sneak/.json b/TheSkyBlessing/data/asset/tags/functions/artifact/sneak/.json deleted file mode 100644 index 66fe5a47c6..0000000000 --- a/TheSkyBlessing/data/asset/tags/functions/artifact/sneak/.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - - ] -} diff --git a/TheSkyBlessing/data/asset/tags/functions/artifact/sneak/10s.json b/TheSkyBlessing/data/asset/tags/functions/artifact/sneak/10s.json deleted file mode 100644 index 0d17807366..0000000000 --- a/TheSkyBlessing/data/asset/tags/functions/artifact/sneak/10s.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - - ] -} \ No newline at end of file diff --git a/TheSkyBlessing/data/asset/tags/functions/artifact/sneak/1s.json b/TheSkyBlessing/data/asset/tags/functions/artifact/sneak/1s.json deleted file mode 100644 index 5c922d2bbf..0000000000 --- a/TheSkyBlessing/data/asset/tags/functions/artifact/sneak/1s.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - - ] -} diff --git a/TheSkyBlessing/data/asset/tags/functions/artifact/sneak/2s.json b/TheSkyBlessing/data/asset/tags/functions/artifact/sneak/2s.json deleted file mode 100644 index 5c922d2bbf..0000000000 --- a/TheSkyBlessing/data/asset/tags/functions/artifact/sneak/2s.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - - ] -} diff --git a/TheSkyBlessing/data/asset/tags/functions/artifact/sneak/3s.json b/TheSkyBlessing/data/asset/tags/functions/artifact/sneak/3s.json deleted file mode 100644 index 0d17807366..0000000000 --- a/TheSkyBlessing/data/asset/tags/functions/artifact/sneak/3s.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - - ] -} \ No newline at end of file diff --git a/TheSkyBlessing/data/asset/tags/functions/artifact/sneak/4s.json b/TheSkyBlessing/data/asset/tags/functions/artifact/sneak/4s.json deleted file mode 100644 index 0d17807366..0000000000 --- a/TheSkyBlessing/data/asset/tags/functions/artifact/sneak/4s.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - - ] -} \ No newline at end of file diff --git a/TheSkyBlessing/data/asset/tags/functions/artifact/sneak/5s.json b/TheSkyBlessing/data/asset/tags/functions/artifact/sneak/5s.json deleted file mode 100644 index 0d17807366..0000000000 --- a/TheSkyBlessing/data/asset/tags/functions/artifact/sneak/5s.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - - ] -} \ No newline at end of file diff --git a/TheSkyBlessing/data/asset/tags/functions/artifact/sneak/keep/.json b/TheSkyBlessing/data/asset/tags/functions/artifact/sneak/keep/.json deleted file mode 100644 index 5c922d2bbf..0000000000 --- a/TheSkyBlessing/data/asset/tags/functions/artifact/sneak/keep/.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - - ] -} diff --git a/TheSkyBlessing/data/asset/tags/functions/artifact/sneak/keep/10s.json b/TheSkyBlessing/data/asset/tags/functions/artifact/sneak/keep/10s.json deleted file mode 100644 index 0d17807366..0000000000 --- a/TheSkyBlessing/data/asset/tags/functions/artifact/sneak/keep/10s.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - - ] -} \ No newline at end of file diff --git a/TheSkyBlessing/data/asset/tags/functions/artifact/sneak/keep/1s.json b/TheSkyBlessing/data/asset/tags/functions/artifact/sneak/keep/1s.json deleted file mode 100644 index 66fe5a47c6..0000000000 --- a/TheSkyBlessing/data/asset/tags/functions/artifact/sneak/keep/1s.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - - ] -} diff --git a/TheSkyBlessing/data/asset/tags/functions/artifact/sneak/keep/2s.json b/TheSkyBlessing/data/asset/tags/functions/artifact/sneak/keep/2s.json deleted file mode 100644 index 5c922d2bbf..0000000000 --- a/TheSkyBlessing/data/asset/tags/functions/artifact/sneak/keep/2s.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - - ] -} diff --git a/TheSkyBlessing/data/asset/tags/functions/artifact/sneak/keep/3s.json b/TheSkyBlessing/data/asset/tags/functions/artifact/sneak/keep/3s.json deleted file mode 100644 index 0d17807366..0000000000 --- a/TheSkyBlessing/data/asset/tags/functions/artifact/sneak/keep/3s.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - - ] -} \ No newline at end of file diff --git a/TheSkyBlessing/data/asset/tags/functions/artifact/sneak/keep/4s.json b/TheSkyBlessing/data/asset/tags/functions/artifact/sneak/keep/4s.json deleted file mode 100644 index 0d17807366..0000000000 --- a/TheSkyBlessing/data/asset/tags/functions/artifact/sneak/keep/4s.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - - ] -} \ No newline at end of file diff --git a/TheSkyBlessing/data/asset/tags/functions/artifact/sneak/keep/5s.json b/TheSkyBlessing/data/asset/tags/functions/artifact/sneak/keep/5s.json deleted file mode 100644 index 0d17807366..0000000000 --- a/TheSkyBlessing/data/asset/tags/functions/artifact/sneak/keep/5s.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - - ] -} \ No newline at end of file diff --git a/TheSkyBlessing/data/asset/tags/functions/artifact/tick.json b/TheSkyBlessing/data/asset/tags/functions/artifact/tick.json deleted file mode 100644 index 5c922d2bbf..0000000000 --- a/TheSkyBlessing/data/asset/tags/functions/artifact/tick.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - - ] -} diff --git a/TheSkyBlessing/data/asset/tags/functions/artifact/use_item.json b/TheSkyBlessing/data/asset/tags/functions/artifact/use_item.json deleted file mode 100644 index 5c922d2bbf..0000000000 --- a/TheSkyBlessing/data/asset/tags/functions/artifact/use_item.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - - ] -} diff --git a/TheSkyBlessing/data/asset/tags/functions/artifact/using_item.json b/TheSkyBlessing/data/asset/tags/functions/artifact/using_item.json deleted file mode 100644 index 5c922d2bbf..0000000000 --- a/TheSkyBlessing/data/asset/tags/functions/artifact/using_item.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - - ] -} diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/_index.d.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/_index.d.mcfunction index 5535885917..89ea36d2ac 100644 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/_index.d.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/_index.d.mcfunction @@ -3,12 +3,11 @@ #> storage # @within * -# asset_manager:artifact/** +# api:artifact/core/** +# asset:artifact/*/enroll_pool # asset:artifact/*/register -# asset:artifact/*/give/2.give -# asset:artifact/*/*/2.check_condition -# asset:artifact/*/*/3.main -# asset:artifact/common/** +# asset:artifact/enum/** +# asset_manager:artifact/** #declare storage asset:artifact #> 特殊クールダウン @@ -30,24 +29,24 @@ #> バニラの攻撃を扱う用 # @within function -# asset_manager:artifact/check/ -# asset_manager:artifact/triggers/attack/** -#declare tag ShouldVanillaAttack +# asset_manager:artifact/triggers/trigger/ +# asset_manager:artifact/triggers/attack_melee/foreach + #declare tag ShouldVanillaAttack #> check用の失敗フラグ # @within function # asset_manager:artifact/check/** #declare tag CheckFailed -#> スニークの閾値用スコアホルダー -# @within function asset_manager:artifact/triggers/sneak/* - #declare score_holder $SneakThreshold +#> スニーク用スコアホルダー +# @within function asset_manager:artifact/triggers/*sneak*/* + #declare score_holder $SneakTime -#> use_itemの誤検知対策タグ +#> アイテム消費中 # @within function -# core:handler/drop -# asset_manager:artifact/triggers/use_item/check_item_drop - #declare tag StrictCheckMainhand +# asset_manager:artifact/triggers/trigger/foreach/ +# asset_manager:artifact/triggers/event/use_item/** + #declare tag ConsumingItem #> 神器側にさらすタグ # @within * @@ -57,8 +56,6 @@ #declare tag Victim #declare tag Healer #declare tag Receiver - #declare tag Equip - #declare tag DisEquip #declare tag ShotArrow #> セレクターテンプレート @@ -72,11 +69,27 @@ #declare score_holder $NormalizedValue #declare score_holder $Max -#> リセット用 -# @within function asset_manager:artifact/triggers/equipments/update_cooldown/* +#> クールダウンリセット用 +# @within function asset_manager:artifact/triggers/equipments/update_cooldown/** #declare score_holder $Tick + #declare score_holder $Max #declare score_holder $LatestUsedTick #> 矢検知 -# @within function asset_manager:artifact/triggers/ +# @within function asset_manager:artifact/triggers/trigger/ #declare score_holder $GameTime + +#> スロットの数値化 +# @within function +# asset_manager:artifact/data/new/fetch_data/* +# asset_manager:artifact/triggers/trigger/** + #declare score_holder $SlotIndex + +#> 使用条件 +# @within function +# asset:artifact/*/*/check** +# asset_manager:artifact/check/ +# asset_manager:artifact/use/ +# asset_manager:artifact/triggers/*/* +# asset_manager:artifact/triggers/trigger/foreach/exec + #declare tag CanUsed diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/check/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/check/.mcfunction index a38343c933..c123a19e6e 100644 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/check/.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/check/.mcfunction @@ -2,14 +2,8 @@ # # 実行可能かどうかのチェックを行う # -# @input -# as player -# storage asset:artifact TargetSlot : Slot -# @output tag @s CanUsed -# @within function asset:artifact/common/check_condition/* +# @within function asset_manager:artifact/triggers/*/** -# 対象スロットのデータの取得 - function asset_manager:artifact/data/current/get # 事前にtag付与 tag @s add CanUsed # 条件を満たしてなかったらtag削除 @@ -27,8 +21,8 @@ tag @s[tag=CheckFailed] remove CheckFailed # MP必要量による制限 function asset_manager:artifact/check/check_mp - execute if entity @s[tag=CheckFailed] unless score @s MPLogCD matches 0.. unless data storage asset:artifact TargetItems[0].tag.TSB{DisableMPMessage:true} run tellraw @s {"text":"MPが足りない!","color":"red"} - execute if entity @s[tag=CheckFailed] unless score @s MPLogCD matches 0.. unless data storage asset:artifact TargetItems[0].tag.TSB{DisableMPMessage:true} run scoreboard players set @s MPLogCD 20 + execute if entity @s[tag=CheckFailed] unless score @s MPLogCD matches 0.. unless data storage asset:artifact TargetItem{DisableMPMessage:true} run tellraw @s {"text":"MPが足りない!","color":"red"} + execute if entity @s[tag=CheckFailed] unless score @s MPLogCD matches 0.. unless data storage asset:artifact TargetItem{DisableMPMessage:true} run scoreboard players set @s MPLogCD 20 execute if entity @s[tag=CheckFailed] run tag @s remove CanUsed tag @s[tag=CheckFailed] remove CheckFailed # TypeCooldownによる制限 @@ -37,17 +31,13 @@ tag @s[tag=CheckFailed] remove CheckFailed # LocalCooldownによる制限 function asset_manager:artifact/check/check_local_cooldown/ - execute if entity @s[tag=CheckFailed] unless score @s LocalCDLogCD matches 0.. unless data storage asset:artifact TargetItems[0].tag.TSB{DisableCooldownMessage:true} run tellraw @s {"text":"クールダウンが終わっていません。","color":"red"} - execute if entity @s[tag=CheckFailed] unless score @s LocalCDLogCD matches 0.. unless data storage asset:artifact TargetItems[0].tag.TSB{DisableCooldownMessage:true} run scoreboard players set @s LocalCDLogCD 20 - execute if entity @s[tag=CheckFailed] run tag @s remove CanUsed + execute if entity @s[tag=CheckFailed] unless score @s LocalCDLogCD matches 0.. unless data storage asset:artifact TargetItem{DisableCooldownMessage:true} run tellraw @s {"text":"クールダウンが終わっていません。","color":"red"} + execute if entity @s[tag=CheckFailed] unless score @s LocalCDLogCD matches 0.. unless data storage asset:artifact TargetItem{DisableCooldownMessage:true} run scoreboard players set @s LocalCDLogCD 20 + execute if entity @s[tag=CheckFailed] unless data storage asset:artifact TargetItemList[0] run tag @s remove CanUsed tag @s[tag=CheckFailed] remove CheckFailed -# 条件を満たしてない && 使用回数が存在する && トリガーがitemUse ならば使用回数を減らす - execute if entity @s[tag=!CanUsed] if data storage asset:artifact TargetItems[0].tag.TSB.RemainingCount if data storage asset:artifact TargetItems[0].tag.TSB{Trigger:"itemUse"} run function asset_manager:artifact/use/item/has_remain - -# mainhand の場合はタグを削除する - execute if data storage asset:artifact {TargetDefaultSlot:"mainhand"} if data storage asset:context Attack{Type:"vanilla_melee"} run tag @s remove ShouldVanillaAttack - -# リセット - data remove storage asset:artifact TargetSlot - data remove storage asset:artifact TargetDefaultSlot - data remove storage asset:artifact TargetItems + # PartsMaxによる制限 + # ついでに反転した配列の順序を解消する + function asset_manager:artifact/check/limit_parts_max/ + execute unless data storage asset:artifact TargetItemList[0] run tag @s remove CanUsed +# 条件を満たしてない && 使用回数が存在する && トリガーがuse_itemならば使用回数を減らす + execute if entity @s[tag=!CanUsed] if data storage asset:artifact TargetItem.RemainingCount if data storage asset:artifact TargetItem{Trigger:"use_item"} run function asset_manager:artifact/use/item/has_remain diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/check/check_believe.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/check/check_believe.mcfunction index 6e521ab82a..c02eca30e2 100644 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/check/check_believe.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/check/check_believe.mcfunction @@ -7,8 +7,8 @@ # タグの事前付与 tag @s add CheckFailed # チェックに成功してたらタグを外す - execute if data storage asset:artifact TargetItems[0].tag.TSB{CanUsedGod:["Flora"]} if predicate player_manager:is_believe/flora run tag @s remove CheckFailed - execute if data storage asset:artifact TargetItems[0].tag.TSB{CanUsedGod:["Nyaptov"]} if predicate player_manager:is_believe/nyaptov run tag @s remove CheckFailed - execute if data storage asset:artifact TargetItems[0].tag.TSB{CanUsedGod:["Rumor"]} if predicate player_manager:is_believe/rumor run tag @s remove CheckFailed - execute if data storage asset:artifact TargetItems[0].tag.TSB{CanUsedGod:["Urban"]} if predicate player_manager:is_believe/urban run tag @s remove CheckFailed - execute if data storage asset:artifact TargetItems[0].tag.TSB{CanUsedGod:["Wi-ki"]} if predicate player_manager:is_believe/wi-ki run tag @s remove CheckFailed \ No newline at end of file + execute if data storage asset:artifact TargetItem{CanUsedGod:["Flora"]} if predicate player_manager:is_believe/flora run tag @s remove CheckFailed + execute if data storage asset:artifact TargetItem{CanUsedGod:["Nyaptov"]} if predicate player_manager:is_believe/nyaptov run tag @s remove CheckFailed + execute if data storage asset:artifact TargetItem{CanUsedGod:["Rumor"]} if predicate player_manager:is_believe/rumor run tag @s remove CheckFailed + execute if data storage asset:artifact TargetItem{CanUsedGod:["Urban"]} if predicate player_manager:is_believe/urban run tag @s remove CheckFailed + execute if data storage asset:artifact TargetItem{CanUsedGod:["Wi-ki"]} if predicate player_manager:is_believe/wi-ki run tag @s remove CheckFailed diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/check/check_local_cooldown/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/check/check_local_cooldown/.mcfunction index 3efb1ae936..edce6d4ae1 100644 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/check/check_local_cooldown/.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/check/check_local_cooldown/.mcfunction @@ -6,11 +6,12 @@ #> TickScore # @within function asset_manager:artifact/check/check_local_cooldown/* -#declare score_holder $Tick + #declare score_holder $Tick # データをコピー - data modify storage asset:artifact CopiedItem set from storage asset:artifact TargetItems + data modify storage asset:artifact CopiedItemList set from storage asset:artifact TargetItemList + data modify storage asset:artifact TargetItemList set value [] # すべての要素についてチェックする function asset_manager:artifact/check/check_local_cooldown/foreach # リセット - data remove storage asset:artifact CopiedItem + data remove storage asset:artifact CopiedItemList diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/check/check_local_cooldown/foreach.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/check/check_local_cooldown/foreach.mcfunction index 62b4989071..9c588be061 100644 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/check/check_local_cooldown/foreach.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/check/check_local_cooldown/foreach.mcfunction @@ -12,17 +12,18 @@ # 時間を取得 execute store result score $Tick Temporary run time query gametime # 最後に使用したtickとLocalCooldownを取得 - execute store result score $LatestUsedTick Temporary run data get storage asset:artifact CopiedItem[-1].tag.TSB.LatestUseTick - execute store result score $Cooldown Temporary run data get storage asset:artifact CopiedItem[-1].tag.TSB.LocalCooldown + execute store result score $LatestUsedTick Temporary run data get storage asset:artifact CopiedItemList[-1].LatestUseTick + execute store result score $Cooldown Temporary run data get storage asset:artifact CopiedItemList[-1].LocalCooldown # 減算 scoreboard players operation $Tick Temporary -= $LatestUsedTick Temporary # 比較 + execute if score $Tick Temporary >= $Cooldown Temporary run data modify storage asset:artifact TargetItemList append from storage asset:artifact CopiedItemList[-1] execute unless score $Tick Temporary >= $Cooldown Temporary run tag @s add CheckFailed # 末尾削除 - data remove storage asset:artifact CopiedItem[-1] + data remove storage asset:artifact CopiedItemList[-1] # リセット scoreboard players reset $Cooldown Temporary scoreboard players reset $LatestUsedTick Temporary scoreboard players reset $Tick Temporary # 要素がまだあるなら再帰 - execute if data storage asset:artifact CopiedItem[0] run function asset_manager:artifact/check/check_local_cooldown/foreach + execute if data storage asset:artifact CopiedItemList[0] run function asset_manager:artifact/check/check_local_cooldown/foreach diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/check/check_mp.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/check/check_mp.mcfunction index 1b0bf58d96..8587124f12 100644 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/check/check_mp.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/check/check_mp.mcfunction @@ -4,16 +4,9 @@ # # @within function asset_manager:artifact/check/ -#> Private -# @private - #declare score_holder $Length - # MP必要量を取得 - execute if data storage asset:artifact TargetItems[0].tag.TSB.MPRequire run data modify storage api: Argument.Threshold set from storage asset:artifact TargetItems[-1].tag.TSB.MPRequire - execute unless data storage asset:artifact TargetItems[0].tag.TSB.MPRequire run data modify storage api: Argument.Threshold set from storage asset:artifact TargetItems[-1].tag.TSB.MPCost -# アイテム数だけ増やす - # execute store result score $Length Temporary if data storage asset:artifact TargetItems[] - # scoreboard players operation $CheckMP Lib *= $Length Temporary + execute if data storage asset:artifact TargetItem.MPRequire run data modify storage api: Argument.Threshold set from storage asset:artifact TargetItem.MPRequire + execute unless data storage asset:artifact TargetItem.MPRequire run data modify storage api: Argument.Threshold set from storage asset:artifact TargetItem.MPCost # チェック function api:mp/check # タグ付与 diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/check/check_special_cooldown.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/check/check_special_cooldown.mcfunction index 95d6a2e5d6..b3d0ce8207 100644 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/check/check_special_cooldown.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/check/check_special_cooldown.mcfunction @@ -5,4 +5,4 @@ # @within function asset_manager:artifact/check/ # 特殊クールダウンが存在する∧$ArtifactSpecialCooldownが1以上ならタグ付与 // Item.tag.TSB.SpecialCooldown && $ArtifactSpecialCooldown >= 1 - execute if data storage asset:artifact TargetItems[0].tag.TSB.SpecialCooldown if score $ArtifactSpecialCooldown Global matches 1.. run tag @s add CheckFailed \ No newline at end of file + execute if data storage asset:artifact TargetItem.SpecialCooldown if score $ArtifactSpecialCooldown Global matches 1.. run tag @s add CheckFailed diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/check/check_type_cooldown/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/check/check_type_cooldown/.mcfunction index b7e4c2f759..95a5ca0995 100644 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/check/check_type_cooldown/.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/check/check_type_cooldown/.mcfunction @@ -4,11 +4,18 @@ # # @within function asset_manager:artifact/check/ -# データをコピー - data modify storage asset:artifact CopiedItem set from storage asset:artifact TargetItems +#> private +# @private + #declare score_holder $Duration + # プレイヤーの TypeCooldown 現在値を取得するために EntityStorage を呼び出す function oh_my_dat:please -# すべての要素についてチェックする - function asset_manager:artifact/check/check_type_cooldown/foreach + +# その神器に該当する種別クールダウンの現在値を取得する + scoreboard players set $Duration Temporary -15 + execute if data storage asset:artifact TargetItem.TypeCooldown store result score $Duration Temporary run function asset_manager:artifact/check/check_type_cooldown/get_duration.m with storage asset:artifact TargetItem.TypeCooldown +# クールダウンが終わっていなければタグを付与する + execute if score $Duration Temporary matches 1.. run tag @s add CheckFailed + # リセット - data remove storage asset:artifact CopiedItem + scoreboard players reset $Duration Temporary diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/check/check_type_cooldown/foreach.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/check/check_type_cooldown/foreach.mcfunction deleted file mode 100644 index a3760d9759..0000000000 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/check/check_type_cooldown/foreach.mcfunction +++ /dev/null @@ -1,26 +0,0 @@ -#> asset_manager:artifact/check/check_type_cooldown/foreach -# -# -# -# @within function -# asset_manager:artifact/check/check_type_cooldown/ -# asset_manager:artifact/check/check_type_cooldown/foreach - -#> Private -# @within function -# asset_manager:artifact/check/check_type_cooldown/foreach -# asset_manager:artifact/check/check_type_cooldown/check_duration.m -#declare score_holder $Duration - -# その神器に該当する種別クールダウンの現在値を取得する - scoreboard players set $Duration Temporary -15 - execute if data storage asset:artifact CopiedItem[-1].tag.TSB.TypeCooldown store result score $Duration Temporary run function asset_manager:artifact/check/check_type_cooldown/get_duration.m with storage asset:artifact CopiedItem[-1].tag.TSB.TypeCooldown -# クールダウンが終わっていなければタグを付与する - execute if score $Duration Temporary matches 1.. run tag @s add CheckFailed - -# 末尾削除 - data remove storage asset:artifact CopiedItem[-1] -# リセット - scoreboard players reset $Duration Temporary -# 要素がまだあるなら再帰 - execute if data storage asset:artifact CopiedItem[0] run function asset_manager:artifact/check/check_type_cooldown/foreach diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/check/check_type_cooldown/get_duration.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/check/check_type_cooldown/get_duration.m.mcfunction index 41ac725e2a..0985e144c7 100644 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/check/check_type_cooldown/get_duration.m.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/check/check_type_cooldown/get_duration.m.mcfunction @@ -1,8 +1,7 @@ #> asset_manager:artifact/check/check_type_cooldown/get_duration.m # # -# @input args -# Type: string -# @within function asset_manager:artifact/check/check_type_cooldown/foreach +# @input args Type: string +# @within function asset_manager:artifact/check/check_type_cooldown/ $return run data get storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].TypeCooldown[{Type:$(Type)}].Value diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/check/limit_parts_max/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/check/limit_parts_max/.mcfunction new file mode 100644 index 0000000000..e04140842b --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/check/limit_parts_max/.mcfunction @@ -0,0 +1,22 @@ +#> asset_manager:artifact/check/limit_parts_max/ +# +# +# +# @within function asset_manager:artifact/check/ + +#> PartsMax +# @within function asset_manager:artifact/check/limit_parts_max/** + #declare score_holder $PartsMax + #declare score_holder $PartsCount + +# データを設定 + execute store result score $PartsMax Temporary run data get storage asset:artifact TargetItem.PartsMax + scoreboard players set $PartsCount Temporary 0 + data modify storage asset:artifact CopiedItemList set from storage asset:artifact TargetItemList + data modify storage asset:artifact TargetItemList set value [] +# すべての要素についてチェックする + execute if data storage asset:artifact CopiedItemList[0] run function asset_manager:artifact/check/limit_parts_max/foreach +# リセット + scoreboard players reset $PartsMax Temporary + scoreboard players reset $PartsCount Temporary + data remove storage asset:artifact CopiedItemList diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/check/limit_parts_max/foreach.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/check/limit_parts_max/foreach.mcfunction new file mode 100644 index 0000000000..f0951c0d9c --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/check/limit_parts_max/foreach.mcfunction @@ -0,0 +1,15 @@ +#> asset_manager:artifact/check/limit_parts_max/foreach +# +# +# +# @within function +# asset_manager:artifact/check/limit_parts_max/ +# asset_manager:artifact/check/limit_parts_max/foreach + +# 条件を満たしていれば追加 + execute if score $PartsCount Temporary < $PartsMax Temporary run data modify storage asset:artifact TargetItemList append from storage asset:artifact CopiedItemList[-1] + execute if score $PartsCount Temporary < $PartsMax Temporary run scoreboard players add $PartsCount Temporary 1 +# リセット + data remove storage asset:artifact CopiedItemList[-1] +# ループ + execute if data storage asset:artifact CopiedItemList[0] run function asset_manager:artifact/check/limit_parts_max/foreach diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/cooldown/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/cooldown/.mcfunction index b467f09a4c..809580d74d 100644 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/cooldown/.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/cooldown/.mcfunction @@ -4,7 +4,7 @@ # # @within function asset_manager:artifact/tick/player -#! LocalCoolDown +#! LocalCooldown # 0. offhand # 1. feet # 2. legs diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/cooldown/decrement/local/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/cooldown/decrement/local/.mcfunction index 66681baa9b..b5f5f39199 100644 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/cooldown/decrement/local/.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/cooldown/decrement/local/.mcfunction @@ -5,7 +5,7 @@ # @within function asset_manager:artifact/cooldown/ # コピーする - data modify storage asset:artifact LCDs set from storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCoolDown + data modify storage asset:artifact LCDs set from storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCooldown # 各スロットの CD をデクリメントする LCDs(normal) -> DecrementedLCDs(inverted) function asset_manager:artifact/cooldown/decrement/local/foreach # 反転させる DecrementedLCDs(inverted) -> LCDs(normal) @@ -15,7 +15,7 @@ data modify storage asset:artifact LCDs set from storage lib: Array function lib:array/session/close # 元に戻す - data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCoolDown set from storage asset:artifact LCDs + data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCooldown set from storage asset:artifact LCDs # リセット data remove storage asset:artifact DecrementedLCDs data remove storage asset:artifact NormalizedLCDs diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/cooldown/main_bar/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/cooldown/main_bar/.mcfunction index 0c05cb1d4c..7d99428690 100644 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/cooldown/main_bar/.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/cooldown/main_bar/.mcfunction @@ -8,15 +8,15 @@ function api:data_get/selected_item_slot # 該当のローカルクールダウンを取得する - execute if data storage api: {SelectedItemSlot:0} run data modify storage asset:artifact LCD set from storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCoolDown[5] - execute if data storage api: {SelectedItemSlot:1} run data modify storage asset:artifact LCD set from storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCoolDown[6] - execute if data storage api: {SelectedItemSlot:2} run data modify storage asset:artifact LCD set from storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCoolDown[7] - execute if data storage api: {SelectedItemSlot:3} run data modify storage asset:artifact LCD set from storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCoolDown[8] - execute if data storage api: {SelectedItemSlot:4} run data modify storage asset:artifact LCD set from storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCoolDown[9] - execute if data storage api: {SelectedItemSlot:5} run data modify storage asset:artifact LCD set from storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCoolDown[10] - execute if data storage api: {SelectedItemSlot:6} run data modify storage asset:artifact LCD set from storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCoolDown[11] - execute if data storage api: {SelectedItemSlot:7} run data modify storage asset:artifact LCD set from storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCoolDown[12] - execute if data storage api: {SelectedItemSlot:8} run data modify storage asset:artifact LCD set from storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCoolDown[13] + execute if data storage api: {SelectedItemSlot:0} run data modify storage asset:artifact LCD set from storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCooldown[5] + execute if data storage api: {SelectedItemSlot:1} run data modify storage asset:artifact LCD set from storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCooldown[6] + execute if data storage api: {SelectedItemSlot:2} run data modify storage asset:artifact LCD set from storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCooldown[7] + execute if data storage api: {SelectedItemSlot:3} run data modify storage asset:artifact LCD set from storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCooldown[8] + execute if data storage api: {SelectedItemSlot:4} run data modify storage asset:artifact LCD set from storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCooldown[9] + execute if data storage api: {SelectedItemSlot:5} run data modify storage asset:artifact LCD set from storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCooldown[10] + execute if data storage api: {SelectedItemSlot:6} run data modify storage asset:artifact LCD set from storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCooldown[11] + execute if data storage api: {SelectedItemSlot:7} run data modify storage asset:artifact LCD set from storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCooldown[12] + execute if data storage api: {SelectedItemSlot:8} run data modify storage asset:artifact LCD set from storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCooldown[13] # 該当の種別クールダウンを取得する execute if data storage api: {SelectedItemSlot:0} run data modify storage asset:artifact CooldownType.Type set from storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].EquipmentCooldownTypes[5] diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/create/equipment/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/create/equipment/.mcfunction new file mode 100644 index 0000000000..3a5c28d2a1 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/create/equipment/.mcfunction @@ -0,0 +1,37 @@ +#> asset_manager:artifact/create/equipment/ +# +# 装備セットによる効果を設定する +# +# @within function asset_manager:artifact/create/set_lore + +# IDから効果を抜き取る + function asset_manager:common/context/id/stash + data modify storage asset:context id set from storage asset:artifact EquipID + function #asset:effect/register + function asset_manager:common/context/id/pop + +# 空行セパレータ + data modify storage asset:artifact Item.tag.display.Lore append value '""' +# 名前をLoreに組み込む + data modify storage asset:artifact EquipName set from storage asset:effect Name + loot replace block 10000 0 10000 container.0 loot asset_manager:artifact/generate_lore/equipment + data modify storage asset:artifact Item.tag.display.Lore append from block 10000 0 10000 Items[0].tag.display.Lore[0] +# 説明文をLoreに組み込む + execute if data storage asset:effect Description[0] run function asset_manager:artifact/create/equipment/description + +# リセット + data remove storage asset:artifact EquipName + data remove storage asset:effect ExtendsSafe + data remove storage asset:effect ID + data remove storage asset:effect Name + data remove storage asset:effect Description + data remove storage asset:effect Duration + data remove storage asset:effect Stack + data remove storage asset:effect DurationOperation + data remove storage asset:effect StackOperation + data remove storage asset:effect MaxDuration + data remove storage asset:effect MaxStack + data remove storage asset:effect IsBadEffect + data remove storage asset:effect ProcessOnDied + data remove storage asset:effect RequireClearLv + data remove storage asset:effect Field diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/create/equipment/description.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/create/equipment/description.mcfunction new file mode 100644 index 0000000000..93c9907c9c --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/create/equipment/description.mcfunction @@ -0,0 +1,11 @@ +#> asset_manager:artifact/create/equipment/description +# +# 装備セットによる効果を設定する +# +# @within function asset_manager:artifact/create/equipment/* + +loot replace block 10000 0 10000 container.0 loot asset_manager:artifact/generate_lore/equipment_description +data modify storage asset:artifact Item.tag.display.Lore append from block 10000 0 10000 Items[0].tag.display.Lore[0] +data remove storage asset:effect Description[0] + +execute if data storage asset:effect Description[0] run function asset_manager:artifact/create/equipment/description diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/create/modifier/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/create/modifier/.mcfunction new file mode 100644 index 0000000000..a081747fea --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/create/modifier/.mcfunction @@ -0,0 +1,101 @@ +#> asset_manager:artifact/create/modifier/ +# +# 装備時効果の内容をLoreに追加 +# +# @within function +# asset_manager:artifact/create/set_lore +# asset_manager:artifact/create/modifier/ + +#> temp +# @private + #declare score_holder $AmountFrac + #declare score_holder $AmountFrac2 + #declare score_holder $AmountInt + #declare score_holder $CustomModifier + +# 変数を用意 + scoreboard players set $CustomModifier Temporary 0 + data modify storage asset:artifact Modifier set from storage asset:artifact CopiedModifiers[0] + data modify storage asset:artifact Line set value ['{"text":"","color":"green","italic":false}','""','" +"','{"translate":"%s","with":[{"storage":"asset:artifact","nbt":"Amount.Int"}]}','""'] + +# カスタムModifier + execute if data storage asset:artifact Modifier{Type:"attack/base"} run scoreboard players set $CustomModifier Temporary 1 + execute if data storage asset:artifact Modifier{Type:"attack/base"} run data modify storage asset:artifact Line[1] set value '"攻撃"' + execute if data storage asset:artifact Modifier{Type:"attack/fire"} run scoreboard players set $CustomModifier Temporary 1 + execute if data storage asset:artifact Modifier{Type:"attack/fire"} run data modify storage asset:artifact Line[1] set value '"火攻撃"' + execute if data storage asset:artifact Modifier{Type:"attack/magic"} run scoreboard players set $CustomModifier Temporary 1 + execute if data storage asset:artifact Modifier{Type:"attack/magic"} run data modify storage asset:artifact Line[1] set value '"魔法攻撃"' + execute if data storage asset:artifact Modifier{Type:"attack/physical"} run scoreboard players set $CustomModifier Temporary 1 + execute if data storage asset:artifact Modifier{Type:"attack/physical"} run data modify storage asset:artifact Line[1] set value '"物理攻撃"' + execute if data storage asset:artifact Modifier{Type:"attack/thunder"} run scoreboard players set $CustomModifier Temporary 1 + execute if data storage asset:artifact Modifier{Type:"attack/thunder"} run data modify storage asset:artifact Line[1] set value '"雷攻撃"' + execute if data storage asset:artifact Modifier{Type:"attack/water"} run scoreboard players set $CustomModifier Temporary 1 + execute if data storage asset:artifact Modifier{Type:"attack/water"} run data modify storage asset:artifact Line[1] set value '"水攻撃"' + execute if data storage asset:artifact Modifier{Type:"defense/base"} run scoreboard players set $CustomModifier Temporary 1 + execute if data storage asset:artifact Modifier{Type:"defense/base"} run data modify storage asset:artifact Line[1] set value '"耐性"' + execute if data storage asset:artifact Modifier{Type:"defense/fire"} run scoreboard players set $CustomModifier Temporary 1 + execute if data storage asset:artifact Modifier{Type:"defense/fire"} run data modify storage asset:artifact Line[1] set value '"火耐性"' + execute if data storage asset:artifact Modifier{Type:"defense/magic"} run scoreboard players set $CustomModifier Temporary 1 + execute if data storage asset:artifact Modifier{Type:"defense/magic"} run data modify storage asset:artifact Line[1] set value '"魔法耐性"' + execute if data storage asset:artifact Modifier{Type:"defense/physical"} run scoreboard players set $CustomModifier Temporary 1 + execute if data storage asset:artifact Modifier{Type:"defense/physical"} run data modify storage asset:artifact Line[1] set value '"物理耐性"' + execute if data storage asset:artifact Modifier{Type:"defense/thunder"} run scoreboard players set $CustomModifier Temporary 1 + execute if data storage asset:artifact Modifier{Type:"defense/thunder"} run data modify storage asset:artifact Line[1] set value '"雷耐性"' + execute if data storage asset:artifact Modifier{Type:"defense/water"} run scoreboard players set $CustomModifier Temporary 1 + execute if data storage asset:artifact Modifier{Type:"defense/water"} run data modify storage asset:artifact Line[1] set value '"水耐性"' + execute if data storage asset:artifact Modifier{Type:"heal"} run scoreboard players set $CustomModifier Temporary 1 + execute if data storage asset:artifact Modifier{Type:"heal"} run data modify storage asset:artifact Line[1] set value '"回復量"' + execute if data storage asset:artifact Modifier{Type:"receive_heal"} run scoreboard players set $CustomModifier Temporary 1 + execute if data storage asset:artifact Modifier{Type:"receive_heal"} run data modify storage asset:artifact Line[1] set value '"被回復量"' + execute if data storage asset:artifact Modifier{Type:"mp_regen"} run scoreboard players set $CustomModifier Temporary 1 + execute if data storage asset:artifact Modifier{Type:"mp_regen"} run data modify storage asset:artifact Line[1] set value '"MP回復量"' + execute if data storage asset:artifact Modifier{Type:"max_health"} run scoreboard players set $CustomModifier Temporary 1 + execute if data storage asset:artifact Modifier{Type:"max_health"} run data modify storage asset:artifact Line[1] set value '"最大体力"' + execute if data storage asset:artifact Modifier{Type:"max_mp"} run scoreboard players set $CustomModifier Temporary 1 + execute if data storage asset:artifact Modifier{Type:"max_mp"} run data modify storage asset:artifact Line[1] set value '"最大MP"' + execute if data storage asset:artifact Modifier{Type:"fall_damage"} run scoreboard players set $CustomModifier Temporary 1 + execute if data storage asset:artifact Modifier{Type:"fall_damage"} run data modify storage asset:artifact Line[1] set value '"落下耐性"' + execute if score $CustomModifier Temporary matches 0 run function asset_manager:artifact/create/modifier/generic.m with storage asset:artifact Modifier +# 数値チェック +# Operation == "add": +# $AmountInt = floor(abs(Amount)) +# $AmountFrac(e3) = abs(Amount) * e3 % e3 +# Operation != "add": +# $AmountInt(e2) = floor(abs(Amount) * e2) +# $AmountFrac(e5) = abs(Amount) * e5 % e3 + execute store result score $AmountFrac Temporary run data get storage asset:artifact Modifier.Amount 1000 + execute unless data storage asset:artifact Modifier{Operation:"add"} run data modify storage asset:artifact Line[4] set value '"%"' + execute unless data storage asset:artifact Modifier{Operation:"add"} run scoreboard players operation $AmountFrac Temporary *= $100 Const + execute unless score $AmountFrac Temporary matches 0.. run data modify storage asset:artifact Line[0] set value '{"text":"","color":"red","italic":false}' + execute unless score $AmountFrac Temporary matches 0.. run data modify storage asset:artifact Line[2] set value '" -"' + execute unless score $AmountFrac Temporary matches 0.. run scoreboard players operation $AmountFrac Temporary *= $-1 Const + scoreboard players operation $AmountInt Temporary = $AmountFrac Temporary + scoreboard players operation $AmountInt Temporary /= $1000 Const + scoreboard players operation $AmountFrac Temporary %= $1000 Const +# $AmountFrac % 10 == 0: +# $AmountFrac(e2|e4) = $AmountFrac(e3|e5) / e1 + scoreboard players operation $AmountFrac2 Temporary = $AmountFrac Temporary + scoreboard players operation $AmountFrac2 Temporary %= $10 Const + execute if score $AmountFrac2 Temporary matches 0 run scoreboard players operation $AmountFrac Temporary /= $10 Const + scoreboard players operation $AmountFrac2 Temporary = $AmountFrac Temporary + scoreboard players operation $AmountFrac2 Temporary %= $10 Const + execute if score $AmountFrac2 Temporary matches 0 run scoreboard players operation $AmountFrac Temporary /= $10 Const +# 文字列に代入 + execute store result storage asset:artifact Amount.Int int 1 run scoreboard players get $AmountInt Temporary + execute store result storage asset:artifact Amount.Frac int 1 run scoreboard players get $AmountFrac Temporary + execute if score $AmountFrac Temporary matches 1.. run data modify storage asset:artifact Line[3] set value '{"translate":"%s.%s","with":[{"storage":"asset:artifact","nbt":"Amount.Int"},{"storage":"asset:artifact","nbt":"Amount.Frac"}]}' +# Lore追加 + loot replace block 10000 0 10000 container.0 loot asset_manager:artifact/generate_lore/modifier + data modify storage asset:artifact Item.tag.display.Lore append from block 10000 0 10000 Items[0].tag.display.Lore[] + +# リセット + scoreboard players reset $CustomModifier Temporary + scoreboard players reset $AmountInt Temporary + scoreboard players reset $AmountFrac Temporary + scoreboard players reset $AmountFrac2 Temporary + data remove storage asset:artifact Line + data remove storage asset:artifact Amount +# 残っていればループ + data remove storage asset:artifact Modifier + data remove storage asset:artifact CopiedModifiers[0] + execute if data storage asset:artifact CopiedModifiers[0] run function asset_manager:artifact/create/modifier/ diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/create/modifier/generic.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/create/modifier/generic.m.mcfunction new file mode 100644 index 0000000000..667c33782a --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/create/modifier/generic.m.mcfunction @@ -0,0 +1,6 @@ +#> asset_manager:artifact/create/modifier/generic.m +# @input args +# Type : string +# @within function asset_manager:artifact/create/modifier/ + +$data modify storage asset:artifact Line[1] set value '{"translate":"attribute.name.$(Type)"}' diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/create/set_data.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/create/set_data.mcfunction index 5e8053be58..4a957a1cf8 100644 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/create/set_data.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/create/set_data.mcfunction @@ -10,19 +10,34 @@ # Name : TextComponent # Lore : TextComponent[] # RemainingCount? : int +# RemainingCountMax? : int # Slot : Slot # Trigger : Trigger +# SubTriggers? : Trigger[] # Condition? : TextComponent # AttackInfo? : Component -# MPCost : int -# MPRequire : int -# MPHealWhenHit : int +# MPCost? : int +# MPRequire? : int +# MPHealWhenHit? : int # ConsumeItem? : {Item: TextComponent, Count: int, Extra?: TextComponent} -# LocalCooldown : int -# SpecialCooldown : int +# LocalCooldown? : int +# TypeCooldown? : {Type: enum(CooldownType), Duration: int} +# SpecialCooldown? : int +# DisableCooldownMessage? : boolean +# DisableMPMessage? : boolean +# IgnoreItemUpdate? : boolean +# DisableBreakSound? : boolean +# EquipID? : int +# Modifiers : Component[] +# ├ Type : string +# ├ Amount : double +# ├ Operation : "add" | "multiply_base" | "multiply" +# ├ MaxStack : int +# └ StackReduction : double +# PartsMax? : int # CanUsedGod : God[] # CustomNBT : Item.tag -# @within function asset:artifact/common/give +# @within function asset_manager:artifact/give/ #> Private # @private @@ -47,19 +62,25 @@ data modify storage asset:artifact Item.tag.CustomModelData set from storage asset:artifact ID data modify storage asset:artifact Item.tag.TSB.rawName set from storage asset:artifact Name data modify storage asset:artifact Item.tag.TSB.ID set from storage asset:artifact ID + data modify storage asset:artifact Item.tag.TSB.Slot set from storage asset:artifact Slot data modify storage asset:artifact Item.tag.TSB.Trigger set from storage asset:artifact Trigger + data modify storage asset:artifact Item.tag.TSB.SubTriggers set from storage asset:artifact SubTriggers data modify storage asset:artifact Item.tag.TSB.MPCost set from storage asset:artifact MPCost data modify storage asset:artifact Item.tag.TSB.MPRequire set from storage asset:artifact MPRequire data modify storage asset:artifact Item.tag.TSB.MPHealWhenHit set from storage asset:artifact MPHealWhenHit data modify storage asset:artifact Item.tag.TSB.CanUsedGod set from storage asset:artifact CanUsedGod data modify storage asset:artifact Item.tag.TSB.RemainingCount set from storage asset:artifact RemainingCount - data modify storage asset:artifact Item.tag.TSB.RemainingCountMAX set from storage asset:artifact RemainingCount + data modify storage asset:artifact Item.tag.TSB.RemainingCountMax set from storage asset:artifact RemainingCountMax data modify storage asset:artifact Item.tag.TSB.LocalCooldown set from storage asset:artifact LocalCooldown data modify storage asset:artifact Item.tag.TSB.TypeCooldown set from storage asset:artifact TypeCooldown data modify storage asset:artifact Item.tag.TSB.SpecialCooldown set from storage asset:artifact SpecialCooldown data modify storage asset:artifact Item.tag.TSB.DisableCooldownMessage set from storage asset:artifact DisableCooldownMessage data modify storage asset:artifact Item.tag.TSB.DisableMPMessage set from storage asset:artifact DisableMPMessage + data modify storage asset:artifact Item.tag.TSB.IgnoreItemUpdate set from storage asset:artifact IgnoreItemUpdate data modify storage asset:artifact Item.tag.TSB.DisableBreakSound set from storage asset:artifact DisableBreakSound + data modify storage asset:artifact Item.tag.TSB.EquipID set from storage asset:artifact EquipID + data modify storage asset:artifact Item.tag.TSB.Modifiers set from storage asset:artifact Modifiers + data modify storage asset:artifact Item.tag.TSB.PartsMax set from storage asset:artifact PartsMax # 名前 # 残り回数が存在する場合 @@ -69,7 +90,7 @@ data modify storage asset:artifact Item.tag.display.Name set from block 10000 0 10000 Items[0].tag.display.Name # Lore - function asset_manager:artifact/create/set_lore/ + function asset_manager:artifact/create/set_lore # カスタムNBT data modify storage asset:artifact CustomNBT.Unbreakable set value 1b function asset_manager:artifact/create/set_hide_flags diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/create/set_lore/8.god.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/create/set_god.mcfunction similarity index 84% rename from TheSkyBlessing/data/asset_manager/functions/artifact/create/set_lore/8.god.mcfunction rename to TheSkyBlessing/data/asset_manager/functions/artifact/create/set_god.mcfunction index 6a18c7317d..332a5f0667 100644 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/create/set_lore/8.god.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/create/set_god.mcfunction @@ -1,8 +1,8 @@ -#> asset_manager:artifact/create/set_lore/8.god +#> asset_manager:artifact/create/set_god # # 使用できる神を設定します # -# @within function asset_manager:artifact/create/set_lore/ +# @within function asset_manager:artifact/create/set_lore # ベース文字列 data modify storage asset:artifact Temp.CanUsedGod set value [] @@ -18,6 +18,7 @@ execute if data storage asset:artifact {CanUsedGod:["Wi-ki"]} run data modify storage asset:artifact Temp.CanUsedGod[3] set from storage global Icon.God.Wi-ki execute if data storage asset:artifact {CanUsedGod:["Rumor"]} run data modify storage asset:artifact Temp.CanUsedGod[4] set from storage global Icon.God.Rumor # 生成 - loot replace block 10000 0 10000 container.8 loot asset_manager:artifact/generate_lore/8.god + loot replace block 10000 0 10000 container.0 loot asset_manager:artifact/generate_lore/god + data modify storage asset:artifact Item.tag.display.Lore append from block 10000 0 10000 Items[0].tag.display.Lore[0] # リセット data remove storage asset:artifact Temp diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/create/set_lore.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/create/set_lore.mcfunction new file mode 100644 index 0000000000..1f3476ee3b --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/create/set_lore.mcfunction @@ -0,0 +1,26 @@ +#> asset_manager:artifact/create/set_lore +# +# Loreを構成します +# +# @within function asset_manager:artifact/create/set_data + +# 初期化 + data modify block 10000 0 10000 Items set value [] +# 通常説明文 + execute if data storage asset:artifact Lore[0] run function asset_manager:artifact/create/vanilla_lore +# 装備時効果 + data modify storage asset:artifact CopiedModifiers set from storage asset:artifact Modifiers + execute if data storage asset:artifact CopiedModifiers[0] if data storage asset:artifact Item.tag.display.Lore[0] run data modify storage asset:artifact Item.tag.display.Lore append value '""' + execute if data storage asset:artifact CopiedModifiers[0] run function asset_manager:artifact/create/modifier/ + data remove storage asset:artifact CopiedModifiers +# セット効果 + execute if data storage asset:artifact EquipID run function asset_manager:artifact/create/equipment/ +# スキル設定 + execute if data storage asset:artifact Trigger run function asset_manager:artifact/create/trigger/ + +# 空行セパレータ + execute if data storage asset:artifact Item.tag.display.Lore[0] run data modify storage asset:artifact Item.tag.display.Lore append value '""' +# 最大装備数 + execute if data storage asset:artifact {Slot:"hotbar"} run function asset_manager:artifact/create/set_parts_max +# 使える神 + function asset_manager:artifact/create/set_god diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/create/set_lore/0.trigger.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/create/set_lore/0.trigger.mcfunction deleted file mode 100644 index 02f3ff353e..0000000000 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/create/set_lore/0.trigger.mcfunction +++ /dev/null @@ -1,63 +0,0 @@ -#> asset_manager:artifact/create/set_lore/0.trigger -# -# 使用の条件を設定します -# -# @within function asset_manager:artifact/create/set_lore/ - -# 指定スロットがhotbarでかつ重複可能か - execute if data storage asset:artifact {Slot:"hotbar",EnableDuplication:true} run data modify storage asset:artifact Temp.EnableDuplication set value "[重複可能] " - -# スロット - execute if data storage asset:artifact {Slot:"auto"} run data modify storage asset:artifact Temp.Trigger.A set value "どちらかの手に所持" - execute if data storage asset:artifact {Slot:"mainhand"} run data modify storage asset:artifact Temp.Trigger.A set value "メインハンドに所持" - execute if data storage asset:artifact {Slot:"offhand"} run data modify storage asset:artifact Temp.Trigger.A set value "オフハンドに所持" - execute if data storage asset:artifact {Slot:"head"} run data modify storage asset:artifact Temp.Trigger.A set value "装備" - execute if data storage asset:artifact {Slot:"chest"} run data modify storage asset:artifact Temp.Trigger.A set value "装備" - execute if data storage asset:artifact {Slot:"legs"} run data modify storage asset:artifact Temp.Trigger.A set value "装備" - execute if data storage asset:artifact {Slot:"feet"} run data modify storage asset:artifact Temp.Trigger.A set value "装備" - execute if data storage asset:artifact {Slot:"inventory"} run data modify storage asset:artifact Temp.Trigger.A set value "インベントリ内に保持" - execute if data storage asset:artifact {Slot:"hotbar"} run data modify storage asset:artifact Temp.Trigger.A set value "ホットバーに保持" -# 接続詞 - data modify storage asset:artifact Temp.Trigger.AB set value "し" -# トリガー - execute if data storage asset:artifact {Trigger:"onClick"} run data modify storage asset:artifact Temp.Trigger.B set value "右クリック" - execute if data storage asset:artifact {Trigger:"shot"} run data modify storage asset:artifact Temp.Trigger.B set value "発射" - execute if data storage asset:artifact {Trigger:"itemUse"} run data modify storage asset:artifact Temp.Trigger.B set value "使用" - execute if data storage asset:artifact {Trigger:"passive"} run data modify storage asset:artifact Temp.Trigger.B set value "ている限り" - execute if data storage asset:artifact {Trigger:"onAttack"} run data modify storage asset:artifact Temp.Trigger.B set value "攻撃" - execute if data storage asset:artifact {Trigger:"onAttackByMelee"} run data modify storage asset:artifact Temp.Trigger.B set value "近接攻撃" - execute if data storage asset:artifact {Trigger:"onAttackByProjectile"} run data modify storage asset:artifact Temp.Trigger.B set value "遠距離攻撃" - execute if data storage asset:artifact {Trigger:"onDamage"} run data modify storage asset:artifact Temp.Trigger.B set value "被ダメージ" - execute if data storage asset:artifact {Trigger:"onDamageFromExplode"} run data modify storage asset:artifact Temp.Trigger.B set value "被爆発ダメージ" - execute if data storage asset:artifact {Trigger:"onDamageFromBurn"} run data modify storage asset:artifact Temp.Trigger.B set value "被延焼ダメージ" - execute if data storage asset:artifact {Trigger:"onDamageFromEntity"} run data modify storage asset:artifact Temp.Trigger.B set value "被攻撃ダメージ" - execute if data storage asset:artifact {Trigger:"onDamageFromMelee"} run data modify storage asset:artifact Temp.Trigger.B set value "被近接ダメージ" - execute if data storage asset:artifact {Trigger:"onDamageFromProjectile"} run data modify storage asset:artifact Temp.Trigger.B set value "被遠距離ダメージ" - execute if data storage asset:artifact {Trigger:"onKilled"} run data modify storage asset:artifact Temp.Trigger.B set value "撃破" - execute if data storage asset:artifact {Trigger:"onKilledByMelee"} run data modify storage asset:artifact Temp.Trigger.B set value "近接攻撃で撃破" - execute if data storage asset:artifact {Trigger:"onKilledByProjectile"} run data modify storage asset:artifact Temp.Trigger.B set value "遠距離攻撃で撃破" - execute if data storage asset:artifact {Trigger:"sneak"} run data modify storage asset:artifact Temp.Trigger.B set value "スニーク" - execute if data storage asset:artifact {Trigger:"sneak1s"} run data modify storage asset:artifact Temp.Trigger.B set value "1秒間スニーク" - execute if data storage asset:artifact {Trigger:"sneak2s"} run data modify storage asset:artifact Temp.Trigger.B set value "2秒間スニーク" - execute if data storage asset:artifact {Trigger:"sneak3s"} run data modify storage asset:artifact Temp.Trigger.B set value "3秒間スニーク" - execute if data storage asset:artifact {Trigger:"sneak4s"} run data modify storage asset:artifact Temp.Trigger.B set value "4秒間スニーク" - execute if data storage asset:artifact {Trigger:"sneak5s"} run data modify storage asset:artifact Temp.Trigger.B set value "5秒間スニーク" - execute if data storage asset:artifact {Trigger:"sneak10s"} run data modify storage asset:artifact Temp.Trigger.B set value "10秒間スニーク" - execute if data storage asset:artifact {Trigger:"keepSneak"} run data modify storage asset:artifact Temp.Trigger.B set value "0秒以上スニーク" - execute if data storage asset:artifact {Trigger:"keepSneak1s"} run data modify storage asset:artifact Temp.Trigger.B set value "1秒間以上スニーク" - execute if data storage asset:artifact {Trigger:"keepSneak2s"} run data modify storage asset:artifact Temp.Trigger.B set value "2秒間以上スニーク" - execute if data storage asset:artifact {Trigger:"keepSneak3s"} run data modify storage asset:artifact Temp.Trigger.B set value "3秒間以上スニーク" - execute if data storage asset:artifact {Trigger:"keepSneak4s"} run data modify storage asset:artifact Temp.Trigger.B set value "4秒間以上スニーク" - execute if data storage asset:artifact {Trigger:"keepSneak5s"} run data modify storage asset:artifact Temp.Trigger.B set value "5秒間以上スニーク" - execute if data storage asset:artifact {Trigger:"keepSneak10s"} run data modify storage asset:artifact Temp.Trigger.B set value "10秒間以上スニーク" - execute if data storage asset:artifact {Trigger:"equipping"} run data modify storage asset:artifact Temp.Trigger.AB set value "" - execute if data storage asset:artifact {Trigger:"equipping"} run data modify storage asset:artifact Temp.Trigger.B set value "" - execute if data storage asset:artifact {Trigger:"onHeal"} run data modify storage asset:artifact Temp.Trigger.B set value "回復を与える" - execute if data storage asset:artifact {Trigger:"onReceiveHeal"} run data modify storage asset:artifact Temp.Trigger.B set value "回復を受ける" -# 設定されてなかったらエラーメッセージ - execute unless data storage asset:artifact Temp.Trigger.A run tellraw @a [{"storage":"global","nbt":"Prefix.ERROR"},{"text":"登録されていないSlotが指定されています","color":"white"}] - execute unless data storage asset:artifact Temp.Trigger.B run tellraw @a [{"storage":"global","nbt":"Prefix.ERROR"},{"text":"登録されていないTriggerが指定されています","color":"white"}] -# 生成 - loot replace block 10000 0 10000 container.0 loot asset_manager:artifact/generate_lore/0.trigger -# リセット - data remove storage asset:artifact Temp diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/create/set_lore/5.mp_heal_when_hit/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/create/set_lore/5.mp_heal_when_hit/.mcfunction deleted file mode 100644 index 0d5808de04..0000000000 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/create/set_lore/5.mp_heal_when_hit/.mcfunction +++ /dev/null @@ -1,12 +0,0 @@ -#> asset_manager:artifact/create/set_lore/5.mp_heal_when_hit/ -# -# -# -# @within function asset_manager:artifact/create/set_lore/ - -# マクロを使ってSuffixを表示しないようにする - data modify storage asset:artifact Temp.Val set from storage asset:artifact MPHealWhenHit - function asset_manager:artifact/create/set_lore/5.mp_heal_when_hit/generate with storage asset:artifact Temp - -# リセット - data remove storage asset:artifact Temp diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/create/set_lore/5.mp_heal_when_hit/generate.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/create/set_lore/5.mp_heal_when_hit/generate.mcfunction deleted file mode 100644 index ad2118300a..0000000000 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/create/set_lore/5.mp_heal_when_hit/generate.mcfunction +++ /dev/null @@ -1,11 +0,0 @@ -#> asset_manager:artifact/create/set_lore/5.mp_heal_when_hit/generate -# -# -# -# @within function asset_manager:artifact/create/set_lore/5.mp_heal_when_hit/ - -# 文字列として取得 - $data modify storage asset:artifact Temp set value "$(Val)" - -# 生成 - loot replace block 10000 0 10000 container.5 loot asset_manager:artifact/generate_lore/5.mp_heal_when_hit diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/create/set_lore/7.cooldown/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/create/set_lore/7.cooldown/.mcfunction deleted file mode 100644 index 64918e77d9..0000000000 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/create/set_lore/7.cooldown/.mcfunction +++ /dev/null @@ -1,20 +0,0 @@ -#> asset_manager:artifact/create/set_lore/7.cooldown/ -# -# -# -# @input args -# Path: int -# ExportSlot: int -# @within function asset_manager:artifact/create/set_lore/ - -# 各クールダウンの文章を生成する - execute if data storage asset:artifact LocalCooldown run function asset_manager:artifact/create/set_lore/7.cooldown/make_duration.m {CooldownPath:"storage asset:artifact LocalCooldown",IconPath:"storage global Icon.Cooldown.Local"} - execute if data storage asset:artifact TypeCooldown{Type:"shortRange"} run function asset_manager:artifact/create/set_lore/7.cooldown/make_duration.m {CooldownPath:"storage asset:artifact TypeCooldown.Duration",IconPath:"storage global Icon.Cooldown.Type.ShortRange"} - execute if data storage asset:artifact TypeCooldown{Type: "longRange"} run function asset_manager:artifact/create/set_lore/7.cooldown/make_duration.m {CooldownPath:"storage asset:artifact TypeCooldown.Duration",IconPath:"storage global Icon.Cooldown.Type.LongRange"} - execute if data storage asset:artifact TypeCooldown{Type: "summon"} run function asset_manager:artifact/create/set_lore/7.cooldown/make_duration.m {CooldownPath:"storage asset:artifact TypeCooldown.Duration",IconPath:"storage global Icon.Cooldown.Type.Summon"} - execute if data storage asset:artifact TypeCooldown{Type: "heal"} run function asset_manager:artifact/create/set_lore/7.cooldown/make_duration.m {CooldownPath:"storage asset:artifact TypeCooldown.Duration",IconPath:"storage global Icon.Cooldown.Type.Heal"} - execute if data storage asset:artifact SpecialCooldown run function asset_manager:artifact/create/set_lore/7.cooldown/make_duration.m {CooldownPath:"storage asset:artifact SpecialCooldown",IconPath:"storage global Icon.Cooldown.Global"} -# lootする - execute if data storage asset:artifact Cooldown[0] run loot replace block 10000 0 10000 container.7 loot asset_manager:artifact/generate_lore/7.cooldown -# リセット - data remove storage asset:artifact Cooldown diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/create/set_parts_max.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/create/set_parts_max.mcfunction new file mode 100644 index 0000000000..5221c8e1cd --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/create/set_parts_max.mcfunction @@ -0,0 +1,9 @@ +#> asset_manager:artifact/create/set_parts_max +# +# +# +# @within function asset_manager:artifact/create/set_lore + +# 生成 + loot replace block 10000 0 10000 container.0 loot asset_manager:artifact/generate_lore/parts_max + data modify storage asset:artifact Item.tag.display.Lore append from block 10000 0 10000 Items[0].tag.display.Lore[0] diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/create/set_lore/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/create/trigger/.mcfunction similarity index 53% rename from TheSkyBlessing/data/asset_manager/functions/artifact/create/set_lore/.mcfunction rename to TheSkyBlessing/data/asset_manager/functions/artifact/create/trigger/.mcfunction index 8a04c8644a..5d08b46946 100644 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/create/set_lore/.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/create/trigger/.mcfunction @@ -1,33 +1,30 @@ -#> asset_manager:artifact/create/set_lore/ +#> asset_manager:artifact/create/trigger/ # -# Loreを構成します +# Trigger関連の情報をLoreに追加する # -# @within function asset_manager:artifact/create/set_data +# @within function +# asset_manager:artifact/create/set_lore +# asset_manager:artifact/create/trigger/ -# 初期化 - data modify block 10000 0 10000 Items set value [] -# 通常説明文 - function asset_manager:artifact/create/set_lore/vanilla_lore # 空行セパレータ - data modify storage asset:artifact Item.tag.display.Lore append value '""' + execute if data storage asset:artifact Item.tag.display.Lore[0] run data modify storage asset:artifact Item.tag.display.Lore append value '""' # 0 使用方法 - function asset_manager:artifact/create/set_lore/0.trigger + function asset_manager:artifact/create/trigger/trigger # 1? 使用条件 - execute if data storage asset:artifact Condition run loot replace block 10000 0 10000 container.1 loot asset_manager:artifact/generate_lore/1.condition + execute if data storage asset:artifact Condition run loot replace block 10000 0 10000 container.1 loot asset_manager:artifact/generate_lore/condition # 2? 攻撃情報 - execute if data storage asset:artifact AttackInfo run function asset_manager:artifact/create/set_lore/2.attack_info + execute if data storage asset:artifact AttackInfo run function asset_manager:artifact/create/trigger/attack_info # 3? 必要MP - execute if data storage asset:artifact MPRequire run loot replace block 10000 0 10000 container.3 loot asset_manager:artifact/generate_lore/3.mp_require + execute if data storage asset:artifact MPRequire run loot replace block 10000 0 10000 container.3 loot asset_manager:artifact/generate_lore/mp_require # 4? 消費MP - execute if data storage asset:artifact MPCost run loot replace block 10000 0 10000 container.4 loot asset_manager:artifact/generate_lore/4.mp_cost + execute if data storage asset:artifact MPCost run loot replace block 10000 0 10000 container.4 loot asset_manager:artifact/generate_lore/mp_cost # 5? ヒット時MP回復 - execute if data storage asset:artifact MPHealWhenHit run function asset_manager:artifact/create/set_lore/5.mp_heal_when_hit/ + execute if data storage asset:artifact MPHealWhenHit run function asset_manager:artifact/create/trigger/mp_heal_when_hit/ # 6? 消費アイテム - execute if data storage asset:artifact ConsumeItem run function asset_manager:artifact/create/set_lore/6.consume_item -# 7? クールダウン - function asset_manager:artifact/create/set_lore/7.cooldown/ -# 8 使える神 - function asset_manager:artifact/create/set_lore/8.god + execute if data storage asset:artifact ConsumeItem run function asset_manager:artifact/create/trigger/consume_item +# 7? クールタイム + function asset_manager:artifact/create/trigger/cooldown/ + # Lore一括追加 data modify storage asset:artifact Item.tag.display.Lore append from block 10000 0 10000 Items[].tag.display.Lore[] # リセット diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/create/set_lore/2.attack_info.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/create/trigger/attack_info.mcfunction similarity index 96% rename from TheSkyBlessing/data/asset_manager/functions/artifact/create/set_lore/2.attack_info.mcfunction rename to TheSkyBlessing/data/asset_manager/functions/artifact/create/trigger/attack_info.mcfunction index 4e2ad6e404..aa28136770 100644 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/create/set_lore/2.attack_info.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/create/trigger/attack_info.mcfunction @@ -1,8 +1,12 @@ -#> asset_manager:artifact/create/set_lore/2.attack_info +#> asset_manager:artifact/create/trigger/attack_info # # 攻撃に関する情報をLoreに追加します # -# @within function asset_manager:artifact/create/set_lore/ +# @within function asset_manager:artifact/create/trigger/ + +#> private +# @private + #declare score_holder $IsList # 1 行目の作成 # 防御貫通 @@ -33,7 +37,7 @@ execute if data storage asset:artifact AttackInfo{ElementType:["None"]} run data modify storage asset:artifact Line2[5] set value '{"storage":"global","nbt":"Icon.Attack.None","color":"white","interpret":true}' # lootしてLoreに落とし込む - loot replace block 10000 0 10000 container.2 loot asset_manager:artifact/generate_lore/2.attack_info + loot replace block 10000 0 10000 container.2 loot asset_manager:artifact/generate_lore/attack_info # リセット data remove storage asset:artifact Line1 diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/create/set_lore/6.consume_item.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/create/trigger/consume_item.mcfunction similarity index 57% rename from TheSkyBlessing/data/asset_manager/functions/artifact/create/set_lore/6.consume_item.mcfunction rename to TheSkyBlessing/data/asset_manager/functions/artifact/create/trigger/consume_item.mcfunction index e89e56c8a6..0234a3a8aa 100644 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/create/set_lore/6.consume_item.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/create/trigger/consume_item.mcfunction @@ -1,9 +1,9 @@ -#> asset_manager:artifact/create/set_lore/6.consume_item +#> asset_manager:artifact/create/trigger/consume_item # # # -# @within function asset_manager:artifact/create/set_lore/ +# @within function asset_manager:artifact/create/trigger/ execute if data storage asset:artifact ConsumeItem.Extra run scoreboard players set @s Temporary 1 -loot replace block 10000 0 10000 container.6 loot asset_manager:artifact/generate_lore/6.cost_item +loot replace block 10000 0 10000 container.6 loot asset_manager:artifact/generate_lore/cost_item scoreboard players reset @s Temporary diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/create/trigger/cooldown/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/create/trigger/cooldown/.mcfunction new file mode 100644 index 0000000000..a82046a4bc --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/create/trigger/cooldown/.mcfunction @@ -0,0 +1,20 @@ +#> asset_manager:artifact/create/trigger/cooldown/ +# +# +# +# @input args +# Path: int +# ExportSlot: int +# @within function asset_manager:artifact/create/trigger/ + +# 各クールダウンの文章を生成する + execute if data storage asset:artifact LocalCooldown run function asset_manager:artifact/create/trigger/cooldown/make_duration.m {CooldownPath:"storage asset:artifact LocalCooldown",IconPath:"storage global Icon.Cooldown.Local"} + execute if data storage asset:artifact TypeCooldown{Type:"shortRange"} run function asset_manager:artifact/create/trigger/cooldown/make_duration.m {CooldownPath:"storage asset:artifact TypeCooldown.Duration",IconPath:"storage global Icon.Cooldown.Type.ShortRange"} + execute if data storage asset:artifact TypeCooldown{Type: "longRange"} run function asset_manager:artifact/create/trigger/cooldown/make_duration.m {CooldownPath:"storage asset:artifact TypeCooldown.Duration",IconPath:"storage global Icon.Cooldown.Type.LongRange"} + execute if data storage asset:artifact TypeCooldown{Type: "summon"} run function asset_manager:artifact/create/trigger/cooldown/make_duration.m {CooldownPath:"storage asset:artifact TypeCooldown.Duration",IconPath:"storage global Icon.Cooldown.Type.Summon"} + execute if data storage asset:artifact TypeCooldown{Type: "heal"} run function asset_manager:artifact/create/trigger/cooldown/make_duration.m {CooldownPath:"storage asset:artifact TypeCooldown.Duration",IconPath:"storage global Icon.Cooldown.Type.Heal"} + execute if data storage asset:artifact SpecialCooldown run function asset_manager:artifact/create/trigger/cooldown/make_duration.m {CooldownPath:"storage asset:artifact SpecialCooldown",IconPath:"storage global Icon.Cooldown.Global"} +# lootする + execute if data storage asset:artifact Cooldown[0] run loot replace block 10000 0 10000 container.6 loot asset_manager:artifact/generate_lore/cooldown +# リセット + data remove storage asset:artifact Cooldown diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/create/set_lore/7.cooldown/make_duration.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/create/trigger/cooldown/make_duration.m.mcfunction similarity index 92% rename from TheSkyBlessing/data/asset_manager/functions/artifact/create/set_lore/7.cooldown/make_duration.m.mcfunction rename to TheSkyBlessing/data/asset_manager/functions/artifact/create/trigger/cooldown/make_duration.m.mcfunction index 457cda9baf..b74b36014e 100644 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/create/set_lore/7.cooldown/make_duration.m.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/create/trigger/cooldown/make_duration.m.mcfunction @@ -1,10 +1,11 @@ -#> asset_manager:artifact/create/set_lore/7.cooldown/make_duration.m +#> asset_manager:artifact/create/trigger/cooldown/make_duration.m +# # # # @input args # CooldownPath: DataPath # IconPath: DataPath -# @within function asset_manager:artifact/create/set_lore/7.cooldown/ +# @within function asset_manager:artifact/create/trigger/cooldown/ #> Temp # @private @@ -32,7 +33,7 @@ execute store result storage asset:artifact CooldownDecimal int 1 run scoreboard players get $CooldownDecimal Temporary execute store result storage asset:artifact CooldownMinutes int 1 run scoreboard players get $CooldownMinutes Temporary # Lore にする - loot replace block 10000 1 10000 container.0 loot asset_manager:artifact/generate_lore/7.cooldown_duration + loot replace block 10000 1 10000 container.0 loot asset_manager:artifact/generate_lore/cooldown_duration data modify storage asset:artifact Cooldown append from block 10000 1 10000 Items[0].tag.display.Lore[0] # リセット scoreboard players reset $Cooldown diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/create/trigger/mp_heal_when_hit/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/create/trigger/mp_heal_when_hit/.mcfunction new file mode 100644 index 0000000000..99951739a0 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/create/trigger/mp_heal_when_hit/.mcfunction @@ -0,0 +1,12 @@ +#> asset_manager:artifact/create/trigger/mp_heal_when_hit/ +# +# +# +# @within function asset_manager:artifact/create/trigger/ + +# マクロを使ってSuffixを表示しないようにする + data modify storage asset:artifact Temp.Val set from storage asset:artifact MPHealWhenHit + function asset_manager:artifact/create/trigger/mp_heal_when_hit/generate with storage asset:artifact Temp + +# リセット + data remove storage asset:artifact Temp diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/create/trigger/mp_heal_when_hit/generate.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/create/trigger/mp_heal_when_hit/generate.mcfunction new file mode 100644 index 0000000000..d82d4f01b5 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/create/trigger/mp_heal_when_hit/generate.mcfunction @@ -0,0 +1,11 @@ +#> asset_manager:artifact/create/trigger/mp_heal_when_hit/generate +# +# +# +# @within function asset_manager:artifact/create/trigger/mp_heal_when_hit/ + +# 文字列として取得 + $data modify storage asset:artifact Temp set value "$(Val)" + +# 生成 + loot replace block 10000 0 10000 container.5 loot asset_manager:artifact/generate_lore/mp_heal_when_hit diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/create/trigger/trigger.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/create/trigger/trigger.mcfunction new file mode 100644 index 0000000000..e3e1aafa05 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/create/trigger/trigger.mcfunction @@ -0,0 +1,69 @@ +#> asset_manager:artifact/create/trigger/trigger +# +# 使用の条件を設定します +# +# @within function asset_manager:artifact/create/trigger/ + +# スロット + execute if data storage asset:artifact {Slot: "auto"} run data modify storage asset:artifact Temp.Trigger.A set value "どちらかの手に所持" + execute if data storage asset:artifact {Slot: "mainhand"} run data modify storage asset:artifact Temp.Trigger.A set value "メインハンドに所持" + execute if data storage asset:artifact {Slot: "offhand"} run data modify storage asset:artifact Temp.Trigger.A set value "オフハンドに所持" + execute if data storage asset:artifact {Slot: "head"} run data modify storage asset:artifact Temp.Trigger.A set value "装備" + execute if data storage asset:artifact {Slot: "chest"} run data modify storage asset:artifact Temp.Trigger.A set value "装備" + execute if data storage asset:artifact {Slot: "legs"} run data modify storage asset:artifact Temp.Trigger.A set value "装備" + execute if data storage asset:artifact {Slot: "feet"} run data modify storage asset:artifact Temp.Trigger.A set value "装備" + execute if data storage asset:artifact {Slot:"inventory"} run data modify storage asset:artifact Temp.Trigger.A set value "インベントリ内に保持" + execute if data storage asset:artifact {Slot: "hotbar"} run data modify storage asset:artifact Temp.Trigger.A set value "ホットバーに保持" +# 接続詞 + data modify storage asset:artifact Temp.Trigger.AB set value "し" +# トリガー + execute if data storage asset:artifact {Trigger: "tick"} run data modify storage asset:artifact Temp.Trigger.B set value "ている限り" + execute if data storage asset:artifact {Trigger: "click"} run data modify storage asset:artifact Temp.Trigger.B set value "右クリック" + execute if data storage asset:artifact {Trigger: "using_item"} run data modify storage asset:artifact Temp.Trigger.B set value "右クリック" + execute if data storage asset:artifact {Trigger: "shot"} run data modify storage asset:artifact Temp.Trigger.B set value "発射" + execute if data storage asset:artifact {Trigger: "use_item"} run data modify storage asset:artifact Temp.Trigger.B set value "使用" + execute if data storage asset:artifact {Trigger: "attack"} run data modify storage asset:artifact Temp.Trigger.B set value "攻撃" + execute if data storage asset:artifact {Trigger: "attack_melee"} run data modify storage asset:artifact Temp.Trigger.B set value "近接攻撃" + execute if data storage asset:artifact {Trigger: "attack_projectile"} run data modify storage asset:artifact Temp.Trigger.B set value "遠距離攻撃" + execute if data storage asset:artifact {Trigger: "attack_explosion"} run data modify storage asset:artifact Temp.Trigger.B set value "爆発攻撃" + execute if data storage asset:artifact {Trigger: "damage"} run data modify storage asset:artifact Temp.Trigger.B set value "被ダメージ" + execute if data storage asset:artifact {Trigger: "damage_melee"} run data modify storage asset:artifact Temp.Trigger.B set value "被近接ダメージ" + execute if data storage asset:artifact {Trigger: "damage_drowning"} run data modify storage asset:artifact Temp.Trigger.B set value "溺れる" + execute if data storage asset:artifact {Trigger: "damage_projectile"} run data modify storage asset:artifact Temp.Trigger.B set value "被遠距離ダメージ" + execute if data storage asset:artifact {Trigger: "damage_explosion"} run data modify storage asset:artifact Temp.Trigger.B set value "被爆発ダメージ" + execute if data storage asset:artifact {Trigger: "damage_burn"} run data modify storage asset:artifact Temp.Trigger.B set value "被燃焼ダメージ" + execute if data storage asset:artifact {Trigger: "damage_freezing"} run data modify storage asset:artifact Temp.Trigger.B set value "被凍結ダメージ" + execute if data storage asset:artifact {Trigger: "damage_lightning"} run data modify storage asset:artifact Temp.Trigger.B set value "雷に打たれる" + execute if data storage asset:artifact {Trigger: "damage_entity"} run data modify storage asset:artifact Temp.Trigger.B set value "敵から被ダメージ" + execute if data storage asset:artifact {Trigger: "damage_entity_melee"} run data modify storage asset:artifact Temp.Trigger.B set value "敵から被近接ダメージ" + execute if data storage asset:artifact {Trigger:"damage_entity_projectile"} run data modify storage asset:artifact Temp.Trigger.B set value "敵から被遠距離ダメージ" + execute if data storage asset:artifact {Trigger: "damage_entity_explosion"} run data modify storage asset:artifact Temp.Trigger.B set value "敵から被爆発ダメージ" + execute if data storage asset:artifact {Trigger: "kill"} run data modify storage asset:artifact Temp.Trigger.B set value "撃破" + execute if data storage asset:artifact {Trigger: "kill_melee"} run data modify storage asset:artifact Temp.Trigger.B set value "近接攻撃で撃破" + execute if data storage asset:artifact {Trigger: "kill_projectile"} run data modify storage asset:artifact Temp.Trigger.B set value "遠距離攻撃で撃破" + execute if data storage asset:artifact {Trigger: "kill_explosion"} run data modify storage asset:artifact Temp.Trigger.B set value "爆発攻撃で撃破" + execute if data storage asset:artifact {Trigger: "sneak"} run data modify storage asset:artifact Temp.Trigger.B set value "スニーク" + execute if data storage asset:artifact {Trigger: "sneak_1s"} run data modify storage asset:artifact Temp.Trigger.B set value "1秒間スニーク" + execute if data storage asset:artifact {Trigger: "sneak_2s"} run data modify storage asset:artifact Temp.Trigger.B set value "2秒間スニーク" + execute if data storage asset:artifact {Trigger: "sneak_3s"} run data modify storage asset:artifact Temp.Trigger.B set value "3秒間スニーク" + execute if data storage asset:artifact {Trigger: "sneak_4s"} run data modify storage asset:artifact Temp.Trigger.B set value "4秒間スニーク" + execute if data storage asset:artifact {Trigger: "sneak_5s"} run data modify storage asset:artifact Temp.Trigger.B set value "5秒間スニーク" + execute if data storage asset:artifact {Trigger: "sneak_10s"} run data modify storage asset:artifact Temp.Trigger.B set value "10秒間スニーク" + execute if data storage asset:artifact {Trigger: "keep_sneak"} run data modify storage asset:artifact Temp.Trigger.B set value "0秒以上スニーク" + execute if data storage asset:artifact {Trigger: "keep_sneak_1s"} run data modify storage asset:artifact Temp.Trigger.B set value "1秒間以上スニーク" + execute if data storage asset:artifact {Trigger: "keep_sneak_2s"} run data modify storage asset:artifact Temp.Trigger.B set value "2秒間以上スニーク" + execute if data storage asset:artifact {Trigger: "keep_sneak_3s"} run data modify storage asset:artifact Temp.Trigger.B set value "3秒間以上スニーク" + execute if data storage asset:artifact {Trigger: "keep_sneak_4s"} run data modify storage asset:artifact Temp.Trigger.B set value "4秒間以上スニーク" + execute if data storage asset:artifact {Trigger: "keep_sneak_5s"} run data modify storage asset:artifact Temp.Trigger.B set value "5秒間以上スニーク" + execute if data storage asset:artifact {Trigger: "keep_sneak_10s"} run data modify storage asset:artifact Temp.Trigger.B set value "10秒間以上スニーク" + execute if data storage asset:artifact {Trigger: "equip"} run data modify storage asset:artifact Temp.Trigger.AB set value "" + execute if data storage asset:artifact {Trigger: "equip"} run data modify storage asset:artifact Temp.Trigger.B set value "" + execute if data storage asset:artifact {Trigger: "heal"} run data modify storage asset:artifact Temp.Trigger.B set value "回復を与える" + execute if data storage asset:artifact {Trigger: "receive_heal"} run data modify storage asset:artifact Temp.Trigger.B set value "回復を受ける" +# 設定されてなかったらエラーメッセージ + execute unless data storage asset:artifact Temp.Trigger.A run tellraw @a [{"storage":"global","nbt":"Prefix.ERROR"},{"text":"登録されていないSlotが指定されています","color":"white"}] + execute unless data storage asset:artifact Temp.Trigger.B run tellraw @a [{"storage":"global","nbt":"Prefix.ERROR"},{"text":"登録されていないTriggerが指定されています","color":"white"}] +# 生成 + loot replace block 10000 0 10000 container.0 loot asset_manager:artifact/generate_lore/trigger +# リセット + data remove storage asset:artifact Temp diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/create/set_lore/vanilla_lore.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/create/vanilla_lore.mcfunction similarity index 67% rename from TheSkyBlessing/data/asset_manager/functions/artifact/create/set_lore/vanilla_lore.mcfunction rename to TheSkyBlessing/data/asset_manager/functions/artifact/create/vanilla_lore.mcfunction index f76c275ccd..8d88585063 100644 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/create/set_lore/vanilla_lore.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/create/vanilla_lore.mcfunction @@ -1,4 +1,4 @@ -#> asset_manager:artifact/create/set_lore/vanilla_lore +#> asset_manager:artifact/create/vanilla_lore # # Loreを追加する # @@ -6,11 +6,11 @@ # as item # storage asset:artifact Lore : TextComponent[] # @within function -# asset_manager:artifact/create/set_lore/vanilla_lore -# asset_manager:artifact/create/set_lore/ +# asset_manager:artifact/create/set_lore +# asset_manager:artifact/create/vanilla_lore loot replace block 10000 0 10000 container.0 loot asset_manager:artifact/get_lore data modify storage asset:artifact Item.tag.display.Lore append from block 10000 0 10000 Items[0].tag.display.Lore[0] data remove storage asset:artifact Lore[0] -execute if data storage asset:artifact Lore[0] run function asset_manager:artifact/create/set_lore/vanilla_lore +execute if data storage asset:artifact Lore[0] run function asset_manager:artifact/create/vanilla_lore diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/data/current/equips/init.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/data/current/equips/init.mcfunction deleted file mode 100644 index 7d78522212..0000000000 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/data/current/equips/init.mcfunction +++ /dev/null @@ -1,16 +0,0 @@ -#> asset_manager:artifact/data/current/equips/init -# -# -# -# @within function asset_manager:artifact/triggers/equipments/mask_slot/ - -# 初期化 - data modify storage asset:artifact Equipments set value [] -# 適用 - data modify storage asset:artifact Equipments append from storage asset:context id.mainhand - data modify storage asset:artifact Equipments append from storage asset:context id.offhand - data modify storage asset:artifact Equipments append from storage asset:context id.feet - data modify storage asset:artifact Equipments append from storage asset:context id.legs - data modify storage asset:artifact Equipments append from storage asset:context id.chest - data modify storage asset:artifact Equipments append from storage asset:context id.head - data modify storage asset:artifact Equipments append from storage asset:context id.hotbar[] diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/data/current/equips/replace.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/data/current/equips/replace.mcfunction deleted file mode 100644 index 448d5efb30..0000000000 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/data/current/equips/replace.mcfunction +++ /dev/null @@ -1,24 +0,0 @@ -#> asset_manager:artifact/data/current/equips/replace -# -# -# -# @within function asset_manager:artifact/triggers/equipments/mask_slot/ - -# 適用 - data modify storage asset:context id.hotbar[8] set from storage asset:artifact NewEquips[0] - data modify storage asset:context id.hotbar[7] set from storage asset:artifact NewEquips[1] - data modify storage asset:context id.hotbar[6] set from storage asset:artifact NewEquips[2] - data modify storage asset:context id.hotbar[5] set from storage asset:artifact NewEquips[3] - data modify storage asset:context id.hotbar[4] set from storage asset:artifact NewEquips[4] - data modify storage asset:context id.hotbar[3] set from storage asset:artifact NewEquips[5] - data modify storage asset:context id.hotbar[2] set from storage asset:artifact NewEquips[6] - data modify storage asset:context id.hotbar[1] set from storage asset:artifact NewEquips[7] - data modify storage asset:context id.hotbar[0] set from storage asset:artifact NewEquips[8] - data modify storage asset:context id.head set from storage asset:artifact NewEquips[9] - data modify storage asset:context id.chest set from storage asset:artifact NewEquips[10] - data modify storage asset:context id.legs set from storage asset:artifact NewEquips[11] - data modify storage asset:context id.feet set from storage asset:artifact NewEquips[12] - data modify storage asset:context id.offhand set from storage asset:artifact NewEquips[13] - data modify storage asset:context id.mainhand set from storage asset:artifact NewEquips[14] -# リセット - data remove storage asset:artifact NewEquips diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/data/current/filter.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/data/current/filter.mcfunction deleted file mode 100644 index 29b6e0c896..0000000000 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/data/current/filter.mcfunction +++ /dev/null @@ -1,23 +0,0 @@ -#> asset_manager:artifact/data/current/filter -# -# -# -# @within function -# asset_manager:artifact/data/current/get -# asset_manager:artifact/data/current/filter - -#> Private -# @private -#declare score_holder $nonIDEquals - -# 比較 - data modify storage asset:artifact Temp set from storage asset:artifact TargetID - execute store success score $nonIDEquals Temporary run data modify storage asset:artifact Temp set from storage asset:artifact HotbarItems[-1].tag.TSB.ID -# 一致してたら追加 - execute if score $nonIDEquals Temporary matches 0 run data modify storage asset:artifact TargetItems append from storage asset:artifact HotbarItems[-1] -# リセット - scoreboard players reset $nonIDEquals Temporary - data remove storage asset:artifact Temp - data remove storage asset:artifact HotbarItems[-1] -# 要素が残ってたら再帰 - execute if data storage asset:artifact HotbarItems[0] run function asset_manager:artifact/data/current/filter \ No newline at end of file diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/data/current/get.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/data/current/get.mcfunction deleted file mode 100644 index d5cada7ce9..0000000000 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/data/current/get.mcfunction +++ /dev/null @@ -1,32 +0,0 @@ -#> asset_manager:artifact/data/current/get -# -# TargetSlotを元にプレイヤーのデータを取得する -# -# @input -# as player -# storage asset:artifact TargetSlot : Slot -# @output storage asset:artifact -# Item : [ItemData] -# TargetDefaultSlot : Slot -# @within function -# asset_manager:artifact/check/ -# asset_manager:artifact/use/ - -# autoで無い場合はそのままDefaultSlotに突っ込む - execute unless data storage asset:artifact {TargetSlot:"auto"} run data modify storage asset:artifact TargetDefaultSlot set from storage asset:artifact TargetSlot -# autoの場合の処理 - execute if data storage asset:artifact {TargetSlot:"auto"} run data modify storage asset:artifact TargetDefaultSlot set from storage asset:context Items.AutoSlot - execute if data storage asset:artifact {TargetSlot:"auto"} unless data storage asset:context Items.AutoSlot run tellraw @a [{"storage":"global","nbt":"Prefix.ERROR"},{"text":"autoはこのトリガーでは実行できません","color":"white"}] - execute if data storage asset:artifact {TargetSlot:"auto"} unless data storage asset:context Items.AutoSlot run data modify storage asset:artifact TargetDefaultSlot set value 'mainhand' - -# 取得 - execute if data storage asset:artifact {TargetDefaultSlot:"mainhand"} run data modify storage asset:artifact TargetItems append from storage asset:context Items.mainhand - execute if data storage asset:artifact {TargetDefaultSlot:"offhand"} run data modify storage asset:artifact TargetItems append from storage asset:context Items.offhand - execute if data storage asset:artifact {TargetDefaultSlot:"feet"} run data modify storage asset:artifact TargetItems append from storage asset:context Items.feet - execute if data storage asset:artifact {TargetDefaultSlot:"legs"} run data modify storage asset:artifact TargetItems append from storage asset:context Items.legs - execute if data storage asset:artifact {TargetDefaultSlot:"chest"} run data modify storage asset:artifact TargetItems append from storage asset:context Items.chest - execute if data storage asset:artifact {TargetDefaultSlot:"head"} run data modify storage asset:artifact TargetItems append from storage asset:context Items.head - - execute if data storage asset:artifact {TargetDefaultSlot:"hotbar"} run data modify storage asset:artifact HotbarItems set from storage asset:context Items.hotbar - execute if data storage asset:artifact {TargetDefaultSlot:"hotbar"} run function asset_manager:artifact/data/current/filter - execute if data storage asset:artifact {TargetDefaultSlot:"hotbar"} run data remove storage asset:artifact HotbarItems \ No newline at end of file diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/data/current/reset.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/data/current/reset.mcfunction deleted file mode 100644 index 18de7be53c..0000000000 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/data/current/reset.mcfunction +++ /dev/null @@ -1,13 +0,0 @@ -#> asset_manager:artifact/data/current/reset -# -# currentデータをリセットします -# -# @within function -# asset_manager:artifact/data/*/*_current -# asset_manager:artifact/triggers/ - -# リセット - data remove storage asset:context Inventory - data remove storage asset:context SelectedItemSlot - data remove storage asset:context Items - data remove storage asset:context id \ No newline at end of file diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/data/current/update/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/data/current/update/.mcfunction deleted file mode 100644 index 483c37d810..0000000000 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/data/current/update/.mcfunction +++ /dev/null @@ -1,20 +0,0 @@ -#> asset_manager:artifact/data/current/update/ -# -# Itemを元にcurrentデータを更新する -# -# @input storage asset:artifact ProcessedItem : SlottedItem -# @within function -# asset_manager:artifact/use/item/update -# asset_manager:artifact/use/item/break - -# ターゲットスロットを設定する - execute if data storage asset:artifact {TargetDefaultSlot:"hotbar"} run data modify storage asset:artifact SpecificTargetSlot set from storage asset:artifact ProcessedItem.Slot - execute if data storage asset:artifact {TargetDefaultSlot:"mainhand"} store result storage asset:artifact SpecificTargetSlot byte 1 run data get storage asset:context SelectedItemSlot -# 存在するときの処理 - execute if data storage asset:artifact ProcessedItem if data storage asset:artifact {TargetDefaultSlot:"hotbar"} run function asset_manager:artifact/data/current/update/when_modified/hotbar - execute if data storage asset:artifact ProcessedItem unless data storage asset:artifact {TargetDefaultSlot:"hotbar"} run function asset_manager:artifact/data/current/update/when_modified/non-hotbar -# 削除されたときの処理 - execute unless data storage asset:artifact ProcessedItem if data storage asset:artifact {TargetDefaultSlot:"hotbar"} run function asset_manager:artifact/data/current/update/when_removed/hotbar - execute unless data storage asset:artifact ProcessedItem unless data storage asset:artifact {TargetDefaultSlot:"hotbar"} run function asset_manager:artifact/data/current/update/when_removed/non-hotbar -# リセット - data remove storage asset:artifact ProcessedItem \ No newline at end of file diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/data/current/update/when_modified/hotbar.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/data/current/update/when_modified/hotbar.mcfunction deleted file mode 100644 index bb2a721634..0000000000 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/data/current/update/when_modified/hotbar.mcfunction +++ /dev/null @@ -1,20 +0,0 @@ -#> asset_manager:artifact/data/current/update/when_modified/hotbar -# -# -# -# @within function -# asset_manager:artifact/data/current/update/ -# asset_manager:artifact/data/current/update/when_modified/non-hotbar - -# 設定 - execute if data storage asset:artifact {SpecificTargetSlot:0b} run data modify storage asset:context Items.hotbar[{Slot:0b}] set from storage asset:artifact ProcessedItem - execute if data storage asset:artifact {SpecificTargetSlot:1b} run data modify storage asset:context Items.hotbar[{Slot:1b}] set from storage asset:artifact ProcessedItem - execute if data storage asset:artifact {SpecificTargetSlot:2b} run data modify storage asset:context Items.hotbar[{Slot:2b}] set from storage asset:artifact ProcessedItem - execute if data storage asset:artifact {SpecificTargetSlot:3b} run data modify storage asset:context Items.hotbar[{Slot:3b}] set from storage asset:artifact ProcessedItem - execute if data storage asset:artifact {SpecificTargetSlot:4b} run data modify storage asset:context Items.hotbar[{Slot:4b}] set from storage asset:artifact ProcessedItem - execute if data storage asset:artifact {SpecificTargetSlot:5b} run data modify storage asset:context Items.hotbar[{Slot:5b}] set from storage asset:artifact ProcessedItem - execute if data storage asset:artifact {SpecificTargetSlot:6b} run data modify storage asset:context Items.hotbar[{Slot:6b}] set from storage asset:artifact ProcessedItem - execute if data storage asset:artifact {SpecificTargetSlot:7b} run data modify storage asset:context Items.hotbar[{Slot:7b}] set from storage asset:artifact ProcessedItem - execute if data storage asset:artifact {SpecificTargetSlot:8b} run data modify storage asset:context Items.hotbar[{Slot:8b}] set from storage asset:artifact ProcessedItem -# リセット - data remove storage asset:artifact SpecificTargetSlot \ No newline at end of file diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/data/current/update/when_modified/non-hotbar.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/data/current/update/when_modified/non-hotbar.mcfunction deleted file mode 100644 index 7a780fcb4c..0000000000 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/data/current/update/when_modified/non-hotbar.mcfunction +++ /dev/null @@ -1,13 +0,0 @@ -#> asset_manager:artifact/data/current/update/when_modified/non-hotbar -# -# Itemが存在するときの更新処理 -# -# @within function asset_manager:artifact/data/current/update/ - -execute if data storage asset:artifact {TargetDefaultSlot:"mainhand"} run data modify storage asset:context Items.mainhand set from storage asset:artifact ProcessedItem -execute if data storage asset:artifact {TargetDefaultSlot:"mainhand"} run function asset_manager:artifact/data/current/update/when_modified/hotbar -execute if data storage asset:artifact {TargetDefaultSlot:"offhand"} run data modify storage asset:context Items.offhand set from storage asset:artifact ProcessedItem -execute if data storage asset:artifact {TargetDefaultSlot:"feet"} run data modify storage asset:context Items.feet set from storage asset:artifact ProcessedItem -execute if data storage asset:artifact {TargetDefaultSlot:"legs"} run data modify storage asset:context Items.legs set from storage asset:artifact ProcessedItem -execute if data storage asset:artifact {TargetDefaultSlot:"chest"} run data modify storage asset:context Items.chest set from storage asset:artifact ProcessedItem -execute if data storage asset:artifact {TargetDefaultSlot:"head"} run data modify storage asset:context Items.head set from storage asset:artifact ProcessedItem \ No newline at end of file diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/data/current/update/when_removed/hotbar.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/data/current/update/when_removed/hotbar.mcfunction deleted file mode 100644 index a843167300..0000000000 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/data/current/update/when_removed/hotbar.mcfunction +++ /dev/null @@ -1,45 +0,0 @@ -#> asset_manager:artifact/data/current/update/when_removed/hotbar -# -# -# -# @within function -# asset_manager:artifact/data/current/update/ -# asset_manager:artifact/data/current/update/when_removed/non-hotbar - -execute if data storage asset:artifact {SpecificTargetSlot:0b} run data modify storage asset:context Items.hotbar[0] set value {tag:{TSB:{ID:-2,UUID:-2,LocalCooldown:0}}} -execute if data storage asset:artifact {SpecificTargetSlot:0b} run data modify storage asset:context id.hotbar[0] set value -2 -execute if data storage asset:artifact {SpecificTargetSlot:0b} run data modify storage asset:context id.all.hotbar[0] set value -2 - -execute if data storage asset:artifact {SpecificTargetSlot:1b} run data modify storage asset:context Items.hotbar[1] set value {tag:{TSB:{ID:-2,UUID:-2,LocalCooldown:0}}} -execute if data storage asset:artifact {SpecificTargetSlot:1b} run data modify storage asset:context id.hotbar[1] set value -2 -execute if data storage asset:artifact {SpecificTargetSlot:1b} run data modify storage asset:context id.all.hotbar[1] set value -2 - -execute if data storage asset:artifact {SpecificTargetSlot:2b} run data modify storage asset:context Items.hotbar[2] set value {tag:{TSB:{ID:-2,UUID:-2,LocalCooldown:0}}} -execute if data storage asset:artifact {SpecificTargetSlot:2b} run data modify storage asset:context id.hotbar[2] set value -2 -execute if data storage asset:artifact {SpecificTargetSlot:2b} run data modify storage asset:context id.all.hotbar[2] set value -2 - -execute if data storage asset:artifact {SpecificTargetSlot:3b} run data modify storage asset:context Items.hotbar[3] set value {tag:{TSB:{ID:-2,UUID:-2,LocalCooldown:0}}} -execute if data storage asset:artifact {SpecificTargetSlot:3b} run data modify storage asset:context id.hotbar[3] set value -2 -execute if data storage asset:artifact {SpecificTargetSlot:3b} run data modify storage asset:context id.all.hotbar[3] set value -2 - -execute if data storage asset:artifact {SpecificTargetSlot:4b} run data modify storage asset:context Items.hotbar[4] set value {tag:{TSB:{ID:-2,UUID:-2,LocalCooldown:0}}} -execute if data storage asset:artifact {SpecificTargetSlot:4b} run data modify storage asset:context id.hotbar[4] set value -2 -execute if data storage asset:artifact {SpecificTargetSlot:4b} run data modify storage asset:context id.all.hotbar[4] set value -2 - -execute if data storage asset:artifact {SpecificTargetSlot:5b} run data modify storage asset:context Items.hotbar[5] set value {tag:{TSB:{ID:-2,UUID:-2,LocalCooldown:0}}} -execute if data storage asset:artifact {SpecificTargetSlot:5b} run data modify storage asset:context id.hotbar[5] set value -2 -execute if data storage asset:artifact {SpecificTargetSlot:5b} run data modify storage asset:context id.all.hotbar[5] set value -2 - -execute if data storage asset:artifact {SpecificTargetSlot:6b} run data modify storage asset:context Items.hotbar[6] set value {tag:{TSB:{ID:-2,UUID:-2,LocalCooldown:0}}} -execute if data storage asset:artifact {SpecificTargetSlot:6b} run data modify storage asset:context id.hotbar[6] set value -2 -execute if data storage asset:artifact {SpecificTargetSlot:6b} run data modify storage asset:context id.all.hotbar[6] set value -2 - -execute if data storage asset:artifact {SpecificTargetSlot:7b} run data modify storage asset:context Items.hotbar[7] set value {tag:{TSB:{ID:-2,UUID:-2,LocalCooldown:0}}} -execute if data storage asset:artifact {SpecificTargetSlot:7b} run data modify storage asset:context id.hotbar[7] set value -2 -execute if data storage asset:artifact {SpecificTargetSlot:7b} run data modify storage asset:context id.all.hotbar[7] set value -2 - -execute if data storage asset:artifact {SpecificTargetSlot:8b} run data modify storage asset:context Items.hotbar[8] set value {tag:{TSB:{ID:-2,UUID:-2,LocalCooldown:0}}} -execute if data storage asset:artifact {SpecificTargetSlot:8b} run data modify storage asset:context id.hotbar[8] set value -2 -execute if data storage asset:artifact {SpecificTargetSlot:8b} run data modify storage asset:context id.all.hotbar[8] set value -2 - -data remove storage asset:artifact SpecificTargetSlot \ No newline at end of file diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/data/current/update/when_removed/non-hotbar.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/data/current/update/when_removed/non-hotbar.mcfunction deleted file mode 100644 index f244f32b76..0000000000 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/data/current/update/when_removed/non-hotbar.mcfunction +++ /dev/null @@ -1,33 +0,0 @@ -#> asset_manager:artifact/data/current/update/when_removed/non-hotbar -# -# Itemが削除されたときの更新処理 -# -# @within function asset_manager:artifact/data/current/update/ - -execute if data storage asset:artifact {TargetSlot:"auto"} run data modify storage asset:context id.auto set value -2 -execute if data storage asset:artifact {TargetSlot:"auto"} run data modify storage asset:context id.all.auto set value -2 - -execute if data storage asset:artifact {TargetDefaultSlot:"mainhand"} run data modify storage asset:context Items.mainhand set value {tag:{TSB:{ID:-2,UUID:-2,LocalCooldown:0}}} -execute if data storage asset:artifact {TargetDefaultSlot:"mainhand"} run data modify storage asset:context id.mainhand set value -2 -execute if data storage asset:artifact {TargetDefaultSlot:"mainhand"} run data modify storage asset:context id.all.mainhand set value -2 -execute if data storage asset:artifact {TargetDefaultSlot:"mainhand"} run function asset_manager:artifact/data/current/update/when_removed/hotbar - -execute if data storage asset:artifact {TargetDefaultSlot:"offhand"} run data modify storage asset:context Items.offhand set value {tag:{TSB:{ID:-2,UUID:-2,LocalCooldown:0}}} -execute if data storage asset:artifact {TargetDefaultSlot:"offhand"} run data modify storage asset:context id.offhand set value -2 -execute if data storage asset:artifact {TargetDefaultSlot:"offhand"} run data modify storage asset:context id.all.offhand set value -2 - -execute if data storage asset:artifact {TargetDefaultSlot:"feet"} run data modify storage asset:context Items.feet set value {tag:{TSB:{ID:-2,UUID:-2,LocalCooldown:0}}} -execute if data storage asset:artifact {TargetDefaultSlot:"feet"} run data modify storage asset:context id.feet set value -2 -execute if data storage asset:artifact {TargetDefaultSlot:"feet"} run data modify storage asset:context id.all.feet set value -2 - -execute if data storage asset:artifact {TargetDefaultSlot:"legs"} run data modify storage asset:context Items.legs set value {tag:{TSB:{ID:-2,UUID:-2,LocalCooldown:0}}} -execute if data storage asset:artifact {TargetDefaultSlot:"legs"} run data modify storage asset:context id.legs set value -2 -execute if data storage asset:artifact {TargetDefaultSlot:"legs"} run data modify storage asset:context id.all.legs set value -2 - -execute if data storage asset:artifact {TargetDefaultSlot:"chest"} run data modify storage asset:context Items.chest set value {tag:{TSB:{ID:-2,UUID:-2,LocalCooldown:0}}} -execute if data storage asset:artifact {TargetDefaultSlot:"chest"} run data modify storage asset:context id.chest set value -2 -execute if data storage asset:artifact {TargetDefaultSlot:"chest"} run data modify storage asset:context id.all.chest set value -2 - -execute if data storage asset:artifact {TargetDefaultSlot:"head"} run data modify storage asset:context Items.head set value {tag:{TSB:{ID:-2,UUID:-2,LocalCooldown:0}}} -execute if data storage asset:artifact {TargetDefaultSlot:"head"} run data modify storage asset:context id.head set value -2 -execute if data storage asset:artifact {TargetDefaultSlot:"head"} run data modify storage asset:context id.all.head set value -2 \ No newline at end of file diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/data/new/fetch_data/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/data/new/fetch_data/.mcfunction new file mode 100644 index 0000000000..d57285d751 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/data/new/fetch_data/.mcfunction @@ -0,0 +1,27 @@ +#> asset_manager:artifact/data/new/fetch_data/ +# +# プレイヤーデータからromを呼び出す +# +# @within function asset_manager:artifact/triggers/ + +# セッションを開く + function lib:array/session/open +# データを用意する + data modify storage asset:artifact New.ItemData set value [] +# idを取得する + data modify storage lib: Array append from storage asset:artifact New.Items.mainhand.tag.TSB + data modify storage lib: Array append from storage asset:artifact New.Items.offhand.tag.TSB + data modify storage lib: Array append from storage asset:artifact New.Items.feet.tag.TSB + data modify storage lib: Array append from storage asset:artifact New.Items.legs.tag.TSB + data modify storage lib: Array append from storage asset:artifact New.Items.chest.tag.TSB + data modify storage lib: Array append from storage asset:artifact New.Items.head.tag.TSB + data modify storage lib: Array append from storage asset:artifact New.Items.hotbar[].tag.TSB +# 反転 + function lib:array/reverse +# id毎にデータを取得する + scoreboard players set $SlotIndex Temporary 0 + function asset_manager:artifact/data/new/fetch_data/foreach +# リセット + scoreboard players reset $SlotIndex Temporary + function lib:array/session/close + data remove storage asset:artifact TargetSlot diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/data/new/fetch_data/foreach.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/data/new/fetch_data/foreach.mcfunction new file mode 100644 index 0000000000..afabe452c6 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/data/new/fetch_data/foreach.mcfunction @@ -0,0 +1,37 @@ +#> asset_manager:artifact/data/new/fetch_data/foreach +# +# +# +# @within function asset_manager:artifact/data/new/fetch_data/* + +#> private +# @private + #declare score_holder $ID + #declare score_holder $InvalidSlot + +# キーチェック + execute store result score $ID Temporary run data get storage lib: Array[-1].ID +# スロットチェック + # チェックしているslotを取得する + execute store result storage asset:artifact Enum.Index int 1 run scoreboard players add $SlotIndex Temporary 1 + function asset:artifact/enum/index/.m with storage asset:artifact Enum + # 神器のスロットのデータを保管する + # これはauto処理のため + data modify storage lib: Array[-1].TargetSlot set from storage lib: Array[-1].Slot + data modify storage asset:artifact CopiedSlot set from storage lib: Array[-1].Slot + execute if data storage asset:artifact {CopiedSlot:"auto"} if data storage asset:artifact Enum{Slot:"mainhand"} run data modify storage lib: Array[-1].TargetSlot set from storage asset:artifact Enum.Slot + execute if data storage asset:artifact {CopiedSlot:"auto"} if data storage asset:artifact Enum{Slot: "offhand"} run data modify storage lib: Array[-1].TargetSlot set from storage asset:artifact Enum.Slot + data remove storage asset:artifact CopiedSlot + # Slotが一致しているか確認する + execute store success score $InvalidSlot Temporary run data modify storage lib: Array[-1].TargetSlot set from storage asset:artifact Enum.Slot +# データが正しそうなら引っ張り出す + data modify storage asset:artifact New.ItemData append value {} + execute if score $ID Temporary matches 1.. unless score $InvalidSlot Temporary matches 1.. run data modify storage asset:artifact New.ItemData[-1] set from storage lib: Array[-1] +# データが正しくなさそうならさようなら + execute if score $ID Temporary matches ..0 run data modify storage asset:artifact New.ItemData[-1] set value {ID:-2,UUID:-2,LocalCooldown:0} + execute unless data storage asset:artifact New.ItemData[-1].ID run data modify storage asset:artifact New.ItemData[-1] set value {ID:-2,UUID:-2,LocalCooldown:0} +# 要素を削除し、残っていたら再帰する + scoreboard players reset $ID Temporary + scoreboard players reset $InvalidSlot Temporary + data remove storage lib: Array[-1] + execute if data storage lib: Array[0] run function asset_manager:artifact/data/new/fetch_data/foreach diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/data/new/init.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/data/new/init.mcfunction index d4c042bceb..10e7132f04 100644 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/data/new/init.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/data/new/init.mcfunction @@ -5,68 +5,60 @@ # @within asset_manager:artifact/triggers/ # 初期化 - data remove storage asset:context New + data remove storage asset:artifact New # Inventory function api:data_get/inventory - data modify storage asset:context New.Inventory set from storage api: Inventory + data modify storage asset:artifact New.Inventory set from storage api: Inventory # SelectedItemSlot function api:data_get/selected_item_slot - data modify storage asset:context New.SelectedItemSlot set from storage api: SelectedItemSlot + data modify storage asset:artifact New.SelectedItemSlot set from storage api: SelectedItemSlot # Items function api:data_get/selected_item - data modify storage asset:context New.Items.mainhand set from storage api: SelectedItem - data modify storage asset:context New.Items.offhand set from storage asset:context New.Inventory[{Slot:-106b}] - data modify storage asset:context New.Items.feet set from storage asset:context New.Inventory[{Slot:100b}] - data modify storage asset:context New.Items.legs set from storage asset:context New.Inventory[{Slot:101b}] - data modify storage asset:context New.Items.chest set from storage asset:context New.Inventory[{Slot:102b}] - data modify storage asset:context New.Items.head set from storage asset:context New.Inventory[{Slot:103b}] + data modify storage asset:artifact New.Items.mainhand set from storage api: SelectedItem + data modify storage asset:artifact New.Items.offhand set from storage asset:artifact New.Inventory[{Slot:-106b}] + data modify storage asset:artifact New.Items.feet set from storage asset:artifact New.Inventory[{Slot:100b}] + data modify storage asset:artifact New.Items.legs set from storage asset:artifact New.Inventory[{Slot:101b}] + data modify storage asset:artifact New.Items.chest set from storage asset:artifact New.Inventory[{Slot:102b}] + data modify storage asset:artifact New.Items.head set from storage asset:artifact New.Inventory[{Slot:103b}] - execute if data storage asset:context New.Inventory[{Slot:0b}] run data modify storage asset:context New.Items.hotbar append from storage asset:context New.Inventory[{Slot:0b}] - execute unless data storage asset:context New.Inventory[{Slot:0b}] run data modify storage asset:context New.Items.hotbar append value {id:"none",Slot:0b} - execute if data storage asset:context New.Inventory[{Slot:1b}] run data modify storage asset:context New.Items.hotbar append from storage asset:context New.Inventory[{Slot:1b}] - execute unless data storage asset:context New.Inventory[{Slot:1b}] run data modify storage asset:context New.Items.hotbar append value {id:"none",Slot:1b} - execute if data storage asset:context New.Inventory[{Slot:2b}] run data modify storage asset:context New.Items.hotbar append from storage asset:context New.Inventory[{Slot:2b}] - execute unless data storage asset:context New.Inventory[{Slot:2b}] run data modify storage asset:context New.Items.hotbar append value {id:"none",Slot:2b} - execute if data storage asset:context New.Inventory[{Slot:3b}] run data modify storage asset:context New.Items.hotbar append from storage asset:context New.Inventory[{Slot:3b}] - execute unless data storage asset:context New.Inventory[{Slot:3b}] run data modify storage asset:context New.Items.hotbar append value {id:"none",Slot:3b} - execute if data storage asset:context New.Inventory[{Slot:4b}] run data modify storage asset:context New.Items.hotbar append from storage asset:context New.Inventory[{Slot:4b}] - execute unless data storage asset:context New.Inventory[{Slot:4b}] run data modify storage asset:context New.Items.hotbar append value {id:"none",Slot:4b} - execute if data storage asset:context New.Inventory[{Slot:5b}] run data modify storage asset:context New.Items.hotbar append from storage asset:context New.Inventory[{Slot:5b}] - execute unless data storage asset:context New.Inventory[{Slot:5b}] run data modify storage asset:context New.Items.hotbar append value {id:"none",Slot:5b} - execute if data storage asset:context New.Inventory[{Slot:6b}] run data modify storage asset:context New.Items.hotbar append from storage asset:context New.Inventory[{Slot:6b}] - execute unless data storage asset:context New.Inventory[{Slot:6b}] run data modify storage asset:context New.Items.hotbar append value {id:"none",Slot:6b} - execute if data storage asset:context New.Inventory[{Slot:7b}] run data modify storage asset:context New.Items.hotbar append from storage asset:context New.Inventory[{Slot:7b}] - execute unless data storage asset:context New.Inventory[{Slot:7b}] run data modify storage asset:context New.Items.hotbar append value {id:"none",Slot:7b} - execute if data storage asset:context New.Inventory[{Slot:8b}] run data modify storage asset:context New.Items.hotbar append from storage asset:context New.Inventory[{Slot:8b}] - execute unless data storage asset:context New.Inventory[{Slot:8b}] run data modify storage asset:context New.Items.hotbar append value {id:"none",Slot:8b} + execute if data storage asset:artifact New.Inventory[{Slot:0b}] run data modify storage asset:artifact New.Items.hotbar append from storage asset:artifact New.Inventory[{Slot:0b}] + execute unless data storage asset:artifact New.Inventory[{Slot:0b}] run data modify storage asset:artifact New.Items.hotbar append value {id:"none",Slot:0b} + execute if data storage asset:artifact New.Inventory[{Slot:1b}] run data modify storage asset:artifact New.Items.hotbar append from storage asset:artifact New.Inventory[{Slot:1b}] + execute unless data storage asset:artifact New.Inventory[{Slot:1b}] run data modify storage asset:artifact New.Items.hotbar append value {id:"none",Slot:1b} + execute if data storage asset:artifact New.Inventory[{Slot:2b}] run data modify storage asset:artifact New.Items.hotbar append from storage asset:artifact New.Inventory[{Slot:2b}] + execute unless data storage asset:artifact New.Inventory[{Slot:2b}] run data modify storage asset:artifact New.Items.hotbar append value {id:"none",Slot:2b} + execute if data storage asset:artifact New.Inventory[{Slot:3b}] run data modify storage asset:artifact New.Items.hotbar append from storage asset:artifact New.Inventory[{Slot:3b}] + execute unless data storage asset:artifact New.Inventory[{Slot:3b}] run data modify storage asset:artifact New.Items.hotbar append value {id:"none",Slot:3b} + execute if data storage asset:artifact New.Inventory[{Slot:4b}] run data modify storage asset:artifact New.Items.hotbar append from storage asset:artifact New.Inventory[{Slot:4b}] + execute unless data storage asset:artifact New.Inventory[{Slot:4b}] run data modify storage asset:artifact New.Items.hotbar append value {id:"none",Slot:4b} + execute if data storage asset:artifact New.Inventory[{Slot:5b}] run data modify storage asset:artifact New.Items.hotbar append from storage asset:artifact New.Inventory[{Slot:5b}] + execute unless data storage asset:artifact New.Inventory[{Slot:5b}] run data modify storage asset:artifact New.Items.hotbar append value {id:"none",Slot:5b} + execute if data storage asset:artifact New.Inventory[{Slot:6b}] run data modify storage asset:artifact New.Items.hotbar append from storage asset:artifact New.Inventory[{Slot:6b}] + execute unless data storage asset:artifact New.Inventory[{Slot:6b}] run data modify storage asset:artifact New.Items.hotbar append value {id:"none",Slot:6b} + execute if data storage asset:artifact New.Inventory[{Slot:7b}] run data modify storage asset:artifact New.Items.hotbar append from storage asset:artifact New.Inventory[{Slot:7b}] + execute unless data storage asset:artifact New.Inventory[{Slot:7b}] run data modify storage asset:artifact New.Items.hotbar append value {id:"none",Slot:7b} + execute if data storage asset:artifact New.Inventory[{Slot:8b}] run data modify storage asset:artifact New.Items.hotbar append from storage asset:artifact New.Inventory[{Slot:8b}] + execute unless data storage asset:artifact New.Inventory[{Slot:8b}] run data modify storage asset:artifact New.Items.hotbar append value {id:"none",Slot:8b} # NullCheck - execute unless data storage asset:context New.Items.mainhand run data modify storage asset:context New.Items.mainhand set value {} - execute unless data storage asset:context New.Items.offhand run data modify storage asset:context New.Items.offhand set value {} - execute unless data storage asset:context New.Items.feet run data modify storage asset:context New.Items.feet set value {} - execute unless data storage asset:context New.Items.legs run data modify storage asset:context New.Items.legs set value {} - execute unless data storage asset:context New.Items.chest run data modify storage asset:context New.Items.chest set value {} - execute unless data storage asset:context New.Items.head run data modify storage asset:context New.Items.head set value {} + execute unless data storage asset:artifact New.Items.mainhand run data modify storage asset:artifact New.Items.mainhand set value {} + execute unless data storage asset:artifact New.Items.offhand run data modify storage asset:artifact New.Items.offhand set value {} + execute unless data storage asset:artifact New.Items.feet run data modify storage asset:artifact New.Items.feet set value {} + execute unless data storage asset:artifact New.Items.legs run data modify storage asset:artifact New.Items.legs set value {} + execute unless data storage asset:artifact New.Items.chest run data modify storage asset:artifact New.Items.chest set value {} + execute unless data storage asset:artifact New.Items.head run data modify storage asset:artifact New.Items.head set value {} # 非TSBアイテムのNullCheck - execute unless data storage asset:context New.Items.mainhand.tag.TSB.ID run data modify storage asset:context New.Items.mainhand.tag.TSB set value {ID:-2,UUID:-2,LocalCooldown:0} - execute unless data storage asset:context New.Items.offhand.tag.TSB.ID run data modify storage asset:context New.Items.offhand.tag.TSB set value {ID:-2,UUID:-2,LocalCooldown:0} - execute unless data storage asset:context New.Items.feet.tag.TSB.ID run data modify storage asset:context New.Items.feet.tag.TSB set value {ID:-2,UUID:-2,LocalCooldown:0} - execute unless data storage asset:context New.Items.legs.tag.TSB.ID run data modify storage asset:context New.Items.legs.tag.TSB set value {ID:-2,UUID:-2,LocalCooldown:0} - execute unless data storage asset:context New.Items.chest.tag.TSB.ID run data modify storage asset:context New.Items.chest.tag.TSB set value {ID:-2,UUID:-2,LocalCooldown:0} - execute unless data storage asset:context New.Items.head.tag.TSB.ID run data modify storage asset:context New.Items.head.tag.TSB set value {ID:-2,UUID:-2,LocalCooldown:0} - execute unless data storage asset:context New.Items.hotbar[0].tag.TSB.ID run data modify storage asset:context New.Items.hotbar[0].tag.TSB set value {ID:-2,UUID:-2,LocalCooldown:0} - execute unless data storage asset:context New.Items.hotbar[1].tag.TSB.ID run data modify storage asset:context New.Items.hotbar[1].tag.TSB set value {ID:-2,UUID:-2,LocalCooldown:0} - execute unless data storage asset:context New.Items.hotbar[2].tag.TSB.ID run data modify storage asset:context New.Items.hotbar[2].tag.TSB set value {ID:-2,UUID:-2,LocalCooldown:0} - execute unless data storage asset:context New.Items.hotbar[3].tag.TSB.ID run data modify storage asset:context New.Items.hotbar[3].tag.TSB set value {ID:-2,UUID:-2,LocalCooldown:0} - execute unless data storage asset:context New.Items.hotbar[4].tag.TSB.ID run data modify storage asset:context New.Items.hotbar[4].tag.TSB set value {ID:-2,UUID:-2,LocalCooldown:0} - execute unless data storage asset:context New.Items.hotbar[5].tag.TSB.ID run data modify storage asset:context New.Items.hotbar[5].tag.TSB set value {ID:-2,UUID:-2,LocalCooldown:0} - execute unless data storage asset:context New.Items.hotbar[6].tag.TSB.ID run data modify storage asset:context New.Items.hotbar[6].tag.TSB set value {ID:-2,UUID:-2,LocalCooldown:0} - execute unless data storage asset:context New.Items.hotbar[7].tag.TSB.ID run data modify storage asset:context New.Items.hotbar[7].tag.TSB set value {ID:-2,UUID:-2,LocalCooldown:0} - execute unless data storage asset:context New.Items.hotbar[8].tag.TSB.ID run data modify storage asset:context New.Items.hotbar[8].tag.TSB set value {ID:-2,UUID:-2,LocalCooldown:0} -# id - data modify storage asset:context New.id.mainhand set from storage asset:context New.Items.mainhand.tag.TSB.ID - data modify storage asset:context New.id.offhand set from storage asset:context New.Items.offhand.tag.TSB.ID - data modify storage asset:context New.id.feet set from storage asset:context New.Items.feet.tag.TSB.ID - data modify storage asset:context New.id.legs set from storage asset:context New.Items.legs.tag.TSB.ID - data modify storage asset:context New.id.chest set from storage asset:context New.Items.chest.tag.TSB.ID - data modify storage asset:context New.id.head set from storage asset:context New.Items.head.tag.TSB.ID - data modify storage asset:context New.id.hotbar append from storage asset:context New.Items.hotbar[].tag.TSB.ID \ No newline at end of file + execute unless data storage asset:artifact New.Items.mainhand.tag.TSB.ID run data modify storage asset:artifact New.Items.mainhand.tag.TSB set value {ID:-2,UUID:-2,LocalCooldown:0} + execute unless data storage asset:artifact New.Items.offhand.tag.TSB.ID run data modify storage asset:artifact New.Items.offhand.tag.TSB set value {ID:-2,UUID:-2,LocalCooldown:0} + execute unless data storage asset:artifact New.Items.feet.tag.TSB.ID run data modify storage asset:artifact New.Items.feet.tag.TSB set value {ID:-2,UUID:-2,LocalCooldown:0} + execute unless data storage asset:artifact New.Items.legs.tag.TSB.ID run data modify storage asset:artifact New.Items.legs.tag.TSB set value {ID:-2,UUID:-2,LocalCooldown:0} + execute unless data storage asset:artifact New.Items.chest.tag.TSB.ID run data modify storage asset:artifact New.Items.chest.tag.TSB set value {ID:-2,UUID:-2,LocalCooldown:0} + execute unless data storage asset:artifact New.Items.head.tag.TSB.ID run data modify storage asset:artifact New.Items.head.tag.TSB set value {ID:-2,UUID:-2,LocalCooldown:0} + execute unless data storage asset:artifact New.Items.hotbar[0].tag.TSB.ID run data modify storage asset:artifact New.Items.hotbar[0].tag.TSB set value {ID:-2,UUID:-2,LocalCooldown:0} + execute unless data storage asset:artifact New.Items.hotbar[1].tag.TSB.ID run data modify storage asset:artifact New.Items.hotbar[1].tag.TSB set value {ID:-2,UUID:-2,LocalCooldown:0} + execute unless data storage asset:artifact New.Items.hotbar[2].tag.TSB.ID run data modify storage asset:artifact New.Items.hotbar[2].tag.TSB set value {ID:-2,UUID:-2,LocalCooldown:0} + execute unless data storage asset:artifact New.Items.hotbar[3].tag.TSB.ID run data modify storage asset:artifact New.Items.hotbar[3].tag.TSB set value {ID:-2,UUID:-2,LocalCooldown:0} + execute unless data storage asset:artifact New.Items.hotbar[4].tag.TSB.ID run data modify storage asset:artifact New.Items.hotbar[4].tag.TSB set value {ID:-2,UUID:-2,LocalCooldown:0} + execute unless data storage asset:artifact New.Items.hotbar[5].tag.TSB.ID run data modify storage asset:artifact New.Items.hotbar[5].tag.TSB set value {ID:-2,UUID:-2,LocalCooldown:0} + execute unless data storage asset:artifact New.Items.hotbar[6].tag.TSB.ID run data modify storage asset:artifact New.Items.hotbar[6].tag.TSB set value {ID:-2,UUID:-2,LocalCooldown:0} + execute unless data storage asset:artifact New.Items.hotbar[7].tag.TSB.ID run data modify storage asset:artifact New.Items.hotbar[7].tag.TSB set value {ID:-2,UUID:-2,LocalCooldown:0} + execute unless data storage asset:artifact New.Items.hotbar[8].tag.TSB.ID run data modify storage asset:artifact New.Items.hotbar[8].tag.TSB set value {ID:-2,UUID:-2,LocalCooldown:0} diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/data/new/set_to_current.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/data/new/set_to_current.mcfunction deleted file mode 100644 index 1f54963e75..0000000000 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/data/new/set_to_current.mcfunction +++ /dev/null @@ -1,26 +0,0 @@ -#> asset_manager:artifact/data/new/set_to_current -# -# Newをcurrentデータにsetします -# -# @within function asset_manager:artifact/triggers/** - -# リセット - function asset_manager:artifact/data/current/reset -# 新しいデータを一つ上の階層に上げる - data modify storage asset:context id set from storage asset:context New.id - data modify storage asset:context Items set from storage asset:context New.Items - data modify storage asset:context Inventory set from storage asset:context New.Inventory - data modify storage asset:context SelectedItemSlot set from storage asset:context New.SelectedItemSlot -# autoの処理 - # 初期化 - data modify storage asset:context id.auto set value -1 - # idのputとAutoSlotの設定 - data modify storage asset:context Items.AutoSlot set from storage asset:artifact Argument.AutoSlot - execute if data storage asset:artifact Argument{AutoSlot:"mainhand"} run data modify storage asset:context id.auto set from storage asset:context id.mainhand - execute if data storage asset:artifact Argument{AutoSlot:"offhand"} run data modify storage asset:context id.auto set from storage asset:context id.offhand - execute if data storage asset:artifact Argument{AutoSlot:"feet"} run data modify storage asset:context id.auto set from storage asset:context id.feet - execute if data storage asset:artifact Argument{AutoSlot:"legs"} run data modify storage asset:context id.auto set from storage asset:context id.legs - execute if data storage asset:artifact Argument{AutoSlot:"chest"} run data modify storage asset:context id.auto set from storage asset:context id.chest - execute if data storage asset:artifact Argument{AutoSlot:"head"} run data modify storage asset:context id.auto set from storage asset:context id.head - # リセット - data remove storage asset:artifact Argument.AutoSlot \ No newline at end of file diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/data/new/stash_to_entity_storage.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/data/new/stash_to_entity_storage.mcfunction index f0357da6e6..fdf44cfd1e 100644 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/data/new/stash_to_entity_storage.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/data/new/stash_to_entity_storage.mcfunction @@ -7,7 +7,8 @@ # EntityStorage呼び出し function oh_my_dat:please # 突っ込む - data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].ContextStash.Inventory set from storage asset:context New.Inventory - data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].ContextStash.SelectedItemSlot set from storage asset:context New.SelectedItemSlot - data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].ContextStash.Items set from storage asset:context New.Items - data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].ContextStash.id set from storage asset:context New.id \ No newline at end of file + data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].ContextStash.Inventory set from storage asset:artifact New.Inventory + data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].ContextStash.SelectedItemSlot set from storage asset:artifact New.SelectedItemSlot + data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].ContextStash.Items set from storage asset:artifact New.Items + data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].ContextStash.ItemData set from storage asset:artifact New.ItemData + data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].ContextStash.Consumable set from storage asset:artifact New.Consumable diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/data/old/init.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/data/old/init.mcfunction index f6b2dba4ca..ef839fc9e4 100644 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/data/old/init.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/data/old/init.mcfunction @@ -5,13 +5,14 @@ # @within function asset_manager:artifact/triggers/ # 初期化 - data remove storage asset:context Old + data remove storage asset:artifact Old # EntityStorage呼び出し function oh_my_dat:please # 突っ込む - data modify storage asset:context Old.Inventory set from storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].ContextStash.Inventory - data modify storage asset:context Old.SelectedItemSlot set from storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].ContextStash.SelectedItemSlot - data modify storage asset:context Old.Items set from storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].ContextStash.Items - data modify storage asset:context Old.id set from storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].ContextStash.id + data modify storage asset:artifact Old.Inventory set from storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].ContextStash.Inventory + data modify storage asset:artifact Old.SelectedItemSlot set from storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].ContextStash.SelectedItemSlot + data modify storage asset:artifact Old.Items set from storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].ContextStash.Items + data modify storage asset:artifact Old.ItemData set from storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].ContextStash.ItemData + data modify storage asset:artifact Old.Consumable set from storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].ContextStash.Consumable # EntityStorageから削除 - data remove storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].ContextStash \ No newline at end of file + data remove storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].ContextStash diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/data/old/set_to_current.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/data/old/set_to_current.mcfunction deleted file mode 100644 index b1a59dbd8c..0000000000 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/data/old/set_to_current.mcfunction +++ /dev/null @@ -1,26 +0,0 @@ -#> asset_manager:artifact/data/old/set_to_current -# -# Oldをcurrentデータにsetします -# -# @within function asset_manager:artifact/triggers/** - -# リセット - function asset_manager:artifact/data/current/reset -# 新しいデータを一つ上の階層に上げる - data modify storage asset:context id set from storage asset:context Old.id - data modify storage asset:context Items set from storage asset:context Old.Items - data modify storage asset:context Inventory set from storage asset:context Old.Inventory - data modify storage asset:context SelectedItemSlot set from storage asset:context Old.SelectedItemSlot -# autoの処理 - # 初期化 - data modify storage asset:context id.auto set value -1 - # idのputとAutoSlotの設定 - data modify storage asset:context Items.AutoSlot set from storage asset:artifact Argument.AutoSlot - execute if data storage asset:artifact Argument{AutoSlot:"mainhand"} run data modify storage asset:context id.auto set from storage asset:context id.mainhand - execute if data storage asset:artifact Argument{AutoSlot:"offhand"} run data modify storage asset:context id.auto set from storage asset:context id.offhand - execute if data storage asset:artifact Argument{AutoSlot:"feet"} run data modify storage asset:context id.auto set from storage asset:context id.feet - execute if data storage asset:artifact Argument{AutoSlot:"legs"} run data modify storage asset:context id.auto set from storage asset:context id.legs - execute if data storage asset:artifact Argument{AutoSlot:"chest"} run data modify storage asset:context id.auto set from storage asset:context id.chest - execute if data storage asset:artifact Argument{AutoSlot:"head"} run data modify storage asset:context id.auto set from storage asset:context id.head - # リセット - data remove storage asset:artifact Argument.AutoSlot \ No newline at end of file diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/give/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/give/.mcfunction index 712a2547a3..0e7f5d497b 100644 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/give/.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/give/.mcfunction @@ -1,56 +1,103 @@ #> asset_manager:artifact/give/ # +# 神器を入手します # -# -# @within function api:artifact/*/from_rarity +# @input storage asset:artifact +# ID : int +# Item : ItemID +# Name : TextComponent +# Lore : TextComponent[] +# RemainingCount? : int +# RemainingCountMax? : int +# Slot : Slot +# Trigger : Trigger +# SubTriggers : Trigger[] +# Condition? : TextComponent +# AttackInfo? : Component +# ConsumeItem? : {Item: TextComponent, Count: int, Extra?: TextComponent} +# MPCost : int +# MPRequire? : int +# LocalCooldown? : int +# TypeCooldown? : {Type: enum(CooldownType), Duration: int} +# SpecialCooldown? : int +# DisableCooldownMessage? : boolean +# DisableMPMessage? : boolean +# IgnoreItemUpdate? : boolean +# DisableBreakSound? : boolean +# EquipID? : int +# Modifiers : Component[] +# ├ Type : string +# ├ Amount : double +# ├ Operation : "add" | "multiply_base" | "multiply" +# ├ MaxStack? : int +# └ StackReduction? : double +# PartsMax? : int +# CanUsedGod : God[] +# CustomNBT? : Component +# @output item 神器 +# @within function api:artifact/core/from_id -#> For calc +#> Inv # @private - #declare score_holder $CandidateLength - #declare score_holder $Argument.Index - #declare score_holder $Pulls + #declare score_holder $InvSize -# セッション開ける - function lib:array/session/open -# 該当レアリティのデータを取得 - execute if data storage api: Argument{Rarity:1} run data modify storage lib: Array set from storage asset:artifact RarityRegistry[1] - execute if data storage api: Argument{Rarity:2} run data modify storage lib: Array set from storage asset:artifact RarityRegistry[2] - execute if data storage api: Argument{Rarity:3} run data modify storage lib: Array set from storage asset:artifact RarityRegistry[3] - execute if data storage api: Argument{Rarity:4} run data modify storage lib: Array set from storage asset:artifact RarityRegistry[4] -# データサイズを取得 - execute store result score $CandidateLength Temporary if data storage lib: Array[] -# 対象Indexを決定 - execute if data storage api: Argument{Rarity:1} run data modify storage lib: Args.key set value "artifact_lv-1" - execute if data storage api: Argument{Rarity:2} run data modify storage lib: Args.key set value "artifact_lv-2" - execute if data storage api: Argument{Rarity:3} run data modify storage lib: Args.key set value "artifact_lv-3" - execute if data storage api: Argument{Rarity:4} run data modify storage lib: Args.key set value "artifact_lv-4" - execute store result storage lib: Args.max int 1 run scoreboard players get $CandidateLength Temporary - execute store result storage lib: Args.scarcity_history_size int 0.35 run scoreboard players get $CandidateLength Temporary - execute store result score $Argument.Index Lib run function lib:random/with_biased/manual.m with storage lib: Args -# 候補データを操作して対象Indexを-1に持ってくる - function lib:array/move -# 一旦リセット - data modify storage asset:artifact Picks set from storage lib: Array[-1] - function lib:array/session/close -# 候補データの再設定 - function lib:array/session/open - data modify storage lib: Array set from storage asset:artifact Picks -# プル数を乱数により設定 -# $Pulls = floor( $CandidateLength * 0.30~0.70(e2) ) / e2 - execute store result score $CandidateLength Temporary if data storage lib: Array[] - scoreboard players remove $CandidateLength Temporary 1 - execute store result score $Pulls Temporary run function lib:random/ - scoreboard players operation $Pulls Temporary %= $41 Const - scoreboard players add $Pulls Temporary 30 - scoreboard players operation $Pulls Temporary *= $CandidateLength Temporary - scoreboard players operation $Pulls Temporary /= $100 Const -# シャッフルして取り出す - data modify storage asset:artifact Type set from storage asset:context Type - function lib:array/shuffle - execute if score $Pulls Temporary matches 0.. if data storage lib: Array[0] run function asset_manager:artifact/give/foreach +# storage検証 + execute unless data storage asset:artifact ID run tellraw @a [{"storage":"global","nbt":"Prefix.ERROR"},{"text":"引数が足りません"},{"text":" ID","color":"red"}] + execute unless data storage asset:artifact Item run tellraw @a [{"storage":"global","nbt":"Prefix.ERROR"},{"text":"引数が足りません"},{"text":" Item","color":"red"}] + execute unless data storage asset:artifact Name run tellraw @a [{"storage":"global","nbt":"Prefix.ERROR"},{"text":"引数が足りません"},{"text":" Name","color":"red"}] + execute unless data storage asset:artifact Lore run tellraw @a [{"storage":"global","nbt":"Prefix.ERROR"},{"text":"引数が足りません"},{"text":" Lore","color":"red"}] + # execute unless data storage asset:artifact RemainingCount run + execute unless data storage asset:artifact RemainingCountMax if data storage asset:artifact RemainingCount run data modify storage asset:artifact RemainingCountMax set from storage asset:artifact RemainingCount + execute unless data storage asset:artifact Slot run tellraw @a [{"storage":"global","nbt":"Prefix.ERROR"},{"text":"引数が足りません"},{"text":" Slot","color":"red"}] + execute if data storage asset:artifact Trigger run function asset_manager:artifact/give/validate/trigger + # execute unless data storage asset:artifact SubTriggers[0] run + # execute unless data storage asset:artifact DisableBreakSound run + # execute unless data storage asset:artifact EquipID run + # execute unless data storage asset:artifact Modifiers[0] run + execute if data storage asset:artifact Modifiers[0] run data modify storage asset:artifact CopiedModifiers set from storage asset:artifact Modifiers + execute if data storage asset:artifact Modifiers[0] run function asset_manager:artifact/give/validate/modifier + execute if data storage asset:artifact Modifiers[0] run data remove storage asset:artifact CopiedModifiers + execute unless data storage asset:artifact PartsMax run data modify storage asset:artifact PartsMax set value 1 + execute unless data storage asset:artifact CanUsedGod run tellraw @a [{"storage":"global","nbt":"Prefix.ERROR"},{"text":"引数が足りません"},{"text":" CanUsedGod","color":"red"}] + # execute unless data storage asset:artifact CustomNBT run +# 各データ設定 + function asset_manager:artifact/create/set_data +# 神器排出 + # execute if data storage asset:context {Type:"box"} // 何もする必要がない + execute if data storage asset:context {Type:"drop"} run loot spawn ~ ~ ~ mine 10000 0 10000 debug_stick + execute if data storage asset:context {Type:"drop",Important:true} as @e[type=item,nbt={Item:{tag:{TSB:{}}}},distance=..0.3] run function asset_manager:artifact/give/protect + execute if data storage asset:context {Type:"give"} run function api:inventory/get_size + execute if data storage asset:context {Type:"give"} if score $InvSize Lib matches ..35 run loot give @s mine 10000 0 10000 debug_stick + execute if data storage asset:context {Type:"give"} if score $InvSize Lib matches 36.. run loot spawn ~ ~ ~ mine 10000 0 10000 debug_stick + execute if data storage asset:context {Type:"give"} if score $InvSize Lib matches 36.. as @e[type=item,nbt={Item:{tag:{TSB:{}}}},distance=..0.3] run function asset_manager:artifact/give/protect + execute if data storage asset:context {Type:"replace"} run function asset_manager:artifact/give/replace # リセット - function lib:array/session/close - scoreboard players reset $CandidateLength Temporary - scoreboard players reset $Pulls Temporary - data remove storage lib: Args - data remove storage asset:artifact Type + scoreboard players reset $InvSize Lib + data remove storage asset:context Type + data remove storage asset:artifact ID + data remove storage asset:artifact Item + data remove storage asset:artifact Name + data remove storage asset:artifact Lore + data remove storage asset:artifact RemainingCount + data remove storage asset:artifact RemainingCountMax + data remove storage asset:artifact Slot + data remove storage asset:artifact Trigger + data remove storage asset:artifact SubTriggers + data remove storage asset:artifact Condition + data remove storage asset:artifact AttackInfo + data remove storage asset:artifact ConsumeItem + data remove storage asset:artifact MPCost + data remove storage asset:artifact MPRequire + data remove storage asset:artifact MPHealWhenHit + data remove storage asset:artifact LocalCooldown + data remove storage asset:artifact TypeCooldown + data remove storage asset:artifact SpecialCooldown + data remove storage asset:artifact DisableCooldownMessage + data remove storage asset:artifact DisableMPMessage + data remove storage asset:artifact IgnoreItemUpdate + data remove storage asset:artifact DisableBreakSound + data remove storage asset:artifact EquipID + data remove storage asset:artifact Modifiers + data remove storage asset:artifact PartsMax + data remove storage asset:artifact CanUsedGod + data remove storage asset:artifact CustomNBT diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/give/foreach.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/give/foreach.mcfunction deleted file mode 100644 index 9c0361082e..0000000000 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/give/foreach.mcfunction +++ /dev/null @@ -1,21 +0,0 @@ -#> asset_manager:artifact/give/foreach -# @within function asset_manager:artifact/give/* - -#> private -# @private - #declare score_holder $Pulls - -# asset:context idがある場合は退避 - function asset_manager:common/context/id/stash -# 引数に代入 - data modify storage asset:context id set from storage lib: Array[-1] - data modify storage asset:context Type set from storage asset:artifact Type -# 呼び出し - function #asset:artifact/give -# asset:context idを戻す - function asset_manager:common/context/id/pop - -# リセット&ループ - data remove storage lib: Array[-1] - scoreboard players remove $Pulls Temporary 1 - execute if score $Pulls Temporary matches 0.. run function asset_manager:artifact/give/foreach diff --git a/TheSkyBlessing/data/asset/functions/artifact/common/protect.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/give/protect.mcfunction similarity index 65% rename from TheSkyBlessing/data/asset/functions/artifact/common/protect.mcfunction rename to TheSkyBlessing/data/asset_manager/functions/artifact/give/protect.mcfunction index 9169da8e5a..d5ce8eb6ae 100644 --- a/TheSkyBlessing/data/asset/functions/artifact/common/protect.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/give/protect.mcfunction @@ -1,12 +1,9 @@ -#> asset:artifact/common/protect -# -# -# -# @within function asset:artifact/common/give +#> asset_manager:artifact/give/protect +# @within function asset_manager:artifact/give/ data modify entity @s Glowing set value true data modify entity @s NoGravity set value true data modify entity @s Age set value -32768 data modify entity @s Invulnerable set value true data modify entity @s Motion set value [0d,0d,0d] -data modify entity @s Fire set value 2s \ No newline at end of file +data modify entity @s Fire set value 2s diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/give/register.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/give/register.m.mcfunction new file mode 100644 index 0000000000..ff111b1d52 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/give/register.m.mcfunction @@ -0,0 +1,7 @@ +#> asset_manager:artifact/give/register.m +# +# +# +# @within function api:artifact/core/from_id + +$function asset:artifact/alias/$(id)/register diff --git a/TheSkyBlessing/data/asset/functions/artifact/common/replace.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/give/replace.mcfunction similarity index 73% rename from TheSkyBlessing/data/asset/functions/artifact/common/replace.mcfunction rename to TheSkyBlessing/data/asset_manager/functions/artifact/give/replace.mcfunction index f660d769ab..b06b0fa0b7 100644 --- a/TheSkyBlessing/data/asset/functions/artifact/common/replace.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/give/replace.mcfunction @@ -1,11 +1,11 @@ -#> asset:artifact/common/replace +#> asset_manager:artifact/give/replace # # 直接特定Slotに神器を配置します # -# @within function asset:artifact/common/give +# @within function asset_manager:artifact/give/ -# storageチェック - execute unless data storage asset:context Slot run data modify storage asset:context Slot set value "mainhand" +# エラーを返す + execute if data storage asset:context {Slot:"hotbar"} run tellraw @a [{"storage":"global","nbt":"Prefix.ERROR"},{"text":"hotbarへのreplaceは対応していません"}] # slot指定replace execute if data storage asset:context {Slot:"mainhand"} run item replace entity @s weapon.mainhand from block 10000 0 10000 container.0 @@ -16,4 +16,4 @@ execute if data storage asset:context {Slot:"head"} run item replace entity @s armor.head from block 10000 0 10000 container.0 # リセット - data remove storage asset:context Slot \ No newline at end of file + data remove storage asset:context Slot diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/give/validate/modifier.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/give/validate/modifier.mcfunction new file mode 100644 index 0000000000..8212a094c3 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/give/validate/modifier.mcfunction @@ -0,0 +1,15 @@ +#> asset_manager:artifact/give/validate/modifier +# @within function +# asset_manager:artifact/give/ +# asset_manager:artifact/give/validate/modifier + +# validate + execute unless data storage asset:artifact CopiedModifiers[-1].Type run tellraw @a [{"storage":"global","nbt":"Prefix.ERROR"},{"text":"引数が足りません"},{"text":" Type","color":"red"}] + execute unless data storage asset:artifact CopiedModifiers[-1].Amount run tellraw @a [{"storage":"global","nbt":"Prefix.ERROR"},{"text":"引数が足りません"},{"text":" Amount","color":"red"}] + execute unless data storage asset:artifact CopiedModifiers[-1].Operation run tellraw @a [{"storage":"global","nbt":"Prefix.ERROR"},{"text":"引数が足りません"},{"text":" Operation","color":"red"}] + # execute unless data storage asset:artifact CopiedModifiers[-1].MaxStack + # execute unless data storage asset:artifact CopiedModifiers[-1].StackReduction + +# loop + data remove storage asset:artifact CopiedModifiers[-1] + execute if data storage asset:artifact CopiedModifiers[0] run function asset_manager:artifact/give/validate/modifier diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/give/validate/trigger.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/give/validate/trigger.mcfunction new file mode 100644 index 0000000000..97acd7a890 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/give/validate/trigger.mcfunction @@ -0,0 +1,18 @@ +#> asset_manager:artifact/give/validate/trigger +# +# +# +# @within function asset_manager:artifact/give/ + +execute if data storage asset:artifact {Trigger:"equip"} run tellraw @a [{"storage":"global","nbt":"Prefix.ERROR"},{"text":"equipは主トリガーとしては利用できません"}] +# execute unless data storage asset:artifact Condition run +# execute unless data storage asset:artifact AttackInfo run +# execute unless data storage asset:artifact ConsumeItem run +execute unless data storage asset:artifact MPCost unless data storage asset:artifact MPHealWhenHit run tellraw @a [{"storage":"global","nbt":"Prefix.ERROR"},{"text":"引数が足りません"},{"text":" MPCost","color":"red"},{"text":" or","color":"white"},{"text":" MPHealWhenHit","color":"red"}] +# execute unless data storage asset:artifact MPRequire run +# execute unless data storage asset:artifact LocalCooldown run +# execute unless data storage asset:artifact TypeCooldown run +# execute unless data storage asset:artifact SpecialCooldown run +# execute unless data storage asset:artifact DisableCooldownMessage run +# execute unless data storage asset:artifact DisableMPMessage run +# execute unless data storage asset:artifact IgnoreItemUpdate run diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/load.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/load.mcfunction index b0530474d6..0df836ad08 100644 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/load.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/load.mcfunction @@ -5,6 +5,6 @@ # @within function core:load # 定義データを吹き飛ばす - data modify storage asset:artifact RarityRegistry set value [["UNUSED"], [], [], [], []] + data modify storage asset:artifact ShardPool set value [["UNUSED"], [], [], [], []] # 読み込み - function #asset:artifact/register \ No newline at end of file + function #asset:artifact/enroll_pool diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/storage.nbtdoc b/TheSkyBlessing/data/asset_manager/functions/artifact/storage.nbtdoc new file mode 100644 index 0000000000..be7940fe15 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/storage.nbtdoc @@ -0,0 +1,216 @@ +compound AssetArtifact { + // ID + ID: int @ 1..65535, + // アイテム (ItemID) + Item: string, + // 名前 (TextComponent) + Name: string, + // 説明文 (TextComponent) + Lore: [string] @ 1.., + // 残り使用回数 (default: null) + RemainingCount?: int @ 1.., + // 残り使用回数最大値 (default: null) + RemainingCountMax?: int @ 1.., + + // スロット + Slot: UseSlot, + // トリガー + // 先頭要素をメイントリガー、他をサブトリガーとして扱う + Triggers: UseTrigger, + // 使用条件の説明文 (default: null) + Condition?: string, + // 攻撃説明 (default: null) + AttackInfo?: TriggerAtkInfo, + // 消費アイテム (default: null) + ConsumeItem?: TriggerConsume, + // MP消費 (default: null) + MPCost?: int @ 0.., + // 要求MP (default: null) + MPRequire?: int @ 0.., + // MP回復 (default: null) + MPHealWhenHit?: double @ 0.., + // クールダウン - 個別 (default: null) + LocalCooldown?: int @ 0.., + // クールダウン - 種別 (default: null) + TypeCooldown?: TriggerTCD, + // クールダウン - 共有 (default: null) + SpecialCooldown?: int @ 0.., + // クールダウン中の使用不可メッセージの無効化 (default: false) + DisableCooldownMessage?: boolean, + // MP不足の使用不可メッセージの無効化 (default: false) + DisableMPMessage?: boolean, + // アイテム更新の無効化 (default: false) + IgnoreItemUpdate?: boolean, + // 破壊音の無効化 (default: false) + DisableBreakSound?: boolean, + // 装備時効果ID (default: null) + EquipID?: int @ 1..65535, + // 装備時補正 (default: null) + Modifiers: [Modifier], + // 最大発動回数 (default: 1) + PartsMax?: int @ 1.., + // 使用可能信仰 + CanUsedGod: "ALL" || [God] @ 1..5, + // NBT (default: null) + CustomNBT?: NBT, +} + +AssetEffect describes minecraft:storage[asset:artifact] + +enum(string) UseSlot { + Mainhand = "mainhand", + Offhand = "offhand", + Feet = "feet", + Legs = "legs", + Chest = "chest", + Head = "head", + Hotbar = "hotbar", + // Inventory = "inventory", + Auto = "auto", +} + +compound UseTrigger { + // トリガー名 + Trigger: TriggerName, + // トリガー変数 (default: null) + Argument?: TriggerArgument, +} + +enum(string) TriggerName { + // 保持 + Tick = "tick", + // 右クリック + Click = "click", + // 右クリック (長押し) + UsingItem = "using_item", + // 弓・クロスボウ発射 + Shot = "shot", + // アイテム使用 + UseItem = "use_item", + // 攻撃 + Attack = "attack", + // 被ダメージ + Damage = "damage", + // 撃破 + Kill = "kill", + // スニーク + Sneak = "sneak", + // 装備脱着 + Equip = "equip", + // 回復 + Heal = "heal", + // 被回復 + ReceiveHeal = "receive_heal", +} + +compound TriggerArgument { + // 種別 (Attack || Damage || Kill) (default: null) + Type?: DmgType + // エンティティからの攻撃か否か (Damage) (default: false) + FromEntity?: boolean, + // スニーク長押しに対応するか否か (Sneak) (default: false) + Keep?: boolean, + // スニーク閾値 (Sneak) (default: 0) + Threshold?: int @ 1.., +} + +enum(string) DmgType { + Melee = "melee", + Projectile = "projectile", + Explosion = "explosion", + Drowning = "drowning", + Burn = "burn", + Freezing = "freezing", + Lightning = "lightning", +} + +compound TriggerAtkInfo { + // ダメージ量 (default: "???") + Damage?: int || [int] @ 2, + // 防御貫通 (default: null) + BypassResist?: boolean, + // 射程 (default: null) + AttackRange?: int @ 0.., + // 範囲 (default: null) + IsRangeAttack?: RangeAtkOption, + // 第一属性 + AttackType: AtkOption, + // 第二属性 (default: "None") + ElementType?: ElemOption, +} + +enum(string) RangeAtkOption { + // 単体 + Never = "never", + // 範囲 - 確率 + probability = "probability", + // 範囲 - 条件 + Conditional = "conditional", + // 範囲 + Every = "every", +} + +enum(string) AtkOption { + Physical = "Physical", + Magic = "Magic", +} + +enum(string) ElemOption { + Fire = "Fire", + Water = "Water", + Thunder = "Thunder", + None = "None", +} + +compound TriggerConsume { + // アイテム (TextComponent) + Item: string, + // 個数 + Count: int @ 1.., + // その他条件など (TextComponent) (default: null) + Extra?: string, +} + +compound TriggerTCD { + Type: TCDType, + Value: int @ 0.., +} + +enum(string) TCDType { + ShortRange = "shortRange", + LongRange = "longRange", + Heal = "heal", + Summon = "summon", +} + +compound Modifier { + // 種別 + Type: ModifierType || AttributeName, + // 補正値 + Amount: double, + // 計算方式 + Operation: ModifierOperation, + // スタック減衰 (default: 0) + StuckReduction?: double, +} + +enum(string) ModifierType { + AttackBase = "attack/base", + AttackPhysical = "attack/physical", + AttackMagic = "attack/magic", + AttackFire = "attack/fire", + AttackWater = "attack/water", + AttackThunder = "attack/thunder", + DefenseBase = "defense/base", + DefensePhysical = "defense/physical", + DefenseMagic = "defense/magic", + DefenseFire = "defense/fire", + DefenseWater = "defense/water", + DefenseThunder = "defense/thunder", + DefenseFall = "defense/fall", + Heal = "heal", + MaxHealth = "max_health", + MaxMP = "max_mp", + MPRegen = "mp_regen", + ReceiveHeal = "receive_heal", +} diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/tick/player.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/tick/player.mcfunction index ea0afd2214..58726f3502 100644 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/tick/player.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/tick/player.mcfunction @@ -12,4 +12,4 @@ scoreboard players remove @s[scores={LocalCDLogCD=0..}] LocalCDLogCD 1 scoreboard players remove @s[scores={SpecialCDLogCD=0..}] SpecialCDLogCD 1 # 神器クールダウン表示処理 - function asset_manager:artifact/cooldown/ \ No newline at end of file + function asset_manager:artifact/cooldown/ diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/.mcfunction index 9bccc78522..05f013daac 100644 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/.mcfunction @@ -1,47 +1,34 @@ #> asset_manager:artifact/triggers/ # -# 各トリガーに処理受け渡し +# トリガー処理を行う # # @within function asset_manager:artifact/tick/player # IDの代入 function asset_manager:artifact/data/old/init function asset_manager:artifact/data/new/init +# 装備のデータの抽出 + function asset_manager:artifact/data/new/fetch_data/ +# イベント情報を取得 + data modify storage asset:artifact ArtifactEvents set from storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].ArtifactEvents + data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].ArtifactEvents set value {} # 装備の変更チェック - execute if data storage asset:context Old run function asset_manager:artifact/triggers/equipments/compare + execute if data storage asset:artifact Old run function asset_manager:artifact/triggers/equipments/compare # 変更時の更新処理 execute if data storage asset:artifact {EquipmentChanges:[{_:{_:false}}]} run function asset_manager:artifact/triggers/equipments/update_cooldown/ execute if data storage asset:artifact {EquipmentChanges:[{_:{_:false}}]} run function asset_manager:artifact/triggers/equipments/update_cooldown_type -# イベント情報を取得 - data modify storage asset:artifact ArtifactEvents set from storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].ArtifactEvents - data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].ArtifactEvents set value {} -# 各トリガーに処理受け渡し & AutoSlotのリセット - function asset_manager:artifact/triggers/tick - execute if entity @s[tag=TriggerFlag.ClickCarrot] run function asset_manager:artifact/triggers/click.carrot - execute if entity @s[tag=TriggerFlag.UseItem] run function asset_manager:artifact/triggers/use_item/ - execute if entity @s[tag=TriggerFlag.Sneak] run function asset_manager:artifact/triggers/sneak/ - execute if entity @s[tag=TriggerFlag.UsingItem] run function asset_manager:artifact/triggers/using_item - execute if data storage asset:artifact {EquipmentChanges:[{_:{_:false}}]} run function asset_manager:artifact/triggers/dis_equip - execute if data storage asset:artifact {EquipmentChanges:[{_:{_:false}}]} run function asset_manager:artifact/triggers/equip - execute if data storage asset:artifact ArtifactEvents.Attack[0] run function asset_manager:artifact/triggers/attack/ - execute if data storage asset:artifact ArtifactEvents.Damage[0] run function asset_manager:artifact/triggers/damage/ - execute if data storage asset:artifact ArtifactEvents.Killed[0] run function asset_manager:artifact/triggers/killed/ - execute if data storage asset:artifact ArtifactEvents.Heal[0] run function asset_manager:artifact/triggers/heal/ - execute if data storage asset:artifact ArtifactEvents.ReceiveHeal[0] run function asset_manager:artifact/triggers/receive_heal/ -# 弓の発射処理 (一時的処置) - execute if entity @e[type=#arrows,distance=..5,limit=1] store result score $GameTime Temporary run data get storage global Time - execute as @e[type=#arrows,distance=..5] if score @s ArrowOwnerUserID = @p[tag=this] UserID if score @s ArrowShotTick = $GameTime Temporary run tag @s add ShotArrow - execute if entity @e[type=#arrows,tag=ShotArrow,distance=..5,limit=1] run function asset_manager:artifact/triggers/shot - tag @e[type=#arrows,distance=..5] remove ShotArrow - scoreboard players reset $GameTime Temporary + execute if data storage asset:artifact {EquipmentChanges:[{_:{_:false}}]} if entity @s[tag=TriggerFlag.Sneak] run function asset_manager:artifact/triggers/event/sneak/reset_when_change_item + execute if data storage asset:artifact {EquipmentChanges:[{_:{_:false}}]} if entity @s[tag=TriggerFlag.UsingItem] run function asset_manager:artifact/triggers/event/use_item/reset_when_change_item +# 改宗時の更新処理 + execute if entity @s[tag=Believe.Changed] unless data storage asset:artifact {EquipmentChanges:[{_:{_:false}}]} run function asset_manager:artifact/triggers/event/sneak/reset + execute if entity @s[tag=Believe.Changed] unless data storage asset:artifact {EquipmentChanges:[{_:{_:false}}]} run function asset_manager:artifact/triggers/event/use_item/reset +# 各神器にトリガー受けわたし + function asset_manager:artifact/triggers/trigger/ # EntityStorageにデータ突っ込む function asset_manager:artifact/data/new/stash_to_entity_storage # リセット - data remove storage api: PersistentArgument.AdditionalMPHeal data remove storage asset:artifact EquipmentChanges data remove storage asset:artifact ArtifactEvents - function asset_manager:artifact/data/current/reset - tag @s remove TriggerFlag.ClickCarrot - tag @s remove TriggerFlag.UseItem - tag @s remove TriggerFlag.Sneak - tag @s remove TriggerFlag.UsingItem + data remove storage asset:artifact New + data remove storage asset:artifact Old + tag @s remove Believe.Changed diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack/.mcfunction index 7ab7a7337c..52a616cefd 100644 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack/.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack/.mcfunction @@ -1,10 +1,17 @@ #> asset_manager:artifact/triggers/attack/ # -# 各神器処理へデータ受け渡し # -# @within function asset_manager:artifact/triggers/ +# +# @within function +# asset_manager:artifact/triggers/trigger/foreach/call.m +# asset_manager:artifact/triggers/trigger/foreach/sub/call.m -# イベント発火前に実行するやつ - function asset_manager:artifact/data/new/set_to_current -# イベントを順に発火する +# フラグが存在しているか確認する + execute unless data storage asset:artifact ArtifactEvents.Attack[0] run return fail +# イベントを取得する + data modify storage asset:artifact Events append from storage asset:artifact ArtifactEvents.Attack[] +# それぞれについて処理する function asset_manager:artifact/triggers/attack/foreach + +# リセット + data remove storage asset:artifact Events diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack/foreach.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack/foreach.mcfunction index 2dca6793e6..eb0b0ed075 100644 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack/foreach.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack/foreach.mcfunction @@ -4,31 +4,27 @@ # # @within function asset_manager:artifact/triggers/attack/* -# イベントデータ取得 - data modify storage asset:context Attack set from storage asset:artifact ArtifactEvents.Attack[-1] - data remove storage asset:artifact ArtifactEvents.Attack[-1] -# 攻撃先を取得し、Victim を付与する (null の可能性もある) - data modify storage asset:artifact AttackTargets set from storage asset:context Attack.To - execute if data storage asset:artifact AttackTargets[0] run function asset_manager:artifact/triggers/attack/add_tag_each_victim -# 最大ダメージの計算 - function lib:array/session/open - data modify storage lib: Array set from storage asset:context Attack.Amounts - function lib:array/math/max - data modify storage asset:context Attack.Amount set from storage lib: MaxResult - function lib:array/session/close -# 神器側に受け渡し - function #asset:artifact/attack - execute if data storage asset:context Attack{Type:"vanilla_melee" } run tag @s add ShouldVanillaAttack - execute if data storage asset:context Attack{Type:"vanilla_melee" } run function asset_manager:artifact/triggers/attack/store_crit_and_charge_percentage - execute if data storage asset:context Attack{Type:"vanilla_melee" } run function #asset:artifact/attack/melee - execute if data storage asset:context Attack{Type:"vanilla_melee" } if entity @s[tag=ShouldVanillaAttack] as @e[type=#lib:living,type=!player,tag=Victim,tag=!Death,distance=..8] at @s run function api:mob/apply_to_forward_target/with_idempotent.m {CB:"asset_manager:artifact/triggers/attack/vanilla/",IsForwardedOnly:true} - execute if data storage asset:context Attack{Type:"vanilla_projectile"} run function #asset:artifact/attack/projectile - execute if data storage asset:context Attack{Type:"vanilla_projectile"} as @e[type=#lib:living,type=!player,tag=Victim,tag=!Death,distance=..150] at @s run function asset_manager:artifact/triggers/attack/vanilla/ - execute if data storage asset:context Attack{Type:"vanilla_explosion" } run function #asset:artifact/attack/explosion +# イベントデータ処理 + # データを取得 + data modify storage asset:context Attack set from storage asset:artifact Events[-1] + # 攻撃先を取得し、Victim を付与する + data modify storage asset:artifact AttackTargets set from storage asset:context Attack.To + execute if data storage asset:artifact AttackTargets[0] run function asset_manager:artifact/triggers/event/attack/add_tag_each_victim + # 最大ダメージの計算 + function asset_manager:artifact/triggers/event/attack/get_max_amount + +# 使用条件を満たしているか確認する + function asset_manager:artifact/check/ + function asset_manager:artifact/triggers/event/check.m with storage asset:context +# 条件を満たしていれば使用する + execute if entity @s[tag=CanUsed] run function asset_manager:artifact/triggers/attack/use + # リセット + function asset_manager:artifact/triggers/event/reset.m with storage asset:context + tag @e[type=#lib:living,type=!player,tag=Victim] remove Victim + tag @s remove CanUsed data remove storage asset:context Attack data remove storage asset:artifact AttackTargets - tag @s remove ShouldVanillaAttack - tag @e[type=#lib:living,type=!player,tag=Victim] remove Victim -# イベントがまだあれば再帰する - execute if data storage asset:artifact ArtifactEvents.Attack[0] run function asset_manager:artifact/triggers/attack/foreach + data remove storage asset:artifact Events[-1] +# 要素が残っているなら再帰 + execute if data storage asset:artifact Events[0] run function asset_manager:artifact/triggers/attack/foreach diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack/use.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack/use.mcfunction new file mode 100644 index 0000000000..934167fcf2 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack/use.mcfunction @@ -0,0 +1,22 @@ +#> asset_manager:artifact/triggers/attack/use +# +# +# +# @within function asset_manager:artifact/triggers/attack/foreach + +# 共通処理 +# アイテムを破壊するとBrokeItemが追加される + function asset_manager:artifact/use/ + +# 処理対象の神器の重複数を取得する + execute store result storage asset:context Count int 1 if data storage asset:artifact TargetItemList[] +# 処理対象の神器の残り使用回数を取得する +# ただしhotbarでない場合に限る + execute unless data storage asset:artifact TargetItem{Slot:"hotbar"} run data modify storage asset:context RemainingCount set from storage asset:artifact TargetItem.RemainingCount + +# 神器を呼び出し + function asset_manager:artifact/triggers/event/use.m with storage asset:context + +# リセット + data remove storage asset:context BrokeItem + data remove storage asset:context Count diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_explosion/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_explosion/.mcfunction new file mode 100644 index 0000000000..1defec05e8 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_explosion/.mcfunction @@ -0,0 +1,17 @@ +#> asset_manager:artifact/triggers/attack_explosion/ +# +# +# +# @within function +# asset_manager:artifact/triggers/trigger/foreach/call.m +# asset_manager:artifact/triggers/trigger/foreach/sub/call.m + +# フラグが存在しているか確認する + execute unless data storage asset:artifact ArtifactEvents.Attack[{Type:"vanilla_explosion"}] run return fail +# イベントを取得する + data modify storage asset:artifact Events append from storage asset:artifact ArtifactEvents.Attack[{Type:"vanilla_explosion"}] +# それぞれについて処理する + function asset_manager:artifact/triggers/attack_explosion/foreach + +# リセット + data remove storage asset:artifact Events diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_explosion/attack_explosion.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_explosion/attack_explosion.m.mcfunction new file mode 100644 index 0000000000..b45b8901cb --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_explosion/attack_explosion.m.mcfunction @@ -0,0 +1,8 @@ +#> asset_manager:artifact/triggers/attack_explosion/attack_explosion.m +# +# +# +# @input args id : int +# @within function asset_manager:artifact/triggers/attack_explosion/use + +$function asset:artifact/alias/$(id)/attack_explosion/ diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_explosion/foreach.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_explosion/foreach.mcfunction new file mode 100644 index 0000000000..c6807c9d75 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_explosion/foreach.mcfunction @@ -0,0 +1,30 @@ +#> asset_manager:artifact/triggers/attack_explosion/foreach +# +# +# +# @within function asset_manager:artifact/triggers/attack_explosion/* + +# イベントデータ処理 + # データを取得 + data modify storage asset:context Attack set from storage asset:artifact Events[-1] + # 攻撃先を取得し、Victim を付与する + data modify storage asset:artifact AttackTargets set from storage asset:context Attack.To + execute if data storage asset:artifact AttackTargets[0] run function asset_manager:artifact/triggers/event/attack/add_tag_each_victim + # 最大ダメージの計算 + function asset_manager:artifact/triggers/event/attack/get_max_amount + +# 使用条件を満たしているか確認する + function asset_manager:artifact/check/ + function asset_manager:artifact/triggers/event/check.m with storage asset:context +# 条件を満たしていれば使用する + execute if entity @s[tag=CanUsed] run function asset_manager:artifact/triggers/attack_explosion/use + +# リセット + function asset_manager:artifact/triggers/event/reset.m with storage asset:context + tag @e[type=#lib:living,type=!player,tag=Victim] remove Victim + tag @s remove CanUsed + data remove storage asset:context Attack + data remove storage asset:artifact AttackTargets + data remove storage asset:artifact Events[-1] +# 要素が残っているなら再帰 + execute if data storage asset:artifact Events[0] run function asset_manager:artifact/triggers/attack_explosion/foreach diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_explosion/use.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_explosion/use.mcfunction new file mode 100644 index 0000000000..2e315d086c --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_explosion/use.mcfunction @@ -0,0 +1,22 @@ +#> asset_manager:artifact/triggers/attack_explosion/use +# +# +# +# @within function asset_manager:artifact/triggers/attack_explosion/foreach + +# 共通処理 +# アイテムを破壊するとBrokeItemが追加される + function asset_manager:artifact/use/ + +# 処理対象の神器の重複数を取得する + execute store result storage asset:context Count int 1 if data storage asset:artifact TargetItemList[] +# 処理対象の神器の残り使用回数を取得する +# ただしhotbarでない場合に限る + execute unless data storage asset:artifact TargetItem{Slot:"hotbar"} run data modify storage asset:context RemainingCount set from storage asset:artifact TargetItem.RemainingCount + +# 神器を呼び出し + function asset_manager:artifact/triggers/event/use.m with storage asset:context + +# リセット + data remove storage asset:context BrokeItem + data remove storage asset:context Count diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_melee/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_melee/.mcfunction new file mode 100644 index 0000000000..e182dc46c8 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_melee/.mcfunction @@ -0,0 +1,17 @@ +#> asset_manager:artifact/triggers/attack_melee/ +# +# +# +# @within function +# asset_manager:artifact/triggers/trigger/foreach/call.m +# asset_manager:artifact/triggers/trigger/foreach/sub/call.m + +# フラグが存在しているか確認する + execute unless data storage asset:artifact ArtifactEvents.Attack[{Type:"vanilla_melee"}] run return fail +# イベントを取得する + data modify storage asset:artifact Events append from storage asset:artifact ArtifactEvents.Attack[{Type:"vanilla_melee"}] +# それぞれについて処理する + function asset_manager:artifact/triggers/attack_melee/foreach + +# リセット + data remove storage asset:artifact Events diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_melee/attack_melee.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_melee/attack_melee.m.mcfunction new file mode 100644 index 0000000000..66fa9328b6 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_melee/attack_melee.m.mcfunction @@ -0,0 +1,8 @@ +#> asset_manager:artifact/triggers/attack_melee/attack_melee.m +# +# +# +# @input args id : int +# @within function asset_manager:artifact/triggers/attack_melee/use + +$function asset:artifact/alias/$(id)/attack_melee/ diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_melee/foreach.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_melee/foreach.mcfunction new file mode 100644 index 0000000000..9991003d32 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_melee/foreach.mcfunction @@ -0,0 +1,33 @@ +#> asset_manager:artifact/triggers/attack_melee/foreach +# +# +# +# @within function asset_manager:artifact/triggers/attack_melee/* + +# バニラ攻撃はなかったことにする + tag @s remove ShouldVanillaAttack + +# イベントデータ処理 + # データを取得 + data modify storage asset:context Attack set from storage asset:artifact Events[-1] + # 攻撃先を取得し、Victim を付与する + data modify storage asset:artifact AttackTargets set from storage asset:context Attack.To + execute if data storage asset:artifact AttackTargets[0] run function asset_manager:artifact/triggers/event/attack/add_tag_each_victim + # 最大ダメージの計算 + function asset_manager:artifact/triggers/event/attack/get_max_amount + +# 使用条件を満たしているか確認する + function asset_manager:artifact/check/ + function asset_manager:artifact/triggers/event/check.m with storage asset:context +# 条件を満たしていれば使用する + execute if entity @s[tag=CanUsed] run function asset_manager:artifact/triggers/attack_melee/use + +# リセット + function asset_manager:artifact/triggers/event/reset.m with storage asset:context + tag @e[type=#lib:living,type=!player,tag=Victim] remove Victim + tag @s remove CanUsed + data remove storage asset:context Attack + data remove storage asset:artifact AttackTargets + data remove storage asset:artifact Events[-1] +# 要素が残っているなら再帰 + execute if data storage asset:artifact Events[0] run function asset_manager:artifact/triggers/attack_melee/foreach diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_melee/use.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_melee/use.mcfunction new file mode 100644 index 0000000000..09023743a9 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_melee/use.mcfunction @@ -0,0 +1,22 @@ +#> asset_manager:artifact/triggers/attack_melee/use +# +# +# +# @within function asset_manager:artifact/triggers/attack_melee/foreach + +# 共通処理 +# アイテムを破壊するとBrokeItemが追加される + function asset_manager:artifact/use/ + +# 処理対象の神器の重複数を取得する + execute store result storage asset:context Count int 1 if data storage asset:artifact TargetItemList[] +# 処理対象の神器の残り使用回数を取得する +# ただしhotbarでない場合に限る + execute unless data storage asset:artifact TargetItem{Slot:"hotbar"} run data modify storage asset:context RemainingCount set from storage asset:artifact TargetItem.RemainingCount + +# 神器を呼び出し + function asset_manager:artifact/triggers/event/use.m with storage asset:context + +# リセット + data remove storage asset:context BrokeItem + data remove storage asset:context Count diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_projectile/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_projectile/.mcfunction new file mode 100644 index 0000000000..de117f4f8d --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_projectile/.mcfunction @@ -0,0 +1,17 @@ +#> asset_manager:artifact/triggers/attack_projectile/ +# +# +# +# @within function +# asset_manager:artifact/triggers/trigger/foreach/call.m +# asset_manager:artifact/triggers/trigger/foreach/sub/call.m + +# フラグが存在しているか確認する + execute unless data storage asset:artifact ArtifactEvents.Attack[{Type:"vanilla_projectile"}] run return fail +# イベントを取得する + data modify storage asset:artifact Events append from storage asset:artifact ArtifactEvents.Attack[{Type:"vanilla_projectile"}] +# それぞれについて処理する + function asset_manager:artifact/triggers/attack_projectile/foreach + +# リセット + data remove storage asset:artifact Events diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_projectile/attack_projectile.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_projectile/attack_projectile.m.mcfunction new file mode 100644 index 0000000000..9f64a2ee8e --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_projectile/attack_projectile.m.mcfunction @@ -0,0 +1,8 @@ +#> asset_manager:artifact/triggers/attack_projectile/attack_projectile.m +# +# +# +# @input args id : int +# @within function asset_manager:artifact/triggers/attack_projectile/use + +$function asset:artifact/alias/$(id)/attack_projectile/ diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_projectile/foreach.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_projectile/foreach.mcfunction new file mode 100644 index 0000000000..8a18ede2b3 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_projectile/foreach.mcfunction @@ -0,0 +1,30 @@ +#> asset_manager:artifact/triggers/attack_projectile/foreach +# +# +# +# @within function asset_manager:artifact/triggers/attack_projectile/* + +# イベントデータ処理 + # データを取得 + data modify storage asset:context Attack set from storage asset:artifact Events[-1] + # 攻撃先を取得し、Victim を付与する + data modify storage asset:artifact AttackTargets set from storage asset:context Attack.To + execute if data storage asset:artifact AttackTargets[0] run function asset_manager:artifact/triggers/event/attack/add_tag_each_victim + # 最大ダメージの計算 + function asset_manager:artifact/triggers/event/attack/get_max_amount + +# 使用条件を満たしているか確認する + function asset_manager:artifact/check/ + function asset_manager:artifact/triggers/event/check.m with storage asset:context +# 条件を満たしていれば使用する + execute if entity @s[tag=CanUsed] run function asset_manager:artifact/triggers/attack_projectile/use + +# リセット + function asset_manager:artifact/triggers/event/reset.m with storage asset:context + tag @e[type=#lib:living,type=!player,tag=Victim] remove Victim + tag @s remove CanUsed + data remove storage asset:context Attack + data remove storage asset:artifact AttackTargets + data remove storage asset:artifact Events[-1] +# 要素が残っているなら再帰 + execute if data storage asset:artifact Events[0] run function asset_manager:artifact/triggers/attack_projectile/foreach diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_projectile/use.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_projectile/use.mcfunction new file mode 100644 index 0000000000..b547c74c25 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_projectile/use.mcfunction @@ -0,0 +1,22 @@ +#> asset_manager:artifact/triggers/attack_projectile/use +# +# +# +# @within function asset_manager:artifact/triggers/attack_projectile/foreach + +# 共通処理 +# アイテムを破壊するとBrokeItemが追加される + function asset_manager:artifact/use/ + +# 処理対象の神器の重複数を取得する + execute store result storage asset:context Count int 1 if data storage asset:artifact TargetItemList[] +# 処理対象の神器の残り使用回数を取得する +# ただしhotbarでない場合に限る + execute unless data storage asset:artifact TargetItem{Slot:"hotbar"} run data modify storage asset:context RemainingCount set from storage asset:artifact TargetItem.RemainingCount + +# 神器を呼び出し + function asset_manager:artifact/triggers/event/use.m with storage asset:context + +# リセット + data remove storage asset:context BrokeItem + data remove storage asset:context Count diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/click.carrot.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/click.carrot.mcfunction deleted file mode 100644 index a0d3657e3d..0000000000 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/click.carrot.mcfunction +++ /dev/null @@ -1,12 +0,0 @@ -#> asset_manager:artifact/triggers/click.carrot -# -# 各神器処理へデータ受け渡し -# -# @within function asset_manager:artifact/triggers/ - -# イベント発火前に実行するやつ - execute if predicate asset_manager:is_use_mainhand/carrot_on_a_stick run data modify storage asset:artifact Argument.AutoSlot set value "mainhand" - execute unless predicate asset_manager:is_use_mainhand/carrot_on_a_stick run data modify storage asset:artifact Argument.AutoSlot set value "offhand" - function asset_manager:artifact/data/new/set_to_current -# 神器側に受け渡し - function #asset:artifact/click.carrot_on_a_stick diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/click/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/click/.mcfunction new file mode 100644 index 0000000000..c309c3f15d --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/click/.mcfunction @@ -0,0 +1,19 @@ +#> asset_manager:artifact/triggers/click/ +# +# +# +# @within function +# asset_manager:artifact/triggers/trigger/foreach/call.m +# asset_manager:artifact/triggers/trigger/foreach/sub/call.m + +# フラグが存在しているか確認する + execute if entity @s[tag=!TriggerFlag.ClickCarrot] run return fail + execute if data storage asset:context {Slot:"offhand"} if predicate asset_manager:is_use_mainhand/carrot_on_a_stick run return fail +# 使用条件を満たしているか確認する + function asset_manager:artifact/check/ + function asset_manager:artifact/triggers/event/check.m with storage asset:context +# 条件を満たしていれば使用する + execute if entity @s[tag=CanUsed] run function asset_manager:artifact/triggers/click/use + +# リセット + tag @s remove CanUsed diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/click/click.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/click/click.m.mcfunction new file mode 100644 index 0000000000..cbb781baf0 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/click/click.m.mcfunction @@ -0,0 +1,8 @@ +#> asset_manager:artifact/triggers/click/click.m +# +# +# +# @input args id : int +# @within function asset_manager:artifact/triggers/click/use + +$function asset:artifact/alias/$(id)/click/ diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/click/use.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/click/use.mcfunction new file mode 100644 index 0000000000..a1420eefc4 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/click/use.mcfunction @@ -0,0 +1,22 @@ +#> asset_manager:artifact/triggers/click/use +# +# +# +# @within function asset_manager:artifact/triggers/click/ + +# 共通処理 +# アイテムを破壊するとBrokeItemが追加される + function asset_manager:artifact/use/ + +# 処理対象の神器の重複数を取得する + execute store result storage asset:context Count int 1 if data storage asset:artifact TargetItemList[] +# 処理対象の神器の残り使用回数を取得する +# ただしhotbarでない場合に限る + execute unless data storage asset:artifact TargetItem{Slot:"hotbar"} run data modify storage asset:context RemainingCount set from storage asset:artifact TargetItem.RemainingCount + +# 神器を呼び出し + function asset_manager:artifact/triggers/event/use.m with storage asset:context + +# リセット + data remove storage asset:context BrokeItem + data remove storage asset:context Count diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage/.mcfunction index 50d297c56f..c868a4b716 100644 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage/.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage/.mcfunction @@ -1,10 +1,17 @@ #> asset_manager:artifact/triggers/damage/ # -# 各神器処理へデータ受け渡し # -# @within function asset_manager:artifact/triggers/ +# +# @within function +# asset_manager:artifact/triggers/trigger/foreach/call.m +# asset_manager:artifact/triggers/trigger/foreach/sub/call.m -# イベント発火前に実行するやつ - function asset_manager:artifact/data/new/set_to_current -# 神器側に受け渡し +# フラグが存在しているか確認する + execute unless data storage asset:artifact ArtifactEvents.Damage[0] run return fail +# イベントを取得する + data modify storage asset:artifact Events append from storage asset:artifact ArtifactEvents.Damage[] +# それぞれについて処理する function asset_manager:artifact/triggers/damage/foreach + +# リセット + data remove storage asset:artifact Events diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage/damage.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage/damage.m.mcfunction new file mode 100644 index 0000000000..890d6a96a5 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage/damage.m.mcfunction @@ -0,0 +1,8 @@ +#> asset_manager:artifact/triggers/damage/damage.m +# +# +# +# @input args id : int +# @within function asset_manager:artifact/triggers/damage/use + +$function asset:artifact/alias/$(id)/damage/ diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage/foreach.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage/foreach.mcfunction index ed68f01f66..a55030f7f9 100644 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage/foreach.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage/foreach.mcfunction @@ -4,33 +4,23 @@ # # @within function asset_manager:artifact/triggers/damage/* -#> Private -# @private -#declare score_holder $AttackedFrom +# イベントデータ処理 + # データを取得 + data modify storage asset:context Damage set from storage asset:artifact Events[-1] + # 攻撃元を取得し、Attacker を付与する (null の可能性もある) + function asset_manager:artifact/triggers/event/damage/add_tag_attacker + +# 使用条件を満たしているか確認する + function asset_manager:artifact/check/ + function asset_manager:artifact/triggers/event/check.m with storage asset:context +# 条件を満たしていれば使用する + execute if entity @s[tag=CanUsed] run function asset_manager:artifact/triggers/damage/use -# イベントデータ取得 - data modify storage asset:context Damage set from storage asset:artifact ArtifactEvents.Damage[-1] - data remove storage asset:artifact ArtifactEvents.Damage[-1] -# 攻撃元を取得し、Attacker を付与する (null の可能性もある) - execute if data storage asset:context Damage.From store result score $AttackedFrom Temporary run data get storage asset:context Damage.From - execute if data storage asset:context Damage.From as @e[type=#lib:living,type=!player,distance=..150] if score @s MobUUID = $AttackedFrom Temporary run tag @s add Attacker - scoreboard players reset $AttackedFrom Temporary -# 神器側に受け渡し - function #asset:artifact/damage - execute if data storage asset:context Damage{Type:"vanilla_melee" } run function #asset:artifact/damage/melee - execute if data storage asset:context Damage{Type:"vanilla_drowning" } run function #asset:artifact/damage/drowning - execute if data storage asset:context Damage{Type:"vanilla_projectile"} run function #asset:artifact/damage/projectile - execute if data storage asset:context Damage{Type:"vanilla_explosion" } run function #asset:artifact/damage/explosion - execute if data storage asset:context Damage{Type:"vanilla_fire" } run function #asset:artifact/damage/fire - execute if data storage asset:context Damage{Type:"vanilla_freezing" } run function #asset:artifact/damage/freezing - execute if data storage asset:context Damage{Type:"vanilla_lightning" } run function #asset:artifact/damage/lightning - execute if data storage asset:context Damage{Type:"vanilla_other" } run function #asset:artifact/damage/other - execute if data storage asset:context Damage.From run function #asset:artifact/damage/from_entity/ - execute if data storage asset:context Damage.From if data storage asset:context Damage{Type:"vanilla_melee" } run function #asset:artifact/damage/from_entity/melee - execute if data storage asset:context Damage.From if data storage asset:context Damage{Type:"vanilla_projectile"} run function #asset:artifact/damage/from_entity/projectile - execute if data storage asset:context Damage.From if data storage asset:context Damage{Type:"vanilla_explosion" } run function #asset:artifact/damage/from_entity/explosion # リセット - data remove storage asset:context Damage + function asset_manager:artifact/triggers/event/reset.m with storage asset:context tag @e[type=#lib:living,type=!player,tag=Attacker] remove Attacker -# イベントがまだあれば再帰する - execute if data storage asset:artifact ArtifactEvents.Damage[0] run function asset_manager:artifact/triggers/damage/foreach + tag @s remove CanUsed + data remove storage asset:context Damage + data remove storage asset:artifact Events[-1] +# 要素が残っているなら再帰 + execute if data storage asset:artifact Events[0] run function asset_manager:artifact/triggers/damage/foreach diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage/use.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage/use.mcfunction new file mode 100644 index 0000000000..a4aa241071 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage/use.mcfunction @@ -0,0 +1,22 @@ +#> asset_manager:artifact/triggers/damage/use +# +# +# +# @within function asset_manager:artifact/triggers/damage/foreach + +# 共通処理 +# アイテムを破壊するとBrokeItemが追加される + function asset_manager:artifact/use/ + +# 処理対象の神器の重複数を取得する + execute store result storage asset:context Count int 1 if data storage asset:artifact TargetItemList[] +# 処理対象の神器の残り使用回数を取得する +# ただしhotbarでない場合に限る + execute unless data storage asset:artifact TargetItem{Slot:"hotbar"} run data modify storage asset:context RemainingCount set from storage asset:artifact TargetItem.RemainingCount + +# 神器を呼び出し + function asset_manager:artifact/triggers/event/use.m with storage asset:context + +# リセット + data remove storage asset:context BrokeItem + data remove storage asset:context Count diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_drowning/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_drowning/.mcfunction new file mode 100644 index 0000000000..7856131a88 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_drowning/.mcfunction @@ -0,0 +1,17 @@ +#> asset_manager:artifact/triggers/damage_drowning/ +# +# +# +# @within function +# asset_manager:artifact/triggers/trigger/foreach/call.m +# asset_manager:artifact/triggers/trigger/foreach/sub/call.m + +# フラグが存在しているか確認する + execute unless data storage asset:artifact ArtifactEvents.Damage[{Type:"vanilla_drowning"}] run return fail +# イベントを取得する + data modify storage asset:artifact Events append from storage asset:artifact ArtifactEvents.Damage[{Type:"vanilla_drowning"}] +# それぞれについて処理する + function asset_manager:artifact/triggers/damage_drowning/foreach + +# リセット + data remove storage asset:artifact Events diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_drowning/damage_drowning.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_drowning/damage_drowning.m.mcfunction new file mode 100644 index 0000000000..482ab94948 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_drowning/damage_drowning.m.mcfunction @@ -0,0 +1,8 @@ +#> asset_manager:artifact/triggers/damage_drowning/damage_drowning.m +# +# +# +# @input args id : int +# @within function asset_manager:artifact/triggers/damage_drowning/use + +$function asset:artifact/alias/$(id)/damage_drowning/ diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_drowning/foreach.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_drowning/foreach.mcfunction new file mode 100644 index 0000000000..4229995998 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_drowning/foreach.mcfunction @@ -0,0 +1,26 @@ +#> asset_manager:artifact/triggers/damage_drowning/foreach +# +# +# +# @within function asset_manager:artifact/triggers/damage_drowning/* + +# イベントデータ処理 + # データを取得 + data modify storage asset:context Damage set from storage asset:artifact Events[-1] + # 攻撃元を取得し、Attacker を付与する (null の可能性もある) + function asset_manager:artifact/triggers/event/damage/add_tag_attacker + +# 使用条件を満たしているか確認する + function asset_manager:artifact/check/ + function asset_manager:artifact/triggers/event/check.m with storage asset:context +# 条件を満たしていれば使用する + execute if entity @s[tag=CanUsed] run function asset_manager:artifact/triggers/damage_drowning/use + +# リセット + function asset_manager:artifact/triggers/event/reset.m with storage asset:context + tag @e[type=#lib:living,type=!player,tag=Attacker] remove Attacker + tag @s remove CanUsed + data remove storage asset:context Damage + data remove storage asset:artifact Events[-1] +# 要素が残っているなら再帰 + execute if data storage asset:artifact Events[0] run function asset_manager:artifact/triggers/damage_drowning/foreach diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_drowning/use.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_drowning/use.mcfunction new file mode 100644 index 0000000000..9064863ec0 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_drowning/use.mcfunction @@ -0,0 +1,22 @@ +#> asset_manager:artifact/triggers/damage_drowning/use +# +# +# +# @within function asset_manager:artifact/triggers/damage_drowning/foreach + +# 共通処理 +# アイテムを破壊するとBrokeItemが追加される + function asset_manager:artifact/use/ + +# 処理対象の神器の重複数を取得する + execute store result storage asset:context Count int 1 if data storage asset:artifact TargetItemList[] +# 処理対象の神器の残り使用回数を取得する +# ただしhotbarでない場合に限る + execute unless data storage asset:artifact TargetItem{Slot:"hotbar"} run data modify storage asset:context RemainingCount set from storage asset:artifact TargetItem.RemainingCount + +# 神器を呼び出し + function asset_manager:artifact/triggers/event/use.m with storage asset:context + +# リセット + data remove storage asset:context BrokeItem + data remove storage asset:context Count diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_entity/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_entity/.mcfunction new file mode 100644 index 0000000000..77c0a1ad49 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_entity/.mcfunction @@ -0,0 +1,17 @@ +#> asset_manager:artifact/triggers/damage_entity/ +# +# +# +# @within function +# asset_manager:artifact/triggers/trigger/foreach/call.m +# asset_manager:artifact/triggers/trigger/foreach/sub/call.m + +# フラグが存在しているか確認する + execute unless data storage asset:artifact ArtifactEvents.Damage[].From run return fail +# イベントを取得する + data modify storage asset:artifact Events append from storage asset:artifact ArtifactEvents.Damage[] +# それぞれについて処理する + function asset_manager:artifact/triggers/damage_entity/foreach + +# リセット + data remove storage asset:artifact Events diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_entity/damage_entity.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_entity/damage_entity.m.mcfunction new file mode 100644 index 0000000000..62c68aea28 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_entity/damage_entity.m.mcfunction @@ -0,0 +1,8 @@ +#> asset_manager:artifact/triggers/damage_entity/damage_entity.m +# +# +# +# @input args id : int +# @within function asset_manager:artifact/triggers/damage_entity/use + +$function asset:artifact/alias/$(id)/damage_entity/ diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_entity/foreach.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_entity/foreach.mcfunction new file mode 100644 index 0000000000..066c5e45b7 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_entity/foreach.mcfunction @@ -0,0 +1,26 @@ +#> asset_manager:artifact/triggers/damage_entity/foreach +# +# +# +# @within function asset_manager:artifact/triggers/damage_entity/* + +# イベントデータ処理 + # データを取得 + data modify storage asset:context Damage set from storage asset:artifact Events[-1] + # 攻撃元を取得し、Attacker を付与する (null の可能性もある) + function asset_manager:artifact/triggers/event/damage/add_tag_attacker + +# 使用条件を満たしているか確認する + execute if entity @e[type=#lib:living,type=!player,tag=Attacker] run function asset_manager:artifact/check/ + execute if entity @e[type=#lib:living,type=!player,tag=Attacker] run function asset_manager:artifact/triggers/event/check.m with storage asset:context +# 条件を満たしていれば使用する + execute if entity @s[tag=CanUsed] run function asset_manager:artifact/triggers/damage_entity/use + +# リセット + function asset_manager:artifact/triggers/event/reset.m with storage asset:context + tag @e[type=#lib:living,type=!player,tag=Attacker] remove Attacker + tag @s remove CanUsed + data remove storage asset:context Damage + data remove storage asset:artifact Events[-1] +# 要素が残っているなら再帰 + execute if data storage asset:artifact Events[0] run function asset_manager:artifact/triggers/damage_entity/foreach diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_entity/use.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_entity/use.mcfunction new file mode 100644 index 0000000000..d0cf2cd0b1 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_entity/use.mcfunction @@ -0,0 +1,22 @@ +#> asset_manager:artifact/triggers/damage_entity/use +# +# +# +# @within function asset_manager:artifact/triggers/damage_entity/foreach + +# 共通処理 +# アイテムを破壊するとBrokeItemが追加される + function asset_manager:artifact/use/ + +# 処理対象の神器の重複数を取得する + execute store result storage asset:context Count int 1 if data storage asset:artifact TargetItemList[] +# 処理対象の神器の残り使用回数を取得する +# ただしhotbarでない場合に限る + execute unless data storage asset:artifact TargetItem{Slot:"hotbar"} run data modify storage asset:context RemainingCount set from storage asset:artifact TargetItem.RemainingCount + +# 神器を呼び出し + function asset_manager:artifact/triggers/event/use.m with storage asset:context + +# リセット + data remove storage asset:context BrokeItem + data remove storage asset:context Count diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_entity_explosion/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_entity_explosion/.mcfunction new file mode 100644 index 0000000000..dfa91cd685 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_entity_explosion/.mcfunction @@ -0,0 +1,17 @@ +#> asset_manager:artifact/triggers/damage_entity_explosion/ +# +# +# +# @within function +# asset_manager:artifact/triggers/trigger/foreach/call.m +# asset_manager:artifact/triggers/trigger/foreach/sub/call.m + +# フラグが存在しているか確認する + execute unless data storage asset:artifact ArtifactEvents.Damage[{Type:"vanilla_explosion"}].From run return fail +# イベントを取得する + data modify storage asset:artifact Events append from storage asset:artifact ArtifactEvents.Damage[{Type:"vanilla_explosion"}] +# それぞれについて処理する + function asset_manager:artifact/triggers/damage_entity_explosion/foreach + +# リセット + data remove storage asset:artifact Events diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_entity_explosion/damage_entity_explosion.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_entity_explosion/damage_entity_explosion.m.mcfunction new file mode 100644 index 0000000000..16a753aed3 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_entity_explosion/damage_entity_explosion.m.mcfunction @@ -0,0 +1,8 @@ +#> asset_manager:artifact/triggers/damage_entity_explosion/damage_entity_explosion.m +# +# +# +# @input args id : int +# @within function asset_manager:artifact/triggers/damage_entity_explosion/use + +$function asset:artifact/alias/$(id)/damage_entity_explosion/ diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_entity_explosion/foreach.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_entity_explosion/foreach.mcfunction new file mode 100644 index 0000000000..2cd04b5f30 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_entity_explosion/foreach.mcfunction @@ -0,0 +1,26 @@ +#> asset_manager:artifact/triggers/damage_entity_explosion/foreach +# +# +# +# @within function asset_manager:artifact/triggers/damage_entity_explosion/* + +# イベントデータ処理 + # データを取得 + data modify storage asset:context Damage set from storage asset:artifact Events[-1] + # 攻撃元を取得し、Attacker を付与する (null の可能性もある) + function asset_manager:artifact/triggers/event/damage/add_tag_attacker + +# 使用条件を満たしているか確認する + execute if entity @e[type=#lib:living,type=!player,tag=Attacker] run function asset_manager:artifact/check/ + execute if entity @e[type=#lib:living,type=!player,tag=Attacker] run function asset_manager:artifact/triggers/event/check.m with storage asset:context +# 条件を満たしていれば使用する + execute if entity @s[tag=CanUsed] run function asset_manager:artifact/triggers/damage_entity_explosion/use + +# リセット + function asset_manager:artifact/triggers/event/reset.m with storage asset:context + tag @e[type=#lib:living,type=!player,tag=Attacker] remove Attacker + tag @s remove CanUsed + data remove storage asset:context Damage + data remove storage asset:artifact Events[-1] +# 要素が残っているなら再帰 + execute if data storage asset:artifact Events[0] run function asset_manager:artifact/triggers/damage_entity_explosion/foreach diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_entity_explosion/use.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_entity_explosion/use.mcfunction new file mode 100644 index 0000000000..cf95c342ef --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_entity_explosion/use.mcfunction @@ -0,0 +1,22 @@ +#> asset_manager:artifact/triggers/damage_entity_explosion/use +# +# +# +# @within function asset_manager:artifact/triggers/damage_entity_explosion/foreach + +# 共通処理 +# アイテムを破壊するとBrokeItemが追加される + function asset_manager:artifact/use/ + +# 処理対象の神器の重複数を取得する + execute store result storage asset:context Count int 1 if data storage asset:artifact TargetItemList[] +# 処理対象の神器の残り使用回数を取得する +# ただしhotbarでない場合に限る + execute unless data storage asset:artifact TargetItem{Slot:"hotbar"} run data modify storage asset:context RemainingCount set from storage asset:artifact TargetItem.RemainingCount + +# 神器を呼び出し + function asset_manager:artifact/triggers/event/use.m with storage asset:context + +# リセット + data remove storage asset:context BrokeItem + data remove storage asset:context Count diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_entity_melee/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_entity_melee/.mcfunction new file mode 100644 index 0000000000..bcdc5d800a --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_entity_melee/.mcfunction @@ -0,0 +1,17 @@ +#> asset_manager:artifact/triggers/damage_entity_melee/ +# +# +# +# @within function +# asset_manager:artifact/triggers/trigger/foreach/call.m +# asset_manager:artifact/triggers/trigger/foreach/sub/call.m + +# フラグが存在しているか確認する + execute unless data storage asset:artifact ArtifactEvents.Damage[{Type:"vanilla_melee"}].From run return fail +# イベントを取得する + data modify storage asset:artifact Events append from storage asset:artifact ArtifactEvents.Damage[{Type:"vanilla_melee"}] +# それぞれについて処理する + function asset_manager:artifact/triggers/damage_entity_melee/foreach + +# リセット + data remove storage asset:artifact Events diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_entity_melee/damage_entity_melee.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_entity_melee/damage_entity_melee.m.mcfunction new file mode 100644 index 0000000000..0d40c6b318 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_entity_melee/damage_entity_melee.m.mcfunction @@ -0,0 +1,8 @@ +#> asset_manager:artifact/triggers/damage_entity_melee/damage_entity_melee.m +# +# +# +# @input args id : int +# @within function asset_manager:artifact/triggers/damage_entity_melee/use + +$function asset:artifact/alias/$(id)/damage_entity_melee/ diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_entity_melee/foreach.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_entity_melee/foreach.mcfunction new file mode 100644 index 0000000000..c389f6b08c --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_entity_melee/foreach.mcfunction @@ -0,0 +1,26 @@ +#> asset_manager:artifact/triggers/damage_entity_melee/foreach +# +# +# +# @within function asset_manager:artifact/triggers/damage_entity_melee/* + +# イベントデータ処理 + # データを取得 + data modify storage asset:context Damage set from storage asset:artifact Events[-1] + # 攻撃元を取得し、Attacker を付与する (null の可能性もある) + function asset_manager:artifact/triggers/event/damage/add_tag_attacker + +# 使用条件を満たしているか確認する + execute if entity @e[type=#lib:living,type=!player,tag=Attacker] run function asset_manager:artifact/check/ + execute if entity @e[type=#lib:living,type=!player,tag=Attacker] run function asset_manager:artifact/triggers/event/check.m with storage asset:context +# 条件を満たしていれば使用する + execute if entity @s[tag=CanUsed] run function asset_manager:artifact/triggers/damage_entity_melee/use + +# リセット + function asset_manager:artifact/triggers/event/reset.m with storage asset:context + tag @e[type=#lib:living,type=!player,tag=Attacker] remove Attacker + tag @s remove CanUsed + data remove storage asset:context Damage + data remove storage asset:artifact Events[-1] +# 要素が残っているなら再帰 + execute if data storage asset:artifact Events[0] run function asset_manager:artifact/triggers/damage_entity_melee/foreach diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_entity_melee/use.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_entity_melee/use.mcfunction new file mode 100644 index 0000000000..000a2408c6 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_entity_melee/use.mcfunction @@ -0,0 +1,22 @@ +#> asset_manager:artifact/triggers/damage_entity_melee/use +# +# +# +# @within function asset_manager:artifact/triggers/damage_entity_melee/foreach + +# 共通処理 +# アイテムを破壊するとBrokeItemが追加される + function asset_manager:artifact/use/ + +# 処理対象の神器の重複数を取得する + execute store result storage asset:context Count int 1 if data storage asset:artifact TargetItemList[] +# 処理対象の神器の残り使用回数を取得する +# ただしhotbarでない場合に限る + execute unless data storage asset:artifact TargetItem{Slot:"hotbar"} run data modify storage asset:context RemainingCount set from storage asset:artifact TargetItem.RemainingCount + +# 神器を呼び出し + function asset_manager:artifact/triggers/event/use.m with storage asset:context + +# リセット + data remove storage asset:context BrokeItem + data remove storage asset:context Count diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_entity_projectile/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_entity_projectile/.mcfunction new file mode 100644 index 0000000000..7bc0b42e6d --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_entity_projectile/.mcfunction @@ -0,0 +1,17 @@ +#> asset_manager:artifact/triggers/damage_entity_projectile/ +# +# +# +# @within function +# asset_manager:artifact/triggers/trigger/foreach/call.m +# asset_manager:artifact/triggers/trigger/foreach/sub/call.m + +# フラグが存在しているか確認する + execute unless data storage asset:artifact ArtifactEvents.Damage[{Type:"vanilla_projectile"}].From run return fail +# イベントを取得する + data modify storage asset:artifact Events append from storage asset:artifact ArtifactEvents.Damage[{Type:"vanilla_projectile"}] +# それぞれについて処理する + function asset_manager:artifact/triggers/damage_entity_projectile/foreach + +# リセット + data remove storage asset:artifact Events diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_entity_projectile/damage_entity_projectile.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_entity_projectile/damage_entity_projectile.m.mcfunction new file mode 100644 index 0000000000..7a87c469c9 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_entity_projectile/damage_entity_projectile.m.mcfunction @@ -0,0 +1,8 @@ +#> asset_manager:artifact/triggers/damage_entity_projectile/damage_entity_projectile.m +# +# +# +# @input args id : int +# @within function asset_manager:artifact/triggers/damage_entity_projectile/use + +$function asset:artifact/alias/$(id)/damage_entity_projectile/ diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_entity_projectile/foreach.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_entity_projectile/foreach.mcfunction new file mode 100644 index 0000000000..2b7ae6d6e6 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_entity_projectile/foreach.mcfunction @@ -0,0 +1,26 @@ +#> asset_manager:artifact/triggers/damage_entity_projectile/foreach +# +# +# +# @within function asset_manager:artifact/triggers/damage_entity_projectile/* + +# イベントデータ処理 + # データを取得 + data modify storage asset:context Damage set from storage asset:artifact Events[-1] + # 攻撃元を取得し、Attacker を付与する (null の可能性もある) + function asset_manager:artifact/triggers/event/damage/add_tag_attacker + +# 使用条件を満たしているか確認する + execute if entity @e[type=#lib:living,type=!player,tag=Attacker] run function asset_manager:artifact/check/ + execute if entity @e[type=#lib:living,type=!player,tag=Attacker] run function asset_manager:artifact/triggers/event/check.m with storage asset:context +# 条件を満たしていれば使用する + execute if entity @s[tag=CanUsed] run function asset_manager:artifact/triggers/damage_entity_projectile/use + +# リセット + function asset_manager:artifact/triggers/event/reset.m with storage asset:context + tag @e[type=#lib:living,type=!player,tag=Attacker] remove Attacker + tag @s remove CanUsed + data remove storage asset:context Damage + data remove storage asset:artifact Events[-1] +# 要素が残っているなら再帰 + execute if data storage asset:artifact Events[0] run function asset_manager:artifact/triggers/damage_entity_projectile/foreach diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_entity_projectile/use.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_entity_projectile/use.mcfunction new file mode 100644 index 0000000000..5f78a02efa --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_entity_projectile/use.mcfunction @@ -0,0 +1,22 @@ +#> asset_manager:artifact/triggers/damage_entity_projectile/use +# +# +# +# @within function asset_manager:artifact/triggers/damage_entity_projectile/foreach + +# 共通処理 +# アイテムを破壊するとBrokeItemが追加される + function asset_manager:artifact/use/ + +# 処理対象の神器の重複数を取得する + execute store result storage asset:context Count int 1 if data storage asset:artifact TargetItemList[] +# 処理対象の神器の残り使用回数を取得する +# ただしhotbarでない場合に限る + execute unless data storage asset:artifact TargetItem{Slot:"hotbar"} run data modify storage asset:context RemainingCount set from storage asset:artifact TargetItem.RemainingCount + +# 神器を呼び出し + function asset_manager:artifact/triggers/event/use.m with storage asset:context + +# リセット + data remove storage asset:context BrokeItem + data remove storage asset:context Count diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_explosion/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_explosion/.mcfunction new file mode 100644 index 0000000000..a77ab909cc --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_explosion/.mcfunction @@ -0,0 +1,17 @@ +#> asset_manager:artifact/triggers/damage_explosion/ +# +# +# +# @within function +# asset_manager:artifact/triggers/trigger/foreach/call.m +# asset_manager:artifact/triggers/trigger/foreach/sub/call.m + +# フラグが存在しているか確認する + execute unless data storage asset:artifact ArtifactEvents.Damage[{Type:"vanilla_explosion"}] run return fail +# イベントを取得する + data modify storage asset:artifact Events append from storage asset:artifact ArtifactEvents.Damage[{Type:"vanilla_explosion"}] +# それぞれについて処理する + function asset_manager:artifact/triggers/damage_explosion/foreach + +# リセット + data remove storage asset:artifact Events diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_explosion/damage_explosion.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_explosion/damage_explosion.m.mcfunction new file mode 100644 index 0000000000..324b3e1697 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_explosion/damage_explosion.m.mcfunction @@ -0,0 +1,8 @@ +#> asset_manager:artifact/triggers/damage_explosion/damage_explosion.m +# +# +# +# @input args id : int +# @within function asset_manager:artifact/triggers/damage_explosion/use + +$function asset:artifact/alias/$(id)/damage_explosion/ diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_explosion/foreach.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_explosion/foreach.mcfunction new file mode 100644 index 0000000000..f6ea4fb5d2 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_explosion/foreach.mcfunction @@ -0,0 +1,26 @@ +#> asset_manager:artifact/triggers/damage_explosion/foreach +# +# +# +# @within function asset_manager:artifact/triggers/damage_explosion/* + +# イベントデータ処理 + # データを取得 + data modify storage asset:context Damage set from storage asset:artifact Events[-1] + # 攻撃元を取得し、Attacker を付与する (null の可能性もある) + function asset_manager:artifact/triggers/event/damage/add_tag_attacker + +# 使用条件を満たしているか確認する + function asset_manager:artifact/check/ + function asset_manager:artifact/triggers/event/check.m with storage asset:context +# 条件を満たしていれば使用する + execute if entity @s[tag=CanUsed] run function asset_manager:artifact/triggers/damage_explosion/use + +# リセット + function asset_manager:artifact/triggers/event/reset.m with storage asset:context + tag @e[type=#lib:living,type=!player,tag=Attacker] remove Attacker + tag @s remove CanUsed + data remove storage asset:context Damage + data remove storage asset:artifact Events[-1] +# 要素が残っているなら再帰 + execute if data storage asset:artifact Events[0] run function asset_manager:artifact/triggers/damage_explosion/foreach diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_explosion/use.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_explosion/use.mcfunction new file mode 100644 index 0000000000..b1f24d9d70 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_explosion/use.mcfunction @@ -0,0 +1,22 @@ +#> asset_manager:artifact/triggers/damage_explosion/use +# +# +# +# @within function asset_manager:artifact/triggers/damage_explosion/foreach + +# 共通処理 +# アイテムを破壊するとBrokeItemが追加される + function asset_manager:artifact/use/ + +# 処理対象の神器の重複数を取得する + execute store result storage asset:context Count int 1 if data storage asset:artifact TargetItemList[] +# 処理対象の神器の残り使用回数を取得する +# ただしhotbarでない場合に限る + execute unless data storage asset:artifact TargetItem{Slot:"hotbar"} run data modify storage asset:context RemainingCount set from storage asset:artifact TargetItem.RemainingCount + +# 神器を呼び出し + function asset_manager:artifact/triggers/event/use.m with storage asset:context + +# リセット + data remove storage asset:context BrokeItem + data remove storage asset:context Count diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_fire/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_fire/.mcfunction new file mode 100644 index 0000000000..e2f61a9cc6 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_fire/.mcfunction @@ -0,0 +1,17 @@ +#> asset_manager:artifact/triggers/damage_fire/ +# +# +# +# @within function +# asset_manager:artifact/triggers/trigger/foreach/call.m +# asset_manager:artifact/triggers/trigger/foreach/sub/call.m + +# フラグが存在しているか確認する + execute unless data storage asset:artifact ArtifactEvents.Damage[{Type:"vanilla_burn"}] run return fail +# イベントを取得する + data modify storage asset:artifact Events append from storage asset:artifact ArtifactEvents.Damage[{Type:"vanilla_burn"}] +# それぞれについて処理する + function asset_manager:artifact/triggers/damage_fire/foreach + +# リセット + data remove storage asset:artifact Events diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_fire/damage_fire.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_fire/damage_fire.m.mcfunction new file mode 100644 index 0000000000..b7852e88b7 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_fire/damage_fire.m.mcfunction @@ -0,0 +1,8 @@ +#> asset_manager:artifact/triggers/damage_fire/damage_fire.m +# +# +# +# @input args id : int +# @within function asset_manager:artifact/triggers/damage_fire/use + +$function asset:artifact/alias/$(id)/damage_fire/ diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_fire/foreach.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_fire/foreach.mcfunction new file mode 100644 index 0000000000..011f1f6af8 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_fire/foreach.mcfunction @@ -0,0 +1,26 @@ +#> asset_manager:artifact/triggers/damage_fire/foreach +# +# +# +# @within function asset_manager:artifact/triggers/damage_fire/* + +# イベントデータ処理 + # データを取得 + data modify storage asset:context Damage set from storage asset:artifact Events[-1] + # 攻撃元を取得し、Attacker を付与する (null の可能性もある) + function asset_manager:artifact/triggers/event/damage/add_tag_attacker + +# 使用条件を満たしているか確認する + function asset_manager:artifact/check/ + function asset_manager:artifact/triggers/event/check.m with storage asset:context +# 条件を満たしていれば使用する + execute if entity @s[tag=CanUsed] run function asset_manager:artifact/triggers/damage_fire/use + +# リセット + function asset_manager:artifact/triggers/event/reset.m with storage asset:context + tag @e[type=#lib:living,type=!player,tag=Attacker] remove Attacker + tag @s remove CanUsed + data remove storage asset:context Damage + data remove storage asset:artifact Events[-1] +# 要素が残っているなら再帰 + execute if data storage asset:artifact Events[0] run function asset_manager:artifact/triggers/damage_fire/foreach diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_fire/use.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_fire/use.mcfunction new file mode 100644 index 0000000000..f495139948 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_fire/use.mcfunction @@ -0,0 +1,22 @@ +#> asset_manager:artifact/triggers/damage_fire/use +# +# +# +# @within function asset_manager:artifact/triggers/damage_fire/foreach + +# 共通処理 +# アイテムを破壊するとBrokeItemが追加される + function asset_manager:artifact/use/ + +# 処理対象の神器の重複数を取得する + execute store result storage asset:context Count int 1 if data storage asset:artifact TargetItemList[] +# 処理対象の神器の残り使用回数を取得する +# ただしhotbarでない場合に限る + execute unless data storage asset:artifact TargetItem{Slot:"hotbar"} run data modify storage asset:context RemainingCount set from storage asset:artifact TargetItem.RemainingCount + +# 神器を呼び出し + function asset_manager:artifact/triggers/event/use.m with storage asset:context + +# リセット + data remove storage asset:context BrokeItem + data remove storage asset:context Count diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_freezing/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_freezing/.mcfunction new file mode 100644 index 0000000000..f055f445ad --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_freezing/.mcfunction @@ -0,0 +1,17 @@ +#> asset_manager:artifact/triggers/damage_freezing/ +# +# +# +# @within function +# asset_manager:artifact/triggers/trigger/foreach/call.m +# asset_manager:artifact/triggers/trigger/foreach/sub/call.m + +# フラグが存在しているか確認する + execute unless data storage asset:artifact ArtifactEvents.Damage[{Type:"vanilla_freezing"}] run return fail +# イベントを取得する + data modify storage asset:artifact Events append from storage asset:artifact ArtifactEvents.Damage[{Type:"vanilla_freezing"}] +# それぞれについて処理する + function asset_manager:artifact/triggers/damage_freezing/foreach + +# リセット + data remove storage asset:artifact Events diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_freezing/damage_freezing.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_freezing/damage_freezing.m.mcfunction new file mode 100644 index 0000000000..9636e3a698 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_freezing/damage_freezing.m.mcfunction @@ -0,0 +1,8 @@ +#> asset_manager:artifact/triggers/damage_freezing/damage_freezing.m +# +# +# +# @input args id : int +# @within function asset_manager:artifact/triggers/damage_freezing/use + +$function asset:artifact/alias/$(id)/damage_freezing/ diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_freezing/foreach.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_freezing/foreach.mcfunction new file mode 100644 index 0000000000..95a7684a9d --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_freezing/foreach.mcfunction @@ -0,0 +1,26 @@ +#> asset_manager:artifact/triggers/damage_freezing/foreach +# +# +# +# @within function asset_manager:artifact/triggers/damage_freezing/* + +# イベントデータ処理 + # データを取得 + data modify storage asset:context Damage set from storage asset:artifact Events[-1] + # 攻撃元を取得し、Attacker を付与する (null の可能性もある) + function asset_manager:artifact/triggers/event/damage/add_tag_attacker + +# 使用条件を満たしているか確認する + function asset_manager:artifact/check/ + function asset_manager:artifact/triggers/event/check.m with storage asset:context +# 条件を満たしていれば使用する + execute if entity @s[tag=CanUsed] run function asset_manager:artifact/triggers/damage_freezing/use + +# リセット + function asset_manager:artifact/triggers/event/reset.m with storage asset:context + tag @e[type=#lib:living,type=!player,tag=Attacker] remove Attacker + tag @s remove CanUsed + data remove storage asset:context Damage + data remove storage asset:artifact Events[-1] +# 要素が残っているなら再帰 + execute if data storage asset:artifact Events[0] run function asset_manager:artifact/triggers/damage_freezing/foreach diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_freezing/use.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_freezing/use.mcfunction new file mode 100644 index 0000000000..c499ea3eea --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_freezing/use.mcfunction @@ -0,0 +1,22 @@ +#> asset_manager:artifact/triggers/damage_freezing/use +# +# +# +# @within function asset_manager:artifact/triggers/damage_freezing/foreach + +# 共通処理 +# アイテムを破壊するとBrokeItemが追加される + function asset_manager:artifact/use/ + +# 処理対象の神器の重複数を取得する + execute store result storage asset:context Count int 1 if data storage asset:artifact TargetItemList[] +# 処理対象の神器の残り使用回数を取得する +# ただしhotbarでない場合に限る + execute unless data storage asset:artifact TargetItem{Slot:"hotbar"} run data modify storage asset:context RemainingCount set from storage asset:artifact TargetItem.RemainingCount + +# 神器を呼び出し + function asset_manager:artifact/triggers/event/use.m with storage asset:context + +# リセット + data remove storage asset:context BrokeItem + data remove storage asset:context Count diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_lightning/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_lightning/.mcfunction new file mode 100644 index 0000000000..646b785718 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_lightning/.mcfunction @@ -0,0 +1,17 @@ +#> asset_manager:artifact/triggers/damage_lightning/ +# +# +# +# @within function +# asset_manager:artifact/triggers/trigger/foreach/call.m +# asset_manager:artifact/triggers/trigger/foreach/sub/call.m + +# フラグが存在しているか確認する + execute unless data storage asset:artifact ArtifactEvents.Damage[{Type:"vanilla_lightning"}] run return fail +# イベントを取得する + data modify storage asset:artifact Events append from storage asset:artifact ArtifactEvents.Damage[{Type:"vanilla_lightning"}] +# それぞれについて処理する + function asset_manager:artifact/triggers/damage_lightning/foreach + +# リセット + data remove storage asset:artifact Events diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_lightning/damage_lightning.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_lightning/damage_lightning.m.mcfunction new file mode 100644 index 0000000000..71290e7d88 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_lightning/damage_lightning.m.mcfunction @@ -0,0 +1,8 @@ +#> asset_manager:artifact/triggers/damage_lightning/damage_lightning.m +# +# +# +# @input args id : int +# @within function asset_manager:artifact/triggers/damage_lightning/use + +$function asset:artifact/alias/$(id)/damage_lightning/ diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_lightning/foreach.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_lightning/foreach.mcfunction new file mode 100644 index 0000000000..8aa2e9809a --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_lightning/foreach.mcfunction @@ -0,0 +1,26 @@ +#> asset_manager:artifact/triggers/damage_lightning/foreach +# +# +# +# @within function asset_manager:artifact/triggers/damage_lightning/* + +# イベントデータ処理 + # データを取得 + data modify storage asset:context Damage set from storage asset:artifact Events[-1] + # 攻撃元を取得し、Attacker を付与する (null の可能性もある) + function asset_manager:artifact/triggers/event/damage/add_tag_attacker + +# 使用条件を満たしているか確認する + function asset_manager:artifact/check/ + function asset_manager:artifact/triggers/event/check.m with storage asset:context +# 条件を満たしていれば使用する + execute if entity @s[tag=CanUsed] run function asset_manager:artifact/triggers/damage_lightning/use + +# リセット + function asset_manager:artifact/triggers/event/reset.m with storage asset:context + tag @e[type=#lib:living,type=!player,tag=Attacker] remove Attacker + tag @s remove CanUsed + data remove storage asset:context Damage + data remove storage asset:artifact Events[-1] +# 要素が残っているなら再帰 + execute if data storage asset:artifact Events[0] run function asset_manager:artifact/triggers/damage_lightning/foreach diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_lightning/use.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_lightning/use.mcfunction new file mode 100644 index 0000000000..60ee0138e7 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_lightning/use.mcfunction @@ -0,0 +1,22 @@ +#> asset_manager:artifact/triggers/damage_lightning/use +# +# +# +# @within function asset_manager:artifact/triggers/damage_lightning/foreach + +# 共通処理 +# アイテムを破壊するとBrokeItemが追加される + function asset_manager:artifact/use/ + +# 処理対象の神器の重複数を取得する + execute store result storage asset:context Count int 1 if data storage asset:artifact TargetItemList[] +# 処理対象の神器の残り使用回数を取得する +# ただしhotbarでない場合に限る + execute unless data storage asset:artifact TargetItem{Slot:"hotbar"} run data modify storage asset:context RemainingCount set from storage asset:artifact TargetItem.RemainingCount + +# 神器を呼び出し + function asset_manager:artifact/triggers/event/use.m with storage asset:context + +# リセット + data remove storage asset:context BrokeItem + data remove storage asset:context Count diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_melee/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_melee/.mcfunction new file mode 100644 index 0000000000..aa9f74d829 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_melee/.mcfunction @@ -0,0 +1,17 @@ +#> asset_manager:artifact/triggers/damage_melee/ +# +# +# +# @within function +# asset_manager:artifact/triggers/trigger/foreach/call.m +# asset_manager:artifact/triggers/trigger/foreach/sub/call.m + +# フラグが存在しているか確認する + execute unless data storage asset:artifact ArtifactEvents.Damage[{Type:"vanilla_melee"}] run return fail +# イベントを取得する + data modify storage asset:artifact Events append from storage asset:artifact ArtifactEvents.Damage[{Type:"vanilla_melee"}] +# それぞれについて処理する + function asset_manager:artifact/triggers/damage_melee/foreach + +# リセット + data remove storage asset:artifact Events diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_melee/damage_melee.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_melee/damage_melee.m.mcfunction new file mode 100644 index 0000000000..6b86c4ba2c --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_melee/damage_melee.m.mcfunction @@ -0,0 +1,8 @@ +#> asset_manager:artifact/triggers/damage_melee/damage_melee.m +# +# +# +# @input args id : int +# @within function asset_manager:artifact/triggers/damage_melee/use + +$function asset:artifact/alias/$(id)/damage_melee/ diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_melee/foreach.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_melee/foreach.mcfunction new file mode 100644 index 0000000000..496e74152a --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_melee/foreach.mcfunction @@ -0,0 +1,26 @@ +#> asset_manager:artifact/triggers/damage_melee/foreach +# +# +# +# @within function asset_manager:artifact/triggers/damage_melee/* + +# イベントデータ処理 + # データを取得 + data modify storage asset:context Damage set from storage asset:artifact Events[-1] + # 攻撃元を取得し、Attacker を付与する (null の可能性もある) + function asset_manager:artifact/triggers/event/damage/add_tag_attacker + +# 使用条件を満たしているか確認する + function asset_manager:artifact/check/ + function asset_manager:artifact/triggers/event/check.m with storage asset:context +# 条件を満たしていれば使用する + execute if entity @s[tag=CanUsed] run function asset_manager:artifact/triggers/damage_melee/use + +# リセット + function asset_manager:artifact/triggers/event/reset.m with storage asset:context + tag @e[type=#lib:living,type=!player,tag=Attacker] remove Attacker + tag @s remove CanUsed + data remove storage asset:context Damage + data remove storage asset:artifact Events[-1] +# 要素が残っているなら再帰 + execute if data storage asset:artifact Events[0] run function asset_manager:artifact/triggers/damage_melee/foreach diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_melee/use.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_melee/use.mcfunction new file mode 100644 index 0000000000..98cbfbd7c6 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_melee/use.mcfunction @@ -0,0 +1,22 @@ +#> asset_manager:artifact/triggers/damage_melee/use +# +# +# +# @within function asset_manager:artifact/triggers/damage_melee/foreach + +# 共通処理 +# アイテムを破壊するとBrokeItemが追加される + function asset_manager:artifact/use/ + +# 処理対象の神器の重複数を取得する + execute store result storage asset:context Count int 1 if data storage asset:artifact TargetItemList[] +# 処理対象の神器の残り使用回数を取得する +# ただしhotbarでない場合に限る + execute unless data storage asset:artifact TargetItem{Slot:"hotbar"} run data modify storage asset:context RemainingCount set from storage asset:artifact TargetItem.RemainingCount + +# 神器を呼び出し + function asset_manager:artifact/triggers/event/use.m with storage asset:context + +# リセット + data remove storage asset:context BrokeItem + data remove storage asset:context Count diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_projectile/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_projectile/.mcfunction new file mode 100644 index 0000000000..5b7174afa8 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_projectile/.mcfunction @@ -0,0 +1,17 @@ +#> asset_manager:artifact/triggers/damage_projectile/ +# +# +# +# @within function +# asset_manager:artifact/triggers/trigger/foreach/call.m +# asset_manager:artifact/triggers/trigger/foreach/sub/call.m + +# フラグが存在しているか確認する + execute unless data storage asset:artifact ArtifactEvents.Damage[{Type:"vanilla_projectile"}] run return fail +# イベントを取得する + data modify storage asset:artifact Events append from storage asset:artifact ArtifactEvents.Damage[{Type:"vanilla_projectile"}] +# それぞれについて処理する + function asset_manager:artifact/triggers/damage_projectile/foreach + +# リセット + data remove storage asset:artifact Events diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_projectile/damage_projectile.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_projectile/damage_projectile.m.mcfunction new file mode 100644 index 0000000000..4ddbca4b4b --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_projectile/damage_projectile.m.mcfunction @@ -0,0 +1,8 @@ +#> asset_manager:artifact/triggers/damage_projectile/damage_projectile.m +# +# +# +# @input args id : int +# @within function asset_manager:artifact/triggers/damage_projectile/use + +$function asset:artifact/alias/$(id)/damage_projectile/ diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_projectile/foreach.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_projectile/foreach.mcfunction new file mode 100644 index 0000000000..c7bb66df2e --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_projectile/foreach.mcfunction @@ -0,0 +1,26 @@ +#> asset_manager:artifact/triggers/damage_projectile/foreach +# +# +# +# @within function asset_manager:artifact/triggers/damage_projectile/* + +# イベントデータ処理 + # データを取得 + data modify storage asset:context Damage set from storage asset:artifact Events[-1] + # 攻撃元を取得し、Attacker を付与する (null の可能性もある) + function asset_manager:artifact/triggers/event/damage/add_tag_attacker + +# 使用条件を満たしているか確認する + function asset_manager:artifact/check/ + function asset_manager:artifact/triggers/event/check.m with storage asset:context +# 条件を満たしていれば使用する + execute if entity @s[tag=CanUsed] run function asset_manager:artifact/triggers/damage_projectile/use + +# リセット + function asset_manager:artifact/triggers/event/reset.m with storage asset:context + tag @e[type=#lib:living,type=!player,tag=Attacker] remove Attacker + tag @s remove CanUsed + data remove storage asset:context Damage + data remove storage asset:artifact Events[-1] +# 要素が残っているなら再帰 + execute if data storage asset:artifact Events[0] run function asset_manager:artifact/triggers/damage_projectile/foreach diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_projectile/use.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_projectile/use.mcfunction new file mode 100644 index 0000000000..f6375a3e51 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/damage_projectile/use.mcfunction @@ -0,0 +1,22 @@ +#> asset_manager:artifact/triggers/damage_projectile/use +# +# +# +# @within function asset_manager:artifact/triggers/damage_projectile/foreach + +# 共通処理 +# アイテムを破壊するとBrokeItemが追加される + function asset_manager:artifact/use/ + +# 処理対象の神器の重複数を取得する + execute store result storage asset:context Count int 1 if data storage asset:artifact TargetItemList[] +# 処理対象の神器の残り使用回数を取得する +# ただしhotbarでない場合に限る + execute unless data storage asset:artifact TargetItem{Slot:"hotbar"} run data modify storage asset:context RemainingCount set from storage asset:artifact TargetItem.RemainingCount + +# 神器を呼び出し + function asset_manager:artifact/triggers/event/use.m with storage asset:context + +# リセット + data remove storage asset:context BrokeItem + data remove storage asset:context Count diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/dis_equip.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/dis_equip.mcfunction deleted file mode 100644 index b15ebd83a5..0000000000 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/dis_equip.mcfunction +++ /dev/null @@ -1,14 +0,0 @@ -#> asset_manager:artifact/triggers/dis_equip -# -# 各神器処理へデータ受け渡し -# -# @within function asset_manager:artifact/triggers/ - -# イベント発火前に実行するやつ - function asset_manager:artifact/data/old/set_to_current -# 全スロットを参照できるidを作る - data modify storage asset:context id.all set from storage asset:context id -# 変更のなかったスロットをマスクする - function asset_manager:artifact/triggers/equipments/mask_slot/ -# 神器側に受け渡し - function #asset:artifact/dis_equip diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/equip.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/equip.mcfunction deleted file mode 100644 index 4c72019343..0000000000 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/equip.mcfunction +++ /dev/null @@ -1,14 +0,0 @@ -#> asset_manager:artifact/triggers/equip -# -# 各神器処理へデータ受け渡し -# -# @within function asset_manager:artifact/triggers/ - -# イベント発火前に実行するやつ - function asset_manager:artifact/data/new/set_to_current -# 全スロットを参照できるidを作る - data modify storage asset:context id.all set from storage asset:context id -# 変更のなかったスロットをマスクする - function asset_manager:artifact/triggers/equipments/mask_slot/ -# 神器側に受け渡し - function #asset:artifact/equip diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/equipments/compare.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/equipments/compare.mcfunction index 9e549b8c5e..e30ed99146 100644 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/equipments/compare.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/equipments/compare.mcfunction @@ -4,34 +4,14 @@ # # @within function asset_manager:artifact/triggers/ -#> private use -# @private - #declare score_holder $Temp - -# イベント発火前に実行するやつ - function asset_manager:artifact/data/new/set_to_current # セッション開く function lib:array/session/open # データ設定 - data modify storage lib: ArrayA append from storage asset:context New.Items.mainhand.tag.TSB.UUID - data modify storage lib: ArrayA append from storage asset:context New.Items.offhand.tag.TSB.UUID - data modify storage lib: ArrayA append from storage asset:context New.Items.feet.tag.TSB.UUID - data modify storage lib: ArrayA append from storage asset:context New.Items.legs.tag.TSB.UUID - data modify storage lib: ArrayA append from storage asset:context New.Items.chest.tag.TSB.UUID - data modify storage lib: ArrayA append from storage asset:context New.Items.head.tag.TSB.UUID - data modify storage lib: ArrayA append from storage asset:context New.Items.hotbar[].tag.TSB.UUID - - data modify storage lib: ArrayB append from storage asset:context Old.Items.mainhand.tag.TSB.UUID - data modify storage lib: ArrayB append from storage asset:context Old.Items.offhand.tag.TSB.UUID - data modify storage lib: ArrayB append from storage asset:context Old.Items.feet.tag.TSB.UUID - data modify storage lib: ArrayB append from storage asset:context Old.Items.legs.tag.TSB.UUID - data modify storage lib: ArrayB append from storage asset:context Old.Items.chest.tag.TSB.UUID - data modify storage lib: ArrayB append from storage asset:context Old.Items.head.tag.TSB.UUID - data modify storage lib: ArrayB append from storage asset:context Old.Items.hotbar[].tag.TSB.UUID + data modify storage lib: ArrayA append from storage asset:artifact New.ItemData[].UUID + data modify storage lib: ArrayB append from storage asset:artifact Old.ItemData[].UUID # 比較 function lib:array/compare # 比較結果を保存する data modify storage asset:artifact EquipmentChanges set from storage lib: CompareResult # リセット function lib:array/session/close - scoreboard players reset $Temp Temporary \ No newline at end of file diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/equipments/mask_slot/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/equipments/mask_slot/.mcfunction deleted file mode 100644 index 3372445c40..0000000000 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/equipments/mask_slot/.mcfunction +++ /dev/null @@ -1,16 +0,0 @@ -#> asset_manager:artifact/triggers/equipments/mask_slot/ -# -# -# -# @within function asset_manager:artifact/triggers/*equip - -# 元配列 - function asset_manager:artifact/data/current/equips/init - data modify storage asset:artifact CopiedEquipChanges set from storage asset:artifact EquipmentChanges -# マスク処理 - function asset_manager:artifact/triggers/equipments/mask_slot/masking_foreach -# 適用する(結果が反転しているので注意) - function asset_manager:artifact/data/current/equips/replace -# リセット - data remove storage asset:artifact CopiedEquipChanges - data remove storage asset:artifact Equipments \ No newline at end of file diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/equipments/mask_slot/masking_foreach.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/equipments/mask_slot/masking_foreach.mcfunction deleted file mode 100644 index 965f531250..0000000000 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/equipments/mask_slot/masking_foreach.mcfunction +++ /dev/null @@ -1,14 +0,0 @@ -#> asset_manager:artifact/triggers/equipments/mask_slot/masking_foreach -# -# -# -# @within function asset_manager:artifact/triggers/equipments/mask_slot/* - -# 末尾要素に応じて追加するものを変える - execute if data storage asset:artifact CopiedEquipChanges[-1]._{_: true} run data modify storage asset:artifact NewEquips append value -1 - execute if data storage asset:artifact CopiedEquipChanges[-1]._{_:false} run data modify storage asset:artifact NewEquips append from storage asset:artifact Equipments[-1] -# 末尾削除 - data remove storage asset:artifact CopiedEquipChanges[-1] - data remove storage asset:artifact Equipments[-1] -# 要素がまだあるなら再帰 - execute if data storage asset:artifact CopiedEquipChanges[0] if data storage asset:artifact Equipments[0] run function asset_manager:artifact/triggers/equipments/mask_slot/masking_foreach \ No newline at end of file diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/equipments/update_cooldown/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/equipments/update_cooldown/.mcfunction index 73936b5de4..5ff7354602 100644 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/equipments/update_cooldown/.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/equipments/update_cooldown/.mcfunction @@ -8,29 +8,22 @@ function oh_my_dat:please # セッション開く function lib:array/session/open -# 配列として取得 - data modify storage asset:artifact ItemData append from storage asset:context New.Items.offhand.tag.TSB - data modify storage asset:artifact ItemData append from storage asset:context New.Items.feet.tag.TSB - data modify storage asset:artifact ItemData append from storage asset:context New.Items.legs.tag.TSB - data modify storage asset:artifact ItemData append from storage asset:context New.Items.chest.tag.TSB - data modify storage asset:artifact ItemData append from storage asset:context New.Items.head.tag.TSB - data modify storage asset:artifact ItemData append from storage asset:context New.Items.hotbar[0].tag.TSB - data modify storage asset:artifact ItemData append from storage asset:context New.Items.hotbar[1].tag.TSB - data modify storage asset:artifact ItemData append from storage asset:context New.Items.hotbar[2].tag.TSB - data modify storage asset:artifact ItemData append from storage asset:context New.Items.hotbar[3].tag.TSB - data modify storage asset:artifact ItemData append from storage asset:context New.Items.hotbar[4].tag.TSB - data modify storage asset:artifact ItemData append from storage asset:context New.Items.hotbar[5].tag.TSB - data modify storage asset:artifact ItemData append from storage asset:context New.Items.hotbar[6].tag.TSB - data modify storage asset:artifact ItemData append from storage asset:context New.Items.hotbar[7].tag.TSB - data modify storage asset:artifact ItemData append from storage asset:context New.Items.hotbar[8].tag.TSB -# それぞれについて更新 +# 配列をコピー + data modify storage asset:artifact New.CopiedItemData append from storage asset:artifact New.Items.offhand.tag.TSB + data modify storage asset:artifact New.CopiedItemData append from storage asset:artifact New.Items.feet.tag.TSB + data modify storage asset:artifact New.CopiedItemData append from storage asset:artifact New.Items.legs.tag.TSB + data modify storage asset:artifact New.CopiedItemData append from storage asset:artifact New.Items.chest.tag.TSB + data modify storage asset:artifact New.CopiedItemData append from storage asset:artifact New.Items.head.tag.TSB + data modify storage asset:artifact New.CopiedItemData append from storage asset:artifact New.Items.hotbar[].tag.TSB +# それぞれについて更新 // New.CopiedItemData (normal) -> LocalCooldown (inverted) function asset_manager:artifact/triggers/equipments/update_cooldown/foreach -# 反転 +# 反転する // LocalCooldown (inverted) -> Array (normal) + data modify storage lib: Array set from storage asset:artifact LocalCooldown function lib:array/reverse # 設定 - data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCoolDown set from storage lib: Array + data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCooldown set from storage lib: Array # リセット function lib:array/session/close - data remove storage asset:artifact ItemData + data remove storage asset:artifact New.CopiedItemData + data remove storage asset:artifact LocalCooldown scoreboard players reset $Tick Temporary - scoreboard players reset $LatestUsedTick Temporary \ No newline at end of file diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/equipments/update_cooldown/foreach.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/equipments/update_cooldown/foreach.mcfunction index 94654eaf46..414a9df66c 100644 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/equipments/update_cooldown/foreach.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/equipments/update_cooldown/foreach.mcfunction @@ -4,23 +4,21 @@ # # @within function asset_manager:artifact/triggers/equipments/update_cooldown/* -#> Private -# @private - #declare score_holder $Max - -# データ取得 +# データを取得 execute store result score $Tick Temporary run time query gametime - execute store result score $Max Temporary run data get storage asset:artifact ItemData[-1].LocalCooldown - execute store result score $LatestUsedTick Temporary run data get storage asset:artifact ItemData[-1].LatestUseTick + execute store result score $Max Temporary run data get storage asset:artifact New.CopiedItemData[-1].LocalCooldown + execute store result score $LatestUsedTick Temporary run data get storage asset:artifact New.CopiedItemData[-1].LatestUseTick # 使用してからの時間を取得 scoreboard players operation $Tick Temporary -= $LatestUsedTick Temporary scoreboard players operation $Max Temporary -= $Tick Temporary execute if score $Max Temporary matches ..-15 run scoreboard players set $Max Temporary -15 # 設定 - data modify storage lib: Array append value {} - execute store result storage lib: Array[-1].Value int 1 run scoreboard players get $Max Temporary - execute store result storage lib: Array[-1].Max int 1 run data get storage asset:artifact ItemData[-1].LocalCooldown -# 末尾削除 - data remove storage asset:artifact ItemData[-1] -# 要素があれば再帰 - execute if data storage asset:artifact ItemData[0] run function asset_manager:artifact/triggers/equipments/update_cooldown/foreach \ No newline at end of file + data modify storage asset:artifact LocalCooldown append value {} + execute store result storage asset:artifact LocalCooldown[-1].Value int 1 run scoreboard players get $Max Temporary + execute store result storage asset:artifact LocalCooldown[-1].Max int 1 run data get storage asset:artifact New.CopiedItemData[-1].LocalCooldown +# リセット + scoreboard players reset $Max Temporary + scoreboard players reset $LatestUsedTick Temporary + data remove storage asset:artifact New.CopiedItemData[-1] +# ループ + execute if data storage asset:artifact New.CopiedItemData[0] run function asset_manager:artifact/triggers/equipments/update_cooldown/foreach diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/equipments/update_cooldown_type.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/equipments/update_cooldown_type.mcfunction index 17a5ab980f..6cac09663e 100644 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/equipments/update_cooldown_type.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/equipments/update_cooldown_type.mcfunction @@ -9,30 +9,30 @@ # 配列に設定する data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].EquipmentCooldownTypes set value [] data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].EquipmentCooldownTypes append value "unknown" - data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].EquipmentCooldownTypes[-1] set from storage asset:context New.Items.offhand.tag.TSB.TypeCooldown.Type + data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].EquipmentCooldownTypes[-1] set from storage asset:artifact New.Items.offhand.tag.TSB.TypeCooldown.Type data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].EquipmentCooldownTypes append value "unknown" - data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].EquipmentCooldownTypes[-1] set from storage asset:context New.Items.feet.tag.TSB.TypeCooldown.Type + data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].EquipmentCooldownTypes[-1] set from storage asset:artifact New.Items.feet.tag.TSB.TypeCooldown.Type data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].EquipmentCooldownTypes append value "unknown" - data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].EquipmentCooldownTypes[-1] set from storage asset:context New.Items.legs.tag.TSB.TypeCooldown.Type + data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].EquipmentCooldownTypes[-1] set from storage asset:artifact New.Items.legs.tag.TSB.TypeCooldown.Type data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].EquipmentCooldownTypes append value "unknown" - data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].EquipmentCooldownTypes[-1] set from storage asset:context New.Items.chest.tag.TSB.TypeCooldown.Type + data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].EquipmentCooldownTypes[-1] set from storage asset:artifact New.Items.chest.tag.TSB.TypeCooldown.Type data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].EquipmentCooldownTypes append value "unknown" - data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].EquipmentCooldownTypes[-1] set from storage asset:context New.Items.head.tag.TSB.TypeCooldown.Type + data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].EquipmentCooldownTypes[-1] set from storage asset:artifact New.Items.head.tag.TSB.TypeCooldown.Type data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].EquipmentCooldownTypes append value "unknown" - data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].EquipmentCooldownTypes[-1] set from storage asset:context New.Items.hotbar[0].tag.TSB.TypeCooldown.Type + data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].EquipmentCooldownTypes[-1] set from storage asset:artifact New.Items.hotbar[0].tag.TSB.TypeCooldown.Type data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].EquipmentCooldownTypes append value "unknown" - data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].EquipmentCooldownTypes[-1] set from storage asset:context New.Items.hotbar[1].tag.TSB.TypeCooldown.Type + data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].EquipmentCooldownTypes[-1] set from storage asset:artifact New.Items.hotbar[1].tag.TSB.TypeCooldown.Type data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].EquipmentCooldownTypes append value "unknown" - data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].EquipmentCooldownTypes[-1] set from storage asset:context New.Items.hotbar[2].tag.TSB.TypeCooldown.Type + data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].EquipmentCooldownTypes[-1] set from storage asset:artifact New.Items.hotbar[2].tag.TSB.TypeCooldown.Type data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].EquipmentCooldownTypes append value "unknown" - data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].EquipmentCooldownTypes[-1] set from storage asset:context New.Items.hotbar[3].tag.TSB.TypeCooldown.Type + data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].EquipmentCooldownTypes[-1] set from storage asset:artifact New.Items.hotbar[3].tag.TSB.TypeCooldown.Type data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].EquipmentCooldownTypes append value "unknown" - data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].EquipmentCooldownTypes[-1] set from storage asset:context New.Items.hotbar[4].tag.TSB.TypeCooldown.Type + data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].EquipmentCooldownTypes[-1] set from storage asset:artifact New.Items.hotbar[4].tag.TSB.TypeCooldown.Type data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].EquipmentCooldownTypes append value "unknown" - data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].EquipmentCooldownTypes[-1] set from storage asset:context New.Items.hotbar[5].tag.TSB.TypeCooldown.Type + data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].EquipmentCooldownTypes[-1] set from storage asset:artifact New.Items.hotbar[5].tag.TSB.TypeCooldown.Type data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].EquipmentCooldownTypes append value "unknown" - data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].EquipmentCooldownTypes[-1] set from storage asset:context New.Items.hotbar[6].tag.TSB.TypeCooldown.Type + data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].EquipmentCooldownTypes[-1] set from storage asset:artifact New.Items.hotbar[6].tag.TSB.TypeCooldown.Type data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].EquipmentCooldownTypes append value "unknown" - data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].EquipmentCooldownTypes[-1] set from storage asset:context New.Items.hotbar[7].tag.TSB.TypeCooldown.Type + data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].EquipmentCooldownTypes[-1] set from storage asset:artifact New.Items.hotbar[7].tag.TSB.TypeCooldown.Type data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].EquipmentCooldownTypes append value "unknown" - data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].EquipmentCooldownTypes[-1] set from storage asset:context New.Items.hotbar[8].tag.TSB.TypeCooldown.Type + data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].EquipmentCooldownTypes[-1] set from storage asset:artifact New.Items.hotbar[8].tag.TSB.TypeCooldown.Type diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack/add_tag_each_victim.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/event/attack/add_tag_each_victim.mcfunction similarity index 61% rename from TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack/add_tag_each_victim.mcfunction rename to TheSkyBlessing/data/asset_manager/functions/artifact/triggers/event/attack/add_tag_each_victim.mcfunction index b82da55379..c4a4c014a5 100644 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack/add_tag_each_victim.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/event/attack/add_tag_each_victim.mcfunction @@ -1,10 +1,11 @@ -#> asset_manager:artifact/triggers/attack/add_tag_each_victim +#> asset_manager:artifact/triggers/event/attack/add_tag_each_victim # # # # @within function -# asset_manager:artifact/triggers/attack/foreach -# asset_manager:artifact/triggers/attack/add_tag_each_victim +# asset_manager:artifact/triggers/vanilla/ +# asset_manager:artifact/triggers/attack*/foreach +# asset_manager:artifact/triggers/event/attack/add_tag_each_victim #> Private # @private @@ -17,4 +18,4 @@ execute as @e[type=#lib:living,type=!player,distance=..150] if score @s MobUUID scoreboard players reset $AttackTarget Temporary -execute if data storage asset:artifact AttackTargets[0] run function asset_manager:artifact/triggers/attack/add_tag_each_victim +execute if data storage asset:artifact AttackTargets[0] run function asset_manager:artifact/triggers/event/attack/add_tag_each_victim diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/event/attack/get_max_amount.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/event/attack/get_max_amount.mcfunction new file mode 100644 index 0000000000..0db0a2f186 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/event/attack/get_max_amount.mcfunction @@ -0,0 +1,13 @@ +#> asset_manager:artifact/triggers/event/attack/get_max_amount +# +# +# +# @within function +# asset_manager:artifact/triggers/vanilla/ +# asset_manager:artifact/triggers/attack*/foreach + +function lib:array/session/open +data modify storage lib: Array set from storage asset:context Attack.Amounts +function lib:array/math/max +data modify storage asset:context Attack.Amount set from storage lib: MaxResult +function lib:array/session/close diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/event/check.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/event/check.m.mcfunction new file mode 100644 index 0000000000..b79e25a54f --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/event/check.m.mcfunction @@ -0,0 +1,10 @@ +#> asset_manager:artifact/triggers/event/check.m +# +# +# +# @input args +# id : int +# Trigger : string +# @within function asset_manager:artifact/triggers/*/* + +$function asset:artifact/alias/$(id)/$(Trigger)/check diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/event/damage/add_tag_attacker.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/event/damage/add_tag_attacker.mcfunction new file mode 100644 index 0000000000..3ac1142ea2 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/event/damage/add_tag_attacker.mcfunction @@ -0,0 +1,13 @@ +#> asset_manager:artifact/triggers/event/damage/add_tag_attacker +# +# +# +# @within function asset_manager:artifact/triggers/damage*/foreach + +#> Private +# @private + #declare score_holder $AttackedFrom + +execute if data storage asset:context Damage.From store result score $AttackedFrom Temporary run data get storage asset:context Damage.From +execute if data storage asset:context Damage.From as @e[type=#lib:living,type=!player,distance=..150] if score @s MobUUID = $AttackedFrom Temporary run tag @s add Attacker +scoreboard players reset $AttackedFrom Temporary diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/event/kill/add_tag_victim.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/event/kill/add_tag_victim.mcfunction new file mode 100644 index 0000000000..d7faaf6a2a --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/event/kill/add_tag_victim.mcfunction @@ -0,0 +1,13 @@ +#> asset_manager:artifact/triggers/event/kill/add_tag_victim +# +# +# +# @within function asset_manager:artifact/triggers/kill*/foreach + +#> Private +# @private + #declare score_holder $KillTarget + +execute if data storage asset:context Kill.To store result score $KillTarget Temporary run data get storage asset:context Kill.To +execute if data storage asset:context Kill.To as @e[type=#lib:living,type=!player,distance=..150] if score @s MobUUID = $KillTarget Temporary run tag @s add Victim +scoreboard players reset $KillTarget Temporary diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/event/reset.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/event/reset.m.mcfunction new file mode 100644 index 0000000000..0e3ec5b308 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/event/reset.m.mcfunction @@ -0,0 +1,10 @@ +#> asset_manager:artifact/triggers/event/reset.m +# +# +# +# @input args +# id : int +# Trigger : string +# @within function asset_manager:artifact/triggers/*/* + +$function asset:artifact/alias/$(id)/$(Trigger)/reset diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/event/sneak/get_sneak_time/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/event/sneak/get_sneak_time/.mcfunction new file mode 100644 index 0000000000..be76a7fabe --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/event/sneak/get_sneak_time/.mcfunction @@ -0,0 +1,13 @@ +#> asset_manager:artifact/triggers/event/sneak/get_sneak_time/ +# +# +# +# @within function asset_manager:artifact/triggers/*sneak*/ + +execute if data storage asset:artifact TargetItem{TargetSlot:"mainhand"} store result storage asset:context SneakTime int 1 run scoreboard players get @s Sneak.Mainhand +execute if data storage asset:artifact TargetItem{TargetSlot:"offhand"} store result storage asset:context SneakTime int 1 run scoreboard players get @s Sneak.Offhand +execute if data storage asset:artifact TargetItem{TargetSlot:"feet"} store result storage asset:context SneakTime int 1 run scoreboard players get @s Sneak.Feet +execute if data storage asset:artifact TargetItem{TargetSlot:"legs"} store result storage asset:context SneakTime int 1 run scoreboard players get @s Sneak.Legs +execute if data storage asset:artifact TargetItem{TargetSlot:"chest"} store result storage asset:context SneakTime int 1 run scoreboard players get @s Sneak.Chest +execute if data storage asset:artifact TargetItem{TargetSlot:"head"} store result storage asset:context SneakTime int 1 run scoreboard players get @s Sneak.Head +execute if data storage asset:artifact TargetItem{TargetSlot:"hotbar"} store result storage asset:context SneakTime int 1 run function asset_manager:artifact/triggers/event/sneak/get_sneak_time/hotbar.m with storage asset:artifact TargetItem diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/event/sneak/get_sneak_time/hotbar.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/event/sneak/get_sneak_time/hotbar.m.mcfunction new file mode 100644 index 0000000000..adcd1db601 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/event/sneak/get_sneak_time/hotbar.m.mcfunction @@ -0,0 +1,8 @@ +#> asset_manager:artifact/triggers/event/sneak/get_sneak_time/hotbar.m +# +# +# +# @input args InvSlot : int +# @within function asset_manager:artifact/triggers/event/sneak/get_sneak_time/ + +$return run scoreboard players get @s Sneak.Hotbar$(InvSlot) diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak/reset.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/event/sneak/reset.mcfunction similarity index 73% rename from TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak/reset.mcfunction rename to TheSkyBlessing/data/asset_manager/functions/artifact/triggers/event/sneak/reset.mcfunction index 6358fc72a5..51018e6a24 100644 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak/reset.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/event/sneak/reset.mcfunction @@ -1,8 +1,10 @@ -#> asset_manager:artifact/triggers/sneak/reset +#> asset_manager:artifact/triggers/event/sneak/reset # -# スニークトリガー用スコアボードをすべてリセットします # -# @within function core:tick/player/post +# +# @within function +# core:tick/player/post +# asset_manager:artifact/triggers/ scoreboard players reset @s Sneak.Mainhand scoreboard players reset @s Sneak.Offhand @@ -18,4 +20,4 @@ scoreboard players reset @s Sneak.Hotbar4 scoreboard players reset @s Sneak.Hotbar5 scoreboard players reset @s Sneak.Hotbar6 scoreboard players reset @s Sneak.Hotbar7 -scoreboard players reset @s Sneak.Hotbar8 \ No newline at end of file +scoreboard players reset @s Sneak.Hotbar8 diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/event/sneak/reset_when_change_item.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/event/sneak/reset_when_change_item.mcfunction new file mode 100644 index 0000000000..f7d5e34d10 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/event/sneak/reset_when_change_item.mcfunction @@ -0,0 +1,21 @@ +#> asset_manager:artifact/triggers/event/sneak/reset_when_change_item +# +# +# +# @within function asset_manager:artifact/triggers/ + +execute if data storage asset:artifact EquipmentChanges[00]._{_:false} run scoreboard players set @s Sneak.Mainhand 1 +execute if data storage asset:artifact EquipmentChanges[01]._{_:false} run scoreboard players set @s Sneak.Offhand 1 +execute if data storage asset:artifact EquipmentChanges[02]._{_:false} run scoreboard players set @s Sneak.Head 1 +execute if data storage asset:artifact EquipmentChanges[03]._{_:false} run scoreboard players set @s Sneak.Chest 1 +execute if data storage asset:artifact EquipmentChanges[04]._{_:false} run scoreboard players set @s Sneak.Legs 1 +execute if data storage asset:artifact EquipmentChanges[05]._{_:false} run scoreboard players set @s Sneak.Feet 1 +execute if data storage asset:artifact EquipmentChanges[06]._{_:false} run scoreboard players set @s Sneak.Hotbar0 1 +execute if data storage asset:artifact EquipmentChanges[07]._{_:false} run scoreboard players set @s Sneak.Hotbar1 1 +execute if data storage asset:artifact EquipmentChanges[08]._{_:false} run scoreboard players set @s Sneak.Hotbar2 1 +execute if data storage asset:artifact EquipmentChanges[09]._{_:false} run scoreboard players set @s Sneak.Hotbar3 1 +execute if data storage asset:artifact EquipmentChanges[10]._{_:false} run scoreboard players set @s Sneak.Hotbar4 1 +execute if data storage asset:artifact EquipmentChanges[11]._{_:false} run scoreboard players set @s Sneak.Hotbar5 1 +execute if data storage asset:artifact EquipmentChanges[12]._{_:false} run scoreboard players set @s Sneak.Hotbar6 1 +execute if data storage asset:artifact EquipmentChanges[13]._{_:false} run scoreboard players set @s Sneak.Hotbar7 1 +execute if data storage asset:artifact EquipmentChanges[14]._{_:false} run scoreboard players set @s Sneak.Hotbar8 1 diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/event/use.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/event/use.m.mcfunction new file mode 100644 index 0000000000..3a93d7c565 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/event/use.m.mcfunction @@ -0,0 +1,10 @@ +#> asset_manager:artifact/triggers/event/use.m +# +# +# +# @input args +# id : int +# Trigger : string +# @within function asset_manager:artifact/triggers/*/* + +$function asset:artifact/alias/$(id)/$(Trigger)/ diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/event/use_item/continue.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/event/use_item/continue.mcfunction new file mode 100644 index 0000000000..088a20b3d7 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/event/use_item/continue.mcfunction @@ -0,0 +1,8 @@ +#> asset_manager:artifact/triggers/event/use_item/continue +# +# +# +# @within function asset_manager:artifact/triggers/trigger/ + +# データを引き継ぐ + data modify storage asset:artifact New.Consumable set from storage asset:artifact Old.Consumable diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/event/use_item/init.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/event/use_item/init.mcfunction new file mode 100644 index 0000000000..e9b21485c4 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/event/use_item/init.mcfunction @@ -0,0 +1,11 @@ +#> asset_manager:artifact/triggers/event/use_item/init +# +# +# +# @within function asset_manager:artifact/triggers/trigger/foreach/ + +# タグを付けておく + tag @s add ConsumingItem + +# データを登録する + data modify storage asset:artifact New.Consumable set from storage asset:artifact TargetItem diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/event/use_item/reset.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/event/use_item/reset.mcfunction new file mode 100644 index 0000000000..70bdf77a61 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/event/use_item/reset.mcfunction @@ -0,0 +1,15 @@ +#> asset_manager:artifact/triggers/event/use_item/reset +# +# +# +# @within function +# asset_manager:artifact/triggers/ +# asset_manager:artifact/triggers/trigger/ +# asset_manager:artifact/triggers/use_item/ +# asset_manager:artifact/triggers/shot/ + +# タグをはがす + tag @s remove ConsumingItem + +# データを削除する + data modify storage asset:artifact New.Consumable set value {} diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/event/use_item/reset_when_change_item.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/event/use_item/reset_when_change_item.mcfunction new file mode 100644 index 0000000000..0efe54f20c --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/event/use_item/reset_when_change_item.mcfunction @@ -0,0 +1,10 @@ +#> asset_manager:artifact/triggers/event/use_item/reset_when_change_item +# +# +# +# @within function asset_manager:artifact/triggers/ + +execute if data storage asset:artifact EquipmentChanges[00]._{_:false} if data storage asset:artifact New.Consumable{TargetSlot:"mainhand"} run tag @s remove ConsumingItem +execute if data storage asset:artifact EquipmentChanges[00]._{_:false} if data storage asset:artifact New.Consumable{TargetSlot:"mainhand"} run data modify storage asset:artifact New.Consumable set value {} +execute if data storage asset:artifact EquipmentChanges[01]._{_:false} if data storage asset:artifact New.Consumable{TargetSlot: "offhand"} run tag @s remove ConsumingItem +execute if data storage asset:artifact EquipmentChanges[01]._{_:false} if data storage asset:artifact New.Consumable{TargetSlot: "offhand"} run data modify storage asset:artifact New.Consumable set value {} diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/heal/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/heal/.mcfunction index 6ee53c3327..bc802e1fd1 100644 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/heal/.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/heal/.mcfunction @@ -1,10 +1,17 @@ #> asset_manager:artifact/triggers/heal/ # -# 各神器処理へデータ受け渡し # -# @within function asset_manager:artifact/triggers/ +# +# @within function +# asset_manager:artifact/triggers/trigger/foreach/call.m +# asset_manager:artifact/triggers/trigger/foreach/sub/call.m -# イベント発火前に実行するやつ - function asset_manager:artifact/data/new/set_to_current -# 神器側に受け渡し +# フラグが存在しているか確認する + execute unless data storage asset:artifact ArtifactEvents.Heal[0] run return fail +# イベントを取得する + data modify storage asset:artifact Events append from storage asset:artifact ArtifactEvents.Heal[] +# それぞれについて処理する function asset_manager:artifact/triggers/heal/foreach + +# リセット + data remove storage asset:artifact Events diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/heal/add_tag_each_receiver.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/heal/add_tag_each_receiver.mcfunction index 08afe8b545..bc6b06c8bc 100644 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/heal/add_tag_each_receiver.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/heal/add_tag_each_receiver.mcfunction @@ -8,7 +8,7 @@ #> Private # @private -#declare score_holder $HealTarget + #declare score_holder $HealTarget execute store result score $HealTarget Temporary run data get storage asset:artifact HealTargets[-1] data remove storage asset:artifact HealTargets[-1] diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/heal/foreach.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/heal/foreach.mcfunction index 3cf761db93..34161111a0 100644 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/heal/foreach.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/heal/foreach.mcfunction @@ -4,23 +4,31 @@ # # @within function asset_manager:artifact/triggers/heal/* -# イベントデータ取得 - data modify storage asset:context Heal set from storage asset:artifact ArtifactEvents.Heal[-1] - data remove storage asset:artifact ArtifactEvents.Heal[-1] -# ヒール先を取得し、Receiver を付与する (null の可能性もある) - data modify storage asset:artifact HealTargets set from storage asset:context Heal.To - execute if data storage asset:artifact HealTargets[0] run function asset_manager:artifact/triggers/heal/add_tag_each_receiver -# 最大ヒール量の計算 - function lib:array/session/open - data modify storage lib: Array set from storage asset:context Heal.Amounts - function lib:array/math/max - data modify storage asset:context Heal.Amount set from storage lib: MaxResult - function lib:array/session/close -# 神器側に受け渡し - function #asset:artifact/heal +# イベントデータ処理 + # データを取得 + data modify storage asset:context Heal set from storage asset:artifact Events[-1] + # ヒール先を取得し、Receiver を付与する (null の可能性もある) + data modify storage asset:artifact HealTargets set from storage asset:context Heal.To + function asset_manager:artifact/triggers/heal/add_tag_each_receiver + # 最大ヒール量の計算 + function lib:array/session/open + data modify storage lib: Array set from storage asset:context Heal.Amounts + function lib:array/math/max + data modify storage asset:context Heal.Amount set from storage lib: MaxResult + function lib:array/session/close + +# 使用条件を満たしているか確認する + function asset_manager:artifact/check/ + function asset_manager:artifact/triggers/event/check.m with storage asset:context +# 条件を満たしていれば使用する + execute if entity @s[tag=CanUsed] run function asset_manager:artifact/triggers/heal/use + # リセット + function asset_manager:artifact/triggers/event/reset.m with storage asset:context + tag @a[tag=Receiver] remove Receiver + tag @s remove CanUsed data remove storage asset:context Heal data remove storage asset:artifact HealTargets - tag @a[tag=Receiver] remove Receiver -# イベントがまだあれば再帰する - execute if data storage asset:artifact ArtifactEvents.Heal[0] run function asset_manager:artifact/triggers/heal/foreach + data remove storage asset:artifact Events[-1] +# 要素が残っているなら再帰 + execute if data storage asset:artifact Events[0] run function asset_manager:artifact/triggers/heal/foreach diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/heal/heal.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/heal/heal.m.mcfunction new file mode 100644 index 0000000000..ae517cec0a --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/heal/heal.m.mcfunction @@ -0,0 +1,8 @@ +#> asset_manager:artifact/triggers/heal/heal.m +# +# +# +# @input args id : int +# @within function asset_manager:artifact/triggers/heal/use + +$function asset:artifact/alias/$(id)/heal/ diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/heal/use.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/heal/use.mcfunction new file mode 100644 index 0000000000..5e348f7756 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/heal/use.mcfunction @@ -0,0 +1,22 @@ +#> asset_manager:artifact/triggers/heal/use +# +# +# +# @within function asset_manager:artifact/triggers/heal/foreach + +# 共通処理 +# アイテムを破壊するとBrokeItemが追加される + function asset_manager:artifact/use/ + +# 処理対象の神器の重複数を取得する + execute store result storage asset:context Count int 1 if data storage asset:artifact TargetItemList[] +# 処理対象の神器の残り使用回数を取得する +# ただしhotbarでない場合に限る + execute unless data storage asset:artifact TargetItem{Slot:"hotbar"} run data modify storage asset:context RemainingCount set from storage asset:artifact TargetItem.RemainingCount + +# 神器を呼び出し + function asset_manager:artifact/triggers/event/use.m with storage asset:context + +# リセット + data remove storage asset:context BrokeItem + data remove storage asset:context Count diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak/.mcfunction new file mode 100644 index 0000000000..6af5014db4 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak/.mcfunction @@ -0,0 +1,21 @@ +#> asset_manager:artifact/triggers/keep_sneak/ +# +# 各神器処理へデータ受け渡し +# +# @within function asset_manager:artifact/triggers/ + +# フラグが存在しているか確認する + execute if entity @s[tag=!TriggerFlag.Sneak] run return fail +# スニークしている時間を取得する + function asset_manager:artifact/triggers/event/sneak/get_sneak_time/ + execute store result score $SneakTime Temporary run data get storage asset:context SneakTime +# 使用条件を満たしているか確認する + execute if score $SneakTime Temporary matches 1.. run function asset_manager:artifact/check/ + execute if score $SneakTime Temporary matches 1.. run function asset_manager:artifact/triggers/event/check.m with storage asset:context +# 条件を満たしていれば使用する + execute if entity @s[tag=CanUsed] run function asset_manager:artifact/triggers/keep_sneak/use + +# リセット + scoreboard players reset $SneakTime Temporary + tag @s remove CanUsed + data remove storage asset:context SneakTime diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak/keep_sneak.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak/keep_sneak.m.mcfunction new file mode 100644 index 0000000000..8500078ddd --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak/keep_sneak.m.mcfunction @@ -0,0 +1,8 @@ +#> asset_manager:artifact/triggers/keep_sneak/keep_sneak.m +# +# +# +# @input args id : int +# @within function asset_manager:artifact/triggers/keep_sneak/use + +$function asset:artifact/alias/$(id)/keep_sneak/ diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak/use.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak/use.mcfunction new file mode 100644 index 0000000000..637166b040 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak/use.mcfunction @@ -0,0 +1,22 @@ +#> asset_manager:artifact/triggers/keep_sneak/use +# +# +# +# @within function asset_manager:artifact/triggers/keep_sneak/ + +# 共通処理 +# アイテムを破壊するとBrokeItemが追加される + function asset_manager:artifact/use/ + +# 処理対象の神器の重複数を取得する + execute store result storage asset:context Count int 1 if data storage asset:artifact TargetItemList[] +# 処理対象の神器の残り使用回数を取得する +# ただしhotbarでない場合に限る + execute unless data storage asset:artifact TargetItem{Slot:"hotbar"} run data modify storage asset:context RemainingCount set from storage asset:artifact TargetItem.RemainingCount + +# 神器を呼び出し + function asset_manager:artifact/triggers/event/use.m with storage asset:context + +# リセット + data remove storage asset:context BrokeItem + data remove storage asset:context Count diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak_10s/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak_10s/.mcfunction new file mode 100644 index 0000000000..72eb6ab611 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak_10s/.mcfunction @@ -0,0 +1,21 @@ +#> asset_manager:artifact/triggers/keep_sneak_10s/ +# +# 各神器処理へデータ受け渡し +# +# @within function asset_manager:artifact/triggers/ + +# フラグが存在しているか確認する + execute if entity @s[tag=!TriggerFlag.Sneak] run return fail +# スニークしている時間を取得する + function asset_manager:artifact/triggers/event/sneak/get_sneak_time/ + execute store result score $SneakTime Temporary run data get storage asset:context SneakTime +# 使用条件を満たしているか確認する + execute if score $SneakTime Temporary matches 200.. run function asset_manager:artifact/check/ + execute if score $SneakTime Temporary matches 200.. run function asset_manager:artifact/triggers/event/check.m with storage asset:context +# 条件を満たしていれば使用する + execute if entity @s[tag=CanUsed] run function asset_manager:artifact/triggers/keep_sneak_10s/use + +# リセット + scoreboard players reset $SneakTime Temporary + tag @s remove CanUsed + data remove storage asset:context SneakTime diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak_10s/keep_sneak_10s.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak_10s/keep_sneak_10s.m.mcfunction new file mode 100644 index 0000000000..eeeec01837 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak_10s/keep_sneak_10s.m.mcfunction @@ -0,0 +1,8 @@ +#> asset_manager:artifact/triggers/keep_sneak_10s/keep_sneak_10s.m +# +# +# +# @input args id : int +# @within function asset_manager:artifact/triggers/keep_sneak_10s/use + +$function asset:artifact/alias/$(id)/keep_sneak_10s/ diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak_10s/use.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak_10s/use.mcfunction new file mode 100644 index 0000000000..4628c7ab49 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak_10s/use.mcfunction @@ -0,0 +1,22 @@ +#> asset_manager:artifact/triggers/keep_sneak_10s/use +# +# +# +# @within function asset_manager:artifact/triggers/keep_sneak_10s/ + +# 共通処理 +# アイテムを破壊するとBrokeItemが追加される + function asset_manager:artifact/use/ + +# 処理対象の神器の重複数を取得する + execute store result storage asset:context Count int 1 if data storage asset:artifact TargetItemList[] +# 処理対象の神器の残り使用回数を取得する +# ただしhotbarでない場合に限る + execute unless data storage asset:artifact TargetItem{Slot:"hotbar"} run data modify storage asset:context RemainingCount set from storage asset:artifact TargetItem.RemainingCount + +# 神器を呼び出し + function asset_manager:artifact/triggers/event/use.m with storage asset:context + +# リセット + data remove storage asset:context BrokeItem + data remove storage asset:context Count diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak_1s/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak_1s/.mcfunction new file mode 100644 index 0000000000..861020cd91 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak_1s/.mcfunction @@ -0,0 +1,21 @@ +#> asset_manager:artifact/triggers/keep_sneak_1s/ +# +# 各神器処理へデータ受け渡し +# +# @within function asset_manager:artifact/triggers/ + +# フラグが存在しているか確認する + execute if entity @s[tag=!TriggerFlag.Sneak] run return fail +# スニークしている時間を取得する + function asset_manager:artifact/triggers/event/sneak/get_sneak_time/ + execute store result score $SneakTime Temporary run data get storage asset:context SneakTime +# 使用条件を満たしているか確認する + execute if score $SneakTime Temporary matches 20.. run function asset_manager:artifact/check/ + execute if score $SneakTime Temporary matches 20.. run function asset_manager:artifact/triggers/event/check.m with storage asset:context +# 条件を満たしていれば使用する + execute if entity @s[tag=CanUsed] run function asset_manager:artifact/triggers/keep_sneak_1s/use + +# リセット + scoreboard players reset $SneakTime Temporary + tag @s remove CanUsed + data remove storage asset:context SneakTime diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak_1s/keep_sneak_1s.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak_1s/keep_sneak_1s.m.mcfunction new file mode 100644 index 0000000000..36f0a1e41e --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak_1s/keep_sneak_1s.m.mcfunction @@ -0,0 +1,8 @@ +#> asset_manager:artifact/triggers/keep_sneak_1s/keep_sneak_1s.m +# +# +# +# @input args id : int +# @within function asset_manager:artifact/triggers/keep_sneak_1s/use + +$function asset:artifact/alias/$(id)/keep_sneak_1s/ diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak_1s/use.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak_1s/use.mcfunction new file mode 100644 index 0000000000..142e49e305 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak_1s/use.mcfunction @@ -0,0 +1,22 @@ +#> asset_manager:artifact/triggers/keep_sneak_1s/use +# +# +# +# @within function asset_manager:artifact/triggers/keep_sneak_1s/ + +# 共通処理 +# アイテムを破壊するとBrokeItemが追加される + function asset_manager:artifact/use/ + +# 処理対象の神器の重複数を取得する + execute store result storage asset:context Count int 1 if data storage asset:artifact TargetItemList[] +# 処理対象の神器の残り使用回数を取得する +# ただしhotbarでない場合に限る + execute unless data storage asset:artifact TargetItem{Slot:"hotbar"} run data modify storage asset:context RemainingCount set from storage asset:artifact TargetItem.RemainingCount + +# 神器を呼び出し + function asset_manager:artifact/triggers/event/use.m with storage asset:context + +# リセット + data remove storage asset:context BrokeItem + data remove storage asset:context Count diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak_2s/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak_2s/.mcfunction new file mode 100644 index 0000000000..22dc636ee4 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak_2s/.mcfunction @@ -0,0 +1,21 @@ +#> asset_manager:artifact/triggers/keep_sneak_2s/ +# +# 各神器処理へデータ受け渡し +# +# @within function asset_manager:artifact/triggers/ + +# フラグが存在しているか確認する + execute if entity @s[tag=!TriggerFlag.Sneak] run return fail +# スニークしている時間を取得する + function asset_manager:artifact/triggers/event/sneak/get_sneak_time/ + execute store result score $SneakTime Temporary run data get storage asset:context SneakTime +# 使用条件を満たしているか確認する + execute if score $SneakTime Temporary matches 40.. run function asset_manager:artifact/check/ + execute if score $SneakTime Temporary matches 40.. run function asset_manager:artifact/triggers/event/check.m with storage asset:context +# 条件を満たしていれば使用する + execute if entity @s[tag=CanUsed] run function asset_manager:artifact/triggers/keep_sneak_2s/use + +# リセット + scoreboard players reset $SneakTime Temporary + tag @s remove CanUsed + data remove storage asset:context SneakTime diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak_2s/keep_sneak_2s.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak_2s/keep_sneak_2s.m.mcfunction new file mode 100644 index 0000000000..f553f3b320 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak_2s/keep_sneak_2s.m.mcfunction @@ -0,0 +1,8 @@ +#> asset_manager:artifact/triggers/keep_sneak_2s/keep_sneak_2s.m +# +# +# +# @input args id : int +# @within function asset_manager:artifact/triggers/keep_sneak_2s/use + +$function asset:artifact/alias/$(id)/keep_sneak_2s/ diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak_2s/use.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak_2s/use.mcfunction new file mode 100644 index 0000000000..7c793ea943 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak_2s/use.mcfunction @@ -0,0 +1,22 @@ +#> asset_manager:artifact/triggers/keep_sneak_2s/use +# +# +# +# @within function asset_manager:artifact/triggers/keep_sneak_2s/ + +# 共通処理 +# アイテムを破壊するとBrokeItemが追加される + function asset_manager:artifact/use/ + +# 処理対象の神器の重複数を取得する + execute store result storage asset:context Count int 1 if data storage asset:artifact TargetItemList[] +# 処理対象の神器の残り使用回数を取得する +# ただしhotbarでない場合に限る + execute unless data storage asset:artifact TargetItem{Slot:"hotbar"} run data modify storage asset:context RemainingCount set from storage asset:artifact TargetItem.RemainingCount + +# 神器を呼び出し + function asset_manager:artifact/triggers/event/use.m with storage asset:context + +# リセット + data remove storage asset:context BrokeItem + data remove storage asset:context Count diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak_3s/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak_3s/.mcfunction new file mode 100644 index 0000000000..3fd7ed1cff --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak_3s/.mcfunction @@ -0,0 +1,21 @@ +#> asset_manager:artifact/triggers/keep_sneak_3s/ +# +# 各神器処理へデータ受け渡し +# +# @within function asset_manager:artifact/triggers/ + +# フラグが存在しているか確認する + execute if entity @s[tag=!TriggerFlag.Sneak] run return fail +# スニークしている時間を取得する + function asset_manager:artifact/triggers/event/sneak/get_sneak_time/ + execute store result score $SneakTime Temporary run data get storage asset:context SneakTime +# 使用条件を満たしているか確認する + execute if score $SneakTime Temporary matches 60.. run function asset_manager:artifact/check/ + execute if score $SneakTime Temporary matches 60.. run function asset_manager:artifact/triggers/event/check.m with storage asset:context +# 条件を満たしていれば使用する + execute if entity @s[tag=CanUsed] run function asset_manager:artifact/triggers/keep_sneak_3s/use + +# リセット + scoreboard players reset $SneakTime Temporary + tag @s remove CanUsed + data remove storage asset:context SneakTime diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak_3s/keep_sneak_3s.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak_3s/keep_sneak_3s.m.mcfunction new file mode 100644 index 0000000000..73853a6ecb --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak_3s/keep_sneak_3s.m.mcfunction @@ -0,0 +1,8 @@ +#> asset_manager:artifact/triggers/keep_sneak_3s/keep_sneak_3s.m +# +# +# +# @input args id : int +# @within function asset_manager:artifact/triggers/keep_sneak_3s/use + +$function asset:artifact/alias/$(id)/keep_sneak_3s/ diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak_3s/use.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak_3s/use.mcfunction new file mode 100644 index 0000000000..35922d2a0d --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak_3s/use.mcfunction @@ -0,0 +1,22 @@ +#> asset_manager:artifact/triggers/keep_sneak_3s/use +# +# +# +# @within function asset_manager:artifact/triggers/keep_sneak_3s/ + +# 共通処理 +# アイテムを破壊するとBrokeItemが追加される + function asset_manager:artifact/use/ + +# 処理対象の神器の重複数を取得する + execute store result storage asset:context Count int 1 if data storage asset:artifact TargetItemList[] +# 処理対象の神器の残り使用回数を取得する +# ただしhotbarでない場合に限る + execute unless data storage asset:artifact TargetItem{Slot:"hotbar"} run data modify storage asset:context RemainingCount set from storage asset:artifact TargetItem.RemainingCount + +# 神器を呼び出し + function asset_manager:artifact/triggers/event/use.m with storage asset:context + +# リセット + data remove storage asset:context BrokeItem + data remove storage asset:context Count diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak_4s/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak_4s/.mcfunction new file mode 100644 index 0000000000..b992d1a674 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak_4s/.mcfunction @@ -0,0 +1,21 @@ +#> asset_manager:artifact/triggers/keep_sneak_4s/ +# +# 各神器処理へデータ受け渡し +# +# @within function asset_manager:artifact/triggers/ + +# フラグが存在しているか確認する + execute if entity @s[tag=!TriggerFlag.Sneak] run return fail +# スニークしている時間を取得する + function asset_manager:artifact/triggers/event/sneak/get_sneak_time/ + execute store result score $SneakTime Temporary run data get storage asset:context SneakTime +# 使用条件を満たしているか確認する + execute if score $SneakTime Temporary matches 80.. run function asset_manager:artifact/check/ + execute if score $SneakTime Temporary matches 80.. run function asset_manager:artifact/triggers/event/check.m with storage asset:context +# 条件を満たしていれば使用する + execute if entity @s[tag=CanUsed] run function asset_manager:artifact/triggers/keep_sneak_4s/use + +# リセット + scoreboard players reset $SneakTime Temporary + tag @s remove CanUsed + data remove storage asset:context SneakTime diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak_4s/keep_sneak_4s.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak_4s/keep_sneak_4s.m.mcfunction new file mode 100644 index 0000000000..4f9d6a0816 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak_4s/keep_sneak_4s.m.mcfunction @@ -0,0 +1,8 @@ +#> asset_manager:artifact/triggers/keep_sneak_4s/keep_sneak_4s.m +# +# +# +# @input args id : int +# @within function asset_manager:artifact/triggers/keep_sneak_4s/use + +$function asset:artifact/alias/$(id)/keep_sneak_4s/ diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak_4s/use.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak_4s/use.mcfunction new file mode 100644 index 0000000000..d8f0d1c25f --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak_4s/use.mcfunction @@ -0,0 +1,22 @@ +#> asset_manager:artifact/triggers/keep_sneak_4s/use +# +# +# +# @within function asset_manager:artifact/triggers/keep_sneak_4s/ + +# 共通処理 +# アイテムを破壊するとBrokeItemが追加される + function asset_manager:artifact/use/ + +# 処理対象の神器の重複数を取得する + execute store result storage asset:context Count int 1 if data storage asset:artifact TargetItemList[] +# 処理対象の神器の残り使用回数を取得する +# ただしhotbarでない場合に限る + execute unless data storage asset:artifact TargetItem{Slot:"hotbar"} run data modify storage asset:context RemainingCount set from storage asset:artifact TargetItem.RemainingCount + +# 神器を呼び出し + function asset_manager:artifact/triggers/event/use.m with storage asset:context + +# リセット + data remove storage asset:context BrokeItem + data remove storage asset:context Count diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak_5s/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak_5s/.mcfunction new file mode 100644 index 0000000000..f36f5d30e3 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak_5s/.mcfunction @@ -0,0 +1,21 @@ +#> asset_manager:artifact/triggers/keep_sneak_5s/ +# +# 各神器処理へデータ受け渡し +# +# @within function asset_manager:artifact/triggers/ + +# フラグが存在しているか確認する + execute if entity @s[tag=!TriggerFlag.Sneak] run return fail +# スニークしている時間を取得する + function asset_manager:artifact/triggers/event/sneak/get_sneak_time/ + execute store result score $SneakTime Temporary run data get storage asset:context SneakTime +# 使用条件を満たしているか確認する + execute if score $SneakTime Temporary matches 100.. run function asset_manager:artifact/check/ + execute if score $SneakTime Temporary matches 100.. run function asset_manager:artifact/triggers/event/check.m with storage asset:context +# 条件を満たしていれば使用する + execute if entity @s[tag=CanUsed] run function asset_manager:artifact/triggers/keep_sneak_5s/use + +# リセット + scoreboard players reset $SneakTime Temporary + tag @s remove CanUsed + data remove storage asset:context SneakTime diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak_5s/keep_sneak_5s.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak_5s/keep_sneak_5s.m.mcfunction new file mode 100644 index 0000000000..e20bda0786 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak_5s/keep_sneak_5s.m.mcfunction @@ -0,0 +1,8 @@ +#> asset_manager:artifact/triggers/keep_sneak_5s/keep_sneak_5s.m +# +# +# +# @input args id : int +# @within function asset_manager:artifact/triggers/keep_sneak_5s/use + +$function asset:artifact/alias/$(id)/keep_sneak_5s/ diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak_5s/use.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak_5s/use.mcfunction new file mode 100644 index 0000000000..8126e04c1f --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/keep_sneak_5s/use.mcfunction @@ -0,0 +1,22 @@ +#> asset_manager:artifact/triggers/keep_sneak_5s/use +# +# +# +# @within function asset_manager:artifact/triggers/keep_sneak_5s/ + +# 共通処理 +# アイテムを破壊するとBrokeItemが追加される + function asset_manager:artifact/use/ + +# 処理対象の神器の重複数を取得する + execute store result storage asset:context Count int 1 if data storage asset:artifact TargetItemList[] +# 処理対象の神器の残り使用回数を取得する +# ただしhotbarでない場合に限る + execute unless data storage asset:artifact TargetItem{Slot:"hotbar"} run data modify storage asset:context RemainingCount set from storage asset:artifact TargetItem.RemainingCount + +# 神器を呼び出し + function asset_manager:artifact/triggers/event/use.m with storage asset:context + +# リセット + data remove storage asset:context BrokeItem + data remove storage asset:context Count diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/kill/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/kill/.mcfunction new file mode 100644 index 0000000000..c6c024f753 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/kill/.mcfunction @@ -0,0 +1,17 @@ +#> asset_manager:artifact/triggers/kill/ +# +# +# +# @within function +# asset_manager:artifact/triggers/trigger/foreach/call.m +# asset_manager:artifact/triggers/trigger/foreach/sub/call.m + +# フラグが存在しているか確認する + execute unless data storage asset:artifact ArtifactEvents.Kill[0] run return fail +# イベントを取得する + data modify storage asset:artifact Events append from storage asset:artifact ArtifactEvents.Kill[] +# それぞれについて処理する + function asset_manager:artifact/triggers/kill/foreach + +# リセット + data remove storage asset:artifact Events diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/kill/foreach.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/kill/foreach.mcfunction new file mode 100644 index 0000000000..f93e65ca92 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/kill/foreach.mcfunction @@ -0,0 +1,26 @@ +#> asset_manager:artifact/triggers/kill/foreach +# +# +# +# @within function asset_manager:artifact/triggers/kill/* + +# イベントデータ処理 + # データを取得 + data modify storage asset:context Kill set from storage asset:artifact Events[-1] + # 攻撃先を取得し、Victim を付与する (null の可能性もある) + function asset_manager:artifact/triggers/event/kill/add_tag_victim + +# 使用条件を満たしているか確認する + function asset_manager:artifact/check/ + function asset_manager:artifact/triggers/event/check.m with storage asset:context +# 条件を満たしていれば使用する + execute if entity @s[tag=CanUsed] run function asset_manager:artifact/triggers/kill/use + +# リセット + function asset_manager:artifact/triggers/event/reset.m with storage asset:context + tag @e[type=#lib:living,type=!player,tag=Victim] remove Victim + tag @s remove CanUsed + data remove storage asset:context Kill + data remove storage asset:artifact Events[-1] +# 要素が残っているなら再帰 + execute if data storage asset:artifact Events[0] run function asset_manager:artifact/triggers/kill/foreach diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/kill/kill.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/kill/kill.m.mcfunction new file mode 100644 index 0000000000..9a14a7eadc --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/kill/kill.m.mcfunction @@ -0,0 +1,8 @@ +#> asset_manager:artifact/triggers/kill/kill.m +# +# +# +# @input args id : int +# @within function asset_manager:artifact/triggers/kill/use + +$function asset:artifact/alias/$(id)/kill/ diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/kill/use.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/kill/use.mcfunction new file mode 100644 index 0000000000..22019283d5 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/kill/use.mcfunction @@ -0,0 +1,22 @@ +#> asset_manager:artifact/triggers/kill/use +# +# +# +# @within function asset_manager:artifact/triggers/kill/foreach + +# 共通処理 +# アイテムを破壊するとBrokeItemが追加される + function asset_manager:artifact/use/ + +# 処理対象の神器の重複数を取得する + execute store result storage asset:context Count int 1 if data storage asset:artifact TargetItemList[] +# 処理対象の神器の残り使用回数を取得する +# ただしhotbarでない場合に限る + execute unless data storage asset:artifact TargetItem{Slot:"hotbar"} run data modify storage asset:context RemainingCount set from storage asset:artifact TargetItem.RemainingCount + +# 神器を呼び出し + function asset_manager:artifact/triggers/event/use.m with storage asset:context + +# リセット + data remove storage asset:context BrokeItem + data remove storage asset:context Count diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/kill_explosion/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/kill_explosion/.mcfunction new file mode 100644 index 0000000000..e442089834 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/kill_explosion/.mcfunction @@ -0,0 +1,17 @@ +#> asset_manager:artifact/triggers/kill_explosion/ +# +# +# +# @within function +# asset_manager:artifact/triggers/trigger/foreach/call.m +# asset_manager:artifact/triggers/trigger/foreach/sub/call.m + +# フラグが存在しているか確認する + execute unless data storage asset:artifact ArtifactEvents.Kill[{Type:"vanilla_explosion"}] run return fail +# イベントを取得する + data modify storage asset:artifact Events append from storage asset:artifact ArtifactEvents.Kill[{Type:"vanilla_explosion"}] +# それぞれについて処理する + function asset_manager:artifact/triggers/kill_explosion/foreach + +# リセット + data remove storage asset:artifact Events diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/kill_explosion/foreach.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/kill_explosion/foreach.mcfunction new file mode 100644 index 0000000000..17f2f55953 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/kill_explosion/foreach.mcfunction @@ -0,0 +1,26 @@ +#> asset_manager:artifact/triggers/kill_explosion/foreach +# +# +# +# @within function asset_manager:artifact/triggers/kill_explosion/* + +# イベントデータ処理 + # データを取得 + data modify storage asset:context Kill set from storage asset:artifact Events[-1] + # 攻撃先を取得し、Victim を付与する (null の可能性もある) + function asset_manager:artifact/triggers/event/kill/add_tag_victim + +# 使用条件を満たしているか確認する + function asset_manager:artifact/check/ + function asset_manager:artifact/triggers/event/check.m with storage asset:context +# 条件を満たしていれば使用する + execute if entity @s[tag=CanUsed] run function asset_manager:artifact/triggers/kill_explosion/use + +# リセット + function asset_manager:artifact/triggers/event/reset.m with storage asset:context + tag @e[type=#lib:living,type=!player,tag=Victim] remove Victim + tag @s remove CanUsed + data remove storage asset:context Kill + data remove storage asset:artifact Events[-1] +# 要素が残っているなら再帰 + execute if data storage asset:artifact Events[0] run function asset_manager:artifact/triggers/kill_explosion/foreach diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/kill_explosion/kill_explosion.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/kill_explosion/kill_explosion.m.mcfunction new file mode 100644 index 0000000000..cb8571a3ff --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/kill_explosion/kill_explosion.m.mcfunction @@ -0,0 +1,8 @@ +#> asset_manager:artifact/triggers/kill_explosion/kill_explosion.m +# +# +# +# @input args id : int +# @within function asset_manager:artifact/triggers/kill_explosion/use + +$function asset:artifact/alias/$(id)/kill_explosion/ diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/kill_explosion/use.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/kill_explosion/use.mcfunction new file mode 100644 index 0000000000..7459b9f205 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/kill_explosion/use.mcfunction @@ -0,0 +1,22 @@ +#> asset_manager:artifact/triggers/kill_explosion/use +# +# +# +# @within function asset_manager:artifact/triggers/kill_explosion/foreach + +# 共通処理 +# アイテムを破壊するとBrokeItemが追加される + function asset_manager:artifact/use/ + +# 処理対象の神器の重複数を取得する + execute store result storage asset:context Count int 1 if data storage asset:artifact TargetItemList[] +# 処理対象の神器の残り使用回数を取得する +# ただしhotbarでない場合に限る + execute unless data storage asset:artifact TargetItem{Slot:"hotbar"} run data modify storage asset:context RemainingCount set from storage asset:artifact TargetItem.RemainingCount + +# 神器を呼び出し + function asset_manager:artifact/triggers/event/use.m with storage asset:context + +# リセット + data remove storage asset:context BrokeItem + data remove storage asset:context Count diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/kill_melee/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/kill_melee/.mcfunction new file mode 100644 index 0000000000..7871e3c1ce --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/kill_melee/.mcfunction @@ -0,0 +1,17 @@ +#> asset_manager:artifact/triggers/kill_melee/ +# +# +# +# @within function +# asset_manager:artifact/triggers/trigger/foreach/call.m +# asset_manager:artifact/triggers/trigger/foreach/sub/call.m + +# フラグが存在しているか確認する + execute unless data storage asset:artifact ArtifactEvents.Kill[{Type:"vanilla_melee"}] run return fail +# イベントを取得する + data modify storage asset:artifact Events append from storage asset:artifact ArtifactEvents.Kill[{Type:"vanilla_melee"}] +# それぞれについて処理する + function asset_manager:artifact/triggers/kill_melee/foreach + +# リセット + data remove storage asset:artifact Events diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/kill_melee/foreach.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/kill_melee/foreach.mcfunction new file mode 100644 index 0000000000..70d98dc82e --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/kill_melee/foreach.mcfunction @@ -0,0 +1,26 @@ +#> asset_manager:artifact/triggers/kill_melee/foreach +# +# +# +# @within function asset_manager:artifact/triggers/kill_melee/* + +# イベントデータ処理 + # データを取得 + data modify storage asset:context Kill set from storage asset:artifact Events[-1] + # 攻撃先を取得し、Victim を付与する (null の可能性もある) + function asset_manager:artifact/triggers/event/kill/add_tag_victim + +# 使用条件を満たしているか確認する + function asset_manager:artifact/check/ + function asset_manager:artifact/triggers/event/check.m with storage asset:context +# 条件を満たしていれば使用する + execute if entity @s[tag=CanUsed] run function asset_manager:artifact/triggers/kill_melee/use + +# リセット + function asset_manager:artifact/triggers/event/reset.m with storage asset:context + tag @e[type=#lib:living,type=!player,tag=Victim] remove Victim + tag @s remove CanUsed + data remove storage asset:context Kill + data remove storage asset:artifact Events[-1] +# 要素が残っているなら再帰 + execute if data storage asset:artifact Events[0] run function asset_manager:artifact/triggers/kill_melee/foreach diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/kill_melee/kill_melee.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/kill_melee/kill_melee.m.mcfunction new file mode 100644 index 0000000000..b811b2bbc6 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/kill_melee/kill_melee.m.mcfunction @@ -0,0 +1,8 @@ +#> asset_manager:artifact/triggers/kill_melee/kill_melee.m +# +# +# +# @input args id : int +# @within function asset_manager:artifact/triggers/kill_melee/use + +$function asset:artifact/alias/$(id)/kill_melee/ diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/kill_melee/use.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/kill_melee/use.mcfunction new file mode 100644 index 0000000000..a1e9135f7c --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/kill_melee/use.mcfunction @@ -0,0 +1,22 @@ +#> asset_manager:artifact/triggers/kill_melee/use +# +# +# +# @within function asset_manager:artifact/triggers/kill_melee/foreach + +# 共通処理 +# アイテムを破壊するとBrokeItemが追加される + function asset_manager:artifact/use/ + +# 処理対象の神器の重複数を取得する + execute store result storage asset:context Count int 1 if data storage asset:artifact TargetItemList[] +# 処理対象の神器の残り使用回数を取得する +# ただしhotbarでない場合に限る + execute unless data storage asset:artifact TargetItem{Slot:"hotbar"} run data modify storage asset:context RemainingCount set from storage asset:artifact TargetItem.RemainingCount + +# 神器を呼び出し + function asset_manager:artifact/triggers/event/use.m with storage asset:context + +# リセット + data remove storage asset:context BrokeItem + data remove storage asset:context Count diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/kill_projectile/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/kill_projectile/.mcfunction new file mode 100644 index 0000000000..b082650b18 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/kill_projectile/.mcfunction @@ -0,0 +1,17 @@ +#> asset_manager:artifact/triggers/kill_projectile/ +# +# +# +# @within function +# asset_manager:artifact/triggers/trigger/foreach/call.m +# asset_manager:artifact/triggers/trigger/foreach/sub/call.m + +# フラグが存在しているか確認する + execute unless data storage asset:artifact ArtifactEvents.Kill[{Type:"vanilla_projectile"}] run return fail +# イベントを取得する + data modify storage asset:artifact Events append from storage asset:artifact ArtifactEvents.Kill[{Type:"vanilla_projectile"}] +# それぞれについて処理する + function asset_manager:artifact/triggers/kill_projectile/foreach + +# リセット + data remove storage asset:artifact Events diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/kill_projectile/foreach.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/kill_projectile/foreach.mcfunction new file mode 100644 index 0000000000..82a96b8037 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/kill_projectile/foreach.mcfunction @@ -0,0 +1,26 @@ +#> asset_manager:artifact/triggers/kill_projectile/foreach +# +# +# +# @within function asset_manager:artifact/triggers/kill_projectile/* + +# イベントデータ処理 + # データを取得 + data modify storage asset:context Kill set from storage asset:artifact Events[-1] + # 攻撃先を取得し、Victim を付与する (null の可能性もある) + function asset_manager:artifact/triggers/event/kill/add_tag_victim + +# 使用条件を満たしているか確認する + function asset_manager:artifact/check/ + function asset_manager:artifact/triggers/event/check.m with storage asset:context +# 条件を満たしていれば使用する + execute if entity @s[tag=CanUsed] run function asset_manager:artifact/triggers/kill_projectile/use + +# リセット + function asset_manager:artifact/triggers/event/reset.m with storage asset:context + tag @e[type=#lib:living,type=!player,tag=Victim] remove Victim + tag @s remove CanUsed + data remove storage asset:context Kill + data remove storage asset:artifact Events[-1] +# 要素が残っているなら再帰 + execute if data storage asset:artifact Events[0] run function asset_manager:artifact/triggers/kill_projectile/foreach diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/kill_projectile/kill_projectile.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/kill_projectile/kill_projectile.m.mcfunction new file mode 100644 index 0000000000..bd89d34b37 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/kill_projectile/kill_projectile.m.mcfunction @@ -0,0 +1,8 @@ +#> asset_manager:artifact/triggers/kill_projectile/kill_projectile.m +# +# +# +# @input args id : int +# @within function asset_manager:artifact/triggers/kill_projectile/use + +$function asset:artifact/alias/$(id)/kill_projectile/ diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/kill_projectile/use.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/kill_projectile/use.mcfunction new file mode 100644 index 0000000000..a41a36ec82 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/kill_projectile/use.mcfunction @@ -0,0 +1,22 @@ +#> asset_manager:artifact/triggers/kill_projectile/use +# +# +# +# @within function asset_manager:artifact/triggers/kill_projectile/foreach + +# 共通処理 +# アイテムを破壊するとBrokeItemが追加される + function asset_manager:artifact/use/ + +# 処理対象の神器の重複数を取得する + execute store result storage asset:context Count int 1 if data storage asset:artifact TargetItemList[] +# 処理対象の神器の残り使用回数を取得する +# ただしhotbarでない場合に限る + execute unless data storage asset:artifact TargetItem{Slot:"hotbar"} run data modify storage asset:context RemainingCount set from storage asset:artifact TargetItem.RemainingCount + +# 神器を呼び出し + function asset_manager:artifact/triggers/event/use.m with storage asset:context + +# リセット + data remove storage asset:context BrokeItem + data remove storage asset:context Count diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/killed/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/killed/.mcfunction deleted file mode 100644 index 7dbc2b3c5d..0000000000 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/killed/.mcfunction +++ /dev/null @@ -1,10 +0,0 @@ -#> asset_manager:artifact/triggers/killed/ -# -# 各神器処理へデータ受け渡し -# -# @within function asset_manager:artifact/triggers/ - -# イベント発火前に実行するやつ - function asset_manager:artifact/data/new/set_to_current -# 神器側に受け渡し - function asset_manager:artifact/triggers/killed/foreach diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/killed/foreach.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/killed/foreach.mcfunction deleted file mode 100644 index de626aee18..0000000000 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/killed/foreach.mcfunction +++ /dev/null @@ -1,27 +0,0 @@ -#> asset_manager:artifact/triggers/killed/foreach -# -# -# -# @within function asset_manager:artifact/triggers/killed/* - -#> Private -# @private -#declare score_holder $KillTarget - -# イベントデータ取得 - data modify storage asset:context Killed set from storage asset:artifact ArtifactEvents.Killed[-1] - data remove storage asset:artifact ArtifactEvents.Killed[-1] -# 攻撃先を取得し、Victim を付与する (null の可能性もある) - execute if data storage asset:context Killed.To store result score $KillTarget Temporary run data get storage asset:context Killed.To - execute if data storage asset:context Killed.To as @e[type=#lib:living,type=!player,distance=..150] if score @s MobUUID = $KillTarget Temporary run tag @s add Victim - scoreboard players reset $KillTarget Temporary -# 神器側に受け渡し - function #asset:artifact/killed - execute if data storage asset:context Killed{Type:"vanilla_melee" } run function #asset:artifact/killed/melee - execute if data storage asset:context Killed{Type:"vanilla_projectile"} run function #asset:artifact/killed/projectile - execute if data storage asset:context Killed{Type:"vanilla_explosion" } run function #asset:artifact/killed/explosion -# リセット - data remove storage asset:context Killed - tag @e[type=#lib:living,type=!player,tag=Victim] remove Victim -# イベントがまだあれば再帰する - execute if data storage asset:artifact ArtifactEvents.Killed[0] run function asset_manager:artifact/triggers/killed/foreach diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/receive_heal/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/receive_heal/.mcfunction index b877342e93..3ff69806a4 100644 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/receive_heal/.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/receive_heal/.mcfunction @@ -1,10 +1,17 @@ #> asset_manager:artifact/triggers/receive_heal/ # -# 各神器処理へデータ受け渡し # -# @within function asset_manager:artifact/triggers/ +# +# @within function +# asset_manager:artifact/triggers/trigger/foreach/call.m +# asset_manager:artifact/triggers/trigger/foreach/sub/call.m -# イベント発火前に実行するやつ - function asset_manager:artifact/data/new/set_to_current -# 神器側に受け渡し +# フラグが存在しているか確認する + execute unless data storage asset:artifact ArtifactEvents.ReceiveHeal[0] run return fail +# イベントを取得する + data modify storage asset:artifact Events append from storage asset:artifact ArtifactEvents.ReceiveHeal[] +# それぞれについて処理する function asset_manager:artifact/triggers/receive_heal/foreach + +# リセット + data remove storage asset:artifact Events diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/receive_heal/foreach.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/receive_heal/foreach.mcfunction index 2a7a1f6aaf..c526ef100f 100644 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/receive_heal/foreach.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/receive_heal/foreach.mcfunction @@ -6,19 +6,27 @@ #> Private # @private -#declare score_holder $HealedFrom + #declare score_holder $HealedFrom + +# イベントデータ処理 + # データを取得 + data modify storage asset:context ReceiveHeal set from storage asset:artifact Events[-1] + # ヒール元を取得し、Healer を付与する (null の可能性もある) + execute if data storage asset:context ReceiveHeal.From store result score $HealedFrom Temporary run data get storage asset:context ReceiveHeal.From + execute if data storage asset:context ReceiveHeal.From as @a if score @s UserID = $HealedFrom Temporary run tag @s add Healer + scoreboard players reset $HealedFrom Temporary + +# 使用条件を満たしているか確認する + function asset_manager:artifact/check/ + function asset_manager:artifact/triggers/event/check.m with storage asset:context +# 条件を満たしていれば使用する + execute if entity @s[tag=CanUsed] run function asset_manager:artifact/triggers/receive_heal/use -# イベントデータ取得 - data modify storage asset:context ReceiveHeal set from storage asset:artifact ArtifactEvents.ReceiveHeal[-1] - data remove storage asset:artifact ArtifactEvents.ReceiveHeal[-1] -# ヒール元を取得し、Healer を付与する (null の可能性もある) - execute if data storage asset:context ReceiveHeal.From store result score $HealedFrom Temporary run data get storage asset:context ReceiveHeal.From - execute if data storage asset:context ReceiveHeal.From as @a if score @s UserID = $HealedFrom Temporary run tag @s add Healer - scoreboard players reset $HealedFrom Temporary -# 神器側に受け渡し - function #asset:artifact/receive_heal # リセット - data remove storage asset:context ReceiveHeal + function asset_manager:artifact/triggers/event/reset.m with storage asset:context tag @a[tag=Healer] remove Healer -# イベントがまだあれば再帰する - execute if data storage asset:artifact ArtifactEvents.ReceiveHeal[0] run function asset_manager:artifact/triggers/receive_heal/foreach + tag @s remove CanUsed + data remove storage asset:context ReceiveHeal + data remove storage asset:artifact Events[-1] +# 要素が残っているなら再帰 + execute if data storage asset:artifact Events[0] run function asset_manager:artifact/triggers/receive_heal/foreach diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/receive_heal/receive_heal.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/receive_heal/receive_heal.m.mcfunction new file mode 100644 index 0000000000..c3d21e337a --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/receive_heal/receive_heal.m.mcfunction @@ -0,0 +1,8 @@ +#> asset_manager:artifact/triggers/receive_heal/receive_heal.m +# +# +# +# @input args id : int +# @within function asset_manager:artifact/triggers/receive_heal/use + +$function asset:artifact/alias/$(id)/receive_heal/ diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/receive_heal/use.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/receive_heal/use.mcfunction new file mode 100644 index 0000000000..0589a5fbe5 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/receive_heal/use.mcfunction @@ -0,0 +1,22 @@ +#> asset_manager:artifact/triggers/receive_heal/use +# +# +# +# @within function asset_manager:artifact/triggers/receive_heal/foreach + +# 共通処理 +# アイテムを破壊するとBrokeItemが追加される + function asset_manager:artifact/use/ + +# 処理対象の神器の重複数を取得する + execute store result storage asset:context Count int 1 if data storage asset:artifact TargetItemList[] +# 処理対象の神器の残り使用回数を取得する +# ただしhotbarでない場合に限る + execute unless data storage asset:artifact TargetItem{Slot:"hotbar"} run data modify storage asset:context RemainingCount set from storage asset:artifact TargetItem.RemainingCount + +# 神器を呼び出し + function asset_manager:artifact/triggers/event/use.m with storage asset:context + +# リセット + data remove storage asset:context BrokeItem + data remove storage asset:context Count diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/shot.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/shot.mcfunction deleted file mode 100644 index d7e475214f..0000000000 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/shot.mcfunction +++ /dev/null @@ -1,12 +0,0 @@ -#> asset_manager:artifact/triggers/shot -# -# 各神器処理へデータ受け渡し -# -# @within function asset_manager:artifact/triggers/ - -# イベント発火前に実行するやつ - execute if predicate asset_manager:is_use_mainhand/bow run data modify storage asset:artifact Argument.AutoSlot set value "mainhand" - execute unless predicate asset_manager:is_use_mainhand/bow run data modify storage asset:artifact Argument.AutoSlot set value "offhand" - function asset_manager:artifact/data/new/set_to_current -# 神器側に受け渡し - function #asset:artifact/shot diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/shot/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/shot/.mcfunction new file mode 100644 index 0000000000..597d46079d --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/shot/.mcfunction @@ -0,0 +1,28 @@ +#> asset_manager:artifact/triggers/shot/ +# +# +# +# @within function asset_manager:artifact/triggers/trigger/ + +# 前処理: データを他のトリガーと合わせる + data modify storage asset:artifact TargetItem set from storage asset:artifact Old.Consumable + data modify storage asset:artifact TargetItemList append from storage asset:artifact Old.Consumable + data modify storage asset:context id set from storage asset:artifact Old.Consumable.ID + +# フラグが存在しているか確認する + # execute if entity @e[type=#arrows,tag=ShotArrow,limit=1] run return fail + execute if data storage asset:context {Slot:"offhand"} if predicate asset_manager:is_use_mainhand/bow run return fail +# 使用条件を満たしているか確認する + function asset_manager:artifact/check/ + function asset_manager:artifact/triggers/event/check.m with storage asset:context +# 条件を満たしていれば使用する + execute if entity @s[tag=CanUsed] run function asset_manager:artifact/triggers/shot/use + +# リセット + tag @s remove CanUsed + +# 後処理: リセット + function asset_manager:artifact/triggers/event/use_item/reset + data remove storage asset:artifact TargetItem + data remove storage asset:artifact TargetItemList + data remove storage asset:context id diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/shot/shot.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/shot/shot.m.mcfunction new file mode 100644 index 0000000000..04871492dc --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/shot/shot.m.mcfunction @@ -0,0 +1,8 @@ +#> asset_manager:artifact/triggers/shot/shot.m +# +# +# +# @input args id : int +# @within function asset_manager:artifact/triggers/shot/use + +$function asset:artifact/alias/$(id)/shot/ diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/shot/use.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/shot/use.mcfunction new file mode 100644 index 0000000000..437186180c --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/shot/use.mcfunction @@ -0,0 +1,22 @@ +#> asset_manager:artifact/triggers/shot/use +# +# +# +# @within function asset_manager:artifact/triggers/shot/ + +# 共通処理 +# アイテムを破壊するとBrokeItemが追加される + function asset_manager:artifact/use/ + +# 処理対象の神器の重複数を取得する + execute store result storage asset:context Count int 1 if data storage asset:artifact TargetItemList[] +# 処理対象の神器の残り使用回数を取得する +# ただしhotbarでない場合に限る + execute unless data storage asset:artifact TargetItem{Slot:"hotbar"} run data modify storage asset:context RemainingCount set from storage asset:artifact TargetItem.RemainingCount + +# 神器を呼び出し + function asset_manager:artifact/triggers/event/use.m with storage asset:context + +# リセット + data remove storage asset:context BrokeItem + data remove storage asset:context Count diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak/.mcfunction index 341841f8db..331e325475 100644 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak/.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak/.mcfunction @@ -4,67 +4,18 @@ # # @within function asset_manager:artifact/triggers/ -# イベント発火前に実行するやつ - function asset_manager:artifact/data/new/set_to_current -# スロット毎のチェック - function asset_manager:artifact/triggers/sneak/reset_when_change_item -# asset:contextにスニーク時間を設定する - function asset_manager:artifact/triggers/sneak/set_context -# 神器側に受け渡し - # keepトリガー類 - function #asset:artifact/sneak/keep/ +# フラグが存在しているか確認する + execute if entity @s[tag=!TriggerFlag.Sneak] run return fail +# スニークしている時間を取得する + function asset_manager:artifact/triggers/event/sneak/get_sneak_time/ + execute store result score $SneakTime Temporary run data get storage asset:context SneakTime +# 使用条件を満たしているか確認する + execute if score $SneakTime Temporary matches 1 run function asset_manager:artifact/check/ + execute if score $SneakTime Temporary matches 1 run function asset_manager:artifact/triggers/event/check.m with storage asset:context +# 条件を満たしていれば使用する + execute if entity @s[tag=CanUsed] run function asset_manager:artifact/triggers/sneak/use - execute if score @s Sneak matches 20.. run scoreboard players set $SneakThreshold Temporary 20 - execute if score @s Sneak matches 20.. run function asset_manager:artifact/triggers/sneak/reset_threshold_less - execute if score @s Sneak matches 20.. run function #asset:artifact/sneak/keep/1s - - execute if score @s Sneak matches 40.. run scoreboard players set $SneakThreshold Temporary 40 - execute if score @s Sneak matches 40.. run function asset_manager:artifact/triggers/sneak/reset_threshold_less - execute if score @s Sneak matches 40.. run function #asset:artifact/sneak/keep/2s - - execute if score @s Sneak matches 60.. run scoreboard players set $SneakThreshold Temporary 60 - execute if score @s Sneak matches 60.. run function asset_manager:artifact/triggers/sneak/reset_threshold_less - execute if score @s Sneak matches 60.. run function #asset:artifact/sneak/keep/3s - - execute if score @s Sneak matches 80.. run scoreboard players set $SneakThreshold Temporary 80 - execute if score @s Sneak matches 80.. run function asset_manager:artifact/triggers/sneak/reset_threshold_less - execute if score @s Sneak matches 80.. run function #asset:artifact/sneak/keep/4s - - execute if score @s Sneak matches 100.. run scoreboard players set $SneakThreshold Temporary 100 - execute if score @s Sneak matches 100.. run function asset_manager:artifact/triggers/sneak/reset_threshold_less - execute if score @s Sneak matches 100.. run function #asset:artifact/sneak/keep/5s - - execute if score @s Sneak matches 200.. run scoreboard players set $SneakThreshold Temporary 200 - execute if score @s Sneak matches 200.. run function asset_manager:artifact/triggers/sneak/reset_threshold_less - execute if score @s Sneak matches 200.. run function #asset:artifact/sneak/keep/10s - - # 単発トリガー類 - scoreboard players set $SneakThreshold Temporary 1 - function asset_manager:artifact/triggers/sneak/reset_value_not-equal - function #asset:artifact/sneak/ - - execute if score @s Sneak matches 20.. run scoreboard players set $SneakThreshold Temporary 20 - execute if score @s Sneak matches 20.. run function asset_manager:artifact/triggers/sneak/reset_value_not-equal - execute if score @s Sneak matches 20.. run function #asset:artifact/sneak/1s - - execute if score @s Sneak matches 40.. run scoreboard players set $SneakThreshold Temporary 40 - execute if score @s Sneak matches 40.. run function asset_manager:artifact/triggers/sneak/reset_value_not-equal - execute if score @s Sneak matches 40.. run function #asset:artifact/sneak/2s - - execute if score @s Sneak matches 60.. run scoreboard players set $SneakThreshold Temporary 60 - execute if score @s Sneak matches 60.. run function asset_manager:artifact/triggers/sneak/reset_value_not-equal - execute if score @s Sneak matches 60.. run function #asset:artifact/sneak/3s - - execute if score @s Sneak matches 80.. run scoreboard players set $SneakThreshold Temporary 80 - execute if score @s Sneak matches 80.. run function asset_manager:artifact/triggers/sneak/reset_value_not-equal - execute if score @s Sneak matches 80.. run function #asset:artifact/sneak/4s - - execute if score @s Sneak matches 100.. run scoreboard players set $SneakThreshold Temporary 100 - execute if score @s Sneak matches 100.. run function asset_manager:artifact/triggers/sneak/reset_value_not-equal - execute if score @s Sneak matches 100.. run function #asset:artifact/sneak/5s - - execute if score @s Sneak matches 200.. run scoreboard players set $SneakThreshold Temporary 200 - execute if score @s Sneak matches 200.. run function asset_manager:artifact/triggers/sneak/reset_value_not-equal - execute if score @s Sneak matches 200.. run function #asset:artifact/sneak/10s # リセット + scoreboard players reset $SneakTime Temporary + tag @s remove CanUsed data remove storage asset:context SneakTime diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak/reset_threshold_less.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak/reset_threshold_less.mcfunction deleted file mode 100644 index 844edeca6f..0000000000 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak/reset_threshold_less.mcfunction +++ /dev/null @@ -1,24 +0,0 @@ -#> asset_manager:artifact/triggers/sneak/reset_threshold_less -# -# 各slotについて$SneakThreshold未満の値の場合、その値を-1に設定します -# -# @within function asset_manager:artifact/triggers/sneak/ - -# 処理 - execute unless score @s Sneak.Mainhand >= $SneakThreshold Temporary run data modify storage asset:context id.mainhand set value -1 - execute unless score @s Sneak.Offhand >= $SneakThreshold Temporary run data modify storage asset:context id.offhand set value -1 - execute unless score @s Sneak.Head >= $SneakThreshold Temporary run data modify storage asset:context id.head set value -1 - execute unless score @s Sneak.Chest >= $SneakThreshold Temporary run data modify storage asset:context id.chest set value -1 - execute unless score @s Sneak.Legs >= $SneakThreshold Temporary run data modify storage asset:context id.legs set value -1 - execute unless score @s Sneak.Feet >= $SneakThreshold Temporary run data modify storage asset:context id.feet set value -1 - execute unless score @s Sneak.Hotbar0 >= $SneakThreshold Temporary run data modify storage asset:context id.hotbar[0] set value -1 - execute unless score @s Sneak.Hotbar1 >= $SneakThreshold Temporary run data modify storage asset:context id.hotbar[1] set value -1 - execute unless score @s Sneak.Hotbar2 >= $SneakThreshold Temporary run data modify storage asset:context id.hotbar[2] set value -1 - execute unless score @s Sneak.Hotbar3 >= $SneakThreshold Temporary run data modify storage asset:context id.hotbar[3] set value -1 - execute unless score @s Sneak.Hotbar4 >= $SneakThreshold Temporary run data modify storage asset:context id.hotbar[4] set value -1 - execute unless score @s Sneak.Hotbar5 >= $SneakThreshold Temporary run data modify storage asset:context id.hotbar[5] set value -1 - execute unless score @s Sneak.Hotbar6 >= $SneakThreshold Temporary run data modify storage asset:context id.hotbar[6] set value -1 - execute unless score @s Sneak.Hotbar7 >= $SneakThreshold Temporary run data modify storage asset:context id.hotbar[7] set value -1 - execute unless score @s Sneak.Hotbar8 >= $SneakThreshold Temporary run data modify storage asset:context id.hotbar[8] set value -1 -# リセット - scoreboard players reset $SneakThreshold \ No newline at end of file diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak/reset_value_not-equal.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak/reset_value_not-equal.mcfunction deleted file mode 100644 index b3cb110980..0000000000 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak/reset_value_not-equal.mcfunction +++ /dev/null @@ -1,26 +0,0 @@ -#> asset_manager:artifact/triggers/sneak/reset_value_not-equal -# -# 各slotについて$SneakThresholdと同値ではない場合、その値を-1に設定します -# -# @within function asset_manager:artifact/triggers/sneak/ - -# 初期化 - data modify storage asset:context id set from storage asset:context New.id -# 処理 - execute unless score @s Sneak.Mainhand = $SneakThreshold Temporary run data modify storage asset:context id.mainhand set value -1 - execute unless score @s Sneak.Offhand = $SneakThreshold Temporary run data modify storage asset:context id.offhand set value -1 - execute unless score @s Sneak.Head = $SneakThreshold Temporary run data modify storage asset:context id.head set value -1 - execute unless score @s Sneak.Chest = $SneakThreshold Temporary run data modify storage asset:context id.chest set value -1 - execute unless score @s Sneak.Legs = $SneakThreshold Temporary run data modify storage asset:context id.legs set value -1 - execute unless score @s Sneak.Feet = $SneakThreshold Temporary run data modify storage asset:context id.feet set value -1 - execute unless score @s Sneak.Hotbar0 = $SneakThreshold Temporary run data modify storage asset:context id.hotbar[0] set value -1 - execute unless score @s Sneak.Hotbar1 = $SneakThreshold Temporary run data modify storage asset:context id.hotbar[1] set value -1 - execute unless score @s Sneak.Hotbar2 = $SneakThreshold Temporary run data modify storage asset:context id.hotbar[2] set value -1 - execute unless score @s Sneak.Hotbar3 = $SneakThreshold Temporary run data modify storage asset:context id.hotbar[3] set value -1 - execute unless score @s Sneak.Hotbar4 = $SneakThreshold Temporary run data modify storage asset:context id.hotbar[4] set value -1 - execute unless score @s Sneak.Hotbar5 = $SneakThreshold Temporary run data modify storage asset:context id.hotbar[5] set value -1 - execute unless score @s Sneak.Hotbar6 = $SneakThreshold Temporary run data modify storage asset:context id.hotbar[6] set value -1 - execute unless score @s Sneak.Hotbar7 = $SneakThreshold Temporary run data modify storage asset:context id.hotbar[7] set value -1 - execute unless score @s Sneak.Hotbar8 = $SneakThreshold Temporary run data modify storage asset:context id.hotbar[8] set value -1 -# リセット - scoreboard players reset $SneakThreshold \ No newline at end of file diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak/reset_when_change_item.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak/reset_when_change_item.mcfunction deleted file mode 100644 index e545d361ed..0000000000 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak/reset_when_change_item.mcfunction +++ /dev/null @@ -1,28 +0,0 @@ -#> asset_manager:artifact/triggers/sneak/reset_when_change_item -# -# 各slotについて前のアイテムデータと一致していない場合、その値のスコアボードを1に設定します -# -# Q. なんで0やnullじゃなくて1なの? A. このfunctionが実行されるのはSneak時なので0|null+1の値 = 1になる -# -# @within function asset_manager:artifact/triggers/sneak/ - -#> private use -# @private - #declare score_holder $Temp - -# 変更のあったスロットのデータをリセットする - execute if data storage asset:artifact EquipmentChanges[00]._{_:false} run scoreboard players set @s Sneak.Mainhand 1 - execute if data storage asset:artifact EquipmentChanges[01]._{_:false} run scoreboard players set @s Sneak.Offhand 1 - execute if data storage asset:artifact EquipmentChanges[02]._{_:false} run scoreboard players set @s Sneak.Head 1 - execute if data storage asset:artifact EquipmentChanges[03]._{_:false} run scoreboard players set @s Sneak.Chest 1 - execute if data storage asset:artifact EquipmentChanges[04]._{_:false} run scoreboard players set @s Sneak.Legs 1 - execute if data storage asset:artifact EquipmentChanges[05]._{_:false} run scoreboard players set @s Sneak.Feet 1 - execute if data storage asset:artifact EquipmentChanges[06]._{_:false} run scoreboard players set @s Sneak.Hotbar0 1 - execute if data storage asset:artifact EquipmentChanges[07]._{_:false} run scoreboard players set @s Sneak.Hotbar1 1 - execute if data storage asset:artifact EquipmentChanges[08]._{_:false} run scoreboard players set @s Sneak.Hotbar2 1 - execute if data storage asset:artifact EquipmentChanges[09]._{_:false} run scoreboard players set @s Sneak.Hotbar3 1 - execute if data storage asset:artifact EquipmentChanges[10]._{_:false} run scoreboard players set @s Sneak.Hotbar4 1 - execute if data storage asset:artifact EquipmentChanges[11]._{_:false} run scoreboard players set @s Sneak.Hotbar5 1 - execute if data storage asset:artifact EquipmentChanges[12]._{_:false} run scoreboard players set @s Sneak.Hotbar6 1 - execute if data storage asset:artifact EquipmentChanges[13]._{_:false} run scoreboard players set @s Sneak.Hotbar7 1 - execute if data storage asset:artifact EquipmentChanges[14]._{_:false} run scoreboard players set @s Sneak.Hotbar8 1 \ No newline at end of file diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak/set_context.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak/set_context.mcfunction deleted file mode 100644 index 95d07d15e1..0000000000 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak/set_context.mcfunction +++ /dev/null @@ -1,21 +0,0 @@ -#> asset_manager:artifact/triggers/sneak/set_context -# -# asset:contextにスニークした時間のデータを設定します -# -# @within function asset_manager:artifact/triggers/sneak/ - -execute store result storage asset:context SneakTime.mainhand int 1 run scoreboard players get @s Sneak.Mainhand -execute store result storage asset:context SneakTime.offhand int 1 run scoreboard players get @s Sneak.Offhand -execute store result storage asset:context SneakTime.head int 1 run scoreboard players get @s Sneak.Head -execute store result storage asset:context SneakTime.chest int 1 run scoreboard players get @s Sneak.Chest -execute store result storage asset:context SneakTime.legs int 1 run scoreboard players get @s Sneak.Legs -execute store result storage asset:context SneakTime.feet int 1 run scoreboard players get @s Sneak.Feet -execute store result storage asset:context SneakTime.hotbar[0] int 1 run scoreboard players get @s Sneak.Hotbar0 -execute store result storage asset:context SneakTime.hotbar[1] int 1 run scoreboard players get @s Sneak.Hotbar1 -execute store result storage asset:context SneakTime.hotbar[2] int 1 run scoreboard players get @s Sneak.Hotbar2 -execute store result storage asset:context SneakTime.hotbar[3] int 1 run scoreboard players get @s Sneak.Hotbar3 -execute store result storage asset:context SneakTime.hotbar[4] int 1 run scoreboard players get @s Sneak.Hotbar4 -execute store result storage asset:context SneakTime.hotbar[5] int 1 run scoreboard players get @s Sneak.Hotbar5 -execute store result storage asset:context SneakTime.hotbar[6] int 1 run scoreboard players get @s Sneak.Hotbar6 -execute store result storage asset:context SneakTime.hotbar[7] int 1 run scoreboard players get @s Sneak.Hotbar7 -execute store result storage asset:context SneakTime.hotbar[8] int 1 run scoreboard players get @s Sneak.Hotbar8 \ No newline at end of file diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak/sneak.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak/sneak.m.mcfunction new file mode 100644 index 0000000000..63c904694a --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak/sneak.m.mcfunction @@ -0,0 +1,8 @@ +#> asset_manager:artifact/triggers/sneak/sneak.m +# +# +# +# @input args id : int +# @within function asset_manager:artifact/triggers/sneak/use + +$function asset:artifact/alias/$(id)/sneak/ diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak/use.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak/use.mcfunction new file mode 100644 index 0000000000..9373ee862c --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak/use.mcfunction @@ -0,0 +1,22 @@ +#> asset_manager:artifact/triggers/sneak/use +# +# +# +# @within function asset_manager:artifact/triggers/sneak/ + +# 共通処理 +# アイテムを破壊するとBrokeItemが追加される + function asset_manager:artifact/use/ + +# 処理対象の神器の重複数を取得する + execute store result storage asset:context Count int 1 if data storage asset:artifact TargetItemList[] +# 処理対象の神器の残り使用回数を取得する +# ただしhotbarでない場合に限る + execute unless data storage asset:artifact TargetItem{Slot:"hotbar"} run data modify storage asset:context RemainingCount set from storage asset:artifact TargetItem.RemainingCount + +# 神器を呼び出し + function asset_manager:artifact/triggers/event/use.m with storage asset:context + +# リセット + data remove storage asset:context BrokeItem + data remove storage asset:context Count diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak_10s/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak_10s/.mcfunction new file mode 100644 index 0000000000..2256f36b37 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak_10s/.mcfunction @@ -0,0 +1,21 @@ +#> asset_manager:artifact/triggers/sneak_10s/ +# +# 各神器処理へデータ受け渡し +# +# @within function asset_manager:artifact/triggers/ + +# フラグが存在しているか確認する + execute if entity @s[tag=!TriggerFlag.Sneak] run return fail +# スニークしている時間を取得する + function asset_manager:artifact/triggers/event/sneak/get_sneak_time/ + execute store result score $SneakTime Temporary run data get storage asset:context SneakTime +# 使用条件を満たしているか確認する + execute if score $SneakTime Temporary matches 200 run function asset_manager:artifact/check/ + execute if score $SneakTime Temporary matches 200 run function asset_manager:artifact/triggers/event/check.m with storage asset:context +# 条件を満たしていれば使用する + execute if entity @s[tag=CanUsed] run function asset_manager:artifact/triggers/sneak_10s/use + +# リセット + scoreboard players reset $SneakTime Temporary + tag @s remove CanUsed + data remove storage asset:context SneakTime diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak_10s/sneak_10s.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak_10s/sneak_10s.m.mcfunction new file mode 100644 index 0000000000..255d92a16d --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak_10s/sneak_10s.m.mcfunction @@ -0,0 +1,8 @@ +#> asset_manager:artifact/triggers/sneak_10s/sneak_10s.m +# +# +# +# @input args id : int +# @within function asset_manager:artifact/triggers/sneak_10s/use + +$function asset:artifact/alias/$(id)/sneak_10s/ diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak_10s/use.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak_10s/use.mcfunction new file mode 100644 index 0000000000..9fe3c9d018 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak_10s/use.mcfunction @@ -0,0 +1,22 @@ +#> asset_manager:artifact/triggers/sneak_10s/use +# +# +# +# @within function asset_manager:artifact/triggers/sneak_10s/ + +# 共通処理 +# アイテムを破壊するとBrokeItemが追加される + function asset_manager:artifact/use/ + +# 処理対象の神器の重複数を取得する + execute store result storage asset:context Count int 1 if data storage asset:artifact TargetItemList[] +# 処理対象の神器の残り使用回数を取得する +# ただしhotbarでない場合に限る + execute unless data storage asset:artifact TargetItem{Slot:"hotbar"} run data modify storage asset:context RemainingCount set from storage asset:artifact TargetItem.RemainingCount + +# 神器を呼び出し + function asset_manager:artifact/triggers/event/use.m with storage asset:context + +# リセット + data remove storage asset:context BrokeItem + data remove storage asset:context Count diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak_1s/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak_1s/.mcfunction new file mode 100644 index 0000000000..a81f4894f7 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak_1s/.mcfunction @@ -0,0 +1,21 @@ +#> asset_manager:artifact/triggers/sneak_1s/ +# +# 各神器処理へデータ受け渡し +# +# @within function asset_manager:artifact/triggers/ + +# フラグが存在しているか確認する + execute if entity @s[tag=!TriggerFlag.Sneak] run return fail +# スニークしている時間を取得する + function asset_manager:artifact/triggers/event/sneak/get_sneak_time/ + execute store result score $SneakTime Temporary run data get storage asset:context SneakTime +# 使用条件を満たしているか確認する + execute if score $SneakTime Temporary matches 20 run function asset_manager:artifact/check/ + execute if score $SneakTime Temporary matches 20 run function asset_manager:artifact/triggers/event/check.m with storage asset:context +# 条件を満たしていれば使用する + execute if entity @s[tag=CanUsed] run function asset_manager:artifact/triggers/sneak_1s/use + +# リセット + scoreboard players reset $SneakTime Temporary + tag @s remove CanUsed + data remove storage asset:context SneakTime diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak_1s/sneak_1s.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak_1s/sneak_1s.m.mcfunction new file mode 100644 index 0000000000..04b7c2f3dd --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak_1s/sneak_1s.m.mcfunction @@ -0,0 +1,8 @@ +#> asset_manager:artifact/triggers/sneak_1s/sneak_1s.m +# +# +# +# @input args id : int +# @within function asset_manager:artifact/triggers/sneak_1s/use + +$function asset:artifact/alias/$(id)/sneak_1s/ diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak_1s/use.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak_1s/use.mcfunction new file mode 100644 index 0000000000..6fd9cb8d40 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak_1s/use.mcfunction @@ -0,0 +1,22 @@ +#> asset_manager:artifact/triggers/sneak_1s/use +# +# +# +# @within function asset_manager:artifact/triggers/sneak_1s/ + +# 共通処理 +# アイテムを破壊するとBrokeItemが追加される + function asset_manager:artifact/use/ + +# 処理対象の神器の重複数を取得する + execute store result storage asset:context Count int 1 if data storage asset:artifact TargetItemList[] +# 処理対象の神器の残り使用回数を取得する +# ただしhotbarでない場合に限る + execute unless data storage asset:artifact TargetItem{Slot:"hotbar"} run data modify storage asset:context RemainingCount set from storage asset:artifact TargetItem.RemainingCount + +# 神器を呼び出し + function asset_manager:artifact/triggers/event/use.m with storage asset:context + +# リセット + data remove storage asset:context BrokeItem + data remove storage asset:context Count diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak_2s/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak_2s/.mcfunction new file mode 100644 index 0000000000..6f88056b1f --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak_2s/.mcfunction @@ -0,0 +1,21 @@ +#> asset_manager:artifact/triggers/sneak_2s/ +# +# 各神器処理へデータ受け渡し +# +# @within function asset_manager:artifact/triggers/ + +# フラグが存在しているか確認する + execute if entity @s[tag=!TriggerFlag.Sneak] run return fail +# スニークしている時間を取得する + function asset_manager:artifact/triggers/event/sneak/get_sneak_time/ + execute store result score $SneakTime Temporary run data get storage asset:context SneakTime +# 使用条件を満たしているか確認する + execute if score $SneakTime Temporary matches 40 run function asset_manager:artifact/check/ + execute if score $SneakTime Temporary matches 40 run function asset_manager:artifact/triggers/event/check.m with storage asset:context +# 条件を満たしていれば使用する + execute if entity @s[tag=CanUsed] run function asset_manager:artifact/triggers/sneak_2s/use + +# リセット + scoreboard players reset $SneakTime Temporary + tag @s remove CanUsed + data remove storage asset:context SneakTime diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak_2s/sneak_2s.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak_2s/sneak_2s.m.mcfunction new file mode 100644 index 0000000000..5361a83e3f --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak_2s/sneak_2s.m.mcfunction @@ -0,0 +1,8 @@ +#> asset_manager:artifact/triggers/sneak_2s/sneak_2s.m +# +# +# +# @input args id : int +# @within function asset_manager:artifact/triggers/sneak_2s/use + +$function asset:artifact/alias/$(id)/sneak_2s/ diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak_2s/use.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak_2s/use.mcfunction new file mode 100644 index 0000000000..aca947776a --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak_2s/use.mcfunction @@ -0,0 +1,22 @@ +#> asset_manager:artifact/triggers/sneak_2s/use +# +# +# +# @within function asset_manager:artifact/triggers/sneak_2s/ + +# 共通処理 +# アイテムを破壊するとBrokeItemが追加される + function asset_manager:artifact/use/ + +# 処理対象の神器の重複数を取得する + execute store result storage asset:context Count int 1 if data storage asset:artifact TargetItemList[] +# 処理対象の神器の残り使用回数を取得する +# ただしhotbarでない場合に限る + execute unless data storage asset:artifact TargetItem{Slot:"hotbar"} run data modify storage asset:context RemainingCount set from storage asset:artifact TargetItem.RemainingCount + +# 神器を呼び出し + function asset_manager:artifact/triggers/event/use.m with storage asset:context + +# リセット + data remove storage asset:context BrokeItem + data remove storage asset:context Count diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak_3s/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak_3s/.mcfunction new file mode 100644 index 0000000000..401cf72cbc --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak_3s/.mcfunction @@ -0,0 +1,21 @@ +#> asset_manager:artifact/triggers/sneak_3s/ +# +# 各神器処理へデータ受け渡し +# +# @within function asset_manager:artifact/triggers/ + +# フラグが存在しているか確認する + execute if entity @s[tag=!TriggerFlag.Sneak] run return fail +# スニークしている時間を取得する + function asset_manager:artifact/triggers/event/sneak/get_sneak_time/ + execute store result score $SneakTime Temporary run data get storage asset:context SneakTime +# 使用条件を満たしているか確認する + execute if score $SneakTime Temporary matches 60 run function asset_manager:artifact/check/ + execute if score $SneakTime Temporary matches 60 run function asset_manager:artifact/triggers/event/check.m with storage asset:context +# 条件を満たしていれば使用する + execute if entity @s[tag=CanUsed] run function asset_manager:artifact/triggers/sneak_3s/use + +# リセット + scoreboard players reset $SneakTime Temporary + tag @s remove CanUsed + data remove storage asset:context SneakTime diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak_3s/sneak_3s.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak_3s/sneak_3s.m.mcfunction new file mode 100644 index 0000000000..040bee7c66 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak_3s/sneak_3s.m.mcfunction @@ -0,0 +1,8 @@ +#> asset_manager:artifact/triggers/sneak_3s/sneak_3s.m +# +# +# +# @input args id : int +# @within function asset_manager:artifact/triggers/sneak_3s/use + +$function asset:artifact/alias/$(id)/sneak_3s/ diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak_3s/use.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak_3s/use.mcfunction new file mode 100644 index 0000000000..71797b4c73 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak_3s/use.mcfunction @@ -0,0 +1,22 @@ +#> asset_manager:artifact/triggers/sneak_3s/use +# +# +# +# @within function asset_manager:artifact/triggers/sneak_3s/ + +# 共通処理 +# アイテムを破壊するとBrokeItemが追加される + function asset_manager:artifact/use/ + +# 処理対象の神器の重複数を取得する + execute store result storage asset:context Count int 1 if data storage asset:artifact TargetItemList[] +# 処理対象の神器の残り使用回数を取得する +# ただしhotbarでない場合に限る + execute unless data storage asset:artifact TargetItem{Slot:"hotbar"} run data modify storage asset:context RemainingCount set from storage asset:artifact TargetItem.RemainingCount + +# 神器を呼び出し + function asset_manager:artifact/triggers/event/use.m with storage asset:context + +# リセット + data remove storage asset:context BrokeItem + data remove storage asset:context Count diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak_4s/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak_4s/.mcfunction new file mode 100644 index 0000000000..1930c75851 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak_4s/.mcfunction @@ -0,0 +1,21 @@ +#> asset_manager:artifact/triggers/sneak_4s/ +# +# 各神器処理へデータ受け渡し +# +# @within function asset_manager:artifact/triggers/ + +# フラグが存在しているか確認する + execute if entity @s[tag=!TriggerFlag.Sneak] run return fail +# スニークしている時間を取得する + function asset_manager:artifact/triggers/event/sneak/get_sneak_time/ + execute store result score $SneakTime Temporary run data get storage asset:context SneakTime +# 使用条件を満たしているか確認する + execute if score $SneakTime Temporary matches 80 run function asset_manager:artifact/check/ + execute if score $SneakTime Temporary matches 80 run function asset_manager:artifact/triggers/event/check.m with storage asset:context +# 条件を満たしていれば使用する + execute if entity @s[tag=CanUsed] run function asset_manager:artifact/triggers/sneak_4s/use + +# リセット + scoreboard players reset $SneakTime Temporary + tag @s remove CanUsed + data remove storage asset:context SneakTime diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak_4s/sneak_4s.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak_4s/sneak_4s.m.mcfunction new file mode 100644 index 0000000000..19e02b197d --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak_4s/sneak_4s.m.mcfunction @@ -0,0 +1,8 @@ +#> asset_manager:artifact/triggers/sneak_4s/sneak_4s.m +# +# +# +# @input args id : int +# @within function asset_manager:artifact/triggers/sneak_4s/use + +$function asset:artifact/alias/$(id)/sneak_4s/ diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak_4s/use.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak_4s/use.mcfunction new file mode 100644 index 0000000000..278d995fd2 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak_4s/use.mcfunction @@ -0,0 +1,22 @@ +#> asset_manager:artifact/triggers/sneak_4s/use +# +# +# +# @within function asset_manager:artifact/triggers/sneak_4s/ + +# 共通処理 +# アイテムを破壊するとBrokeItemが追加される + function asset_manager:artifact/use/ + +# 処理対象の神器の重複数を取得する + execute store result storage asset:context Count int 1 if data storage asset:artifact TargetItemList[] +# 処理対象の神器の残り使用回数を取得する +# ただしhotbarでない場合に限る + execute unless data storage asset:artifact TargetItem{Slot:"hotbar"} run data modify storage asset:context RemainingCount set from storage asset:artifact TargetItem.RemainingCount + +# 神器を呼び出し + function asset_manager:artifact/triggers/event/use.m with storage asset:context + +# リセット + data remove storage asset:context BrokeItem + data remove storage asset:context Count diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak_5s/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak_5s/.mcfunction new file mode 100644 index 0000000000..b5490670c9 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak_5s/.mcfunction @@ -0,0 +1,21 @@ +#> asset_manager:artifact/triggers/sneak_5s/ +# +# 各神器処理へデータ受け渡し +# +# @within function asset_manager:artifact/triggers/ + +# フラグが存在しているか確認する + execute if entity @s[tag=!TriggerFlag.Sneak] run return fail +# スニークしている時間を取得する + function asset_manager:artifact/triggers/event/sneak/get_sneak_time/ + execute store result score $SneakTime Temporary run data get storage asset:context SneakTime +# 使用条件を満たしているか確認する + execute if score $SneakTime Temporary matches 100 run function asset_manager:artifact/check/ + execute if score $SneakTime Temporary matches 100 run function asset_manager:artifact/triggers/event/check.m with storage asset:context +# 条件を満たしていれば使用する + execute if entity @s[tag=CanUsed] run function asset_manager:artifact/triggers/sneak_5s/use + +# リセット + scoreboard players reset $SneakTime Temporary + tag @s remove CanUsed + data remove storage asset:context SneakTime diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak_5s/sneak_5s.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak_5s/sneak_5s.m.mcfunction new file mode 100644 index 0000000000..05169f0c58 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak_5s/sneak_5s.m.mcfunction @@ -0,0 +1,8 @@ +#> asset_manager:artifact/triggers/sneak_5s/sneak_5s.m +# +# +# +# @input args id : int +# @within function asset_manager:artifact/triggers/sneak_5s/use + +$function asset:artifact/alias/$(id)/sneak_5s/ diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak_5s/use.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak_5s/use.mcfunction new file mode 100644 index 0000000000..eeeb0c557b --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/sneak_5s/use.mcfunction @@ -0,0 +1,22 @@ +#> asset_manager:artifact/triggers/sneak_5s/use +# +# +# +# @within function asset_manager:artifact/triggers/sneak_5s/ + +# 共通処理 +# アイテムを破壊するとBrokeItemが追加される + function asset_manager:artifact/use/ + +# 処理対象の神器の重複数を取得する + execute store result storage asset:context Count int 1 if data storage asset:artifact TargetItemList[] +# 処理対象の神器の残り使用回数を取得する +# ただしhotbarでない場合に限る + execute unless data storage asset:artifact TargetItem{Slot:"hotbar"} run data modify storage asset:context RemainingCount set from storage asset:artifact TargetItem.RemainingCount + +# 神器を呼び出し + function asset_manager:artifact/triggers/event/use.m with storage asset:context + +# リセット + data remove storage asset:context BrokeItem + data remove storage asset:context Count diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/tick.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/tick.mcfunction deleted file mode 100644 index 01e736d1ef..0000000000 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/tick.mcfunction +++ /dev/null @@ -1,10 +0,0 @@ -#> asset_manager:artifact/triggers/tick -# -# 各神器処理へデータ受け渡し -# -# @within function asset_manager:artifact/triggers/ - -# イベント発火前に実行するやつ - function asset_manager:artifact/data/new/set_to_current -# 神器側に受け渡し - function #asset:artifact/tick diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/tick/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/tick/.mcfunction new file mode 100644 index 0000000000..c5a6671ea0 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/tick/.mcfunction @@ -0,0 +1,18 @@ +#> asset_manager:artifact/triggers/tick/ +# +# +# +# @within function +# asset_manager:artifact/triggers/trigger/foreach/call.m +# asset_manager:artifact/triggers/trigger/foreach/sub/call.m + +# フラグが存在しているか確認する + # return fail +# 使用条件を満たしているか確認する + function asset_manager:artifact/check/ + function asset_manager:artifact/triggers/event/check.m with storage asset:context +# 条件を満たしていれば使用する + execute if entity @s[tag=CanUsed] run function asset_manager:artifact/triggers/tick/use + +# リセット + tag @s remove CanUsed diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/tick/tick.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/tick/tick.m.mcfunction new file mode 100644 index 0000000000..a497421b6b --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/tick/tick.m.mcfunction @@ -0,0 +1,8 @@ +#> asset_manager:artifact/triggers/tick/tick.m +# +# +# +# @input args id : int +# @within function asset_manager:artifact/triggers/tick/use + +$function asset:artifact/alias/$(id)/tick/ diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/tick/use.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/tick/use.mcfunction new file mode 100644 index 0000000000..475ad5ea03 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/tick/use.mcfunction @@ -0,0 +1,22 @@ +#> asset_manager:artifact/triggers/tick/use +# +# +# +# @within function asset_manager:artifact/triggers/tick/ + +# 共通処理 +# アイテムを破壊するとBrokeItemが追加される + function asset_manager:artifact/use/ + +# 処理対象の神器の重複数を取得する + execute store result storage asset:context Count int 1 if data storage asset:artifact TargetItemList[] +# 処理対象の神器の残り使用回数を取得する +# ただしhotbarでない場合に限る + execute unless data storage asset:artifact TargetItem{Slot:"hotbar"} run data modify storage asset:context RemainingCount set from storage asset:artifact TargetItem.RemainingCount + +# 神器を呼び出し + function asset_manager:artifact/triggers/event/use.m with storage asset:context + +# リセット + data remove storage asset:context BrokeItem + data remove storage asset:context Count diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/trigger/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/trigger/.mcfunction new file mode 100644 index 0000000000..06ebbb4291 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/trigger/.mcfunction @@ -0,0 +1,47 @@ +#> asset_manager:artifact/triggers/trigger/ +# +# 各神器ごとにトリガー処理を行う +# +# @within function asset_manager:artifact/triggers/ + +# バニラ攻撃をしているならフラグを建てる + execute if data storage asset:artifact ArtifactEvents.Attack[{Type:"vanilla_melee"}] run tag @s add ShouldVanillaAttack +# アイテムを消費したなら処理する + execute if data storage asset:artifact Old.Consumable.ID if entity @s[tag=TriggerFlag.UseItem] run function asset_manager:artifact/triggers/use_item/ + execute if data storage asset:artifact Old.Consumable.ID if entity @e[type=#arrows,distance=..5,limit=1] store result score $GameTime Temporary run data get storage global Time + execute if data storage asset:artifact Old.Consumable.ID as @e[type=#arrows,distance=..5] if score @s ArrowOwnerUserID = @p[tag=this] UserID if score @s ArrowShotTick = $GameTime Temporary run tag @s add ShotArrow + execute if data storage asset:artifact Old.Consumable.ID if entity @e[type=#arrows,tag=ShotArrow,distance=..5,limit=1] run function asset_manager:artifact/triggers/shot/ + tag @e[type=#arrows,distance=..5] remove ShotArrow + scoreboard players reset $GameTime Temporary +# アイテムを消費中の処理 + execute if entity @s[tag= TriggerFlag.UsingItem] if data storage asset:artifact Old.Consumable.ID run function asset_manager:artifact/triggers/event/use_item/continue + execute if entity @s[tag=!TriggerFlag.UsingItem] if data storage asset:artifact Old.Consumable.ID run function asset_manager:artifact/triggers/event/use_item/reset + +# 神器のデータを取得する + function lib:array/session/open + data modify storage lib: Array set from storage asset:artifact New.ItemData + function lib:array/reverse + data modify storage asset:artifact New.CopiedItemData set from storage lib: Array + function lib:array/session/close +# データを扱いやすくする + function lib:array/session/open + scoreboard players set $SlotIndex Temporary -6 + function asset_manager:artifact/triggers/trigger/normalize/ + function lib:array/reverse + data modify storage asset:artifact NormalizedItemData set from storage lib: Array + function lib:array/session/close +# 各神器ごとに処理を実行する + execute if data storage asset:artifact NormalizedItemData[0] run function asset_manager:artifact/triggers/trigger/foreach/ + +# 神器でバニラ攻撃を処理していないならダメージを与える + execute if entity @s[tag=ShouldVanillaAttack] as @e[type=#lib:living,type=!player,tag=Victim,tag=!Death,distance=..8] at @s run function api:mob/apply_to_forward_target/with_idempotent.m {CB:"asset_manager:artifact/triggers/vanilla/",IsForwardedOnly:true} + +# リセット + scoreboard players reset $SlotIndex Temporary + data remove storage api: PersistentArgument.AdditionalMPHeal + data remove storage asset:artifact NormalizedItemData + tag @s remove ShouldVanillaAttack + tag @s remove TriggerFlag.ClickCarrot + tag @s remove TriggerFlag.UseItem + tag @s remove TriggerFlag.Sneak + tag @s remove TriggerFlag.UsingItem diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/trigger/foreach/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/trigger/foreach/.mcfunction new file mode 100644 index 0000000000..84361f2fc2 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/trigger/foreach/.mcfunction @@ -0,0 +1,31 @@ +#> asset_manager:artifact/triggers/trigger/foreach/ +# +# +# +# @within function +# asset_manager:artifact/triggers/trigger/ +# asset_manager:artifact/triggers/trigger/foreach/ + +# 要素を取得 + data modify storage asset:artifact TargetItem set from storage asset:artifact NormalizedItemData[-1]._[0] + data modify storage asset:artifact TargetItemList set from storage asset:artifact NormalizedItemData[-1]._ +# contextを設定 + data modify storage asset:context id set from storage asset:artifact TargetItem.ID + data modify storage asset:context Slot set from storage asset:artifact TargetItem.TargetSlot + +# アイテムを消費中であることを登録する + execute if data storage asset:artifact TargetItem{Trigger:"use_item"} unless data storage asset:artifact New.Consumable.ID if entity @s[tag=TriggerFlag.UsingItem,tag=!ConsumingItem] run function asset_manager:artifact/triggers/event/use_item/init + execute if data storage asset:artifact TargetItem{Trigger:"shot"} unless data storage asset:artifact New.Consumable.ID if entity @s[tag=TriggerFlag.UsingItem,tag=!ConsumingItem] run function asset_manager:artifact/triggers/event/use_item/init + +# トリガーを持っていれば処理を実行する +# equipとuse_itemは別処理をしているので弾く + data modify storage asset:context Trigger set from storage asset:artifact TargetItem.Trigger + execute unless data storage asset:artifact TargetItem{Trigger:"equip"} unless data storage asset:artifact TargetItem{Trigger:"use_item"} unless data storage asset:artifact TargetItem{Trigger:"shot"} run function asset_manager:artifact/triggers/trigger/foreach/call.m with storage asset:context + +# リセット + data remove storage asset:artifact TargetItem + data remove storage asset:artifact TargetItemList + data remove storage asset:artifact CopiedTriggers + data remove storage asset:artifact NormalizedItemData[-1] +# 要素が残っているなら再帰 + execute if data storage asset:artifact NormalizedItemData[0] run function asset_manager:artifact/triggers/trigger/foreach/ diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/trigger/foreach/call.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/trigger/foreach/call.m.mcfunction new file mode 100644 index 0000000000..4d3989f7f0 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/trigger/foreach/call.m.mcfunction @@ -0,0 +1,8 @@ +#> asset_manager:artifact/triggers/trigger/foreach/call.m +# +# +# +# @input args Trigger : Trigger +# @within function asset_manager:artifact/triggers/trigger/foreach/ + +$function asset_manager:artifact/triggers/$(Trigger)/ diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/trigger/normalize/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/trigger/normalize/.mcfunction new file mode 100644 index 0000000000..dd1377c3f9 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/trigger/normalize/.mcfunction @@ -0,0 +1,27 @@ +#> asset_manager:artifact/triggers/trigger/normalize/ +# +# 処理しやすい形に揃える +# +# @within function +# asset_manager:artifact/triggers/trigger/ +# asset_manager:artifact/triggers/trigger/normalize/ + +#> private +# @private + #declare score_holder $ID + +# 要素を拾う + data modify storage asset:artifact CopiedItem set from storage asset:artifact New.CopiedItemData[-1] +# アイテムの真のslotを拾う + function asset_manager:artifact/triggers/trigger/normalize/slot_to_index +# IDが正規の数値なら更新する + execute store result score $ID Temporary run data get storage asset:artifact CopiedItem.ID + execute if score $ID Temporary matches 1.. run function asset_manager:artifact/triggers/trigger/normalize/upsert.m with storage asset:artifact CopiedItem + +# リセット + scoreboard players add $SlotIndex Temporary 1 + scoreboard players reset $ID + data remove storage asset:artifact CopiedItem + data remove storage asset:artifact New.CopiedItemData[-1] +# 要素が残っているなら再帰 + execute if data storage asset:artifact New.CopiedItemData[0] run function asset_manager:artifact/triggers/trigger/normalize/ diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/trigger/normalize/slot_to_index.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/trigger/normalize/slot_to_index.mcfunction new file mode 100644 index 0000000000..92932205d4 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/trigger/normalize/slot_to_index.mcfunction @@ -0,0 +1,13 @@ +#> asset_manager:artifact/triggers/trigger/normalize/slot_to_index +# +# +# +# @within function asset_manager:artifact/triggers/trigger/normalize/ + +execute if data storage asset:artifact CopiedItem{TargetSlot:"mainhand"} store result storage asset:artifact CopiedItem.InvSlot byte 1 run data get storage api: SelectedItemSlot +execute if data storage asset:artifact CopiedItem{TargetSlot: "offhand"} run data modify storage asset:artifact CopiedItem.InvSlot set value -106b +execute if data storage asset:artifact CopiedItem{TargetSlot: "feet"} run data modify storage asset:artifact CopiedItem.InvSlot set value 100b +execute if data storage asset:artifact CopiedItem{TargetSlot: "legs"} run data modify storage asset:artifact CopiedItem.InvSlot set value 101b +execute if data storage asset:artifact CopiedItem{TargetSlot: "chest"} run data modify storage asset:artifact CopiedItem.InvSlot set value 102b +execute if data storage asset:artifact CopiedItem{TargetSlot: "head"} run data modify storage asset:artifact CopiedItem.InvSlot set value 103b +execute if data storage asset:artifact CopiedItem{TargetSlot: "hotbar"} store result storage asset:artifact CopiedItem.InvSlot byte 1 run scoreboard players get $SlotIndex Temporary diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/trigger/normalize/upsert.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/trigger/normalize/upsert.m.mcfunction new file mode 100644 index 0000000000..6aa25818b6 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/trigger/normalize/upsert.m.mcfunction @@ -0,0 +1,20 @@ +#> asset_manager:artifact/triggers/trigger/normalize/upsert.m +# +# +# +# @input args ID : int +# @within function asset_manager:artifact/triggers/trigger/normalize/ + +#> private +# @private + #declare score_holder $ExistsArtifact + +# 同じidのデータがあるならまとめる + $execute store result score $ExistsArtifact Temporary if data storage lib: Array[{id:$(ID)}] + $execute if score $ExistsArtifact Temporary matches 1.. run data modify storage lib: Array[{id:$(ID)}]._ append from storage asset:artifact CopiedItem +# ないなら生成して放り込む + $execute unless score $ExistsArtifact Temporary matches 1.. run data modify storage lib: Array append value {id:$(ID),_:[]} + execute unless score $ExistsArtifact Temporary matches 1.. run data modify storage lib: Array[-1]._ append from storage asset:artifact CopiedItem + +# リセット + scoreboard players reset $ExistsArtifact Temporary diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/use_item/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/use_item/.mcfunction index f7da44add7..93afba4aaf 100644 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/use_item/.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/use_item/.mcfunction @@ -1,29 +1,27 @@ #> asset_manager:artifact/triggers/use_item/ # -# 各神器処理へデータ受け渡し # -# @within function asset_manager:artifact/triggers/ +# +# @within function asset_manager:artifact/triggers/trigger/ + +# 前処理: データを他のトリガーと合わせる + data modify storage asset:artifact TargetItem set from storage asset:artifact Old.Consumable + data modify storage asset:artifact TargetItemList append from storage asset:artifact Old.Consumable + data modify storage asset:context id set from storage asset:artifact Old.Consumable.ID + +# フラグが存在しているか確認する + # execute if entity @s[tag=!TriggerFlag.UseItem] run return fail +# 使用条件を満たしているか確認する + function asset_manager:artifact/check/ + function asset_manager:artifact/triggers/event/check.m with storage asset:context +# 条件を満たしていれば使用する + execute if entity @s[tag=CanUsed] run function asset_manager:artifact/triggers/use_item/use -#> consumable判定用アマスタ -# @private -#declare tag CheckConsumableStand +# リセット + tag @s remove CanUsed -# 食べたスロットを特定する - # 下ごしらえ - data modify storage api: SelectedItemSlot set from storage asset:context Old.SelectedItemSlot - data modify storage api: Inventory set from storage asset:context New.Inventory - function api:inventory/refer_selected_item_slot/get_item - execute unless data storage api: Item.tag.TSB run data modify storage api: Item.tag.TSB set value {ID:-2,LocalCooldown:0,UUID:-2} - # アイテムの変更で特定を試みる - function asset_manager:artifact/triggers/use_item/check_change - # アイテムを入れ替えたかで特定を試みる - execute unless data storage asset:artifact Argument.AutoSlot run function asset_manager:artifact/triggers/use_item/check_hand_swap - # アイテムを投げたかで特定を試みる - execute unless data storage asset:artifact Argument.AutoSlot run function asset_manager:artifact/triggers/use_item/check_item_drop - # アイテムが食べれるかで特定を試みる - execute unless data storage asset:artifact Argument.AutoSlot run summon armor_stand 0.0 0.0 0.0 {Marker:1b,Invisible:1b,Tags:["CheckConsumableStand"]} - execute unless data storage asset:artifact Argument.AutoSlot as @e[type=armor_stand,tag=CheckConsumableStand,distance=..0.001,x=0.0,y=0.0,z=0.0,limit=1] run function asset_manager:artifact/triggers/use_item/check_has_consumable -# イベント発火前に実行するやつ - function asset_manager:artifact/data/old/set_to_current -# 神器側に受け渡し - function #asset:artifact/use_item +# 後処理: リセット + function asset_manager:artifact/triggers/event/use_item/reset + data remove storage asset:artifact TargetItem + data remove storage asset:artifact TargetItemList + data remove storage asset:context id diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/use_item/check_change.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/use_item/check_change.mcfunction deleted file mode 100644 index e63d2836f7..0000000000 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/use_item/check_change.mcfunction +++ /dev/null @@ -1,27 +0,0 @@ -#> asset_manager:artifact/triggers/use_item/check_change -# -# -# -# @within function asset_manager:artifact/triggers/use_item/ - -#> private -# @private - #declare score_holder $notEqualM - #declare score_holder $notEqualO - -# メインハンドの比較 - data modify storage asset:artifact Temp set from storage asset:context Old.Items.mainhand - execute store success score $notEqualM Temporary run data modify storage asset:artifact Temp set from storage api: Item -# オフハンドの比較 - data modify storage asset:artifact Temp set from storage asset:context Old.Items.offhand - execute store success score $notEqualO Temporary run data modify storage asset:artifact Temp set from storage asset:context New.Items.offhand - -# 比較結果から設定 - execute if score $notEqualM Temporary matches 0 if score $notEqualO Temporary matches 0 run data modify storage asset:artifact Argument.AutoSlot set value 'none' - execute if score $notEqualM Temporary matches 1 if score $notEqualO Temporary matches 0 run data modify storage asset:artifact Argument.AutoSlot set value 'mainhand' - execute if score $notEqualM Temporary matches 0 if score $notEqualO Temporary matches 1 run data modify storage asset:artifact Argument.AutoSlot set value 'offhand' - -# リセット - scoreboard players reset $notEqualM Temporary - scoreboard players reset $notEqualO Temporary - data remove storage asset:artifact Temp \ No newline at end of file diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/use_item/check_hand_swap.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/use_item/check_hand_swap.mcfunction deleted file mode 100644 index ca5322bd88..0000000000 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/use_item/check_hand_swap.mcfunction +++ /dev/null @@ -1,29 +0,0 @@ -#> asset_manager:artifact/triggers/use_item/check_hand_swap -# -# -# -# @within function asset_manager:artifact/triggers/use_item/ - -#> p -# @private - #declare score_holder $notMainToOff - #declare score_holder $notOffToMain - -# メインハンド -> オフハンド - data modify storage asset:artifact Temp set from storage asset:context New.Items.offhand - data remove storage asset:artifact Temp.Slot - execute store success score $notMainToOff Temporary run data modify storage asset:artifact Temp set from storage asset:context Old.Items.mainhand -# オフハンド -> メインハンド - data modify storage asset:artifact Temp set from storage asset:context Old.Items.offhand - data remove storage asset:artifact Temp.Slot - execute store success score $notOffToMain Temporary run data modify storage asset:artifact Temp set from storage api: Item - -# 比較結果から設定 - execute if score $notMainToOff Temporary matches 0 if score $notOffToMain Temporary matches 0 run data modify storage asset:artifact Argument.AutoSlot set value 'none' - execute if score $notMainToOff Temporary matches 0 if score $notOffToMain Temporary matches 1 run data modify storage asset:artifact Argument.AutoSlot set value 'offhand' - execute if score $notMainToOff Temporary matches 1 if score $notOffToMain Temporary matches 0 run data modify storage asset:artifact Argument.AutoSlot set value 'mainhand' - -# リセット - scoreboard players reset $notMainToOff Temporary - scoreboard players reset $notOffToMain Temporary - data remove storage asset:artifact Temp \ No newline at end of file diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/use_item/check_has_consumable.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/use_item/check_has_consumable.mcfunction deleted file mode 100644 index 27ed3af157..0000000000 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/use_item/check_has_consumable.mcfunction +++ /dev/null @@ -1,20 +0,0 @@ -#> asset_manager:artifact/triggers/use_item/check_has_consumable -# -# -# -# @within function asset_manager:artifact/triggers/use_item/ - -# 下ごしらえ - data modify storage asset:artifact Temp set value [{},{}] - data modify storage asset:artifact Temp[0] set from storage asset:context Old.Items.mainhand - data modify storage asset:artifact Temp[1] set from storage asset:context Old.Items.offhand - data modify entity @s HandItems set from storage asset:artifact Temp - -# チェック - execute unless predicate asset_manager:has_consumable_item/mainhand unless predicate asset_manager:has_consumable_item/offhand run data modify storage asset:artifact Argument.AutoSlot set value 'none' - execute if predicate asset_manager:has_consumable_item/mainhand unless predicate asset_manager:has_consumable_item/offhand run data modify storage asset:artifact Argument.AutoSlot set value 'mainhand' - execute unless predicate asset_manager:has_consumable_item/mainhand if predicate asset_manager:has_consumable_item/offhand run data modify storage asset:artifact Argument.AutoSlot set value 'offhand' - -# リセット - kill @s - data remove storage asset:artifact Temp \ No newline at end of file diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/use_item/check_item_drop.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/use_item/check_item_drop.mcfunction deleted file mode 100644 index d58f4a5fdb..0000000000 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/use_item/check_item_drop.mcfunction +++ /dev/null @@ -1,11 +0,0 @@ -#> asset_manager:artifact/triggers/use_item/check_item_drop -# -# -# -# @within function asset_manager:artifact/triggers/use_item/ - -# タグがついてるならオフハンドです(maybe) - execute if entity @s[tag=StrictCheckMainhand] run data modify storage asset:artifact Argument.AutoSlot set value 'offhand' - -# リセット - tag @s remove StrictCheckMainhand \ No newline at end of file diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/use_item/use.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/use_item/use.mcfunction new file mode 100644 index 0000000000..4d8468e19f --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/use_item/use.mcfunction @@ -0,0 +1,22 @@ +#> asset_manager:artifact/triggers/use_item/use +# +# +# +# @within function asset_manager:artifact/triggers/use_item/ + +# 共通処理 +# アイテムを破壊するとBrokeItemが追加される + function asset_manager:artifact/use/ + +# 処理対象の神器の重複数を取得する + execute store result storage asset:context Count int 1 if data storage asset:artifact TargetItemList[] +# 処理対象の神器の残り使用回数を取得する +# ただしhotbarでない場合に限る + execute unless data storage asset:artifact TargetItem{Slot:"hotbar"} run data modify storage asset:context RemainingCount set from storage asset:artifact TargetItem.RemainingCount + +# 神器を呼び出し + function asset_manager:artifact/triggers/event/use.m with storage asset:context + +# リセット + data remove storage asset:context BrokeItem + data remove storage asset:context Count diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/use_item/use_item.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/use_item/use_item.m.mcfunction new file mode 100644 index 0000000000..f05af3e2c2 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/use_item/use_item.m.mcfunction @@ -0,0 +1,8 @@ +#> asset_manager:artifact/triggers/use_item/use_item.m +# +# +# +# @input args id : int +# @within function asset_manager:artifact/triggers/use_item/use + +$function asset:artifact/alias/$(id)/use_item/ diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/using_item.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/using_item.mcfunction deleted file mode 100644 index ba17f2124a..0000000000 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/using_item.mcfunction +++ /dev/null @@ -1,10 +0,0 @@ -#> asset_manager:artifact/triggers/using_item -# -# 各神器処理へデータ受け渡し -# -# @within function asset_manager:artifact/triggers/ - -# イベント発火前に実行するやつ - function asset_manager:artifact/data/new/set_to_current -# 神器側に受け渡し - function #asset:artifact/using_item diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/using_item/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/using_item/.mcfunction new file mode 100644 index 0000000000..464012b5fd --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/using_item/.mcfunction @@ -0,0 +1,18 @@ +#> asset_manager:artifact/triggers/using_item/ +# +# +# +# @within function +# asset_manager:artifact/triggers/trigger/foreach/call.m +# asset_manager:artifact/triggers/trigger/foreach/sub/call.m + +# フラグが存在しているか確認する + execute if entity @s[tag=!TriggerFlag.UsingItem] run return fail +# 使用条件を満たしているか確認する + function asset_manager:artifact/check/ + function asset_manager:artifact/triggers/event/check.m with storage asset:context +# 条件を満たしていれば使用する + execute if entity @s[tag=CanUsed] run function asset_manager:artifact/triggers/using_item/use + +# リセット + tag @s remove CanUsed diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/using_item/use.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/using_item/use.mcfunction new file mode 100644 index 0000000000..9ac6898854 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/using_item/use.mcfunction @@ -0,0 +1,22 @@ +#> asset_manager:artifact/triggers/using_item/use +# +# +# +# @within function asset_manager:artifact/triggers/using_item/ + +# 共通処理 +# アイテムを破壊するとBrokeItemが追加される + function asset_manager:artifact/use/ + +# 処理対象の神器の重複数を取得する + execute store result storage asset:context Count int 1 if data storage asset:artifact TargetItemList[] +# 処理対象の神器の残り使用回数を取得する +# ただしhotbarでない場合に限る + execute unless data storage asset:artifact TargetItem{Slot:"hotbar"} run data modify storage asset:context RemainingCount set from storage asset:artifact TargetItem.RemainingCount + +# 神器を呼び出し + function asset_manager:artifact/triggers/event/use.m with storage asset:context + +# リセット + data remove storage asset:context BrokeItem + data remove storage asset:context Count diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/using_item/using_item.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/using_item/using_item.m.mcfunction new file mode 100644 index 0000000000..41df5cd7f3 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/using_item/using_item.m.mcfunction @@ -0,0 +1,8 @@ +#> asset_manager:artifact/triggers/using_item/using_item.m +# +# +# +# @input args id : int +# @within function asset_manager:artifact/triggers/using_item/use + +$function asset:artifact/alias/$(id)/using_item/ diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/vanilla/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/vanilla/.mcfunction new file mode 100644 index 0000000000..db5b722957 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/vanilla/.mcfunction @@ -0,0 +1,28 @@ +#> asset_manager:artifact/triggers/vanilla/ +# +# バニラ攻撃を処理する +# +# @within function asset_manager:artifact/triggers/trigger/ + +#> Private +# @within asset_manager:artifact/triggers/vanilla/* + #declare score_holder $Damage + +# イベントデータ処理 + # データを取得 + data modify storage asset:context Attack set from storage asset:artifact ArtifactEvents.Attack[{Type:"vanilla_melee"}] + # 攻撃先を取得し、Victim を付与する + data modify storage asset:artifact AttackTargets set from storage asset:context Attack.To + execute if data storage asset:artifact AttackTargets[0] run function asset_manager:artifact/triggers/event/attack/add_tag_each_victim + # 最大ダメージの計算 + function asset_manager:artifact/triggers/event/attack/get_max_amount + +# 各mobにダメージを与える + execute store result score $Damage Temporary run data get storage asset:context Attack.Amount -100 + execute as @e[type=#lib:living,type=!player,tag=Victim,distance=..8] at @s run function asset_manager:artifact/triggers/vanilla/damage + +# リセット + scoreboard players reset $Damage Temporary + data remove storage asset:context Attack + data remove storage asset:artifact AttackTargets + tag @e[type=#lib:living,type=!player,tag=Victim] remove Victim diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack/vanilla/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/vanilla/damage.mcfunction similarity index 57% rename from TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack/vanilla/.mcfunction rename to TheSkyBlessing/data/asset_manager/functions/artifact/triggers/vanilla/damage.mcfunction index 88c90c6c14..5e620c2337 100644 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack/vanilla/.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/vanilla/damage.mcfunction @@ -1,19 +1,13 @@ -#> asset_manager:artifact/triggers/attack/vanilla/ +#> asset_manager:artifact/triggers/vanilla/damage # -# 神器に関係しない通常攻撃のダメージ処理 +# バニラ攻撃を処理する # -# @within function asset_manager:artifact/triggers/attack/foreach - -#> Private -# @within asset_manager:artifact/triggers/attack/vanilla/* - #declare score_holder $Damage +# @within function asset_manager:artifact/triggers/vanilla/ #> Private # @private #declare score_holder $Fluctuation -# Damage - execute store result score $Damage Temporary run data get storage asset:context Attack.Amount -100 # 減算 execute unless predicate api:mob/has_forward_target run scoreboard players operation @s MobHealth += $Damage Temporary # ダメージ表示 @@ -22,8 +16,4 @@ # 代入 / kill execute if score @s MobHealth matches ..0 run tag @s add Death execute if score @s MobHealth matches ..0 if entity @s[tag=!AssetMob] run tag @s add Kill - execute if score @s MobHealth matches ..0 run function asset_manager:artifact/triggers/attack/vanilla/push_kill_and_death_event - -# リセット - scoreboard players reset $Damage Temporary - tag @s remove ShouldVanillaAttack + execute if score @s MobHealth matches ..0 run function asset_manager:artifact/triggers/vanilla/push_kill_and_death_event diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack/vanilla/push_kill_and_death_event.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/vanilla/push_kill_and_death_event.mcfunction similarity index 74% rename from TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack/vanilla/push_kill_and_death_event.mcfunction rename to TheSkyBlessing/data/asset_manager/functions/artifact/triggers/vanilla/push_kill_and_death_event.mcfunction index 57c455506d..d6307e7f0b 100644 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack/vanilla/push_kill_and_death_event.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/vanilla/push_kill_and_death_event.mcfunction @@ -1,12 +1,12 @@ -#> asset_manager:artifact/triggers/attack/vanilla/push_kill_and_death_event +#> asset_manager:artifact/triggers/vanilla/push_kill_and_death_event # # # -# @within function asset_manager:artifact/triggers/attack/vanilla/ +# @within function asset_manager:artifact/triggers/vanilla/damage # プレイヤーにイベントを追加する execute as @p[tag=this] run function oh_my_dat:please - data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].ArtifactEvents.Killed append from storage asset:context Attack + data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].ArtifactEvents.Kill append from storage asset:context Attack # Mob にもイベントを追加する function oh_my_dat:please data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].MobEvents.Death append from storage asset:context Attack diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/use/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/use/.mcfunction index 2144fc9d60..cb59916e5f 100644 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/use/.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/use/.mcfunction @@ -2,11 +2,13 @@ # # 神器使用時の処理を実行します # -# @within function asset:artifact/common/use/* +# @within function asset_manager:artifact/triggers/*/** + +#> private +# @private + #declare score_holder $OldItems + #declare score_holder $NewItems -# 神器データの取得 - function asset_manager:artifact/data/current/get -function metric:artifact.m with storage asset:artifact TargetItems[0].tag.TSB # 神器処理内で利用される DamageAPI 用に MP 回復量のデータを追加する # DamageAPI で MP 回復をするのは設計上非常に正しくなく、 # 本来は、DamageAPI 時に割り込みで呼び出された回数を記録し、 @@ -14,19 +16,25 @@ function metric:artifact.m with storage asset:artifact TargetItems[0].tag.TSB # が、実装時点では神器の処理終了時に追加で処理を実行することが出来ないため、 # すべてを諦めて DamageAPI で回復を行う。 data remove storage api: PersistentArgument.AdditionalMPHeal - execute store result storage api: PersistentArgument.AdditionalMPHeal double 0.01 run data get storage asset:artifact TargetItems[0].tag.TSB.MPHealWhenHit 100 + execute store result storage api: PersistentArgument.AdditionalMPHeal double 0.01 run data get storage asset:artifact TargetItem.MPHealWhenHit 100 # MP減少処理 - execute if data storage asset:artifact TargetItems[0].tag.TSB.MPCost run function asset_manager:artifact/use/remove_mp + execute if data storage asset:artifact TargetItem.MPCost run function asset_manager:artifact/use/remove_mp # 種別クールダウン保存 - execute if data storage asset:artifact TargetItems[0].tag.TSB.TypeCooldown run function asset_manager:artifact/use/update_type_cooldown.m with storage asset:artifact TargetItems[0].tag.TSB.TypeCooldown + execute if data storage asset:artifact TargetItem.TypeCooldown run function asset_manager:artifact/use/update_type_cooldown.m with storage asset:artifact TargetItem.TypeCooldown # 特殊クールダウン保存 - execute if data storage asset:artifact TargetItems[0].tag.TSB.SpecialCooldown store result score $ArtifactSpecialCooldown Global run data get storage asset:artifact TargetItems[0].tag.TSB.SpecialCooldown - execute if data storage asset:artifact TargetItems[0].tag.TSB.SpecialCooldown store result bossbar asset:special_cooldown max run scoreboard players get $ArtifactSpecialCooldown Global - execute if data storage asset:artifact TargetItems[0].tag.TSB.SpecialCooldown run bossbar set asset:special_cooldown players @a + execute if data storage asset:artifact TargetItem.SpecialCooldown store result score $ArtifactSpecialCooldown Global run data get storage asset:artifact TargetItem.SpecialCooldown + execute if data storage asset:artifact TargetItem.SpecialCooldown store result bossbar asset:special_cooldown max run scoreboard players get $ArtifactSpecialCooldown Global + execute if data storage asset:artifact TargetItem.SpecialCooldown run bossbar set asset:special_cooldown players @a +# 対象アイテムの要素数を拾う + execute store result score $OldItems Temporary if data storage asset:artifact TargetItemList[] # すべてのアイテムについて更新処理を行う - execute unless data storage asset:artifact {IgnoreItemUpdate:true} run function asset_manager:artifact/use/item/ + execute unless data storage asset:artifact TargetItem{IgnoreItemUpdate:true} run function asset_manager:artifact/use/item/ +# データを更新する +# 要素数が変わっていれば一つ以上破壊されている + execute store result score $NewItems Temporary if data storage asset:artifact RenewedItemList[] + data modify storage asset:artifact TargetItemList set from storage asset:artifact RenewedItemList + execute if score $OldItems Temporary > $NewItems Temporary run data modify storage asset:context BrokeItem set value true # リセット - data remove storage asset:artifact IgnoreItemUpdate - data remove storage asset:artifact TargetSlot - data remove storage asset:artifact TargetDefaultSlot - data remove storage asset:artifact TargetItems + scoreboard players reset $OldItems Temporary + scoreboard players reset $NewItems Temporary + data remove storage asset:artifact RenewedItemList diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/use/item/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/use/item/.mcfunction index f4b7397b71..7ea64ba1ce 100644 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/use/item/.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/use/item/.mcfunction @@ -6,12 +6,16 @@ # asset_manager:artifact/use/ # asset_manager:artifact/use/item/ +# 要素を拾う + data modify storage asset:artifact TargetItem set from storage asset:artifact TargetItemList[-1] # 最終使用tick保存 - execute store result storage asset:artifact TargetItems[-1].tag.TSB.LatestUseTick int 1 run time query gametime + execute store result storage asset:artifact TargetItem.LatestUseTick int 1 run time query gametime # アイテム更新 - execute unless data storage asset:artifact TargetItems[-1].tag.TSB.RemainingCount run function asset_manager:artifact/use/item/update - execute if data storage asset:artifact TargetItems[-1].tag.TSB.RemainingCount run function asset_manager:artifact/use/item/has_remain + execute unless data storage asset:artifact TargetItem.RemainingCount run function asset_manager:artifact/use/item/update + execute if data storage asset:artifact TargetItem.RemainingCount run function asset_manager:artifact/use/item/has_remain +# 破壊フラグがなければ新しい配列に追加 + execute unless data storage asset:artifact TargetItem{Broken:true} run data modify storage asset:artifact RenewedItemList append from storage asset:artifact TargetItem # 末尾削除 - data remove storage asset:artifact TargetItems[-1] + data remove storage asset:artifact TargetItemList[-1] # 要素が残ってるなら再帰 - execute if data storage asset:artifact TargetItems[0] run function asset_manager:artifact/use/item/ \ No newline at end of file + execute if data storage asset:artifact TargetItemList[0] run function asset_manager:artifact/use/item/ diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/use/item/break.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/use/item/break.mcfunction index a9085eb327..f932048805 100644 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/use/item/break.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/use/item/break.mcfunction @@ -5,16 +5,16 @@ # @within function asset_manager:artifact/use/item/has_remain # 音 - execute unless data storage asset:artifact TargetItems[-1].tag.TSB{DisableBreakSound:true} run playsound entity.item.break player @a + execute unless data storage asset:artifact TargetItem{DisableBreakSound:true} run playsound entity.item.break player @a # そのスロットを消し飛ばす - execute if data storage asset:artifact {TargetDefaultSlot:"mainhand"} run data modify storage api: SelectedItemSlot set from storage asset:context SelectedItemSlot - execute if data storage asset:artifact {TargetDefaultSlot:"mainhand"} run function api:inventory/refer_selected_item_slot/replace_air - execute if data storage asset:artifact {TargetDefaultSlot:"offhand"} run item replace entity @s weapon.offhand with air - execute if data storage asset:artifact {TargetDefaultSlot:"feet"} run item replace entity @s armor.feet with air - execute if data storage asset:artifact {TargetDefaultSlot:"legs"} run item replace entity @s armor.legs with air - execute if data storage asset:artifact {TargetDefaultSlot:"chest"} run item replace entity @s armor.chest with air - execute if data storage asset:artifact {TargetDefaultSlot:"head"} run item replace entity @s armor.head with air - execute if data storage asset:artifact {TargetDefaultSlot:"hotbar"} store result storage api: SelectedItemSlot int 1 run data get storage asset:artifact TargetItems[-1].Slot - execute if data storage asset:artifact {TargetDefaultSlot:"hotbar"} run function api:inventory/refer_selected_item_slot/replace_air -# current更新 - function asset_manager:artifact/data/current/update/ \ No newline at end of file + execute if data storage asset:artifact TargetItem{TargetSlot:"mainhand"} store result storage api: SelectedItemSlot int 1 run data get storage asset:artifact TargetItem.InvSlot + execute if data storage asset:artifact TargetItem{TargetSlot:"mainhand"} run function api:inventory/refer_selected_item_slot/replace_air + execute if data storage asset:artifact TargetItem{TargetSlot:"offhand"} run item replace entity @s weapon.offhand with air + execute if data storage asset:artifact TargetItem{TargetSlot:"feet"} run item replace entity @s armor.feet with air + execute if data storage asset:artifact TargetItem{TargetSlot:"legs"} run item replace entity @s armor.legs with air + execute if data storage asset:artifact TargetItem{TargetSlot:"chest"} run item replace entity @s armor.chest with air + execute if data storage asset:artifact TargetItem{TargetSlot:"head"} run item replace entity @s armor.head with air + execute if data storage asset:artifact TargetItem{TargetSlot:"hotbar"} store result storage api: SelectedItemSlot int 1 run data get storage asset:artifact TargetItem.InvSlot + execute if data storage asset:artifact TargetItem{TargetSlot:"hotbar"} run function api:inventory/refer_selected_item_slot/replace_air +# 破壊フラグを付与 + data modify storage asset:artifact TargetItem.Broken set value true diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/use/item/fetch_inventory.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/use/item/fetch_inventory.m.mcfunction new file mode 100644 index 0000000000..dbcd6f362d --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/use/item/fetch_inventory.m.mcfunction @@ -0,0 +1,13 @@ +#> asset_manager:artifact/use/item/fetch_inventory.m +# +# アイテムを更新します +# +# @input args InvSlot : int +# @within function asset_manager:artifact/use/item/update + +data modify block 10000 0 10000 Items set value [] +$execute unless data storage asset:artifact TargetItem{Trigger:"use_item"} run data modify storage asset:artifact Items append from storage asset:artifact New.Inventory[{Slot:$(InvSlot)b}] +$execute if data storage asset:artifact TargetItem{Trigger:"use_item"} run data modify storage asset:artifact Items append from storage asset:artifact Old.Inventory[{Slot:$(InvSlot)b}] +data remove storage asset:artifact Items[].Slot +data modify block 10000 0 10000 Items append from storage asset:artifact Items[0] +data remove storage asset:artifact Items diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/use/item/has_remain.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/use/item/has_remain.mcfunction index f70fdc2d4b..9e0170ba27 100644 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/use/item/has_remain.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/use/item/has_remain.mcfunction @@ -4,23 +4,23 @@ # # @input # as player -# storage asset:artifact TargetItems : [ItemData] +# storage asset:artifact TargetItem : ItemData # @within function # asset_manager:artifact/check/ # asset_manager:artifact/use/item/ #> ScoreHolder # @private -#declare score_holder $Remain + #declare score_holder $Remain # 対象スロットの残り使用回数取得 - execute store result score $Remain Temporary run data get storage asset:artifact TargetItems[-1].tag.TSB.RemainingCount + execute store result score $Remain Temporary run data get storage asset:artifact TargetItem.RemainingCount # 減算 scoreboard players remove $Remain Temporary 1 # アイテム更新処理 - execute store result storage asset:artifact TargetItems[-1].tag.TSB.RemainingCount int 1 run scoreboard players get $Remain Temporary + execute store result storage asset:artifact TargetItem.RemainingCount int 1 run scoreboard players get $Remain Temporary execute if score $Remain Temporary matches 1.. run function asset_manager:artifact/use/item/update # 破壊処理 execute if score $Remain Temporary matches ..0 run function asset_manager:artifact/use/item/break # リセット - scoreboard players reset $Remain Temporary \ No newline at end of file + scoreboard players reset $Remain Temporary diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/use/item/update.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/use/item/update.mcfunction index fd2458558c..12da7e5957 100644 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/use/item/update.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/use/item/update.mcfunction @@ -9,36 +9,37 @@ # CT設定 function asset_manager:artifact/use/item/update_local_cooldown/ # データ更新処理 - data modify storage asset:artifact Name set from storage asset:artifact TargetItems[-1].tag.TSB.rawName + data modify storage asset:artifact Name set from storage asset:artifact TargetItem.rawName # 残り回数が存在する場合 - execute if data storage asset:artifact TargetItems[-1].tag.TSB.RemainingCount run data modify storage asset:artifact Item set from storage asset:artifact TargetItems[-1] - execute if data storage asset:artifact TargetItems[-1].tag.TSB.RemainingCount run loot replace block 10000 0 10000 container.0 loot asset_manager:artifact/get_name/has_remain - execute if data storage asset:artifact TargetItems[-1].tag.TSB.RemainingCount run data remove storage asset:artifact Item + execute if data storage asset:artifact TargetItem.RemainingCount run data modify storage asset:artifact Item.tag.TSB set from storage asset:artifact TargetItem + execute if data storage asset:artifact TargetItem.RemainingCount run loot replace block 10000 0 10000 container.0 loot asset_manager:artifact/get_name/has_remain + execute if data storage asset:artifact TargetItem.RemainingCount run data remove storage asset:artifact Item # 残り回数が存在しない場合 - execute unless data storage asset:artifact TargetItems[-1].tag.TSB.RemainingCount run loot replace block 10000 0 10000 container.0 loot asset_manager:artifact/get_name/ - # スロットをコピーしておく - data modify storage asset:artifact CopiedSlot set from storage asset:artifact TargetItems[-1].Slot + execute unless data storage asset:artifact TargetItem.RemainingCount run loot replace block 10000 0 10000 container.0 loot asset_manager:artifact/get_name/ + # 名前をコピーしておく + data modify storage asset:artifact CopiedName set from block 10000 0 10000 Items[0].tag.display.Name + # Inventoryからshulker boxにコピペする + function asset_manager:artifact/use/item/fetch_inventory.m with storage asset:artifact TargetItem + # 不要なデータを削除する + data modify storage asset:artifact TargetSlot set from storage asset:artifact TargetItem.TargetSlot + data remove storage asset:artifact TargetItem.TargetSlot + data modify storage asset:artifact InvSlot set from storage asset:artifact TargetItem.InvSlot + data remove storage asset:artifact TargetItem.InvSlot # shulker boxでデータを完成させる - data remove storage asset:artifact TargetItems[-1].tag.display.Name - data remove storage asset:artifact TargetItems[-1].Slot - data modify block 10000 0 10000 Items[0] merge from storage asset:artifact TargetItems[-1] - # storage側データ更新 - data modify storage asset:artifact TargetItems[-1] set from block 10000 0 10000 Items[0] - execute if data storage asset:artifact CopiedSlot run data modify storage asset:artifact TargetItems[-1].Slot set from storage asset:artifact CopiedSlot - execute unless data storage asset:artifact CopiedSlot run data remove storage asset:artifact TargetItems[-1].Slot + data modify block 10000 0 10000 Items[0].tag.display.Name set from storage asset:artifact CopiedName + data modify block 10000 0 10000 Items[0].tag.TSB merge from storage asset:artifact TargetItem # 新しい神器で上書きする - execute if data storage asset:artifact {TargetDefaultSlot:"mainhand"} run data modify storage api: SelectedItemSlot set from storage asset:context SelectedItemSlot - execute if data storage asset:artifact {TargetDefaultSlot:"mainhand"} run function api:inventory/refer_selected_item_slot/replace_from_shulker_box - execute if data storage asset:artifact {TargetDefaultSlot:"offhand"} run loot replace entity @s weapon.offhand 1 mine 10000 0 10000 debug_stick - execute if data storage asset:artifact {TargetDefaultSlot:"feet"} run loot replace entity @s armor.feet 1 mine 10000 0 10000 debug_stick - execute if data storage asset:artifact {TargetDefaultSlot:"legs"} run loot replace entity @s armor.legs 1 mine 10000 0 10000 debug_stick - execute if data storage asset:artifact {TargetDefaultSlot:"chest"} run loot replace entity @s armor.chest 1 mine 10000 0 10000 debug_stick - execute if data storage asset:artifact {TargetDefaultSlot:"head"} run loot replace entity @s armor.head 1 mine 10000 0 10000 debug_stick - execute if data storage asset:artifact {TargetDefaultSlot:"hotbar"} store result storage api: SelectedItemSlot int 1 run data get storage asset:artifact TargetItems[-1].Slot - execute if data storage asset:artifact {TargetDefaultSlot:"hotbar"} run function api:inventory/refer_selected_item_slot/replace_from_shulker_box -# current更新 - data modify storage asset:artifact ProcessedItem set from storage asset:artifact TargetItems[-1] - function asset_manager:artifact/data/current/update/ + execute if data storage asset:artifact {TargetSlot:"mainhand"} store result storage api: SelectedItemSlot int 1 run data get storage asset:artifact InvSlot + execute if data storage asset:artifact {TargetSlot:"mainhand"} run function api:inventory/refer_selected_item_slot/replace_from_shulker_box + execute if data storage asset:artifact {TargetSlot:"offhand"} run loot replace entity @s weapon.offhand 1 mine 10000 0 10000 debug_stick + execute if data storage asset:artifact {TargetSlot:"feet"} run loot replace entity @s armor.feet 1 mine 10000 0 10000 debug_stick + execute if data storage asset:artifact {TargetSlot:"legs"} run loot replace entity @s armor.legs 1 mine 10000 0 10000 debug_stick + execute if data storage asset:artifact {TargetSlot:"chest"} run loot replace entity @s armor.chest 1 mine 10000 0 10000 debug_stick + execute if data storage asset:artifact {TargetSlot:"head"} run loot replace entity @s armor.head 1 mine 10000 0 10000 debug_stick + execute if data storage asset:artifact {TargetSlot:"hotbar"} store result storage api: SelectedItemSlot int 1 run data get storage asset:artifact InvSlot + execute if data storage asset:artifact {TargetSlot:"hotbar"} run function api:inventory/refer_selected_item_slot/replace_from_shulker_box # リセット data remove storage asset:artifact Name - data remove storage asset:artifact CopiedSlot \ No newline at end of file + data remove storage asset:artifact CopiedName + data remove storage asset:artifact TargetSlot + data remove storage asset:artifact InvSlot diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/use/item/update_local_cooldown/.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/use/item/update_local_cooldown/.mcfunction index c6c03935df..113329609d 100644 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/use/item/update_local_cooldown/.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/use/item/update_local_cooldown/.mcfunction @@ -5,6 +5,5 @@ # @within function asset_manager:artifact/use/item/update function oh_my_dat:please -execute if data storage asset:artifact {TargetDefaultSlot:"hotbar"} run data modify storage asset:artifact SpecificTargetSlot set from storage asset:artifact TargetItems[-1].Slot -execute if data storage asset:artifact {TargetDefaultSlot:"hotbar"} run function asset_manager:artifact/use/item/update_local_cooldown/hotbar -execute unless data storage asset:artifact {TargetDefaultSlot:"hotbar"} run function asset_manager:artifact/use/item/update_local_cooldown/non-hotbar \ No newline at end of file +execute if data storage asset:artifact TargetItem{TargetSlot:"hotbar"} run function asset_manager:artifact/use/item/update_local_cooldown/hotbar +execute unless data storage asset:artifact TargetItem{TargetSlot:"hotbar"} run function asset_manager:artifact/use/item/update_local_cooldown/non-hotbar diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/use/item/update_local_cooldown/hotbar.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/use/item/update_local_cooldown/hotbar.mcfunction index 1afee42b59..caf4b5436e 100644 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/use/item/update_local_cooldown/hotbar.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/use/item/update_local_cooldown/hotbar.mcfunction @@ -7,14 +7,12 @@ # asset_manager:artifact/use/item/update_local_cooldown/non-hotbar # 設定 - execute if data storage asset:artifact {SpecificTargetSlot:0b} store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCoolDown[05].Value int 1 store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCoolDown[05].Max int 1 run data get storage asset:artifact TargetItems[-1].tag.TSB.LocalCooldown - execute if data storage asset:artifact {SpecificTargetSlot:1b} store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCoolDown[06].Value int 1 store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCoolDown[06].Max int 1 run data get storage asset:artifact TargetItems[-1].tag.TSB.LocalCooldown - execute if data storage asset:artifact {SpecificTargetSlot:2b} store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCoolDown[07].Value int 1 store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCoolDown[07].Max int 1 run data get storage asset:artifact TargetItems[-1].tag.TSB.LocalCooldown - execute if data storage asset:artifact {SpecificTargetSlot:3b} store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCoolDown[08].Value int 1 store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCoolDown[08].Max int 1 run data get storage asset:artifact TargetItems[-1].tag.TSB.LocalCooldown - execute if data storage asset:artifact {SpecificTargetSlot:4b} store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCoolDown[09].Value int 1 store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCoolDown[09].Max int 1 run data get storage asset:artifact TargetItems[-1].tag.TSB.LocalCooldown - execute if data storage asset:artifact {SpecificTargetSlot:5b} store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCoolDown[10].Value int 1 store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCoolDown[10].Max int 1 run data get storage asset:artifact TargetItems[-1].tag.TSB.LocalCooldown - execute if data storage asset:artifact {SpecificTargetSlot:6b} store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCoolDown[11].Value int 1 store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCoolDown[11].Max int 1 run data get storage asset:artifact TargetItems[-1].tag.TSB.LocalCooldown - execute if data storage asset:artifact {SpecificTargetSlot:7b} store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCoolDown[12].Value int 1 store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCoolDown[12].Max int 1 run data get storage asset:artifact TargetItems[-1].tag.TSB.LocalCooldown - execute if data storage asset:artifact {SpecificTargetSlot:8b} store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCoolDown[13].Value int 1 store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCoolDown[13].Max int 1 run data get storage asset:artifact TargetItems[-1].tag.TSB.LocalCooldown -# リセット - data remove storage asset:artifact SpecificTargetSlot \ No newline at end of file + execute if data storage asset:artifact TargetItem{InvSlot:0b} store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCooldown[05].Value int 1 store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCooldown[05].Max int 1 run data get storage asset:artifact TargetItem.LocalCooldown + execute if data storage asset:artifact TargetItem{InvSlot:1b} store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCooldown[06].Value int 1 store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCooldown[06].Max int 1 run data get storage asset:artifact TargetItem.LocalCooldown + execute if data storage asset:artifact TargetItem{InvSlot:2b} store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCooldown[07].Value int 1 store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCooldown[07].Max int 1 run data get storage asset:artifact TargetItem.LocalCooldown + execute if data storage asset:artifact TargetItem{InvSlot:3b} store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCooldown[08].Value int 1 store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCooldown[08].Max int 1 run data get storage asset:artifact TargetItem.LocalCooldown + execute if data storage asset:artifact TargetItem{InvSlot:4b} store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCooldown[09].Value int 1 store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCooldown[09].Max int 1 run data get storage asset:artifact TargetItem.LocalCooldown + execute if data storage asset:artifact TargetItem{InvSlot:5b} store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCooldown[10].Value int 1 store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCooldown[10].Max int 1 run data get storage asset:artifact TargetItem.LocalCooldown + execute if data storage asset:artifact TargetItem{InvSlot:6b} store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCooldown[11].Value int 1 store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCooldown[11].Max int 1 run data get storage asset:artifact TargetItem.LocalCooldown + execute if data storage asset:artifact TargetItem{InvSlot:7b} store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCooldown[12].Value int 1 store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCooldown[12].Max int 1 run data get storage asset:artifact TargetItem.LocalCooldown + execute if data storage asset:artifact TargetItem{InvSlot:8b} store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCooldown[13].Value int 1 store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCooldown[13].Max int 1 run data get storage asset:artifact TargetItem.LocalCooldown diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/use/item/update_local_cooldown/non-hotbar.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/use/item/update_local_cooldown/non-hotbar.mcfunction index 9a7f2946d2..a7c5d198c2 100644 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/use/item/update_local_cooldown/non-hotbar.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/use/item/update_local_cooldown/non-hotbar.mcfunction @@ -4,10 +4,9 @@ # # @within function asset_manager:artifact/use/item/update_local_cooldown/ -execute if data storage asset:artifact {TargetDefaultSlot:"mainhand"} store result storage asset:artifact SpecificTargetSlot byte 1 run data get storage asset:context SelectedItemSlot -execute if data storage asset:artifact {TargetDefaultSlot:"mainhand"} run function asset_manager:artifact/use/item/update_local_cooldown/hotbar -execute if data storage asset:artifact {TargetDefaultSlot:"offhand"} store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCoolDown[0].Value int 1 store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCoolDown[0].Max int 1 run data get storage asset:artifact TargetItems[-1].tag.TSB.LocalCooldown -execute if data storage asset:artifact {TargetDefaultSlot:"feet"} store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCoolDown[1].Value int 1 store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCoolDown[1].Max int 1 run data get storage asset:artifact TargetItems[-1].tag.TSB.LocalCooldown -execute if data storage asset:artifact {TargetDefaultSlot:"legs"} store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCoolDown[2].Value int 1 store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCoolDown[2].Max int 1 run data get storage asset:artifact TargetItems[-1].tag.TSB.LocalCooldown -execute if data storage asset:artifact {TargetDefaultSlot:"chest"} store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCoolDown[3].Value int 1 store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCoolDown[3].Max int 1 run data get storage asset:artifact TargetItems[-1].tag.TSB.LocalCooldown -execute if data storage asset:artifact {TargetDefaultSlot:"head"} store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCoolDown[4].Value int 1 store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCoolDown[4].Max int 1 run data get storage asset:artifact TargetItems[-1].tag.TSB.LocalCooldown \ No newline at end of file +execute if data storage asset:artifact TargetItem{TargetSlot:"mainhand"} run function asset_manager:artifact/use/item/update_local_cooldown/hotbar +execute if data storage asset:artifact TargetItem{TargetSlot:"offhand"} store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCooldown[0].Value int 1 store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCooldown[0].Max int 1 run data get storage asset:artifact TargetItem.LocalCooldown +execute if data storage asset:artifact TargetItem{TargetSlot:"feet"} store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCooldown[1].Value int 1 store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCooldown[1].Max int 1 run data get storage asset:artifact TargetItem.LocalCooldown +execute if data storage asset:artifact TargetItem{TargetSlot:"legs"} store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCooldown[2].Value int 1 store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCooldown[2].Max int 1 run data get storage asset:artifact TargetItem.LocalCooldown +execute if data storage asset:artifact TargetItem{TargetSlot:"chest"} store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCooldown[3].Value int 1 store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCooldown[3].Max int 1 run data get storage asset:artifact TargetItem.LocalCooldown +execute if data storage asset:artifact TargetItem{TargetSlot:"head"} store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCooldown[4].Value int 1 store result storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCooldown[4].Max int 1 run data get storage asset:artifact TargetItem.LocalCooldown diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/use/remove_mp.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/use/remove_mp.mcfunction index e8c3f6542d..9e9b7561d8 100644 --- a/TheSkyBlessing/data/asset_manager/functions/artifact/use/remove_mp.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/use/remove_mp.mcfunction @@ -4,10 +4,10 @@ # # @input # as player -# storage asset:artifact TargetItems : ItemData +# storage asset:artifact TargetItem : ItemData # @within function asset_manager:artifact/use/ # 取得して減算 - execute store result storage api: Argument.Fluctuation double -0.01 run data get storage asset:artifact TargetItems[0].tag.TSB.MPCost 100 + execute store result storage api: Argument.Fluctuation double -0.01 run data get storage asset:artifact TargetItem.MPCost 100 data modify storage api: Argument.DisableLog set value true function api:mp/fluctuation diff --git a/TheSkyBlessing/data/asset_manager/functions/common/context/id/pop.mcfunction b/TheSkyBlessing/data/asset_manager/functions/common/context/id/pop.mcfunction index 19113db296..01e76b5a7e 100644 --- a/TheSkyBlessing/data/asset_manager/functions/common/context/id/pop.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/common/context/id/pop.mcfunction @@ -3,24 +3,19 @@ # # # @within function -# api:mob/summon -# api:mob/core/summon # asset:*/extends # asset:*/super.* # api:artifact/*/from_id +# asset_manager:artifact/create/equipment/ # api:entity/mob/effect/core/give -# asset_manager:mob/triggers/death/manual # asset_manager:effect/events/*/call_super_method -# asset_manager:mob/triggers/*/call_super_method -# asset_manager:artifact/give/foreach -# api:spawner/subtract_hp -# asset_manager:object/summon/ +# api:mob/core/summon +# asset:mob/call.m +# asset_manager:mob/triggers/*/call_super_methods/ # api:object/core/summon -# asset_manager:object/*/call_super_methods/ # asset:object/call.m -# asset_manager:mob/triggers/*/call_super_methods/ -# asset_manager:mob/*/call_super_methods/ -# asset:mob/call.m +# asset_manager:object/*/call_super_methods/ +# api:spawner/subtract_hp # idを掃除 data remove storage asset:context id diff --git a/TheSkyBlessing/data/asset_manager/functions/common/context/id/stash.mcfunction b/TheSkyBlessing/data/asset_manager/functions/common/context/id/stash.mcfunction index 6265ae93b3..25b7c90ca2 100644 --- a/TheSkyBlessing/data/asset_manager/functions/common/context/id/stash.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/common/context/id/stash.mcfunction @@ -3,23 +3,19 @@ # # # @within function -# api:mob/summon -# api:mob/core/summon # asset:*/extends # asset:*/super.* # api:artifact/*/from_id +# asset_manager:artifact/create/equipment/ # api:entity/mob/effect/core/give -# asset_manager:mob/triggers/death/manual # asset_manager:effect/events/*/call_super_method -# asset_manager:artifact/give/foreach -# api:spawner/subtract_hp -# asset_manager:object/summon/ +# api:mob/core/summon +# asset:mob/call.m +# asset_manager:mob/triggers/*/call_super_methods/ # api:object/core/summon -# asset_manager:object/*/call_super_methods/ # asset:object/call.m -# asset_manager:mob/triggers/*/call_super_methods/ -# asset_manager:mob/*/call_super_methods/ -# asset:mob/call.m +# asset_manager:object/*/call_super_methods/ +# api:spawner/subtract_hp # スタックに新しい空間を追加する data modify storage asset:context IDStashStack append value {} diff --git a/TheSkyBlessing/data/asset_manager/functions/common/context/this/pop.mcfunction b/TheSkyBlessing/data/asset_manager/functions/common/context/this/pop.mcfunction index 7b0155f604..1f36e3e9eb 100644 --- a/TheSkyBlessing/data/asset_manager/functions/common/context/this/pop.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/common/context/this/pop.mcfunction @@ -3,23 +3,8 @@ # 保持していたthisを戻す # # @within function -# api:mob/summon # api:mob/core/summon -# asset:*/extends -# asset:*/super.* -# api:artifact/*/from_id -# api:entity/mob/effect/core/give -# asset_manager:mob/triggers/death/manual -# asset_manager:effect/events/*/call_super_method -# asset_manager:mob/triggers/*/call_super_method -# asset_manager:artifact/give -# api:spawner/subtract_hp -# asset_manager:object/summon/ # api:object/core/summon -# asset_manager:object/*/call_super_method -# asset:object/call.m -# asset_manager:mob/*/call_super_method -# asset:mob/call.m # thisを掃除 data remove storage asset:context this diff --git a/TheSkyBlessing/data/asset_manager/functions/common/context/this/stash.mcfunction b/TheSkyBlessing/data/asset_manager/functions/common/context/this/stash.mcfunction index 4214586529..ac4d0fab0f 100644 --- a/TheSkyBlessing/data/asset_manager/functions/common/context/this/stash.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/common/context/this/stash.mcfunction @@ -3,23 +3,8 @@ # thisを一旦保持しておく # # @within function -# api:mob/summon # api:mob/core/summon -# asset:*/extends -# asset:*/super.* -# api:artifact/*/from_id -# api:entity/mob/effect/core/give -# asset_manager:mob/triggers/death/manual -# asset_manager:effect/events/*/call_super_method -# asset_manager:mob/triggers/*/call_super_method -# asset_manager:artifact/give -# api:spawner/subtract_hp -# asset_manager:object/summon/ # api:object/core/summon -# asset_manager:object/*/call_super_method -# asset:object/call.m -# asset_manager:mob/*/call_super_method -# asset:mob/call.m # スタックに新しい空間を追加する data modify storage asset:context ThisStashStack append value {} diff --git a/TheSkyBlessing/data/asset_manager/functions/common/reset_all_context.mcfunction b/TheSkyBlessing/data/asset_manager/functions/common/reset_all_context.mcfunction index 16111a894a..3a5400251f 100644 --- a/TheSkyBlessing/data/asset_manager/functions/common/reset_all_context.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/common/reset_all_context.mcfunction @@ -4,8 +4,5 @@ # # @within function core:tick/ -data remove storage asset:context New -data remove storage asset:context Old data remove storage asset:context id -data remove storage asset:context Items -data remove storage asset:context Inventory \ No newline at end of file +data remove storage asset:context Slot diff --git a/TheSkyBlessing/data/asset_manager/functions/effect/_index.d.mcfunction b/TheSkyBlessing/data/asset_manager/functions/effect/_index.d.mcfunction index 7d60f76c2b..32c39281d9 100644 --- a/TheSkyBlessing/data/asset_manager/functions/effect/_index.d.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/effect/_index.d.mcfunction @@ -2,13 +2,17 @@ # @private #> Storage -# @within function -# api:entity/mob/effect/** -# asset:effect/extends -# asset:effect/super.* -# asset:effect/*/register -# asset:effect/*/ -# asset_manager:effect/** +# @within +# function +# api:entity/mob/effect/** +# asset:effect/extends +# asset:effect/super.* +# asset:effect/*/register +# asset:effect/*/ +# asset_manager:effect/** +# asset_manager:artifact/create/equipment/* +# loot_table +# asset_manager:artifact/generate_lore/equipment_description #declare storage asset:effect #> Tags diff --git a/TheSkyBlessing/data/asset_manager/functions/mob/_index.d.mcfunction b/TheSkyBlessing/data/asset_manager/functions/mob/_index.d.mcfunction index 3f44c8e07d..7e4d597857 100644 --- a/TheSkyBlessing/data/asset_manager/functions/mob/_index.d.mcfunction +++ b/TheSkyBlessing/data/asset_manager/functions/mob/_index.d.mcfunction @@ -29,7 +29,7 @@ # mob_manager:kill_entity # asset:mob/** # asset_manager:mob/** -# asset_manager:artifact/triggers/attack/vanilla/ +# asset_manager:artifact/triggers/vanilla/damage # api:damage/core/health_subtract/non-player/ # api:mob/core/kill #declare tag AssetMob @@ -50,7 +50,6 @@ #> Killer # @within * # asset_manager:mob/triggers/death/* -# asset_manager:artifact/triggers/attack/vanilla # api:damage/core/health_subtract/non-player/kill # asset:mob/*/death/** #declare tag Killer diff --git a/TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/2.attack_info.json b/TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/attack_info.json similarity index 100% rename from TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/2.attack_info.json rename to TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/attack_info.json diff --git a/TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/1.condition.json b/TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/condition.json similarity index 100% rename from TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/1.condition.json rename to TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/condition.json diff --git a/TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/7.cooldown.json b/TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/cooldown.json similarity index 100% rename from TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/7.cooldown.json rename to TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/cooldown.json diff --git a/TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/7.cooldown_duration.json b/TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/cooldown_duration.json similarity index 100% rename from TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/7.cooldown_duration.json rename to TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/cooldown_duration.json diff --git a/TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/6.cost_item.json b/TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/cost_item.json similarity index 100% rename from TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/6.cost_item.json rename to TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/cost_item.json diff --git a/TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/equipment.json b/TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/equipment.json new file mode 100644 index 0000000000..d5aaf8f0c1 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/equipment.json @@ -0,0 +1,42 @@ +{ + "type": "generic", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "debug_stick", + "functions": [ + { + "function": "set_lore", + "entity": "this", + "lore": [ + [ + { + "text": "", + "color": "white", + "italic": false + }, + { + "text": "装備時効果 ", + "font": "misaki/gothic" + }, + { + "text": "\u0006", + "font": "space" + }, + { + "storage": "asset:artifact", + "nbt": "EquipName", + "interpret": true + } + ] + ] + } + ] + } + ] + } + ] +} diff --git a/TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/equipment_description.json b/TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/equipment_description.json new file mode 100644 index 0000000000..a44cd34a3b --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/equipment_description.json @@ -0,0 +1,34 @@ +{ + "type": "generic", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "debug_stick", + "functions": [ + { + "function": "set_lore", + "entity": "this", + "lore": [ + [ + { + "text": "", + "italic": false, + "color": "white" + }, + { + "nbt": "Description[0]", + "storage": "asset:effect", + "interpret": true + } + ] + ] + } + ] + } + ] + } + ] +} diff --git a/TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/8.god.json b/TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/god.json similarity index 100% rename from TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/8.god.json rename to TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/god.json diff --git a/TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/modifier.json b/TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/modifier.json new file mode 100644 index 0000000000..ce555824e6 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/modifier.json @@ -0,0 +1,30 @@ +{ + "type": "generic", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "debug_stick", + "functions": [ + { + "function": "set_lore", + "entity": "this", + "lore": [ + [ + { + "storage": "asset:artifact", + "nbt": "Line[]", + "separator": "", + "interpret": true + } + ] + ] + } + ] + } + ] + } + ] +} diff --git a/TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/4.mp_cost.json b/TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/mp_cost.json similarity index 100% rename from TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/4.mp_cost.json rename to TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/mp_cost.json diff --git a/TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/5.mp_heal_when_hit.json b/TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/mp_heal_when_hit.json similarity index 100% rename from TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/5.mp_heal_when_hit.json rename to TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/mp_heal_when_hit.json diff --git a/TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/3.mp_require.json b/TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/mp_require.json similarity index 100% rename from TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/3.mp_require.json rename to TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/mp_require.json diff --git a/TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/parts_max.json b/TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/parts_max.json new file mode 100644 index 0000000000..5e1a320784 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/parts_max.json @@ -0,0 +1,41 @@ +{ + "type": "generic", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "debug_stick", + "functions": [ + { + "function": "set_lore", + "entity": "this", + "lore": [ + [ + { + "text": "", + "color": "white", + "italic": false + }, + { + "text": "最大発動回数", + "font": "misaki/gothic" + }, + { + "text": "\u0006", + "font": "space" + }, + { + "storage": "asset:artifact", + "nbt": "PartsMax" + } + ] + ] + } + ] + } + ] + } + ] +} diff --git a/TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/0.trigger.json b/TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/trigger.json similarity index 89% rename from TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/0.trigger.json rename to TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/trigger.json index 8674c27909..4db574ff6b 100644 --- a/TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/0.trigger.json +++ b/TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/trigger.json @@ -26,10 +26,6 @@ "text": "\u0006", "font": "space" }, - { - "storage": "asset:artifact", - "nbt": "Temp.EnableDuplication" - }, { "storage": "asset:artifact", "nbt": "Temp.Trigger.A" diff --git a/TheSkyBlessing/data/asset_manager/loot_tables/artifact/get_name/has_remain.json b/TheSkyBlessing/data/asset_manager/loot_tables/artifact/get_name/has_remain.json index 2b19e99d54..7d6d80a42a 100644 --- a/TheSkyBlessing/data/asset_manager/loot_tables/artifact/get_name/has_remain.json +++ b/TheSkyBlessing/data/asset_manager/loot_tables/artifact/get_name/has_remain.json @@ -34,7 +34,7 @@ "color": "green" }, { - "nbt": "Item.tag.TSB.RemainingCountMAX", + "nbt": "Item.tag.TSB.RemainingCountMax", "storage": "asset:artifact", "color": "green" } @@ -45,4 +45,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/TheSkyBlessing/data/asset_manager/predicates/has_consumable_item/mainhand.json b/TheSkyBlessing/data/asset_manager/predicates/has_consumable_item/mainhand.json deleted file mode 100644 index c152488086..0000000000 --- a/TheSkyBlessing/data/asset_manager/predicates/has_consumable_item/mainhand.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "condition": "entity_properties", - "entity": "this", - "predicate": { - "equipment": { - "mainhand": { - "tag": "lib:consumable" - } - } - } -} \ No newline at end of file diff --git a/TheSkyBlessing/data/asset_manager/predicates/has_consumable_item/offhand.json b/TheSkyBlessing/data/asset_manager/predicates/has_consumable_item/offhand.json deleted file mode 100644 index 93e8dbcf07..0000000000 --- a/TheSkyBlessing/data/asset_manager/predicates/has_consumable_item/offhand.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "condition": "entity_properties", - "entity": "this", - "predicate": { - "equipment": { - "offhand": { - "tag": "lib:consumable" - } - } - } -} \ No newline at end of file diff --git a/TheSkyBlessing/data/asset_manager/predicates/is_use_mainhand/carrot_on_a_stick.json b/TheSkyBlessing/data/asset_manager/predicates/is_use_mainhand/carrot_on_a_stick.json index a91ed3cfa1..0ce2056ac8 100644 --- a/TheSkyBlessing/data/asset_manager/predicates/is_use_mainhand/carrot_on_a_stick.json +++ b/TheSkyBlessing/data/asset_manager/predicates/is_use_mainhand/carrot_on_a_stick.json @@ -10,4 +10,4 @@ } } } -} \ No newline at end of file +} diff --git a/TheSkyBlessing/data/core/functions/handler/drop.mcfunction b/TheSkyBlessing/data/core/functions/handler/drop.mcfunction index e7a2ae6981..adda3c5e67 100644 --- a/TheSkyBlessing/data/core/functions/handler/drop.mcfunction +++ b/TheSkyBlessing/data/core/functions/handler/drop.mcfunction @@ -4,7 +4,5 @@ # # @within function core:tick/player/ -# 神器Asset用の誤検知対策タグ - tag @s add StrictCheckMainhand # Reset - scoreboard players reset @s DropEvent \ No newline at end of file + scoreboard players reset @s DropEvent diff --git a/TheSkyBlessing/data/core/functions/handler/first_join.mcfunction b/TheSkyBlessing/data/core/functions/handler/first_join.mcfunction index 545c330ed1..398b01ce69 100644 --- a/TheSkyBlessing/data/core/functions/handler/first_join.mcfunction +++ b/TheSkyBlessing/data/core/functions/handler/first_join.mcfunction @@ -19,7 +19,7 @@ # 無信仰にする execute unless predicate player_manager:is_believe/flora unless predicate player_manager:is_believe/nyaptov unless predicate player_manager:is_believe/rumor unless predicate player_manager:is_believe/urban unless predicate player_manager:is_believe/wi-ki run function player_manager:god/none/set_tag # ステータス初期化 - data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].Attributes.Default set value {Heal:1d,ReceiveHeal:1d,Attack:{Base:1d,Physical:1d,Magic:1d,None:1d,Fire:1d,Water:1d,Thunder:1d},Defense:{Base:1d,Physical:1d,Magic:1d,None:1d,Fire:1d,Water:1d,Thunder:1d},MaxMP:100d,MPRegen:1d,MaxHealth:20d,FallDamage:1d} + data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].Attributes.Default set value {Heal:1d,ReceiveHeal:1d,Attack:{Base:1d,Physical:1d,Magic:1d,None:1d,Fire:1d,Water:1d,Thunder:1d},Defense:{Base:1d,Physical:1d,Magic:1d,None:1d,Fire:1d,Water:1d,Thunder:1d,Fall:1d},MaxMP:100d,MPRegen:1d,MaxHealth:20d} data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].Attributes.Value set from storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].Attributes.Default # 神器クールダウンの初期化 data modify storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].LocalCoolDown set value [{Value:-15,Max:0},{Value:-15,Max:0},{Value:-15,Max:0},{Value:-15,Max:0},{Value:-15,Max:0},{Value:-15,Max:0},{Value:-15,Max:0},{Value:-15,Max:0},{Value:-15,Max:0},{Value:-15,Max:0},{Value:-15,Max:0},{Value:-15,Max:0},{Value:-15,Max:0},{Value:-15,Max:0}] diff --git a/TheSkyBlessing/data/core/functions/handler/using_item.mcfunction b/TheSkyBlessing/data/core/functions/handler/using_item.mcfunction index 32768d8ef7..0f4e906655 100644 --- a/TheSkyBlessing/data/core/functions/handler/using_item.mcfunction +++ b/TheSkyBlessing/data/core/functions/handler/using_item.mcfunction @@ -8,4 +8,4 @@ tag @s add TriggerFlag.UsingItem # reset - advancement revoke @s only core:handler/using_item \ No newline at end of file + advancement revoke @s only core:handler/using_item diff --git a/TheSkyBlessing/data/core/functions/load_once.mcfunction b/TheSkyBlessing/data/core/functions/load_once.mcfunction index 75ba579005..3012b84ce3 100644 --- a/TheSkyBlessing/data/core/functions/load_once.mcfunction +++ b/TheSkyBlessing/data/core/functions/load_once.mcfunction @@ -342,7 +342,7 @@ team modify NoCollision collisionRule never #> PlayerManager - Arrow # @within function - # asset_manager:artifact/triggers/ + # asset_manager:artifact/triggers/trigger/ # core:load_once # player_manager:arrow/** scoreboard objectives add ArrowOwnerUserID dummy diff --git a/TheSkyBlessing/data/core/functions/tick/player/.mcfunction b/TheSkyBlessing/data/core/functions/tick/player/.mcfunction index afa2611204..9d45e16e7d 100644 --- a/TheSkyBlessing/data/core/functions/tick/player/.mcfunction +++ b/TheSkyBlessing/data/core/functions/tick/player/.mcfunction @@ -6,12 +6,12 @@ #> this # @within * -# core:tick/player/ -# player_manager:vanilla_attack -# asset_manager:artifact/triggers/** # asset:artifact/** +# asset_manager:artifact/triggers/trigger/ +# asset_manager:artifact/triggers/vanilla/push_kill_and_death_event # asset_manager:teleporter/tick/** # core:handler/attack +# core:tick/player/ #declare tag this # thisタグ付与 diff --git a/TheSkyBlessing/data/core/functions/tick/player/post.mcfunction b/TheSkyBlessing/data/core/functions/tick/player/post.mcfunction index 451215e252..3a8b429aa4 100644 --- a/TheSkyBlessing/data/core/functions/tick/player/post.mcfunction +++ b/TheSkyBlessing/data/core/functions/tick/player/post.mcfunction @@ -27,7 +27,7 @@ function player_manager:actionbar/ # リセット - execute if entity @s[scores={Sneak=1..},predicate=!lib:is_sneaking] run function asset_manager:artifact/triggers/sneak/reset + execute if entity @s[scores={Sneak=1..},predicate=!lib:is_sneaking] run function asset_manager:artifact/triggers/event/sneak/reset scoreboard players reset @s[scores={Sneak=1..},predicate=!lib:is_sneaking] Sneak tag @s remove FlyingElytra tag @s remove this diff --git a/TheSkyBlessing/data/lib/functions/status_log/show_health.mcfunction b/TheSkyBlessing/data/lib/functions/status_log/show_health.mcfunction index f91449a155..c3967ffb90 100644 --- a/TheSkyBlessing/data/lib/functions/status_log/show_health.mcfunction +++ b/TheSkyBlessing/data/lib/functions/status_log/show_health.mcfunction @@ -6,7 +6,7 @@ # api:damage/core/health_subtract/non-player/ # api:heal/core/non-player # lib:score_to_health_wrapper/fluctuation -# asset_manager:artifact/triggers/attack/vanilla/ +# asset_manager:artifact/triggers/vanilla/damage # mob_manager:fix_health #> For Init diff --git a/TheSkyBlessing/data/mob_manager/functions/_index.d.mcfunction b/TheSkyBlessing/data/mob_manager/functions/_index.d.mcfunction index 63954e159a..68f2779a99 100644 --- a/TheSkyBlessing/data/mob_manager/functions/_index.d.mcfunction +++ b/TheSkyBlessing/data/mob_manager/functions/_index.d.mcfunction @@ -29,7 +29,7 @@ # core:tick/ # api:damage/core/health_subtract/non-player/ # api:mob/core/kill -# asset_manager:artifact/triggers/attack/vanilla/ +# asset_manager:artifact/triggers/vanilla/damage # asset_manager:mob/triggers/ #declare tag Kill diff --git a/TheSkyBlessing/data/player_manager/functions/fall_damage/deal_damage/get_vars.mcfunction b/TheSkyBlessing/data/player_manager/functions/fall_damage/deal_damage/get_vars.mcfunction index 9cdfb073cd..e9a08ca0c1 100644 --- a/TheSkyBlessing/data/player_manager/functions/fall_damage/deal_damage/get_vars.mcfunction +++ b/TheSkyBlessing/data/player_manager/functions/fall_damage/deal_damage/get_vars.mcfunction @@ -19,7 +19,7 @@ scoreboard players operation $FallDistance Temporary -= $YVec Temporary # 落下ダメージ倍率の初期化 - execute store result score $DamageMultiplier Temporary run data get storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].Attributes.Value.FallDamage 10 + execute store result score $DamageMultiplier Temporary run data get storage oh_my_dat: _[-4][-4][-4][-4][-4][-4][-4][-4].Attributes.Value.Defense.Fall 10 # ジャンプ力上昇のlvを取得する # $JumpBoost(e1) = max($JumpBoost(e1) ?? -1(e1)) + 1(e1), 0) function api:data_get/active_effects diff --git a/TheSkyBlessing/data/player_manager/functions/god/_index.d.mcfunction b/TheSkyBlessing/data/player_manager/functions/god/_index.d.mcfunction index 4cf4a7d29d..ae1ac0fb10 100644 --- a/TheSkyBlessing/data/player_manager/functions/god/_index.d.mcfunction +++ b/TheSkyBlessing/data/player_manager/functions/god/_index.d.mcfunction @@ -26,3 +26,11 @@ # player_manager:god/change_difficulty/request/** # player_manager:god/change_difficulty/confirm/** #declare tag Difficulty.Request + +#> Tag for Equipment Update +# @within function +# player_manager:god/*/believe +# player_manager:god/none/set_tag +# asset_manager:artifact/triggers/ +# asset_manager:artifact/triggers/equipments/update_attribute/* + #declare tag Believe.Changed diff --git a/TheSkyBlessing/data/player_manager/functions/god/flora/believe.mcfunction b/TheSkyBlessing/data/player_manager/functions/god/flora/believe.mcfunction index 8fb693119b..97c285d6c0 100644 --- a/TheSkyBlessing/data/player_manager/functions/god/flora/believe.mcfunction +++ b/TheSkyBlessing/data/player_manager/functions/god/flora/believe.mcfunction @@ -22,4 +22,7 @@ data modify storage api: Argument.UUID set value [2, 1, 1, 10] data modify storage api: Argument.Amount set value -0.2 data modify storage api: Argument.Operation set value "multiply_base" - function api:modifier/defense/fire/add \ No newline at end of file + function api:modifier/defense/fire/add + +# 全装備を再チェック + tag @s add Believe.Changed diff --git a/TheSkyBlessing/data/player_manager/functions/god/none/set_tag.mcfunction b/TheSkyBlessing/data/player_manager/functions/god/none/set_tag.mcfunction index f02c670ee4..090eb3a1a2 100644 --- a/TheSkyBlessing/data/player_manager/functions/god/none/set_tag.mcfunction +++ b/TheSkyBlessing/data/player_manager/functions/god/none/set_tag.mcfunction @@ -4,4 +4,5 @@ # # @within function core:handler/first_join -tag @s add Believe.None \ No newline at end of file +tag @s add Believe.None +tag @s add Believe.Changed diff --git a/TheSkyBlessing/data/player_manager/functions/god/nyaptov/believe.mcfunction b/TheSkyBlessing/data/player_manager/functions/god/nyaptov/believe.mcfunction index 1ef09aab63..ab6e61bfc0 100644 --- a/TheSkyBlessing/data/player_manager/functions/god/nyaptov/believe.mcfunction +++ b/TheSkyBlessing/data/player_manager/functions/god/nyaptov/believe.mcfunction @@ -25,6 +25,9 @@ function api:modifier/defense/water/add # 落下ダメージ-100% data modify storage api: Argument.UUID set value [2, 1, 1, 11] - data modify storage api: Argument.Amount set value -1 + data modify storage api: Argument.Amount set value 1 data modify storage api: Argument.Operation set value "multiply_base" - function api:modifier/fall_damage/add + function api:modifier/defense/fall/add + +# 全装備を再チェック + tag @s add Believe.Changed diff --git a/TheSkyBlessing/data/player_manager/functions/god/nyaptov/unbelieve.mcfunction b/TheSkyBlessing/data/player_manager/functions/god/nyaptov/unbelieve.mcfunction index 7751d83f6f..08206af860 100644 --- a/TheSkyBlessing/data/player_manager/functions/god/nyaptov/unbelieve.mcfunction +++ b/TheSkyBlessing/data/player_manager/functions/god/nyaptov/unbelieve.mcfunction @@ -19,4 +19,4 @@ function api:modifier/defense/water/remove # 落下ダメージ-100% data modify storage api: Argument.UUID set value [2, 1, 1, 11] - function api:modifier/fall_damage/remove + function api:modifier/defense/fall/remove diff --git a/TheSkyBlessing/data/player_manager/functions/god/rumor/believe.mcfunction b/TheSkyBlessing/data/player_manager/functions/god/rumor/believe.mcfunction index 93c478578c..42dd3cc3e0 100644 --- a/TheSkyBlessing/data/player_manager/functions/god/rumor/believe.mcfunction +++ b/TheSkyBlessing/data/player_manager/functions/god/rumor/believe.mcfunction @@ -18,3 +18,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/base/add + +# 全装備を再チェック + tag @s add Believe.Changed diff --git a/TheSkyBlessing/data/player_manager/functions/god/urban/believe.mcfunction b/TheSkyBlessing/data/player_manager/functions/god/urban/believe.mcfunction index 9a1c89b45c..c99ca1b7fb 100644 --- a/TheSkyBlessing/data/player_manager/functions/god/urban/believe.mcfunction +++ b/TheSkyBlessing/data/player_manager/functions/god/urban/believe.mcfunction @@ -28,3 +28,6 @@ data modify storage api: Argument.Amount set value -0.15 data modify storage api: Argument.Operation set value "multiply_base" function api:modifier/receive_heal/add + +# 全装備を再チェック + tag @s add Believe.Changed diff --git a/TheSkyBlessing/data/player_manager/functions/god/wi-ki/believe.mcfunction b/TheSkyBlessing/data/player_manager/functions/god/wi-ki/believe.mcfunction index e280c1ef8c..415ef77835 100644 --- a/TheSkyBlessing/data/player_manager/functions/god/wi-ki/believe.mcfunction +++ b/TheSkyBlessing/data/player_manager/functions/god/wi-ki/believe.mcfunction @@ -33,3 +33,6 @@ data modify storage api: Argument.Amount set value -0.3 data modify storage api: Argument.Operation set value "multiply_base" function api:modifier/defense/fire/add + +# 全装備を再チェック + tag @s add Believe.Changed