Store sub certificate count in player variables.

This commit is contained in:
MobiusDevelopment
2020-02-12 16:26:52 +00:00
parent ec99d2b32d
commit d22dabe8ca
9 changed files with 210 additions and 39 deletions

View File

@@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.data.xml.impl.SkillData;
import org.l2jmobius.gameserver.enums.Race; import org.l2jmobius.gameserver.enums.Race;
import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.base.SubClass;
import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.ListenerRegisterType; import org.l2jmobius.gameserver.model.events.ListenerRegisterType;
import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent; import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
@@ -51,6 +52,8 @@ public class Trandon extends AbstractNpcAI
private static final int[] SUB_SKILL_LEVELS = {65, 70, 75, 80}; private static final int[] SUB_SKILL_LEVELS = {65, 70, 75, 80};
private static final int[] DUAL_SKILL_LEVELS = {85, 90, 95, 99}; private static final int[] DUAL_SKILL_LEVELS = {85, 90, 95, 99};
// @formatter:on // @formatter:on
private static final String SUB_CERTIFICATE_COUNT_VAR = "SUB_CERTIFICATE_COUNT";
private static final String DUAL_CERTIFICATE_COUNT_VAR = "DUAL_CERTIFICATE_COUNT";
private Trandon() private Trandon()
{ {
@@ -153,8 +156,14 @@ public class Trandon extends AbstractNpcAI
} }
else else
{ {
final int subId = player.getClassId().getId();
final int currentCount = player.getVariables().getInt(SUB_CERTIFICATE_COUNT_VAR + subId, 0);
if (currentCount < SUB_SKILL_LEVELS.length)
{
player.getVariables().set(SUB_CERTIFICATE_COUNT_VAR + subId, currentCount + 1);
vars.set(getSubSkillVariableName(player, level), true); vars.set(getSubSkillVariableName(player, level), true);
giveItems(player, SUB_CERTIFICATE, 1); giveItems(player, SUB_CERTIFICATE, 1);
}
htmltext = "33490-20.html"; htmltext = "33490-20.html";
} }
break; break;
@@ -200,6 +209,10 @@ public class Trandon extends AbstractNpcAI
htmltext = null; // TODO: Unknown html htmltext = null; // TODO: Unknown html
takeItems(player, SUB_CERTIFICATE, -1); takeItems(player, SUB_CERTIFICATE, -1);
takeItems(player, Inventory.ADENA_ID, Config.FEE_DELETE_SUBCLASS_SKILLS); takeItems(player, Inventory.ADENA_ID, Config.FEE_DELETE_SUBCLASS_SKILLS);
for (SubClass subclass : player.getSubClasses().values())
{
player.getVariables().remove(SUB_CERTIFICATE_COUNT_VAR + subclass.getClassId());
}
final PlayerVariables vars = player.getVariables(); final PlayerVariables vars = player.getVariables();
for (int i = 1; i <= 3; i++) for (int i = 1; i <= 3; i++)
@@ -234,7 +247,7 @@ public class Trandon extends AbstractNpcAI
} }
final int index = Integer.parseInt(substrings[1]); final int index = Integer.parseInt(substrings[1]);
if ((index < 0) || (index > 3)) if ((index < 0) || (index > (DUAL_SKILL_LEVELS.length - 1)))
{ {
return null; return null;
} }
@@ -251,8 +264,13 @@ public class Trandon extends AbstractNpcAI
} }
else else
{ {
final int currentCount = player.getVariables().getInt(DUAL_CERTIFICATE_COUNT_VAR, 0);
if (currentCount < DUAL_SKILL_LEVELS.length)
{
player.getVariables().set(DUAL_CERTIFICATE_COUNT_VAR, currentCount + 1);
vars.set(getDualSkillVariableName(level), true); vars.set(getDualSkillVariableName(level), true);
giveItems(player, DUAL_CERTIFICATE, 1); giveItems(player, DUAL_CERTIFICATE, 1);
}
htmltext = getHtm(player, "33490-29.html"); htmltext = getHtm(player, "33490-29.html");
} }
htmltext = htmltext.replace("%level%", String.valueOf(level)); htmltext = htmltext.replace("%level%", String.valueOf(level));
@@ -300,6 +318,7 @@ public class Trandon extends AbstractNpcAI
htmltext = null; // TODO: Unknown html htmltext = null; // TODO: Unknown html
takeItems(player, DUAL_CERTIFICATE, -1); takeItems(player, DUAL_CERTIFICATE, -1);
takeItems(player, Inventory.ADENA_ID, Config.FEE_DELETE_DUALCLASS_SKILLS); takeItems(player, Inventory.ADENA_ID, Config.FEE_DELETE_DUALCLASS_SKILLS);
player.getVariables().remove(DUAL_CERTIFICATE_COUNT_VAR);
final PlayerVariables vars = player.getVariables(); final PlayerVariables vars = player.getVariables();
for (int lv : DUAL_SKILL_LEVELS) for (int lv : DUAL_SKILL_LEVELS)

View File

@@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.data.xml.impl.SkillData;
import org.l2jmobius.gameserver.enums.Race; import org.l2jmobius.gameserver.enums.Race;
import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.base.SubClass;
import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.ListenerRegisterType; import org.l2jmobius.gameserver.model.events.ListenerRegisterType;
import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent; import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
@@ -51,6 +52,8 @@ public class Trandon extends AbstractNpcAI
private static final int[] SUB_SKILL_LEVELS = {65, 70, 75, 80}; private static final int[] SUB_SKILL_LEVELS = {65, 70, 75, 80};
private static final int[] DUAL_SKILL_LEVELS = {85, 90, 95, 99}; private static final int[] DUAL_SKILL_LEVELS = {85, 90, 95, 99};
// @formatter:on // @formatter:on
private static final String SUB_CERTIFICATE_COUNT_VAR = "SUB_CERTIFICATE_COUNT";
private static final String DUAL_CERTIFICATE_COUNT_VAR = "DUAL_CERTIFICATE_COUNT";
private Trandon() private Trandon()
{ {
@@ -153,8 +156,14 @@ public class Trandon extends AbstractNpcAI
} }
else else
{ {
final int subId = player.getClassId().getId();
final int currentCount = player.getVariables().getInt(SUB_CERTIFICATE_COUNT_VAR + subId, 0);
if (currentCount < SUB_SKILL_LEVELS.length)
{
player.getVariables().set(SUB_CERTIFICATE_COUNT_VAR + subId, currentCount + 1);
vars.set(getSubSkillVariableName(player, level), true); vars.set(getSubSkillVariableName(player, level), true);
giveItems(player, SUB_CERTIFICATE, 1); giveItems(player, SUB_CERTIFICATE, 1);
}
htmltext = "33490-20.html"; htmltext = "33490-20.html";
} }
break; break;
@@ -200,6 +209,10 @@ public class Trandon extends AbstractNpcAI
htmltext = null; // TODO: Unknown html htmltext = null; // TODO: Unknown html
takeItems(player, SUB_CERTIFICATE, -1); takeItems(player, SUB_CERTIFICATE, -1);
takeItems(player, Inventory.ADENA_ID, Config.FEE_DELETE_SUBCLASS_SKILLS); takeItems(player, Inventory.ADENA_ID, Config.FEE_DELETE_SUBCLASS_SKILLS);
for (SubClass subclass : player.getSubClasses().values())
{
player.getVariables().remove(SUB_CERTIFICATE_COUNT_VAR + subclass.getClassId());
}
final PlayerVariables vars = player.getVariables(); final PlayerVariables vars = player.getVariables();
for (int i = 1; i <= 3; i++) for (int i = 1; i <= 3; i++)
@@ -234,7 +247,7 @@ public class Trandon extends AbstractNpcAI
} }
final int index = Integer.parseInt(substrings[1]); final int index = Integer.parseInt(substrings[1]);
if ((index < 0) || (index > 3)) if ((index < 0) || (index > (DUAL_SKILL_LEVELS.length - 1)))
{ {
return null; return null;
} }
@@ -251,8 +264,13 @@ public class Trandon extends AbstractNpcAI
} }
else else
{ {
final int currentCount = player.getVariables().getInt(DUAL_CERTIFICATE_COUNT_VAR, 0);
if (currentCount < DUAL_SKILL_LEVELS.length)
{
player.getVariables().set(DUAL_CERTIFICATE_COUNT_VAR, currentCount + 1);
vars.set(getDualSkillVariableName(level), true); vars.set(getDualSkillVariableName(level), true);
giveItems(player, DUAL_CERTIFICATE, 1); giveItems(player, DUAL_CERTIFICATE, 1);
}
htmltext = getHtm(player, "33490-29.html"); htmltext = getHtm(player, "33490-29.html");
} }
htmltext = htmltext.replace("%level%", String.valueOf(level)); htmltext = htmltext.replace("%level%", String.valueOf(level));
@@ -300,6 +318,7 @@ public class Trandon extends AbstractNpcAI
htmltext = null; // TODO: Unknown html htmltext = null; // TODO: Unknown html
takeItems(player, DUAL_CERTIFICATE, -1); takeItems(player, DUAL_CERTIFICATE, -1);
takeItems(player, Inventory.ADENA_ID, Config.FEE_DELETE_DUALCLASS_SKILLS); takeItems(player, Inventory.ADENA_ID, Config.FEE_DELETE_DUALCLASS_SKILLS);
player.getVariables().remove(DUAL_CERTIFICATE_COUNT_VAR);
final PlayerVariables vars = player.getVariables(); final PlayerVariables vars = player.getVariables();
for (int lv : DUAL_SKILL_LEVELS) for (int lv : DUAL_SKILL_LEVELS)

View File

@@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.data.xml.impl.SkillData;
import org.l2jmobius.gameserver.enums.Race; import org.l2jmobius.gameserver.enums.Race;
import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.base.SubClass;
import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.ListenerRegisterType; import org.l2jmobius.gameserver.model.events.ListenerRegisterType;
import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent; import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
@@ -51,6 +52,8 @@ public class Trandon extends AbstractNpcAI
private static final int[] SUB_SKILL_LEVELS = {65, 70, 75, 80}; private static final int[] SUB_SKILL_LEVELS = {65, 70, 75, 80};
private static final int[] DUAL_SKILL_LEVELS = {85, 90, 95, 99}; private static final int[] DUAL_SKILL_LEVELS = {85, 90, 95, 99};
// @formatter:on // @formatter:on
private static final String SUB_CERTIFICATE_COUNT_VAR = "SUB_CERTIFICATE_COUNT";
private static final String DUAL_CERTIFICATE_COUNT_VAR = "DUAL_CERTIFICATE_COUNT";
private Trandon() private Trandon()
{ {
@@ -153,8 +156,14 @@ public class Trandon extends AbstractNpcAI
} }
else else
{ {
final int subId = player.getClassId().getId();
final int currentCount = player.getVariables().getInt(SUB_CERTIFICATE_COUNT_VAR + subId, 0);
if (currentCount < SUB_SKILL_LEVELS.length)
{
player.getVariables().set(SUB_CERTIFICATE_COUNT_VAR + subId, currentCount + 1);
vars.set(getSubSkillVariableName(player, level), true); vars.set(getSubSkillVariableName(player, level), true);
giveItems(player, SUB_CERTIFICATE, 1); giveItems(player, SUB_CERTIFICATE, 1);
}
htmltext = "33490-20.html"; htmltext = "33490-20.html";
} }
break; break;
@@ -200,6 +209,10 @@ public class Trandon extends AbstractNpcAI
htmltext = null; // TODO: Unknown html htmltext = null; // TODO: Unknown html
takeItems(player, SUB_CERTIFICATE, -1); takeItems(player, SUB_CERTIFICATE, -1);
takeItems(player, Inventory.ADENA_ID, Config.FEE_DELETE_SUBCLASS_SKILLS); takeItems(player, Inventory.ADENA_ID, Config.FEE_DELETE_SUBCLASS_SKILLS);
for (SubClass subclass : player.getSubClasses().values())
{
player.getVariables().remove(SUB_CERTIFICATE_COUNT_VAR + subclass.getClassId());
}
final PlayerVariables vars = player.getVariables(); final PlayerVariables vars = player.getVariables();
for (int i = 1; i <= 3; i++) for (int i = 1; i <= 3; i++)
@@ -234,7 +247,7 @@ public class Trandon extends AbstractNpcAI
} }
final int index = Integer.parseInt(substrings[1]); final int index = Integer.parseInt(substrings[1]);
if ((index < 0) || (index > 3)) if ((index < 0) || (index > (DUAL_SKILL_LEVELS.length - 1)))
{ {
return null; return null;
} }
@@ -251,8 +264,13 @@ public class Trandon extends AbstractNpcAI
} }
else else
{ {
final int currentCount = player.getVariables().getInt(DUAL_CERTIFICATE_COUNT_VAR, 0);
if (currentCount < DUAL_SKILL_LEVELS.length)
{
player.getVariables().set(DUAL_CERTIFICATE_COUNT_VAR, currentCount + 1);
vars.set(getDualSkillVariableName(level), true); vars.set(getDualSkillVariableName(level), true);
giveItems(player, DUAL_CERTIFICATE, 1); giveItems(player, DUAL_CERTIFICATE, 1);
}
htmltext = getHtm(player, "33490-29.html"); htmltext = getHtm(player, "33490-29.html");
} }
htmltext = htmltext.replace("%level%", String.valueOf(level)); htmltext = htmltext.replace("%level%", String.valueOf(level));
@@ -300,6 +318,7 @@ public class Trandon extends AbstractNpcAI
htmltext = null; // TODO: Unknown html htmltext = null; // TODO: Unknown html
takeItems(player, DUAL_CERTIFICATE, -1); takeItems(player, DUAL_CERTIFICATE, -1);
takeItems(player, Inventory.ADENA_ID, Config.FEE_DELETE_DUALCLASS_SKILLS); takeItems(player, Inventory.ADENA_ID, Config.FEE_DELETE_DUALCLASS_SKILLS);
player.getVariables().remove(DUAL_CERTIFICATE_COUNT_VAR);
final PlayerVariables vars = player.getVariables(); final PlayerVariables vars = player.getVariables();
for (int lv : DUAL_SKILL_LEVELS) for (int lv : DUAL_SKILL_LEVELS)

View File

@@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.data.xml.impl.SkillData;
import org.l2jmobius.gameserver.enums.Race; import org.l2jmobius.gameserver.enums.Race;
import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.base.SubClass;
import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.ListenerRegisterType; import org.l2jmobius.gameserver.model.events.ListenerRegisterType;
import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent; import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
@@ -51,6 +52,8 @@ public class Trandon extends AbstractNpcAI
private static final int[] SUB_SKILL_LEVELS = {65, 70, 75, 80}; private static final int[] SUB_SKILL_LEVELS = {65, 70, 75, 80};
private static final int[] DUAL_SKILL_LEVELS = {85, 90, 95, 99, 101, 103, 105}; private static final int[] DUAL_SKILL_LEVELS = {85, 90, 95, 99, 101, 103, 105};
// @formatter:on // @formatter:on
private static final String SUB_CERTIFICATE_COUNT_VAR = "SUB_CERTIFICATE_COUNT";
private static final String DUAL_CERTIFICATE_COUNT_VAR = "DUAL_CERTIFICATE_COUNT";
private Trandon() private Trandon()
{ {
@@ -153,8 +156,14 @@ public class Trandon extends AbstractNpcAI
} }
else else
{ {
final int subId = player.getClassId().getId();
final int currentCount = player.getVariables().getInt(SUB_CERTIFICATE_COUNT_VAR + subId, 0);
if (currentCount < SUB_SKILL_LEVELS.length)
{
player.getVariables().set(SUB_CERTIFICATE_COUNT_VAR + subId, currentCount + 1);
vars.set(getSubSkillVariableName(player, level), true); vars.set(getSubSkillVariableName(player, level), true);
giveItems(player, SUB_CERTIFICATE, 1); giveItems(player, SUB_CERTIFICATE, 1);
}
htmltext = "33490-20.html"; htmltext = "33490-20.html";
} }
break; break;
@@ -200,6 +209,10 @@ public class Trandon extends AbstractNpcAI
htmltext = null; // TODO: Unknown html htmltext = null; // TODO: Unknown html
takeItems(player, SUB_CERTIFICATE, -1); takeItems(player, SUB_CERTIFICATE, -1);
takeItems(player, Inventory.ADENA_ID, Config.FEE_DELETE_SUBCLASS_SKILLS); takeItems(player, Inventory.ADENA_ID, Config.FEE_DELETE_SUBCLASS_SKILLS);
for (SubClass subclass : player.getSubClasses().values())
{
player.getVariables().remove(SUB_CERTIFICATE_COUNT_VAR + subclass.getClassId());
}
final PlayerVariables vars = player.getVariables(); final PlayerVariables vars = player.getVariables();
for (int i = 1; i <= 3; i++) for (int i = 1; i <= 3; i++)
@@ -251,8 +264,13 @@ public class Trandon extends AbstractNpcAI
} }
else else
{ {
final int currentCount = player.getVariables().getInt(DUAL_CERTIFICATE_COUNT_VAR, 0);
if (currentCount < DUAL_SKILL_LEVELS.length)
{
player.getVariables().set(DUAL_CERTIFICATE_COUNT_VAR, currentCount + 1);
vars.set(getDualSkillVariableName(level), true); vars.set(getDualSkillVariableName(level), true);
giveItems(player, DUAL_CERTIFICATE, 1); giveItems(player, DUAL_CERTIFICATE, 1);
}
htmltext = getHtm(player, "33490-29.html"); htmltext = getHtm(player, "33490-29.html");
} }
htmltext = htmltext.replace("%level%", String.valueOf(level)); htmltext = htmltext.replace("%level%", String.valueOf(level));
@@ -300,6 +318,7 @@ public class Trandon extends AbstractNpcAI
htmltext = null; // TODO: Unknown html htmltext = null; // TODO: Unknown html
takeItems(player, DUAL_CERTIFICATE, -1); takeItems(player, DUAL_CERTIFICATE, -1);
takeItems(player, Inventory.ADENA_ID, Config.FEE_DELETE_DUALCLASS_SKILLS); takeItems(player, Inventory.ADENA_ID, Config.FEE_DELETE_DUALCLASS_SKILLS);
player.getVariables().remove(DUAL_CERTIFICATE_COUNT_VAR);
final PlayerVariables vars = player.getVariables(); final PlayerVariables vars = player.getVariables();
for (int lv : DUAL_SKILL_LEVELS) for (int lv : DUAL_SKILL_LEVELS)

View File

@@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.data.xml.impl.SkillData;
import org.l2jmobius.gameserver.enums.Race; import org.l2jmobius.gameserver.enums.Race;
import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.base.SubClass;
import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.ListenerRegisterType; import org.l2jmobius.gameserver.model.events.ListenerRegisterType;
import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent; import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
@@ -51,6 +52,8 @@ public class Trandon extends AbstractNpcAI
private static final int[] SUB_SKILL_LEVELS = {65, 70, 75, 80}; private static final int[] SUB_SKILL_LEVELS = {65, 70, 75, 80};
private static final int[] DUAL_SKILL_LEVELS = {85, 90, 95, 99, 101, 103, 105}; private static final int[] DUAL_SKILL_LEVELS = {85, 90, 95, 99, 101, 103, 105};
// @formatter:on // @formatter:on
private static final String SUB_CERTIFICATE_COUNT_VAR = "SUB_CERTIFICATE_COUNT";
private static final String DUAL_CERTIFICATE_COUNT_VAR = "DUAL_CERTIFICATE_COUNT";
private Trandon() private Trandon()
{ {
@@ -153,8 +156,14 @@ public class Trandon extends AbstractNpcAI
} }
else else
{ {
final int subId = player.getClassId().getId();
final int currentCount = player.getVariables().getInt(SUB_CERTIFICATE_COUNT_VAR + subId, 0);
if (currentCount < SUB_SKILL_LEVELS.length)
{
player.getVariables().set(SUB_CERTIFICATE_COUNT_VAR + subId, currentCount + 1);
vars.set(getSubSkillVariableName(player, level), true); vars.set(getSubSkillVariableName(player, level), true);
giveItems(player, SUB_CERTIFICATE, 1); giveItems(player, SUB_CERTIFICATE, 1);
}
htmltext = "33490-20.html"; htmltext = "33490-20.html";
} }
break; break;
@@ -200,6 +209,10 @@ public class Trandon extends AbstractNpcAI
htmltext = null; // TODO: Unknown html htmltext = null; // TODO: Unknown html
takeItems(player, SUB_CERTIFICATE, -1); takeItems(player, SUB_CERTIFICATE, -1);
takeItems(player, Inventory.ADENA_ID, Config.FEE_DELETE_SUBCLASS_SKILLS); takeItems(player, Inventory.ADENA_ID, Config.FEE_DELETE_SUBCLASS_SKILLS);
for (SubClass subclass : player.getSubClasses().values())
{
player.getVariables().remove(SUB_CERTIFICATE_COUNT_VAR + subclass.getClassId());
}
final PlayerVariables vars = player.getVariables(); final PlayerVariables vars = player.getVariables();
for (int i = 1; i <= 3; i++) for (int i = 1; i <= 3; i++)
@@ -251,8 +264,13 @@ public class Trandon extends AbstractNpcAI
} }
else else
{ {
final int currentCount = player.getVariables().getInt(DUAL_CERTIFICATE_COUNT_VAR, 0);
if (currentCount < DUAL_SKILL_LEVELS.length)
{
player.getVariables().set(DUAL_CERTIFICATE_COUNT_VAR, currentCount + 1);
vars.set(getDualSkillVariableName(level), true); vars.set(getDualSkillVariableName(level), true);
giveItems(player, DUAL_CERTIFICATE, 1); giveItems(player, DUAL_CERTIFICATE, 1);
}
htmltext = getHtm(player, "33490-29.html"); htmltext = getHtm(player, "33490-29.html");
} }
htmltext = htmltext.replace("%level%", String.valueOf(level)); htmltext = htmltext.replace("%level%", String.valueOf(level));
@@ -300,6 +318,7 @@ public class Trandon extends AbstractNpcAI
htmltext = null; // TODO: Unknown html htmltext = null; // TODO: Unknown html
takeItems(player, DUAL_CERTIFICATE, -1); takeItems(player, DUAL_CERTIFICATE, -1);
takeItems(player, Inventory.ADENA_ID, Config.FEE_DELETE_DUALCLASS_SKILLS); takeItems(player, Inventory.ADENA_ID, Config.FEE_DELETE_DUALCLASS_SKILLS);
player.getVariables().remove(DUAL_CERTIFICATE_COUNT_VAR);
final PlayerVariables vars = player.getVariables(); final PlayerVariables vars = player.getVariables();
for (int lv : DUAL_SKILL_LEVELS) for (int lv : DUAL_SKILL_LEVELS)

View File

@@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.data.xml.impl.SkillData;
import org.l2jmobius.gameserver.enums.Race; import org.l2jmobius.gameserver.enums.Race;
import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.base.SubClass;
import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.ListenerRegisterType; import org.l2jmobius.gameserver.model.events.ListenerRegisterType;
import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent; import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
@@ -51,6 +52,8 @@ public class Trandon extends AbstractNpcAI
private static final int[] SUB_SKILL_LEVELS = {65, 70, 75, 80}; private static final int[] SUB_SKILL_LEVELS = {65, 70, 75, 80};
private static final int[] DUAL_SKILL_LEVELS = {85, 90, 95, 99, 101, 103, 105}; private static final int[] DUAL_SKILL_LEVELS = {85, 90, 95, 99, 101, 103, 105};
// @formatter:on // @formatter:on
private static final String SUB_CERTIFICATE_COUNT_VAR = "SUB_CERTIFICATE_COUNT";
private static final String DUAL_CERTIFICATE_COUNT_VAR = "DUAL_CERTIFICATE_COUNT";
private Trandon() private Trandon()
{ {
@@ -153,8 +156,14 @@ public class Trandon extends AbstractNpcAI
} }
else else
{ {
final int subId = player.getClassId().getId();
final int currentCount = player.getVariables().getInt(SUB_CERTIFICATE_COUNT_VAR + subId, 0);
if (currentCount < SUB_SKILL_LEVELS.length)
{
player.getVariables().set(SUB_CERTIFICATE_COUNT_VAR + subId, currentCount + 1);
vars.set(getSubSkillVariableName(player, level), true); vars.set(getSubSkillVariableName(player, level), true);
giveItems(player, SUB_CERTIFICATE, 1); giveItems(player, SUB_CERTIFICATE, 1);
}
htmltext = "33490-20.html"; htmltext = "33490-20.html";
} }
break; break;
@@ -200,6 +209,10 @@ public class Trandon extends AbstractNpcAI
htmltext = null; // TODO: Unknown html htmltext = null; // TODO: Unknown html
takeItems(player, SUB_CERTIFICATE, -1); takeItems(player, SUB_CERTIFICATE, -1);
takeItems(player, Inventory.ADENA_ID, Config.FEE_DELETE_SUBCLASS_SKILLS); takeItems(player, Inventory.ADENA_ID, Config.FEE_DELETE_SUBCLASS_SKILLS);
for (SubClass subclass : player.getSubClasses().values())
{
player.getVariables().remove(SUB_CERTIFICATE_COUNT_VAR + subclass.getClassId());
}
final PlayerVariables vars = player.getVariables(); final PlayerVariables vars = player.getVariables();
for (int i = 1; i <= 3; i++) for (int i = 1; i <= 3; i++)
@@ -251,8 +264,13 @@ public class Trandon extends AbstractNpcAI
} }
else else
{ {
final int currentCount = player.getVariables().getInt(DUAL_CERTIFICATE_COUNT_VAR, 0);
if (currentCount < DUAL_SKILL_LEVELS.length)
{
player.getVariables().set(DUAL_CERTIFICATE_COUNT_VAR, currentCount + 1);
vars.set(getDualSkillVariableName(level), true); vars.set(getDualSkillVariableName(level), true);
giveItems(player, DUAL_CERTIFICATE, 1); giveItems(player, DUAL_CERTIFICATE, 1);
}
htmltext = getHtm(player, "33490-29.html"); htmltext = getHtm(player, "33490-29.html");
} }
htmltext = htmltext.replace("%level%", String.valueOf(level)); htmltext = htmltext.replace("%level%", String.valueOf(level));
@@ -300,6 +318,7 @@ public class Trandon extends AbstractNpcAI
htmltext = null; // TODO: Unknown html htmltext = null; // TODO: Unknown html
takeItems(player, DUAL_CERTIFICATE, -1); takeItems(player, DUAL_CERTIFICATE, -1);
takeItems(player, Inventory.ADENA_ID, Config.FEE_DELETE_DUALCLASS_SKILLS); takeItems(player, Inventory.ADENA_ID, Config.FEE_DELETE_DUALCLASS_SKILLS);
player.getVariables().remove(DUAL_CERTIFICATE_COUNT_VAR);
final PlayerVariables vars = player.getVariables(); final PlayerVariables vars = player.getVariables();
for (int lv : DUAL_SKILL_LEVELS) for (int lv : DUAL_SKILL_LEVELS)

View File

@@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.data.xml.impl.SkillData;
import org.l2jmobius.gameserver.enums.Race; import org.l2jmobius.gameserver.enums.Race;
import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.base.SubClass;
import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.ListenerRegisterType; import org.l2jmobius.gameserver.model.events.ListenerRegisterType;
import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent; import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
@@ -51,6 +52,8 @@ public class Trandon extends AbstractNpcAI
private static final int[] SUB_SKILL_LEVELS = {65, 70, 75, 80}; private static final int[] SUB_SKILL_LEVELS = {65, 70, 75, 80};
private static final int[] DUAL_SKILL_LEVELS = {85, 90, 95, 99, 101, 103, 105}; private static final int[] DUAL_SKILL_LEVELS = {85, 90, 95, 99, 101, 103, 105};
// @formatter:on // @formatter:on
private static final String SUB_CERTIFICATE_COUNT_VAR = "SUB_CERTIFICATE_COUNT";
private static final String DUAL_CERTIFICATE_COUNT_VAR = "DUAL_CERTIFICATE_COUNT";
private Trandon() private Trandon()
{ {
@@ -153,8 +156,14 @@ public class Trandon extends AbstractNpcAI
} }
else else
{ {
final int subId = player.getClassId().getId();
final int currentCount = player.getVariables().getInt(SUB_CERTIFICATE_COUNT_VAR + subId, 0);
if (currentCount < SUB_SKILL_LEVELS.length)
{
player.getVariables().set(SUB_CERTIFICATE_COUNT_VAR + subId, currentCount + 1);
vars.set(getSubSkillVariableName(player, level), true); vars.set(getSubSkillVariableName(player, level), true);
giveItems(player, SUB_CERTIFICATE, 1); giveItems(player, SUB_CERTIFICATE, 1);
}
htmltext = "33490-20.html"; htmltext = "33490-20.html";
} }
break; break;
@@ -200,6 +209,10 @@ public class Trandon extends AbstractNpcAI
htmltext = null; // TODO: Unknown html htmltext = null; // TODO: Unknown html
takeItems(player, SUB_CERTIFICATE, -1); takeItems(player, SUB_CERTIFICATE, -1);
takeItems(player, Inventory.ADENA_ID, Config.FEE_DELETE_SUBCLASS_SKILLS); takeItems(player, Inventory.ADENA_ID, Config.FEE_DELETE_SUBCLASS_SKILLS);
for (SubClass subclass : player.getSubClasses().values())
{
player.getVariables().remove(SUB_CERTIFICATE_COUNT_VAR + subclass.getClassId());
}
final PlayerVariables vars = player.getVariables(); final PlayerVariables vars = player.getVariables();
for (int i = 1; i <= 3; i++) for (int i = 1; i <= 3; i++)
@@ -251,8 +264,13 @@ public class Trandon extends AbstractNpcAI
} }
else else
{ {
final int currentCount = player.getVariables().getInt(DUAL_CERTIFICATE_COUNT_VAR, 0);
if (currentCount < DUAL_SKILL_LEVELS.length)
{
player.getVariables().set(DUAL_CERTIFICATE_COUNT_VAR, currentCount + 1);
vars.set(getDualSkillVariableName(level), true); vars.set(getDualSkillVariableName(level), true);
giveItems(player, DUAL_CERTIFICATE, 1); giveItems(player, DUAL_CERTIFICATE, 1);
}
htmltext = getHtm(player, "33490-29.html"); htmltext = getHtm(player, "33490-29.html");
} }
htmltext = htmltext.replace("%level%", String.valueOf(level)); htmltext = htmltext.replace("%level%", String.valueOf(level));
@@ -300,6 +318,7 @@ public class Trandon extends AbstractNpcAI
htmltext = null; // TODO: Unknown html htmltext = null; // TODO: Unknown html
takeItems(player, DUAL_CERTIFICATE, -1); takeItems(player, DUAL_CERTIFICATE, -1);
takeItems(player, Inventory.ADENA_ID, Config.FEE_DELETE_DUALCLASS_SKILLS); takeItems(player, Inventory.ADENA_ID, Config.FEE_DELETE_DUALCLASS_SKILLS);
player.getVariables().remove(DUAL_CERTIFICATE_COUNT_VAR);
final PlayerVariables vars = player.getVariables(); final PlayerVariables vars = player.getVariables();
for (int lv : DUAL_SKILL_LEVELS) for (int lv : DUAL_SKILL_LEVELS)

View File

@@ -22,6 +22,7 @@ import org.l2jmobius.Config;
import org.l2jmobius.gameserver.data.xml.impl.SkillData; import org.l2jmobius.gameserver.data.xml.impl.SkillData;
import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.base.SubClass;
import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.ListenerRegisterType; import org.l2jmobius.gameserver.model.events.ListenerRegisterType;
import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent; import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
@@ -53,6 +54,8 @@ public class Gallias extends AbstractNpcAI
private static final int[] SUB_SKILL_LEVELS = {65, 70, 75, 80}; private static final int[] SUB_SKILL_LEVELS = {65, 70, 75, 80};
private static final int[] DUAL_SKILL_LEVELS = {85, 90, 95, 99, 101, 103, 105}; private static final int[] DUAL_SKILL_LEVELS = {85, 90, 95, 99, 101, 103, 105};
// @formatter:on // @formatter:on
private static final String SUB_CERTIFICATE_COUNT_VAR = "SUB_CERTIFICATE_COUNT";
private static final String DUAL_CERTIFICATE_COUNT_VAR = "DUAL_CERTIFICATE_COUNT";
private Gallias() private Gallias()
{ {
@@ -167,8 +170,14 @@ public class Gallias extends AbstractNpcAI
} }
else else
{ {
final int subId = player.getClassId().getId();
final int currentCount = player.getVariables().getInt(SUB_CERTIFICATE_COUNT_VAR + subId, 0);
if (currentCount < SUB_SKILL_LEVELS.length)
{
player.getVariables().set(SUB_CERTIFICATE_COUNT_VAR + subId, currentCount + 1);
vars.set(getSubSkillVariableName(player, level), true); vars.set(getSubSkillVariableName(player, level), true);
giveItems(player, SUB_CERTIFICATE, 1); giveItems(player, SUB_CERTIFICATE, 1);
}
htmltext = "34514-20.html"; htmltext = "34514-20.html";
} }
break; break;
@@ -205,6 +214,10 @@ public class Gallias extends AbstractNpcAI
htmltext = null; // TODO: Unknown html htmltext = null; // TODO: Unknown html
takeItems(player, SUB_CERTIFICATE, -1); takeItems(player, SUB_CERTIFICATE, -1);
takeItems(player, Inventory.ADENA_ID, Config.FEE_DELETE_SUBCLASS_SKILLS); takeItems(player, Inventory.ADENA_ID, Config.FEE_DELETE_SUBCLASS_SKILLS);
for (SubClass subclass : player.getSubClasses().values())
{
player.getVariables().remove(SUB_CERTIFICATE_COUNT_VAR + subclass.getClassId());
}
final PlayerVariables vars = player.getVariables(); final PlayerVariables vars = player.getVariables();
for (int i = 1; i <= 3; i++) for (int i = 1; i <= 3; i++)
@@ -256,8 +269,13 @@ public class Gallias extends AbstractNpcAI
} }
else else
{ {
final int currentCount = player.getVariables().getInt(DUAL_CERTIFICATE_COUNT_VAR, 0);
if (currentCount < DUAL_SKILL_LEVELS.length)
{
player.getVariables().set(DUAL_CERTIFICATE_COUNT_VAR, currentCount + 1);
vars.set(getDualSkillVariableName(level), true); vars.set(getDualSkillVariableName(level), true);
giveItems(player, DUAL_CERTIFICATE, 1); giveItems(player, DUAL_CERTIFICATE, 1);
}
htmltext = getHtm(player, "34514-29.html"); htmltext = getHtm(player, "34514-29.html");
} }
htmltext = htmltext.replace("%level%", String.valueOf(level)); htmltext = htmltext.replace("%level%", String.valueOf(level));
@@ -305,6 +323,7 @@ public class Gallias extends AbstractNpcAI
htmltext = null; // TODO: Unknown html htmltext = null; // TODO: Unknown html
takeItems(player, DUAL_CERTIFICATE, -1); takeItems(player, DUAL_CERTIFICATE, -1);
takeItems(player, Inventory.ADENA_ID, Config.FEE_DELETE_DUALCLASS_SKILLS); takeItems(player, Inventory.ADENA_ID, Config.FEE_DELETE_DUALCLASS_SKILLS);
player.getVariables().remove(DUAL_CERTIFICATE_COUNT_VAR);
final PlayerVariables vars = player.getVariables(); final PlayerVariables vars = player.getVariables();
for (int lv : DUAL_SKILL_LEVELS) for (int lv : DUAL_SKILL_LEVELS)

View File

@@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.data.xml.impl.SkillData;
import org.l2jmobius.gameserver.enums.Race; import org.l2jmobius.gameserver.enums.Race;
import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.base.SubClass;
import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.ListenerRegisterType; import org.l2jmobius.gameserver.model.events.ListenerRegisterType;
import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent; import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
@@ -51,6 +52,8 @@ public class Trandon extends AbstractNpcAI
private static final int[] SUB_SKILL_LEVELS = {65, 70, 75, 80}; private static final int[] SUB_SKILL_LEVELS = {65, 70, 75, 80};
private static final int[] DUAL_SKILL_LEVELS = {85, 90, 95, 99, 101, 103, 105}; private static final int[] DUAL_SKILL_LEVELS = {85, 90, 95, 99, 101, 103, 105};
// @formatter:on // @formatter:on
private static final String SUB_CERTIFICATE_COUNT_VAR = "SUB_CERTIFICATE_COUNT";
private static final String DUAL_CERTIFICATE_COUNT_VAR = "DUAL_CERTIFICATE_COUNT";
private Trandon() private Trandon()
{ {
@@ -153,8 +156,14 @@ public class Trandon extends AbstractNpcAI
} }
else else
{ {
final int subId = player.getClassId().getId();
final int currentCount = player.getVariables().getInt(SUB_CERTIFICATE_COUNT_VAR + subId, 0);
if (currentCount < SUB_SKILL_LEVELS.length)
{
player.getVariables().set(SUB_CERTIFICATE_COUNT_VAR + subId, currentCount + 1);
vars.set(getSubSkillVariableName(player, level), true); vars.set(getSubSkillVariableName(player, level), true);
giveItems(player, SUB_CERTIFICATE, 1); giveItems(player, SUB_CERTIFICATE, 1);
}
htmltext = "33490-20.html"; htmltext = "33490-20.html";
} }
break; break;
@@ -200,6 +209,10 @@ public class Trandon extends AbstractNpcAI
htmltext = null; // TODO: Unknown html htmltext = null; // TODO: Unknown html
takeItems(player, SUB_CERTIFICATE, -1); takeItems(player, SUB_CERTIFICATE, -1);
takeItems(player, Inventory.ADENA_ID, Config.FEE_DELETE_SUBCLASS_SKILLS); takeItems(player, Inventory.ADENA_ID, Config.FEE_DELETE_SUBCLASS_SKILLS);
for (SubClass subclass : player.getSubClasses().values())
{
player.getVariables().remove(SUB_CERTIFICATE_COUNT_VAR + subclass.getClassId());
}
final PlayerVariables vars = player.getVariables(); final PlayerVariables vars = player.getVariables();
for (int i = 1; i <= 3; i++) for (int i = 1; i <= 3; i++)
@@ -251,8 +264,13 @@ public class Trandon extends AbstractNpcAI
} }
else else
{ {
final int currentCount = player.getVariables().getInt(DUAL_CERTIFICATE_COUNT_VAR, 0);
if (currentCount < DUAL_SKILL_LEVELS.length)
{
player.getVariables().set(DUAL_CERTIFICATE_COUNT_VAR, currentCount + 1);
vars.set(getDualSkillVariableName(level), true); vars.set(getDualSkillVariableName(level), true);
giveItems(player, DUAL_CERTIFICATE, 1); giveItems(player, DUAL_CERTIFICATE, 1);
}
htmltext = getHtm(player, "33490-29.html"); htmltext = getHtm(player, "33490-29.html");
} }
htmltext = htmltext.replace("%level%", String.valueOf(level)); htmltext = htmltext.replace("%level%", String.valueOf(level));
@@ -300,6 +318,7 @@ public class Trandon extends AbstractNpcAI
htmltext = null; // TODO: Unknown html htmltext = null; // TODO: Unknown html
takeItems(player, DUAL_CERTIFICATE, -1); takeItems(player, DUAL_CERTIFICATE, -1);
takeItems(player, Inventory.ADENA_ID, Config.FEE_DELETE_DUALCLASS_SKILLS); takeItems(player, Inventory.ADENA_ID, Config.FEE_DELETE_DUALCLASS_SKILLS);
player.getVariables().remove(DUAL_CERTIFICATE_COUNT_VAR);
final PlayerVariables vars = player.getVariables(); final PlayerVariables vars = player.getVariables();
for (int lv : DUAL_SKILL_LEVELS) for (int lv : DUAL_SKILL_LEVELS)