Probable fixes for class transfer quest issues.

This commit is contained in:
MobiusDev 2017-08-18 22:36:49 +00:00
parent 11970585d4
commit 921e27c486
15 changed files with 114 additions and 27 deletions

View File

@ -121,8 +121,11 @@ public final class Q10360_CertificationOfFate extends Quest
case "30288-04.htm": case "30288-04.htm":
case "30289-04.htm": case "30289-04.htm":
{ {
st.startQuest(); if (!player.isSubClassActive())
htmltext = event; {
st.startQuest();
htmltext = event;
}
break; break;
} }
case "teleport": case "teleport":
@ -201,6 +204,11 @@ public final class Q10360_CertificationOfFate extends Quest
} }
else if (event.startsWith("classChange;")) else if (event.startsWith("classChange;"))
{ {
if (player.isSubClassActive())
{
return null;
}
final ClassId newClassId = ClassId.getClassId(Integer.parseInt(event.replace("classChange;", ""))); final ClassId newClassId = ClassId.getClassId(Integer.parseInt(event.replace("classChange;", "")));
final ClassId currentClassId = player.getClassId(); final ClassId currentClassId = player.getClassId();

View File

@ -206,7 +206,10 @@ public final class Q10751_WindsOfFateEncounters extends Quest
final ClassId newClass = ClassId.CLOUD_BREAKER; final ClassId newClass = ClassId.CLOUD_BREAKER;
if (qs.isCond(9) && newClass.childOf(player.getClassId())) if (qs.isCond(9) && newClass.childOf(player.getClassId()))
{ {
player.setBaseClass(newClass); if (!player.isSubClassActive())
{
player.setBaseClass(newClass);
}
player.setClassId(newClass.getId()); player.setClassId(newClass.getId());
player.broadcastUserInfo(); player.broadcastUserInfo();
player.sendSkillList(); player.sendSkillList();
@ -223,7 +226,10 @@ public final class Q10751_WindsOfFateEncounters extends Quest
final ClassId newClass = ClassId.MARAUDER; final ClassId newClass = ClassId.MARAUDER;
if (qs.isCond(8) && newClass.childOf(player.getClassId())) if (qs.isCond(8) && newClass.childOf(player.getClassId()))
{ {
player.setBaseClass(newClass); if (!player.isSubClassActive())
{
player.setBaseClass(newClass);
}
player.setClassId(newClass.getId()); player.setClassId(newClass.getId());
player.broadcastUserInfo(); player.broadcastUserInfo();
player.sendSkillList(); player.sendSkillList();

View File

@ -212,7 +212,10 @@ public final class Q10752_WindsOfFateAPromise extends Quest
final ClassId newClass = ClassId.STRATOMANCER; final ClassId newClass = ClassId.STRATOMANCER;
if (qs.isCond(10) && newClass.childOf(player.getClassId())) if (qs.isCond(10) && newClass.childOf(player.getClassId()))
{ {
player.setBaseClass(newClass); if (!player.isSubClassActive())
{
player.setBaseClass(newClass);
}
player.setClassId(newClass.getId()); player.setClassId(newClass.getId());
player.broadcastUserInfo(); player.broadcastUserInfo();
player.sendSkillList(); player.sendSkillList();
@ -231,7 +234,10 @@ public final class Q10752_WindsOfFateAPromise extends Quest
final ClassId newClass = ClassId.RIPPER; final ClassId newClass = ClassId.RIPPER;
if (qs.isCond(11) && newClass.childOf(player.getClassId())) if (qs.isCond(11) && newClass.childOf(player.getClassId()))
{ {
player.setBaseClass(newClass); if (!player.isSubClassActive())
{
player.setBaseClass(newClass);
}
player.setClassId(newClass.getId()); player.setClassId(newClass.getId());
player.broadcastUserInfo(); player.broadcastUserInfo();
player.sendSkillList(); player.sendSkillList();

View File

@ -319,7 +319,10 @@ public final class Q10753_WindsOfFateChoices extends Quest
final ClassId newClass = ClassId.EVISCERATOR; final ClassId newClass = ClassId.EVISCERATOR;
if (qs.isCond(18) && newClass.childOf(player.getClassId())) if (qs.isCond(18) && newClass.childOf(player.getClassId()))
{ {
player.setBaseClass(newClass); if (!player.isSubClassActive())
{
player.setBaseClass(newClass);
}
player.setClassId(newClass.getId()); player.setClassId(newClass.getId());
player.broadcastUserInfo(); player.broadcastUserInfo();
player.sendSkillList(); player.sendSkillList();
@ -338,7 +341,10 @@ public final class Q10753_WindsOfFateChoices extends Quest
final ClassId newClass = ClassId.SAYHA_SEER; final ClassId newClass = ClassId.SAYHA_SEER;
if (qs.isCond(18) && newClass.childOf(player.getClassId())) if (qs.isCond(18) && newClass.childOf(player.getClassId()))
{ {
player.setBaseClass(newClass); if (!player.isSubClassActive())
{
player.setBaseClass(newClass);
}
player.setClassId(newClass.getId()); player.setClassId(newClass.getId());
player.broadcastUserInfo(); player.broadcastUserInfo();
player.sendSkillList(); player.sendSkillList();

View File

@ -235,7 +235,10 @@ public abstract class ThirdClassTransferQuest extends Quest
addSkillCastDesire(npc, player, SHOW_SKILL.getSkill(), 23); addSkillCastDesire(npc, player, SHOW_SKILL.getSkill(), 23);
player.sendPacket(SystemMessageId.CONGRATULATIONS_YOU_VE_COMPLETED_YOUR_THIRD_CLASS_TRANSFER_QUEST); player.sendPacket(SystemMessageId.CONGRATULATIONS_YOU_VE_COMPLETED_YOUR_THIRD_CLASS_TRANSFER_QUEST);
player.broadcastSocialAction(3); player.broadcastSocialAction(3);
player.setBaseClass(newClassId); if (!player.isSubClassActive())
{
player.setBaseClass(newClassId);
}
player.setClassId(newClassId.getId()); player.setClassId(newClassId.getId());
player.store(false); player.store(false);
player.broadcastUserInfo(); player.broadcastUserInfo();

View File

@ -127,8 +127,11 @@ public final class Q10360_CertificationOfFate extends Quest
case "30288-04.htm": case "30288-04.htm":
case "30289-04.htm": case "30289-04.htm":
{ {
st.startQuest(); if (!player.isSubClassActive())
htmltext = event; {
st.startQuest();
htmltext = event;
}
break; break;
} }
case "teleport": case "teleport":
@ -207,6 +210,11 @@ public final class Q10360_CertificationOfFate extends Quest
} }
else if (event.startsWith("classChange;")) else if (event.startsWith("classChange;"))
{ {
if (player.isSubClassActive())
{
return null;
}
final ClassId newClassId = ClassId.getClassId(Integer.parseInt(event.replace("classChange;", ""))); final ClassId newClassId = ClassId.getClassId(Integer.parseInt(event.replace("classChange;", "")));
final ClassId currentClassId = player.getClassId(); final ClassId currentClassId = player.getClassId();

View File

@ -210,7 +210,10 @@ public final class Q10751_WindsOfFateEncounters extends Quest
final ClassId newClass = ClassId.CLOUD_BREAKER; final ClassId newClass = ClassId.CLOUD_BREAKER;
if (qs.isCond(9) && newClass.childOf(player.getClassId())) if (qs.isCond(9) && newClass.childOf(player.getClassId()))
{ {
player.setBaseClass(newClass); if (!player.isSubClassActive())
{
player.setBaseClass(newClass);
}
player.setClassId(newClass.getId()); player.setClassId(newClass.getId());
player.broadcastUserInfo(); player.broadcastUserInfo();
player.sendSkillList(); player.sendSkillList();
@ -230,7 +233,10 @@ public final class Q10751_WindsOfFateEncounters extends Quest
final ClassId newClass = ClassId.MARAUDER; final ClassId newClass = ClassId.MARAUDER;
if (qs.isCond(8) && newClass.childOf(player.getClassId())) if (qs.isCond(8) && newClass.childOf(player.getClassId()))
{ {
player.setBaseClass(newClass); if (!player.isSubClassActive())
{
player.setBaseClass(newClass);
}
player.setClassId(newClass.getId()); player.setClassId(newClass.getId());
player.broadcastUserInfo(); player.broadcastUserInfo();
player.sendSkillList(); player.sendSkillList();

View File

@ -212,7 +212,10 @@ public final class Q10752_WindsOfFateAPromise extends Quest
final ClassId newClass = ClassId.STRATOMANCER; final ClassId newClass = ClassId.STRATOMANCER;
if (qs.isCond(10) && newClass.childOf(player.getClassId())) if (qs.isCond(10) && newClass.childOf(player.getClassId()))
{ {
player.setBaseClass(newClass); if (!player.isSubClassActive())
{
player.setBaseClass(newClass);
}
player.setClassId(newClass.getId()); player.setClassId(newClass.getId());
player.broadcastUserInfo(); player.broadcastUserInfo();
player.sendSkillList(); player.sendSkillList();
@ -231,7 +234,10 @@ public final class Q10752_WindsOfFateAPromise extends Quest
final ClassId newClass = ClassId.RIPPER; final ClassId newClass = ClassId.RIPPER;
if (qs.isCond(11) && newClass.childOf(player.getClassId())) if (qs.isCond(11) && newClass.childOf(player.getClassId()))
{ {
player.setBaseClass(newClass); if (!player.isSubClassActive())
{
player.setBaseClass(newClass);
}
player.setClassId(newClass.getId()); player.setClassId(newClass.getId());
player.broadcastUserInfo(); player.broadcastUserInfo();
player.sendSkillList(); player.sendSkillList();

View File

@ -319,7 +319,10 @@ public final class Q10753_WindsOfFateChoices extends Quest
final ClassId newClass = ClassId.EVISCERATOR; final ClassId newClass = ClassId.EVISCERATOR;
if (qs.isCond(18) && newClass.childOf(player.getClassId())) if (qs.isCond(18) && newClass.childOf(player.getClassId()))
{ {
player.setBaseClass(newClass); if (!player.isSubClassActive())
{
player.setBaseClass(newClass);
}
player.setClassId(newClass.getId()); player.setClassId(newClass.getId());
player.broadcastUserInfo(); player.broadcastUserInfo();
player.sendSkillList(); player.sendSkillList();
@ -338,7 +341,10 @@ public final class Q10753_WindsOfFateChoices extends Quest
final ClassId newClass = ClassId.SAYHA_SEER; final ClassId newClass = ClassId.SAYHA_SEER;
if (qs.isCond(18) && newClass.childOf(player.getClassId())) if (qs.isCond(18) && newClass.childOf(player.getClassId()))
{ {
player.setBaseClass(newClass); if (!player.isSubClassActive())
{
player.setBaseClass(newClass);
}
player.setClassId(newClass.getId()); player.setClassId(newClass.getId());
player.broadcastUserInfo(); player.broadcastUserInfo();
player.sendSkillList(); player.sendSkillList();

View File

@ -237,7 +237,10 @@ public abstract class ThirdClassTransferQuest extends Quest
addSkillCastDesire(npc, player, SHOW_SKILL.getSkill(), 23); addSkillCastDesire(npc, player, SHOW_SKILL.getSkill(), 23);
player.sendPacket(SystemMessageId.CONGRATULATIONS_YOU_VE_COMPLETED_YOUR_THIRD_CLASS_TRANSFER_QUEST); player.sendPacket(SystemMessageId.CONGRATULATIONS_YOU_VE_COMPLETED_YOUR_THIRD_CLASS_TRANSFER_QUEST);
player.broadcastSocialAction(3); player.broadcastSocialAction(3);
player.setBaseClass(newClassId); if (!player.isSubClassActive())
{
player.setBaseClass(newClassId);
}
player.setClassId(newClassId.getId()); player.setClassId(newClassId.getId());
player.store(false); player.store(false);
player.broadcastUserInfo(); player.broadcastUserInfo();

View File

@ -121,8 +121,11 @@ public final class Q10360_CertificationOfFate extends Quest
case "30288-04.htm": case "30288-04.htm":
case "30289-04.htm": case "30289-04.htm":
{ {
st.startQuest(); if (!player.isSubClassActive())
htmltext = event; {
st.startQuest();
htmltext = event;
}
break; break;
} }
case "teleport": case "teleport":
@ -201,6 +204,11 @@ public final class Q10360_CertificationOfFate extends Quest
} }
else if (event.startsWith("classChange;")) else if (event.startsWith("classChange;"))
{ {
if (player.isSubClassActive())
{
return null;
}
final ClassId newClassId = ClassId.getClassId(Integer.parseInt(event.replace("classChange;", ""))); final ClassId newClassId = ClassId.getClassId(Integer.parseInt(event.replace("classChange;", "")));
final ClassId currentClassId = player.getClassId(); final ClassId currentClassId = player.getClassId();

View File

@ -206,7 +206,10 @@ public final class Q10751_WindsOfFateEncounters extends Quest
final ClassId newClass = ClassId.CLOUD_BREAKER; final ClassId newClass = ClassId.CLOUD_BREAKER;
if (qs.isCond(9) && newClass.childOf(player.getClassId())) if (qs.isCond(9) && newClass.childOf(player.getClassId()))
{ {
player.setBaseClass(newClass); if (!player.isSubClassActive())
{
player.setBaseClass(newClass);
}
player.setClassId(newClass.getId()); player.setClassId(newClass.getId());
player.broadcastUserInfo(); player.broadcastUserInfo();
player.sendSkillList(); player.sendSkillList();
@ -223,7 +226,10 @@ public final class Q10751_WindsOfFateEncounters extends Quest
final ClassId newClass = ClassId.MARAUDER; final ClassId newClass = ClassId.MARAUDER;
if (qs.isCond(8) && newClass.childOf(player.getClassId())) if (qs.isCond(8) && newClass.childOf(player.getClassId()))
{ {
player.setBaseClass(newClass); if (!player.isSubClassActive())
{
player.setBaseClass(newClass);
}
player.setClassId(newClass.getId()); player.setClassId(newClass.getId());
player.broadcastUserInfo(); player.broadcastUserInfo();
player.sendSkillList(); player.sendSkillList();

View File

@ -212,7 +212,10 @@ public final class Q10752_WindsOfFateAPromise extends Quest
final ClassId newClass = ClassId.STRATOMANCER; final ClassId newClass = ClassId.STRATOMANCER;
if (qs.isCond(10) && newClass.childOf(player.getClassId())) if (qs.isCond(10) && newClass.childOf(player.getClassId()))
{ {
player.setBaseClass(newClass); if (!player.isSubClassActive())
{
player.setBaseClass(newClass);
}
player.setClassId(newClass.getId()); player.setClassId(newClass.getId());
player.broadcastUserInfo(); player.broadcastUserInfo();
player.sendSkillList(); player.sendSkillList();
@ -231,7 +234,10 @@ public final class Q10752_WindsOfFateAPromise extends Quest
final ClassId newClass = ClassId.RIPPER; final ClassId newClass = ClassId.RIPPER;
if (qs.isCond(11) && newClass.childOf(player.getClassId())) if (qs.isCond(11) && newClass.childOf(player.getClassId()))
{ {
player.setBaseClass(newClass); if (!player.isSubClassActive())
{
player.setBaseClass(newClass);
}
player.setClassId(newClass.getId()); player.setClassId(newClass.getId());
player.broadcastUserInfo(); player.broadcastUserInfo();
player.sendSkillList(); player.sendSkillList();

View File

@ -319,7 +319,10 @@ public final class Q10753_WindsOfFateChoices extends Quest
final ClassId newClass = ClassId.EVISCERATOR; final ClassId newClass = ClassId.EVISCERATOR;
if (qs.isCond(18) && newClass.childOf(player.getClassId())) if (qs.isCond(18) && newClass.childOf(player.getClassId()))
{ {
player.setBaseClass(newClass); if (!player.isSubClassActive())
{
player.setBaseClass(newClass);
}
player.setClassId(newClass.getId()); player.setClassId(newClass.getId());
player.broadcastUserInfo(); player.broadcastUserInfo();
player.sendSkillList(); player.sendSkillList();
@ -338,7 +341,10 @@ public final class Q10753_WindsOfFateChoices extends Quest
final ClassId newClass = ClassId.SAYHA_SEER; final ClassId newClass = ClassId.SAYHA_SEER;
if (qs.isCond(18) && newClass.childOf(player.getClassId())) if (qs.isCond(18) && newClass.childOf(player.getClassId()))
{ {
player.setBaseClass(newClass); if (!player.isSubClassActive())
{
player.setBaseClass(newClass);
}
player.setClassId(newClass.getId()); player.setClassId(newClass.getId());
player.broadcastUserInfo(); player.broadcastUserInfo();
player.sendSkillList(); player.sendSkillList();

View File

@ -235,7 +235,10 @@ public abstract class ThirdClassTransferQuest extends Quest
addSkillCastDesire(npc, player, SHOW_SKILL.getSkill(), 23); addSkillCastDesire(npc, player, SHOW_SKILL.getSkill(), 23);
player.sendPacket(SystemMessageId.CONGRATULATIONS_YOU_VE_COMPLETED_YOUR_THIRD_CLASS_TRANSFER_QUEST); player.sendPacket(SystemMessageId.CONGRATULATIONS_YOU_VE_COMPLETED_YOUR_THIRD_CLASS_TRANSFER_QUEST);
player.broadcastSocialAction(3); player.broadcastSocialAction(3);
player.setBaseClass(newClassId); if (!player.isSubClassActive())
{
player.setBaseClass(newClassId);
}
player.setClassId(newClassId.getId()); player.setClassId(newClassId.getId());
player.store(false); player.store(false);
player.broadcastUserInfo(); player.broadcastUserInfo();