Merged with released L2J-Unity files.

This commit is contained in:
mobiusdev
2016-06-12 01:34:09 +00:00
parent e003e87887
commit 635557f5da
18352 changed files with 3245113 additions and 2892959 deletions

View File

@@ -1,73 +1,73 @@
/*
* This file is part of the L2J Mobius project.
*
* 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 village_master.Alliance;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.quest.Quest;
/**
* @author UnAfraid
*/
final class Alliance extends Quest
{
// @formatter:off
private static final int[] NPCS =
{
30026,30031,30037,30066,30070,30109,30115,30120,30154,30174,
30175,30176,30187,30191,30195,30288,30289,30290,30297,30358,
30373,30462,30474,30498,30499,30500,30503,30504,30505,30508,
30511,30512,30513,30520,30525,30565,30594,30595,30676,30677,
30681,30685,30687,30689,30694,30699,30704,30845,30847,30849,
30854,30857,30862,30865,30894,30897,30900,30905,30910,30913,
31269,31272,31276,31279,31285,31288,31314,31317,31321,31324,
31326,31328,31331,31334,31336,31755,31958,31961,31965,31968,
31974,31977,31996,32092,32093,32094,32095,32096,32097,32098,
32145,32146,32147,32150,32153,32154,32157,32158,32160,32171,
32193,32196,32199,32202,32205,32206,32209,32210,32213,32214,
32217,32218,32221,32222,32225,32226,32229,32230,32233,32234
};
// @formatter:on
private Alliance()
{
super(-1, Alliance.class.getSimpleName(), "village_master");
addStartNpc(NPCS);
addTalkId(NPCS);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
if (!"9001-01.htm".equals(event) && (player.getClan() == null))
{
return "9001-04.htm";
}
return event;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance talker)
{
return "9001-01.htm";
}
public static void main(String[] args)
{
new Alliance();
}
}
/*
* This file is part of the L2J Mobius project.
*
* 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 village_master.Alliance;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import ai.AbstractNpcAI;
/**
* @author UnAfraid
*/
public final class Alliance extends AbstractNpcAI
{
// @formatter:off
private static final int[] NPCS =
{
30026,30031,30037,30066,30070,30109,30115,30120,30154,30174,
30175,30176,30187,30191,30195,30288,30289,30290,30297,30358,
30373,30462,30474,30498,30499,30500,30503,30504,30505,30508,
30511,30512,30513,30520,30525,30565,30594,30595,30676,30677,
30681,30685,30687,30689,30694,30699,30704,30845,30847,30849,
30854,30857,30862,30865,30894,30897,30900,30905,30910,30913,
31269,31272,31276,31279,31285,31288,31314,31317,31321,31324,
31326,31328,31331,31334,31336,31755,31958,31961,31965,31968,
31974,31977,31996,32092,32093,32094,32095,32096,32097,32098,
32145,32146,32147,32150,32153,32154,32157,32158,32160,32171,
32193,32196,32199,32202,32205,32206,32209,32210,32213,32214,
32217,32218,32221,32222,32225,32226,32229,32230,32233,32234
};
// @formatter:on
private Alliance()
{
addStartNpc(NPCS);
addTalkId(NPCS);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
if (!"9001-01.htm".equals(event) && (player.getClan() == null))
{
return "9001-04.htm";
}
return event;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance talker)
{
return "9001-01.htm";
}
public static void main(String[] args)
{
new Alliance();
}
}

View File

@@ -1,91 +1,94 @@
/*
* This file is part of the L2J Mobius project.
*
* 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 village_master.Clan;
import java.util.HashMap;
import java.util.Map;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.quest.Quest;
/**
* @author UnAfraid
*/
final class Clan extends Quest
{
// @formatter:off
private static final int[] NPCS =
{
30026,30031,30037,30066,30070,30109,30115,30120,30154,30174,
30175,30176,30187,30191,30195,30288,30289,30290,30297,30358,
30373,30462,30474,30498,30499,30500,30503,30504,30505,30508,
30511,30512,30513,30520,30525,30565,30594,30595,30676,30677,
30681,30685,30687,30689,30694,30699,30704,30845,30847,30849,
30854,30857,30862,30865,30894,30897,30900,30905,30910,30913,
31269,31272,31276,31279,31285,31288,31314,31317,31321,31324,
31326,31328,31331,31334,31336,31755,31958,31961,31965,31968,
31974,31977,31996,32092,32093,32094,32095,32096,32097,32098,
32145,32146,32147,32150,32153,32154,32157,32158,32160,32171,
32193,32196,32199,32202,32205,32206,32209,32210,32213,32214,
32217,32218,32221,32222,32225,32226,32229,32230,32233,32234
};
// @formatter:on
private static final Map<String, String> LEADER_REQUIRED = new HashMap<>();
static
{
LEADER_REQUIRED.put("9000-03.htm", "9000-03-no.htm");
LEADER_REQUIRED.put("9000-04.htm", "9000-04-no.htm");
LEADER_REQUIRED.put("9000-05.htm", "9000-05-no.htm");
LEADER_REQUIRED.put("9000-07.htm", "9000-07-no.htm");
LEADER_REQUIRED.put("9000-12a.htm", "9000-07-no.htm");
LEADER_REQUIRED.put("9000-12b.htm", "9000-07-no.htm");
LEADER_REQUIRED.put("9000-13a.htm", "9000-07-no.htm");
LEADER_REQUIRED.put("9000-13b.htm", "9000-07-no.htm");
LEADER_REQUIRED.put("9000-14a.htm", "9000-07-no.htm");
LEADER_REQUIRED.put("9000-14b.htm", "9000-07-no.htm");
LEADER_REQUIRED.put("9000-15.htm", "9000-07-no.htm");
}
private Clan()
{
super(-1, Clan.class.getSimpleName(), "village_master");
addStartNpc(NPCS);
addTalkId(NPCS);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
if (LEADER_REQUIRED.containsKey(event) && !player.isClanLeader())
{
return LEADER_REQUIRED.get(event);
}
return event;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance talker)
{
return "9000-01.htm";
}
public static void main(String[] args)
{
new Clan();
}
}
/*
* This file is part of the L2J Mobius project.
*
* 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 village_master.Clan;
import java.util.HashMap;
import java.util.Map;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import ai.AbstractNpcAI;
/**
* @author UnAfraid
*/
public final class Clan extends AbstractNpcAI
{
// @formatter:off
private static final int[] NPCS =
{
30026,30031,30037,30066,30070,30109,30115,30120,30154,30174,
30175,30176,30187,30191,30195,30288,30289,30290,30297,30358,
30373,30462,30474,30498,30499,30500,30503,30504,30505,30508,
30511,30512,30513,30520,30525,30565,30594,30595,30676,30677,
30681,30685,30687,30689,30694,30699,30704,30845,30847,30849,
30854,30857,30862,30865,30894,30897,30900,30905,30910,30913,
31269,31272,31276,31279,31285,31288,31314,31317,31321,31324,
31326,31328,31331,31334,31336,31755,31958,31961,31965,31968,
31974,31977,31996,32092,32093,32094,32095,32096,32097,32098,
32145,32146,32147,32150,32153,32154,32157,32158,32160,32171,
32193,32196,32199,32202,32205,32206,32209,32210,32213,32214,
32217,32218,32221,32222,32225,32226,32229,32230,32233,32234
};
// @formatter:on
private static final Map<String, String> LEADER_REQUIRED = new HashMap<>();
static
{
LEADER_REQUIRED.put("9000-03.htm", "9000-03-no.htm");
LEADER_REQUIRED.put("9000-04.htm", "9000-04-no.htm");
LEADER_REQUIRED.put("9000-05.htm", "9000-05-no.htm");
LEADER_REQUIRED.put("9000-07.htm", "9000-07-no.htm");
LEADER_REQUIRED.put("9000-12a.htm", "9000-07-no.htm");
LEADER_REQUIRED.put("9000-12b.htm", "9000-07-no.htm");
LEADER_REQUIRED.put("9000-13a.htm", "9000-07-no.htm");
LEADER_REQUIRED.put("9000-13b.htm", "9000-07-no.htm");
LEADER_REQUIRED.put("9000-14a.htm", "9000-07-no.htm");
LEADER_REQUIRED.put("9000-14b.htm", "9000-07-no.htm");
LEADER_REQUIRED.put("9000-15.htm", "9000-07-no.htm");
}
private Clan()
{
addStartNpc(NPCS);
addTalkId(NPCS);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
if (LEADER_REQUIRED.containsKey(event))
{
if (!player.isClanLeader())
{
return LEADER_REQUIRED.get(event);
}
}
return event;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance talker)
{
return "9000-01.htm";
}
public static void main(String[] args)
{
new Clan();
}
}

View File

@@ -1,75 +1,75 @@
/*
* This file is part of the L2J Mobius project.
*
* 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 village_master.ProofOfCourage;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.l2jmobius.gameserver.data.xml.impl.MultisellData;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.base.ClassId;
import ai.AbstractNpcAI;
/**
* Proof Of Courage implementation.
* @author St3eT
*/
final class ProofOfCourage extends AbstractNpcAI
{
// Misc
private static final Map<Integer, List<ClassId>> CLASSLIST = new HashMap<>();
static
{
CLASSLIST.put(32146, Arrays.asList(ClassId.TROOPER, ClassId.WARDER));
CLASSLIST.put(32147, Arrays.asList(ClassId.ELVEN_KNIGHT, ClassId.ELVEN_SCOUT, ClassId.ELVEN_WIZARD, ClassId.ORACLE));
CLASSLIST.put(32150, Arrays.asList(ClassId.ORC_RAIDER, ClassId.ORC_MONK));
CLASSLIST.put(32153, Arrays.asList(ClassId.WARRIOR, ClassId.KNIGHT, ClassId.ROGUE, ClassId.WIZARD, ClassId.CLERIC));
CLASSLIST.put(32157, Arrays.asList(ClassId.SCAVENGER, ClassId.ARTISAN));
CLASSLIST.put(32160, Arrays.asList(ClassId.PALUS_KNIGHT, ClassId.ASSASSIN, ClassId.DARK_WIZARD, ClassId.SHILLIEN_ORACLE));
}
private ProofOfCourage()
{
super(ProofOfCourage.class.getSimpleName(), "village_master");
addStartNpc(CLASSLIST.keySet());
addTalkId(CLASSLIST.keySet());
}
@Override
public String onTalk(L2Npc npc, L2PcInstance talker)
{
if (talker.getClassId().level() == 0)
{
return npc.getId() + "-noclass.html";
}
if (!CLASSLIST.get(npc.getId()).contains(talker.getClassId()))
{
return npc.getId() + "-no.html";
}
MultisellData.getInstance().separateAndSend(717, talker, npc, false);
return super.onTalk(npc, talker);
}
public static void main(String[] args)
{
new ProofOfCourage();
}
/*
* This file is part of the L2J Mobius project.
*
* 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 village_master.ProofOfCourage;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.l2jmobius.gameserver.data.xml.impl.MultisellData;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.base.ClassId;
import ai.AbstractNpcAI;
/**
* Proof Of Courage implementation.
* @author St3eT
*/
public final class ProofOfCourage extends AbstractNpcAI
{
// Misc
private static final Map<Integer, List<ClassId>> CLASSLIST = new HashMap<>();
static
{
CLASSLIST.put(32146, Arrays.asList(ClassId.TROOPER, ClassId.WARDER));
CLASSLIST.put(32147, Arrays.asList(ClassId.ELVEN_KNIGHT, ClassId.ELVEN_SCOUT, ClassId.ELVEN_WIZARD, ClassId.ORACLE));
CLASSLIST.put(32150, Arrays.asList(ClassId.ORC_RAIDER, ClassId.ORC_MONK));
CLASSLIST.put(32153, Arrays.asList(ClassId.WARRIOR, ClassId.KNIGHT, ClassId.ROGUE, ClassId.WIZARD, ClassId.CLERIC));
CLASSLIST.put(32157, Arrays.asList(ClassId.SCAVENGER, ClassId.ARTISAN));
CLASSLIST.put(32160, Arrays.asList(ClassId.PALUS_KNIGHT, ClassId.ASSASSIN, ClassId.DARK_WIZARD, ClassId.SHILLIEN_ORACLE));
}
private ProofOfCourage()
{
addStartNpc(CLASSLIST.keySet());
addTalkId(CLASSLIST.keySet());
}
@Override
public String onTalk(L2Npc npc, L2PcInstance talker)
{
if (talker.getClassId().level() == 0)
{
return npc.getId() + "-noclass.html";
}
else if (!CLASSLIST.get(npc.getId()).contains(talker.getClassId()))
{
return npc.getId() + "-no.html";
}
MultisellData.getInstance().separateAndSend(717, talker, npc, false);
return super.onTalk(npc, talker);
}
public static void main(String[] args)
{
new ProofOfCourage();
}
}

View File

@@ -1,3 +1,3 @@
<html><head><body>Grand Master Ellenia:<br>
I am chared to educate the <font color="LEVEL">Temple Knights, Swordsinger, Plainswalker, and Silver Ranger</font> wo are of Elfish descent, and who have completed the second class transfer. I can not help you. Go find your master.
<html><head><body>Grand Master Ellenia:<br>
I am chared to educate the <font color="LEVEL">Temple Knights, Swordsinger, Plainswalker, and Silver Ranger</font> wo are of Elfish descent, and who have completed the second class transfer. I can not help you. Go find your master.
</body></html>

View File

@@ -1,4 +1,4 @@
<html><head><body>Grand Master Elenia:<br>
Is there something you want to tell me? <br>
(This function is only for characters who have completed the 2nd Class Transfer through the Proof of Destiny quest.)
<html><head><body>Grand Master Elenia:<br>
Is there something you want to tell me? <br>
(This function is only for characters who have completed the 2nd Class Transfer through the Proof of Destiny quest.)
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Grand Master Elenia:<br>
You've already exchanged everything.<br>
(You don't have any exchangeable Certificates of Justice.)
</body></html>

View File

@@ -1,3 +1,3 @@
<html><head><body>Grand Magister Esrandell:<br>
I educate <font color="LEVEL">Spell Singers, Elemental Summoners, and Elders</font> who have completed the second class transfer, and who are of the elfish race. Go now, find your own master.
<html><head><body>Grand Magister Esrandell:<br>
I educate <font color="LEVEL">Spell Singers, Elemental Summoners, and Elders</font> who have completed the second class transfer, and who are of the elfish race. Go now, find your own master.
</body></html>

View File

@@ -1,4 +1,4 @@
<html><head><body>Grand Magister Esrandel:<br>
Keep up your training! <br>
(This is only available to characters who have completed the 2nd Class Transfer through the Proof of Destiny quest.)
<html><head><body>Grand Magister Esrandel:<br>
Keep up your training! <br>
(This is only available to characters who have completed the 2nd Class Transfer through the Proof of Destiny quest.)
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Grand Magister Esrandell:<br>
It looks like you have already exchanged everything!<br>
(You don't have any exchangeable Certificate of Justice.)
</body></html>

View File

@@ -1,4 +1,4 @@
<head><body>Grand Master Rains:<br>
I train human <font color="LEVEL">Gladiators, Warlords, Paladins, Dark Avengers, Treasure Hunters, and Hawkeyes</font> who have completed the second class transfer.<br1>
You should see your master.
<head><body>Grand Master Rains:<br>
I train human <font color="LEVEL">Gladiators, Warlords, Paladins, Dark Avengers, Treasure Hunters, and Hawkeyes</font> who have completed the second class transfer.<br1>
You should see your master.
</body></html>

View File

@@ -1,4 +1,4 @@
<html><head><body>Grand Master Rains:<br>
Never neglect your training. <br>
(This is a function only available for characters who have completed the 2nd Class Transfer through the Proof of Destiny quest.)
<html><head><body>Grand Master Rains:<br>
Never neglect your training. <br>
(This is a function only available for characters who have completed the 2nd Class Transfer through the Proof of Destiny quest.)
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Grand Master Rains:<br>
It looks like you have already exchanged everything!<br>
(You don't have any exchangeable Certificate of Justice.)
</body></html>

View File

@@ -1,3 +1,3 @@
<html><head><body>Bishop Raymond:<br>
Sorry, I am not the master you're looking for. I only teach human <font color="LEVEL">Sorcerers, Necromancers, Warlocks, Bishops, and Prophets</font> who've completed a second class transfer.
<html><head><body>Bishop Raymond:<br>
Sorry, I am not the master you're looking for. I only teach human <font color="LEVEL">Sorcerers, Necromancers, Warlocks, Bishops, and Prophets</font> who've completed a second class transfer.
</body></html>

View File

@@ -1,4 +1,4 @@
<html><head><body>High Priest Raymond:<br>
I'm sorry, I think you have the wrong person. <br>
(This is only available to characters who have completed their 2nd Class Transfer through the Proof of Destiny quest.)
<html><head><body>High Priest Raymond:<br>
I'm sorry, I think you have the wrong person. <br>
(This is only available to characters who have completed their 2nd Class Transfer through the Proof of Destiny quest.)
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>High Priest Raymond:<br>
Looks like you've exchanged them all.<br>
(You don't have any exchangeable Certificates of Justice.)
</body></html>

View File

@@ -1,3 +1,3 @@
<html><head><body>Grand Master Tobias:<br>
I train Dark Elves who have completed the second class transfer. In other words, I educate <font color="LEVEL">Shillien Knights, Blade Dancers, Abyss Walkers, Phantom Rangers, Spellhowlers, Phantom Summoners, and Shillien Elders</font>. Please go to see your master.
<html><head><body>Grand Master Tobias:<br>
I train Dark Elves who have completed the second class transfer. In other words, I educate <font color="LEVEL">Shillien Knights, Blade Dancers, Abyss Walkers, Phantom Rangers, Spellhowlers, Phantom Summoners, and Shillien Elders</font>. Please go to see your master.
</body></html>

View File

@@ -1,4 +1,4 @@
<html><head><body>Grand Master Tobias:<br>
Do you have more to tell me? <br>
(This is a function only available for characters who have completed the 2nd Class Transfer through the Proof of Destiny quest.)
<html><head><body>Grand Master Tobias:<br>
Do you have more to tell me? <br>
(This is a function only available for characters who have completed the 2nd Class Transfer through the Proof of Destiny quest.)
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Grand Master Tobias:<br>
You have already exchanged them all!<br>
(You don't have any exchangeable Certificate of Justice.)
</body></html>

View File

@@ -1,3 +1,3 @@
<html><head><body>Head Blacksmith Mendio:<br>
I'm a dwarf who has had the honor to complete the second class change. In other words, I educate only <font color="LEVEL">Bounty Hunters and Warsmiths</font>. I am sorry. You must find your own master.
<html><head><body>Head Blacksmith Mendio:<br>
I'm a dwarf who has had the honor to complete the second class change. In other words, I educate only <font color="LEVEL">Bounty Hunters and Warsmiths</font>. I am sorry. You must find your own master.
</body></html>

View File

@@ -1,4 +1,4 @@
<html><head><body>Head Blacksmith Mendio:<br>
Do you have something to say? <br>
(This feature can only be fulfilled by a character who has completed 2nd class transfer via Certification of Fate.)
<html><head><body>Head Blacksmith Mendio:<br>
Do you have something to say? <br>
(This feature can only be fulfilled by a character who has completed 2nd class transfer via Certification of Fate.)
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Head Blacksmith Mendio:<br>
Greedy, greedy! You've already exchanged everything.<br>
(There is no Certificate of Justice for exchange.)
</body></html>

View File

@@ -1,3 +1,3 @@
<html><head><body>High Prefect Drikus:<br>
I train Orcs who have completed the second class transfer. I educate only <font color="LEVEL">Destroyers, Tyrants, Overlords, and Warcryers</font>. Please find your own master.
<html><head><body>High Prefect Drikus:<br>
I train Orcs who have completed the second class transfer. I educate only <font color="LEVEL">Destroyers, Tyrants, Overlords, and Warcryers</font>. Please find your own master.
</body></html>

View File

@@ -1,4 +1,4 @@
<html><head><body>High Prefect Drikus:<br>
Yes? What is it? <br>
(This quest can only be fulfilled by characters who have completed the 2nd class transfer via Certification of Fate.)
<html><head><body>High Prefect Drikus:<br>
Yes? What is it? <br>
(This quest can only be fulfilled by characters who have completed the 2nd class transfer via Certification of Fate.)
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>High Prefect Drikus:<br>
You have already exchanged everything. Did you forget?<br>
(There is no Certificate of Justice for exchange.)
</body></html>

View File

@@ -1,3 +1,3 @@
<html><head><body>Grand Master Gershwin:<br>
I train only those Kamael who have completed their second class transfer. In other words, I educate <font color="LEVEL">Beserkers, Soul Breakers, and Arbalesters</font>. You should seek out a master who can help you.
<html><head><body>Grand Master Gershwin:<br>
I train only those Kamael who have completed their second class transfer. In other words, I educate <font color="LEVEL">Beserkers, Soul Breakers, and Arbalesters</font>. You should seek out a master who can help you.
</body></html>

View File

@@ -1,4 +1,4 @@
<html><head><body>Grand Master Gershwin:<br>
Please do not neglect your training. <br>
(This function is only available to characters who have completed the 2nd Class Transfer through the Proof of Destiny quest.)
<html><head><body>Grand Master Gershwin:<br>
Please do not neglect your training. <br>
(This function is only available to characters who have completed the 2nd Class Transfer through the Proof of Destiny quest.)
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Grand Master Gershwin<br>
You have nothing to exchange.<br>
(You don't have any exchangeable Certificates of Justice.)
</body></html>

View File

@@ -1,77 +1,83 @@
/*
* This file is part of the L2J Mobius project.
*
* 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 village_master.ProofOfJustice;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.l2jmobius.gameserver.data.xml.impl.MultisellData;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.base.ClassId;
import ai.AbstractNpcAI;
/**
* Proof Of Justice implementation.
* @author St3eT
*/
final class ProofOfJustice extends AbstractNpcAI
{
// Misc
private static final Map<Integer, List<ClassId>> CLASSLIST = new HashMap<>();
static
{
CLASSLIST.put(30505, Arrays.asList(ClassId.DESTROYER, ClassId.TYRANT, ClassId.OVERLORD, ClassId.WARCRYER));
CLASSLIST.put(30504, Arrays.asList(ClassId.BOUNTY_HUNTER, ClassId.WARSMITH));
CLASSLIST.put(30288, Arrays.asList(ClassId.GLADIATOR, ClassId.WARLORD, ClassId.PALADIN, ClassId.DARK_AVENGER, ClassId.TREASURE_HUNTER, ClassId.HAWKEYE));
CLASSLIST.put(30297, Arrays.asList(ClassId.SHILLIEN_KNIGHT, ClassId.BLADEDANCER, ClassId.ABYSS_WALKER, ClassId.PHANTOM_RANGER, ClassId.SPELLHOWLER, ClassId.PHANTOM_SUMMONER, ClassId.SHILLIEN_ELDER));
CLASSLIST.put(30158, Arrays.asList(ClassId.SPELLSINGER, ClassId.ELEMENTAL_SUMMONER, ClassId.ELDER));
CLASSLIST.put(30155, Arrays.asList(ClassId.TEMPLE_KNIGHT, ClassId.SWORDSINGER, ClassId.PLAINS_WALKER, ClassId.SILVER_RANGER));
CLASSLIST.put(30289, Arrays.asList(ClassId.SORCERER, ClassId.NECROMANCER, ClassId.WARLOCK, ClassId.BISHOP, ClassId.PROPHET));
CLASSLIST.put(32196, Arrays.asList(ClassId.BERSERKER, ClassId.MALE_SOULBREAKER, ClassId.FEMALE_SOULBREAKER, ClassId.ARBALESTER));
}
private ProofOfJustice()
{
super(ProofOfJustice.class.getSimpleName(), "village_master");
addStartNpc(CLASSLIST.keySet());
addTalkId(CLASSLIST.keySet());
}
@Override
public String onTalk(L2Npc npc, L2PcInstance talker)
{
if (talker.getClassId().level() < 2)
{
return npc.getId() + "-noclass.html";
}
if (!CLASSLIST.get(npc.getId()).contains(talker.getClassId()))
{
return npc.getId() + "-no.html";
}
MultisellData.getInstance().separateAndSend(718, talker, npc, false);
return super.onTalk(npc, talker);
}
public static void main(String[] args)
{
new ProofOfJustice();
}
/*
* This file is part of the L2J Mobius project.
*
* 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 village_master.ProofOfJustice;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.l2jmobius.gameserver.data.xml.impl.MultisellData;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.base.ClassId;
import ai.AbstractNpcAI;
/**
* Proof Of Justice implementation.
* @author St3eT
*/
public final class ProofOfJustice extends AbstractNpcAI
{
// Items
private static final int JUSTICE = 17822; // Proof of Justice
// Misc
private static final Map<Integer, List<ClassId>> CLASSLIST = new HashMap<>();
static
{
CLASSLIST.put(30505, Arrays.asList(ClassId.DESTROYER, ClassId.TYRANT, ClassId.OVERLORD, ClassId.WARCRYER));
CLASSLIST.put(30504, Arrays.asList(ClassId.BOUNTY_HUNTER, ClassId.WARSMITH));
CLASSLIST.put(30288, Arrays.asList(ClassId.GLADIATOR, ClassId.WARLORD, ClassId.PALADIN, ClassId.DARK_AVENGER, ClassId.TREASURE_HUNTER, ClassId.HAWKEYE));
CLASSLIST.put(30297, Arrays.asList(ClassId.SHILLIEN_KNIGHT, ClassId.BLADEDANCER, ClassId.ABYSS_WALKER, ClassId.PHANTOM_RANGER, ClassId.SPELLHOWLER, ClassId.PHANTOM_SUMMONER, ClassId.SHILLIEN_ELDER));
CLASSLIST.put(30158, Arrays.asList(ClassId.SPELLSINGER, ClassId.ELEMENTAL_SUMMONER, ClassId.ELDER));
CLASSLIST.put(30155, Arrays.asList(ClassId.TEMPLE_KNIGHT, ClassId.SWORDSINGER, ClassId.PLAINS_WALKER, ClassId.SILVER_RANGER));
CLASSLIST.put(30289, Arrays.asList(ClassId.SORCERER, ClassId.NECROMANCER, ClassId.WARLOCK, ClassId.BISHOP, ClassId.PROPHET));
CLASSLIST.put(32196, Arrays.asList(ClassId.BERSERKER, ClassId.MALE_SOULBREAKER, ClassId.FEMALE_SOULBREAKER, ClassId.ARBALESTER));
}
private ProofOfJustice()
{
addStartNpc(CLASSLIST.keySet());
addTalkId(CLASSLIST.keySet());
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
if (player.getClassId().level() < 2)
{
return npc.getId() + "-noclass.html";
}
else if (!hasAtLeastOneQuestItem(player, JUSTICE))
{
return npc.getId() + "-noitem.html";
}
else if (!CLASSLIST.get(npc.getId()).contains(player.getClassId()))
{
return npc.getId() + "-no.html";
}
MultisellData.getInstance().separateAndSend(718, player, npc, false);
return super.onTalk(npc, player);
}
public static void main(String[] args)
{
new ProofOfJustice();
}
}

View File

@@ -0,0 +1,11 @@
Scripts defined in the village_master folder control the AI for the dialogs of village masters.
In particular, changing occupations, creating/disolving a clan, and many more options given by
village masters often require additional checks. All such checks are implemented here.
For example, when a player attempts to change his occupation to SpellSinger, checks are needed
in order to ensure that the player is currently an Elven Wizard and has successfully found all
the necessary quest items for this class change. The dialogs offered are different when each of
the checks fails or succeeds.
The mechanics and syntax of all village_master scripts are the same as all quest scripts. For more
details, please see "scripts/quests/documentation.txt"