MTG: MO のデッキを MWS 用にコンバートするテスト (Conversion of an MO deck file into an mwDeck (MWS) file)
ちょっと必要に追われて、Magic Online から text 形式でセーブしたデッキファイルを MWS 用にコンバートするプログラムを ruby で作ってみた。需要は多分ないだろうけど、プログラムも短いので貼ってみる。
$land_set = "ZEN" $land_num = 0 $cards = Hash.new f = open( "cardlist.txt" ) while buf = f.gets if ( buf =~ /([^:]+):(\w+)$/ ) $cards[$1] = $2 end end f.close sbflag = false while buf = gets name = '' num = '' if ( buf =~ /^Sideboard/ ) sbflag = true next end if ( buf =~ /^(\d+)\s+(.+)/ ) name = $2 num = $1 next if ( name == "creatures" || name == "lands" || name == "other spells" ) if ( name == "Forest" || name == "Island" || name == "Mountain" || name == "Swamp" || name == "Plains" ) print print " ", num, " [", $land_set, "] ", name, " (", $land_num, ")\n" next end if ( sbflag ) print "SB: ", num, " [", $cards[name], "] ", name, "\n" else print " ", num, " [", $cards[name], "] ", name, "\n" end end end
これを m2m.rb とかいうファイル名で保存して、cardlist.txt を同じフォルダに置く。変換したいデッキが valakut.txt だとしたら、
> ruby m2m.rb < valakut.txt > valakut.mwDeck
で変換される。カードリストがアラーラ、ゼンディカーの各ブロックと M10 分しかないので、Standard / ZEN Block Constructed なデッキ以外は変換できない。Extended や Classic のフォーマットのファイルを変換すると多分途中でこける。
あと、土地ファイルは勝手に ZEN ブロックの土地を使うようにしてある。プログラム冒頭の $land_set = "ZEN" の ZEN を適当なエクスパンション名に変えれば、そのエクスパンションの土地になる(はず)。
万が一どこかで需要があれば GUI 版とか作るかも。
そういえば
AEther Figment ってカード MO で持ってないから、text 出力できなくてカード名が正しいかどうか分からない。これでいいんだろか。