Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#> asset:effect/0011.defense_water_debuff/_/end
#
# Effectの効果の終了時に実行されるfunction
#
# @within tag/function asset:effect/end

execute if data storage asset:context {id:11} run function asset:effect/0011.defense_water_debuff/end/
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#> asset:effect/0011.defense_water_debuff/_/given
#
# Effectが付与された時に実行されるfunction
#
# @within tag/function asset:effect/given

execute if data storage asset:context {id:11} run function asset:effect/0011.defense_water_debuff/given/
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#> asset:effect/0011.defense_water_debuff/_/re-given
#
# Effectが上書きされた時に実行されるfunction
#
# @within tag/function asset:effect/re-given

execute if data storage asset:context {id:11} run function asset:effect/0011.defense_water_debuff/re-given/
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#> asset:effect/0011.defense_water_debuff/_/register
#
#
#
# @within tag/function asset:effect/register

execute if data storage asset:context {id:11} run function asset:effect/0011.defense_water_debuff/register
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#> asset:effect/0011.defense_water_debuff/_/remove
#
# Effectが神器や牛乳によって削除された時に実行されるfunction
#
# @within tag/function asset:effect/remove

execute if data storage asset:context {id:11} run function asset:effect/0011.defense_water_debuff/remove/
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#> asset:effect/0011.defense_water_debuff/end/
#
# Effectの効果が切れた時の処理
#
# @within function asset:effect/0011.defense_water_debuff/_/end

# 削除
function asset:effect/0011.defense_water_debuff/modifier/remove
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#> asset:effect/0011.defense_water_debuff/given/
#
# Effectが付与された時の処理
#
# @within function asset:effect/0011.defense_water_debuff/_/given

# 付与
function asset:effect/0011.defense_water_debuff/modifier/add
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#> asset:effect/0011.defense_water_debuff/modifier/add
#
#
#
# @within function
# asset:effect/0011.defense_water_debuff/given/
# asset:effect/0011.defense_water_debuff/re-given/

# 補正を付与する
data modify storage api: Argument.UUID set value [I;1,3,-1,0]
data modify storage api: Argument.UUID[2] set from storage asset:context originID
execute store result storage api: Argument.Amount double -0.10 run data get storage asset:context Stack 1
data modify storage api: Argument.Operation set value "multiply"
function api:modifier/defense/water/add
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#> asset:effect/0011.defense_water_debuff/modifier/remove
#
#
#
# @within function
# asset:effect/0011.defense_water_debuff/end/
# asset:effect/0011.defense_water_debuff/re-given/
# asset:effect/0011.defense_water_debuff/remove/

# 補正を付与する
data modify storage api: Argument.UUID set value [I;1,3,-1,0]
data modify storage api: Argument.UUID[2] set from storage asset:context originID
function api:modifier/defense/water/remove
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#> asset:effect/0011.defense_water_debuff/re-given/
#
# Effectが上書きされた時の処理
#
# @within function asset:effect/0011.defense_water_debuff/_/re-given

# 削除
function asset:effect/0011.defense_water_debuff/modifier/remove
# 付与
function asset:effect/0011.defense_water_debuff/modifier/add
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
#> asset:effect/0011.defense_water_debuff/register
#
# Effectのデータを指定
#
# @within function asset:effect/0011.defense_water_debuff/_/register

# ExtendsSafe (boolean) (default = false)
data modify storage asset:effect ExtendsSafe set value true
# ID (int)
data modify storage asset:effect ID set value 11
# 名前 (TextComponentString)
data modify storage asset:effect Name set value '{"text":"水属性被ダメージ上昇"}'
# 説明文 (TextComponentString[])
data modify storage asset:effect Description set value ['{"text":"水属性被ダメージが上昇する"}']
# 効果時間 (int) (default = API || error)
# data modify storage asset:effect Duration set value
# スタック (int) (default = API || 1)
# data modify storage asset:effect Stack set value
# 効果時間の操作方法 (default = API || "replace")
# data modify storage asset:effect DurationOperation set value
# スタックの操作方法 (default = API || "replace")
# data modify storage asset:effect StackOperation set value
# 最大効果時間 (int) (default = 2147483647)
# data modify storage asset:effect MaxDuration set value
# 最大スタック (int) (default = 2147483647)
data modify storage asset:effect MaxStack set value 100
# 悪い効果か否か (boolean)
data modify storage asset:effect IsBadEffect set value true
# 死亡時のエフェクトの処理 (default = "remove")
# data modify storage asset:effect ProcessOnDied set value
# 消すのに必要なレベル (int) (default = 1)
data modify storage asset:effect RequireClearLv set value 1
# エフェクトをUIに表示するか (boolean) (default = true)
# data modify storage asset:effect Visible set value
# エフェクトのスタックををUIに表示するか (boolean) (default = true)
# data modify storage asset:effect StackVisible set value

# フィールド
# data modify storage asset:effect Field set value {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#> asset:effect/0011.defense_water_debuff/remove/
#
# Effectが削除された時の処理
#
# @within function asset:effect/0011.defense_water_debuff/_/remove

# 削除
function asset:effect/0011.defense_water_debuff/modifier/remove
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#> asset:effect/0061.defense_water_debuff/_/register
#
#
#
# @within tag/function asset:effect/register

execute if data storage asset:context {id:61} run function asset:effect/0061.defense_water_debuff/register
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#> asset:effect/0061.defense_water_debuff/register
#
# Effectのデータを指定
#
# @within function asset:effect/0061.defense_water_debuff/_/register

# 継承 (int)
data modify storage asset:effect Extends append value 11
function asset:effect/extends
# ID (int)
data modify storage asset:effect ID set value 61
# 消すのに必要なレベル (int) (default = 1)
data modify storage asset:effect RequireClearLv set value 2
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#> asset:mob/0323.mini_elder_guardian/death/
#
# Mobの死亡時の処理
#
# @within function asset:mob/alias/323/death

# サウンド
playsound minecraft:entity.elder_guardian.death hostile @a ~ ~ ~ 1.5 1.4
playsound minecraft:entity.elder_guardian.death_land hostile @a ~ ~ ~ 1.5 1
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#> asset:mob/0323.mini_elder_guardian/hurt/
#
# Mobのダメージ時の処理
#
# @within function asset:mob/alias/323/hurt

# サウンド
playsound minecraft:entity.elder_guardian.hurt hostile @a ~ ~ ~ 2 1.4

# HurtTime
data modify storage asset:context this.HurtTime set value 20
data modify entity @s NoAI set value 0b
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
#> asset:mob/0323.mini_elder_guardian/register
#
# Mobのデータを指定
#
# @within function asset:mob/alias/323/register

# 継承(オプション)
data modify storage asset:mob Extends append value 2003
function asset:mob/extends
# 他のモブに継承されることを許可するか (boolean) (オプション)
data modify storage asset:mob ExtendsSafe set value true
# 継承されることを前提とした、抽象的なモブであるかどうか(boolean)
data modify storage asset:mob IsAbstract set value false
# ID (int)
data modify storage asset:mob ID set value 323
# Type (string) Wikiを参照
data modify storage asset:mob Type set value "Enemy"
# 干渉可能か否か (boolean)
data modify storage asset:mob Interferable set value true
# 名前 (TextComponentString) (オプション)
data modify storage asset:mob Name set value '{"text":"ミニエルダーガーディアン","color":"#5e69d9"}'
# Mobの説明文 (TextComponentString[]) (オプション)
data modify storage asset:mob Lore set value ['{"text":"ちっさいエルダーガーディアン。","color":"white"}','{"text":"小さくても火力は高いし、しっかり呪う能力も健在である。","color":"white"}']
# 武器
# メインハンド (Compound(Item)) (オプション)
# data modify storage asset:mob Weapon.Mainhand set value
# オフハンド (Compound(Item)) (オプション)
# data modify storage asset:mob Weapon.Offhand set value
# 武器ドロップ率 ([float, float]) (オプション)
# data modify storage asset:mob WeaponDropChances set value
# 防具
# 頭 (Compound(Item)) (オプション)
data modify storage asset:mob Armor.Head set value {id:"minecraft:stick",Count:1b,tag:{CustomModelData:20619}}
# 胴 (Compound(Item)) (オプション)
# data modify storage asset:mob Armor.Chest set value
# 脚 (Compound(Item)) (オプション)
# data modify storage asset:mob Armor.Legs set value
# 足 (Compound(Item)) (オプション)
# data modify storage asset:mob Armor.Feet set value
# 防具ドロップ率 ([float, float]) (オプション)
# data modify storage asset:mob ArmorDropChances set value
# 体力 (double) (オプション)
data modify storage asset:mob Health set value 1500
# 攻撃力 (double) (オプション)
# data modify storage asset:mob AttackDamage set value
# 防御力 (double) (オプション) // 被ダメージがある程度大きい場合1ptにつき0.8%カット、小さい場合1ptにつき約4%カット 20pt以上は頭打ち
# data modify storage asset:mob Defense set value
# 特殊防御力 (double) (オプション) // 4pointにつきダメージを大きく減らす
# data modify storage asset:mob SpecialDefense set value
# 移動速度 (double) (オプション)
data modify storage asset:mob Speed set value 0.08
# 索敵範囲 (double) (オプション)
# data modify storage asset:mob FollowRange set value
# ノックバック耐性 (double) (オプション)
# data modify storage asset:mob KnockBackResist set value
# 属性倍率 // 1.0fで100% 最低でも25%は軽減されずに入る
# 物理倍率 (float) (オプション)
# data modify storage asset:mob Resist.Physical set value
# 魔法倍率 (float) (オプション)
# data modify storage asset:mob Resist.Magic set value
# 火倍率 (float) (オプション)
# data modify storage asset:mob Resist.Fire set value
# 水倍率 (float) (オプション)
data modify storage asset:mob Resist.Water set value 0.7
# 雷倍率 (float) (オプション)
data modify storage asset:mob Resist.Thunder set value 1.4
# フィールド

# ダメージ
data modify storage asset:mob Field.Damage set value 5.5f
# 呪い(採掘速度低下)クールダウン
# 召喚されてからNtick後にデバフを付与したいため、初期値は0とはしない
data modify storage asset:mob Field.CurseCooldown._ set value 160
data modify storage asset:mob Field.CurseCooldown.Max set value 800
# 旋回力
data modify storage asset:mob Field.Rotate set value 3000
# 疑似HurtTime
data modify storage asset:mob Field.HurtTime set value -1
# 攻撃モード
data modify storage asset:mob Field.IsAttackMode set value false
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#> asset:mob/0323.mini_elder_guardian/summon/
#
# Object召喚処理の呼び出し時に実行されるfunction
#
# @within asset:mob/alias/323/summon

# 元となるEntityを召喚する
summon zombie ~ ~ ~ {Silent:1b,IsBaby:0b,NoAI:1b,Tags:["MobInit","ProcessCommonTag","AlwaysInvisible","AlwaysSlowFall"],DeathLootTable:"minecraft:entities/elder_guardian"}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#> asset:mob/0323.mini_elder_guardian/tick/
#
# Mobのtick時の処理
#
# @within asset:mob/alias/323/tick

# 疑似HurtTimeによるのけぞり管理
execute store result storage asset:context this.HurtTime int 0.9999999999 run data get storage asset:context this.HurtTime
execute if data storage asset:context this{HurtTime:0} run data modify entity @s NoAI set value 1b
execute if data storage asset:context this{HurtTime:0} run data modify storage asset:context this.HurtTime set value -1

# 呪い(採掘速度低下)
execute store result storage asset:context this.CurseCooldown._ int 0.9999999999 run data get storage asset:context this.CurseCooldown._
execute if data storage asset:context this.CurseCooldown{_:0} run function asset:mob/0323.mini_elder_guardian/tick/event/curse/
execute if data storage asset:context this.CurseCooldown{_:0} run data modify storage asset:context this.CurseCooldown._ set from storage asset:context this.CurseCooldown.Max

# 付近にプレイヤーがいたら攻撃待機
execute if entity @p[gamemode=!spectator,distance=..8] run data modify storage asset:context this.IsAttackMode set value true

# 攻撃モード
execute if data storage asset:context this{IsAttackMode:true} run function asset:mob/0323.mini_elder_guardian/tick/event/attack/

# 遠くに離れたら攻撃モード終了
execute if data storage asset:context this{IsAttackMode:true} unless entity @p[gamemode=!spectator,distance=..15] run function asset:mob/0323.mini_elder_guardian/tick/event/attack/reset

# 攻撃中でない && HurtTime中ではない、ならsuper.tick
execute if data storage asset:context this{IsAttackMode:false,HurtTime:-1} run function asset:mob/super.tick
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#> asset:mob/0323.mini_elder_guardian/tick/event/attack/
#
#
#
# @within function asset:mob/0323.mini_elder_guardian/tick/

# Tick加算
scoreboard players add @s General.Mob.Tick 1

# プレイヤーのターゲティング
execute if score @s General.Mob.Tick matches 0..39 anchored eyes facing entity @p[gamemode=!spectator,distance=..64] eyes positioned ^ ^ ^-100 rotated as @s positioned ^ ^ ^-500 facing entity @s eyes positioned as @s anchored feet positioned ^ ^ ^ run tp @s ^ ^ ^ ~ ~
execute if score @s General.Mob.Tick matches 40.. anchored eyes facing entity @p[gamemode=!spectator,distance=..64] eyes positioned ^ ^ ^-100 rotated as @s positioned ^ ^ ^-1500 facing entity @s eyes positioned as @s anchored feet positioned ^ ^ ^ run tp @s ^ ^ ^ ~ ~

# 照射開始動作
execute if score @s General.Mob.Tick matches 40 run function asset:mob/0323.mini_elder_guardian/tick/event/attack/start

# レーザー照射
execute if score @s General.Mob.Tick matches 40..159 anchored eyes positioned ^ ^ ^ run function asset:mob/0323.mini_elder_guardian/tick/event/attack/laser/

# 攻撃終了後、ちょっと泳ぐ
execute if score @s General.Mob.Tick matches 160..240 run function asset:mob/call.m {method:"get_speed"}
execute at @s if score @s General.Mob.Tick matches 160..240 run function asset:mob/call.m {method:"rotate"}
execute at @s if score @s General.Mob.Tick matches 160..240 run function asset:mob/call.m {method:"move"}

# 攻撃動作終了
execute if score @s General.Mob.Tick matches 240.. run function asset:mob/0323.mini_elder_guardian/tick/event/attack/reset
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#> asset:mob/0323.mini_elder_guardian/tick/event/attack/laser/
#
#
#
# @within function asset:mob/0323.mini_elder_guardian/tick/event/attack/

# 予告の黄色レーザー
execute if score @s General.Mob.Tick matches 40..100 run function asset:mob/0323.mini_elder_guardian/tick/event/attack/laser/yellow

# 判定発生開始サウンド
execute if score @s General.Mob.Tick matches 100 run playsound minecraft:entity.guardian.attack hostile @a ~ ~ ~ 2

# 攻撃の緑レーザー
execute if score @s General.Mob.Tick matches 100..160 run function asset:mob/0323.mini_elder_guardian/tick/event/attack/laser/green

# レーザーの音
execute if score @s General.Mob.Tick matches 100..160 run function asset:mob/0323.mini_elder_guardian/tick/event/attack/laser/sound
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#> asset:mob/0323.mini_elder_guardian/tick/event/attack/laser/damage
#
#
#
# @within function asset:mob/0323.mini_elder_guardian/tick/event/attack/laser/green

# ダメージ設定
data modify storage api: Argument.Damage set from storage asset:context this.Damage
data modify storage api: Argument.AttackType set value "Magic"
data modify storage api: Argument.ElementType set value "Water"
execute as @e[type=zombie,tag=this,distance=..40,sort=nearest,limit=1] run function api:damage/modifier
function api:damage/
function api:damage/reset
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#> asset:mob/0323.mini_elder_guardian/tick/event/attack/laser/green
#
#
#
# @within function
# asset:mob/0323.mini_elder_guardian/tick/event/attack/laser/
# asset:mob/0323.mini_elder_guardian/tick/event/attack/laser/green

#> Private
# @private
#declare score_holder $DamageInterval

# パーティクル
particle dust 0 1 0 0.5 ^ ^ ^ 0 0 0 0 1 force @a[distance=..30]
particle dust 0 1 0 0.5 ^ ^ ^0.5 0 0 0 0 1 force @a[distance=..30]
particle dust 0 1 0 0.5 ^ ^ ^-0.5 0 0 0 0 1 force @a[distance=..30]
particle dust 0 1 0 0.5 ^ ^ ^0.25 0 0 0 0 1 force @a[distance=..30]
particle dust 0 1 0 0.5 ^ ^ ^-0.25 0 0 0 0 1 force @a[distance=..30]

# 実行時間を移す
scoreboard players operation $DamageInterval Temporary = @s General.Mob.Tick

# 数Tickごとにダメージ
scoreboard players operation $DamageInterval Temporary %= $5 Const
execute if score $DamageInterval Temporary matches 0 positioned ~-0.5 ~-0.5 ~-0.5 as @p[tag=!PlayerShouldInvulnerable,dx=0] run function asset:mob/0323.mini_elder_guardian/tick/event/attack/laser/damage
scoreboard players reset $DamageInterval Temporary

# 壁がなかったり、プレイヤーにあたったりしなければ再帰
execute if entity @s[distance=..15] positioned ~-0.5 ~-0.5 ~-0.5 unless entity @p[gamemode=!spectator,dx=0] positioned ~0.5 ~0.5 ~0.5 positioned ^ ^ ^1 if block ~ ~ ~ #lib:no_collision/ run function asset:mob/0323.mini_elder_guardian/tick/event/attack/laser/green
Loading
Loading