Fixed unfinished items on the sylph quests.

Contributed by marciox25.
This commit is contained in:
MobiusDevelopment 2021-03-11 17:36:21 +00:00
parent b75c38a070
commit d347c59315
18 changed files with 424 additions and 88 deletions

View File

@ -101,7 +101,7 @@
</enchant>
<!-- Talisman of Aden -->
<enchant id="91756" maxEnchant="10">
<enchant id="91756" maxEnchant="10" safeEnchant="1">
<item id="91745" />
</enchant>
@ -153,6 +153,11 @@
<item id="93042" />
</enchant>
<!-- Adventurer's Talisman -->
<enchant id="95688" maxEnchant="10" safeEnchant="1">
<item id="91937" />
</enchant>
<!-- Cloak of Protection -->
<enchant id="93302" maxEnchant="10">
<item id="93301" />

View File

@ -18,6 +18,7 @@ package quests.Q10971_TalismanEnchant;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.holders.ItemHolder;
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
@ -32,7 +33,9 @@ public class Q10971_TalismanEnchant extends Quest
// NPC
private static final int CAPTAIN_BATHIS = 30332;
// Item
private static final int TALISMAN_OF_ADEN = 91745;
private static final ItemHolder TALISMAN_OF_ADEN = new ItemHolder(91745, 1);
private static final ItemHolder TALISMAN_OF_ADEN_ENCHANT = new ItemHolder(91756, 1);
// Misc
private static final int MIN_LEVEL = 25;
@ -69,6 +72,15 @@ public class Q10971_TalismanEnchant extends Quest
{
qs.startQuest();
player.sendPacket(new ExTutorialShowId(47));
// TODO: Find a better way to do this: Tempfix for not giving items when already have them in inventory (bugging abort and re-accepting).
if (player.getInventory().getItemsByItemId(TALISMAN_OF_ADEN.getId()).isEmpty())
{
giveItems(player, TALISMAN_OF_ADEN);
}
if (player.getInventory().getItemsByItemId(TALISMAN_OF_ADEN_ENCHANT.getId()).isEmpty())
{
giveItems(player, TALISMAN_OF_ADEN_ENCHANT);
}
htmltext = event;
break;
}
@ -88,7 +100,7 @@ public class Q10971_TalismanEnchant extends Quest
else if (qs.isStarted())
{
boolean foundEnchant = false;
SEARCH: for (ItemInstance item : player.getInventory().getItemsByItemId(TALISMAN_OF_ADEN))
SEARCH: for (ItemInstance item : player.getInventory().getItemsByItemId(TALISMAN_OF_ADEN.getId()))
{
if (item.getEnchantLevel() > 0)
{

View File

@ -77,8 +77,15 @@ public class Q10974_NewStylishEquipment extends Quest
case "30857-03.htm":
{
qs.startQuest();
giveItems(player, ENCHANT_SCROLL_ADVENTURER_SHEEP_HAT);
giveItems(player, ADVENTURER_SHEEP_HAT);
// TODO: Find a better way to do this: Tempfix for not giving items when already have them in inventory (bugging abort and re-accepting).
if (player.getInventory().getItemsByItemId(ADVENTURER_SHEEP_HAT.getId()).isEmpty())
{
giveItems(player, ADVENTURER_SHEEP_HAT);
}
if (player.getInventory().getItemsByItemId(ENCHANT_SCROLL_ADVENTURER_SHEEP_HAT.getId()).isEmpty())
{
giveItems(player, ENCHANT_SCROLL_ADVENTURER_SHEEP_HAT);
}
htmltext = event;
break;
}
@ -108,8 +115,15 @@ public class Q10974_NewStylishEquipment extends Quest
case "30857-05.html":
{
qs.startQuest();
giveItems(player, ENCHANT_SCROLL_ADVENTURER_BELT);
giveItems(player, ADVENTURER_BELT);
// TODO: Find a better way to do this: Tempfix for not giving items when already have them in inventory (bugging abort and re-accepting).
if (player.getInventory().getItemsByItemId(ADVENTURER_BELT.getId()).isEmpty())
{
giveItems(player, ADVENTURER_BELT);
}
if (player.getInventory().getItemsByItemId(ENCHANT_SCROLL_ADVENTURER_BELT.getId()).isEmpty())
{
giveItems(player, ENCHANT_SCROLL_ADVENTURER_BELT);
}
htmltext = event;
break;
}
@ -139,8 +153,15 @@ public class Q10974_NewStylishEquipment extends Quest
case "30857-07.html":
{
qs.startQuest();
giveItems(player, ENCHANT_SCROLL_ADVENTURER_CLOAK);
giveItems(player, ADVENTURER_CLOAK);
// TODO: Find a better way to do this: Tempfix for not giving items when already have them in inventory (bugging abort and re-accepting).
if (player.getInventory().getItemsByItemId(ADVENTURER_CLOAK.getId()).isEmpty())
{
giveItems(player, ADVENTURER_CLOAK);
}
if (player.getInventory().getItemsByItemId(ENCHANT_SCROLL_ADVENTURER_CLOAK.getId()).isEmpty())
{
giveItems(player, ENCHANT_SCROLL_ADVENTURER_CLOAK);
}
htmltext = event;
break;
}

View File

@ -303,12 +303,23 @@
</item>
<item id="91725" name="Scroll of Escape: Abandoned Camp" type="EtcItem">
<!-- Can be used to teleport to the Abandoned Camp. -->
<set name="icon" val="icon.etc_scroll_of_return_i04" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="material" val="PAPER" />
<set name="is_tradable" val="false" />
<set name="is_dropable" val="false" />
<set name="is_stackable" val="true" />
<set name="icon" val="icon.etc_scroll_of_return_i04" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="material" val="PAPER" />
<set name="weight" val="30" />
<set name="price" val="35000" />
<set name="is_stackable" val="true" />
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="commissionItemType" val="SCROLL_OTHER" />
<set name="is_tradable" val="false" />
<set name="is_dropable" val="false" />
<cond addName="1" msgId="113">
<player flyMounted="false" />
</cond>
<skills>
<skill id="51441" level="1" /> <!-- Scroll of Escape: Master Kerkir -->
</skills>
</item>
<item id="91726" name="Scroll of Escape: Windmill Hill" type="EtcItem">
<!-- Can be used to teleport to the Windmill Hill. -->
@ -321,12 +332,23 @@
</item>
<item id="91727" name="Scroll of Escape: Ruins of Agony" type="EtcItem">
<!-- Can be used to teleport to the Ruins of Agony. -->
<set name="icon" val="icon.etc_scroll_of_return_i04" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="material" val="PAPER" />
<set name="is_tradable" val="false" />
<set name="is_dropable" val="false" />
<set name="is_stackable" val="true" />
<set name="icon" val="icon.etc_scroll_of_return_i04" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="material" val="PAPER" />
<set name="weight" val="30" />
<set name="price" val="35000" />
<set name="is_stackable" val="true" />
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="commissionItemType" val="SCROLL_OTHER" />
<set name="is_tradable" val="false" />
<set name="is_dropable" val="false" />
<cond addName="1" msgId="113">
<player flyMounted="false" />
</cond>
<skills>
<skill id="51443" level="1" /> <!-- Scroll of Escape: Ruins of Agony -->
</skills>
</item>
<item id="91728" name="Reinforced Spear Chest" type="EtcItem">
<!-- Double-click to obtain the following items. -->

View File

@ -578,9 +578,11 @@
<set name="immediate_effect" val="true" />
<set name="material" val="GOLD" />
<set name="weight" val="120" />
<set name="enchant_limit" val="1" />
<set name="is_tradable" val="false" />
<set name="is_dropable" val="false" />
<set name="is_sellable" val="false" />
<set name="enchant_enabled" val="true" />
<set name="bodypart" val="deco1" />
</item>
<item id="91938" name="Primeval Isle's Prolongating Stone" type="EtcItem">

View File

@ -276,7 +276,29 @@
</skill>
<skill id="51441" toLevel="1" name="Scroll of Escape: Abandoned Camp">
<!-- A magical scroll that teleports to the Abandoned Camp. Cannot be exchanged, dropped, or sold. Can be stored in the private warehouse. -->
<operateType>A1</operateType>
<hitTime>500</hitTime>
<isMagic>2</isMagic> <!-- Static Skill -->
<itemConsumeCount>1</itemConsumeCount>
<itemConsumeId>91725</itemConsumeId>
<magicLevel>1</magicLevel>
<operateType>A1</operateType>
<magicCriticalRate>5</magicCriticalRate>
<targetType>SELF</targetType>
<affectScope>SINGLE</affectScope>
<conditions>
<condition name="OpAlignment">
<affectType>CASTER</affectType>
<alignment>LAWFUL</alignment>
</condition>
<condition name="OpCanEscape" />
</conditions>
<effects>
<effect name="Teleport">
<x>-46868</x>
<y>148086</y>
<z>-2968</z>
</effect>
</effects>
</skill>
<skill id="51442" toLevel="1" name="Scroll of Escape: Windmill Hill">
<!-- A magical scroll that teleports to the Windmill Hill. Cannot be exchanged, dropped, or sold. Can be stored in the private warehouse. -->
@ -284,7 +306,29 @@
</skill>
<skill id="51443" toLevel="1" name="Scroll of Escape: Ruins of Agony">
<!-- A magical scroll that teleports to the Ruins of Agony. Cannot be exchanged, dropped, or sold. Can be stored in the warehouse. -->
<operateType>A1</operateType>
<hitTime>500</hitTime>
<isMagic>2</isMagic> <!-- Static Skill -->
<itemConsumeCount>1</itemConsumeCount>
<itemConsumeId>91727</itemConsumeId>
<magicLevel>1</magicLevel>
<operateType>A1</operateType>
<magicCriticalRate>5</magicCriticalRate>
<targetType>SELF</targetType>
<affectScope>SINGLE</affectScope>
<conditions>
<condition name="OpAlignment">
<affectType>CASTER</affectType>
<alignment>LAWFUL</alignment>
</condition>
<condition name="OpCanEscape" />
</conditions>
<effects>
<effect name="Teleport">
<x>-42307</x>
<y>120810</y>
<z>-3368</z>
</effect>
</effects>
</skill>
<skill id="51444" toLevel="1" name="Reinforced Spear Chest">
<icon>icon.etc_treasure_box_i04</icon>

View File

@ -101,7 +101,7 @@
</enchant>
<!-- Talisman of Aden -->
<enchant id="91756" maxEnchant="10">
<enchant id="91756" maxEnchant="10" safeEnchant="1">
<item id="91745" />
</enchant>
@ -153,6 +153,11 @@
<item id="93042" />
</enchant>
<!-- Adventurer's Talisman -->
<enchant id="95688" maxEnchant="10" safeEnchant="1">
<item id="91937" />
</enchant>
<!-- Cloak of Protection -->
<enchant id="93302" maxEnchant="10">
<item id="93301" />

View File

@ -137,11 +137,28 @@ public class Q10290_ATripBegins extends Quest
{
showOnScreenMsg(player, NpcStringId.YOU_VE_GOT_ADVENTURER_S_BRACELET_AND_ADVENTURER_S_TALISMAN_NCOMPLETE_THE_TUTORIAL_AND_TRY_TO_USE_THE_TALISMAN, ExShowScreenMessage.TOP_CENTER, 10000);
addExpAndSp(player, (ExperienceData.getInstance().getExpForLevel(25) + 100) - player.getExp(), 42000);
giveItems(player, BSOE_EVENT);
giveItems(player, ADVENTURERS_BRACELET);
giveItems(player, ADVENTURERS_TALISMAN);
giveItems(player, SCROLL_OF_ENCHANT_ADVENTURERS_TALISMAN);
giveItems(player, SCROLL_OF_ENCHANT_ADEN_WEAPON);
// TODO: find a better way to do this: Tempfix for not giving items when already have them in inventory (bugging abort and re-accepting).
if (player.getInventory().getItemsByItemId(BSOE_EVENT.getId()).size() <= 20)
{
// 20 due other quest rewards? Need to see for a possible to add a variable here.
giveItems(player, BSOE_EVENT);
}
if (player.getInventory().getItemsByItemId(ADVENTURERS_BRACELET.getId()).isEmpty())
{
giveItems(player, ADVENTURERS_BRACELET);
}
if (player.getInventory().getItemsByItemId(ADVENTURERS_TALISMAN.getId()).isEmpty())
{
giveItems(player, ADVENTURERS_TALISMAN);
}
if (player.getInventory().getItemsByItemId(SCROLL_OF_ENCHANT_ADVENTURERS_TALISMAN.getId()).isEmpty())
{
giveItems(player, SCROLL_OF_ENCHANT_ADVENTURERS_TALISMAN);
}
if (player.getInventory().getItemsByItemId(SCROLL_OF_ENCHANT_ADEN_WEAPON.getId()).isEmpty())
{
giveItems(player, SCROLL_OF_ENCHANT_ADEN_WEAPON);
}
qs.exitQuest(false, true);
htmltext = "30332-03.html";
}

View File

@ -18,6 +18,7 @@ package quests.Q10971_TalismanEnchant;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.holders.ItemHolder;
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
@ -32,7 +33,9 @@ public class Q10971_TalismanEnchant extends Quest
// NPC
private static final int CAPTAIN_BATHIS = 30332;
// Item
private static final int TALISMAN_OF_ADEN = 91745;
private static final ItemHolder TALISMAN_OF_ADEN = new ItemHolder(91745, 1);
private static final ItemHolder TALISMAN_OF_ADEN_ENCHANT = new ItemHolder(91756, 1);
// Misc
private static final int MIN_LEVEL = 25;
@ -69,6 +72,15 @@ public class Q10971_TalismanEnchant extends Quest
{
qs.startQuest();
player.sendPacket(new ExTutorialShowId(47));
// TODO: Find a better way to do this: Tempfix for not giving items when already have them in inventory (bugging abort and re-accepting).
if (player.getInventory().getItemsByItemId(TALISMAN_OF_ADEN.getId()).isEmpty())
{
giveItems(player, TALISMAN_OF_ADEN);
}
if (player.getInventory().getItemsByItemId(TALISMAN_OF_ADEN_ENCHANT.getId()).isEmpty())
{
giveItems(player, TALISMAN_OF_ADEN_ENCHANT);
}
htmltext = event;
break;
}
@ -88,7 +100,7 @@ public class Q10971_TalismanEnchant extends Quest
else if (qs.isStarted())
{
boolean foundEnchant = false;
SEARCH: for (ItemInstance item : player.getInventory().getItemsByItemId(TALISMAN_OF_ADEN))
SEARCH: for (ItemInstance item : player.getInventory().getItemsByItemId(TALISMAN_OF_ADEN.getId()))
{
if (item.getEnchantLevel() > 0)
{

View File

@ -79,8 +79,15 @@ public class Q10974_NewStylishEquipment extends Quest
case "30857-03.htm":
{
qs.startQuest();
giveItems(player, ENCHANT_SCROLL_ADVENTURER_SHEEP_HAT);
giveItems(player, ADVENTURER_SHEEP_HAT);
// TODO: Find a better way to do this: Tempfix for not giving items when already have them in inventory (bugging abort and re-accepting).
if (player.getInventory().getItemsByItemId(ADVENTURER_SHEEP_HAT.getId()).isEmpty())
{
giveItems(player, ADVENTURER_SHEEP_HAT);
}
if (player.getInventory().getItemsByItemId(ENCHANT_SCROLL_ADVENTURER_SHEEP_HAT.getId()).isEmpty())
{
giveItems(player, ENCHANT_SCROLL_ADVENTURER_SHEEP_HAT);
}
htmltext = event;
break;
}
@ -110,8 +117,15 @@ public class Q10974_NewStylishEquipment extends Quest
case "30857-05.html":
{
qs.startQuest();
giveItems(player, ENCHANT_SCROLL_ADVENTURER_BELT);
giveItems(player, ADVENTURER_BELT);
// TODO: Find a better way to do this: Tempfix for not giving items when already have them in inventory (bugging abort and re-accepting).
if (player.getInventory().getItemsByItemId(ADVENTURER_BELT.getId()).isEmpty())
{
giveItems(player, ADVENTURER_BELT);
}
if (player.getInventory().getItemsByItemId(ENCHANT_SCROLL_ADVENTURER_BELT.getId()).isEmpty())
{
giveItems(player, ENCHANT_SCROLL_ADVENTURER_BELT);
}
htmltext = event;
break;
}
@ -141,8 +155,15 @@ public class Q10974_NewStylishEquipment extends Quest
case "30857-07.html":
{
qs.startQuest();
giveItems(player, ENCHANT_SCROLL_ADVENTURER_CLOAK);
giveItems(player, ADVENTURER_CLOAK);
// TODO: Find a better way to do this: Tempfix for not giving items when already have them in inventory (bugging abort and re-accepting).
if (player.getInventory().getItemsByItemId(ADVENTURER_CLOAK.getId()).isEmpty())
{
giveItems(player, ADVENTURER_CLOAK);
}
if (player.getInventory().getItemsByItemId(ENCHANT_SCROLL_ADVENTURER_CLOAK.getId()).isEmpty())
{
giveItems(player, ENCHANT_SCROLL_ADVENTURER_CLOAK);
}
htmltext = event;
break;
}

View File

@ -303,12 +303,23 @@
</item>
<item id="91725" name="Scroll of Escape: Abandoned Camp" type="EtcItem">
<!-- Can be used to teleport to the Abandoned Camp. -->
<set name="icon" val="icon.etc_scroll_of_return_i04" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="material" val="PAPER" />
<set name="is_tradable" val="false" />
<set name="is_dropable" val="false" />
<set name="is_stackable" val="true" />
<set name="icon" val="icon.etc_scroll_of_return_i04" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="material" val="PAPER" />
<set name="weight" val="30" />
<set name="price" val="35000" />
<set name="is_stackable" val="true" />
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="commissionItemType" val="SCROLL_OTHER" />
<set name="is_tradable" val="false" />
<set name="is_dropable" val="false" />
<cond addName="1" msgId="113">
<player flyMounted="false" />
</cond>
<skills>
<skill id="51441" level="1" /> <!-- Scroll of Escape: Master Kerkir -->
</skills>
</item>
<item id="91726" name="Scroll of Escape: Windmill Hill" type="EtcItem">
<!-- Can be used to teleport to the Windmill Hill. -->
@ -321,12 +332,23 @@
</item>
<item id="91727" name="Scroll of Escape: Ruins of Agony" type="EtcItem">
<!-- Can be used to teleport to the Ruins of Agony. -->
<set name="icon" val="icon.etc_scroll_of_return_i04" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="material" val="PAPER" />
<set name="is_tradable" val="false" />
<set name="is_dropable" val="false" />
<set name="is_stackable" val="true" />
<set name="icon" val="icon.etc_scroll_of_return_i04" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="material" val="PAPER" />
<set name="weight" val="30" />
<set name="price" val="35000" />
<set name="is_stackable" val="true" />
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="commissionItemType" val="SCROLL_OTHER" />
<set name="is_tradable" val="false" />
<set name="is_dropable" val="false" />
<cond addName="1" msgId="113">
<player flyMounted="false" />
</cond>
<skills>
<skill id="51443" level="1" /> <!-- Scroll of Escape: Ruins of Agony -->
</skills>
</item>
<item id="91728" name="Reinforced Spear Chest" type="EtcItem">
<!-- Double-click to obtain the following items. -->

View File

@ -578,9 +578,11 @@
<set name="immediate_effect" val="true" />
<set name="material" val="GOLD" />
<set name="weight" val="120" />
<set name="enchant_limit" val="1" />
<set name="is_tradable" val="false" />
<set name="is_dropable" val="false" />
<set name="is_sellable" val="false" />
<set name="enchant_enabled" val="true" />
<set name="bodypart" val="deco1" />
</item>
<item id="91938" name="Primeval Isle's Prolongating Stone" type="EtcItem">

View File

@ -791,33 +791,63 @@
</item>
<item id="95586" name="Scroll of Escape: Master Kerkir" type="EtcItem">
<!-- Can be used to teleport to Master Kerkir in the Wind Village. -->
<set name="icon" val="icon.etc_scroll_of_return_i04" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="material" val="PAPER" />
<set name="weight" val="5" />
<set name="is_tradable" val="false" />
<set name="is_dropable" val="false" />
<set name="is_sellable" val="false" />
<set name="icon" val="icon.etc_scroll_of_return_i04" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="material" val="PAPER" />
<set name="weight" val="30" />
<set name="price" val="35000" />
<set name="is_stackable" val="true" />
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="commissionItemType" val="SCROLL_OTHER" />
<set name="is_tradable" val="false" />
<set name="is_dropable" val="false" />
<cond addName="1" msgId="113">
<player flyMounted="false" />
</cond>
<skills>
<skill id="40296" level="1" /> <!-- Scroll of Escape: Master Kerkir -->
</skills>
</item>
<item id="95587" name="Scroll of Escape: Grocer Evia" type="EtcItem">
<!-- Can be used to teleport to Grocer Evia in the Wind Village. -->
<set name="icon" val="icon.etc_scroll_of_return_i04" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="material" val="PAPER" />
<set name="weight" val="5" />
<set name="is_tradable" val="false" />
<set name="is_dropable" val="false" />
<set name="is_sellable" val="false" />
<set name="icon" val="icon.etc_scroll_of_return_i04" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="material" val="PAPER" />
<set name="weight" val="30" />
<set name="price" val="35000" />
<set name="is_stackable" val="true" />
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="commissionItemType" val="SCROLL_OTHER" />
<set name="is_tradable" val="false" />
<set name="is_dropable" val="false" />
<cond addName="1" msgId="113">
<player flyMounted="false" />
</cond>
<skills>
<skill id="40297" level="1" /> <!-- Scroll of Escape: Grocer Evia -->
</skills>
</item>
<item id="95588" name="Scroll of Escape: Gorgon Flower Garden" type="EtcItem">
<!-- Can be used to teleport to the Gorgon Flower Garden. -->
<set name="icon" val="icon.etc_scroll_of_return_i04" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="material" val="PAPER" />
<set name="weight" val="5" />
<set name="is_tradable" val="false" />
<set name="is_dropable" val="false" />
<set name="is_sellable" val="false" />
<set name="icon" val="icon.etc_scroll_of_return_i04" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="material" val="PAPER" />
<set name="weight" val="30" />
<set name="price" val="35000" />
<set name="is_stackable" val="true" />
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="commissionItemType" val="SCROLL_OTHER" />
<set name="is_tradable" val="false" />
<set name="is_dropable" val="false" />
<cond addName="1" msgId="113">
<player flyMounted="false" />
</cond>
<skills>
<skill id="40299" level="1" /> <!-- Scroll of Escape: Gorgon Flower Garden -->
</skills>
</item>
<item id="95589" name="Scroll of Escape: Death Pass" type="EtcItem">
<!-- Can be used to teleport to the Death Pass. -->

View File

@ -1036,11 +1036,17 @@
<item id="95688" name="Scroll: Enchant Adventurer's Talisman" type="EtcItem">
<!-- Required for enchanting Adventurer's Talisman. -->
<set name="icon" val="icon.aden_talisman_scroll" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="material" val="PAPER" />
<set name="is_tradable" val="false" />
<set name="is_dropable" val="false" />
<set name="is_sellable" val="false" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="material" val="PAPER" />
<set name="is_tradable" val="false" />
<set name="is_dropable" val="false" />
<set name="is_sellable" val="false" />
<set name="is_stackable" val="true" />
<set name="etcitem_type" val="ENCHT_AM" /> <!-- ENCHT_AM -->
<set name="handler" val="EnchantScrolls" />
<skills>
<skill id="40338" level="1" /> <!-- Scroll: Enchant Adventurer's Talisman -->
</skills>
</item>
<item id="95689" name="Young Knight's Shield" type="Armor">
<set name="icon" val="icon.shield_leather_shield_i00" />

View File

@ -522,22 +522,87 @@
</skill>
<skill id="40296" toLevel="1" name="Scroll of Escape: Master Kerkir">
<!-- Can be used to teleport to Master Kerkir in the Wind Village. -->
<icon>icon.skill0000</icon>
<operateType>A1</operateType>
<hitTime>500</hitTime>
<isMagic>2</isMagic> <!-- Static Skill -->
<itemConsumeCount>1</itemConsumeCount>
<itemConsumeId>95586</itemConsumeId>
<magicLevel>1</magicLevel>
<operateType>A1</operateType>
<magicCriticalRate>5</magicCriticalRate>
<targetType>SELF</targetType>
<affectScope>SINGLE</affectScope>
<conditions>
<condition name="OpAlignment">
<affectType>CASTER</affectType>
<alignment>LAWFUL</alignment>
</condition>
<condition name="OpCanEscape" />
</conditions>
<effects>
<effect name="Teleport">
<x>102609</x>
<y>56031</y>
<z>-4032</z>
</effect>
</effects>
</skill>
<skill id="40297" toLevel="1" name="Scroll of Escape: Grocer Evia">
<!-- Can be used to teleport to Grocer Evia in the Wind Village. -->
<icon>icon.skill0000</icon>
<operateType>A1</operateType>
<hitTime>500</hitTime>
<isMagic>2</isMagic> <!-- Static Skill -->
<itemConsumeCount>1</itemConsumeCount>
<itemConsumeId>95587</itemConsumeId>
<magicLevel>1</magicLevel>
<operateType>A1</operateType>
<magicCriticalRate>5</magicCriticalRate>
<targetType>SELF</targetType>
<affectScope>SINGLE</affectScope>
<conditions>
<condition name="OpAlignment">
<affectType>CASTER</affectType>
<alignment>LAWFUL</alignment>
</condition>
<condition name="OpCanEscape" />
</conditions>
<effects>
<effect name="Teleport">
<x>105091</x>
<y>57525</y>
<z>-3928</z>
</effect>
</effects>
</skill>
<skill id="40298" toLevel="1" name="Scroll of Escape: High Priest Maximilian">
<!-- Can be used to teleport to High Priest Maximilian in Giran. -->
<icon>icon.skill0000</icon>
<operateType>A1</operateType>
</skill>
<skill id="40299" toLevel="1" name="Scroll of Escape: Gorgon Flower Garden">
<skill id="95588" toLevel="1" name="Scroll of Escape: Gorgon Flower Garden">
<!-- Can be used to teleport to the Gorgon Flower Garden. -->
<icon>icon.skill0000</icon>
<operateType>A1</operateType>
<hitTime>500</hitTime>
<isMagic>2</isMagic> <!-- Static Skill -->
<itemConsumeCount>1</itemConsumeCount>
<itemConsumeId>95588</itemConsumeId>
<magicLevel>1</magicLevel>
<operateType>A1</operateType>
<magicCriticalRate>5</magicCriticalRate>
<targetType>SELF</targetType>
<affectScope>SINGLE</affectScope>
<conditions>
<condition name="OpAlignment">
<affectType>CASTER</affectType>
<alignment>LAWFUL</alignment>
</condition>
<condition name="OpCanEscape" />
</conditions>
<effects>
<effect name="Teleport">
<x>105068</x>
<y>57525</y>
<z>-3936</z>
</effect>
</effects>
</skill>
</list>

View File

@ -191,9 +191,14 @@
<operateType>A1</operateType>
</skill>
<skill id="40338" toLevel="1" name="Scroll: Enchant Adventurer's Talisman">
<!-- AUTO GENERATED SKILL TODO: FIX IT -->
<icon>icon.skill0000</icon>
<operateType>A1</operateType>
<icon>icon.giant_item_equip</icon>
<operateType>A1</operateType>
<isMagic>2</isMagic> <!-- Static Skill -->
<magicLevel>1</magicLevel>
<magicCriticalRate>5</magicCriticalRate>
<hitCancelTime>0</hitCancelTime>
<targetType>ITEM</targetType>
<affectScope>SINGLE</affectScope>
</skill>
<skill id="40339" toLevel="1" name="17th Anniversary Blessing">
<!-- <font color="00DCFF"><Great discounts for death penalty recovery cost.></font> Lost item recovery price is $s1 XP recovery price is $s2 -->

View File

@ -276,7 +276,29 @@
</skill>
<skill id="51441" toLevel="1" name="Scroll of Escape: Abandoned Camp">
<!-- A magical scroll that teleports to the Abandoned Camp. Cannot be exchanged, dropped, or sold. Can be stored in the private warehouse. -->
<operateType>A1</operateType>
<hitTime>500</hitTime>
<isMagic>2</isMagic> <!-- Static Skill -->
<itemConsumeCount>1</itemConsumeCount>
<itemConsumeId>91725</itemConsumeId>
<magicLevel>1</magicLevel>
<operateType>A1</operateType>
<magicCriticalRate>5</magicCriticalRate>
<targetType>SELF</targetType>
<affectScope>SINGLE</affectScope>
<conditions>
<condition name="OpAlignment">
<affectType>CASTER</affectType>
<alignment>LAWFUL</alignment>
</condition>
<condition name="OpCanEscape" />
</conditions>
<effects>
<effect name="Teleport">
<x>-46868</x>
<y>148086</y>
<z>-2968</z>
</effect>
</effects>
</skill>
<skill id="51442" toLevel="1" name="Scroll of Escape: Windmill Hill">
<!-- A magical scroll that teleports to the Windmill Hill. Cannot be exchanged, dropped, or sold. Can be stored in the private warehouse. -->
@ -284,7 +306,29 @@
</skill>
<skill id="51443" toLevel="1" name="Scroll of Escape: Ruins of Agony">
<!-- A magical scroll that teleports to the Ruins of Agony. Cannot be exchanged, dropped, or sold. Can be stored in the warehouse. -->
<operateType>A1</operateType>
<hitTime>500</hitTime>
<isMagic>2</isMagic> <!-- Static Skill -->
<itemConsumeCount>1</itemConsumeCount>
<itemConsumeId>91727</itemConsumeId>
<magicLevel>1</magicLevel>
<operateType>A1</operateType>
<magicCriticalRate>5</magicCriticalRate>
<targetType>SELF</targetType>
<affectScope>SINGLE</affectScope>
<conditions>
<condition name="OpAlignment">
<affectType>CASTER</affectType>
<alignment>LAWFUL</alignment>
</condition>
<condition name="OpCanEscape" />
</conditions>
<effects>
<effect name="Teleport">
<x>-42307</x>
<y>120810</y>
<z>-3368</z>
</effect>
</effects>
</skill>
<skill id="51444" toLevel="1" name="Reinforced Spear Chest">
<icon>icon.etc_treasure_box_i04</icon>

View File

@ -129,7 +129,8 @@ public class RequestEnchantItem implements IClientIncomingPacket
}
// fast auto-enchant cheat check
if ((request.getTimestamp() == 0) || ((Chronos.currentTimeMillis() - request.getTimestamp()) < 2000))
// Lowered value to 500 (from 2000) On Sylph, some enchantments are much faster than normal ones
if ((request.getTimestamp() == 0) || ((Chronos.currentTimeMillis() - request.getTimestamp()) < 500))
{
Util.handleIllegalPlayerAction(player, "Player " + player.getName() + " use autoenchant program ", Config.DEFAULT_PUNISH);
player.removeRequest(request.getClass());