S:0:0:8000 # SUDE
S:1:4000:8000 # NITOURYU
S:2:0:5000 # RIDING
+S:3:4000:8000 # SHIELD
### MAGE ###
N:1
S:0:0:4000 # SUDE
S:1:0:0 # NITOURYU
S:2:0:0 # RIDING
+S:3:0:0 # SHIELD
### PRIEST ###
N:2
S:0:0:4000 # SUDE
S:1:0:4000 # NITOURYU
S:2:0:500 # RIDING
+S:3:2000:6000 # SHIELD
### ROGUE ###
N:3
S:0:0:8000 # SUDE
S:1:4000:8000 # NITOURYU
S:2:0:2000 # RIDING
+S:3:2000:6000 # SHIELD
### RANGER ###
N:4
S:0:0:6000 # SUDE
S:1:0:6000 # NITOURYU
S:2:0:5000 # RIDING
+S:3:0:2000 # SHIELD
### PALADIN ###
N:5
S:0:0:4000 # SUDE
S:1:0:7000 # NITOURYU
S:2:0:5000 # RIDING
+S:3:2000:8000 # SHIELD
### WARRIOR_MAGE ###
N:6
S:0:0:4000 # SUDE
S:1:0:6000 # NITOURYU
S:2:0:2000 # RIDING
+S:3:1000:7000 # SHIELD
### CHAOS_WARRIOR ###
N:7
S:0:0:7000 # SUDE
S:1:0:7000 # NITOURYU
S:2:0:2000 # RIDING
+S:3:0:4000 # SHIELD
### MONK ###
N:8
S:0:4000:8000 # SUDE
S:1:0:0 # NITOURYU
S:2:0:0 # RIDING
+S:3:0:0 # SHIELD
### MINDCRAFTER ###
N:9
S:0:0:4000 # SUDE
S:1:0:4000 # NITOURYU
S:2:0:500 # RIDING
+S:3:0:4000 # SHIELD
### HIGH_MAGE ###
N:10
S:0:0:4000 # SUDE
S:1:0:0 # NITOURYU
S:2:0:0 # RIDING
+S:3:0:0 # SHIELD
### TOURIST ###
N:11
S:0:0:8000 # SUDE
S:1:0:8000 # NITOURYU
S:2:0:5000 # RIDING
+S:3:0:8000 # SHIELD
### IMITATOR ###
N:12
S:0:0:7000 # SUDE
S:1:0:7000 # NITOURYU
S:2:0:2000 # RIDING
+S:3:0:4000 # SHIELD
### BEASTMASTER ###
N:13
S:0:0:6000 # SUDE
S:1:0:6000 # NITOURYU
S:2:500:8000 # RIDING
+S:3:0:4000 # SHIELD
### SORCERER ###
N:14
S:0:0:0 # SUDE
S:1:0:0 # NITOURYU
S:2:0:0 # RIDING
+S:3:0:0 # SHIELD
### ARCHER ###
N:15
S:0:0:4000 # SUDE
S:1:0:4000 # NITOURYU
S:2:0:2000 # RIDING
+S:3:0:2000 # SHIELD
### MAGIC_EATER ###
N:16
S:0:0:4000 # SUDE
S:1:0:4000 # NITOURYU
S:2:0:0 # RIDING
+S:3:0:0 # SHIELD
### HARPER ###
N:17
S:0:0:4000 # SUDE
S:1:0:4000 # NITOURYU
S:2:0:500 # RIDING
+S:3:0:0 # SHIELD
### RED_MAGE ###
N:18
S:0:0:4000 # SUDE
S:1:0:4000 # NITOURYU
S:2:0:2000 # RIDING
+S:3:0:6000 # SHIELD
### SAMURAI ###
N:19
S:0:0:4000 # SUDE
S:1:4000:8000 # NITOURYU
S:2:0:2000 # RIDING
+S:3:0:2000 # SHIELD
### ForceTrainer ###
N:20
S:0:4000:8000 # SUDE
S:1:0:0 # NITOURYU
S:2:0:0 # RIDING
+S:3:0:0 # SHIELD
### BLUE MAGE ###
N:21
S:0:0:4000 # SUDE
S:1:0:0 # NITOURYU
S:2:0:0 # RIDING
+S:3:0:2000 # SHIELD
### KIHEI ###
N:22
S:0:0:4000 # SUDE
S:1:0:4000 # NITOURYU
S:2:500:8000 # RIDING
+S:3:0:8000 # SHIELD
### BERSERKER ###
N:23
S:0:4000:8000 # SUDE
S:1:4000:8000 # NITOURYU
S:2:0:0 # RIDING
+S:3:0:0 # SHIELD
### KAJI ###
N:24
S:0:0:4000 # SUDE
S:1:0:4000 # NITOURYU
S:2:0:2000 # RIDING
+S:3:0:7000 # SHIELD
### MIRROR MASTER ###
N:25
S:0:0:4000 # SUDE
S:1:0:0 # NITOURYU
S:2:0:0 # RIDING
+S:3:0:0 # SHIELD
### NINJA ###
N:26
S:0:0:7000 # SUDE
S:1:4000:8000 # NITOURYU
S:2:0:0 # RIDING
+S:3:0:0 # SHIELD
-### ARCHER ###
+### SNIPER ###
N:27
# Bow
W:0:0:0:4 # 0
S:0:0:2000 # SUDE
S:1:0:1000 # NITOURYU
S:2:0:0 # RIDING
+S:3:0:0 # SHIELD
FILE *fff;
- GAME_TEXT file_name[1024];
- GAME_TEXT skill_name[3][20]={_("マーシャルアーツ", "Martial Arts "),
- _("二刀流 ", "Dual Wielding "),
- _("乗馬 ", "Riding ")};
+ char file_name[1024];
+ char skill_name[GINOU_TEMPMAX][20] =
+ {
+ _("マーシャルアーツ", "Martial Arts "),
+ _("二刀流 ", "Dual Wielding "),
+ _("乗馬 ", "Riding "),
+ _("盾 ", "Shield ")
+ };
/* Open a new file */
fff = my_fopen_temp(file_name, 1024);
return;
}
- for (i = 0; i < 3; i++)
+ for (i = 0; i < GINOU_TEMPMAX; i++)
{
skill_exp = p_ptr->skill_exp[i];
fprintf(fff, "%-20s ", skill_name[i]);
#define GINOU_SUDE 0
#define GINOU_NITOURYU 1
#define GINOU_RIDING 2
+#define GINOU_SHIELD 3
+#define GINOU_TEMPMAX 4
#define GINOU_MAX 10
/* Proficiency level */
if (cur < max)
{
- int ridinglevel = r_info[m_list[p_ptr->riding].r_idx].level;
- int targetlevel = r_ptr->level;
+ DEPTH ridinglevel = r_info[m_list[p_ptr->riding].r_idx].level;
+ DEPTH targetlevel = r_ptr->level;
int inc = 0;
if ((cur / 200 - 5) < targetlevel)
}
p_ptr->skill_exp[GINOU_RIDING] = MIN(max, cur + inc);
-
p_ptr->update |= (PU_BONUS);
}
}
#endif
}
+
+ /* Gain shield experience */
+ if (object_is_armour(&inventory[INVEN_RARM]) || object_is_armour(&inventory[INVEN_LARM]))
+ {
+ int cur = p_ptr->skill_exp[GINOU_SHIELD];
+ int max = s_info[p_ptr->pclass].s_max[GINOU_SHIELD];
+
+ if (cur < max)
+ {
+ DEPTH targetlevel = r_ptr->level;
+ int inc = 0;
+
+
+ /* Extra experience */
+ if ((cur / 100) < targetlevel)
+ {
+ if ((cur / 100 + 15) < targetlevel)
+ inc += 1 + (targetlevel - (cur / 100 + 15));
+ else
+ inc += 1;
+ }
+
+ p_ptr->skill_exp[GINOU_SHIELD] = MIN(max, cur + inc);
+ p_ptr->update |= (PU_BONUS);
+ }
+ }
+
damage = 0;
break;
}
}
+ /* Shield skill bonus */
+ if (object_is_armour(&inventory[INVEN_RARM]) || object_is_armour(&inventory[INVEN_LARM]))
+ {
+ p_ptr->ac += p_ptr->skill_exp[GINOU_SHIELD] * (1 + p_ptr->lev / 22) / 2000;
+ p_ptr->dis_ac += p_ptr->skill_exp[GINOU_SHIELD] * (1 + p_ptr->lev / 22) / 2000;
+ }
+
if (old_mighty_throw != p_ptr->mighty_throw)
{
/* Redraw average damege display of Shuriken */