diff options
author | Jesusalva Jesusalva <jesusalva@themanaworld.org> | 2023-01-22 17:19:24 +0000 |
---|---|---|
committer | Jesusalva Jesusalva <jesusalva@themanaworld.org> | 2023-01-22 17:19:24 +0000 |
commit | c65f380f93e845c8abab8b05d80b91c271d01dbe (patch) | |
tree | e7802d6e6aad45dfee73a505ce86856057822631 /src | |
parent | 60acf021bf412235cd5be550977bd8242c3bba2f (diff) | |
parent | fd1b3431e44905b29d6313fb172240198f80f27a (diff) | |
download | tmwa-c65f380f93e845c8abab8b05d80b91c271d01dbe.tar.gz tmwa-c65f380f93e845c8abab8b05d80b91c271d01dbe.tar.bz2 tmwa-c65f380f93e845c8abab8b05d80b91c271d01dbe.tar.xz tmwa-c65f380f93e845c8abab8b05d80b91c271d01dbe.zip |
Merge branch 'bonus' into 'master'
bSpeedCap
See merge request legacy/tmwa!244
Diffstat (limited to 'src')
-rw-r--r-- | src/map/map.hpp | 2 | ||||
-rw-r--r-- | src/map/pc.cpp | 12 | ||||
-rw-r--r-- | src/mmo/clif.t.hpp | 2 |
3 files changed, 15 insertions, 1 deletions
diff --git a/src/map/map.hpp b/src/map/map.hpp index eddbfad..af074ba 100644 --- a/src/map/map.hpp +++ b/src/map/map.hpp @@ -188,7 +188,7 @@ struct map_session_data : block_list, SessionData MapName mapname_; Session *sess; // use this, you idiots! short to_x, to_y; - interval_t speed; + interval_t speed, speed_cap; Opt1 opt1; Opt2 opt2; Opt3 opt3; diff --git a/src/map/pc.cpp b/src/map/pc.cpp index 9e76ecf..9fd23b9 100644 --- a/src/map/pc.cpp +++ b/src/map/pc.cpp @@ -1174,6 +1174,7 @@ int pc_calcstatus(dumb_ptr<map_session_data> sd, int first) sd->matk1 = 0; sd->matk2 = 0; sd->speed = DEFAULT_WALK_SPEED; + sd->speed_cap = interval_t::zero(); sd->hprate = 100; sd->sprate = 100; sd->dsprate = 100; @@ -1528,6 +1529,10 @@ int pc_calcstatus(dumb_ptr<map_session_data> sd, int first) if (sd->speed_rate != 100) sd->speed = sd->speed * sd->speed_rate / 100; sd->speed = std::max(sd->speed, 1_ms); + if (sd->speed_cap < interval_t::zero()) + sd->speed_cap = interval_t::zero(); + if (sd->speed < sd->speed_cap) + sd->speed = sd->speed_cap; /* Magic speed */ if (sd->attack_spell_override || first & 8) @@ -1829,6 +1834,12 @@ int pc_bonus(dumb_ptr<map_session_data> sd, SP type, int val) case SP::DEAF: sd->special_state.deaf = 1; break; + case SP::SPEED_CAP: + if (!sd->state.lr_flag_is_arrow_2) + // lowest cap is taken others are ignored + if (sd->speed_cap < interval_t(val)) + sd->speed_cap = interval_t(val); + break; default: if (battle_config.error_log) PRINTF("pc_bonus: unknown type %d %d !\n"_fmt, @@ -1840,6 +1851,7 @@ int pc_bonus(dumb_ptr<map_session_data> sd, SP type, int val) /*========================================== * ソスソス ソスソスソスiソスノゑソスソスソスソス\ソスヘ難ソスソスフボソス[ソスiソスXソスン抵ソス + * sos sos sos sos sos i sos no sos sos sos sos\ *------------------------------------------ */ int pc_bonus2(dumb_ptr<map_session_data> sd, SP type, int type2, int val) diff --git a/src/mmo/clif.t.hpp b/src/mmo/clif.t.hpp index 33a6f3c..830c5bd 100644 --- a/src/mmo/clif.t.hpp +++ b/src/mmo/clif.t.hpp @@ -472,6 +472,8 @@ enum class SP : uint16_t MUTE_PARTY = 1084, MUTE_GUILD = 1085, AUTOMOD = 1086, + + SPEED_CAP = 1087, }; constexpr |