• R/O
  • HTTP
  • SSH
  • HTTPS

hengbandosx: 提交

The master and develop branches track hengband.

OS X development happens on the macos-1-6-2, macos-2-2-1, and macos-develop branches.


Commit MetaInfo

修訂0e8f0e8e4f39297e076ae7fd1590bd5d1cee7479 (tree)
時間2022-06-30 01:49:45
作者Eric Branlund <ebranlund@fast...>
CommiterEric Branlund

Log Message

Merge branch 'develop' into macos-develop

Change Summary

差異

--- a/Hengband/Hengband/Hengband.vcxproj
+++ b/Hengband/Hengband/Hengband.vcxproj
@@ -600,6 +600,7 @@
600600 <ClCompile Include="..\..\src\target\target-getter.cpp" />
601601 <ClCompile Include="..\..\src\target\target-preparation.cpp" />
602602 <ClCompile Include="..\..\src\target\target-setter.cpp" />
603+ <ClCompile Include="..\..\src\timed-effect\player-acceleration.cpp" />
603604 <ClCompile Include="..\..\src\timed-effect\player-confusion.cpp" />
604605 <ClCompile Include="..\..\src\timed-effect\player-cut.cpp" />
605606 <ClCompile Include="..\..\src\timed-effect\player-fear.cpp" />
@@ -1394,6 +1395,7 @@
13941395 <ClInclude Include="..\..\src\term\screen-processor.h" />
13951396 <ClInclude Include="..\..\src\timed-effect\player-confusion.h" />
13961397 <ClInclude Include="..\..\src\timed-effect\player-cut.h" />
1398+ <ClInclude Include="..\..\src\timed-effect\player-acceleration.h" />
13971399 <ClInclude Include="..\..\src\timed-effect\player-fear.h" />
13981400 <ClInclude Include="..\..\src\timed-effect\player-hallucination.h" />
13991401 <ClInclude Include="..\..\src\timed-effect\player-paralysis.h" />
--- a/Hengband/Hengband/Hengband.vcxproj.filters
+++ b/Hengband/Hengband/Hengband.vcxproj.filters
@@ -2454,6 +2454,9 @@
24542454 <ClCompile Include="..\..\src\monster-race\race-feature-mask.cpp">
24552455 <Filter>monster-race</Filter>
24562456 </ClCompile>
2457+ <ClCompile Include="..\..\src\timed-effect\player-acceleration.cpp">
2458+ <Filter>timed-effect</Filter>
2459+ </ClCompile>
24572460 </ItemGroup>
24582461 <ItemGroup>
24592462 <ClInclude Include="..\..\src\combat\shoot.h">
@@ -5331,6 +5334,9 @@
53315334 <ClInclude Include="..\..\src\monster-race\race-feature-mask.h">
53325335 <Filter>monster-race</Filter>
53335336 </ClInclude>
5337+ <ClInclude Include="..\..\src\timed-effect\player-acceleration.h">
5338+ <Filter>timed-effect</Filter>
5339+ </ClInclude>
53345340 </ItemGroup>
53355341 <ItemGroup>
53365342 <None Include="..\..\src\wall.bmp" />
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -939,6 +939,7 @@ hengband_SOURCES = \
939939 term/z-term.cpp term/z-term.h term/z-util.cpp term/z-util.h \
940940 term/z-virt.cpp term/z-virt.h \
941941 \
942+ timed-effect/player-acceleration.cpp timed-effect/player-acceleration.h \
942943 timed-effect/player-confusion.cpp timed-effect/player-confusion.h \
943944 timed-effect/player-cut.cpp timed-effect/player-cut.h \
944945 timed-effect/player-fear.cpp timed-effect/player-fear.h \
--- a/src/blue-magic/blue-magic-caster.cpp
+++ b/src/blue-magic/blue-magic-caster.cpp
@@ -323,7 +323,7 @@ static bool switch_cast_blue_magic(PlayerType *player_ptr, bmc_type *bmc_ptr, Mo
323323 case MonsterAbilityType::HOLD:
324324 return cast_blue_sleep(player_ptr, bmc_ptr);
325325 case MonsterAbilityType::HASTE:
326- (void)set_fast(player_ptr, randint1(20 + bmc_ptr->plev) + bmc_ptr->plev, false);
326+ (void)set_acceleration(player_ptr, randint1(20 + bmc_ptr->plev) + bmc_ptr->plev, false);
327327 return true;
328328 case MonsterAbilityType::HAND_DOOM:
329329 return cast_blue_hand_doom(player_ptr, bmc_ptr);
--- a/src/cmd-action/cmd-mane.cpp
+++ b/src/cmd-action/cmd-mane.cpp
@@ -895,7 +895,7 @@ static bool use_mane(PlayerType *player_ptr, MonsterAbilityType spell)
895895 sleep_monster(player_ptr, dir, plev);
896896 break;
897897 case MonsterAbilityType::HASTE:
898- (void)set_fast(player_ptr, randint1(20 + plev) + plev, false);
898+ (void)set_acceleration(player_ptr, randint1(20 + plev) + plev, false);
899899 break;
900900 case MonsterAbilityType::HAND_DOOM: {
901901 if (!get_aim_dir(player_ptr, &dir)) {
--- a/src/cmd-item/cmd-usestaff.cpp
+++ b/src/cmd-item/cmd-usestaff.cpp
@@ -235,7 +235,7 @@ int staff_effect(PlayerType *player_ptr, OBJECT_SUBTYPE_VALUE sval, bool *use_ch
235235 }
236236
237237 case SV_STAFF_SPEED: {
238- if (set_fast(player_ptr, randint1(30) + (powerful ? 30 : 15), false)) {
238+ if (set_acceleration(player_ptr, randint1(30) + (powerful ? 30 : 15), false)) {
239239 ident = true;
240240 }
241241 break;
--- a/src/cmd-item/cmd-zaprod.cpp
+++ b/src/cmd-item/cmd-zaprod.cpp
@@ -143,7 +143,7 @@ int rod_effect(PlayerType *player_ptr, OBJECT_SUBTYPE_VALUE sval, DIRECTION dir,
143143 }
144144
145145 case SV_ROD_SPEED: {
146- if (set_fast(player_ptr, randint1(30) + (powerful ? 30 : 15), false)) {
146+ if (set_acceleration(player_ptr, randint1(30) + (powerful ? 30 : 15), false)) {
147147 ident = true;
148148 }
149149 break;
--- a/src/core/magic-effects-timeout-reducer.cpp
+++ b/src/core/magic-effects-timeout-reducer.cpp
@@ -17,6 +17,7 @@
1717 #include "status/sight-setter.h"
1818 #include "status/temporary-resistance.h"
1919 #include "system/player-type-definition.h"
20+#include "timed-effect/player-acceleration.h"
2021 #include "timed-effect/player-confusion.h"
2122 #include "timed-effect/player-cut.h"
2223 #include "timed-effect/player-fear.h"
@@ -143,8 +144,8 @@ void reduce_magic_effects_timeout(PlayerType *player_ptr)
143144 (void)bss.mod_fear(-1);
144145 }
145146
146- if (player_ptr->fast) {
147- (void)set_fast(player_ptr, player_ptr->fast - 1, true);
147+ if (effects->acceleration()->is_fast()) {
148+ (void)mod_acceleration(player_ptr, -1, true);
148149 }
149150
150151 if (player_ptr->slow) {
--- a/src/effect/effect-player-oldies.cpp
+++ b/src/effect/effect-player-oldies.cpp
@@ -7,6 +7,7 @@
77 #include "status/bad-status-setter.h"
88 #include "status/buff-setter.h"
99 #include "system/player-type-definition.h"
10+#include "timed-effect/player-acceleration.h"
1011 #include "view/display-messages.h"
1112
1213 void effect_player_old_heal(PlayerType *player_ptr, EffectPlayerType *ep_ptr)
@@ -25,7 +26,7 @@ void effect_player_old_speed(PlayerType *player_ptr, EffectPlayerType *ep_ptr)
2526 msg_print(_("何かで攻撃された!", "You are hit by something!"));
2627 }
2728
28- (void)set_fast(player_ptr, player_ptr->fast + randint1(5), false);
29+ (void)mod_acceleration(player_ptr, randint1(5), false);
2930 ep_ptr->dam = 0;
3031 }
3132
--- a/src/load/player-info-loader.cpp
+++ b/src/load/player-info-loader.cpp
@@ -23,6 +23,7 @@
2323 #include "system/angband-exceptions.h"
2424 #include "system/floor-type-definition.h"
2525 #include "system/player-type-definition.h"
26+#include "timed-effect/player-acceleration.h"
2627 #include "timed-effect/player-confusion.h"
2728 #include "timed-effect/player-cut.h"
2829 #include "timed-effect/player-fear.h"
@@ -360,7 +361,7 @@ static void rd_energy(PlayerType *player_ptr)
360361 static void rd_status(PlayerType *player_ptr)
361362 {
362363 auto effects = player_ptr->effects();
363- player_ptr->fast = rd_s16b();
364+ effects->acceleration()->set(rd_s16b());
364365 player_ptr->slow = rd_s16b();
365366 effects->fear()->set(rd_s16b());
366367 effects->cut()->set(rd_s16b());
--- a/src/mind/mind-mindcrafter.cpp
+++ b/src/mind/mind-mindcrafter.cpp
@@ -249,7 +249,7 @@ bool cast_mindcrafter_spell(PlayerType *player_ptr, MindMindcrafterType spell)
249249
250250 t = 10 + randint1((plev * 3) / 2);
251251 set_hero(player_ptr, t, false);
252- (void)set_fast(player_ptr, t, false);
252+ (void)set_acceleration(player_ptr, t, false);
253253 break;
254254 }
255255 case MindMindcrafterType::TELEKINESIS:
--- a/src/monster-attack/monster-attack-switcher.cpp
+++ b/src/monster-attack/monster-attack-switcher.cpp
@@ -29,6 +29,8 @@
2929 #include "system/monster-type-definition.h"
3030 #include "system/object-type-definition.h"
3131 #include "system/player-type-definition.h"
32+#include "timed-effect/player-acceleration.h"
33+#include "timed-effect/timed-effects.h"
3234 #include "view/display-messages.h"
3335
3436 /*!
@@ -301,7 +303,7 @@ static void calc_blow_drain_mana(PlayerType *player_ptr, MonsterAttackPlayer *mo
301303
302304 static void calc_blow_inertia(PlayerType *player_ptr, MonsterAttackPlayer *monap_ptr)
303305 {
304- if ((player_ptr->fast > 0) || (player_ptr->pspeed >= 130)) {
306+ if (player_ptr->effects()->acceleration()->is_fast() || (player_ptr->pspeed >= 130)) {
305307 monap_ptr->damage = monap_ptr->damage * (randint1(4) + 4) / 9;
306308 }
307309
--- a/src/mspell/mspell-dispel.cpp
+++ b/src/mspell/mspell-dispel.cpp
@@ -36,7 +36,7 @@
3636 */
3737 static void dispel_player(PlayerType *player_ptr)
3838 {
39- (void)set_fast(player_ptr, 0, true);
39+ (void)set_acceleration(player_ptr, 0, true);
4040 set_lightspeed(player_ptr, 0, true);
4141 (void)BadStatusSetter(player_ptr).slowness(0, true);
4242 (void)set_shield(player_ptr, 0, true);
--- a/src/mutation/mutation-processor.cpp
+++ b/src/mutation/mutation-processor.cpp
@@ -51,6 +51,7 @@
5151 #include "target/target-setter.h"
5252 #include "target/target-types.h"
5353 #include "term/screen-processor.h"
54+#include "timed-effect/player-acceleration.h"
5455 #include "timed-effect/player-confusion.h"
5556 #include "timed-effect/timed-effects.h"
5657 #include "view/display-messages.h"
@@ -234,8 +235,8 @@ void process_world_aux_mutation(PlayerType *player_ptr)
234235 disturb(player_ptr, false, true);
235236 if (one_in_(2)) {
236237 msg_print(_("精力的でなくなった気がする。", "You feel less energetic."));
237- if (player_ptr->fast > 0) {
238- set_fast(player_ptr, 0, true);
238+ if (player_ptr->effects()->acceleration()->is_fast()) {
239+ set_acceleration(player_ptr, 0, true);
239240 } else {
240241 (void)bss.slowness(randint1(30) + 10, false);
241242 }
@@ -244,7 +245,7 @@ void process_world_aux_mutation(PlayerType *player_ptr)
244245 if (player_ptr->slow > 0) {
245246 (void)bss.slowness(0, true);
246247 } else {
247- set_fast(player_ptr, randint1(30) + 10, false);
248+ set_acceleration(player_ptr, randint1(30) + 10, false);
248249 }
249250 }
250251
--- a/src/object-activation/activation-switcher.cpp
+++ b/src/object-activation/activation-switcher.cpp
@@ -38,6 +38,7 @@
3838 #include "status/sight-setter.h"
3939 #include "system/floor-type-definition.h"
4040 #include "system/player-type-definition.h"
41+#include "timed-effect/player-acceleration.h"
4142 #include "view/display-messages.h"
4243
4344 bool switch_activation(PlayerType *player_ptr, ObjectType **o_ptr_ptr, const activation_type *const act_ptr, concptr name)
@@ -242,15 +243,15 @@ bool switch_activation(PlayerType *player_ptr, ObjectType **o_ptr_ptr, const act
242243 return activate_resistance_elements(player_ptr);
243244 case RandomArtActType::SPEED:
244245 msg_print(_("明るく緑色に輝いている...", "It glows bright green..."));
245- (void)set_fast(player_ptr, randint1(20) + 20, false);
246+ (void)set_acceleration(player_ptr, randint1(20) + 20, false);
246247 return true;
247248 case RandomArtActType::MID_SPEED:
248249 msg_print(_("明るく緑色に輝いている...", "It glows bright green..."));
249- (void)set_fast(player_ptr, randint1(50) + 50, false);
250+ (void)set_acceleration(player_ptr, randint1(50) + 50, false);
250251 return true;
251252 case RandomArtActType::XTRA_SPEED:
252253 msg_print(_("明るく輝いている...", "It glows brightly..."));
253- (void)set_fast(player_ptr, randint1(75) + 75, false);
254+ (void)set_acceleration(player_ptr, randint1(75) + 75, false);
254255 return true;
255256 case RandomArtActType::WRAITH:
256257 set_wraith_form(player_ptr, randint1(player_ptr->lev / 2) + (player_ptr->lev / 2), false);
@@ -262,7 +263,7 @@ bool switch_activation(PlayerType *player_ptr, ObjectType **o_ptr_ptr, const act
262263 (void)heroism(player_ptr, 25);
263264 return true;
264265 case RandomArtActType::HERO_SPEED:
265- (void)set_fast(player_ptr, randint1(50) + 50, false);
266+ (void)set_acceleration(player_ptr, randint1(50) + 50, false);
266267 (void)heroism(player_ptr, 50);
267268 return true;
268269 case RandomArtActType::ACID_BALL_AND_RESISTANCE:
@@ -362,7 +363,7 @@ bool switch_activation(PlayerType *player_ptr, ObjectType **o_ptr_ptr, const act
362363 case RandomArtActType::STRAIN_HASTE:
363364 msg_format(_("%sはあなたの体力を奪った...", "The %s drains your vitality..."), name);
364365 take_hit(player_ptr, DAMAGE_LOSELIFE, damroll(3, 8), _("加速した疲労", "the strain of haste"));
365- (void)set_fast(player_ptr, player_ptr->fast + 25 + randint1(25), false);
366+ (void)mod_acceleration(player_ptr, 25 + randint1(25), false);
366367 return true;
367368 case RandomArtActType::FISHING:
368369 return fishing(player_ptr);
--- a/src/object-use/quaff/quaff-effects.cpp
+++ b/src/object-use/quaff/quaff-effects.cpp
@@ -37,6 +37,8 @@
3737 #include "system/angband.h"
3838 #include "system/object-type-definition.h"
3939 #include "system/player-type-definition.h"
40+#include "timed-effect/player-acceleration.h"
41+#include "timed-effect/timed-effects.h"
4042 #include "util/bit-flags-calculator.h"
4143 #include "view/display-messages.h"
4244
@@ -372,12 +374,12 @@ bool QuaffEffects::death()
372374 */
373375 bool QuaffEffects::speed()
374376 {
375- if (this->player_ptr->fast) {
376- (void)set_fast(this->player_ptr, this->player_ptr->fast + 5, false);
377+ if (this->player_ptr->effects()->acceleration()->is_fast()) {
378+ (void)mod_acceleration(this->player_ptr, 5, false);
377379 return false;
378380 }
379381
380- return set_fast(this->player_ptr, randint1(25) + 15, false);
382+ return set_acceleration(this->player_ptr, randint1(25) + 15, false);
381383 }
382384
383385 /*!
--- a/src/player/player-status.cpp
+++ b/src/player/player-status.cpp
@@ -110,6 +110,7 @@
110110 #include "system/object-type-definition.h"
111111 #include "system/player-type-definition.h"
112112 #include "term/screen-processor.h"
113+#include "timed-effect/player-acceleration.h"
113114 #include "timed-effect/player-stun.h"
114115 #include "timed-effect/timed-effects.h"
115116 #include "util/bit-flags-calculator.h"
@@ -3154,7 +3155,7 @@ void stop_mouth(PlayerType *player_ptr)
31543155
31553156 bool is_fast(PlayerType *player_ptr)
31563157 {
3157- return player_ptr->fast || music_singing(player_ptr, MUSIC_SPEED) || music_singing(player_ptr, MUSIC_SHERO);
3158+ return player_ptr->effects()->acceleration()->is_fast() || music_singing(player_ptr, MUSIC_SPEED) || music_singing(player_ptr, MUSIC_SHERO);
31583159 }
31593160
31603161 bool is_invuln(PlayerType *player_ptr)
--- a/src/realm/realm-craft.cpp
+++ b/src/realm/realm-craft.cpp
@@ -447,7 +447,7 @@ concptr do_craft_spell(PlayerType *player_ptr, SPELL_IDX spell, SpellProcessType
447447 }
448448
449449 if (cast) {
450- set_fast(player_ptr, randint1(sides) + base, false);
450+ set_acceleration(player_ptr, randint1(sides) + base, false);
451451 }
452452 }
453453 break;
--- a/src/realm/realm-crusade.cpp
+++ b/src/realm/realm-crusade.cpp
@@ -765,7 +765,7 @@ concptr do_crusade_spell(PlayerType *player_ptr, SPELL_IDX spell, SpellProcessTy
765765
766766 set_hero(player_ptr, randint1(base) + base, false);
767767 set_blessed(player_ptr, randint1(base) + base, false);
768- set_fast(player_ptr, randint1(sp_sides) + sp_base, false);
768+ set_acceleration(player_ptr, randint1(sp_sides) + sp_base, false);
769769 set_protevil(player_ptr, randint1(base) + base, false);
770770 (void)BadStatusSetter(player_ptr).fear(0);
771771 }
--- a/src/realm/realm-death.cpp
+++ b/src/realm/realm-death.cpp
@@ -563,7 +563,7 @@ concptr do_death_spell(PlayerType *player_ptr, SPELL_IDX spell, SpellProcessType
563563
564564 if (cast) {
565565 (void)berserk(player_ptr, b_base + randint1(b_base));
566- set_fast(player_ptr, randint1(sp_sides) + sp_base, false);
566+ set_acceleration(player_ptr, randint1(sp_sides) + sp_base, false);
567567 }
568568 }
569569 break;
--- a/src/realm/realm-life.cpp
+++ b/src/realm/realm-life.cpp
@@ -662,7 +662,7 @@ concptr do_life_spell(PlayerType *player_ptr, SPELL_IDX spell, SpellProcessType
662662
663663 if (cast) {
664664 TIME_EFFECT v = randint1(base) + base;
665- set_fast(player_ptr, v, false);
665+ set_acceleration(player_ptr, v, false);
666666 set_oppose_acid(player_ptr, v, false);
667667 set_oppose_elec(player_ptr, v, false);
668668 set_oppose_fire(player_ptr, v, false);
--- a/src/realm/realm-song.cpp
+++ b/src/realm/realm-song.cpp
@@ -25,6 +25,8 @@
2525 #include "status/experience.h"
2626 #include "system/player-type-definition.h"
2727 #include "target/target-getter.h"
28+#include "timed-effect/player-acceleration.h"
29+#include "timed-effect/timed-effects.h"
2830 #include "view/display-messages.h"
2931
3032 /*!
@@ -693,7 +695,7 @@ concptr do_music_spell(PlayerType *player_ptr, SPELL_IDX spell, SpellProcessType
693695 }
694696
695697 if (stop) {
696- if (!player_ptr->fast) {
698+ if (!player_ptr->effects()->acceleration()->is_fast()) {
697699 msg_print(_("動きの素早さがなくなったようだ。", "You feel yourself slow down."));
698700 }
699701 }
@@ -968,7 +970,7 @@ concptr do_music_spell(PlayerType *player_ptr, SPELL_IDX spell, SpellProcessType
968970 player_ptr->update |= PU_HP;
969971 }
970972
971- if (!player_ptr->fast) {
973+ if (!player_ptr->effects()->acceleration()->is_fast()) {
972974 msg_print(_("動きの素早さがなくなったようだ。", "You feel yourself slow down."));
973975 }
974976 }
--- a/src/realm/realm-sorcery.cpp
+++ b/src/realm/realm-sorcery.cpp
@@ -351,7 +351,7 @@ concptr do_sorcery_spell(PlayerType *player_ptr, SPELL_IDX spell, SpellProcessTy
351351 }
352352
353353 if (cast) {
354- set_fast(player_ptr, randint1(sides) + base, false);
354+ set_acceleration(player_ptr, randint1(sides) + base, false);
355355 }
356356 }
357357 break;
--- a/src/save/player-writer.cpp
+++ b/src/save/player-writer.cpp
@@ -10,6 +10,7 @@
1010 #include "system/building-type-definition.h"
1111 #include "system/floor-type-definition.h"
1212 #include "system/player-type-definition.h"
13+#include "timed-effect/player-acceleration.h"
1314 #include "timed-effect/player-confusion.h"
1415 #include "timed-effect/player-cut.h"
1516 #include "timed-effect/player-fear.h"
@@ -164,7 +165,7 @@ void wr_player(PlayerType *player_ptr)
164165 wr_s16b(0); /* old "protection" */
165166 wr_s16b(player_ptr->energy_need);
166167 wr_s16b(player_ptr->enchant_energy_need);
167- wr_s16b(player_ptr->fast);
168+ wr_s16b(effects->acceleration()->current());
168169 wr_s16b(player_ptr->slow);
169170 wr_s16b(effects->fear()->current());
170171 wr_s16b(effects->cut()->current());
--- a/src/spell/spells-status.cpp
+++ b/src/spell/spells-status.cpp
@@ -51,6 +51,7 @@
5151 #include "system/object-type-definition.h"
5252 #include "system/player-type-definition.h"
5353 #include "target/target-getter.h"
54+#include "timed-effect/player-acceleration.h"
5455 #include "timed-effect/player-cut.h"
5556 #include "timed-effect/timed-effects.h"
5657 #include "util/bit-flags-calculator.h"
@@ -598,7 +599,7 @@ bool cosmic_cast_off(PlayerType *player_ptr, ObjectType **o_ptr_ptr)
598599 (void)set_tim_regen(player_ptr, player_ptr->tim_regen + t, false);
599600 (void)set_hero(player_ptr, player_ptr->hero + t, false);
600601 (void)set_blessed(player_ptr, player_ptr->blessed + t, false);
601- (void)set_fast(player_ptr, player_ptr->fast + t, false);
602+ (void)mod_acceleration(player_ptr, t, false);
602603 (void)set_shero(player_ptr, player_ptr->shero + t, false);
603604 if (PlayerClass(player_ptr).equals(PlayerClassType::FORCETRAINER)) {
604605 set_current_ki(player_ptr, true, player_ptr->lev * 5 + 190);
--- a/src/status/buff-setter.cpp
+++ b/src/status/buff-setter.cpp
@@ -19,6 +19,7 @@
1919 #include "status/buff-setter.h"
2020 #include "status/element-resistance.h"
2121 #include "system/player-type-definition.h"
22+#include "timed-effect/player-acceleration.h"
2223 #include "timed-effect/player-confusion.h"
2324 #include "timed-effect/player-cut.h"
2425 #include "timed-effect/player-fear.h"
@@ -34,7 +35,7 @@
3435 void reset_tim_flags(PlayerType *player_ptr)
3536 {
3637 auto effects = player_ptr->effects();
37- player_ptr->fast = 0; /* Timed -- Fast */
38+ effects->acceleration()->reset();
3839 player_ptr->lightspeed = 0;
3940 player_ptr->slow = 0; /* Timed -- Slow */
4041 player_ptr->blind = 0; /* Timed -- Blindness */
@@ -116,7 +117,7 @@ void reset_tim_flags(PlayerType *player_ptr)
116117 * @param do_dec 現在の継続時間より長い値のみ上書きする
117118 * @return ステータスに影響を及ぼす変化があった場合TRUEを返す。
118119 */
119-bool set_fast(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
120+bool set_acceleration(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
120121 {
121122 bool notice = false;
122123 v = (v > 10000) ? 10000 : (v < 0) ? 0
@@ -126,9 +127,10 @@ bool set_fast(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
126127 return false;
127128 }
128129
130+ auto acceleration = player_ptr->effects()->acceleration();
129131 if (v) {
130- if (player_ptr->fast && !do_dec) {
131- if (player_ptr->fast > v) {
132+ if (acceleration->is_fast() && !do_dec) {
133+ if (acceleration->current() > v) {
132134 return false;
133135 }
134136 } else if (!is_fast(player_ptr) && !player_ptr->lightspeed) {
@@ -138,13 +140,13 @@ bool set_fast(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
138140 chg_virtue(player_ptr, V_DILIGENCE, 1);
139141 }
140142 } else {
141- if (player_ptr->fast && !player_ptr->lightspeed && !music_singing(player_ptr, MUSIC_SPEED) && !music_singing(player_ptr, MUSIC_SHERO)) {
143+ if (acceleration->is_fast() && !player_ptr->lightspeed && !music_singing(player_ptr, MUSIC_SPEED) && !music_singing(player_ptr, MUSIC_SHERO)) {
142144 msg_print(_("動きの素早さがなくなったようだ。", "You feel yourself slow down."));
143145 notice = true;
144146 }
145147 }
146148
147- player_ptr->fast = v;
149+ acceleration->set(v);
148150 if (!notice) {
149151 return false;
150152 }
@@ -157,6 +159,11 @@ bool set_fast(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
157159 return true;
158160 }
159161
162+bool mod_acceleration(PlayerType *player_ptr, const TIME_EFFECT v, const bool do_dec)
163+{
164+ return set_acceleration(player_ptr, player_ptr->effects()->acceleration()->current() + v, do_dec);
165+}
166+
160167 /*!
161168 * @brief 肌石化の継続時間をセットする / Set "shield", notice observable changes
162169 * @param v 継続時間
--- a/src/status/buff-setter.h
+++ b/src/status/buff-setter.h
@@ -5,7 +5,8 @@
55 enum class MimicKindType;
66 class PlayerType;
77 void reset_tim_flags(PlayerType *player_ptr);
8-bool set_fast(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec);
8+bool set_acceleration(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec);
9+bool mod_acceleration(PlayerType *player_ptr, const TIME_EFFECT v, const bool do_dec);
910 bool set_shield(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec);
1011 bool set_magicdef(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec);
1112 bool set_blessed(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec);
--- a/src/system/player-type-definition.h
+++ b/src/system/player-type-definition.h
@@ -94,7 +94,6 @@ public:
9494
9595 uint32_t count{};
9696
97- TIME_EFFECT fast{}; /* Timed -- Fast */
9897 TIME_EFFECT slow{}; /* Timed -- Slow */
9998 TIME_EFFECT blind{}; /* Timed -- Blindness */
10099 TIME_EFFECT poisoned{}; /* Timed -- Poisoned */
--- /dev/null
+++ b/src/timed-effect/player-acceleration.cpp
@@ -0,0 +1,26 @@
1+#include "timed-effect/player-acceleration.h"
2+
3+short PlayerAcceleration::current() const
4+{
5+ return this->acceleration;
6+}
7+
8+bool PlayerAcceleration::is_fast() const
9+{
10+ return this->acceleration > 0;
11+}
12+
13+void PlayerAcceleration::set(short value)
14+{
15+ this->acceleration = value;
16+}
17+
18+void PlayerAcceleration::add(short value)
19+{
20+ this->acceleration += value;
21+}
22+
23+void PlayerAcceleration::reset()
24+{
25+ this->set(0);
26+}
--- /dev/null
+++ b/src/timed-effect/player-acceleration.h
@@ -0,0 +1,15 @@
1+#pragma once
2+
3+class PlayerAcceleration {
4+public:
5+ PlayerAcceleration() = default;
6+
7+ short current() const;
8+ bool is_fast() const;
9+ void set(short value);
10+ void add(short value); /*!< 減産も負値を引数に入れれば可能 */
11+ void reset();
12+
13+private:
14+ short acceleration = 0;
15+};
--- a/src/timed-effect/timed-effects.cpp
+++ b/src/timed-effect/timed-effects.cpp
@@ -1,4 +1,5 @@
11 #include "timed-effect/timed-effects.h"
2+#include "timed-effect/player-acceleration.h"
23 #include "timed-effect/player-confusion.h"
34 #include "timed-effect/player-cut.h"
45 #include "timed-effect/player-fear.h"
@@ -13,6 +14,7 @@ TimedEffects::TimedEffects()
1314 , player_hallucination(std::make_shared<PlayerHallucination>())
1415 , player_paralysis(std::make_shared<PlayerParalysis>())
1516 , player_stun(std::make_shared<PlayerStun>())
17+ , player_acceleration(std::make_shared<PlayerAcceleration>())
1618 {
1719 }
1820
@@ -45,3 +47,8 @@ std::shared_ptr<PlayerStun> TimedEffects::stun() const
4547 {
4648 return this->player_stun;
4749 }
50+
51+std::shared_ptr<PlayerAcceleration> TimedEffects::acceleration() const
52+{
53+ return this->player_acceleration;
54+}
--- a/src/timed-effect/timed-effects.h
+++ b/src/timed-effect/timed-effects.h
@@ -2,6 +2,7 @@
22
33 #include <memory>
44
5+class PlayerAcceleration;
56 class PlayerConfusion;
67 class PlayerFear;
78 class PlayerHallucination;
@@ -19,6 +20,7 @@ public:
1920 std::shared_ptr<PlayerHallucination> hallucination() const;
2021 std::shared_ptr<PlayerParalysis> paralysis() const;
2122 std::shared_ptr<PlayerStun> stun() const;
23+ std::shared_ptr<PlayerAcceleration> acceleration() const;
2224
2325 private:
2426 std::shared_ptr<PlayerConfusion> player_confusion;
@@ -27,4 +29,5 @@ private:
2729 std::shared_ptr<PlayerHallucination> player_hallucination;
2830 std::shared_ptr<PlayerParalysis> player_paralysis;
2931 std::shared_ptr<PlayerStun> player_stun;
32+ std::shared_ptr<PlayerAcceleration> player_acceleration;
3033 };
Show on old repository browser