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 出力できなくてカード名が正しいかどうか分からない。これでいいんだろか。