All pastes #32131 Raw Edit

Anonymous

public text v1 · immutable
#32131 ·published 2005-12-02 19:13 UTC
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;
        }