void CreatureImplementation::setPetLevel(int newLevel) { if (newLevel == 0) return; int oldLevel = level; CreatureObjectImplementation::setLevel(newLevel); if (getCreatureTemplate() == NULL) { return; } int baseLevel = getTemplateLevel(); float minDmg = calculateAttackMinDamage(baseLevel); float maxDmg = calculateAttackMaxDamage(baseLevel); Reference<WeaponObject*> defaultWeapon = getSlottedObject("default_weapon").castTo<WeaponObject*>(); float ratio = ((float)newLevel) / (float)baseLevel; minDmg *= ratio; maxDmg *= ratio; if (readyWeapon != NULL) { float mod = 1.f - 0.1f*float(readyWeapon->getArmorPiercing()); readyWeapon->setMinDamage(minDmg * mod); readyWeapon->setMaxDamage(maxDmg * mod); } if (defaultWeapon != NULL) { defaultWeapon->setMinDamage(minDmg); defaultWeapon->setMaxDamage(maxDmg); } int ham = 0; for (int i = 0; i < 6; i++) { if (i % 3 == 0) { ham = (getBaseHAM(i) / oldLevel) * newLevel; setBaseHAM(i, ham); } else setBaseHAM(i, ham / 100); } for (int i = 0; i < 6; i++) { setHAM(i, baseHAM.get(i)); } for (int i = 0; i < 6; i++) { setMaxHAM(i, baseHAM.get(i)); } }
bool DroidObjectImplementation::isAdvancedModel() { return getCreatureTemplate()->getObjectName().contains("advanced"); }