public void run() {
                client.getSession().write(MaplePacketCreator.CygnusIntroDisableUI(false));
                client.getSession().write(MaplePacketCreator.CygnusIntroLock(false));
                changeMap(913040006);
            }
        }, 54 * 1000); // 52 second = intro with "Please Help, Be my Knight..." 40 sec = without
    }

    public int getJobRank() {
        return jobrank;
    }

    public int getJobRankMove() {
        return jobrankmove;
    }

    public int getRank() {
        return rank;
    }

    public int getRankMove() {
        return rankmove;
    }

    public int getClantaorank() {
        return clantaorank;
    }

    public int getTaorank() {
        return taorank;
    }

    // autobuffs
    public void rebuff() {
        if (GMSMode > 0 && !isJounin()) {
            dropMessage(5, "[Meow]You could have got rebuff, but you are in GMS mode. So bleh ");
            return;
        }

        if (autobuffs != null) {
            for (int i : autobuffs) {
                SkillFactory.getSkill(i).getEffect(SkillFactory.getSkill(i).getMaxLevel()).applyTo(this);
            }
        } else {
            dropMessage("Looks like you have no buffs stored for Autobuff. Talk to Donation box NPC in Henesys");
        }
    }

    public List<Integer> getAutobuffs() {
        return autobuffs;
    }

    public void addAutobuff(int buff) {
        autobuffs.add(buff);
        autobuffchange = true;
    }

    public void removeAutobuff(int id) {
        autobuffs.remove(id);
        autobuffchange = true;
    }

    // Boss Quest
    public int getBossPoints() {
        return bossPoints;
    }

    public void setBossPoints(int bossPoints) {
        this.bossPoints = bossPoints;
    }

    // MiniGames
    public MapleMiniGame getMapleMiniGame() {
        return miniGame;
    }

    public void setMapleMiniGame(MapleMiniGame miniGame) {
        this.miniGame = miniGame;
    }

    public HiredMerchant getHiredMerchant() {
        return hiredMerchant;
    }

    public void setHasMerchant(boolean set) {
        try {
            PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("UPDATE characters SET HasMerchant = ? WHERE id = ?");
            ps.setInt(1, set ? 1 : 0);
            ps.setInt(2, id);
            ps.executeUpdate();
            ps.close();
        } catch (SQLException e) {
            return;
        }
        hasMerchant = set;
    }

    public void setHiredMerchant(HiredMerchant merchant) {
        this.hiredMerchant = merchant;
    }

    public boolean hasMerchant() {
        return hasMerchant;
    }

    public int getSlot() {
        return slots;
    }

    public void setSlot(int slots) {
        this.slots = slots;
    }

    // Rings
    // fff
    public int getEquippedRing(int type) {
        for (IItem item : getInventory(MapleInventoryType.EQUIPPED)) {
            IEquip equip = (IEquip) item;
            if (equip.getRingId() > 0) {
                int itemId = equip.getItemId();
                if ((itemId >= 1112001 && itemId <= 1112007 || itemId == 1112012) && type == 0) {
                    return equip.getRingId();
                }
                if (itemId >= 1112800 && itemId <= 1112802 && type == 1) {
                    return equip.getRingId();
                }
                if ((itemId >= 1112803 && itemId <= 1112807 || itemId == 1112809) && type == 2) {
                    return equip.getRingId();
                }
            }
        }
        return 0;
    }

    public boolean isRingEquipped(int ringId) {
        for (IItem item : getInventory(MapleInventoryType.EQUIPPED)) {
            IEquip equip = (IEquip) item;
            if (equip.getRingId() == ringId) {
                return equip.getPosition() <= (byte) -1;
            }
        }
        return false;
    }

    public List<MapleRing> getCrushRings() {
        Collections.sort(crushRings);
        return crushRings;
    }

    public List<MapleRing> getFriendshipRings() {
        Collections.sort(friendshipRings);
        return friendshipRings;
    }

    public List<MapleRing> getMarriageRings() {
        Collections.sort(marriageRings);
        return marriageRings;
    }

    public void addRingToCache(int ringId) {
        MapleRing ring = MapleRing.loadFromDb(ringId);
        if (ring.getItemId() >= 1112001 && ring.getItemId() <= 1112007 || ring.getItemId() == 1112012) {
            if (ring != null) {
                crushRings.add(ring);
            }
        } else if (ring.getItemId() >= 1112800 && ring.getItemId() <= 1112802) {
            if (ring != null) {
                friendshipRings.add(ring);
            }
        } else if (ring.getItemId() >= 1112803 && ring.getItemId() <= 1112807 || ring.getItemId() == 1112809) {
            if (ring != null) {
                marriageRings.add(ring);
            }
        }
    }

    public void relog() {
        client.getSession().write(MaplePacketCreator.getCharInfo(this));
        getMap().removePlayer(this);
        getMap().addPlayer(this);
    }

    public final byte getVillage() {
        return village;
    }

    public void setVillage(final byte lol) {
        this.village = lol;
    }

    public final byte getTextColour() {
        return textColour;
    }

    public void setTextColour(final byte textColour) {
        this.textColour = textColour;
    }

    public String getFootnote() {
        return footnote;
    }

    public void addFootnote(String note) {
        StringBuilder sb = new StringBuilder();
        if (footnote != null) {
            sb.append(this.footnote);
        }
        sb.append(note);
        sb.append(" || ");
        footnote = sb.toString();
    }

    public byte getMission() {
        return mission;
    }

    public void missionComplete() {
        this.mission++;
    }

    // Item Filter
    public ArrayList<Integer> getExcluded() {
        return excluded;
    }

    public void addExcluded(int x) {
        excluded.add(x);
    }

    // KPQ Points
    public int getKpqpoints() {
        return kpqpoints;
    }

    public void gainKpqpoints() {
        kpqpoints++;
    }

    public void setKpqpoints(int kpqpoints) {
        this.kpqpoints = kpqpoints;
    }

    public int getLmpoints() {
        return lmpoints;
    }

    public void setLmpoints(int lmpoints) {
        this.lmpoints = lmpoints;
    }

    public void addLmpoints() {
        lmpoints++;
    }

    public void startHurtHp() {
        hpDecreaseTask = TimerManager.getInstance().register(new Runnable() {

            @Override
            public void run() {
                if (map.getHPDec() < 1 || !isAlive()) {
                    return;
                } else if (getInventory(MapleInventoryType.EQUIPPED).findById(map.getHPDecProtect()) == null) {
                    addHP(-map.getHPDec());
                }
            }
        }, 10000);
    }

    public void setMonsterBookCover(int bookCover) {
        this.bookCover = bookCover;
    }

    public int getMonsterBookCover() {
        return bookCover;
    }

    public MonsterBook getMonsterBook() {
        return monsterbook;
    }

    public IMaplePlayerShop getPlayerShop() {
        return playerShop;
    }

    public void setPlayerShop(IMaplePlayerShop playerShop) {
        this.playerShop = playerShop;
    }

    public int getConversation() {
        return inst.get();
    }

    public void setConversation(int inst) {
        this.inst.set(inst);
    }

    public MapleCarnivalParty getCarnivalParty() {
        return carnivalParty;
    }

    public void setCarnivalParty(MapleCarnivalParty party) {
        carnivalParty = party;
    }

    public void addCP(int ammount) {
        totalCP += ammount;
        availableCP += ammount;
    }

    public void useCP(int ammount) {
        availableCP -= ammount;
    }

    public int getAvailableCP() {
        return availableCP;
    }

    public int getTotalCP() {
        return totalCP;
    }

    public void resetCP() {
        totalCP = 0;
        availableCP = 0;
    }

    public void addCarnivalRequest(MapleCarnivalChallenge request) {
        pendingCarnivalRequests.add(request);
    }

    public final MapleCarnivalChallenge getNextCarnivalRequest() {
        return pendingCarnivalRequests.pollLast();
    }

    public void clearCarnivalRequests() {
        pendingCarnivalRequests = new LinkedList<MapleCarnivalChallenge>();
    }

    public void startMonsterCarnival(final int enemyavailable, final int enemytotal) {
        client.getSession().write(MonsterCarnivalPacket.startMonsterCarnival(this, enemyavailable, enemytotal));
    }

    public void CPUpdate(final boolean party, final int available, final int total, final int team) {
        client.getSession().write(MonsterCarnivalPacket.CPUpdate(party, available, total, team));
    }

    public void playerDiedCPQ(final String name, final int lostCP, final int team) {
        client.getSession().write(MonsterCarnivalPacket.playerDiedMessage(name, lostCP, team));
    }

    public int[] getRocks() {
        return rocks;
    }

    public int getRockSize() {
        int ret = 0;
        for (int i = 0; i < 10; i++) {
            if (rocks[i] > 0) {
                ret++;
            }
        }
        return ret;
    }

    public void deleteFromRocks(int map) {
        for (int i = 0; i < 10; i++) {
            if (rocks[i] == map) {
                rocks[i] = -1;
                break;
            }
        }
    }

    public void addRockMap() {
        if (getRockSize() >= 10) {
            return;
        }
        rocks[getRockSize()] = getMapId();
    }

    public boolean isRockMap(int id) {
        for (int i = 0; i < 10; i++) {
            if (rocks[i] == id) {
                return true;
            }
        }
        return false;
    }

    public int[] getWishlist() {
        return wishlist;
    }

    public void clearWishlist() {
        for (int i = 0; i < 10; i++) {
            wishlist[i] = 0;
        }
    }    

    public int getWishlistSize() {
        int ret = 0;
        for (int i = 0; i < 10; i++) {
            if (wishlist[i] > 0) {
                ret++;
            }
        }
        return ret;
    }

    public MapleMount getMount() {
        return mount;
    }