1 #include "info-reader/skill-reader.h"
2 #include "player/player-skill.h"
5 * @brief 職業技能情報(s_info)のパース関数 /
6 * Initialize the "s_info" array, by parsing an ascii "template" file
11 errr parse_s_info(char *buf, angband_header *head)
13 static skill_table *s_ptr = NULL;
15 int i = atoi(buf + 2);
18 if (i >= head->info_num)
25 } else if (buf[0] == 'W') {
26 int tval, sval, start, max;
27 const s16b exp_conv_table[] = { WEAPON_EXP_UNSKILLED, WEAPON_EXP_BEGINNER, WEAPON_EXP_SKILLED, WEAPON_EXP_EXPERT, WEAPON_EXP_MASTER };
29 if (4 != sscanf(buf + 2, "%d:%d:%d:%d", &tval, &sval, &start, &max))
32 if (start < EXP_LEVEL_UNSKILLED || start > EXP_LEVEL_MASTER || max < EXP_LEVEL_UNSKILLED || max > EXP_LEVEL_MASTER)
35 s_ptr->w_start[tval][sval] = exp_conv_table[start];
36 s_ptr->w_max[tval][sval] = exp_conv_table[max];
37 } else if (buf[0] == 'S') {
39 if (3 != sscanf(buf + 2, "%d:%d:%d", &num, &start, &max))
42 if (start < WEAPON_EXP_UNSKILLED || start > WEAPON_EXP_MASTER || max < WEAPON_EXP_UNSKILLED || max > WEAPON_EXP_MASTER)
45 s_ptr->s_start[num] = (SUB_EXP)start;
46 s_ptr->s_max[num] = (SUB_EXP)max;