All pastes #804656 Raw Edit

Miscellany

public text v1 · immutable
·published 2007-12-03 17:33 UTC
rendered paste body
Index: Pet.cpp
===================================================================
--- Pet.cpp	(revision 4790)
+++ Pet.cpp	(working copy)
@@ -1026,7 +1026,39 @@
             }
         };
         break;
+		
+		case GUARDIAN_PET:
+        {
+			SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, float(petlevel - (petlevel / 4)) );
+            SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, float(petlevel + (petlevel / 4)) );
 
+			PetLevelInfo const* pInfo = objmgr.GetPetLevelInfo(creature_ID, petlevel);
+            if(pInfo)                                       // exist in DB
+            {
+                SetCreateHealth(pInfo->health);
+                SetCreateMana(pInfo->mana);
+
+                for(int stat = 0; stat < MAX_STATS; ++stat)
+                {
+                    SetCreateStat(Stats(stat),float(pInfo->stats[stat]));
+                }
+            }
+            else                                            // not exist in DB, use some default fake data
+            {
+				sLog.outErrorDb("Summoned pet (Entry: %u) not have pet stats data in DB",cinfo->Entry);
+
+                SetCreateHealth(28 + 30 * petlevel );
+                SetCreateMana(  28 + 10 * petlevel );
+
+                SetCreateStat(STAT_STRENGTH,22);
+                SetCreateStat(STAT_AGILITY,22);
+                SetCreateStat(STAT_STAMINA,25);
+                SetCreateStat(STAT_INTELLECT,28);
+                SetCreateStat(STAT_SPIRIT,27);
+			}
+		}
+		break;
+
         default:            sLog.outError("Pet have incorrect type (%u) for levelup.",getPetType());            break;
     }
 
Index: SpellEffects.cpp
===================================================================
--- SpellEffects.cpp	(revision 4790)
+++ SpellEffects.cpp	(working copy)
@@ -2302,15 +2302,7 @@
             int32 duration = GetDuration(m_spellInfo);
             if(duration > 0)
                 spawnCreature->SetDuration(duration);
-
             spawnCreature->SetUInt64Value(UNIT_FIELD_SUMMONEDBY,m_caster->GetGUID());
-            spawnCreature->setPowerType(POWER_MANA);
-            spawnCreature->SetMaxPower(POWER_MANA,28 + 10 * level);
-            spawnCreature->SetPower(   POWER_MANA,28 + 10 * level);
-            spawnCreature->SetUInt32Value(UNIT_NPC_FLAGS , 0);
-            spawnCreature->SetMaxHealth( 28 + 30*level);
-            spawnCreature->SetHealth(    28 + 30*level);
-            spawnCreature->SetLevel(level);
             spawnCreature->SetUInt32Value(UNIT_FIELD_FACTIONTEMPLATE,m_caster->getFaction());
             spawnCreature->SetUInt32Value(UNIT_FIELD_FLAGS,0);
             spawnCreature->SetUInt32Value(UNIT_FIELD_BYTES_1,0);
@@ -2320,6 +2312,8 @@
             spawnCreature->SetUInt64Value(UNIT_FIELD_CREATEDBY, m_caster->GetGUID());
             spawnCreature->SetUInt32Value(UNIT_CREATED_BY_SPELL, m_spellInfo->Id);
 
+			spawnCreature->InitStatsForLevel(level);
+
             spawnCreature->SetArmor(level*50);
             spawnCreature->AIM_Initialize();