1. Thank you.
2. I didn't find the method...
public static byte calcSkillReflect(L2Character target, L2Skill skill)
{
// Neither some special skills (like hero debuffs...) or those skills ignoring resistances can be reflected
if (skill.ignoreResists() || !skill.canBeReflected())
{
return SKILL_REFLECT_FAILED;
}
// Only magic and melee skills can be reflected
if (!skill.isMagic() && ((skill.getCastRange() == -1) || (skill.getCastRange() > MELEE_ATTACK_RANGE)))
{
return SKILL_REFLECT_FAILED;
}
byte reflect = SKILL_REFLECT_FAILED;
// Check for non-reflected skilltypes, need additional retail check
switch (skill.getSkillType())
{
case BUFF:
case HEAL_PERCENT:
case MANAHEAL_PERCENT:
case HOT:
case CPHOT:
case MPHOT:
case UNDEAD_DEFENSE:
case AGGDEBUFF:
case CONT:
return SKILL_REFLECT_FAILED;
// these skill types can deal damage
case PDAM:
case MDAM:
case BLOW:
case DRAIN:
case CHARGEDAM:
case FATAL:
case DEATHLINK:
case CPDAM:
case MANADAM:
case CPDAMPERCENT:
final Stats stat = skill.isMagic() ? Stats.VENGEANCE_SKILL_MAGIC_DAMAGE : Stats.VENGEANCE_SKILL_PHYSICAL_DAMAGE;
final double venganceChance = target.getStat().calcStat(stat, 0, target, skill);
if (venganceChance > Rnd.get(100))
{
reflect |= SKILL_REFLECT_VENGEANCE;
}
break;
}
final double reflectChance = target.calcStat(skill.isMagic() ? Stats.REFLECT_SKILL_MAGIC : Stats.REFLECT_SKILL_PHYSIC, 0, null, skill);
if (Rnd.get(100) < reflectChance)
{
reflect |= SKILL_REFLECT_SUCCEED;
}
return reflect;
}
i found only
boolean isPvE = attacker.isPlayable() && target.isL2Attackable();
in calcBlowDamage / calcPhysDam / and in
public static final double calcMagicDam(L2Character attacker, L2Character target, L2Skill skill, byte shld, boolean ss, boolean bss, boolean mcrit)
public static final double calcMagicDam(L2CubicInstance attacker, L2Character target, L2Skill skill, boolean mcrit, byte shld)