Code format braces.
This commit is contained in:
@@ -257,17 +257,25 @@ public final class BeastFarm extends AbstractNpcAI
|
||||
switch (nextNpcId)
|
||||
{
|
||||
case 18869:
|
||||
{
|
||||
name = name.replace("%name%", "Alpine Kookaburra");
|
||||
break;
|
||||
}
|
||||
case 18870:
|
||||
{
|
||||
name = name.replace("%name%", "Alpine Cougar");
|
||||
break;
|
||||
}
|
||||
case 18871:
|
||||
{
|
||||
name = name.replace("%name%", "Alpine Buffalo");
|
||||
break;
|
||||
}
|
||||
case 18872:
|
||||
{
|
||||
name = name.replace("%name%", "Alpine Grendel");
|
||||
break;
|
||||
}
|
||||
}
|
||||
nextNpc.setName(name);
|
||||
nextNpc.broadcastPacket(new AbstractNpcInfo.NpcInfo(nextNpc, player));
|
||||
|
||||
@@ -256,14 +256,20 @@ public final class DragonValley extends AbstractNpcAI
|
||||
switch (moraleBoostLv)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
MORALE_BOOST1.getSkill().applyEffects(member, member);
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
MORALE_BOOST2.getSkill().applyEffects(member, member);
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
MORALE_BOOST3.getSkill().applyEffects(member, member);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -120,21 +120,30 @@ public final class PlainsOfLizardman extends AbstractNpcAI
|
||||
switch (npc.getId())
|
||||
{
|
||||
case TANTA_SUMMONER:
|
||||
{
|
||||
if (!npc.isAffectedBySkill(DEMOTIVATION_HEX.getSkillId()))
|
||||
{
|
||||
npc.doCast(DEMOTIVATION_HEX.getSkill());
|
||||
}
|
||||
break;
|
||||
}
|
||||
case RAINBOW_FROG:
|
||||
{
|
||||
castSkill(npc, attacker, RAINBOW_FROG_SKILL);
|
||||
break;
|
||||
}
|
||||
case ENERGY_PLANT:
|
||||
{
|
||||
castSkill(npc, attacker, ENERGY_PLANT_SKILL);
|
||||
break;
|
||||
}
|
||||
case STICKY_MUSHROOM:
|
||||
{
|
||||
castSkill(npc, attacker, STICKY_MUSHROOM_SKILL);
|
||||
break;
|
||||
}
|
||||
case FANTASY_MUSHROOM:
|
||||
{
|
||||
if (npc.isScriptValue(0))
|
||||
{
|
||||
npc.setScriptValue(1);
|
||||
@@ -154,6 +163,7 @@ public final class PlainsOfLizardman extends AbstractNpcAI
|
||||
startQuestTimer("fantasy_mushroom", 4000, npc, attacker);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return super.onAttack(npc, attacker, damage, isSummon);
|
||||
}
|
||||
|
||||
@@ -78,15 +78,21 @@ public final class SilentValley extends AbstractNpcAI
|
||||
switch (event)
|
||||
{
|
||||
case "CLEAR":
|
||||
{
|
||||
npc.doDie(null);
|
||||
break;
|
||||
}
|
||||
case "CLEAR_EVENT":
|
||||
{
|
||||
npc.broadcastEvent("CLEAR_ALL_INSTANT", 2000, null);
|
||||
npc.doDie(null);
|
||||
break;
|
||||
}
|
||||
case "SPAWN_CHEST":
|
||||
{
|
||||
addSpawn(CHEST, npc.getX() - 100, npc.getY(), npc.getZ() - 100, 0, false, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
@@ -191,11 +197,15 @@ public final class SilentValley extends AbstractNpcAI
|
||||
switch (eventName)
|
||||
{
|
||||
case "CLEAR_ALL":
|
||||
{
|
||||
startQuestTimer("CLEAR", 60000, receiver, null);
|
||||
break;
|
||||
}
|
||||
case "CLEAR_ALL_INSTANT":
|
||||
{
|
||||
receiver.doDie(null);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onEventReceived(eventName, sender, receiver, reference);
|
||||
|
||||
@@ -121,6 +121,7 @@ public final class StakatoNest extends AbstractNpcAI
|
||||
switch (npc.getId())
|
||||
{
|
||||
case STAKATO_NURSE:
|
||||
{
|
||||
monster = checkMinion(npc);
|
||||
if (monster != null)
|
||||
{
|
||||
@@ -132,14 +133,18 @@ public final class StakatoNest extends AbstractNpcAI
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case STAKATO_BABY:
|
||||
{
|
||||
monster = ((L2MonsterInstance) npc).getLeader();
|
||||
if ((monster != null) && !monster.isDead())
|
||||
{
|
||||
startQuestTimer("nurse_change", 5000, monster, killer);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case STAKATO_MALE:
|
||||
{
|
||||
monster = checkMinion(npc);
|
||||
if (monster != null)
|
||||
{
|
||||
@@ -151,14 +156,18 @@ public final class StakatoNest extends AbstractNpcAI
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case STAKATO_FEMALE:
|
||||
{
|
||||
monster = ((L2MonsterInstance) npc).getLeader();
|
||||
if ((monster != null) && !monster.isDead())
|
||||
{
|
||||
startQuestTimer("male_change", 5000, monster, killer);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case STAKATO_CHIEF:
|
||||
{
|
||||
if (killer.isInParty())
|
||||
{
|
||||
final List<L2PcInstance> party = killer.getParty().getMembers();
|
||||
@@ -172,6 +181,7 @@ public final class StakatoNest extends AbstractNpcAI
|
||||
giveCocoon(killer, npc);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return super.onKill(npc, killer, isSummon);
|
||||
}
|
||||
@@ -200,11 +210,15 @@ public final class StakatoNest extends AbstractNpcAI
|
||||
switch (event)
|
||||
{
|
||||
case "nurse_change":
|
||||
{
|
||||
npcId = STAKATO_NURSE_2;
|
||||
break;
|
||||
}
|
||||
case "male_change":
|
||||
{
|
||||
npcId = STAKATO_MALE_2;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (npcId > 0)
|
||||
{
|
||||
|
||||
@@ -277,14 +277,20 @@ public class DrChaos extends AbstractNpcAI
|
||||
switch (chance)
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
message = "Bwah-ha-ha! Your doom is at hand! Behold the Ultra Secret Super Weapon!";
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
{
|
||||
message = "Foolish, insignificant creatures! How dare you challenge me!";
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
message = "I see that none will challenge me now!";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Make him speak.
|
||||
|
||||
@@ -201,20 +201,30 @@ public final class CastleChamberlain extends AbstractNpcAI
|
||||
switch (func)
|
||||
{
|
||||
case Castle.FUNC_RESTORE_EXP:
|
||||
{
|
||||
fee = (level == 45) ? Config.CS_EXPREG1_FEE : Config.CS_EXPREG2_FEE;
|
||||
break;
|
||||
}
|
||||
case Castle.FUNC_RESTORE_HP:
|
||||
{
|
||||
fee = (level == 300) ? Config.CS_HPREG1_FEE : Config.CS_HPREG2_FEE;
|
||||
break;
|
||||
}
|
||||
case Castle.FUNC_RESTORE_MP:
|
||||
{
|
||||
fee = (level == 40) ? Config.CS_MPREG1_FEE : Config.CS_MPREG2_FEE;
|
||||
break;
|
||||
}
|
||||
case Castle.FUNC_SUPPORT:
|
||||
{
|
||||
fee = (level == 5) ? Config.CS_SUPPORT1_FEE : Config.CS_SUPPORT2_FEE;
|
||||
break;
|
||||
}
|
||||
case Castle.FUNC_TELEPORT:
|
||||
{
|
||||
fee = (level == 1) ? Config.CS_TELE1_FEE : Config.CS_TELE2_FEE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return fee;
|
||||
}
|
||||
@@ -225,20 +235,30 @@ public final class CastleChamberlain extends AbstractNpcAI
|
||||
switch (func)
|
||||
{
|
||||
case Castle.FUNC_RESTORE_EXP:
|
||||
{
|
||||
ratio = Config.CS_EXPREG_FEE_RATIO;
|
||||
break;
|
||||
}
|
||||
case Castle.FUNC_RESTORE_HP:
|
||||
{
|
||||
ratio = Config.CS_HPREG_FEE_RATIO;
|
||||
break;
|
||||
}
|
||||
case Castle.FUNC_RESTORE_MP:
|
||||
{
|
||||
ratio = Config.CS_MPREG_FEE_RATIO;
|
||||
break;
|
||||
}
|
||||
case Castle.FUNC_SUPPORT:
|
||||
{
|
||||
ratio = Config.CS_SUPPORT_FEE_RATIO;
|
||||
break;
|
||||
}
|
||||
case Castle.FUNC_TELEPORT:
|
||||
{
|
||||
ratio = Config.CS_TELE_FEE_RATIO;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return ratio;
|
||||
}
|
||||
@@ -253,14 +273,20 @@ public final class CastleChamberlain extends AbstractNpcAI
|
||||
switch (level)
|
||||
{
|
||||
case 2:
|
||||
{
|
||||
price = Config.OUTER_DOOR_UPGRADE_PRICE2;
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
price = Config.OUTER_DOOR_UPGRADE_PRICE3;
|
||||
break;
|
||||
}
|
||||
case 5:
|
||||
{
|
||||
price = Config.OUTER_DOOR_UPGRADE_PRICE5;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -269,14 +295,20 @@ public final class CastleChamberlain extends AbstractNpcAI
|
||||
switch (level)
|
||||
{
|
||||
case 2:
|
||||
{
|
||||
price = Config.INNER_DOOR_UPGRADE_PRICE2;
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
price = Config.INNER_DOOR_UPGRADE_PRICE3;
|
||||
break;
|
||||
}
|
||||
case 5:
|
||||
{
|
||||
price = Config.INNER_DOOR_UPGRADE_PRICE5;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -285,14 +317,20 @@ public final class CastleChamberlain extends AbstractNpcAI
|
||||
switch (level)
|
||||
{
|
||||
case 2:
|
||||
{
|
||||
price = Config.WALL_UPGRADE_PRICE2;
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
price = Config.WALL_UPGRADE_PRICE3;
|
||||
break;
|
||||
}
|
||||
case 5:
|
||||
{
|
||||
price = Config.WALL_UPGRADE_PRICE5;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -300,11 +338,15 @@ public final class CastleChamberlain extends AbstractNpcAI
|
||||
switch (SevenSigns.getInstance().getSealOwner(SevenSigns.SEAL_STRIFE))
|
||||
{
|
||||
case SevenSigns.CABAL_DUSK:
|
||||
{
|
||||
price *= 3;
|
||||
break;
|
||||
}
|
||||
case SevenSigns.CABAL_DAWN:
|
||||
{
|
||||
price *= 0.8;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return price;
|
||||
}
|
||||
@@ -315,14 +357,20 @@ public final class CastleChamberlain extends AbstractNpcAI
|
||||
switch (SevenSigns.getInstance().getSealOwner(seal))
|
||||
{
|
||||
case SevenSigns.CABAL_DAWN:
|
||||
{
|
||||
npcString = "1000511";
|
||||
break;
|
||||
}
|
||||
case SevenSigns.CABAL_DUSK:
|
||||
{
|
||||
npcString = "1000510";
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
npcString = "1000512";
|
||||
break;
|
||||
}
|
||||
}
|
||||
return npcString;
|
||||
}
|
||||
@@ -333,14 +381,20 @@ public final class CastleChamberlain extends AbstractNpcAI
|
||||
switch (SevenSigns.getInstance().getSealOwner(SevenSigns.SEAL_STRIFE))
|
||||
{
|
||||
case SevenSigns.CABAL_DAWN:
|
||||
{
|
||||
taxLimit = 25;
|
||||
break;
|
||||
}
|
||||
case SevenSigns.CABAL_DUSK:
|
||||
{
|
||||
taxLimit = 5;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
taxLimit = 15;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return taxLimit;
|
||||
}
|
||||
@@ -351,27 +405,39 @@ public final class CastleChamberlain extends AbstractNpcAI
|
||||
switch (level)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
price = Config.TRAP_UPGRADE_PRICE1;
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
price = Config.TRAP_UPGRADE_PRICE2;
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
price = Config.TRAP_UPGRADE_PRICE3;
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
price = Config.TRAP_UPGRADE_PRICE4;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
switch (SevenSigns.getInstance().getSealOwner(SevenSigns.SEAL_STRIFE))
|
||||
{
|
||||
case SevenSigns.CABAL_DUSK:
|
||||
{
|
||||
price *= 3;
|
||||
break;
|
||||
}
|
||||
case SevenSigns.CABAL_DAWN:
|
||||
{
|
||||
price *= 0.8;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return price;
|
||||
}
|
||||
@@ -428,14 +494,20 @@ public final class CastleChamberlain extends AbstractNpcAI
|
||||
switch (fortress.getFortState())
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
fortStatus = "1300122";
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
fortStatus = "1300124";
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
fortStatus = "1300123";
|
||||
break;
|
||||
}
|
||||
}
|
||||
sb.append("<fstring>1300" + fortId + "</fstring>");
|
||||
sb.append(" (<fstring>" + fortType + "</fstring>)");
|
||||
@@ -540,7 +612,6 @@ public final class CastleChamberlain extends AbstractNpcAI
|
||||
{
|
||||
doors[i] = Integer.parseInt(st.nextToken());
|
||||
}
|
||||
|
||||
final L2DoorInstance door = castle.getDoor(doors[0]);
|
||||
if (door != null)
|
||||
{
|
||||
@@ -634,7 +705,6 @@ public final class CastleChamberlain extends AbstractNpcAI
|
||||
final int level = Integer.parseInt(st.nextToken());
|
||||
final int price = getTrapUpgradePrice(level);
|
||||
final int currentLevel = castle.getTrapUpgradeLevel(trapIndex);
|
||||
|
||||
if (currentLevel >= level)
|
||||
{
|
||||
final NpcHtmlMessage html = getHtmlPacket(player, npc, "chamberlain-19.html");
|
||||
@@ -674,19 +744,24 @@ public final class CastleChamberlain extends AbstractNpcAI
|
||||
html.replace("%clanleadername%", clan.getLeaderName());
|
||||
html.replace("%clanname%", clan.getName());
|
||||
html.replace("%castlename%", String.valueOf(1001000 + castle.getResidenceId()));
|
||||
|
||||
switch (SevenSigns.getInstance().getCurrentPeriod())
|
||||
{
|
||||
case SevenSigns.PERIOD_COMP_RECRUITING:
|
||||
{
|
||||
html.replace("%ss_event%", "1000509");
|
||||
break;
|
||||
}
|
||||
case SevenSigns.PERIOD_COMPETITION:
|
||||
{
|
||||
html.replace("%ss_event%", "1000507");
|
||||
break;
|
||||
}
|
||||
case SevenSigns.PERIOD_SEAL_VALIDATION:
|
||||
case SevenSigns.PERIOD_COMP_RESULTS:
|
||||
{
|
||||
html.replace("%ss_event%", "1000508");
|
||||
break;
|
||||
}
|
||||
}
|
||||
html.replace("%ss_avarice%", getSealOwner(1));
|
||||
html.replace("%ss_gnosis%", getSealOwner(2));
|
||||
@@ -779,7 +854,6 @@ public final class CastleChamberlain extends AbstractNpcAI
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final NpcHtmlMessage html = getHtmlPacket(player, npc, "castlemanagevault.html");
|
||||
html.replace("%tax_income%", Util.formatAdena(castle.getTreasury()));
|
||||
html.replace("%tax_income_reserved%", "0"); // TODO: Implement me!
|
||||
@@ -1119,7 +1193,6 @@ public final class CastleChamberlain extends AbstractNpcAI
|
||||
{
|
||||
html = getHtmlPacket(player, npc, "castlenotenoughmp.html");
|
||||
}
|
||||
|
||||
html.replace("%MPLeft%", Integer.toString((int) npc.getCurrentMp()));
|
||||
player.sendPacket(html);
|
||||
}
|
||||
@@ -1334,15 +1407,22 @@ public final class CastleChamberlain extends AbstractNpcAI
|
||||
switch (evt.getRequest())
|
||||
{
|
||||
case 3: // Seed info
|
||||
{
|
||||
player.sendPacket(new ExShowSeedInfo(castleId, evt.isNextPeriod(), true));
|
||||
break;
|
||||
}
|
||||
case 4: // Crop info
|
||||
{
|
||||
player.sendPacket(new ExShowCropInfo(castleId, evt.isNextPeriod(), true));
|
||||
break;
|
||||
}
|
||||
case 5: // Basic info
|
||||
{
|
||||
player.sendPacket(new ExShowManorDefaultInfo(true));
|
||||
break;
|
||||
}
|
||||
case 7: // Seed settings
|
||||
{
|
||||
if (manor.isManorApproved())
|
||||
{
|
||||
player.sendPacket(SystemMessageId.A_MANOR_CANNOT_BE_SET_UP_BETWEEN_4_30_AM_AND_8_PM);
|
||||
@@ -1350,7 +1430,9 @@ public final class CastleChamberlain extends AbstractNpcAI
|
||||
}
|
||||
player.sendPacket(new ExShowSeedSetting(castleId));
|
||||
break;
|
||||
}
|
||||
case 8: // Crop settings
|
||||
{
|
||||
if (manor.isManorApproved())
|
||||
{
|
||||
player.sendPacket(SystemMessageId.A_MANOR_CANNOT_BE_SET_UP_BETWEEN_4_30_AM_AND_8_PM);
|
||||
@@ -1358,8 +1440,11 @@ public final class CastleChamberlain extends AbstractNpcAI
|
||||
}
|
||||
player.sendPacket(new ExShowCropSetting(castleId));
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
_log.warning(getClass().getSimpleName() + ": Player " + player.getName() + " (" + player.getObjectId() + ") send unknown request id " + evt.getRequest() + "!");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -126,13 +126,19 @@ public final class CastleMercenaryManager extends AbstractNpcAI
|
||||
switch (SevenSigns.getInstance().getSealOwner(SevenSigns.SEAL_STRIFE))
|
||||
{
|
||||
case SevenSigns.CABAL_DUSK:
|
||||
{
|
||||
htmltext = "mercmanager-dusk.html";
|
||||
break;
|
||||
}
|
||||
case SevenSigns.CABAL_DAWN:
|
||||
{
|
||||
htmltext = "mercmanager-dawn.html";
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
htmltext = "mercmanager.html";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,18 +41,23 @@ public final class Rafforty extends AbstractNpcAI
|
||||
switch (event)
|
||||
{
|
||||
case "32020-01.html":
|
||||
{
|
||||
if (!hasQuestItems(player, NECKLACE))
|
||||
{
|
||||
htmltext = "32020-02.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "32020-04.html":
|
||||
{
|
||||
if (!hasQuestItems(player, BOTTLE))
|
||||
{
|
||||
htmltext = "32020-05.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "32020-07.html":
|
||||
{
|
||||
if (!hasQuestItems(player, BOTTLE, NECKLACE))
|
||||
{
|
||||
return "32020-08.html";
|
||||
@@ -61,6 +66,7 @@ public final class Rafforty extends AbstractNpcAI
|
||||
takeItems(player, BOTTLE, 1);
|
||||
giveItems(player, BLESSED_NECKLACE, 1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@@ -357,9 +357,11 @@ public final class RainbowSpringsChateau extends ClanHallSiegeEngine
|
||||
switch (npc.getId())
|
||||
{
|
||||
case MESSENGER:
|
||||
{
|
||||
switch (event)
|
||||
{
|
||||
case "register":
|
||||
{
|
||||
if (!player.isClanLeader())
|
||||
{
|
||||
html = "messenger_yetti010.htm";
|
||||
@@ -397,7 +399,9 @@ public final class RainbowSpringsChateau extends ClanHallSiegeEngine
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "cancel":
|
||||
{
|
||||
if (!player.isClanLeader())
|
||||
{
|
||||
html = "messenger_yetti010.htm";
|
||||
@@ -416,7 +420,9 @@ public final class RainbowSpringsChateau extends ClanHallSiegeEngine
|
||||
html = "messenger_yetti018.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "unregister":
|
||||
{
|
||||
if (_rainbow.isRegistering())
|
||||
{
|
||||
if (_warDecreesCount.containsKey(clan.getId()))
|
||||
@@ -436,9 +442,12 @@ public final class RainbowSpringsChateau extends ClanHallSiegeEngine
|
||||
html = "messenger_yetti020.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case CARETAKER:
|
||||
{
|
||||
if (event.equals("portToArena"))
|
||||
{
|
||||
final L2Party party = player.getParty();
|
||||
@@ -470,7 +479,6 @@ public final class RainbowSpringsChateau extends ClanHallSiegeEngine
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (nonClanMemberInParty)
|
||||
{
|
||||
html = "game_manager007.htm";
|
||||
@@ -510,6 +518,7 @@ public final class RainbowSpringsChateau extends ClanHallSiegeEngine
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (event.startsWith("enterText"))
|
||||
|
||||
@@ -98,20 +98,30 @@ public final class BanditStronghold extends FlagWar
|
||||
switch (flag)
|
||||
{
|
||||
case 35423:
|
||||
{
|
||||
result = "messenger_flag1.htm";
|
||||
break;
|
||||
}
|
||||
case 35424:
|
||||
{
|
||||
result = "messenger_flag2.htm";
|
||||
break;
|
||||
}
|
||||
case 35425:
|
||||
{
|
||||
result = "messenger_flag3.htm";
|
||||
break;
|
||||
}
|
||||
case 35426:
|
||||
{
|
||||
result = "messenger_flag4.htm";
|
||||
break;
|
||||
}
|
||||
case 35427:
|
||||
{
|
||||
result = "messenger_flag5.htm";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
@@ -125,20 +135,30 @@ public final class BanditStronghold extends FlagWar
|
||||
switch (ally)
|
||||
{
|
||||
case 35428:
|
||||
{
|
||||
result = "messenger_ally1result.htm";
|
||||
break;
|
||||
}
|
||||
case 35429:
|
||||
{
|
||||
result = "messenger_ally2result.htm";
|
||||
break;
|
||||
}
|
||||
case 35430:
|
||||
{
|
||||
result = "messenger_ally3result.htm";
|
||||
break;
|
||||
}
|
||||
case 35431:
|
||||
{
|
||||
result = "messenger_ally4result.htm";
|
||||
break;
|
||||
}
|
||||
case 35432:
|
||||
{
|
||||
result = "messenger_ally5result.htm";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
|
||||
@@ -98,20 +98,30 @@ public final class WildBeastReserve extends FlagWar
|
||||
switch (flag)
|
||||
{
|
||||
case 35607:
|
||||
{
|
||||
result = "messenger_flag1.htm";
|
||||
break;
|
||||
}
|
||||
case 35608:
|
||||
{
|
||||
result = "messenger_flag2.htm";
|
||||
break;
|
||||
}
|
||||
case 35609:
|
||||
{
|
||||
result = "messenger_flag3.htm";
|
||||
break;
|
||||
}
|
||||
case 35610:
|
||||
{
|
||||
result = "messenger_flag4.htm";
|
||||
break;
|
||||
}
|
||||
case 35611:
|
||||
{
|
||||
result = "messenger_flag5.htm";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
@@ -125,20 +135,30 @@ public final class WildBeastReserve extends FlagWar
|
||||
switch (ally)
|
||||
{
|
||||
case 35618:
|
||||
{
|
||||
result = "messenger_ally1result.htm";
|
||||
break;
|
||||
}
|
||||
case 35619:
|
||||
{
|
||||
result = "messenger_ally2result.htm";
|
||||
break;
|
||||
}
|
||||
case 35620:
|
||||
{
|
||||
result = "messenger_ally3result.htm";
|
||||
break;
|
||||
}
|
||||
case 35621:
|
||||
{
|
||||
result = "messenger_ally4result.htm";
|
||||
break;
|
||||
}
|
||||
case 35622:
|
||||
{
|
||||
result = "messenger_ally5result.htm";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
|
||||
@@ -633,34 +633,52 @@ public class NpcBuffer extends Quest
|
||||
switch (buffType)
|
||||
{
|
||||
case "buff":
|
||||
{
|
||||
price = BUFF_PRICE;
|
||||
break;
|
||||
}
|
||||
case "resist":
|
||||
{
|
||||
price = RESIST_PRICE;
|
||||
break;
|
||||
}
|
||||
case "song":
|
||||
{
|
||||
price = SONG_PRICE;
|
||||
break;
|
||||
}
|
||||
case "dance":
|
||||
{
|
||||
price = DANCE_PRICE;
|
||||
break;
|
||||
}
|
||||
case "chant":
|
||||
{
|
||||
price = CHANT_PRICE;
|
||||
break;
|
||||
}
|
||||
case "others":
|
||||
{
|
||||
price = OTHERS_PRICE;
|
||||
break;
|
||||
}
|
||||
case "special":
|
||||
{
|
||||
price = SPECIAL_PRICE;
|
||||
break;
|
||||
}
|
||||
case "cubic":
|
||||
{
|
||||
price = CUBIC_PRICE;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
if (DEBUG)
|
||||
{
|
||||
throw new RuntimeException();
|
||||
}
|
||||
}
|
||||
}
|
||||
HTML_MESSAGE += "All special buffs cost <font color=LEVEL>" + formatAdena(price) + "</font> adena!";
|
||||
}
|
||||
@@ -1196,6 +1214,7 @@ public class NpcBuffer extends Quest
|
||||
switch (eventParam0)
|
||||
{
|
||||
case "reloadscript":
|
||||
{
|
||||
if (eventParam1.equals("1"))
|
||||
{
|
||||
return reloadConfig(st);
|
||||
@@ -1208,38 +1227,62 @@ public class NpcBuffer extends Quest
|
||||
{
|
||||
throw new RuntimeException();
|
||||
}
|
||||
|
||||
}
|
||||
case "redirect":
|
||||
{
|
||||
switch (eventParam1)
|
||||
{
|
||||
case "main":
|
||||
{
|
||||
return rebuildMainHtml(st);
|
||||
}
|
||||
case "manage_buffs":
|
||||
{
|
||||
return viewAllBuffTypes();
|
||||
}
|
||||
case "view_buffs":
|
||||
{
|
||||
return buildHtml("buff");
|
||||
}
|
||||
case "view_resists":
|
||||
{
|
||||
return buildHtml("resist");
|
||||
}
|
||||
case "view_songs":
|
||||
{
|
||||
return buildHtml("song");
|
||||
}
|
||||
case "view_dances":
|
||||
{
|
||||
return buildHtml("dance");
|
||||
}
|
||||
case "view_chants":
|
||||
{
|
||||
return buildHtml("chant");
|
||||
}
|
||||
case "view_others":
|
||||
{
|
||||
return buildHtml("others");
|
||||
}
|
||||
case "view_special":
|
||||
{
|
||||
return buildHtml("special");
|
||||
}
|
||||
case "view_cubic":
|
||||
{
|
||||
return buildHtml("cubic");
|
||||
}
|
||||
default:
|
||||
{
|
||||
if (DEBUG)
|
||||
{
|
||||
throw new RuntimeException();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
case "buffpet":
|
||||
{
|
||||
if ((int) (System.currentTimeMillis() / 1000) > st.getInt("blockUntilTime"))
|
||||
{
|
||||
st.set("Pet-On-Off", eventParam1);
|
||||
@@ -1249,7 +1292,7 @@ public class NpcBuffer extends Quest
|
||||
}
|
||||
}
|
||||
return rebuildMainHtml(st);
|
||||
|
||||
}
|
||||
case "create":
|
||||
{
|
||||
final String param = eventParam1.replaceAll("[ !\"#$%&'()*+,/:;<=>?@\\[\\\\\\]\\^`{|}~]", "");
|
||||
@@ -1274,6 +1317,7 @@ public class NpcBuffer extends Quest
|
||||
}
|
||||
|
||||
case "delete":
|
||||
{
|
||||
try (Connection con = DatabaseFactory.getInstance().getConnection())
|
||||
{
|
||||
PreparedStatement statement = con.prepareStatement("DELETE FROM npcbuffer_scheme_list WHERE id=? LIMIT 1");
|
||||
@@ -1290,23 +1334,35 @@ public class NpcBuffer extends Quest
|
||||
print(e);
|
||||
}
|
||||
return rebuildMainHtml(st);
|
||||
|
||||
}
|
||||
case "delete_c":
|
||||
{
|
||||
return "<html><head><title>" + TITLE_NAME + "</title></head><body><center><img src=\"L2UI_CH3.herotower_deco\" width=256 height=32><br>Do you really want to delete '" + eventParam2 + "' scheme?<br><br><button value=\"Yes\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " delete " + eventParam1 + " x x\" width=50 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"><button value=\"No\" action=\"bypass -h Quest " + QUEST_LOADING_INFO + " delete_1 x x x\" width=50 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"><br><font color=303030>" + TITLE_NAME + "</font></center></body></html>";
|
||||
|
||||
}
|
||||
case "create_1":
|
||||
{
|
||||
return createScheme();
|
||||
}
|
||||
case "edit_1":
|
||||
{
|
||||
return editScheme(player);
|
||||
}
|
||||
case "delete_1":
|
||||
{
|
||||
return deleteScheme(player);
|
||||
}
|
||||
case "manage_scheme_1":
|
||||
{
|
||||
return viewAllSchemeBuffs(eventParam1, eventParam2, "add");
|
||||
}
|
||||
case "manage_scheme_2":
|
||||
{
|
||||
return viewAllSchemeBuffs(eventParam1, eventParam2, "remove");
|
||||
}
|
||||
case "manage_scheme_select":
|
||||
{
|
||||
return getOptionList(eventParam1);
|
||||
|
||||
}
|
||||
case "remove_buff":
|
||||
{
|
||||
final String[] split = eventParam1.split("_");
|
||||
@@ -1374,9 +1430,11 @@ public class NpcBuffer extends Quest
|
||||
}
|
||||
|
||||
case "edit_buff_list":
|
||||
{
|
||||
return viewAllBuffs(eventParam1, eventParam2, eventParam3);
|
||||
|
||||
}
|
||||
case "changeBuffSet":
|
||||
{
|
||||
if (eventParam2.equals(SET_FIGHTER))
|
||||
{
|
||||
eventParam2 = "0";
|
||||
@@ -1398,7 +1456,7 @@ public class NpcBuffer extends Quest
|
||||
throw new RuntimeException();
|
||||
}
|
||||
return manageSelectedSet(eventParam1, eventParam2, eventParam3);
|
||||
|
||||
}
|
||||
case "editSelectedBuff":
|
||||
{
|
||||
eventParam2 = eventParam2.replace("-", " ");
|
||||
@@ -1410,49 +1468,69 @@ public class NpcBuffer extends Quest
|
||||
switch (eventParam3)
|
||||
{
|
||||
case "buff":
|
||||
{
|
||||
typeName = "Buffs";
|
||||
break;
|
||||
}
|
||||
case "resist":
|
||||
{
|
||||
typeName = "Resists";
|
||||
break;
|
||||
}
|
||||
case "song":
|
||||
{
|
||||
typeName = "Songs";
|
||||
break;
|
||||
}
|
||||
case "dance":
|
||||
{
|
||||
typeName = "Dances";
|
||||
break;
|
||||
}
|
||||
case "chant":
|
||||
{
|
||||
typeName = "Chants";
|
||||
break;
|
||||
}
|
||||
case "others":
|
||||
{
|
||||
typeName = "Others_Buffs";
|
||||
break;
|
||||
}
|
||||
case "special":
|
||||
{
|
||||
typeName = "Special_Buffs";
|
||||
break;
|
||||
}
|
||||
case "cubic":
|
||||
{
|
||||
typeName = "Cubics";
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
throw new RuntimeException();
|
||||
}
|
||||
}
|
||||
return viewAllBuffs(eventParam3, typeName, page);
|
||||
}
|
||||
|
||||
case "viewSelectedConfig":
|
||||
{
|
||||
throw new RuntimeException();
|
||||
|
||||
}
|
||||
case "changeConfig":
|
||||
{
|
||||
throw new RuntimeException();
|
||||
|
||||
}
|
||||
case "heal":
|
||||
{
|
||||
if ((int) (System.currentTimeMillis() / 1000) > st.getInt("blockUntilTime"))
|
||||
{
|
||||
if (player.isInCombat() && !ENABLE_HEAL_IN_COMBAT)
|
||||
{
|
||||
return showText(st, "Info", "You can't use the heal function while in combat.", false, "Return", "main");
|
||||
}
|
||||
|
||||
if (getQuestItemsCount(player, CONSUMABLE_ID) < HEAL_PRICE)
|
||||
{
|
||||
return showText(st, "Sorry", "You don't have the enough items:<br>You need: <font color=LEVEL>" + HEAL_PRICE + " " + getItemNameHtml(st, CONSUMABLE_ID) + "!", false, "0", "0");
|
||||
@@ -1480,8 +1558,9 @@ public class NpcBuffer extends Quest
|
||||
}
|
||||
}
|
||||
return SMART_WINDOW ? null : rebuildMainHtml(st);
|
||||
|
||||
}
|
||||
case "removeBuffs":
|
||||
{
|
||||
if ((int) (System.currentTimeMillis() / 1000) > st.getInt("blockUntilTime"))
|
||||
{
|
||||
if (getQuestItemsCount(player, CONSUMABLE_ID) < BUFF_REMOVE_PRICE)
|
||||
@@ -1519,8 +1598,9 @@ public class NpcBuffer extends Quest
|
||||
}
|
||||
}
|
||||
return SMART_WINDOW ? null : rebuildMainHtml(st);
|
||||
|
||||
}
|
||||
case "cast":
|
||||
{
|
||||
if ((int) (System.currentTimeMillis() / 1000) > st.getInt("blockUntilTime"))
|
||||
{
|
||||
final List<Integer> buffs = new ArrayList<>();
|
||||
@@ -1537,6 +1617,7 @@ public class NpcBuffer extends Quest
|
||||
switch (getBuffType(id))
|
||||
{
|
||||
case "buff":
|
||||
{
|
||||
if (ENABLE_BUFFS)
|
||||
{
|
||||
if (isEnabled(id, level))
|
||||
@@ -1546,7 +1627,9 @@ public class NpcBuffer extends Quest
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "resist":
|
||||
{
|
||||
if (ENABLE_RESIST)
|
||||
{
|
||||
if (isEnabled(id, level))
|
||||
@@ -1556,7 +1639,9 @@ public class NpcBuffer extends Quest
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "song":
|
||||
{
|
||||
if (ENABLE_SONGS)
|
||||
{
|
||||
if (isEnabled(id, level))
|
||||
@@ -1566,7 +1651,9 @@ public class NpcBuffer extends Quest
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "dance":
|
||||
{
|
||||
if (ENABLE_DANCES)
|
||||
{
|
||||
if (isEnabled(id, level))
|
||||
@@ -1576,7 +1663,9 @@ public class NpcBuffer extends Quest
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "chant":
|
||||
{
|
||||
if (ENABLE_CHANTS)
|
||||
{
|
||||
if (isEnabled(id, level))
|
||||
@@ -1586,7 +1675,9 @@ public class NpcBuffer extends Quest
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "others":
|
||||
{
|
||||
if (ENABLE_OTHERS)
|
||||
{
|
||||
if (isEnabled(id, level))
|
||||
@@ -1596,7 +1687,9 @@ public class NpcBuffer extends Quest
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "special":
|
||||
{
|
||||
if (ENABLE_SPECIAL)
|
||||
{
|
||||
if (isEnabled(id, level))
|
||||
@@ -1606,11 +1699,14 @@ public class NpcBuffer extends Quest
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
if (DEBUG)
|
||||
{
|
||||
throw new RuntimeException();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
statement.close();
|
||||
@@ -1677,38 +1773,56 @@ public class NpcBuffer extends Quest
|
||||
}
|
||||
}
|
||||
return SMART_WINDOW ? null : rebuildMainHtml(st);
|
||||
|
||||
}
|
||||
case "giveBuffs":
|
||||
{
|
||||
final int cost;
|
||||
switch (eventParam3)
|
||||
{
|
||||
case "buff":
|
||||
{
|
||||
cost = BUFF_PRICE;
|
||||
break;
|
||||
}
|
||||
case "resist":
|
||||
{
|
||||
cost = RESIST_PRICE;
|
||||
break;
|
||||
}
|
||||
case "song":
|
||||
{
|
||||
cost = SONG_PRICE;
|
||||
break;
|
||||
}
|
||||
case "dance":
|
||||
{
|
||||
cost = DANCE_PRICE;
|
||||
break;
|
||||
}
|
||||
case "chant":
|
||||
{
|
||||
cost = CHANT_PRICE;
|
||||
break;
|
||||
}
|
||||
case "others":
|
||||
{
|
||||
cost = OTHERS_PRICE;
|
||||
break;
|
||||
}
|
||||
case "special":
|
||||
{
|
||||
cost = SPECIAL_PRICE;
|
||||
break;
|
||||
}
|
||||
case "cubic":
|
||||
{
|
||||
cost = CUBIC_PRICE;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
throw new RuntimeException();
|
||||
}
|
||||
}
|
||||
|
||||
if ((int) (System.currentTimeMillis() / 1000) > st.getInt("blockUntilTime"))
|
||||
@@ -1786,8 +1900,8 @@ public class NpcBuffer extends Quest
|
||||
}
|
||||
return SMART_WINDOW ? null : buildHtml(eventParam3);
|
||||
}
|
||||
|
||||
case "castBuffSet":
|
||||
{
|
||||
if ((int) (System.currentTimeMillis() / 1000) > st.getInt("blockUntilTime"))
|
||||
{
|
||||
if (!FREE_BUFFS)
|
||||
@@ -1833,7 +1947,6 @@ public class NpcBuffer extends Quest
|
||||
{
|
||||
print(e);
|
||||
}
|
||||
|
||||
player.setTarget(player);
|
||||
player.broadcastPacket(new MagicSkillUse(player, SKILL_BUFF_1, 1, 1000, 0));
|
||||
player.broadcastPacket(new MagicSkillUse(player, SKILL_BUFF_2, 1, 1000, 0));
|
||||
@@ -1869,7 +1982,6 @@ public class NpcBuffer extends Quest
|
||||
{
|
||||
print(e);
|
||||
}
|
||||
|
||||
player.getSummon().setTarget(player.getSummon());
|
||||
player.getSummon().broadcastPacket(new MagicSkillUse(player.getSummon(), SKILL_BUFF_1, 1, 1000, 0));
|
||||
player.getSummon().broadcastPacket(new MagicSkillUse(player.getSummon(), SKILL_BUFF_2, 1, 1000, 0));
|
||||
@@ -1890,7 +2002,7 @@ public class NpcBuffer extends Quest
|
||||
}
|
||||
}
|
||||
return SMART_WINDOW ? null : rebuildMainHtml(st);
|
||||
|
||||
}
|
||||
}
|
||||
return rebuildMainHtml(st);
|
||||
}
|
||||
|
||||
@@ -292,13 +292,19 @@ public class EnergySeeds extends AbstractNpcAI
|
||||
switch (seed)
|
||||
{
|
||||
case INFINITY:
|
||||
{
|
||||
return false;
|
||||
}
|
||||
case DESTRUCTION:
|
||||
{
|
||||
return SoDManager.getInstance().getSoDState() == 2;
|
||||
}
|
||||
case ANNIHILATION_BISTAKON:
|
||||
case ANNIHILATION_REPTILIKON:
|
||||
case ANNIHILATION_COKRAKON:
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -325,25 +331,39 @@ public class EnergySeeds extends AbstractNpcAI
|
||||
switch (npc.getId())
|
||||
{
|
||||
case 18678: // Water
|
||||
{
|
||||
itemId = 14016;
|
||||
break;
|
||||
}
|
||||
case 18679: // Fire
|
||||
{
|
||||
itemId = 14015;
|
||||
break;
|
||||
}
|
||||
case 18680: // Wind
|
||||
{
|
||||
itemId = 14017;
|
||||
break;
|
||||
}
|
||||
case 18681: // Earth
|
||||
{
|
||||
itemId = 14018;
|
||||
break;
|
||||
}
|
||||
case 18682: // Divinity
|
||||
{
|
||||
itemId = 14020;
|
||||
break;
|
||||
}
|
||||
case 18683: // Darkness
|
||||
{
|
||||
itemId = 14019;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
return super.onSkillSee(npc, caster, skill, targets, isSummon);
|
||||
}
|
||||
}
|
||||
if (getRandom(100) < 33)
|
||||
{
|
||||
@@ -445,17 +465,21 @@ public class EnergySeeds extends AbstractNpcAI
|
||||
switch (zone.getId())
|
||||
{
|
||||
case SOD_ZONE:
|
||||
{
|
||||
if (!isSeedActive(GraciaSeeds.DESTRUCTION) && !character.isGM())
|
||||
{
|
||||
character.teleToLocation(SOD_EXIT_POINT);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SOI_ZONE:
|
||||
{
|
||||
if ((SoIManager.getCurrentStage() != 3) && !SoIManager.isSeedOpen())
|
||||
{
|
||||
character.teleToLocation(SOI_EXIT_POINT);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onEnterZone(character, zone);
|
||||
@@ -506,18 +530,23 @@ public class EnergySeeds extends AbstractNpcAI
|
||||
switch (seedType)
|
||||
{
|
||||
case INFINITY:
|
||||
{
|
||||
if ((st != null) && st.isCond(3))
|
||||
{
|
||||
handleQuestDrop(player, 13798);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case DESTRUCTION:
|
||||
{
|
||||
if ((st != null) && st.isCond(3))
|
||||
{
|
||||
handleQuestDrop(player, 13867);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case ANNIHILATION_BISTAKON:
|
||||
{
|
||||
if ((st != null) && st.isCond(3))
|
||||
{
|
||||
handleQuestDrop(player, 15535);
|
||||
@@ -530,7 +559,9 @@ public class EnergySeeds extends AbstractNpcAI
|
||||
mob.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, player);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case ANNIHILATION_REPTILIKON:
|
||||
{
|
||||
if ((st != null) && st.isCond(3))
|
||||
{
|
||||
handleQuestDrop(player, 15535);
|
||||
@@ -543,7 +574,9 @@ public class EnergySeeds extends AbstractNpcAI
|
||||
mob.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, player);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case ANNIHILATION_COKRAKON:
|
||||
{
|
||||
if ((st != null) && st.isCond(3))
|
||||
{
|
||||
handleQuestDrop(player, 15535);
|
||||
@@ -556,6 +589,7 @@ public class EnergySeeds extends AbstractNpcAI
|
||||
mob.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, player);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -63,15 +63,22 @@ public class Lindvior extends AbstractNpcAI
|
||||
switch (event)
|
||||
{
|
||||
case "tomaris_shout1":
|
||||
{
|
||||
npc.broadcastSay(ChatType.NPC_SHOUT, NpcStringId.HUH_THE_SKY_LOOKS_FUNNY_WHAT_S_THAT);
|
||||
break;
|
||||
}
|
||||
case "artius_shout":
|
||||
{
|
||||
npc.broadcastSay(ChatType.NPC_SHOUT, NpcStringId.A_POWERFUL_SUBORDINATE_IS_BEING_HELD_BY_THE_BARRIER_ORB_THIS_REACTION_MEANS);
|
||||
break;
|
||||
}
|
||||
case "tomaris_shout2":
|
||||
{
|
||||
npc.broadcastSay(ChatType.NPC_SHOUT, NpcStringId.BE_CAREFUL_SOMETHING_S_COMING);
|
||||
break;
|
||||
}
|
||||
case "lindvior_scene":
|
||||
{
|
||||
if (npc != null)
|
||||
{
|
||||
for (L2PcInstance pl : npc.getKnownList().getKnownPlayersInRadius(4000))
|
||||
@@ -83,17 +90,19 @@ public class Lindvior extends AbstractNpcAI
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "start":
|
||||
{
|
||||
_lindviorCamera = SpawnTable.getInstance().findAny(LINDVIOR_CAMERA).getLastSpawn();
|
||||
_tomaris = SpawnTable.getInstance().findAny(TOMARIS).getLastSpawn();
|
||||
_artius = SpawnTable.getInstance().findAny(ARTIUS).getLastSpawn();
|
||||
|
||||
startQuestTimer("tomaris_shout1", 1000, _tomaris, null);
|
||||
startQuestTimer("artius_shout", 60000, _artius, null);
|
||||
startQuestTimer("tomaris_shout2", 90000, _tomaris, null);
|
||||
startQuestTimer("lindvior_scene", 120000, _lindviorCamera, null);
|
||||
scheduleNextLindviorVisit();
|
||||
break;
|
||||
}
|
||||
}
|
||||
return super.onAdvEvent(event, npc, player);
|
||||
}
|
||||
|
||||
@@ -219,14 +219,20 @@ public final class Maguen extends AbstractNpcAI
|
||||
switch (getRandom(3))
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
skillToCast = (getRandom(100) < 70) ? B_BUFF_1 : B_BUFF_2;
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
{
|
||||
skillToCast = (getRandom(100) < 70) ? C_BUFF_1 : C_BUFF_2;
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
skillToCast = (getRandom(100) < 70) ? R_BUFF_1 : R_BUFF_2;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (skillToCast != null)
|
||||
@@ -285,14 +291,20 @@ public final class Maguen extends AbstractNpcAI
|
||||
switch (i1)
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
skillToCast = B_PLASMA1;
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
{
|
||||
skillToCast = B_PLASMA2;
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
skillToCast = B_PLASMA3;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -301,14 +313,20 @@ public final class Maguen extends AbstractNpcAI
|
||||
switch (i2)
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
skillToCast = C_PLASMA1;
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
{
|
||||
skillToCast = C_PLASMA2;
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
skillToCast = C_PLASMA3;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -317,14 +335,20 @@ public final class Maguen extends AbstractNpcAI
|
||||
switch (i3)
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
skillToCast = R_PLASMA1;
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
{
|
||||
skillToCast = R_PLASMA2;
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
skillToCast = R_PLASMA3;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -57,24 +57,32 @@ public class StarStones extends AbstractNpcAI
|
||||
case 18684:
|
||||
case 18685:
|
||||
case 18686:
|
||||
{
|
||||
// give Red item
|
||||
itemId = 14009;
|
||||
break;
|
||||
}
|
||||
case 18687:
|
||||
case 18688:
|
||||
case 18689:
|
||||
{
|
||||
// give Blue item
|
||||
itemId = 14010;
|
||||
break;
|
||||
}
|
||||
case 18690:
|
||||
case 18691:
|
||||
case 18692:
|
||||
{
|
||||
// give Green item
|
||||
itemId = 14011;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
// unknown npc!
|
||||
return super.onSkillSee(npc, caster, skill, targets, isSummon);
|
||||
}
|
||||
}
|
||||
if (getRandom(100) < 33)
|
||||
{
|
||||
|
||||
@@ -319,15 +319,25 @@ public class HallOfSufferingAttack extends AbstractNpcAI
|
||||
switch (room)
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
return ROOM_1_MOBS;
|
||||
}
|
||||
case 1:
|
||||
{
|
||||
return ROOM_2_MOBS;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
return ROOM_3_MOBS;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
return ROOM_4_MOBS;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
return ROOM_5_MOBS;
|
||||
}
|
||||
}
|
||||
return new int[][] {};
|
||||
}
|
||||
|
||||
@@ -319,15 +319,25 @@ public class HallOfSufferingDefence extends AbstractNpcAI
|
||||
switch (room)
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
return ROOM_1_MOBS;
|
||||
}
|
||||
case 1:
|
||||
{
|
||||
return ROOM_2_MOBS;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
return ROOM_3_MOBS;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
return ROOM_4_MOBS;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
return ROOM_5_MOBS;
|
||||
}
|
||||
}
|
||||
return new int[][] {};
|
||||
}
|
||||
|
||||
@@ -777,40 +777,54 @@ public class HeartInfinityAttack extends Quest
|
||||
switch (world.tumorCount)
|
||||
{
|
||||
case 6:
|
||||
{
|
||||
a[0] = 2;
|
||||
a[1] = 1;
|
||||
a[2] = 4;
|
||||
break;
|
||||
}
|
||||
case 5:
|
||||
{
|
||||
a[0] = 1.9;
|
||||
a[1] = 0.9;
|
||||
a[2] = 3.5;
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
a[0] = 1.5;
|
||||
a[1] = 0.6;
|
||||
a[2] = 3.0;
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
a[0] = 1.0;
|
||||
a[1] = 0.4;
|
||||
a[2] = 2.5;
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
a[0] = 0.7;
|
||||
a[1] = 0.3;
|
||||
a[2] = 2.0;
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
{
|
||||
a[0] = 0.3;
|
||||
a[1] = 0.15;
|
||||
a[2] = 1.0;
|
||||
break;
|
||||
}
|
||||
case 0:
|
||||
{
|
||||
a[0] = 0.12;
|
||||
a[1] = 0.06;
|
||||
a[2] = 0.25;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return a;
|
||||
}
|
||||
|
||||
@@ -1046,13 +1046,16 @@ public class SeedOfDestruction extends AbstractNpcAI
|
||||
switch (world.getStatus())
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
spawn(world, ENTRANCE_GROUND_SPAWNS_1, true, false);
|
||||
spawn(world, ENTRANCE_GROUND_SPAWNS_2, false, false);
|
||||
spawn(world, ENTRANCE_UPPER_SPAWNS, false, true);
|
||||
closeDoor(SCOUTPASS_DOOR, world.getInstanceId());
|
||||
closeDoor(THRONE_DOOR, world.getInstanceId());
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
{
|
||||
final ExShowScreenMessage message1 = new ExShowScreenMessage(NpcStringId.THE_ENEMIES_HAVE_ATTACKED_EVERYONE_COME_OUT_AND_FIGHT_URGH, 5, 5000);
|
||||
sendScreenMessage(world, message1);
|
||||
for (int i : ENTRANCE_ROOM_DOORS)
|
||||
@@ -1062,11 +1065,15 @@ public class SeedOfDestruction extends AbstractNpcAI
|
||||
spawn(world, SQUARE_SPAWNS_STATIC, false, true);
|
||||
spawn(world, SQUARE_SPAWNS_MAIN, true, false);
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
case 3:
|
||||
{
|
||||
// handled elsewhere
|
||||
return;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
final ExShowScreenMessage message2 = new ExShowScreenMessage(NpcStringId.OBELISK_HAS_COLLAPSED_DON_T_LET_THE_ENEMIES_JUMP_AROUND_WILDLY_ANYMORE, 5, 5000);
|
||||
sendScreenMessage(world, message2);
|
||||
for (int i : SQUARE_DOORS)
|
||||
@@ -1077,7 +1084,9 @@ public class SeedOfDestruction extends AbstractNpcAI
|
||||
spawn(world, CORRIDOR_SPAWNS_GROUND, false, false);
|
||||
world.killedDevice = 0;
|
||||
break;
|
||||
}
|
||||
case 5:
|
||||
{
|
||||
openDoor(SCOUTPASS_DOOR, world.getInstanceId());
|
||||
spawn(world, SQUARE_SPAWNS_HALF, false, false);
|
||||
spawn(world, SCOUTPASS_SPAWNS_UPPER, false, true);
|
||||
@@ -1089,19 +1098,28 @@ public class SeedOfDestruction extends AbstractNpcAI
|
||||
spawn(world, FORT_SPAWNS_GROUND, false, false);
|
||||
world.killedDevice = 0;
|
||||
break;
|
||||
}
|
||||
case 6:
|
||||
{
|
||||
runThrone(world);
|
||||
openDoor(THRONE_DOOR, world.getInstanceId());
|
||||
spawn(world, FORT_PORTALS, false, true);
|
||||
break;
|
||||
}
|
||||
case 7:
|
||||
{
|
||||
// handled elsewhere
|
||||
return;
|
||||
}
|
||||
case 8:
|
||||
{
|
||||
break;
|
||||
}
|
||||
case 9:
|
||||
{
|
||||
// instance end
|
||||
break;
|
||||
}
|
||||
}
|
||||
world.incStatus();
|
||||
}
|
||||
|
||||
@@ -245,43 +245,59 @@ public final class AirShipGludioGracia extends Quest implements Runnable
|
||||
switch (_cycle)
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
broadcastInGludio(NpcStringId.THE_REGULARLY_SCHEDULED_AIRSHIP_THAT_FLIES_TO_THE_GRACIA_CONTINENT_HAS_DEPARTED);
|
||||
_ship.setInDock(0);
|
||||
_ship.executePath(GLUDIO_TO_WARPGATE);
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
{
|
||||
// _ship.teleToLocation(-167874, 256731, -509, 41035, false);
|
||||
_ship.setOustLoc(OUST_GRACIA);
|
||||
ThreadPoolManager.schedule(this, 5000);
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
_ship.executePath(WARPGATE_TO_GRACIA);
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
broadcastInGracia(NpcStringId.THE_REGULARLY_SCHEDULED_AIRSHIP_HAS_ARRIVED_IT_WILL_DEPART_FOR_THE_ADEN_CONTINENT_IN_1_MINUTE);
|
||||
_ship.setInDock(GRACIA_DOCK_ID);
|
||||
_ship.oustPlayers();
|
||||
ThreadPoolManager.schedule(this, 60000);
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
broadcastInGracia(NpcStringId.THE_REGULARLY_SCHEDULED_AIRSHIP_THAT_FLIES_TO_THE_ADEN_CONTINENT_HAS_DEPARTED);
|
||||
_ship.setInDock(0);
|
||||
_ship.executePath(GRACIA_TO_WARPGATE);
|
||||
break;
|
||||
}
|
||||
case 5:
|
||||
{
|
||||
// _ship.teleToLocation(-157261, 255664, 221, 64781, false);
|
||||
_ship.setOustLoc(OUST_GLUDIO);
|
||||
ThreadPoolManager.schedule(this, 5000);
|
||||
break;
|
||||
}
|
||||
case 6:
|
||||
{
|
||||
_ship.executePath(WARPGATE_TO_GLUDIO);
|
||||
break;
|
||||
}
|
||||
case 7:
|
||||
{
|
||||
broadcastInGludio(NpcStringId.THE_REGULARLY_SCHEDULED_AIRSHIP_HAS_ARRIVED_IT_WILL_DEPART_FOR_THE_GRACIA_CONTINENT_IN_1_MINUTE);
|
||||
_ship.setInDock(GLUDIO_DOCK_ID);
|
||||
_ship.oustPlayers();
|
||||
ThreadPoolManager.schedule(this, 60000);
|
||||
break;
|
||||
}
|
||||
}
|
||||
_cycle++;
|
||||
if (_cycle > 7)
|
||||
|
||||
@@ -305,14 +305,20 @@ public final class AdminCHSiege implements IAdminCommandHandler
|
||||
switch (hall.getSiegeStatus())
|
||||
{
|
||||
case REGISTERING:
|
||||
{
|
||||
siegable.prepareOwner();
|
||||
break;
|
||||
}
|
||||
case WAITING_BATTLE:
|
||||
{
|
||||
siegable.startSiege();
|
||||
break;
|
||||
}
|
||||
case RUNNING:
|
||||
{
|
||||
siegable.endSiege();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -192,26 +192,40 @@ public class AdminLogin implements IAdminCommandHandler
|
||||
switch (currentType)
|
||||
{
|
||||
case 0x01:
|
||||
{
|
||||
nameType += "Normal";
|
||||
break;
|
||||
}
|
||||
case 0x02:
|
||||
{
|
||||
nameType += "Relax";
|
||||
break;
|
||||
}
|
||||
case 0x04:
|
||||
{
|
||||
nameType += "Test";
|
||||
break;
|
||||
}
|
||||
case 0x08:
|
||||
{
|
||||
nameType += "NoLabel";
|
||||
break;
|
||||
}
|
||||
case 0x10:
|
||||
{
|
||||
nameType += "Restricted";
|
||||
break;
|
||||
}
|
||||
case 0x20:
|
||||
{
|
||||
nameType += "Event";
|
||||
break;
|
||||
}
|
||||
case 0x40:
|
||||
{
|
||||
nameType += "Free";
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -132,34 +132,50 @@ public final class AdminPForge implements IAdminCommandHandler
|
||||
case 'B':
|
||||
case 'x':
|
||||
case 'X':
|
||||
{
|
||||
// array
|
||||
break;
|
||||
}
|
||||
case 'c':
|
||||
case 'C':
|
||||
{
|
||||
// byte
|
||||
break;
|
||||
}
|
||||
case 'h':
|
||||
case 'H':
|
||||
{
|
||||
// word
|
||||
break;
|
||||
}
|
||||
case 'd':
|
||||
case 'D':
|
||||
{
|
||||
// dword
|
||||
break;
|
||||
}
|
||||
case 'q':
|
||||
case 'Q':
|
||||
{
|
||||
// qword
|
||||
break;
|
||||
}
|
||||
case 'f':
|
||||
case 'F':
|
||||
{
|
||||
// double
|
||||
break;
|
||||
}
|
||||
case 's':
|
||||
case 'S':
|
||||
{
|
||||
// string
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -173,7 +189,9 @@ public final class AdminPForge implements IAdminCommandHandler
|
||||
case "sc":
|
||||
case "sb":
|
||||
case "cs":
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
@@ -405,9 +423,12 @@ public final class AdminPForge implements IAdminCommandHandler
|
||||
switch (value)
|
||||
{
|
||||
case "$oid":
|
||||
{
|
||||
value = String.valueOf(activeChar.getObjectId());
|
||||
break;
|
||||
}
|
||||
case "$boid":
|
||||
{
|
||||
boat = activeChar.getBoat();
|
||||
if (boat != null)
|
||||
{
|
||||
@@ -418,28 +439,44 @@ public final class AdminPForge implements IAdminCommandHandler
|
||||
value = "0";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "$title":
|
||||
{
|
||||
value = activeChar.getTitle();
|
||||
break;
|
||||
}
|
||||
case "$name":
|
||||
{
|
||||
value = activeChar.getName();
|
||||
break;
|
||||
}
|
||||
case "$x":
|
||||
{
|
||||
value = String.valueOf(activeChar.getX());
|
||||
break;
|
||||
}
|
||||
case "$y":
|
||||
{
|
||||
value = String.valueOf(activeChar.getY());
|
||||
break;
|
||||
}
|
||||
case "$z":
|
||||
{
|
||||
value = String.valueOf(activeChar.getZ());
|
||||
break;
|
||||
}
|
||||
case "$heading":
|
||||
{
|
||||
value = String.valueOf(activeChar.getHeading());
|
||||
break;
|
||||
}
|
||||
case "$toid":
|
||||
{
|
||||
value = String.valueOf(activeChar.getTargetId());
|
||||
break;
|
||||
}
|
||||
case "$tboid":
|
||||
{
|
||||
target = activeChar.getTarget();
|
||||
if ((target != null) && (target instanceof L2Playable))
|
||||
{
|
||||
@@ -454,7 +491,9 @@ public final class AdminPForge implements IAdminCommandHandler
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "$ttitle":
|
||||
{
|
||||
target = activeChar.getTarget();
|
||||
if ((target != null) && (target instanceof L2Character))
|
||||
{
|
||||
@@ -465,7 +504,9 @@ public final class AdminPForge implements IAdminCommandHandler
|
||||
value = "";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "$tname":
|
||||
{
|
||||
target = activeChar.getTarget();
|
||||
if (target != null)
|
||||
{
|
||||
@@ -476,7 +517,9 @@ public final class AdminPForge implements IAdminCommandHandler
|
||||
value = "";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "$tx":
|
||||
{
|
||||
target = activeChar.getTarget();
|
||||
if (target != null)
|
||||
{
|
||||
@@ -487,7 +530,9 @@ public final class AdminPForge implements IAdminCommandHandler
|
||||
value = "0";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "$ty":
|
||||
{
|
||||
target = activeChar.getTarget();
|
||||
if (target != null)
|
||||
{
|
||||
@@ -498,7 +543,9 @@ public final class AdminPForge implements IAdminCommandHandler
|
||||
value = "0";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "$tz":
|
||||
{
|
||||
target = activeChar.getTarget();
|
||||
if (target != null)
|
||||
{
|
||||
@@ -509,7 +556,9 @@ public final class AdminPForge implements IAdminCommandHandler
|
||||
value = "0";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "$theading":
|
||||
{
|
||||
target = activeChar.getTarget();
|
||||
if (target != null)
|
||||
{
|
||||
@@ -520,6 +569,7 @@ public final class AdminPForge implements IAdminCommandHandler
|
||||
value = "0";
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (method.equals("sc") || method.equals("sb"))
|
||||
|
||||
@@ -94,25 +94,23 @@ public class AdminSiege implements IAdminCommandHandler
|
||||
switch (command)
|
||||
{
|
||||
case "admin_clanhallset":
|
||||
{
|
||||
if ((player == null) || (player.getClan() == null))
|
||||
{
|
||||
activeChar.sendPacket(SystemMessageId.INVALID_TARGET);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (clanhall.getOwnerId() > 0)
|
||||
{
|
||||
activeChar.sendMessage("This Clan Hall is not free!");
|
||||
return false;
|
||||
}
|
||||
|
||||
clan = player.getClan();
|
||||
if (clan.getHideoutId() > 0)
|
||||
{
|
||||
activeChar.sendMessage("You have already a Clan Hall!");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!clanhall.isSiegableHall())
|
||||
{
|
||||
ClanHallManager.getInstance().setOwner(clanhall.getId(), clan);
|
||||
@@ -127,8 +125,9 @@ public class AdminSiege implements IAdminCommandHandler
|
||||
clan.setHideoutId(clanhall.getId());
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "admin_clanhalldel":
|
||||
|
||||
{
|
||||
if (!clanhall.isSiegableHall())
|
||||
{
|
||||
if (!ClanHallManager.getInstance().isFree(clanhall.getId()))
|
||||
@@ -156,20 +155,28 @@ public class AdminSiege implements IAdminCommandHandler
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "admin_clanhallopendoors":
|
||||
{
|
||||
clanhall.openCloseDoors(true);
|
||||
break;
|
||||
}
|
||||
case "admin_clanhallclosedoors":
|
||||
{
|
||||
clanhall.openCloseDoors(false);
|
||||
break;
|
||||
}
|
||||
case "admin_clanhallteleportself":
|
||||
{
|
||||
final L2ClanHallZone zone = clanhall.getZone();
|
||||
if (zone != null)
|
||||
{
|
||||
activeChar.teleToLocation(zone.getSpawnLoc(), true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
if (!clanhall.isSiegableHall())
|
||||
{
|
||||
showClanHallPage(activeChar, clanhall);
|
||||
@@ -179,6 +186,7 @@ public class AdminSiege implements IAdminCommandHandler
|
||||
showSiegableHallPage(activeChar, (SiegableHall) clanhall);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -188,6 +196,7 @@ public class AdminSiege implements IAdminCommandHandler
|
||||
switch (command)
|
||||
{
|
||||
case "admin_add_attacker":
|
||||
{
|
||||
if (player == null)
|
||||
{
|
||||
activeChar.sendPacket(SystemMessageId.INVALID_TARGET);
|
||||
@@ -197,7 +206,9 @@ public class AdminSiege implements IAdminCommandHandler
|
||||
castle.getSiege().registerAttacker(player, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "admin_add_defender":
|
||||
{
|
||||
if (player == null)
|
||||
{
|
||||
activeChar.sendPacket(SystemMessageId.INVALID_TARGET);
|
||||
@@ -207,7 +218,9 @@ public class AdminSiege implements IAdminCommandHandler
|
||||
castle.getSiege().registerDefender(player, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "admin_add_guard":
|
||||
{
|
||||
if (st.hasMoreTokens())
|
||||
{
|
||||
val = st.nextToken();
|
||||
@@ -220,19 +233,29 @@ public class AdminSiege implements IAdminCommandHandler
|
||||
// If doesn't have more tokens or token is not a number.
|
||||
activeChar.sendMessage("Usage: //add_guard castle npcId");
|
||||
break;
|
||||
}
|
||||
case "admin_clear_siege_list":
|
||||
{
|
||||
castle.getSiege().clearSiegeClan();
|
||||
break;
|
||||
}
|
||||
case "admin_endsiege":
|
||||
{
|
||||
castle.getSiege().endSiege();
|
||||
break;
|
||||
}
|
||||
case "admin_list_siege_clans":
|
||||
{
|
||||
castle.getSiege().listRegisterClan(activeChar);
|
||||
break;
|
||||
}
|
||||
case "admin_move_defenders":
|
||||
{
|
||||
activeChar.sendMessage("Not implemented yet.");
|
||||
break;
|
||||
}
|
||||
case "admin_setcastle":
|
||||
{
|
||||
if ((player == null) || (player.getClan() == null))
|
||||
{
|
||||
activeChar.sendPacket(SystemMessageId.INVALID_TARGET);
|
||||
@@ -242,7 +265,9 @@ public class AdminSiege implements IAdminCommandHandler
|
||||
castle.setOwner(player.getClan());
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "admin_removecastle":
|
||||
{
|
||||
final L2Clan clan = ClanTable.getInstance().getClan(castle.getOwnerId());
|
||||
if (clan != null)
|
||||
{
|
||||
@@ -253,14 +278,14 @@ public class AdminSiege implements IAdminCommandHandler
|
||||
activeChar.sendMessage("Unable to remove castle.");
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "admin_setsiegetime":
|
||||
{
|
||||
if (st.hasMoreTokens())
|
||||
{
|
||||
final Calendar cal = Calendar.getInstance();
|
||||
cal.setTimeInMillis(castle.getSiegeDate().getTimeInMillis());
|
||||
|
||||
val = st.nextToken();
|
||||
|
||||
if ("month".equals(val))
|
||||
{
|
||||
final int month = cal.get(Calendar.MONTH) + Integer.parseInt(st.nextToken());
|
||||
@@ -301,7 +326,6 @@ public class AdminSiege implements IAdminCommandHandler
|
||||
}
|
||||
cal.set(Calendar.MINUTE, min);
|
||||
}
|
||||
|
||||
if (cal.getTimeInMillis() < Calendar.getInstance().getTimeInMillis())
|
||||
{
|
||||
activeChar.sendMessage("Unable to change Siege Date");
|
||||
@@ -315,15 +339,22 @@ public class AdminSiege implements IAdminCommandHandler
|
||||
}
|
||||
showSiegeTimePage(activeChar, castle);
|
||||
break;
|
||||
}
|
||||
case "admin_spawn_doors":
|
||||
{
|
||||
castle.spawnDoor();
|
||||
break;
|
||||
}
|
||||
case "admin_startsiege":
|
||||
{
|
||||
castle.getSiege().startSiege();
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
showSiegePage(activeChar, castle.getName());
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -377,14 +377,20 @@ public class AdminSpawn implements IAdminCommandHandler
|
||||
{
|
||||
default:
|
||||
case 0:
|
||||
{
|
||||
_log.info("('',1," + i + "," + x + "," + y + "," + z + ",0,0," + h + ",60,0,0),");
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
{
|
||||
_log.info("<spawn npcId=\"" + i + "\" x=\"" + x + "\" y=\"" + y + "\" z=\"" + z + "\" heading=\"" + h + "\" respawn=\"0\" />");
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
_log.info("{ " + i + ", " + x + ", " + y + ", " + z + ", " + h + " },");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -304,23 +304,35 @@ public class AdminTeleport implements IAdminCommandHandler
|
||||
switch (player.getRace())
|
||||
{
|
||||
case ELF:
|
||||
{
|
||||
regionName = "elf_town";
|
||||
break;
|
||||
}
|
||||
case DARK_ELF:
|
||||
{
|
||||
regionName = "darkelf_town";
|
||||
break;
|
||||
}
|
||||
case ORC:
|
||||
{
|
||||
regionName = "orc_town";
|
||||
break;
|
||||
}
|
||||
case DWARF:
|
||||
{
|
||||
regionName = "dwarf_town";
|
||||
break;
|
||||
}
|
||||
case KAMAEL:
|
||||
{
|
||||
regionName = "kamael_town";
|
||||
break;
|
||||
}
|
||||
case HUMAN:
|
||||
default:
|
||||
{
|
||||
regionName = "talking_island_town";
|
||||
}
|
||||
}
|
||||
|
||||
player.teleToLocation(MapRegionManager.getInstance().getMapRegionByName(regionName).getSpawnLoc(), true);
|
||||
|
||||
@@ -44,11 +44,15 @@ public class Augment implements IBypassHandler
|
||||
switch (Integer.parseInt(command.substring(8, 9).trim()))
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
activeChar.sendPacket(ExShowVariationMakeWindow.STATIC_PACKET);
|
||||
return true;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
activeChar.sendPacket(ExShowVariationCancelWindow.STATIC_PACKET);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
|
||||
@@ -67,50 +67,44 @@ public class Festival implements IBypassHandler
|
||||
switch (val)
|
||||
{
|
||||
case 1: // Become a Participant
|
||||
{
|
||||
// Check if the festival period is active, if not then don't allow registration.
|
||||
if (SevenSigns.getInstance().isSealValidationPeriod())
|
||||
{
|
||||
npc.showChatWindow(activeChar, 2, "a", false);
|
||||
return true;
|
||||
}
|
||||
|
||||
// Check if a festival is in progress, then don't allow registration yet.
|
||||
if (SevenSignsFestival.getInstance().isFestivalInitialized())
|
||||
{
|
||||
activeChar.sendMessage("You cannot sign up while a festival is in progress.");
|
||||
return true;
|
||||
}
|
||||
|
||||
// Check if the player is in a formed party already.
|
||||
if (!activeChar.isInParty())
|
||||
{
|
||||
npc.showChatWindow(activeChar, 2, "b", false);
|
||||
return true;
|
||||
}
|
||||
|
||||
party = activeChar.getParty();
|
||||
|
||||
// Check if the player is the party leader.
|
||||
if (!party.isLeader(activeChar))
|
||||
{
|
||||
npc.showChatWindow(activeChar, 2, "c", false);
|
||||
return true;
|
||||
}
|
||||
|
||||
// Check to see if the party has at least 5 members.
|
||||
if (party.getMemberCount() < Config.ALT_FESTIVAL_MIN_PLAYER)
|
||||
{
|
||||
npc.showChatWindow(activeChar, 2, "b", false);
|
||||
return true;
|
||||
}
|
||||
|
||||
// Check if all the party members are in the required level range.
|
||||
if (party.getLevel() > SevenSignsFestival.getMaxLevelForFestival(npc.getFestivalType()))
|
||||
{
|
||||
npc.showChatWindow(activeChar, 2, "d", false);
|
||||
return true;
|
||||
}
|
||||
|
||||
// Check to see if the player has already signed up
|
||||
if (activeChar.isFestivalParticipant())
|
||||
{
|
||||
@@ -118,85 +112,75 @@ public class Festival implements IBypassHandler
|
||||
npc.showChatWindow(activeChar, 2, "f", false);
|
||||
return true;
|
||||
}
|
||||
|
||||
npc.showChatWindow(activeChar, 1, null, false);
|
||||
break;
|
||||
}
|
||||
case 2: // Seal Stones
|
||||
{
|
||||
final int stoneType = Integer.parseInt(command.substring(11));
|
||||
final int stoneCount = npc.getStoneCount(stoneType);
|
||||
if (stoneCount <= 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!activeChar.destroyItemByItemId("SevenSigns", stoneType, stoneCount, npc, true))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
SevenSignsFestival.getInstance().setParticipants(npc.getFestivalOracle(), npc.getFestivalType(), activeChar.getParty());
|
||||
SevenSignsFestival.getInstance().addAccumulatedBonus(npc.getFestivalType(), stoneType, stoneCount);
|
||||
|
||||
npc.showChatWindow(activeChar, 2, "e", false);
|
||||
break;
|
||||
}
|
||||
case 3: // Score Registration
|
||||
{
|
||||
// Check if the festival period is active, if not then don't register the score.
|
||||
if (SevenSigns.getInstance().isSealValidationPeriod())
|
||||
{
|
||||
npc.showChatWindow(activeChar, 3, "a", false);
|
||||
return true;
|
||||
}
|
||||
|
||||
// Check if a festival is in progress, if it is don't register the score.
|
||||
if (SevenSignsFestival.getInstance().isFestivalInProgress())
|
||||
{
|
||||
activeChar.sendMessage("You cannot register a score while a festival is in progress.");
|
||||
return true;
|
||||
}
|
||||
|
||||
// Check if the player is in a party.
|
||||
if (!activeChar.isInParty())
|
||||
{
|
||||
npc.showChatWindow(activeChar, 3, "b", false);
|
||||
return true;
|
||||
}
|
||||
|
||||
final List<Integer> prevParticipants = SevenSignsFestival.getInstance().getPreviousParticipants(npc.getFestivalOracle(), npc.getFestivalType());
|
||||
|
||||
// Check if there are any past participants.
|
||||
if ((prevParticipants == null) || prevParticipants.isEmpty() || !prevParticipants.contains(activeChar.getObjectId()))
|
||||
{
|
||||
npc.showChatWindow(activeChar, 3, "b", false);
|
||||
return true;
|
||||
}
|
||||
|
||||
// Check if this player was the party leader in the festival.
|
||||
if (activeChar.getObjectId() != prevParticipants.get(0))
|
||||
{
|
||||
npc.showChatWindow(activeChar, 3, "b", false);
|
||||
return true;
|
||||
}
|
||||
|
||||
final L2ItemInstance bloodOfferings = activeChar.getInventory().getItemByItemId(SevenSignsFestival.FESTIVAL_OFFERING_ID);
|
||||
|
||||
// Check if the player collected any blood offerings during the festival.
|
||||
if (bloodOfferings == null)
|
||||
{
|
||||
activeChar.sendMessage("You do not have any blood offerings to contribute.");
|
||||
return true;
|
||||
}
|
||||
|
||||
final long offeringScore = bloodOfferings.getCount() * SevenSignsFestival.FESTIVAL_OFFERING_VALUE;
|
||||
if (!activeChar.destroyItem("SevenSigns", bloodOfferings, npc, false))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
final boolean isHighestScore = SevenSignsFestival.getInstance().setFinalScore(activeChar, npc.getFestivalOracle(), npc.getFestivalType(), offeringScore);
|
||||
final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.YOUR_CONTRIBUTION_SCORE_HAS_INCREASED_BY_S1);
|
||||
sm.addLong(offeringScore);
|
||||
activeChar.sendPacket(sm);
|
||||
|
||||
if (isHighestScore)
|
||||
{
|
||||
npc.showChatWindow(activeChar, 3, "c", false);
|
||||
@@ -206,25 +190,23 @@ public class Festival implements IBypassHandler
|
||||
npc.showChatWindow(activeChar, 3, "d", false);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 4: // Current High Scores
|
||||
{
|
||||
final StringBuilder strBuffer = new StringBuilder(500);
|
||||
strBuffer.append("<html><body>Festival Guide:<br>These are the top scores of the week, for the ");
|
||||
final StatsSet dawnData = SevenSignsFestival.getInstance().getHighestScoreData(SevenSigns.CABAL_DAWN, npc.getFestivalType());
|
||||
final StatsSet duskData = SevenSignsFestival.getInstance().getHighestScoreData(SevenSigns.CABAL_DUSK, npc.getFestivalType());
|
||||
final StatsSet overallData = SevenSignsFestival.getInstance().getOverallHighestScoreData(npc.getFestivalType());
|
||||
|
||||
final int dawnScore = dawnData.getInt("score");
|
||||
final int duskScore = duskData.getInt("score");
|
||||
int overallScore = 0;
|
||||
|
||||
// If no data is returned, assume there is no record, or all scores are 0.
|
||||
if (overallData != null)
|
||||
{
|
||||
overallScore = overallData.getInt("score");
|
||||
}
|
||||
|
||||
strBuffer.append(SevenSignsFestival.getFestivalName(npc.getFestivalType()) + " festival.<br>");
|
||||
|
||||
if (dawnScore > 0)
|
||||
{
|
||||
strBuffer.append("Dawn: " + calculateDate(dawnData.getString("date")) + ". Score " + dawnScore + "<br>" + dawnData.getString("members") + "<br>");
|
||||
@@ -233,7 +215,6 @@ public class Festival implements IBypassHandler
|
||||
{
|
||||
strBuffer.append("Dawn: No record exists. Score 0<br>");
|
||||
}
|
||||
|
||||
if (duskScore > 0)
|
||||
{
|
||||
strBuffer.append("Dusk: " + calculateDate(duskData.getString("date")) + ". Score " + duskScore + "<br>" + duskData.getString("members") + "<br>");
|
||||
@@ -242,7 +223,6 @@ public class Festival implements IBypassHandler
|
||||
{
|
||||
strBuffer.append("Dusk: No record exists. Score 0<br>");
|
||||
}
|
||||
|
||||
if ((overallScore > 0) && (overallData != null))
|
||||
{
|
||||
final String cabalStr;
|
||||
@@ -254,38 +234,34 @@ public class Festival implements IBypassHandler
|
||||
{
|
||||
cabalStr = "Children of Dusk";
|
||||
}
|
||||
|
||||
strBuffer.append("Consecutive top scores: " + calculateDate(overallData.getString("date")) + ". Score " + overallScore + "<br>Affilated side: " + cabalStr + "<br>" + overallData.getString("members") + "<br>");
|
||||
}
|
||||
else
|
||||
{
|
||||
strBuffer.append("Consecutive top scores: No record exists. Score 0<br>");
|
||||
}
|
||||
|
||||
strBuffer.append("<a action=\"bypass -h npc_" + npc.getObjectId() + "_Chat 0\">Go back.</a></body></html>");
|
||||
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(npc.getObjectId());
|
||||
html.setHtml(strBuffer.toString());
|
||||
activeChar.sendPacket(html);
|
||||
break;
|
||||
}
|
||||
case 8: // Increase the Festival Challenge
|
||||
{
|
||||
if (!activeChar.isInParty())
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!SevenSignsFestival.getInstance().isFestivalInProgress())
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
party = activeChar.getParty();
|
||||
if (!party.isLeader(activeChar))
|
||||
{
|
||||
npc.showChatWindow(activeChar, 8, "a", false);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (SevenSignsFestival.getInstance().increaseChallenge(npc.getFestivalOracle(), npc.getFestivalType()))
|
||||
{
|
||||
npc.showChatWindow(activeChar, 8, "b", false);
|
||||
@@ -295,12 +271,13 @@ public class Festival implements IBypassHandler
|
||||
npc.showChatWindow(activeChar, 8, "c", false);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 9: // Leave the Festival
|
||||
{
|
||||
if (!activeChar.isInParty())
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
party = activeChar.getParty();
|
||||
if (party.isLeader(activeChar))
|
||||
{
|
||||
@@ -318,13 +295,14 @@ public class Festival implements IBypassHandler
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 0: // Distribute Accumulated Bonus
|
||||
{
|
||||
if (!SevenSigns.getInstance().isSealValidationPeriod())
|
||||
{
|
||||
activeChar.sendMessage("Bonuses cannot be paid during the competition period.");
|
||||
return true;
|
||||
}
|
||||
|
||||
if (SevenSignsFestival.getInstance().distribAccumulatedBonus(activeChar) > 0)
|
||||
{
|
||||
npc.showChatWindow(activeChar, 0, "a", false);
|
||||
@@ -334,8 +312,11 @@ public class Festival implements IBypassHandler
|
||||
npc.showChatWindow(activeChar, 0, "b", false);
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
npc.showChatWindow(activeChar, val, null, false);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -275,17 +275,25 @@ public class Loto implements IBypassHandler
|
||||
switch ((int) check[0])
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
message += "- 1st Prize";
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
message += "- 2nd Prize";
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
message += "- 3th Prize";
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
message += "- 4th Prize";
|
||||
break;
|
||||
}
|
||||
}
|
||||
message += " " + check[1] + "a.";
|
||||
}
|
||||
|
||||
@@ -120,6 +120,7 @@ public class OlympiadManagerLink implements IBypassHandler
|
||||
switch (val)
|
||||
{
|
||||
case 0: // H5 match selection
|
||||
{
|
||||
if (!OlympiadManager.getInstance().isRegistered(activeChar))
|
||||
{
|
||||
html.setFile(activeChar.getHtmlPrefix(), Olympiad.OLYMPIAD_HTML_PATH + "noble_desc2a.htm");
|
||||
@@ -136,10 +137,14 @@ public class OlympiadManagerLink implements IBypassHandler
|
||||
activeChar.sendPacket(html);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 1: // unregister
|
||||
{
|
||||
OlympiadManager.getInstance().unRegisterNoble(activeChar);
|
||||
break;
|
||||
}
|
||||
case 2: // show waiting list | TODO: cleanup (not used anymore)
|
||||
{
|
||||
final int nonClassed = OlympiadManager.getInstance().getRegisteredNonClassBased().size();
|
||||
final int teams = OlympiadManager.getInstance().getRegisteredTeamsBased().size();
|
||||
final Collection<List<Integer>> allClassed = OlympiadManager.getInstance().getRegisteredClassBased().values();
|
||||
@@ -170,20 +175,28 @@ public class OlympiadManagerLink implements IBypassHandler
|
||||
html.replace("%objectId%", String.valueOf(target.getObjectId()));
|
||||
activeChar.sendPacket(html);
|
||||
break;
|
||||
}
|
||||
case 3: // There are %points% Grand Olympiad points granted for this event. | TODO: cleanup (not used anymore)
|
||||
{
|
||||
final int points = Olympiad.getInstance().getNoblePoints(activeChar.getObjectId());
|
||||
html.setFile(activeChar.getHtmlPrefix(), Olympiad.OLYMPIAD_HTML_PATH + "noble_points1.htm");
|
||||
html.replace("%points%", String.valueOf(points));
|
||||
html.replace("%objectId%", String.valueOf(target.getObjectId()));
|
||||
activeChar.sendPacket(html);
|
||||
break;
|
||||
}
|
||||
case 4: // register non classed
|
||||
{
|
||||
OlympiadManager.getInstance().registerNoble(activeChar, CompetitionType.NON_CLASSED);
|
||||
break;
|
||||
}
|
||||
case 5: // register classed
|
||||
{
|
||||
OlympiadManager.getInstance().registerNoble(activeChar, CompetitionType.CLASSED);
|
||||
break;
|
||||
}
|
||||
case 6: // request tokens reward
|
||||
{
|
||||
passes = Olympiad.getInstance().getNoblessePasses(activeChar, false);
|
||||
if (passes > 0)
|
||||
{
|
||||
@@ -198,41 +211,52 @@ public class OlympiadManagerLink implements IBypassHandler
|
||||
activeChar.sendPacket(html);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 7: // Equipment Rewards
|
||||
{
|
||||
MultisellData.getInstance().separateAndSend(102, activeChar, (L2Npc) target, false);
|
||||
break;
|
||||
}
|
||||
case 8: // Misc. Rewards
|
||||
{
|
||||
MultisellData.getInstance().separateAndSend(103, activeChar, (L2Npc) target, false);
|
||||
break;
|
||||
}
|
||||
case 9: // Your Grand Olympiad Score from the previous period is %points% point(s) | TODO: cleanup (not used anymore)
|
||||
{
|
||||
final int point = Olympiad.getInstance().getLastNobleOlympiadPoints(activeChar.getObjectId());
|
||||
html.setFile(activeChar.getHtmlPrefix(), Olympiad.OLYMPIAD_HTML_PATH + "noble_points2.htm");
|
||||
html.replace("%points%", String.valueOf(point));
|
||||
html.replace("%objectId%", String.valueOf(target.getObjectId()));
|
||||
activeChar.sendPacket(html);
|
||||
break;
|
||||
}
|
||||
case 10: // give tokens to player
|
||||
{
|
||||
passes = Olympiad.getInstance().getNoblessePasses(activeChar, true);
|
||||
if (passes > 0)
|
||||
{
|
||||
final L2ItemInstance item = activeChar.getInventory().addItem("Olympiad", GATE_PASS, passes, activeChar, target);
|
||||
|
||||
final InventoryUpdate iu = new InventoryUpdate();
|
||||
iu.addModifiedItem(item);
|
||||
activeChar.sendPacket(iu);
|
||||
|
||||
final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.YOU_HAVE_EARNED_S2_S1_S);
|
||||
sm.addLong(passes);
|
||||
sm.addItemName(item);
|
||||
activeChar.sendPacket(sm);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 11: // register team
|
||||
{
|
||||
OlympiadManager.getInstance().registerNoble(activeChar, CompetitionType.TEAMS);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
_log.warning("Olympiad System: Couldnt send packet for request " + val);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (command.toLowerCase().startsWith("olybuff"))
|
||||
@@ -309,13 +333,13 @@ public class OlympiadManagerLink implements IBypassHandler
|
||||
switch (val)
|
||||
{
|
||||
case 2: // show rank for a specific class
|
||||
{
|
||||
// for example >> Olympiad 1_88
|
||||
final int classId = Integer.parseInt(command.substring(11));
|
||||
if (((classId >= 88) && (classId <= 118)) || ((classId >= 131) && (classId <= 134)) || (classId == 136))
|
||||
{
|
||||
final List<String> names = Olympiad.getInstance().getClassLeaderBoard(classId);
|
||||
reply.setFile(activeChar.getHtmlPrefix(), Olympiad.OLYMPIAD_HTML_PATH + "olympiad_ranking.htm");
|
||||
|
||||
int index = 1;
|
||||
for (String name : names)
|
||||
{
|
||||
@@ -332,15 +356,18 @@ public class OlympiadManagerLink implements IBypassHandler
|
||||
reply.replace("%place" + index + "%", "");
|
||||
reply.replace("%rank" + index + "%", "");
|
||||
}
|
||||
|
||||
reply.replace("%objectId%", String.valueOf(target.getObjectId()));
|
||||
activeChar.sendPacket(reply);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 4: // hero list
|
||||
{
|
||||
activeChar.sendPacket(new ExHeroList());
|
||||
break;
|
||||
}
|
||||
case 5: // Hero Certification
|
||||
{
|
||||
if (Hero.getInstance().isUnclaimedHero(activeChar.getObjectId()))
|
||||
{
|
||||
Hero.getInstance().claimHero(activeChar);
|
||||
@@ -352,9 +379,12 @@ public class OlympiadManagerLink implements IBypassHandler
|
||||
}
|
||||
activeChar.sendPacket(reply);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
_log.warning("Olympiad System: Couldnt send packet for request " + val);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,13 +46,19 @@ public class EventItem implements IItemHandler
|
||||
switch (itemId)
|
||||
{
|
||||
case 13787: // Handy's Block Checker Bond
|
||||
{
|
||||
used = useBlockCheckerItem(activeChar, item);
|
||||
break;
|
||||
}
|
||||
case 13788: // Handy's Block Checker Land Mine
|
||||
{
|
||||
used = useBlockCheckerItem(activeChar, item);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
_log.warning("EventItemHandler: Item with id: " + itemId + " is not handled");
|
||||
}
|
||||
}
|
||||
return used;
|
||||
}
|
||||
|
||||
@@ -41,6 +41,7 @@ public class PartyOther implements ITargetTypeHandler
|
||||
{
|
||||
// FORCE BUFFS may cancel here but there should be a proper condition
|
||||
case 426:
|
||||
{
|
||||
if (!target.getActingPlayer().isMageClass())
|
||||
{
|
||||
return new L2Character[]
|
||||
@@ -49,7 +50,9 @@ public class PartyOther implements ITargetTypeHandler
|
||||
};
|
||||
}
|
||||
return EMPTY_TARGET_LIST;
|
||||
}
|
||||
case 427:
|
||||
{
|
||||
if (target.getActingPlayer().isMageClass())
|
||||
{
|
||||
return new L2Character[]
|
||||
@@ -58,6 +61,7 @@ public class PartyOther implements ITargetTypeHandler
|
||||
};
|
||||
}
|
||||
return EMPTY_TARGET_LIST;
|
||||
}
|
||||
}
|
||||
}
|
||||
return new L2Character[]
|
||||
|
||||
@@ -123,52 +123,84 @@ public class PlayerHandler implements ITelnetHandler
|
||||
switch (itemType)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
itemType = Inventory.PAPERDOLL_HEAD;
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
itemType = Inventory.PAPERDOLL_CHEST;
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
itemType = Inventory.PAPERDOLL_GLOVES;
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
itemType = Inventory.PAPERDOLL_FEET;
|
||||
break;
|
||||
}
|
||||
case 5:
|
||||
{
|
||||
itemType = Inventory.PAPERDOLL_LEGS;
|
||||
break;
|
||||
}
|
||||
case 6:
|
||||
{
|
||||
itemType = Inventory.PAPERDOLL_RHAND;
|
||||
break;
|
||||
}
|
||||
case 7:
|
||||
{
|
||||
itemType = Inventory.PAPERDOLL_LHAND;
|
||||
break;
|
||||
}
|
||||
case 8:
|
||||
{
|
||||
itemType = Inventory.PAPERDOLL_LEAR;
|
||||
break;
|
||||
}
|
||||
case 9:
|
||||
{
|
||||
itemType = Inventory.PAPERDOLL_REAR;
|
||||
break;
|
||||
}
|
||||
case 10:
|
||||
{
|
||||
itemType = Inventory.PAPERDOLL_LFINGER;
|
||||
break;
|
||||
}
|
||||
case 11:
|
||||
{
|
||||
itemType = Inventory.PAPERDOLL_RFINGER;
|
||||
break;
|
||||
}
|
||||
case 12:
|
||||
{
|
||||
itemType = Inventory.PAPERDOLL_NECK;
|
||||
break;
|
||||
}
|
||||
case 13:
|
||||
{
|
||||
itemType = Inventory.PAPERDOLL_UNDER;
|
||||
break;
|
||||
}
|
||||
case 14:
|
||||
{
|
||||
itemType = Inventory.PAPERDOLL_CLOAK;
|
||||
break;
|
||||
}
|
||||
case 15:
|
||||
{
|
||||
itemType = Inventory.PAPERDOLL_BELT;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
itemType = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (enchant > 65535)
|
||||
|
||||
@@ -48,20 +48,30 @@ public class PartyInfo implements IUserCommandHandler
|
||||
switch (party.getDistributionType())
|
||||
{
|
||||
case FINDERS_KEEPERS:
|
||||
{
|
||||
activeChar.sendPacket(SystemMessageId.LOOTING_METHOD_FINDERS_KEEPERS);
|
||||
break;
|
||||
}
|
||||
case RANDOM:
|
||||
{
|
||||
activeChar.sendPacket(SystemMessageId.LOOTING_METHOD_RANDOM);
|
||||
break;
|
||||
}
|
||||
case RANDOM_INCLUDING_SPOIL:
|
||||
{
|
||||
activeChar.sendPacket(SystemMessageId.LOOTING_METHOD_RANDOM_INCLUDING_SPOIL);
|
||||
break;
|
||||
}
|
||||
case BY_TURN:
|
||||
{
|
||||
activeChar.sendPacket(SystemMessageId.LOOTING_METHOD_BY_TURN);
|
||||
break;
|
||||
}
|
||||
case BY_TURN_INCLUDING_SPOIL:
|
||||
{
|
||||
activeChar.sendPacket(SystemMessageId.LOOTING_METHOD_BY_TURN_INCLUDING_SPOIL);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!party.isLeader(activeChar))
|
||||
|
||||
@@ -41,6 +41,7 @@ public class CastleVCmd implements IVoicedCommandHandler
|
||||
switch (command)
|
||||
{
|
||||
case "opendoors":
|
||||
{
|
||||
if (!params.equals("castle"))
|
||||
{
|
||||
activeChar.sendMessage("Only Castle doors can be open.");
|
||||
@@ -79,7 +80,9 @@ public class CastleVCmd implements IVoicedCommandHandler
|
||||
door.openMe();
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "closedoors":
|
||||
{
|
||||
if (!params.equals("castle"))
|
||||
{
|
||||
activeChar.sendMessage("Only Castle doors can be closed.");
|
||||
@@ -115,12 +118,15 @@ public class CastleVCmd implements IVoicedCommandHandler
|
||||
door2.closeMe();
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "ridewyvern":
|
||||
{
|
||||
if (activeChar.isClanLeader() && (activeChar.getClan().getCastleId() > 0))
|
||||
{
|
||||
activeChar.mount(12621, 0, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -92,15 +92,25 @@ public final class Bernarde extends AbstractNpcAI
|
||||
{
|
||||
case 0:
|
||||
case 1:
|
||||
{
|
||||
return isTransformed(player) ? "32300-01a.htm" : "32300-01.htm";
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
return isTransformed(player) ? "32300-02.htm" : "32300-03.htm";
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
return isTransformed(player) ? "32300-01c.htm" : "32300-03.htm";
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
return isTransformed(player) ? "32300-01d.htm" : "32300-03.htm";
|
||||
}
|
||||
default:
|
||||
{
|
||||
return isTransformed(player) ? "32300-01f.htm" : "32300-03.htm";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -91,13 +91,19 @@ public final class Buron extends AbstractNpcAI
|
||||
switch (HellboundEngine.getInstance().getLevel())
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
return "32345-01.htm";
|
||||
}
|
||||
case 2:
|
||||
case 3:
|
||||
case 4:
|
||||
{
|
||||
return "32345-02.htm";
|
||||
}
|
||||
default:
|
||||
{
|
||||
return "32345-01a.htm";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -68,14 +68,22 @@ public final class Jude extends AbstractNpcAI
|
||||
case 0:
|
||||
case 1:
|
||||
case 2:
|
||||
{
|
||||
return "32356-01.htm";
|
||||
}
|
||||
case 3:
|
||||
case 4:
|
||||
{
|
||||
return "32356-01c.htm";
|
||||
}
|
||||
case 5:
|
||||
{
|
||||
return "32356-01a.htm";
|
||||
}
|
||||
default:
|
||||
{
|
||||
return "32356-01b.htm";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -158,20 +158,34 @@ public final class Kief extends AbstractNpcAI
|
||||
switch (HellboundEngine.getInstance().getLevel())
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
return "32354-01.htm";
|
||||
}
|
||||
case 2:
|
||||
case 3:
|
||||
{
|
||||
return "32354-01a.htm";
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
return "32354-01e.htm";
|
||||
}
|
||||
case 5:
|
||||
{
|
||||
return "32354-01d.htm";
|
||||
}
|
||||
case 6:
|
||||
{
|
||||
return "32354-01b.htm";
|
||||
}
|
||||
case 7:
|
||||
{
|
||||
return "32354-01c.htm";
|
||||
}
|
||||
default:
|
||||
{
|
||||
return "32354-01f.htm";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -762,14 +762,20 @@ public final class TowerOfNaia extends AbstractNpcAI
|
||||
{
|
||||
case SPORE_FIRE:
|
||||
case SPORE_WATER:
|
||||
{
|
||||
ret = 0;
|
||||
break;
|
||||
}
|
||||
case SPORE_WIND:
|
||||
case SPORE_EARTH:
|
||||
{
|
||||
ret = 1;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
ret = -1;
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -1631,11 +1631,15 @@ public final class TullyWorkshop extends AbstractNpcAI
|
||||
switch (_state)
|
||||
{
|
||||
case STATE_OPEN:
|
||||
{
|
||||
door.openMe();
|
||||
break;
|
||||
}
|
||||
case STATE_CLOSE:
|
||||
{
|
||||
door.closeMe();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -289,16 +289,22 @@ public final class UrbanArea extends AbstractInstance
|
||||
switch (npc.getId())
|
||||
{
|
||||
case TOWN_GUARD:
|
||||
{
|
||||
msgId = 0;
|
||||
range = 1000;
|
||||
break;
|
||||
}
|
||||
case KEYMASTER:
|
||||
{
|
||||
msgId = 1;
|
||||
range = 5000;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
msgId = -1;
|
||||
range = 0;
|
||||
}
|
||||
}
|
||||
if (msgId >= 0)
|
||||
{
|
||||
|
||||
@@ -565,13 +565,17 @@ public abstract class Chamber extends AbstractInstance
|
||||
switch (eventName)
|
||||
{
|
||||
case "SCE_LUCKY":
|
||||
{
|
||||
receiver.setBusy(true);
|
||||
receiver.doCast(SUCCESS_SKILL.getSkill());
|
||||
break;
|
||||
}
|
||||
case "SCE_DREAM_FIRE_IN_THE_HOLE":
|
||||
{
|
||||
receiver.setBusy(true);
|
||||
receiver.doCast(FAIL_SKILL.getSkill());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
@@ -948,10 +948,14 @@ public final class CrystalCaverns extends AbstractInstance
|
||||
case 2360:
|
||||
case 2369:
|
||||
case 5146:
|
||||
{
|
||||
doReturn = false;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
doReturn = true;
|
||||
}
|
||||
}
|
||||
if (doReturn)
|
||||
{
|
||||
@@ -1668,16 +1672,23 @@ public final class CrystalCaverns extends AbstractInstance
|
||||
switch (world.getStatus())
|
||||
{
|
||||
case 22:
|
||||
{
|
||||
closeDoor(DOOR6, npc.getInstanceId());
|
||||
oracleOrder = ordreOracle1;
|
||||
break;
|
||||
}
|
||||
case 23:
|
||||
{
|
||||
oracleOrder = ordreOracle2;
|
||||
break;
|
||||
}
|
||||
case 24:
|
||||
{
|
||||
oracleOrder = ordreOracle3;
|
||||
break;
|
||||
}
|
||||
case 25:
|
||||
{
|
||||
world.setStatus(26);
|
||||
final L2Party party = player.getParty();
|
||||
if (party != null)
|
||||
@@ -1694,9 +1705,12 @@ public final class CrystalCaverns extends AbstractInstance
|
||||
final L2Npc kechi = addSpawn(KECHI, 154069, 149525, -12158, 51165, false, 0, false, world.getInstanceId());
|
||||
startQuestTimer("checkKechiAttack", 1000, kechi, null);
|
||||
return "";
|
||||
}
|
||||
default:
|
||||
{
|
||||
_log.warning("CrystalCavern-SteamCorridor: status " + world.getStatus() + " error. OracleOrder not found in " + world.getInstanceId());
|
||||
return "";
|
||||
}
|
||||
}
|
||||
runSteamOracles(world, oracleOrder);
|
||||
}
|
||||
@@ -1778,6 +1792,7 @@ public final class CrystalCaverns extends AbstractInstance
|
||||
switch (npc.getId())
|
||||
{
|
||||
case 32275:
|
||||
{
|
||||
if (world.getStatus() == 22)
|
||||
{
|
||||
runSteamRooms(world, STEAM2_SPAWNS, 23);
|
||||
@@ -1805,7 +1820,9 @@ public final class CrystalCaverns extends AbstractInstance
|
||||
}
|
||||
startQuestTimer("Timer31", 600000, npc, null);
|
||||
break;
|
||||
}
|
||||
case 32276:
|
||||
{
|
||||
if (world.getStatus() == 23)
|
||||
{
|
||||
runSteamRooms(world, STEAM3_SPAWNS, 24);
|
||||
@@ -1833,7 +1850,9 @@ public final class CrystalCaverns extends AbstractInstance
|
||||
}
|
||||
startQuestTimer("Timer41", 1200000, npc, null);
|
||||
break;
|
||||
}
|
||||
case 32277:
|
||||
{
|
||||
if (world.getStatus() == 24)
|
||||
{
|
||||
runSteamRooms(world, STEAM4_SPAWNS, 25);
|
||||
@@ -1861,9 +1880,12 @@ public final class CrystalCaverns extends AbstractInstance
|
||||
}
|
||||
startQuestTimer("Timer51", 900000, npc, null);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
// something is wrong
|
||||
doTeleport = false;
|
||||
}
|
||||
}
|
||||
if (doTeleport && (loc != null))
|
||||
{
|
||||
@@ -1951,12 +1973,14 @@ public final class CrystalCaverns extends AbstractInstance
|
||||
switch (action)
|
||||
{
|
||||
case TRAP_DISARMED:
|
||||
{
|
||||
if (trap.getId() == DOOR_OPENING_TRAP[0])
|
||||
{
|
||||
openDoor(24220001, world.getInstanceId());
|
||||
runEmeraldRooms(world, ROOM1_SPAWNS, 1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
@@ -1978,19 +2002,27 @@ public final class CrystalCaverns extends AbstractInstance
|
||||
switch (zone.getId())
|
||||
{
|
||||
case 20105:
|
||||
{
|
||||
spawns = ROOM2_SPAWNS;
|
||||
room = 2;
|
||||
break;
|
||||
}
|
||||
case 20106:
|
||||
{
|
||||
spawns = ROOM3_SPAWNS;
|
||||
room = 3;
|
||||
break;
|
||||
}
|
||||
case 20107:
|
||||
{
|
||||
spawns = ROOM4_SPAWNS;
|
||||
room = 4;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
return super.onEnterZone(character, zone);
|
||||
}
|
||||
}
|
||||
for (L2DoorInstance door : InstanceManager.getInstance().getInstance(world.getInstanceId()).getDoors())
|
||||
{
|
||||
@@ -2036,16 +2068,24 @@ public final class CrystalCaverns extends AbstractInstance
|
||||
switch (zone.getId())
|
||||
{
|
||||
case 20105:
|
||||
{
|
||||
doorId = 24220002;
|
||||
break;
|
||||
}
|
||||
case 20106:
|
||||
{
|
||||
doorId = 24220003;
|
||||
break;
|
||||
}
|
||||
case 20107:
|
||||
{
|
||||
doorId = 24220004;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
return super.onExitZone(character, zone);
|
||||
}
|
||||
}
|
||||
for (L2DoorInstance door : InstanceManager.getInstance().getInstance(world.getInstanceId()).getDoors())
|
||||
{
|
||||
|
||||
@@ -151,20 +151,30 @@ public final class DisciplesNecropolisPast extends AbstractInstance
|
||||
switch (world.countKill)
|
||||
{
|
||||
case 4:
|
||||
{
|
||||
openDoor(DOOR_1, world.getInstanceId());
|
||||
break;
|
||||
}
|
||||
case 10:
|
||||
{
|
||||
openDoor(DOOR_2, world.getInstanceId());
|
||||
break;
|
||||
}
|
||||
case 18:
|
||||
{
|
||||
openDoor(DOOR_3, world.getInstanceId());
|
||||
break;
|
||||
}
|
||||
case 28:
|
||||
{
|
||||
openDoor(DOOR_4, world.getInstanceId());
|
||||
break;
|
||||
}
|
||||
case 40:
|
||||
{
|
||||
openDoor(DOOR_5, world.getInstanceId());
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -605,23 +605,30 @@ public final class FinalEmperialTomb extends AbstractInstance implements IXmlRea
|
||||
switch (world.getStatus())
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
spawnFlaggedNPCs(world, 0);
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
{
|
||||
for (int doorId : FIRST_ROUTE_DOORS)
|
||||
{
|
||||
openDoor(doorId, world.getInstanceId());
|
||||
}
|
||||
spawnFlaggedNPCs(world, world.getStatus());
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
for (int doorId : SECOND_ROUTE_DOORS)
|
||||
{
|
||||
openDoor(doorId, world.getInstanceId());
|
||||
}
|
||||
ThreadPoolManager.schedule(new IntroTask(world, 0), 600000);
|
||||
break;
|
||||
}
|
||||
case 3: // first morph
|
||||
{
|
||||
if (world.songEffectTask != null)
|
||||
{
|
||||
world.songEffectTask.cancel(false);
|
||||
@@ -636,7 +643,9 @@ public final class FinalEmperialTomb extends AbstractInstance implements IXmlRea
|
||||
world.activeScarlet.doCast(FIRST_MORPH_SKILL.getSkill());
|
||||
ThreadPoolManager.schedule(new SongTask(world, 2), 1500);
|
||||
break;
|
||||
}
|
||||
case 4: // second morph
|
||||
{
|
||||
world.isVideo = true;
|
||||
broadCastPacket(world, new MagicSkillCanceld(world.frintezza.getObjectId()));
|
||||
if (world.songEffectTask != null)
|
||||
@@ -647,7 +656,9 @@ public final class FinalEmperialTomb extends AbstractInstance implements IXmlRea
|
||||
ThreadPoolManager.schedule(new IntroTask(world, 23), 2000);
|
||||
ThreadPoolManager.schedule(new IntroTask(world, 24), 2100);
|
||||
break;
|
||||
}
|
||||
case 5: // raid success
|
||||
{
|
||||
world.isVideo = true;
|
||||
broadCastPacket(world, new MagicSkillCanceld(world.frintezza.getObjectId()));
|
||||
if (world.songTask != null)
|
||||
@@ -662,7 +673,9 @@ public final class FinalEmperialTomb extends AbstractInstance implements IXmlRea
|
||||
world.songEffectTask = null;
|
||||
ThreadPoolManager.schedule(new IntroTask(world, 33), 500);
|
||||
break;
|
||||
}
|
||||
case 6: // open doors
|
||||
{
|
||||
InstanceManager.getInstance().getInstance(world.getInstanceId()).setDuration(300000);
|
||||
for (int doorId : FIRST_ROOM_DOORS)
|
||||
{
|
||||
@@ -681,6 +694,7 @@ public final class FinalEmperialTomb extends AbstractInstance implements IXmlRea
|
||||
closeDoor(doorId, world.getInstanceId());
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
world.incStatus();
|
||||
return true;
|
||||
@@ -786,6 +800,7 @@ public final class FinalEmperialTomb extends AbstractInstance implements IXmlRea
|
||||
switch (_status)
|
||||
{
|
||||
case 0: // new song play
|
||||
{
|
||||
if (_world.isVideo)
|
||||
{
|
||||
_world.songTask = ThreadPoolManager.schedule(new SongTask(_world, 0), 1000);
|
||||
@@ -814,14 +829,15 @@ public final class FinalEmperialTomb extends AbstractInstance implements IXmlRea
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 1: // Frintezza song effect
|
||||
{
|
||||
_world.songEffectTask = null;
|
||||
final Skill skill = _world.OnSong.effectSkill.getSkill();
|
||||
if (skill == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if ((_world.frintezza != null) && !_world.frintezza.isDead() && (_world.activeScarlet != null) && !_world.activeScarlet.isDead())
|
||||
{
|
||||
final List<L2Character> targetList = new ArrayList<>();
|
||||
@@ -853,10 +869,13 @@ public final class FinalEmperialTomb extends AbstractInstance implements IXmlRea
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 2: // finish morph
|
||||
{
|
||||
_world.activeScarlet.setRHandId(SECOND_SCARLET_WEAPON);
|
||||
_world.activeScarlet.setIsInvul(false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -878,11 +897,14 @@ public final class FinalEmperialTomb extends AbstractInstance implements IXmlRea
|
||||
switch (_status)
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
ThreadPoolManager.schedule(new IntroTask(_world, 1), 27000);
|
||||
ThreadPoolManager.schedule(new IntroTask(_world, 2), 30000);
|
||||
broadCastPacket(_world, new Earthquake(-87784, -155083, -9087, 45, 27));
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
{
|
||||
for (int doorId : FIRST_ROOM_DOORS)
|
||||
{
|
||||
closeDoor(doorId, _world.getInstanceId());
|
||||
@@ -901,42 +923,39 @@ public final class FinalEmperialTomb extends AbstractInstance implements IXmlRea
|
||||
}
|
||||
addSpawn(29061, -87904, -141296, -9168, 0, false, 0, false, _world.getInstanceId());
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
_world.frintezzaDummy = addSpawn(29052, -87784, -155083, -9087, 16048, false, 0, false, _world.getInstanceId());
|
||||
_world.frintezzaDummy.setIsInvul(true);
|
||||
_world.frintezzaDummy.setIsImmobilized(true);
|
||||
|
||||
_world.overheadDummy = addSpawn(29052, -87784, -153298, -9175, 16384, false, 0, false, _world.getInstanceId());
|
||||
_world.overheadDummy.setIsInvul(true);
|
||||
_world.overheadDummy.setIsImmobilized(true);
|
||||
_world.overheadDummy.setCollisionHeight(600);
|
||||
|
||||
_world.portraitDummy1 = addSpawn(29052, -89566, -153168, -9165, 16048, false, 0, false, _world.getInstanceId());
|
||||
_world.portraitDummy1.setIsImmobilized(true);
|
||||
_world.portraitDummy1.setIsInvul(true);
|
||||
|
||||
_world.portraitDummy3 = addSpawn(29052, -86004, -153168, -9165, 16048, false, 0, false, _world.getInstanceId());
|
||||
_world.portraitDummy3.setIsImmobilized(true);
|
||||
_world.portraitDummy3.setIsInvul(true);
|
||||
|
||||
_world.scarletDummy = addSpawn(29053, -87784, -153298, -9175, 16384, false, 0, false, _world.getInstanceId());
|
||||
_world.scarletDummy.setIsInvul(true);
|
||||
_world.scarletDummy.setIsImmobilized(true);
|
||||
|
||||
stopPc();
|
||||
ThreadPoolManager.schedule(new IntroTask(_world, 3), 1000);
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
broadCastPacket(_world, new SpecialCamera(_world.overheadDummy, 0, 75, -89, 0, 100, 0, 0, 1, 0, 0));
|
||||
broadCastPacket(_world, new SpecialCamera(_world.overheadDummy, 0, 75, -89, 0, 100, 0, 0, 1, 0, 0));
|
||||
broadCastPacket(_world, new SpecialCamera(_world.overheadDummy, 300, 90, -10, 6500, 7000, 0, 0, 1, 0, 0));
|
||||
|
||||
_world.frintezza = (L2GrandBossInstance) addSpawn(FRINTEZZA, -87780, -155086, -9080, 16384, false, 0, false, _world.getInstanceId());
|
||||
_world.frintezza.setIsImmobilized(true);
|
||||
_world.frintezza.setIsInvul(true);
|
||||
_world.frintezza.disableAllSkills();
|
||||
updateKnownList(_world, _world.frintezza);
|
||||
|
||||
for (int[] element : PORTRAIT_SPAWNS)
|
||||
{
|
||||
final L2MonsterInstance demon = (L2MonsterInstance) addSpawn(element[0] + 2, element[5], element[6], element[7], element[8], false, 0, false, _world.getInstanceId());
|
||||
@@ -947,41 +966,57 @@ public final class FinalEmperialTomb extends AbstractInstance implements IXmlRea
|
||||
}
|
||||
ThreadPoolManager.schedule(new IntroTask(_world, 4), 6500);
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
broadCastPacket(_world, new SpecialCamera(_world.frintezzaDummy, 1800, 90, 8, 6500, 7000, 0, 0, 1, 0, 0));
|
||||
ThreadPoolManager.schedule(new IntroTask(_world, 5), 900);
|
||||
break;
|
||||
}
|
||||
case 5:
|
||||
{
|
||||
broadCastPacket(_world, new SpecialCamera(_world.frintezzaDummy, 140, 90, 10, 2500, 4500, 0, 0, 1, 0, 0));
|
||||
ThreadPoolManager.schedule(new IntroTask(_world, 6), 4000);
|
||||
break;
|
||||
}
|
||||
case 6:
|
||||
{
|
||||
broadCastPacket(_world, new SpecialCamera(_world.frintezza, 40, 75, -10, 0, 1000, 0, 0, 1, 0, 0));
|
||||
broadCastPacket(_world, new SpecialCamera(_world.frintezza, 40, 75, -10, 0, 12000, 0, 0, 1, 0, 0));
|
||||
ThreadPoolManager.schedule(new IntroTask(_world, 7), 1350);
|
||||
break;
|
||||
}
|
||||
case 7:
|
||||
{
|
||||
broadCastPacket(_world, new SocialAction(_world.frintezza.getObjectId(), 2));
|
||||
ThreadPoolManager.schedule(new IntroTask(_world, 8), 7000);
|
||||
break;
|
||||
}
|
||||
case 8:
|
||||
{
|
||||
_world.frintezzaDummy.deleteMe();
|
||||
_world.frintezzaDummy = null;
|
||||
ThreadPoolManager.schedule(new IntroTask(_world, 9), 1000);
|
||||
break;
|
||||
}
|
||||
case 9:
|
||||
{
|
||||
broadCastPacket(_world, new SocialAction(_world.demons.get(1).getObjectId(), 1));
|
||||
broadCastPacket(_world, new SocialAction(_world.demons.get(2).getObjectId(), 1));
|
||||
ThreadPoolManager.schedule(new IntroTask(_world, 10), 400);
|
||||
break;
|
||||
}
|
||||
case 10:
|
||||
{
|
||||
broadCastPacket(_world, new SocialAction(_world.demons.get(0).getObjectId(), 1));
|
||||
broadCastPacket(_world, new SocialAction(_world.demons.get(3).getObjectId(), 1));
|
||||
sendPacketX(new SpecialCamera(_world.portraitDummy1, 1000, 118, 0, 0, 1000, 0, 0, 1, 0, 0), new SpecialCamera(_world.portraitDummy3, 1000, 62, 0, 0, 1000, 0, 0, 1, 0, 0), -87784);
|
||||
sendPacketX(new SpecialCamera(_world.portraitDummy1, 1000, 118, 0, 0, 10000, 0, 0, 1, 0, 0), new SpecialCamera(_world.portraitDummy3, 1000, 62, 0, 0, 10000, 0, 0, 1, 0, 0), -87784);
|
||||
ThreadPoolManager.schedule(new IntroTask(_world, 11), 2000);
|
||||
break;
|
||||
}
|
||||
case 11:
|
||||
{
|
||||
broadCastPacket(_world, new SpecialCamera(_world.frintezza, 240, 90, 0, 0, 1000, 0, 0, 1, 0, 0));
|
||||
broadCastPacket(_world, new SpecialCamera(_world.frintezza, 240, 90, 25, 5500, 10000, 0, 0, 1, 0, 0));
|
||||
broadCastPacket(_world, new SocialAction(_world.frintezza.getObjectId(), 3));
|
||||
@@ -991,36 +1026,49 @@ public final class FinalEmperialTomb extends AbstractInstance implements IXmlRea
|
||||
_world.portraitDummy3 = null;
|
||||
ThreadPoolManager.schedule(new IntroTask(_world, 12), 4500);
|
||||
break;
|
||||
}
|
||||
case 12:
|
||||
{
|
||||
broadCastPacket(_world, new SpecialCamera(_world.frintezza, 100, 195, 35, 0, 10000, 0, 0, 1, 0, 0));
|
||||
ThreadPoolManager.schedule(new IntroTask(_world, 13), 700);
|
||||
break;
|
||||
}
|
||||
case 13:
|
||||
{
|
||||
broadCastPacket(_world, new SpecialCamera(_world.frintezza, 100, 195, 35, 0, 10000, 0, 0, 1, 0, 0));
|
||||
ThreadPoolManager.schedule(new IntroTask(_world, 14), 1300);
|
||||
break;
|
||||
}
|
||||
case 14:
|
||||
{
|
||||
broadCastPacket(_world, new ExShowScreenMessage(NpcStringId.MOURNFUL_CHORALE_PRELUDE, 2, 5000));
|
||||
broadCastPacket(_world, new SpecialCamera(_world.frintezza, 120, 180, 45, 1500, 10000, 0, 0, 1, 0, 0));
|
||||
broadCastPacket(_world, new MagicSkillUse(_world.frintezza, _world.frintezza, 5006, 1, 34000, 0));
|
||||
ThreadPoolManager.schedule(new IntroTask(_world, 15), 1500);
|
||||
break;
|
||||
}
|
||||
case 15:
|
||||
{
|
||||
broadCastPacket(_world, new SpecialCamera(_world.frintezza, 520, 135, 45, 8000, 10000, 0, 0, 1, 0, 0));
|
||||
ThreadPoolManager.schedule(new IntroTask(_world, 16), 7500);
|
||||
break;
|
||||
}
|
||||
case 16:
|
||||
{
|
||||
broadCastPacket(_world, new SpecialCamera(_world.frintezza, 1500, 110, 25, 10000, 13000, 0, 0, 1, 0, 0));
|
||||
ThreadPoolManager.schedule(new IntroTask(_world, 17), 9500);
|
||||
break;
|
||||
}
|
||||
case 17:
|
||||
{
|
||||
broadCastPacket(_world, new SpecialCamera(_world.overheadDummy, 930, 160, -20, 0, 1000, 0, 0, 1, 0, 0));
|
||||
broadCastPacket(_world, new SpecialCamera(_world.overheadDummy, 600, 180, -25, 0, 10000, 0, 0, 1, 0, 0));
|
||||
broadCastPacket(_world, new MagicSkillUse(_world.scarletDummy, _world.overheadDummy, 5004, 1, 5800, 0));
|
||||
|
||||
ThreadPoolManager.schedule(new IntroTask(_world, 18), 5000);
|
||||
break;
|
||||
}
|
||||
case 18:
|
||||
{
|
||||
_world.activeScarlet = (L2GrandBossInstance) addSpawn(29046, -87789, -153295, -9176, 16384, false, 0, false, _world.getInstanceId());
|
||||
_world.activeScarlet.setRHandId(FIRST_SCARLET_WEAPON);
|
||||
_world.activeScarlet.setIsInvul(true);
|
||||
@@ -1031,31 +1079,37 @@ public final class FinalEmperialTomb extends AbstractInstance implements IXmlRea
|
||||
broadCastPacket(_world, new SpecialCamera(_world.scarletDummy, 800, 180, 10, 1000, 10000, 0, 0, 1, 0, 0));
|
||||
ThreadPoolManager.schedule(new IntroTask(_world, 19), 2100);
|
||||
break;
|
||||
}
|
||||
case 19:
|
||||
{
|
||||
broadCastPacket(_world, new SpecialCamera(_world.activeScarlet, 300, 60, 8, 0, 10000, 0, 0, 1, 0, 0));
|
||||
ThreadPoolManager.schedule(new IntroTask(_world, 20), 2000);
|
||||
break;
|
||||
}
|
||||
case 20:
|
||||
{
|
||||
broadCastPacket(_world, new SpecialCamera(_world.activeScarlet, 500, 90, 10, 3000, 5000, 0, 0, 1, 0, 0));
|
||||
_world.songTask = ThreadPoolManager.schedule(new SongTask(_world, 0), 100);
|
||||
ThreadPoolManager.schedule(new IntroTask(_world, 21), 3000);
|
||||
break;
|
||||
}
|
||||
case 21:
|
||||
{
|
||||
for (int i = 0; i < PORTRAIT_SPAWNS.length; i++)
|
||||
{
|
||||
final L2MonsterInstance portrait = (L2MonsterInstance) addSpawn(PORTRAIT_SPAWNS[i][0], PORTRAIT_SPAWNS[i][1], PORTRAIT_SPAWNS[i][2], PORTRAIT_SPAWNS[i][3], PORTRAIT_SPAWNS[i][4], false, 0, false, _world.getInstanceId());
|
||||
updateKnownList(_world, portrait);
|
||||
_world.portraits.put(portrait, i);
|
||||
}
|
||||
|
||||
_world.overheadDummy.deleteMe();
|
||||
_world.scarletDummy.deleteMe();
|
||||
_world.overheadDummy = null;
|
||||
_world.scarletDummy = null;
|
||||
|
||||
ThreadPoolManager.schedule(new IntroTask(_world, 22), 2000);
|
||||
break;
|
||||
}
|
||||
case 22:
|
||||
{
|
||||
for (L2MonsterInstance demon : _world.demons)
|
||||
{
|
||||
demon.setIsImmobilized(false);
|
||||
@@ -1070,13 +1124,16 @@ public final class FinalEmperialTomb extends AbstractInstance implements IXmlRea
|
||||
_world.frintezza.disableCoreAI(true);
|
||||
_world.frintezza.setIsMortal(false);
|
||||
startPc();
|
||||
|
||||
ThreadPoolManager.schedule(new DemonSpawnTask(_world), TIME_BETWEEN_DEMON_SPAWNS);
|
||||
break;
|
||||
}
|
||||
case 23:
|
||||
{
|
||||
broadCastPacket(_world, new SocialAction(_world.frintezza.getObjectId(), 4));
|
||||
break;
|
||||
}
|
||||
case 24:
|
||||
{
|
||||
stopPc();
|
||||
broadCastPacket(_world, new SpecialCamera(_world.frintezza, 250, 120, 15, 0, 1000, 0, 0, 1, 0, 0));
|
||||
broadCastPacket(_world, new SpecialCamera(_world.frintezza, 250, 120, 15, 0, 10000, 0, 0, 1, 0, 0));
|
||||
@@ -1087,16 +1144,22 @@ public final class FinalEmperialTomb extends AbstractInstance implements IXmlRea
|
||||
_world.activeScarlet.disableAllSkills();
|
||||
ThreadPoolManager.schedule(new IntroTask(_world, 25), 7000);
|
||||
break;
|
||||
}
|
||||
case 25:
|
||||
{
|
||||
broadCastPacket(_world, new MagicSkillUse(_world.frintezza, _world.frintezza, 5006, 1, 34000, 0));
|
||||
broadCastPacket(_world, new SpecialCamera(_world.frintezza, 500, 70, 15, 3000, 10000, 0, 0, 1, 0, 0));
|
||||
ThreadPoolManager.schedule(new IntroTask(_world, 26), 3000);
|
||||
break;
|
||||
}
|
||||
case 26:
|
||||
{
|
||||
broadCastPacket(_world, new SpecialCamera(_world.frintezza, 2500, 90, 12, 6000, 10000, 0, 0, 1, 0, 0));
|
||||
ThreadPoolManager.schedule(new IntroTask(_world, 27), 3000);
|
||||
break;
|
||||
}
|
||||
case 27:
|
||||
{
|
||||
_world.scarlet_x = _world.activeScarlet.getX();
|
||||
_world.scarlet_y = _world.activeScarlet.getY();
|
||||
_world.scarlet_z = _world.activeScarlet.getZ();
|
||||
@@ -1113,61 +1176,80 @@ public final class FinalEmperialTomb extends AbstractInstance implements IXmlRea
|
||||
broadCastPacket(_world, new SpecialCamera(_world.activeScarlet, 250, _world.scarlet_a, 12, 0, 10000, 0, 0, 1, 0, 0));
|
||||
ThreadPoolManager.schedule(new IntroTask(_world, 28), 500);
|
||||
break;
|
||||
}
|
||||
case 28:
|
||||
{
|
||||
_world.activeScarlet.doDie(_world.activeScarlet);
|
||||
broadCastPacket(_world, new SpecialCamera(_world.activeScarlet, 450, _world.scarlet_a, 14, 8000, 8000, 0, 0, 1, 0, 0));
|
||||
ThreadPoolManager.schedule(new IntroTask(_world, 29), 6250);
|
||||
ThreadPoolManager.schedule(new IntroTask(_world, 30), 7200);
|
||||
break;
|
||||
}
|
||||
case 29:
|
||||
{
|
||||
_world.activeScarlet.deleteMe();
|
||||
_world.activeScarlet = null;
|
||||
break;
|
||||
}
|
||||
case 30:
|
||||
{
|
||||
_world.activeScarlet = (L2GrandBossInstance) addSpawn(SCARLET2, _world.scarlet_x, _world.scarlet_y, _world.scarlet_z, _world.scarlet_h, false, 0, false, _world.getInstanceId());
|
||||
_world.activeScarlet.setIsInvul(true);
|
||||
_world.activeScarlet.setIsImmobilized(true);
|
||||
_world.activeScarlet.disableAllSkills();
|
||||
updateKnownList(_world, _world.activeScarlet);
|
||||
|
||||
broadCastPacket(_world, new SpecialCamera(_world.activeScarlet, 450, _world.scarlet_a, 12, 500, 14000, 0, 0, 1, 0, 0));
|
||||
|
||||
ThreadPoolManager.schedule(new IntroTask(_world, 31), 8100);
|
||||
break;
|
||||
}
|
||||
case 31:
|
||||
{
|
||||
broadCastPacket(_world, new SocialAction(_world.activeScarlet.getObjectId(), 2));
|
||||
ThreadPoolManager.schedule(new IntroTask(_world, 32), 9000);
|
||||
break;
|
||||
}
|
||||
case 32:
|
||||
{
|
||||
startPc();
|
||||
_world.activeScarlet.setIsInvul(false);
|
||||
_world.activeScarlet.setIsImmobilized(false);
|
||||
_world.activeScarlet.enableAllSkills();
|
||||
_world.isVideo = false;
|
||||
break;
|
||||
}
|
||||
case 33:
|
||||
{
|
||||
broadCastPacket(_world, new SpecialCamera(_world.activeScarlet, 300, _world.scarlet_a - 180, 5, 0, 7000, 0, 0, 1, 0, 0));
|
||||
broadCastPacket(_world, new SpecialCamera(_world.activeScarlet, 200, _world.scarlet_a, 85, 4000, 10000, 0, 0, 1, 0, 0));
|
||||
ThreadPoolManager.schedule(new IntroTask(_world, 34), 7400);
|
||||
ThreadPoolManager.schedule(new IntroTask(_world, 35), 7500);
|
||||
break;
|
||||
}
|
||||
case 34:
|
||||
{
|
||||
_world.frintezza.doDie(_world.frintezza);
|
||||
break;
|
||||
}
|
||||
case 35:
|
||||
{
|
||||
broadCastPacket(_world, new SpecialCamera(_world.frintezza, 100, 120, 5, 0, 7000, 0, 0, 1, 0, 0));
|
||||
broadCastPacket(_world, new SpecialCamera(_world.frintezza, 100, 90, 5, 5000, 15000, 0, 0, 1, 0, 0));
|
||||
ThreadPoolManager.schedule(new IntroTask(_world, 36), 7000);
|
||||
break;
|
||||
}
|
||||
case 36:
|
||||
{
|
||||
broadCastPacket(_world, new SpecialCamera(_world.frintezza, 900, 90, 25, 7000, 10000, 0, 0, 1, 0, 0));
|
||||
ThreadPoolManager.schedule(new IntroTask(_world, 37), 9000);
|
||||
break;
|
||||
}
|
||||
case 37:
|
||||
{
|
||||
controlStatus(_world);
|
||||
_world.isVideo = false;
|
||||
startPc();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1243,28 +1325,38 @@ public final class FinalEmperialTomb extends AbstractInstance implements IXmlRea
|
||||
switch (_status)
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
ThreadPoolManager.schedule(new StatusTask(_world, 1), 2000);
|
||||
for (int doorId : FIRST_ROOM_DOORS)
|
||||
{
|
||||
openDoor(doorId, _world.getInstanceId());
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
{
|
||||
addAggroToMobs();
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
ThreadPoolManager.schedule(new StatusTask(_world, 3), 100);
|
||||
for (int doorId : SECOND_ROOM_DOORS)
|
||||
{
|
||||
openDoor(doorId, _world.getInstanceId());
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
addAggroToMobs();
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
controlStatus(_world);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -168,14 +168,19 @@ public abstract class AbstractSagaQuest extends Quest
|
||||
case "0-013.htm":
|
||||
case "0-014.htm":
|
||||
case "0-015.htm":
|
||||
{
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "accept":
|
||||
{
|
||||
st.startQuest();
|
||||
giveItems(player, Items[10], 1);
|
||||
htmltext = "0-03.htm";
|
||||
break;
|
||||
}
|
||||
case "0-1":
|
||||
{
|
||||
if (player.getLevel() < 76)
|
||||
{
|
||||
htmltext = "0-02.htm";
|
||||
@@ -189,7 +194,9 @@ public abstract class AbstractSagaQuest extends Quest
|
||||
htmltext = "0-05.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "0-2":
|
||||
{
|
||||
if (player.getLevel() < 76)
|
||||
{
|
||||
takeItems(player, Items[10], -1);
|
||||
@@ -215,11 +222,15 @@ public abstract class AbstractSagaQuest extends Quest
|
||||
htmltext = "0-07.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "1-3":
|
||||
{
|
||||
st.setCond(3);
|
||||
htmltext = "1-05.htm";
|
||||
break;
|
||||
}
|
||||
case "1-4":
|
||||
{
|
||||
st.setCond(4);
|
||||
takeItems(player, Items[0], 1);
|
||||
if (Items[11] != 0)
|
||||
@@ -229,42 +240,60 @@ public abstract class AbstractSagaQuest extends Quest
|
||||
giveItems(player, Items[1], 1);
|
||||
htmltext = "1-06.htm";
|
||||
break;
|
||||
}
|
||||
case "2-1":
|
||||
{
|
||||
st.setCond(2);
|
||||
htmltext = "2-05.htm";
|
||||
break;
|
||||
}
|
||||
case "2-2":
|
||||
{
|
||||
st.setCond(5);
|
||||
takeItems(player, Items[1], 1);
|
||||
giveItems(player, Items[4], 1);
|
||||
htmltext = "2-06.htm";
|
||||
break;
|
||||
}
|
||||
case "3-5":
|
||||
{
|
||||
htmltext = "3-07.htm";
|
||||
break;
|
||||
}
|
||||
case "3-6":
|
||||
{
|
||||
st.setCond(11);
|
||||
htmltext = "3-02.htm";
|
||||
break;
|
||||
}
|
||||
case "3-7":
|
||||
{
|
||||
st.setCond(12);
|
||||
htmltext = "3-03.htm";
|
||||
break;
|
||||
}
|
||||
case "3-8":
|
||||
{
|
||||
st.setCond(13);
|
||||
takeItems(player, Items[2], 1);
|
||||
giveItems(player, Items[7], 1);
|
||||
htmltext = "3-08.htm";
|
||||
break;
|
||||
}
|
||||
case "4-1":
|
||||
{
|
||||
htmltext = "4-010.htm";
|
||||
break;
|
||||
}
|
||||
case "4-2":
|
||||
{
|
||||
giveItems(player, Items[9], 1);
|
||||
st.setCond(18, true);
|
||||
htmltext = "4-011.htm";
|
||||
break;
|
||||
}
|
||||
case "4-3":
|
||||
{
|
||||
giveItems(player, Items[9], 1);
|
||||
st.setCond(18, true);
|
||||
autoChat(npc, Text[13].replace("PLAYERNAME", player.getName()));
|
||||
@@ -272,19 +301,25 @@ public abstract class AbstractSagaQuest extends Quest
|
||||
cancelQuestTimer("Mob_2 has despawned", npc, player);
|
||||
DeleteSpawn(st, npc);
|
||||
return null;
|
||||
}
|
||||
case "5-1":
|
||||
{
|
||||
st.setCond(6, true);
|
||||
takeItems(player, Items[4], 1);
|
||||
cast(npc, player, 4546, 1);
|
||||
htmltext = "5-02.htm";
|
||||
break;
|
||||
}
|
||||
case "6-1":
|
||||
{
|
||||
st.setCond(8, true);
|
||||
takeItems(player, Items[5], 1);
|
||||
cast(npc, player, 4546, 1);
|
||||
htmltext = "6-03.htm";
|
||||
break;
|
||||
}
|
||||
case "7-1":
|
||||
{
|
||||
if (st.getInt("spawned") == 1)
|
||||
{
|
||||
htmltext = "7-03.htm";
|
||||
@@ -303,25 +338,33 @@ public abstract class AbstractSagaQuest extends Quest
|
||||
htmltext = "7-04.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "7-2":
|
||||
{
|
||||
st.setCond(10, true);
|
||||
takeItems(player, Items[6], 1);
|
||||
cast(npc, player, 4546, 1);
|
||||
htmltext = "7-06.htm";
|
||||
break;
|
||||
}
|
||||
case "8-1":
|
||||
{
|
||||
st.setCond(14, true);
|
||||
takeItems(player, Items[7], 1);
|
||||
cast(npc, player, 4546, 1);
|
||||
htmltext = "8-02.htm";
|
||||
break;
|
||||
}
|
||||
case "9-1":
|
||||
{
|
||||
st.setCond(17, true);
|
||||
takeItems(player, Items[8], 1);
|
||||
cast(npc, player, 4546, 1);
|
||||
htmltext = "9-03.htm";
|
||||
break;
|
||||
}
|
||||
case "10-1":
|
||||
{
|
||||
if (st.getInt("Quest0") == 0)
|
||||
{
|
||||
final L2Npc Mob_3 = addSpawn(Mob[2], npcSpawnLocations[1], false, 0);
|
||||
@@ -346,30 +389,42 @@ public abstract class AbstractSagaQuest extends Quest
|
||||
htmltext = "10-04.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "10-2":
|
||||
{
|
||||
st.setCond(19, true);
|
||||
takeItems(player, Items[9], 1);
|
||||
cast(npc, player, 4546, 1);
|
||||
htmltext = "10-06.htm";
|
||||
break;
|
||||
}
|
||||
case "11-9":
|
||||
{
|
||||
st.setCond(15);
|
||||
htmltext = "11-03.htm";
|
||||
break;
|
||||
}
|
||||
case "Mob_1 Timer 1":
|
||||
{
|
||||
autoChat(npc, Text[0].replace("PLAYERNAME", player.getName()));
|
||||
return null;
|
||||
}
|
||||
case "Mob_1 has despawned":
|
||||
{
|
||||
autoChat(npc, Text[1].replace("PLAYERNAME", player.getName()));
|
||||
st.set("spawned", "0");
|
||||
DeleteSpawn(st, npc);
|
||||
return null;
|
||||
}
|
||||
case "Archon Hellisha has despawned":
|
||||
{
|
||||
autoChat(npc, Text[6].replace("PLAYERNAME", player.getName()));
|
||||
st.set("spawned", "0");
|
||||
DeleteSpawn(st, npc);
|
||||
return null;
|
||||
}
|
||||
case "Mob_3 Timer 1":
|
||||
{
|
||||
final L2Npc Mob_2 = FindSpawn(player, (L2Npc) L2World.getInstance().findObject(st.getInt("Mob_2")));
|
||||
if (npc.getKnownList().knowsObject(Mob_2))
|
||||
{
|
||||
@@ -380,12 +435,16 @@ public abstract class AbstractSagaQuest extends Quest
|
||||
cancelQuestTimer("Mob_3 Timer 1", npc, player);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
case "Mob_3 has despawned":
|
||||
{
|
||||
autoChat(npc, Text[15].replace("PLAYERNAME", player.getName()));
|
||||
st.set("Quest0", "2");
|
||||
DeleteSpawn(st, npc);
|
||||
return null;
|
||||
}
|
||||
case "Mob_2 Timer 1":
|
||||
{
|
||||
autoChat(npc, Text[7].replace("PLAYERNAME", player.getName()));
|
||||
startQuestTimer("Mob_2 Timer 2", 1500, npc, player);
|
||||
if (st.getInt("Quest1") == 45)
|
||||
@@ -393,11 +452,15 @@ public abstract class AbstractSagaQuest extends Quest
|
||||
st.set("Quest1", "0");
|
||||
}
|
||||
return null;
|
||||
}
|
||||
case "Mob_2 Timer 2":
|
||||
{
|
||||
autoChat(npc, Text[8].replace("PLAYERNAME", player.getName()));
|
||||
startQuestTimer("Mob_2 Timer 3", 10000, npc, player);
|
||||
return null;
|
||||
}
|
||||
case "Mob_2 Timer 3":
|
||||
{
|
||||
if (st.getInt("Quest0") == 0)
|
||||
{
|
||||
startQuestTimer("Mob_2 Timer 3", 13000, npc, player);
|
||||
@@ -411,7 +474,9 @@ public abstract class AbstractSagaQuest extends Quest
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
case "Mob_2 has despawned":
|
||||
{
|
||||
st.set("Quest1", String.valueOf(st.getInt("Quest1") + 1));
|
||||
if ((st.getInt("Quest0") == 1) || (st.getInt("Quest0") == 2) || (st.getInt("Quest1") > 3))
|
||||
{
|
||||
@@ -432,6 +497,7 @@ public abstract class AbstractSagaQuest extends Quest
|
||||
startQuestTimer("Mob_2 has despawned", 1000, npc, player);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
@@ -756,12 +822,15 @@ public abstract class AbstractSagaQuest extends Quest
|
||||
switch (st.getCond())
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
if (npcId == _npc[0])
|
||||
{
|
||||
htmltext = "0-01.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
{
|
||||
if (npcId == _npc[0])
|
||||
{
|
||||
htmltext = "0-04.htm";
|
||||
@@ -771,7 +840,9 @@ public abstract class AbstractSagaQuest extends Quest
|
||||
htmltext = "2-01.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
if (npcId == _npc[2])
|
||||
{
|
||||
htmltext = "2-02.htm";
|
||||
@@ -781,7 +852,9 @@ public abstract class AbstractSagaQuest extends Quest
|
||||
htmltext = "1-01.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
if ((npcId == _npc[1]) && hasQuestItems(player, Items[0]))
|
||||
{
|
||||
if ((Items[11] == 0) || hasQuestItems(player, Items[11]))
|
||||
@@ -794,7 +867,9 @@ public abstract class AbstractSagaQuest extends Quest
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
if (npcId == _npc[1])
|
||||
{
|
||||
htmltext = "1-04.htm";
|
||||
@@ -804,7 +879,9 @@ public abstract class AbstractSagaQuest extends Quest
|
||||
htmltext = "2-03.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 5:
|
||||
{
|
||||
if (npcId == _npc[2])
|
||||
{
|
||||
htmltext = "2-04.htm";
|
||||
@@ -814,7 +891,9 @@ public abstract class AbstractSagaQuest extends Quest
|
||||
htmltext = "5-01.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 6:
|
||||
{
|
||||
if (npcId == _npc[5])
|
||||
{
|
||||
htmltext = "5-03.htm";
|
||||
@@ -824,13 +903,17 @@ public abstract class AbstractSagaQuest extends Quest
|
||||
htmltext = "6-01.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 7:
|
||||
{
|
||||
if (npcId == _npc[6])
|
||||
{
|
||||
htmltext = "6-02.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 8:
|
||||
{
|
||||
if (npcId == _npc[6])
|
||||
{
|
||||
htmltext = "6-04.htm";
|
||||
@@ -840,13 +923,17 @@ public abstract class AbstractSagaQuest extends Quest
|
||||
htmltext = "7-01.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 9:
|
||||
{
|
||||
if (npcId == _npc[7])
|
||||
{
|
||||
htmltext = "7-05.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 10:
|
||||
{
|
||||
if (npcId == _npc[7])
|
||||
{
|
||||
htmltext = "7-07.htm";
|
||||
@@ -856,8 +943,10 @@ public abstract class AbstractSagaQuest extends Quest
|
||||
htmltext = "3-01.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 11:
|
||||
case 12:
|
||||
{
|
||||
if (npcId == _npc[3])
|
||||
{
|
||||
if (hasQuestItems(player, Items[2]))
|
||||
@@ -870,7 +959,9 @@ public abstract class AbstractSagaQuest extends Quest
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 13:
|
||||
{
|
||||
if (npcId == _npc[3])
|
||||
{
|
||||
htmltext = "3-06.htm";
|
||||
@@ -880,7 +971,9 @@ public abstract class AbstractSagaQuest extends Quest
|
||||
htmltext = "8-01.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 14:
|
||||
{
|
||||
if (npcId == _npc[8])
|
||||
{
|
||||
htmltext = "8-03.htm";
|
||||
@@ -890,7 +983,9 @@ public abstract class AbstractSagaQuest extends Quest
|
||||
htmltext = "11-01.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 15:
|
||||
{
|
||||
if (npcId == _npc[11])
|
||||
{
|
||||
htmltext = "11-02.htm";
|
||||
@@ -900,13 +995,17 @@ public abstract class AbstractSagaQuest extends Quest
|
||||
htmltext = "9-01.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 16:
|
||||
{
|
||||
if (npcId == _npc[9])
|
||||
{
|
||||
htmltext = "9-02.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 17:
|
||||
{
|
||||
if (npcId == _npc[9])
|
||||
{
|
||||
htmltext = "9-04.htm";
|
||||
@@ -916,13 +1015,17 @@ public abstract class AbstractSagaQuest extends Quest
|
||||
htmltext = "10-01.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 18:
|
||||
{
|
||||
if (npcId == _npc[10])
|
||||
{
|
||||
htmltext = "10-05.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 19:
|
||||
{
|
||||
if (npcId == _npc[10])
|
||||
{
|
||||
htmltext = "10-07.htm";
|
||||
@@ -932,7 +1035,9 @@ public abstract class AbstractSagaQuest extends Quest
|
||||
htmltext = "0-06.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 20:
|
||||
{
|
||||
if (npcId == _npc[0])
|
||||
{
|
||||
if (player.getLevel() >= 76)
|
||||
@@ -961,6 +1066,7 @@ public abstract class AbstractSagaQuest extends Quest
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
|
||||
@@ -66,15 +66,20 @@ public class Q00002_WhatWomenWant extends Quest
|
||||
switch (event)
|
||||
{
|
||||
case "30223-04.htm":
|
||||
{
|
||||
st.startQuest();
|
||||
giveItems(player, ARUJIENS_LETTER1, 1);
|
||||
break;
|
||||
}
|
||||
case "30223-08.html":
|
||||
{
|
||||
takeItems(player, ARUJIENS_LETTER3, -1);
|
||||
giveItems(player, POETRY_BOOK, 1);
|
||||
st.setCond(4, true);
|
||||
break;
|
||||
}
|
||||
case "30223-09.html":
|
||||
{
|
||||
giveAdena(player, 450, true);
|
||||
st.exitQuest(false, true);
|
||||
// Newbie Guide
|
||||
@@ -82,11 +87,16 @@ public class Q00002_WhatWomenWant extends Quest
|
||||
addExpAndSp(player, 4254, 335);
|
||||
giveAdena(player, 1850, true);
|
||||
break;
|
||||
}
|
||||
case "30223-03.html":
|
||||
{
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
htmltext = null;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
@@ -99,27 +109,40 @@ public class Q00002_WhatWomenWant extends Quest
|
||||
switch (npc.getId())
|
||||
{
|
||||
case ARUJIEN:
|
||||
{
|
||||
switch (st.getState())
|
||||
{
|
||||
case State.CREATED:
|
||||
{
|
||||
htmltext = ((player.getRace() != Race.ELF) && (player.getRace() != Race.HUMAN)) ? "30223-00.htm" : (player.getLevel() >= MIN_LEVEL) ? "30223-02.htm" : "30223-01.html";
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
switch (st.getCond())
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
htmltext = "30223-05.html";
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
htmltext = "30223-06.html";
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
htmltext = "30223-07.html";
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
htmltext = "30223-10.html";
|
||||
break;
|
||||
}
|
||||
case 5:
|
||||
{
|
||||
giveItems(player, EARRING, 1);
|
||||
st.exitQuest(false, true);
|
||||
htmltext = "30223-11.html";
|
||||
@@ -128,14 +151,20 @@ public class Q00002_WhatWomenWant extends Quest
|
||||
addExpAndSp(player, 4254, 335);
|
||||
giveAdena(player, 1850, true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.COMPLETED:
|
||||
{
|
||||
htmltext = getAlreadyCompletedMsg(player);
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case MIRABEL:
|
||||
{
|
||||
if (st.isStarted())
|
||||
{
|
||||
if (st.isCond(1))
|
||||
@@ -151,7 +180,9 @@ public class Q00002_WhatWomenWant extends Quest
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case HERBIEL:
|
||||
{
|
||||
if (st.isStarted() && (st.getCond() > 1))
|
||||
{
|
||||
if (st.isCond(2))
|
||||
@@ -167,7 +198,9 @@ public class Q00002_WhatWomenWant extends Quest
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case GREENIS:
|
||||
{
|
||||
if (st.isStarted())
|
||||
{
|
||||
if (st.isCond(4))
|
||||
@@ -187,6 +220,7 @@ public class Q00002_WhatWomenWant extends Quest
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@@ -69,13 +69,19 @@ public class Q00003_WillTheSealBeBroken extends Quest
|
||||
switch (event)
|
||||
{
|
||||
case "30141-03.htm":
|
||||
{
|
||||
st.startQuest();
|
||||
break;
|
||||
}
|
||||
case "30141-05.html":
|
||||
{
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
htmltext = null;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
@@ -92,17 +98,23 @@ public class Q00003_WillTheSealBeBroken extends Quest
|
||||
switch (npc.getId())
|
||||
{
|
||||
case OMEN_BEAST:
|
||||
{
|
||||
giveItem(member, st, OMEN_BEAST_EYE, getRegisteredItemIds());
|
||||
break;
|
||||
}
|
||||
case STINK_ZOMBIE:
|
||||
case TAINTED_ZOMBIE:
|
||||
{
|
||||
giveItem(member, st, TAINT_STONE, getRegisteredItemIds());
|
||||
break;
|
||||
}
|
||||
case LESSER_SUCCUBUS:
|
||||
case LESSER_SUCCUBUS_TILFO:
|
||||
case LESSER_SUCCUBUS_TUREN:
|
||||
{
|
||||
giveItem(member, st, SUCCUBUS_BLOOD, getRegisteredItemIds());
|
||||
break;
|
||||
}
|
||||
}
|
||||
return super.onKill(npc, player, isSummon);
|
||||
}
|
||||
@@ -115,9 +127,12 @@ public class Q00003_WillTheSealBeBroken extends Quest
|
||||
switch (st.getState())
|
||||
{
|
||||
case State.CREATED:
|
||||
{
|
||||
htmltext = (player.getRace() != Race.DARK_ELF) ? "30141-00.htm" : (player.getLevel() >= MIN_LEVEL) ? "30141-02.htm" : "30141-01.html";
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
if (st.isCond(1))
|
||||
{
|
||||
htmltext = "30141-04.html";
|
||||
@@ -129,9 +144,12 @@ public class Q00003_WillTheSealBeBroken extends Quest
|
||||
htmltext = "30141-06.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.COMPLETED:
|
||||
{
|
||||
htmltext = getAlreadyCompletedMsg(player);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@@ -71,13 +71,19 @@ public class Q00004_LongLiveThePaagrioLord extends Quest
|
||||
switch (event)
|
||||
{
|
||||
case "30578-03.htm":
|
||||
{
|
||||
st.startQuest();
|
||||
break;
|
||||
}
|
||||
case "30578-05.html":
|
||||
{
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
htmltext = null;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
@@ -90,12 +96,16 @@ public class Q00004_LongLiveThePaagrioLord extends Quest
|
||||
switch (npc.getId())
|
||||
{
|
||||
case NAKUSIN:
|
||||
{
|
||||
switch (st.getState())
|
||||
{
|
||||
case State.CREATED:
|
||||
{
|
||||
htmltext = (player.getRace() != Race.ORC) ? "30578-00.htm" : (player.getLevel() >= MIN_LEVEL) ? "30578-02.htm" : "30578-01.htm";
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
if (st.isCond(1))
|
||||
{
|
||||
htmltext = "30578-04.html";
|
||||
@@ -111,29 +121,45 @@ public class Q00004_LongLiveThePaagrioLord extends Quest
|
||||
htmltext = "30578-06.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.COMPLETED:
|
||||
{
|
||||
htmltext = getAlreadyCompletedMsg(player);
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case VARKEES:
|
||||
{
|
||||
htmltext = giveItem(player, st, npc.getId(), HONEY_KHANDAR, getRegisteredItemIds());
|
||||
break;
|
||||
}
|
||||
case URUTU:
|
||||
{
|
||||
htmltext = giveItem(player, st, npc.getId(), DEEP_SEA_ORB, getRegisteredItemIds());
|
||||
break;
|
||||
}
|
||||
case HESTUI:
|
||||
{
|
||||
htmltext = giveItem(player, st, npc.getId(), BEAR_FUR_CLOAK, getRegisteredItemIds());
|
||||
break;
|
||||
}
|
||||
case KUNAI:
|
||||
{
|
||||
htmltext = giveItem(player, st, npc.getId(), SPIDER_DUST, getRegisteredItemIds());
|
||||
break;
|
||||
}
|
||||
case USKA:
|
||||
{
|
||||
htmltext = giveItem(player, st, npc.getId(), ANCESTOR_SKULL, getRegisteredItemIds());
|
||||
break;
|
||||
}
|
||||
case GROOKIN:
|
||||
{
|
||||
htmltext = giveItem(player, st, npc.getId(), BLOODY_AXE, getRegisteredItemIds());
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@@ -68,11 +68,14 @@ public class Q00005_MinersFavor extends Quest
|
||||
switch (event)
|
||||
{
|
||||
case "30554-03.htm":
|
||||
{
|
||||
st.startQuest();
|
||||
giveItems(player, BOLTERS_LIST, 1);
|
||||
giveItems(player, BOLTERS_SMELLY_SOCKS, 1);
|
||||
break;
|
||||
}
|
||||
case "30526-02.html":
|
||||
{
|
||||
if (!hasQuestItems(player, BOLTERS_SMELLY_SOCKS))
|
||||
{
|
||||
return "30526-04.html";
|
||||
@@ -81,11 +84,16 @@ public class Q00005_MinersFavor extends Quest
|
||||
giveItems(player, MINERS_PICK, 1);
|
||||
checkProgress(player, st);
|
||||
break;
|
||||
}
|
||||
case "30554-05.html":
|
||||
{
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
htmltext = null;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
@@ -98,12 +106,16 @@ public class Q00005_MinersFavor extends Quest
|
||||
switch (npc.getId())
|
||||
{
|
||||
case BOLTER:
|
||||
{
|
||||
switch (st.getState())
|
||||
{
|
||||
case State.CREATED:
|
||||
{
|
||||
htmltext = (player.getLevel() >= MIN_LEVEL) ? "30554-02.htm" : "30554-01.html";
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
if (st.isCond(1))
|
||||
{
|
||||
htmltext = "30554-04.html";
|
||||
@@ -119,26 +131,38 @@ public class Q00005_MinersFavor extends Quest
|
||||
htmltext = "30554-06.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.COMPLETED:
|
||||
{
|
||||
htmltext = getAlreadyCompletedMsg(player);
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case BRUNON:
|
||||
{
|
||||
if (st.isStarted())
|
||||
{
|
||||
htmltext = (hasQuestItems(player, MINERS_PICK)) ? "30526-03.html" : "30526-01.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case REED:
|
||||
{
|
||||
htmltext = giveItem(player, st, npc.getId(), REDSTONE_BEER);
|
||||
break;
|
||||
}
|
||||
case SHARI:
|
||||
{
|
||||
htmltext = giveItem(player, st, npc.getId(), BOOMBOOM_POWDER);
|
||||
break;
|
||||
}
|
||||
case GARITA:
|
||||
{
|
||||
htmltext = giveItem(player, st, npc.getId(), MINING_BOOTS);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@@ -595,7 +595,9 @@ public final class Q00022_TragedyInVonHellmannForest extends Quest
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -73,6 +73,7 @@ public class Q00024_InhabitantsOfTheForestOfTheDead extends Quest
|
||||
{
|
||||
// Dorian
|
||||
case "31389-02.htm":
|
||||
{
|
||||
final QuestState qs = player.getQuestState(Q00023_LidiasHeart.class.getSimpleName());
|
||||
if ((player.getLevel() >= 65) && (qs != null) && qs.isCompleted())
|
||||
{
|
||||
@@ -81,18 +82,26 @@ public class Q00024_InhabitantsOfTheForestOfTheDead extends Quest
|
||||
return "31389-03.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "31389-08.html":
|
||||
{
|
||||
st.set("var", "1");
|
||||
break;
|
||||
}
|
||||
case "31389-13.html":
|
||||
{
|
||||
giveItems(player, SILVER_CROSS_OF_EINHASAD, 1);
|
||||
st.setCond(3, true);
|
||||
st.unset("var");
|
||||
break;
|
||||
}
|
||||
case "31389-18.html":
|
||||
{
|
||||
playSound(player, QuestSound.INTERFACESOUND_CHARSTAT_OPEN);
|
||||
break;
|
||||
}
|
||||
case "31389-19.html":
|
||||
{
|
||||
if (!hasQuestItems(player, BROKEN_SILVER_CROSS_OF_EINHASAD))
|
||||
{
|
||||
return getNoQuestMsg(player);
|
||||
@@ -100,6 +109,7 @@ public class Q00024_InhabitantsOfTheForestOfTheDead extends Quest
|
||||
takeItems(player, BROKEN_SILVER_CROSS_OF_EINHASAD, -1);
|
||||
st.setCond(5, true);
|
||||
break;
|
||||
}
|
||||
case "31389-06.html":
|
||||
case "31389-07.html":
|
||||
case "31389-10.html":
|
||||
@@ -107,13 +117,18 @@ public class Q00024_InhabitantsOfTheForestOfTheDead extends Quest
|
||||
case "31389-12.html":
|
||||
case "31389-16.html":
|
||||
case "31389-17.html":
|
||||
{
|
||||
break;
|
||||
}
|
||||
// Lidia Maid
|
||||
case "31532-04.html":
|
||||
{
|
||||
giveItems(player, LIDIA_LETTER, 1);
|
||||
st.setCond(6, true);
|
||||
break;
|
||||
}
|
||||
case "31532-07.html":
|
||||
{
|
||||
if (st.isCond(8))
|
||||
{
|
||||
if (!hasQuestItems(player, LIDIA_HAIRPIN, LIDIA_LETTER))
|
||||
@@ -133,16 +148,23 @@ public class Q00024_InhabitantsOfTheForestOfTheDead extends Quest
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "31532-10.html":
|
||||
{
|
||||
st.set("var", "2");
|
||||
break;
|
||||
}
|
||||
case "31532-14.html":
|
||||
{
|
||||
st.set("var", "3");
|
||||
break;
|
||||
}
|
||||
case "31532-19.html":
|
||||
{
|
||||
st.unset("var");
|
||||
st.setCond(9, true);
|
||||
break;
|
||||
}
|
||||
case "31532-02.html":
|
||||
case "31532-03.html":
|
||||
case "31532-09.html":
|
||||
@@ -152,9 +174,12 @@ public class Q00024_InhabitantsOfTheForestOfTheDead extends Quest
|
||||
case "31532-16.html":
|
||||
case "31532-17.html":
|
||||
case "31532-18.html":
|
||||
{
|
||||
break;
|
||||
}
|
||||
// Mysterious Wizard
|
||||
case "31522-03.html":
|
||||
{
|
||||
if (!hasQuestItems(player, SUSPICIOUS_TOTEM_DOLL))
|
||||
{
|
||||
return getNoQuestMsg(player);
|
||||
@@ -162,18 +187,25 @@ public class Q00024_InhabitantsOfTheForestOfTheDead extends Quest
|
||||
takeItems(player, SUSPICIOUS_TOTEM_DOLL, 1);
|
||||
st.set("var", "1");
|
||||
break;
|
||||
}
|
||||
case "31522-08.html":
|
||||
{
|
||||
st.unset("var");
|
||||
st.setCond(11, true);
|
||||
break;
|
||||
}
|
||||
case "31522-17.html":
|
||||
{
|
||||
st.set("var", "1");
|
||||
break;
|
||||
}
|
||||
case "31522-21.html":
|
||||
{
|
||||
giveItems(player, TOTEM, 1);
|
||||
addExpAndSp(player, 242105, 22529); // GoD: Harmony: 6191140 exp and 6118650 sp
|
||||
st.exitQuest(false, true);
|
||||
break;
|
||||
}
|
||||
case "31522-02.html":
|
||||
case "31522-05.html":
|
||||
case "31522-06.html":
|
||||
@@ -187,9 +219,12 @@ public class Q00024_InhabitantsOfTheForestOfTheDead extends Quest
|
||||
case "31522-16.html":
|
||||
case "31522-19.html":
|
||||
case "31522-20.html":
|
||||
{
|
||||
break;
|
||||
}
|
||||
// Tombstone
|
||||
case "31531-02.html":
|
||||
{
|
||||
if (!hasQuestItems(player, FLOWER_BOUQUET))
|
||||
{
|
||||
return getNoQuestMsg(player);
|
||||
@@ -197,9 +232,12 @@ public class Q00024_InhabitantsOfTheForestOfTheDead extends Quest
|
||||
takeItems(player, FLOWER_BOUQUET, -1);
|
||||
st.setCond(2, true);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
htmltext = null;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
@@ -226,46 +264,69 @@ public class Q00024_InhabitantsOfTheForestOfTheDead extends Quest
|
||||
switch (npc.getId())
|
||||
{
|
||||
case DORIAN:
|
||||
{
|
||||
switch (st.getState())
|
||||
{
|
||||
case State.CREATED:
|
||||
{
|
||||
htmltext = "31389-01.htm";
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
switch (st.getCond())
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
htmltext = "31389-04.html";
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
htmltext = (st.getInt("var") == 0) ? "31389-05.html" : "31389-09.html";
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
htmltext = "31389-14.html";
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
htmltext = "31389-15.html";
|
||||
break;
|
||||
}
|
||||
case 5:
|
||||
{
|
||||
htmltext = "31389-20.html";
|
||||
break;
|
||||
}
|
||||
case 6:
|
||||
case 8:
|
||||
{
|
||||
htmltext = "31389-22.html";
|
||||
break;
|
||||
}
|
||||
case 7:
|
||||
{
|
||||
giveItems(player, LIDIA_HAIRPIN, 1);
|
||||
st.setCond(8, true);
|
||||
htmltext = "31389-21.html";
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.COMPLETED:
|
||||
{
|
||||
htmltext = getAlreadyCompletedMsg(player);
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case MYSTERIOUS_WIZARD:
|
||||
{
|
||||
if (st.isStarted())
|
||||
{
|
||||
if (st.isCond(10))
|
||||
@@ -286,7 +347,9 @@ public class Q00024_InhabitantsOfTheForestOfTheDead extends Quest
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case TOMBSTONE:
|
||||
{
|
||||
if (st.isStarted())
|
||||
{
|
||||
if (st.isCond(1))
|
||||
@@ -300,44 +363,65 @@ public class Q00024_InhabitantsOfTheForestOfTheDead extends Quest
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case LIDIA_MAID:
|
||||
{
|
||||
if (st.isStarted())
|
||||
{
|
||||
switch (st.getCond())
|
||||
{
|
||||
case 5:
|
||||
{
|
||||
htmltext = "31532-01.html";
|
||||
break;
|
||||
}
|
||||
case 6:
|
||||
{
|
||||
htmltext = "31532-05.html";
|
||||
break;
|
||||
}
|
||||
case 7:
|
||||
{
|
||||
htmltext = "31532-07a.html";
|
||||
break;
|
||||
}
|
||||
case 8:
|
||||
{
|
||||
switch (st.getInt("var"))
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
htmltext = "31532-07a.html";
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
{
|
||||
htmltext = "31532-08.html";
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
htmltext = "31532-11.html";
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
htmltext = "31532-15.html";
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 9:
|
||||
case 10:
|
||||
{
|
||||
htmltext = "31532-20.html";
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@@ -60,9 +60,12 @@ public class Q00027_ChestCaughtWithABaitOfWind extends Quest
|
||||
switch (event)
|
||||
{
|
||||
case "31570-03.htm":
|
||||
{
|
||||
st.startQuest();
|
||||
break;
|
||||
}
|
||||
case "31570-05.htm":
|
||||
{
|
||||
if (st.isCond(1) && hasQuestItems(player, BLUE_TREASURE_BOX))
|
||||
{
|
||||
htmltext = "31570-06.htm";
|
||||
@@ -71,7 +74,9 @@ public class Q00027_ChestCaughtWithABaitOfWind extends Quest
|
||||
takeItems(player, BLUE_TREASURE_BOX, -1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "31434-02.htm":
|
||||
{
|
||||
if (st.isCond(2) && hasQuestItems(player, STRANGE_BLUESPRINT))
|
||||
{
|
||||
giveItems(player, BLACK_PEARL_RING, 1);
|
||||
@@ -79,7 +84,7 @@ public class Q00027_ChestCaughtWithABaitOfWind extends Quest
|
||||
htmltext = "31434-01.htm";
|
||||
}
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
@@ -93,9 +98,12 @@ public class Q00027_ChestCaughtWithABaitOfWind extends Quest
|
||||
switch (st.getState())
|
||||
{
|
||||
case State.COMPLETED:
|
||||
{
|
||||
htmltext = getAlreadyCompletedMsg(player);
|
||||
break;
|
||||
}
|
||||
case State.CREATED:
|
||||
{
|
||||
final QuestState qs = player.getQuestState(Q00050_LanoscosSpecialBait.class.getSimpleName());
|
||||
if (npc.getId() == LANOSCO)
|
||||
{
|
||||
@@ -106,10 +114,13 @@ public class Q00027_ChestCaughtWithABaitOfWind extends Quest
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
case LANOSCO:
|
||||
{
|
||||
if (st.isCond(1))
|
||||
{
|
||||
if (hasQuestItems(player, BLUE_TREASURE_BOX))
|
||||
@@ -126,13 +137,17 @@ public class Q00027_ChestCaughtWithABaitOfWind extends Quest
|
||||
htmltext = "31570-07.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SHALING:
|
||||
{
|
||||
if (st.isCond(2))
|
||||
{
|
||||
htmltext = "31434-00.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@@ -60,9 +60,12 @@ public class Q00028_ChestCaughtWithABaitOfIcyAir extends Quest
|
||||
switch (event)
|
||||
{
|
||||
case "31572-04.htm":
|
||||
{
|
||||
st.startQuest();
|
||||
break;
|
||||
}
|
||||
case "31572-08.htm":
|
||||
{
|
||||
if (st.isCond(1) && hasQuestItems(player, YELLOW_TREASURE_BOX))
|
||||
{
|
||||
giveItems(player, KIKIS_LETTER, 1);
|
||||
@@ -71,7 +74,9 @@ public class Q00028_ChestCaughtWithABaitOfIcyAir extends Quest
|
||||
htmltext = "31572-07.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "31442-03.htm":
|
||||
{
|
||||
if (st.isCond(2) && hasQuestItems(player, KIKIS_LETTER))
|
||||
{
|
||||
giveItems(player, ELVEN_RING, 1);
|
||||
@@ -79,7 +84,7 @@ public class Q00028_ChestCaughtWithABaitOfIcyAir extends Quest
|
||||
htmltext = "31442-02.htm";
|
||||
}
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
@@ -94,9 +99,12 @@ public class Q00028_ChestCaughtWithABaitOfIcyAir extends Quest
|
||||
switch (st.getState())
|
||||
{
|
||||
case State.COMPLETED:
|
||||
{
|
||||
htmltext = getAlreadyCompletedMsg(player);
|
||||
break;
|
||||
}
|
||||
case State.CREATED:
|
||||
{
|
||||
final QuestState qs = player.getQuestState(Q00051_OFullesSpecialBait.class.getSimpleName());
|
||||
if (npcId == OFULLE)
|
||||
{
|
||||
@@ -107,32 +115,43 @@ public class Q00028_ChestCaughtWithABaitOfIcyAir extends Quest
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
switch (npcId)
|
||||
{
|
||||
case OFULLE:
|
||||
{
|
||||
switch (st.getCond())
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
htmltext = "31572-06.htm";
|
||||
if (hasQuestItems(player, YELLOW_TREASURE_BOX))
|
||||
{
|
||||
htmltext = "31572-05.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
htmltext = "31572-09.htm";
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case KIKI:
|
||||
{
|
||||
if (st.isCond(2))
|
||||
{
|
||||
htmltext = "31442-01.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@@ -60,9 +60,12 @@ public class Q00029_ChestCaughtWithABaitOfEarth extends Quest
|
||||
switch (event)
|
||||
{
|
||||
case "31574-04.htm":
|
||||
{
|
||||
st.startQuest();
|
||||
break;
|
||||
}
|
||||
case "31574-08.htm":
|
||||
{
|
||||
if (st.isCond(1) && hasQuestItems(player, PURPLE_TREASURE_BOX))
|
||||
{
|
||||
giveItems(player, SMALL_GLASS_BOX, 1);
|
||||
@@ -71,7 +74,9 @@ public class Q00029_ChestCaughtWithABaitOfEarth extends Quest
|
||||
htmltext = "31574-07.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "30909-03.htm":
|
||||
{
|
||||
if (st.isCond(2) && hasQuestItems(player, SMALL_GLASS_BOX))
|
||||
{
|
||||
giveItems(player, PLATED_LEATHER_GLOVES, 1);
|
||||
@@ -79,7 +84,7 @@ public class Q00029_ChestCaughtWithABaitOfEarth extends Quest
|
||||
htmltext = "30909-02.htm";
|
||||
}
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
@@ -94,9 +99,12 @@ public class Q00029_ChestCaughtWithABaitOfEarth extends Quest
|
||||
switch (st.getState())
|
||||
{
|
||||
case State.COMPLETED:
|
||||
{
|
||||
htmltext = getAlreadyCompletedMsg(player);
|
||||
break;
|
||||
}
|
||||
case State.CREATED:
|
||||
{
|
||||
final QuestState qs = player.getQuestState(Q00052_WilliesSpecialBait.class.getSimpleName());
|
||||
if (npcId == WILLIE)
|
||||
{
|
||||
@@ -107,32 +115,43 @@ public class Q00029_ChestCaughtWithABaitOfEarth extends Quest
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
switch (npcId)
|
||||
{
|
||||
case WILLIE:
|
||||
{
|
||||
switch (st.getCond())
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
htmltext = "31574-06.htm";
|
||||
if (hasQuestItems(player, PURPLE_TREASURE_BOX))
|
||||
{
|
||||
htmltext = "31574-05.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
htmltext = "31574-09.htm";
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case ANABEL:
|
||||
{
|
||||
if (st.isCond(2))
|
||||
{
|
||||
htmltext = "30909-01.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@@ -60,9 +60,12 @@ public class Q00030_ChestCaughtWithABaitOfFire extends Quest
|
||||
switch (event)
|
||||
{
|
||||
case "31577-02.htm":
|
||||
{
|
||||
st.startQuest();
|
||||
break;
|
||||
}
|
||||
case "31577-04a.htm":
|
||||
{
|
||||
if (st.isCond(1) && hasQuestItems(player, RED_TREASURE_BOX))
|
||||
{
|
||||
giveItems(player, RUKAL_MUSICAL, 1);
|
||||
@@ -71,7 +74,9 @@ public class Q00030_ChestCaughtWithABaitOfFire extends Quest
|
||||
htmltext = "31577-04.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "30629-02.htm":
|
||||
{
|
||||
if (st.isCond(2) && hasQuestItems(player, RUKAL_MUSICAL))
|
||||
{
|
||||
giveItems(player, PROTECTION_NECKLACE, 1);
|
||||
@@ -79,6 +84,7 @@ public class Q00030_ChestCaughtWithABaitOfFire extends Quest
|
||||
htmltext = "30629-03.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
@@ -94,9 +100,12 @@ public class Q00030_ChestCaughtWithABaitOfFire extends Quest
|
||||
switch (st.getState())
|
||||
{
|
||||
case State.COMPLETED:
|
||||
{
|
||||
htmltext = getAlreadyCompletedMsg(player);
|
||||
break;
|
||||
}
|
||||
case State.CREATED:
|
||||
{
|
||||
final QuestState qs = player.getQuestState(Q00053_LinnaeusSpecialBait.class.getSimpleName());
|
||||
if (npcId == LINNAEUS)
|
||||
{
|
||||
@@ -107,32 +116,43 @@ public class Q00030_ChestCaughtWithABaitOfFire extends Quest
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
switch (npcId)
|
||||
{
|
||||
case LINNAEUS:
|
||||
{
|
||||
switch (st.getCond())
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
htmltext = "31577-03a.htm";
|
||||
if (hasQuestItems(player, RED_TREASURE_BOX))
|
||||
{
|
||||
htmltext = "31577-03.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
htmltext = "31577-05.htm";
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case RUKAL:
|
||||
{
|
||||
if (st.isCond(2))
|
||||
{
|
||||
htmltext = "30629-01.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@@ -147,6 +147,7 @@ public class Q00043_HelpTheSister extends Quest
|
||||
switch (npc.getId())
|
||||
{
|
||||
case COOPER:
|
||||
{
|
||||
switch (qs.getState())
|
||||
{
|
||||
case State.CREATED:
|
||||
@@ -193,6 +194,7 @@ public class Q00043_HelpTheSister extends Quest
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case GALLADUCCI:
|
||||
{
|
||||
if (qs.isStarted())
|
||||
|
||||
@@ -61,9 +61,12 @@ public class Q00050_LanoscosSpecialBait extends Quest
|
||||
switch (event)
|
||||
{
|
||||
case "31570-03.htm":
|
||||
{
|
||||
st.startQuest();
|
||||
break;
|
||||
}
|
||||
case "31570-07.html":
|
||||
{
|
||||
if ((st.isCond(2)) && (getQuestItemsCount(player, ESSENCE_OF_WIND) >= 100))
|
||||
{
|
||||
htmltext = "31570-06.htm";
|
||||
@@ -71,6 +74,7 @@ public class Q00050_LanoscosSpecialBait extends Quest
|
||||
st.exitQuest(false, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
@@ -114,14 +118,20 @@ public class Q00050_LanoscosSpecialBait extends Quest
|
||||
switch (st.getState())
|
||||
{
|
||||
case State.COMPLETED:
|
||||
{
|
||||
htmltext = getAlreadyCompletedMsg(player);
|
||||
break;
|
||||
}
|
||||
case State.CREATED:
|
||||
{
|
||||
htmltext = (player.getLevel() >= 27) ? "31570-01.htm" : "31570-02.html";
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
htmltext = (st.isCond(1)) ? "31570-05.html" : "31570-04.html";
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@@ -60,9 +60,12 @@ public class Q00051_OFullesSpecialBait extends Quest
|
||||
switch (event)
|
||||
{
|
||||
case "31572-03.htm":
|
||||
{
|
||||
st.startQuest();
|
||||
break;
|
||||
}
|
||||
case "31572-07.html":
|
||||
{
|
||||
if ((st.isCond(2)) && (getQuestItemsCount(player, LOST_BAIT) >= 100))
|
||||
{
|
||||
htmltext = "31572-06.htm";
|
||||
@@ -70,6 +73,7 @@ public class Q00051_OFullesSpecialBait extends Quest
|
||||
st.exitQuest(false, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
@@ -110,14 +114,20 @@ public class Q00051_OFullesSpecialBait extends Quest
|
||||
switch (st.getState())
|
||||
{
|
||||
case State.COMPLETED:
|
||||
{
|
||||
htmltext = getAlreadyCompletedMsg(player);
|
||||
break;
|
||||
}
|
||||
case State.CREATED:
|
||||
{
|
||||
htmltext = (player.getLevel() >= 36) ? "31572-01.htm" : "31572-02.html";
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
htmltext = (st.isCond(1)) ? "31572-05.html" : "31572-04.html";
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@@ -60,9 +60,12 @@ public class Q00052_WilliesSpecialBait extends Quest
|
||||
switch (event)
|
||||
{
|
||||
case "31574-03.htm":
|
||||
{
|
||||
st.startQuest();
|
||||
break;
|
||||
}
|
||||
case "31574-07.html":
|
||||
{
|
||||
if (st.isCond(2) && (getQuestItemsCount(player, TARLK_EYE) >= 100))
|
||||
{
|
||||
htmltext = "31574-06.htm";
|
||||
@@ -70,6 +73,7 @@ public class Q00052_WilliesSpecialBait extends Quest
|
||||
st.exitQuest(false, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
@@ -110,14 +114,20 @@ public class Q00052_WilliesSpecialBait extends Quest
|
||||
switch (st.getState())
|
||||
{
|
||||
case State.COMPLETED:
|
||||
{
|
||||
htmltext = getAlreadyCompletedMsg(player);
|
||||
break;
|
||||
}
|
||||
case State.CREATED:
|
||||
{
|
||||
htmltext = (player.getLevel() >= 48) ? "31574-01.htm" : "31574-02.html";
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
htmltext = (st.isCond(1)) ? "31574-05.html" : "31574-04.html";
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@@ -66,9 +66,12 @@ public class Q00053_LinnaeusSpecialBait extends Quest
|
||||
switch (event)
|
||||
{
|
||||
case "31577-1.htm":
|
||||
{
|
||||
st.startQuest();
|
||||
break;
|
||||
}
|
||||
case "31577-3.htm":
|
||||
{
|
||||
if (st.isCond(2) && (getQuestItemsCount(player, CRIMSON_DRAKE_HEART) >= 100))
|
||||
{
|
||||
giveItems(player, FLAMING_FISHING_LURE, 4);
|
||||
@@ -79,6 +82,7 @@ public class Q00053_LinnaeusSpecialBait extends Quest
|
||||
htmltext = "31577-5.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
@@ -122,14 +126,20 @@ public class Q00053_LinnaeusSpecialBait extends Quest
|
||||
switch (st.getState())
|
||||
{
|
||||
case State.COMPLETED:
|
||||
{
|
||||
htmltext = getAlreadyCompletedMsg(player);
|
||||
break;
|
||||
}
|
||||
case State.CREATED:
|
||||
{
|
||||
htmltext = ((player.getLevel() > 59) && (fishingLevel(player) > 19)) ? "31577-0.htm" : "31577-0a.html";
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
htmltext = (st.isCond(1)) ? "31577-4.html" : "31577-2.html";
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@@ -82,9 +82,12 @@ public class Q00112_WalkOfFate extends Quest
|
||||
switch (st.getState())
|
||||
{
|
||||
case State.CREATED:
|
||||
{
|
||||
htmltext = (player.getLevel() < MIN_LEVEL) ? "30572-03.html" : "30572-01.htm";
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
case LIVINA:
|
||||
@@ -99,6 +102,7 @@ public class Q00112_WalkOfFate extends Quest
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.COMPLETED:
|
||||
{
|
||||
htmltext = getAlreadyCompletedMsg(player);
|
||||
|
||||
@@ -99,14 +99,20 @@ public class Q00114_ResurrectionOfAnOldManager extends Quest
|
||||
switch (qs.getCond())
|
||||
{
|
||||
case 3:
|
||||
{
|
||||
htmltext = "32041-12.html";
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
htmltext = "32041-13.html";
|
||||
break;
|
||||
}
|
||||
case 5:
|
||||
{
|
||||
htmltext = "32041-14.html";
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -87,40 +87,55 @@ public class Q00125_TheNameOfEvil1 extends Quest
|
||||
switch (event)
|
||||
{
|
||||
case "32114-05.html":
|
||||
{
|
||||
qs.startQuest();
|
||||
break;
|
||||
}
|
||||
case "32114-08.html":
|
||||
{
|
||||
if (qs.isCond(1))
|
||||
{
|
||||
giveItems(player, GAZKH_FRAGMENT, 1);
|
||||
qs.setCond(2, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "32117-09.html":
|
||||
{
|
||||
if (qs.isCond(2))
|
||||
{
|
||||
qs.setCond(3, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "32117-15.html":
|
||||
{
|
||||
if (qs.isCond(4))
|
||||
{
|
||||
qs.setCond(5, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "T_One":
|
||||
{
|
||||
qs.set("T", "1");
|
||||
htmltext = "32119-04.html";
|
||||
break;
|
||||
}
|
||||
case "E_One":
|
||||
{
|
||||
qs.set("E", "1");
|
||||
htmltext = "32119-05.html";
|
||||
break;
|
||||
}
|
||||
case "P_One":
|
||||
{
|
||||
qs.set("P", "1");
|
||||
htmltext = "32119-06.html";
|
||||
break;
|
||||
}
|
||||
case "U_One":
|
||||
{
|
||||
qs.set("U", "1");
|
||||
if (qs.isCond(5) && (qs.getInt("T") > 0) && (qs.getInt("E") > 0) && (qs.getInt("P") > 0) && (qs.getInt("U") > 0))
|
||||
{
|
||||
@@ -136,32 +151,44 @@ public class Q00125_TheNameOfEvil1 extends Quest
|
||||
qs.unset("P");
|
||||
qs.unset("U");
|
||||
break;
|
||||
}
|
||||
case "32119-07.html":
|
||||
{
|
||||
qs.unset("T");
|
||||
qs.unset("E");
|
||||
qs.unset("P");
|
||||
qs.unset("U");
|
||||
break;
|
||||
}
|
||||
case "32119-18.html":
|
||||
{
|
||||
if (qs.isCond(5))
|
||||
{
|
||||
qs.setCond(6, true);
|
||||
qs.unset("Memo");
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "T_Two":
|
||||
{
|
||||
qs.set("T", "1");
|
||||
htmltext = "32120-04.html";
|
||||
break;
|
||||
}
|
||||
case "O_Two":
|
||||
{
|
||||
qs.set("O", "1");
|
||||
htmltext = "32120-05.html";
|
||||
break;
|
||||
}
|
||||
case "O2_Two":
|
||||
{
|
||||
qs.set("O2", "1");
|
||||
htmltext = "32120-06.html";
|
||||
break;
|
||||
}
|
||||
case "N_Two":
|
||||
{
|
||||
qs.set("N", "1");
|
||||
if (qs.isCond(6) && (qs.getInt("T") > 0) && (qs.getInt("O") > 0) && (qs.getInt("O2") > 0) && (qs.getInt("N") > 0))
|
||||
{
|
||||
@@ -177,31 +204,43 @@ public class Q00125_TheNameOfEvil1 extends Quest
|
||||
qs.unset("O2");
|
||||
qs.unset("N");
|
||||
break;
|
||||
}
|
||||
case "32120-07.html":
|
||||
{
|
||||
qs.unset("T");
|
||||
qs.unset("O");
|
||||
qs.unset("O2");
|
||||
qs.unset("N");
|
||||
}
|
||||
case "32120-17.html":
|
||||
{
|
||||
if (qs.isCond(6))
|
||||
{
|
||||
qs.setCond(7, true);
|
||||
qs.unset("Memo");
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "W_Three":
|
||||
{
|
||||
qs.set("W", "1");
|
||||
htmltext = "32121-04.html";
|
||||
break;
|
||||
}
|
||||
case "A_Three":
|
||||
{
|
||||
qs.set("A", "1");
|
||||
htmltext = "32121-05.html";
|
||||
break;
|
||||
}
|
||||
case "G_Three":
|
||||
{
|
||||
qs.set("G", "1");
|
||||
htmltext = "32121-06.html";
|
||||
break;
|
||||
}
|
||||
case "U_Three":
|
||||
{
|
||||
qs.set("U", "1");
|
||||
if (qs.isCond(7) && (qs.getInt("W") > 0) && (qs.getInt("A") > 0) && (qs.getInt("G") > 0) && (qs.getInt("U") > 0))
|
||||
{
|
||||
@@ -217,19 +256,27 @@ public class Q00125_TheNameOfEvil1 extends Quest
|
||||
qs.unset("G");
|
||||
qs.unset("U");
|
||||
break;
|
||||
}
|
||||
case "32121-07.html":
|
||||
{
|
||||
qs.unset("W");
|
||||
qs.unset("A");
|
||||
qs.unset("G");
|
||||
qs.unset("U");
|
||||
break;
|
||||
}
|
||||
case "32121-11.html":
|
||||
{
|
||||
qs.set("Memo", "2");
|
||||
break;
|
||||
}
|
||||
case "32121-16.html":
|
||||
{
|
||||
qs.set("Memo", "3");
|
||||
break;
|
||||
}
|
||||
case "32121-18.html":
|
||||
{
|
||||
if (qs.isCond(7) && hasQuestItems(player, GAZKH_FRAGMENT))
|
||||
{
|
||||
giveItems(player, EPITAPH_OF_WISDOM, 1);
|
||||
@@ -238,6 +285,7 @@ public class Q00125_TheNameOfEvil1 extends Quest
|
||||
qs.unset("Memo");
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
@@ -283,9 +331,11 @@ public class Q00125_TheNameOfEvil1 extends Quest
|
||||
switch (npc.getId())
|
||||
{
|
||||
case MUSHIKA:
|
||||
{
|
||||
switch (qs.getState())
|
||||
{
|
||||
case State.CREATED:
|
||||
{
|
||||
if (player.getLevel() < 76)
|
||||
{
|
||||
htmltext = "32114-01a.htm";
|
||||
@@ -296,23 +346,32 @@ public class Q00125_TheNameOfEvil1 extends Quest
|
||||
htmltext = ((qs != null) && qs.isCompleted()) ? "32114-01.htm" : "32114-01b.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
switch (qs.getCond())
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
htmltext = "32114-09.html";
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
htmltext = "32114-10.html";
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
case 4:
|
||||
case 5:
|
||||
case 6:
|
||||
case 7:
|
||||
{
|
||||
htmltext = "32114-11.html";
|
||||
break;
|
||||
}
|
||||
case 8:
|
||||
{
|
||||
if (hasQuestItems(player, EPITAPH_OF_WISDOM))
|
||||
{
|
||||
htmltext = "32114-12.html";
|
||||
@@ -320,28 +379,41 @@ public class Q00125_TheNameOfEvil1 extends Quest
|
||||
qs.exitQuest(false, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.COMPLETED:
|
||||
{
|
||||
htmltext = getAlreadyCompletedMsg(player);
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case KARAKAWEI:
|
||||
{
|
||||
if (qs.isStarted())
|
||||
{
|
||||
switch (qs.getCond())
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
htmltext = "32117-01.html";
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
htmltext = "32117-02.html";
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
htmltext = "32117-10.html";
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
if ((getQuestItemsCount(player, ORNITHOMIMUS_CLAW) >= 2) && (getQuestItemsCount(player, DEINONYCHUS_BONE) >= 2))
|
||||
{
|
||||
takeItems(player, ORNITHOMIMUS_CLAW, -1);
|
||||
@@ -349,20 +421,29 @@ public class Q00125_TheNameOfEvil1 extends Quest
|
||||
htmltext = "32117-11.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 5:
|
||||
{
|
||||
htmltext = "32117-16.html";
|
||||
break;
|
||||
}
|
||||
case 6:
|
||||
case 7:
|
||||
{
|
||||
htmltext = "32117-17.html";
|
||||
break;
|
||||
}
|
||||
case 8:
|
||||
{
|
||||
htmltext = "32117-18.html";
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case ULU_KAIMU:
|
||||
{
|
||||
if (qs.isStarted())
|
||||
{
|
||||
switch (qs.getCond())
|
||||
@@ -371,9 +452,12 @@ public class Q00125_TheNameOfEvil1 extends Quest
|
||||
case 2:
|
||||
case 3:
|
||||
case 4:
|
||||
{
|
||||
htmltext = "32119-01.html";
|
||||
break;
|
||||
}
|
||||
case 5:
|
||||
{
|
||||
if (qs.get("Memo") == null)
|
||||
{
|
||||
htmltext = "32119-02.html";
|
||||
@@ -388,16 +472,23 @@ public class Q00125_TheNameOfEvil1 extends Quest
|
||||
htmltext = "32119-09.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 6:
|
||||
{
|
||||
htmltext = "32119-18.html";
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
htmltext = "32119-19.html";
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case BALU_KAIMU:
|
||||
{
|
||||
if (qs.isStarted())
|
||||
{
|
||||
switch (qs.getCond())
|
||||
@@ -407,9 +498,12 @@ public class Q00125_TheNameOfEvil1 extends Quest
|
||||
case 3:
|
||||
case 4:
|
||||
case 5:
|
||||
{
|
||||
htmltext = "32120-01.html";
|
||||
break;
|
||||
}
|
||||
case 6:
|
||||
{
|
||||
if (qs.get("Memo") == null)
|
||||
{
|
||||
htmltext = "32120-02.html";
|
||||
@@ -424,16 +518,23 @@ public class Q00125_TheNameOfEvil1 extends Quest
|
||||
htmltext = "32120-09.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 7:
|
||||
{
|
||||
htmltext = "32120-17.html";
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
htmltext = "32119-18.html";
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case CHUTA_KAIMU:
|
||||
{
|
||||
if (qs.isStarted())
|
||||
{
|
||||
switch (qs.getCond())
|
||||
@@ -444,12 +545,16 @@ public class Q00125_TheNameOfEvil1 extends Quest
|
||||
case 4:
|
||||
case 5:
|
||||
case 6:
|
||||
{
|
||||
htmltext = "32121-01.html";
|
||||
break;
|
||||
}
|
||||
case 7:
|
||||
{
|
||||
switch (qs.getInt("Memo"))
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
htmltext = "32121-02.html";
|
||||
npc.broadcastPacket(new MagicSkillUse(npc, player, 5089, 1, 1000, 0));
|
||||
qs.unset("W");
|
||||
@@ -457,23 +562,34 @@ public class Q00125_TheNameOfEvil1 extends Quest
|
||||
qs.unset("G");
|
||||
qs.unset("U");
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
{
|
||||
htmltext = "32121-09.html";
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
htmltext = "32121-19.html";
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
htmltext = "32121-20.html";
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 8:
|
||||
{
|
||||
htmltext = "32121-21.html";
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@@ -66,116 +66,161 @@ public class Q00126_TheNameOfEvil2 extends Quest
|
||||
switch (event)
|
||||
{
|
||||
case "32115-1.html":
|
||||
{
|
||||
qs.startQuest();
|
||||
break;
|
||||
}
|
||||
case "32115-1b.html":
|
||||
{
|
||||
if (qs.isCond(1))
|
||||
{
|
||||
qs.setCond(2, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "32119-3.html":
|
||||
{
|
||||
if (qs.isCond(2))
|
||||
{
|
||||
qs.setCond(3, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "32119-4.html":
|
||||
{
|
||||
if (qs.isCond(3))
|
||||
{
|
||||
qs.setCond(4, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "32119-4a.html":
|
||||
case "32119-5b.html":
|
||||
{
|
||||
playSound(player, QuestSound.ETCSOUND_ELROKI_SONG_1ST);
|
||||
break;
|
||||
}
|
||||
case "32119-5.html":
|
||||
{
|
||||
if (qs.isCond(4))
|
||||
{
|
||||
qs.setCond(5, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "32120-3.html":
|
||||
{
|
||||
if (qs.isCond(5))
|
||||
{
|
||||
qs.setCond(6, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "32120-4.html":
|
||||
{
|
||||
if (qs.isCond(6))
|
||||
{
|
||||
qs.setCond(7, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "32120-4a.html":
|
||||
case "32120-5b.html":
|
||||
{
|
||||
playSound(player, QuestSound.ETCSOUND_ELROKI_SONG_2ND);
|
||||
break;
|
||||
}
|
||||
case "32120-5.html":
|
||||
{
|
||||
if (qs.isCond(7))
|
||||
{
|
||||
qs.setCond(8, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "32121-3.html":
|
||||
{
|
||||
if (qs.isCond(8))
|
||||
{
|
||||
qs.setCond(9, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "32121-4.html":
|
||||
{
|
||||
if (qs.isCond(9))
|
||||
{
|
||||
qs.setCond(10, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "32121-4a.html":
|
||||
case "32121-5b.html":
|
||||
{
|
||||
playSound(player, QuestSound.ETCSOUND_ELROKI_SONG_3RD);
|
||||
break;
|
||||
}
|
||||
case "32121-5.html":
|
||||
{
|
||||
if (qs.isCond(10))
|
||||
{
|
||||
giveItems(player, GAZKH_FRAGMENT, 1);
|
||||
qs.setCond(11, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "32122-2a.html":
|
||||
{
|
||||
npc.broadcastPacket(new MagicSkillUse(npc, player, 5089, 1, 1000, 0));
|
||||
break;
|
||||
}
|
||||
case "32122-2d.html":
|
||||
{
|
||||
takeItems(player, GAZKH_FRAGMENT, -1);
|
||||
break;
|
||||
}
|
||||
case "32122-3.html":
|
||||
{
|
||||
if (qs.isCond(12))
|
||||
{
|
||||
qs.setCond(13, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "32122-4.html":
|
||||
{
|
||||
if (qs.isCond(13))
|
||||
{
|
||||
qs.setCond(14, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "DO_One":
|
||||
{
|
||||
qs.set("DO", "1");
|
||||
event = "32122-4d.html";
|
||||
break;
|
||||
}
|
||||
case "MI_One":
|
||||
{
|
||||
qs.set("MI", "1");
|
||||
event = "32122-4f.html";
|
||||
break;
|
||||
}
|
||||
case "FA_One":
|
||||
{
|
||||
qs.set("FA", "1");
|
||||
event = "32122-4h.html";
|
||||
break;
|
||||
}
|
||||
case "SOL_One":
|
||||
{
|
||||
qs.set("SOL", "1");
|
||||
event = "32122-4j.html";
|
||||
break;
|
||||
}
|
||||
case "FA2_One":
|
||||
{
|
||||
qs.set("FA2", "1");
|
||||
if (qs.isCond(14) && (qs.getInt("DO") > 0) && (qs.getInt("MI") > 0) && (qs.getInt("FA") > 0) && (qs.getInt("SOL") > 0) && (qs.getInt("FA2") > 0))
|
||||
{
|
||||
@@ -192,30 +237,42 @@ public class Q00126_TheNameOfEvil2 extends Quest
|
||||
qs.unset("SOL");
|
||||
qs.unset("FA2");
|
||||
break;
|
||||
}
|
||||
case "32122-4m.html":
|
||||
{
|
||||
qs.unset("DO");
|
||||
qs.unset("MI");
|
||||
qs.unset("FA");
|
||||
qs.unset("SOL");
|
||||
qs.unset("FA2");
|
||||
break;
|
||||
}
|
||||
case "FA_Two":
|
||||
{
|
||||
qs.set("FA", "1");
|
||||
event = "32122-5a.html";
|
||||
break;
|
||||
}
|
||||
case "SOL_Two":
|
||||
{
|
||||
qs.set("SOL", "1");
|
||||
event = "32122-5c.html";
|
||||
break;
|
||||
}
|
||||
case "TI_Two":
|
||||
{
|
||||
qs.set("TI", "1");
|
||||
event = "32122-5e.html";
|
||||
break;
|
||||
}
|
||||
case "SOL2_Two":
|
||||
{
|
||||
qs.set("SOL2", "1");
|
||||
event = "32122-5g.html";
|
||||
break;
|
||||
}
|
||||
case "FA2_Two":
|
||||
{
|
||||
qs.set("FA2", "1");
|
||||
if (qs.isCond(15) && (qs.getInt("FA") > 0) && (qs.getInt("SOL") > 0) && (qs.getInt("TI") > 0) && (qs.getInt("SOL2") > 0) && (qs.getInt("FA2") > 0))
|
||||
{
|
||||
@@ -232,30 +289,42 @@ public class Q00126_TheNameOfEvil2 extends Quest
|
||||
qs.unset("SOL2");
|
||||
qs.unset("FA2");
|
||||
break;
|
||||
}
|
||||
case "32122-5i.html":
|
||||
{
|
||||
qs.unset("FA");
|
||||
qs.unset("SOL");
|
||||
qs.unset("TI");
|
||||
qs.unset("SOL2");
|
||||
qs.unset("FA2");
|
||||
break;
|
||||
}
|
||||
case "SOL_Three":
|
||||
{
|
||||
qs.set("SOL", "1");
|
||||
event = "32122-6a.html";
|
||||
break;
|
||||
}
|
||||
case "FA_Three":
|
||||
{
|
||||
qs.set("FA", "1");
|
||||
event = "32122-6c.html";
|
||||
break;
|
||||
}
|
||||
case "MI_Three":
|
||||
{
|
||||
qs.set("MI", "1");
|
||||
event = "32122-6e.html";
|
||||
break;
|
||||
}
|
||||
case "FA2_Three":
|
||||
{
|
||||
qs.set("FA2", "1");
|
||||
event = "32122-6g.html";
|
||||
break;
|
||||
}
|
||||
case "MI2_Three":
|
||||
{
|
||||
qs.set("MI2", "1");
|
||||
if (qs.isCond(16) && (qs.getInt("SOL") > 0) && (qs.getInt("FA") > 0) && (qs.getInt("MI") > 0) && (qs.getInt("FA2") > 0) && (qs.getInt("MI2") > 0))
|
||||
{
|
||||
@@ -272,61 +341,80 @@ public class Q00126_TheNameOfEvil2 extends Quest
|
||||
qs.unset("FA2");
|
||||
qs.unset("MI2");
|
||||
break;
|
||||
}
|
||||
case "32122-6i.html":
|
||||
{
|
||||
qs.unset("SOL");
|
||||
qs.unset("FA");
|
||||
qs.unset("MI");
|
||||
qs.unset("FA2");
|
||||
qs.unset("MI2");
|
||||
break;
|
||||
}
|
||||
case "32122-7.html":
|
||||
{
|
||||
giveItems(player, BONE_POWDER, 1);
|
||||
playSound(player, QuestSound.ETCSOUND_ELROKI_SONG_FULL);
|
||||
npc.broadcastPacket(new MagicSkillUse(npc, player, 5089, 1, 1000, 0));
|
||||
break;
|
||||
}
|
||||
case "32122-8.html":
|
||||
{
|
||||
if (qs.isCond(17))
|
||||
{
|
||||
qs.setCond(18, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "32109-2.html":
|
||||
{
|
||||
if (qs.isCond(18))
|
||||
{
|
||||
qs.setCond(19, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "32109-3.html":
|
||||
{
|
||||
if (qs.isCond(19))
|
||||
{
|
||||
takeItems(player, BONE_POWDER, -1);
|
||||
qs.setCond(20, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "32115-4.html":
|
||||
{
|
||||
if (qs.isCond(20))
|
||||
{
|
||||
qs.setCond(21, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "32115-5.html":
|
||||
{
|
||||
if (qs.isCond(21))
|
||||
{
|
||||
qs.setCond(22, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "32114-2.html":
|
||||
{
|
||||
if (qs.isCond(22))
|
||||
{
|
||||
qs.setCond(23, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "32114-3.html":
|
||||
{
|
||||
rewardItems(player, ENCHANT_WEAPON_A, 1);
|
||||
giveAdena(player, 460483, true);
|
||||
addExpAndSp(player, 1015973, 102802);
|
||||
qs.exitQuest(false, true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return event;
|
||||
}
|
||||
@@ -340,9 +428,11 @@ public class Q00126_TheNameOfEvil2 extends Quest
|
||||
switch (npc.getId())
|
||||
{
|
||||
case ASAMAH:
|
||||
{
|
||||
switch (qs.getState())
|
||||
{
|
||||
case State.CREATED:
|
||||
{
|
||||
if (player.getLevel() < 77)
|
||||
{
|
||||
htmltext = "32115-0.htm";
|
||||
@@ -353,15 +443,21 @@ public class Q00126_TheNameOfEvil2 extends Quest
|
||||
htmltext = ((qs != null) && qs.isCompleted()) ? "32115-0a.htm" : "32115-0b.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
switch (qs.getCond())
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
htmltext = "32115-1d.html";
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
htmltext = "32115-1c.html";
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
case 4:
|
||||
case 5:
|
||||
@@ -379,49 +475,74 @@ public class Q00126_TheNameOfEvil2 extends Quest
|
||||
case 17:
|
||||
case 18:
|
||||
case 19:
|
||||
{
|
||||
htmltext = "32115-2.html";
|
||||
break;
|
||||
}
|
||||
case 20:
|
||||
{
|
||||
htmltext = "32115-3.html";
|
||||
break;
|
||||
}
|
||||
case 21:
|
||||
{
|
||||
htmltext = "32115-4j.html";
|
||||
break;
|
||||
}
|
||||
case 22:
|
||||
{
|
||||
htmltext = "32115-5a.html";
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.COMPLETED:
|
||||
{
|
||||
htmltext = getAlreadyCompletedMsg(player);
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case ULU_KAIMU:
|
||||
{
|
||||
if (qs.isStarted())
|
||||
{
|
||||
switch (qs.getCond())
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
htmltext = "32119-1.html";
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
htmltext = "32119-2.html";
|
||||
npc.broadcastPacket(new MagicSkillUse(npc, player, 5089, 1, 1000, 0));
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
htmltext = "32119-3c.html";
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
htmltext = "32119-4c.html";
|
||||
break;
|
||||
}
|
||||
case 5:
|
||||
{
|
||||
htmltext = "32119-5a.html";
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case BALU_KAIMU:
|
||||
{
|
||||
if (qs.isStarted())
|
||||
{
|
||||
switch (qs.getCond())
|
||||
@@ -430,25 +551,37 @@ public class Q00126_TheNameOfEvil2 extends Quest
|
||||
case 2:
|
||||
case 3:
|
||||
case 4:
|
||||
{
|
||||
htmltext = "32120-1.html";
|
||||
break;
|
||||
}
|
||||
case 5:
|
||||
{
|
||||
htmltext = "32120-2.html";
|
||||
npc.broadcastPacket(new MagicSkillUse(npc, player, 5089, 1, 1000, 0));
|
||||
break;
|
||||
}
|
||||
case 6:
|
||||
{
|
||||
htmltext = "32120-3c.html";
|
||||
break;
|
||||
}
|
||||
case 7:
|
||||
{
|
||||
htmltext = "32120-4c.html";
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
htmltext = "32120-5a.html";
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case CHUTA_KAIMU:
|
||||
{
|
||||
if (qs.isStarted())
|
||||
{
|
||||
switch (qs.getCond())
|
||||
@@ -460,25 +593,37 @@ public class Q00126_TheNameOfEvil2 extends Quest
|
||||
case 5:
|
||||
case 6:
|
||||
case 7:
|
||||
{
|
||||
htmltext = "32121-1.html";
|
||||
break;
|
||||
}
|
||||
case 8:
|
||||
{
|
||||
htmltext = "32121-2.html";
|
||||
npc.broadcastPacket(new MagicSkillUse(npc, player, 5089, 1, 1000, 0));
|
||||
break;
|
||||
}
|
||||
case 9:
|
||||
{
|
||||
htmltext = "32121-3e.html";
|
||||
break;
|
||||
}
|
||||
case 10:
|
||||
{
|
||||
htmltext = "32121-4e.html";
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
htmltext = "32121-5a.html";
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case WARRIORS_GRAVE:
|
||||
{
|
||||
if (qs.isStarted())
|
||||
{
|
||||
switch (qs.getCond())
|
||||
@@ -493,19 +638,28 @@ public class Q00126_TheNameOfEvil2 extends Quest
|
||||
case 8:
|
||||
case 9:
|
||||
case 10:
|
||||
{
|
||||
htmltext = "32122-1.html";
|
||||
break;
|
||||
}
|
||||
case 11:
|
||||
{
|
||||
htmltext = "32122-2.html";
|
||||
qs.setCond(12, true);
|
||||
break;
|
||||
}
|
||||
case 12:
|
||||
{
|
||||
htmltext = "32122-2l.html";
|
||||
break;
|
||||
}
|
||||
case 13:
|
||||
{
|
||||
htmltext = "32122-3b.html";
|
||||
break;
|
||||
}
|
||||
case 14:
|
||||
{
|
||||
htmltext = "32122-4.html";
|
||||
qs.unset("DO");
|
||||
qs.unset("MI");
|
||||
@@ -513,7 +667,9 @@ public class Q00126_TheNameOfEvil2 extends Quest
|
||||
qs.unset("SOL");
|
||||
qs.unset("FA2");
|
||||
break;
|
||||
}
|
||||
case 15:
|
||||
{
|
||||
htmltext = "32122-5.html";
|
||||
qs.unset("FA");
|
||||
qs.unset("SOL");
|
||||
@@ -521,7 +677,9 @@ public class Q00126_TheNameOfEvil2 extends Quest
|
||||
qs.unset("SOL2");
|
||||
qs.unset("FA2");
|
||||
break;
|
||||
}
|
||||
case 16:
|
||||
{
|
||||
htmltext = "32122-6.html";
|
||||
qs.unset("SOL");
|
||||
qs.unset("FA");
|
||||
@@ -529,19 +687,28 @@ public class Q00126_TheNameOfEvil2 extends Quest
|
||||
qs.unset("FA2");
|
||||
qs.unset("MI2");
|
||||
break;
|
||||
}
|
||||
case 17:
|
||||
{
|
||||
htmltext = hasQuestItems(player, BONE_POWDER) ? "32122-7.html" : "32122-7b.html";
|
||||
break;
|
||||
}
|
||||
case 18:
|
||||
{
|
||||
htmltext = "32122-8.html";
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
htmltext = "32122-9.html";
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SHILENS_STONE_STATUE:
|
||||
{
|
||||
if (qs.isStarted())
|
||||
{
|
||||
switch (qs.getCond())
|
||||
@@ -563,27 +730,39 @@ public class Q00126_TheNameOfEvil2 extends Quest
|
||||
case 15:
|
||||
case 16:
|
||||
case 17:
|
||||
{
|
||||
htmltext = "32109-1a.html";
|
||||
break;
|
||||
}
|
||||
case 18:
|
||||
{
|
||||
if (hasQuestItems(player, BONE_POWDER))
|
||||
{
|
||||
htmltext = "32109-1.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 19:
|
||||
{
|
||||
htmltext = "32109-2l.html";
|
||||
break;
|
||||
}
|
||||
case 20:
|
||||
{
|
||||
htmltext = "32109-5.html";
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
htmltext = "32109-4.html";
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case MUSHIKA:
|
||||
{
|
||||
if (qs.isStarted())
|
||||
{
|
||||
if (qs.getCond() < 22)
|
||||
@@ -600,6 +779,7 @@ public class Q00126_TheNameOfEvil2 extends Quest
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@@ -97,13 +97,13 @@ public final class Q00132_MatrasCuriosity extends Quest
|
||||
switch (npc.getId())
|
||||
{
|
||||
case DEMON_PRINCE:
|
||||
{
|
||||
pl = getRandomPartyMember(player, "rewarded_prince", "1");
|
||||
if (pl != null)
|
||||
{
|
||||
final QuestState st = getQuestState(pl, false);
|
||||
giveItems(player, BLUEPRINT_PRINCE, 1);
|
||||
st.set("rewarded_prince", "2");
|
||||
|
||||
if (hasQuestItems(player, BLUEPRINT_RANKU))
|
||||
{
|
||||
st.setCond(2, true);
|
||||
@@ -114,14 +114,15 @@ public final class Q00132_MatrasCuriosity extends Quest
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case RANKU:
|
||||
{
|
||||
pl = getRandomPartyMember(player, "rewarded_ranku", "1");
|
||||
if (pl != null)
|
||||
{
|
||||
final QuestState st = getQuestState(pl, false);
|
||||
giveItems(player, BLUEPRINT_RANKU, 1);
|
||||
st.set("rewarded_ranku", "2");
|
||||
|
||||
if (hasQuestItems(player, BLUEPRINT_PRINCE))
|
||||
{
|
||||
st.setCond(2, true);
|
||||
@@ -132,6 +133,7 @@ public final class Q00132_MatrasCuriosity extends Quest
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@@ -156,6 +158,7 @@ public final class Q00132_MatrasCuriosity extends Quest
|
||||
{
|
||||
case 1:
|
||||
case 2:
|
||||
{
|
||||
if (hasQuestItems(player, BLUEPRINT_RANKU) && hasQuestItems(player, BLUEPRINT_PRINCE))
|
||||
{
|
||||
takeItems(player, BLUEPRINT_RANKU, -1);
|
||||
@@ -167,10 +170,12 @@ public final class Q00132_MatrasCuriosity extends Quest
|
||||
{
|
||||
htmltext = "32245-04.htm";
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
htmltext = "32245-06.htm";
|
||||
}
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
|
||||
@@ -480,128 +480,133 @@ public class Q00144_PailakaInjuredDragon extends Quest
|
||||
{
|
||||
case VARKA_SILENOS_FOOTMAN:
|
||||
case VARKA_SILENOS_RECRUIT:
|
||||
{
|
||||
dropHerb(npc, player, HP_HERBS_DROPLIST);
|
||||
if (qs.isCond(3) && hasQuestItems(player, SPEAR) && !hasQuestItems(player, STAGE1) && (Rnd.get(100) < 25))
|
||||
{
|
||||
giveItems(player, STAGE1, 1);
|
||||
}
|
||||
|
||||
// Spawns Mage Type silenos behind the one that was killed.
|
||||
spawnMageBehind(npc, player, VARKA_SILENOS_MEDIUM);
|
||||
|
||||
// Check if all the first row have been killed. Despawn mages.
|
||||
checkIfLastInWall(npc);
|
||||
break;
|
||||
}
|
||||
case VARKA_SILENOS_WARRIOR:
|
||||
{
|
||||
dropHerb(npc, player, HP_HERBS_DROPLIST);
|
||||
if (qs.isCond(3) && hasQuestItems(player, SPEAR) && !hasQuestItems(player, STAGE1) && (Rnd.get(100) < 25))
|
||||
{
|
||||
giveItems(player, STAGE1, 1);
|
||||
}
|
||||
|
||||
// Spawns Mage Type silenos behind the one that was killed.
|
||||
spawnMageBehind(npc, player, VARKA_SILENOS_PRIEST);
|
||||
|
||||
// Check if all the first row have been killed. Despawn mages.
|
||||
checkIfLastInWall(npc);
|
||||
break;
|
||||
}
|
||||
case VARKA_ELITE_GUARD:
|
||||
{
|
||||
dropHerb(npc, player, HP_HERBS_DROPLIST);
|
||||
if (qs.isCond(3) && hasQuestItems(player, SPEAR) && !hasQuestItems(player, STAGE1) && (Rnd.get(100) < 25))
|
||||
{
|
||||
giveItems(player, STAGE1, 1);
|
||||
}
|
||||
|
||||
// Spawns Mage Type silenos behind the one that was killed.
|
||||
spawnMageBehind(npc, player, VARKA_SILENOS_SHAMAN);
|
||||
|
||||
// Check if all the first row have been killed. Despawn mages.
|
||||
checkIfLastInWall(npc);
|
||||
break;
|
||||
}
|
||||
case VARKAS_COMMANDER:
|
||||
case VARKA_SILENOS_OFFICER:
|
||||
{
|
||||
dropHerb(npc, player, HP_HERBS_DROPLIST);
|
||||
if (qs.isCond(3) && hasQuestItems(player, SPEAR) && !hasQuestItems(player, STAGE1) && (Rnd.get(100) < 25))
|
||||
{
|
||||
giveItems(player, STAGE1, 1);
|
||||
}
|
||||
|
||||
// Spawns Mage Type silenos behind the one that was killed.
|
||||
spawnMageBehind(npc, player, VARKA_SILENOS_SEER);
|
||||
|
||||
// Check if all the first row have been killed. Despawn mages.
|
||||
checkIfLastInWall(npc);
|
||||
break;
|
||||
}
|
||||
case VARKA_SILENOS_GREAT_MAGUS:
|
||||
case VARKA_SILENOS_GENERAL:
|
||||
{
|
||||
dropHerb(npc, player, HP_HERBS_DROPLIST);
|
||||
if (qs.isCond(3) && hasQuestItems(player, ENCHSPEAR) && !hasQuestItems(player, STAGE2) && (Rnd.get(100) < 25))
|
||||
{
|
||||
giveItems(player, STAGE2, 1);
|
||||
}
|
||||
|
||||
// Spawns Mage Type silenos behind the one that was killed.
|
||||
spawnMageBehind(npc, player, VARKA_SILENOS_MAGNUS);
|
||||
|
||||
// Check if all the first row have been killed. Despawn mages.
|
||||
checkIfLastInWall(npc);
|
||||
break;
|
||||
}
|
||||
case VARKAS_PROPHET:
|
||||
{
|
||||
dropHerb(npc, player, HP_HERBS_DROPLIST);
|
||||
if (qs.isCond(3) && hasQuestItems(player, ENCHSPEAR) && !hasQuestItems(player, STAGE2) && (Rnd.get(100) < 25))
|
||||
{
|
||||
giveItems(player, STAGE2, 1);
|
||||
}
|
||||
|
||||
// Spawns Mage Type silenos behind the one that was killed.
|
||||
spawnMageBehind(npc, player, DISCIPLE_OF_PROPHET);
|
||||
|
||||
// Check if all the first row have been killed. Despawn mages.
|
||||
checkIfLastInWall(npc);
|
||||
break;
|
||||
}
|
||||
case VARKA_SILENOS_HEAD_GUARD:
|
||||
{
|
||||
dropHerb(npc, player, HP_HERBS_DROPLIST);
|
||||
if (qs.isCond(3) && hasQuestItems(player, ENCHSPEAR) && !hasQuestItems(player, STAGE2) && (Rnd.get(100) < 25))
|
||||
{
|
||||
giveItems(player, STAGE2, 1);
|
||||
}
|
||||
|
||||
// Spawns Mage Type silenos behind the one that was killed.
|
||||
spawnMageBehind(npc, player, VARKA_HEAD_MAGUS);
|
||||
|
||||
// Check if all the first row have been killed. Despawn mages.
|
||||
checkIfLastInWall(npc);
|
||||
break;
|
||||
}
|
||||
case PROPHET_GUARD:
|
||||
{
|
||||
dropHerb(npc, player, HP_HERBS_DROPLIST);
|
||||
if (qs.isCond(3) && hasQuestItems(player, ENCHSPEAR) && !hasQuestItems(player, STAGE2) && (Rnd.get(100) < 25))
|
||||
{
|
||||
giveItems(player, STAGE2, 1);
|
||||
}
|
||||
|
||||
// Spawns Mage Type silenos behind the one that was killed.
|
||||
spawnMageBehind(npc, player, VARKA_SILENOS_GREAT_SEER);
|
||||
|
||||
// Check if all the first row have been killed. Despawn mages.
|
||||
checkIfLastInWall(npc);
|
||||
break;
|
||||
}
|
||||
case LATANA:
|
||||
{
|
||||
qs.setCond(4, true);
|
||||
|
||||
// Spawns Ketra Orc Supporter.
|
||||
addSpawn(KETRA_ORC_SUPPORTER2, npc.getX(), npc.getY(), npc.getZ(), npc.getHeading(), false, 0, false, npc.getInstanceId());
|
||||
break;
|
||||
}
|
||||
case ANTYLOPE_1:
|
||||
case ANTYLOPE_2:
|
||||
case ANTYLOPE_3:
|
||||
case FLAVA:
|
||||
{
|
||||
dropItem(npc, player);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
// hardcoded herb drops.
|
||||
dropHerb(npc, player, HP_HERBS_DROPLIST);
|
||||
dropHerb(npc, player, MP_HERBS_DROPLIST);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return super.onKill(npc, player, isSummon);
|
||||
}
|
||||
@@ -679,45 +684,61 @@ public class Q00144_PailakaInjuredDragon extends Quest
|
||||
case VARKA_SILENOS_FOOTMAN:
|
||||
case VARKA_SILENOS_RECRUIT:
|
||||
case VARKA_SILENOS_WARRIOR:
|
||||
{
|
||||
switch (knownNpc.getId())
|
||||
{
|
||||
case VARKA_SILENOS_FOOTMAN:
|
||||
case VARKA_SILENOS_RECRUIT:
|
||||
case VARKA_SILENOS_WARRIOR:
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case VARKA_ELITE_GUARD:
|
||||
case VARKAS_COMMANDER:
|
||||
case VARKA_SILENOS_OFFICER:
|
||||
{
|
||||
switch (knownNpc.getId())
|
||||
{
|
||||
case VARKA_ELITE_GUARD:
|
||||
case VARKAS_COMMANDER:
|
||||
case VARKA_SILENOS_OFFICER:
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case VARKA_SILENOS_GREAT_MAGUS:
|
||||
case VARKA_SILENOS_GENERAL:
|
||||
case VARKAS_PROPHET:
|
||||
{
|
||||
switch (knownNpc.getId())
|
||||
{
|
||||
case VARKA_SILENOS_GREAT_MAGUS:
|
||||
case VARKA_SILENOS_GENERAL:
|
||||
case VARKAS_PROPHET:
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case VARKA_SILENOS_HEAD_GUARD:
|
||||
case PROPHET_GUARD:
|
||||
{
|
||||
switch (knownNpc.getId())
|
||||
{
|
||||
case VARKA_SILENOS_HEAD_GUARD:
|
||||
case PROPHET_GUARD:
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -735,50 +756,66 @@ public class Q00144_PailakaInjuredDragon extends Quest
|
||||
case VARKA_SILENOS_FOOTMAN:
|
||||
case VARKA_SILENOS_RECRUIT:
|
||||
case VARKA_SILENOS_WARRIOR:
|
||||
{
|
||||
switch (knownNpc.getId())
|
||||
{
|
||||
case VARKA_SILENOS_MEDIUM:
|
||||
case VARKA_SILENOS_PRIEST:
|
||||
{
|
||||
knownNpc.abortCast();
|
||||
knownNpc.deleteMe();
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case VARKA_ELITE_GUARD:
|
||||
case VARKAS_COMMANDER:
|
||||
case VARKA_SILENOS_OFFICER:
|
||||
{
|
||||
switch (knownNpc.getId())
|
||||
{
|
||||
case VARKA_SILENOS_SHAMAN:
|
||||
case VARKA_SILENOS_SEER:
|
||||
{
|
||||
knownNpc.abortCast();
|
||||
knownNpc.deleteMe();
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case VARKA_SILENOS_GREAT_MAGUS:
|
||||
case VARKA_SILENOS_GENERAL:
|
||||
case VARKAS_PROPHET:
|
||||
{
|
||||
switch (knownNpc.getId())
|
||||
{
|
||||
case VARKA_SILENOS_MAGNUS:
|
||||
case DISCIPLE_OF_PROPHET:
|
||||
{
|
||||
knownNpc.abortCast();
|
||||
knownNpc.deleteMe();
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case VARKA_SILENOS_HEAD_GUARD:
|
||||
case PROPHET_GUARD:
|
||||
{
|
||||
switch (knownNpc.getId())
|
||||
{
|
||||
case VARKA_HEAD_MAGUS:
|
||||
case VARKA_SILENOS_GREAT_SEER:
|
||||
{
|
||||
knownNpc.abortCast();
|
||||
knownNpc.deleteMe();
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -88,6 +88,7 @@ public class Q00147_PathtoBecominganEliteMercenary extends Quest
|
||||
switch (st.getState())
|
||||
{
|
||||
case State.CREATED:
|
||||
{
|
||||
if ((player.getClan() != null) && (player.getClan().getCastleId() > 0))
|
||||
{
|
||||
htmltext = "castle.htm";
|
||||
@@ -97,7 +98,9 @@ public class Q00147_PathtoBecominganEliteMercenary extends Quest
|
||||
htmltext = "elite-01.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
if (st.getCond() < 4)
|
||||
{
|
||||
htmltext = "elite-05.htm";
|
||||
@@ -110,9 +113,12 @@ public class Q00147_PathtoBecominganEliteMercenary extends Quest
|
||||
htmltext = "elite-06.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.COMPLETED:
|
||||
{
|
||||
htmltext = getAlreadyCompletedMsg(player);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@@ -85,6 +85,7 @@ public class Q00148_PathtoBecominganExaltedMercenary extends Quest
|
||||
switch (st.getState())
|
||||
{
|
||||
case State.CREATED:
|
||||
{
|
||||
final QuestState _prev = player.getQuestState(Q00147_PathtoBecominganEliteMercenary.class.getSimpleName());
|
||||
if ((player.getClan() != null) && (player.getClan().getCastleId() > 0))
|
||||
{
|
||||
@@ -106,7 +107,9 @@ public class Q00148_PathtoBecominganExaltedMercenary extends Quest
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
if (st.getCond() < 4)
|
||||
{
|
||||
htmltext = "exalted-04.htm";
|
||||
@@ -119,9 +122,12 @@ public class Q00148_PathtoBecominganExaltedMercenary extends Quest
|
||||
htmltext = "exalted-05.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.COMPLETED:
|
||||
{
|
||||
htmltext = getAlreadyCompletedMsg(player);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@@ -89,12 +89,16 @@ public class Q00151_CureForFever extends Quest
|
||||
switch (npc.getId())
|
||||
{
|
||||
case ELLIAS:
|
||||
{
|
||||
switch (st.getState())
|
||||
{
|
||||
case State.CREATED:
|
||||
{
|
||||
htmltext = (player.getLevel() >= MIN_LEVEL) ? "30050-02.htm" : "30050-01.htm";
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
if (st.isCond(3) && hasQuestItems(player, FEVER_MEDICINE))
|
||||
{
|
||||
giveItems(player, ROUND_SHIELD, 1);
|
||||
@@ -112,12 +116,17 @@ public class Q00151_CureForFever extends Quest
|
||||
htmltext = "30050-04.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.COMPLETED:
|
||||
{
|
||||
htmltext = getAlreadyCompletedMsg(player);
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case YOHANES:
|
||||
{
|
||||
if (st.isStarted())
|
||||
{
|
||||
if (st.isCond(2) && hasQuestItems(player, POISON_SAC))
|
||||
@@ -133,6 +142,7 @@ public class Q00151_CureForFever extends Quest
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@@ -84,9 +84,12 @@ public class Q00153_DeliverGoods extends Quest
|
||||
switch (st.getState())
|
||||
{
|
||||
case State.CREATED:
|
||||
{
|
||||
htmltext = (player.getLevel() >= 2) ? "30041-01.htm" : "30041-00.htm";
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
if (st.isCond(1))
|
||||
{
|
||||
htmltext = "30041-03.html";
|
||||
@@ -105,9 +108,12 @@ public class Q00153_DeliverGoods extends Quest
|
||||
htmltext = "30041-04.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.COMPLETED:
|
||||
{
|
||||
htmltext = getAlreadyCompletedMsg(player);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
@@ -67,20 +67,29 @@ public class Q00155_FindSirWindawood extends Quest
|
||||
switch (npc.getId())
|
||||
{
|
||||
case ABELLOS:
|
||||
{
|
||||
switch (st.getState())
|
||||
{
|
||||
case State.CREATED:
|
||||
{
|
||||
htmltext = (player.getLevel() >= MIN_LEVEL) ? "30042-02.htm" : "30042-01.htm";
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
htmltext = "30042-04.html";
|
||||
break;
|
||||
}
|
||||
case State.COMPLETED:
|
||||
{
|
||||
htmltext = getAlreadyCompletedMsg(player);
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SIR_COLLIN_WINDAWOOD:
|
||||
{
|
||||
if (st.isStarted() && hasQuestItems(player, OFFICIAL_LETTER))
|
||||
{
|
||||
giveItems(player, HASTE_POTION, 1);
|
||||
@@ -88,6 +97,7 @@ public class Q00155_FindSirWindawood extends Quest
|
||||
htmltext = "30311-01.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@@ -96,9 +96,12 @@ public class Q00158_SeedOfEvil extends Quest
|
||||
switch (st.getState())
|
||||
{
|
||||
case State.CREATED:
|
||||
{
|
||||
htmltext = (player.getLevel() >= MIN_LEVEL) ? "30031-02.htm" : "30031-01.html";
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
if (st.isCond(1))
|
||||
{
|
||||
htmltext = "30031-04.html";
|
||||
@@ -112,9 +115,12 @@ public class Q00158_SeedOfEvil extends Quest
|
||||
htmltext = "30031-05.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.COMPLETED:
|
||||
{
|
||||
htmltext = getAlreadyCompletedMsg(player);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@@ -59,15 +59,20 @@ public class Q00161_FruitOfTheMotherTree extends Quest
|
||||
switch (event)
|
||||
{
|
||||
case "30362-04.htm":
|
||||
{
|
||||
st.startQuest();
|
||||
giveItems(player, ANDELLRIAS_LETTER, 1);
|
||||
break;
|
||||
}
|
||||
case "30371-03.html":
|
||||
{
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
htmltext = null;
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
@@ -81,12 +86,16 @@ public class Q00161_FruitOfTheMotherTree extends Quest
|
||||
switch (npc.getId())
|
||||
{
|
||||
case ANDELLIA:
|
||||
{
|
||||
switch (st.getState())
|
||||
{
|
||||
case State.CREATED:
|
||||
{
|
||||
htmltext = (player.getRace() == Race.ELF) ? (player.getLevel() >= MIN_LEVEL) ? "30362-03.htm" : "30362-02.htm" : "30362-01.htm";
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
if (st.isCond(1))
|
||||
{
|
||||
htmltext = "30362-05.html";
|
||||
@@ -99,12 +108,17 @@ public class Q00161_FruitOfTheMotherTree extends Quest
|
||||
htmltext = "30362-06.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.COMPLETED:
|
||||
{
|
||||
htmltext = getAlreadyCompletedMsg(player);
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case THALIA:
|
||||
{
|
||||
if (st.isStarted())
|
||||
{
|
||||
if (st.isCond(1) && hasQuestItems(player, ANDELLRIAS_LETTER))
|
||||
@@ -120,6 +134,7 @@ public class Q00161_FruitOfTheMotherTree extends Quest
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@@ -93,9 +93,12 @@ public class Q00170_DangerousSeduction extends Quest
|
||||
switch (st.getState())
|
||||
{
|
||||
case State.CREATED:
|
||||
{
|
||||
htmltext = (player.getRace() == Race.DARK_ELF) ? (player.getLevel() >= MIN_LEVEL) ? "30305-01.htm" : "30305-02.htm" : "30305-03.htm";
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
if (st.isCond(1))
|
||||
{
|
||||
htmltext = "30305-05.html";
|
||||
@@ -108,9 +111,12 @@ public class Q00170_DangerousSeduction extends Quest
|
||||
htmltext = "30305-06.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.COMPLETED:
|
||||
{
|
||||
htmltext = getAlreadyCompletedMsg(player);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@@ -60,16 +60,22 @@ public class Q00172_NewHorizons extends Quest
|
||||
switch (event)
|
||||
{
|
||||
case "32140-04.htm":
|
||||
{
|
||||
st.startQuest();
|
||||
break;
|
||||
}
|
||||
case "32163-02.html":
|
||||
{
|
||||
giveItems(player, SCROLL_OF_ESCAPE_GIRAN, 1);
|
||||
giveItems(player, MARK_OF_TRAVELER, 1);
|
||||
st.exitQuest(false, true);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
htmltext = null;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@@ -63,22 +63,30 @@ public class Q00173_ToTheIsleOfSouls extends Quest
|
||||
switch (event)
|
||||
{
|
||||
case "30097-03.htm":
|
||||
{
|
||||
st.startQuest();
|
||||
giveItems(player, GALLADUCCIS_ORDER, 1);
|
||||
break;
|
||||
}
|
||||
case "30097-06.html":
|
||||
{
|
||||
giveItems(player, SCROLL_OF_ESCAPE_KAMAEL_VILLAGE, 1);
|
||||
takeItems(player, MARK_OF_TRAVELER, 1);
|
||||
st.exitQuest(false, true);
|
||||
break;
|
||||
}
|
||||
case "30094-02.html":
|
||||
{
|
||||
st.setCond(2, true);
|
||||
takeItems(player, GALLADUCCIS_ORDER, -1);
|
||||
giveItems(player, MAGIC_SWORD_HILT, 1);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
htmltext = null;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
@@ -92,26 +100,36 @@ public class Q00173_ToTheIsleOfSouls extends Quest
|
||||
switch (npc.getId())
|
||||
{
|
||||
case GALLADUCCI:
|
||||
{
|
||||
switch (st.getState())
|
||||
{
|
||||
case State.CREATED:
|
||||
{
|
||||
final QuestState qs = player.getQuestState(Q00172_NewHorizons.class.getSimpleName());
|
||||
htmltext = ((qs != null) && qs.isCompleted() && (player.getRace() == Race.KAMAEL) && hasQuestItems(player, MARK_OF_TRAVELER)) ? "30097-01.htm" : "30097-02.htm";
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
htmltext = (st.isCond(1)) ? "30097-04.html" : "30097-05.html";
|
||||
break;
|
||||
}
|
||||
case State.COMPLETED:
|
||||
{
|
||||
htmltext = getAlreadyCompletedMsg(player);
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case GENTLER:
|
||||
{
|
||||
if (st.isStarted())
|
||||
{
|
||||
htmltext = (st.isCond(1)) ? "30094-01.html" : "30094-03.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@@ -84,26 +84,37 @@ public class Q00174_SupplyCheck extends Quest
|
||||
switch (npc.getId())
|
||||
{
|
||||
case MARCELA:
|
||||
{
|
||||
switch (st.getState())
|
||||
{
|
||||
case State.CREATED:
|
||||
{
|
||||
htmltext = (player.getLevel() >= MIN_LEVEL) ? "32173-01.htm" : "32173-02.htm";
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
switch (st.getCond())
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
htmltext = "32173-04.html";
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
st.setCond(3, true);
|
||||
takeItems(player, WAREHOUSE_MANIFEST, -1);
|
||||
htmltext = "32173-05.html";
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
htmltext = "32173-06.html";
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
for (int itemId : REWARD)
|
||||
{
|
||||
giveItems(player, itemId, 1);
|
||||
@@ -115,52 +126,73 @@ public class Q00174_SupplyCheck extends Quest
|
||||
showOnScreenMsg(player, NpcStringId.DELIVERY_DUTY_COMPLETE_N_GO_FIND_THE_NEWBIE_GUIDE, 2, 5000);
|
||||
htmltext = "32173-07.html";
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.COMPLETED:
|
||||
{
|
||||
htmltext = getAlreadyCompletedMsg(player);
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case BENIS:
|
||||
{
|
||||
if (st.isStarted())
|
||||
{
|
||||
switch (st.getCond())
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
st.setCond(2, true);
|
||||
giveItems(player, WAREHOUSE_MANIFEST, 1);
|
||||
htmltext = "32170-01.html";
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
htmltext = "32170-02.html";
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
htmltext = "32170-03.html";
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case NIKA:
|
||||
{
|
||||
if (st.isStarted())
|
||||
{
|
||||
switch (st.getCond())
|
||||
{
|
||||
case 1:
|
||||
case 2:
|
||||
{
|
||||
htmltext = "32167-01.html";
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
st.setCond(4, true);
|
||||
giveItems(player, GROCERY_STORE_MANIFEST, 1);
|
||||
htmltext = "32167-02.html";
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
htmltext = "32167-03.html";
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@@ -64,9 +64,12 @@ public class Q00176_StepsForHonor extends Quest
|
||||
switch (st.getState())
|
||||
{
|
||||
case State.CREATED:
|
||||
{
|
||||
htmltext = (player.getLevel() >= MIN_LEVEL) ? "36479-03.html" : "36479-02.html";
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
if (TerritoryWarManager.getInstance().isTWInProgress())
|
||||
{
|
||||
return "36479-05.html";
|
||||
@@ -74,39 +77,58 @@ public class Q00176_StepsForHonor extends Quest
|
||||
switch (st.getCond())
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
htmltext = "36479-06.html";
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
st.setCond(3, true);
|
||||
htmltext = "36479-07.html";
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
htmltext = "36479-08.html";
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
st.setCond(5, true);
|
||||
htmltext = "36479-09.html";
|
||||
break;
|
||||
}
|
||||
case 5:
|
||||
{
|
||||
htmltext = "36479-10.html";
|
||||
break;
|
||||
}
|
||||
case 6:
|
||||
{
|
||||
st.setCond(7, true);
|
||||
htmltext = "36479-11.html";
|
||||
break;
|
||||
}
|
||||
case 7:
|
||||
{
|
||||
htmltext = "36479-12.html";
|
||||
break;
|
||||
}
|
||||
case 8:
|
||||
{
|
||||
giveItems(player, CLOAK, 1);
|
||||
st.exitQuest(false, true);
|
||||
htmltext = "36479-13.html";
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.COMPLETED:
|
||||
{
|
||||
htmltext = "36479-01.html";
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@@ -88,6 +88,7 @@ public class Q00179_IntoTheLargeCavern extends Quest
|
||||
switch (st.getState())
|
||||
{
|
||||
case State.CREATED:
|
||||
{
|
||||
if (player.getRace() != Race.KAMAEL)
|
||||
{
|
||||
htmltext = "32138-00b.html";
|
||||
@@ -110,15 +111,20 @@ public class Q00179_IntoTheLargeCavern extends Quest
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
if (st.isCond(1))
|
||||
{
|
||||
htmltext = "32138-03.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.COMPLETED:
|
||||
{
|
||||
htmltext = getAlreadyCompletedMsg(player);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if ((npc.getId() == MENACING_MACHINE) && (st.getState() == State.STARTED))
|
||||
|
||||
@@ -86,6 +86,7 @@ public class Q00182_NewRecruits extends Quest
|
||||
switch (st.getState())
|
||||
{
|
||||
case State.CREATED:
|
||||
{
|
||||
final int level = player.getLevel();
|
||||
if (player.getRace() == Race.KAMAEL)
|
||||
{
|
||||
@@ -100,15 +101,20 @@ public class Q00182_NewRecruits extends Quest
|
||||
htmltext = "32138-00b.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
if (st.getInt("cond") == 1)
|
||||
{
|
||||
htmltext = "32138-04.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.COMPLETED:
|
||||
{
|
||||
htmltext = getAlreadyCompletedMsg(player);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if ((npcId == MENACING_MACHINE) && st.isStarted())
|
||||
|
||||
@@ -197,11 +197,17 @@ public final class Q00234_FatesWhisper extends Quest
|
||||
switch (qs.getMemoState())
|
||||
{
|
||||
case 6:
|
||||
{
|
||||
return "30178-01.html";
|
||||
}
|
||||
case 7:
|
||||
{
|
||||
return "30178-03.html";
|
||||
}
|
||||
case 8:
|
||||
{
|
||||
return "30178-04.html";
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -346,83 +352,109 @@ public final class Q00234_FatesWhisper extends Quest
|
||||
switch (qs.getMemoState())
|
||||
{
|
||||
case 11:
|
||||
{
|
||||
if (hasAtLeastOneQuestItem(player, SWORD_OF_DAMASCUS, SWORD_OF_DAMASCUS_FOCUS, SWORD_OF_DAMASCUS_CRT_DAMAGE, SWORD_OF_DAMASCUS_HASTE))
|
||||
{
|
||||
return "31002-35.html";
|
||||
}
|
||||
return "31002-35a.html";
|
||||
}
|
||||
case 12:
|
||||
{
|
||||
if (hasAtLeastOneQuestItem(player, HAZARD_BOW_GUIDENCE, HAZARD_BOW_QUICKRECOVERY, HAZARD_BOW_CHEAPSHOT, HAZARD_BOW))
|
||||
{
|
||||
return "31002-36.html";
|
||||
}
|
||||
return "31002-36a.html";
|
||||
}
|
||||
case 13:
|
||||
{
|
||||
if (hasAtLeastOneQuestItem(player, LANCIA_ANGER, LANCIA_CRT_STUN, LANCIA_LONGBLOW, LANCIA))
|
||||
{
|
||||
return "31002-37.html";
|
||||
}
|
||||
return "31002-37a.html";
|
||||
}
|
||||
case 14:
|
||||
{
|
||||
if (hasAtLeastOneQuestItem(player, ART_OF_BATTLE_AXE_HEALTH, ART_OF_BATTLE_AXE_RSK_FOCUS, ART_OF_BATTLE_AXE_HASTE, ART_OF_BATTLE_AXE))
|
||||
{
|
||||
return "31002-38.html";
|
||||
}
|
||||
return "31002-38a.html";
|
||||
}
|
||||
case 15:
|
||||
{
|
||||
if (hasAtLeastOneQuestItem(player, STAFF_OF_EVIL_SPRIT_MAGICFOCUS, STAFF_OF_EVIL_SPRIT_MAGICBLESSTHEBODY, STAFF_OF_EVIL_SPRIT_MAGICPOISON, STAFF_OF_EVIL_SPRIT))
|
||||
{
|
||||
return "31002-39.html";
|
||||
}
|
||||
return "31002-39a.html";
|
||||
}
|
||||
case 16:
|
||||
{
|
||||
if (hasAtLeastOneQuestItem(player, DEMONS_SWORD_CRT_BLEED, DEMONS_SWORD_CRT_POISON, DEMONS_SWORD_MIGHTMOTAL, DEMONS_SWORD))
|
||||
{
|
||||
return "31002-40.html";
|
||||
}
|
||||
return "31002-40a.html";
|
||||
}
|
||||
case 17:
|
||||
{
|
||||
if (hasAtLeastOneQuestItem(player, BELLION_CESTUS_CRT_DRAIN, BELLION_CESTUS_CRT_POISON, BELLION_CESTUS_RSK_HASTE, BELLION_CESTUS))
|
||||
{
|
||||
return "31002-41.html";
|
||||
}
|
||||
return "31002-41a.html";
|
||||
}
|
||||
case 18:
|
||||
{
|
||||
if (hasAtLeastOneQuestItem(player, DEADMANS_GLORY_ANGER, DEADMANS_GLORY_HEALTH, DEADMANS_GLORY_HASTE, DEADMANS_GLORY))
|
||||
{
|
||||
return "31002-42.html";
|
||||
}
|
||||
return "31002-42a.html";
|
||||
}
|
||||
case 19:
|
||||
{
|
||||
if (hasAtLeastOneQuestItem(player, SAMURAI_LONGSWORD_SAMURAI_LONGSWORD))
|
||||
{
|
||||
return "31002-43.html";
|
||||
}
|
||||
return "31002-43a.html";
|
||||
}
|
||||
case 41:
|
||||
{
|
||||
if (hasAtLeastOneQuestItem(player, GUARDIANS_SWORD, GUARDIANS_SWORD_CRT_DRAIN, GUARDIANS_SWORD_HEALTH, GUARDIANS_SWORD_CRT_BLEED))
|
||||
{
|
||||
return "31002-43b.html";
|
||||
}
|
||||
return "31002-43c.html";
|
||||
}
|
||||
case 42:
|
||||
{
|
||||
if (hasAtLeastOneQuestItem(player, TEARS_OF_WIZARD, TEARS_OF_WIZARD_ACUMEN, TEARS_OF_WIZARD_MAGICPOWER, TEARS_OF_WIZARD_UPDOWN))
|
||||
{
|
||||
return "31002-43d.html";
|
||||
}
|
||||
return "31002-43e.html";
|
||||
}
|
||||
case 43:
|
||||
{
|
||||
if (hasAtLeastOneQuestItem(player, STAR_BUSTER, STAR_BUSTER_HEALTH, STAR_BUSTER_HASTE, STAR_BUSTER_RSK_FOCUS))
|
||||
{
|
||||
return "31002-43f.html";
|
||||
}
|
||||
return "31002-43g.html";
|
||||
}
|
||||
case 44:
|
||||
{
|
||||
if (hasAtLeastOneQuestItem(player, BONE_OF_KAIM_VANUL, BONE_OF_KAIM_VANUL_MANAUP, BONE_OF_KAIM_VANUL_MAGICSILENCE, BONE_OF_KAIM_VANUL_UPDOWN))
|
||||
{
|
||||
return "31002-43h.html";
|
||||
}
|
||||
return "31002-43i.html";
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -605,11 +637,17 @@ public final class Q00234_FatesWhisper extends Quest
|
||||
switch (eventID)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
return "31002-02.htm";
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
return "31002-03.html";
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
return "31002-04.html";
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
if (!qs.isCompleted() && (player.getLevel() >= 75))
|
||||
@@ -996,31 +1034,57 @@ public final class Q00234_FatesWhisper extends Quest
|
||||
switch (qs.getMemoState())
|
||||
{
|
||||
case 11:
|
||||
{
|
||||
return getReward(qs, player, SWORD_OF_DAMASCUS, SWORD_OF_DAMASCUS_FOCUS, SWORD_OF_DAMASCUS_CRT_DAMAGE, SWORD_OF_DAMASCUS_HASTE, REWARD);
|
||||
}
|
||||
case 12:
|
||||
{
|
||||
return getReward(qs, player, HAZARD_BOW, HAZARD_BOW_GUIDENCE, HAZARD_BOW_QUICKRECOVERY, HAZARD_BOW_CHEAPSHOT, REWARD);
|
||||
}
|
||||
case 13:
|
||||
{
|
||||
return getReward(qs, player, LANCIA, LANCIA_ANGER, LANCIA_CRT_STUN, LANCIA_LONGBLOW, REWARD);
|
||||
}
|
||||
case 14:
|
||||
{
|
||||
return getReward(qs, player, ART_OF_BATTLE_AXE, ART_OF_BATTLE_AXE_HEALTH, ART_OF_BATTLE_AXE_RSK_FOCUS, ART_OF_BATTLE_AXE_HASTE, REWARD);
|
||||
}
|
||||
case 15:
|
||||
{
|
||||
return getReward(qs, player, STAFF_OF_EVIL_SPRIT, STAFF_OF_EVIL_SPRIT_MAGICFOCUS, STAFF_OF_EVIL_SPRIT_MAGICBLESSTHEBODY, STAFF_OF_EVIL_SPRIT_MAGICPOISON, REWARD);
|
||||
}
|
||||
case 16:
|
||||
{
|
||||
return getReward(qs, player, DEMONS_SWORD, DEMONS_SWORD_CRT_BLEED, DEMONS_SWORD_CRT_POISON, DEMONS_SWORD_MIGHTMOTAL, REWARD);
|
||||
}
|
||||
case 17:
|
||||
{
|
||||
return getReward(qs, player, BELLION_CESTUS, BELLION_CESTUS_CRT_DRAIN, BELLION_CESTUS_CRT_POISON, BELLION_CESTUS_RSK_HASTE, REWARD);
|
||||
}
|
||||
case 18:
|
||||
{
|
||||
return getReward(qs, player, DEADMANS_GLORY, DEADMANS_GLORY_ANGER, DEADMANS_GLORY_HEALTH, DEADMANS_GLORY_HASTE, REWARD);
|
||||
}
|
||||
case 19:
|
||||
{
|
||||
return getReward(qs, player, SAMURAI_LONGSWORD_SAMURAI_LONGSWORD, 0, 0, 0, REWARD);
|
||||
}
|
||||
case 41:
|
||||
{
|
||||
return getReward(qs, player, GUARDIANS_SWORD, GUARDIANS_SWORD_CRT_DRAIN, GUARDIANS_SWORD_HEALTH, GUARDIANS_SWORD_CRT_BLEED, REWARD);
|
||||
}
|
||||
case 42:
|
||||
{
|
||||
return getReward(qs, player, TEARS_OF_WIZARD, TEARS_OF_WIZARD_ACUMEN, TEARS_OF_WIZARD_MAGICPOWER, TEARS_OF_WIZARD_UPDOWN, REWARD);
|
||||
}
|
||||
case 43:
|
||||
{
|
||||
return getReward(qs, player, STAR_BUSTER, STAR_BUSTER_HEALTH, STAR_BUSTER_HASTE, STAR_BUSTER_RSK_FOCUS, REWARD);
|
||||
}
|
||||
case 44:
|
||||
{
|
||||
return getReward(qs, player, BONE_OF_KAIM_VANUL, BONE_OF_KAIM_VANUL_MANAUP, BONE_OF_KAIM_VANUL_MAGICSILENCE, BONE_OF_KAIM_VANUL_UPDOWN, REWARD);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -77,17 +77,23 @@ public class Q00249_PoisonedPlainsOfTheLizardmen extends Quest
|
||||
switch (st.getState())
|
||||
{
|
||||
case State.CREATED:
|
||||
{
|
||||
htmltext = (player.getLevel() >= 82) ? "30196-01.htm" : "30196-00.htm";
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
if (st.isCond(1))
|
||||
{
|
||||
htmltext = "30196-04.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.COMPLETED:
|
||||
{
|
||||
htmltext = "30196-05.htm";
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (npc.getId() == JOHNNY)
|
||||
|
||||
@@ -144,9 +144,12 @@ public class Q00250_WatchWhatYouEat extends Quest
|
||||
switch (st.getState())
|
||||
{
|
||||
case State.CREATED:
|
||||
{
|
||||
htmltext = (player.getLevel() >= 82) ? "32743-01.htm" : "32743-00.htm";
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
if (st.isCond(1))
|
||||
{
|
||||
htmltext = "32743-04.htm";
|
||||
@@ -167,9 +170,12 @@ public class Q00250_WatchWhatYouEat extends Quest
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.COMPLETED:
|
||||
{
|
||||
htmltext = "32743-done.htm";
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
|
||||
@@ -121,9 +121,12 @@ public class Q00251_NoSecrets extends Quest
|
||||
switch (st.getState())
|
||||
{
|
||||
case State.CREATED:
|
||||
{
|
||||
htmltext = (player.getLevel() > 81) ? "30201-01.htm" : "30201-00.htm";
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
if (st.isCond(1))
|
||||
{
|
||||
htmltext = "30201-05.htm";
|
||||
@@ -136,9 +139,12 @@ public class Q00251_NoSecrets extends Quest
|
||||
st.exitQuest(false, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.COMPLETED:
|
||||
{
|
||||
htmltext = "30201-06.htm";
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@@ -70,16 +70,21 @@ public class Q00252_ItSmellsDelicious extends Quest
|
||||
switch (event)
|
||||
{
|
||||
case "30200-04.htm":
|
||||
{
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30200-05.htm":
|
||||
{
|
||||
if (qs.isCreated())
|
||||
{
|
||||
qs.startQuest();
|
||||
htmltext = event;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "30200-08.html":
|
||||
{
|
||||
if (qs.isCond(2))
|
||||
{
|
||||
giveAdena(player, 147656, true);
|
||||
@@ -88,6 +93,7 @@ public class Q00252_ItSmellsDelicious extends Quest
|
||||
htmltext = event;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
@@ -148,14 +154,18 @@ public class Q00252_ItSmellsDelicious extends Quest
|
||||
switch (qs.getCond())
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
htmltext = "30200-06.html";
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
if (hasMaxDiaries(qs) && hasMaxCookbookPages(qs))
|
||||
{
|
||||
htmltext = "30200-07.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
@@ -281,11 +281,13 @@ public class Q00255_Tutorial extends Quest
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
qs.playTutorialVoice("tutorial_voice_003");
|
||||
html = "tutorial_02.htm";
|
||||
qs.onTutorialClientEvent(1);
|
||||
qs.set("Ex", "-5");
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
html = "tutorial_03.htm";
|
||||
|
||||
@@ -93,9 +93,12 @@ public class Q00277_GatekeepersOffering extends Quest
|
||||
switch (st.getState())
|
||||
{
|
||||
case State.CREATED:
|
||||
{
|
||||
htmltext = "30576-02.htm";
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
if (st.isCond(1))
|
||||
{
|
||||
htmltext = "30576-04.html";
|
||||
@@ -107,6 +110,7 @@ public class Q00277_GatekeepersOffering extends Quest
|
||||
htmltext = "30576-05.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@@ -108,9 +108,12 @@ public class Q00287_FiguringItOut extends Quest
|
||||
switch (event)
|
||||
{
|
||||
case "32742-03.htm":
|
||||
{
|
||||
st.startQuest();
|
||||
break;
|
||||
}
|
||||
case "Icarus":
|
||||
{
|
||||
if (getQuestItemsCount(player, VIAL_OF_TANTA_BLOOD) >= 500)
|
||||
{
|
||||
final ItemHolder holder = ICARUS[getRandom(ICARUS.length)];
|
||||
@@ -124,7 +127,9 @@ public class Q00287_FiguringItOut extends Quest
|
||||
htmltext = "32742-07.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "Moirai":
|
||||
{
|
||||
if (getQuestItemsCount(player, VIAL_OF_TANTA_BLOOD) >= 100)
|
||||
{
|
||||
final ItemHolder holder = MOIRAI[getRandom(MOIRAI.length)];
|
||||
@@ -138,22 +143,31 @@ public class Q00287_FiguringItOut extends Quest
|
||||
htmltext = "32742-09.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "32742-11.html":
|
||||
{
|
||||
if (!hasQuestItems(player, VIAL_OF_TANTA_BLOOD))
|
||||
{
|
||||
st.exitQuest(true, true);
|
||||
htmltext = "32742-12.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "32742-13.html":
|
||||
{
|
||||
st.exitQuest(true, true);
|
||||
break;
|
||||
}
|
||||
case "32742-02.htm":
|
||||
case "32742-10.html":
|
||||
{
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
htmltext = null;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@@ -191,9 +191,12 @@ public class Q00288_HandleWithCare extends Quest
|
||||
switch (st.getState())
|
||||
{
|
||||
case State.CREATED:
|
||||
{
|
||||
htmltext = (player.getLevel() < MIN_LEVEL) ? "32741-01.html" : "32741-02.htm";
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
if (st.isCond(1) && !hasQuestItems(player, HIGH_GRADE_LIZARD_SCALE) && !hasQuestItems(player, MIDDLE_GRADE_LIZARD_SCALE))
|
||||
{
|
||||
htmltext = "32741-05.html";
|
||||
@@ -202,12 +205,12 @@ public class Q00288_HandleWithCare extends Quest
|
||||
{
|
||||
htmltext = "32741-06.html";
|
||||
}
|
||||
|
||||
if (st.isCond(2) && hasQuestItems(player, HIGH_GRADE_LIZARD_SCALE))
|
||||
{
|
||||
htmltext = "32741-07.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@@ -242,15 +242,19 @@ public class Q00289_NoMoreSoupForYou extends Quest
|
||||
switch (st.getState())
|
||||
{
|
||||
case State.CREATED:
|
||||
{
|
||||
final QuestState _prev = player.getQuestState(Q00252_ItSmellsDelicious.class.getSimpleName());
|
||||
htmltext = ((_prev != null) && _prev.isCompleted() && (player.getLevel() >= 82)) ? "30200-01.htm" : "30200-00.htm";
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
if (st.isCond(1))
|
||||
{
|
||||
htmltext = (getQuestItemsCount(player, SOUP) >= 100) ? "30200-04.htm" : "30200-03.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
|
||||
@@ -93,9 +93,12 @@ public class Q00297_GatekeepersFavor extends Quest
|
||||
switch (st.getState())
|
||||
{
|
||||
case State.CREATED:
|
||||
{
|
||||
htmltext = "30540-02.htm";
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
if (st.isCond(1))
|
||||
{
|
||||
htmltext = "30540-04.html";
|
||||
@@ -107,6 +110,7 @@ public class Q00297_GatekeepersFavor extends Quest
|
||||
htmltext = "30540-05.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@@ -143,45 +143,65 @@ public class Q00308_ReedFieldMaintenance extends Quest
|
||||
case "32646-07.html":
|
||||
case "32646-08.html":
|
||||
case "32646-10.html":
|
||||
{
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "32646-04.html":
|
||||
{
|
||||
st.startQuest();
|
||||
player.sendPacket(new RadarControl(0, 2, 77325, 205773, -3432));
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "claimreward":
|
||||
{
|
||||
final QuestState q238 = player.getQuestState(Q00238_SuccessFailureOfBusiness.class.getName());
|
||||
htmltext = ((q238 != null) && q238.isCompleted()) ? "32646-09.html" : "32646-12.html";
|
||||
break;
|
||||
}
|
||||
case "100":
|
||||
case "120":
|
||||
{
|
||||
htmltext = onItemExchangeRequest(player, MOIRAI_PIECES[getRandom(MOIRAI_PIECES.length - 1)], Integer.parseInt(event));
|
||||
break;
|
||||
}
|
||||
case "192":
|
||||
case "230":
|
||||
{
|
||||
htmltext = onItemExchangeRequest(player, REC_DYNASTY_EARRINGS_70, Integer.parseInt(event));
|
||||
break;
|
||||
}
|
||||
case "256":
|
||||
case "308":
|
||||
{
|
||||
htmltext = onItemExchangeRequest(player, REC_DYNASTY_NECKLACE_70, Integer.parseInt(event));
|
||||
break;
|
||||
}
|
||||
case "128":
|
||||
case "154":
|
||||
{
|
||||
htmltext = onItemExchangeRequest(player, REC_DYNASTY_RING_70, Integer.parseInt(event));
|
||||
break;
|
||||
}
|
||||
case "206":
|
||||
case "246":
|
||||
{
|
||||
htmltext = onItemExchangeRequest(player, REC_DYNASTY_SIGIL_60, Integer.parseInt(event));
|
||||
break;
|
||||
}
|
||||
case "180":
|
||||
case "216":
|
||||
{
|
||||
htmltext = onItemExchangeRequest(player, MOIRAI_RECIPES[getRandom(MOIRAI_RECIPES.length - 1)], Integer.parseInt(event));
|
||||
break;
|
||||
}
|
||||
case "32646-11.html":
|
||||
{
|
||||
st.exitQuest(true, true);
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@@ -144,46 +144,66 @@ public class Q00309_ForAGoodCause extends Quest
|
||||
case "32647-10.html":
|
||||
case "32647-12.html":
|
||||
case "32647-13.html":
|
||||
{
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "32647-05.html":
|
||||
{
|
||||
st.startQuest();
|
||||
player.sendPacket(new RadarControl(0, 2, 77325, 205773, -3432));
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "claimreward":
|
||||
{
|
||||
final QuestState q239 = player.getQuestState(Q00239_WontYouJoinUs.class.getSimpleName());
|
||||
htmltext = ((q239 != null) && q239.isCompleted()) ? "32647-11.html" : "32647-09.html";
|
||||
break;
|
||||
}
|
||||
case "100":
|
||||
case "120":
|
||||
{
|
||||
htmltext = onItemExchangeRequest(player, MOIRAI_PIECES[getRandom(MOIRAI_PIECES.length - 1)], Integer.parseInt(event));
|
||||
break;
|
||||
}
|
||||
case "192":
|
||||
case "230":
|
||||
{
|
||||
htmltext = onItemExchangeRequest(player, REC_DYNASTY_EARRINGS_70, Integer.parseInt(event));
|
||||
break;
|
||||
}
|
||||
case "256":
|
||||
case "308":
|
||||
{
|
||||
htmltext = onItemExchangeRequest(player, REC_DYNASTY_NECKLACE_70, Integer.parseInt(event));
|
||||
break;
|
||||
}
|
||||
case "128":
|
||||
case "154":
|
||||
{
|
||||
htmltext = onItemExchangeRequest(player, REC_DYNASTY_RING_70, Integer.parseInt(event));
|
||||
break;
|
||||
}
|
||||
case "206":
|
||||
case "246":
|
||||
{
|
||||
htmltext = onItemExchangeRequest(player, REC_DYNASTY_SIGIL_60, Integer.parseInt(event));
|
||||
break;
|
||||
}
|
||||
case "180":
|
||||
case "216":
|
||||
{
|
||||
htmltext = onItemExchangeRequest(player, MOIRAI_RECIPES[getRandom(MOIRAI_RECIPES.length - 1)], Integer.parseInt(event));
|
||||
break;
|
||||
}
|
||||
case "32647-14.html":
|
||||
case "32647-07.html":
|
||||
{
|
||||
st.exitQuest(true, true);
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@@ -84,16 +84,24 @@ public class Q00312_TakeAdvantageOfTheCrisis extends Quest
|
||||
case "30535-05.htm":
|
||||
case "30535-09.html":
|
||||
case "30535-10.html":
|
||||
{
|
||||
break;
|
||||
}
|
||||
case "30535-06.htm":
|
||||
{
|
||||
st.startQuest();
|
||||
break;
|
||||
}
|
||||
case "30535-11.html":
|
||||
{
|
||||
st.exitQuest(true, true);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
htmltext = null;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@@ -590,13 +590,17 @@ public final class Q00334_TheWishingPotion extends Quest
|
||||
switch (qs.getInt(I_QUEST0))
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
i0 = getRandom(2);
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
case 3:
|
||||
case 4:
|
||||
{
|
||||
i0 = getRandom(3);
|
||||
break;
|
||||
}
|
||||
}
|
||||
switch (i0)
|
||||
{
|
||||
|
||||
@@ -65,9 +65,12 @@ public class Q00338_AlligatorHunter extends Quest
|
||||
switch (event)
|
||||
{
|
||||
case "30892-03.htm":
|
||||
{
|
||||
st.startQuest();
|
||||
break;
|
||||
}
|
||||
case "30892-06.html":
|
||||
{
|
||||
if (!hasQuestItems(player, ALLIGATOR_LEATHER))
|
||||
{
|
||||
return "30892-05.html";
|
||||
@@ -77,16 +80,23 @@ public class Q00338_AlligatorHunter extends Quest
|
||||
giveAdena(player, amount, true);
|
||||
takeItems(player, ALLIGATOR_LEATHER, -1);
|
||||
break;
|
||||
}
|
||||
case "30892-10.html":
|
||||
{
|
||||
st.exitQuest(true, true);
|
||||
break;
|
||||
}
|
||||
case "30892-07.html":
|
||||
case "30892-08.html":
|
||||
case "30892-09.html":
|
||||
{
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
htmltext = null;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
@@ -116,11 +126,15 @@ public class Q00338_AlligatorHunter extends Quest
|
||||
switch (st.getState())
|
||||
{
|
||||
case State.CREATED:
|
||||
{
|
||||
htmltext = (player.getLevel() >= MIN_LEVEL) ? "30892-02.htm" : "30892-01.htm";
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
htmltext = "30892-04.html";
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user