Skip to content

Commit b41b07a

Browse files
authored
🍱 [Mob213] TerribleSonicBomberと愉快な仲間たちの追加 (#443)
1 parent 7f224fa commit b41b07a

File tree

116 files changed

+1895
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

116 files changed

+1895
-0
lines changed
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
#> asset:mob/0213.terrible_sonic_bomber/_index.d
2+
# @private
3+
4+
#> tag
5+
# @within
6+
# function asset:mob/0213.terrible_sonic_bomber/**
7+
# function asset:mob/0214.drone/**
8+
#declare tag 5X.Centre #旋回中心座標を示す、基本的には呪われた剣の位置と一致する。イギリス綴りなので誤字ではない
9+
10+
#> tag_inter_object
11+
# @within
12+
# function asset:mob/0213.terrible_sonic_bomber/**
13+
# function asset:object/2083.brimstone/**
14+
#declare tag 5X.BrimstoneTarget #旋回中心座標を示す、基本的には呪われた剣の位置と一致する。イギリス綴りなので誤字ではない
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#> asset:mob/0213.terrible_sonic_bomber/death/
2+
#
3+
# Mobの死亡時の処理
4+
#
5+
# @within function asset:mob/alias/213/death
6+
7+
# super
8+
function asset:mob/super.death
9+
10+
# remove markers
11+
kill @e[tag=5X.Centre]
12+
13+
# remove objects and mobs
14+
execute as @e[scores={ObjectID=2082..2088}] on passengers run kill @s
15+
execute as @e[scores={MobID=214}] run function api:mob/remove
16+
kill @e[scores={ObjectID=2082..2088}]
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#> asset:mob/0213.terrible_sonic_bomber/hurt/
2+
#
3+
# Mobのダメージ時の処理
4+
#
5+
# @within function asset:mob/alias/213/hurt
6+
7+
# super
8+
function asset:mob/super.hurt
9+
10+
# TODO 被弾時の演出を書く
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
#> asset:mob/0213.terrible_sonic_bomber/init/
2+
#
3+
# Mobのinit時の処理
4+
#
5+
# @within asset:mob/alias/213/init
6+
7+
#> prv
8+
# @private
9+
#declare score_holder $initial_motion_end_time
10+
11+
#モブの見た目をライドする
12+
# アニジャバのsummonを実行
13+
# アニジャバのrootをファントムに乗せる
14+
# TODO:召喚時につけなきゃいけないタグを確認する
15+
16+
17+
# super
18+
function asset:mob/super.init
19+
20+
#ファントムのNBTをいじる
21+
data modify entity @s Size set value 32
22+
23+
#モブのデータに以下の情報を記録
24+
# 初期モーション終了時間を記録
25+
execute store result score $initial_motion_end_time Temporary run time query gametime
26+
execute store result storage asset:context this.initial_motion_end_time int 1 run scoreboard players add $initial_motion_end_time Temporary 30
27+
28+
# 次回攻撃時刻を記録
29+
execute store result storage asset:context this.next_attack_time int 1 run scoreboard players add $initial_motion_end_time Temporary 120
30+
31+
# 旋回中心座標を示すマーカーを置く
32+
summon marker ~ ~ ~ {Tags:["Uninterferable","5X.Centre"]}
33+
34+
# 対空砲召喚
35+
data modify storage api: Argument.ID set value 2088
36+
function api:object/summon
37+
38+
39+
#タイトルで何をやるか説明
40+
title @a[distance=..128] title {"text":"対空砲を守り敵を迎撃せよ","color":"white","bold":true}
41+
42+
43+
# reset
44+
scoreboard players reset $initial_motion_end_time Temporary
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
#> asset:mob/0213.terrible_sonic_bomber/register
2+
#
3+
# Mobのデータを指定
4+
#
5+
# @within function asset:mob/alias/213/register
6+
7+
#継承 (int) (オプション)
8+
data modify storage asset:mob Extends append value 2000
9+
function asset:mob/extends
10+
# 他のモブに継承されることを許可するか (boolean) (オプション)
11+
# data modify storage asset:mob ExtendsSafe set value
12+
# 継承されることを前提とした、抽象的なモブであるかどうか(boolean)
13+
data modify storage asset:mob IsAbstract set value false
14+
# ID (int)
15+
data modify storage asset:mob ID set value 213
16+
# Type (string) Wikiを参照
17+
data modify storage asset:mob Type set value "Enemy.Boss"
18+
# 干渉可能か否か (boolean)
19+
data modify storage asset:mob Interferable set value true
20+
# 名前 (TextComponentString) (オプション)
21+
data modify storage asset:mob Name set value '{"text":"Terrible Sonic Bomber"}'
22+
# Mobの説明文 (TextComponentString[]) (オプション)
23+
data modify storage asset:mob Lore set value ['{"text":"TBD"}']
24+
# 武器
25+
# メインハンド (Compound(Item)) (オプション)
26+
# data modify storage asset:mob Weapon.Mainhand set value
27+
# オフハンド (Compound(Item)) (オプション)
28+
# data modify storage asset:mob Weapon.Offhand set value
29+
# 武器ドロップ率 ([float, float]) (オプション)
30+
# data modify storage asset:mob WeaponDropChances set value
31+
# 防具
32+
# 頭 (Compound(Item)) (オプション)
33+
# data modify storage asset:mob Armor.Head set value
34+
# 胴 (Compound(Item)) (オプション)
35+
# data modify storage asset:mob Armor.Chest set value
36+
# 脚 (Compound(Item)) (オプション)
37+
# data modify storage asset:mob Armor.Legs set value
38+
# 足 (Compound(Item)) (オプション)
39+
# data modify storage asset:mob Armor.Feet set value
40+
# 防具ドロップ率 ([float, float]) (オプション)
41+
# data modify storage asset:mob ArmorDropChances set value
42+
# 体力 (double) (オプション)
43+
data modify storage asset:mob Health set value 20000
44+
# 攻撃力 (double) (オプション)
45+
# data modify storage asset:mob AttackDamage set value
46+
# 防御力 (double) (オプション) // 被ダメージがある程度大きい場合1ptにつき0.8%カット、小さい場合1ptにつき約4%カット 20pt以上は頭打ち
47+
data modify storage asset:mob Defense set value 0
48+
# 特殊防御力 (double) (オプション) // 4pointにつきダメージを大きく減らす
49+
# data modify storage asset:mob SpecialDefense set value
50+
# 移動速度 (double) (オプション)
51+
# data modify storage asset:mob Speed set value
52+
# 索敵範囲 (double) (オプション)
53+
# data modify storage asset:mob FollowRange set value
54+
# ノックバック耐性 (double) (オプション)
55+
# data modify storage asset:mob KnockBackResist set value
56+
# 属性倍率 // 1.0fで100% 最低でも25%は軽減されずに入る
57+
# 物理倍率 (float) (オプション)
58+
# data modify storage asset:mob Resist.Physical set value
59+
# 魔法倍率 (float) (オプション)
60+
data modify storage asset:mob Resist.Magic set value 0.4
61+
# 火倍率 (float) (オプション)
62+
# data modify storage asset:mob Resist.Fire set value
63+
# 水倍率 (float) (オプション)
64+
# data modify storage asset:mob Resist.Water set value
65+
# 雷倍率 (float) (オプション)
66+
data modify storage asset:mob Resist.Thunder set value 0.25
67+
# フィールド
68+
data modify storage asset:mob Field.TargetCoordinates set value []
69+
data modify storage asset:mob Field.UsingWeapon set value ""
70+
data modify storage asset:mob Field.AttackDistance set value 50
71+
data modify storage asset:mob Field.InitialMotionTime set value 200
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
#> asset:mob/0213.terrible_sonic_bomber/remove/
2+
#
3+
# 天使が居なくなる際に実行される処理
4+
#
5+
# @within asset:mob/alias/213/remove
6+
7+
# Todo: ミサイルを消す
8+
# Todo: 対空砲を消す
9+
10+
# super
11+
function asset:mob/super.remove
12+
13+
# remove markers
14+
kill @e[tag=5X.Centre]
15+
16+
# remove objects
17+
execute as @e[scores={ObjectID=2082..2088}] on passengers run kill @s
18+
execute as @e[scores={MobID=214}] run function api:mob/remove
19+
kill @e[scores={ObjectID=2082..2088}]
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
#> asset:mob/0213.terrible_sonic_bomber/summon/
2+
#
3+
# Object召喚処理の呼び出し時に実行されるfunction
4+
#
5+
# @within asset:mob/alias/213/summon
6+
7+
# 元となるEntityを召喚する
8+
summon phantom ~ ~ ~ {Tags:["MobInit","AntiBurn"],DeathLootTable:"empty",NoAI:1b}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#> asset:mob/0213.terrible_sonic_bomber/summon/debug
2+
#
3+
# 動作チェック用の召喚処理 使い終わったら消してもいいかも
4+
#
5+
# @user
6+
# @private
7+
8+
# 召喚
9+
data modify storage api: Argument.ID set value 213
10+
function api:mob/summon
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
#> asset:mob/0213.terrible_sonic_bomber/tick/
2+
#
3+
# Mobのtick時の処理
4+
#
5+
# @within asset:mob/alias/213/tick
6+
7+
#> prv
8+
# @private
9+
#declare score_holder $current_gametime
10+
#declare score_holder $initial_motion_end_time
11+
#declare score_holder $next_attack_time
12+
13+
# 現在時間を記録
14+
execute store result score $current_gametime Temporary run time query gametime
15+
16+
17+
# 初期モーション終了時間前の場合
18+
# 上へゆっくり昇っていく
19+
execute store result score $initial_motion_end_time Temporary run data get storage asset:context this.initial_motion_end_time
20+
execute if score $initial_motion_end_time Temporary > $current_gametime Temporary run function asset:mob/0213.terrible_sonic_bomber/tick/motions/initial_motion
21+
22+
23+
# 初期モーション終了時間ぴったり
24+
# モデルを表示
25+
# TBD
26+
27+
# それ以降
28+
29+
execute if score $initial_motion_end_time Temporary < $current_gametime Temporary store result score $next_attack_time Temporary run data get storage asset:context this.next_attack_time
30+
31+
# 巡行移動モーション
32+
execute if score $initial_motion_end_time Temporary < $current_gametime Temporary if score $next_attack_time Temporary >= $current_gametime Temporary run function asset:mob/0213.terrible_sonic_bomber/tick/motions/cruise_motion
33+
34+
# 攻撃モーション準備
35+
execute if score $initial_motion_end_time Temporary < $current_gametime Temporary if score $next_attack_time Temporary = $current_gametime Temporary run function asset:mob/0213.terrible_sonic_bomber/tick/motions/attack_motion_prepare
36+
37+
# 攻撃モーション実行
38+
execute if score $initial_motion_end_time Temporary < $current_gametime Temporary if score $next_attack_time Temporary < $current_gametime Temporary run function asset:mob/0213.terrible_sonic_bomber/tick/motions/attack_motion
39+
40+
#tellraw @a [{"score":{"objective":"Temporary","name":"$next_attack_time"}}]
41+
42+
43+
# reset
44+
scoreboard players reset $initial_motion_end_time Temporary
45+
scoreboard players reset $current_gametime Temporary
46+
scoreboard players reset $next_attack_time Temporary
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
#> asset:mob/0213.terrible_sonic_bomber/tick/motions/attack_motion
2+
#
3+
#
4+
#
5+
# @within function asset:mob/0213.terrible_sonic_bomber/tick/
6+
7+
#> prv
8+
# @private
9+
#declare score_holder $current_gametime_for_attack
10+
#declare score_holder $attack_start_time
11+
#declare score_holder $attack_end_time
12+
#declare score_holder $use_weapon
13+
#declare score_holder $flare_time
14+
15+
# 現在時間を記録
16+
execute store result score $current_gametime_for_attack Temporary run time query gametime
17+
18+
# 移動処理
19+
# 中心座標を中心に旋回
20+
execute unless entity @e[tag=5X.Centre,distance=..105] facing entity @e[tag=5X.Centre,distance=..128,limit=1] eyes rotated ~80 0 run tp @s ~ ~ ~ ~ ~
21+
22+
# 直進
23+
execute rotated as @s run tp @s ^ ^ ^3
24+
25+
# 対空砲付近を飛ぶときはフレアを出す(3tickおき)
26+
execute store result score $flare_time Temporary run time query gametime
27+
scoreboard players operation $flare_time Temporary %= $3 Const
28+
execute if entity @e[tag=5X.Centre,distance=..60] if score $flare_time Temporary matches 0 run particle minecraft:lava ^ ^-1 ^-2 1.5 0 1.5 1 24 force
29+
30+
31+
# 攻撃処理
32+
# 使用武器を取得
33+
execute store result score $use_weapon Temporary run data get storage asset:context this.use_weapon
34+
35+
# 攻撃開始時刻になったら攻撃開始
36+
execute store result score $attack_start_time Temporary run data get storage asset:context this.attack_start_time
37+
execute store result score $attack_end_time Temporary run data get storage asset:context this.attack_end_time
38+
39+
execute if score $current_gametime_for_attack Temporary = $attack_start_time Temporary if score $current_gametime_for_attack Temporary < $attack_end_time Temporary run function asset:mob/0213.terrible_sonic_bomber/tick/motions/use_weapon
40+
41+
42+
# 攻撃終了後の処理
43+
execute if score $current_gametime_for_attack Temporary >= $attack_end_time Temporary run function asset:mob/0213.terrible_sonic_bomber/tick/motions/set_next_attack_time
44+
execute if score $current_gametime_for_attack Temporary = $attack_end_time Temporary run function asset:mob/0213.terrible_sonic_bomber/tick/motions/escape_after_attack
45+
46+
#tellraw @a [{"text": "use_weapon"},{"score":{"objective":"Temporary","name":"$use_weapon"}}]
47+
#tellraw @a [{"text": "attack_start_time"},{"score":{"objective":"Temporary","name":"$use_weapon"}}]
48+
49+
# reset
50+
scoreboard players reset $current_gametime_for_attack Temporary
51+
scoreboard players reset $attack_start_time Temporary
52+
scoreboard players reset $attack_end_time Temporary
53+
scoreboard players reset $use_weapon Temporary
54+
scoreboard players reset $flare_time Temporary

0 commit comments

Comments
 (0)