165{
166 size_t hasPPM = 0;
167 size_t hasCooldown = 0;
168 size_t hasSpellTypeMask = 0;
169 size_t hasSpellPhaseMask = 0;
170 size_t hasHitMask = 0;
171 size_t hasAttributesMask = 0;
172 size_t hasSpellFamilyMask = 0;
173 size_t hasSchoolMask = 0;
174 size_t hasCharges = 0;
175 size_t hasDisableEffectsMask = 0;
176
177 for (auto const& entry : _allEntries)
178 {
179 if (entry.ProcsPerMinute > 0) hasPPM++;
180 if (entry.Cooldown > 0) hasCooldown++;
181 if (entry.SpellTypeMask != 0) hasSpellTypeMask++;
182 if (entry.SpellPhaseMask != 0) hasSpellPhaseMask++;
183 if (entry.HitMask != 0) hasHitMask++;
184 if (entry.AttributesMask != 0) hasAttributesMask++;
185 if (entry.SpellFamilyMask0 != 0 || entry.SpellFamilyMask1 != 0 || entry.SpellFamilyMask2 != 0)
186 hasSpellFamilyMask++;
187 if (entry.SchoolMask != 0) hasSchoolMask++;
188 if (entry.Charges > 0) hasCharges++;
189 if (entry.DisableEffectsMask != 0) hasDisableEffectsMask++;
190 }
191
192 std::cout << "[ INFO ] Feature usage (adds value beyond DBC):\n"
193 << " PPM: " << hasPPM << "\n"
194 << " Cooldown: " << hasCooldown << "\n"
195 << " SpellTypeMask: " << hasSpellTypeMask << "\n"
196 << " SpellPhaseMask: " << hasSpellPhaseMask << "\n"
197 << " HitMask: " << hasHitMask << "\n"
198 << " AttributesMask: " << hasAttributesMask << "\n"
199 << " SpellFamilyMask: " << hasSpellFamilyMask << "\n"
200 << " SchoolMask: " << hasSchoolMask << "\n"
201 << " Charges: " << hasCharges << "\n"
202 << " DisableEffectsMask: " << hasDisableEffectsMask << std::endl;
203
204
205 size_t usingExtendedFeatures = 0;
206 for (auto const& entry : _allEntries)
207 {
208 if (entry.ProcsPerMinute > 0 || entry.Cooldown > 0 ||
209 entry.SpellTypeMask != 0 || entry.SpellPhaseMask != 0 ||
210 entry.HitMask != 0 || entry.AttributesMask != 0 ||
211 entry.SpellFamilyMask0 != 0 || entry.SpellFamilyMask1 != 0 ||
212 entry.SpellFamilyMask2 != 0 || entry.SchoolMask != 0 ||
213 entry.DisableEffectsMask != 0)
214 {
215 usingExtendedFeatures++;
216 }
217 }
218
219 std::cout << "[ INFO ] Entries using extended features: " << usingExtendedFeatures
220 << " / " << _allEntries.size() << std::endl;
221
222
223 EXPECT_GT(usingExtendedFeatures, _allEntries.size() * 80 / 100)
224 << "Most entries should use extended features";
225}