rendered paste body public final double calcPhysDam(L2Character attacker, L2Character target,
L2Skill skill, boolean shld, boolean crit, boolean dual,boolean ss)
{
double damage = attacker.getPAtk(target);
double defence = target.getPDef(attacker);
// defence modifier depending of the attacker weapon
L2Weapon weapon = attacker.getActiveWeaponItem();
if (weapon !=null)
{
switch (weapon.getItemType())
{
case BOW:
defence*=1+0.01*target.calcStat(Stats.BOW_WPN_RES,0,target,null);
break;
case BLUNT:
defence*=1+0.01*target.calcStat(Stats.BLUNT_WPN_RES,0,target,null);
break;
case DAGGER:
defence*=1+0.01*target.calcStat(Stats.DAGGER_WPN_RES,0,target,null);
break;
case DUAL:
defence*=1+0.01*target.calcStat(Stats.DUAL_WPN_RES,0,target,null);
break;
case DUALFIST:
defence*=1+0.01*target.calcStat(Stats.DUALFIST_WPN_RES,0,target,null);
break;
case ETC:
defence*=1+0.01*target.calcStat(Stats.ETC_WPN_RES,0,target,null);
break;
case FIST:
defence*=1+0.01*target.calcStat(Stats.FIST_WPN_RES,0,target,null);
break;
case POLE:
defence*=1+0.01*target.calcStat(Stats.POLE_WPN_RES,0,target,null);
break;
case SWORD:
defence*=1+0.01*target.calcStat(Stats.SWORD_WPN_RES,0,target,null);
break;
case BIGSWORD: //TODO: have a proper resitance for Big swords
defence*=1+0.01*target.calcStat(Stats.SWORD_WPN_RES,0,target,null);
break;
}
}
if (skill != null) {
damage = skill.getPower();
if (ss) {damage *= 1.44;}
}
else {
if (ss) {damage *= 2;}
if (crit)
damage = attacker.getCriticalDmg(target, 2*damage);
if(dual)
damage /= 1.5;
if (shld && !Config.ALT_GAME_SHIELD_BLOCKS) {
defence += target.getShldDef();
}
if (target instanceof L2NpcInstance)
{
int raceId = ((L2NpcInstance)target).getTemplate().race;
//Skill Race : Undead
if (raceId == 4290)
damage *= attacker.getPAtkUndead(target);
//Skill Race : Beast
if (raceId == 4292)
damage *= attacker.getPAtkMonsters(target);
//Skill Race : Animal
if (raceId == 4293)
damage *= attacker.getPAtkAnimals(target);
//Skill Race : Plant
if (raceId == 4294)
damage *= attacker.getPAtkPlants(target);
//Skill Race : Dragon
if (raceId == 4299)
damage *= attacker.getPAtkDragons(target);
//Skill Race : Bug
if (raceId == 4301)
damage *= attacker.getPAtkInsects(target);
}
}
if (attacker instanceof L2NpcInstance || attacker instanceof L2SiegeGuardInstance){
//damage = damage * attacker.getSTR() * attacker.getAccuracy() * 0.05 /defence;
damage = damage * attacker.getSTR()* (attacker.getSTR() + attacker.getLevel())* 0.025 / defence;
damage += _rnd.nextDouble() * damage / 10 ;
}
else {
damage = damage * 70 / defence;
damage += _rnd.nextDouble()* attacker.getRandomDamage(target);
}
if (shld && Config.ALT_GAME_SHIELD_BLOCKS) {
damage -= target.getShldDef();
if (damage < 0)
damage = 0;
}
if (damage > 0 && damage < 1)
{
damage = 1;
}
else if (damage < 0)
{
damage = 0;
}
return damage;
}