OSDN Git Service

乗馬の熟練度上昇のコードを整理。熟練度のMAXを越えてしまう事があるバグ修正。
authormogami <mogami@0568b783-4c39-0410-ac80-bf13821ea2a2>
Thu, 15 May 2003 13:33:50 +0000 (13:33 +0000)
committermogami <mogami@0568b783-4c39-0410-ac80-bf13821ea2a2>
Thu, 15 May 2003 13:33:50 +0000 (13:33 +0000)
src/cmd1.c

index 09cfe58..7dca79f 100644 (file)
@@ -3260,21 +3260,29 @@ bool py_attack(int y, int x, int mode)
        /* Gain riding experience */
        if (p_ptr->riding)
        {
-               int ridinglevel = r_info[m_list[p_ptr->riding].r_idx].level;
+               int cur = p_ptr->skill_exp[GINOU_RIDING];
+               int max = s_info[p_ptr->pclass].s_max[GINOU_RIDING];
 
-               if (p_ptr->skill_exp[GINOU_RIDING] < s_info[p_ptr->pclass].s_max[GINOU_RIDING])
+               if (cur < max)
                {
-                       if (((p_ptr->skill_exp[GINOU_RIDING] - (RIDING_EXP_BEGINNER * 2)) / 200) < r_info[m_ptr->r_idx].level)
-                               p_ptr->skill_exp[GINOU_RIDING]++;
+                       int ridinglevel = r_info[m_list[p_ptr->riding].r_idx].level;
+                       int targetlevel = r_info[m_ptr->r_idx].level;
+                       int inc = 0;
+
+                       if ((cur / 200 - 5) < targetlevel)
+                               inc += 1;
 
                        /* Extra experience */
-                       if ((p_ptr->skill_exp[GINOU_RIDING] / 100) < ridinglevel)
+                       if ((cur / 100) < ridinglevel)
                        {
-                               if (((p_ptr->skill_exp[GINOU_RIDING] + (RIDING_EXP_SKILLED - RIDING_EXP_BEGINNER)) / 100) < ridinglevel)
-                                       p_ptr->skill_exp[GINOU_RIDING] += (1 + (ridinglevel - (p_ptr->skill_exp[GINOU_RIDING] / 100 + 15)));
-                               else p_ptr->skill_exp[GINOU_RIDING]++;
+                               if ((cur / 100 + 15) < ridinglevel)
+                                       inc += 1 + (ridinglevel - (cur / 100 + 15));
+                               else
+                                       inc += 1;
                        }
 
+                       p_ptr->skill_exp[GINOU_RIDING] = MAX(max, cur + inc);
+
                        p_ptr->update |= (PU_BONUS);
                }
        }