summaryrefslogtreecommitdiff
path: root/src/being/playerinfo.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/being/playerinfo.cpp')
-rw-r--r--src/being/playerinfo.cpp46
1 files changed, 29 insertions, 17 deletions
diff --git a/src/being/playerinfo.cpp b/src/being/playerinfo.cpp
index 6ed4fceba..89fd30245 100644
--- a/src/being/playerinfo.cpp
+++ b/src/being/playerinfo.cpp
@@ -396,25 +396,37 @@ void setTrading(const Trading trading)
mTrading = trading;
}
+#define updateAttackStat(atk, delay, speed) \
+ attackDelay = getStatBase(delay); \
+ if (attackDelay) \
+ { \
+ setStatBase(speed, \
+ getStatBase(atk) * 1000 / attackDelay, \
+ Notify_false); \
+ setStatMod(speed, \
+ getStatMod(atk) * 1000 / attackDelay, \
+ Notify_true); \
+ } \
+ else \
+ { \
+ setStatBase(speed, 0, \
+ Notify_false); \
+ setStatMod(speed, 0, \
+ Notify_true); \
+ }
+
void updateAttrs()
{
- const int attackDelay = getStatBase(Attributes::PLAYER_ATTACK_DELAY);
- if (attackDelay)
- {
- setStatBase(Attributes::PLAYER_ATTACK_SPEED,
- getStatBase(Attributes::PLAYER_ATK) * 1000 / attackDelay,
- Notify_false);
- setStatMod(Attributes::PLAYER_ATTACK_SPEED,
- getStatMod(Attributes::PLAYER_ATK) * 1000 / attackDelay,
- Notify_true);
- }
- else
- {
- setStatBase(Attributes::PLAYER_ATTACK_SPEED, 0,
- Notify_false);
- setStatMod(Attributes::PLAYER_ATTACK_SPEED, 0,
- Notify_true);
- }
+ int attackDelay;
+ updateAttackStat(Attributes::PLAYER_ATK,
+ Attributes::PLAYER_ATTACK_DELAY,
+ Attributes::PLAYER_ATTACK_SPEED)
+ updateAttackStat(Attributes::HOMUN_ATK,
+ Attributes::HOMUN_ATTACK_DELAY,
+ Attributes::HOMUN_ATTACK_SPEED)
+ updateAttackStat(Attributes::MERC_ATK,
+ Attributes::MERC_ATTACK_DELAY,
+ Attributes::MERC_ATTACK_SPEED)
}
void init()