- r101 fixed error for friend memo (SQL).
- Fixed Awakening social action. - Implemented configs for awakening to skip or not Seize of Destiny quest and Scroll of Afterlife item. - Fixed mentee getting 2 letters with 2 headphones and fixed skill error, when adding mentee. - Implemented Change Attribute stone engine.
This commit is contained in:
@@ -21,6 +21,7 @@ package ai.npc.AwakeningMaster;
|
||||
import quests.Q10338_SeizeYourDestiny.Q10338_SeizeYourDestiny;
|
||||
import ai.npc.AbstractNpcAI;
|
||||
|
||||
import com.l2jserver.Config;
|
||||
import com.l2jserver.gameserver.ThreadPoolManager;
|
||||
import com.l2jserver.gameserver.data.xml.impl.SkillTreesData;
|
||||
import com.l2jserver.gameserver.enums.CategoryType;
|
||||
@@ -85,13 +86,14 @@ public final class AwakeningMaster extends AbstractNpcAI
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
String htmltext = null;
|
||||
switch (event)
|
||||
{
|
||||
case "awakening":
|
||||
{
|
||||
final QuestState st2 = player.getQuestState(Q10338_SeizeYourDestiny.class.getSimpleName());
|
||||
if (st.hasQuestItems(SCROLL_OF_AFTERLIFE) && (player.getLevel() > 84) && (!player.isSubClassActive() || player.isDualClassActive()) && player.isInCategory(CategoryType.FOURTH_CLASS_GROUP) && (st2 != null) && st2.isCompleted())
|
||||
if ((!Config.NEED_SCROLL_OF_AFTERLIFE_FOR_AWAKEN || st.hasQuestItems(SCROLL_OF_AFTERLIFE)) && (player.getLevel() > 84) && (!player.isSubClassActive() || player.isDualClassActive()) && player.isInCategory(CategoryType.FOURTH_CLASS_GROUP) && (!Config.NEED_SEIZE_YOUR_DESTINY_FOR_AWAKEN || ((st2 != null) && st2.isCompleted())))
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
@@ -192,11 +194,14 @@ public final class AwakeningMaster extends AbstractNpcAI
|
||||
return;
|
||||
}
|
||||
|
||||
final QuestState st = player.getQuestState(Q10338_SeizeYourDestiny.class.getSimpleName());
|
||||
|
||||
if ((st == null) || !st.isCompleted())
|
||||
if (Config.NEED_SEIZE_YOUR_DESTINY_FOR_AWAKEN)
|
||||
{
|
||||
return;
|
||||
final QuestState st = player.getQuestState(Q10338_SeizeYourDestiny.class.getSimpleName());
|
||||
|
||||
if ((st == null) || !st.isCompleted())
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (player.isHero() || Hero.getInstance().isUnclaimedHero(player.getObjectId()))
|
||||
@@ -217,15 +222,18 @@ public final class AwakeningMaster extends AbstractNpcAI
|
||||
return;
|
||||
}
|
||||
|
||||
final L2ItemInstance item = player.getInventory().getItemByItemId(SCROLL_OF_AFTERLIFE);
|
||||
if (item == null)
|
||||
if (Config.NEED_SCROLL_OF_AFTERLIFE_FOR_AWAKEN)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!player.destroyItem("Awakening", item, player, true))
|
||||
{
|
||||
return;
|
||||
final L2ItemInstance item = player.getInventory().getItemByItemId(SCROLL_OF_AFTERLIFE);
|
||||
if (item == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!player.destroyItem("Awakening", item, player, true))
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
for (ClassId newClass : player.getClassId().getNextClassIds())
|
||||
@@ -238,44 +246,36 @@ public final class AwakeningMaster extends AbstractNpcAI
|
||||
player.sendPacket(ui);
|
||||
player.broadcastInfo();
|
||||
|
||||
int socialId = 21; // Sigel
|
||||
int itemId = ABELIUS_POWER; // Sigel
|
||||
if (player.isInCategory(CategoryType.TYRR_GROUP))
|
||||
{
|
||||
socialId = 22;
|
||||
itemId = SAPYROS_POWER;
|
||||
}
|
||||
else if (player.isInCategory(CategoryType.OTHELL_GROUP))
|
||||
{
|
||||
socialId = 23;
|
||||
itemId = ASHAGEN_POWER;
|
||||
}
|
||||
else if (player.isInCategory(CategoryType.YUL_GROUP))
|
||||
{
|
||||
socialId = 24;
|
||||
itemId = CRANIGG_POWER;
|
||||
}
|
||||
else if (player.isInCategory(CategoryType.FEOH_GROUP))
|
||||
{
|
||||
socialId = 25;
|
||||
itemId = SOLTKREIG_POWER;
|
||||
}
|
||||
else if (player.isInCategory(CategoryType.ISS_GROUP))
|
||||
{
|
||||
socialId = 26;
|
||||
itemId = NAVIAROPE_POWER;
|
||||
}
|
||||
else if (player.isInCategory(CategoryType.WYNN_GROUP))
|
||||
{
|
||||
socialId = 27;
|
||||
itemId = LEISTER_POWER;
|
||||
}
|
||||
else if (player.isInCategory(CategoryType.AEORE_GROUP))
|
||||
{
|
||||
socialId = 28;
|
||||
itemId = LAKCIS_POWER;
|
||||
}
|
||||
player.broadcastPacket(new SocialAction(player.getObjectId(), socialId));
|
||||
player.broadcastPacket(new SocialAction(player.getObjectId(), 20));
|
||||
giveItems(player, itemId, 1);
|
||||
|
||||
SkillTreesData.getInstance().cleanSkillUponAwakening(player);
|
||||
|
@@ -197,7 +197,7 @@ public class MentorGuide extends AbstractNpcAI implements IXmlReader
|
||||
event.getMentor().sendPacket(new ExMentorList(event.getMentor()));
|
||||
|
||||
// Add the mentee skill
|
||||
event.getMentee().addSkill(MENTEE_MENTOR_SUMMON.getSkill(), true);
|
||||
event.getMentee().addSkill(MENTEE_MENTOR_SUMMON.getSkill(), false);
|
||||
|
||||
// Send mail with the headphone
|
||||
sendMail(event.getMentee(), MENTEE_ADDED_TITLE, MENTEE_ADDED_BODY, MENTEE_HEADPHONE, 1);
|
||||
|
@@ -161,6 +161,7 @@ import handlers.itemhandlers.BlessedSpiritShot;
|
||||
import handlers.itemhandlers.Book;
|
||||
import handlers.itemhandlers.Bypass;
|
||||
import handlers.itemhandlers.Calculator;
|
||||
import handlers.itemhandlers.ChangeAttribute;
|
||||
import handlers.itemhandlers.CharmOfCourage;
|
||||
import handlers.itemhandlers.Elixir;
|
||||
import handlers.itemhandlers.EnchantAttribute;
|
||||
@@ -464,6 +465,7 @@ public class MasterHandler
|
||||
Book.class,
|
||||
Bypass.class,
|
||||
Calculator.class,
|
||||
ChangeAttribute.class,
|
||||
CharmOfCourage.class,
|
||||
Elixir.class,
|
||||
EnchantAttribute.class,
|
||||
|
55
trunk/dist/game/data/scripts/handlers/itemhandlers/ChangeAttribute.java
vendored
Normal file
55
trunk/dist/game/data/scripts/handlers/itemhandlers/ChangeAttribute.java
vendored
Normal file
@@ -0,0 +1,55 @@
|
||||
/*
|
||||
* This program is free software: you can redistribute it and/or modify it under
|
||||
* the terms of the GNU General Public License as published by the Free Software
|
||||
* Foundation, either version 3 of the License, or (at your option) any later
|
||||
* version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package handlers.itemhandlers;
|
||||
|
||||
import com.l2jserver.gameserver.handler.IItemHandler;
|
||||
import com.l2jserver.gameserver.model.actor.L2Playable;
|
||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
|
||||
import com.l2jserver.gameserver.network.SystemMessageId;
|
||||
import com.l2jserver.gameserver.network.serverpackets.ExChangeAttributeItemList;
|
||||
import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
|
||||
|
||||
/**
|
||||
* @author Erlandys
|
||||
*/
|
||||
public class ChangeAttribute implements IItemHandler
|
||||
{
|
||||
@Override
|
||||
public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
|
||||
{
|
||||
if (!(playable instanceof L2PcInstance))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
final L2PcInstance activeChar = (L2PcInstance) playable;
|
||||
if (activeChar.isCastingNow())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (activeChar.isEnchanting())
|
||||
{
|
||||
activeChar.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.CHANGING_ATTRIBUTES_IS_IN_PROGRESS_PLEASE_TRY_AGAIN_AFTER_ENDING_THE_PREVIOUS_TASK));
|
||||
return false;
|
||||
}
|
||||
|
||||
activeChar.setActiveEnchantAttrItemId(item.getId());
|
||||
activeChar.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.CHANGING_ATTRIBUTES_IS_IN_PROGRESS_PLEASE_TRY_AGAIN_AFTER_ENDING_THE_PREVIOUS_TASK));
|
||||
activeChar.sendPacket(new ExChangeAttributeItemList(activeChar, item.getObjectId()));
|
||||
return true;
|
||||
}
|
||||
}
|
@@ -16,6 +16,7 @@
|
||||
<!-- Double-click to change the attribute of an S(S80) grade weapon that cannot be bound. Can be used when an S-grade weapon with a bestowed attribute exists in the inventory. Cannot be exchanged, dropped, sold in shops, or used in a private store. -->
|
||||
<set name="icon" val="icon.change_elemental_crystal" />
|
||||
<set name="is_stackable" val="true" />
|
||||
<set name="handler" val="ChangeAttribute" />
|
||||
</item>
|
||||
<item id="33503" name="Hero's Blessed Buff Scroll" additionalName="" type="EtcItem">
|
||||
<!-- When used, HP Recovery Bonus, Max MP, and Critical Atk. Rate + 20%, and you can feel the effects of Prophecy of Water, Might, Haste, Empower, Acumen, Wind Walk, Vampiric Rage, Berserker Spirit, Shield, Focus, Death Whisper, Guidance, Clarity, Wild Magic, and Concentration for 1 hour. -->
|
||||
|
Reference in New Issue
Block a user