From 0419f9b7ea98b9de36b6af97fccd964d3cda4750 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Wed, 27 Jul 2016 00:06:24 +0300 Subject: Calculate damage per second for homunculus and mercenary. --- src/being/playerinfo.cpp | 46 +++++++++++++++++++++++++++++----------------- 1 file changed, 29 insertions(+), 17 deletions(-) (limited to 'src/being') 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() -- cgit v1.2.3-60-g2f50