Created
February 5, 2019 10:36
-
-
Save 2nd-player/8b3ea436bb54b95adb12f618f9abb613 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/local/bin/vim -S | |
"(C) 2nd-player | |
" this script is licensed under CC BY-NC-SA 2.1 JP | |
" https://creativecommons.org/licenses/by-nc-sa/2.1/jp/ | |
"180902 auto bolder | |
"180902 illus | |
let s:dexfile = getcwd()."/data/dex-jedf.txt" | |
function! Cardmkr() | |
let s:keepmouse = &mouse | |
set mouse="" | |
if !exists("s:expold") | |
let s:expold = "" | |
endif | |
let s:exp = input("パック = ", s:expold) | |
let s:tmpary = split(s:exp) | |
let s:exp = s:tmpary[0] | |
if !strlen(s:exp) | |
let &mouse=s:keepmouse | |
return | |
endif | |
let s:titlesuf = s:exp | |
if len(s:tmpary) > 1 && strlen(s:tmpary[1]) | |
let s:titlesuf .= "_".s:tmpary[1] | |
endif | |
if s:exp != s:expold | |
"load exp data | |
if !filereadable("exp/".s:exp.".txt") | |
let &mouse=s:keepmouse | |
return | |
endif | |
exe "view exp/".s:exp.".txt" | |
let s:fullname = split(getline(search('商品記事名\s*=')),'=\s*',2)[1] | |
let s:ser = split(getline(search('シリーズ\s*=')),'=\s*',2)[1] | |
let s:cnmax = split(getline(search('総数\s*=')),'=\s*',2)[1] | |
let s:cat = split(getline(search('カテゴリ\s*=')),'=\s*',2)[1] | |
let s:enexp = split(getline(search('en\s*=')),'=\s*',2)[1] | |
let s:deexp = split(getline(search('de\s*=')),'=\s*',2)[1] | |
let s:tmp="" | |
"let s:tmp = search('総数\s*=') | |
"if (s:tmp) | |
" let s:cnmax = split(getline(s:tmp),'=\s*',2)[1] | |
"endif | |
let s:frar = search("レアリティ")" | |
let s:expold = s:exp | |
endif | |
echo s:fullname | |
let s:cardname = input("カード名 = ") | |
if !strlen(s:cardname) | |
let &mouse=s:keepmouse | |
return | |
endif | |
let s:tmpary = split(s:cardname) | |
let s:cardname = s:tmpary[0] | |
if len(s:tmpary) > 1 | |
let s:titlesuf .= "_".s:tmpary[1] | |
endif | |
let s:cardname = substitute(s:cardname, '[PP][RR]$', '◇', "") | |
let s:pkmn = s:cardname | |
let s:pkmn2 = "" | |
let s:pre="" | |
let s:suf="" | |
let s:evo="" | |
let s:tagteam="" | |
if strpart(s:pkmn, 0, 1) == "M" | |
let s:pre = "M" | |
let s:evo = "M進化" | |
let s:pkmn = strpart(s:pkmn, 1) | |
elseif strcharpart(s:pkmn, 0, 4) == "アローラ" | |
let s:pre = "アローラ" | |
let s:pkmn = strcharpart(s:pkmn, 4) | |
elseif strcharpart(s:pkmn, 0, 3) == "ひかる" | |
let s:pre = "ひかる" | |
let s:pkmn = strcharpart(s:pkmn, 3) | |
endif | |
if strridx(s:pkmn, "◇") == strlen(s:pkmn)-3 | |
"FIXME | |
" '◇' is three byted char | |
let s:suf = "◇" | |
let s:pkmn = strcharpart(s:pkmn, 0, strchars(s:pkmn)- 1) | |
elseif strridx(s:pkmn,"GX") == strlen(s:pkmn)-2 | |
let s:suf = "GX" | |
let s:pkmn = strpart(s:pkmn, 0, strlen(s:pkmn)-2) | |
elseif strridx(s:pkmn,"EX") == strlen(s:pkmn)-2 | |
let s:suf = "EX" | |
let s:pkmn = strpart(s:pkmn, 0, strlen(s:pkmn)-2) | |
elseif strridx(s:pkmn,"BREAK") == strlen(s:pkmn)-5 | |
let s:suf = "BREAK" | |
let s:evo = "BREAK進化" | |
let s:pkmn = strpart(s:pkmn, 0, strlen(s:pkmn)-5) | |
endif | |
if stridx(s:pkmn,"&") > 0 | |
let s:pkmn2 = strpart(s:pkmn, stridx(s:pkmn, '&')+1) | |
let s:pkmn = strpart(s:pkmn, 0, stridx(s:pkmn, '&')) | |
let s:tagteam = 1 | |
endif | |
let s:dexent = system("grep '\|".s:pkmn."\|' data/dex-jedf.txt") | |
if !strlen(s:dexent) | |
let s:pkmn = input("ポケモン名 = ") | |
let s:dexent = system("grep '\|".s:pkmn."\|' data/dex-jedf.txt") | |
if !strlen(s:dexent) | |
let &mouse=s:keepmouse | |
echohl WarningMsg | "no valid pokemon specified." | |
return | |
endif | |
if stridx(s:cardname,s:pkmn) > strlen(s:pre) | |
let s:pre = strpart(s:cardname, 0, stridx(s:cardname,s:pkmn) ) | |
endif | |
if strlen(s:pre)+strlen(s:pkmn)+strlen(s:suf) < strlen(s:cardname) | |
let s:suf = strpart(s:cardname, stridx(s:cardname, s:pkmn)+strlen(s:pkmn)) | |
endif | |
endif | |
let s:dexenta = split(s:dexent, '|') | |
let s:dexnum = s:dexenta[0] | |
let s:enpkmn = s:dexenta[2] | |
let s:depkmn = s:dexenta[3] | |
let s:zhpkmn = s:dexenta[5] | |
let s:dexnum = printf("%03d",s:dexnum) | |
"open targetfile | |
exe "e new/".s:cardname."_(".s:titlesuf.").txt" | |
"ensure our canvas is blank | |
%d | |
setl fenc=utf8 | |
call setline(1, ["{{ポケモンのカード", "| ナンバー = ".s:dexnum, "| ポケモン名 = ".s:pkmn]) | |
if strlen(s:pkmn2) | |
call append("$", "| ポケモン名2 = ".s:pkmn2) | |
endif | |
if strlen(s:pre) | |
call append("$", "| 名前の前 = ".s:pre) | |
endif | |
if strlen(s:suf) | |
call append("$", "| 名前の後 = ".s:suf) | |
endif | |
if strlen(s:evo) | |
call append("$", "| 種類 = ".s:evo) | |
elseif s:suf != "EX" | |
let s:evo = tr(input("種類 = "),"12","12") | |
if s:evo =~ "1" | |
let s:evo = "1進化" | |
elseif s:evo =~ "2" | |
let s:evo = "2進化" | |
elseif s:evo =~ "復" | |
let s:evo = "復元" | |
endif | |
if strlen(s:evo) | |
call append("$", "| 種類 = ".s:evo) | |
if s:evo != "復元" | |
let s:evo = system("head -n".s:dexnum." data/dex-jedf.txt|tail -n1") | |
let s:evo = split(s:evo, '|', 3)[1] | |
echo "\r<!--#default =" s:evo "-->\n" | |
else | |
let s:evo="" | |
endif | |
let s:evo = input("進化前 = ", s:evo) | |
call append("$", "| 進化前 = ".s:evo) | |
if strcharpart(s:evo, 0, 4) == "アローラ" | |
let s:evo = strcharpart(s:evo, 4) | |
call append("$", "| 進化前ポケモン名 = ".s:evo) | |
endif | |
endif | |
endif | |
let s:tmp=0 | |
while !s:tmp | |
let s:tmp = tr(input("HP = "),"1234567890","1234567890") | |
endw | |
call append("$", "| HP = ".s:tmp) | |
let s:tmp = input("\r色 = ") | |
if s:tmp =~ '無' | |
let s:tmp = '無色' | |
elseif s:tmp =~ '竜\|龍' | |
let s:tmp = 'ドラゴン' | |
elseif s:tmp =~ '妖' | |
let s:tmp = 'フェアリー' | |
endif | |
call append("$", "| 色 = ".s:tmp) | |
let s:tmp = input("\r特性 = ") | |
if strlen(s:tmp) | |
call append("$", "| 特性 = ".s:tmp) | |
call append("$", "| 特性説明 = ".input("\r特性説明 = ")) | |
call s:autobold() | |
endif"ability | |
let s:m = 1 | |
while 1 | |
let s:tmp = input("\rワザ".s:m." = ") | |
if !strlen(s:tmp) | |
break | |
endif | |
call append("$", "| ワザ".s:m." = ".s:tmp) | |
let s:tmp = input("\rワザ".s:m."エネルギー = ") | |
if !strlen(s:tmp) | |
let s:tmp = " " | |
endif | |
call append("$", "| ワザ".s:m."エネルギー = ".s:tmp) | |
let s:tmp = input("\rワザ".s:m."ダメージ = ") | |
if !strlen(s:tmp) | |
let s:tmp = " " | |
endif | |
call append("$", "| ワザ".s:m."ダメージ = ".s:tmp) | |
let s:tmp = input("\rワザ".s:m."説明 = ") | |
if !strlen(s:tmp) | |
let s:tmp = " " | |
endif | |
call append("$", "| ワザ".s:m."説明 = ".s:tmp) | |
call s:autobold() | |
let s:m += 1 | |
endw"moves | |
if s:suf == "GX" | |
let s:tmp = input("\rGXワザ = ") | |
call append("$", "| GXワザ = ".s:tmp) | |
let s:tmp = input("\rGXワザエネルギー = ") | |
if !strlen(s:tmp) | |
let s:tmp = " " | |
endif | |
call append("$", "| GXワザエネルギー = ".s:tmp) | |
let s:tmp = input("\rGXワザダメージ = ") | |
if !strlen(s:tmp) | |
let s:tmp = " " | |
endif | |
call append("$", "| GXワザダメージ = ".s:tmp) | |
let s:tmp = input("\rGXワザ説明 = ") | |
if !strlen(s:tmp) | |
let s:tmp = " " | |
endif | |
call append("$", "| GXワザ説明 = ".s:tmp) | |
call s:autobold() | |
endif"GX | |
if s:tmp != "BREAK" | |
let s:tmp = tr(input("\rにげるコスト = "),"1234567890","1234567890") | |
if s:tmp <=0 | |
let s:tmp = 0 | |
endif | |
call append("$", "| にげるコスト = ".s:tmp) | |
let s:tmp = input("\r弱点 = ") | |
if strlen(s:tmp) | |
if s:tmp !~ "×\|+" | |
let s:tmp .= "×2" | |
endif | |
call append("$", "| 弱点 = ".s:tmp) | |
endif"weakness | |
let s:tmp = input("\r抵抗力 = ") | |
if strlen(s:tmp) | |
if s:tmp !~ "÷\|-" | |
let s:tmp .= "-20" | |
endif | |
call append("$", "| 抵抗力 = ".s:tmp) | |
endif"resistance | |
else | |
call append("$", "| にげるコスト = 0") | |
endif | |
call append("$", "| イラスト担当 = ".input("\rイラスト担当 = ")) | |
call s:autoillus() | |
call append("$", "| シリーズ = ".s:ser) | |
if s:frar | |
call append("$", "| レアリティ = ".input("\rレアリティ = ")) | |
endif | |
echo "\r<!--XXX/".s:cnmax."-->\n" | |
let s:cn = input("コレクションナンバー = ") | |
call append("$", "| コレクションナンバー = ".s:cn."/".s:cnmax) | |
if s:cnmax == "SM-P" | |
let s:tmp = "ポケモンのカード、[[プロモーションカード]]。" | |
else | |
let s:tmp = "[[".s:fullname."]]に収録されているポケモンのカード。" | |
endif | |
call append("$", ["}}", "'''".s:cardname."'''は".s:tmp]) | |
if !strlen(s:suf) && s:suf != "◇" | |
call append("$", "== 解説文 ==") | |
echo "\r== 解説文 ==" | |
call append("$", input('')) | |
endif"flavor | |
if s:cnmax == "SM-P" | |
call append("$", "== 備考 ==") | |
echo "\r== 備考 ==" | |
call append("$", substitute(input('*'), "^\**", "*", "")) | |
endif | |
let s:suf = substitute(s:suf, "BREAK", "-TURBO",'') | |
let s:suf = substitute(s:suf, "◇", " ◇",'') | |
let s:suf = substitute(s:suf, "EX", "-EX",'') | |
let s:suf = substitute(s:suf, "GX", "-GX",'') | |
let s:pre = substitute(s:pre, "^M", "M-",'') | |
let s:pre = substitute(s:pre, "^アローラ", "Alola-",'') | |
let s:pre = substitute(s:pre, "^ポンチョを着た", "Poncho o Kita ",'') | |
call append("$", "[[Category:".s:cat."]]") | |
call append("$", "[[de:".s:pre.s:depkmn.s:suf." (".s:deexp." ".s:cn.")]]") | |
let s:cn = substitute(s:cn, "^0*", "",'') | |
let s:suf = substitute(s:suf, "-TURBO", " BREAK",'') | |
let s:suf = substitute(s:suf, "◇", "♢",'') | |
let s:pre = substitute(s:pre, "^M-", "M ",'') | |
let s:pre = substitute(s:pre, "^Alola-", "Alolan ",'') | |
let s:pre = substitute(s:pre, "^Poncho o Kita", "Poncho-wearing",'') | |
call append("$", "[[en:".s:pre.s:enpkmn.s:suf." (".s:enexp." ".s:cn.")]]") | |
let s:suf = substitute(s:suf, " BREAK", "BREAK",'') | |
let s:suf = substitute(s:suf, " ♢", "◇", '') | |
let s:suf = substitute(s:suf, "-EX", "EX",'') | |
let s:suf = substitute(s:suf, "-GX", "GX",'') | |
let s:pre = substitute(s:pre, "^M ", "M",'') | |
let s:pre = substitute(s:pre, "^Alolan ", "阿罗拉",'') | |
let s:pre = substitute(s:pre, "^Poncho-wearing ", "穿着斗篷的",'') | |
if s:exp == "SM-P" | |
let s:cn = printf("%03d", s:cn) | |
call append("$", "[[zh:".s:pre.s:zhpkmn.s:suf."(SM-P ".s:cn.")]]") | |
else | |
call append("$", "[[zh:".s:pre.s:zhpkmn.s:suf."(".s:titlesuf.")]]") | |
endif | |
let &mouse=s:keepmouse | |
endfunction | |
function! s:autoillus() | |
$s/= *Ken\s*$/= Ken Sugimori/ie | |
$s/= *Shin\s*$/= Shin Nagasawa/ie | |
$s/= *SATOSHI.*$/= SATOSHI NAKAI/e | |
$s/= *Arita.*/= Mitsuhiro Arita/ie | |
$s/= *Chiaki.*/= Suwama Chiaki/ie | |
$s/= *Nishida.*/= Atsuko Nishida/ie | |
$s/= *5ban.*/= 5ban Graphics/ie | |
$s/= *Asako.*/= Asako Ito/ie | |
$s/= *Akira.*/= Akira Komayama/ie | |
$s/= *Anesaki.*/= Anesaki Dynamic/ie | |
$s/= *Atsuko.*/= Atsuko Nishida/ie | |
$s/= *Ayaka.*/= Ayaka Yoshida/ie | |
$s/= *Demizu.*/= DemizuPosuka/ie | |
$s/= *Hitoshi.*/= Hitoshi Ariga/ie | |
$s/= *Kanako.*/= Kanako Eo/ie | |
$s/= *Kagemaru.*/= Kagemaru Himeno/ie | |
$s/= *Kyoko.*/= Kyoko Umemoto/ie | |
$s/= *Masakazu.*/= Masakazu Fukuda/ie | |
$s/= *Midori.*/= Midori Harada/ie | |
$s/= *Mitsuhiro.*/= Mitsuhiro Arita/ie | |
$s/= *Naoyo.*/= Naoyo Kimura/ie | |
$s/= *Sanosuke.*/= Sanosuke Sakuma/ie | |
$s/= *Sumiyoshi.*/= Sumiyoshi Kizuki/ie | |
$s/= *Suwama.*/= Suwama Chiaki/ie | |
$s/= *Shigenori.*/= Shigenori Negishi/ie | |
$s/= *tetsuya.*/= tetsuya koizumi/ie | |
$s/= *Yukiko.*/= Yukiko Baba/ie | |
endfunction | |
function! s:autobold() | |
$s/'*にげる'*/'''にげる'''/ge | |
$s/'*きぜつ'*/'''きぜつ'''/ge | |
$s/'*こんらん'*\([とにな]\)/'''こんらん'''\1/ge | |
$s/'*マヒ'*\([とにな]\)/'''マヒ'''\1/ge | |
$s/'*どく'*\([とにな]\)/'''どく'''\1/ge | |
$s/'*ねむり'*\([とにな]\)/'''ねむり'''\1/ge | |
$s/'*やけど'*\([とにな]\)/'''やけど'''\1/ge | |
$s/'*\([12]進化\)'*/'''\1'''/ge | |
endfunction |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment