Code review Part 5.
This commit is contained in:
@@ -71,14 +71,12 @@ public class SummonPc extends AbstractNpcAI
|
||||
final Attackable monster = (Attackable) npc;
|
||||
if (monster.getMostHated() != null)
|
||||
{
|
||||
if (((monster.getMostHated() == attacker) && (chance < 50)) || (chance < 10))
|
||||
if ((((monster.getMostHated() == attacker) && (chance < 50)) || (chance < 10)) //
|
||||
&& ((SUMMON_PC.getSkill().getMpConsume() < npc.getCurrentMp()) && (SUMMON_PC.getSkill().getHpConsume() < npc.getCurrentHp()) && !npc.isSkillDisabled(SUMMON_PC.getSkill())))
|
||||
{
|
||||
if ((SUMMON_PC.getSkill().getMpConsume() < npc.getCurrentMp()) && (SUMMON_PC.getSkill().getHpConsume() < npc.getCurrentHp()) && !npc.isSkillDisabled(SUMMON_PC.getSkill()))
|
||||
{
|
||||
npc.setTarget(attacker);
|
||||
npc.doCast(SUMMON_PC.getSkill());
|
||||
npc.getVariables().set("attacked", true);
|
||||
}
|
||||
npc.setTarget(attacker);
|
||||
npc.doCast(SUMMON_PC.getSkill());
|
||||
npc.getVariables().set("attacked", true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -46,6 +46,8 @@ import ai.AbstractNpcAI;
|
||||
*/
|
||||
public class OlyManager extends AbstractNpcAI implements IBypassHandler
|
||||
{
|
||||
private static final Logger LOGGER = Logger.getLogger(OlyManager.class.getName());
|
||||
|
||||
// NPC
|
||||
private static final int MANAGER = 31688;
|
||||
// Misc
|
||||
@@ -56,7 +58,6 @@ public class OlyManager extends AbstractNpcAI implements IBypassHandler
|
||||
"watchmatch",
|
||||
"arenachange"
|
||||
};
|
||||
private static final Logger LOGGER = Logger.getLogger(OlyManager.class.getName());
|
||||
|
||||
private OlyManager()
|
||||
{
|
||||
|
@@ -39,6 +39,7 @@ import ai.AbstractNpcAI;
|
||||
public class EilhalderVonHellmann extends AbstractNpcAI
|
||||
{
|
||||
private static final Logger LOGGER = Logger.getLogger(EilhalderVonHellmann.class.getName());
|
||||
|
||||
private static final int EILHALDER_VON_HELLMANN = 25328;
|
||||
private NpcSpawnTemplate _template;
|
||||
|
||||
|
@@ -33,7 +33,7 @@ import ai.AbstractNpcAI;
|
||||
*/
|
||||
public class NpcLocationInfo extends AbstractNpcAI
|
||||
{
|
||||
private static final List<Integer> NPC = new ArrayList<>();
|
||||
private static final List<Integer> NPC = new ArrayList<>();
|
||||
static
|
||||
{
|
||||
NPC.add(30598);
|
||||
@@ -42,7 +42,7 @@ public class NpcLocationInfo extends AbstractNpcAI
|
||||
NPC.add(30601);
|
||||
NPC.add(30602);
|
||||
}
|
||||
private static final List<Integer> NPCRADAR = new ArrayList<>();
|
||||
private static final List<Integer> NPCRADAR = new ArrayList<>();
|
||||
static
|
||||
{
|
||||
// Talking Island
|
||||
@@ -224,7 +224,9 @@ public class NpcLocationInfo extends AbstractNpcAI
|
||||
final int npcId = Integer.parseInt(event);
|
||||
if (NPCRADAR.contains(npcId))
|
||||
{
|
||||
int x = 0, y = 0, z = 0;
|
||||
int x = 0;
|
||||
int y = 0;
|
||||
int z = 0;
|
||||
final Spawn spawn = SpawnTable.getInstance().getAnySpawn(npcId);
|
||||
if (spawn != null)
|
||||
{
|
||||
@@ -243,7 +245,7 @@ public class NpcLocationInfo extends AbstractNpcAI
|
||||
public String onTalk(Npc npc, PlayerInstance player)
|
||||
{
|
||||
String htmltext = getNoQuestMsg(player);
|
||||
int npcId = npc.getId();
|
||||
final int npcId = npc.getId();
|
||||
if (NPC.contains(npcId))
|
||||
{
|
||||
htmltext = npcId + ".htm";
|
||||
@@ -257,7 +259,7 @@ public class NpcLocationInfo extends AbstractNpcAI
|
||||
addTalkId(NPC);
|
||||
}
|
||||
|
||||
public static void main(String args[])
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new NpcLocationInfo();
|
||||
}
|
||||
|
@@ -73,7 +73,7 @@ public class SellBuff implements IVoicedCommandHandler, IBypassHandler
|
||||
public boolean useBypass(String command, PlayerInstance player, Creature target)
|
||||
{
|
||||
String cmd = "";
|
||||
StringBuilder params = new StringBuilder();
|
||||
final StringBuilder params = new StringBuilder();
|
||||
final StringTokenizer st = new StringTokenizer(command, " ");
|
||||
|
||||
if (st.hasMoreTokens())
|
||||
@@ -130,7 +130,7 @@ public class SellBuff implements IVoicedCommandHandler, IBypassHandler
|
||||
}
|
||||
else
|
||||
{
|
||||
StringBuilder title = new StringBuilder();
|
||||
final StringBuilder title = new StringBuilder();
|
||||
title.append("BUFF SELL: ");
|
||||
final StringTokenizer st = new StringTokenizer(params, " ");
|
||||
while (st.hasMoreTokens())
|
||||
|
@@ -543,12 +543,12 @@ public class MerrySquashmas extends LongTimeEvent
|
||||
{
|
||||
case 13399: // Snowy Squash Seed
|
||||
{
|
||||
randomSpawn(13402, 13401, 13400, npc, true);
|
||||
randomSpawn(13402, 13401, 13400, npc);
|
||||
break;
|
||||
}
|
||||
case 13403: // Large Snowy Squash Seed
|
||||
{
|
||||
randomSpawn(13406, 13405, 13404, npc, true);
|
||||
randomSpawn(13406, 13405, 13404, npc);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -600,7 +600,7 @@ public class MerrySquashmas extends LongTimeEvent
|
||||
}
|
||||
}
|
||||
|
||||
private void randomSpawn(int low, int medium, int high, Npc npc, boolean delete)
|
||||
private void randomSpawn(int low, int medium, int high, Npc npc)
|
||||
{
|
||||
final int _random = Rnd.get(100);
|
||||
if (_random < 5)
|
||||
|
@@ -36,129 +36,129 @@ import org.l2jmobius.gameserver.model.skills.SkillCaster;
|
||||
*/
|
||||
public class RudolphsBlessing extends LongTimeEvent
|
||||
{
|
||||
private static final int SANTA_CLAUS = 13285;
|
||||
|
||||
private static final int AGATHION_SEAL_BRACELET_RUDOLPH = 21709;
|
||||
private static final int AGATHION_SEAL_BRACELET_RUDOLPH_NPC = 1598;
|
||||
private static final int ICE_CANDY_PIECE = 21915;
|
||||
private static final int SANTA_CLAUS_TREASURE_BOX = 21873;
|
||||
|
||||
private static final int RUDOLPH_PRICE = 2019; // Calendar.getInstance().get(Calendar.YEAR) can be used but need to replace htmls.
|
||||
|
||||
private static final SkillHolder RUDOLPH_TRYUCK = new SkillHolder(23181, 1);
|
||||
private static final ItemHolder ITEM_REQUIREMENT = new ItemHolder(21872, 2);
|
||||
|
||||
public RudolphsBlessing()
|
||||
{
|
||||
addStartNpc(SANTA_CLAUS);
|
||||
addFirstTalkId(SANTA_CLAUS);
|
||||
addTalkId(SANTA_CLAUS);
|
||||
Containers.Global().addListener(new ConsumerEventListener(Containers.Global(), EventType.ON_PLAYER_SUMMON_AGATHION, (OnPlayerSummonAgathion event) -> OnPlayerSummonAgathion(event), this));
|
||||
Containers.Global().addListener(new ConsumerEventListener(Containers.Global(), EventType.ON_PLAYER_UNSUMMON_AGATHION, (OnPlayerUnsummonAgathion event) -> OnPlayerUnsummonAgathion(event), this));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||
{
|
||||
if (event.equals("rudolph_eat"))
|
||||
{
|
||||
if ((player != null) && player.isOnline())
|
||||
{
|
||||
if (takeItems(player, ITEM_REQUIREMENT.getId(), ITEM_REQUIREMENT.getCount()))
|
||||
{
|
||||
SkillCaster.triggerCast(player, player, RUDOLPH_TRYUCK.getSkill());
|
||||
Skill RudolphsBlessing = SkillData.getInstance().getSkill(23297, 1);
|
||||
RudolphsBlessing.applyEffects(player, player);
|
||||
}
|
||||
startQuestTimer("rudolph_eat", 10 * 60 * 1000, null, player);
|
||||
}
|
||||
}
|
||||
if (player == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
String htmltext = event;
|
||||
switch (event)
|
||||
{
|
||||
case "rudolph":
|
||||
{
|
||||
if (hasQuestItems(player, AGATHION_SEAL_BRACELET_RUDOLPH))
|
||||
{
|
||||
htmltext = "13285-05.htm";
|
||||
}
|
||||
else if (player.getAdena() < RUDOLPH_PRICE)
|
||||
{
|
||||
htmltext = "13285-06.htm";
|
||||
}
|
||||
else
|
||||
{
|
||||
takeItems(player, Inventory.ADENA_ID, RUDOLPH_PRICE);
|
||||
giveItems(player, AGATHION_SEAL_BRACELET_RUDOLPH, 1);
|
||||
htmltext = "13285-04.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "event_info":
|
||||
{
|
||||
htmltext = "13285-02.htm";
|
||||
break;
|
||||
}
|
||||
case "reward":
|
||||
{
|
||||
if (getQuestItemsCount(player, ICE_CANDY_PIECE) >= 50)
|
||||
{
|
||||
takeItems(player, ICE_CANDY_PIECE, 50);
|
||||
giveItems(player, SANTA_CLAUS_TREASURE_BOX, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = "13285-03.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
private void OnPlayerSummonAgathion(OnPlayerSummonAgathion event)
|
||||
{
|
||||
if (event.getAgathionId() != AGATHION_SEAL_BRACELET_RUDOLPH_NPC)
|
||||
{
|
||||
return;
|
||||
}
|
||||
final PlayerInstance player = event.getPlayer();
|
||||
if (player == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
startQuestTimer("rudolph_eat", 10 * 60 * 1000, null, player);
|
||||
}
|
||||
|
||||
private void OnPlayerUnsummonAgathion(OnPlayerUnsummonAgathion event)
|
||||
{
|
||||
if (event.getAgathionId() != AGATHION_SEAL_BRACELET_RUDOLPH_NPC)
|
||||
{
|
||||
return;
|
||||
}
|
||||
final PlayerInstance player = event.getPlayer();
|
||||
if (player == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
cancelQuestTimer("rudolph_eat", null, player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onFirstTalk(Npc npc, PlayerInstance player)
|
||||
{
|
||||
return "13285.htm";
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new RudolphsBlessing();
|
||||
}
|
||||
private static final int SANTA_CLAUS = 13285;
|
||||
|
||||
private static final int AGATHION_SEAL_BRACELET_RUDOLPH = 21709;
|
||||
private static final int AGATHION_SEAL_BRACELET_RUDOLPH_NPC = 1598;
|
||||
private static final int ICE_CANDY_PIECE = 21915;
|
||||
private static final int SANTA_CLAUS_TREASURE_BOX = 21873;
|
||||
|
||||
private static final int RUDOLPH_PRICE = 2019; // Calendar.getInstance().get(Calendar.YEAR) can be used but need to replace htmls.
|
||||
|
||||
private static final SkillHolder RUDOLPH_TRYUCK = new SkillHolder(23181, 1);
|
||||
private static final ItemHolder ITEM_REQUIREMENT = new ItemHolder(21872, 2);
|
||||
|
||||
public RudolphsBlessing()
|
||||
{
|
||||
addStartNpc(SANTA_CLAUS);
|
||||
addFirstTalkId(SANTA_CLAUS);
|
||||
addTalkId(SANTA_CLAUS);
|
||||
Containers.Global().addListener(new ConsumerEventListener(Containers.Global(), EventType.ON_PLAYER_SUMMON_AGATHION, (OnPlayerSummonAgathion event) -> OnPlayerSummonAgathion(event), this));
|
||||
Containers.Global().addListener(new ConsumerEventListener(Containers.Global(), EventType.ON_PLAYER_UNSUMMON_AGATHION, (OnPlayerUnsummonAgathion event) -> OnPlayerUnsummonAgathion(event), this));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||
{
|
||||
if (event.equals("rudolph_eat"))
|
||||
{
|
||||
if ((player != null) && player.isOnline())
|
||||
{
|
||||
if (takeItems(player, ITEM_REQUIREMENT.getId(), ITEM_REQUIREMENT.getCount()))
|
||||
{
|
||||
SkillCaster.triggerCast(player, player, RUDOLPH_TRYUCK.getSkill());
|
||||
final Skill RudolphsBlessing = SkillData.getInstance().getSkill(23297, 1);
|
||||
RudolphsBlessing.applyEffects(player, player);
|
||||
}
|
||||
startQuestTimer("rudolph_eat", 10 * 60 * 1000, null, player);
|
||||
}
|
||||
}
|
||||
if (player == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
String htmltext = event;
|
||||
switch (event)
|
||||
{
|
||||
case "rudolph":
|
||||
{
|
||||
if (hasQuestItems(player, AGATHION_SEAL_BRACELET_RUDOLPH))
|
||||
{
|
||||
htmltext = "13285-05.htm";
|
||||
}
|
||||
else if (player.getAdena() < RUDOLPH_PRICE)
|
||||
{
|
||||
htmltext = "13285-06.htm";
|
||||
}
|
||||
else
|
||||
{
|
||||
takeItems(player, Inventory.ADENA_ID, RUDOLPH_PRICE);
|
||||
giveItems(player, AGATHION_SEAL_BRACELET_RUDOLPH, 1);
|
||||
htmltext = "13285-04.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "event_info":
|
||||
{
|
||||
htmltext = "13285-02.htm";
|
||||
break;
|
||||
}
|
||||
case "reward":
|
||||
{
|
||||
if (getQuestItemsCount(player, ICE_CANDY_PIECE) >= 50)
|
||||
{
|
||||
takeItems(player, ICE_CANDY_PIECE, 50);
|
||||
giveItems(player, SANTA_CLAUS_TREASURE_BOX, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = "13285-03.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
private void OnPlayerSummonAgathion(OnPlayerSummonAgathion event)
|
||||
{
|
||||
if (event.getAgathionId() != AGATHION_SEAL_BRACELET_RUDOLPH_NPC)
|
||||
{
|
||||
return;
|
||||
}
|
||||
final PlayerInstance player = event.getPlayer();
|
||||
if (player == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
startQuestTimer("rudolph_eat", 10 * 60 * 1000, null, player);
|
||||
}
|
||||
|
||||
private void OnPlayerUnsummonAgathion(OnPlayerUnsummonAgathion event)
|
||||
{
|
||||
if (event.getAgathionId() != AGATHION_SEAL_BRACELET_RUDOLPH_NPC)
|
||||
{
|
||||
return;
|
||||
}
|
||||
final PlayerInstance player = event.getPlayer();
|
||||
if (player == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
cancelQuestTimer("rudolph_eat", null, player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onFirstTalk(Npc npc, PlayerInstance player)
|
||||
{
|
||||
return "13285.htm";
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new RudolphsBlessing();
|
||||
}
|
||||
}
|
@@ -542,12 +542,12 @@ public class SquashEvent extends LongTimeEvent
|
||||
{
|
||||
case 12774: // Young Squash
|
||||
{
|
||||
randomSpawn(13016, 12775, 12776, npc, true);
|
||||
randomSpawn(13016, 12775, 12776, npc);
|
||||
break;
|
||||
}
|
||||
case 12777: // Large Young Squash
|
||||
{
|
||||
randomSpawn(13017, 12778, 12779, npc, true);
|
||||
randomSpawn(13017, 12778, 12779, npc);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -599,7 +599,7 @@ public class SquashEvent extends LongTimeEvent
|
||||
}
|
||||
}
|
||||
|
||||
private void randomSpawn(int low, int medium, int high, Npc npc, boolean delete)
|
||||
private void randomSpawn(int low, int medium, int high, Npc npc)
|
||||
{
|
||||
final int _random = Rnd.get(100);
|
||||
if (_random < 5)
|
||||
|
@@ -540,12 +540,12 @@ public class WatermelonNinja extends LongTimeEvent
|
||||
{
|
||||
case 13271: // Watermelon Seed
|
||||
{
|
||||
randomSpawn(13274, 13273, 13272, npc, true);
|
||||
randomSpawn(13274, 13273, 13272, npc);
|
||||
break;
|
||||
}
|
||||
case 13275: // Honey Watermelon Seed
|
||||
{
|
||||
randomSpawn(13278, 13277, 13276, npc, true);
|
||||
randomSpawn(13278, 13277, 13276, npc);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -575,20 +575,10 @@ public class WatermelonNinja extends LongTimeEvent
|
||||
final int chance = Rnd.get(100);
|
||||
for (int[] drop : DROPLIST)
|
||||
{
|
||||
if (npcId == drop[0])
|
||||
if ((npcId == drop[0]) && (chance < drop[2]))
|
||||
{
|
||||
if (chance < drop[2])
|
||||
{
|
||||
if (drop[1] > 6000)
|
||||
{
|
||||
((MonsterInstance) mob).dropItem(player, drop[1], 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
((MonsterInstance) mob).dropItem(player, drop[1], 1);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
((MonsterInstance) mob).dropItem(player, drop[1], 1);
|
||||
continue;
|
||||
}
|
||||
if (npcId < drop[0])
|
||||
{
|
||||
@@ -597,18 +587,18 @@ public class WatermelonNinja extends LongTimeEvent
|
||||
}
|
||||
}
|
||||
|
||||
private void randomSpawn(int low, int medium, int high, Npc npc, boolean delete)
|
||||
private void randomSpawn(int low, int medium, int high, Npc npc)
|
||||
{
|
||||
final int _random = Rnd.get(100);
|
||||
if (_random < 5)
|
||||
final int random = Rnd.get(100);
|
||||
if (random < 5)
|
||||
{
|
||||
spawnNext(low, npc);
|
||||
}
|
||||
if (_random < 10)
|
||||
if (random < 10)
|
||||
{
|
||||
spawnNext(medium, npc);
|
||||
}
|
||||
else if (_random < 30)
|
||||
else if (random < 30)
|
||||
{
|
||||
spawnNext(high, npc);
|
||||
}
|
||||
|
@@ -142,7 +142,7 @@ public class EffectMasterHandler
|
||||
EffectHandler.getInstance().registerHandler("FatalBlowRate", FatalBlowRate::new);
|
||||
EffectHandler.getInstance().registerHandler("Fear", Fear::new);
|
||||
EffectHandler.getInstance().registerHandler("Feed", Feed::new);
|
||||
EffectHandler.getInstance().registerHandler("FishingExpSpBonus", FishingExpSpBonus::new);
|
||||
EffectHandler.getInstance().registerHandler("FishingExpSpBonus", FishingExpSpBonus::new);
|
||||
EffectHandler.getInstance().registerHandler("Flag", Flag::new);
|
||||
EffectHandler.getInstance().registerHandler("FlipBlock", FlipBlock::new);
|
||||
EffectHandler.getInstance().registerHandler("FocusEnergy", FocusEnergy::new);
|
||||
|
@@ -734,7 +734,6 @@ public class MasterHandler
|
||||
catch (Exception e)
|
||||
{
|
||||
LOGGER.log(Level.WARNING, "Failed loading handler: " + c.getSimpleName(), e);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -176,9 +176,9 @@ public class AdminBuffs implements IAdminCommandHandler
|
||||
{
|
||||
try
|
||||
{
|
||||
StringTokenizer st = new StringTokenizer(command, " ");
|
||||
final StringTokenizer st = new StringTokenizer(command, " ");
|
||||
st.nextToken();
|
||||
int objectId = Integer.parseInt(st.nextToken());
|
||||
final int objectId = Integer.parseInt(st.nextToken());
|
||||
viewBlockedEffects(activeChar, objectId);
|
||||
return true;
|
||||
}
|
||||
@@ -362,6 +362,7 @@ public class AdminBuffs implements IAdminCommandHandler
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
// Checked bellow.
|
||||
}
|
||||
|
||||
if ((target != null) && (skillId > 0))
|
||||
@@ -389,6 +390,7 @@ public class AdminBuffs implements IAdminCommandHandler
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
// Checked bellow.
|
||||
}
|
||||
|
||||
if (target != null)
|
||||
|
@@ -120,7 +120,7 @@ public class AdminInstanceZone implements IAdminCommandHandler
|
||||
{
|
||||
int hours = 0;
|
||||
int minutes = 0;
|
||||
int id = entry.getKey();
|
||||
final int id = entry.getKey();
|
||||
final long remainingTime = (entry.getValue() - System.currentTimeMillis()) / 1000;
|
||||
if (remainingTime > 0)
|
||||
{
|
||||
|
@@ -30,8 +30,8 @@ import org.l2jmobius.gameserver.network.SystemMessageId;
|
||||
import org.l2jmobius.gameserver.util.BuilderUtil;
|
||||
|
||||
/**
|
||||
* This class handles following admin commands: - kill = kills target Creature - kill_monster = kills target non-player - kill <radius> = If radius is specified, then ALL players only in that radius will be killed. - kill_monster <radius> = If radius is specified, then ALL non-players only in
|
||||
* that radius will be killed.
|
||||
* This class handles following admin commands: - kill = kills target Creature - kill_monster = kills target non-player - kill <radius> = If radius is specified, then ALL players only in that radius will be killed. - kill_monster <radius> = If radius is specified, then ALL non-players only in that
|
||||
* radius will be killed.
|
||||
* @version $Revision: 1.2.4.5 $ $Date: 2007/07/31 10:06:06 $
|
||||
*/
|
||||
public class AdminKill implements IAdminCommandHandler
|
||||
|
@@ -316,7 +316,7 @@ public class AdminQuest implements IAdminCommandHandler
|
||||
{
|
||||
continue;
|
||||
}
|
||||
else if (n.isDirectory())
|
||||
if (n.isDirectory())
|
||||
{
|
||||
sb.append("<a action=\"bypass -h admin_script_dir " + c + "\">" + c + "</a><br1>");
|
||||
}
|
||||
@@ -348,7 +348,7 @@ public class AdminQuest implements IAdminCommandHandler
|
||||
{
|
||||
continue;
|
||||
}
|
||||
else if (n.isDirectory())
|
||||
if (n.isDirectory())
|
||||
{
|
||||
sb.append("<a action=\"bypass -h admin_script_dir " + currentPath + "/" + c + "\">" + (questReducedNames ? getQuestName(c) : c) + "</a><br1>");
|
||||
}
|
||||
|
@@ -69,7 +69,7 @@ public class AdminShop implements IAdminCommandHandler
|
||||
{
|
||||
try
|
||||
{
|
||||
int listId = Integer.parseInt(command.substring(16).trim());
|
||||
final int listId = Integer.parseInt(command.substring(16).trim());
|
||||
MultisellData.getInstance().separateAndSend(listId, activeChar, null, false);
|
||||
}
|
||||
catch (NumberFormatException | IndexOutOfBoundsException e)
|
||||
@@ -81,7 +81,7 @@ public class AdminShop implements IAdminCommandHandler
|
||||
{
|
||||
try
|
||||
{
|
||||
int listId = Integer.parseInt(command.substring(20).trim());
|
||||
final int listId = Integer.parseInt(command.substring(20).trim());
|
||||
MultisellData.getInstance().separateAndSend(listId, activeChar, null, true);
|
||||
}
|
||||
catch (NumberFormatException | IndexOutOfBoundsException e)
|
||||
|
@@ -101,6 +101,7 @@ public class AdminSkill implements IAdminCommandHandler
|
||||
}
|
||||
catch (StringIndexOutOfBoundsException e)
|
||||
{
|
||||
// Not important.
|
||||
}
|
||||
}
|
||||
else if (command.startsWith("admin_skill_list"))
|
||||
@@ -116,6 +117,7 @@ public class AdminSkill implements IAdminCommandHandler
|
||||
}
|
||||
catch (StringIndexOutOfBoundsException e)
|
||||
{
|
||||
// Not important.
|
||||
}
|
||||
}
|
||||
else if (command.startsWith("admin_add_skill"))
|
||||
|
@@ -84,7 +84,7 @@ public class FindPvP implements IBypassHandler
|
||||
// Check if the player's clan is already outnumbering the PvP
|
||||
if (player.getClan() != null)
|
||||
{
|
||||
Map<Integer, Integer> clanNumbers = new HashMap<>();
|
||||
final Map<Integer, Integer> clanNumbers = new HashMap<>();
|
||||
int allyId = player.getAllyId();
|
||||
if (allyId == 0)
|
||||
{
|
||||
|
@@ -33,7 +33,7 @@ import org.l2jmobius.gameserver.network.serverpackets.ExItemAuctionInfoPacket;
|
||||
|
||||
public class ItemAuctionLink implements IBypassHandler
|
||||
{
|
||||
private static final SimpleDateFormat fmt = new SimpleDateFormat("HH:mm:ss dd.MM.yyyy");
|
||||
private static final SimpleDateFormat SDF = new SimpleDateFormat("HH:mm:ss dd.MM.yyyy");
|
||||
|
||||
private static final String[] COMMANDS =
|
||||
{
|
||||
@@ -91,7 +91,7 @@ public class ItemAuctionLink implements IBypassHandler
|
||||
|
||||
if (nextAuction != null)
|
||||
{
|
||||
player.sendMessage("The next auction will begin on the " + fmt.format(new Date(nextAuction.getStartingTime())) + ".");
|
||||
player.sendMessage("The next auction will begin on the " + SDF.format(new Date(nextAuction.getStartingTime())) + ".");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
@@ -408,7 +408,7 @@ public class NpcViewMod implements IBypassHandler
|
||||
{
|
||||
final StringBuilder sb = new StringBuilder();
|
||||
|
||||
int height = 64;
|
||||
final int height = 64;
|
||||
final DropHolder dropItem = dropList.get(i);
|
||||
final Item item = ItemTable.getInstance().getTemplate(dropItem.getItemId());
|
||||
|
||||
|
@@ -38,22 +38,19 @@ public class ChatPartyRoomAll implements IChatHandler
|
||||
@Override
|
||||
public void handleChat(ChatType type, PlayerInstance activeChar, String target, String text)
|
||||
{
|
||||
if (activeChar.isInParty())
|
||||
if (activeChar.isInParty() && activeChar.getParty().isInCommandChannel() && activeChar.getParty().isLeader(activeChar))
|
||||
{
|
||||
if (activeChar.getParty().isInCommandChannel() && activeChar.getParty().isLeader(activeChar))
|
||||
if (activeChar.isChatBanned() && Config.BAN_CHAT_CHANNELS.contains(type))
|
||||
{
|
||||
if (activeChar.isChatBanned() && Config.BAN_CHAT_CHANNELS.contains(type))
|
||||
{
|
||||
activeChar.sendPacket(SystemMessageId.CHATTING_IS_CURRENTLY_PROHIBITED_IF_YOU_TRY_TO_CHAT_BEFORE_THE_PROHIBITION_IS_REMOVED_THE_PROHIBITION_TIME_WILL_INCREASE_EVEN_FURTHER);
|
||||
return;
|
||||
}
|
||||
if (Config.JAIL_DISABLE_CHAT && activeChar.isJailed() && !activeChar.canOverrideCond(PlayerCondOverride.CHAT_CONDITIONS))
|
||||
{
|
||||
activeChar.sendPacket(SystemMessageId.CHATTING_IS_CURRENTLY_PROHIBITED);
|
||||
return;
|
||||
}
|
||||
activeChar.getParty().getCommandChannel().broadcastCreatureSay(new CreatureSay(activeChar.getObjectId(), type, activeChar.getName(), text), activeChar);
|
||||
activeChar.sendPacket(SystemMessageId.CHATTING_IS_CURRENTLY_PROHIBITED_IF_YOU_TRY_TO_CHAT_BEFORE_THE_PROHIBITION_IS_REMOVED_THE_PROHIBITION_TIME_WILL_INCREASE_EVEN_FURTHER);
|
||||
return;
|
||||
}
|
||||
if (Config.JAIL_DISABLE_CHAT && activeChar.isJailed() && !activeChar.canOverrideCond(PlayerCondOverride.CHAT_CONDITIONS))
|
||||
{
|
||||
activeChar.sendPacket(SystemMessageId.CHATTING_IS_CURRENTLY_PROHIBITED);
|
||||
return;
|
||||
}
|
||||
activeChar.getParty().getCommandChannel().broadcastCreatureSay(new CreatureSay(activeChar.getObjectId(), type, activeChar.getName(), text), activeChar);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -38,22 +38,19 @@ public class ChatPartyRoomCommander implements IChatHandler
|
||||
@Override
|
||||
public void handleChat(ChatType type, PlayerInstance activeChar, String target, String text)
|
||||
{
|
||||
if (activeChar.isInParty())
|
||||
if (activeChar.isInParty() && activeChar.getParty().isInCommandChannel() && activeChar.getParty().getCommandChannel().getLeader().equals(activeChar))
|
||||
{
|
||||
if (activeChar.getParty().isInCommandChannel() && activeChar.getParty().getCommandChannel().getLeader().equals(activeChar))
|
||||
if (activeChar.isChatBanned() && Config.BAN_CHAT_CHANNELS.contains(type))
|
||||
{
|
||||
if (activeChar.isChatBanned() && Config.BAN_CHAT_CHANNELS.contains(type))
|
||||
{
|
||||
activeChar.sendPacket(SystemMessageId.CHATTING_IS_CURRENTLY_PROHIBITED_IF_YOU_TRY_TO_CHAT_BEFORE_THE_PROHIBITION_IS_REMOVED_THE_PROHIBITION_TIME_WILL_INCREASE_EVEN_FURTHER);
|
||||
return;
|
||||
}
|
||||
if (Config.JAIL_DISABLE_CHAT && activeChar.isJailed() && !activeChar.canOverrideCond(PlayerCondOverride.CHAT_CONDITIONS))
|
||||
{
|
||||
activeChar.sendPacket(SystemMessageId.CHATTING_IS_CURRENTLY_PROHIBITED);
|
||||
return;
|
||||
}
|
||||
activeChar.getParty().getCommandChannel().broadcastCreatureSay(new CreatureSay(activeChar.getObjectId(), type, activeChar.getName(), text), activeChar);
|
||||
activeChar.sendPacket(SystemMessageId.CHATTING_IS_CURRENTLY_PROHIBITED_IF_YOU_TRY_TO_CHAT_BEFORE_THE_PROHIBITION_IS_REMOVED_THE_PROHIBITION_TIME_WILL_INCREASE_EVEN_FURTHER);
|
||||
return;
|
||||
}
|
||||
if (Config.JAIL_DISABLE_CHAT && activeChar.isJailed() && !activeChar.canOverrideCond(PlayerCondOverride.CHAT_CONDITIONS))
|
||||
{
|
||||
activeChar.sendPacket(SystemMessageId.CHATTING_IS_CURRENTLY_PROHIBITED);
|
||||
return;
|
||||
}
|
||||
activeChar.getParty().getCommandChannel().broadcastCreatureSay(new CreatureSay(activeChar.getObjectId(), type, activeChar.getName(), text), activeChar);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -143,38 +143,38 @@ public class DropSearchBoard implements IParseBoardHandler
|
||||
public boolean parseCommunityBoardCommand(String command, PlayerInstance player)
|
||||
{
|
||||
final String navigation = HtmCache.getInstance().getHtm(player, NAVIGATION_PATH);
|
||||
String[] params = command.split(" ");
|
||||
final String[] params = command.split(" ");
|
||||
String html = HtmCache.getInstance().getHtm(player, "data/html/CommunityBoard/Custom/dropsearch/main.html");
|
||||
switch (params[0])
|
||||
{
|
||||
case "_bbs_search_item":
|
||||
{
|
||||
String itemName = buildItemName(params);
|
||||
String result = buildItemSearchResult(itemName);
|
||||
final String itemName = buildItemName(params);
|
||||
final String result = buildItemSearchResult(itemName);
|
||||
html = html.replace("%searchResult%", result);
|
||||
break;
|
||||
}
|
||||
case "_bbs_search_drop":
|
||||
{
|
||||
final DecimalFormat chanceFormat = new DecimalFormat("0.00##");
|
||||
int itemId = Integer.parseInt(params[1]);
|
||||
final int itemId = Integer.parseInt(params[1]);
|
||||
int page = Integer.parseInt(params[2]);
|
||||
List<CBDropHolder> list = DROP_INDEX_CACHE.get(itemId);
|
||||
final List<CBDropHolder> list = DROP_INDEX_CACHE.get(itemId);
|
||||
int pages = list.size() / 14;
|
||||
if (pages == 0)
|
||||
{
|
||||
pages++;
|
||||
}
|
||||
|
||||
int start = (page - 1) * 14;
|
||||
int end = Math.min(list.size() - 1, start + 14);
|
||||
StringBuilder builder = new StringBuilder();
|
||||
final int start = (page - 1) * 14;
|
||||
final int end = Math.min(list.size() - 1, start + 14);
|
||||
final StringBuilder builder = new StringBuilder();
|
||||
final double dropAmountEffectBonus = player.getStat().getValue(Stats.BONUS_DROP_AMOUNT, 1);
|
||||
final double dropRateEffectBonus = player.getStat().getValue(Stats.BONUS_DROP_RATE, 1);
|
||||
final double spoilRateEffectBonus = player.getStat().getValue(Stats.BONUS_SPOIL_RATE, 1);
|
||||
for (int index = start; index <= end; index++)
|
||||
{
|
||||
CBDropHolder cbDropHolder = list.get(index);
|
||||
final CBDropHolder cbDropHolder = list.get(index);
|
||||
|
||||
// real time server rate calculations
|
||||
double rateChance = 1;
|
||||
@@ -299,15 +299,15 @@ public class DropSearchBoard implements IParseBoardHandler
|
||||
}
|
||||
case "_bbs_npc_trace":
|
||||
{
|
||||
int npcId = Integer.parseInt(params[1]);
|
||||
List<NpcSpawnTemplate> spawnList = SpawnsData.getInstance().getNpcSpawns(npc -> npc.getId() == npcId);
|
||||
final int npcId = Integer.parseInt(params[1]);
|
||||
final List<NpcSpawnTemplate> spawnList = SpawnsData.getInstance().getNpcSpawns(npc -> npc.getId() == npcId);
|
||||
if (spawnList.isEmpty())
|
||||
{
|
||||
player.sendMessage("Cannot find any spawn. Maybe dropped by a boss or instance monster.");
|
||||
}
|
||||
else
|
||||
{
|
||||
NpcSpawnTemplate spawn = spawnList.get(Rnd.get(spawnList.size()));
|
||||
final NpcSpawnTemplate spawn = spawnList.get(Rnd.get(spawnList.size()));
|
||||
player.getRadar().addMarker(spawn.getSpawnLocation().getX(), spawn.getSpawnLocation().getY(), spawn.getSpawnLocation().getZ());
|
||||
}
|
||||
break;
|
||||
@@ -330,8 +330,8 @@ public class DropSearchBoard implements IParseBoardHandler
|
||||
private String buildItemSearchResult(String itemName)
|
||||
{
|
||||
int limit = 0;
|
||||
Set<Integer> existInDropData = DROP_INDEX_CACHE.keySet();
|
||||
List<Item> items = new ArrayList<>();
|
||||
final Set<Integer> existInDropData = DROP_INDEX_CACHE.keySet();
|
||||
final List<Item> items = new ArrayList<>();
|
||||
for (Item item : ItemTable.getInstance().getAllItems())
|
||||
{
|
||||
if (item == null)
|
||||
@@ -363,7 +363,7 @@ public class DropSearchBoard implements IParseBoardHandler
|
||||
|
||||
int line = 0;
|
||||
|
||||
StringBuilder builder = new StringBuilder(items.size() * 28);
|
||||
final StringBuilder builder = new StringBuilder(items.size() * 28);
|
||||
int i = 0;
|
||||
for (Item item : items)
|
||||
{
|
||||
@@ -416,7 +416,7 @@ public class DropSearchBoard implements IParseBoardHandler
|
||||
*/
|
||||
private String buildItemName(String[] params)
|
||||
{
|
||||
StringJoiner joiner = new StringJoiner(" ");
|
||||
final StringJoiner joiner = new StringJoiner(" ");
|
||||
for (int i = 1; i < params.length; i++)
|
||||
{
|
||||
joiner.add(params[i]);
|
||||
|
@@ -99,7 +99,7 @@ public class HomeBoard implements IParseBoardHandler
|
||||
@Override
|
||||
public String[] getCommunityBoardCommands()
|
||||
{
|
||||
List<String> commands = new ArrayList<>();
|
||||
final List<String> commands = new ArrayList<>();
|
||||
commands.addAll(Arrays.asList(COMMANDS));
|
||||
commands.addAll(Arrays.asList(CUSTOM_COMMANDS));
|
||||
return commands.stream().filter(Objects::nonNull).toArray(String[]::new);
|
||||
@@ -201,7 +201,7 @@ public class HomeBoard implements IParseBoardHandler
|
||||
{
|
||||
player.destroyItemByItemId("CB_Buff", Config.COMMUNITYBOARD_CURRENCY, Config.COMMUNITYBOARD_BUFF_PRICE * buffCount, player, true);
|
||||
final PetInstance pet = player.getPet();
|
||||
List<Creature> targets = new ArrayList<>(4);
|
||||
final List<Creature> targets = new ArrayList<>(4);
|
||||
targets.add(player);
|
||||
if (pet != null)
|
||||
{
|
||||
|
@@ -36,7 +36,7 @@ public class DisableSkill extends AbstractEffect
|
||||
|
||||
public DisableSkill(StatsSet params)
|
||||
{
|
||||
String disable = params.getString("disable");
|
||||
final String disable = params.getString("disable");
|
||||
if ((disable != null) && !disable.isEmpty())
|
||||
{
|
||||
disableSkills = new HashSet<>();
|
||||
|
@@ -38,7 +38,7 @@ public class DispelBySlotMyself extends AbstractEffect
|
||||
|
||||
public DispelBySlotMyself(StatsSet params)
|
||||
{
|
||||
String dispel = params.getString("dispel");
|
||||
final String dispel = params.getString("dispel");
|
||||
if ((dispel != null) && !dispel.isEmpty())
|
||||
{
|
||||
_dispelAbnormals = new HashSet<>();
|
||||
|
@@ -51,7 +51,7 @@ public class FatalBlow extends AbstractEffect
|
||||
_criticalChance = params.getDouble("criticalChance", 0);
|
||||
_overHit = params.getBoolean("overHit", false);
|
||||
|
||||
String abnormals = params.getString("abnormalType", null);
|
||||
final String abnormals = params.getString("abnormalType", null);
|
||||
if ((abnormals != null) && !abnormals.isEmpty())
|
||||
{
|
||||
_abnormals = new HashSet<>();
|
||||
|
@@ -87,7 +87,7 @@ public class RebalanceHP extends AbstractEffect
|
||||
}
|
||||
}
|
||||
|
||||
double percentHP = currentHPs / fullHP;
|
||||
final double percentHP = currentHPs / fullHP;
|
||||
for (PlayerInstance member : party.getMembers())
|
||||
{
|
||||
if (!member.isDead() && Util.checkIfInRange(skill.getAffectRange(), effector, member, true))
|
||||
|
@@ -70,7 +70,7 @@ public class RebalanceHPSummon extends AbstractEffect
|
||||
fullHP += effector.getMaxHp();
|
||||
currentHPs += effector.getCurrentHp();
|
||||
|
||||
double percentHP = currentHPs / fullHP;
|
||||
final double percentHP = currentHPs / fullHP;
|
||||
for (Summon summon : effector.getServitors().values())
|
||||
{
|
||||
if (!summon.isDead() && Util.checkIfInRange(skill.getAffectRange(), effector, summon, true))
|
||||
|
@@ -123,7 +123,7 @@ public class RestorationRandom extends AbstractEffect
|
||||
}
|
||||
}
|
||||
|
||||
long itemCount = (long) (createdItem.getCount() * Config.RATE_EXTRACTABLE);
|
||||
final long itemCount = (long) (createdItem.getCount() * Config.RATE_EXTRACTABLE);
|
||||
final ItemInstance newItem = player.addItem("Extract", createdItem.getId(), itemCount, effector, false);
|
||||
|
||||
if (createdItem.getMaxEnchant() > 0)
|
||||
|
@@ -88,17 +88,14 @@ public class Enemy implements ITargetTypeHandler
|
||||
if (target.isAutoAttackable(creature) || forceUse)
|
||||
{
|
||||
// Check for cast range if character cannot move. TODO: char will start follow until within castrange, but if his moving is blocked by geodata, this msg will be sent.
|
||||
if (dontMove)
|
||||
if (dontMove && (creature.calculateDistance2D(target) > skill.getCastRange()))
|
||||
{
|
||||
if (creature.calculateDistance2D(target) > skill.getCastRange())
|
||||
if (sendMessage)
|
||||
{
|
||||
if (sendMessage)
|
||||
{
|
||||
creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED);
|
||||
}
|
||||
|
||||
return null;
|
||||
creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
// Geodata check when character is within range.
|
||||
@@ -124,17 +121,14 @@ public class Enemy implements ITargetTypeHandler
|
||||
}
|
||||
|
||||
// Is this check still actual?
|
||||
if (forceUse && (target.getActingPlayer() != null) && (creature.getActingPlayer() != null))
|
||||
if (forceUse && (target.getActingPlayer() != null) && (creature.getActingPlayer() != null) && creature.getActingPlayer().isSiegeFriend(target))
|
||||
{
|
||||
if (creature.getActingPlayer().isSiegeFriend(target))
|
||||
if (sendMessage)
|
||||
{
|
||||
if (sendMessage)
|
||||
{
|
||||
creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE);
|
||||
}
|
||||
|
||||
return null;
|
||||
creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
return target;
|
||||
|
@@ -60,17 +60,14 @@ public class EnemyNot implements ITargetTypeHandler
|
||||
if (!target.isAutoAttackable(creature))
|
||||
{
|
||||
// Check for cast range if character cannot move. TODO: char will start follow until within castrange, but if his moving is blocked by geodata, this msg will be sent.
|
||||
if (dontMove)
|
||||
if (dontMove && (creature.calculateDistance2D(target) > skill.getCastRange()))
|
||||
{
|
||||
if (creature.calculateDistance2D(target) > skill.getCastRange())
|
||||
if (sendMessage)
|
||||
{
|
||||
if (sendMessage)
|
||||
{
|
||||
creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED);
|
||||
}
|
||||
|
||||
return null;
|
||||
creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
if ((skill.isFlyType()) && !GeoEngine.getInstance().canMoveToTarget(creature.getX(), creature.getY(), creature.getZ(), target.getX(), target.getY(), target.getZ(), creature.getInstanceWorld()))
|
||||
|
@@ -88,17 +88,14 @@ public class EnemyOnly implements ITargetTypeHandler
|
||||
if (target.isAutoAttackable(creature))
|
||||
{
|
||||
// Check for cast range if character cannot move. TODO: char will start follow until within castrange, but if his moving is blocked by geodata, this msg will be sent.
|
||||
if (dontMove)
|
||||
if (dontMove && (creature.calculateDistance2D(target) > skill.getCastRange()))
|
||||
{
|
||||
if (creature.calculateDistance2D(target) > skill.getCastRange())
|
||||
if (sendMessage)
|
||||
{
|
||||
if (sendMessage)
|
||||
{
|
||||
creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED);
|
||||
}
|
||||
|
||||
return null;
|
||||
creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
// Geodata check when character is within range.
|
||||
@@ -124,17 +121,14 @@ public class EnemyOnly implements ITargetTypeHandler
|
||||
}
|
||||
|
||||
// Is this check still actual?
|
||||
if ((target.getActingPlayer() != null) && (creature.getActingPlayer() != null))
|
||||
if ((target.getActingPlayer() != null) && (creature.getActingPlayer() != null) && creature.getActingPlayer().isSiegeFriend(target))
|
||||
{
|
||||
if (creature.getActingPlayer().isSiegeFriend(target))
|
||||
if (sendMessage)
|
||||
{
|
||||
if (sendMessage)
|
||||
{
|
||||
creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE);
|
||||
}
|
||||
|
||||
return null;
|
||||
creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
return target;
|
||||
|
@@ -63,16 +63,13 @@ public class NpcBody implements ITargetTypeHandler
|
||||
if (target.isDead())
|
||||
{
|
||||
// Check for cast range if character cannot move. TODO: char will start follow until within castrange, but if his moving is blocked by geodata, this msg will be sent.
|
||||
if (dontMove)
|
||||
if (dontMove && (creature.calculateDistance2D(target) > skill.getCastRange()))
|
||||
{
|
||||
if (creature.calculateDistance2D(target) > skill.getCastRange())
|
||||
if (sendMessage)
|
||||
{
|
||||
if (sendMessage)
|
||||
{
|
||||
creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED);
|
||||
}
|
||||
return null;
|
||||
creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
// Geodata check when character is within range.
|
||||
|
@@ -93,17 +93,14 @@ public class PcBody implements ITargetTypeHandler
|
||||
}
|
||||
|
||||
// Check for cast range if character cannot move. TODO: char will start follow until within castrange, but if his moving is blocked by geodata, this msg will be sent.
|
||||
if (dontMove)
|
||||
if (dontMove && (creature.calculateDistance2D(target) > skill.getCastRange()))
|
||||
{
|
||||
if (creature.calculateDistance2D(target) > skill.getCastRange())
|
||||
if (sendMessage)
|
||||
{
|
||||
if (sendMessage)
|
||||
{
|
||||
creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED);
|
||||
}
|
||||
|
||||
return null;
|
||||
creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
// Geodata check when character is within range.
|
||||
|
@@ -62,17 +62,14 @@ public class Target implements ITargetTypeHandler
|
||||
}
|
||||
|
||||
// Check for cast range if character cannot move. TODO: char will start follow until within castrange, but if his moving is blocked by geodata, this msg will be sent.
|
||||
if (dontMove)
|
||||
if (dontMove && (creature.calculateDistance2D(target) > skill.getCastRange()))
|
||||
{
|
||||
if (creature.calculateDistance2D(target) > skill.getCastRange())
|
||||
if (sendMessage)
|
||||
{
|
||||
if (sendMessage)
|
||||
{
|
||||
creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED);
|
||||
}
|
||||
|
||||
return null;
|
||||
creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
if (skill.isFlyType() && !GeoEngine.getInstance().canMoveToTarget(creature.getX(), creature.getY(), creature.getZ(), target.getX(), target.getY(), target.getZ(), creature.getInstanceWorld()))
|
||||
|
@@ -46,7 +46,7 @@ public class Q00032_AnObviousLie extends Quest
|
||||
// Misc
|
||||
private static final int MIN_LVL = 45;
|
||||
// Reward
|
||||
private static final Map<String, Integer> EARS = new HashMap<>();
|
||||
private static final Map<String, Integer> EARS = new HashMap<>();
|
||||
static
|
||||
{
|
||||
EARS.put("cat", 6843); // Cat Ears
|
||||
|
@@ -444,12 +444,9 @@ public class Q00070_SagaOfThePhoenixKnight extends Quest
|
||||
case GHOST_OF_SOLITUDE:
|
||||
case SPIRIT_OF_COLD:
|
||||
{
|
||||
if (qs.isCond(3))
|
||||
if (qs.isCond(3) && giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
qs.setCond(4);
|
||||
}
|
||||
qs.setCond(4);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -466,13 +463,10 @@ public class Q00070_SagaOfThePhoenixKnight extends Quest
|
||||
case FIERY_IFRIT:
|
||||
case IKEDIT:
|
||||
{
|
||||
if (qs.isCond(12))
|
||||
if (qs.isCond(12) && giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@@ -36,40 +36,40 @@ import org.l2jmobius.gameserver.util.Util;
|
||||
public class Q00071_SagaOfEvasTemplar extends Quest
|
||||
{
|
||||
// NPCs
|
||||
public final int SINDEN = 30852;
|
||||
public final int STEDMIEL = 30692;
|
||||
public final int RIFKEN = 34268;
|
||||
public final int CERENAS = 31281;
|
||||
public final int TABLET_OF_VISION_1 = 31646;
|
||||
public final int TABLET_OF_VISION_2 = 31648;
|
||||
public final int TABLET_OF_VISION_3 = 31653;
|
||||
public final int TABLET_OF_VISION_4 = 31655;
|
||||
public final int KNIGHT_KASTIEN = 31638;
|
||||
public static final int SINDEN = 30852;
|
||||
public static final int STEDMIEL = 30692;
|
||||
public static final int RIFKEN = 34268;
|
||||
public static final int CERENAS = 31281;
|
||||
public static final int TABLET_OF_VISION_1 = 31646;
|
||||
public static final int TABLET_OF_VISION_2 = 31648;
|
||||
public static final int TABLET_OF_VISION_3 = 31653;
|
||||
public static final int TABLET_OF_VISION_4 = 31655;
|
||||
public static final int KNIGHT_KASTIEN = 31638;
|
||||
// Monsters
|
||||
public final int ICE_MONSTER = 27316;
|
||||
public final int SPIRIT_OF_A_DROWNED = 27317;
|
||||
public final int SOUL_OF_COLD = 27318;
|
||||
public final int GHOST_OF_SOLITUDE = 27319;
|
||||
public final int FIEND_OF_COLD = 27320;
|
||||
public final int SPIRIT_OF_COLD = 27321;
|
||||
public final int SPAMPLAND_WATCHMAN = 21650;
|
||||
public final int FLAME_DRAKE = 21651;
|
||||
public final int FIERY_IFRIT = 21652;
|
||||
public final int IKEDIT = 21653;
|
||||
public final int GATEKEEPER_OF_THE_HOLY_EDICT = 27215;
|
||||
public final int BOUND_ELF_PANACEA = 27287;
|
||||
public final int HALISHA_ARCHON = 27219;
|
||||
public final int CURSED_KESADEIN = 27279;
|
||||
public static final int ICE_MONSTER = 27316;
|
||||
public static final int SPIRIT_OF_A_DROWNED = 27317;
|
||||
public static final int SOUL_OF_COLD = 27318;
|
||||
public static final int GHOST_OF_SOLITUDE = 27319;
|
||||
public static final int FIEND_OF_COLD = 27320;
|
||||
public static final int SPIRIT_OF_COLD = 27321;
|
||||
public static final int SPAMPLAND_WATCHMAN = 21650;
|
||||
public static final int FLAME_DRAKE = 21651;
|
||||
public static final int FIERY_IFRIT = 21652;
|
||||
public static final int IKEDIT = 21653;
|
||||
public static final int GATEKEEPER_OF_THE_HOLY_EDICT = 27215;
|
||||
public static final int BOUND_ELF_PANACEA = 27287;
|
||||
public static final int HALISHA_ARCHON = 27219;
|
||||
public static final int CURSED_KESADEIN = 27279;
|
||||
// Items
|
||||
public final int ICE_CRYSTAL_FRAGMENT = 49805;
|
||||
public final int HALISHA_BADGE = 7486;
|
||||
public final int RESONANCE_AMULET = 7269;
|
||||
public final int RESONANCE_AMULET_2 = 7300;
|
||||
public final int RESONANCE_AMULET_3 = 7331;
|
||||
public final int RESONANCE_AMULET_4 = 7362;
|
||||
public final int PURE_ICE = 7535;
|
||||
public static final int ICE_CRYSTAL_FRAGMENT = 49805;
|
||||
public static final int HALISHA_BADGE = 7486;
|
||||
public static final int RESONANCE_AMULET = 7269;
|
||||
public static final int RESONANCE_AMULET_2 = 7300;
|
||||
public static final int RESONANCE_AMULET_3 = 7331;
|
||||
public static final int RESONANCE_AMULET_4 = 7362;
|
||||
public static final int PURE_ICE = 7535;
|
||||
// Reward
|
||||
public final int BOOK_PEGASUS = 90039;
|
||||
public static final int BOOK_PEGASUS = 90039;
|
||||
// Misc
|
||||
private static final String KILL_COUNT_VAR = "KillCount";
|
||||
|
||||
@@ -447,12 +447,9 @@ public class Q00071_SagaOfEvasTemplar extends Quest
|
||||
case GHOST_OF_SOLITUDE:
|
||||
case SPIRIT_OF_COLD:
|
||||
{
|
||||
if (qs.isCond(3))
|
||||
if (qs.isCond(3) && giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
qs.setCond(4);
|
||||
}
|
||||
qs.setCond(4);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -469,13 +466,10 @@ public class Q00071_SagaOfEvasTemplar extends Quest
|
||||
case FIERY_IFRIT:
|
||||
case IKEDIT:
|
||||
{
|
||||
if (qs.isCond(12))
|
||||
if (qs.isCond(12) && giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@@ -447,12 +447,9 @@ public class Q00072_SagaOfTheSwordMuse extends Quest
|
||||
case GHOST_OF_SOLITUDE:
|
||||
case SPIRIT_OF_COLD:
|
||||
{
|
||||
if (qs.isCond(3))
|
||||
if (qs.isCond(3) && giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
qs.setCond(4);
|
||||
}
|
||||
qs.setCond(4);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -469,13 +466,10 @@ public class Q00072_SagaOfTheSwordMuse extends Quest
|
||||
case FIERY_IFRIT:
|
||||
case IKEDIT:
|
||||
{
|
||||
if (qs.isCond(12))
|
||||
if (qs.isCond(12) && giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@@ -447,12 +447,9 @@ public class Q00073_SagaOfTheDuelist extends Quest
|
||||
case GHOST_OF_SOLITUDE:
|
||||
case SPIRIT_OF_COLD:
|
||||
{
|
||||
if (qs.isCond(3))
|
||||
if (qs.isCond(3) && giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
qs.setCond(4);
|
||||
}
|
||||
qs.setCond(4);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -469,13 +466,10 @@ public class Q00073_SagaOfTheDuelist extends Quest
|
||||
case FIERY_IFRIT:
|
||||
case IKEDIT:
|
||||
{
|
||||
if (qs.isCond(12))
|
||||
if (qs.isCond(12) && giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@@ -447,12 +447,9 @@ public class Q00074_SagaOfTheDreadnought extends Quest
|
||||
case GHOST_OF_SOLITUDE:
|
||||
case SPIRIT_OF_COLD:
|
||||
{
|
||||
if (qs.isCond(3))
|
||||
if (qs.isCond(3) && giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
qs.setCond(4);
|
||||
}
|
||||
qs.setCond(4);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -469,13 +466,10 @@ public class Q00074_SagaOfTheDreadnought extends Quest
|
||||
case FIERY_IFRIT:
|
||||
case IKEDIT:
|
||||
{
|
||||
if (qs.isCond(12))
|
||||
if (qs.isCond(12) && giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@@ -57,7 +57,7 @@ public class Q00075_SagaOfTheTitan extends Quest
|
||||
private static final int FIERY_IFRIT = 21652;
|
||||
private static final int IKEDIT = 21653;
|
||||
private static final int WATCHER_OF_THE_ANCIENT_PLEDGE = 27216;
|
||||
private static final int FALLEN_NOBLE_ORC__MUHAKR = 27292;
|
||||
private static final int FALLEN_NOBLE_ORC_MUHAKR = 27292;
|
||||
private static final int HALISHA_ARCHON = 27219;
|
||||
private static final int GRANPAPA_ASKALIUS = 27283;
|
||||
// Items
|
||||
@@ -78,7 +78,7 @@ public class Q00075_SagaOfTheTitan extends Quest
|
||||
super(75);
|
||||
addStartNpc(LADANZA);
|
||||
addTalkId(LADANZA, GARVARENTZ, RIFKEN, LAZENBY, SAKE_DUN_ZU_HESTUI, TABLET_OF_VISION_1, TABLET_OF_VISION_2, TABLET_OF_VISION_3, TABLET_OF_VISION_4);
|
||||
addKillId(ICE_MONSTER, SPIRIT_OF_A_DROWNED, SOUL_OF_COLD, GHOST_OF_SOLITUDE, FIEND_OF_COLD, SPIRIT_OF_COLD, SPAMPLAND_WATCHMAN, FLAME_DRAKE, FIERY_IFRIT, IKEDIT, WATCHER_OF_THE_ANCIENT_PLEDGE, FALLEN_NOBLE_ORC__MUHAKR, HALISHA_ARCHON, GRANPAPA_ASKALIUS);
|
||||
addKillId(ICE_MONSTER, SPIRIT_OF_A_DROWNED, SOUL_OF_COLD, GHOST_OF_SOLITUDE, FIEND_OF_COLD, SPIRIT_OF_COLD, SPAMPLAND_WATCHMAN, FLAME_DRAKE, FIERY_IFRIT, IKEDIT, WATCHER_OF_THE_ANCIENT_PLEDGE, FALLEN_NOBLE_ORC_MUHAKR, HALISHA_ARCHON, GRANPAPA_ASKALIUS);
|
||||
registerQuestItems(BITTER_COLD_VODKA, ICE_CRYSTAL_FRAGMENT, HALISHA_BADGE);
|
||||
addCondMinLevel(76, "aiken02.htm");
|
||||
addCondClassId(ClassId.DESTROYER, "aiken03.htm");
|
||||
@@ -157,7 +157,7 @@ public class Q00075_SagaOfTheTitan extends Quest
|
||||
{
|
||||
if (qs.isCond(8))
|
||||
{
|
||||
addSpawn(FALLEN_NOBLE_ORC__MUHAKR, npc, true, 0, true);
|
||||
addSpawn(FALLEN_NOBLE_ORC_MUHAKR, npc, true, 0, true);
|
||||
qs.setCond(9);
|
||||
}
|
||||
break;
|
||||
@@ -447,16 +447,13 @@ public class Q00075_SagaOfTheTitan extends Quest
|
||||
case GHOST_OF_SOLITUDE:
|
||||
case SPIRIT_OF_COLD:
|
||||
{
|
||||
if (qs.isCond(3))
|
||||
if (qs.isCond(3) && giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
qs.setCond(4);
|
||||
}
|
||||
qs.setCond(4);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case FALLEN_NOBLE_ORC__MUHAKR:
|
||||
case FALLEN_NOBLE_ORC_MUHAKR:
|
||||
{
|
||||
if (qs.isCond(9))
|
||||
{
|
||||
@@ -469,13 +466,10 @@ public class Q00075_SagaOfTheTitan extends Quest
|
||||
case FIERY_IFRIT:
|
||||
case IKEDIT:
|
||||
{
|
||||
if (qs.isCond(12))
|
||||
if (qs.isCond(12) && giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@@ -447,12 +447,9 @@ public class Q00076_SagaOfTheGrandKhavatari extends Quest
|
||||
case GHOST_OF_SOLITUDE:
|
||||
case SPIRIT_OF_COLD:
|
||||
{
|
||||
if (qs.isCond(3))
|
||||
if (qs.isCond(3) && giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
qs.setCond(4);
|
||||
}
|
||||
qs.setCond(4);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -469,13 +466,10 @@ public class Q00076_SagaOfTheGrandKhavatari extends Quest
|
||||
case FIERY_IFRIT:
|
||||
case IKEDIT:
|
||||
{
|
||||
if (qs.isCond(12))
|
||||
if (qs.isCond(12) && giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@@ -447,12 +447,9 @@ public class Q00077_SagaOfTheDominator extends Quest
|
||||
case GHOST_OF_SOLITUDE:
|
||||
case SPIRIT_OF_COLD:
|
||||
{
|
||||
if (qs.isCond(3))
|
||||
if (qs.isCond(3) && giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
qs.setCond(4);
|
||||
}
|
||||
qs.setCond(4);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -469,13 +466,10 @@ public class Q00077_SagaOfTheDominator extends Quest
|
||||
case FIERY_IFRIT:
|
||||
case IKEDIT:
|
||||
{
|
||||
if (qs.isCond(12))
|
||||
if (qs.isCond(12) && giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@@ -447,12 +447,9 @@ public class Q00078_SagaOfTheDoomcryer extends Quest
|
||||
case GHOST_OF_SOLITUDE:
|
||||
case SPIRIT_OF_COLD:
|
||||
{
|
||||
if (qs.isCond(3))
|
||||
if (qs.isCond(3) && giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
qs.setCond(4);
|
||||
}
|
||||
qs.setCond(4);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -469,13 +466,10 @@ public class Q00078_SagaOfTheDoomcryer extends Quest
|
||||
case FIERY_IFRIT:
|
||||
case IKEDIT:
|
||||
{
|
||||
if (qs.isCond(12))
|
||||
if (qs.isCond(12) && giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@@ -447,12 +447,9 @@ public class Q00079_SagaOfTheAdventurer extends Quest
|
||||
case GHOST_OF_SOLITUDE:
|
||||
case SPIRIT_OF_COLD:
|
||||
{
|
||||
if (qs.isCond(3))
|
||||
if (qs.isCond(3) && giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
qs.setCond(4);
|
||||
}
|
||||
qs.setCond(4);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -469,13 +466,10 @@ public class Q00079_SagaOfTheAdventurer extends Quest
|
||||
case FIERY_IFRIT:
|
||||
case IKEDIT:
|
||||
{
|
||||
if (qs.isCond(12))
|
||||
if (qs.isCond(12) && giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@@ -447,12 +447,9 @@ public class Q00080_SagaOfTheWindRider extends Quest
|
||||
case GHOST_OF_SOLITUDE:
|
||||
case SPIRIT_OF_COLD:
|
||||
{
|
||||
if (qs.isCond(3))
|
||||
if (qs.isCond(3) && giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
qs.setCond(4);
|
||||
}
|
||||
qs.setCond(4);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -469,13 +466,10 @@ public class Q00080_SagaOfTheWindRider extends Quest
|
||||
case FIERY_IFRIT:
|
||||
case IKEDIT:
|
||||
{
|
||||
if (qs.isCond(12))
|
||||
if (qs.isCond(12) && giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@@ -447,12 +447,9 @@ public class Q00081_SagaOfTheGhostHunter extends Quest
|
||||
case GHOST_OF_SOLITUDE:
|
||||
case SPIRIT_OF_COLD:
|
||||
{
|
||||
if (qs.isCond(3))
|
||||
if (qs.isCond(3) && giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
qs.setCond(4);
|
||||
}
|
||||
qs.setCond(4);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -469,13 +466,10 @@ public class Q00081_SagaOfTheGhostHunter extends Quest
|
||||
case FIERY_IFRIT:
|
||||
case IKEDIT:
|
||||
{
|
||||
if (qs.isCond(12))
|
||||
if (qs.isCond(12) && giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@@ -447,12 +447,9 @@ public class Q00082_SagaOfTheSagittarius extends Quest
|
||||
case GHOST_OF_SOLITUDE:
|
||||
case SPIRIT_OF_COLD:
|
||||
{
|
||||
if (qs.isCond(3))
|
||||
if (qs.isCond(3) && giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
qs.setCond(4);
|
||||
}
|
||||
qs.setCond(4);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -469,13 +466,10 @@ public class Q00082_SagaOfTheSagittarius extends Quest
|
||||
case FIERY_IFRIT:
|
||||
case IKEDIT:
|
||||
{
|
||||
if (qs.isCond(12))
|
||||
if (qs.isCond(12) && giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@@ -447,12 +447,9 @@ public class Q00083_SagaOfTheMoonlightSentinel extends Quest
|
||||
case GHOST_OF_SOLITUDE:
|
||||
case SPIRIT_OF_COLD:
|
||||
{
|
||||
if (qs.isCond(3))
|
||||
if (qs.isCond(3) && giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
qs.setCond(4);
|
||||
}
|
||||
qs.setCond(4);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -469,13 +466,10 @@ public class Q00083_SagaOfTheMoonlightSentinel extends Quest
|
||||
case FIERY_IFRIT:
|
||||
case IKEDIT:
|
||||
{
|
||||
if (qs.isCond(12))
|
||||
if (qs.isCond(12) && giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@@ -447,12 +447,9 @@ public class Q00084_SagaOfTheGhostSentinel extends Quest
|
||||
case GHOST_OF_SOLITUDE:
|
||||
case SPIRIT_OF_COLD:
|
||||
{
|
||||
if (qs.isCond(3))
|
||||
if (qs.isCond(3) && giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
qs.setCond(4);
|
||||
}
|
||||
qs.setCond(4);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -469,13 +466,10 @@ public class Q00084_SagaOfTheGhostSentinel extends Quest
|
||||
case FIERY_IFRIT:
|
||||
case IKEDIT:
|
||||
{
|
||||
if (qs.isCond(12))
|
||||
if (qs.isCond(12) && giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@@ -457,12 +457,9 @@ public class Q00085_SagaOfTheCardinal extends Quest
|
||||
case GHOST_OF_SOLITUDE:
|
||||
case SPIRIT_OF_COLD:
|
||||
{
|
||||
if (qs.isCond(3))
|
||||
if (qs.isCond(3) && giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
qs.setCond(4);
|
||||
}
|
||||
qs.setCond(4);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -479,13 +476,10 @@ public class Q00085_SagaOfTheCardinal extends Quest
|
||||
case FIERY_IFRIT:
|
||||
case IKEDIT:
|
||||
{
|
||||
if (qs.isCond(12))
|
||||
if (qs.isCond(12) && giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@@ -457,12 +457,9 @@ public class Q00086_SagaOfTheHierophant extends Quest
|
||||
case GHOST_OF_SOLITUDE:
|
||||
case SPIRIT_OF_COLD:
|
||||
{
|
||||
if (qs.isCond(3))
|
||||
if (qs.isCond(3) && giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
qs.setCond(4);
|
||||
}
|
||||
qs.setCond(4);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -479,13 +476,10 @@ public class Q00086_SagaOfTheHierophant extends Quest
|
||||
case FIERY_IFRIT:
|
||||
case IKEDIT:
|
||||
{
|
||||
if (qs.isCond(12))
|
||||
if (qs.isCond(12) && giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@@ -36,40 +36,40 @@ import org.l2jmobius.gameserver.util.Util;
|
||||
public class Q00087_SagaOfEvasSaint extends Quest
|
||||
{
|
||||
// NPCs
|
||||
public final int ORVEN = 30857;
|
||||
public final int SERESIN = 30657;
|
||||
public final int RIFKEN = 34268;
|
||||
public final int VIVIAN = 30859;
|
||||
public final int TABLET_OF_VISION_1 = 31646;
|
||||
public final int TABLET_OF_VISION_2 = 31648;
|
||||
public final int TABLET_OF_VISION_3 = 31650;
|
||||
public final int TABLET_OF_VISION_4 = 31655;
|
||||
public final int ELIKIA = 31620;
|
||||
public static final int ORVEN = 30857;
|
||||
public static final int SERESIN = 30657;
|
||||
public static final int RIFKEN = 34268;
|
||||
public static final int VIVIAN = 30859;
|
||||
public static final int TABLET_OF_VISION_1 = 31646;
|
||||
public static final int TABLET_OF_VISION_2 = 31648;
|
||||
public static final int TABLET_OF_VISION_3 = 31650;
|
||||
public static final int TABLET_OF_VISION_4 = 31655;
|
||||
public static final int ELIKIA = 31620;
|
||||
// Monsters
|
||||
public final int ICE_MONSTER = 27316;
|
||||
public final int SPIRIT_OF_A_DROWNED = 27317;
|
||||
public final int SOUL_OF_COLD = 27318;
|
||||
public final int GHOST_OF_SOLITUDE = 27319;
|
||||
public final int FIEND_OF_COLD = 27320;
|
||||
public final int SPIRIT_OF_COLD = 27321;
|
||||
public final int SPAMPLAND_WATCHMAN = 21650;
|
||||
public final int FLAME_DRAKE = 21651;
|
||||
public final int FIERY_IFRIT = 21652;
|
||||
public final int IKEDIT = 21653;
|
||||
public final int GATEKEEPER_OF_THE_HOLY_EDICT = 27215;
|
||||
public final int FALLEN_ANGEL_NAVERIUS = 27266;
|
||||
public final int HALISHA_ARCHON = 27219;
|
||||
public final int FALLEN_ANGEL_TANAKIA = 27274;
|
||||
public static final int ICE_MONSTER = 27316;
|
||||
public static final int SPIRIT_OF_A_DROWNED = 27317;
|
||||
public static final int SOUL_OF_COLD = 27318;
|
||||
public static final int GHOST_OF_SOLITUDE = 27319;
|
||||
public static final int FIEND_OF_COLD = 27320;
|
||||
public static final int SPIRIT_OF_COLD = 27321;
|
||||
public static final int SPAMPLAND_WATCHMAN = 21650;
|
||||
public static final int FLAME_DRAKE = 21651;
|
||||
public static final int FIERY_IFRIT = 21652;
|
||||
public static final int IKEDIT = 21653;
|
||||
public static final int GATEKEEPER_OF_THE_HOLY_EDICT = 27215;
|
||||
public static final int FALLEN_ANGEL_NAVERIUS = 27266;
|
||||
public static final int HALISHA_ARCHON = 27219;
|
||||
public static final int FALLEN_ANGEL_TANAKIA = 27274;
|
||||
// Items
|
||||
public final int ICE_CRYSTAL_FRAGMENT = 49821;
|
||||
public final int HALISHA_BADGE = 7502;
|
||||
public final int RESONANCE_AMULET = 7285;
|
||||
public final int RESONANCE_AMULET_2 = 7316;
|
||||
public final int RESONANCE_AMULET_3 = 7347;
|
||||
public final int RESONANCE_AMULET_4 = 7378;
|
||||
public final int FOOD_SACK = 49837;
|
||||
public static final int ICE_CRYSTAL_FRAGMENT = 49821;
|
||||
public static final int HALISHA_BADGE = 7502;
|
||||
public static final int RESONANCE_AMULET = 7285;
|
||||
public static final int RESONANCE_AMULET_2 = 7316;
|
||||
public static final int RESONANCE_AMULET_3 = 7347;
|
||||
public static final int RESONANCE_AMULET_4 = 7378;
|
||||
public static final int FOOD_SACK = 49837;
|
||||
// Reward
|
||||
public final int BOOK_PEGASUS = 90039;
|
||||
public static final int BOOK_PEGASUS = 90039;
|
||||
// Misc
|
||||
private static final String KILL_COUNT_VAR = "KillCount";
|
||||
|
||||
@@ -447,12 +447,9 @@ public class Q00087_SagaOfEvasSaint extends Quest
|
||||
case GHOST_OF_SOLITUDE:
|
||||
case SPIRIT_OF_COLD:
|
||||
{
|
||||
if (qs.isCond(3))
|
||||
if (qs.isCond(3) && giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
qs.setCond(4);
|
||||
}
|
||||
qs.setCond(4);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -469,13 +466,10 @@ public class Q00087_SagaOfEvasSaint extends Quest
|
||||
case FIERY_IFRIT:
|
||||
case IKEDIT:
|
||||
{
|
||||
if (qs.isCond(12))
|
||||
if (qs.isCond(12) && giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@@ -444,12 +444,9 @@ public class Q00088_SagaOfTheArchmage extends Quest
|
||||
case GHOST_OF_SOLITUDE:
|
||||
case SPIRIT_OF_COLD:
|
||||
{
|
||||
if (qs.isCond(3))
|
||||
if (qs.isCond(3) && giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
qs.setCond(4);
|
||||
}
|
||||
qs.setCond(4);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -466,13 +463,10 @@ public class Q00088_SagaOfTheArchmage extends Quest
|
||||
case FIERY_IFRIT:
|
||||
case IKEDIT:
|
||||
{
|
||||
if (qs.isCond(12))
|
||||
if (qs.isCond(12) && giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@@ -444,12 +444,9 @@ public class Q00089_SagaOfTheMysticMuse extends Quest
|
||||
case GHOST_OF_SOLITUDE:
|
||||
case SPIRIT_OF_COLD:
|
||||
{
|
||||
if (qs.isCond(3))
|
||||
if (qs.isCond(3) && giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
qs.setCond(4);
|
||||
}
|
||||
qs.setCond(4);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -466,13 +463,10 @@ public class Q00089_SagaOfTheMysticMuse extends Quest
|
||||
case FIERY_IFRIT:
|
||||
case IKEDIT:
|
||||
{
|
||||
if (qs.isCond(12))
|
||||
if (qs.isCond(12) && giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@@ -444,12 +444,9 @@ public class Q00090_SagaOfTheStormScreamer extends Quest
|
||||
case GHOST_OF_SOLITUDE:
|
||||
case SPIRIT_OF_COLD:
|
||||
{
|
||||
if (qs.isCond(3))
|
||||
if (qs.isCond(3) && giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
qs.setCond(4);
|
||||
}
|
||||
qs.setCond(4);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -466,13 +463,10 @@ public class Q00090_SagaOfTheStormScreamer extends Quest
|
||||
case FIERY_IFRIT:
|
||||
case IKEDIT:
|
||||
{
|
||||
if (qs.isCond(12))
|
||||
if (qs.isCond(12) && giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@@ -457,12 +457,9 @@ public class Q00091_SagaOfTheArcanaLord extends Quest
|
||||
case GHOST_OF_SOLITUDE:
|
||||
case SPIRIT_OF_COLD:
|
||||
{
|
||||
if (qs.isCond(3))
|
||||
if (qs.isCond(3) && giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
qs.setCond(4);
|
||||
}
|
||||
qs.setCond(4);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -479,13 +476,10 @@ public class Q00091_SagaOfTheArcanaLord extends Quest
|
||||
case FIERY_IFRIT:
|
||||
case IKEDIT:
|
||||
{
|
||||
if (qs.isCond(12))
|
||||
if (qs.isCond(12) && giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@@ -444,12 +444,9 @@ public class Q00092_SagaOfTheElementalMaster extends Quest
|
||||
case GHOST_OF_SOLITUDE:
|
||||
case SPIRIT_OF_COLD:
|
||||
{
|
||||
if (qs.isCond(3))
|
||||
if (qs.isCond(3) && giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
qs.setCond(4);
|
||||
}
|
||||
qs.setCond(4);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -466,13 +463,10 @@ public class Q00092_SagaOfTheElementalMaster extends Quest
|
||||
case FIERY_IFRIT:
|
||||
case IKEDIT:
|
||||
{
|
||||
if (qs.isCond(12))
|
||||
if (qs.isCond(12) && giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@@ -444,12 +444,9 @@ public class Q00093_SagaOfTheSpectralMaster extends Quest
|
||||
case GHOST_OF_SOLITUDE:
|
||||
case SPIRIT_OF_COLD:
|
||||
{
|
||||
if (qs.isCond(3))
|
||||
if (qs.isCond(3) && giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
qs.setCond(4);
|
||||
}
|
||||
qs.setCond(4);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -466,13 +463,10 @@ public class Q00093_SagaOfTheSpectralMaster extends Quest
|
||||
case FIERY_IFRIT:
|
||||
case IKEDIT:
|
||||
{
|
||||
if (qs.isCond(12))
|
||||
if (qs.isCond(12) && giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@@ -444,12 +444,9 @@ public class Q00094_SagaOfTheSoultaker extends Quest
|
||||
case GHOST_OF_SOLITUDE:
|
||||
case SPIRIT_OF_COLD:
|
||||
{
|
||||
if (qs.isCond(3))
|
||||
if (qs.isCond(3) && giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
qs.setCond(4);
|
||||
}
|
||||
qs.setCond(4);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -466,13 +463,10 @@ public class Q00094_SagaOfTheSoultaker extends Quest
|
||||
case FIERY_IFRIT:
|
||||
case IKEDIT:
|
||||
{
|
||||
if (qs.isCond(12))
|
||||
if (qs.isCond(12) && giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@@ -446,12 +446,9 @@ public class Q00095_SagaOfTheHellKnight extends Quest
|
||||
case GHOST_OF_SOLITUDE:
|
||||
case SPIRIT_OF_COLD:
|
||||
{
|
||||
if (qs.isCond(3))
|
||||
if (qs.isCond(3) && giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
qs.setCond(4);
|
||||
}
|
||||
qs.setCond(4);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -468,13 +465,10 @@ public class Q00095_SagaOfTheHellKnight extends Quest
|
||||
case FIERY_IFRIT:
|
||||
case IKEDIT:
|
||||
{
|
||||
if (qs.isCond(12))
|
||||
if (qs.isCond(12) && giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@@ -444,12 +444,9 @@ public class Q00096_SagaOfTheSpectralDancer extends Quest
|
||||
case GHOST_OF_SOLITUDE:
|
||||
case SPIRIT_OF_COLD:
|
||||
{
|
||||
if (qs.isCond(3))
|
||||
if (qs.isCond(3) && giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
qs.setCond(4);
|
||||
}
|
||||
qs.setCond(4);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -466,13 +463,10 @@ public class Q00096_SagaOfTheSpectralDancer extends Quest
|
||||
case FIERY_IFRIT:
|
||||
case IKEDIT:
|
||||
{
|
||||
if (qs.isCond(12))
|
||||
if (qs.isCond(12) && giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@@ -444,12 +444,9 @@ public class Q00097_SagaOfTheShillienTemplar extends Quest
|
||||
case GHOST_OF_SOLITUDE:
|
||||
case SPIRIT_OF_COLD:
|
||||
{
|
||||
if (qs.isCond(3))
|
||||
if (qs.isCond(3) && giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
qs.setCond(4);
|
||||
}
|
||||
qs.setCond(4);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -466,13 +463,10 @@ public class Q00097_SagaOfTheShillienTemplar extends Quest
|
||||
case FIERY_IFRIT:
|
||||
case IKEDIT:
|
||||
{
|
||||
if (qs.isCond(12))
|
||||
if (qs.isCond(12) && giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@@ -447,12 +447,9 @@ public class Q00098_SagaOfTheShillienSaint extends Quest
|
||||
case GHOST_OF_SOLITUDE:
|
||||
case SPIRIT_OF_COLD:
|
||||
{
|
||||
if (qs.isCond(3))
|
||||
if (qs.isCond(3) && giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
qs.setCond(4);
|
||||
}
|
||||
qs.setCond(4);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -469,13 +466,10 @@ public class Q00098_SagaOfTheShillienSaint extends Quest
|
||||
case FIERY_IFRIT:
|
||||
case IKEDIT:
|
||||
{
|
||||
if (qs.isCond(12))
|
||||
if (qs.isCond(12) && giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@@ -444,12 +444,9 @@ public class Q00099_SagaOfTheFortuneSeeker extends Quest
|
||||
case GHOST_OF_SOLITUDE:
|
||||
case SPIRIT_OF_COLD:
|
||||
{
|
||||
if (qs.isCond(3))
|
||||
if (qs.isCond(3) && giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
qs.setCond(4);
|
||||
}
|
||||
qs.setCond(4);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -466,13 +463,10 @@ public class Q00099_SagaOfTheFortuneSeeker extends Quest
|
||||
case FIERY_IFRIT:
|
||||
case IKEDIT:
|
||||
{
|
||||
if (qs.isCond(12))
|
||||
if (qs.isCond(12) && giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@@ -444,12 +444,9 @@ public class Q00100_SagaOfTheMaestro extends Quest
|
||||
case GHOST_OF_SOLITUDE:
|
||||
case SPIRIT_OF_COLD:
|
||||
{
|
||||
if (qs.isCond(3))
|
||||
if (qs.isCond(3) && giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, ICE_CRYSTAL_FRAGMENT, 1, 50, 0.5, true))
|
||||
{
|
||||
qs.setCond(4);
|
||||
}
|
||||
qs.setCond(4);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -466,13 +463,10 @@ public class Q00100_SagaOfTheMaestro extends Quest
|
||||
case FIERY_IFRIT:
|
||||
case IKEDIT:
|
||||
{
|
||||
if (qs.isCond(12))
|
||||
if (qs.isCond(12) && giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, HALISHA_BADGE, 1, 700, 0.5, true))
|
||||
{
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
addSpawn(HALISHA_ARCHON, npc, true, 0, true);
|
||||
qs.setCond(13);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@@ -48,7 +48,7 @@ public class Q00110_ToThePrimevalIsle extends Quest
|
||||
@Override
|
||||
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||
{
|
||||
QuestState qs = getQuestState(player, false);
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
if (qs == null)
|
||||
{
|
||||
return getNoQuestMsg(player);
|
||||
|
@@ -258,7 +258,7 @@ public class Q00111_ElrokianHuntersProof extends Quest
|
||||
@Override
|
||||
public String onTalk(Npc npc, PlayerInstance player)
|
||||
{
|
||||
QuestState qs = getQuestState(player, true);
|
||||
final QuestState qs = getQuestState(player, true);
|
||||
String htmltext = getNoQuestMsg(player);
|
||||
if (qs == null)
|
||||
{
|
||||
|
@@ -182,14 +182,11 @@ public class Q00212_TrialOfDuty extends Quest
|
||||
case STRAIN:
|
||||
case GHOUL:
|
||||
{
|
||||
if (qs.isMemoState(5) && !hasQuestItems(killer, TALIANUSS_REPORT))
|
||||
if (qs.isMemoState(5) && !hasQuestItems(killer, TALIANUSS_REPORT) && giveItemRandomly(killer, npc, REPORT_PIECE.getId(), 1, REPORT_PIECE.getCount(), 1, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, REPORT_PIECE.getId(), 1, REPORT_PIECE.getCount(), 1, true))
|
||||
{
|
||||
takeItem(killer, REPORT_PIECE);
|
||||
giveItems(killer, TALIANUSS_REPORT, 1);
|
||||
qs.setCond(6);
|
||||
}
|
||||
takeItem(killer, REPORT_PIECE);
|
||||
giveItems(killer, TALIANUSS_REPORT, 1);
|
||||
qs.setCond(6);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@@ -286,13 +286,10 @@ public class Q00213_TrialOfTheSeeker extends Quest
|
||||
}
|
||||
case NEER_GHOUL_BERSERKER:
|
||||
{
|
||||
if (hasQuestItems(killer, TERRYS_1ST_ORDER) && !hasQuestItems(killer, MYSTERIOUS_SPIRIT_ORE))
|
||||
if (hasQuestItems(killer, TERRYS_1ST_ORDER) && !hasQuestItems(killer, MYSTERIOUS_SPIRIT_ORE) && getRandomBoolean())
|
||||
{
|
||||
if (getRandom(100) < 50)
|
||||
{
|
||||
giveItems(killer, MYSTERIOUS_SPIRIT_ORE, 1);
|
||||
qs.setCond(3, true);
|
||||
}
|
||||
giveItems(killer, MYSTERIOUS_SPIRIT_ORE, 1);
|
||||
qs.setCond(3, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -388,7 +385,7 @@ public class Q00213_TrialOfTheSeeker extends Quest
|
||||
{
|
||||
if (npc.getId() == MASTER_DUFNER)
|
||||
{
|
||||
if ((player.getClassId() == ClassId.ROGUE) || (player.getClassId() == ClassId.ELVEN_SCOUT) || ((player.getClassId() == ClassId.ASSASSIN)))
|
||||
if ((player.getClassId() == ClassId.ROGUE) || (player.getClassId() == ClassId.ELVEN_SCOUT) || (player.getClassId() == ClassId.ASSASSIN))
|
||||
{
|
||||
if (player.getLevel() < MIN_LVL)
|
||||
{
|
||||
|
@@ -555,7 +555,7 @@ public class Q00214_TrialOfTheScholar extends Quest
|
||||
{
|
||||
if (npc.getId() == MAGISTER_MIRIEN)
|
||||
{
|
||||
if ((player.getClassId() == ClassId.WIZARD) || (player.getClassId() == ClassId.ELVEN_WIZARD) || ((player.getClassId() == ClassId.DARK_WIZARD)))
|
||||
if ((player.getClassId() == ClassId.WIZARD) || (player.getClassId() == ClassId.ELVEN_WIZARD) || (player.getClassId() == ClassId.DARK_WIZARD))
|
||||
{
|
||||
if (player.getLevel() < MIN_LVL)
|
||||
{
|
||||
|
@@ -302,13 +302,10 @@ public class Q00216_TrialOfTheGuildsman extends Quest
|
||||
case MANDRAGORA_SPROUT2:
|
||||
{
|
||||
final QuestState qs = getQuestState(killer, false);
|
||||
if ((qs != null) && qs.isStarted() && Util.checkIfInRange(Config.ALT_PARTY_RANGE, npc, killer, true))
|
||||
if ((qs != null) && qs.isStarted() && Util.checkIfInRange(Config.ALT_PARTY_RANGE, npc, killer, true) && hasQuestItems(killer, VALKONS_RECOMMENDATION) && !hasQuestItems(killer, MANDRAGORA_BERRY))
|
||||
{
|
||||
if (hasQuestItems(killer, VALKONS_RECOMMENDATION) && !hasQuestItems(killer, MANDRAGORA_BERRY))
|
||||
{
|
||||
giveItems(killer, MANDRAGORA_BERRY, 1);
|
||||
qs.setCond(4, true);
|
||||
}
|
||||
giveItems(killer, MANDRAGORA_BERRY, 1);
|
||||
qs.setCond(4, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@@ -523,17 +523,14 @@ public class Q00217_TestimonyOfTrust extends Quest
|
||||
}
|
||||
case HIGH_PRIEST_BIOTIN:
|
||||
{
|
||||
if (memoState == 19)
|
||||
if ((memoState == 19) && hasQuestItems(player, RECOMMENDATION_OF_HOLLIN))
|
||||
{
|
||||
if (hasQuestItems(player, RECOMMENDATION_OF_HOLLIN))
|
||||
{
|
||||
giveAdena(player, 252212, true);
|
||||
giveItems(player, MARK_OF_TRUST, 1);
|
||||
addExpAndSp(player, 1390298, 92782);
|
||||
qs.exitQuest(false, true);
|
||||
player.sendPacket(new SocialAction(player.getObjectId(), 3));
|
||||
htmltext = "30031-01.html";
|
||||
}
|
||||
giveAdena(player, 252212, true);
|
||||
giveItems(player, MARK_OF_TRUST, 1);
|
||||
addExpAndSp(player, 1390298, 92782);
|
||||
qs.exitQuest(false, true);
|
||||
player.sendPacket(new SocialAction(player.getObjectId(), 3));
|
||||
htmltext = "30031-01.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@@ -398,15 +398,12 @@ public class Q00218_TestimonyOfLife extends Quest
|
||||
}
|
||||
case UNICORN_OF_EVA:
|
||||
{
|
||||
if (!hasQuestItems(killer, TEARS_OF_UNICORN) && hasQuestItems(killer, MOONFLOWER_CHARM, TALINS_SPEAR, GRAIL_OF_PURITY))
|
||||
if (!hasQuestItems(killer, TEARS_OF_UNICORN) && hasQuestItems(killer, MOONFLOWER_CHARM, TALINS_SPEAR, GRAIL_OF_PURITY) && (npc.getKillingBlowWeapon() == TALINS_SPEAR))
|
||||
{
|
||||
if (npc.getKillingBlowWeapon() == TALINS_SPEAR)
|
||||
{
|
||||
takeItems(killer, TALINS_SPEAR, 1);
|
||||
takeItems(killer, GRAIL_OF_PURITY, 1);
|
||||
giveItems(killer, TEARS_OF_UNICORN, 1);
|
||||
qs.setCond(19, true);
|
||||
}
|
||||
takeItems(killer, TALINS_SPEAR, 1);
|
||||
takeItems(killer, GRAIL_OF_PURITY, 1);
|
||||
giveItems(killer, TEARS_OF_UNICORN, 1);
|
||||
qs.setCond(19, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@@ -216,6 +216,7 @@ public class Q00219_TestimonyOfFate extends Quest
|
||||
giveItems(killer, KASANDRAS_REMAINS, 1);
|
||||
qs.setCond(3, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case MARSH_STAKATO:
|
||||
case MARSH_STAKATO_WORKER:
|
||||
@@ -328,49 +329,37 @@ public class Q00219_TestimonyOfFate extends Quest
|
||||
}
|
||||
case BREKA_ORC_OVERLORD:
|
||||
{
|
||||
if (hasQuestItems(killer, PALUS_CHARM, ARKENIAS_NOTE, PIXY_GARNET) && !hasQuestItems(killer, RED_FAIRY_DUST, BREKA_OVERLORD_SKULL))
|
||||
if (hasQuestItems(killer, PALUS_CHARM, ARKENIAS_NOTE, PIXY_GARNET) && !hasQuestItems(killer, RED_FAIRY_DUST, BREKA_OVERLORD_SKULL) && !hasQuestItems(killer, BREKA_OVERLORD_SKULL))
|
||||
{
|
||||
if (!hasQuestItems(killer, BREKA_OVERLORD_SKULL))
|
||||
{
|
||||
giveItems(killer, BREKA_OVERLORD_SKULL, 1);
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
|
||||
}
|
||||
giveItems(killer, BREKA_OVERLORD_SKULL, 1);
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case GRANDIS:
|
||||
{
|
||||
if (hasQuestItems(killer, PALUS_CHARM, ARKENIAS_NOTE, PIXY_GARNET) && !hasQuestItems(killer, RED_FAIRY_DUST, GRANDISS_SKULL))
|
||||
if (hasQuestItems(killer, PALUS_CHARM, ARKENIAS_NOTE, PIXY_GARNET) && !hasQuestItems(killer, RED_FAIRY_DUST, GRANDISS_SKULL) && !hasQuestItems(killer, GRANDISS_SKULL))
|
||||
{
|
||||
if (!hasQuestItems(killer, GRANDISS_SKULL))
|
||||
{
|
||||
giveItems(killer, GRANDISS_SKULL, 1);
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
|
||||
}
|
||||
giveItems(killer, GRANDISS_SKULL, 1);
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case LETO_LIZARDMAN_OVERLORD:
|
||||
{
|
||||
if (hasQuestItems(killer, PALUS_CHARM, ARKENIAS_NOTE, PIXY_GARNET) && !hasQuestItems(killer, RED_FAIRY_DUST, LETO_OVERLORD_SKULL))
|
||||
if (hasQuestItems(killer, PALUS_CHARM, ARKENIAS_NOTE, PIXY_GARNET) && !hasQuestItems(killer, RED_FAIRY_DUST, LETO_OVERLORD_SKULL) && !hasQuestItems(killer, LETO_OVERLORD_SKULL))
|
||||
{
|
||||
if (!hasQuestItems(killer, LETO_OVERLORD_SKULL))
|
||||
{
|
||||
giveItems(killer, LETO_OVERLORD_SKULL, 1);
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
|
||||
}
|
||||
giveItems(killer, LETO_OVERLORD_SKULL, 1);
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case KARUL_BUGBEAR:
|
||||
{
|
||||
if (hasQuestItems(killer, PALUS_CHARM, ARKENIAS_NOTE, PIXY_GARNET) && !hasQuestItems(killer, RED_FAIRY_DUST, KARUL_BUGBEAR_SKULL))
|
||||
if (hasQuestItems(killer, PALUS_CHARM, ARKENIAS_NOTE, PIXY_GARNET) && !hasQuestItems(killer, RED_FAIRY_DUST, KARUL_BUGBEAR_SKULL) && !hasQuestItems(killer, KARUL_BUGBEAR_SKULL))
|
||||
{
|
||||
if (!hasQuestItems(killer, KARUL_BUGBEAR_SKULL))
|
||||
{
|
||||
giveItems(killer, KARUL_BUGBEAR_SKULL, 1);
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
|
||||
}
|
||||
giveItems(killer, KARUL_BUGBEAR_SKULL, 1);
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -576,6 +565,7 @@ public class Q00219_TestimonyOfFate extends Quest
|
||||
{
|
||||
htmltext = "30210-02.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case TETRARCH_THIFIELL:
|
||||
{
|
||||
|
@@ -314,19 +314,16 @@ public class Q00221_TestimonyOfProsperity extends Quest
|
||||
case MANDRAGORA_BLOSSOM:
|
||||
case MANDRAGORA_SPROUT2:
|
||||
{
|
||||
if (hasQuestItems(killer, RING_OF_TESTIMONY_1ST, BRIGHTS_LIST) && !hasQuestItems(killer, EMILYS_RECIPE))
|
||||
if (hasQuestItems(killer, RING_OF_TESTIMONY_1ST, BRIGHTS_LIST) && !hasQuestItems(killer, EMILYS_RECIPE) && (getQuestItemsCount(killer, MANDRAGORA_PETAL) < 20))
|
||||
{
|
||||
if ((getQuestItemsCount(killer, MANDRAGORA_PETAL) < 20))
|
||||
giveItems(killer, MANDRAGORA_PETAL, 1);
|
||||
if (getQuestItemsCount(killer, MANDRAGORA_PETAL) == 20)
|
||||
{
|
||||
giveItems(killer, MANDRAGORA_PETAL, 1);
|
||||
if (getQuestItemsCount(killer, MANDRAGORA_PETAL) == 20)
|
||||
{
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
|
||||
}
|
||||
else
|
||||
{
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||
}
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
|
||||
}
|
||||
else
|
||||
{
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -336,89 +333,77 @@ public class Q00221_TestimonyOfProsperity extends Quest
|
||||
case MARSH_STAKATO_SOLDIER:
|
||||
case MARSH_STAKATO_DRONE:
|
||||
{
|
||||
if (hasQuestItems(killer, RING_OF_TESTIMONY_2ND, NIKOLAS_LIST) && !hasAtLeastOneQuestItem(killer, CLAY_DOUGH, PATTERN_OF_KEYHOLE))
|
||||
if (hasQuestItems(killer, RING_OF_TESTIMONY_2ND, NIKOLAS_LIST) && !hasAtLeastOneQuestItem(killer, CLAY_DOUGH, PATTERN_OF_KEYHOLE) && (getQuestItemsCount(killer, STAKATO_SHELL) < 20))
|
||||
{
|
||||
if ((getQuestItemsCount(killer, STAKATO_SHELL) < 20))
|
||||
giveItems(killer, STAKATO_SHELL, 1);
|
||||
if (getQuestItemsCount(killer, STAKATO_SHELL) == 20)
|
||||
{
|
||||
giveItems(killer, STAKATO_SHELL, 1);
|
||||
if (getQuestItemsCount(killer, STAKATO_SHELL) == 20)
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
|
||||
if ((getQuestItemsCount(killer, TOAD_LORD_SAC) >= 10) && (getQuestItemsCount(killer, MARSH_SPIDER_THORN) >= 10))
|
||||
{
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
|
||||
if ((getQuestItemsCount(killer, TOAD_LORD_SAC) >= 10) && (getQuestItemsCount(killer, MARSH_SPIDER_THORN) >= 10))
|
||||
{
|
||||
qs.setCond(8);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||
qs.setCond(8);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case GIANT_CRIMSON_ANT:
|
||||
{
|
||||
if (hasQuestItems(killer, RING_OF_TESTIMONY_1ST, BRIGHTS_LIST) && !hasQuestItems(killer, EMILYS_RECIPE))
|
||||
if (hasQuestItems(killer, RING_OF_TESTIMONY_1ST, BRIGHTS_LIST) && !hasQuestItems(killer, EMILYS_RECIPE) && (getQuestItemsCount(killer, CRIMSON_MOSS) < 10))
|
||||
{
|
||||
if ((getQuestItemsCount(killer, CRIMSON_MOSS) < 10))
|
||||
giveItems(killer, CRIMSON_MOSS, 1);
|
||||
if (getQuestItemsCount(killer, CRIMSON_MOSS) == 10)
|
||||
{
|
||||
giveItems(killer, CRIMSON_MOSS, 1);
|
||||
if (getQuestItemsCount(killer, CRIMSON_MOSS) == 10)
|
||||
{
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
|
||||
}
|
||||
else
|
||||
{
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||
}
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
|
||||
}
|
||||
else
|
||||
{
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case TOAD_LORD:
|
||||
{
|
||||
if (hasQuestItems(killer, RING_OF_TESTIMONY_2ND, NIKOLAS_LIST) && !hasAtLeastOneQuestItem(killer, CLAY_DOUGH, PATTERN_OF_KEYHOLE))
|
||||
if (hasQuestItems(killer, RING_OF_TESTIMONY_2ND, NIKOLAS_LIST) && !hasAtLeastOneQuestItem(killer, CLAY_DOUGH, PATTERN_OF_KEYHOLE) && (getQuestItemsCount(killer, TOAD_LORD_SAC) < 10))
|
||||
{
|
||||
if ((getQuestItemsCount(killer, TOAD_LORD_SAC) < 10))
|
||||
giveItems(killer, TOAD_LORD_SAC, 1);
|
||||
if (getQuestItemsCount(killer, TOAD_LORD_SAC) == 10)
|
||||
{
|
||||
giveItems(killer, TOAD_LORD_SAC, 1);
|
||||
if (getQuestItemsCount(killer, TOAD_LORD_SAC) == 10)
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
|
||||
if ((getQuestItemsCount(killer, STAKATO_SHELL) >= 20) && (getQuestItemsCount(killer, MARSH_SPIDER_THORN) >= 10))
|
||||
{
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
|
||||
if ((getQuestItemsCount(killer, STAKATO_SHELL) >= 20) && (getQuestItemsCount(killer, MARSH_SPIDER_THORN) >= 10))
|
||||
{
|
||||
qs.setCond(8);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||
qs.setCond(8);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case MARSH_SPIDER:
|
||||
{
|
||||
if (hasQuestItems(killer, RING_OF_TESTIMONY_2ND, NIKOLAS_LIST) && !hasAtLeastOneQuestItem(killer, CLAY_DOUGH, PATTERN_OF_KEYHOLE))
|
||||
if (hasQuestItems(killer, RING_OF_TESTIMONY_2ND, NIKOLAS_LIST) && !hasAtLeastOneQuestItem(killer, CLAY_DOUGH, PATTERN_OF_KEYHOLE) && (getQuestItemsCount(killer, MARSH_SPIDER_THORN) < 10))
|
||||
{
|
||||
if ((getQuestItemsCount(killer, MARSH_SPIDER_THORN) < 10))
|
||||
giveItems(killer, MARSH_SPIDER_THORN, 1);
|
||||
if (getQuestItemsCount(killer, MARSH_SPIDER_THORN) == 10)
|
||||
{
|
||||
giveItems(killer, MARSH_SPIDER_THORN, 1);
|
||||
if (getQuestItemsCount(killer, MARSH_SPIDER_THORN) == 10)
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
|
||||
if ((getQuestItemsCount(killer, STAKATO_SHELL) >= 20) && (getQuestItemsCount(killer, TOAD_LORD_SAC) >= 10))
|
||||
{
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
|
||||
if ((getQuestItemsCount(killer, STAKATO_SHELL) >= 20) && (getQuestItemsCount(killer, TOAD_LORD_SAC) >= 10))
|
||||
{
|
||||
qs.setCond(8);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||
qs.setCond(8);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@@ -199,19 +199,16 @@ public class Q00223_TestOfTheChampion extends Quest
|
||||
case 0:
|
||||
{
|
||||
npc.getVariables().set("lastAttacker", attacker.getObjectId());
|
||||
if (hasQuestItems(attacker, WHITE_ROSE_INSIGNIA) && (getQuestItemsCount(attacker, HARPYS_EGG) < 30))
|
||||
if (hasQuestItems(attacker, WHITE_ROSE_INSIGNIA) && (getQuestItemsCount(attacker, HARPYS_EGG) < 30) && getRandomBoolean())
|
||||
{
|
||||
if (getRandomBoolean())
|
||||
if (getRandom(10) < 7)
|
||||
{
|
||||
if (getRandom(10) < 7)
|
||||
{
|
||||
addAttackPlayerDesire(addSpawn(HARPY_MATRIARCH, npc, true, 0, false), attacker);
|
||||
}
|
||||
else
|
||||
{
|
||||
addAttackPlayerDesire(addSpawn(HARPY_MATRIARCH, npc, true, 0, false), attacker);
|
||||
addAttackPlayerDesire(addSpawn(HARPY_MATRIARCH, npc, true, 0, false), attacker);
|
||||
}
|
||||
addAttackPlayerDesire(addSpawn(HARPY_MATRIARCH, npc, true, 0, false), attacker);
|
||||
}
|
||||
else
|
||||
{
|
||||
addAttackPlayerDesire(addSpawn(HARPY_MATRIARCH, npc, true, 0, false), attacker);
|
||||
addAttackPlayerDesire(addSpawn(HARPY_MATRIARCH, npc, true, 0, false), attacker);
|
||||
}
|
||||
}
|
||||
npc.setScriptValue(1);
|
||||
@@ -232,19 +229,16 @@ public class Q00223_TestOfTheChampion extends Quest
|
||||
case 0:
|
||||
{
|
||||
npc.getVariables().set("lastAttacker", attacker.getObjectId());
|
||||
if (hasQuestItems(attacker, MOUENS_1ST_ORDER) && (getQuestItemsCount(attacker, ROAD_RATMAN_HEAD) < 10))
|
||||
if (hasQuestItems(attacker, MOUENS_1ST_ORDER) && (getQuestItemsCount(attacker, ROAD_RATMAN_HEAD) < 10) && getRandomBoolean())
|
||||
{
|
||||
if (getRandomBoolean())
|
||||
if (getRandom(10) < 7)
|
||||
{
|
||||
if (getRandom(10) < 7)
|
||||
{
|
||||
addAttackPlayerDesire(addSpawn(ROAD_COLLECTOR, npc, true, 0, false), attacker);
|
||||
}
|
||||
else
|
||||
{
|
||||
addAttackPlayerDesire(addSpawn(ROAD_COLLECTOR, npc, true, 0, false), attacker);
|
||||
addAttackPlayerDesire(addSpawn(ROAD_COLLECTOR, npc, true, 0, false), attacker);
|
||||
}
|
||||
addAttackPlayerDesire(addSpawn(ROAD_COLLECTOR, npc, true, 0, false), attacker);
|
||||
}
|
||||
else
|
||||
{
|
||||
addAttackPlayerDesire(addSpawn(ROAD_COLLECTOR, npc, true, 0, false), attacker);
|
||||
addAttackPlayerDesire(addSpawn(ROAD_COLLECTOR, npc, true, 0, false), attacker);
|
||||
}
|
||||
}
|
||||
npc.setScriptValue(1);
|
||||
@@ -265,12 +259,9 @@ public class Q00223_TestOfTheChampion extends Quest
|
||||
case 0:
|
||||
{
|
||||
npc.getVariables().set("lastAttacker", attacker.getObjectId());
|
||||
if (hasQuestItems(attacker, IRON_ROSE_RING) && (getQuestItemsCount(attacker, BLOODY_AXE_HEAD) < 10))
|
||||
if (hasQuestItems(attacker, IRON_ROSE_RING) && (getQuestItemsCount(attacker, BLOODY_AXE_HEAD) < 10) && getRandomBoolean())
|
||||
{
|
||||
if (getRandomBoolean())
|
||||
{
|
||||
addAttackPlayerDesire(addSpawn(BLOODY_AXE_ELITE, npc, true, 0, false), attacker);
|
||||
}
|
||||
addAttackPlayerDesire(addSpawn(BLOODY_AXE_ELITE, npc, true, 0, false), attacker);
|
||||
}
|
||||
npc.setScriptValue(1);
|
||||
break;
|
||||
|
@@ -73,7 +73,7 @@ public class Q00225_TestOfTheSearcher extends Quest
|
||||
private static final int HANGMAN_TREE = 20144;
|
||||
private static final int ROAD_SCAVENGER = 20551;
|
||||
private static final int GIANT_FUNGUS = 20555;
|
||||
private static final int DELU_lIZARDMAN_SHAMAN = 20781;
|
||||
private static final int DELU_LIZARDMAN_SHAMAN = 20781;
|
||||
// Quest Monster
|
||||
private static final int NEER_BODYGUARD = 27092;
|
||||
private static final int DELU_CHIEF_KALKIS = 27093;
|
||||
@@ -85,8 +85,8 @@ public class Q00225_TestOfTheSearcher extends Quest
|
||||
super(225);
|
||||
addStartNpc(MASTER_LUTHER);
|
||||
addTalkId(MASTER_LUTHER, CAPTAIN_ALEX, TYRA, TREE, STRONG_WOODEN_CHEST, MILITIAMAN_LEIRYNN, DRUNKARD_BORYS, BODYGUARD_JAX);
|
||||
addKillId(HANGMAN_TREE, ROAD_SCAVENGER, GIANT_FUNGUS, DELU_lIZARDMAN_SHAMAN, NEER_BODYGUARD, DELU_CHIEF_KALKIS);
|
||||
addAttackId(DELU_lIZARDMAN_SHAMAN);
|
||||
addKillId(HANGMAN_TREE, ROAD_SCAVENGER, GIANT_FUNGUS, DELU_LIZARDMAN_SHAMAN, NEER_BODYGUARD, DELU_CHIEF_KALKIS);
|
||||
addAttackId(DELU_LIZARDMAN_SHAMAN);
|
||||
registerQuestItems(LUTHERS_LETTER, ALEXS_WARRANT, LEIRYNNS_1ST_ORDER, DELU_TOTEM, LEIRYNNS_2ND_ORDER, CHIEF_KALKIS_FANG, LEIRYNNS_REPORT, STRINGE_MAP, LAMBERTS_MAP, ALEXS_LETTER, ALEXS_ORDER, WINE_CATALOG, TYRAS_CONTRACT, RED_SPORE_DUST, MALRUKIAN_WINE, OLD_ORDER, JAXS_DIARY, TORN_MAP_PIECE_1ST, TORN_MAP_PIECE_2ND, SOLTS_MAP, MAKELS_MAP, COMBINED_MAP, RUSTED_KEY, GOLD_BAR, ALEXS_RECOMMEND);
|
||||
}
|
||||
|
||||
@@ -190,13 +190,10 @@ public class Q00225_TestOfTheSearcher extends Quest
|
||||
public String onAttack(Npc npc, PlayerInstance attacker, int damage, boolean isSummon)
|
||||
{
|
||||
final QuestState qs = getQuestState(attacker, false);
|
||||
if ((qs != null) && qs.isStarted())
|
||||
if ((qs != null) && qs.isStarted() && npc.isScriptValue(0) && hasQuestItems(attacker, LEIRYNNS_1ST_ORDER))
|
||||
{
|
||||
if (npc.isScriptValue(0) && hasQuestItems(attacker, LEIRYNNS_1ST_ORDER))
|
||||
{
|
||||
npc.setScriptValue(1);
|
||||
addAttackPlayerDesire(addSpawn(NEER_BODYGUARD, npc, true, 200000), attacker);
|
||||
}
|
||||
npc.setScriptValue(1);
|
||||
addAttackPlayerDesire(addSpawn(NEER_BODYGUARD, npc, true, 200000), attacker);
|
||||
}
|
||||
return super.onAttack(npc, attacker, damage, isSummon);
|
||||
}
|
||||
@@ -272,7 +269,7 @@ public class Q00225_TestOfTheSearcher extends Quest
|
||||
}
|
||||
break;
|
||||
}
|
||||
case DELU_lIZARDMAN_SHAMAN:
|
||||
case DELU_LIZARDMAN_SHAMAN:
|
||||
{
|
||||
if (hasQuestItems(killer, LEIRYNNS_1ST_ORDER) && (getQuestItemsCount(killer, DELU_TOTEM) < 10))
|
||||
{
|
||||
|
@@ -55,7 +55,7 @@ public class Q00227_TestOfTheReformer extends Quest
|
||||
private static final int LETTER_OF_INTRODUCTION = 2823;
|
||||
private static final int SLAS_LETTER = 2824;
|
||||
private static final int GREETINGS = 2825;
|
||||
private static final int Ol_MAHUM_MONEY = 2826;
|
||||
private static final int OL_MAHUM_MONEY = 2826;
|
||||
private static final int KATARIS_LETTER = 2827;
|
||||
private static final int NYAKURIS_LETTER = 2828;
|
||||
private static final int UNDEAD_LIST = 2829;
|
||||
@@ -110,7 +110,7 @@ public class Q00227_TestOfTheReformer extends Quest
|
||||
addAttackId(NAMELESS_REVENANT, CRIMSON_WEREWOLF);
|
||||
addKillId(MISERY_SKELETON, SKELETON_ARCHER, SKELETON_MARKSMAN, SKELETON_LORD, SILENT_HORROR, NAMELESS_REVENANT, ARURAUNE, OL_MAHUM_INSPECTOR, OL_MAHUM_BETRAYER, OL_MAHUM_BETRAYER, CRIMSON_WEREWOLF, KRUDEL_LIZARDMAN);
|
||||
addSpawnId(OL_MAHUM_PILGRIM, OL_MAHUM_INSPECTOR, OL_MAHUM_BETRAYER, CRIMSON_WEREWOLF, KRUDEL_LIZARDMAN);
|
||||
registerQuestItems(BOOK_OF_REFORM, LETTER_OF_INTRODUCTION, SLAS_LETTER, GREETINGS, Ol_MAHUM_MONEY, KATARIS_LETTER, NYAKURIS_LETTER, UNDEAD_LIST, RAMUSS_LETTER, RAMUSS_LETTER, RIPPED_DIARY, HUGE_NAIL, LETTER_OF_BETRAYER, BONE_FRAGMENT4, BONE_FRAGMENT5, BONE_FRAGMENT6, BONE_FRAGMENT7, BONE_FRAGMENT8, KAKANS_LETTER, LETTER_GREETINGS1, LETTER_GREETINGS2);
|
||||
registerQuestItems(BOOK_OF_REFORM, LETTER_OF_INTRODUCTION, SLAS_LETTER, GREETINGS, OL_MAHUM_MONEY, KATARIS_LETTER, NYAKURIS_LETTER, UNDEAD_LIST, RAMUSS_LETTER, RAMUSS_LETTER, RIPPED_DIARY, HUGE_NAIL, LETTER_OF_BETRAYER, BONE_FRAGMENT4, BONE_FRAGMENT5, BONE_FRAGMENT6, BONE_FRAGMENT7, BONE_FRAGMENT8, KAKANS_LETTER, LETTER_GREETINGS1, LETTER_GREETINGS2);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -186,8 +186,8 @@ public class Q00227_TestOfTheReformer extends Quest
|
||||
qs.setCond(12, true);
|
||||
if (npc.getSummonedNpcCount() < 1)
|
||||
{
|
||||
Npc pilgrim = addSpawn(OL_MAHUM_PILGRIM, -9282, -89975, -2331, 0, false, 0);
|
||||
Npc wolf = addSpawn(CRIMSON_WEREWOLF, -9382, -89852, -2333, 0, false, 0);
|
||||
final Npc pilgrim = addSpawn(OL_MAHUM_PILGRIM, -9282, -89975, -2331, 0, false, 0);
|
||||
final Npc wolf = addSpawn(CRIMSON_WEREWOLF, -9382, -89852, -2333, 0, false, 0);
|
||||
((Attackable) wolf).addDamageHate(pilgrim, 99999, 99999);
|
||||
wolf.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, pilgrim);
|
||||
}
|
||||
@@ -199,8 +199,8 @@ public class Q00227_TestOfTheReformer extends Quest
|
||||
qs.setCond(15, true);
|
||||
if (npc.getSummonedNpcCount() < 1)
|
||||
{
|
||||
Npc pilgrim = addSpawn(OL_MAHUM_PILGRIM, 125947, -180049, -1778, 0, false, 0);
|
||||
Npc lizard = addSpawn(KRUDEL_LIZARDMAN, 126019, -179983, -1781, 0, false, 0);
|
||||
final Npc pilgrim = addSpawn(OL_MAHUM_PILGRIM, 125947, -180049, -1778, 0, false, 0);
|
||||
final Npc lizard = addSpawn(KRUDEL_LIZARDMAN, 126019, -179983, -1781, 0, false, 0);
|
||||
((Attackable) lizard).addDamageHate(pilgrim, 99999, 99999);
|
||||
lizard.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, pilgrim);
|
||||
}
|
||||
@@ -475,9 +475,9 @@ public class Q00227_TestOfTheReformer extends Quest
|
||||
}
|
||||
else if (memoState == 10)
|
||||
{
|
||||
if (hasQuestItems(player, Ol_MAHUM_MONEY))
|
||||
if (hasQuestItems(player, OL_MAHUM_MONEY))
|
||||
{
|
||||
takeItems(player, Ol_MAHUM_MONEY, 1);
|
||||
takeItems(player, OL_MAHUM_MONEY, 1);
|
||||
giveItems(player, GREETINGS, 1);
|
||||
giveItems(player, LETTER_GREETINGS1, 1);
|
||||
giveItems(player, LETTER_GREETINGS2, 1);
|
||||
@@ -553,8 +553,8 @@ public class Q00227_TestOfTheReformer extends Quest
|
||||
qs.setCond(6, true);
|
||||
if (npc.getSummonedNpcCount() < 1)
|
||||
{
|
||||
Npc pilgrim = addSpawn(OL_MAHUM_PILGRIM, -4015, 40141, -3664, 0, false, 0);
|
||||
Npc inspector = addSpawn(OL_MAHUM_INSPECTOR, -4034, 40201, -3665, 0, false, 0);
|
||||
final Npc pilgrim = addSpawn(OL_MAHUM_PILGRIM, -4015, 40141, -3664, 0, false, 0);
|
||||
final Npc inspector = addSpawn(OL_MAHUM_INSPECTOR, -4034, 40201, -3665, 0, false, 0);
|
||||
((Attackable) inspector).addDamageHate(pilgrim, 99999, 99999);
|
||||
inspector.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, pilgrim);
|
||||
}
|
||||
@@ -638,7 +638,7 @@ public class Q00227_TestOfTheReformer extends Quest
|
||||
{
|
||||
if (memoState == 7)
|
||||
{
|
||||
giveItems(player, Ol_MAHUM_MONEY, 1);
|
||||
giveItems(player, OL_MAHUM_MONEY, 1);
|
||||
qs.setMemoState(8);
|
||||
htmltext = "30732-01.html";
|
||||
}
|
||||
|
@@ -221,38 +221,32 @@ public class Q00228_TestOfMagus extends Quest
|
||||
}
|
||||
case WYRM:
|
||||
{
|
||||
if (hasQuestItems(killer, SCORE_OF_ELEMENTS, SYLPH_CHARM) && (getQuestItemsCount(killer, WYRMS_WINGBONE) < 10))
|
||||
if (hasQuestItems(killer, SCORE_OF_ELEMENTS, SYLPH_CHARM) && (getQuestItemsCount(killer, WYRMS_WINGBONE) < 10) && getRandomBoolean())
|
||||
{
|
||||
if (getRandom(100) < 50)
|
||||
giveItems(killer, WYRMS_WINGBONE, 1);
|
||||
if (getQuestItemsCount(killer, WYRMS_WINGBONE) >= 10)
|
||||
{
|
||||
giveItems(killer, WYRMS_WINGBONE, 1);
|
||||
if (getQuestItemsCount(killer, WYRMS_WINGBONE) >= 10)
|
||||
{
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
|
||||
}
|
||||
else
|
||||
{
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||
}
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
|
||||
}
|
||||
else
|
||||
{
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case WINDSUS:
|
||||
{
|
||||
if (hasQuestItems(killer, SCORE_OF_ELEMENTS, SYLPH_CHARM) && (getQuestItemsCount(killer, WINDSUS_MANE) < 10))
|
||||
if (hasQuestItems(killer, SCORE_OF_ELEMENTS, SYLPH_CHARM) && (getQuestItemsCount(killer, WINDSUS_MANE) < 10) && getRandomBoolean())
|
||||
{
|
||||
if (getRandom(100) < 50)
|
||||
giveItems(killer, WINDSUS_MANE, 1);
|
||||
if (getQuestItemsCount(killer, WINDSUS_MANE) >= 10)
|
||||
{
|
||||
giveItems(killer, WINDSUS_MANE, 1);
|
||||
if (getQuestItemsCount(killer, WINDSUS_MANE) >= 10)
|
||||
{
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
|
||||
}
|
||||
else
|
||||
{
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||
}
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
|
||||
}
|
||||
else
|
||||
{
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -349,19 +343,16 @@ public class Q00228_TestOfMagus extends Quest
|
||||
}
|
||||
case GHOST_FIRE:
|
||||
{
|
||||
if (hasQuestItems(killer, SCORE_OF_ELEMENTS, SALAMANDER_CHARM) && (getQuestItemsCount(killer, FLAME_CRYSTAL) < 5))
|
||||
if (hasQuestItems(killer, SCORE_OF_ELEMENTS, SALAMANDER_CHARM) && (getQuestItemsCount(killer, FLAME_CRYSTAL) < 5) && getRandomBoolean())
|
||||
{
|
||||
if (getRandom(100) < 50)
|
||||
giveItems(killer, FLAME_CRYSTAL, 1);
|
||||
if (getQuestItemsCount(killer, FLAME_CRYSTAL) >= 5)
|
||||
{
|
||||
giveItems(killer, FLAME_CRYSTAL, 1);
|
||||
if (getQuestItemsCount(killer, FLAME_CRYSTAL) >= 5)
|
||||
{
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
|
||||
}
|
||||
else
|
||||
{
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||
}
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
|
||||
}
|
||||
else
|
||||
{
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -380,7 +371,7 @@ public class Q00228_TestOfMagus extends Quest
|
||||
{
|
||||
if (npc.getId() == BARD_RUKAL)
|
||||
{
|
||||
if ((player.getClassId() == ClassId.WIZARD) || (player.getClassId() == ClassId.ELVEN_WIZARD) || ((player.getClassId() == ClassId.DARK_WIZARD)))
|
||||
if ((player.getClassId() == ClassId.WIZARD) || (player.getClassId() == ClassId.ELVEN_WIZARD) || (player.getClassId() == ClassId.DARK_WIZARD))
|
||||
{
|
||||
if (player.getLevel() < MIN_LVL)
|
||||
{
|
||||
|
@@ -339,38 +339,32 @@ public class Q00229_TestOfWitchcraft extends Quest
|
||||
{
|
||||
case DIRE_WYRM:
|
||||
{
|
||||
if (hasQuestItems(killer, ALEXANDRIAS_BOOK, IKERS_LIST))
|
||||
if (hasQuestItems(killer, ALEXANDRIAS_BOOK, IKERS_LIST) && (getQuestItemsCount(killer, DIRE_WYRM_FANG) < 20))
|
||||
{
|
||||
if (getQuestItemsCount(killer, DIRE_WYRM_FANG) < 20)
|
||||
giveItems(killer, DIRE_WYRM_FANG, 1);
|
||||
if (getQuestItemsCount(killer, DIRE_WYRM_FANG) >= 20)
|
||||
{
|
||||
giveItems(killer, DIRE_WYRM_FANG, 1);
|
||||
if (getQuestItemsCount(killer, DIRE_WYRM_FANG) >= 20)
|
||||
{
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
|
||||
}
|
||||
else
|
||||
{
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||
}
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
|
||||
}
|
||||
else
|
||||
{
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case ENCHANTED_STONE_GOLEM:
|
||||
{
|
||||
if (hasQuestItems(killer, ALEXANDRIAS_BOOK, IKERS_LIST))
|
||||
if (hasQuestItems(killer, ALEXANDRIAS_BOOK, IKERS_LIST) && (getQuestItemsCount(killer, ENCHANTED_STONE_GOLEM_HEARTSTONE) < 20))
|
||||
{
|
||||
if (getQuestItemsCount(killer, ENCHANTED_STONE_GOLEM_HEARTSTONE) < 20)
|
||||
giveItems(killer, ENCHANTED_STONE_GOLEM_HEARTSTONE, 1);
|
||||
if (getQuestItemsCount(killer, ENCHANTED_STONE_GOLEM_HEARTSTONE) >= 20)
|
||||
{
|
||||
giveItems(killer, ENCHANTED_STONE_GOLEM_HEARTSTONE, 1);
|
||||
if (getQuestItemsCount(killer, ENCHANTED_STONE_GOLEM_HEARTSTONE) >= 20)
|
||||
{
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
|
||||
}
|
||||
else
|
||||
{
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||
}
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
|
||||
}
|
||||
else
|
||||
{
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -382,19 +376,16 @@ public class Q00229_TestOfWitchcraft extends Quest
|
||||
case LETO_LIZARDMAN_SHAMAN:
|
||||
case LETO_LIZARDMAN_OVERLORD:
|
||||
{
|
||||
if (hasQuestItems(killer, ALEXANDRIAS_BOOK, IKERS_LIST))
|
||||
if (hasQuestItems(killer, ALEXANDRIAS_BOOK, IKERS_LIST) && (getQuestItemsCount(killer, LETO_LIZARDMAN_CHARM) < 20))
|
||||
{
|
||||
if (getQuestItemsCount(killer, LETO_LIZARDMAN_CHARM) < 20)
|
||||
giveItems(killer, LETO_LIZARDMAN_CHARM, 1);
|
||||
if (getQuestItemsCount(killer, LETO_LIZARDMAN_CHARM) >= 20)
|
||||
{
|
||||
giveItems(killer, LETO_LIZARDMAN_CHARM, 1);
|
||||
if (getQuestItemsCount(killer, LETO_LIZARDMAN_CHARM) >= 20)
|
||||
{
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
|
||||
}
|
||||
else
|
||||
{
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||
}
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
|
||||
}
|
||||
else
|
||||
{
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -402,19 +393,16 @@ public class Q00229_TestOfWitchcraft extends Quest
|
||||
case TAMLIN_ORC:
|
||||
case TAMLIN_ORC_ARCHER:
|
||||
{
|
||||
if (hasQuestItems(killer, VADINS_CRUCIFIX))
|
||||
if (hasQuestItems(killer, VADINS_CRUCIFIX) && (getRandom(100) < 50) && (getQuestItemsCount(killer, TAMLIN_ORC_AMULET) < 20))
|
||||
{
|
||||
if ((getRandom(100) < 50) && (getQuestItemsCount(killer, TAMLIN_ORC_AMULET) < 20))
|
||||
giveItems(killer, TAMLIN_ORC_AMULET, 1);
|
||||
if (getQuestItemsCount(killer, TAMLIN_ORC_AMULET) >= 20)
|
||||
{
|
||||
giveItems(killer, TAMLIN_ORC_AMULET, 1);
|
||||
if (getQuestItemsCount(killer, TAMLIN_ORC_AMULET) >= 20)
|
||||
{
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
|
||||
}
|
||||
else
|
||||
{
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||
}
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
|
||||
}
|
||||
else
|
||||
{
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -462,18 +450,15 @@ public class Q00229_TestOfWitchcraft extends Quest
|
||||
}
|
||||
case DREVANUL_PRINCE_ZERUEL:
|
||||
{
|
||||
if (hasQuestItems(killer, ORIMS_INSTRUCTIONS, BRIMSTONE_2ND, SWORD_OF_BINDING, SOULTRAP_CRYSTAL))
|
||||
if (hasQuestItems(killer, ORIMS_INSTRUCTIONS, BRIMSTONE_2ND, SWORD_OF_BINDING, SOULTRAP_CRYSTAL) && (npc.getKillingBlowWeapon() == SWORD_OF_BINDING))
|
||||
{
|
||||
if (npc.getKillingBlowWeapon() == SWORD_OF_BINDING)
|
||||
{
|
||||
npc.broadcastPacket(new NpcSay(npc, ChatType.NPC_GENERAL, NpcStringId.NO_I_HAVEN_T_COMPLETELY_FINISHED_THE_COMMAND_FOR_DESTRUCTION_AND_SLAUGHTER_YET));
|
||||
takeItems(killer, SOULTRAP_CRYSTAL, 1);
|
||||
giveItems(killer, PURGATORY_KEY, 1);
|
||||
giveItems(killer, ZERUEL_BIND_CRYSTAL, 1);
|
||||
takeItems(killer, BRIMSTONE_2ND, 1);
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||
qs.setCond(10);
|
||||
}
|
||||
npc.broadcastPacket(new NpcSay(npc, ChatType.NPC_GENERAL, NpcStringId.NO_I_HAVEN_T_COMPLETELY_FINISHED_THE_COMMAND_FOR_DESTRUCTION_AND_SLAUGHTER_YET));
|
||||
takeItems(killer, SOULTRAP_CRYSTAL, 1);
|
||||
giveItems(killer, PURGATORY_KEY, 1);
|
||||
giveItems(killer, ZERUEL_BIND_CRYSTAL, 1);
|
||||
takeItems(killer, BRIMSTONE_2ND, 1);
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||
qs.setCond(10);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -822,7 +807,7 @@ public class Q00229_TestOfWitchcraft extends Quest
|
||||
|
||||
private boolean checkWeapon(PlayerInstance player)
|
||||
{
|
||||
ItemInstance weapon = player.getActiveWeaponInstance();
|
||||
return ((weapon != null) && ((weapon.getId() == SWORD_OF_BINDING)));
|
||||
final ItemInstance weapon = player.getActiveWeaponInstance();
|
||||
return ((weapon != null) && (weapon.getId() == SWORD_OF_BINDING));
|
||||
}
|
||||
}
|
@@ -520,6 +520,7 @@ public class Q00230_TestOfTheSummoner extends Quest
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SHADOW_TUREN:
|
||||
{
|
||||
@@ -563,6 +564,7 @@ public class Q00230_TestOfTheSummoner extends Quest
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case MIMI_THE_CAT:
|
||||
{
|
||||
@@ -606,6 +608,7 @@ public class Q00230_TestOfTheSummoner extends Quest
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case UNICORN_PHANTASM:
|
||||
{
|
||||
@@ -649,6 +652,7 @@ public class Q00230_TestOfTheSummoner extends Quest
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SILHOUETTE_TILFO:
|
||||
{
|
||||
@@ -692,6 +696,7 @@ public class Q00230_TestOfTheSummoner extends Quest
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return super.onAttack(npc, attacker, damage, isSummon);
|
||||
|
@@ -258,38 +258,32 @@ public class Q00232_TestOfTheLord extends Quest
|
||||
case BREKA_ORC_SHAMAN:
|
||||
case BREKA_ORC_OVERLORD:
|
||||
{
|
||||
if (hasQuestItems(killer, ORDEAL_NECKLACE, VARKEES_CHARM, MANAKIAS_ORDERS) && !hasAtLeastOneQuestItem(killer, HUGE_ORC_FANG, MANAKIAS_AMULET))
|
||||
if (hasQuestItems(killer, ORDEAL_NECKLACE, VARKEES_CHARM, MANAKIAS_ORDERS) && !hasAtLeastOneQuestItem(killer, HUGE_ORC_FANG, MANAKIAS_AMULET) && (getQuestItemsCount(killer, BREKA_ORC_FANG) < 20))
|
||||
{
|
||||
if (getQuestItemsCount(killer, BREKA_ORC_FANG) < 20)
|
||||
giveItems(killer, BREKA_ORC_FANG, 2);
|
||||
if (getQuestItemsCount(killer, BREKA_ORC_FANG) >= 20)
|
||||
{
|
||||
giveItems(killer, BREKA_ORC_FANG, 2);
|
||||
if (getQuestItemsCount(killer, BREKA_ORC_FANG) >= 20)
|
||||
{
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
|
||||
}
|
||||
else
|
||||
{
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||
}
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
|
||||
}
|
||||
else
|
||||
{
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case ENCHANTED_MONSTEREYE:
|
||||
{
|
||||
if (hasQuestItems(killer, ORDEAL_NECKLACE, CHIANTA_CHARM) && !hasQuestItems(killer, MONSTER_EYE_WOODCARVING))
|
||||
if (hasQuestItems(killer, ORDEAL_NECKLACE, CHIANTA_CHARM) && !hasQuestItems(killer, MONSTER_EYE_WOODCARVING) && (getQuestItemsCount(killer, ENCHANTED_MONSTER_CORNEA) < 20))
|
||||
{
|
||||
if (getQuestItemsCount(killer, ENCHANTED_MONSTER_CORNEA) < 20)
|
||||
giveItems(killer, ENCHANTED_MONSTER_CORNEA, 1);
|
||||
if (getQuestItemsCount(killer, ENCHANTED_MONSTER_CORNEA) >= 20)
|
||||
{
|
||||
giveItems(killer, ENCHANTED_MONSTER_CORNEA, 1);
|
||||
if (getQuestItemsCount(killer, ENCHANTED_MONSTER_CORNEA) >= 20)
|
||||
{
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
|
||||
}
|
||||
else
|
||||
{
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||
}
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
|
||||
}
|
||||
else
|
||||
{
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -301,19 +295,16 @@ public class Q00232_TestOfTheLord extends Quest
|
||||
case TIMAK_ORC_SHAMAN:
|
||||
case TIMAK_ORC_OVERLORD:
|
||||
{
|
||||
if (hasQuestItems(killer, ORDEAL_NECKLACE, HATOS_CHARM) && !hasQuestItems(killer, SWORD_INTO_SKULL))
|
||||
if (hasQuestItems(killer, ORDEAL_NECKLACE, HATOS_CHARM) && !hasQuestItems(killer, SWORD_INTO_SKULL) && (getQuestItemsCount(killer, TIMAK_ORC_SKULL) < 10))
|
||||
{
|
||||
if (getQuestItemsCount(killer, TIMAK_ORC_SKULL) < 10)
|
||||
giveItems(killer, TIMAK_ORC_SKULL, 1);
|
||||
if (getQuestItemsCount(killer, TIMAK_ORC_SKULL) >= 10)
|
||||
{
|
||||
giveItems(killer, TIMAK_ORC_SKULL, 1);
|
||||
if (getQuestItemsCount(killer, TIMAK_ORC_SKULL) >= 10)
|
||||
{
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
|
||||
}
|
||||
else
|
||||
{
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||
}
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
|
||||
}
|
||||
else
|
||||
{
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
@@ -324,12 +324,9 @@ public class Q00233_TestOfTheWarSpirit extends Quest
|
||||
case TAMLIN_ORC:
|
||||
case TAMLIN_ORC_ARCHER:
|
||||
{
|
||||
if (hasQuestItems(killer, VENDETTA_TOTEM))
|
||||
if (hasQuestItems(killer, VENDETTA_TOTEM) && giveItemRandomly(killer, npc, TAMLIN_ORC_HEAD, 1, 13, 1.0, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, TAMLIN_ORC_HEAD, 1, 13, 1.0, true))
|
||||
{
|
||||
qs.setCond(4, true);
|
||||
}
|
||||
qs.setCond(4, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@@ -417,7 +417,7 @@ public class Q00255_Tutorial extends Quest
|
||||
return;
|
||||
}
|
||||
|
||||
QuestState qs = getQuestState(player, true);
|
||||
final QuestState qs = getQuestState(player, true);
|
||||
if ((qs != null) && (qs.getMemoState() < 4) && STARTING_VOICE_HTML.containsKey(player.getClassId().getId()))
|
||||
{
|
||||
startQuestTimer("start_newbie_tutorial", 5000, null, player);
|
||||
|
@@ -126,7 +126,7 @@ public class Q00259_RequestFromTheFarmOwner extends Quest
|
||||
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
|
||||
{
|
||||
final QuestState qs = getQuestState(killer, false);
|
||||
if(qs != null)
|
||||
if (qs != null)
|
||||
{
|
||||
giveItems(killer, SPIDER_SKIN, 1);
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||
|
@@ -75,12 +75,9 @@ public class Q00261_CollectorsDream extends Quest
|
||||
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
|
||||
{
|
||||
final QuestState qs = getQuestState(killer, false);
|
||||
if ((qs != null) && qs.isCond(1) && Util.checkIfInRange(Config.ALT_PARTY_RANGE, npc, killer, true))
|
||||
if ((qs != null) && qs.isCond(1) && Util.checkIfInRange(Config.ALT_PARTY_RANGE, npc, killer, true) && giveItemRandomly(killer, SPIDER_LEG, 1, MAX_LEG_COUNT, 1, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, SPIDER_LEG, 1, MAX_LEG_COUNT, 1, true))
|
||||
{
|
||||
qs.setCond(2);
|
||||
}
|
||||
qs.setCond(2);
|
||||
}
|
||||
return super.onKill(npc, killer, isSummon);
|
||||
}
|
||||
|
@@ -79,7 +79,7 @@ public class Q00262_TradeWithTheIvoryTower extends Quest
|
||||
}
|
||||
|
||||
final QuestState qs = getQuestState(partyMember, false);
|
||||
float chance = (MOBS_SAC.get(npc.getId()) * Config.RATE_QUEST_DROP);
|
||||
final float chance = (MOBS_SAC.get(npc.getId()) * Config.RATE_QUEST_DROP);
|
||||
if (getRandom(10) < chance)
|
||||
{
|
||||
rewardItems(partyMember, SPORE_SAC, 1);
|
||||
|
@@ -53,7 +53,7 @@ public class Q00267_WrathOfVerdure extends Quest
|
||||
{
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
String htmltext = null;
|
||||
if(qs != null)
|
||||
if (qs != null)
|
||||
{
|
||||
switch (event)
|
||||
{
|
||||
|
@@ -70,7 +70,7 @@ public class Q00271_ProofOfValor extends Quest
|
||||
if ((qs != null) && qs.isCond(1))
|
||||
{
|
||||
final long count = getQuestItemsCount(killer, KASHA_WOLF_FANG);
|
||||
int amount = ((getRandom(100) < 25) && (count < 49)) ? 2 : 1;
|
||||
final int amount = ((getRandom(100) < 25) && (count < 49)) ? 2 : 1;
|
||||
giveItems(killer, KASHA_WOLF_FANG, amount);
|
||||
if ((count + amount) >= 50)
|
||||
{
|
||||
|
@@ -63,7 +63,7 @@ public class Q00273_InvadersOfTheHolyLand extends Quest
|
||||
{
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
String htmltext = null;
|
||||
if(qs != null)
|
||||
if (qs != null)
|
||||
{
|
||||
switch (event)
|
||||
{
|
||||
@@ -93,7 +93,7 @@ public class Q00273_InvadersOfTheHolyLand extends Quest
|
||||
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
|
||||
{
|
||||
final QuestState qs = getQuestState(killer, false);
|
||||
if(qs != null)
|
||||
if (qs != null)
|
||||
{
|
||||
if (getRandom(100) <= MONSTERS.get(npc.getId()))
|
||||
{
|
||||
|
@@ -107,7 +107,7 @@ public class Q00293_TheHiddenVeins extends Quest
|
||||
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
|
||||
{
|
||||
final QuestState qs = getQuestState(killer, false);
|
||||
if(qs != null)
|
||||
if (qs != null)
|
||||
{
|
||||
final int chance = getRandom(100);
|
||||
if (chance > 50)
|
||||
|
@@ -65,12 +65,9 @@ public class Q00295_DreamingOfTheSkies extends Quest
|
||||
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
|
||||
{
|
||||
final QuestState qs = getQuestState(killer, false);
|
||||
if ((qs != null) && qs.isCond(1) && Util.checkIfInRange(Config.ALT_PARTY_RANGE, npc, killer, true))
|
||||
if ((qs != null) && qs.isCond(1) && Util.checkIfInRange(Config.ALT_PARTY_RANGE, npc, killer, true) && giveItemRandomly(killer, npc, FLOATING_STONE, (getRandom(100) > 25) ? 1 : 2, 50, 1.0, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, FLOATING_STONE, (getRandom(100) > 25) ? 1 : 2, 50, 1.0, true))
|
||||
{
|
||||
qs.setCond(2);
|
||||
}
|
||||
qs.setCond(2);
|
||||
}
|
||||
return super.onKill(npc, killer, isSummon);
|
||||
}
|
||||
|
@@ -89,7 +89,7 @@ public class Q00300_HuntingLetoLizardman extends Quest
|
||||
if (getQuestItemsCount(player, BRACELET_OF_LIZARDMAN) >= REQUIRED_BRACELET_COUNT)
|
||||
{
|
||||
takeItems(player, BRACELET_OF_LIZARDMAN, -1);
|
||||
int rand = getRandom(1000);
|
||||
final int rand = getRandom(1000);
|
||||
if (rand < 500)
|
||||
{
|
||||
giveItems(player, REWARD_ADENA);
|
||||
|
@@ -82,12 +82,9 @@ public class Q00313_CollectSpores extends Quest
|
||||
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
|
||||
{
|
||||
final QuestState qs = getQuestState(killer, false);
|
||||
if ((qs != null) && qs.isCond(1) && Util.checkIfInRange(Config.ALT_PARTY_RANGE, npc, killer, false))
|
||||
if ((qs != null) && qs.isCond(1) && Util.checkIfInRange(Config.ALT_PARTY_RANGE, npc, killer, false) && giveItemRandomly(killer, npc, SPORE_SAC, 1, REQUIRED_SAC_COUNT, 0.4, true))
|
||||
{
|
||||
if (giveItemRandomly(killer, npc, SPORE_SAC, 1, REQUIRED_SAC_COUNT, 0.4, true))
|
||||
{
|
||||
qs.setCond(2);
|
||||
}
|
||||
qs.setCond(2);
|
||||
}
|
||||
return super.onKill(npc, killer, isSummon);
|
||||
}
|
||||
|
@@ -81,19 +81,16 @@ public class Q00319_ScentOfDeath extends Quest
|
||||
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
|
||||
{
|
||||
final QuestState qs = getQuestState(killer, false);
|
||||
if ((qs != null) && Util.checkIfInRange(Config.ALT_PARTY_RANGE, npc, killer, false) && (getQuestItemsCount(killer, ZOMBIES_SKIN) < REQUIRED_ITEM_COUNT))
|
||||
if ((qs != null) && Util.checkIfInRange(Config.ALT_PARTY_RANGE, npc, killer, false) && (getQuestItemsCount(killer, ZOMBIES_SKIN) < REQUIRED_ITEM_COUNT) && (getRandom(10) > MIN_CHANCE))
|
||||
{
|
||||
if (getRandom(10) > MIN_CHANCE)
|
||||
giveItems(killer, ZOMBIES_SKIN, 1);
|
||||
if (getQuestItemsCount(killer, ZOMBIES_SKIN) < REQUIRED_ITEM_COUNT)
|
||||
{
|
||||
giveItems(killer, ZOMBIES_SKIN, 1);
|
||||
if (getQuestItemsCount(killer, ZOMBIES_SKIN) < REQUIRED_ITEM_COUNT)
|
||||
{
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||
}
|
||||
else
|
||||
{
|
||||
qs.setCond(2, true);
|
||||
}
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||
}
|
||||
else
|
||||
{
|
||||
qs.setCond(2, true);
|
||||
}
|
||||
}
|
||||
return super.onKill(npc, killer, isSummon);
|
||||
|
@@ -63,13 +63,10 @@ public class Q00324_SweetestVenom extends Quest
|
||||
{
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
String htmltext = null;
|
||||
if(qs != null)
|
||||
if ((qs != null) && event.equals("30351-04.htm"))
|
||||
{
|
||||
if (event.equals("30351-04.htm"))
|
||||
{
|
||||
qs.startQuest();
|
||||
htmltext = event;
|
||||
}
|
||||
qs.startQuest();
|
||||
htmltext = event;
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
@@ -112,19 +109,16 @@ public class Q00324_SweetestVenom extends Quest
|
||||
if ((qs != null) && qs.isCond(1))
|
||||
{
|
||||
long sacs = getQuestItemsCount(player, VENOM_SAC);
|
||||
if (sacs < REQUIRED_COUNT)
|
||||
if ((sacs < REQUIRED_COUNT) && (getRandom(100) < MONSTERS.get(npc.getId())))
|
||||
{
|
||||
if (getRandom(100) < MONSTERS.get(npc.getId()))
|
||||
giveItems(player, VENOM_SAC, 1);
|
||||
if ((++sacs) < REQUIRED_COUNT)
|
||||
{
|
||||
giveItems(player, VENOM_SAC, 1);
|
||||
if ((++sacs) < REQUIRED_COUNT)
|
||||
{
|
||||
playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||
}
|
||||
else
|
||||
{
|
||||
qs.setCond(2, true);
|
||||
}
|
||||
playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||
}
|
||||
else
|
||||
{
|
||||
qs.setCond(2, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -72,7 +72,7 @@ public class Q00326_VanquishRemnants extends Quest
|
||||
{
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
String htmltext = null;
|
||||
if(qs != null)
|
||||
if (qs != null)
|
||||
{
|
||||
switch (event)
|
||||
{
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user