The formulas are in the CObjAttack::Attack function, you can find it in the sources of gs.18.
Code:
else if ( skill == 76 ) // pluzzmanton
{
int iFenrirAttackDmg = 0;
if ( lpObj->Class == CLASS_KNIGHT || lpObj->Class == CLASS_MAGUMSA )
{
iFenrirAttackDmg = lpObj->Strength / 3 + lpObj->Dexterity / 5 + lpObj->Vitality / 5 + lpObj->Energy / 7; // #formula
}
else if ( lpObj->Class == CLASS_WIZARD )
{
iFenrirAttackDmg = lpObj->Strength / 5 + lpObj->Dexterity / 5 + lpObj->Vitality / 7 + lpObj->Energy / 3; // #formula
}
else if ( lpObj->Class == CLASS_ELF )
{
iFenrirAttackDmg = lpObj->Strength / 5 + lpObj->Dexterity / 3 + lpObj->Vitality / 7 + lpObj->Energy / 5; // #formula
}
else // Dark Lord
{
iFenrirAttackDmg = lpObj->Strength / 5 + lpObj->Dexterity / 5 + lpObj->Vitality / 7 + lpObj->Energy / 3 + lpObj->Leadership / 3; // #formula
}
if ( iFenrirAttackDmg < 0 )
iFenrirAttackDmg = 0;
if ( lpObj->m_CriticalDamage > 0 )
{
if ( (rand()%100) < lpObj->m_CriticalDamage )
{
MsgDamage = 3;
}
}
if ( lpObj->m_ExcelentDamage > 0 )
{
if ( (rand()%100) < lpObj->m_ExcelentDamage )
{
MsgDamage = 2;
}
}
if ( MsgDamage == 3 ) // Critical Damage
{
AttackDamage = iFenrirAttackDmg + lpMagic->m_DamageMax;
AttackDamage += lpObj->SetOpAddCriticalDamage;
AttackDamage += lpObj->SkillAddCriticalDamage;
AttackDamage += lpObj->m_JewelOfHarmonyEffect.HJOpAddCriticalDamage;
AttackDamage -= targetdefense;
}
else if ( MsgDamage == 2 ) // Excellent
{
AttackDamage = iFenrirAttackDmg + lpMagic->m_DamageMax;
AttackDamage += AttackDamage * 20 / 100;
AttackDamage += lpObj->SetOpAddExDamage;
AttackDamage -= targetdefense;
}
else
{
AttackDamage = (iFenrirAttackDmg + lpMagic->m_DamageMin) + (rand()%(lpMagic->m_DamageMax - lpMagic->m_DamageMin + 1));
AttackDamage -= targetdefense;
}
}