Skip to content
This repository was archived by the owner on Oct 29, 2025. It is now read-only.

Commit 1c263b1

Browse files
committed
refactor magic circle
1 parent eff3afa commit 1c263b1

File tree

16 files changed

+3194
-1394
lines changed

16 files changed

+3194
-1394
lines changed

assets/bgm/海岸4.ogg

2.19 MB
Binary file not shown.

assets/level.ldtk

Lines changed: 2943 additions & 978 deletions
Large diffs are not rendered by default.

assets/registry.game.ron

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,11 @@ GameRegistry(
7070
title: "",
7171
appendix: ""
7272
),
73+
"bgm/海岸4.ogg": (
74+
author: "",
75+
title: "",
76+
appendix: ""
77+
),
7378
// 拠点
7479
"bgm/最果てのルージュ.ogg": (
7580
author: "のる",
@@ -215,17 +220,5 @@ GameRegistry(
215220
de: "Zauber mit Mausklick wirken",
216221
ko: "마우스 클릭으로 주문 시전",
217222
ru: "Кастуйте заклинания щелчком мыши",
218-
),
219-
tutorial_magic_circle: (
220-
ja: "魔法陣の上に乗ると転送開始",
221-
en: "Stand on the magic circle to start teleporting",
222-
zh_cn: "站在魔法阵上开始传送",
223-
zh_tw: "站在魔法陣上開始傳送",
224-
es: "Párate en el círculo mágico para comenzar a teletransportarte",
225-
fr: "Tenez-vous sur le cercle magique pour commencer la téléportation",
226-
pt: "Fique no círculo mágico para começar a teletransportar",
227-
de: "Stellen Sie sich auf den magischen Kreis, um mit der Teleportation zu beginnen",
228-
ko: "마법진 위에 서서 텔레포트를 시작하세요",
229-
ru: "Встаньте на магический круг, чтобы начать телепортацию",
230223
)
231224
)

assets/registry.tile.ron

Lines changed: 41 additions & 143 deletions
Original file line numberDiff line numberDiff line change
@@ -101,128 +101,7 @@ TileRegistry(
101101
),
102102
},
103103

104-
// level.aseprite の entities レイヤーに以下の色のピクセルを配置すると、その位置にエンティティが生成されます
105-
// color_to_entity_mapping: {
106-
// // 魔法陣 /////////////////////////////////////////////////////////////////////////////////////////////////////////
107-
// "MagicCircle": (
108-
// entity: MagicCircle,
109-
// ),
110-
// "MultiPlayArenaMagicCircle": (
111-
// entity: MultiPlayArenaMagicCircle,
112-
// ),
113-
// "MagicCircleHome": (
114-
// entity: MagicCircleHome,
115-
// ),
116-
// "MagicCircleDemoEnding": (
117-
// entity: MagicCircleDemoEnding,
118-
// ),
119-
// "BrokenMagicCircle": (
120-
// entity: BrokenMagicCircle, // エントリポイント
121-
// ),
122-
123-
// // 施設など /////////////////////////////////////////////////////////////////////////////////////////////////////
124-
// "ShopDoor": (
125-
// entity: ShopDoor,
126-
// ),
127-
// "ShopSpell": (
128-
// entity: ShopSpell,
129-
// ),
130-
// // (68, 0, 94, 255): (
131-
// // entity: BGM ( bgm: "bgm/最果てのルージュ.ogg" ),
132-
// // entry_point: false,
133-
// // spawn_offset_x: 0.0,
134-
// // ),
135-
// "RandomChest": (
136-
// entity: RandomChest,
137-
// ),
138-
// "RandomChest": (
139-
// entity: RandomChest,
140-
// ),
141-
// "RandomChest": (
142-
// entity: RandomChest,
143-
// ),
144-
// "Usage": (
145-
// entity: Usage,
146-
// ),
147-
// "Boss": (
148-
// entity: Boss (
149-
// actor_type: "HugeSlime",
150-
// name: Dict (
151-
// ja: "スライムの王 エミルス",
152-
// en: "Slime King Emils",
153-
// zh_cn: "史莱姆之王 艾米尔斯",
154-
// zh_tw: "史萊姆之王 艾米爾斯",
155-
// es: "Rey Slime Emils",
156-
// fr: "Roi Slime Emils",
157-
// pt: "Rei Slime Emils",
158-
// de: "Schleimkönig Emils",
159-
// ko: "슬라임 왕 에밀스",
160-
// ru: "Король слизней Эмильс",
161-
// ),
162-
// on_despawn: "HugeSlime"
163-
// ),
164-
// ),
165-
166-
// // ラビット ////////////////////////////////////////////////////////////////////////////////////////////////
167-
// "ShopRabbit": (
168-
// entity: Rabbit (
169-
// aseprite: "rabbit/rabbit_yellow.aseprite",
170-
// senario: "ShopRabbit"
171-
// ),
172-
// ),
173-
// "TrainingRabbit": (
174-
// entity: Rabbit (
175-
// aseprite: "rabbit/rabbit_red.aseprite",
176-
// senario: "TrainingRabbit"
177-
// ),
178-
// ),
179-
// "GuideRabbit": (
180-
// entity: Rabbit (
181-
// aseprite: "rabbit/rabbit_blue.aseprite",
182-
// senario: "GuideRabbit"
183-
// ),
184-
// ),
185-
// "MultiPlayRabbit": (
186-
// entity: Rabbit (
187-
// aseprite: "rabbit/rabbit_black.aseprite",
188-
// senario: "MultiPlayRabbit"
189-
// ),
190-
// ),
191-
// "SingleplayRabbit": (
192-
// entity: Rabbit (
193-
// aseprite: "rabbit/rabbit_white.aseprite",
194-
// senario: "SingleplayRabbit"
195-
// ),
196-
// ),
197-
// "ReadingRabbit": (
198-
// entity: Rabbit (
199-
// aseprite: "rabbit/rabbit_green.aseprite",
200-
// senario: "ReadingRabbit"
201-
// ),
202-
// ),
203-
// "SpellListRabbit": (
204-
// entity: Rabbit (
205-
// aseprite: "rabbit/rabbit_blue.aseprite",
206-
// senario: "SpellListRabbit"
207-
// ),
208-
// ),
209-
210-
// // 通常のアクター /////////////////////////////////////////////////////////////////////////////////////
211-
// "Lantern": (
212-
// entity: Actor("Lantern"),
213-
// ),
214-
// "BookShelf": (
215-
// entity: Actor("BookShelf"),
216-
// spawn_offset_x: 8.0
217-
// ),
218-
// "Sandbag": (
219-
// entity: Actor("Sandbag"),
220-
// ),
221-
// },
222-
223104
levels: {
224-
225-
226105
// チュートリアルを兼ねて最初にマジックボルトを入手
227106
// 呪文をひとつも発見していないときはこのレベルに来る
228107
"Warehouse": (
@@ -243,12 +122,9 @@ TileRegistry(
243122
enemy_types: ["Slime"],
244123
bgm: "bgm/水のしたたる洞窟.ogg",
245124
brightness: 0.4,
246-
next: ["Home"],
247125
),
248126

249127
// レベル内にエンティティを生成するには、以下の三種類があります
250-
// 1. level.aseprite の entities レイヤーで指定する。色のマッピングも指定する必要があるが、地形と連動させて編集しやすい
251-
// 3. registry.tile.ron の spawn で指定する。こちらは呪文以外のエンティティも生成できます
252128
"Home": (
253129
name: Dict (
254130
ja: "ウサギ族のキャンプ",
@@ -267,11 +143,6 @@ TileRegistry(
267143
enemy_types: [],
268144
bgm: "bgm/最果てのルージュ.ogg",
269145
brightness: 0.4,
270-
// itemsで指定する以外のエンティティの生成はspawnで指定します
271-
spawn: {
272-
// (55, 52): Actor("Slime"),
273-
},
274-
next: ["Library"],
275146
),
276147

277148
// レベル1 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -297,7 +168,6 @@ TileRegistry(
297168
enemy_types: ["Slime"],
298169
bgm: "bgm/森のいざない.ogg",
299170
brightness: 0.4,
300-
next: ["Waterside"]
301171
),
302172

303173
"Crossing": (
@@ -318,14 +188,12 @@ TileRegistry(
318188
enemy_types: ["Slime"],
319189
bgm: "bgm/森のいざない.ogg",
320190
brightness: 0.4,
321-
next: ["Waterside"]
322191
),
323192

324193
// 光の玉の魔法を入手
325194
// 非常に暗く、スライムに殴られるとクレバスに落ちてしまう
326195
// 明かりで照らしながら慎重に進む
327196
"valley": (
328-
next: ["Waterside"],
329197
name: Dict (
330198
ja: "暗闇の谷",
331199
en: "Valley of Darkness",
@@ -365,15 +233,13 @@ TileRegistry(
365233
enemy_types: ["Slime", "EyeBall"],
366234
bgm: "bgm/森のいざない.ogg",
367235
brightness: 0.4,
368-
next: ["Cave"],
369236
),
370237

371238
// ランタンを入手
372239
// 非常に暗いが、周囲が明るくなり、蜘蛛の巣を避けやすくなる
373240
// 光の玉と異なり、ランタンでは遠くを見通すことはできない
374241
// valleyと差別化が微妙?
375242
"Grassland": (
376-
next: ["minefield"],
377243
name: Dict (
378244
ja: "地下草原",
379245
en: "Underground Grassland",
@@ -400,7 +266,6 @@ TileRegistry(
400266
// 拡大鏡で地面をよく見ながら進もう
401267
// 爆発キノコは浮遊の魔法などでも回避できる
402268
"minefield": (
403-
next: ["lake"],
404269
name: Dict (
405270
ja: "爆発キノコの湿地",
406271
en: "Explosive Mushroom Swamp",
@@ -423,7 +288,6 @@ TileRegistry(
423288
// 凍結の魔法で湖を凍らせて渡る
424289
// 浮遊の魔法でも渡れる
425290
"lake": (
426-
next: ["corridor"],
427291
name: Dict (
428292
ja: "地底湖",
429293
en: "Underground Lake",
@@ -445,7 +309,6 @@ TileRegistry(
445309
// これ以下はテーマ未定 ////////////////////////////////////////////////////////////////////////////////////////////////
446310

447311
"corridor": (
448-
next: ["boss"],
449312
name: Dict (
450313
ja: "古の回廊",
451314
en: "Ancient Corridor",
@@ -465,7 +328,6 @@ TileRegistry(
465328
brightness: 0.4
466329
),
467330
"Cave": (
468-
next: ["Home"],
469331
name: Dict (
470332
ja: "大空洞",
471333
en: "Great Cavern",
@@ -485,11 +347,50 @@ TileRegistry(
485347
brightness: 0.4
486348
),
487349

350+
"Inlet": (
351+
name: Dict (
352+
ja: "入り江",
353+
en: "Great Cavern",
354+
zh_cn: "大洞穴",
355+
zh_tw: "大洞穴",
356+
es: "Gran Caverna",
357+
fr: "Grande Caverne",
358+
pt: "Grande Caverna",
359+
de: "Große Höhle",
360+
ko: "큰 동굴",
361+
ru: "Большая пещера",
362+
),
363+
default_tile: "StoneTile",
364+
enemies: 0,
365+
enemy_types: [],
366+
bgm: "bgm/炎神の吐息.ogg",
367+
brightness: 0.4
368+
),
369+
"Forest": (
370+
name: Dict (
371+
ja: "入り江",
372+
en: "Great Cavern",
373+
zh_cn: "大洞穴",
374+
zh_tw: "大洞穴",
375+
es: "Gran Caverna",
376+
fr: "Grande Caverne",
377+
pt: "Grande Caverna",
378+
de: "Große Höhle",
379+
ko: "큰 동굴",
380+
ru: "Большая пещера",
381+
),
382+
default_tile: "StoneTile",
383+
enemies: 0,
384+
enemy_types: [],
385+
bgm: "bgm/炎神の吐息.ogg",
386+
brightness: 0.4
387+
),
388+
389+
488390

489391

490392

491393
"level_3_0": (
492-
next: ["level_4_0"],
493394
name: Dict (
494395
ja: "古城",
495396
en: "Ancient Castle",
@@ -509,7 +410,6 @@ TileRegistry(
509410
brightness: 0.4
510411
),
511412
"level_4_0": (
512-
next: ["level_5_0"],
513413
name: Dict (
514414
ja: "スライムの巣窟",
515415
en: "Slime Nest",
@@ -528,8 +428,7 @@ TileRegistry(
528428
bgm: "bgm/ダンジョンを踏破せし者.ogg",
529429
brightness: 0.4
530430
),
531-
"level_5_0": (
532-
next: ["level_6_0"],
431+
"IceCave": (
533432
name: Dict (
534433
ja: "氷の洞窟",
535434
en: "Ice Cave",
@@ -550,7 +449,6 @@ TileRegistry(
550449
),
551450

552451
"arena": (
553-
next: ["Home"],
554452
name: Dict (
555453
ja: "対決の洞窟",
556454
en: "Cave of Confrontation",

src/actor.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ use crate::interpreter::Cmd;
4444
use crate::interpreter::InterpreterEvent;
4545
use crate::interpreter::Value;
4646
use crate::inventory::Inventory;
47+
use crate::level::chunk::position_to_index;
4748
use crate::level::entities::Spawn;
4849
use crate::level::entities::SpawnEvent;
4950
use crate::level::tile::Tile;

0 commit comments

Comments
 (0)