• SEARCH

    통합검색
  • GAMEZONE
    • 커뮤니티
      • 공지사항
      • 유저게시판
        • 등업게시판
        • 출석체크
        • 정회원 무료자료실
      • 스크린샷
      • 인증자료실
    • 리니지
      • 게임공략 & 팁
      • 홍보게시판
      • 유틸자료실
      • 소스자료실
      • 자유게시판
      • 노하우 게시판
    • 메이플스토리
      • 게임공략 & 팁
      • 홍보게시판
      • 유틸자료실
      • 소스자료실
      • 자유게시판
      • 노하우 게시판
    • 바람의나라
      • 자유게시판
      • 홍보게시판
      • 자료게시판
        • 유틸자료실
        • 소스자료실
        • 클라이언트
        • 팩 자료실
      • 연구게시판
        • 개발내역
        • 질문과답변
        • 기타
      • 강의게시판
        • DR
        • CR
        • 구버전
        • 클라이언트 개조
        • 노하우 게시판
        • 게임공략 & 팁
    • 다크에덴
      • 게임공략 & 팁
      • 홍보게시판
      • 유틸자료실
      • 소스자료실
      • 자유게시판
      • 노하우 게시판
    • 믹스마스터
      • 게임공략 & 팁
      • 홍보게시판
      • 유틸자료실
      • 소스자료실
      • 자유게시판
      • 노하우 게시판
    • 라그나로크
      • 게임공략 & 팁
      • 홍보게시판
      • 유틸자료실
      • 소스자료실
      • 자유게시판
      • 노하우 게시판
    • 기타게임
      • 게임공략 & 팁
      • 홍보게시판
      • 유틸자료실
      • 소스자료실
      • 자유게시판
      • 노하우 게시판
    • 게임강의
    • 비베&포토샵
      • 자유게시판
      • 자료실
        • 일반자료실
        • 포인트 자료실
      • 노하우게시판
      • 포토샵게시판
    • 모바일
      • 게임공략
      • 포인트 자료실
      • 유틸자료실
      • 자유게시판
  • 메이플스토리 소스자료실
    • 메이플스토리 소스자료실
    • 316 추가옵션 구현 소스

      • DanielJSKim
      • 2020.06.09 - 14:56 2020.03.08 - 05:00 1181 3

    package client.items;

     

    import java.io.Serializable;

     

    import constants.GameConstants;

    import server.items.ItemInformation;

    import server.items.MapleRing;

    import tools.RandomStream.Randomizer;

     

    public class Equip extends Item implements IEquip, Serializable {

     

        private MapleRing ring = null;

        private byte upgradeSlots, level, vicioushammer, itemLevel, enhance, state, lines, bossdmg, alldmgp, allstatp;

        private short str, dex, _int, luk, arc = 0, hp, mp, watk, matk, wdef, mdef, acc, avoid, hands, speed, jump, hpR,

                mpR, IgnoreWdef, downlevel, soulname, soulenchanter, soulpotential, itemtrace, charmExp;

        private int arcexp = 0, arclevel = 0, job, potential, durability = -1, potential1, potential2, potential3,

                potential4, potential5, potential6, potential7, anvil, itemEXP;

        private long fire = 0;

        private boolean amazing, amazingequipscroll;

        private int soulskill;

        private int[] fireStat = new int[16];

     

        public Equip(int id, short position, short flag) {

            super(id, position, (short) 1, flag);

        }

     

        public void set(Equip e) {

            upgradeSlots = e.upgradeSlots;

            level = e.level;

            vicioushammer = e.vicioushammer;

            itemLevel = e.itemLevel;

            enhance = e.enhance;

            state = e.state;

            lines = e.lines;

            fire = e.fire;

            bossdmg = e.bossdmg;

            alldmgp = e.alldmgp;

            allstatp = e.allstatp;

            downlevel = e.downlevel;

            str = e.str;

            dex = e.dex;

            _int = e._int;

            luk = e.luk;

            arc = e.arc;

            arclevel = e.arclevel;

            arcexp = e.arcexp;

            hp = e.hp;

            mp = e.mp;

            watk = e.watk;

            matk = e.matk;

            wdef = e.wdef;

            mdef = e.mdef;

            acc = e.acc;

            avoid = e.avoid;

            hands = e.hands;

            speed = e.speed;

            jump = e.jump;

            hpR = e.hpR;

            mpR = e.mpR;

            IgnoreWdef = e.IgnoreWdef;

            soulname = e.soulname;

            soulenchanter = e.soulenchanter;

            soulpotential = e.soulpotential;

            job = e.job;

            potential = e.potential;

            durability = e.durability;

            potential1 = e.potential1;

            potential2 = e.potential2;

            potential3 = e.potential3;

            potential4 = e.potential4;

            potential5 = e.potential5;

            potential6 = e.potential6;

            potential7 = e.potential7;

            anvil = e.anvil;

            itemEXP = e.itemEXP;

            amazing = e.amazing;

            soulskill = e.soulskill;

        }

     

        @Override

        public IItem copy() {

            Equip ret = new Equip(getItemId(), getPosition(), getFlag());

            ret.str = str;

            ret.dex = dex;

            ret._int = _int;

            ret.luk = luk;

            ret.arc = arc;

            ret.arcexp = arcexp;

            ret.arclevel = arclevel;

            ret.hp = hp;

            ret.mp = mp;

            ret.matk = matk;

            ret.mdef = mdef;

            ret.watk = watk;

            ret.wdef = wdef;

            ret.acc = acc;

            ret.avoid = avoid;

            ret.hands = hands;

            ret.speed = speed;

            ret.jump = jump;

            ret.enhance = enhance;

            ret.upgradeSlots = upgradeSlots;

            ret.level = level;

            ret.itemEXP = itemEXP;

            ret.itemLevel = itemLevel;

            ret.durability = durability;

            ret.vicioushammer = vicioushammer;

            ret.potential1 = potential1;

            ret.potential2 = potential2;

            ret.potential3 = potential3;

            ret.potential4 = potential4;

            ret.potential5 = potential5;

            ret.potential6 = potential6;

            ret.potential7 = potential7;

            ret.anvil = anvil;

            ret.hpR = hpR;

            ret.mpR = mpR;

            ret.state = state;

            ret.lines = lines;

            ret.fire = fire;

            ret.downlevel = downlevel;

            ret.bossdmg = bossdmg;

            ret.alldmgp = alldmgp;

            ret.allstatp = allstatp;

            ret.IgnoreWdef = IgnoreWdef;

            ret.soulenchanter = soulenchanter;

            ret.soulname = soulname;

            ret.soulskill = soulskill;

            ret.soulpotential = soulpotential;

            ret.amazingequipscroll = amazingequipscroll;

            ret.arc = arc;

            ret.arcexp = arcexp;

            ret.arclevel = arclevel;

            ret.itemtrace = itemtrace;

            ret.setOwner(getOwner());

            ret.setQuantity(getQuantity());

            ret.setExpiration(getExpiration());

            ret.setUniqueId(getUniqueId());

            ret.setCash(isCash());

            return ret;

        }

     

        @Override

        public byte getType() {

            return 1;

        }

     

        @Override

        public byte getUpgradeSlots() {

            return upgradeSlots;

        }

     

        @Override

        public short getStr() {

            return str;

        }

     

        @Override

        public short getDex() {

            return dex;

        }

     

        @Override

        public short getInt() {

            return _int;

        }

     

        @Override

        public short getLuk() {

            return luk;

        }

     

        @Override

        public short getHp() {

            return hp;

        }

     

        @Override

        public short getMp() {

            return mp;

        }

     

        @Override

        public short getWatk() {

            return watk;

        }

     

        @Override

        public short getMatk() {

            return matk;

        }

     

        @Override

        public short getWdef() {

            return wdef;

        }

     

        @Override

        public short getMdef() {

            return mdef;

        }

     

        @Override

        public short getAcc() {

            return acc;

        }

     

        @Override

        public short getAvoid() {

            return avoid;

        }

     

        @Override

        public short getHands() {

            return hands;

        }

     

        @Override

        public short getSpeed() {

            return speed;

        }

     

        @Override

        public short getJump() {

            return jump;

        }

     

        @Override

        public short getArc() {

            return arc;

        }

        @Override

        public long getFire() {

            return fire;

        }

        

        public int getJob() {

            return job;

        }

      public void setStr(short str) {

            if (str < 0) {

                str = 0;

            }

            this.str = str;

        }

     

        public void addStr(short str) {

            if (this.str + str < 0) {

                this.str = 0;

            }

            this.str += str;

        }

     

        public void setDex(short dex) {

            if (dex < 0) {

                dex = 0;

            }

            this.dex = dex;

        }

     

        public void addDex(short dex) {

            if (this.dex + dex < 0) {

                this.dex = 0;

            }

            this.dex += dex;

        }

     

        public void setInt(short _int) {

            if (_int < 0) {

                _int = 0;

            }

            this._int = _int;

        }

     

        public void addInt(short dex) {

            if (this._int + dex < 0) {

                this._int = 0;

            }

            this._int += dex;

        }

     

        public void setLuk(short luk) {

            if (luk < 0) {

                luk = 0;

            }

            this.luk = luk;

        }

     

        public void addLuk(short dex) {

            if (this.luk + dex < 0) {

                this.luk = 0;

            }

            this.luk += dex;

        }

     

        public void setArc(short arc) {

            if (arc < 0) {

                arc = 0;

            }

            this.arc = arc;

        }

     

        public void setHp(short hp) {

            if (hp < 0) {

                hp = 0;

            }

            this.hp = hp;

        }

     

        public void addHp(short dex) {

            if (this.hp + dex < 0) {

                this.hp = 0;

            }

            this.hp += dex;

        }

     

        public void setMp(short mp) {

            if (mp < 0) {

                mp = 0;

            }

            this.mp = mp;

        }

     

        public void addMp(short dex) {

            if (this.mp + dex < 0) {

                this.mp = 0;

            }

            this.mp += dex;

        }

     

        public void setWatk(short watk) {

            if (watk < 0) {

                watk = 0;

            }

            this.watk = watk;

        }

     

        public void addWatk(short watk) {

            if (this.watk + watk < 0) {

                this.watk = 0;

            }

            this.watk += watk;

        }

     

        public void setMatk(short matk) {

            if (matk < 0) {

                matk = 0;

            }

            this.matk = matk;

        }

     

        public void addMatk(short watk) {

            if (this.matk + watk < 0) {

                this.matk = 0;

            }

            this.matk += watk;

        }

     

        public void setWdef(short wdef) {

            if (wdef < 0) {

                wdef = 0;

            }

            this.wdef = wdef;

        }

     

        public void addWdef(short wdef) {

            if (wdef + this.wdef < 0) {

                this.wdef = 0;

            }

            this.wdef += wdef;

        }

     

        public void setMdef(short mdef) {

            if (mdef < 0) {

                mdef = 0;

            }

            this.mdef = mdef;

        }

     

        public void addMdef(short mdef) {

            if (mdef + this.mdef < 0) {

                this.mdef = 0;

            }

            this.mdef += mdef;

        }

     

        public void setAcc(short acc) {

            if (acc < 0) {

                acc = 0;

            }

            this.acc = acc;

        }

     

        public void addAcc(short acc) {

            if (acc + this.acc < 0) {

                this.acc = 0;

            }

            this.acc += acc;

        }

     

        public void setAvoid(short avoid) {

            if (avoid < 0) {

                avoid = 0;

            }

            this.avoid = avoid;

        }

     

        public void setHands(short hands) {

            if (hands < 0) {

                hands = 0;

            }

            this.hands = hands;

        }

     

        public void setSpeed(short speed) {

            if (speed < 0) {

                speed = 0;

            }

            this.speed = speed;

        }

     

        public void addSpeed(short speed) {

            if (speed + this.speed < 0) {

                this.speed = 0;

            }

            this.speed += speed;

        }

     

        public void addJump(short jump) {

            if (jump + this.jump < 0) {

                this.jump = 0;

            }

            this.jump += jump;

        }

     

        public void setJump(short speed) {

            if (speed < 0) {

                speed = 0;

            }

            this.jump = speed;

        }

     

        public void setUpgradeSlots(byte upgradeSlots) {

            this.upgradeSlots = upgradeSlots;

        }

     

        public void addUpgradeSlots(byte upgradeSlots) {

            this.upgradeSlots += upgradeSlots;

        }

     

        @Override

        public byte getLevel() {

            return level;

        }

     

        public void setLevel(byte level) {

            this.level = level;

        }

     

        @Override

        public byte getViciousHammer() {

            return vicioushammer;

        }

     

        public void setViciousHammer(byte ham) {

            vicioushammer = ham;

        }

     

        @Override

        public byte getItemLevel() {

            return 6;

        }

     

        public void setItemLevel(byte itemLevel) {

            if (itemLevel < 0) {

                itemLevel = 0;

            }

            this.itemLevel = itemLevel;

        }

     

        @Override

        public int getItemEXP() {

            return itemEXP;

        }

     

        public void setItemEXP(int itemEXP) {

            if (itemEXP < 0) {

                itemEXP = 0;

            }

            this.itemEXP = itemEXP;

        }

     

        @Override

        public void setQuantity(short quantity) {

            if (quantity < 0 || quantity > 1) {

                throw new RuntimeException(

                        "Setting the quantity to " + quantity + " on an equip (itemid: " + getItemId() + ")");

            }

            super.setQuantity(quantity);

        }

     

        public void setJob(int job) {

            this.job = job;

        }

     

        @Override

        public int getDurability() {

            return durability;

        }

     

        public void setDurability(final int dur) {

            this.durability = dur;

        }

     

        @Override

        public byte getEnhance() {

            return enhance;

        }

     

        public void setEnhance(final byte en) {

            this.enhance = en;

        }

     

        @Override

        public int getPotential1() {

            return potential1;

        }

     

        public void setPotential1(final int en) {

            this.potential1 = en;

        }

     

        @Override

        public int getPotential2() {

            return potential2;

        }

     

        public void setPotential2(final int en) {

            this.potential2 = en;

        }

     

        @Override

        public int getPotential3() {

            return potential3;

        }

     

        public void setPotential3(final int en) {

            this.potential3 = en;

        }

     

        @Override

        public int getPotential4() {

            return potential4;

        }

     

        public void setPotential4(final int en) {

            this.potential4 = en;

        }

     

        @Override

        public int getPotential5() {

            return potential5;

        }

     

        public void setPotential5(final int en) {

            this.potential5 = en;

        }

     

        @Override

        public int getPotential6() {

            return potential6;

        }

     

        public void setPotential6(final int en) {

            this.potential6 = en;

        }

     

        @Override

        public int getPotential7() {

            return potential7;

        }

     

        public void setPotential7(final int en) {

            this.potential7 = en;

        }

     

        @Override

        public int getanvil() {

            return anvil;

        }

     

        public void setanvil(final int en) {

            this.anvil = en;

        }

     

        @Override

        public byte getState() {

            return state;

        }

     

        public void setState(byte state) {

            this.state = state;

        }

     

        @Override

        public byte getLines() {

            return lines;

        }

     

        public void setLines(byte lines) {

            this.lines = lines;

        }

     

     

        public void setFire(long fire) {

            this.fire = fire;

        }

     

        @Override

        public short getItemTrace() {

            return this.itemtrace;

        }

     

        public void setItemTrace(short trace) {

            this.itemtrace = trace;

        }

        public boolean isAmazingequipscroll() {

            return amazingequipscroll;

        }

     

        public void setAmazingequipscroll(boolean tt) {

            this.amazingequipscroll = tt;

        }

        public void renewPotential() {

            int epic = 7;

            int unique = 5;

            if (getState() == 17 && Randomizer.nextInt(100) <= epic) {

                setState((byte) 2);

                return;

            } else if (getState() == 18 && Randomizer.nextInt(100) <= unique) {

                setState((byte) 3);

                return;

            } else if (getState() == 19 && Randomizer.nextInt(100) <= 2) {

                setState((byte) 4);

                return;

            }

            setState((byte) (getState() - 16));

        }

     

        public void renewPotentialUniq() {

            int epic = 7;

            int unique = 5;

            if (getState() == 17 && Randomizer.nextInt(100) <= epic) {

                setState((byte) 2);

                return;

            } else if (getState() == 18 && Randomizer.nextInt(100) <= unique) {

                setState((byte) 3);

                return;

            }

            setState((byte) (getState() - 16));

        }

     

        public void giveEpicAndRenew() {

            setPotential1(-18);

            setPotential2(0);

            setPotential3(0);

        }

     

        @Override

        public short getHpR() {

            return hpR;

        }

     

        public void setHpR(final short hp) {

            this.hpR = hp;

        }

     

        @Override

        public short getMpR() {

            return mpR;

        }

     

        public void setMpR(final short mp) {

            this.mpR = mp;

        }

     

        @Override

        public short getDownLevel() {

            return downlevel;

        }

     

        public void setDownLevel(short down) {

            this.downlevel = down;

        }

     

        @Override

        public byte getBossDamage() {

            return bossdmg;

        }

     

        public void setBossDamage(byte dmg) {

            this.bossdmg = dmg;

        }

     

        public void addBossDamage(byte dmg) {

            if (this.bossdmg + dmg < 0) {

                this.bossdmg = 0;

            }

            this.bossdmg += dmg;

        }

     

        @Override

        public byte getAllDamageP() {

            return alldmgp;

        }

     

        public void setAllDamageP(byte percent) {

            this.alldmgp = percent;

        }

     

        @Override

        public short getIgnoreWdef() {

            return IgnoreWdef;

        }

     

        public void setIgnoreWdef(short percent) {

            this.IgnoreWdef = percent;

        }

     

        public void addIgnoreWdef(short IgnoreWdef) {

            if (this.IgnoreWdef + IgnoreWdef < 0) {

                this.IgnoreWdef = 0;

            }

            this.IgnoreWdef += IgnoreWdef;

        }

     

        @Override

        public byte getAllStatP() {

            return allstatp;

        }

     

        public void setAllStatP(byte percent) {

            this.allstatp = percent;

        }

     

        @Override

        public short getSoulEnchanter() {

            return soulenchanter;

        }

     

        public void setSoulEnchanter(final short soulenchanter) {

            this.soulenchanter = soulenchanter;

        }

     

        @Override

        public short getSoulPotential() {

            return this.soulpotential;

        }

     

        public void setSoulPotential(short soulpotential) {

            this.soulpotential = soulpotential;

        }

     

        @Override

        public short getSoulName() {

            return soulname;

        }

     

        public void setSoulName(final short soulname) {

            this.soulname = soulname;

        }

     

        @Override

        public int getSoulSkill() {

            return soulskill;

        }

     

        public void setFireStat(String t) {

            try {

                String[] s = t.split(",");

                for (int i = 0; i < s.length; i++) {

                    fireStat[i] = Integer.parseInt(s[i]);

                }

            } catch (Exception ex) {

                fireStat = new int[16];

            }

        }

     

        public void setFireStat(int[] i) {

            fireStat = i;

        }

     

        @Override

        public int[] getFireStat() {

            return fireStat;

        }

     

        @Override

        public String getFireStatToString() {

            String t = "";

            for (int i = 0; i < fireStat.length; i++) {

                t += (t.equals("") ? "" : ",") + fireStat[i];

            }

            return t;

        }

     

        public void setSoulSkill(final int soulskill) {

            this.soulskill = soulskill;

        }

     

        public MapleRing getRing() {

            if (!GameConstants.isEffectRing(getItemId()) || getUniqueId() <= 0) {

                return null;

            }

            if (ring == null) {

                ring = MapleRing.loadFromDb(getUniqueId(), getPosition() < 0);

            }

            return ring;

        }

     

        public boolean isAmazing() {

            return amazing;

        }

     

        public void setAmazing(boolean amazing) {

            this.amazing = amazing;

        }

     

        public void resetPotential_Fuse(boolean a, boolean nopotential) { // equip first receive

            int epic = a ? 20 : 10;

            int unique = a ? 10 : 5;

            if (Randomizer.nextInt(100) <= epic && !nopotential) {

                setState((byte) 2);

            } else if (Randomizer.nextInt(100) <= unique && !nopotential) {

                setState((byte) 3);

            } else if (!nopotential) {

                setState((byte) 1);

            }

        }

     

        public short getCharmEXP() {

            return charmExp;

        }

     

        public void setCharmEXP(short s) {

            charmExp = s;

        }

     

        @Override

        public int getArcEXP() {

            return arcexp;

        }

     

        @Override

        public int getArcLevel() {

            return arclevel;

        }

     

        public void setArcEXP(int exp) {

            arcexp = exp;

        }

     

        public void setArcLevel(int lv) {

            arclevel = lv;

        }

     

        

        public void setReqLevel(byte reqLevel) {

            this.itemLevel = reqLevel;

        }

        public void setFire2(long fire) {

            this.fire = fire;

        }

        public void addTotalDamage(byte totalDamage) {

             if (this.alldmgp + totalDamage < 0) {

                this.alldmgp = 0;

            }

            this.alldmgp += totalDamage;

        }

        public void addAllStat(byte allStat) {

            if (this.allstatp + allStat < 0) {

                this.allstatp = 0;

            }

            this.allstatp += allStat;

        }

            public void resetRebirth(int reqLevel) {

    // 반지, 방패, 어깨장식, 훈장, 심장, 보조무기, 엠블렘, 뱃지, 안드로이드, 펫장비, 심볼은 추가옵션이 붙지 않음

            if (GameConstants.isRing(getItemId()) || (getItemId() / 1000) == 1092 || (getItemId() / 1000) == 1342 || (getItemId() / 1000) == 1712 || (getItemId() / 1000) == 1152 || (getItemId() / 1000) == 1143 || (getItemId() / 1000) == 1672 || GameConstants.isSecondaryWeapon(getItemId()) || (getItemId() / 1000) == 1190 || (getItemId() / 1000) == 1182 || (getItemId() / 1000) == 1662 || (getItemId() / 1000) == 1802) {

                return;

            }

     

            if (getFire() == 0) {

                return;

            }

     

            Equip ordinary = (Equip) ItemInformation.getInstance().getEquipById(getItemId());

     

            int ordinaryPad = ordinary.watk > 0 ? ordinary.watk : ordinary.matk;

            int ordinaryMad = ordinary.matk > 0 ? ordinary.matk : ordinary.watk;

     

            int[] rebirth = new int[4];

            String fire = String.valueOf(getFire());

            if (fire.length() == 12) {

                rebirth[0] = Integer.parseInt(fire.substring(0, 3));

                rebirth[1] = Integer.parseInt(fire.substring(3, 6));

                rebirth[2] = Integer.parseInt(fire.substring(6, 9));

                rebirth[3] = Integer.parseInt(fire.substring(9));

            } else if (fire.length() == 11) {

                rebirth[0] = Integer.parseInt(fire.substring(0, 2));

                rebirth[1] = Integer.parseInt(fire.substring(2, 5));

                rebirth[2] = Integer.parseInt(fire.substring(5, 8));

                rebirth[3] = Integer.parseInt(fire.substring(8));

            } else if (fire.length() == 10) {

                rebirth[0] = Integer.parseInt(fire.substring(0, 1));

                rebirth[1] = Integer.parseInt(fire.substring(1, 4));

                rebirth[2] = Integer.parseInt(fire.substring(4, 7));

                rebirth[3] = Integer.parseInt(fire.substring(7));

            } else {

                return;

            }

     

            for (int i = 0; i < 4; ++i) {

                int randomOption = rebirth[i] / 10;

                int randomValue = rebirth[i] - (rebirth[i] / 10 * 10);

     

                switch (randomOption) {

                    case 0:

                        addStr((short) -((reqLevel / 20 + 1) * randomValue));

                        break;

                    case 1:

                        addDex((short) -((reqLevel / 20 + 1) * randomValue));

                        break;

                    case 2:

                        addInt((short) -((reqLevel / 20 + 1) * randomValue));

                        break;

                    case 3:

                        addLuk((short) -((reqLevel / 20 + 1) * randomValue));

                        break;

                    case 4:

                        addStr((short) -((reqLevel / 40 + 1) * randomValue));

                        addDex((short) -((reqLevel / 40 + 1) * randomValue));

                        break;

                    case 5:

                        addStr((short) -((reqLevel / 40 + 1) * randomValue));

                        addInt((short) -((reqLevel / 40 + 1) * randomValue));

                        break;

                    case 6:

                        addStr((short) -((reqLevel / 40 + 1) * randomValue));

                        addLuk((short) -((reqLevel / 40 + 1) * randomValue));

                        break;

                    case 7:

                        addDex((short) -((reqLevel / 40 + 1) * randomValue));

                        addInt((short) -((reqLevel / 40 + 1) * randomValue));

                        break;

                    case 8:

                        addDex((short) -((reqLevel / 40 + 1) * randomValue));

                        addLuk((short) -((reqLevel / 40 + 1) * randomValue));

                        break;

                    case 9:

                        addInt((short) -((reqLevel / 40 + 1) * randomValue));

                        addLuk((short) -((reqLevel / 40 + 1) * randomValue));

                        break;

                    case 10:

                        addHp((short) -(reqLevel * 3 * randomValue));

                        break;

                    case 11:

                        addMp((short) -(reqLevel * 3 * randomValue));

                        break;

                    case 13:

                        addWdef((short) -((reqLevel / 20 + 1) * randomValue));

                        break;

                    case 17: {

                        if (GameConstants.isWeapon(getItemId())) {

                            switch (randomValue) {

                                case 3:

                                    if (reqLevel <= 150) {

                                        addWatk((short) -(((ordinaryPad * 1200) / 10000) + 1));

                                    } else if (reqLevel <= 160) {

                                        addWatk((short) -(((ordinaryPad * 1500) / 10000) + 1));

                                    } else {

                                        addWatk((short) -(((ordinaryPad * 1800) / 10000) + 1));

                                    }

                                    break;

                                case 4:

                                    if (reqLevel <= 150) {

                                        addWatk((short) -(((ordinaryPad * 1760) / 10000) + 1));

                                    } else if (reqLevel <= 160) {

                                        addWatk((short) -(((ordinaryPad * 2200) / 10000) + 1));

                                    } else {

                                        addWatk((short) -(((ordinaryPad * 2640) / 10000) + 1));

                                    }

                                    break;

                                case 5:

                                    if (reqLevel <= 150) {

                                        addWatk((short) -(((ordinaryPad * 2420) / 10000) + 1));

                                    } else if (reqLevel <= 160) {

                                        addWatk((short) -(((ordinaryPad * 3025) / 10000) + 1));

                                    } else {

                                        addWatk((short) -(((ordinaryPad * 3630) / 10000) + 1));

                                    }

                                    break;

                                case 6:

                                    if (reqLevel <= 150) {

                                        addWatk((short) -(((ordinaryPad * 3200) / 10000) + 1));

                                    } else if (reqLevel <= 160) {

                                        addWatk((short) -(((ordinaryPad * 4000) / 10000) + 1));

                                    } else {

                                        addWatk((short) -(((ordinaryPad * 4800) / 10000) + 1));

                                    }

                                    break;

                                case 7:

                                    if (reqLevel <= 150) {

                                        addWatk((short) -(((ordinaryPad * 4100) / 10000) + 1));

                                    } else if (reqLevel <= 160) {

                                        addWatk((short) -(((ordinaryPad * 5125) / 10000) + 1));

                                    } else {

                                        addWatk((short) -(((ordinaryPad * 6150) / 10000) + 1));

                                    }

                                    break;

                            }

                        } else {

                            addWatk((short) -randomValue);

                        }

                        break;

                    }

                    case 18: {

                        if (GameConstants.isWeapon(getItemId())) {

                            switch (randomValue) {

                                case 3:

                                    if (reqLevel <= 150) {

                                        addMatk((short) -(((ordinaryMad * 1200) / 10000) + 1));

                                    } else if (reqLevel <= 160) {

                                        addMatk((short) -(((ordinaryMad * 1500) / 10000) + 1));

                                    } else {

                                        addMatk((short) -(((ordinaryMad * 1800) / 10000) + 1));

                                    }

                                    break;

                                case 4:

                                    if (reqLevel <= 150) {

                                        addMatk((short) -(((ordinaryMad * 1760) / 10000) + 1));

                                    } else if (reqLevel <= 160) {

                                        addMatk((short) -(((ordinaryMad * 2200) / 10000) + 1));

                                    } else {

                                        addMatk((short) -(((ordinaryMad * 2640) / 10000) + 1));

                                    }

                                    break;

                                case 5:

                                    if (reqLevel <= 150) {

                                        addMatk((short) -(((ordinaryMad * 2420) / 10000) + 1));

                                    } else if (reqLevel <= 160) {

                                        addMatk((short) -(((ordinaryMad * 3025) / 10000) + 1));

                                    } else {

                                        addMatk((short) -(((ordinaryMad * 3630) / 10000) + 1));

                                    }

                                    break;

                                case 6:

                                    if (reqLevel <= 150) {

                                        addMatk((short) -(((ordinaryMad * 3200) / 10000) + 1));

                                    } else if (reqLevel <= 160) {

                                        addMatk((short) -(((ordinaryMad * 4000) / 10000) + 1));

                                    } else {

                                        addMatk((short) -(((ordinaryMad * 4800) / 10000) + 1));

                                    }

                                    break;

                                case 7:

                                    if (reqLevel <= 150) {

                                        addMatk((short) -(((ordinaryMad * 4100) / 10000) + 1));

                                    } else if (reqLevel <= 160) {

                                        addMatk((short) -(((ordinaryMad * 5125) / 10000) + 1));

                                    } else {

                                        addMatk((short) -(((ordinaryMad * 6150) / 10000) + 1));

                                    }

                                    break;

                            }

                        } else {

                            addMatk((short) -randomValue);

                        }

                        break;

                    }

                    case 19:

                        addSpeed((short) -randomValue);

                        break;

                    case 20:

                        addJump((short) -randomValue);

                        break;

                    case 21:

                        addBossDamage((byte) -(randomValue * 2));

                        break;

                    case 22:

                        setReqLevel((byte) 0);

                        break;

                    case 23:

                        addTotalDamage((byte) -randomValue);

                        break;

                    case 24:

                        addAllStat((byte) -randomValue);

                        break;

                }

            }

            setFire(0);

        }

       public void setFireOption(int randomOption, int reqLevel, int randomValue, int ordinaryPad, int ordinaryMad) {

            switch (randomOption) {

                case 0:

                    addStr((short) ((reqLevel / 20 + 1) * randomValue));

                    break;

                case 1:

                    addDex((short) ((reqLevel / 20 + 1) * randomValue));

                    break;

                case 2:

                    addInt((short) ((reqLevel / 20 + 1) * randomValue));

                    break;

                case 3:

                    addLuk((short) ((reqLevel / 20 + 1) * randomValue));

                    break;

                case 4:

                    addStr((short) ((reqLevel / 40 + 1) * randomValue));

                    addDex((short) ((reqLevel / 40 + 1) * randomValue));

                    break;

                case 5:

                    addStr((short) ((reqLevel / 40 + 1) * randomValue));

                    addInt((short) ((reqLevel / 40 + 1) * randomValue));

                    break;

                case 6:

                    addStr((short) ((reqLevel / 40 + 1) * randomValue));

                    addLuk((short) ((reqLevel / 40 + 1) * randomValue));

                    break;

                case 7:

                    addDex((short) ((reqLevel / 40 + 1) * randomValue));

                    addInt((short) ((reqLevel / 40 + 1) * randomValue));

                    break;

                case 8:

                    addDex((short) ((reqLevel / 40 + 1) * randomValue));

                    addLuk((short) ((reqLevel / 40 + 1) * randomValue));

                    break;

                case 9:

                    addInt((short) ((reqLevel / 40 + 1) * randomValue));

                    addLuk((short) ((reqLevel / 40 + 1) * randomValue));

                    break;

                case 10:

                    addHp((short) (reqLevel * 3 * randomValue));

                    break;

                case 11:

                    addMp((short) (reqLevel * 3 * randomValue));

                    break;

                case 13:

                    addWdef((short) ((reqLevel / 20 + 1) * randomValue));

                    break;

                case 17: {

                    if (GameConstants.isWeapon(getItemId())) {

                        switch (randomValue) {

                            case 3:

                                if (reqLevel <= 150) {

                                    addWatk((short) (((ordinaryPad * 1200) / 10000) + 1));

                                } else if (reqLevel <= 160) {

                                    addWatk((short) (((ordinaryPad * 1500) / 10000) + 1));

                                } else {

                                    addWatk((short) (((ordinaryPad * 1800) / 10000) + 1));

                                }

                                break;

                            case 4:

                                if (reqLevel <= 150) {

                                    addWatk((short) (((ordinaryPad * 1760) / 10000) + 1));

                                } else if (reqLevel <= 160) {

                                    addWatk((short) (((ordinaryPad * 2200) / 10000) + 1));

                                } else {

                                    addWatk((short) (((ordinaryPad * 2640) / 10000) + 1));

                                }

                                break;

                            case 5:

                                if (reqLevel <= 150) {

                                    addWatk((short) (((ordinaryPad * 2420) / 10000) + 1));

                                } else if (reqLevel <= 160) {

                                    addWatk((short) (((ordinaryPad * 3025) / 10000) + 1));

                                } else {

                                    addWatk((short) (((ordinaryPad * 3630) / 10000) + 1));

                                }

                                break;

                            case 6:

                                if (reqLevel <= 150) {

                                    addWatk((short) (((ordinaryPad * 3200) / 10000) + 1));

                                } else if (reqLevel <= 160) {

                                    addWatk((short) (((ordinaryPad * 4000) / 10000) + 1));

                                } else {

                                    addWatk((short) (((ordinaryPad * 4800) / 10000) + 1));

                                }

                                break;

                            case 7:

                                if (reqLevel <= 150) {

                                    addWatk((short) (((ordinaryPad * 4100) / 10000) + 1));

                                } else if (reqLevel <= 160) {

                                    addWatk((short) (((ordinaryPad * 5125) / 10000) + 1));

                                } else {

                                    addWatk((short) (((ordinaryPad * 6150) / 10000) + 1));

                                }

                                break;

                        }

                    } else {

                        addWatk((short) randomValue);

                    }

                    break;

                }

                case 18: {

                    if (GameConstants.isWeapon(getItemId())) {

                        switch (randomValue) {

                            case 3:

                                if (reqLevel <= 150) {

                                    addMatk((short) (((ordinaryMad * 1200) / 10000) + 1));

                                } else if (reqLevel <= 160) {

                                    addMatk((short) (((ordinaryMad * 1500) / 10000) + 1));

                                } else {

                                    addMatk((short) (((ordinaryMad * 1800) / 10000) + 1));

                                }

                                break;

                            case 4:

                                if (reqLevel <= 150) {

                                    addMatk((short) (((ordinaryMad * 1760) / 10000) + 1));

                                } else if (reqLevel <= 160) {

                                    addMatk((short) (((ordinaryMad * 2200) / 10000) + 1));

                                } else {

                                    addMatk((short) (((ordinaryMad * 2640) / 10000) + 1));

                                }

                                break;

                            case 5:

                                if (reqLevel <= 150) {

                                    addMatk((short) (((ordinaryMad * 2420) / 10000) + 1));

                                } else if (reqLevel <= 160) {

                                    addMatk((short) (((ordinaryMad * 3025) / 10000) + 1));

                                } else {

                                    addMatk((short) (((ordinaryMad * 3630) / 10000) + 1));

                                }

                                break;

                            case 6:

                                if (reqLevel <= 150) {

                                    addMatk((short) (((ordinaryMad * 3200) / 10000) + 1));

                                } else if (reqLevel <= 160) {

                                    addMatk((short) (((ordinaryMad * 4000) / 10000) + 1));

                                } else {

                                    addMatk((short) (((ordinaryMad * 4800) / 10000) + 1));

                                }

                                break;

                            case 7:

                                if (reqLevel <= 150) {

                                    addMatk((short) (((ordinaryMad * 4100) / 10000) + 1));

                                } else if (reqLevel <= 160) {

                                    addMatk((short) (((ordinaryMad * 5125) / 10000) + 1));

                                } else {

                                    addMatk((short) (((ordinaryMad * 6150) / 10000) + 1));

                                }

                                break;

                        }

                    } else {

                        addMatk((short) randomValue);

                    }

                    break;

                }

                case 19:

                    addSpeed((short) randomValue);

                    break;

                case 20:

                    addJump((short) randomValue);

                    break;

                case 21:

                    addBossDamage((byte) (randomValue * 2));

                    break;

                case 22:

                    setReqLevel((byte) (-5 * randomValue));

                    break;

                case 23:

                    addTotalDamage((byte) randomValue);

                    break;

                case 24:

                    addAllStat((byte) randomValue);

                    break;

            }

       }

        public void setRebirth(int reqLevel, int scrollId) {

    // 반지, 방패, 어깨장식, 훈장, 심장, 보조무기, 엠블렘, 뱃지, 안드로이드, 펫장비, 심볼은 추가옵션이 붙지 않음

            if (GameConstants.isRing(getItemId()) || (getItemId() / 1000) == 1092 || (getItemId() / 1000) == 1342 || (getItemId() / 1000) == 1712 || (getItemId() / 1000) == 1152 || (getItemId() / 1000) == 1142 || (getItemId() / 1000) == 1143 || (getItemId() / 1000) == 1672 || GameConstants.isSecondaryWeapon(getItemId()) || (getItemId() / 1000) == 1190 || (getItemId() / 1000) == 1182 || (getItemId() / 1000) == 1662 || (getItemId() / 1000) == 1802) {

                return;

            }

     

            int maxValue = 5;

     

            if (scrollId == 2048716 || scrollId == 2048720 || scrollId == 2048724 || scrollId == 2048745) { // 강환불

                maxValue = 6;

            }

     

            if (scrollId == 2048717 || scrollId == 2048721 || scrollId == 2048723 || scrollId == 2048746 || scrollId == 2048747) { // 영환불

                maxValue = 7;

            }

     

            Equip ordinary = (Equip) ItemInformation.getInstance().getEquipById(getItemId());

     

            int ordinaryPad = ordinary.watk > 0 ? ordinary.watk : ordinary.matk;

            int ordinaryMad = ordinary.matk > 0 ? ordinary.matk : ordinary.watk;

     

            ItemInformation ii = ItemInformation.getInstance();

     

            long[] rebirth = new long[4];

     

            for (int i = 0; i < 4; ++i) {

                int randomOption = Randomizer.nextInt(25);

                int randomValue = 0; // 보통 3~7 -> 흔히 말하는 1~5급이 됨

     

                while (randomOption == 12 || randomOption == 14 || randomOption == 15 || randomOption == 16 || (!GameConstants.isWeapon(getItemId()) && (randomOption == 21 || randomOption == 23))) {

                    randomOption = Randomizer.nextInt(25);

                }

     

                if (((randomOption == 17 || randomOption == 18) && !GameConstants.isWeapon(getItemId())) || randomOption == 21 || randomOption == 22 || randomOption == 23 || randomOption == 24) {

                    randomValue = Randomizer.rand(1, maxValue);

                } else {

                    randomValue = Randomizer.rand(3, maxValue);

                }

     

                rebirth[i] = (randomOption * 10 + randomValue);

     

                for (int j = 0; j < i; ++j) {

                    rebirth[i] *= 1000;

                }

     

                setFireOption(randomOption, reqLevel, randomValue, ordinaryPad, ordinaryMad);

            }

     

            setFire(rebirth[0] + rebirth[1] + rebirth[2] + rebirth[3]);

        }

     

    }

    Equip.java 의 내용을 위에걸로 통째로 교체
     
    MySQL에서
    alter table inventoryequipment modify fire bigint(11); 
    alter table auctionequipment modify fire bigint(11);
    execute
     
    IEquip.java 에서

    public byte getFire(); 를 전부
    public long getFire(); 로 교체

     

    equip.setFire((rs.getByte("fire")));검색후
    equip.setFire((rs.getLong("fire"))); 으로 교체

     

    pse.setInt(36, equip.getFire()); 검색후
    pse.setLong(36, equip.getFire());로 교체

     

    packet.creators.PacketProvider.java 가서

    public static final void addItemInfo(final WritingPacket w, final IItem item, final boolean zeroPosition,
                final boolean leaveOut, final boolean trade, final boolean bagSlot, final MapleCharacter chr) {
    검색후
                w.write(equip.getFire() == 0 ? -1 : equip.getFire());
                if (equip.getFire() >= 0) {
                    w.writeLong(Randomizer.nextInt());
                }
    이부분을
                w.write(-1); //가횟
                w.writeLong(equip.getFire()); //추옵

    으로 교체

     

    server.items.ItemInfomation.java 가서

    } else if (GameConstants.isRebirhFireScroll(scrollId.getItemId())) { 검색후 

     몇줄밑에 break; 까지부분을
    } else if (GameConstants.isRebirhFireScroll(scrollId.getItemId())) {
     nEquip.resetRebirth(getReqLevel(nEquip.getItemId()));
     nEquip.setRebirth(getReqLevel(nEquip.getItemId()), scrollId.getItemId());
     return nEquip; 
    으로 교체

     

    DueyHandler.java 에서

    pse.setInt(38, equip.getFire()); 를

    pse.setLong(38, equip.getFire()); 로 교체

     

    출처 : https://cafe.naver.com/fmsn067/285924

     

    이 게시물을..
    N
    0
    0
    • 316 추옵 쿼리에서 수정하기DanielJSKim
    • 알면 유용한 위젯오빠는요
    • 9
      DanielJSKim

    DanielJSKim 님의 최근 글

    316 추옵 쿼리에서 수정하기 1440 1 2020 03.08 316 추가옵션 구현 소스 1181 3 2020 03.08 316 이너 어빌리티 미개방 캐릭터에 강제로 부여하기 499 2 2020 02.23 316 듀블 파이널 컷 데미지 감소 오류 fix 364 1 2020 02.23 316 하이퍼스탯포인트 레벨 250에 안받아지는 오류 fix 252 2020 02.22

    DanielJSKim 님의 최근 댓글

    확인해보니 안 돼 있더라구요 ㅜㅜ 2020 02.28 확인했습니다 2020 02.22
    글쓴이의 서명작성글 감추기 

    댓글3

    • 0
      샤쿠
      2020.05.10 - 00:26 #7851946

      혹시 IEquip 에서 equip.setFire((rs.getByte("fire"))); 를 검색해도 안나오는데 어떻게 하나요,,?

       
    • 0
      샤쿠
      2020.05.10 - 00:35 #7852011

      혹시 연결프로그램을 넷빈즈 말고 다른걸 사용해도 내용에 누락은 없는건가요??

       

    • 0
      뽁구
      2020.06.09 - 14:56 #8230073

      이걸 어디에다가 붙여넣어야하는건가요??

    댓글 쓰기 에디터 사용하기 닫기
    • view_headline 목록
    • 14px
    • 316 추옵 쿼리에서 수정하기
    • 알면 유용한 위젯
    • 목록
      view_headline
    3
    × CLOSE
    기본 (942) 제목 날짜 수정 조회 댓글 추천 비추
    분류 정렬 검색
    • 소스자료는 직접 올려주세요
      2017.06.06 - 16:13 926
    942
    v391 pack
    더기덕이 2025.10.04 - 00:33 202
    941
    127 써니 소스
    전창덕 2025.09.23 - 14:30 43
    940
    1.2.65 서버 ct및 우외 엔진
    마눙 2025.09.08 - 14:47 120
    939
    1.2.362 서버 src 입니
    GV솔그린 2024.03.21 - 20:54 313
    938
    1.2.316 초원팩 jdbc ssl 에러 수정 src
    GV솔그린 2024.03.21 - 19:31 115
    937
    1.2.329 로컬리디 언팩해서 만든 리디렉터
    GV솔그린 2024.03.21 - 19:24 91
    936
    1.2.329 로컬리디
    GV솔그린 2024.03.21 - 19:20 70
    935
    373 멀티로컬
    dreamin공유 2024.02.22 - 05:29 354
    934
    331팩 소스
    스마 2024.02.12 - 20:53 122
    933
    1.2.373 새벽소스
    스마 2024.02.12 - 20:47 242
    932
    373 솟
    garegdas 2024.02.06 - 09:24 121
    931
    스트레딧.
    하리86 2024.01.13 - 03:34 151
    930
    1.2.65 아르카나팩 스킬 변경 src
    김김김스 2023.12.26 - 04:49 948
    929
    316초원팩 src파일입니다
    동동쓰 2023.11.15 - 21:29 294
    928
    gms v111 접속rn
    하리86 2023.10.23 - 18:28 230
    927
    65버전 아르카나 , 죽둥젠 늘린거입니다
    gkxo9570 2023.09.22 - 12:38 542
    926
    65버전에서도 쓴 스크립트 강의모음
    gkxo9570 2023.09.22 - 07:42 460
    925
    1.2.65 화이트스타 src
    kingye 2023.07.04 - 10:56 1146
    924
    1.2.65 아르카나 src
    kingye 2023.07.04 - 07:28 535
    923
    ngs 우회
    우2우2 2023.06.08 - 04:55 277
    922
    몬스터 코드
    VanBan 2022.12.10 - 23:38 552
    921
    직업 코드
    VanBan 2022.12.10 - 23:30 306
    920
    362 자석펫 지급 NPC 스크립트
    나르나르 2022.11.10 - 08:55 854
    919
    0.83 src
    qweqwedq1 2022.07.13 - 15:30 144
    918
    리플렉스95 src
    qweqwedq1 2022.07.13 - 15:08 327
    917
    1.2.65 바콘팩
    dullggae 2021.07.30 - 18:04 730
    916
    316src입니다
    BJK 2021.02.10 - 05:37 218
    915
    331 소스
    라비앙로즈 2021.02.07 - 08:43 441
    914
    슈퍼엔진
    돼지우리 2021.01.14 - 02:20 445
    913
    kms 1.2.1104 ct입니다
    돼지우리 2021.01.12 - 12:07 448
    912
    어빌리티인포테이블.sql
    하리86 2020.12.16 - 00:23 180
    911
    잠재능력 관련 오류 수정 및 본섭화 옵션
    하리86 2020.12.16 - 00:16 358
    910
    sql 수정
    재희0414 2020.11.24 - 03:23 274
    909
    65 천외천 소스
    lIllIlllIllll 2020.10.16 - 06:05 412
    908
    로컬 소스
    피아쨩 2020.09.22 - 13:01 520
    907
    331 노엘팩 소스
    풍선씨 2020.09.09 - 03:33 1227
    906
    1.2.65 화이트스타 소스
    JYH93 2020.08.15 - 00:44 2343
    905
    1.2.65 순클 idb
    nhsnhsn 2020.07.24 - 00:19 875
    904
    331 GM명령어
    흐밍 2020.07.09 - 14:14 1837
    903
    레벨별 메소지급 소스
    능이 2020.07.05 - 21:44 690
    902
    1.2.284 그랜드 접속문제 해결파일
    wls 2020.06.28 - 07:30 240
    901
    대만 메이플스토리 113 아이템코드
    해우김123 2020.06.19 - 07:47 304
    900
    Java SE Development Kit 6 Update 10 - jdk-6u10
    수박씨 2020.05.12 - 21:52 203
    899
    Java SE Development Kit 6 Update 6 - jdk-6u6
    수박씨 2020.05.12 - 21:51 124
    898
    316 추옵 쿼리에서 수정하기
    DanielJSKim 2020.03.08 - 05:03 1440
    316 추가옵션 구현 소스
    DanielJSKim 2020.03.08 - 05:00 1181
    896
    알면 유용한 위젯
    오빠는요 2020.02.25 - 21:06 754
    895
    1.2.65dk
    오빠는요 2020.02.25 - 21:04 481
    894
    1.2.65 아트 소스
    오빠는요 2020.02.25 - 21:02 459
    893
    316 이너 어빌리티 미개방 캐릭터에 강제로 부여하기
    DanielJSKim 2020.02.23 - 02:44 499
    • 1 2 3 4 5 6 7 8 9 10 .. 19
    • / 19 GO
  • GAMEZONE
 GAMEZONE all rights reserved.
by OrangeDay