OSDN Git Service

[Refactor] #40514 装備の速度計算処理を calc_speed()へ移動. / Moved speed calculation by equipment...
authordeskull <deskull@users.sourceforge.jp>
Sat, 4 Jul 2020 06:47:56 +0000 (15:47 +0900)
committerdeskull <deskull@users.sourceforge.jp>
Sat, 4 Jul 2020 06:47:56 +0000 (15:47 +0900)
src/object/object-kind.c
src/player/player-status.c

index 2c4331c..797b993 100644 (file)
@@ -50,8 +50,6 @@ void calc_equipment_status(player_type* creature_ptr) {
             creature_ptr->see_infra += o_ptr->pval;
         if (have_flag(flgs, TR_TUNNEL))
             creature_ptr->skill_dig += (o_ptr->pval * 20);
-        if (have_flag(flgs, TR_SPEED))
-            creature_ptr->pspeed += o_ptr->pval;
         if (have_flag(flgs, TR_BLOWS)) {
             if ((i == INVEN_RARM || i == INVEN_RIGHT) && !creature_ptr->ryoute)
                 creature_ptr->extra_blows[0] += o_ptr->pval;
index 6fa715c..c11fc7b 100644 (file)
@@ -4070,8 +4070,20 @@ static void calc_speed(player_type *creature_ptr)
         else
             tmp_rp_ptr = &race_info[creature_ptr->prace];
 
-               if (is_specific_player_race(creature_ptr, RACE_KLACKON) || is_specific_player_race(creature_ptr, RACE_SPRITE))
-                       creature_ptr->pspeed += (creature_ptr->lev) / 10;
+        if (is_specific_player_race(creature_ptr, RACE_KLACKON) || is_specific_player_race(creature_ptr, RACE_SPRITE))
+            creature_ptr->pspeed += (creature_ptr->lev) / 10;
+
+        for (int i = INVEN_RARM; i < INVEN_TOTAL; i++) {
+            object_type *o_ptr = &creature_ptr->inventory_list[i];
+            BIT_FLAGS flgs[TR_FLAG_SIZE];
+            object_flags(o_ptr, flgs);
+
+            if (!o_ptr->k_idx)
+                continue;
+            if (have_flag(flgs, TR_SPEED))
+                creature_ptr->pspeed += o_ptr->pval;
+        }
+    
 
         if (creature_ptr->mimic_form) {
             switch (creature_ptr->mimic_form) {