- 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:
erlandys56
2015-01-25 11:52:47 +00:00
parent effe7c4033
commit c38b542dda
19 changed files with 573 additions and 29 deletions

View File

@@ -218,6 +218,14 @@ FeeDeleteTransferSkills = 10000000
# Default: 10000000
FeeDeleteSubClassSkills = 10000000
# Need Seize your destiny quest, to awaken
# Default: true
NeedSeizeYourDestinyForAwaken = false
# Need Scroll of Afterlife item to awaken
# Default: true
NeedScrollOfAfterlifeForAwaken = false
# ---------------------------------------------------------------------------
# Summons configuration
# ---------------------------------------------------------------------------
@@ -389,6 +397,11 @@ EnchantChanceElementCrystal = 30
EnchantChanceElementJewel = 20
EnchantChanceElementEnergy = 10
# This controls the chance of an change element stone chance.
# This chance is in %, so if you set this to 100%, enchants will always succeed.
# DEFAULT NEEDS TO BE VERIFIED, MUST BE CHANGED HERE AND IN CONFIG.JAVA IF NOT CORRECT
ChangeChanceElement = 60
# List of non-enchantable items.
# Currently apprentice, travelers weapons and Pailaka items
# Default: 7816,7817,7818,7819,7820,7821,7822,7823,7824,7825,7826,7827,7828,7829,7830,7831,13293,13294,13296

View File

@@ -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);

View File

@@ -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);

View File

@@ -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,

View 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;
}
}

View File

@@ -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. -->

View File

@@ -2,5 +2,6 @@ CREATE TABLE IF NOT EXISTS `character_friends` (
`charId` INT UNSIGNED NOT NULL DEFAULT 0,
`friendId` INT UNSIGNED NOT NULL DEFAULT 0,
`relation` INT UNSIGNED NOT NULL DEFAULT 0,
`memo` text,
PRIMARY KEY (`charId`,`friendId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;