diff --git a/Asset/data/asset/functions/artifact/1464.call_electric_catfish/give/1.trigger.mcfunction b/Asset/data/asset/functions/artifact/1464.call_electric_catfish/give/1.trigger.mcfunction new file mode 100644 index 0000000000..9704dd76dd --- /dev/null +++ b/Asset/data/asset/functions/artifact/1464.call_electric_catfish/give/1.trigger.mcfunction @@ -0,0 +1,7 @@ +#> asset:artifact/1464.call_electric_catfish/give/1.trigger +# +# 神器の取得処理の呼び出し時に実行されるfunction +# +# @within tag/function asset:artifact/give + +execute if data storage asset:context {id:1464} run function asset:artifact/1464.call_electric_catfish/give/2.give \ No newline at end of file diff --git a/Asset/data/asset/functions/artifact/1464.call_electric_catfish/give/2.give.mcfunction b/Asset/data/asset/functions/artifact/1464.call_electric_catfish/give/2.give.mcfunction new file mode 100644 index 0000000000..38a6350af8 --- /dev/null +++ b/Asset/data/asset/functions/artifact/1464.call_electric_catfish/give/2.give.mcfunction @@ -0,0 +1,68 @@ +#> asset:artifact/1464.call_electric_catfish/give/2.give +# +# 神器の作成部 ここでID等を定義する +# +# @user +# @within function asset:artifact/1464.call_electric_catfish/give/1.trigger + +# 神器の説明や消費MPなどをここで設定する。 +# 最後にasset:artifact/common/giveを実行することで入手可能。 + +# 神器のID (int) スプレッドシートの値を入れる + data modify storage asset:artifact ID set value 1464 +# 神器のベースアイテム + data modify storage asset:artifact Item set value "minecraft:carrot_on_a_stick" +# 神器の名前 (TextComponentString) + data modify storage asset:artifact Name set value '{"text": "コール:デンキナマズ", "color": "yellow"}' +# 神器の説明文 (TextComponentString[]) + data modify storage asset:artifact Lore set value ['{"text": "踏まれると周囲にダメージを与える、ナマズを召喚する。"}', '{"text": "「べちっ」「...」", "color": "gray"}'] +# 消費アイテム ({Item: TextComponent, Count: int, Extra?: TextComponent}) (オプション) + # data modify storage asset:artifact ConsumeItem.Item set value '{"translate":"item.minecraft.stick"}' + # data modify storage asset:artifact ConsumeItem.Count set value 1 + # data modify storage asset:artifact ConsumeItem.Extra set value +# 使用回数 (int) (オプション) + # data modify storage asset:artifact RemainingCount set value +# 神器を発動できるスロット (string) Wikiを参照 + data modify storage asset:artifact Slot set value "mainhand" +# 神器のトリガー (string) Wikiを参照 + data modify storage asset:artifact Trigger set value "onClick" +# 神器の発動条件 (TextComponentString) (オプション) + data modify storage asset:artifact Condition set value '{"text": "地面に立っているとき"}' +# 攻撃に関する情報 -Damage量 (literal[]/literal) Wikiを参照 (オプション) + data modify storage asset:artifact AttackInfo.Damage set value 100 +# 攻撃に関する情報 -攻撃タイプ (string[]) Wikiを参照 (オプション) + data modify storage asset:artifact AttackInfo.AttackType set value [Physical] +# 攻撃に関する情報 -攻撃属性 (string[]) Wikiを参照 (オプション) + data modify storage asset:artifact AttackInfo.ElementType set value [Thunder] +# 攻撃に関する情報 -防御無視 (boolean) Wikiを参照 (オプション) + # data modify storage asset:artifact AttackInfo.BypassResist set value +# 攻撃に関する情報 -範囲攻撃 (string) Wikiを参照 (オプション) + data modify storage asset:artifact AttackInfo.IsRangeAttack set value "every" +# 攻撃に関する情報 -攻撃範囲 (literal) Wikiを参照 (オプション) + # data modify storage asset:artifact AttackInfo.AttackRange set value +# MP消費量 (int) + data modify storage asset:artifact MPCost set value 80 +# MP必要量 (int) (オプション) + # data modify storage asset:artifact MPRequire set value +# MP回復量 (int) + # data modify storage asset:artifact MPHealWhenHit set value +# 神器のクールダウン (int) (オプション) + # data modify storage asset:artifact LocalCooldown set value +# 種別クールダウン ({Type: string, Duration: int}) (オプション) + data modify storage asset:artifact TypeCooldown.Type set value "summon" + data modify storage asset:artifact TypeCooldown.Duration set value 600 +# グローバルクールダウン (int) (オプション) + # data modify storage asset:artifact SpecialCooldown set value +# クールダウンによる使用不可のメッセージを非表示にするか否か (boolean) (オプション) + # data modify storage asset:artifact DisableCooldownMessage set value +# MP不足による使用不可のメッセージを非表示にするか否か (boolean) (オプション) + # data modify storage asset:artifact DisableMPMessage set value +# 破壊時の音を鳴らさないかどうか (boolean) (オプション) + # data modify storage asset:artifact DisableBreakSound set value +# 扱える神 (string[]) Wikiを参照 + data modify storage asset:artifact CanUsedGod set value ["Flora", "Nyaptov", "Rumor"] +# カスタムNBT (NBTCompound) 追加で指定したいNBT (オプション) + # data modify storage asset:artifact CustomNBT set value {} + +# 神器の入手用function + function asset:artifact/common/give diff --git a/Asset/data/asset/functions/artifact/1464.call_electric_catfish/register.mcfunction b/Asset/data/asset/functions/artifact/1464.call_electric_catfish/register.mcfunction new file mode 100644 index 0000000000..7b499633fe --- /dev/null +++ b/Asset/data/asset/functions/artifact/1464.call_electric_catfish/register.mcfunction @@ -0,0 +1,7 @@ +#> asset:artifact/1464.call_electric_catfish/register +# +# 神器プールへの登録処理 +# +# @within tag/function asset:artifact/register + +data modify storage asset:artifact RarityRegistry[3] append value [1464] \ No newline at end of file diff --git a/Asset/data/asset/functions/artifact/1464.call_electric_catfish/trigger/1.trigger.mcfunction b/Asset/data/asset/functions/artifact/1464.call_electric_catfish/trigger/1.trigger.mcfunction new file mode 100644 index 0000000000..f61580689b --- /dev/null +++ b/Asset/data/asset/functions/artifact/1464.call_electric_catfish/trigger/1.trigger.mcfunction @@ -0,0 +1,8 @@ +#> asset:artifact/1464.call_electric_catfish/trigger/1.trigger +# +# 指定したイベントタイミングで実行されるfunction +# +# @within tag/function asset:artifact/** + +# storage asset:idのmainhandに装備している神器のIDが入っているので比較し、~/2.check_condition.mcfunctionを実行する + execute if data storage asset:context id{mainhand:1464} run function asset:artifact/1464.call_electric_catfish/trigger/2.check_condition \ No newline at end of file diff --git a/Asset/data/asset/functions/artifact/1464.call_electric_catfish/trigger/2.check_condition.mcfunction b/Asset/data/asset/functions/artifact/1464.call_electric_catfish/trigger/2.check_condition.mcfunction new file mode 100644 index 0000000000..654970e486 --- /dev/null +++ b/Asset/data/asset/functions/artifact/1464.call_electric_catfish/trigger/2.check_condition.mcfunction @@ -0,0 +1,14 @@ +#> asset:artifact/1464.call_electric_catfish/trigger/2.check_condition +# +# 神器の発動条件をチェックします +# +# @within function asset:artifact/1464.call_electric_catfish/trigger/1.trigger + +# 神器の基本的な条件の確認を行うfunction、成功している場合CanUsedタグが付く + function asset:artifact/common/check_condition/mainhand + +# 追加チェック:地面に立っていないならCanUsed剝奪 + execute unless data entity @s[tag=CanUsed] {OnGround:1b} run tag @s remove CanUsed + +# CanUsedタグをチェックして3.main.mcfunctionを実行する + execute if entity @s[tag=CanUsed] run function asset:artifact/1464.call_electric_catfish/trigger/3.main diff --git a/Asset/data/asset/functions/artifact/1464.call_electric_catfish/trigger/3.main.mcfunction b/Asset/data/asset/functions/artifact/1464.call_electric_catfish/trigger/3.main.mcfunction new file mode 100644 index 0000000000..84ee3877a0 --- /dev/null +++ b/Asset/data/asset/functions/artifact/1464.call_electric_catfish/trigger/3.main.mcfunction @@ -0,0 +1,18 @@ +#> asset:artifact/1464.call_electric_catfish/trigger/3.main +# +# 神器のメイン処理部 +# +# @within function asset:artifact/1464.call_electric_catfish/trigger/2.check_condition + +# 基本的な使用時の処理(MP消費や使用回数の処理など)を行う + function asset:artifact/common/use/mainhand + +# ダメージ設定 + data modify storage api: Argument.FieldOverride.Damage set value 100.0f + data modify storage api: Argument.FieldOverride.AttackType set value "Physical" + data modify storage api: Argument.FieldOverride.ElementType set value "Thunder" + +# 本体召喚 + data modify storage api: Argument.ID set value 1160 + execute store result storage api: Argument.FieldOverride.UserID int 1 run scoreboard players get @s UserID + function api:object/summon diff --git a/Asset/data/asset/functions/object/1160.electric_catfish/_index.d.mcfunction b/Asset/data/asset/functions/object/1160.electric_catfish/_index.d.mcfunction new file mode 100644 index 0000000000..4539d86074 --- /dev/null +++ b/Asset/data/asset/functions/object/1160.electric_catfish/_index.d.mcfunction @@ -0,0 +1,8 @@ +#> asset:object/1160.electric_catfish/_index.d +# @private + +#> tag +# @within function asset:object/1160.electric_catfish/** + #declare tag 1160.Inactive + #declare tag 1160.SteppedOn + #declare objective 1160.Cooldown diff --git a/Asset/data/asset/functions/object/1160.electric_catfish/init/.mcfunction b/Asset/data/asset/functions/object/1160.electric_catfish/init/.mcfunction new file mode 100644 index 0000000000..4d4fedb514 --- /dev/null +++ b/Asset/data/asset/functions/object/1160.electric_catfish/init/.mcfunction @@ -0,0 +1,13 @@ +#> asset:object/1160.electric_catfish/init/ +# +# Objectのinit時の処理 +# +# @within asset:object/alias/1160/init + +# ブロックの中心にtp(召喚時にtpするとinitされない) + execute align xz run tp @s ~0.5 ~ ~0.5 + +# 演出 + execute align xz run particle poof ~0.5 ~0.5 ~0.5 0.1 0.1 0.1 0.05 5 + + playsound entity.player.hurt neutral @a ~ ~ ~ 1 0.5 diff --git a/Asset/data/asset/functions/object/1160.electric_catfish/load.mcfunction b/Asset/data/asset/functions/object/1160.electric_catfish/load.mcfunction new file mode 100644 index 0000000000..f8634b7652 --- /dev/null +++ b/Asset/data/asset/functions/object/1160.electric_catfish/load.mcfunction @@ -0,0 +1,9 @@ +#> asset:object/1160.electric_catfish/load +# +# Objectに利用するスコアボード等の初期化処理 +# +# @within tag/function asset:object/load + +#> 定義類はここに +# @within function asset:object/1160.electric_catfish/** + scoreboard objectives add 1160.Cooldown dummy diff --git a/Asset/data/asset/functions/object/1160.electric_catfish/register.mcfunction b/Asset/data/asset/functions/object/1160.electric_catfish/register.mcfunction new file mode 100644 index 0000000000..edb5c7263a --- /dev/null +++ b/Asset/data/asset/functions/object/1160.electric_catfish/register.mcfunction @@ -0,0 +1,22 @@ +#> asset:object/1160.electric_catfish/register +# +# Objectのデータを指定 +# +# @within function asset:object/alias/1160/register + +# 継承(オプション) + # data modify storage asset:object Extends append value + # function asset:object/extends +# 他のObjectに継承されることを許可するか (boolean) (オプション) + # data modify storage asset:object ExtendsSafe set value +# 継承されることを前提とした、抽象的なObjectであるかどうか(boolean) + data modify storage asset:object IsAbstract set value false +# Tickするかどうか(boolean) (オプション) + # data modify storage asset:object IsTicking set value + +# ID (int) + data modify storage asset:object ID set value 1160 +# フィールド(オプション) + data modify storage asset:object Field.Damage set value 0 + data modify storage asset:object Field.AttackType set value "" + data modify storage asset:object Field.ElementType set value "" diff --git a/Asset/data/asset/functions/object/1160.electric_catfish/summon/.mcfunction b/Asset/data/asset/functions/object/1160.electric_catfish/summon/.mcfunction new file mode 100644 index 0000000000..def67823ea --- /dev/null +++ b/Asset/data/asset/functions/object/1160.electric_catfish/summon/.mcfunction @@ -0,0 +1,8 @@ +#> asset:object/1160.electric_catfish/summon/ +# +# Object召喚処理の呼び出し時に実行されるfunction +# +# @within asset:object/alias/1160/summon + +# 元となるEntityを召喚する + summon item_display ~ ~ ~ {Tags:["ObjectInit", "Friend"], item:{id:"minecraft:stick", Count:1b, tag:{CustomModelData:20628}}} diff --git a/Asset/data/asset/functions/object/1160.electric_catfish/summon/debug.mcfunction b/Asset/data/asset/functions/object/1160.electric_catfish/summon/debug.mcfunction new file mode 100644 index 0000000000..2193b659ae --- /dev/null +++ b/Asset/data/asset/functions/object/1160.electric_catfish/summon/debug.mcfunction @@ -0,0 +1,10 @@ +#> asset:object/1160.electric_catfish/summon/debug +# +# 動作チェック用の召喚処理 使い終わったら消してもいいかも +# +# @user +# @private + +# 召喚 + data modify storage api: Argument.ID set value 1160 + function api:object/summon \ No newline at end of file diff --git a/Asset/data/asset/functions/object/1160.electric_catfish/tick/.mcfunction b/Asset/data/asset/functions/object/1160.electric_catfish/tick/.mcfunction new file mode 100644 index 0000000000..5e6209dd95 --- /dev/null +++ b/Asset/data/asset/functions/object/1160.electric_catfish/tick/.mcfunction @@ -0,0 +1,22 @@ +#> asset:object/1160.electric_catfish/tick/ +# +# Objectのtick時の処理 +# +# @within asset:object/alias/1160/tick + +# Tick加算 + scoreboard players add @s General.Object.Tick 1 + +# クールダウン + execute if score @s 1160.Cooldown matches 1.. run scoreboard players remove @s 1160.Cooldown 1 + execute if score @s 1160.Cooldown matches 0 run tag @s remove 1160.Inactive + +# 踏まれたどうかをチェック + execute unless entity @s[tag=1160.Inactive] positioned ~-0.5 ~ ~-0.5 as @e[type=#lib:living_without_player,dx=0,sort=nearest,limit=1] positioned ~ ~-0.8 ~ if entity @s[dx=0] run function asset:object/1160.electric_catfish/tick/check + execute if entity @e[tag=1160.SteppedOn,distance=..2] at @s run function asset:object/1160.electric_catfish/tick/attack + +# 足元にブロックがないなら消す + execute if block ~ ~-0.1 ~ #lib:no_collision/ run scoreboard players set @s General.Object.Tick 1200 + +# 消滅処理 + execute if score @s General.Object.Tick matches 1200.. run function asset:object/1160.electric_catfish/tick/kill diff --git a/Asset/data/asset/functions/object/1160.electric_catfish/tick/attack.mcfunction b/Asset/data/asset/functions/object/1160.electric_catfish/tick/attack.mcfunction new file mode 100644 index 0000000000..864bdfae5e --- /dev/null +++ b/Asset/data/asset/functions/object/1160.electric_catfish/tick/attack.mcfunction @@ -0,0 +1,32 @@ +#> asset:object/1160.electric_catfish/tick/attack +# +# Objectのtick時の処理 +# +# @within asset:object/1160.electric_catfish/tick/** + +# ダメージ設定 + data modify storage api: Argument.Damage set from storage asset:context this.Damage + data modify storage api: Argument.AttackType set from storage asset:context this.AttackType + data modify storage api: Argument.ElementType set from storage asset:context this.ElementType + +# SteppedOnタグがついたEntityが対象 + execute as @e[tag=1160.SteppedOn,distance=..2,limit=1] run function api:damage/ + +# 周囲のMobにもダメージ + execute store result storage api: Argument.Damage float 0.5 run data get storage asset:context this.Damage + execute positioned ~-3.5 ~ ~-3.5 as @e[type=#lib:living_without_player,tag=!1160.SteppedOn,dx=7,dz=7] positioned ~ ~-0.2 ~ if entity @s[dx=7,dz=7] run function api:damage/ + +# リセット + function api:damage/reset + tag @e[tag=1160.SteppedOn,distance=..2,limit=1] remove 1160.SteppedOn + +# 0.5秒のクールダウン + scoreboard players set @s 1160.Cooldown 10 + tag @s add 1160.Inactive + +# 演出 + particle dust 1 1 0 2 ~ ~ ~ 1.5 0.1 1.5 0 100 + + playsound entity.player.hurt neutral @a ~ ~ ~ 2 0.5 + playsound entity.allay.hurt neutral @a ~ ~ ~ 2 2.0 + playsound enchant.thorns.hit neutral @a ~ ~ ~ 2 1.0 diff --git a/Asset/data/asset/functions/object/1160.electric_catfish/tick/check.mcfunction b/Asset/data/asset/functions/object/1160.electric_catfish/tick/check.mcfunction new file mode 100644 index 0000000000..dd9568a316 --- /dev/null +++ b/Asset/data/asset/functions/object/1160.electric_catfish/tick/check.mcfunction @@ -0,0 +1,25 @@ +#> asset:object/1160.electric_catfish/tick/check +# +# +# +# @within asset:object/1160.electric_catfish/tick/** + +#> private +# @private + #declare score_holder $MotionX + #declare score_holder $MotionZ + +# 動いているなら踏んだ判定 + execute store result score $MotionX Temporary run data get entity @s Motion[0] 100 + execute store result score $MotionZ Temporary run data get entity @s Motion[2] 100 + + execute if score $MotionX Temporary matches ..-1 store result score $MotionX Temporary run data get entity @s Motion[0] -100 + execute if score $MotionZ Temporary matches ..-1 store result score $MotionZ Temporary run data get entity @s Motion[2] -100 + + scoreboard players operation $MotionX Temporary += $MotionZ Temporary + + execute if score $MotionX Temporary matches 1.. run tag @s add 1160.SteppedOn + +# リセット + scoreboard players reset $MotionX + scoreboard players reset $MotionZ diff --git a/Asset/data/asset/functions/object/1160.electric_catfish/tick/kill.mcfunction b/Asset/data/asset/functions/object/1160.electric_catfish/tick/kill.mcfunction new file mode 100644 index 0000000000..402624143e --- /dev/null +++ b/Asset/data/asset/functions/object/1160.electric_catfish/tick/kill.mcfunction @@ -0,0 +1,11 @@ +#> asset:object/1160.electric_catfish/tick/kill +# +# Object削除の処理 +# +# @within function asset:object/1160.electric_catfish/tick/ + +# 演出 + particle poof ~ ~0.5 ~ 0.1 0.1 0.1 0.05 5 + +# 消す + kill @s diff --git a/Asset/data/asset/functions/object/alias/1160/init.mcfunction b/Asset/data/asset/functions/object/alias/1160/init.mcfunction new file mode 100644 index 0000000000..3f38c93b29 --- /dev/null +++ b/Asset/data/asset/functions/object/alias/1160/init.mcfunction @@ -0,0 +1,8 @@ +#> asset:object/alias/1160/init +# +# Init処理のエイリアス +# +# @within asset_manager:object/init/init.m + +# 元のInit処理を呼び出す + function asset:object/1160.electric_catfish/init/ \ No newline at end of file diff --git a/Asset/data/asset/functions/object/alias/1160/register.mcfunction b/Asset/data/asset/functions/object/alias/1160/register.mcfunction new file mode 100644 index 0000000000..d0b9f30ca5 --- /dev/null +++ b/Asset/data/asset/functions/object/alias/1160/register.mcfunction @@ -0,0 +1,8 @@ +#> asset:object/alias/1160/register +# +# Objectのデータ指定処理のエイリアス +# +# @within asset_manager:object/summon/register.m + +# 元の登録処理を呼び出す + function asset:object/1160.electric_catfish/register \ No newline at end of file diff --git a/Asset/data/asset/functions/object/alias/1160/summon.mcfunction b/Asset/data/asset/functions/object/alias/1160/summon.mcfunction new file mode 100644 index 0000000000..6d0bd6c713 --- /dev/null +++ b/Asset/data/asset/functions/object/alias/1160/summon.mcfunction @@ -0,0 +1,8 @@ +#> asset:object/alias/1160/summon +# +# Object召喚処理のエイリアス +# +# @within asset_manager:object/summon/summon.m + +# 元の召喚処理を呼び出す + function asset:object/1160.electric_catfish/summon/ \ No newline at end of file diff --git a/Asset/data/asset/functions/object/alias/1160/tick.mcfunction b/Asset/data/asset/functions/object/alias/1160/tick.mcfunction new file mode 100644 index 0000000000..fe04214721 --- /dev/null +++ b/Asset/data/asset/functions/object/alias/1160/tick.mcfunction @@ -0,0 +1,8 @@ +#> asset:object/alias/1160/tick +# +# Tick時処理のエイリアス +# +# @within asset_manager:object/tick/tick.m + +# 元のTick処理を呼び出す + function asset:object/1160.electric_catfish/tick/ \ No newline at end of file diff --git a/Asset/data/asset/tags/functions/artifact/click.carrot_on_a_stick.json b/Asset/data/asset/tags/functions/artifact/click.carrot_on_a_stick.json index 40202c9557..f2247ecf16 100644 --- a/Asset/data/asset/tags/functions/artifact/click.carrot_on_a_stick.json +++ b/Asset/data/asset/tags/functions/artifact/click.carrot_on_a_stick.json @@ -1,5 +1,6 @@ { "values": [ + "asset:artifact/1464.call_electric_catfish/trigger/1.trigger", "asset:artifact/1306.will_o_wisp/trigger/1.trigger", "asset:artifact/1144.cradle_of_azure_moon/trigger/1.trigger", "asset:artifact/0005.musket_matchlock/trigger/1.trigger", @@ -176,4 +177,4 @@ "asset:artifact/2001.staff_of_the_willless/trigger/1.trigger", "asset:artifact/0019.scripture/trigger/1.trigger" ] -} +} \ No newline at end of file diff --git a/Asset/data/asset/tags/functions/artifact/give.json b/Asset/data/asset/tags/functions/artifact/give.json index 16715fe3c7..52f6ac1a7b 100644 --- a/Asset/data/asset/tags/functions/artifact/give.json +++ b/Asset/data/asset/tags/functions/artifact/give.json @@ -1,5 +1,6 @@ { "values": [ + "asset:artifact/1464.call_electric_catfish/give/1.trigger", "asset:artifact/1252.fox_candle/give/1.trigger", "asset:artifact/1343.coffee_milk_pack/give/1.trigger", "asset:artifact/1342.fruit_milk_pack/give/1.trigger", @@ -530,4 +531,4 @@ "asset:artifact/0735.collision_plate/give/1.trigger", "asset:artifact/0745.blade_of_whirlwind/give/1.trigger" ] -} +} \ No newline at end of file diff --git a/Asset/data/asset/tags/functions/artifact/register.json b/Asset/data/asset/tags/functions/artifact/register.json index 7e92660e5a..77c902aec5 100644 --- a/Asset/data/asset/tags/functions/artifact/register.json +++ b/Asset/data/asset/tags/functions/artifact/register.json @@ -1,5 +1,6 @@ { "values": [ + "asset:artifact/1464.call_electric_catfish/register", "asset:artifact/1252.fox_candle/register", "asset:artifact/1343.coffee_milk_pack/register", "asset:artifact/1342.fruit_milk_pack/register", @@ -308,4 +309,4 @@ "asset:artifact/1027.fire_of_rebirth/register", "asset:artifact/1111.rod_o_redeem/register" ] -} +} \ No newline at end of file diff --git a/Asset/data/asset/tags/functions/object/load.json b/Asset/data/asset/tags/functions/object/load.json index 370cd7f01b..3d8f2a2f73 100644 --- a/Asset/data/asset/tags/functions/object/load.json +++ b/Asset/data/asset/tags/functions/object/load.json @@ -1,5 +1,6 @@ { "values": [ + "asset:object/1160.electric_catfish/load", "asset:object/1061.azure_jelly/load", "asset:object/2251.wall_laser_clock/load", "asset:object/2212.eclael_upper_shot/load",