public final double calcMagicDam(L2Character attacker, L2Character target, L2Skill skill, boolean ss, boolean bss, boolean mcrit) { //[Square(MAtk/MDef)]*SkillPower*10.18 double mAtk = attacker.getMAtk(target, skill); double mDef = target.getMDef(attacker, skill); if (bss) mAtk *= 4; else if (ss) mAtk *= 2; //double damage = Math.sqrt(mAtk/mDef)*skill.getPower()*10.18; //Temp fix for mdam calculation.. double damage = 91*skill.getPower()*Math.sqrt(mAtk)/mDef; if(mcrit) { damage *= 2; } if (target instanceof L2RaidBossInstance) { int cLevel = attacker.getLevel(); int tLevel = target.getLevel(); int rDamage = 1; if ( cLevel > tLevel ) { rDamage = cLevel - tLevel; if (rDamage > 9) damage /= rDamage; if (damage < 1) damage = 1; } } if (target instanceof L2PlayableInstance && attacker instanceof L2RaidBossInstance) { int cLevel = attacker.getLevel(); int tLevel = target.getLevel(); int rDamage = 1; if ( cLevel < tLevel ) { rDamage = tLevel - cLevel; if (rDamage > 9) damage *= rDamage; } } return damage; }