Skip to content

Commit efe476e

Browse files
authored
🐛 [Artifact 953] メテオレインのターゲッティングの修正 および 対象がいない場合隕石が降らない問題の修正 (#1050)
1 parent bc9e112 commit efe476e

File tree

10 files changed

+64
-40
lines changed

10 files changed

+64
-40
lines changed

Asset/data/asset/functions/artifact/0953.meteor_rain/trigger/3.main.mcfunction

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,6 @@
1616

1717
# メテオレインのエミッターを召喚
1818
data modify storage api: Argument.ID set value 1079
19+
data modify storage api: Argument.FieldOverride.Damage set value 580
1920
execute store result storage api: Argument.FieldOverride.UserID int 1 run scoreboard players get @s UserID
2021
function api:object/summon

Asset/data/asset/functions/object/1079.meteor_rain_emitter/register.mcfunction

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,17 @@
55
# @within function asset:object/alias/1079/register
66

77
# 継承(オプション)
8-
# data modify storage asset:object Extends append value
8+
# data modify storage asset:object Extends append value
99
# function asset:object/extends
1010
# 他のObjectに継承されることを許可するか (boolean) (オプション)
11-
# data modify storage asset:object ExtendsSafe set value
11+
# data modify storage asset:object ExtendsSafe set value
1212
# 継承されることを前提とした、抽象的なObjectであるかどうか(boolean)
1313
data modify storage asset:object IsAbstract set value false
1414
# Tickするかどうか(boolean) (オプション)
15-
# data modify storage asset:object IsTicking set value
15+
# data modify storage asset:object IsTicking set value
1616

1717
# ID (int)
1818
data modify storage asset:object ID set value 1079
1919
# フィールド(オプション)
20-
# data modify storage asset:object Field.myValue set value
20+
data modify storage asset:object Field.Damage set value 1
21+
data modify storage asset:object Field.UserID set value -1

Asset/data/asset/functions/object/1079.meteor_rain_emitter/tick/.mcfunction

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
#> インターバル
88
#@private
9-
# declare score_holder $Interval
9+
# declare score_holder $Interval
1010

1111
# Tick加算
1212
scoreboard players add @s General.Object.Tick 1
@@ -15,14 +15,13 @@
1515
particle lava ~ ~ ~ 10 10 10 0 1
1616
particle large_smoke ~ ~ ~ 10 10 10 0 1
1717

18-
# ダメージ、数Tickおきに実行
19-
# 実行時間を移す
20-
scoreboard players operation $Interval Temporary = @s General.Object.Tick
21-
# 10tickおきに実行
22-
scoreboard players operation $Interval Temporary %= $10 Const
23-
# ダメージ実行
24-
execute if score $Interval Temporary matches 0 positioned ~ ~40 ~ run function asset:object/1079.meteor_rain_emitter/tick/summon_meteor
25-
execute if score $Interval Temporary matches 0 positioned ~ ~40 ~ run function asset:object/1079.meteor_rain_emitter/tick/summon_meteor
26-
execute if score $Interval Temporary matches 0 positioned ~ ~40 ~ run function asset:object/1079.meteor_rain_emitter/tick/summon_meteor
18+
# 10tick毎にメテオを召喚する
19+
scoreboard players operation $Interval Temporary = @s General.Object.Tick
20+
scoreboard players operation $Interval Temporary %= $10 Const
21+
execute if score $Interval Temporary matches 0 run function asset:object/1079.meteor_rain_emitter/tick/summon_meteor
22+
execute if score $Interval Temporary matches 0 run function asset:object/1079.meteor_rain_emitter/tick/summon_meteor
23+
execute if score $Interval Temporary matches 0 run function asset:object/1079.meteor_rain_emitter/tick/summon_meteor
24+
scoreboard players reset $Interval Temporary
25+
2726
# 消滅処理
2827
kill @s[scores={General.Object.Tick=200..}]

Asset/data/asset/functions/object/1079.meteor_rain_emitter/tick/summon_meteor.mcfunction

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,29 +5,40 @@
55
# @within function asset:object/1079.meteor_rain_emitter/tick/
66

77
#> このファイル内で使われるタグ
8-
#@private
9-
#declare tag SpreadMarker
10-
#declare tag SpreadFacingMarker
11-
#declare tag MeteorTarget
8+
# @private
9+
#declare tag SpreadMarker
10+
#declare tag SpreadFacingMarker
11+
#declare tag MeteorTarget
1212

1313
# 拡散させる
1414
summon marker ~ ~ ~ {Tags:["SpreadMarker"]}
1515
data modify storage lib: Argument.Bounds set value [[32d,32d],[0.0d,0.0d],[32d,32d]]
1616
execute as @e[type=marker,tag=SpreadMarker,distance=..128,limit=1] at @s run function lib:spread_entity/
1717

18-
# 付近のランダムな敵一体を対象とし、そいつの周辺に拡散
19-
tag @e[type=#lib:living,tag=Enemy,tag=!Uninterferable,distance=..64,sort=random,limit=1] add MeteorTarget
20-
execute store result storage api: Argument.FieldOverride.TargetID int 1 run scoreboard players get @e[type=#lib:living,tag=MeteorTarget,distance=..64,limit=1] MobUUID
21-
execute at @e[type=#lib:living,tag=MeteorTarget,distance=..64,limit=1] run summon marker ~ ~ ~ {Tags:["SpreadFacingMarker"]}
22-
data modify storage lib: Argument.Bounds set value [[8d,8d],[0.0d,0.0d],[8d,8d]]
23-
execute as @e[type=marker,tag=SpreadFacingMarker,distance=..128,limit=1] at @s run function lib:spread_entity/
18+
# 付近のランダムな敵一体を対象として狙う
19+
execute positioned ~-40 ~-8 ~-40 run tag @e[type=#lib:living,tag=Enemy,tag=!Uninterferable,dx=79,dy=24,dz=79,sort=random,limit=1] add MeteorTarget
20+
execute if entity @e[type=#lib:living,tag=MeteorTarget,distance=..50,limit=1] store result storage api: Argument.FieldOverride.TargetID int 1 run scoreboard players get @e[type=#lib:living,tag=MeteorTarget,distance=..50,limit=1] MobUUID
2421

25-
# メテオを召喚
22+
# メテオのブレ用の拡散
23+
24+
# ターゲットがいる場合
25+
execute at @e[type=#lib:living,tag=MeteorTarget,distance=..50,limit=1] run summon marker ~ ~ ~ {Tags:["SpreadFacingMarker"]}
26+
data modify storage lib: Argument.Bounds set value [[8d,8d],[0.0d,0.0d],[8d,8d]]
27+
28+
# ターゲットがいない場合
29+
execute unless entity @e[type=#lib:living,tag=MeteorTarget,distance=..50,limit=1] run summon marker ~ ~ ~ {Tags:["SpreadFacingMarker"]}
30+
execute unless entity @e[type=#lib:living,tag=MeteorTarget,distance=..50,limit=1] run data modify storage lib: Argument.Bounds set value [[16d,16d],[0.0d,0.0d],[16d,16d]]
31+
32+
# 拡散
33+
execute as @e[type=marker,tag=SpreadFacingMarker,distance=..128,limit=1] at @s run function lib:spread_entity/
34+
35+
# 40m上からターゲットに向けてメテオを召喚
2636
data modify storage api: Argument.ID set value 1080
37+
data modify storage api: Argument.FieldOverride.Damage set from storage asset:context this.Damage
2738
data modify storage api: Argument.FieldOverride.UserID set from storage asset:context this.UserID
28-
execute at @e[type=marker,tag=SpreadMarker,distance=..128,limit=1] facing entity @e[type=marker,tag=SpreadFacingMarker,distance=..128,limit=1] feet run function api:object/summon
39+
execute at @e[type=marker,tag=SpreadMarker,distance=..128,limit=1] positioned ~ ~40 ~ facing entity @e[type=marker,tag=SpreadFacingMarker,distance=..128,limit=1] feet run function api:object/summon
2940

3041
# リセット
3142
kill @e[type=marker,tag=SpreadMarker,distance=..128,limit=1]
3243
kill @e[type=marker,tag=SpreadFacingMarker,distance=..128,limit=1]
33-
tag @e[type=#lib:living,tag=MeteorTarget,distance=..64,limit=1] remove MeteorTarget
44+
tag @e[type=#lib:living,tag=MeteorTarget,distance=..70,limit=1] remove MeteorTarget

Asset/data/asset/functions/object/1080.meteor_rain/detect_hit_block/.mcfunction

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,6 @@
44
#
55
# @within asset:object/alias/1080/detect_hit_block
66

7-
# マクロ!
8-
function asset:object/1080.meteor_rain/detect_hit_block/check_target.m with storage asset:context this
7+
# TargetIDの有無で判定を変える
8+
execute if data storage asset:context this.TargetID run function asset:object/1080.meteor_rain/detect_hit_block/check/with_target.m with storage asset:context this
9+
execute unless data storage asset:context this.TargetID run function asset:object/1080.meteor_rain/detect_hit_block/check/without_target.m with storage asset:context this
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#> asset:object/1080.meteor_rain/detect_hit_block/check/with_target.m
2+
#
3+
# @input args:
4+
# MobUUID : int
5+
# MovePerStep : float
6+
# @within function asset:object/1080.meteor_rain/detect_hit_block/
7+
8+
# 判定
9+
$execute positioned ~-50 ~-1 ~-50 unless entity @e[type=#lib:living,scores={MobUUID=$(TargetID)},dx=99,dy=-50,dz=99] at @s unless block ^ ^ ^$(MovePerStep) #lib:no_collision run data modify storage asset:context IsHitBlock set value true
10+
#execute positioned ~-50 ~ ~-50 unless entity @e[type=#lib:living,scores={MobUUID=16708},dx=99,dy=-50,dz=99] at @s unless block ~ ~ ~ #lib:no_collision run data modify storage asset:context IsHitBlock set value true
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
#> asset:object/1080.meteor_rain/detect_hit_block/check/without_target.m
2+
#
3+
# @input args:
4+
# MovePerStep : float
5+
# @within function asset:object/1080.meteor_rain/detect_hit_block/
6+
7+
# 判定
8+
$execute unless block ^ ^ ^$(MovePerStep) #lib:no_collision run data modify storage asset:context IsHitBlock set value true

Asset/data/asset/functions/object/1080.meteor_rain/detect_hit_block/check_target.m.mcfunction

Lines changed: 0 additions & 10 deletions
This file was deleted.

Asset/data/asset/functions/object/1080.meteor_rain/kill/.mcfunction

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
particle flame ~ ~ ~ 1.5 1.5 1.5 0 20
1515

1616
# ダメージ
17-
data modify storage api: Argument.Damage set value 580.0f
17+
data modify storage api: Argument.Damage set from storage asset:context this.Damage
1818
data modify storage api: Argument.AttackType set value "Magic"
1919
data modify storage api: Argument.ElementType set value "Fire"
2020
# 実行時に受け取っているUserIDの持ち主として補正を実行

Asset/data/asset/functions/object/1080.meteor_rain/register.mcfunction

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,6 @@
1919
# フィールド(オプション)
2020
data modify storage asset:object Field.Speed set value 2
2121
data modify storage asset:object Field.Range set value 128
22+
data modify storage asset:object Field.Damage set value 1
23+
# data modify storage asset:object Field.TargetID set value -1
24+
data modify storage asset:object Field.UserID set value -1

0 commit comments

Comments
 (0)