Quantcast
Channel: RaGEZONE - MMO Development Forums
Viewing all articles
Browse latest Browse all 15480

PvP doing too much damage.

$
0
0
So setting up pvp based on weapon attack and stats, now the damage dealt to players in pvp is too much.
Current maplepvp.java
Code:

package net.sf.odinms.net.channel.handler;

import java.util.Collections;

import net.sf.odinms.client.ISkill;
import net.sf.odinms.client.MapleCharacter;
import net.sf.odinms.client.SkillFactory;

import net.sf.odinms.server.life.MapleMonster;
import net.sf.odinms.server.life.MapleLifeFactory;
import net.sf.odinms.net.world.guild.MapleGuild;
import net.sf.odinms.client.MapleBuffStat;
import net.sf.odinms.server.maps.MapleMap;
import net.sf.odinms.tools.MaplePacketCreator;

public class MaplePvp {
        //default values, don't change these
        private static int pvpDamage;
        private static int min;
        private static int maxDis;
        private static int matk;
        private static int watk;
        private static int luk;
        private static int maxHeight;
        private static boolean isAoe;
        public static boolean isLeft = false;
        public static boolean isRight = false;
        private static boolean magic = false;
        private static boolean magicrecovery = false;
        private static boolean magicguard = false;
        private static boolean mesguard = false;
        private static double multi = 0;
        private static double mastery = 0;
        private static int skill = 0;
        private static ISkill skil;
        private static boolean ignore = false;
        private static int attackedDamage = 0;
        private static MapleMonster pvpMob;
        private static Integer combo;
        private static void pvpDamageBalance(AbstractDealDamageHandler.AttackInfo attack, MapleCharacter player) {
        matk = player.getTotalMagic();
        luk = player.getTotalLuk();
        watk = player.getTotalWatk();
        matk = player.getTotalMagic();
                switch (attack.skill) {
                        case 0: //normal attack
                           
                            multi = 1;
                            maxHeight = 35;
                            isAoe = false;
                                break;
                        case 1001004:    //Power Strike
                            skil = SkillFactory.getSkill(1001004);
                            multi = skil.getEffect(player.getSkillLevel(skil)).getDamage() / 100.0;
                           
                            maxHeight = 35;
                            isAoe = false;
                                break;
                        case 1001005:    //Slash Blast
                            skil = SkillFactory.getSkill(1001005);
                            multi = skil.getEffect(player.getSkillLevel(skil)).getDamage() / 100.0;
                           
                            maxHeight = 35;
                            isAoe = false;
                                break;
                        case 2001004:    //Energy Bolt
                            skil = SkillFactory.getSkill(2001004);
                            multi = skil.getEffect(player.getSkillLevel(skil)).getMatk();
                            mastery = skil.getEffect(player.getSkillLevel(skil)).getMastery() * 5 + 10 / 100;
                            pvpDamage = (int) ((matk * 0.8) + (luk / 4) / 18 * multi * 0.8);
                            min = (int) ((matk * 0.8) + (luk / 4) / 18 * multi * 0.8 * mastery);
                            pvpDamage = player.rand(min, pvpDamage);
                            maxDis = 200;
                            maxHeight = 35;
                            isAoe = false;
                            magic = true;
                                break;
                        case 2001005:    //Magic Claw
                            skil = SkillFactory.getSkill(2001005);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getMatk());
                            mastery = skil.getEffect(player.getSkillLevel(skil)).getMastery() * 5 + 10 / 100;
                            pvpDamage = (int) ((matk * 0.8) + (luk / 4) / 18 * multi * 0.8);
                            min = (int) ((matk * 0.8) + (luk / 4) / 18 * multi * 0.8 * mastery);
                            pvpDamage = player.rand(min, pvpDamage);
                            maxHeight = 35;
                            isAoe = false;
                            magic = true;
                                break;
                        case 3001004:    //Arrow Blow
                            skil = SkillFactory.getSkill(3001004);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getDamage() / 100.0);
                           
                            maxHeight = 35;
                            isAoe = false;
                                break;
                        case 3001005:    //Double Shot
                            skil = SkillFactory.getSkill(3001005);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getDamage() / 100.0);
                           
                            maxHeight = 35;
                            isAoe = false;
                                break;
                        case 4001334:    //Double Stab
                            skil = SkillFactory.getSkill(4001334);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getDamage() / 100.0);
                           
                            maxHeight = 35;
                            isAoe = false;
                                break;
                        case 4001344:    //Lucky Seven
                            skil = SkillFactory.getSkill(4001344);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getDamage() / 100.0);
                            pvpDamage = (int)(5 * luk / 100 * watk * multi);
                            min = (int)(2.5 * luk / 100 * watk * multi);
                            pvpDamage = player.rand(min, pvpDamage);
                           
                            maxHeight = 35;
                            isAoe = false;
                            ignore = true;
                                break;
                        case 2101004:    //Fire Arrow
                            skil = SkillFactory.getSkill(4101004);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getMatk());
                            mastery = skil.getEffect(player.getSkillLevel(skil)).getMastery() * 5 + 10 / 100;
                            pvpDamage = (int) ((matk * 0.8) + (luk / 4) / 18 * multi * 0.8);
                            min = (int) ((matk * 0.8) + (luk / 4) / 18 * multi * 0.8 * mastery);
                            pvpDamage = player.rand(min, pvpDamage);
                            maxDis = 400;
                            maxHeight = 35;
                            isAoe = false;
                            magic = true;
                                break;
                        case 2101005:    //Poison Brace
                            skil = SkillFactory.getSkill(2101005);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getMatk());
                            mastery = skil.getEffect(player.getSkillLevel(skil)).getMastery() * 5 + 10 / 100;
                            pvpDamage = (int) ((matk * 0.8) + (luk / 4) / 18 * multi * 0.8);
                            min = (int) ((matk * 0.8) + (luk / 4) / 18 * multi * 0.8 * mastery);
                            pvpDamage = player.rand(min, pvpDamage);
                            maxDis = 400;
                            maxHeight = 35;
                            isAoe = false;
                            magic = true;
                                break;
                        case 2201004:    //Cold Beam
                            skil = SkillFactory.getSkill(2201004);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getMatk());
                            mastery = skil.getEffect(player.getSkillLevel(skil)).getMastery() * 5 + 10 / 100;
                            pvpDamage = (int) ((matk * 0.8) + (luk / 4) / 18 * multi * 0.8);
                            min = (int) ((matk * 0.8) + (luk / 4) / 18 * multi * 0.8 * mastery);
                            pvpDamage = player.rand(min, pvpDamage);
                            maxDis = 300;
                            maxHeight = 35;
                            isAoe = false;
                            magic = true;
                                break;
                        case 2301005:    //Holy Arrow
                            skil = SkillFactory.getSkill(2301005);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getMatk());
                            mastery = skil.getEffect(player.getSkillLevel(skil)).getMastery() * 5 + 10 / 100;
                            pvpDamage = (int) ((matk * 0.8) + (luk / 4) / 18 * multi * 0.8);
                            min = (int) ((matk * 0.8) + (luk / 4) / 18 * multi * 0.8 * mastery);
                            pvpDamage = player.rand(min, pvpDamage);
                            maxDis = 300;
                            maxHeight = 35;
                            isAoe = false;
                            magic = true;
                                break;
                        case 4101005:    //Drain
                            skil = SkillFactory.getSkill(4101005);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getDamage() / 100.0);
                           
                            maxHeight = 35;
                            isAoe = false;
                                break;
                        case 4201005:    //Savage Blow
                            skil = SkillFactory.getSkill(4201005);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getDamage() / 100.0);
                           
                            maxHeight = 35;
                            isAoe = false;
                                break;
                        case 1111004:    //Panic: Axe
                            skil = SkillFactory.getSkill(1111004);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getDamage() / 100.0);
                           
                            maxHeight = 35;
                            isAoe = false;
                                break;
                        case 1111003:    //Panic: Sword
                            skil = SkillFactory.getSkill(1111003);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getDamage() / 100.0);
                           
                            maxHeight = 35;
                            isAoe = false;
                                break;
                        case 1311004:    //Dragon Fury: Pole Arm
                            skil = SkillFactory.getSkill(1311004);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getDamage() / 100.0);
                           
                            maxHeight = 35;
                            isAoe = false;
                                break;
                        case 1311003:    //Dragon Fury: Spear
                            skil = SkillFactory.getSkill(1311003);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getDamage() / 100.0);
                           
                            maxHeight = 35;
                            isAoe = false;
                                break;
                        case 1311002:    //Pole Arm Crusher
                            skil = SkillFactory.getSkill(1311002);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getDamage() / 100.0);
                           
                            maxHeight = 35;
                            isAoe = false;
                                break;
                        case 1311005:    //Sacrifice
                            skil = SkillFactory.getSkill(1311005);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getDamage() / 100.0);
                           
                            maxHeight = 35;
                            isAoe = false;
                                break;
                        case 1311001:    //Spear Crusher
                            skil = SkillFactory.getSkill(1311001);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getDamage() / 100.0);
                           
                            maxHeight = 35;
                            isAoe = false;
                                break;
                        case 2211002:    //Ice Strike
                            skil = SkillFactory.getSkill(2211002);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getMatk());
                            mastery = skil.getEffect(player.getSkillLevel(skil)).getMastery() * 5 + 10 / 100;
                            pvpDamage = (int) ((matk * 0.8) + (luk / 4) / 18 * multi * 0.8);
                            min = (int) ((matk * 0.8) + (luk / 4) / 18 * multi * 0.8 * mastery);
                            pvpDamage = player.rand(min, pvpDamage);
                            maxDis = 250;
                            maxHeight = 35;
                            isAoe = false;
                            magic = true;
                                break;
                        case 2211003:    //Thunder Spear
                            skil = SkillFactory.getSkill(2211003);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getMatk());
                            mastery = skil.getEffect(player.getSkillLevel(skil)).getMastery() * 5 + 10 / 100;
                            pvpDamage = (int) ((matk * 0.8) + (luk / 4) / 18 * multi * 0.8);
                            min = (int) ((matk * 0.8) + (luk / 4) / 18 * multi * 0.8 * mastery);
                            pvpDamage = player.rand(min, pvpDamage);
                            maxDis = 300;
                            maxHeight = 35;
                            isAoe = false;
                            magic = true;
                                break;
                        case 3111006:    //Strafe
                            skil = SkillFactory.getSkill(3111006);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getDamage() / 100.0);
                           
                            maxHeight = 35;
                            isAoe = false;
                                break;
                        case 3211006:    //Strafe
                            skil = SkillFactory.getSkill(3211006);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getDamage() / 100.0);
                           
                            maxHeight = 35;
                            isAoe = false;
                                break;
                        case 4111005:    //Avenger
                            skil = SkillFactory.getSkill(4111005);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getDamage() / 100.0);
                           
                            maxHeight = 35;
                            isAoe = false;
                                break;
                        case 4211002:    //Assaulter
                            skil = SkillFactory.getSkill(4211002);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getDamage() / 100.0);
                            maxDis = 200;
                            maxHeight = 35;
                            isAoe = false;
                                break;
                        case 1121008:    //Brandish
                            skil = SkillFactory.getSkill(1121008);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getDamage() / 100.0);
                           
                            maxHeight = 35;
                            isAoe = false;
                                break;
                        case 1121006:    //Rush
                            skil = SkillFactory.getSkill(1121006);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getDamage() / 100.0);
                           
                            maxHeight = 35;
                            isAoe = false;
                                break;
                        case 1221009:    //Blast
                            skil = SkillFactory.getSkill(1221009);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getDamage() / 100.0);
                           
                            maxHeight = 35;
                            isAoe = false;
                                break;
                        case 1221007:    //Rush
                            skil = SkillFactory.getSkill(1221007);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getDamage() / 100.0);
                           
                            maxHeight = 35;
                            isAoe = false;
                                break;
                        case 1321003:    //Rush
                            skil = SkillFactory.getSkill(1321003);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getDamage() / 100.0);
                           
                            maxHeight = 35;
                            isAoe = false;
                                break;
                        case 2121003:    //Fire Demon
                            skil = SkillFactory.getSkill(2121003);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getMatk());
                            mastery = skil.getEffect(player.getSkillLevel(skil)).getMastery() * 5 + 10 / 100;
                            pvpDamage = (int) ((matk * 0.8) + (luk / 4) / 18 * multi * 0.8);
                            min = (int) ((matk * 0.8) + (luk / 4) / 18 * multi * 0.8 * mastery);
                            pvpDamage = player.rand(min, pvpDamage);
                            maxDis = 400;
                            maxHeight = 35;
                            isAoe = false;
                            magic = true;
                                break;
                        case 2221006:    //Chain Lightning
                            skil = SkillFactory.getSkill(2221006);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getMatk());
                            mastery = skil.getEffect(player.getSkillLevel(skil)).getMastery() * 5 + 10 / 100;
                            pvpDamage = (int) ((matk * 0.8) + (luk / 4) / 18 * multi * 0.8);
                            min = (int) ((matk * 0.8) + (luk / 4) / 18 * multi * 0.8 * mastery);
                            pvpDamage = player.rand(min, pvpDamage);
                            maxDis = 400;
                            maxHeight = 35;
                            isAoe = false;
                            magic = true;
                                break;
                        case 2221003:    //Ice Demon
                            skil = SkillFactory.getSkill(2221003);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getMatk());
                            mastery = skil.getEffect(player.getSkillLevel(skil)).getMastery() * 5 + 10 / 100;
                            pvpDamage = (int) ((matk * 0.8) + (luk / 4) / 18 * multi * 0.8);
                            min = (int) ((matk * 0.8) + (luk / 4) / 18 * multi * 0.8 * mastery);
                            pvpDamage = player.rand(min, pvpDamage);
                            maxDis = 400;
                            maxHeight = 35;
                            isAoe = false;
                            magic = true;
                                break;
                        case 2321007:    //Angel's Ray
                            skil = SkillFactory.getSkill(2321007);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getMatk());
                            mastery = skil.getEffect(player.getSkillLevel(skil)).getMastery() * 5 + 10 / 100;
                            pvpDamage = (int) ((matk * 0.8) + (luk / 4) / 18 * multi * 0.8);
                            min = (int) ((matk * 0.8) + (luk / 4) / 18 * multi * 0.8 * mastery);
                            pvpDamage = player.rand(min, pvpDamage);
                            maxDis = 400;
                            maxHeight = 35;
                            isAoe = false;
                            magic = true;
                                break;
                        case 3121003:    //Dragon Pulse
                            skil = SkillFactory.getSkill(3121003);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getDamage() / 100.0);
                           
                            maxHeight = 35;
                            isAoe = false;
                                break;
                        case 3121004:    //Hurricane
                            skil = SkillFactory.getSkill(3121004);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getDamage() / 100.0);
                           
                            maxHeight = 35;
                            isAoe = false;
                                break;
                        case 3221003:    //Dragon Pulse     
                            skil = SkillFactory.getSkill(3221003);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getDamage() / 100.0);
                           
                            maxHeight = 35;
                            isAoe = false;
                                break;
                        case 3221001:    //Piercing
                            skil = SkillFactory.getSkill(3221003);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getDamage() / 100.0);
                           
                            maxHeight = 35;
                            isAoe = false;
                                break;
                        case 3221007:    //Sniping
                            pvpDamage = (int) (player.calculateMaxBaseDamage(watk) * 3);
                            min = (int) (player.calculateMinBaseDamage(player) * 3);
                            pvpDamage = player.rand(min, pvpDamage);
                           
                            maxHeight = 35;
                            isAoe = false;
                            ignore = true;
                                break;
                        case 4121003:    //Showdown taunt
                            skil = SkillFactory.getSkill(4121003);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getDamage() / 100.0);
                           
                            maxHeight = 35;
                            isAoe = false;
                                break;
                        case 4121007:    //Triple Throw
                            skil = SkillFactory.getSkill(4121007);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getDamage() / 100.0);
                           
                            maxHeight = 35;
                            isAoe = false;
                                break;
                        case 4221007:    //Boomerang Step
                            skil = SkillFactory.getSkill(4221007);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getDamage() / 100.0);
                           
                            maxHeight = 35;
                            isAoe = false;
                                break;
                        case 4221003:    //Showdown taunt
                            skil = SkillFactory.getSkill(4221003);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getDamage() / 100.0);
                           
                            maxHeight = 35;
                            isAoe = false;
                                break;
                        //aoe
                        case 2201005:    //Thunderbolt
                            skil = SkillFactory.getSkill(2201005);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getMatk());
                            mastery = skil.getEffect(player.getSkillLevel(skil)).getMastery() * 5 + 10 / 100;
                            pvpDamage = (int) ((matk * 0.8) + (luk / 4) / 18 * multi * 0.8);
                            min = (int) ((matk * 0.8) + (luk / 4) / 18 * multi * 0.8 * mastery);
                            pvpDamage = player.rand(min, pvpDamage);
                            maxDis = 250;
                            maxHeight = 250;
                            isAoe = true;
                            magic = true;
                                break;
                        case 3101005:    //Arrow Bomb : Bow
                            skil = SkillFactory.getSkill(3101005);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getDamage() / 100.0);
                           
                            maxHeight = 250;
                            isAoe = true;
                                break;
                        case 3201005:    //Iron Arrow : Crossbow
                            skil = SkillFactory.getSkill(3201005);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getDamage() / 100.0);
                           
                            maxHeight = 35;
                            isAoe = true;
                                break;
                        case 1111006:    //Coma: Axe
                            skil = SkillFactory.getSkill(1111006);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getDamage() / 100.0);
                           
                            maxHeight = 250;
                            isAoe = true;
                                break;
                        case 1111005:    //Coma: Sword
                            skil = SkillFactory.getSkill(1111005);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getDamage() / 100.0);
                           
                            maxHeight = 250;
                            isAoe = true;
                                break;
                        case 1211002:    //Charged Blow - skill doesn't work
                            skil = SkillFactory.getSkill(1211002);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getDamage() / 100.0);
                           
                            maxHeight = 250;
                            isAoe = true;
                                break;
                        case 1311006:    //Dragon Roar
                            skil = SkillFactory.getSkill(1311006);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getDamage() / 100.0);
                            maxDis = 600;
                            maxHeight = 450;
                            isAoe = true;
                                break;
                        case 2111002:    //Explosion
                            skil = SkillFactory.getSkill(2111002);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getMatk());
                            mastery = skil.getEffect(player.getSkillLevel(skil)).getMastery() * 5 + 10 / 100;
                            pvpDamage = (int) ((matk * 0.8) + (luk / 4) / 18 * multi * 0.8);
                            min = (int) ((matk * 0.8) + (luk / 4) / 18 * multi * 0.8 * mastery);
                            pvpDamage = player.rand(min, pvpDamage);
                            maxDis = 350;
                            maxHeight = 350;
                            isAoe = true;
                            magic = true;
                                break;
                        case 2111003:    //Poison Mist
                            skil = SkillFactory.getSkill(2111003);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getMatk());
                            mastery = skil.getEffect(player.getSkillLevel(skil)).getMastery() * 5 + 10 / 100;
                            pvpDamage = (int) ((matk * 0.8) + (luk / 4) / 18 * multi * 0.8);
                            min = (int) ((matk * 0.8) + (luk / 4) / 18 * multi * 0.8 * mastery);
                            pvpDamage = player.rand(min, pvpDamage);
                            maxDis = 350;
                            maxHeight = 350;
                            isAoe = true;
                            magic = true;
                                break;
                        case 2311004:    //Shining Ray
                            skil = SkillFactory.getSkill(2311004);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getMatk());
                            mastery = skil.getEffect(player.getSkillLevel(skil)).getMastery() * 5 + 10 / 100;
                            pvpDamage = (int) ((matk * 0.8) + (luk / 4) / 18 * multi * 0.8);
                            min = (int) ((matk * 0.8) + (luk / 4) / 18 * multi * 0.8 * mastery);
                            pvpDamage = player.rand(min, pvpDamage);
                            maxDis = 350;
                            maxHeight = 350;
                            isAoe = true;
                            magic = true;
                                break;
                        case 3111004:    //Arrow Rain
                            skil = SkillFactory.getSkill(3111004);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getDamage() / 100.0);
                            maxDis = 350;
                            maxHeight = 350;
                            isAoe = true;
                                break;
                        case 3111003:    //Inferno
                            skil = SkillFactory.getSkill(3111003);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getDamage() / 100.0);
                            maxDis = 350;
                            maxHeight = 350;
                            isAoe = true;
                                break;
                        case 3211004:    //Arrow Eruption
                            skil = SkillFactory.getSkill(3211004);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getDamage() / 100.0);
                            maxDis = 350;
                            maxHeight = 350;
                            isAoe = true;
                                break;
                        case 3211003:    //Blizzard (Sniper)
                            skil = SkillFactory.getSkill(3211003);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getDamage() / 100.0);
                            maxDis = 350;
                            maxHeight = 350;
                            isAoe = true;
                                break;
                        case 4211004:    //Band of Thieves Skill doesn't work so i don't know
                            skil = SkillFactory.getSkill(4211004);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getDamage() / 100.0);
                           
                            maxHeight = 350;
                            isAoe = true;
                                break;
                        case 1221011:    //Sanctuary Skill doesn't work so i don't know
                            skil = SkillFactory.getSkill(1221011);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getDamage() / 100.0);
                            maxDis = 350;
                            maxHeight = 350;
                            isAoe = true;
                                break;
                        case 2121001:    //Big Bang
                            skil = SkillFactory.getSkill(2121001);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getMatk());
                            mastery = skil.getEffect(player.getSkillLevel(skil)).getMastery() * 5 + 10 / 100;
                            pvpDamage = (int) ((matk * 0.8) + (luk / 4) / 18 * multi * 0.8);
                            min = (int) ((matk * 0.8) + (luk / 4) / 18 * multi * 0.8 * mastery);
                            pvpDamage = player.rand(min, pvpDamage);
                            maxDis = 175;
                            maxHeight = 175;
                            isAoe = true;
                            magic = true;
                                break;
                        case 2121007:    //Meteo
                            skil = SkillFactory.getSkill(2121007);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getMatk());
                            mastery = skil.getEffect(player.getSkillLevel(skil)).getMastery() * 5 + 10 / 100;
                            pvpDamage = (int) ((matk * 0.8) + (luk / 4) / 18 * multi * 0.8);
                            min = (int) ((matk * 0.8) + (luk / 4) / 18 * multi * 0.8 * mastery);
                            pvpDamage = player.rand(min, pvpDamage);
                            maxDis = 600;
                            maxHeight = 600;
                            isAoe = true;
                            magic = true;
                                break;
                        case 2121006:    //Paralyze
                            skil = SkillFactory.getSkill(2121006);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getMatk());
                            mastery = skil.getEffect(player.getSkillLevel(skil)).getMastery() * 5 + 10 / 100;
                            pvpDamage = (int) ((matk * 0.8) + (luk / 4) / 18 * multi * 0.8);
                            min = (int) ((matk * 0.8) + (luk / 4) / 18 * multi * 0.8 * mastery);
                            pvpDamage = player.rand(min, pvpDamage);
                            maxDis = 250;
                            maxHeight = 250;
                            isAoe = true;
                            magic = true;
                                break;
                        case 2221001:    //Big Bang
                            skil = SkillFactory.getSkill(2221001);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getMatk());
                            mastery = skil.getEffect(player.getSkillLevel(skil)).getMastery() * 5 + 10 / 100;
                            pvpDamage = (int) ((matk * 0.8) + (luk / 4) / 18 * multi * 0.8);
                            min = (int) ((matk * 0.8) + (luk / 4) / 18 * multi * 0.8 * mastery);
                            pvpDamage = player.rand(min, pvpDamage);
                            maxDis = 175;
                            maxHeight = 175;
                            isAoe = true;
                            magic = true;
                                break;
                        case 2221007:    //Blizzard
                            skil = SkillFactory.getSkill(2221007);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getMatk());
                            mastery = skil.getEffect(player.getSkillLevel(skil)).getMastery() * 5 + 10 / 100;
                            pvpDamage = (int) ((matk * 0.8) + (luk / 4) / 18 * multi * 0.8);
                            min = (int) ((matk * 0.8) + (luk / 4) / 18 * multi * 0.8 * mastery);
                            pvpDamage = player.rand(min, pvpDamage);
                            maxDis = 600;
                            maxHeight = 600;
                            isAoe = true;
                            magic = true;
                                break;
                        case 2321008:    //Genesis
                            skil = SkillFactory.getSkill(2321008);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getMatk());
                            mastery = skil.getEffect(player.getSkillLevel(skil)).getMastery() * 5 + 10 / 100;
                            pvpDamage = (int) ((matk * 0.8) + (luk / 4) / 18 * multi * 0.8);
                            min = (int) ((matk * 0.8) + (luk / 4) / 18 * multi * 0.8 * mastery);
                            pvpDamage = player.rand(min, pvpDamage);
                            maxDis = 600;
                            maxHeight = 600;
                            isAoe = true;
                            magic = true;
                                break;
                        case 2321001:  //bishop Big Bang
                            skil = SkillFactory.getSkill(2321001);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getMatk());
                            mastery = skil.getEffect(player.getSkillLevel(skil)).getMastery() * 5 + 10 / 100;
                            pvpDamage = (int) ((matk * 0.8) + (luk / 4) / 18 * multi * 0.8);
                            min = (int) ((matk * 0.8) + (luk / 4) / 18 * multi * 0.8 * mastery);
                            pvpDamage = player.rand(min, pvpDamage);
                            maxDis = 175;
                            maxHeight = 175;
                            isAoe = true;
                            magic = true;
                                break;
                        case 4121004:    //Ninja Ambush
                            pvpDamage = (int) Math.floor(Math.random() * (180 - 150) + 150);
                            maxDis = 150;
                            maxHeight = 300;
                            isAoe = true;
                            ignore = true;
                                break;
                        case 4121008:    //Ninja Storm knockback
                            skil = SkillFactory.getSkill(4121008);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getDamage() / 100.0);
                            pvpDamage = (int) Math.floor(Math.random() * (player.calculateMaxBaseDamage(watk) * multi));
                            maxDis = 150;
                            maxHeight = 35;
                            isAoe = true;
                            ignore = true;
                                break;
                        case 4221001:    //Assassinate
                            skil = SkillFactory.getSkill(4221001);
                            multi = (skil.getEffect(player.getSkillLevel(skil)).getDamage() / 100.0);
                           
                            maxHeight = 35;
                            isAoe = true;
                                break;
                        case 4221004:    //Ninja Ambush
                            pvpDamage = (int) Math.floor(Math.random() * (180 - 150) + 150);
                            maxDis = 150;
                            maxHeight = 150;
                            isAoe = true;
                            ignore = true;
                                break;
                        default:
                            break;
                }
                if(!magic || !ignore) {
                    maxDis = player.getMaxDis(player);
                }
        }

        private static void getDirection(AbstractDealDamageHandler.AttackInfo attack) {
                if (isAoe) {
                        isRight = true;
                        isLeft = true;
                } else if (attack.direction <= 0 && attack.stance <= 0) {
                        isRight = false;
                        isLeft = true;
                } else {
                        isRight = true;
                        isLeft = false;
                }
        }
       
        private static void monsterBomb(MapleCharacter player, MapleCharacter attackedPlayers, MapleMap map, AbstractDealDamageHandler.AttackInfo attack) {
                for (int dmgpacket = 0; dmgpacket < attack.numDamage; dmgpacket++) {
                if(!magic || !ignore) {
                    pvpDamage = (int) (player.getRandomage(player) * multi);
                }
                combo = player.getBuffedValue(MapleBuffStat.COMBO);
                if(combo != null) {
                //player.handleOrbgain();//comment out for now
                skil = SkillFactory.getSkill(1120003);
                skill = player.getSkillLevel(skil);
                if(skill > 0){
                multi = (skil.getEffect(player.getSkillLevel(skil)).getDamage() / 100.0);
                pvpDamage *= multi;
                }
                else {
                skil = SkillFactory.getSkill(1120003);
                skill = player.getSkillLevel(skil);
                multi = (skil.getEffect(player.getSkillLevel(skil)).getDamage() / 100.0);
                pvpDamage *= multi;
                }
                }
                //combo end
                //summon check

                //summon end
                //damage balances
                if (attackedPlayers.getLevel() < player.getLevel()) {
                int difference = player.getLevel() - attackedPlayers.getLevel();
                if(difference >= 5) {
                pvpDamage /= player.getLevel() / 5;
                }
                }
                if(!magic) {
                pvpDamage -= (attackedPlayers.getTotalWdef() * 1.5);
                } else {
                    pvpDamage -= (attackedPlayers.getTotalMdef() * 1.5);
                }
                if(pvpDamage < 0) {
                    pvpDamage = 1;
                }
                //damage balances end
                //buff modifiers **magic guard and mesoguard**
        Integer mguard = attackedPlayers.getBuffedValue(MapleBuffStat.MAGIC_GUARD);
        Integer mesoguard = attackedPlayers.getBuffedValue(MapleBuffStat.MESOGUARD);
        if (mguard != null) {
            skil = SkillFactory.getSkill(2001002);
            skill = attackedPlayers.getSkillLevel(skil);
            if(skill > 0){
                multi = (skil.getEffect(attackedPlayers.getSkillLevel(skil)).getX() / 100.0);
            }
            int mg = (int) (pvpDamage * multi);
            if(attackedPlayers.getMp() > mg) {
                attackedPlayers.setMp(attackedPlayers.getMp() - mg);
                pvpDamage -= mg;
            }
            else {
                pvpDamage -= attackedPlayers.getMp();
                attackedPlayers.setMp(0);
                attackedPlayers.getClient().getSession().write(MaplePacketCreator.serverNotice(5,"Your MP has been drained."));
            }
            magicguard = true;
        }
        if (mesoguard != null) {
            skil = SkillFactory.getSkill(4211005);
            skill = attackedPlayers.getSkillLevel(skil);
            if(skill > 0){
                multi = (skil.getEffect(attackedPlayers.getSkillLevel(skil)).getX() / 100.0);
            }
            int mg = (int) (pvpDamage * multi);
            if(attackedPlayers.getMeso() > mg) {
                attackedPlayers.gainMeso(-mg, false);
                pvpDamage *= 0.5;
            }
            else {
                attackedPlayers.getClient().getSession().write(MaplePacketCreator.serverNotice(5,"You do not have enough mesos to weaken the blow"));
            }
            mesguard = true;
        }
        //end of buffs
        //passive skills
        int y = 2;
        int skillid;
        int aPmp;
        if(magic) {
        for (int i = 0; i<y; i++) {
            skillid = 100000 * i + 2000000;
            skil = SkillFactory.getSkill(skillid);
            skill = player.getSkillLevel(skil);
            if(skill > 0){
                multi = (skil.getEffect(player.getSkillLevel(skil)).getX() / 100.0);
                if(skil.getEffect(player.getSkillLevel(skil)).makeChanceResult()) {
                    aPmp = (int) (multi * attackedPlayers.getMaxMp());
                    if (attackedPlayers.getMp() > aPmp) {
                        attackedPlayers.setMp(attackedPlayers.getMp() - aPmp);
                        player.setMp(player.getMp() + aPmp);
                        if (player.getMp() > player.getMaxMp()) {
                            player.setMp(player.getMaxMp());
                        }
                    }
                    else
                    {
                        player.setMp(player.getMp() + attackedPlayers.getMp());
                        if (player.getMp() > player.getMaxMp()) {
                            player.setMp(player.getMaxMp());
                        }
                        attackedPlayers.setMp(0);
                    }
                }
            }
            }
        magic = false;
        magicrecovery = true;
        }
        //passive skills end
        //skills effects
       
        //skills effects end
                //the bomb
                pvpMob = MapleLifeFactory.getMonster(9400711);
                map.spawnMonsterOnGroudBelow(pvpMob, attackedPlayers.getPosition());
                player.getClient().getSession().write(player.makeHPBarPacket(attackedPlayers));
                //map.broadcastMessage(player, player.showHPBarPacket(attackedPlayers), false);
                //number of damage packets
                        map.broadcastMessage(player, MaplePacketCreator.damagePlayer(attack.numDamage, pvpMob.getId(), attackedPlayers.getId(), pvpDamage), false);
                        player.getClient().getSession().write(MaplePacketCreator.damagePlayer(attack.numDamage, pvpMob.getId(), attackedPlayers.getId(), pvpDamage));
                        attackedPlayers.addHP(-pvpDamage);
                        try{
                        Thread.sleep(200);
                        }
                        catch(Exception e)
                        {
                        }
                        attackedDamage += pvpDamage;
                }
                attackedPlayers.getClient().getSession().write(MaplePacketCreator.serverNotice(5, player.getName() + " has done " + attackedDamage + " damage to you!"));
                if(attackedDamage > 0) {
                    combo = player.getBuffedValue(MapleBuffStat.COMBO);
                    if(combo != null) {
                        player.handleOrbgain();
                    }
                }
                attackedDamage = 0;
                //map.broadcastMessage(player, player.showHPBarPacket(attackedPlayers), false);
                player.getClient().getSession().write(player.makeHPBarPacket(attackedPlayers));
                //announcements
                if(magicguard) {
                    player.getClient().getSession().write(MaplePacketCreator.serverNotice(5, player.getName() + " has partially blocked your attack with magic guard!"));
                    magicguard = false;
                }
                if(mesguard) {
                    player.getClient().getSession().write(MaplePacketCreator.serverNotice(5, player.getName() + " has partially blocked your attack with mesoguard!"));
                    mesguard = false;
                }
                if(magicrecovery) {
                    attackedPlayers.getClient().getSession().write(MaplePacketCreator.serverNotice(5, player.getName() + " has partially absorbed your MP with MP Eater!"));
                    magicrecovery = false;
                }
                //announcements end
                //rewards
                if (attackedPlayers.getHp() <= 0 && !attackedPlayers.isAlive()) {
                        // exp bonuses
                        int expreward = attackedPlayers.getLevel() * 100;
                        player.setHp(player.getMaxHp());
                        player.setMp(player.getMaxMp());
                        if (player.getPvpKills() / 4 >= player.getPvpDeaths()) {
                                expreward *= 2;
                        }
                        //exp
                        if(attackedPlayers.getExp() > 0) {
                        expreward *= (attackedPlayers.getExp() / attackedPlayers.getLevel());
                        }
                        player.gainExp(expreward, true, false);
                        //guild points
                        if (player.getGuildId() != 0 && player.getGuildId() != attackedPlayers.getGuildId()) {
                                try {
                                        MapleGuild guild = player.getClient().getChannelServer().getWorldInterface().getGuild(player.getGuildId(), null);
                                        guild.gainGP(1);
                                } catch (Exception e) {}
                        }
                        if (attackedPlayers.getGuildId() != 0 && attackedPlayers.getGuildId() != player.getGuildId()) {
                                try {
                                        MapleGuild guild = attackedPlayers.getClient().getChannelServer().getWorldInterface().getGuild(attackedPlayers.getGuildId(), null);
                                        guild.gainGP(-1);
                                } catch (Exception e) {}
                        }
                        //guild points end
                        //pvpkills and deaths
                        player.gainPvpKill();
                        player.getClient().getSession().write(MaplePacketCreator.serverNotice(6, "You've killed " + attackedPlayers.getName() + "! You've gained a kill!"));
                        attackedPlayers.gainPvpDeath();
                        attackedPlayers.getClient().getSession().write(MaplePacketCreator.serverNotice(6, player.getName() + " has killed you!"));
                        //pvp end kills and deaths
                        attackedPlayers.gainExp(attackedPlayers.getExp() / -10, false, false);
                        if(attackedPlayers.getExp() < 0) {
                            attackedPlayers.gainExp(attackedPlayers.getExp() + attackedPlayers.getExp() * -1, true, false);
                        }
                }
                map.killMonster(pvpMob, player, false);
        }

        public static void doPvP(MapleCharacter player, MapleMap map, AbstractDealDamageHandler.AttackInfo attack) {
                pvpDamageBalance(attack, player); //grab height/distance/damage/aoetrue\false
                getDirection(attack);
                for (MapleCharacter attackedPlayers : player.getMap().getNearestPvpChar(player.getPosition(), maxDis, maxHeight, Collections.unmodifiableCollection(player.getMap().getCharacters()))) {
                        if (attackedPlayers.isAlive() && (player.getParty() == null || player.getParty() != attackedPlayers.getParty())) {
                                monsterBomb(player, attackedPlayers, map, attack);
                        }
                }
        }
}

maplecharacter>calclateminbasedamage
Code:

public int calculateMinBaseDamage (MapleCharacter player) {
                int minbasedamage = 0;
                int atk = player.getTotalWatk();
                if (atk == 0) {
                        minbasedamage = 1;
                } else {
                    IItem weapon_item = getInventory(MapleInventoryType.EQUIPPED).getItem((byte) - 11);
                    if( weapon_item != null) {
                        MapleWeaponType weapon = MapleItemInformationProvider.getInstance().getWeaponType(weapon_item.getItemId());
                        //mastery start
                        if (player.getJob().isA(MapleJob.FIGHTER)) {
                        skil = SkillFactory.getSkill(1100000);
                        skill = player.getSkillLevel(skil);
                        if(skill > 0){
                        sword = ((skil.getEffect(player.getSkillLevel(skil)).getMastery() * 5 + 10) / 100);
                        }
                        else {
                            sword = 0.1;
                        }
                        }
                        else {
                        skil = SkillFactory.getSkill(1200000);
                        skill = player.getSkillLevel(skil);
                        if(skill > 0){
                        sword = ((skil.getEffect(player.getSkillLevel(skil)).getMastery() * 5 + 10) / 100);
                        }
                        else {
                            sword = 0.1;
                        }
                        }
                        skil = SkillFactory.getSkill(1100001);
                        skill = player.getSkillLevel(skil);
                        if(skill > 0){
                        axe = ((skil.getEffect(player.getSkillLevel(skil)).getMastery() * 5 + 10) / 100);
                        }
                        else {
                            axe = 0.1;
                        }
                        skil = SkillFactory.getSkill(1200001);
                        skill = player.getSkillLevel(skil);
                        if(skill > 0){
                        blunt = ((skil.getEffect(player.getSkillLevel(skil)).getMastery() * 5 + 10) / 100);
                        }
                        else {
                            blunt = 0.1;
                        }
                        skil = SkillFactory.getSkill(1300000);
                        skill = player.getSkillLevel(skil);
                        if(skill > 0){
                        spear = ((skil.getEffect(player.getSkillLevel(skil)).getMastery() * 5 + 10) / 100);
                        }
                        else {
                            spear = 0.1;
                        }
                        skil = SkillFactory.getSkill(1300001);
                        skill = player.getSkillLevel(skil);
                        if(skill > 0){
                        polearm = ((skil.getEffect(player.getSkillLevel(skil)).getMastery() * 5 + 10) / 100);
                        }
                        else {
                            polearm = 0.1;
                        }
                        skil = SkillFactory.getSkill(3200000);
                        skill = player.getSkillLevel(skil);
                        if(skill > 0){
                        crossbow = ((skil.getEffect(player.getSkillLevel(skil)).getMastery() * 5 + 10) / 100);
                        }
                        else {
                            crossbow = 0.1;
                        }
                        skil = SkillFactory.getSkill(3100000);
                        skill = player.getSkillLevel(skil);
                        if(skill > 0){
                        bow = ((skil.getEffect(player.getSkillLevel(skil)).getMastery() * 5 + 10) / 100);
                        }
                        else {
                            bow = 0.1;
                        }
                        //end mastery
                        if (weapon == MapleWeaponType.CROSSBOW) {
                            minbasedamage = (int) (localdex * 0.9 * 3.6 * crossbow + localstr) / 100 * (atk + 15);
                        }
                        if (weapon == MapleWeaponType.BOW) {
                            minbasedamage = (int) (localdex * 0.9 * 3.4 * bow + localstr) / 100 * (atk + 15);
                        }
                        if (getJob().isA(MapleJob.THIEF) && (weapon == MapleWeaponType.DAGGER)) {
                            minbasedamage = (int) (localluk * 0.9 * 3.6 * dagger + localstr + localdex) / 100 * atk;
                        }
                        if (!getJob().isA(MapleJob.THIEF) && (weapon == MapleWeaponType.DAGGER)) {
                            minbasedamage = (int) (localstr * 0.9 * 4.0 * dagger + localdex) / 100 * atk;
                        }
                        if (getJob().isA(MapleJob.THIEF) && (weapon == MapleWeaponType.CLAW)) {
                            minbasedamage = (int) (localluk * 0.9 * 3.6 * claw + localstr + localdex) / 100 * (atk + 15);
                        }
                        if (weapon == MapleWeaponType.SPEAR) {
                            minbasedamage = (int) (localstr * 0.9 * 3.0 * spear + localdex) / 100 * atk;
                        }
                        if (weapon == MapleWeaponType.POLE_ARM) {
                            minbasedamage = (int) (localstr * 0.9 * 3.0 * polearm + localdex) / 100 * atk;
                        }
                        if (weapon == MapleWeaponType.SWORD1H) {
                            minbasedamage = (int) (localstr * 0.9 * 4.0 * sword + localdex) / 100 * atk;
                        }
                        if (weapon == MapleWeaponType.SWORD2H) {
                            minbasedamage = (int) (localstr * 0.9 * 4.6 * sword + localdex) / 100 * atk;
                        }
                        if (weapon == MapleWeaponType.AXE1H) {
                            minbasedamage = (int) (localstr * 0.9 * 3.2 * axe + localdex) / 100 * atk;
                        }
                        if (weapon == MapleWeaponType.BLUNT1H) {
                            minbasedamage = (int) (localstr * 0.9 * 3.2 * blunt + localdex) / 100 * atk;
                        }
                        if (weapon == MapleWeaponType.AXE2H) {
                            minbasedamage = (int) (localstr * 0.9 * 3.4 * axe + localdex) / 100 * atk;
                        }
                        if (weapon == MapleWeaponType.BLUNT2H) {
                            minbasedamage = (int) (localstr * 0.9 * 3.4 * blunt + localdex) / 100 * atk;
                        }
                        if (weapon == MapleWeaponType.STAFF || weapon == MapleWeaponType.WAND) {
                            minbasedamage = (int) (localstr * 0.9 * 3.0 * staffwand + localdex) / 100 * atk;
                        }
                    }
                }
                return minbasedamage;
        }


old maplepvp.java
Code:

package net.sf.odinms.net.channel.pvp;

import java.util.Collections;
import java.util.ArrayList;
import java.util.List;

import net.sf.odinms.client.MapleCharacter;
import net.sf.odinms.client.MapleBuffStat;
import net.sf.odinms.client.MapleStat;
import net.sf.odinms.client.MapleJob;
import net.sf.odinms.net.world.guild.MapleGuild;
import net.sf.odinms.net.channel.handler.AbstractDealDamageHandler;
import net.sf.odinms.server.life.MapleMonster;
import net.sf.odinms.server.life.MapleLifeFactory;
import net.sf.odinms.server.maps.MapleMap;
import net.sf.odinms.tools.MaplePacketCreator;
import net.sf.odinms.tools.Pair;

public class MaplePvp {
        private static int pvpDamage;
        private static int maxDis;
        private static int maxHeight;
        private static boolean isAoe = false;
        public static boolean isLeft = false;
        public static boolean isRight = false;

        private static boolean isMeleeAttack(AbstractDealDamageHandler.AttackInfo attack) {
                switch(attack.skill) {
                        case 1001004:    //Power Strike
                        case 1001005:    //Slash Blast
                        case 4001334:    //Double Stab
                        case 4201005:    //Savage Blow
                        case 1111004:    //Panic: Axe
                        case 1111003:    //Panic: Sword
                        case 1311004:    //Dragon Fury: Pole Arm
                        case 1311003:    //Dragon Fury: Spear
                        case 1311002:    //Pole Arm Crusher
                        case 1311005:    //Sacrifice
                        case 1311001:    //Spear Crusher
                        case 1121008:    //Brandish
                        case 1221009:    //Blast
                        case 1121006:    //Rush
                        case 1221007:    //Rush
                        case 1321003:    //Rush
                        case 4221001:    //Assassinate
                        return true;
                }
                return false;
        }

        private static boolean isRangeAttack(AbstractDealDamageHandler.AttackInfo attack) {
                switch(attack.skill) {
                        case 2001004:    //Energy Bolt
                        case 2001005:    //Magic Claw
                        case 3001004:    //Arrow Blow
                        case 3001005:    //Double Shot
                        case 4001344:    //Lucky Seven
                        case 2101004:    //Fire Arrow
                        case 2101005:    //Poison Brace
                        case 2201004:    //Cold Beam
                        case 2301005:    //Holy Arrow
                        case 4101005:    //Drain
                        case 2211002:    //Ice Strike
                        case 2211003:    //Thunder Spear
                        case 3111006:    //Strafe
                        case 3211006:    //Strafe
                        case 4111005:    //Avenger
                        case 4211002:    //Assaulter
                        case 2121003:    //Fire Demon
                        case 2221006:    //Chain Lightning
                        case 2221003:    //Ice Demon
                        case 2111006:        //Element Composition F/P
                        case 2211006:        //Element Composition I/L
                        case 2321007:    //Angel's Ray
                        case 3121003:    //Dragon Pulse
                        case 3121004:    //Hurricane
                        case 3221003:    //Dragon Pulse
                        case 3221001:    //Piercing
                        case 3221007:    //Sniping
                        case 4121003:    //Showdown taunt
                        case 4121007:    //Triple Throw
                        case 4221007:    //Boomerang Step
                        case 4221003:    //Showdown taunt
                        case 4111004:    //Shadow Meso
                        return true;
                }
                return false;
        }

        private static boolean isAoeAttack(AbstractDealDamageHandler.AttackInfo attack) {
                switch(attack.skill) {
                        case 2201005:    //Thunderbolt
                        case 3101005:    //Arrow Bomb : Bow
                        case 3201005:    //Iron Arrow : Crossbow
                        case 1111006:    //Coma: Axe
                        case 1111005:    //Coma: Sword
                        case 1211002:    //Charged Blow
                        case 1311006:    //Dragon Roar
                        case 2111002:    //Explosion
                        case 2111003:    //Poison Mist
                        case 2311004:    //Shining Ray
                        case 3111004:    //Arrow Rain
                        case 3111003:    //Inferno
                        case 3211004:    //Arrow Eruption
                        case 3211003:    //Blizzard (Sniper)
                        case 4211004:    //Band of Thieves
                        case 1221011:    //Sanctuary Skill
                        case 2121001:    //Big Bang
                        case 2121007:    //Meteo
                        case 2121006:    //Paralyze
                        case 2221001:    //Big Bang
                        case 2221007:    //Blizzard
                        case 2321008:    //Genesis
                        case 2321001:    //Big Bang
                        case 4121004:    //Ninja Ambush
                        case 4121008:    //Ninja Storm knockback
                        case 4221004:    //Ninja Ambush
                        return true;
                }
                return false;
        }

        private static void getDirection(AbstractDealDamageHandler.AttackInfo attack) {
                if (isAoe) {
                        isRight = true;
                        isLeft = true;
                } else if (attack.direction <= 0 && attack.stance <= 0) {
                        isRight = false;
                        isLeft = true;
                } else {
                        isRight = true;
                        isLeft = false;
                }
        }

        private static void DamageBalancer(AbstractDealDamageHandler.AttackInfo attack) {
                if (attack.skill == 0) {
                        pvpDamage = 100;
                        maxDis = 130;
                        maxHeight = 35;
                } else if (isMeleeAttack(attack)) {
                        maxDis = 130;
                        maxHeight = 45;
                        isAoe = false;
                        if (attack.skill == 4201005) {
                                pvpDamage = (int) (Math.floor(Math.random() * (75 - 5) + 5));
                        } else if (attack.skill == 1121008) {
                                pvpDamage = (int) (Math.floor(Math.random() * (320 - 180) + 180));
                                maxHeight = 50;
                        } else if (attack.skill == 4221001) {
                                pvpDamage = (int) (Math.floor(Math.random() * (200 - 150) + 150));
                        } else if (attack.skill == 1121006 || attack.skill == 1221007 || attack.skill == 1321003) {
                                pvpDamage = (int) (Math.floor(Math.random() * (200 - 80) + 80));
                        } else {
                                pvpDamage = (int) (Math.floor(Math.random() * (600 - 250) + 250));
                        }
                } else if (isRangeAttack(attack)) {
                        maxDis = 300;
                        maxHeight = 40;
                        isAoe = false;
                        if (attack.skill == 4201005) {
                                pvpDamage = (int) (Math.floor(Math.random() * (75 - 5) + 5));
                        } else if (attack.skill == 4121007) {
                                pvpDamage = (int) (Math.floor(Math.random() * (60 - 15) + 15));
                        } else if (attack.skill == 4001344 || attack.skill == 2001005) {
                                pvpDamage = (int) (Math.floor(Math.random() * (195 - 90) + 90));
                        } else if (attack.skill == 4221007) {
                                pvpDamage = (int) (Math.floor(Math.random() * (350 - 180) + 180));
                        } else if (attack.skill == 3121004 || attack.skill == 3111006 || attack.skill == 3211006) {
                                maxDis = 450;
                                pvpDamage = (int) (Math.floor(Math.random() * (50 - 20) + 20));
                        } else if (attack.skill == 2121003 || attack.skill == 2221003) {
                                pvpDamage = (int) (Math.floor(Math.random() * (600 - 300) + 300));
                        } else {
                                pvpDamage = (int) (Math.floor(Math.random() * (400 - 250) + 250));
                        }
                } else if (isAoeAttack(attack)) {
                        maxDis = 350;
                        maxHeight = 350;
                        isAoe = true;
                        if (attack.skill == 2121001 || attack.skill == 2221001 || attack.skill == 2321001 || attack.skill == 2121006) {
                                maxDis = 175;
                                maxHeight = 175;
                                pvpDamage = (int) (Math.floor(Math.random() * (350 - 180) + 180));
                        } else {
                                pvpDamage = (int) (Math.floor(Math.random() * (700 - 300) + 300));
                        }
                }
        }

        private static void monsterBomb(MapleCharacter player, MapleCharacter attackedPlayers, MapleMap map, AbstractDealDamageHandler.AttackInfo attack) {
                //level balances
                if (attackedPlayers.getLevel() > player.getLevel() + 25) {
                        pvpDamage *= 1.35;
                } else if (attackedPlayers.getLevel() < player.getLevel() - 25) {
                        pvpDamage /= 1.35;
                } else if (attackedPlayers.getLevel() > player.getLevel() + 100) {
                        pvpDamage *= 1.50;
                } else if (attackedPlayers.getLevel() < player.getLevel() - 100) {
                        pvpDamage /= 1.50;
                }
                //class balances
                if (player.getJob().equals(MapleJob.MAGICIAN)) {
                        pvpDamage *= 1.20;
                }

                //buff modifiers
                Integer mguard = attackedPlayers.getBuffedValue(MapleBuffStat.MAGIC_GUARD);
                Integer mesoguard = attackedPlayers.getBuffedValue(MapleBuffStat.MESOGUARD);
                if (mguard != null) {
                        int mploss = (int) (pvpDamage / .5);
                        pvpDamage *= .70;
                        if (mploss > attackedPlayers.getMp()) {
                                pvpDamage /= .70;
                                attackedPlayers.cancelBuffStats(MapleBuffStat.MAGIC_GUARD);
                        } else {
                                attackedPlayers.setMp(attackedPlayers.getMp() - mploss);
                                attackedPlayers.updateSingleStat(MapleStat.MP, attackedPlayers.getMp());
                        }
                } else if (mesoguard != null) {
                        int mesoloss = (int) (pvpDamage * .75);
                        pvpDamage *= .75;
                        if(mesoloss > attackedPlayers.getMeso()) {
                                        pvpDamage /= .75;
                                        attackedPlayers.cancelBuffStats(MapleBuffStat.MESOGUARD);
                        } else {
                                        attackedPlayers.gainMeso(-mesoloss, false);
                        }
                }

                //set up us teh bonmb
                //training thingy = 9409000
                MapleMonster pvpMob = MapleLifeFactory.getMonster(9400711);
                map.spawnMonsterOnGroundBelow(pvpMob, attackedPlayers.getPosition());
                for (int attacks = 0; attacks < attack.numDamage; attacks++) {
                        map.broadcastMessage(MaplePacketCreator.damagePlayer(attack.numDamage, pvpMob.getId(), attackedPlayers.getId(), pvpDamage));
                        attackedPlayers.addHP(-pvpDamage);
                }
                int attackedDamage = pvpDamage * attack.numDamage;
                attackedPlayers.getClient().getSession().write(MaplePacketCreator.serverNotice(5, player.getName() + " has hit you for " + attackedDamage + " damage!"));
                map.killMonster(pvpMob, player, false);

                //rewards
                if (attackedPlayers.getHp() <= 0 && !attackedPlayers.isAlive()) {
                        int expReward = attackedPlayers.getLevel() * 100;
                        int gpReward = (int) (Math.floor(Math.random() * (200 - 50) + 50));
                        if (player.getPvpKills() * .25 >= player.getPvpDeaths()) {
                                expReward *= 20;
                        }
                        player.gainExp(expReward, true, false);
                        if (player.getGuildId() != 0 && player.getGuildId() != attackedPlayers.getGuildId()) {
                                try {
                                        MapleGuild guild = player.getClient().getChannelServer().getWorldInterface().getGuild(player.getGuildId(), null);
                                        guild.gainGP(gpReward);
                                } catch (Exception e) {}
                        }
                        player.gainPvpKill();
                        player.getClient().getSession().write(MaplePacketCreator.serverNotice(6, "You've killed " + attackedPlayers.getName() + "!! You've gained a pvp kill!"));
                        attackedPlayers.gainPvpDeath();
                        attackedPlayers.getClient().getSession().write(MaplePacketCreator.serverNotice(6, player.getName() + " has killed you!"));
                }
        }

        public static void doPvP(MapleCharacter player, MapleMap map, AbstractDealDamageHandler.AttackInfo attack) {
                DamageBalancer(attack);
                getDirection(attack);
                for (MapleCharacter attackedPlayers : player.getMap().getNearestPvpChar(player.getPosition(), maxDis, maxHeight, player.getMap().getCharacters())) {
                        if (attackedPlayers.isAlive() && (player.getParty() == null || player.getParty() != attackedPlayers.getParty())) {
                                monsterBomb(player, attackedPlayers, map, attack);
                        }
                }
        }
}


So what should I change?, pvpdamage = and mindamage = ?

Viewing all articles
Browse latest Browse all 15480

Latest Images

Trending Articles



Latest Images