From 41c599a4bfd642bb5e8876a05bc1a2efa7e7941e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=AF=E3=81=84=E3=81=84=E3=82=8D?= Date: Sun, 17 Nov 2024 18:29:24 +0900 Subject: [PATCH] =?UTF-8?q?:technologist:=20=E6=94=BB=E6=92=83=E6=99=82?= =?UTF-8?q?=E5=87=A6=E7=90=86=E3=82=92=E4=BD=9C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../triggers/attack_melee/.mcfunction | 15 +++++++++ .../triggers/attack_melee/attack.m.mcfunction | 8 +++++ .../triggers/attack_melee/check.m.mcfunction | 8 +++++ .../triggers/attack_melee/foreach.mcfunction | 31 +++++++++++++++++++ .../triggers/attack_melee/use.mcfunction | 22 +++++++++++++ .../triggers/attack_projectile/.mcfunction | 15 +++++++++ .../attack_projectile/attack.m.mcfunction | 8 +++++ .../attack_projectile/check.m.mcfunction | 8 +++++ .../attack_projectile/foreach.mcfunction | 28 +++++++++++++++++ .../triggers/attack_projectile/use.mcfunction | 22 +++++++++++++ 10 files changed, 165 insertions(+) create mode 100644 TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_melee/.mcfunction create mode 100644 TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_melee/attack.m.mcfunction create mode 100644 TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_melee/check.m.mcfunction create mode 100644 TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_melee/foreach.mcfunction create mode 100644 TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_melee/use.mcfunction create mode 100644 TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_projectile/.mcfunction create mode 100644 TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_projectile/attack.m.mcfunction create mode 100644 TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_projectile/check.m.mcfunction create mode 100644 TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_projectile/foreach.mcfunction create mode 100644 TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_projectile/use.mcfunction 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..b0d38dcda2 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_melee/.mcfunction @@ -0,0 +1,15 @@ +#> asset_manager:artifact/triggers/attack_melee/ +# +# +# +# @within function asset_manager:artifact/triggers/trigger/foreach/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.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_melee/attack.m.mcfunction new file mode 100644 index 0000000000..15dcb8c649 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_melee/attack.m.mcfunction @@ -0,0 +1,8 @@ +#> asset_manager:artifact/triggers/attack_melee/attack.m +# +# +# +# @input args id : int +# @within function asset_manager:artifact/triggers/attack_melee/use + +$function asset:artifact/alias/$(id)/attack/ diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_melee/check.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_melee/check.m.mcfunction new file mode 100644 index 0000000000..a8a4b55ae9 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_melee/check.m.mcfunction @@ -0,0 +1,8 @@ +#> asset_manager:artifact/triggers/attack_melee/check.m +# +# +# +# @input args id : int +# @within function asset_manager:artifact/triggers/attack_melee/foreach + +$function asset:artifact/alias/$(id)/attack/check 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..55df213302 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_melee/foreach.mcfunction @@ -0,0 +1,31 @@ +#> 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 + # MPを命中回数分回復する + function asset_manager:artifact/triggers/event/attack/mp_heal + +# 使用条件を満たしているか確認する + function asset_manager:artifact/check/ + function asset_manager:artifact/triggers/attack_melee/check.m with storage asset:context +# 条件を満たしていれば使用する + execute if entity @s[tag=CanUsed] run function asset_manager:artifact/triggers/attack_melee/use + +# リセット + tag @s remove CanUsed + 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..d3ba0fb91e --- /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[] + +# 神器を呼び出し + function asset_manager:artifact/triggers/attack_melee/attack.m with storage asset:context + +# リセット + tag @e[type=#lib:living,type=!player,tag=Victim] remove Victim + data remove storage asset:context BrokeItem + data remove storage asset:context Attack + data remove storage asset:context Count + data remove storage asset:artifact AttackTargets 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..113d7ea426 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_projectile/.mcfunction @@ -0,0 +1,15 @@ +#> asset_manager:artifact/triggers/attack_projectile/ +# +# +# +# @within function asset_manager:artifact/triggers/trigger/foreach/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_projectile/foreach + +# リセット + data remove storage asset:artifact Events diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_projectile/attack.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_projectile/attack.m.mcfunction new file mode 100644 index 0000000000..495d170ec2 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_projectile/attack.m.mcfunction @@ -0,0 +1,8 @@ +#> asset_manager:artifact/triggers/attack_projectile/attack.m +# +# +# +# @input args id : int +# @within function asset_manager:artifact/triggers/attack_projectile/use + +$function asset:artifact/alias/$(id)/attack/ diff --git a/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_projectile/check.m.mcfunction b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_projectile/check.m.mcfunction new file mode 100644 index 0000000000..3b3d2b6b64 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_projectile/check.m.mcfunction @@ -0,0 +1,8 @@ +#> asset_manager:artifact/triggers/attack_projectile/check.m +# +# +# +# @input args id : int +# @within function asset_manager:artifact/triggers/attack_projectile/foreach + +$function asset:artifact/alias/$(id)/attack/check 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..11a1b0ef64 --- /dev/null +++ b/TheSkyBlessing/data/asset_manager/functions/artifact/triggers/attack_projectile/foreach.mcfunction @@ -0,0 +1,28 @@ +#> 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 + # MPを命中回数分回復する + function asset_manager:artifact/triggers/event/attack/mp_heal + +# 使用条件を満たしているか確認する + function asset_manager:artifact/check/ + function asset_manager:artifact/triggers/attack_projectile/check.m with storage asset:context +# 条件を満たしていれば使用する + execute if entity @s[tag=CanUsed] run function asset_manager:artifact/triggers/attack_projectile/use + +# リセット + tag @s remove CanUsed + 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..9c1d812648 --- /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[] + +# 神器を呼び出し + function asset_manager:artifact/triggers/attack_projectile/attack.m with storage asset:context + +# リセット + tag @e[type=#lib:living,type=!player,tag=Victim] remove Victim + data remove storage asset:context BrokeItem + data remove storage asset:context Attack + data remove storage asset:context Count + data remove storage asset:artifact AttackTargets