com.l2jserver.gameserver.features.data.Q00255_Tutorial.java Source code

Java tutorial

Introduction

Here is the source code for com.l2jserver.gameserver.features.data.Q00255_Tutorial.java

Source

/*
 * This program is free software: you can redistribute it and/or modify it under
 * the terms of the GNU General Public License as published by the Free Software
 * Foundation, either version 3 of the License, or (at your option) any later
 * version.
 * 
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
 * details.
 * 
 * You should have received a copy of the GNU General Public License along with
 * this program. If not, see <http://www.gnu.org/licenses/>.
 */
package com.l2jserver.gameserver.features.data;

import org.apache.commons.lang.ArrayUtils;

import com.l2jserver.Config;
import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.quest.Quest;
import com.l2jserver.gameserver.model.quest.QuestState;

/**
 * Author: RobikBobik L2PS Team
 */
public final class Q00255_Tutorial extends Quest {
    private static final String[][] QTEXMTWO = { { "0", "tutorial_voice_001a", "tutorial_human_fighter001.htm" },
            { "10", "tutorial_voice_001b", "tutorial_human_mage001.htm" },
            { "18", "tutorial_voice_001c", "tutorial_elven_fighter001.htm" },
            { "25", "tutorial_voice_001d", "tutorial_elven_mage001.htm" },
            { "31", "tutorial_voice_001e", "tutorial_delf_fighter001.htm" },
            { "38", "tutorial_voice_001f", "tutorial_delf_mage001.htm" },
            { "44", "tutorial_voice_001g", "tutorial_orc_fighter001.htm" },
            { "49", "tutorial_voice_001h", "tutorial_orc_mage001.htm" },
            { "53", "tutorial_voice_001i", "tutorial_dwarven_fighter001.htm" },
            { "123", "tutorial_voice_001k", "tutorial_kamael_male001.htm" },
            { "124", "tutorial_voice_001j", "tutorial_kamael_female001.htm" } };

    private static final String[][] CEE_A = { { "0", "tutorial_human_fighter007.htm", "-71424", "258336", "-3109" },
            { "10", "tutorial_human_mage007.htm", "-91036", "248044", "-3568" },
            { "18", "tutorial_elf007.htm", "46112", "41200", "-3504" },
            { "25", "tutorial_elf007.htm", "46112", "41200", "-3504" },
            { "31", "tutorial_delf007.htm", "28384", "11056", "-4233" },
            { "38", "tutorial_delf007.htm", "28384", "11056", "-4233" },
            { "44", "tutorial_orc007.htm", "-56736", "-113680", "-672" },
            { "49", "tutorial_orc007.htm", "-56736", "-113680", "-672" },
            { "53", "tutorial_dwarven_fighter007.htm", "108567", "-173994", "-406" },
            { "123", "tutorial_kamael007.htm", "-125872", "38016", "1251" },
            { "124", "tutorial_kamael007.htm", "-125872", "38016", "1251" } };

    // table for Question Mark Clicked (9 & 11) learning skills [raceId, html, x, y, z]
    private static final String[][] QMC_A = { { "0", "tutorial_fighter017.htm", "-83165", "242711", "-3720" },
            { "10", "tutorial_mage017.htm", "-85247", "244718", "-3720" },
            { "18", "tutorial_fighter017.htm", "45610", "52206", "-2792" },
            { "25", "tutorial_mage017.htm", "45610", "52206", "-2792" },
            { "31", "tutorial_fighter017.htm", "10344", "14445", "-4242" },
            { "38", "tutorial_mage017.htm", "10344", "14445", "-4242" },
            { "44", "tutorial_orc_fighter017.htm", "-46324", "-114384", "-200" },
            { "49", "tutorial_orc_mage017.htm", "-46305", "-112763", "-200" },
            { "53", "tutorial_dwarven017.htm", "115447", "-182672", "-1440" },
            { "123", "tutorial_fighter017.htm", "-118132", "42788", "723" },
            { "124", "tutorial_fighter017.htm", "-118132", "42788", "723" } };

    // table for Question Mark Clicked (24) newbie lvl [html]
    private static final String[][] QMC_B = { { "0", "tutorial_human009.htm" }, { "10", "tutorial_human009.htm" },
            { "18", "tutorial_elf009.htm" }, { "25", "tutorial_elf009.htm" }, { "31", "tutorial_delf009.htm" },
            { "38", "tutorial_delf009.htm" }, { "44", "tutorial_orc009.htm" }, { "49", "tutorial_orc009.htm" },
            { "53", "tutorial_dwarven009.htm" }, { "123", "tutorial_kamael009.htm" },
            { "124", "tutorial_kamael009.htm" } };

    // table for Question Mark Clicked (35) 1st class transfer [html]
    private static final String[][] QMC_C = { { "0", "tutorial_21.htm" }, { "10", "tutorial_21a.htm" },
            { "18", "tutorial_21b.htm" }, { "25", "tutorial_21c.htm" }, { "31", "tutorial_21g.htm" },
            { "38", "tutorial_21h.htm" }, { "44", "tutorial_21d.htm" }, { "49", "tutorial_21e.htm" },
            { "53", "tutorial_21f.htm" } };

    // table for Tutorial Close Link (26) 2nd class transfer [html]
    private static final String[][] TCL_A = { { "1", "tutorial_22w.htm" }, { "4", "tutorial_22.htm" },
            { "7", "tutorial_22b.htm" }, { "11", "tutorial_22c.htm" }, { "15", "tutorial_22d.htm" },
            { "19", "tutorial_22e.htm" }, { "22", "tutorial_22f.htm" }, { "26", "tutorial_22g.htm" },
            { "29", "tutorial_22h.htm" }, { "32", "tutorial_22n.htm" }, { "35", "tutorial_22o.htm" },
            { "39", "tutorial_22p.htm" }, { "42", "tutorial_22q.htm" }, { "45", "tutorial_22i.htm" },
            { "47", "tutorial_22j.htm" }, { "50", "tutorial_22k.htm" }, { "54", "tutorial_22l.htm" },
            { "56", "tutorial_22m.htm" } };

    // table for Tutorial Close Link (23) 2nd class transfer [html]
    private static final String[][] TCL_B = { { "4", "tutorial_22aa.htm" }, { "7", "tutorial_22ba.htm" },
            { "11", "tutorial_22ca.htm" }, { "15", "tutorial_22da.htm" }, { "19", "tutorial_22ea.htm" },
            { "22", "tutorial_22fa.htm" }, { "26", "tutorial_22ga.htm" }, { "32", "tutorial_22na.htm" },
            { "35", "tutorial_22oa.htm" }, { "39", "tutorial_22pa.htm" }, { "50", "tutorial_22ka.htm" } };

    // table for Tutorial Close Link (24) 2nd class transfer [html]
    private static final String[][] TCL_C = { { "4", "tutorial_22ab.htm" }, { "7", "tutorial_22bb.htm" },
            { "11", "tutorial_22cb.htm" }, { "15", "tutorial_22db.htm" }, { "19", "tutorial_22eb.htm" },
            { "22", "tutorial_22fb.htm" }, { "26", "tutorial_22gb.htm" }, { "32", "tutorial_22nb.htm" },
            { "35", "tutorial_22ob.htm" }, { "39", "tutorial_22pb.htm" }, { "50", "tutorial_22kb.htm" } };

    public Q00255_Tutorial(int questId, String name, String descr) {
        super(questId, name, descr);
    }

    @Override
    public final String onAdvEvent(String event, L2Npc npc, L2PcInstance player) {
        if (Config.DISABLE_TUTORIAL) {
            return "";
        }

        QuestState st = player.getQuestState(getName());
        String htmltext = "";
        final int classId = player.getClassId().getId();
        final int playerLevel = player.getLevel();
        final int Ex = st.getInt("Ex");

        if (event.startsWith("UC")) {
            if ((playerLevel < 6) && (st.getInt("onlyone") == 0)) {
                final int uc = st.getInt("ucMemo");

                switch (uc) {
                case 0:
                    st.set("ucMemo", "0");
                    st.startQuestTimer("QT", 10000);
                    st.set("ucMemo", "0");
                    st.set("Ex", "-2");
                    break;
                case 1:
                    st.showQuestionMark(1);
                    st.playTutorialVoice("tutorial_voice_006");
                    st.playSound("ItemSound.quest_tutorial");
                    break;
                case 2:
                    if (Ex == 2) {
                        st.showQuestionMark(3);
                        st.playSound("ItemSound.quest_tutorial");
                    }

                    if (st.getQuestItemsCount(6353) == 1) {
                        st.showQuestionMark(5);
                        st.playSound("ItemSound.quest_tutorial");
                    }
                    break;
                case 3:
                    st.showQuestionMark(12);
                    st.playSound("ItemSound.quest_tutorial");
                    st.onTutorialClientEvent(0);
                    break;
                default:
                    break;
                }
            } else {
                switch (playerLevel) {
                case 18:
                    if (player.getQuestState("Q10276_MutatedKaneusGludio") == null) {
                        st.showQuestionMark(33);
                        st.playSound("ItemSound.quest_tutorial");
                    }
                    break;
                case 28:
                    if (((player.getQuestState("Q10277_MutatedKaneusDion") == null)
                            || (player.getQuestState("Q10278_MutatedKaneusHeine") == null))
                            || (player.getQuestState("Q10279_MutatedKaneusOren") == null)
                            || (player.getQuestState("Q10280_MutatedKaneusSchuttgart") == null)
                            || (player.getQuestState("Q10281_MutatedKaneusRune") == null)) {
                        st.showQuestionMark(33);
                        st.playSound("ItemSound.quest_tutorial");
                    }
                    break;
                case 79:
                    if (player.getQuestState("Q00192_SevenSignSeriesOfDoubt") == null) {
                        st.showQuestionMark(33);
                        st.playSound("ItemSound.quest_tutorial");
                    }
                    break;
                }
            }
        } else if (event.startsWith("QT")) {
            switch (Ex) {
            case -2:
                String voice = "";
                for (String[] element : QTEXMTWO) {
                    if (classId == Integer.valueOf(element[0])) {
                        voice = element[1];
                        htmltext = element[2];
                    }
                    st.playTutorialVoice(voice);
                }
                if (st.getQuestItemsCount(5588) == 0) {
                    st.giveItems(5588, 1);
                }
                st.set("Ex", "-3");
                st.startQuestTimer("QT", 30000);
                break;
            case -3:
                st.playTutorialVoice("tutorial_voice_002");
                st.set("Ex", "0");
                break;
            case -4:
                st.playTutorialVoice("tutorial_voice_008");
                st.set("Ex", "-5");
                break;
            }
        } else if (event.startsWith("TE")) {
            final int eventId = Integer.valueOf(event.substring(2));

            switch (eventId) {
            case 0:
                st.closeTutorialHtml();
                break;
            case 1:
                st.closeTutorialHtml();
                st.playTutorialVoice("tutorial_voice_006");
                st.showQuestionMark(1);
                st.playSound("ItemSound.quest_tutorial");
                st.startQuestTimer("QT", 30000);
                st.set("Ex", "-4");
                break;
            case 2:
                st.playTutorialVoice("tutorial_voice_003");
                htmltext = "tutorial_02.htm";
                st.onTutorialClientEvent(1);
                st.set("Ex", "-5");
                break;
            case 3:
                htmltext = "tutorial_03.htm";
                st.onTutorialClientEvent(2);
                break;
            case 5:
                htmltext = "tutorial_05.htm";
                st.onTutorialClientEvent(8);
                break;
            case 7:
                htmltext = "tutorial_100.htm";
                st.onTutorialClientEvent(0);
                break;
            case 8:
                htmltext = "tutorial_101.htm";
                st.onTutorialClientEvent(0);
                break;
            case 10:
                htmltext = "tutorial_103.htm";
                st.onTutorialClientEvent(0);
                break;
            case 12:
                st.closeTutorialHtml();
                break;
            case 23:
                for (String[] element : TCL_B) {
                    if (classId == Integer.valueOf(element[0])) {
                        htmltext = element[1];
                    }
                }
                break;
            case 24:
                for (String[] element : TCL_C) {
                    if (classId == Integer.valueOf(element[0])) {
                        htmltext = element[1];
                    }
                }
                break;
            case 25:
                htmltext = "tutorial_22cc.htm";
                break;
            case 26:
                for (String[] element : TCL_A) {
                    if (classId == Integer.valueOf(element[0])) {
                        htmltext = element[1];
                    }
                }
                break;
            case 27:
                htmltext = "tutorial_29.htm";
                break;
            case 28:
                htmltext = "tutorial_28.htm";
                break;
            }
        } else if (event.startsWith("CE")) {
            final int eventId = Integer.valueOf(event.substring(2));

            switch (eventId) {
            case 1:
                if (playerLevel < 6) {
                    st.playTutorialVoice("tutorial_voice_004");
                    htmltext = "tutorial_03.htm";
                    st.playSound("ItemSound.quest_tutorial");
                    st.onTutorialClientEvent(2);
                }
                break;
            case 2:
                if (playerLevel < 6) {
                    st.playTutorialVoice("tutorial_voice_005");
                    htmltext = "tutorial_05.htm";
                    st.playSound("ItemSound.quest_tutorial");
                    st.onTutorialClientEvent(8);
                }
                break;
            case 8:
                if (playerLevel < 6) {
                    int x = 0;
                    int y = 0;
                    int z = 0;
                    for (String[] element : CEE_A) {
                        if (classId == Integer.valueOf(element[0])) {
                            htmltext = element[1];
                            x = Integer.valueOf(element[2]);
                            y = Integer.valueOf(element[3]);
                            z = Integer.valueOf(element[4]);
                        }
                    }
                    st.addRadar(x, y, z);
                    st.playTutorialVoice("tutorial_voice_007");
                    st.set("ucMemo", "1");
                    st.set("Ex", "-5");
                }
                break;
            case 30:
                if ((playerLevel < 10) && (st.getInt("Die") == 0)) {
                    st.playTutorialVoice("tutorial_voice_016");
                    st.playSound("ItemSound.quest_tutorial");
                    st.set("Die", "1");
                    st.showQuestionMark(8);
                    st.onTutorialClientEvent(0);
                }
                break;
            case 800000:
                if ((playerLevel < 6) && (st.getInt("sit") == 0)) {
                    st.playTutorialVoice("tutorial_voice_018");
                    st.playSound("ItemSound.quest_tutorial");
                    st.set("sit", "1");
                    st.onTutorialClientEvent(0);
                    htmltext = "tutorial_21z.htm";
                }
                break;
            case 40:
                if ((playerLevel == 5) && (player.getClassId().level() == 0)) {
                    if (st.getInt("lvl") < 5) {
                        if (!player.getClassId().isMage() || (classId == 49)) {
                            st.playTutorialVoice("tutorial_voice_014");
                            st.showQuestionMark(9);
                            st.playSound("ItemSound.quest_tutorial");
                            st.set("lvl", "5");
                        }
                    }
                } else if ((playerLevel == 6) && (st.getInt("lvl") < 6) && (player.getClassId().level() == 0)) {
                    st.playTutorialVoice("tutorial_voice_020");
                    st.playSound("ItemSound.quest_tutorial");
                    st.showQuestionMark(24);
                    st.set("lvl", "6");
                } else if ((playerLevel == 7) && player.getClassId().isMage() && (classId != 49)) {
                    if ((st.getInt("lvl") < 7) && (player.getClassId().level() == 0)) {
                        st.playTutorialVoice("tutorial_voice_019");
                        st.playSound("ItemSound.quest_tutorial");
                        st.set("lvl", "7");
                        st.showQuestionMark(11);
                    }
                } else {
                    switch (playerLevel) {
                    case 10:
                        if (st.getInt("lvl") < 10) {
                            st.playTutorialVoice("tutorial_voice_030");
                            st.playSound("ItemSound.quest_tutorial");
                            st.set("lvl", "10");
                            st.showQuestionMark(27);
                        }
                        break;
                    case 15:
                        if (st.getInt("lvl") < 15) {
                            st.playSound("ItemSound.quest_tutorial");
                            st.set("lvl", "15");
                            st.showQuestionMark(17);
                        }
                        break;
                    case 18:
                        if (st.getInt("lvl") < 18) {
                            st.playSound("ItemSound.quest_tutorial");
                            st.set("lvl", "18");
                            st.showQuestionMark(33);
                        }
                        break;
                    case 19:
                        if (st.getInt("lvl") < 19) {
                            final int race = player.getRace().ordinal();
                            if ((race != 5) && (player.getClassId().level() == 0)) {
                                final int[] classIds = { 0, 10, 18, 25, 31, 38, 44, 49, 52 };
                                if (ArrayUtils.contains(classIds, classId)) {
                                    st.playSound("ItemSound.quest_tutorial");
                                    st.set("lvl", "19");
                                    st.showQuestionMark(35);
                                }
                            }
                        }
                        break;
                    case 28:
                        if (st.getInt("lvl") < 28) {
                            st.playSound("ItemSound.quest_tutorial");
                            st.set("lvl", "28");
                            st.showQuestionMark(33);
                        }
                        break;
                    case 35:
                        if (st.getInt("lvl") < 35) {
                            final int race = player.getRace().ordinal();
                            if ((race != 5) && (player.getClassId().level() == 1)) {
                                final int[] classIds = { 1, 4, 7, 11, 15, 19, 22, 26, 29, 32, 35, 39, 42, 45, 47,
                                        50, 54, 56 };
                                if (ArrayUtils.contains(classIds, classId)) {
                                    st.playSound("ItemSound.quest_tutorial");
                                    st.set("lvl", "35");
                                    st.showQuestionMark(34);
                                }
                            }
                        }
                        break;
                    case 38:
                        if (st.getInt("lvl") < 38) {
                            st.playSound("ItemSound.quest_tutorial");
                            st.set("lvl", "38");
                            st.showQuestionMark(33);
                        }
                        break;
                    case 48:
                        if (st.getInt("lvl") < 48) {
                            st.playSound("ItemSound.quest_tutorial");
                            st.set("lvl", "48");
                            st.showQuestionMark(33);
                        }
                        break;
                    case 58:
                        if (st.getInt("lvl") < 58) {
                            st.playSound("ItemSound.quest_tutorial");
                            st.set("lvl", "58");
                            st.showQuestionMark(33);
                        }
                        break;
                    case 68:
                        if (st.getInt("lvl") < 68) {
                            st.playSound("ItemSound.quest_tutorial");
                            st.set("lvl", "68");
                            st.showQuestionMark(33);
                        }
                        break;
                    case 79:
                        if (st.getInt("lvl") < 79) {
                            st.playSound("ItemSound.quest_tutorial");
                            st.set("lvl", "79");
                            st.showQuestionMark(33);
                        }
                        break;
                    }
                }
                break;
            case 45:
                if (playerLevel < 10) {
                    if (st.getInt("HP") == 0) {
                        st.playTutorialVoice("tutorial_voice_017");
                        st.playSound("ItemSound.quest_tutorial");
                        st.set("HP", "1");
                        st.showQuestionMark(10);
                        st.onTutorialClientEvent(800000);
                    }
                }
                break;
            case 57:
                if ((playerLevel < 6) && (st.getInt("Adena") == 0)) {
                    st.playTutorialVoice("tutorial_voice_012");
                    st.playSound("ItemSound.quest_tutorial");
                    st.set("Adena", "1");
                    st.showQuestionMark(23);
                }
                break;
            case 6353:
                if ((playerLevel < 6) && (st.getInt("Gemstone") == 0)) {
                    st.playTutorialVoice("tutorial_voice_013");
                    st.playSound("ItemSound.quest_tutorial");
                    st.set("Gemstone", "1");
                    st.showQuestionMark(5);
                }
                break;
            }
        } else if (event.startsWith("QM")) {
            final int eventId = Integer.valueOf(event.substring(2));

            int x = 0;
            int y = 0;
            int z = 0;

            switch (eventId) {

            case 1:
                st.playTutorialVoice("tutorial_voice_007");
                st.set("Ex", "-5");
                for (String[] element : CEE_A) {
                    if (classId == Integer.valueOf(element[0])) {
                        htmltext = element[1];
                        x = Integer.valueOf(element[2]);
                        y = Integer.valueOf(element[3]);
                        z = Integer.valueOf(element[4]);
                    }
                }
                st.addRadar(x, y, z);
                break;
            case 3:
                htmltext = "tutorial_09.htm";
                break;
            case 5:
                for (String[] element : CEE_A) {
                    if (classId == Integer.valueOf(element[0])) {
                        htmltext = element[1];
                        x = Integer.valueOf(element[2]);
                        y = Integer.valueOf(element[3]);
                        z = Integer.valueOf(element[4]);
                    }
                }
                st.addRadar(x, y, z);
                htmltext = "tutorial_11.htm";
                break;
            case 7:
                htmltext = "tutorial_15.htm";
                st.set("ucMemo", "3");
                break;
            case 8:
                htmltext = "tutorial_18.htm";
                break;
            case 9:
                for (String[] element : QMC_A) {
                    if (classId == Integer.valueOf(element[0])) {
                        htmltext = element[1];
                        x = Integer.valueOf(element[2]);
                        y = Integer.valueOf(element[3]);
                        z = Integer.valueOf(element[4]);
                    }
                }
                st.addRadar(x, y, z);
                break;
            case 10:
                htmltext = "tutorial_19.htm";
                break;
            case 11:
                for (String[] element : QMC_A) {
                    if (classId == Integer.valueOf(element[0])) {
                        htmltext = element[1];
                        x = Integer.valueOf(element[2]);
                        y = Integer.valueOf(element[3]);
                        z = Integer.valueOf(element[4]);
                    }
                }
                st.addRadar(x, y, z);
                break;
            case 12:
                htmltext = "tutorial_15.htm";
                st.set("ucMemo", "4");
                break;
            case 13:
                htmltext = "tutorial_30.htm";
                break;
            case 17:
                htmltext = "tutorial_27.htm";
                break;
            case 23:
                htmltext = "tutorial_24.htm";
                break;
            case 24:
                for (String[] element : QMC_B) {
                    if (classId == Integer.valueOf(element[0])) {
                        htmltext = element[1];
                    }
                }
                break;
            case 26:
                if (player.getClassId().isMage() && (classId != 49)) {
                    htmltext = "tutorial_newbie004b.htm";
                } else {
                    htmltext = "tutorial_newbie004a.htm";
                }
                break;
            case 27:
                htmltext = "tutorial_20.htm";
                break;
            case 33:
                switch (playerLevel) {
                case 18:
                    htmltext = "tutorial_kama_18.htm";
                    break;
                case 28:
                    htmltext = "tutorial_kama_28.htm";
                    break;
                case 38:
                    htmltext = "tutorial_kama_38.htm";
                    break;
                case 48:
                    htmltext = "tutorial_kama_48.htm";
                    break;
                case 58:
                    htmltext = "tutorial_kama_58.htm";
                    break;
                case 68:
                    htmltext = "tutorial_kama_68.htm";
                    break;
                case 79:
                    htmltext = "tutorial_epic_quest.htm";
                    break;
                }
                break;
            case 34:
                htmltext = "tutorial_28.htm";
                break;
            case 35:
                for (String[] element : QMC_C) {
                    if (classId == Integer.valueOf(element[0])) {
                        htmltext = element[1];
                    }
                }
                break;
            }
        }

        if (htmltext.isEmpty()) {
            return "";
        }

        st.showTutorialHTML(htmltext);

        return "";
    }

    public static void main(String[] args) {
        new Q00255_Tutorial(255, Q00255_Tutorial.class.getSimpleName(), "255_Tutorial");
    }
}