MM7 Event Language
GAMEフォルダ内のEvents.lodにある.evtファイルのバイナリは、下記規則で並んでいます。
これをうまく編集して他のファイルもそれに合わせて変えれば、オリジナルのMM7を構成できるはずです。
もっとも、コマンドのすべてが解明されたわけではありませんし、あまり変えるとフリーズするようですが‥
さしあたり、「巨人の国に至る通路」を付け替えてみたところ、それはすんなり成功しました。
下記命令は、MM6のIcon.LOD内の.EVTファイルに対しても有効のようです。
しかし‥ひとりでMM7もMM6も解析し改造を試みるのは、さすがに勤め人の手には余ります。
賛同者HELP‥
COMMAND STRUCTURE
cc eeee ss pp *
cc-command length in bytes :まずは全体の命令の長さが記載されています。
ee-event number :イベント番号で、枝番がつきます。
ss-sequence number :枝番で、ジャンプ命令で場合分けなどを管理しています。
pp-command type :下記命令群です。06ならテレポートを意味します。
_*-arguments :その他、命令により違いますが、各種パラメータです。
COMMAND TYPES
01 STOP (05h arguments, 1 parameters):枝番の最後には必ず登場する、サブルーチンエンドのような命令です。
Stop processing.
01 00
02-SHOW 2DEvent (08h arguments) :ドアを開けたら宿屋の主人が出てくるときなどに使われます。
Show shop, house etc..
1E tttttttt
tt-reference to 2devents.txt
04 MOUSEOVER (05h arguments, 1 parameters):画面直下に表示される文字のことではないかと。
Show text on mouseover
04 ww
ww-Can be: -string in .str (3DObjects) -string in 2Devent (shopdoor probably faces?)
06 TELEPORT (26h arguments):ドアから出るのも、洞窟に入るのも、すべてこの命令です。
Teleport party to map w given coordinates
06 xxxxxxxx yyyyyyyy zzzzzzzz ffffffff gggggggg uuuuuuuu uuuu ddii n*
xx-x coord yy-y coord zz-z coord ff-facing x coord gg-facing y coord dd-dialog from trans.txt ii-miniicon uu-unknown (always 03 so far) n*-zeroterminated filename of the map
07 OPEN CHEST :言うに及ばず、指定の宝箱の表示へ飛ぶ命令です。これで岩もきっと‥
Opens chest
07cc
cc-chest
08 SHOW FACIAL EXPRESSION
08 tt ii tt-affected ii-image id
0C CHANGE 3DOBJECT FACE BITMAP
0C tttttttt ffffffff nnnnnnnn ll tt-3dobject number ff-face nn-zeroterminated new bitmap name ll-maxlength of name
0D CHANGE SPRITE //POSSIBLY BAD OR ERROR IN BDJ MOD :使わない方がよさそうです。
0D tttttttt uu n* tt-sprite number uu-unknown n*-zeroterminated new sprite name
0E BRANCH IF EQUALS (or maybe greater or equals)
0E wwww pppppppptt
ww-what to modify pp-parameter(number or item reference), see ww for details tt-where to go if statement is true
10 ADD 0A :落ちているものを拾ったり、パラメータを変化させたりするときに使うのか?
10ww 00pppppppp
ww-what to modify pp-parameter(number AutoNote QuestAward)
11 DELETE 0A :食べ物を削ってアイテムをくれた誰かさんがいましたよね?多分そこでこれは‥
11ww 00pppp0000
ww-what to modify pp-parameter(number AutoNote QuestAward)
12 SET
Set Stat or AutoNote or QuestAward or Item
0Aeeeess 12ww 00pppp0000
ww-what to modify pp-parameter(number AutoNote QuestAward)
13 CREATE LOCAL MONSTER 1b :そのマップの特有のNPCを生み出します。多分、MAPSTAT.TXTで指定したモンスが。
13 gg tt nn xxxxxxxx yyyyyyyy zzzzzzzz uuuuuuuu uuuuuuuu
gg-specie tt-subspecie (0,1,2,3) nn-number of creatures xx-x coordinate yy-y coordinate zz-z coordinate uu-unknown
15 CAST SPELL 1f :大砲から打ち出される代物も、実はこの命令で魔法として打ち出されています。
15 cc ll mm xxxxxxxx yyyyyyyy zzzzzzzz uuuuuuuu uuuuuuuu uuuuuuuu
cc-spell number (from spells.txt) ll-level mm-skill level xx-x coordinate yy-y coordinate zz-z coordinate uu-unknown
16 SHOW NPC 08
16 tttt0000 tt-NPC id
1D-SHOW Local text 08
1D tttt0000 tt-STR id
1E-SHOW NPC text 08
1E tttt0000 tt-STR id
22 UNKNOWN VOLCANO EFFECT MM6
23 EVALUATE NEXT COMMAND BY PARTY MEMBER 05
23tt tt-target: 0-first char 1-second char 2-third char 3-fourth char 4-selected char 5-all chars 6-random char?
24 GOTO 05 :条件分岐時に使用されます。
24ww ww-where to go
25 EXECUTE COMMAND ON LEVEL RELOAD
25
26 EXECUTE COMMAND ON ELAPSED TIME 0E :イベント内の時間をコントロールしていると思われます(トランペットなど)。
Executes commands after a specified time
26 xxmmwwxxxxddxxxxxxxx
xx-time mm-month ww-week dd-day
27 SET NPC TEXT/TOPIC
27 tttttttt ii nnnnnnnnnn
28 SET NPC TO 2DLOCATION
2C
something with items, maybe put in hand?
2Cww00pppp0000uu
ww-what pp-parameter uu-unknown
31 something to do with NPCs
31 tttt 0000uu000000bb
tt-target NPC uu-unknown bb-unknown 0 or 1
32 something to do with NPCs
32 tttt 0000uu000000
tt-target NPC uu-unknown
33 BRANCH IF NO HOSTILES 0b
3301 1400000000tt - no hostiles
tt-to go
35
3500
39 SET GROUP ATTRIBUTE 0D :NPCを消したり出したりできるのでしょうか。多分、ゴブリンの大群も‥
39 gg 0000000000ww00nn
gg-group number ww-what to modify (10 invisibility, 08 hostile?) nn-number
3B Something to do with "the door is locked"
3C
3c bb000000uuuu000001 bb-unknown 0 or 1 uu-unknown (can be: 9202, 4000, a302)
example: 0BDA00020E11009902000008
is: -11 byte long command (0B) -Event #218 (DA00) -sequence 2 (02) -branch if equals (0E) -in inventory (1100) -item ref. 665: Tatalia Teleporter Key, in BDJ mod (9902) -jump to sequence 8 (000008)
なお、解析の具体例をここに示します。
http://www.celestialheavens.com/forums/viewtopic.php?t=9945
などでは具体的なアドバイスなどが交わされています。