diff --git a/data/enemy/function/tick.mcfunction b/data/enemy/function/tick.mcfunction index e483e843d..abcb23a86 100644 --- a/data/enemy/function/tick.mcfunction +++ b/data/enemy/function/tick.mcfunction @@ -5,6 +5,9 @@ execute if score $Ticks Count matches 0 run function enemy:one_second ## 忍者 # 居縮 execute if entity @s[scores={Isukumi=1..}] run function skill:act/ninja/isukumi/tick +## 狩人 +# ワイルドフレア +execute if entity @s[tag=WildFlareInterval] run function skill:act/hunter/wild_flare/tick_enemy ### Mob自然ダメージ反映 execute if entity @s[nbt=!{AbsorptionAmount:2048f}] run function enemy:damage/natural diff --git a/data/entity/function/cooldown.mcfunction b/data/entity/function/cooldown.mcfunction index e904710a2..4dbe0f02b 100644 --- a/data/entity/function/cooldown.mcfunction +++ b/data/entity/function/cooldown.mcfunction @@ -15,8 +15,9 @@ execute if entity @s[tag=DarkSwamp] run function skill:act/black_mage/dark_swamp ###ブラストスパーク炸裂 execute if entity @s[tag=BlastSpark] run function skill:act/hunter/blast_spark/explode -###ワイルドフレア拡散処理 -execute if entity @s[tag=WildFlareSeed] run function skill:act/hunter/wild_flare/explode +###ワイルドフレア拡散/失敗処理 +execute if entity @s[tag=WildFlareSeed,tag=Flying] run function skill:act/hunter/wild_flare/explode +execute if entity @s[tag=WildFlareSeed,tag=!Flying] run function makeup:skill/act/hunter/wild_flare/failed ### ヘイローバウンド終了 execute if entity @s[tag=HaloBound] run function skill:act/white_mage/halo_bound/act2 diff --git a/data/main/function/load_once.mcfunction b/data/main/function/load_once.mcfunction index fedd37d6c..a73403c5d 100644 --- a/data/main/function/load_once.mcfunction +++ b/data/main/function/load_once.mcfunction @@ -140,6 +140,7 @@ scoreboard objectives add BlastSpark dummy {"text":"ブラストスパーク継 scoreboard objectives add Kasap dummy {"text":"ルカナントラップ継続秒数"} scoreboard objectives add KasapRatio dummy {"text":"ルカナントラップダメージ倍率"} scoreboard objectives add Decelerate dummy {"text":"ボミオストラップ継続秒数"} +scoreboard objectives add WildFlareInterval dummy {"text":"ワイルドフレアダメージインターバル"} #白魔導士 scoreboard objectives add HaloBound dummy {"text":"ヘイローバウンド演出カウント"} #黒魔導士 diff --git a/data/makeup/function/skill/act/hunter/wild_flare/act0.mcfunction b/data/makeup/function/skill/act/hunter/wild_flare/act0.mcfunction new file mode 100644 index 000000000..0522af8d5 --- /dev/null +++ b/data/makeup/function/skill/act/hunter/wild_flare/act0.mcfunction @@ -0,0 +1,4 @@ +#> makeup:skill/act/hunter/wild_flare/act0 +# +# ワイルドフレア発動演出 +playsound minecraft:entity.blaze.shoot player @a[distance=..16] ~ ~ ~ 1 1 diff --git a/data/makeup/function/skill/act/hunter/wild_flare/explode.mcfunction b/data/makeup/function/skill/act/hunter/wild_flare/explode.mcfunction new file mode 100644 index 000000000..102c85c67 --- /dev/null +++ b/data/makeup/function/skill/act/hunter/wild_flare/explode.mcfunction @@ -0,0 +1,5 @@ +#> makeup:skill/act/hunter/wild_flare/explode +# +# ワイルドフレア爆発演出 +playsound minecraft:entity.generic.explode player @a[distance=..16] ~ ~ ~ 0.5 1 +particle minecraft:explosion ~ ~ ~ 0 0 0 0 0 force diff --git a/data/makeup/function/skill/act/hunter/wild_flare/failed.mcfunction b/data/makeup/function/skill/act/hunter/wild_flare/failed.mcfunction new file mode 100644 index 000000000..8e51d7034 --- /dev/null +++ b/data/makeup/function/skill/act/hunter/wild_flare/failed.mcfunction @@ -0,0 +1,5 @@ +#> makeup:skill/act/hunter/wild_flare/failed +# +# ワイルドフレア失敗演出 +playsound minecraft:block.fire.extinguish player @a[distance=..16] ~ ~ ~ 1 1 +particle minecraft:dust{color:[0,0,0],scale:1.5} ~ ~ ~ 0.4 0.4 0.4 1 10 force @a[tag=ShowParticles] diff --git a/data/makeup/function/skill/act/hunter/wild_flare/tick.mcfunction b/data/makeup/function/skill/act/hunter/wild_flare/tick.mcfunction new file mode 100644 index 000000000..7cf8b8883 --- /dev/null +++ b/data/makeup/function/skill/act/hunter/wild_flare/tick.mcfunction @@ -0,0 +1,4 @@ +#> makeup:skill/act/hunter/wild_flare/tick +# +# ワイルドフレア毎tick演出 +particle minecraft:flame ~ ~ ~ 2 1 2 0.01 1 force @a[tag=ShowParticles] diff --git a/data/skill/function/act/hunter/wild_flare/act0.mcfunction b/data/skill/function/act/hunter/wild_flare/act0.mcfunction new file mode 100644 index 000000000..a3db98c1d --- /dev/null +++ b/data/skill/function/act/hunter/wild_flare/act0.mcfunction @@ -0,0 +1,9 @@ +#> skill:act/hunter/wild_flare/act0 +# +# ワイルドフレア発動 + +# 矢にデータを保存 +execute as @e[distance=..5,type=#minecraft:arrows,tag=!Initialized,sort=nearest,limit=1] run data merge entity @s {PortalCooldown:2,Tags:[WildFlareSeed,CooldownRequired]} +scoreboard players operation @e[distance=..5,type=#minecraft:arrows,tag=!Initialized,sort=nearest,limit=1] Level = _ Level + +function makeup:skill/act/hunter/wild_flare/act0 diff --git a/data/skill/function/act/hunter/wild_flare/apply.mcfunction b/data/skill/function/act/hunter/wild_flare/apply.mcfunction new file mode 100644 index 000000000..11bebb418 --- /dev/null +++ b/data/skill/function/act/hunter/wild_flare/apply.mcfunction @@ -0,0 +1,14 @@ +#> skill:act/hunter/wild_flare/apply +# +# ワイルドフレア ダメージ付与 +# +# @within function skill:act/hunter/wild_flare/tick + +# スキルダメージをロード +execute if score @s Level matches 1 run data modify storage skill: damage set from storage skill: Data.Hunter[{Name:"ワイルドフレア",Level:1}].Damage +execute if score @s Level matches 2 run data modify storage skill: damage set from storage skill: Data.Hunter[{Name:"ワイルドフレア",Level:2}].Damage +execute if score @s Level matches 3 run data modify storage skill: damage set from storage skill: Data.Hunter[{Name:"ワイルドフレア",Level:3}].Damage + +# 対象となる敵側でダメージ処理を実行 +data modify storage skill: damage.hit set value 0b +execute positioned ~-1 ~-1 ~-1 as @e[dx=1,dy=1,dz=1,tag=Enemy] at @s run function skill:act/hunter/wild_flare/apply_enemy diff --git a/data/skill/function/act/hunter/wild_flare/apply_enemy.mcfunction b/data/skill/function/act/hunter/wild_flare/apply_enemy.mcfunction new file mode 100644 index 000000000..90ea8f40a --- /dev/null +++ b/data/skill/function/act/hunter/wild_flare/apply_enemy.mcfunction @@ -0,0 +1,11 @@ +#> skill:act/hunter/wild_flare/apply_enemy +# +# ワイルドフレア ダメージ・インターバル付与 + +# ダメージ・デバフを付与 +function skill:damage/apply/ +function effect:enemy_debuff/burn/apply + +# インターバル付与 +tag @s add WildFlareInterval +scoreboard players set @s WildFlareInterval 20 diff --git a/data/skill/function/act/hunter/wild_flare/explode.mcfunction b/data/skill/function/act/hunter/wild_flare/explode.mcfunction new file mode 100644 index 000000000..d60a55301 --- /dev/null +++ b/data/skill/function/act/hunter/wild_flare/explode.mcfunction @@ -0,0 +1,28 @@ +#> skill:act/hunter/wild_flare/explode +# +# ワイルドフレア拡散準備 + +# 方角取得用マーカー召喚 +function calc:geometry/tp_00001 +# 方角取得用マーカー処理 +execute store result score _ Calc run data get entity @s Pos[0] 100 +execute store result score _ _ run data get entity @s Motion[0] 100 +execute store result entity 0-0-0-0-1 Pos[0] double 0.01 run scoreboard players operation _ Calc -= _ _ +execute store result score _ Calc run data get entity @s Pos[1] 100 +execute store result score _ _ run data get entity @s Motion[1] 100 +execute store result entity 0-0-0-0-1 Pos[1] double 0.01 run scoreboard players operation _ Calc -= _ _ +execute store result score _ Calc run data get entity @s Pos[2] 100 +execute store result score _ _ run data get entity @s Motion[2] 100 +execute store result entity 0-0-0-0-1 Pos[2] double 0.01 run scoreboard players operation _ Calc -= _ _ + +execute at 0-0-0-0-1 run tp 0-0-0-0-1 ~ ~ ~ facing entity @s + +# ワイルドフレア生成 +function skill:damage/load +scoreboard players operation _ Level = @s Level +data modify storage skill: Skill.Owner set from entity @s Owner +execute as 0-0-0-0-1 at @s positioned ^ ^ ^2 run function skill:act/hunter/wild_flare/make_flare +data remove storage skill: Skill.Owner + +# 演出 +function makeup:skill/act/hunter/wild_flare/explode diff --git a/data/skill/function/act/hunter/wild_flare/make_flare.mcfunction b/data/skill/function/act/hunter/wild_flare/make_flare.mcfunction new file mode 100644 index 000000000..ab1b747be --- /dev/null +++ b/data/skill/function/act/hunter/wild_flare/make_flare.mcfunction @@ -0,0 +1,15 @@ +#> skill:act/hunter/wild_flare/make_flare +# +# ワイルドフレア拡散準備 + +# ループカウント設定 +scoreboard players set _ Count 30 + +# 矢召喚 +function skill:act/hunter/wild_flare/make_flare_loop + +# モーション設定 +execute as @e[distance=..1.1,tag=WildFlare] at @s run function skill:act/hunter/wild_flare/set_velocity + +# マーカー返却 +function calc:geometry/return_marker diff --git a/data/skill/function/act/hunter/wild_flare/make_flare_loop.mcfunction b/data/skill/function/act/hunter/wild_flare/make_flare_loop.mcfunction new file mode 100644 index 000000000..e18211e8f --- /dev/null +++ b/data/skill/function/act/hunter/wild_flare/make_flare_loop.mcfunction @@ -0,0 +1,15 @@ +#> skill:act/hunter/wild_flare/make_flare_loop +# +# ワイルドフレア拡散準備ループ + +# 向きをランダムに決める +function calc:set/random_rotation + +# 矢召喚 +execute rotated as @s run summon minecraft:arrow ^ ^ ^1 {Tags:[WildFlare,CooldownRequired,Skill,NativeTask,FlyingRequired],PortalCooldown:100,Fire:100s,damage:0.0d} + +# カウンタデクリメント +scoreboard players remove _ Count 1 + +# 条件ループ継続 +execute if score _ Count matches 1.. run function skill:act/hunter/wild_flare/make_flare_loop diff --git a/data/skill/function/act/hunter/wild_flare/set_velocity.mcfunction b/data/skill/function/act/hunter/wild_flare/set_velocity.mcfunction new file mode 100644 index 000000000..8f1efd6e5 --- /dev/null +++ b/data/skill/function/act/hunter/wild_flare/set_velocity.mcfunction @@ -0,0 +1,10 @@ +#> skill:act/hunter/wild_flare/set_velocity +# +# ワイルドフレアMotion付与 + +# ダメージをセーブ +function skill:damage/save + +data modify entity @s Owner set from storage skill: Skill.Owner +scoreboard players operation @s Level = _ Level +execute facing entity 0-0-0-0-1 feet positioned 0.0 0.0 0.0 positioned ^ ^ ^-1.2 run function calc:throw_projectile/ diff --git a/data/skill/function/act/hunter/wild_flare/tick.mcfunction b/data/skill/function/act/hunter/wild_flare/tick.mcfunction new file mode 100644 index 000000000..37d9c7808 --- /dev/null +++ b/data/skill/function/act/hunter/wild_flare/tick.mcfunction @@ -0,0 +1,11 @@ +#> skill:act/hunter/wild_flare/tick +# +# ワイルドフレアダメージ&演出 + +# ダメージ付与 +execute if entity @s[tag=FlyingRequired] if entity @e[distance=..3,tag=Enemy,tag=!WildFlareInterval] run function skill:act/hunter/wild_flare/apply + +# 水中削除 +kill @s[nbt={Fire:0s}] + +function makeup:skill/act/hunter/wild_flare/tick diff --git a/data/skill/function/act/hunter/wild_flare/tick_enemy.mcfunction b/data/skill/function/act/hunter/wild_flare/tick_enemy.mcfunction new file mode 100644 index 000000000..6666cde67 --- /dev/null +++ b/data/skill/function/act/hunter/wild_flare/tick_enemy.mcfunction @@ -0,0 +1,8 @@ +#> skill:act/hunter/wild_flare/tick_enemy +# +# ワイルドフレアインターバル消費 + +scoreboard players remove @s WildFlareInterval 1 +execute if score @s WildFlareInterval matches 1.. run return fail +tag @s remove WildFlareInterval +scoreboard players reset @s WildFlareInterval diff --git a/data/skill/function/native_tick.mcfunction b/data/skill/function/native_tick.mcfunction index faa754634..a2a0a1c1c 100644 --- a/data/skill/function/native_tick.mcfunction +++ b/data/skill/function/native_tick.mcfunction @@ -28,6 +28,8 @@ execute if entity @s[tag=BlastSpark] run function makeup:skill/act/hunter/blast_ execute if entity @s[tag=KasapTrap] run function skill:act/hunter/kasap_trap/tick # ボミオストラップ execute if entity @s[tag=DecelerateTrap] run function skill:act/hunter/decelerate_trap/tick +# ワイルドフレア +execute if entity @s[tag=WildFlare] run function skill:act/hunter/wild_flare/tick ## 白魔導士 # ヘイローバウンド