Projekt

Allgemein

Profil

Fehler #19148

Von Rushor vor fast 8 Jahren aktualisiert

Petscaling: 

 
 Folgend eine Liste welche Petscalingauren atm für unsere Pets pets vergeben werden und eine Liste mit Scalingskripts/Scalingauren welche von Sunwell verwendet werden. 

 Bitte einmal überprüfen, ob bei bestimmten Pets handlungsbedarf besteht einen bestimmten Scalingstat zu überarbeiten. (Mit Ausnahme von Spellpen, siehe dazu https://redmine.rising-gods.de/issues/5673) 

 Sollten Sollte Fragen bezüglich der Spellscripts sein, in Jabber melden. Sollte aber alles selbsterklärend sein, da meistens auch entsprechende Comments hinzugefügt wurden. 

 Unter anderem kann hier gleichzeitig überprüft werden, ob auch wirklich alle Pets einen AoE Reduce besitzen. Spellids Spellsids und Petids NPC entries sind in enums aufgelistet. 

 *Wie sieht die Vergabe von Scalingspells atm aus? (Istzustand in RG Core)* aus?* 

 <pre> 
 void Guardian::CastStatAuras(bool firstApply) 
 { 
     RemoveAurasDueToSpell(SPELL_TAMED_PET_PASSIVE_DND_RESIST); 
    
     if (!IsHunterPet()) 
     { 
         switch (GetEntry()) 
         { 
             case ENTRY_FELHUNTER: 
                 RemoveAurasDueToSpell(SPELL_TAMED_PET_PASSIVE_11); 
                 CastSpell(this, SPELL_TAMED_PET_PASSIVE_11, true); 
                 CastSpell(this, SPELL_TAMED_PET_PASSIVE_11, true); 
             case ENTRY_IMP: 
             case ENTRY_VOIDWALKER: 
             case ENTRY_SUCCUBUS: 
             case ENTRY_FELGUARD:                 
             case ENTRY_INFERNAL: 
             case ENTRY_DOOMGUARD: 
                 RemoveAurasDueToSpell(SPELL_WARLOCK_PET_SCALING_05);                 
                 CastSpell(this, SPELL_WARLOCK_PET_SCALING_05, true); 

                 // demonic knowlege recast 
                 if (Unit* owner = GetOwner()) 
                     if (Aura const* aura = owner->GetAuraOfRankedSpell(SPELL_WARLOCK_DEMONIC_KNOWLEGE_R1, owner->GetGUID())) 
                     { 
                         int32 basePoints = CalculatePct(aura->GetSpellInfo()->Effects[EFFECT_0].BasePoints * 1.095f, GetStat(STAT_STAMINA) + GetStat(STAT_INTELLECT)); 
                         CastCustomSpell(this, SPELL_WARLOCK_DEMONIC_KNOWLEGE, &basePoints, NULL, NULL, true); 
                     } 
                 return; 

             case ENTRY_GHOUL: 
                 RemoveAurasDueToSpell(SPELL_DEATH_KNIGHT_PET_SCALING_03); 
                 RemoveAurasDueToSpell(SPELL_TAMED_PET_PASSIVE_10_HASTE); 
                 RemoveAurasDueToSpell(SPELL_DEATH_KNIGHT_AOEDAMAGE_REDUCE); 
                 CastSpell(this, SPELL_DEATH_KNIGHT_AOEDAMAGE_REDUCE, true); 
                 CastSpell(this, SPELL_TAMED_PET_PASSIVE_10_HASTE, true); 
                 CastSpell(this, SPELL_DEATH_KNIGHT_PET_SCALING_03, true); 
                 return; 
             case ENTRY_BLOODWORM: 
             case ENTRY_EBON_GARGOYLE: 
                 RemoveAurasDueToSpell(SPELL_DEATH_KNIGHT_PET_SCALING_03); 
                 RemoveAurasDueToSpell(SPELL_DEATH_KNIGHT_AOEDAMAGE_REDUCE); 
                 RemoveAurasDueToSpell(SPELL_DEATH_KNIGHT_PET_SCALING_01); 
                 CastSpell(this, SPELL_DEATH_KNIGHT_AOEDAMAGE_REDUCE, true); 
                 CastSpell(this, SPELL_DEATH_KNIGHT_PET_SCALING_03, true); 
                 CastSpell(this, SPELL_DEATH_KNIGHT_PET_SCALING_01, true); 
                 ApplySpellImmune(0, IMMUNITY_ID, 2825, true);    // Bloodlust 
                 ApplySpellImmune(0, IMMUNITY_ID, 32182, true); // Heroism 
                 return; 

                 // priest 
             case ENTRY_SHADOWNFIEND: 
                 // hunter 
             case ENTRY_TRAP_SNAKE_VENOMUS: 
             case ENTRY_TRAP_SNAKE_VIPER: 
                 // mage 
             case ENTRY_MIRROR_IMAGE: 
                 // shaman 
             case ENTRY_FIRE_ELEMENTAL: 
             case ENTRY_EARTH_ELEMENTAL: 
             case ENTRY_FERAL_SPIRIT: 
                 RemoveAurasDueToSpell(SPELL_TAMED_PET_PASSIVE_08_HIT); 
                 CastSpell(this, SPELL_TAMED_PET_PASSIVE_08_HIT, true); 
                 return; 
                 // mage  
             case ENTRY_WATER_ELEMENTAL: 
             case ENTRY_WATER_ELEMENTAL_P: 
                 ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FROST, true); 
                 RemoveAurasDueToSpell(SPELL_TAMED_PET_PASSIVE_08_HIT); 
                 CastSpell(this, SPELL_TAMED_PET_PASSIVE_08_HIT, true); 
                 return; 
                 // druid 
             case ENTRY_TREANT: 
                 RemoveAurasDueToSpell(SPELL_TAMED_PET_PASSIVE_08_HIT); 
                 CastSpell(this, SPELL_TAMED_PET_PASSIVE_08_HIT, true); 
                 CastSpell(this, SPELL_AVOIDANCE, true); 
                 return; 
         }; 
     } 
     else if (IsHunterPet()) 
     { 
         RemoveAurasDueToSpell(SPELL_HUNTER_PET_SCALING_04); 
         CastSpell(this, SPELL_HUNTER_PET_SCALING_04, true); 
         return; 
     } 
     else 
         return; 
 } 
 </pre> 

 *Definitionen (RG Stand)* Definitionen: 

 <pre> 
 enum PetTypes 
 { 
     // hunter 
     ENTRY_TRAP_SNAKE_VENOMUS      = 19833, 
     ENTRY_TRAP_SNAKE_VIPER        = 19921, 
     // warlock 
     ENTRY_FELGUARD                = 17252, 
     ENTRY_VOIDWALKER              = 1860, 
     ENTRY_FELHUNTER               = 417, 
     ENTRY_SUCCUBUS                = 1863, 
     ENTRY_IMP                     = 416, 
     ENTRY_INFERNAL                = 89, 
     ENTRY_DOOMGUARD               = 11859, 
     // mage 
     ENTRY_WATER_ELEMENTAL         = 510, 
     ENTRY_WATER_ELEMENTAL_P       = 37994, 
     ENTRY_MIRROR_IMAGE            = 31216, 
     // druid 
     ENTRY_TREANT                  = 1964, 
     // shaman 
     ENTRY_EARTH_ELEMENTAL         = 15352, 
     ENTRY_FIRE_ELEMENTAL          = 15438, 
     // deathknight 
     ENTRY_GHOUL                   = 26125, 
     ENTRY_EBON_GARGOYLE           = 27829, 
     ENTRY_BLOODWORM               = 28017, 
     ENTRY_ARMY_OF_DEAD_GHOUL      = 24207, 
     ENTRY_DANCING_RUNE_WEAPON     = 27893, 
     // shaman 
     ENTRY_FERAL_SPIRIT            = 29264, 
     // priest 
     ENTRY_SHADOWNFIEND            = 19668, 
 }; 

 enum GeneralPetCalculate 
 { 
     SPELL_TAMED_PET_PASSIVE_08_HIT       = 34666, 
     SPELL_TAMED_PET_PASSIVE_11           = 55566, // is removed from pet 
     SPELL_TAMED_PET_PASSIVE_DND_RESIST = 19007, // is removed from pet 

     // unused 
     SPELL_TAMED_PET_PASSIVE_06           = 19591, 
     SPELL_TAMED_PET_PASSIVE_07           = 20784, 
     SPELL_TAMED_PET_PASSIVE_09           = 34667, 
 }; 

 enum HunterPetCalculate 
 { 
      SPELL_HUNTER_PET_SCALING_04          = 61017, 

      // unused 
      SPELL_HUNTER_PET_SCALING_01          = 34902, 
      SPELL_HUNTER_PET_SCALING_02          = 34903, 
      SPELL_HUNTER_PET_SCALING_03          = 34904, 
      SPELL_HUNTER_ANIMAL_HANDLER          = 34453, 
 }; 

 enum WarlockPetCalculate 
 { 
     SPELL_WARLOCK_PET_SCALING_05         = 61013, 

     SPELL_WARLOCK_DEMONIC_KNOWLEGE_R1    = 35691, 
     SPELL_WARLOCK_DEMONIC_KNOWLEGE       = 35696, 

     // unused 
     SPELL_PET_PASSIVE_CRIT               = 35695, 
     SPELL_PET_PASSIVE_DAMAGE_TAKEN       = 35697, 
     SPELL_WARLOCK_PET_SCALING_01         = 34947, 
     SPELL_WARLOCK_PET_SCALING_02         = 34956, 
     SPELL_WARLOCK_PET_SCALING_03         = 34957, 
     SPELL_WARLOCK_PET_SCALING_04         = 34958, 
     SPELL_WARLOCK_GLYPH_OF_VOIDWALKER    = 56247, 
 }; 

 enum DKPetCalculate 
 { 
     SPELL_DEATH_KNIGHT_PET_SCALING_03     = 61697, 
     SPELL_TAMED_PET_PASSIVE_10_HASTE      = 34675, 
     SPELL_DEATH_KNIGHT_AOEDAMAGE_REDUCE = 62137, 
     SPELL_NIGHT_OF_THE_DEAD               = 55620, 
     SPELL_DEATH_KNIGHT_PET_SCALING_01     = 54566, 

     // unused 
     SPELL_DEATH_KNIGHT_RUNE_WEAPON_02     = 51906,     
     SPELL_DEATH_KNIGHT_PET_SCALING_02     = 51996, 
 }; 

 enum ShamanPetCalculate 
 { 
     SPELL_FERAL_SPIRIT_PET_SCALING_04    = 61783, 
 }; 

 enum MiscPetCalculate 
 { 
     SPELL_MAGE_PET_PASSIVE_ELEMENTAL     = 44559, 
     SPELL_PET_HEALTH_SCALING             = 61679, 
     SPELL_PET_UNK_01                     = 67561, 
     SPELL_PET_UNK_02                     = 67557, 
 }; 

 enum PetMisc 
 { 
     MAP_ICC                              = 631, 
     SPELL_HELLSCREAM_WARSONG_5           = 73816, 
     SPELL_STRENGTH_OF_WRYNN_5            = 73762, 
     SPELL_HELLSCREAM_WARSONG_10          = 73818, 
     SPELL_STRENGTH_OF_WRYNN_10           = 73824, 
     SPELL_AVOIDANCE                      = 32233 
 }; 
 </pre> 


 *Welche Auren könnten verwendet werden? (Diese Auren werden im SunwellCore verwendet)* 

 <pre> 
 enum PetScalingSpells 
 { 
	 SPELL_PET_AVOIDANCE 					 = 32233, 

	 SPELL_HUNTER_PET_SCALING_01 			 = 34902, 
	 SPELL_HUNTER_PET_SCALING_02 			 = 34903, 
	 SPELL_HUNTER_PET_SCALING_03 			 = 34904, 
	 SPELL_HUNTER_PET_SCALING_04 			 = 61017, // Hit / Expertise 

	 // Warlock 
	 SPELL_WARLOCK_PET_SCALING_01 		 = 34947, 
	 SPELL_WARLOCK_PET_SCALING_02 		 = 34956, 
	 SPELL_WARLOCK_PET_SCALING_03 		 = 34957, 
	 SPELL_WARLOCK_PET_SCALING_04 		 = 34958, 
	 SPELL_WARLOCK_PET_SCALING_05 		 = 61013, // Hit / Expertise 
	 SPELL_GLYPH_OF_FELGUARD 				 = 56246, 
	 SPELL_INFERNAL_SCALING_01 			 = 36186, 
	 SPELL_INFERNAL_SCALING_02 			 = 36188, 
	 SPELL_INFERNAL_SCALING_03 			 = 36189, 
	 SPELL_INFERNAL_SCALING_04 			 = 36190, 
	 SPELL_RITUAL_ENSLAVEMENT 			 = 22987, 

	 // Shaman 
	 SPELL_FERAL_SPIRIT_SPIRIT_HUNT 		 = 58877, 
	 SPELL_FERAL_SPIRIT_SCALING_01 		 = 35674, 
	 SPELL_FERAL_SPIRIT_SCALING_02 		 = 35675, 
	 SPELL_FERAL_SPIRIT_SCALING_03 		 = 35676, 
	 SPELL_FIRE_ELEMENTAL_SCALING_01 		 = 35665, 
	 SPELL_FIRE_ELEMENTAL_SCALING_02 		 = 35666, 
	 SPELL_FIRE_ELEMENTAL_SCALING_03 		 = 35667, 
	 SPELL_FIRE_ELEMENTAL_SCALING_04 		 = 35668, 
	 SPELL_EARTH_ELEMENTAL_SCALING_01 	 = 65225, 
	 SPELL_EARTH_ELEMENTAL_SCALING_02 	 = 65226, 
	 SPELL_EARTH_ELEMENTAL_SCALING_03 	 = 65227, 
	 SPELL_EARTH_ELEMENTAL_SCALING_04 	 = 65228, 

	 // Priest 
	 SPELL_SHADOWFIEND_SCALING_01 		 = 35661, 
	 SPELL_SHADOWFIEND_SCALING_02 		 = 35662, 
	 SPELL_SHADOWFIEND_SCALING_03 		 = 35663, 
	 SPELL_SHADOWFIEND_SCALING_04 		 = 35664, 

	 // Druid 
	 SPELL_TREANT_SCALING_01 				 = 35669, 
	 SPELL_TREANT_SCALING_02 				 = 35670, 
	 SPELL_TREANT_SCALING_03 				 = 35671, 
	 SPELL_TREANT_SCALING_04 				 = 35672, 

	 // Mage 
	 SPELL_MAGE_PET_SCALING_01 			 = 35657, 
	 SPELL_MAGE_PET_SCALING_02 			 = 35658, 
	 SPELL_MAGE_PET_SCALING_03 			 = 35659, 
	 SPELL_MAGE_PET_SCALING_04 			 = 35660, 

	 // Death Knight 
	 SPELL_ORC_RACIAL_COMMAND 			 = 65221, 
	 SPELL_NIGHT_OF_THE_DEAD_AVOIDANCE 	 = 62137, 
	 SPELL_DK_PET_SCALING_01 				 = 51996, 
	 SPELL_DK_PET_SCALING_02 				 = 54566, 
	 SPELL_DK_PET_SCALING_03 				 = 61697 

 }; 
 </pre> 

 *Wie werden die Auren aufgetragen? (Istzustand im Sunwellcore)* 

 <pre> 
 bool Guardian::InitStatsForLevel(uint8 petlevel) 
 {  
     CreatureTemplate const* cinfo = GetCreatureTemplate(); 
     ASSERT(cinfo); 

     SetLevel(petlevel); 
     SetCanModifyStats(true); 

	 Unit *m_owner = GetOwner(); 
	 if (!m_owner) // just to be sure, asynchronous now 
	 { 
		 DespawnOrUnsummon(1000); 
		 return false; 
	 } 

     //Determine pet type 
     PetType petType = MAX_PET_TYPE; 
     if (IsPet() && m_owner->GetTypeId() == TYPEID_PLAYER) 
     { 
         if (m_owner->getClass() == CLASS_WARLOCK || 
             m_owner->getClass() == CLASS_SHAMAN || 			 // Fire Elemental 
             m_owner->getClass() == CLASS_DEATH_KNIGHT || 	 // Risen Ghoul 
			 m_owner->getClass() == CLASS_MAGE) 				 // Water Elemental with glyph 
             petType = SUMMON_PET; 
         else if (m_owner->getClass() == CLASS_HUNTER) 
         { 
             petType = HUNTER_PET; 
             m_unitTypeMask |= UNIT_MASK_HUNTER_PET; 
         } 
         else 
             sLog->outError("Unknown type pet %u is summoned by player class %u", GetEntry(), m_owner->getClass()); 
     } 

     uint32 creature_ID = (petType == HUNTER_PET) ? 1 : cinfo->Entry; 

     SetMeleeDamageSchool(SpellSchools(cinfo->dmgschool)); 

     SetModifierValue(UNIT_MOD_ARMOR, BASE_VALUE, float(petlevel*50)); 

	 uint32 attackTime = BASE_ATTACK_TIME; 
	 if (m_owner->getClass() != CLASS_HUNTER && cinfo->baseattacktime >= 1000) 
		 attackTime = cinfo->baseattacktime; 

	 SetAttackTime(BASE_ATTACK, attackTime); 
     SetAttackTime(OFF_ATTACK, attackTime); 
	 SetAttackTime(RANGED_ATTACK, BASE_ATTACK_TIME); 

     SetFloatValue(UNIT_MOD_CAST_SPEED, 1.0f); 

     //scale 
     CreatureFamilyEntry const* cFamily = sCreatureFamilyStore.LookupEntry(cinfo->family); 
     if (cFamily && cFamily->minScale > 0.0f && petType == HUNTER_PET) 
     { 
         float scale; 
         if (getLevel() >= cFamily->maxScaleLevel) 
             scale = 1.0f; 
         else if (getLevel() <= cFamily->minScaleLevel) 
             scale = 0.5f; 
         else 
             scale = 0.5f + 0.5f * float(getLevel() - cFamily->minScaleLevel) / float(cFamily->maxScaleLevel    - cFamily->minScaleLevel); 

         SetObjectScale(scale); 
     } 

     // Resistance 
	 // xinef: hunter pets should not inherit template resistances 
	 if (!IsHunterPet()) 
		 for (uint8 i = SPELL_SCHOOL_HOLY; i < MAX_SPELL_SCHOOL; ++i) 
			 SetModifierValue(UnitMods(UNIT_MOD_RESISTANCE_START + i), BASE_VALUE, float(cinfo->resistance[i])); 

     //health, mana, armor and resistance 
     PetLevelInfo const* pInfo = sObjectMgr->GetPetLevelInfo(creature_ID, petlevel); 
     if (pInfo)                                        // exist in DB 
     { 
         SetCreateHealth(pInfo->health); 
		 SetModifierValue(UNIT_MOD_HEALTH, BASE_VALUE, (float)pInfo->health); 
         if (petType != HUNTER_PET) //hunter pet use focus 
		 { 
             SetCreateMana(pInfo->mana); 
			 SetModifierValue(UNIT_MOD_MANA, BASE_VALUE, (float)pInfo->mana); 
		 } 

         if (pInfo->armor > 0) 
             SetModifierValue(UNIT_MOD_ARMOR, BASE_VALUE, float(pInfo->armor)); 

         for (uint8 stat = 0; stat < MAX_STATS; ++stat) 
             SetCreateStat(Stats(stat), float(pInfo->stats[stat])); 
     } 
     else                                              // not exist in DB, use some default fake data 
     { 
         // remove elite bonuses included in DB values 
         CreatureBaseStats const* stats = sObjectMgr->GetCreatureBaseStats(petlevel, cinfo->unit_class); 
		 // xinef: multiply base values by creature_template factors! 
		 float factorHealth = m_owner->GetTypeId() == TYPEID_PLAYER ? std::min(1.0f, cinfo->ModHealth) : cinfo->ModHealth; 
		 float factorMana = m_owner->GetTypeId() == TYPEID_PLAYER ? std::min(1.0f, cinfo->ModMana) : cinfo->ModMana; 

		 SetCreateHealth(std::max<uint32>(1, stats->BaseHealth[cinfo->expansion]*factorHealth)); 
		 SetModifierValue(UNIT_MOD_HEALTH, BASE_VALUE, GetCreateHealth()); 
         SetCreateMana(stats->BaseMana*factorMana); 
		 SetModifierValue(UNIT_MOD_MANA, BASE_VALUE, GetCreateMana()); 

		 // xinef: added some multipliers so debuffs can affect pets in any way... 
         SetCreateStat(STAT_STRENGTH, 22 + 2*petlevel); 
         SetCreateStat(STAT_AGILITY, 22 + 1.5f*petlevel); 
         SetCreateStat(STAT_STAMINA, 25 + 2*petlevel); 
         SetCreateStat(STAT_INTELLECT, 28 + 2*petlevel); 
         SetCreateStat(STAT_SPIRIT, 27 + 1.5f*petlevel); 
     } 

     switch (petType) 
     { 
         case HUNTER_PET: 
         { 
			 SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, float(petlevel - (petlevel / 4))); 
			 SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, float(petlevel + (petlevel / 4))); 
             SetUInt32Value(UNIT_FIELD_PETNEXTLEVELEXP, uint32(sObjectMgr->GetXPForLevel(petlevel)*PET_XP_FACTOR)); 
             break; 
         } 
         case SUMMON_PET: 
         { 
			 SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, float(petlevel - (petlevel / 4))); 
			 SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, float(petlevel + (petlevel / 4))); 

			 switch(GetEntry()) 
             { 
                 case NPC_FELGUARD: 
                 { 
					 float highAmt = petlevel / 11.0f; 
					 float lowAmt = petlevel / 12.0f; 

					 SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, lowAmt*lowAmt*lowAmt); 
					 SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, highAmt*highAmt*highAmt); 

					 // xinef: Glyph of Felguard, so ugly im crying... no appropriate spell 
                     if (AuraEffect* aurEff = m_owner->GetAuraEffectDummy(SPELL_GLYPH_OF_FELGUARD)) 
                         SetModifierValue(UNIT_MOD_ATTACK_POWER, TOTAL_PCT, 1.0f + float(aurEff->GetAmount() / 100.0f)); 

                     break; 
                 } 
				 case NPC_WATER_ELEMENTAL_PERM: 
                 { 
					 AddAura(SPELL_PET_AVOIDANCE, this); 
					 AddAura(SPELL_HUNTER_PET_SCALING_04, this); 
					 AddAura(SPELL_MAGE_PET_SCALING_01, this); 
					 AddAura(SPELL_MAGE_PET_SCALING_02, this); 
					 AddAura(SPELL_MAGE_PET_SCALING_03, this); 
					 AddAura(SPELL_MAGE_PET_SCALING_04, this); 
					 ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FROST, true); 
                     break; 
                 } 
             } 
             break; 
         } 
         default: 
         { 
             switch (GetEntry()) 
             { 
				 case NPC_FIRE_ELEMENTAL: 
				 { 
					 SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, float(petlevel * 3.5f - petlevel)); 
                     SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, float(petlevel * 3.5f + petlevel)); 
					 AddAura(SPELL_PET_AVOIDANCE, this); 
					 AddAura(SPELL_HUNTER_PET_SCALING_04, this); 
					 AddAura(SPELL_FIRE_ELEMENTAL_SCALING_01, this); 
					 AddAura(SPELL_FIRE_ELEMENTAL_SCALING_02, this); 
					 AddAura(SPELL_FIRE_ELEMENTAL_SCALING_03, this); 
					 AddAura(SPELL_FIRE_ELEMENTAL_SCALING_04, this); 
					 break; 
				 } 
				 case NPC_EARTH_ELEMENTAL: 
				 { 
					 SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, float(petlevel * 2.0f - petlevel)); 
                     SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, float(petlevel * 2.0f + petlevel)); 
					 AddAura(SPELL_PET_AVOIDANCE, this); 
					 AddAura(SPELL_HUNTER_PET_SCALING_04, this); 
					 AddAura(SPELL_EARTH_ELEMENTAL_SCALING_01, this); 
					 AddAura(SPELL_EARTH_ELEMENTAL_SCALING_02, this); 
					 AddAura(SPELL_EARTH_ELEMENTAL_SCALING_03, this); 
					 AddAura(SPELL_EARTH_ELEMENTAL_SCALING_04, this); 
					 break; 
				 } 
				 case NPC_INFERNAL: 
				 { 
					 float highAmt = petlevel / 11.0f; 
					 float lowAmt = petlevel / 12.0f; 
					 SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, lowAmt*lowAmt*lowAmt); 
					 SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, highAmt*highAmt*highAmt); 

					 AddAura(SPELL_PET_AVOIDANCE, this); 
					 AddAura(SPELL_WARLOCK_PET_SCALING_05, this); 
					 AddAura(SPELL_INFERNAL_SCALING_01, this); 
					 AddAura(SPELL_INFERNAL_SCALING_02, this); 
					 AddAura(SPELL_INFERNAL_SCALING_03, this); 
					 AddAura(SPELL_INFERNAL_SCALING_04, this); 
                     break; 
                 } 
				 case NPC_DOOMGUARD: 
				 { 
					 float highAmt = petlevel / 11.0f; 
					 float lowAmt = petlevel / 12.0f; 
					 SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, lowAmt*lowAmt*lowAmt); 
					 SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, highAmt*highAmt*highAmt); 

					 AddAura(SPELL_PET_AVOIDANCE, this); 
					 AddAura(SPELL_WARLOCK_PET_SCALING_01, this); 
					 AddAura(SPELL_WARLOCK_PET_SCALING_02, this); 
					 AddAura(SPELL_WARLOCK_PET_SCALING_03, this); 
					 AddAura(SPELL_WARLOCK_PET_SCALING_04, this); 
					 AddAura(SPELL_WARLOCK_PET_SCALING_05, this); 
                     break; 
                 } 
                 case NPC_WATER_ELEMENTAL_TEMP: 
                 { 
					 AddAura(SPELL_PET_AVOIDANCE, this); 
					 AddAura(SPELL_HUNTER_PET_SCALING_04, this); 
					 AddAura(SPELL_MAGE_PET_SCALING_01, this); 
					 AddAura(SPELL_MAGE_PET_SCALING_02, this); 
					 AddAura(SPELL_MAGE_PET_SCALING_03, this); 
					 AddAura(SPELL_MAGE_PET_SCALING_04, this); 
					 ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FROST, true); 
                     break; 
                 } 
                 case NPC_TREANT: //force of nature 
                 { 
                     if (!pInfo) 
                         SetCreateHealth(30 + 30*petlevel); 

                     SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, float(petlevel * 2.5f - petlevel)); 
                     SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, float(petlevel * 2.5f + petlevel)); 

					 AddAura(SPELL_PET_AVOIDANCE, this); 
					 AddAura(SPELL_HUNTER_PET_SCALING_04, this); 
					 AddAura(SPELL_TREANT_SCALING_01, this); 
					 AddAura(SPELL_TREANT_SCALING_02, this); 
					 AddAura(SPELL_TREANT_SCALING_03, this); 
					 AddAura(SPELL_TREANT_SCALING_04, this); 
                     break; 
                 } 
                 case NPC_SHADOWFIEND: 
                 { 
                     SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, float(petlevel * 2.5f - petlevel)); 
                     SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, float(petlevel * 2.5f + petlevel)); 

					 AddAura(SPELL_PET_AVOIDANCE, this); 
					 AddAura(SPELL_HUNTER_PET_SCALING_04, this); 
					 AddAura(SPELL_SHADOWFIEND_SCALING_01, this); 
					 AddAura(SPELL_SHADOWFIEND_SCALING_02, this); 
					 AddAura(SPELL_SHADOWFIEND_SCALING_03, this); 
					 AddAura(SPELL_SHADOWFIEND_SCALING_04, this); 
                     break; 
                 } 
                 case NPC_FERAL_SPIRIT: 
                 { 
                     SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, float(petlevel * 4.0f - petlevel)); 
                     SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, float(petlevel * 4.0f + petlevel)); 

					 AddAura(SPELL_PET_AVOIDANCE, this); 
                     AddAura(SPELL_FERAL_SPIRIT_SPIRIT_HUNT, this); 
					 AddAura(SPELL_HUNTER_PET_SCALING_04, this); 
					 AddAura(SPELL_FERAL_SPIRIT_SCALING_01, this); 
					 AddAura(SPELL_FERAL_SPIRIT_SCALING_02, this); 
					 AddAura(SPELL_FERAL_SPIRIT_SCALING_03, this); 
                     break; 
                 } 
                 case NPC_MIRROR_IMAGE: // Mirror Image 
                 { 
                     SetDisplayId(m_owner->GetDisplayId()); 
                     if (!pInfo) 
                     { 
                         SetCreateMana(28 + 30*petlevel); 
                         SetCreateHealth(28 + 10*petlevel); 
                     } 

					 AddAura(SPELL_PET_AVOIDANCE, this); 
					 AddAura(SPELL_HUNTER_PET_SCALING_04, this); 
					 AddAura(SPELL_MAGE_PET_SCALING_01, this); 
					 AddAura(SPELL_MAGE_PET_SCALING_02, this); 
					 AddAura(SPELL_MAGE_PET_SCALING_03, this); 
					 AddAura(SPELL_MAGE_PET_SCALING_04, this); 
                     break; 
                 } 
                 case NPC_EBON_GARGOYLE: // Ebon Gargoyle 
                 { 
                     if (!pInfo) 
                     { 
                         SetCreateMana(28 + 10*petlevel); 
                         SetCreateHealth(28 + 30*petlevel); 
                     } 
					
					 AddAura(SPELL_HUNTER_PET_SCALING_04, this); 
					 AddAura(SPELL_DK_PET_SCALING_01, this); 
					 AddAura(SPELL_DK_PET_SCALING_02, this); 
					 AddAura(SPELL_DK_PET_SCALING_03, this); 
                     break; 
                 } 
                 case NPC_BLOODWORM: 
                 { 
					 // Xinef: Hit / Expertise scaling 
					 AddAura(SPELL_HUNTER_PET_SCALING_04, this); 
					 AddAura(SPELL_PET_AVOIDANCE, this); 
                     SetCreateHealth(4 * petlevel); 
                     SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, float(petlevel - 30 - (petlevel / 4) + m_owner->GetTotalAttackPowerValue(BASE_ATTACK) * 0.006f)); 
                     SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, float(petlevel - 30 + (petlevel / 4) + m_owner->GetTotalAttackPowerValue(BASE_ATTACK) * 0.006f)); 
					 break; 
                 } 
				 case NPC_ARMY_OF_THE_DEAD: 
				 { 
					 AddAura(SPELL_HUNTER_PET_SCALING_04, this); 
					 AddAura(SPELL_DK_PET_SCALING_01, this); 
					 AddAura(SPELL_PET_AVOIDANCE, this); 
                     break; 
				 } 
				 case NPC_GENERIC_IMP: 
                 case NPC_GENERIC_VOIDWALKER: 
                 {  
                     SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, float(petlevel - (petlevel / 4)));  
                     SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, float(petlevel + (petlevel / 4)));  
                     break;  
                 } 
             } 
             break; 
         } 
     } 

	 // Can be summon and guardian 
	 if (GetEntry() == NPC_RISEN_GHOUL) 
	 { 
		 // xinef: fixes orc death knight command racial 
		 if (m_owner->getRace() == RACE_ORC) 
			 CastSpell(this, SPELL_ORC_RACIAL_COMMAND, true, NULL, NULL, m_owner->GetGUID()); 

		 // Avoidance, Night of the Dead 
		 if (Aura *aur = AddAura(SPELL_NIGHT_OF_THE_DEAD_AVOIDANCE, this)) 
			 if (AuraEffect *aurEff = m_owner->GetAuraEffect(SPELL_AURA_ADD_FLAT_MODIFIER, SPELLFAMILY_DEATHKNIGHT, 2718, 0)) 
				 if (aur->GetEffect(0)) 
					 aur->GetEffect(0)->SetAmount(-aurEff->GetSpellInfo()->Effects[EFFECT_2].CalcValue()); 

		 AddAura(SPELL_HUNTER_PET_SCALING_04, this); 
		 // Added to perm ghoul by default 
		 if (!IsPet()) 
		 { 
			 AddAura(SPELL_DK_PET_SCALING_01, this); 
			 AddAura(SPELL_DK_PET_SCALING_02, this); 
		 } 
	 } 

     UpdateAllStats(); 

     SetFullHealth(); 
     SetPower(POWER_MANA, GetMaxPower(POWER_MANA)); 
     return true; 
 } 

 </pre> 
 * 
 Wie sieht das Skipt zu den Spells aus? (Istzustand im SunwellCore)* aus?* 

 *https://paste.rising-gods.de/view/f18ef1b9* 

 Durchsuchen entsprechend mit Strg + F :P

Zurück