Config to upgrade sub-class to dualclass from Raina without finish Split Destiny.

This commit is contained in:
MobiusDev 2017-11-18 01:29:17 +00:00
parent 5e29939692
commit c6b7ca7b68
20 changed files with 280 additions and 0 deletions

View File

@ -163,6 +163,10 @@ DivineInspirationSpBookNeeded = True
# Default: False
AltSubClassWithoutQuests = False
# Allow player to upgrade sub-class to dualclass from Raina without finish Split Destiny quest.
# Default: False
AltDualClassWithoutQuest = False
# Allow player to learn transformations without quest.
# Default: False
AltTransformationWithoutQuest = False

View File

@ -51,6 +51,8 @@ import com.l2jmobius.gameserver.network.SystemMessageId;
import com.l2jmobius.gameserver.network.serverpackets.AcquireSkillList;
import com.l2jmobius.gameserver.network.serverpackets.ExSubjobInfo;
import com.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage;
import com.l2jmobius.gameserver.network.serverpackets.SocialAction;
import com.l2jmobius.gameserver.network.serverpackets.SystemMessage;
import ai.AbstractNpcAI;
import quests.Q10385_RedThreadOfFate.Q10385_RedThreadOfFate;
@ -419,6 +421,42 @@ public final class Raina extends AbstractNpcAI
player.sendPacket(html);
break;
}
case "upgradeSubClassToDualClass":
{
if (player.isTransformed())
{
htmltext = "noTransform.html";
}
else if (player.hasSummon())
{
htmltext = "noSummon.html";
}
else if (player.getRace() == Race.ERTHEIA)
{
htmltext = "noErtheia.html";
}
else if (!player.isInventoryUnder90(true) || (player.getWeightPenalty() >= 2))
{
htmltext = "inventoryLimit.html";
}
else if (player.hasDualClass() || !player.isSubClassActive() || (player.getLevel() < 80))
{
htmltext = "addDualClassWithoutQuestFailed.html";
}
else
{
player.getSubClasses().get(player.getClassIndex()).setIsDualClass(true);
final SystemMessage msg = SystemMessage.getSystemMessage(SystemMessageId.SUBCLASS_S1_HAS_BEEN_UPGRADED_TO_DUEL_CLASS_S2_CONGRATULATIONS);
msg.addClassId(player.getClassId().getId());
msg.addClassId(player.getClassId().getId());
player.sendPacket(msg);
player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED));
player.broadcastSocialAction(SocialAction.LEVEL_UP);
}
break;
}
}
return htmltext;
}
@ -837,6 +875,16 @@ public final class Raina extends AbstractNpcAI
return subclasses;
}
@Override
public String onFirstTalk(L2Npc npc, L2PcInstance player)
{
if (Config.ALT_GAME_DUALCLASS_WITHOUT_QUEST)
{
return "addDualClassWithoutQuest.html";
}
return "33491.html";
}
private NpcHtmlMessage getNpcHtmlMessage(L2PcInstance player, L2Npc npc, String fileName)
{
final NpcHtmlMessage html = new NpcHtmlMessage(npc.getObjectId());

View File

@ -0,0 +1,11 @@
<html><body>Subclass/Dual Class Master Raina:<br>
Hello!<br1>
You have a question about subclass or dual class?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Raina 33491-01.html">"Yeah. How do I create or reset a subclass?"</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Raina upgradeSubClassToDualClass">"Upgrade my subclass to a dual class."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Raina 33491-02.html">"I want to add a dual class." (for Ertheia only)</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Raina 33491-03.html">"Can I reawaken my Awakened dual class?"</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Raina 33491-04.html">"So...what are the items for dual classes?" </Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Raina 33491-05.html">"What's with these XP Bottles?"</Button>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Subclass/Dual Class Master Raina:<br><br>
You do not meet the conditions to add a dual class.<br>
Come back when you're ready, or ask for something else.<br>
(Only characters with a subclass of Lv. 80 or above may change it to a dual class once.)
</body></html>

View File

@ -175,6 +175,7 @@ public final class Config
public static boolean ES_SP_BOOK_NEEDED;
public static boolean DIVINE_SP_BOOK_NEEDED;
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
public static boolean ALT_GAME_DUALCLASS_WITHOUT_QUEST;
public static boolean ALLOW_TRANSFORM_WITHOUT_QUEST;
public static int FEE_DELETE_TRANSFER_SKILLS;
public static int FEE_DELETE_SUBCLASS_SKILLS;
@ -1507,6 +1508,7 @@ public final class Config
ES_SP_BOOK_NEEDED = Character.getBoolean("EnchantSkillSpBookNeeded", true);
DIVINE_SP_BOOK_NEEDED = Character.getBoolean("DivineInspirationSpBookNeeded", true);
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = Character.getBoolean("AltSubClassWithoutQuests", false);
ALT_GAME_DUALCLASS_WITHOUT_QUEST = Character.getBoolean("AltDualClassWithoutQuest", false);
RESTORE_SERVITOR_ON_RECONNECT = Character.getBoolean("RestoreServitorOnReconnect", true);
RESTORE_PET_ON_RECONNECT = Character.getBoolean("RestorePetOnReconnect", true);
ALLOW_TRANSFORM_WITHOUT_QUEST = Character.getBoolean("AltTransformationWithoutQuest", false);

View File

@ -163,6 +163,10 @@ DivineInspirationSpBookNeeded = True
# Default: False
AltSubClassWithoutQuests = False
# Allow player to upgrade sub-class to dualclass from Raina without finish Split Destiny quest.
# Default: False
AltDualClassWithoutQuest = False
# Allow player to learn transformations without quest.
# Default: False
AltTransformationWithoutQuest = False

View File

@ -51,6 +51,8 @@ import com.l2jmobius.gameserver.network.SystemMessageId;
import com.l2jmobius.gameserver.network.serverpackets.AcquireSkillList;
import com.l2jmobius.gameserver.network.serverpackets.ExSubjobInfo;
import com.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage;
import com.l2jmobius.gameserver.network.serverpackets.SocialAction;
import com.l2jmobius.gameserver.network.serverpackets.SystemMessage;
import ai.AbstractNpcAI;
import quests.Q10385_RedThreadOfFate.Q10385_RedThreadOfFate;
@ -419,6 +421,42 @@ public final class Raina extends AbstractNpcAI
player.sendPacket(html);
break;
}
case "upgradeSubClassToDualClass":
{
if (player.isTransformed())
{
htmltext = "noTransform.html";
}
else if (player.hasSummon())
{
htmltext = "noSummon.html";
}
else if (player.getRace() == Race.ERTHEIA)
{
htmltext = "noErtheia.html";
}
else if (!player.isInventoryUnder90(true) || (player.getWeightPenalty() >= 2))
{
htmltext = "inventoryLimit.html";
}
else if (player.hasDualClass() || !player.isSubClassActive() || (player.getLevel() < 80))
{
htmltext = "addDualClassWithoutQuestFailed.html";
}
else
{
player.getSubClasses().get(player.getClassIndex()).setIsDualClass(true);
final SystemMessage msg = SystemMessage.getSystemMessage(SystemMessageId.SUBCLASS_S1_HAS_BEEN_UPGRADED_TO_DUEL_CLASS_S2_CONGRATULATIONS);
msg.addClassId(player.getClassId().getId());
msg.addClassId(player.getClassId().getId());
player.sendPacket(msg);
player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED));
player.broadcastSocialAction(SocialAction.LEVEL_UP);
}
break;
}
}
return htmltext;
}
@ -837,6 +875,16 @@ public final class Raina extends AbstractNpcAI
return subclasses;
}
@Override
public String onFirstTalk(L2Npc npc, L2PcInstance player)
{
if (Config.ALT_GAME_DUALCLASS_WITHOUT_QUEST)
{
return "addDualClassWithoutQuest.html";
}
return "33491.html";
}
private NpcHtmlMessage getNpcHtmlMessage(L2PcInstance player, L2Npc npc, String fileName)
{
final NpcHtmlMessage html = new NpcHtmlMessage(npc.getObjectId());

View File

@ -0,0 +1,11 @@
<html><body>Subclass/Dual Class Master Raina:<br>
Hello!<br1>
You have a question about subclass or dual class?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Raina 33491-01.html">"Yeah. How do I create or reset a subclass?"</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Raina upgradeSubClassToDualClass">"Upgrade my subclass to a dual class."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Raina 33491-02.html">"I want to add a dual class." (for Ertheia only)</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Raina 33491-03.html">"Can I reawaken my Awakened dual class?"</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Raina 33491-04.html">"So...what are the items for dual classes?" </Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Raina 33491-05.html">"What's with these XP Bottles?"</Button>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Subclass/Dual Class Master Raina:<br><br>
You do not meet the conditions to add a dual class.<br>
Come back when you're ready, or ask for something else.<br>
(Only characters with a subclass of Lv. 80 or above may change it to a dual class once.)
</body></html>

View File

@ -175,6 +175,7 @@ public final class Config
public static boolean ES_SP_BOOK_NEEDED;
public static boolean DIVINE_SP_BOOK_NEEDED;
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
public static boolean ALT_GAME_DUALCLASS_WITHOUT_QUEST;
public static boolean ALLOW_TRANSFORM_WITHOUT_QUEST;
public static int FEE_DELETE_TRANSFER_SKILLS;
public static int FEE_DELETE_SUBCLASS_SKILLS;
@ -1508,6 +1509,7 @@ public final class Config
ES_SP_BOOK_NEEDED = Character.getBoolean("EnchantSkillSpBookNeeded", true);
DIVINE_SP_BOOK_NEEDED = Character.getBoolean("DivineInspirationSpBookNeeded", true);
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = Character.getBoolean("AltSubClassWithoutQuests", false);
ALT_GAME_DUALCLASS_WITHOUT_QUEST = Character.getBoolean("AltDualClassWithoutQuest", false);
RESTORE_SERVITOR_ON_RECONNECT = Character.getBoolean("RestoreServitorOnReconnect", true);
RESTORE_PET_ON_RECONNECT = Character.getBoolean("RestorePetOnReconnect", true);
ALLOW_TRANSFORM_WITHOUT_QUEST = Character.getBoolean("AltTransformationWithoutQuest", false);

View File

@ -163,6 +163,10 @@ DivineInspirationSpBookNeeded = True
# Default: False
AltSubClassWithoutQuests = False
# Allow player to upgrade sub-class to dualclass from Raina without finish Split Destiny quest.
# Default: False
AltDualClassWithoutQuest = False
# Allow player to learn transformations without quest.
# Default: False
AltTransformationWithoutQuest = False

View File

@ -51,6 +51,8 @@ import com.l2jmobius.gameserver.network.SystemMessageId;
import com.l2jmobius.gameserver.network.serverpackets.AcquireSkillList;
import com.l2jmobius.gameserver.network.serverpackets.ExSubjobInfo;
import com.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage;
import com.l2jmobius.gameserver.network.serverpackets.SocialAction;
import com.l2jmobius.gameserver.network.serverpackets.SystemMessage;
import ai.AbstractNpcAI;
import quests.Q10385_RedThreadOfFate.Q10385_RedThreadOfFate;
@ -419,6 +421,42 @@ public final class Raina extends AbstractNpcAI
player.sendPacket(html);
break;
}
case "upgradeSubClassToDualClass":
{
if (player.isTransformed())
{
htmltext = "noTransform.html";
}
else if (player.hasSummon())
{
htmltext = "noSummon.html";
}
else if (player.getRace() == Race.ERTHEIA)
{
htmltext = "noErtheia.html";
}
else if (!player.isInventoryUnder90(true) || (player.getWeightPenalty() >= 2))
{
htmltext = "inventoryLimit.html";
}
else if (player.hasDualClass() || !player.isSubClassActive() || (player.getLevel() < 80))
{
htmltext = "addDualClassWithoutQuestFailed.html";
}
else
{
player.getSubClasses().get(player.getClassIndex()).setIsDualClass(true);
final SystemMessage msg = SystemMessage.getSystemMessage(SystemMessageId.SUBCLASS_S1_HAS_BEEN_UPGRADED_TO_DUEL_CLASS_S2_CONGRATULATIONS);
msg.addClassId(player.getClassId().getId());
msg.addClassId(player.getClassId().getId());
player.sendPacket(msg);
player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED));
player.broadcastSocialAction(SocialAction.LEVEL_UP);
}
break;
}
}
return htmltext;
}
@ -837,6 +875,16 @@ public final class Raina extends AbstractNpcAI
return subclasses;
}
@Override
public String onFirstTalk(L2Npc npc, L2PcInstance player)
{
if (Config.ALT_GAME_DUALCLASS_WITHOUT_QUEST)
{
return "addDualClassWithoutQuest.html";
}
return "33491.html";
}
private NpcHtmlMessage getNpcHtmlMessage(L2PcInstance player, L2Npc npc, String fileName)
{
final NpcHtmlMessage html = new NpcHtmlMessage(npc.getObjectId());

View File

@ -0,0 +1,11 @@
<html><body>Subclass/Dual Class Master Raina:<br>
Hello!<br1>
You have a question about subclass or dual class?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Raina 33491-01.html">"Yeah. How do I create or reset a subclass?"</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Raina upgradeSubClassToDualClass">"Upgrade my subclass to a dual class."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Raina 33491-02.html">"I want to add a dual class." (for Ertheia only)</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Raina 33491-03.html">"Can I reawaken my Awakened dual class?"</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Raina 33491-04.html">"So...what are the items for dual classes?" </Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Raina 33491-05.html">"What's with these XP Bottles?"</Button>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Subclass/Dual Class Master Raina:<br><br>
You do not meet the conditions to add a dual class.<br>
Come back when you're ready, or ask for something else.<br>
(Only characters with a subclass of Lv. 80 or above may change it to a dual class once.)
</body></html>

View File

@ -175,6 +175,7 @@ public final class Config
public static boolean ES_SP_BOOK_NEEDED;
public static boolean DIVINE_SP_BOOK_NEEDED;
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
public static boolean ALT_GAME_DUALCLASS_WITHOUT_QUEST;
public static boolean ALLOW_TRANSFORM_WITHOUT_QUEST;
public static int FEE_DELETE_TRANSFER_SKILLS;
public static int FEE_DELETE_SUBCLASS_SKILLS;
@ -1516,6 +1517,7 @@ public final class Config
ES_SP_BOOK_NEEDED = Character.getBoolean("EnchantSkillSpBookNeeded", true);
DIVINE_SP_BOOK_NEEDED = Character.getBoolean("DivineInspirationSpBookNeeded", true);
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = Character.getBoolean("AltSubClassWithoutQuests", false);
ALT_GAME_DUALCLASS_WITHOUT_QUEST = Character.getBoolean("AltDualClassWithoutQuest", false);
RESTORE_SERVITOR_ON_RECONNECT = Character.getBoolean("RestoreServitorOnReconnect", true);
RESTORE_PET_ON_RECONNECT = Character.getBoolean("RestorePetOnReconnect", true);
ALLOW_TRANSFORM_WITHOUT_QUEST = Character.getBoolean("AltTransformationWithoutQuest", false);

View File

@ -163,6 +163,10 @@ DivineInspirationSpBookNeeded = True
# Default: False
AltSubClassWithoutQuests = False
# Allow player to upgrade sub-class to dualclass from Raina without finish Split Destiny quest.
# Default: False
AltDualClassWithoutQuest = False
# Allow player to learn transformations without quest.
# Default: False
AltTransformationWithoutQuest = False

View File

@ -51,6 +51,8 @@ import com.l2jmobius.gameserver.network.SystemMessageId;
import com.l2jmobius.gameserver.network.serverpackets.AcquireSkillList;
import com.l2jmobius.gameserver.network.serverpackets.ExSubjobInfo;
import com.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage;
import com.l2jmobius.gameserver.network.serverpackets.SocialAction;
import com.l2jmobius.gameserver.network.serverpackets.SystemMessage;
import ai.AbstractNpcAI;
import quests.Q10385_RedThreadOfFate.Q10385_RedThreadOfFate;
@ -419,6 +421,42 @@ public final class Raina extends AbstractNpcAI
player.sendPacket(html);
break;
}
case "upgradeSubClassToDualClass":
{
if (player.isTransformed())
{
htmltext = "noTransform.html";
}
else if (player.hasSummon())
{
htmltext = "noSummon.html";
}
else if (player.getRace() == Race.ERTHEIA)
{
htmltext = "noErtheia.html";
}
else if (!player.isInventoryUnder90(true) || (player.getWeightPenalty() >= 2))
{
htmltext = "inventoryLimit.html";
}
else if (player.hasDualClass() || !player.isSubClassActive() || (player.getLevel() < 80))
{
htmltext = "addDualClassWithoutQuestFailed.html";
}
else
{
player.getSubClasses().get(player.getClassIndex()).setIsDualClass(true);
final SystemMessage msg = SystemMessage.getSystemMessage(SystemMessageId.SUBCLASS_S1_HAS_BEEN_UPGRADED_TO_DUEL_CLASS_S2_CONGRATULATIONS);
msg.addClassId(player.getClassId().getId());
msg.addClassId(player.getClassId().getId());
player.sendPacket(msg);
player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED));
player.broadcastSocialAction(SocialAction.LEVEL_UP);
}
break;
}
}
return htmltext;
}
@ -837,6 +875,16 @@ public final class Raina extends AbstractNpcAI
return subclasses;
}
@Override
public String onFirstTalk(L2Npc npc, L2PcInstance player)
{
if (Config.ALT_GAME_DUALCLASS_WITHOUT_QUEST)
{
return "addDualClassWithoutQuest.html";
}
return "33491.html";
}
private NpcHtmlMessage getNpcHtmlMessage(L2PcInstance player, L2Npc npc, String fileName)
{
final NpcHtmlMessage html = new NpcHtmlMessage(npc.getObjectId());

View File

@ -0,0 +1,11 @@
<html><body>Subclass/Dual Class Master Raina:<br>
Hello!<br1>
You have a question about subclass or dual class?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Raina 33491-01.html">"Yeah. How do I create or reset a subclass?"</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Raina upgradeSubClassToDualClass">"Upgrade my subclass to a dual class."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Raina 33491-02.html">"I want to add a dual class." (for Ertheia only)</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Raina 33491-03.html">"Can I reawaken my Awakened dual class?"</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Raina 33491-04.html">"So...what are the items for dual classes?" </Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Raina 33491-05.html">"What's with these XP Bottles?"</Button>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Subclass/Dual Class Master Raina:<br><br>
You do not meet the conditions to add a dual class.<br>
Come back when you're ready, or ask for something else.<br>
(Only characters with a subclass of Lv. 80 or above may change it to a dual class once.)
</body></html>

View File

@ -175,6 +175,7 @@ public final class Config
public static boolean ES_SP_BOOK_NEEDED;
public static boolean DIVINE_SP_BOOK_NEEDED;
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
public static boolean ALT_GAME_DUALCLASS_WITHOUT_QUEST;
public static boolean ALLOW_TRANSFORM_WITHOUT_QUEST;
public static int FEE_DELETE_TRANSFER_SKILLS;
public static int FEE_DELETE_SUBCLASS_SKILLS;
@ -1515,6 +1516,7 @@ public final class Config
ES_SP_BOOK_NEEDED = Character.getBoolean("EnchantSkillSpBookNeeded", true);
DIVINE_SP_BOOK_NEEDED = Character.getBoolean("DivineInspirationSpBookNeeded", true);
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = Character.getBoolean("AltSubClassWithoutQuests", false);
ALT_GAME_DUALCLASS_WITHOUT_QUEST = Character.getBoolean("AltDualClassWithoutQuest", false);
RESTORE_SERVITOR_ON_RECONNECT = Character.getBoolean("RestoreServitorOnReconnect", true);
RESTORE_PET_ON_RECONNECT = Character.getBoolean("RestorePetOnReconnect", true);
ALLOW_TRANSFORM_WITHOUT_QUEST = Character.getBoolean("AltTransformationWithoutQuest", false);