All pastes #516112 Raw Edit

Mine

public text v1 · immutable
#516112 ·published 2007-05-28 15:12 UTC
rendered paste body
Index: 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;
 	}
 }