rendered paste bodyIndex: game/Player.cpp
===================================================================
--- game/Player.cpp (revision 105)
+++ game/Player.cpp (working copy)
@@ -182,7 +182,6 @@
m_bUnlimitedBreath = false;
m_UnderwaterState = 0;
- m_UnderwaterTimeMod = 0;
m_UnderwaterTime = 60000;
m_UnderwaterMaxTime = 60000;
m_UnderwaterLastDmg = getMSTime();
@@ -677,12 +676,7 @@
if(p_time >= m_UnderwaterTime)
m_UnderwaterTime = 0;
else
- {
- if(m_UnderwaterTimeMod != 0)
- m_UnderwaterTime -= p_time/m_UnderwaterTimeMod;
- else
- m_UnderwaterTime -= p_time;
- }
+ m_UnderwaterTime -= p_time;
}
if(!m_UnderwaterTime)
Index: game/Player.h
===================================================================
--- game/Player.h (revision 105)
+++ game/Player.h (working copy)
@@ -773,7 +773,6 @@
bool m_bUnlimitedBreath;
uint32 m_UnderwaterTime;
uint32 m_UnderwaterState;
- int32 m_UnderwaterTimeMod;
uint32 m_SwimmingTime;
uint32 m_BreathDamageTimer;
// Visible objects
Index: game/SpellAuras.cpp
===================================================================
--- game/SpellAuras.cpp (revision 105)
+++ game/SpellAuras.cpp (working copy)
@@ -5000,10 +5000,12 @@
{
if(m_target->GetTypeId() == TYPEID_PLAYER)
{
+ uint32 m_UnderwaterMaxTimeSaved = static_cast<Player*>(m_target)->m_UnderwaterMaxTime;
if(apply)
- static_cast<Player*>(m_target)->m_UnderwaterTimeMod += mod->m_amount/100;
+ static_cast<Player*>(m_target)->m_UnderwaterMaxTime *= (1 + mod->m_amount/100);
else
- static_cast<Player*>(m_target)->m_UnderwaterTimeMod -= mod->m_amount/100;
+ static_cast<Player*>(m_target)->m_UnderwaterMaxTime /= (1 + mod->m_amount/100);
+ static_cast<Player*>(m_target)->m_UnderwaterTime *= static_cast<Player*>(m_target)->m_UnderwaterMaxTime / m_UnderwaterMaxTimeSaved;
}
}