aboutsummaryrefslogtreecommitdiff
path: root/src/game/TemporarySummon.cpp
diff options
context:
space:
mode:
authormegamage <none@none>2009-03-25 21:32:34 -0600
committermegamage <none@none>2009-03-25 21:32:34 -0600
commit1c2eab41105ab48670228c6cd1630ee6eab15815 (patch)
treee2ef0969ed3db851881c8db524695dd249ddaf5f /src/game/TemporarySummon.cpp
parentebf53a4820de1978a9ad8a6743255d72ae7592e0 (diff)
*Fix a crash caused by pet.
*Make pet class derived from guardian class. --HG-- branch : trunk
Diffstat (limited to 'src/game/TemporarySummon.cpp')
-rw-r--r--src/game/TemporarySummon.cpp43
1 files changed, 7 insertions, 36 deletions
diff --git a/src/game/TemporarySummon.cpp b/src/game/TemporarySummon.cpp
index 8f3988994fb..06dfea5a25a 100644
--- a/src/game/TemporarySummon.cpp
+++ b/src/game/TemporarySummon.cpp
@@ -18,11 +18,11 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-#include "TemporarySummon.h"
#include "Log.h"
#include "ObjectAccessor.h"
#include "CreatureAI.h"
#include "ObjectMgr.h"
+#include "TemporarySummon.h"
TempSummon::TempSummon(SummonPropertiesEntry const *properties, Unit *owner) :
Creature(), m_type(TEMPSUMMON_MANUAL_DESPAWN), m_timer(0), m_lifetime(0)
@@ -32,6 +32,11 @@ Creature(), m_type(TEMPSUMMON_MANUAL_DESPAWN), m_timer(0), m_lifetime(0)
m_summonMask |= SUMMON_MASK_SUMMON;
}
+Unit* TempSummon::GetSummoner() const
+{
+ return m_summonerGUID ? ObjectAccessor::GetUnit(*this, m_summonerGUID) : NULL;
+}
+
void TempSummon::Update( uint32 diff )
{
if (m_deathState == DEAD)
@@ -234,7 +239,7 @@ void TempSummon::SaveToDB()
}
Guardian::Guardian(SummonPropertiesEntry const *properties, Unit *owner) : TempSummon(properties, owner)
-, m_owner(owner)
+, m_owner(owner), m_bonusdamage(0)
{
m_summonMask |= SUMMON_MASK_GUARDIAN;
InitCharmInfo();
@@ -257,40 +262,6 @@ void Guardian::InitSummon(uint32 duration)
}
}
-void Guardian::InitStatsForLevel(uint32 petlevel)
-{
- SetLevel(petlevel);
- switch(GetEntry())
- {
- case 1964: //force of nature
- SetCreateHealth(30 + 30*petlevel);
- SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, float(petlevel * 2.5f - (petlevel / 2)));
- SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, float(petlevel * 2.5f + (petlevel / 2)));
- break;
- case 15352: //earth elemental 36213
- SetCreateHealth(100 + 120*petlevel);
- SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, float(petlevel - (petlevel / 4)));
- SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, float(petlevel + (petlevel / 4)));
- break;
- case 15438: //fire elemental
- SetCreateHealth(40*petlevel);
- SetCreateMana(28 + 10*petlevel);
- SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, float(petlevel * 4 - petlevel));
- SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, float(petlevel * 4 + petlevel));
- break;
- default:
- SetCreateMana(28 + 10*petlevel);
- SetCreateHealth(28 + 30*petlevel);
- // FIXME: this is wrong formula, possible each guardian pet have own damage formula
- //these formula may not be correct; however, it is designed to be close to what it should be
- //this makes dps 0.5 of pets level
- SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, float(petlevel - (petlevel / 4)));
- //damage range is then petlevel / 2
- SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, float(petlevel + (petlevel / 4)));
- break;
- }
-}
-
void Guardian::RemoveFromWorld()
{
if(!IsInWorld())