From a1a7a2d7c06e9a8d1cbf3a8901d8d134dcd1ee6a Mon Sep 17 00:00:00 2001 From: Shauren Date: Wed, 7 Mar 2012 18:57:47 +0100 Subject: Core/Players * Add liquid special aura only if player is in it (not when above) * Use CastSpell instead of AddAura - checks all dbc conditions on spell --- src/server/game/DataStores/DBCStores.cpp | 8 ++++++++ src/server/game/DataStores/DBCStores.h | 2 ++ src/server/game/Entities/Player/Player.cpp | 7 ++++++- 3 files changed, 16 insertions(+), 1 deletion(-) (limited to 'src/server/game') diff --git a/src/server/game/DataStores/DBCStores.cpp b/src/server/game/DataStores/DBCStores.cpp index 4fa8e09cead..acc130dcddf 100755 --- a/src/server/game/DataStores/DBCStores.cpp +++ b/src/server/game/DataStores/DBCStores.cpp @@ -864,6 +864,14 @@ uint32 const* GetTalentTabPages(uint8 cls) return sTalentTabPages[cls]; } +uint32 GetLiquidFlags(uint32 liquidType) +{ + if (LiquidTypeEntry const* liq = sLiquidTypeStore.LookupEntry(liquidType)) + return 1 << liq->Type; + + return 0; +} + // script support functions DBCStorage const* GetSoundEntriesStore() { return &sSoundEntriesStore; } DBCStorage const* GetSpellRangeStore() { return &sSpellRangeStore; } diff --git a/src/server/game/DataStores/DBCStores.h b/src/server/game/DataStores/DBCStores.h index 0bbf06c5311..3f8d19c1f5e 100755 --- a/src/server/game/DataStores/DBCStores.h +++ b/src/server/game/DataStores/DBCStores.h @@ -60,6 +60,8 @@ MapDifficulty const* GetDownscaledMapDifficultyData(uint32 mapId, Difficulty &di uint32 const* /*[MAX_TALENT_TABS]*/ GetTalentTabPages(uint8 cls); +uint32 GetLiquidFlags(uint32 liquidType); + PvPDifficultyEntry const* GetBattlegroundBracketByLevel(uint32 mapid, uint32 level); PvPDifficultyEntry const* GetBattlegroundBracketById(uint32 mapid, BattlegroundBracketId id); diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 729a2fe0b00..54178cd6720 100755 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -23075,7 +23075,12 @@ void Player::UpdateUnderwaterState(Map* m, float x, float y, float z) RemoveAurasDueToSpell(_lastLiquid->SpellId); if (liquid && liquid->SpellId) - AddAura(liquid->SpellId, this); + { + if (res & (LIQUID_MAP_UNDER_WATER | LIQUID_MAP_IN_WATER | LIQUID_MAP_WATER_WALK)) + CastSpell(this, liquid->SpellId, this); + else + RemoveAurasDueToSpell(liquid->SpellId); + } _lastLiquid = liquid; } -- cgit v1.2.3