Addition of item blessing system.

This commit is contained in:
MobiusDevelopment 2021-04-23 14:45:16 +00:00
parent 46e2db6dd5
commit 3ba49ef759
44 changed files with 1757 additions and 145 deletions

View File

@ -201,3 +201,11 @@ KarmaRateDropEquipWeapon = 10
PetXpRate = 1
PetFoodRate = 1
SinEaterXpRate = 1
# ---------------------------------------------------------------------------
# Blessed items
# ---------------------------------------------------------------------------
# Chance of blessing weapon.
# Default: 15.0
BlessingChance = 15.0

View File

@ -213,22 +213,6 @@
<item id="91550" /> <!-- Frintezza's Necklace -->
</enchant>
<!-- Scroll of Blessing -->
<enchant id="94184" maxEnchant="5" safeEnchant="1">
<item id="6660" /> <!-- Queen Ant's Ring -->
<item id="6661" /> <!-- Orfen's Earring -->
<item id="6662" /> <!-- Ring of Core -->
<item id="90763" /> <!-- Zaken's Earring -->
</enchant>
<!-- Scroll of Blessing (Event) -->
<enchant id="94208" maxEnchant="5" safeEnchant="1">
<item id="6660" /> <!-- Queen Ant's Ring -->
<item id="6661" /> <!-- Orfen's Earring -->
<item id="6662" /> <!-- Ring of Core -->
<item id="90763" /> <!-- Zaken's Earring -->
</enchant>
<!-- Enchant Spirit - Zodiac Agathion -->
<enchant id="48046" maxEnchant="10" safeEnchant="3">
<item id="93128" /> <!-- Agathion Ignis -->

View File

@ -191,6 +191,7 @@ import handlers.itemhandlers.BeastSoulShot;
import handlers.itemhandlers.BeastSpiritShot;
import handlers.itemhandlers.BlessedSoulShots;
import handlers.itemhandlers.BlessedSpiritShot;
import handlers.itemhandlers.BlessingScrolls;
import handlers.itemhandlers.Book;
import handlers.itemhandlers.Bypass;
import handlers.itemhandlers.Calculator;
@ -541,6 +542,7 @@ public class MasterHandler
BeastSpiritShot.class,
BlessedSoulShots.class,
BlessedSpiritShot.class,
BlessingScrolls.class,
Book.class,
Bypass.class,
Calculator.class,

View File

@ -0,0 +1,55 @@
/*
* This file is part of the L2J Mobius project.
*
* 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 org.l2jmobius.gameserver.handler.IItemHandler;
import org.l2jmobius.gameserver.model.actor.Playable;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.serverpackets.blessing.ExOpenBlessOptionScroll;
public class BlessingScrolls implements IItemHandler
{
@Override
public boolean useItem(Playable playable, ItemInstance item, boolean forceUse)
{
if (!playable.isPlayer())
{
playable.sendPacket(SystemMessageId.YOUR_PET_CANNOT_CARRY_THIS_ITEM);
return false;
}
final PlayerInstance player = playable.getActingPlayer();
if (player.isCastingNow())
{
return false;
}
if (player.hasItemRequest())
{
player.sendPacket(SystemMessageId.ANOTHER_ENCHANTMENT_IS_IN_PROGRESS_PLEASE_COMPLETE_THE_PREVIOUS_TASK_THEN_TRY_AGAIN);
return false;
}
player.getVariables().set(PlayerVariables.USED_BLESS_SCROLL_ID, item.getId());
player.sendPacket(new ExOpenBlessOptionScroll(item.getId()));
return true;
}
}

View File

@ -1436,6 +1436,15 @@
<stat type="randomDamage">10</stat>
<stat type="pAtkRange">40</stat>
</stats>
<skills>
<skill id="50392" level="1" type="ON_BLESSING" /> <!-- Weapon Blessing Effect -->
<skill id="50406" level="1" type="ON_BLESSING" type_value="5" /> <!-- +5 A-grade Weapon Blessing Effect -->
<skill id="50407" level="1" type="ON_BLESSING" type_value="6" /> <!-- +6 A-grade Weapon Blessing Effect -->
<skill id="50408" level="1" type="ON_BLESSING" type_value="7" /> <!-- +7 A-grade Weapon Blessing Effect -->
<skill id="50409" level="1" type="ON_BLESSING" type_value="8" /> <!-- +8 A-grade Weapon Blessing Effect -->
<skill id="50410" level="1" type="ON_BLESSING" type_value="9" /> <!-- +9 A-grade Weapon Blessing Effect -->
<skill id="50411" level="1" type="ON_BLESSING" type_value="10" /> <!-- +10 A-grade Weapon Blessing Effect -->
</skills>
</item>
<item id="81" name="Dragon Slayer" type="Weapon">
<set name="icon" val="icon.weapon_dragon_slayer_i00" />
@ -1463,6 +1472,15 @@
<stat type="randomDamage">10</stat>
<stat type="pAtkRange">40</stat>
</stats>
<skills>
<skill id="50395" level="1" type="ON_BLESSING" /> <!-- Weapon Blessing Effect -->
<skill id="50406" level="1" type="ON_BLESSING" type_value="5" /> <!-- +5 A-grade Weapon Blessing Effect -->
<skill id="50407" level="1" type="ON_BLESSING" type_value="6" /> <!-- +6 A-grade Weapon Blessing Effect -->
<skill id="50408" level="1" type="ON_BLESSING" type_value="7" /> <!-- +7 A-grade Weapon Blessing Effect -->
<skill id="50409" level="1" type="ON_BLESSING" type_value="8" /> <!-- +8 A-grade Weapon Blessing Effect -->
<skill id="50410" level="1" type="ON_BLESSING" type_value="9" /> <!-- +9 A-grade Weapon Blessing Effect -->
<skill id="50411" level="1" type="ON_BLESSING" type_value="10" /> <!-- +10 A-grade Weapon Blessing Effect -->
</skills>
</item>
<item id="83" name="Sword of Magic" type="Weapon">
<set name="icon" val="icon.weapon_sword_of_magic_i00" />
@ -1875,6 +1893,13 @@
<set name="isAppearanceable" val="true" />
<skills>
<skill id="3599" level="1" /> <!-- Polearm Multi-attack -->
<skill id="50405" level="1" type="ON_BLESSING" /> <!-- Weapon Blessing Effect -->
<skill id="50406" level="1" type="ON_BLESSING" type_value="5" /> <!-- +5 A-grade Weapon Blessing Effect -->
<skill id="50407" level="1" type="ON_BLESSING" type_value="6" /> <!-- +6 A-grade Weapon Blessing Effect -->
<skill id="50408" level="1" type="ON_BLESSING" type_value="7" /> <!-- +7 A-grade Weapon Blessing Effect -->
<skill id="50409" level="1" type="ON_BLESSING" type_value="8" /> <!-- +8 A-grade Weapon Blessing Effect -->
<skill id="50410" level="1" type="ON_BLESSING" type_value="9" /> <!-- +9 A-grade Weapon Blessing Effect -->
<skill id="50411" level="1" type="ON_BLESSING" type_value="10" /> <!-- +10 A-grade Weapon Blessing Effect -->
</skills>
<stats>
<stat type="pAtk">213</stat>

View File

@ -861,6 +861,15 @@
<stat type="randomDamage">10</stat>
<stat type="pAtkRange">40</stat>
</stats>
<skills>
<skill id="50392" level="1" type="ON_BLESSING" /> <!-- Weapon Blessing Effect -->
<skill id="50406" level="1" type="ON_BLESSING" type_value="5" /> <!-- +5 A-grade Weapon Blessing Effect -->
<skill id="50407" level="1" type="ON_BLESSING" type_value="6" /> <!-- +6 A-grade Weapon Blessing Effect -->
<skill id="50408" level="1" type="ON_BLESSING" type_value="7" /> <!-- +7 A-grade Weapon Blessing Effect -->
<skill id="50409" level="1" type="ON_BLESSING" type_value="8" /> <!-- +8 A-grade Weapon Blessing Effect -->
<skill id="50410" level="1" type="ON_BLESSING" type_value="9" /> <!-- +9 A-grade Weapon Blessing Effect -->
<skill id="50411" level="1" type="ON_BLESSING" type_value="10" /> <!-- +10 A-grade Weapon Blessing Effect -->
</skills>
</item>
<item id="151" name="Sword of Miracles" type="Weapon">
<set name="icon" val="icon.weapon_sword_of_miracle_i00" />
@ -888,6 +897,15 @@
<stat type="randomDamage">10</stat>
<stat type="pAtkRange">40</stat>
</stats>
<skills>
<skill id="50392" level="1" type="ON_BLESSING" /> <!-- Weapon Blessing Effect -->
<skill id="50406" level="1" type="ON_BLESSING" type_value="5" /> <!-- +5 A-grade Weapon Blessing Effect -->
<skill id="50407" level="1" type="ON_BLESSING" type_value="6" /> <!-- +6 A-grade Weapon Blessing Effect -->
<skill id="50408" level="1" type="ON_BLESSING" type_value="7" /> <!-- +7 A-grade Weapon Blessing Effect -->
<skill id="50409" level="1" type="ON_BLESSING" type_value="8" /> <!-- +8 A-grade Weapon Blessing Effect -->
<skill id="50410" level="1" type="ON_BLESSING" type_value="9" /> <!-- +9 A-grade Weapon Blessing Effect -->
<skill id="50411" level="1" type="ON_BLESSING" type_value="10" /> <!-- +10 A-grade Weapon Blessing Effect -->
</skills>
</item>
<item id="152" name="Heavy Chisel" type="Weapon">
<set name="icon" val="icon.weapon_heavy_chisel_i00" />
@ -1200,6 +1218,15 @@
<stat type="randomDamage">19</stat>
<stat type="pAtkRange">40</stat>
</stats>
<skills>
<skill id="50397" level="1" type="ON_BLESSING" /> <!-- Weapon Blessing Effect -->
<skill id="50406" level="1" type="ON_BLESSING" type_value="5" /> <!-- +5 A-grade Weapon Blessing Effect -->
<skill id="50407" level="1" type="ON_BLESSING" type_value="6" /> <!-- +6 A-grade Weapon Blessing Effect -->
<skill id="50408" level="1" type="ON_BLESSING" type_value="7" /> <!-- +7 A-grade Weapon Blessing Effect -->
<skill id="50409" level="1" type="ON_BLESSING" type_value="8" /> <!-- +8 A-grade Weapon Blessing Effect -->
<skill id="50410" level="1" type="ON_BLESSING" type_value="9" /> <!-- +9 A-grade Weapon Blessing Effect -->
<skill id="50411" level="1" type="ON_BLESSING" type_value="10" /> <!-- +10 A-grade Weapon Blessing Effect -->
</skills>
</item>
<item id="166" name="Heavy Mace" type="Weapon">
<set name="icon" val="icon.weapon_heavy_mace_i00" />

View File

@ -363,6 +363,15 @@
<stat type="randomDamage">19</stat>
<stat type="pAtkRange">40</stat>
</stats>
<skills>
<skill id="50399" level="1" type="ON_BLESSING" /> <!-- Weapon Blessing Effect -->
<skill id="50406" level="1" type="ON_BLESSING" type_value="5" /> <!-- +5 A-grade Weapon Blessing Effect -->
<skill id="50407" level="1" type="ON_BLESSING" type_value="6" /> <!-- +6 A-grade Weapon Blessing Effect -->
<skill id="50408" level="1" type="ON_BLESSING" type_value="7" /> <!-- +7 A-grade Weapon Blessing Effect -->
<skill id="50409" level="1" type="ON_BLESSING" type_value="8" /> <!-- +8 A-grade Weapon Blessing Effect -->
<skill id="50410" level="1" type="ON_BLESSING" type_value="9" /> <!-- +9 A-grade Weapon Blessing Effect -->
<skill id="50411" level="1" type="ON_BLESSING" type_value="10" /> <!-- +10 A-grade Weapon Blessing Effect -->
</skills>
</item>
<item id="213" name="Branch of the Mother Tree" type="Weapon">
<set name="icon" val="icon.weapon_worldtrees_branch_i00" />
@ -391,6 +400,15 @@
<stat type="randomDamage">19</stat>
<stat type="pAtkRange">40</stat>
</stats>
<skills>
<skill id="50399" level="1" type="ON_BLESSING" /> <!-- Weapon Blessing Effect -->
<skill id="50406" level="1" type="ON_BLESSING" type_value="5" /> <!-- +5 A-grade Weapon Blessing Effect -->
<skill id="50407" level="1" type="ON_BLESSING" type_value="6" /> <!-- +6 A-grade Weapon Blessing Effect -->
<skill id="50408" level="1" type="ON_BLESSING" type_value="7" /> <!-- +7 A-grade Weapon Blessing Effect -->
<skill id="50409" level="1" type="ON_BLESSING" type_value="8" /> <!-- +8 A-grade Weapon Blessing Effect -->
<skill id="50410" level="1" type="ON_BLESSING" type_value="9" /> <!-- +9 A-grade Weapon Blessing Effect -->
<skill id="50411" level="1" type="ON_BLESSING" type_value="10" /> <!-- +10 A-grade Weapon Blessing Effect -->
</skills>
</item>
<item id="215" name="Doom Dagger" type="Weapon">
<set name="icon" val="icon.weapon_doomed_dagger_i00" />
@ -943,6 +961,15 @@
<stat type="randomDamage">5</stat>
<stat type="pAtkRange">40</stat>
</stats>
<skills>
<skill id="50402" level="1" type="ON_BLESSING" /> <!-- Weapon Blessing Effect -->
<skill id="50406" level="1" type="ON_BLESSING" type_value="5" /> <!-- +5 A-grade Weapon Blessing Effect -->
<skill id="50407" level="1" type="ON_BLESSING" type_value="6" /> <!-- +6 A-grade Weapon Blessing Effect -->
<skill id="50408" level="1" type="ON_BLESSING" type_value="7" /> <!-- +7 A-grade Weapon Blessing Effect -->
<skill id="50409" level="1" type="ON_BLESSING" type_value="8" /> <!-- +8 A-grade Weapon Blessing Effect -->
<skill id="50410" level="1" type="ON_BLESSING" type_value="9" /> <!-- +9 A-grade Weapon Blessing Effect -->
<skill id="50411" level="1" type="ON_BLESSING" type_value="10" /> <!-- +10 A-grade Weapon Blessing Effect -->
</skills>
</item>
<item id="236" name="Soul Separator" type="Weapon">
<set name="icon" val="icon.weapon_soul_separator_i00" />
@ -970,6 +997,15 @@
<stat type="randomDamage">5</stat>
<stat type="pAtkRange">40</stat>
</stats>
<skills>
<skill id="50402" level="1" type="ON_BLESSING" /> <!-- Weapon Blessing Effect -->
<skill id="50406" level="1" type="ON_BLESSING" type_value="5" /> <!-- +5 A-grade Weapon Blessing Effect -->
<skill id="50407" level="1" type="ON_BLESSING" type_value="6" /> <!-- +6 A-grade Weapon Blessing Effect -->
<skill id="50408" level="1" type="ON_BLESSING" type_value="7" /> <!-- +7 A-grade Weapon Blessing Effect -->
<skill id="50409" level="1" type="ON_BLESSING" type_value="8" /> <!-- +8 A-grade Weapon Blessing Effect -->
<skill id="50410" level="1" type="ON_BLESSING" type_value="9" /> <!-- +9 A-grade Weapon Blessing Effect -->
<skill id="50411" level="1" type="ON_BLESSING" type_value="10" /> <!-- +10 A-grade Weapon Blessing Effect -->
</skills>
</item>
<item id="238" name="Dagger of Mana" type="Weapon">
<set name="icon" val="icon.weapon_dagger_of_mana_i00" />
@ -1734,6 +1770,15 @@
<stat type="randomDamage">5</stat>
<stat type="pAtkRange">40</stat>
</stats>
<skills>
<skill id="50403" level="1" type="ON_BLESSING" /> <!-- Weapon Blessing Effect -->
<skill id="50406" level="1" type="ON_BLESSING" type_value="5" /> <!-- +5 A-grade Weapon Blessing Effect -->
<skill id="50407" level="1" type="ON_BLESSING" type_value="6" /> <!-- +6 A-grade Weapon Blessing Effect -->
<skill id="50408" level="1" type="ON_BLESSING" type_value="7" /> <!-- +7 A-grade Weapon Blessing Effect -->
<skill id="50409" level="1" type="ON_BLESSING" type_value="8" /> <!-- +8 A-grade Weapon Blessing Effect -->
<skill id="50410" level="1" type="ON_BLESSING" type_value="9" /> <!-- +9 A-grade Weapon Blessing Effect -->
<skill id="50411" level="1" type="ON_BLESSING" type_value="10" /> <!-- +10 A-grade Weapon Blessing Effect -->
</skills>
</item>
<item id="270" name="Dragon Grinder" type="Weapon">
<set name="icon" val="icon.weapon_dragon_grinder_i00" />
@ -1761,6 +1806,15 @@
<stat type="randomDamage">5</stat>
<stat type="pAtkRange">40</stat>
</stats>
<skills>
<skill id="50403" level="1" type="ON_BLESSING" /> <!-- Weapon Blessing Effect -->
<skill id="50406" level="1" type="ON_BLESSING" type_value="5" /> <!-- +5 A-grade Weapon Blessing Effect -->
<skill id="50407" level="1" type="ON_BLESSING" type_value="6" /> <!-- +6 A-grade Weapon Blessing Effect -->
<skill id="50408" level="1" type="ON_BLESSING" type_value="7" /> <!-- +7 A-grade Weapon Blessing Effect -->
<skill id="50409" level="1" type="ON_BLESSING" type_value="8" /> <!-- +8 A-grade Weapon Blessing Effect -->
<skill id="50410" level="1" type="ON_BLESSING" type_value="9" /> <!-- +9 A-grade Weapon Blessing Effect -->
<skill id="50411" level="1" type="ON_BLESSING" type_value="10" /> <!-- +10 A-grade Weapon Blessing Effect -->
</skills>
</item>
<item id="271" name="Hunting Bow" type="Weapon">
<set name="icon" val="icon.weapon_hunting_bow_i00" />
@ -2271,6 +2325,15 @@
<stat type="randomDamage">5</stat>
<stat type="pAtkRange">500</stat>
</stats>
<skills>
<skill id="50401" level="1" type="ON_BLESSING" /> <!-- Weapon Blessing Effect -->
<skill id="50406" level="1" type="ON_BLESSING" type_value="5" /> <!-- +5 A-grade Weapon Blessing Effect -->
<skill id="50407" level="1" type="ON_BLESSING" type_value="6" /> <!-- +6 A-grade Weapon Blessing Effect -->
<skill id="50408" level="1" type="ON_BLESSING" type_value="7" /> <!-- +7 A-grade Weapon Blessing Effect -->
<skill id="50409" level="1" type="ON_BLESSING" type_value="8" /> <!-- +8 A-grade Weapon Blessing Effect -->
<skill id="50410" level="1" type="ON_BLESSING" type_value="9" /> <!-- +9 A-grade Weapon Blessing Effect -->
<skill id="50411" level="1" type="ON_BLESSING" type_value="10" /> <!-- +10 A-grade Weapon Blessing Effect -->
</skills>
</item>
<item id="289" name="Soul Bow" type="Weapon">
<set name="icon" val="icon.weapon_soul_bow_i00" />
@ -2300,6 +2363,15 @@
<stat type="randomDamage">5</stat>
<stat type="pAtkRange">500</stat>
</stats>
<skills>
<skill id="50401" level="1" type="ON_BLESSING" /> <!-- Weapon Blessing Effect -->
<skill id="50406" level="1" type="ON_BLESSING" type_value="5" /> <!-- +5 A-grade Weapon Blessing Effect -->
<skill id="50407" level="1" type="ON_BLESSING" type_value="6" /> <!-- +6 A-grade Weapon Blessing Effect -->
<skill id="50408" level="1" type="ON_BLESSING" type_value="7" /> <!-- +7 A-grade Weapon Blessing Effect -->
<skill id="50409" level="1" type="ON_BLESSING" type_value="8" /> <!-- +8 A-grade Weapon Blessing Effect -->
<skill id="50410" level="1" type="ON_BLESSING" type_value="9" /> <!-- +9 A-grade Weapon Blessing Effect -->
<skill id="50411" level="1" type="ON_BLESSING" type_value="10" /> <!-- +10 A-grade Weapon Blessing Effect -->
</skills>
</item>
<item id="291" name="Trident" type="Weapon">
<set name="icon" val="icon.weapon_trident_i00" />

View File

@ -139,6 +139,13 @@
<set name="isAppearanceable" val="true" />
<skills>
<skill id="3599" level="1" /> <!-- Polearm Multi-attack -->
<skill id="50405" level="1" type="ON_BLESSING" /> <!-- Weapon Blessing Effect -->
<skill id="50406" level="1" type="ON_BLESSING" type_value="5" /> <!-- +5 A-grade Weapon Blessing Effect -->
<skill id="50407" level="1" type="ON_BLESSING" type_value="6" /> <!-- +6 A-grade Weapon Blessing Effect -->
<skill id="50408" level="1" type="ON_BLESSING" type_value="7" /> <!-- +7 A-grade Weapon Blessing Effect -->
<skill id="50409" level="1" type="ON_BLESSING" type_value="8" /> <!-- +8 A-grade Weapon Blessing Effect -->
<skill id="50410" level="1" type="ON_BLESSING" type_value="9" /> <!-- +9 A-grade Weapon Blessing Effect -->
<skill id="50411" level="1" type="ON_BLESSING" type_value="10" /> <!-- +10 A-grade Weapon Blessing Effect -->
</skills>
<stats>
<stat type="pAtk">232</stat>

View File

@ -26,6 +26,15 @@
<stat type="randomDamage">10</stat>
<stat type="pAtkRange">40</stat>
</stats>
<skills>
<skill id="50392" level="1" type="ON_BLESSING" /> <!-- Weapon Blessing Effect -->
<skill id="50406" level="1" type="ON_BLESSING" type_value="5" /> <!-- +5 A-grade Weapon Blessing Effect -->
<skill id="50407" level="1" type="ON_BLESSING" type_value="6" /> <!-- +6 A-grade Weapon Blessing Effect -->
<skill id="50408" level="1" type="ON_BLESSING" type_value="7" /> <!-- +7 A-grade Weapon Blessing Effect -->
<skill id="50409" level="1" type="ON_BLESSING" type_value="8" /> <!-- +8 A-grade Weapon Blessing Effect -->
<skill id="50410" level="1" type="ON_BLESSING" type_value="9" /> <!-- +9 A-grade Weapon Blessing Effect -->
<skill id="50411" level="1" type="ON_BLESSING" type_value="10" /> <!-- +10 A-grade Weapon Blessing Effect -->
</skills>
</item>
<item id="2501" name="Bone Club" type="Weapon">
<set name="icon" val="icon.weapon_club_i00" />
@ -131,6 +140,15 @@
<stat type="randomDamage">19</stat>
<stat type="pAtkRange">40</stat>
</stats>
<skills>
<skill id="50397" level="1" type="ON_BLESSING" /> <!-- Weapon Blessing Effect -->
<skill id="50406" level="1" type="ON_BLESSING" type_value="5" /> <!-- +5 A-grade Weapon Blessing Effect -->
<skill id="50407" level="1" type="ON_BLESSING" type_value="6" /> <!-- +6 A-grade Weapon Blessing Effect -->
<skill id="50408" level="1" type="ON_BLESSING" type_value="7" /> <!-- +7 A-grade Weapon Blessing Effect -->
<skill id="50409" level="1" type="ON_BLESSING" type_value="8" /> <!-- +8 A-grade Weapon Blessing Effect -->
<skill id="50410" level="1" type="ON_BLESSING" type_value="9" /> <!-- +9 A-grade Weapon Blessing Effect -->
<skill id="50411" level="1" type="ON_BLESSING" type_value="10" /> <!-- +10 A-grade Weapon Blessing Effect -->
</skills>
</item>
<item id="2507" name="Lizardspear" type="Weapon">
<set name="icon" val="icon.weapon_doomed_dagger_i00" />

View File

@ -289,6 +289,13 @@
<set name="commissionItemType" val="DUALSWORD" />
<skills>
<skill id="3045" level="17" type="ON_ENCHANT" type_value="4" /> <!-- Special Ability: Haste -->
<skill id="50403" level="1" type="ON_BLESSING" /> <!-- Weapon Blessing Effect -->
<skill id="50406" level="1" type="ON_BLESSING" type_value="5" /> <!-- +5 A-grade Weapon Blessing Effect -->
<skill id="50407" level="1" type="ON_BLESSING" type_value="6" /> <!-- +6 A-grade Weapon Blessing Effect -->
<skill id="50408" level="1" type="ON_BLESSING" type_value="7" /> <!-- +7 A-grade Weapon Blessing Effect -->
<skill id="50409" level="1" type="ON_BLESSING" type_value="8" /> <!-- +8 A-grade Weapon Blessing Effect -->
<skill id="50410" level="1" type="ON_BLESSING" type_value="9" /> <!-- +9 A-grade Weapon Blessing Effect -->
<skill id="50411" level="1" type="ON_BLESSING" type_value="10" /> <!-- +10 A-grade Weapon Blessing Effect -->
</skills>
<stats>
<stat type="pAtk">259</stat>

View File

@ -37,6 +37,13 @@
<set name="isAppearanceable" val="true" />
<skills>
<skill id="3013" level="3" type="ON_ENCHANT" type_value="4" /> <!-- Special Ability: Health -->
<skill id="50403" level="1" type="ON_BLESSING" /> <!-- Weapon Blessing Effect -->
<skill id="50406" level="1" type="ON_BLESSING" type_value="5" /> <!-- +5 A-grade Weapon Blessing Effect -->
<skill id="50407" level="1" type="ON_BLESSING" type_value="6" /> <!-- +6 A-grade Weapon Blessing Effect -->
<skill id="50408" level="1" type="ON_BLESSING" type_value="7" /> <!-- +7 A-grade Weapon Blessing Effect -->
<skill id="50409" level="1" type="ON_BLESSING" type_value="8" /> <!-- +8 A-grade Weapon Blessing Effect -->
<skill id="50410" level="1" type="ON_BLESSING" type_value="9" /> <!-- +9 A-grade Weapon Blessing Effect -->
<skill id="50411" level="1" type="ON_BLESSING" type_value="10" /> <!-- +10 A-grade Weapon Blessing Effect -->
</skills>
<stats>
<stat type="pAtk">275</stat>
@ -67,6 +74,13 @@
<set name="commissionItemType" val="DUALSWORD" />
<skills>
<skill id="3046" level="20" type="ON_ENCHANT" type_value="4" /> <!-- Special Ability: Guidance -->
<skill id="50403" level="1" type="ON_BLESSING" /> <!-- Weapon Blessing Effect -->
<skill id="50406" level="1" type="ON_BLESSING" type_value="5" /> <!-- +5 A-grade Weapon Blessing Effect -->
<skill id="50407" level="1" type="ON_BLESSING" type_value="6" /> <!-- +6 A-grade Weapon Blessing Effect -->
<skill id="50408" level="1" type="ON_BLESSING" type_value="7" /> <!-- +7 A-grade Weapon Blessing Effect -->
<skill id="50409" level="1" type="ON_BLESSING" type_value="8" /> <!-- +8 A-grade Weapon Blessing Effect -->
<skill id="50410" level="1" type="ON_BLESSING" type_value="9" /> <!-- +9 A-grade Weapon Blessing Effect -->
<skill id="50411" level="1" type="ON_BLESSING" type_value="10" /> <!-- +10 A-grade Weapon Blessing Effect -->
</skills>
<stats>
<stat type="pAtk">282</stat>

View File

@ -532,6 +532,15 @@
<stat type="randomDamage">10</stat>
<stat type="pAtkRange">40</stat>
</stats>
<skills>
<skill id="50395" level="1" type="ON_BLESSING" /> <!-- Weapon Blessing Effect -->
<skill id="50406" level="1" type="ON_BLESSING" type_value="5" /> <!-- +5 A-grade Weapon Blessing Effect -->
<skill id="50407" level="1" type="ON_BLESSING" type_value="6" /> <!-- +6 A-grade Weapon Blessing Effect -->
<skill id="50408" level="1" type="ON_BLESSING" type_value="7" /> <!-- +7 A-grade Weapon Blessing Effect -->
<skill id="50409" level="1" type="ON_BLESSING" type_value="8" /> <!-- +8 A-grade Weapon Blessing Effect -->
<skill id="50410" level="1" type="ON_BLESSING" type_value="9" /> <!-- +9 A-grade Weapon Blessing Effect -->
<skill id="50411" level="1" type="ON_BLESSING" type_value="10" /> <!-- +10 A-grade Weapon Blessing Effect -->
</skills>
</item>
<item id="7885" name="Priest Sword" type="Weapon">
<set name="icon" val="icon.weapon_sword_of_priest_i00" />
@ -807,6 +816,15 @@
<stat type="randomDamage">19</stat>
<stat type="pAtkRange">40</stat>
</stats>
<skills>
<skill id="50397" level="1" type="ON_BLESSING" /> <!-- Weapon Blessing Effect -->
<skill id="50406" level="1" type="ON_BLESSING" type_value="5" /> <!-- +5 A-grade Weapon Blessing Effect -->
<skill id="50407" level="1" type="ON_BLESSING" type_value="6" /> <!-- +6 A-grade Weapon Blessing Effect -->
<skill id="50408" level="1" type="ON_BLESSING" type_value="7" /> <!-- +7 A-grade Weapon Blessing Effect -->
<skill id="50409" level="1" type="ON_BLESSING" type_value="8" /> <!-- +8 A-grade Weapon Blessing Effect -->
<skill id="50410" level="1" type="ON_BLESSING" type_value="9" /> <!-- +9 A-grade Weapon Blessing Effect -->
<skill id="50411" level="1" type="ON_BLESSING" type_value="10" /> <!-- +10 A-grade Weapon Blessing Effect -->
</skills>
</item>
<item id="7895" name="Flaming Dragon Skull" type="Weapon">
<set name="icon" val="icon.weapon_dragon_flame_head_i00" />
@ -835,6 +853,15 @@
<stat type="randomDamage">19</stat>
<stat type="pAtkRange">40</stat>
</stats>
<skills>
<skill id="50397" level="1" type="ON_BLESSING" /> <!-- Weapon Blessing Effect -->
<skill id="50406" level="1" type="ON_BLESSING" type_value="5" /> <!-- +5 A-grade Weapon Blessing Effect -->
<skill id="50407" level="1" type="ON_BLESSING" type_value="6" /> <!-- +6 A-grade Weapon Blessing Effect -->
<skill id="50408" level="1" type="ON_BLESSING" type_value="7" /> <!-- +7 A-grade Weapon Blessing Effect -->
<skill id="50409" level="1" type="ON_BLESSING" type_value="8" /> <!-- +8 A-grade Weapon Blessing Effect -->
<skill id="50410" level="1" type="ON_BLESSING" type_value="9" /> <!-- +9 A-grade Weapon Blessing Effect -->
<skill id="50411" level="1" type="ON_BLESSING" type_value="10" /> <!-- +10 A-grade Weapon Blessing Effect -->
</skills>
</item>
<item id="7896" name="Lesser Giant's Hammer" type="Weapon">
<set name="icon" val="icon.weapon_giants_hammer_i00" />
@ -943,5 +970,14 @@
<stat type="randomDamage">19</stat>
<stat type="pAtkRange">40</stat>
</stats>
<skills>
<skill id="50399" level="1" type="ON_BLESSING" /> <!-- Weapon Blessing Effect -->
<skill id="50406" level="1" type="ON_BLESSING" type_value="5" /> <!-- +5 A-grade Weapon Blessing Effect -->
<skill id="50407" level="1" type="ON_BLESSING" type_value="6" /> <!-- +6 A-grade Weapon Blessing Effect -->
<skill id="50408" level="1" type="ON_BLESSING" type_value="7" /> <!-- +7 A-grade Weapon Blessing Effect -->
<skill id="50409" level="1" type="ON_BLESSING" type_value="8" /> <!-- +8 A-grade Weapon Blessing Effect -->
<skill id="50410" level="1" type="ON_BLESSING" type_value="9" /> <!-- +9 A-grade Weapon Blessing Effect -->
<skill id="50411" level="1" type="ON_BLESSING" type_value="10" /> <!-- +10 A-grade Weapon Blessing Effect -->
</skills>
</item>
</list>

View File

@ -80,5 +80,14 @@
<stat type="randomDamage">19</stat>
<stat type="pAtkRange">40</stat>
</stats>
<skills>
<skill id="50399" level="1" type="ON_BLESSING" /> <!-- Weapon Blessing Effect -->
<skill id="50406" level="1" type="ON_BLESSING" type_value="5" /> <!-- +5 A-grade Weapon Blessing Effect -->
<skill id="50407" level="1" type="ON_BLESSING" type_value="6" /> <!-- +6 A-grade Weapon Blessing Effect -->
<skill id="50408" level="1" type="ON_BLESSING" type_value="7" /> <!-- +7 A-grade Weapon Blessing Effect -->
<skill id="50409" level="1" type="ON_BLESSING" type_value="8" /> <!-- +8 A-grade Weapon Blessing Effect -->
<skill id="50410" level="1" type="ON_BLESSING" type_value="9" /> <!-- +9 A-grade Weapon Blessing Effect -->
<skill id="50411" level="1" type="ON_BLESSING" type_value="10" /> <!-- +10 A-grade Weapon Blessing Effect -->
</skills>
</item>
</list>

View File

@ -90,6 +90,15 @@
<stat type="randomDamage">10</stat>
<stat type="pAtkRange">40</stat>
</stats>
<skills>
<skill id="50392" level="1" type="ON_BLESSING" /> <!-- Weapon Blessing Effect -->
<skill id="50406" level="1" type="ON_BLESSING" type_value="5" /> <!-- +5 A-grade Weapon Blessing Effect -->
<skill id="50407" level="1" type="ON_BLESSING" type_value="6" /> <!-- +6 A-grade Weapon Blessing Effect -->
<skill id="50408" level="1" type="ON_BLESSING" type_value="7" /> <!-- +7 A-grade Weapon Blessing Effect -->
<skill id="50409" level="1" type="ON_BLESSING" type_value="8" /> <!-- +8 A-grade Weapon Blessing Effect -->
<skill id="50410" level="1" type="ON_BLESSING" type_value="9" /> <!-- +9 A-grade Weapon Blessing Effect -->
<skill id="50411" level="1" type="ON_BLESSING" type_value="10" /> <!-- +10 A-grade Weapon Blessing Effect -->
</skills>
</item>
<item id="8679" name="Sword of Ipos" type="Weapon">
<set name="icon" val="icon.weapon_sword_of_ipos_i00" />
@ -117,6 +126,15 @@
<stat type="randomDamage">10</stat>
<stat type="pAtkRange">40</stat>
</stats>
<skills>
<skill id="50395" level="1" type="ON_BLESSING" /> <!-- Weapon Blessing Effect -->
<skill id="50406" level="1" type="ON_BLESSING" type_value="5" /> <!-- +5 A-grade Weapon Blessing Effect -->
<skill id="50407" level="1" type="ON_BLESSING" type_value="6" /> <!-- +6 A-grade Weapon Blessing Effect -->
<skill id="50408" level="1" type="ON_BLESSING" type_value="7" /> <!-- +7 A-grade Weapon Blessing Effect -->
<skill id="50409" level="1" type="ON_BLESSING" type_value="8" /> <!-- +8 A-grade Weapon Blessing Effect -->
<skill id="50410" level="1" type="ON_BLESSING" type_value="9" /> <!-- +9 A-grade Weapon Blessing Effect -->
<skill id="50411" level="1" type="ON_BLESSING" type_value="10" /> <!-- +10 A-grade Weapon Blessing Effect -->
</skills>
</item>
<item id="8680" name="Barakiel's Axe" type="Weapon">
<set name="icon" val="icon.weapon_barakiel_axe_i00" />
@ -144,6 +162,15 @@
<stat type="randomDamage">19</stat>
<stat type="pAtkRange">40</stat>
</stats>
<skills>
<skill id="50397" level="1" type="ON_BLESSING" /> <!-- Weapon Blessing Effect -->
<skill id="50406" level="1" type="ON_BLESSING" type_value="5" /> <!-- +5 A-grade Weapon Blessing Effect -->
<skill id="50407" level="1" type="ON_BLESSING" type_value="6" /> <!-- +6 A-grade Weapon Blessing Effect -->
<skill id="50408" level="1" type="ON_BLESSING" type_value="7" /> <!-- +7 A-grade Weapon Blessing Effect -->
<skill id="50409" level="1" type="ON_BLESSING" type_value="8" /> <!-- +8 A-grade Weapon Blessing Effect -->
<skill id="50410" level="1" type="ON_BLESSING" type_value="9" /> <!-- +9 A-grade Weapon Blessing Effect -->
<skill id="50411" level="1" type="ON_BLESSING" type_value="10" /> <!-- +10 A-grade Weapon Blessing Effect -->
</skills>
</item>
<item id="8681" name="Behemoth' Tuning Fork" type="Weapon">
<set name="icon" val="icon.weapon_tuning_fork_of_behemoth_i00" />
@ -171,6 +198,15 @@
<stat type="randomDamage">19</stat>
<stat type="pAtkRange">40</stat>
</stats>
<skills>
<skill id="50399" level="1" type="ON_BLESSING" /> <!-- Weapon Blessing Effect -->
<skill id="50406" level="1" type="ON_BLESSING" type_value="5" /> <!-- +5 A-grade Weapon Blessing Effect -->
<skill id="50407" level="1" type="ON_BLESSING" type_value="6" /> <!-- +6 A-grade Weapon Blessing Effect -->
<skill id="50408" level="1" type="ON_BLESSING" type_value="7" /> <!-- +7 A-grade Weapon Blessing Effect -->
<skill id="50409" level="1" type="ON_BLESSING" type_value="8" /> <!-- +8 A-grade Weapon Blessing Effect -->
<skill id="50410" level="1" type="ON_BLESSING" type_value="9" /> <!-- +9 A-grade Weapon Blessing Effect -->
<skill id="50411" level="1" type="ON_BLESSING" type_value="10" /> <!-- +10 A-grade Weapon Blessing Effect -->
</skills>
</item>
<item id="8682" name="Naga Storm" type="Weapon">
<set name="icon" val="icon.weapon_naga_storm_i00" />
@ -198,6 +234,15 @@
<stat type="randomDamage">5</stat>
<stat type="pAtkRange">40</stat>
</stats>
<skills>
<skill id="50402" level="1" type="ON_BLESSING" /> <!-- Weapon Blessing Effect -->
<skill id="50406" level="1" type="ON_BLESSING" type_value="5" /> <!-- +5 A-grade Weapon Blessing Effect -->
<skill id="50407" level="1" type="ON_BLESSING" type_value="6" /> <!-- +6 A-grade Weapon Blessing Effect -->
<skill id="50408" level="1" type="ON_BLESSING" type_value="7" /> <!-- +7 A-grade Weapon Blessing Effect -->
<skill id="50409" level="1" type="ON_BLESSING" type_value="8" /> <!-- +8 A-grade Weapon Blessing Effect -->
<skill id="50410" level="1" type="ON_BLESSING" type_value="9" /> <!-- +9 A-grade Weapon Blessing Effect -->
<skill id="50411" level="1" type="ON_BLESSING" type_value="10" /> <!-- +10 A-grade Weapon Blessing Effect -->
</skills>
</item>
<item id="8683" name="Tiphon's Spear" type="Weapon">
<set name="icon" val="icon.weapon_tiphon_spear_i00" />
@ -218,6 +263,13 @@
<set name="commissionItemType" val="SPEAR" />
<skills>
<skill id="3599" level="1" /> <!-- Polearm Multi-attack -->
<skill id="50405" level="1" type="ON_BLESSING" /> <!-- Weapon Blessing Effect -->
<skill id="50406" level="1" type="ON_BLESSING" type_value="5" /> <!-- +5 A-grade Weapon Blessing Effect -->
<skill id="50407" level="1" type="ON_BLESSING" type_value="6" /> <!-- +6 A-grade Weapon Blessing Effect -->
<skill id="50408" level="1" type="ON_BLESSING" type_value="7" /> <!-- +7 A-grade Weapon Blessing Effect -->
<skill id="50409" level="1" type="ON_BLESSING" type_value="8" /> <!-- +8 A-grade Weapon Blessing Effect -->
<skill id="50410" level="1" type="ON_BLESSING" type_value="9" /> <!-- +9 A-grade Weapon Blessing Effect -->
<skill id="50411" level="1" type="ON_BLESSING" type_value="10" /> <!-- +10 A-grade Weapon Blessing Effect -->
</skills>
<stats>
<stat type="pAtk">251</stat>
@ -258,6 +310,15 @@
<stat type="randomDamage">5</stat>
<stat type="pAtkRange">500</stat>
</stats>
<skills>
<skill id="50401" level="1" type="ON_BLESSING" /> <!-- Weapon Blessing Effect -->
<skill id="50406" level="1" type="ON_BLESSING" type_value="5" /> <!-- +5 A-grade Weapon Blessing Effect -->
<skill id="50407" level="1" type="ON_BLESSING" type_value="6" /> <!-- +6 A-grade Weapon Blessing Effect -->
<skill id="50408" level="1" type="ON_BLESSING" type_value="7" /> <!-- +7 A-grade Weapon Blessing Effect -->
<skill id="50409" level="1" type="ON_BLESSING" type_value="8" /> <!-- +8 A-grade Weapon Blessing Effect -->
<skill id="50410" level="1" type="ON_BLESSING" type_value="9" /> <!-- +9 A-grade Weapon Blessing Effect -->
<skill id="50411" level="1" type="ON_BLESSING" type_value="10" /> <!-- +10 A-grade Weapon Blessing Effect -->
</skills>
</item>
<item id="8685" name="Sobekk's Hurricane" type="Weapon">
<set name="icon" val="icon.weapon_sobekk_hurricane_i00" />
@ -285,6 +346,15 @@
<stat type="randomDamage">5</stat>
<stat type="pAtkRange">40</stat>
</stats>
<skills>
<skill id="50403" level="1" type="ON_BLESSING" /> <!-- Weapon Blessing Effect -->
<skill id="50406" level="1" type="ON_BLESSING" type_value="5" /> <!-- +5 A-grade Weapon Blessing Effect -->
<skill id="50407" level="1" type="ON_BLESSING" type_value="6" /> <!-- +6 A-grade Weapon Blessing Effect -->
<skill id="50408" level="1" type="ON_BLESSING" type_value="7" /> <!-- +7 A-grade Weapon Blessing Effect -->
<skill id="50409" level="1" type="ON_BLESSING" type_value="8" /> <!-- +8 A-grade Weapon Blessing Effect -->
<skill id="50410" level="1" type="ON_BLESSING" type_value="9" /> <!-- +9 A-grade Weapon Blessing Effect -->
<skill id="50411" level="1" type="ON_BLESSING" type_value="10" /> <!-- +10 A-grade Weapon Blessing Effect -->
</skills>
</item>
<item id="8686" name="Themis' Tongue" type="Weapon">
<set name="icon" val="icon.weapon_tongue_of_themis_i00" />
@ -312,6 +382,15 @@
<stat type="randomDamage">10</stat>
<stat type="pAtkRange">40</stat>
</stats>
<skills>
<skill id="50392" level="1" type="ON_BLESSING" /> <!-- Weapon Blessing Effect -->
<skill id="50406" level="1" type="ON_BLESSING" type_value="5" /> <!-- +5 A-grade Weapon Blessing Effect -->
<skill id="50407" level="1" type="ON_BLESSING" type_value="6" /> <!-- +6 A-grade Weapon Blessing Effect -->
<skill id="50408" level="1" type="ON_BLESSING" type_value="7" /> <!-- +7 A-grade Weapon Blessing Effect -->
<skill id="50409" level="1" type="ON_BLESSING" type_value="8" /> <!-- +8 A-grade Weapon Blessing Effect -->
<skill id="50410" level="1" type="ON_BLESSING" type_value="9" /> <!-- +9 A-grade Weapon Blessing Effect -->
<skill id="50411" level="1" type="ON_BLESSING" type_value="10" /> <!-- +10 A-grade Weapon Blessing Effect -->
</skills>
</item>
<item id="8687" name="Cabrio's Hand" type="Weapon">
<set name="icon" val="icon.weapon_hand_of_cabrio_i00" />
@ -340,6 +419,15 @@
<stat type="randomDamage">19</stat>
<stat type="pAtkRange">40</stat>
</stats>
<skills>
<skill id="50397" level="1" type="ON_BLESSING" /> <!-- Weapon Blessing Effect -->
<skill id="50406" level="1" type="ON_BLESSING" type_value="5" /> <!-- +5 A-grade Weapon Blessing Effect -->
<skill id="50407" level="1" type="ON_BLESSING" type_value="6" /> <!-- +6 A-grade Weapon Blessing Effect -->
<skill id="50408" level="1" type="ON_BLESSING" type_value="7" /> <!-- +7 A-grade Weapon Blessing Effect -->
<skill id="50409" level="1" type="ON_BLESSING" type_value="8" /> <!-- +8 A-grade Weapon Blessing Effect -->
<skill id="50410" level="1" type="ON_BLESSING" type_value="9" /> <!-- +9 A-grade Weapon Blessing Effect -->
<skill id="50411" level="1" type="ON_BLESSING" type_value="10" /> <!-- +10 A-grade Weapon Blessing Effect -->
</skills>
</item>
<item id="8688" name="Daimon Crystal" type="Weapon">
<set name="icon" val="icon.weapon_crystal_of_deamon_i00" />
@ -368,6 +456,15 @@
<stat type="randomDamage">19</stat>
<stat type="pAtkRange">40</stat>
</stats>
<skills>
<skill id="50399" level="1" type="ON_BLESSING" /> <!-- Weapon Blessing Effect -->
<skill id="50406" level="1" type="ON_BLESSING" type_value="5" /> <!-- +5 A-grade Weapon Blessing Effect -->
<skill id="50407" level="1" type="ON_BLESSING" type_value="6" /> <!-- +6 A-grade Weapon Blessing Effect -->
<skill id="50408" level="1" type="ON_BLESSING" type_value="7" /> <!-- +7 A-grade Weapon Blessing Effect -->
<skill id="50409" level="1" type="ON_BLESSING" type_value="8" /> <!-- +8 A-grade Weapon Blessing Effect -->
<skill id="50410" level="1" type="ON_BLESSING" type_value="9" /> <!-- +9 A-grade Weapon Blessing Effect -->
<skill id="50411" level="1" type="ON_BLESSING" type_value="10" /> <!-- +10 A-grade Weapon Blessing Effect -->
</skills>
</item>
<item id="8690" name="Recipe: Sirra's Blade (60%)" type="EtcItem">
<!-- For Dwarves only. A recipe for Sirra's Blade. Requires Create Item Lv. 8. The success rate is 60%. -->

View File

@ -20,6 +20,13 @@
<set name="isAppearanceable" val="true" />
<skills>
<skill id="3045" level="17" type="ON_ENCHANT" type_value="4" /> <!-- Special Ability: Haste -->
<skill id="50403" level="1" type="ON_BLESSING" /> <!-- Weapon Blessing Effect -->
<skill id="50406" level="1" type="ON_BLESSING" type_value="5" /> <!-- +5 A-grade Weapon Blessing Effect -->
<skill id="50407" level="1" type="ON_BLESSING" type_value="6" /> <!-- +6 A-grade Weapon Blessing Effect -->
<skill id="50408" level="1" type="ON_BLESSING" type_value="7" /> <!-- +7 A-grade Weapon Blessing Effect -->
<skill id="50409" level="1" type="ON_BLESSING" type_value="8" /> <!-- +8 A-grade Weapon Blessing Effect -->
<skill id="50410" level="1" type="ON_BLESSING" type_value="9" /> <!-- +9 A-grade Weapon Blessing Effect -->
<skill id="50411" level="1" type="ON_BLESSING" type_value="10" /> <!-- +10 A-grade Weapon Blessing Effect -->
</skills>
<stats>
<stat type="pAtk">305</stat>

View File

@ -1182,6 +1182,15 @@
<stat type="randomDamage">15</stat>
<stat type="pAtkRange">40</stat>
</stats>
<skills>
<skill id="50395" level="1" type="ON_BLESSING" /> <!-- Weapon Blessing Effect -->
<skill id="50406" level="1" type="ON_BLESSING" type_value="5" /> <!-- +5 A-grade Weapon Blessing Effect -->
<skill id="50407" level="1" type="ON_BLESSING" type_value="6" /> <!-- +6 A-grade Weapon Blessing Effect -->
<skill id="50408" level="1" type="ON_BLESSING" type_value="7" /> <!-- +7 A-grade Weapon Blessing Effect -->
<skill id="50409" level="1" type="ON_BLESSING" type_value="8" /> <!-- +8 A-grade Weapon Blessing Effect -->
<skill id="50410" level="1" type="ON_BLESSING" type_value="9" /> <!-- +9 A-grade Weapon Blessing Effect -->
<skill id="50411" level="1" type="ON_BLESSING" type_value="10" /> <!-- +10 A-grade Weapon Blessing Effect -->
</skills>
</item>
<item id="91888" name="Undertaker" type="Weapon">
<set name="icon" val="icon.weapon_death_bringer_i00" />
@ -1205,6 +1214,15 @@
<stat type="randomDamage">15</stat>
<stat type="pAtkRange">40</stat>
</stats>
<skills>
<skill id="50395" level="1" type="ON_BLESSING" /> <!-- Weapon Blessing Effect -->
<skill id="50406" level="1" type="ON_BLESSING" type_value="5" /> <!-- +5 A-grade Weapon Blessing Effect -->
<skill id="50407" level="1" type="ON_BLESSING" type_value="6" /> <!-- +6 A-grade Weapon Blessing Effect -->
<skill id="50408" level="1" type="ON_BLESSING" type_value="7" /> <!-- +7 A-grade Weapon Blessing Effect -->
<skill id="50409" level="1" type="ON_BLESSING" type_value="8" /> <!-- +8 A-grade Weapon Blessing Effect -->
<skill id="50410" level="1" type="ON_BLESSING" type_value="9" /> <!-- +9 A-grade Weapon Blessing Effect -->
<skill id="50411" level="1" type="ON_BLESSING" type_value="10" /> <!-- +10 A-grade Weapon Blessing Effect -->
</skills>
</item>
<item id="91889" name="Divine Pain" type="Weapon">
<set name="icon" val="icon.weapon_pain_of_godness_i00" />
@ -1228,6 +1246,15 @@
<stat type="randomDamage">15</stat>
<stat type="pAtkRange">40</stat>
</stats>
<skills>
<skill id="50395" level="1" type="ON_BLESSING" /> <!-- Weapon Blessing Effect -->
<skill id="50406" level="1" type="ON_BLESSING" type_value="5" /> <!-- +5 A-grade Weapon Blessing Effect -->
<skill id="50407" level="1" type="ON_BLESSING" type_value="6" /> <!-- +6 A-grade Weapon Blessing Effect -->
<skill id="50408" level="1" type="ON_BLESSING" type_value="7" /> <!-- +7 A-grade Weapon Blessing Effect -->
<skill id="50409" level="1" type="ON_BLESSING" type_value="8" /> <!-- +8 A-grade Weapon Blessing Effect -->
<skill id="50410" level="1" type="ON_BLESSING" type_value="9" /> <!-- +9 A-grade Weapon Blessing Effect -->
<skill id="50411" level="1" type="ON_BLESSING" type_value="10" /> <!-- +10 A-grade Weapon Blessing Effect -->
</skills>
</item>
<item id="91890" name="Gram" type="Weapon">
<set name="icon" val="icon.weapon_gram_i00" />

View File

@ -65,6 +65,15 @@
<stat type="pAtkSpd">406</stat>
<stat type="randomDamage">19</stat>
</stats>
<skills>
<skill id="50392" level="1" type="ON_BLESSING" /> <!-- Weapon Blessing Effect -->
<skill id="50406" level="1" type="ON_BLESSING" type_value="5" /> <!-- +5 A-grade Weapon Blessing Effect -->
<skill id="50407" level="1" type="ON_BLESSING" type_value="6" /> <!-- +6 A-grade Weapon Blessing Effect -->
<skill id="50408" level="1" type="ON_BLESSING" type_value="7" /> <!-- +7 A-grade Weapon Blessing Effect -->
<skill id="50409" level="1" type="ON_BLESSING" type_value="8" /> <!-- +8 A-grade Weapon Blessing Effect -->
<skill id="50410" level="1" type="ON_BLESSING" type_value="9" /> <!-- +9 A-grade Weapon Blessing Effect -->
<skill id="50411" level="1" type="ON_BLESSING" type_value="10" /> <!-- +10 A-grade Weapon Blessing Effect -->
</skills>
</item>
<item id="91903" name="Lacerator" type="Weapon">
<set name="icon" val="icon.weapon_greed_stinger_i00" />
@ -87,6 +96,15 @@
<stat type="pAtkSpd">406</stat>
<stat type="randomDamage">19</stat>
</stats>
<skills>
<skill id="50392" level="1" type="ON_BLESSING" /> <!-- Weapon Blessing Effect -->
<skill id="50406" level="1" type="ON_BLESSING" type_value="5" /> <!-- +5 A-grade Weapon Blessing Effect -->
<skill id="50407" level="1" type="ON_BLESSING" type_value="6" /> <!-- +6 A-grade Weapon Blessing Effect -->
<skill id="50408" level="1" type="ON_BLESSING" type_value="7" /> <!-- +7 A-grade Weapon Blessing Effect -->
<skill id="50409" level="1" type="ON_BLESSING" type_value="8" /> <!-- +8 A-grade Weapon Blessing Effect -->
<skill id="50410" level="1" type="ON_BLESSING" type_value="9" /> <!-- +9 A-grade Weapon Blessing Effect -->
<skill id="50411" level="1" type="ON_BLESSING" type_value="10" /> <!-- +10 A-grade Weapon Blessing Effect -->
</skills>
</item>
<item id="91904" name="White Lightning" type="Weapon">
<set name="icon" val="icon.weapon_lightning_blaze_i00" />
@ -109,6 +127,15 @@
<stat type="pAtkSpd">406</stat>
<stat type="randomDamage">19</stat>
</stats>
<skills>
<skill id="50392" level="1" type="ON_BLESSING" /> <!-- Weapon Blessing Effect -->
<skill id="50406" level="1" type="ON_BLESSING" type_value="5" /> <!-- +5 A-grade Weapon Blessing Effect -->
<skill id="50407" level="1" type="ON_BLESSING" type_value="6" /> <!-- +6 A-grade Weapon Blessing Effect -->
<skill id="50408" level="1" type="ON_BLESSING" type_value="7" /> <!-- +7 A-grade Weapon Blessing Effect -->
<skill id="50409" level="1" type="ON_BLESSING" type_value="8" /> <!-- +8 A-grade Weapon Blessing Effect -->
<skill id="50410" level="1" type="ON_BLESSING" type_value="9" /> <!-- +9 A-grade Weapon Blessing Effect -->
<skill id="50411" level="1" type="ON_BLESSING" type_value="10" /> <!-- +10 A-grade Weapon Blessing Effect -->
</skills>
</item>
<item id="91905" name="Laevateinn" type="Weapon">
<set name="icon" val="icon.weapon_leavatein_i00" />

View File

@ -89,6 +89,13 @@
</stats>
<skills>
<skill id="50297" level="1" /> <!-- Zaken's Blood Sword -->
<skill id="50392" level="1" type="ON_BLESSING" /> <!-- Weapon Blessing Effect -->
<skill id="50412" level="1" type="ON_BLESSING" type_value="5" /> <!-- +5 Boss' Weapon Blessing Effect -->
<skill id="50413" level="1" type="ON_BLESSING" type_value="6" /> <!-- +6 Boss' Weapon Blessing Effect -->
<skill id="50414" level="1" type="ON_BLESSING" type_value="7" /> <!-- +7 Boss' Weapon Blessing Effect -->
<skill id="50415" level="1" type="ON_BLESSING" type_value="8" /> <!-- +8 Boss' Weapon Blessing Effect -->
<skill id="50416" level="1" type="ON_BLESSING" type_value="9" /> <!-- +9 Boss' Weapon Blessing Effect -->
<skill id="50417" level="1" type="ON_BLESSING" type_value="10" /> <!-- +10 Boss' Weapon Blessing Effect -->
</skills>
</item>
<item id="92405" name="Core's Plasmic Bow" type="Weapon">
@ -114,6 +121,13 @@
</stats>
<skills>
<skill id="50299" level="1" /> <!-- Core's Plasmic Bow -->
<skill id="50401" level="1" type="ON_BLESSING" /> <!-- Weapon Blessing Effect -->
<skill id="50412" level="1" type="ON_BLESSING" type_value="5" /> <!-- +5 Boss' Weapon Blessing Effect -->
<skill id="50413" level="1" type="ON_BLESSING" type_value="6" /> <!-- +6 Boss' Weapon Blessing Effect -->
<skill id="50414" level="1" type="ON_BLESSING" type_value="7" /> <!-- +7 Boss' Weapon Blessing Effect -->
<skill id="50415" level="1" type="ON_BLESSING" type_value="8" /> <!-- +8 Boss' Weapon Blessing Effect -->
<skill id="50416" level="1" type="ON_BLESSING" type_value="9" /> <!-- +9 Boss' Weapon Blessing Effect -->
<skill id="50417" level="1" type="ON_BLESSING" type_value="10" /> <!-- +10 Boss' Weapon Blessing Effect -->
</skills>
</item>
<item id="92406" name="Queen Ant's Stone Spear" additionalName="Not available" type="Weapon">
@ -138,6 +152,13 @@
</stats>
<skills>
<skill id="50296" level="1" /> <!-- Queen Ant's Stone Spear -->
<skill id="50405" level="1" type="ON_BLESSING" /> <!-- Weapon Blessing Effect -->
<skill id="50412" level="1" type="ON_BLESSING" type_value="5" /> <!-- +5 Boss' Weapon Blessing Effect -->
<skill id="50413" level="1" type="ON_BLESSING" type_value="6" /> <!-- +6 Boss' Weapon Blessing Effect -->
<skill id="50414" level="1" type="ON_BLESSING" type_value="7" /> <!-- +7 Boss' Weapon Blessing Effect -->
<skill id="50415" level="1" type="ON_BLESSING" type_value="8" /> <!-- +8 Boss' Weapon Blessing Effect -->
<skill id="50416" level="1" type="ON_BLESSING" type_value="9" /> <!-- +9 Boss' Weapon Blessing Effect -->
<skill id="50417" level="1" type="ON_BLESSING" type_value="10" /> <!-- +10 Boss' Weapon Blessing Effect -->
</skills>
</item>
<item id="92407" name="Orfen's Venom Sword" type="Weapon">
@ -162,6 +183,13 @@
</stats>
<skills>
<skill id="50298" level="1" /> <!-- Orfen's Venom Sword -->
<skill id="50392" level="1" type="ON_BLESSING" /> <!-- Weapon Blessing Effect -->
<skill id="50412" level="1" type="ON_BLESSING" type_value="5" /> <!-- +5 Boss' Weapon Blessing Effect -->
<skill id="50413" level="1" type="ON_BLESSING" type_value="6" /> <!-- +6 Boss' Weapon Blessing Effect -->
<skill id="50414" level="1" type="ON_BLESSING" type_value="7" /> <!-- +7 Boss' Weapon Blessing Effect -->
<skill id="50415" level="1" type="ON_BLESSING" type_value="8" /> <!-- +8 Boss' Weapon Blessing Effect -->
<skill id="50416" level="1" type="ON_BLESSING" type_value="9" /> <!-- +9 Boss' Weapon Blessing Effect -->
<skill id="50417" level="1" type="ON_BLESSING" type_value="10" /> <!-- +10 Boss' Weapon Blessing Effect -->
</skills>
</item>
<item id="92408" name="Baium's Thunder Breaker" type="Weapon">
@ -186,6 +214,13 @@
</stats>
<skills>
<skill id="50295" level="1" /> <!-- Baium's Thunder Breaker -->
<skill id="50402" level="1" type="ON_BLESSING" /> <!-- Weapon Blessing Effect -->
<skill id="50412" level="1" type="ON_BLESSING" type_value="5" /> <!-- +5 Boss' Weapon Blessing Effect -->
<skill id="50413" level="1" type="ON_BLESSING" type_value="6" /> <!-- +6 Boss' Weapon Blessing Effect -->
<skill id="50414" level="1" type="ON_BLESSING" type_value="7" /> <!-- +7 Boss' Weapon Blessing Effect -->
<skill id="50415" level="1" type="ON_BLESSING" type_value="8" /> <!-- +8 Boss' Weapon Blessing Effect -->
<skill id="50416" level="1" type="ON_BLESSING" type_value="9" /> <!-- +9 Boss' Weapon Blessing Effect -->
<skill id="50417" level="1" type="ON_BLESSING" type_value="10" /> <!-- +10 Boss' Weapon Blessing Effect -->
</skills>
</item>
<item id="92409" name="Special Dragon Fruit Lv. 2" type="EtcItem">
@ -326,6 +361,13 @@
</stats>
<skills>
<skill id="50296" level="1" /> <!-- Queen Ant's Stone Spear -->
<skill id="50397" level="1" type="ON_BLESSING" /> <!-- Weapon Blessing Effect -->
<skill id="50412" level="1" type="ON_BLESSING" type_value="5" /> <!-- +5 Boss' Weapon Blessing Effect -->
<skill id="50413" level="1" type="ON_BLESSING" type_value="6" /> <!-- +6 Boss' Weapon Blessing Effect -->
<skill id="50414" level="1" type="ON_BLESSING" type_value="7" /> <!-- +7 Boss' Weapon Blessing Effect -->
<skill id="50415" level="1" type="ON_BLESSING" type_value="8" /> <!-- +8 Boss' Weapon Blessing Effect -->
<skill id="50416" level="1" type="ON_BLESSING" type_value="9" /> <!-- +9 Boss' Weapon Blessing Effect -->
<skill id="50417" level="1" type="ON_BLESSING" type_value="10" /> <!-- +10 Boss' Weapon Blessing Effect -->
</skills>
</item>
<item id="92422" name="Tower of Insolence (1st Floor) Stone of Memory" type="EtcItem">

View File

@ -350,6 +350,15 @@
<stat type="pAtkRange">40</stat>
<stat type="randomDamage">10</stat>
</stats>
<skills>
<skill id="50392" level="1" type="ON_BLESSING" /> <!-- Weapon Blessing Effect -->
<skill id="50406" level="1" type="ON_BLESSING" type_value="5" /> <!-- +5 A-grade Weapon Blessing Effect -->
<skill id="50407" level="1" type="ON_BLESSING" type_value="6" /> <!-- +6 A-grade Weapon Blessing Effect -->
<skill id="50408" level="1" type="ON_BLESSING" type_value="7" /> <!-- +7 A-grade Weapon Blessing Effect -->
<skill id="50409" level="1" type="ON_BLESSING" type_value="8" /> <!-- +8 A-grade Weapon Blessing Effect -->
<skill id="50410" level="1" type="ON_BLESSING" type_value="9" /> <!-- +9 A-grade Weapon Blessing Effect -->
<skill id="50411" level="1" type="ON_BLESSING" type_value="10" /> <!-- +10 A-grade Weapon Blessing Effect -->
</skills>
</item>
<item id="92931" name="Dragon Slayer" additionalName="Sealed" type="Weapon">
<set name="icon" val="icon.weapon_dragon_slayer_i00" />

View File

@ -898,6 +898,12 @@
<stat type="pAtkRange">40</stat>
<stat type="randomDamage">10</stat>
</stats>
<skills>
<skill id="50393" level="1" type="ON_BLESSING" /> <!-- Weapon Blessing Effect -->
<skill id="50418" level="1" type="ON_BLESSING" type_value="1" /> <!-- +1 Death Knight's Flame Sword Blessing Effect -->
<skill id="50419" level="1" type="ON_BLESSING" type_value="2" /> <!-- +2 Death Knight's Flame Sword Blessing Effect -->
<skill id="50420" level="1" type="ON_BLESSING" type_value="3" /> <!-- +3 Death Knight's Flame Sword Blessing Effect -->
</skills>
</item>
<item id="93865" name="Glorious Circlet" additionalName="7-day" type="Armor">
<!-- For Olympiad Heros. STR/ INT/ DEX/ WIT/CON/ MEN +3. Uses 2 hair accessory slots. -->

View File

@ -1005,7 +1005,7 @@
<set name="is_sellable" val="false" />
<set name="is_stackable" val="true" />
<set name="etcitem_type" val="BLESS_ENCHT_AM" /> <!-- BLESS_ENCHT_AM -->
<set name="handler" val="EnchantScrolls" />
<set name="handler" val="BlessingScrolls" />
<skills>
<skill id="40214" level="1" /> <!-- Scroll of Blessing -->
</skills>

View File

@ -92,7 +92,7 @@
<set name="is_sellable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_oly_restricted" val="true" />
<set name="handler" val="EnchantScrolls" />
<set name="handler" val="BlessingScrolls" />
<set name="commissionItemType" val="SCROLL_OTHER" />
<skills>
<skill id="40217" level="1" /> <!-- Scroll of Blessing -->

View File

@ -3551,42 +3551,130 @@
</skill>
<skill id="50392" toLevel="1" name="Weapon Blessing Effect">
<!-- Skill Power +2%. -->
<icon>icon.skill0000</icon>
<operateType>A1</operateType>
<icon>icon.bless_effect_base</icon>
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<magicLevel>1</magicLevel>
<effects>
<effect name="PhysicalSkillPower">
<amount>2</amount>
<mode>PER</mode>
</effect>
<effect name="MagicalSkillPower">
<amount>2</amount>
<mode>PER</mode>
</effect>
</effects>
</skill>
<skill id="50393" toLevel="1" name="Weapon Blessing Effect">
<!-- Skill Power +2%. -->
<icon>icon.skill0000</icon>
<operateType>A1</operateType>
<icon>icon.bless_effect_base</icon>
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<magicLevel>1</magicLevel>
<effects>
<effect name="PhysicalSkillPower">
<amount>2</amount>
<mode>PER</mode>
</effect>
<effect name="MagicalSkillPower">
<amount>2</amount>
<mode>PER</mode>
</effect>
</effects>
</skill>
<skill id="50394" toLevel="1" name="Weapon Blessing Effect">
<!-- Skill Power +2%. -->
<icon>icon.skill0000</icon>
<operateType>A1</operateType>
<icon>icon.bless_effect_base</icon>
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<magicLevel>1</magicLevel>
<effects>
<effect name="PhysicalSkillPower">
<amount>2</amount>
<mode>PER</mode>
</effect>
<effect name="MagicalSkillPower">
<amount>2</amount>
<mode>PER</mode>
</effect>
</effects>
</skill>
<skill id="50395" toLevel="1" name="Weapon Blessing Effect">
<!-- Attack range +20. -->
<icon>icon.skill0000</icon>
<operateType>A1</operateType>
<icon>icon.bless_effect_base</icon>
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<magicLevel>1</magicLevel>
<effects>
<effect name="PhysicalAttackRange">
<amount>20</amount>
<mode>DIFF</mode>
</effect>
</effects>
</skill>
<skill id="50396" toLevel="1" name="Weapon Blessing Effect">
<!-- Attack range +20. -->
<icon>icon.skill0000</icon>
<operateType>A1</operateType>
<icon>icon.bless_effect_base</icon>
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<magicLevel>1</magicLevel>
<effects>
<effect name="PhysicalAttackRange">
<amount>20</amount>
<mode>DIFF</mode>
</effect>
</effects>
</skill>
<skill id="50397" toLevel="1" name="Weapon Blessing Effect">
<!-- Skill Critical Rate +1%. -->
<icon>icon.skill0000</icon>
<operateType>A1</operateType>
<icon>icon.bless_effect_base</icon>
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<magicLevel>1</magicLevel>
<effects>
<effect name="MagicCriticalRate">
<amount>1</amount>
<mode>PER</mode>
</effect>
<effect name="SkillCriticalProbability">
<amount>1</amount>
<mode>PER</mode>
</effect>
</effects>
</skill>
<skill id="50398" toLevel="1" name="Weapon Blessing Effect">
<!-- Skill Critical Rate +1%. -->
<icon>icon.skill0000</icon>
<operateType>A1</operateType>
<icon>icon.bless_effect_base</icon>
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<magicLevel>1</magicLevel>
<effects>
<effect name="MagicCriticalRate">
<amount>1</amount>
<mode>PER</mode>
</effect>
<effect name="SkillCriticalProbability">
<amount>1</amount>
<mode>PER</mode>
</effect>
</effects>
</skill>
<skill id="50399" toLevel="1" name="Weapon Blessing Effect">
<!-- Atk. Spd. +30, Casting Spd. +30. -->
<icon>icon.skill0000</icon>
<operateType>A1</operateType>
<icon>icon.bless_effect_base</icon>
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<magicLevel>1</magicLevel>
<effects>
<effect name="PhysicalAttackSpeed">
<amount>30</amount>
<mode>DIFF</mode>
</effect>
<effect name="MagicalAttackSpeed">
<amount>30</amount>
<mode>DIFF</mode>
</effect>
</effects>
</skill>
</list>

View File

@ -2,138 +2,445 @@
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/skills.xsd">
<skill id="50400" toLevel="1" name="Weapon Blessing Effect">
<!-- Atk. Spd. +30, Casting Spd. +30. -->
<icon>icon.skill0000</icon>
<operateType>A1</operateType>
<icon>icon.bless_effect_base</icon>
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<magicLevel>1</magicLevel>
<effects>
<effect name="PhysicalAttackSpeed">
<amount>30</amount>
<mode>DIFF</mode>
</effect>
<effect name="MagicalAttackSpeed">
<amount>30</amount>
<mode>DIFF</mode>
</effect>
</effects>
</skill>
<skill id="50401" toLevel="1" name="Weapon Blessing Effect">
<!-- Arrows do not consume MP. -->
<icon>icon.skill0000</icon>
<operateType>A1</operateType>
<icon>icon.bless_effect_base</icon>
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<magicLevel>1</magicLevel>
<effects>
<effect name="CheapShot" />
</effects>
</skill>
<skill id="50402" toLevel="1" name="Weapon Blessing Effect">
<!-- Vital Point Attack Rate +5%. -->
<icon>icon.skill0000</icon>
<operateType>A1</operateType>
<icon>icon.bless_effect_base</icon>
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<magicLevel>1</magicLevel>
<effects>
<effect name="FatalBlowRate">
<amount>5</amount>
<mode>PER</mode>
</effect>
</effects>
</skill>
<skill id="50403" toLevel="1" name="Weapon Blessing Effect">
<!-- P. Skill Critical Damage +50. -->
<icon>icon.skill0000</icon>
<operateType>A1</operateType>
<icon>icon.bless_effect_base</icon>
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<magicLevel>1</magicLevel>
<effects>
<effect name="SkillCriticalDamage">
<amount>50</amount>
<mode>DIFF</mode>
</effect>
</effects>
</skill>
<skill id="50404" toLevel="1" name="Weapon Blessing Effect">
<!-- P. Skill Critical Damage +50. -->
<icon>icon.skill0000</icon>
<operateType>A1</operateType>
<icon>icon.bless_effect_base</icon>
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<magicLevel>1</magicLevel>
<effects>
<effect name="SkillCriticalDamage">
<amount>50</amount>
<mode>DIFF</mode>
</effect>
</effects>
</skill>
<skill id="50405" toLevel="1" name="Weapon Blessing Effect">
<!-- Attack range +20, the number of targets +1. -->
<icon>icon.skill0000</icon>
<operateType>A1</operateType>
<icon>icon.bless_effect_base</icon>
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<magicLevel>1</magicLevel>
<effects>
<effect name="PhysicalAttackRange">
<amount>20</amount>
<mode>DIFF</mode>
</effect>
<effect name="HitNumber">
<amount>1</amount>
<mode>DIFF</mode>
</effect>
</effects>
</skill>
<skill id="50406" toLevel="1" name="+5 A-grade Weapon Blessing Effect">
<!-- Attribute Attack +15. -->
<icon>icon.skill0000</icon>
<operateType>A1</operateType>
<icon>icon.bless_effect_enchant</icon>
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<magicLevel>1</magicLevel>
<effects>
<effect name="AttackAttributeAdd">
<amount>15</amount>
</effect>
</effects>
</skill>
<skill id="50407" toLevel="1" name="+6 A-grade Weapon Blessing Effect">
<!-- P. Atk. +90, M. Atk. +110. -->
<icon>icon.skill0000</icon>
<operateType>A1</operateType>
<icon>icon.bless_effect_enchant</icon>
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<magicLevel>1</magicLevel>
<effects>
<effect name="PAtk">
<amount>90</amount>
<mode>DIFF</mode>
</effect>
<effect name="MAtk">
<amount>110</amount>
<mode>DIFF</mode>
</effect>
</effects>
</skill>
<skill id="50408" toLevel="1" name="+7 A-grade Weapon Blessing Effect">
<!-- All Critical Rate +4%. -->
<icon>icon.skill0000</icon>
<operateType>A1</operateType>
<icon>icon.bless_effect_enchant</icon>
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<magicLevel>1</magicLevel>
<effects>
<effect name="CriticalRate">
<amount>4</amount>
<mode>PER</mode>
</effect>
<effect name="MagicCriticalRate">
<amount>4</amount>
<mode>DIFF</mode>
</effect>
</effects>
</skill>
<skill id="50409" toLevel="1" name="+8 A-grade Weapon Blessing Effect">
<!-- Skill Power +4%. -->
<icon>icon.skill0000</icon>
<operateType>A1</operateType>
<icon>icon.bless_effect_enchant</icon>
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<magicLevel>1</magicLevel>
<effects>
<effect name="PhysicalSkillPower">
<amount>4</amount>
<mode>PER</mode>
</effect>
<effect name="MagicalSkillPower">
<amount>4</amount>
<mode>PER</mode>
</effect>
</effects>
</skill>
<skill id="50410" toLevel="1" name="+9 A-grade Weapon Blessing Effect">
<!-- All Critical Damage +80 Increases Max All Critical Rate. -->
<icon>icon.skill0000</icon>
<operateType>A1</operateType>
<icon>icon.bless_effect_enchant</icon>
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<magicLevel>1</magicLevel>
<effects>
<effect name="CriticalDamage">
<amount>80</amount>
<mode>DIFF</mode>
</effect>
<effect name="SkillCriticalDamage">
<amount>80</amount>
<mode>DIFF</mode>
</effect>
<effect name="MagicCriticalDamage">
<amount>80</amount>
<mode>DIFF</mode>
</effect>
<effect name="MaxMagicCriticalRate">
<amount>550</amount>
<mode>DIFF</mode>
</effect>
</effects>
</skill>
<skill id="50411" toLevel="1" name="+10 A-grade Weapon Blessing Effect">
<!-- Soulshot/ Spiritshot Damage +10%. -->
<icon>icon.skill0000</icon>
<operateType>A1</operateType>
<icon>icon.bless_effect_enchant</icon>
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<magicLevel>1</magicLevel>
<effects>
<effect name="ShotsBonus">
<amount>10</amount>
<mode>PER</mode>
</effect>
</effects>
</skill>
<skill id="50412" toLevel="1" name="+5 Boss' Weapon Blessing Effect">
<!-- Attribute Attack +20. -->
<icon>icon.skill0000</icon>
<operateType>A1</operateType>
<icon>icon.bless_effect_enchant</icon>
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<magicLevel>1</magicLevel>
<effects>
<effect name="AttackAttributeAdd">
<amount>20</amount>
</effect>
</effects>
</skill>
<skill id="50413" toLevel="1" name="+6 Boss' Weapon Blessing Effect">
<!-- P. Atk. +130, M. Atk. +170. -->
<icon>icon.skill0000</icon>
<operateType>A1</operateType>
<icon>icon.bless_effect_enchant</icon>
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<magicLevel>1</magicLevel>
<effects>
<effect name="PAtk">
<amount>130</amount>
<mode>DIFF</mode>
</effect>
<effect name="MAtk">
<amount>170</amount>
<mode>DIFF</mode>
</effect>
</effects>
</skill>
<skill id="50414" toLevel="1" name="+7 Boss' Weapon Blessing Effect">
<!-- All Critical Rate +5%. -->
<icon>icon.skill0000</icon>
<operateType>A1</operateType>
<icon>icon.bless_effect_enchant</icon>
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<magicLevel>1</magicLevel>
<effects>
<effect name="CriticalRate">
<amount>5</amount>
<mode>PER</mode>
</effect>
<effect name="MagicCriticalRate">
<amount>5</amount>
<mode>DIFF</mode>
</effect>
</effects>
</skill>
<skill id="50415" toLevel="1" name="+8 Boss' Weapon Blessing Effect">
<!-- Skill Power +5%. -->
<icon>icon.skill0000</icon>
<operateType>A1</operateType>
<icon>icon.bless_effect_enchant</icon>
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<magicLevel>1</magicLevel>
<effects>
<effect name="PhysicalSkillPower">
<amount>5</amount>
<mode>PER</mode>
</effect>
<effect name="MagicalSkillPower">
<amount>5</amount>
<mode>PER</mode>
</effect>
</effects>
</skill>
<skill id="50416" toLevel="1" name="+9 Boss' Weapon Blessing Effect">
<!-- All Critical Damage +150 Increases Max All Critical Rate. -->
<icon>icon.skill0000</icon>
<operateType>A1</operateType>
<icon>icon.bless_effect_enchant</icon>
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<magicLevel>1</magicLevel>
<effects>
<effect name="CriticalDamage">
<amount>150</amount>
<mode>DIFF</mode>
</effect>
<effect name="SkillCriticalDamage">
<amount>150</amount>
<mode>DIFF</mode>
</effect>
<effect name="MagicCriticalDamage">
<amount>150</amount>
<mode>DIFF</mode>
</effect>
<effect name="MaxMagicCriticalRate">
<amount>550</amount>
<mode>DIFF</mode>
</effect>
</effects>
</skill>
<skill id="50417" toLevel="1" name="+10 Boss' Weapon Blessing Effect">
<!-- Soulshot/ Spiritshot Damage +15%. -->
<icon>icon.skill0000</icon>
<operateType>A1</operateType>
<icon>icon.bless_effect_enchant</icon>
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<magicLevel>1</magicLevel>
<effects>
<effect name="ShotsBonus">
<amount>15</amount>
<mode>PER</mode>
</effect>
</effects>
</skill>
<skill id="50418" toLevel="1" name="+1 Death Knight's Flame Sword Blessing Effect">
<!-- Skill Power +15%. -->
<icon>icon.skill0000</icon>
<operateType>A1</operateType>
<icon>icon.bless_effect_enchant</icon>
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<magicLevel>1</magicLevel>
<effects>
<effect name="PhysicalSkillPower">
<amount>15</amount>
<mode>PER</mode>
</effect>
<effect name="MagicalSkillPower">
<amount>15</amount>
<mode>PER</mode>
</effect>
</effects>
</skill>
<skill id="50419" toLevel="1" name="+2 Death Knight's Flame Sword Blessing Effect">
<!-- All Critical Damage +200 Increases Max All Critical Rate. -->
<icon>icon.skill0000</icon>
<operateType>A1</operateType>
<icon>icon.bless_effect_enchant</icon>
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<magicLevel>1</magicLevel>
<effects>
<effect name="CriticalDamage">
<amount>200</amount>
<mode>DIFF</mode>
</effect>
<effect name="SkillCriticalDamage">
<amount>200</amount>
<mode>DIFF</mode>
</effect>
<effect name="MagicCriticalDamage">
<amount>200</amount>
<mode>DIFF</mode>
</effect>
<effect name="MaxMagicCriticalRate">
<amount>550</amount>
<mode>DIFF</mode>
</effect>
</effects>
</skill>
<skill id="50420" toLevel="1" name="+3 Death Knight's Flame Sword Blessing Effect">
<!-- Soulshot/ Spiritshot Damage +20%. -->
<icon>icon.skill0000</icon>
<operateType>A1</operateType>
<icon>icon.bless_effect_enchant</icon>
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<magicLevel>1</magicLevel>
<effects>
<effect name="ShotsBonus">
<amount>20</amount>
<mode>PER</mode>
</effect>
</effects>
</skill>
<skill id="50421" toLevel="1" name="+16 A-grade Weapon Blessing Effect">
<!-- P. Atk. +200, M. Atk. +250. -->
<icon>icon.skill0000</icon>
<operateType>A1</operateType>
<icon>icon.bless_effect_enchant</icon>
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<magicLevel>1</magicLevel>
<effects>
<effect name="PAtk">
<amount>200</amount>
<mode>DIFF</mode>
</effect>
<effect name="MAtk">
<amount>250</amount>
<mode>DIFF</mode>
</effect>
</effects>
</skill>
<skill id="50422" toLevel="1" name="+20 A-grade Weapon Blessing Effect">
<!-- All Critical Rate +10%. -->
<icon>icon.skill0000</icon>
<operateType>A1</operateType>
<icon>icon.bless_effect_enchant</icon>
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<magicLevel>1</magicLevel>
<effects>
<effect name="CriticalRate">
<amount>10</amount>
<mode>PER</mode>
</effect>
<effect name="MagicCriticalRate">
<amount>10</amount>
<mode>DIFF</mode>
</effect>
</effects>
</skill>
<skill id="50423" toLevel="1" name="+25 A-grade Weapon Blessing Effect">
<!-- Skill Power +10%. -->
<icon>icon.skill0000</icon>
<operateType>A1</operateType>
<icon>icon.bless_effect_enchant</icon>
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<magicLevel>1</magicLevel>
<effects>
<effect name="PhysicalSkillPower">
<amount>10</amount>
<mode>PER</mode>
</effect>
<effect name="MagicalSkillPower">
<amount>10</amount>
<mode>PER</mode>
</effect>
</effects>
</skill>
<skill id="50424" toLevel="1" name="+16 S-grade Weapon Blessing Effect">
<!-- P. Atk. +400, M. Atk. +600. -->
<icon>icon.skill0000</icon>
<operateType>A1</operateType>
<icon>icon.bless_effect_enchant</icon>
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<magicLevel>1</magicLevel>
<effects>
<effect name="PAtk">
<amount>400</amount>
<mode>DIFF</mode>
</effect>
<effect name="MAtk">
<amount>600</amount>
<mode>DIFF</mode>
</effect>
</effects>
</skill>
<skill id="50425" toLevel="1" name="+20 S-grade Weapon Blessing Effect">
<!-- All Critical Rate +15%. -->
<icon>icon.skill0000</icon>
<operateType>A1</operateType>
<icon>icon.bless_effect_enchant</icon>
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<magicLevel>1</magicLevel>
<effects>
<effect name="CriticalRate">
<amount>15</amount>
<mode>PER</mode>
</effect>
<effect name="MagicCriticalRate">
<amount>15</amount>
<mode>DIFF</mode>
</effect>
</effects>
</skill>
<skill id="50426" toLevel="1" name="+25 S-grade Weapon Blessing Effect">
<!-- Skill Power +15%. -->
<icon>icon.skill0000</icon>
<operateType>A1</operateType>
<icon>icon.bless_effect_enchant</icon>
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<magicLevel>1</magicLevel>
<effects>
<effect name="PhysicalSkillPower">
<amount>15</amount>
<mode>PER</mode>
</effect>
<effect name="MagicalSkillPower">
<amount>15</amount>
<mode>PER</mode>
</effect>
</effects>
</skill>
<skill id="50427" toLevel="4" name="Necklace: Frintezza's Necklace">
<!-- A necklace imbued with Frintezza's power. <Effect> Max. MP $s1 Sleep Resistance $s2 Sleep Atk. Rate $s3 Skill Power $s4 Skill Cooldown $s5 All Critical Rate $s6 All Critical Damage $s7 -->

View File

@ -738,6 +738,7 @@ public class Config
public static int DROP_ITEM_MIN_LEVEL_DIFFERENCE;
public static int DROP_ITEM_MAX_LEVEL_DIFFERENCE;
public static double DROP_ITEM_MIN_LEVEL_GAP_CHANCE;
public static double BLESSING_CHANCE;
public static float RATE_KARMA_LOST;
public static float RATE_KARMA_EXP_LOST;
public static float RATE_SIEGE_GUARDS_PRICE;
@ -2326,6 +2327,7 @@ public class Config
DROP_ITEM_MIN_LEVEL_DIFFERENCE = RatesSettings.getInt("DropItemMinLevelDifference", 5);
DROP_ITEM_MAX_LEVEL_DIFFERENCE = RatesSettings.getInt("DropItemMaxLevelDifference", 10);
DROP_ITEM_MIN_LEVEL_GAP_CHANCE = RatesSettings.getDouble("DropItemMinLevelGapChance", 10);
BLESSING_CHANCE = RatesSettings.getDouble("BlessingChance", 15.0);
// Load PvP config file (if exists)
final PropertiesParser PVPSettings = new PropertiesParser(PVP_CONFIG_FILE);

View File

@ -27,7 +27,8 @@ public enum ItemListType implements IUpdateTypeComponent
ELEMENTAL_ATTRIBUTE(0x02),
ENCHANT_EFFECT(0x04),
VISUAL_ID(0x08),
SOUL_CRYSTAL(0x10);
SOUL_CRYSTAL(0x10),
BLESSED(0x100);
private final int _mask;

View File

@ -23,6 +23,7 @@ public enum ItemSkillType
{
NORMAL,
ON_ENCHANT,
ON_BLESSING,
ON_EQUIP,
ON_UNEQUIP,
ON_CRITICAL_SKILL,

View File

@ -64,7 +64,7 @@ public class ItemInfo
/** The mana of this item */
private int _mana;
private int _time;
private boolean _isBlessed = false;
private boolean _available = true;
private int _location;
@ -148,6 +148,7 @@ public class ItemInfo
{
_attributeDefence[type.getClientId()] = item.getDefenceAttribute(type);
}
_isBlessed = item.isBlessed();
_option = item.getEnchantOptions();
_soulCrystalOptions = item.getSpecialAbilities();
_soulCrystalSpecialOptions = item.getAdditionalSpecialAbilities();
@ -212,6 +213,7 @@ public class ItemInfo
_soulCrystalOptions = item.getSoulCrystalOptions();
_soulCrystalSpecialOptions = item.getSoulCrystalSpecialOptions();
_visualId = item.getVisualId();
_isBlessed = item.isBlessed();
}
public ItemInfo(Product item)
@ -296,6 +298,7 @@ public class ItemInfo
_option = item.getEnchantOptions();
_soulCrystalOptions = item.getSoulCrystalOptions();
_soulCrystalSpecialOptions = item.getSoulCrystalSpecialOptions();
_isBlessed = item.isBlessed();
}
public int getObjectId()
@ -408,6 +411,11 @@ public class ItemInfo
return _visualExpiration;
}
public boolean isBlessed()
{
return _isBlessed;
}
@Override
public String toString()
{

View File

@ -53,6 +53,7 @@ public class TradeItem
private int _visualId;
private int _augmentationOption1 = -1;
private int _augmentationOption2 = -1;
private boolean _isBlessed = false;
public TradeItem(ItemInstance item, long count, long price)
{
@ -75,6 +76,7 @@ public class TradeItem
_soulCrystalOptions = item.getSpecialAbilities();
_soulCrystalSpecialOptions = item.getAdditionalSpecialAbilities();
_visualId = item.getVisualId();
_isBlessed = item.isBlessed();
if (item.getAugmentation() != null)
{
_augmentationOption1 = item.getAugmentation().getOption1Id();
@ -123,6 +125,7 @@ public class TradeItem
_soulCrystalOptions = item.getSoulCrystalOptions();
_soulCrystalSpecialOptions = item.getSoulCrystalSpecialOptions();
_visualId = item.getVisualId();
_isBlessed = item.isBlessed();
}
public void setObjectId(int objectId)
@ -270,4 +273,9 @@ public class TradeItem
{
return _visualId;
}
public boolean isBlessed()
{
return _isBlessed;
}
}

View File

@ -0,0 +1,73 @@
/*
* This file is part of the L2J Mobius project.
*
* 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 org.l2jmobius.gameserver.model.actor.request;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
/**
* @author Horus
*/
public class BlessingItemRequest extends AbstractRequest
{
private volatile int _blessingItemObjectId;
private volatile int _blessingScrollObjectId;
public BlessingItemRequest(PlayerInstance player, int enchantingScrollObjectId)
{
super(player);
_blessingScrollObjectId = enchantingScrollObjectId;
}
public ItemInstance getBlessingItem()
{
return getActiveChar().getInventory().getItemByObjectId(_blessingItemObjectId);
}
public void setBlessingItem(int objectId)
{
_blessingItemObjectId = objectId;
}
public ItemInstance getBlessScroll()
{
return getActiveChar().getInventory().getItemByObjectId(_blessingScrollObjectId);
}
public void setBlessScroll(int objectId)
{
_blessingScrollObjectId = objectId;
}
@Override
public boolean isItemRequest()
{
return true;
}
@Override
public boolean canWorkWith(AbstractRequest request)
{
return !request.isItemRequest();
}
@Override
public boolean isUsing(int objectId)
{
return (objectId > 0) && ((objectId == _blessingItemObjectId) || (objectId == _blessingScrollObjectId));
}
}

View File

@ -365,6 +365,23 @@ public abstract class Inventory extends ItemContainer
}
}
if (item.isBlessed())
{
final List<ItemSkillHolder> onBlessingSkills = it.getSkills(ItemSkillType.ON_BLESSING);
if (onBlessingSkills != null)
{
for (ItemSkillHolder holder : onBlessingSkills)
{
final Skill skill = holder.getSkill();
if (skill != null)
{
removedSkills.putIfAbsent(skill.getId(), skill);
update = true;
}
}
}
}
final List<ItemSkillHolder> normalSkills = it.getSkills(ItemSkillType.NORMAL);
if (normalSkills != null)
{
@ -445,29 +462,52 @@ public abstract class Inventory extends ItemContainer
}
final List<ItemSkillHolder> otherEnchantSkills = equipped.getItem().getSkills(ItemSkillType.ON_ENCHANT);
if (otherEnchantSkills == null)
final List<ItemSkillHolder> otherBlessingSkills = equipped.getItem().getSkills(ItemSkillType.ON_BLESSING);
if ((otherEnchantSkills == null) && (otherBlessingSkills == null))
{
continue;
}
for (ItemSkillHolder holder : otherEnchantSkills)
if (otherEnchantSkills != null)
{
if (equipped.getEnchantLevel() < holder.getValue())
for (ItemSkillHolder holder : otherEnchantSkills)
{
continue;
if (equipped.getEnchantLevel() < holder.getValue())
{
continue;
}
final Skill skill = holder.getSkill();
if (skill == null)
{
continue;
}
// Check passive skill conditions.
if (skill.isPassive() && !skill.checkConditions(SkillConditionScope.PASSIVE, player, player))
{
removedSkills.putIfAbsent(skill.getId(), skill);
update = true;
}
}
final Skill skill = holder.getSkill();
if (skill == null)
}
if ((otherBlessingSkills != null) && equipped.isBlessed())
{
for (ItemSkillHolder holder : otherBlessingSkills)
{
continue;
}
// Check passive skill conditions.
if (skill.isPassive() && !skill.checkConditions(SkillConditionScope.PASSIVE, player, player))
{
removedSkills.putIfAbsent(skill.getId(), skill);
update = true;
final Skill skill = holder.getSkill();
if (skill == null)
{
continue;
}
// Check passive skill conditions.
if (skill.isPassive() && !skill.checkConditions(SkillConditionScope.PASSIVE, player, player))
{
removedSkills.putIfAbsent(skill.getId(), skill);
update = true;
}
}
}
}
@ -586,6 +626,51 @@ public abstract class Inventory extends ItemContainer
}
}
if (item.isBlessed())
{
final List<ItemSkillHolder> onBlessingSkills = item.getItem().getSkills(ItemSkillType.ON_BLESSING);
if (onBlessingSkills != null)
{
for (ItemSkillHolder holder : onBlessingSkills)
{
if (player.getSkillLevel(holder.getSkillId()) >= holder.getSkillLevel())
{
continue;
}
if (item.getEnchantLevel() < holder.getValue())
{
continue;
}
final Skill skill = holder.getSkill();
if (skill == null)
{
continue;
}
// Check passive skill conditions.
if (skill.isPassive() && !skill.checkConditions(SkillConditionScope.PASSIVE, player, player))
{
continue;
}
final Skill existingSkill = addedSkills.get(skill.getId());
if (existingSkill != null)
{
if (existingSkill.getLevel() < skill.getLevel())
{
addedSkills.put(skill.getId(), skill);
}
}
else
{
addedSkills.put(skill.getId(), skill);
}
}
}
}
final List<ItemSkillHolder> normalSkills = item.getItem().getSkills(ItemSkillType.NORMAL);
if (normalSkills != null)
{
@ -644,46 +729,89 @@ public abstract class Inventory extends ItemContainer
}
final List<ItemSkillHolder> otherEnchantSkills = equipped.getItem().getSkills(ItemSkillType.ON_ENCHANT);
if (otherEnchantSkills == null)
final List<ItemSkillHolder> otherBlessingSkills = equipped.getItem().getSkills(ItemSkillType.ON_BLESSING);
if ((otherEnchantSkills == null) && (otherBlessingSkills == null))
{
continue;
}
for (ItemSkillHolder holder : otherEnchantSkills)
if (otherEnchantSkills != null)
{
if (player.getSkillLevel(holder.getSkillId()) >= holder.getSkillLevel())
for (ItemSkillHolder holder : otherEnchantSkills)
{
continue;
}
if (equipped.getEnchantLevel() < holder.getValue())
{
continue;
}
final Skill skill = holder.getSkill();
if (skill == null)
{
continue;
}
// Check passive skill conditions.
if (skill.isPassive() && !skill.checkConditions(SkillConditionScope.PASSIVE, player, player))
{
continue;
}
final Skill existingSkill = addedSkills.get(skill.getId());
if (existingSkill != null)
{
if (existingSkill.getLevel() < skill.getLevel())
if (player.getSkillLevel(holder.getSkillId()) >= holder.getSkillLevel())
{
continue;
}
if (equipped.getEnchantLevel() < holder.getValue())
{
continue;
}
final Skill skill = holder.getSkill();
if (skill == null)
{
continue;
}
// Check passive skill conditions.
if (skill.isPassive() && !skill.checkConditions(SkillConditionScope.PASSIVE, player, player))
{
continue;
}
final Skill existingSkill = addedSkills.get(skill.getId());
if (existingSkill != null)
{
if (existingSkill.getLevel() < skill.getLevel())
{
addedSkills.put(skill.getId(), skill);
}
}
else
{
addedSkills.put(skill.getId(), skill);
}
}
else
}
if (otherBlessingSkills != null)
{
for (ItemSkillHolder holder : otherBlessingSkills)
{
addedSkills.put(skill.getId(), skill);
if (player.getSkillLevel(holder.getSkillId()) >= holder.getSkillLevel())
{
continue;
}
if (equipped.isBlessed())
{
final Skill skill = holder.getSkill();
if (skill == null)
{
continue;
}
// Check passive skill conditions.
if (skill.isPassive() && !skill.checkConditions(SkillConditionScope.PASSIVE, player, player))
{
continue;
}
final Skill existingSkill = addedSkills.get(skill.getId());
if (existingSkill != null)
{
if (existingSkill.getLevel() < skill.getLevel())
{
addedSkills.put(skill.getId(), skill);
}
}
else
{
addedSkills.put(skill.getId(), skill);
}
}
}
}
}

View File

@ -68,6 +68,7 @@ public class WarehouseItem
private final Collection<EnsoulOption> _soulCrystalSpecialOptions;
private final int _time;
private final boolean _isBlessed;
public WarehouseItem(ItemInstance item)
{
@ -93,6 +94,7 @@ public class WarehouseItem
_enchantOptions = item.getEnchantOptions();
_soulCrystalOptions = item.getSpecialAbilities();
_soulCrystalSpecialOptions = item.getAdditionalSpecialAbilities();
_isBlessed = item.isBlessed();
}
/**
@ -289,6 +291,11 @@ public class WarehouseItem
return _time;
}
public boolean isBlessed()
{
return _isBlessed;
}
/**
* @return the name of the item
*/

View File

@ -182,6 +182,7 @@ public class ItemInstance extends WorldObject
private final List<Options> _enchantOptions = new ArrayList<>();
private final EnsoulOption[] _ensoulOptions = new EnsoulOption[2];
private final EnsoulOption[] _ensoulSpecialOptions = new EnsoulOption[1];
private boolean _isBlessed = false;
/**
* Constructor of the ItemInstance from the objectId and the itemId.
@ -256,6 +257,8 @@ public class ItemInstance extends WorldObject
restoreAttributes();
restoreSpecialAbilities();
}
_isBlessed = getVariables().getBoolean(ItemVariables.BLESSED, false);
}
/**
@ -2544,4 +2547,25 @@ public class ItemInstance extends WorldObject
}
}
}
public boolean isBlessed()
{
return _isBlessed;
}
public void setBlessed(boolean blessed)
{
_isBlessed = blessed;
final ItemVariables vars = getVariables();
if (!blessed)
{
vars.remove(ItemVariables.BLESSED);
}
else
{
vars.set(ItemVariables.BLESSED, true);
}
vars.storeMe();
}
}

View File

@ -45,6 +45,7 @@ public class ItemVariables extends AbstractVariables
public static final String VISUAL_ID = "visualId";
public static final String VISUAL_APPEARANCE_STONE_ID = "visualAppearanceStoneId";
public static final String VISUAL_APPEARANCE_LIFE_TIME = "visualAppearanceLifetime";
public static final String BLESSED = "blessed";
public ItemVariables(int objectId)
{

View File

@ -77,6 +77,7 @@ public class PlayerVariables extends AbstractVariables
public static final String STAT_INT = "STAT_INT";
public static final String STAT_WIT = "STAT_WIT";
public static final String STAT_MEN = "STAT_MEN";
public static final String USED_BLESS_SCROLL_ID = "USED_BLESS_SCROLL_ID";
private final int _objectId;

View File

@ -39,6 +39,9 @@ import org.l2jmobius.gameserver.network.clientpackets.attributechange.RequestCha
import org.l2jmobius.gameserver.network.clientpackets.attributechange.SendChangeAttributeTargetItem;
import org.l2jmobius.gameserver.network.clientpackets.autoplay.ExAutoPlaySetting;
import org.l2jmobius.gameserver.network.clientpackets.autoplay.ExRequestActivateAutoShortcut;
import org.l2jmobius.gameserver.network.clientpackets.blessing.RequestBlessOptionCancel;
import org.l2jmobius.gameserver.network.clientpackets.blessing.RequestBlessOptionEnchant;
import org.l2jmobius.gameserver.network.clientpackets.blessing.RequestBlessOptionPutItem;
import org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos.RequestCancelCuriousHouse;
import org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos.RequestCuriousHouseHtml;
import org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos.RequestJoinCuriousHouse;
@ -579,9 +582,9 @@ public enum ExIncomingPackets implements IIncomingPackets<GameClient>
EX_MABLE_GAME_RESET(0x1BC, null, ConnectionState.IN_GAME),
EX_MABLE_GAME_CLOSE(0x1BD, null, ConnectionState.IN_GAME),
EX_RETURN_TO_ORIGIN(0x1BE, null, ConnectionState.IN_GAME),
EX_BLESS_OPTION_PUT_ITEM(0x1BF, null, ConnectionState.IN_GAME),
EX_BLESS_OPTION_ENCHANT(0x1C0, null, ConnectionState.IN_GAME),
EX_BLESS_OPTION_CANCEL(0x1C1, null, ConnectionState.IN_GAME),
EX_BLESS_OPTION_PUT_ITEM(0x1BF, RequestBlessOptionPutItem::new, ConnectionState.IN_GAME),
EX_BLESS_OPTION_ENCHANT(0x1C0, RequestBlessOptionEnchant::new, ConnectionState.IN_GAME),
EX_BLESS_OPTION_CANCEL(0x1C1, RequestBlessOptionCancel::new, ConnectionState.IN_GAME),
EX_PVP_RANKING_MY_INFO(0x1C2, null, ConnectionState.IN_GAME),
EX_PVP_RANKING_LIST(0x1C3, null, ConnectionState.IN_GAME),
EX_ACQUIRE_PET_SKILL(0x1C4, null, ConnectionState.IN_GAME),

View File

@ -0,0 +1,48 @@
/*
* This file is part of the L2J Mobius project.
*
* 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 org.l2jmobius.gameserver.network.clientpackets.blessing;
import org.l2jmobius.commons.network.PacketReader;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.network.GameClient;
import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
import org.l2jmobius.gameserver.network.serverpackets.blessing.ExBlessOptionCancel;
/**
* Written by Horus, on 17.04.2021
*/
public class RequestBlessOptionCancel implements IClientIncomingPacket
{
@Override
public boolean read(GameClient client, PacketReader packet)
{
return true;
}
@Override
public void run(GameClient client)
{
final PlayerInstance player = client.getPlayer();
if (player == null)
{
return;
}
player.sendPacket(new ExBlessOptionCancel(1));
}
}

View File

@ -0,0 +1,188 @@
/*
* This file is part of the L2J Mobius project.
*
* 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 org.l2jmobius.gameserver.network.clientpackets.blessing;
import org.l2jmobius.Config;
import org.l2jmobius.commons.network.PacketReader;
import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.enums.ItemSkillType;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.actor.request.BlessingItemRequest;
import org.l2jmobius.gameserver.model.items.Item;
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
import org.l2jmobius.gameserver.model.skills.CommonSkill;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
import org.l2jmobius.gameserver.network.GameClient;
import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
import org.l2jmobius.gameserver.network.serverpackets.EnchantResult;
import org.l2jmobius.gameserver.network.serverpackets.ExItemAnnounce;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse;
import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
import org.l2jmobius.gameserver.network.serverpackets.blessing.ExBlessOptionEnchant;
import org.l2jmobius.gameserver.network.serverpackets.blessing.ExBlessOptionPutItem;
import org.l2jmobius.gameserver.util.Broadcast;
import org.l2jmobius.gameserver.util.Util;
/**
* Written by Horus, on 17.04.2021
*/
public class RequestBlessOptionEnchant implements IClientIncomingPacket
{
private int _itemObjId;
@Override
public boolean read(GameClient client, PacketReader packet)
{
_itemObjId = packet.readD();
return true;
}
@Override
public void run(GameClient client)
{
final PlayerInstance player = client.getPlayer();
if (player == null)
{
return;
}
final ItemInstance targetInstance = player.getInventory().getItemByObjectId(_itemObjId);
if (targetInstance == null)
{
player.sendPacket(new ExBlessOptionEnchant(EnchantResult.ERROR));
return;
}
ItemInstance targetScroll = player.getInventory().getItemByItemId(player.getVariables().getInt(PlayerVariables.USED_BLESS_SCROLL_ID, 0));
if (targetScroll == null)
{
targetScroll = player.getInventory().getItemByItemId(94208); // Scroll of Blessing - Event
}
if (targetScroll == null)
{
targetScroll = player.getInventory().getItemByItemId(94184); // Scroll of Blessing
}
if (targetScroll == null)
{
player.sendPacket(new ExBlessOptionEnchant(EnchantResult.ERROR));
return;
}
player.addRequest(new BlessingItemRequest(player, targetInstance.getObjectId()));
final BlessingItemRequest request = player.getRequest(BlessingItemRequest.class);
if ((request == null) || request.isProcessing())
{
player.sendPacket(new ExBlessOptionEnchant(EnchantResult.ERROR));
return;
}
request.setBlessingItem(_itemObjId);
request.setProcessing(true);
request.setTimestamp(System.currentTimeMillis());
if (!player.isOnline() || client.isDetached())
{
player.removeRequest(request.getClass());
return;
}
if (player.isInStoreMode())
{
player.sendPacket(SystemMessageId.YOU_CANNOT_ENCHANT_WHILE_OPERATING_A_PRIVATE_STORE_OR_PRIVATE_WORKSHOP);
player.removeRequest(request.getClass());
player.sendPacket(new ExBlessOptionEnchant(EnchantResult.ERROR));
return;
}
final ItemInstance item = request.getBlessingItem();
if (item == null)
{
player.removeRequest(request.getClass());
player.sendPacket(new ExBlessOptionEnchant(EnchantResult.ERROR));
return;
}
// first validation check - also over enchant check
if (item.isBlessed())
{
client.sendPacket(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITIONS);
player.removeRequest(request.getClass());
player.sendPacket(new ExBlessOptionPutItem(0));
return;
}
// attempting to destroy scroll
if (player.getInventory().destroyItem("Blessing", targetScroll.getObjectId(), 1, player, item) == null)
{
client.sendPacket(SystemMessageId.INCORRECT_ITEM_COUNT_2);
Util.handleIllegalPlayerAction(player, "Player " + player.getName() + " tried to bless with a scroll he doesn't have", Config.DEFAULT_PUNISH);
player.removeRequest(request.getClass());
player.sendPacket(new ExBlessOptionEnchant(EnchantResult.ERROR));
return;
}
if (Rnd.get(100) < Config.BLESSING_CHANCE) // Success
{
final Item it = item.getItem();
// Increase enchant level only if scroll's base template has chance, some armors can success over +20 but they shouldn't have increased.
item.setBlessed(true);
item.updateDatabase();
player.sendPacket(new ExBlessOptionEnchant(1));
// Announce the success.
if ((item.getEnchantLevel() >= (item.isArmor() ? Config.MIN_ARMOR_ENCHANT_ANNOUNCE : Config.MIN_WEAPON_ENCHANT_ANNOUNCE)) //
&& (item.getEnchantLevel() <= (item.isArmor() ? Config.MAX_ARMOR_ENCHANT_ANNOUNCE : Config.MAX_WEAPON_ENCHANT_ANNOUNCE)))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.C1_HAS_SUCCESSFULLY_ENCHANTED_A_S2_S3);
sm.addString(player.getName());
sm.addInt(item.getEnchantLevel());
sm.addItemName(item);
player.broadcastPacket(sm);
Broadcast.toAllOnlinePlayers(new ExItemAnnounce(player, item, ExItemAnnounce.ENCHANT));
final Skill skill = CommonSkill.FIREWORK.getSkill();
if (skill != null)
{
player.broadcastPacket(new MagicSkillUse(player, player, skill.getId(), skill.getLevel(), skill.getHitTime(), skill.getReuseDelay()));
}
}
if (item.isEquipped())
{
if (item.isArmor())
{
it.forEachSkill(ItemSkillType.ON_BLESSING, holder ->
{
player.addSkill(holder.getSkill(), false);
player.sendSkillList();
});
}
player.broadcastUserInfo();
}
}
else // Failure.
{
player.sendPacket(new ExBlessOptionEnchant(0));
}
player.sendItemList();
request.setProcessing(false);
player.removeRequest(request.getClass());
player.broadcastUserInfo();
}
}

View File

@ -0,0 +1,72 @@
/*
* This file is part of the L2J Mobius project.
*
* 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 org.l2jmobius.gameserver.network.clientpackets.blessing;
import org.l2jmobius.commons.network.PacketReader;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
import org.l2jmobius.gameserver.network.GameClient;
import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
import org.l2jmobius.gameserver.network.serverpackets.blessing.ExBlessOptionPutItem;
/**
* Written by Horus, on 17.04.2021
*/
public class RequestBlessOptionPutItem implements IClientIncomingPacket
{
private int _objectId;
@Override
public boolean read(GameClient client, PacketReader packet)
{
_objectId = packet.readD();
return true;
}
@Override
public void run(GameClient client)
{
final PlayerInstance player = client.getPlayer();
if (player == null)
{
return;
}
final ItemInstance item = player.getInventory().getItemByObjectId(_objectId);
if (item == null)
{
return;
}
if (player.isProcessingTransaction() || player.isInStoreMode())
{
client.sendPacket(SystemMessageId.YOU_CANNOT_ENCHANT_WHILE_OPERATING_A_PRIVATE_STORE_OR_PRIVATE_WORKSHOP);
return;
}
// first validation check - also over enchant check
if (item.isBlessed())
{
client.sendPacket(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITIONS);
player.sendPacket(new ExBlessOptionPutItem(0));
return;
}
player.sendPacket(new ExBlessOptionPutItem(1));
}
}

View File

@ -72,8 +72,7 @@ public abstract class AbstractItemPacket extends AbstractMaskPacket<ItemListType
{
final int mask = calculateMask(item);
packet.writeC(mask);
packet.writeC(item.getItem().isBlessed() ? 0x01 : 0x00); // 286 protocol
packet.writeH(mask);
packet.writeD(item.getObjectId()); // ObjectId
packet.writeD(item.getItem().getDisplayId()); // ItemId
packet.writeC(item.getItem().isQuestItem() || (item.getEquipped() == 1) ? 0xFF : item.getLocation()); // T1
@ -111,9 +110,9 @@ public abstract class AbstractItemPacket extends AbstractMaskPacket<ItemListType
{
writeItemEnsoulOptions(packet, item);
}
if (item.getItem().isBlessed())
if (containsMask(mask, ItemListType.BLESSED))
{
packet.writeC(item.getItem().isBlessed() ? 0x01 : 0x00);
packet.writeC(0x01);
}
}
@ -121,8 +120,7 @@ public abstract class AbstractItemPacket extends AbstractMaskPacket<ItemListType
{
final int mask = calculateMask(item);
packet.writeC(mask);
packet.writeC(item.getItem().isBlessed() ? 0x01 : 0x00); // 286 protocol
packet.writeH(mask);
packet.writeD(item.getObjectId()); // ObjectId
packet.writeD(item.getItem().getDisplayId()); // ItemId
packet.writeC(item.getItem().isQuestItem() || (item.getEquipped() == 1) ? 0xFF : item.getLocation()); // T1
@ -160,9 +158,9 @@ public abstract class AbstractItemPacket extends AbstractMaskPacket<ItemListType
{
writeItemEnsoulOptions(packet, item);
}
if (item.getItem().isBlessed())
if (containsMask(mask, ItemListType.BLESSED))
{
packet.writeC(item.getItem().isBlessed() ? 0x01 : 0x00);
packet.writeC(0x01);
}
}
@ -201,6 +199,11 @@ public abstract class AbstractItemPacket extends AbstractMaskPacket<ItemListType
mask |= ItemListType.SOUL_CRYSTAL.getMask();
}
if (item.isBlessed())
{
mask |= ItemListType.BLESSED.getMask();
}
return mask;
}

View File

@ -0,0 +1,43 @@
/*
* This file is part of the L2J Mobius project.
*
* 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 org.l2jmobius.gameserver.network.serverpackets.blessing;
import org.l2jmobius.commons.network.PacketWriter;
import org.l2jmobius.gameserver.network.OutgoingPackets;
import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
/**
* Written by Horus, on 17.04.2021
*/
public class ExBlessOptionCancel implements IClientOutgoingPacket
{
private final int _result;
public ExBlessOptionCancel(int result)
{
_result = result;
}
@Override
public boolean write(PacketWriter packet)
{
OutgoingPackets.EX_BLESS_OPTION_CANCEL.writeId(packet);
packet.writeC(_result);
return true;
}
}

View File

@ -0,0 +1,42 @@
/*
* This file is part of the L2J Mobius project.
*
* 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 org.l2jmobius.gameserver.network.serverpackets.blessing;
import org.l2jmobius.commons.network.PacketWriter;
import org.l2jmobius.gameserver.network.OutgoingPackets;
import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
/**
* Written by Horus, on 17.04.2021
*/
public class ExBlessOptionEnchant implements IClientOutgoingPacket
{
private final int _result;
public ExBlessOptionEnchant(int result)
{
_result = result;
}
@Override
public boolean write(PacketWriter packet)
{
OutgoingPackets.EX_BLESS_OPTION_ENCHANT.writeId(packet);
packet.writeD(_result);
return true;
}
}

View File

@ -0,0 +1,43 @@
/*
* This file is part of the L2J Mobius project.
*
* 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 org.l2jmobius.gameserver.network.serverpackets.blessing;
import org.l2jmobius.commons.network.PacketWriter;
import org.l2jmobius.gameserver.network.OutgoingPackets;
import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
/**
* Written by Horus, on 17.04.2021
*/
public class ExBlessOptionPutItem implements IClientOutgoingPacket
{
private final int _result;
public ExBlessOptionPutItem(int result)
{
_result = result;
}
@Override
public boolean write(PacketWriter packet)
{
OutgoingPackets.EX_BLESS_OPTION_PUT_ITEM.writeId(packet);
packet.writeC(_result);
return true;
}
}

View File

@ -0,0 +1,42 @@
/*
* This file is part of the L2J Mobius project.
*
* 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 org.l2jmobius.gameserver.network.serverpackets.blessing;
import org.l2jmobius.commons.network.PacketWriter;
import org.l2jmobius.gameserver.network.OutgoingPackets;
import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
/**
* Written by Horus, on 17.04.2021
*/
public class ExOpenBlessOptionScroll implements IClientOutgoingPacket
{
private final int _itemId;
public ExOpenBlessOptionScroll(int itemId)
{
_itemId = itemId;
}
@Override
public boolean write(PacketWriter packet)
{
OutgoingPackets.EX_OPEN_BLESS_OPTION_SCROLL.writeId(packet);
packet.writeD(_itemId);
return true;
}
}