aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Player/Player.h2
-rw-r--r--src/server/game/Spells/SpellHistory.cpp12
-rw-r--r--src/server/scripts/World/duel_reset.cpp6
3 files changed, 11 insertions, 9 deletions
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
index 1eda4dc636f..46222daf869 100644
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -1946,7 +1946,7 @@ class Player : public Unit, public GridObject<Player>
uint32 GetMaxPersonalArenaRatingRequirement(uint32 minarenaslot) const;
void SetHonorPoints(uint32 value);
void SetArenaPoints(uint32 value);
-
+
// duel health and mana reset methods
void SaveHealthBeforeDuel() { healthBeforeDuel = GetHealth(); }
void SaveManaBeforeDuel() { manaBeforeDuel = GetPower(POWER_MANA); }
diff --git a/src/server/game/Spells/SpellHistory.cpp b/src/server/game/Spells/SpellHistory.cpp
index c76c4545643..c822e8961b5 100644
--- a/src/server/game/Spells/SpellHistory.cpp
+++ b/src/server/game/Spells/SpellHistory.cpp
@@ -652,15 +652,17 @@ void SpellHistory::RestoreCooldownStateAfterDuel()
SpellInfo const* spellInfo = sSpellMgr->EnsureSpellInfo(itr->first);
if (spellInfo->RecoveryTime > 10 * MINUTE * IN_MILLISECONDS ||
- spellInfo->CategoryRecoveryTime > 10 * MINUTE * IN_MILLISECONDS)
+ spellInfo->CategoryRecoveryTime > 10 * MINUTE * IN_MILLISECONDS)
_spellCooldownsBeforeDuel[itr->first] = _spellCooldowns[itr->first];
}
- //check for spell with onHold active before and during the duel
+
+ // check for spell with onHold active before and during the duel
for (auto itr = _spellCooldownsBeforeDuel.begin(); itr != _spellCooldownsBeforeDuel.end(); ++itr)
{
- if (!itr->second.OnHold)
- if (!_spellCooldowns[itr->first].OnHold)
- _spellCooldowns[itr->first] = _spellCooldownsBeforeDuel[itr->first];
+ if (!itr->second.OnHold &&
+ _spellCooldowns.find(itr->first) != _spellCooldowns.end() &&
+ !_spellCooldowns[itr->first].OnHold)
+ _spellCooldowns[itr->first] = _spellCooldownsBeforeDuel[itr->first];
}
// update the client: restore old cooldowns
diff --git a/src/server/scripts/World/duel_reset.cpp b/src/server/scripts/World/duel_reset.cpp
index 593906074c5..ae98c0eb4ab 100644
--- a/src/server/scripts/World/duel_reset.cpp
+++ b/src/server/scripts/World/duel_reset.cpp
@@ -66,8 +66,8 @@ class DuelResetScript : public PlayerScript
// Called when a duel ends
void OnDuelEnd(Player* winner, Player* loser, DuelCompleteType type) override
{
- // do not reset anything if DUEL_INTERRUPTED
- if (type != DUEL_INTERRUPTED)
+ // do not reset anything if DUEL_INTERRUPTED or DUEL_FLED
+ if (type == DUEL_WON)
{
// Cooldown restore
if (sWorld->getBoolConfig(CONFIG_RESET_DUEL_COOLDOWNS))
@@ -96,7 +96,7 @@ class DuelResetScript : public PlayerScript
}
}
}
-
+
void ResetSpellCooldowns(Player* player, bool removeActivePetCooldowns)
{
// remove cooldowns on spells that have < 10 min CD and has no onHold