# NH321.awk # NetHack 3.1 / 3.2 シリーズの record をテキストに変換 # 1996 Oct.19 Sat. # Copyright (c)1996 G-HAL # function error(p,q) { printf("%s: %s(%d) %s\n%s\n",p,FILENAME,NR,q,$0) > "/dev/stderr" } function instr(p1, p2) { tmp = 0 for( tmp1 = 0; tmp1 < length(p1); tmp1++ ){ tmp2 = substr(p1,tmp1,1) if( tmp2 == p2 ){ tmp = tmp2 break } } return tmp } BEGIN { flag = 0 rank = 0 } /^[89][0123456789][01][0123456789][0123][0123456789] / { flag = 1 rank = rank + 1 divider = instr( $10, ",") name = substr( $10, 1, divider) why = substr( $10, divider) where = "" string = "" printf("%3d %8d %s-%sは$sにて", rank, $8, name, $9, where) if( $4 != $5 ) printf("[最大地下$d階]", $5) printf("\n") next #日付 uid 死亡場所 死亡階 最大階 HP 最大HP 得点 職性 名前,死亡理由 # #960730 100 6 -2 54 -3 455 3351293 VF lannet,透明なアルコンに殺された # 1 3351293 lannet-Vは最終試練にて[最大地下54階] - [455] # 透明なアルコンに殺された. # #960205 100 0 11 17 0 270 692008 VM lannet,トラッパーに殺された # 3 692008 lannet-Vは運命の大迷宮の地下11階にて[最大地下17階] - [270] # トラッパーに殺された. } /^3\.2\.[0123456789] / { flag = 2 rank = rank + 1 printf("%d %d %d %d %d %d %d %d %s %s\n", $9, $11, $3, $4, $5, $6, $7, $2, $12, $13) next #ver_major.ver_minor.patchlevel 得点 死亡場所 死亡階 最大階 HP 最大HP 死亡回数 死亡日 誕生日 uid 職性 名前,死亡理由 # #3.2.1 11393 0 11 11 -7 78 1 960906 960906 42 BM hal9000,火の精に殺された # 1 11393 hal9000-Bは運命の大迷宮の地下11階にて火の精に殺され # た. - [78] # #3.2.1 837 0 2 3 -4 36 1 960908 960908 42 CM hal9000,ねずみ女に殺された #22 837 hal9000-Cは運命の大迷宮の地下2階にて[最大地下3階] # ねずみ女に殺された. - [36] } END { if(flag==0) { error("error","illigal format") } if(flag==1) { printf("This scorefile is NetHack 3.1 series.\n") > "/dev/stderr" } if(flag==2) { printf("This scorefile is NetHack 3.2 series.\n") > "/dev/stderr" } }