Giant scrolls.

Contributed by Ofelin.
This commit is contained in:
MobiusDev
2017-11-17 21:58:44 +00:00
parent e0df4e1992
commit cef624e6cd
32 changed files with 185 additions and 90 deletions

View File

@@ -99,7 +99,7 @@
<set name="is_private_storeable" val="false" /> <set name="is_private_storeable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_WP" /> <set name="etcitem_type" val="GIANT_ENCHT_WP" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -122,7 +122,7 @@
<set name="is_private_storeable" val="false" /> <set name="is_private_storeable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_WP" /> <set name="etcitem_type" val="GIANT_ENCHT_WP" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -145,7 +145,7 @@
<set name="is_private_storeable" val="false" /> <set name="is_private_storeable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_WP" /> <set name="etcitem_type" val="GIANT_ENCHT_WP" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -168,7 +168,7 @@
<set name="is_private_storeable" val="false" /> <set name="is_private_storeable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_WP" /> <set name="etcitem_type" val="GIANT_ENCHT_WP" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -191,7 +191,7 @@
<set name="is_private_storeable" val="false" /> <set name="is_private_storeable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_WP" /> <set name="etcitem_type" val="GIANT_ENCHT_WP" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -214,7 +214,7 @@
<set name="is_private_storeable" val="false" /> <set name="is_private_storeable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_WP" /> <set name="etcitem_type" val="GIANT_ENCHT_WP" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -237,7 +237,7 @@
<set name="is_private_storeable" val="false" /> <set name="is_private_storeable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_AM" /> <set name="etcitem_type" val="GIANT_ENCHT_AM" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -260,7 +260,7 @@
<set name="is_private_storeable" val="false" /> <set name="is_private_storeable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_AM" /> <set name="etcitem_type" val="GIANT_ENCHT_AM" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -283,7 +283,7 @@
<set name="is_private_storeable" val="false" /> <set name="is_private_storeable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_AM" /> <set name="etcitem_type" val="GIANT_ENCHT_AM" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -306,7 +306,7 @@
<set name="is_private_storeable" val="false" /> <set name="is_private_storeable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_AM" /> <set name="etcitem_type" val="GIANT_ENCHT_AM" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -329,7 +329,7 @@
<set name="is_private_storeable" val="false" /> <set name="is_private_storeable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_AM" /> <set name="etcitem_type" val="GIANT_ENCHT_AM" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -352,7 +352,7 @@
<set name="is_private_storeable" val="false" /> <set name="is_private_storeable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_AM" /> <set name="etcitem_type" val="GIANT_ENCHT_AM" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />

View File

@@ -1035,7 +1035,7 @@
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="commissionItemType" val="SCROLL_ENCHANT_WEAPON" /> <set name="commissionItemType" val="SCROLL_ENCHANT_WEAPON" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_WP" /> <set name="etcitem_type" val="GIANT_ENCHT_WP" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -1052,7 +1052,7 @@
<set name="is_sellable" val="false" /> <set name="is_sellable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_AM" /> <set name="etcitem_type" val="GIANT_ENCHT_AM" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="commissionItemType" val="SCROLL_ENCHANT_ARMOR" /> <set name="commissionItemType" val="SCROLL_ENCHANT_ARMOR" />

View File

@@ -958,7 +958,7 @@
<set name="is_sellable" val="false" /> <set name="is_sellable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_WP" /> <set name="etcitem_type" val="GIANT_ENCHT_WP" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -975,7 +975,7 @@
<set name="is_sellable" val="false" /> <set name="is_sellable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_WP" /> <set name="etcitem_type" val="GIANT_ENCHT_WP" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -992,7 +992,7 @@
<set name="is_sellable" val="false" /> <set name="is_sellable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_WP" /> <set name="etcitem_type" val="GIANT_ENCHT_WP" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -1010,7 +1010,7 @@
<set name="is_sellable" val="false" /> <set name="is_sellable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_AM" /> <set name="etcitem_type" val="GIANT_ENCHT_AM" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="commissionItemType" val="SCROLL_ENCHANT_ARMOR" /> <set name="commissionItemType" val="SCROLL_ENCHANT_ARMOR" />
@@ -1027,7 +1027,7 @@
<set name="is_sellable" val="false" /> <set name="is_sellable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_AM" /> <set name="etcitem_type" val="GIANT_ENCHT_AM" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="commissionItemType" val="SCROLL_ENCHANT_ARMOR" /> <set name="commissionItemType" val="SCROLL_ENCHANT_ARMOR" />
@@ -1044,7 +1044,7 @@
<set name="is_sellable" val="false" /> <set name="is_sellable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_AM" /> <set name="etcitem_type" val="GIANT_ENCHT_AM" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="commissionItemType" val="SCROLL_ENCHANT_ARMOR" /> <set name="commissionItemType" val="SCROLL_ENCHANT_ARMOR" />

View File

@@ -42,6 +42,8 @@ public abstract class AbstractEnchantItem
EtcItemType.BLESS_ENCHT_WP, EtcItemType.BLESS_ENCHT_WP,
EtcItemType.ENCHT_AM, EtcItemType.ENCHT_AM,
EtcItemType.ENCHT_WP, EtcItemType.ENCHT_WP,
EtcItemType.GIANT_ENCHT_AM,
EtcItemType.GIANT_ENCHT_WP,
EtcItemType.ENCHT_ATTR_INC_PROP_ENCHT_AM, EtcItemType.ENCHT_ATTR_INC_PROP_ENCHT_AM,
EtcItemType.ENCHT_ATTR_INC_PROP_ENCHT_WP, EtcItemType.ENCHT_ATTR_INC_PROP_ENCHT_WP,
}; };

View File

@@ -37,6 +37,7 @@ public final class EnchantScroll extends AbstractEnchantItem
private final boolean _isWeapon; private final boolean _isWeapon;
private final boolean _isBlessed; private final boolean _isBlessed;
private final boolean _isSafe; private final boolean _isSafe;
private final boolean _isGiant;
private final int _scrollGroupId; private final int _scrollGroupId;
private Set<Integer> _items; private Set<Integer> _items;
@@ -46,9 +47,10 @@ public final class EnchantScroll extends AbstractEnchantItem
_scrollGroupId = set.getInt("scrollGroupId", 0); _scrollGroupId = set.getInt("scrollGroupId", 0);
final ItemType type = getItem().getItemType(); final ItemType type = getItem().getItemType();
_isWeapon = (type == EtcItemType.ENCHT_ATTR_ANCIENT_CRYSTAL_ENCHANT_WP) || (type == EtcItemType.BLESS_ENCHT_WP) || (type == EtcItemType.ENCHT_WP); _isWeapon = (type == EtcItemType.ENCHT_ATTR_ANCIENT_CRYSTAL_ENCHANT_WP) || (type == EtcItemType.BLESS_ENCHT_WP) || (type == EtcItemType.ENCHT_WP) || (type == EtcItemType.GIANT_ENCHT_WP);
_isBlessed = (type == EtcItemType.BLESS_ENCHT_AM) || (type == EtcItemType.BLESS_ENCHT_WP); _isBlessed = (type == EtcItemType.BLESS_ENCHT_AM) || (type == EtcItemType.BLESS_ENCHT_WP);
_isSafe = (type == EtcItemType.ENCHT_ATTR_CRYSTAL_ENCHANT_AM) || (type == EtcItemType.ENCHT_ATTR_CRYSTAL_ENCHANT_WP); _isSafe = (type == EtcItemType.ENCHT_ATTR_CRYSTAL_ENCHANT_AM) || (type == EtcItemType.ENCHT_ATTR_CRYSTAL_ENCHANT_WP);
_isGiant = (type == EtcItemType.GIANT_ENCHT_AM) || (type == EtcItemType.GIANT_ENCHT_WP);
} }
@Override @Override
@@ -73,6 +75,11 @@ public final class EnchantScroll extends AbstractEnchantItem
return _isSafe; return _isSafe;
} }
public boolean isGiant()
{
return _isGiant;
}
/** /**
* @return id of scroll group that should be used * @return id of scroll group that should be used
*/ */

View File

@@ -42,6 +42,8 @@ public enum EtcItemType implements ItemType
MATURECROP, MATURECROP,
ENCHT_WP, ENCHT_WP,
ENCHT_AM, ENCHT_AM,
GIANT_ENCHT_WP,
GIANT_ENCHT_AM,
BLESS_ENCHT_WP, BLESS_ENCHT_WP,
BLESS_ENCHT_AM, BLESS_ENCHT_AM,
COUPON, COUPON,

View File

@@ -20,6 +20,7 @@ import java.util.logging.Logger;
import com.l2jmobius.Config; import com.l2jmobius.Config;
import com.l2jmobius.commons.network.PacketReader; import com.l2jmobius.commons.network.PacketReader;
import com.l2jmobius.commons.util.Rnd;
import com.l2jmobius.gameserver.data.xml.impl.EnchantItemData; import com.l2jmobius.gameserver.data.xml.impl.EnchantItemData;
import com.l2jmobius.gameserver.enums.ItemSkillType; import com.l2jmobius.gameserver.enums.ItemSkillType;
import com.l2jmobius.gameserver.enums.UserInfoType; import com.l2jmobius.gameserver.enums.UserInfoType;
@@ -184,7 +185,14 @@ public final class RequestEnchantItem implements IClientIncomingPacket
// Increase enchant level only if scroll's base template has chance, some armors can success over +20 but they shouldn't have increased. // Increase enchant level only if scroll's base template has chance, some armors can success over +20 but they shouldn't have increased.
if (scrollTemplate.getChance(activeChar, item) > 0) if (scrollTemplate.getChance(activeChar, item) > 0)
{ {
item.setEnchantLevel(item.getEnchantLevel() + 1); if (scrollTemplate.isGiant())
{
item.setEnchantLevel(Math.min(item.getEnchantLevel() + 1 + Rnd.get(3), scrollTemplate.getMaxEnchantLevel()));
}
else
{
item.setEnchantLevel(item.getEnchantLevel() + 1);
}
item.updateDatabase(); item.updateDatabase();
} }
client.sendPacket(new EnchantResult(EnchantResult.SUCCESS, item)); client.sendPacket(new EnchantResult(EnchantResult.SUCCESS, item));

View File

@@ -99,7 +99,7 @@
<set name="is_private_storeable" val="false" /> <set name="is_private_storeable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_WP" /> <set name="etcitem_type" val="GIANT_ENCHT_WP" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -122,7 +122,7 @@
<set name="is_private_storeable" val="false" /> <set name="is_private_storeable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_WP" /> <set name="etcitem_type" val="GIANT_ENCHT_WP" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -145,7 +145,7 @@
<set name="is_private_storeable" val="false" /> <set name="is_private_storeable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_WP" /> <set name="etcitem_type" val="GIANT_ENCHT_WP" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -168,7 +168,7 @@
<set name="is_private_storeable" val="false" /> <set name="is_private_storeable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_WP" /> <set name="etcitem_type" val="GIANT_ENCHT_WP" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -191,7 +191,7 @@
<set name="is_private_storeable" val="false" /> <set name="is_private_storeable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_WP" /> <set name="etcitem_type" val="GIANT_ENCHT_WP" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -214,7 +214,7 @@
<set name="is_private_storeable" val="false" /> <set name="is_private_storeable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_WP" /> <set name="etcitem_type" val="GIANT_ENCHT_WP" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -237,7 +237,7 @@
<set name="is_private_storeable" val="false" /> <set name="is_private_storeable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_AM" /> <set name="etcitem_type" val="GIANT_ENCHT_AM" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -260,7 +260,7 @@
<set name="is_private_storeable" val="false" /> <set name="is_private_storeable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_AM" /> <set name="etcitem_type" val="GIANT_ENCHT_AM" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -283,7 +283,7 @@
<set name="is_private_storeable" val="false" /> <set name="is_private_storeable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_AM" /> <set name="etcitem_type" val="GIANT_ENCHT_AM" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -306,7 +306,7 @@
<set name="is_private_storeable" val="false" /> <set name="is_private_storeable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_AM" /> <set name="etcitem_type" val="GIANT_ENCHT_AM" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -329,7 +329,7 @@
<set name="is_private_storeable" val="false" /> <set name="is_private_storeable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_AM" /> <set name="etcitem_type" val="GIANT_ENCHT_AM" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -352,7 +352,7 @@
<set name="is_private_storeable" val="false" /> <set name="is_private_storeable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_AM" /> <set name="etcitem_type" val="GIANT_ENCHT_AM" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />

View File

@@ -1035,7 +1035,7 @@
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="commissionItemType" val="SCROLL_ENCHANT_WEAPON" /> <set name="commissionItemType" val="SCROLL_ENCHANT_WEAPON" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_WP" /> <set name="etcitem_type" val="GIANT_ENCHT_WP" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -1052,7 +1052,7 @@
<set name="is_sellable" val="false" /> <set name="is_sellable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_AM" /> <set name="etcitem_type" val="GIANT_ENCHT_AM" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="commissionItemType" val="SCROLL_ENCHANT_ARMOR" /> <set name="commissionItemType" val="SCROLL_ENCHANT_ARMOR" />

View File

@@ -958,7 +958,7 @@
<set name="is_sellable" val="false" /> <set name="is_sellable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_WP" /> <set name="etcitem_type" val="GIANT_ENCHT_WP" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -975,7 +975,7 @@
<set name="is_sellable" val="false" /> <set name="is_sellable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_WP" /> <set name="etcitem_type" val="GIANT_ENCHT_WP" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -992,7 +992,7 @@
<set name="is_sellable" val="false" /> <set name="is_sellable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_WP" /> <set name="etcitem_type" val="GIANT_ENCHT_WP" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -1010,7 +1010,7 @@
<set name="is_sellable" val="false" /> <set name="is_sellable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_AM" /> <set name="etcitem_type" val="GIANT_ENCHT_AM" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="commissionItemType" val="SCROLL_ENCHANT_ARMOR" /> <set name="commissionItemType" val="SCROLL_ENCHANT_ARMOR" />
@@ -1027,7 +1027,7 @@
<set name="is_sellable" val="false" /> <set name="is_sellable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_AM" /> <set name="etcitem_type" val="GIANT_ENCHT_AM" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="commissionItemType" val="SCROLL_ENCHANT_ARMOR" /> <set name="commissionItemType" val="SCROLL_ENCHANT_ARMOR" />
@@ -1044,7 +1044,7 @@
<set name="is_sellable" val="false" /> <set name="is_sellable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_AM" /> <set name="etcitem_type" val="GIANT_ENCHT_AM" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="commissionItemType" val="SCROLL_ENCHANT_ARMOR" /> <set name="commissionItemType" val="SCROLL_ENCHANT_ARMOR" />

View File

@@ -42,6 +42,8 @@ public abstract class AbstractEnchantItem
EtcItemType.BLESS_ENCHT_WP, EtcItemType.BLESS_ENCHT_WP,
EtcItemType.ENCHT_AM, EtcItemType.ENCHT_AM,
EtcItemType.ENCHT_WP, EtcItemType.ENCHT_WP,
EtcItemType.GIANT_ENCHT_AM,
EtcItemType.GIANT_ENCHT_WP,
EtcItemType.ENCHT_ATTR_INC_PROP_ENCHT_AM, EtcItemType.ENCHT_ATTR_INC_PROP_ENCHT_AM,
EtcItemType.ENCHT_ATTR_INC_PROP_ENCHT_WP, EtcItemType.ENCHT_ATTR_INC_PROP_ENCHT_WP,
}; };

View File

@@ -37,6 +37,7 @@ public final class EnchantScroll extends AbstractEnchantItem
private final boolean _isWeapon; private final boolean _isWeapon;
private final boolean _isBlessed; private final boolean _isBlessed;
private final boolean _isSafe; private final boolean _isSafe;
private final boolean _isGiant;
private final int _scrollGroupId; private final int _scrollGroupId;
private Set<Integer> _items; private Set<Integer> _items;
@@ -46,9 +47,10 @@ public final class EnchantScroll extends AbstractEnchantItem
_scrollGroupId = set.getInt("scrollGroupId", 0); _scrollGroupId = set.getInt("scrollGroupId", 0);
final ItemType type = getItem().getItemType(); final ItemType type = getItem().getItemType();
_isWeapon = (type == EtcItemType.ENCHT_ATTR_ANCIENT_CRYSTAL_ENCHANT_WP) || (type == EtcItemType.BLESS_ENCHT_WP) || (type == EtcItemType.ENCHT_WP); _isWeapon = (type == EtcItemType.ENCHT_ATTR_ANCIENT_CRYSTAL_ENCHANT_WP) || (type == EtcItemType.BLESS_ENCHT_WP) || (type == EtcItemType.ENCHT_WP) || (type == EtcItemType.GIANT_ENCHT_WP);
_isBlessed = (type == EtcItemType.BLESS_ENCHT_AM) || (type == EtcItemType.BLESS_ENCHT_WP); _isBlessed = (type == EtcItemType.BLESS_ENCHT_AM) || (type == EtcItemType.BLESS_ENCHT_WP);
_isSafe = (type == EtcItemType.ENCHT_ATTR_CRYSTAL_ENCHANT_AM) || (type == EtcItemType.ENCHT_ATTR_CRYSTAL_ENCHANT_WP); _isSafe = (type == EtcItemType.ENCHT_ATTR_CRYSTAL_ENCHANT_AM) || (type == EtcItemType.ENCHT_ATTR_CRYSTAL_ENCHANT_WP);
_isGiant = (type == EtcItemType.GIANT_ENCHT_AM) || (type == EtcItemType.GIANT_ENCHT_WP);
} }
@Override @Override
@@ -73,6 +75,11 @@ public final class EnchantScroll extends AbstractEnchantItem
return _isSafe; return _isSafe;
} }
public boolean isGiant()
{
return _isGiant;
}
/** /**
* @return id of scroll group that should be used * @return id of scroll group that should be used
*/ */

View File

@@ -42,6 +42,8 @@ public enum EtcItemType implements ItemType
MATURECROP, MATURECROP,
ENCHT_WP, ENCHT_WP,
ENCHT_AM, ENCHT_AM,
GIANT_ENCHT_WP,
GIANT_ENCHT_AM,
BLESS_ENCHT_WP, BLESS_ENCHT_WP,
BLESS_ENCHT_AM, BLESS_ENCHT_AM,
COUPON, COUPON,

View File

@@ -20,6 +20,7 @@ import java.util.logging.Logger;
import com.l2jmobius.Config; import com.l2jmobius.Config;
import com.l2jmobius.commons.network.PacketReader; import com.l2jmobius.commons.network.PacketReader;
import com.l2jmobius.commons.util.Rnd;
import com.l2jmobius.gameserver.data.xml.impl.EnchantItemData; import com.l2jmobius.gameserver.data.xml.impl.EnchantItemData;
import com.l2jmobius.gameserver.enums.ItemSkillType; import com.l2jmobius.gameserver.enums.ItemSkillType;
import com.l2jmobius.gameserver.enums.UserInfoType; import com.l2jmobius.gameserver.enums.UserInfoType;
@@ -184,7 +185,14 @@ public final class RequestEnchantItem implements IClientIncomingPacket
// Increase enchant level only if scroll's base template has chance, some armors can success over +20 but they shouldn't have increased. // Increase enchant level only if scroll's base template has chance, some armors can success over +20 but they shouldn't have increased.
if (scrollTemplate.getChance(activeChar, item) > 0) if (scrollTemplate.getChance(activeChar, item) > 0)
{ {
item.setEnchantLevel(item.getEnchantLevel() + 1); if (scrollTemplate.isGiant())
{
item.setEnchantLevel(Math.min(item.getEnchantLevel() + 1 + Rnd.get(3), scrollTemplate.getMaxEnchantLevel()));
}
else
{
item.setEnchantLevel(item.getEnchantLevel() + 1);
}
item.updateDatabase(); item.updateDatabase();
} }
client.sendPacket(new EnchantResult(EnchantResult.SUCCESS, item)); client.sendPacket(new EnchantResult(EnchantResult.SUCCESS, item));

View File

@@ -99,7 +99,7 @@
<set name="is_private_storeable" val="false" /> <set name="is_private_storeable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_WP" /> <set name="etcitem_type" val="GIANT_ENCHT_WP" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -122,7 +122,7 @@
<set name="is_private_storeable" val="false" /> <set name="is_private_storeable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_WP" /> <set name="etcitem_type" val="GIANT_ENCHT_WP" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -145,7 +145,7 @@
<set name="is_private_storeable" val="false" /> <set name="is_private_storeable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_WP" /> <set name="etcitem_type" val="GIANT_ENCHT_WP" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -168,7 +168,7 @@
<set name="is_private_storeable" val="false" /> <set name="is_private_storeable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_WP" /> <set name="etcitem_type" val="GIANT_ENCHT_WP" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -191,7 +191,7 @@
<set name="is_private_storeable" val="false" /> <set name="is_private_storeable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_WP" /> <set name="etcitem_type" val="GIANT_ENCHT_WP" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -214,7 +214,7 @@
<set name="is_private_storeable" val="false" /> <set name="is_private_storeable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_WP" /> <set name="etcitem_type" val="GIANT_ENCHT_WP" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -237,7 +237,7 @@
<set name="is_private_storeable" val="false" /> <set name="is_private_storeable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_AM" /> <set name="etcitem_type" val="GIANT_ENCHT_AM" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -260,7 +260,7 @@
<set name="is_private_storeable" val="false" /> <set name="is_private_storeable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_AM" /> <set name="etcitem_type" val="GIANT_ENCHT_AM" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -283,7 +283,7 @@
<set name="is_private_storeable" val="false" /> <set name="is_private_storeable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_AM" /> <set name="etcitem_type" val="GIANT_ENCHT_AM" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -306,7 +306,7 @@
<set name="is_private_storeable" val="false" /> <set name="is_private_storeable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_AM" /> <set name="etcitem_type" val="GIANT_ENCHT_AM" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -329,7 +329,7 @@
<set name="is_private_storeable" val="false" /> <set name="is_private_storeable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_AM" /> <set name="etcitem_type" val="GIANT_ENCHT_AM" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -352,7 +352,7 @@
<set name="is_private_storeable" val="false" /> <set name="is_private_storeable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_AM" /> <set name="etcitem_type" val="GIANT_ENCHT_AM" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />

View File

@@ -1035,7 +1035,7 @@
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="commissionItemType" val="SCROLL_ENCHANT_WEAPON" /> <set name="commissionItemType" val="SCROLL_ENCHANT_WEAPON" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_WP" /> <set name="etcitem_type" val="GIANT_ENCHT_WP" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -1052,7 +1052,7 @@
<set name="is_sellable" val="false" /> <set name="is_sellable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_AM" /> <set name="etcitem_type" val="GIANT_ENCHT_AM" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="commissionItemType" val="SCROLL_ENCHANT_ARMOR" /> <set name="commissionItemType" val="SCROLL_ENCHANT_ARMOR" />

View File

@@ -958,7 +958,7 @@
<set name="is_sellable" val="false" /> <set name="is_sellable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_WP" /> <set name="etcitem_type" val="GIANT_ENCHT_WP" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -975,7 +975,7 @@
<set name="is_sellable" val="false" /> <set name="is_sellable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_WP" /> <set name="etcitem_type" val="GIANT_ENCHT_WP" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -992,7 +992,7 @@
<set name="is_sellable" val="false" /> <set name="is_sellable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_WP" /> <set name="etcitem_type" val="GIANT_ENCHT_WP" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -1010,7 +1010,7 @@
<set name="is_sellable" val="false" /> <set name="is_sellable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_AM" /> <set name="etcitem_type" val="GIANT_ENCHT_AM" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="commissionItemType" val="SCROLL_ENCHANT_ARMOR" /> <set name="commissionItemType" val="SCROLL_ENCHANT_ARMOR" />
@@ -1027,7 +1027,7 @@
<set name="is_sellable" val="false" /> <set name="is_sellable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_AM" /> <set name="etcitem_type" val="GIANT_ENCHT_AM" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="commissionItemType" val="SCROLL_ENCHANT_ARMOR" /> <set name="commissionItemType" val="SCROLL_ENCHANT_ARMOR" />
@@ -1044,7 +1044,7 @@
<set name="is_sellable" val="false" /> <set name="is_sellable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_AM" /> <set name="etcitem_type" val="GIANT_ENCHT_AM" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="commissionItemType" val="SCROLL_ENCHANT_ARMOR" /> <set name="commissionItemType" val="SCROLL_ENCHANT_ARMOR" />

View File

@@ -42,6 +42,8 @@ public abstract class AbstractEnchantItem
EtcItemType.BLESS_ENCHT_WP, EtcItemType.BLESS_ENCHT_WP,
EtcItemType.ENCHT_AM, EtcItemType.ENCHT_AM,
EtcItemType.ENCHT_WP, EtcItemType.ENCHT_WP,
EtcItemType.GIANT_ENCHT_AM,
EtcItemType.GIANT_ENCHT_WP,
EtcItemType.ENCHT_ATTR_INC_PROP_ENCHT_AM, EtcItemType.ENCHT_ATTR_INC_PROP_ENCHT_AM,
EtcItemType.ENCHT_ATTR_INC_PROP_ENCHT_WP, EtcItemType.ENCHT_ATTR_INC_PROP_ENCHT_WP,
}; };

View File

@@ -37,6 +37,7 @@ public final class EnchantScroll extends AbstractEnchantItem
private final boolean _isWeapon; private final boolean _isWeapon;
private final boolean _isBlessed; private final boolean _isBlessed;
private final boolean _isSafe; private final boolean _isSafe;
private final boolean _isGiant;
private final int _scrollGroupId; private final int _scrollGroupId;
private Set<Integer> _items; private Set<Integer> _items;
@@ -46,9 +47,10 @@ public final class EnchantScroll extends AbstractEnchantItem
_scrollGroupId = set.getInt("scrollGroupId", 0); _scrollGroupId = set.getInt("scrollGroupId", 0);
final ItemType type = getItem().getItemType(); final ItemType type = getItem().getItemType();
_isWeapon = (type == EtcItemType.ENCHT_ATTR_ANCIENT_CRYSTAL_ENCHANT_WP) || (type == EtcItemType.BLESS_ENCHT_WP) || (type == EtcItemType.ENCHT_WP); _isWeapon = (type == EtcItemType.ENCHT_ATTR_ANCIENT_CRYSTAL_ENCHANT_WP) || (type == EtcItemType.BLESS_ENCHT_WP) || (type == EtcItemType.ENCHT_WP) || (type == EtcItemType.GIANT_ENCHT_WP);
_isBlessed = (type == EtcItemType.BLESS_ENCHT_AM) || (type == EtcItemType.BLESS_ENCHT_WP); _isBlessed = (type == EtcItemType.BLESS_ENCHT_AM) || (type == EtcItemType.BLESS_ENCHT_WP);
_isSafe = (type == EtcItemType.ENCHT_ATTR_CRYSTAL_ENCHANT_AM) || (type == EtcItemType.ENCHT_ATTR_CRYSTAL_ENCHANT_WP); _isSafe = (type == EtcItemType.ENCHT_ATTR_CRYSTAL_ENCHANT_AM) || (type == EtcItemType.ENCHT_ATTR_CRYSTAL_ENCHANT_WP);
_isGiant = (type == EtcItemType.GIANT_ENCHT_AM) || (type == EtcItemType.GIANT_ENCHT_WP);
} }
@Override @Override
@@ -73,6 +75,11 @@ public final class EnchantScroll extends AbstractEnchantItem
return _isSafe; return _isSafe;
} }
public boolean isGiant()
{
return _isGiant;
}
/** /**
* @return id of scroll group that should be used * @return id of scroll group that should be used
*/ */

View File

@@ -42,6 +42,8 @@ public enum EtcItemType implements ItemType
MATURECROP, MATURECROP,
ENCHT_WP, ENCHT_WP,
ENCHT_AM, ENCHT_AM,
GIANT_ENCHT_WP,
GIANT_ENCHT_AM,
BLESS_ENCHT_WP, BLESS_ENCHT_WP,
BLESS_ENCHT_AM, BLESS_ENCHT_AM,
COUPON, COUPON,

View File

@@ -20,6 +20,7 @@ import java.util.logging.Logger;
import com.l2jmobius.Config; import com.l2jmobius.Config;
import com.l2jmobius.commons.network.PacketReader; import com.l2jmobius.commons.network.PacketReader;
import com.l2jmobius.commons.util.Rnd;
import com.l2jmobius.gameserver.data.xml.impl.EnchantItemData; import com.l2jmobius.gameserver.data.xml.impl.EnchantItemData;
import com.l2jmobius.gameserver.enums.ItemSkillType; import com.l2jmobius.gameserver.enums.ItemSkillType;
import com.l2jmobius.gameserver.enums.UserInfoType; import com.l2jmobius.gameserver.enums.UserInfoType;
@@ -184,7 +185,14 @@ public final class RequestEnchantItem implements IClientIncomingPacket
// Increase enchant level only if scroll's base template has chance, some armors can success over +20 but they shouldn't have increased. // Increase enchant level only if scroll's base template has chance, some armors can success over +20 but they shouldn't have increased.
if (scrollTemplate.getChance(activeChar, item) > 0) if (scrollTemplate.getChance(activeChar, item) > 0)
{ {
item.setEnchantLevel(item.getEnchantLevel() + 1); if (scrollTemplate.isGiant())
{
item.setEnchantLevel(Math.min(item.getEnchantLevel() + 1 + Rnd.get(3), scrollTemplate.getMaxEnchantLevel()));
}
else
{
item.setEnchantLevel(item.getEnchantLevel() + 1);
}
item.updateDatabase(); item.updateDatabase();
} }
client.sendPacket(new EnchantResult(EnchantResult.SUCCESS, item)); client.sendPacket(new EnchantResult(EnchantResult.SUCCESS, item));

View File

@@ -99,7 +99,7 @@
<set name="is_private_storeable" val="false" /> <set name="is_private_storeable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_WP" /> <set name="etcitem_type" val="GIANT_ENCHT_WP" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -122,7 +122,7 @@
<set name="is_private_storeable" val="false" /> <set name="is_private_storeable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_WP" /> <set name="etcitem_type" val="GIANT_ENCHT_WP" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -145,7 +145,7 @@
<set name="is_private_storeable" val="false" /> <set name="is_private_storeable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_WP" /> <set name="etcitem_type" val="GIANT_ENCHT_WP" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -168,7 +168,7 @@
<set name="is_private_storeable" val="false" /> <set name="is_private_storeable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_WP" /> <set name="etcitem_type" val="GIANT_ENCHT_WP" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -191,7 +191,7 @@
<set name="is_private_storeable" val="false" /> <set name="is_private_storeable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_WP" /> <set name="etcitem_type" val="GIANT_ENCHT_WP" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -214,7 +214,7 @@
<set name="is_private_storeable" val="false" /> <set name="is_private_storeable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_WP" /> <set name="etcitem_type" val="GIANT_ENCHT_WP" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -237,7 +237,7 @@
<set name="is_private_storeable" val="false" /> <set name="is_private_storeable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_AM" /> <set name="etcitem_type" val="GIANT_ENCHT_AM" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -260,7 +260,7 @@
<set name="is_private_storeable" val="false" /> <set name="is_private_storeable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_AM" /> <set name="etcitem_type" val="GIANT_ENCHT_AM" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -283,7 +283,7 @@
<set name="is_private_storeable" val="false" /> <set name="is_private_storeable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_AM" /> <set name="etcitem_type" val="GIANT_ENCHT_AM" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -306,7 +306,7 @@
<set name="is_private_storeable" val="false" /> <set name="is_private_storeable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_AM" /> <set name="etcitem_type" val="GIANT_ENCHT_AM" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -329,7 +329,7 @@
<set name="is_private_storeable" val="false" /> <set name="is_private_storeable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_AM" /> <set name="etcitem_type" val="GIANT_ENCHT_AM" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -352,7 +352,7 @@
<set name="is_private_storeable" val="false" /> <set name="is_private_storeable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_AM" /> <set name="etcitem_type" val="GIANT_ENCHT_AM" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />

View File

@@ -1035,7 +1035,7 @@
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="commissionItemType" val="SCROLL_ENCHANT_WEAPON" /> <set name="commissionItemType" val="SCROLL_ENCHANT_WEAPON" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_WP" /> <set name="etcitem_type" val="GIANT_ENCHT_WP" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -1052,7 +1052,7 @@
<set name="is_sellable" val="false" /> <set name="is_sellable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_AM" /> <set name="etcitem_type" val="GIANT_ENCHT_AM" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="commissionItemType" val="SCROLL_ENCHANT_ARMOR" /> <set name="commissionItemType" val="SCROLL_ENCHANT_ARMOR" />

View File

@@ -958,7 +958,7 @@
<set name="is_sellable" val="false" /> <set name="is_sellable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_WP" /> <set name="etcitem_type" val="GIANT_ENCHT_WP" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -975,7 +975,7 @@
<set name="is_sellable" val="false" /> <set name="is_sellable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_WP" /> <set name="etcitem_type" val="GIANT_ENCHT_WP" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -992,7 +992,7 @@
<set name="is_sellable" val="false" /> <set name="is_sellable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_WP" /> <set name="etcitem_type" val="GIANT_ENCHT_WP" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
@@ -1010,7 +1010,7 @@
<set name="is_sellable" val="false" /> <set name="is_sellable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_AM" /> <set name="etcitem_type" val="GIANT_ENCHT_AM" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="commissionItemType" val="SCROLL_ENCHANT_ARMOR" /> <set name="commissionItemType" val="SCROLL_ENCHANT_ARMOR" />
@@ -1027,7 +1027,7 @@
<set name="is_sellable" val="false" /> <set name="is_sellable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_AM" /> <set name="etcitem_type" val="GIANT_ENCHT_AM" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="commissionItemType" val="SCROLL_ENCHANT_ARMOR" /> <set name="commissionItemType" val="SCROLL_ENCHANT_ARMOR" />
@@ -1044,7 +1044,7 @@
<set name="is_sellable" val="false" /> <set name="is_sellable" val="false" />
<set name="is_oly_restricted" val="true" /> <set name="is_oly_restricted" val="true" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="ENCHT_AM" /> <set name="etcitem_type" val="GIANT_ENCHT_AM" />
<set name="handler" val="EnchantScrolls" /> <set name="handler" val="EnchantScrolls" />
<set name="immediate_effect" val="true" /> <set name="immediate_effect" val="true" />
<set name="commissionItemType" val="SCROLL_ENCHANT_ARMOR" /> <set name="commissionItemType" val="SCROLL_ENCHANT_ARMOR" />

View File

@@ -42,6 +42,8 @@ public abstract class AbstractEnchantItem
EtcItemType.BLESS_ENCHT_WP, EtcItemType.BLESS_ENCHT_WP,
EtcItemType.ENCHT_AM, EtcItemType.ENCHT_AM,
EtcItemType.ENCHT_WP, EtcItemType.ENCHT_WP,
EtcItemType.GIANT_ENCHT_AM,
EtcItemType.GIANT_ENCHT_WP,
EtcItemType.ENCHT_ATTR_INC_PROP_ENCHT_AM, EtcItemType.ENCHT_ATTR_INC_PROP_ENCHT_AM,
EtcItemType.ENCHT_ATTR_INC_PROP_ENCHT_WP, EtcItemType.ENCHT_ATTR_INC_PROP_ENCHT_WP,
}; };

View File

@@ -37,6 +37,7 @@ public final class EnchantScroll extends AbstractEnchantItem
private final boolean _isWeapon; private final boolean _isWeapon;
private final boolean _isBlessed; private final boolean _isBlessed;
private final boolean _isSafe; private final boolean _isSafe;
private final boolean _isGiant;
private final int _scrollGroupId; private final int _scrollGroupId;
private Set<Integer> _items; private Set<Integer> _items;
@@ -46,9 +47,10 @@ public final class EnchantScroll extends AbstractEnchantItem
_scrollGroupId = set.getInt("scrollGroupId", 0); _scrollGroupId = set.getInt("scrollGroupId", 0);
final ItemType type = getItem().getItemType(); final ItemType type = getItem().getItemType();
_isWeapon = (type == EtcItemType.ENCHT_ATTR_ANCIENT_CRYSTAL_ENCHANT_WP) || (type == EtcItemType.BLESS_ENCHT_WP) || (type == EtcItemType.ENCHT_WP); _isWeapon = (type == EtcItemType.ENCHT_ATTR_ANCIENT_CRYSTAL_ENCHANT_WP) || (type == EtcItemType.BLESS_ENCHT_WP) || (type == EtcItemType.ENCHT_WP) || (type == EtcItemType.GIANT_ENCHT_WP);
_isBlessed = (type == EtcItemType.BLESS_ENCHT_AM) || (type == EtcItemType.BLESS_ENCHT_WP); _isBlessed = (type == EtcItemType.BLESS_ENCHT_AM) || (type == EtcItemType.BLESS_ENCHT_WP);
_isSafe = (type == EtcItemType.ENCHT_ATTR_CRYSTAL_ENCHANT_AM) || (type == EtcItemType.ENCHT_ATTR_CRYSTAL_ENCHANT_WP); _isSafe = (type == EtcItemType.ENCHT_ATTR_CRYSTAL_ENCHANT_AM) || (type == EtcItemType.ENCHT_ATTR_CRYSTAL_ENCHANT_WP);
_isGiant = (type == EtcItemType.GIANT_ENCHT_AM) || (type == EtcItemType.GIANT_ENCHT_WP);
} }
@Override @Override
@@ -73,6 +75,11 @@ public final class EnchantScroll extends AbstractEnchantItem
return _isSafe; return _isSafe;
} }
public boolean isGiant()
{
return _isGiant;
}
/** /**
* @return id of scroll group that should be used * @return id of scroll group that should be used
*/ */

View File

@@ -42,6 +42,8 @@ public enum EtcItemType implements ItemType
MATURECROP, MATURECROP,
ENCHT_WP, ENCHT_WP,
ENCHT_AM, ENCHT_AM,
GIANT_ENCHT_WP,
GIANT_ENCHT_AM,
BLESS_ENCHT_WP, BLESS_ENCHT_WP,
BLESS_ENCHT_AM, BLESS_ENCHT_AM,
COUPON, COUPON,

View File

@@ -20,6 +20,7 @@ import java.util.logging.Logger;
import com.l2jmobius.Config; import com.l2jmobius.Config;
import com.l2jmobius.commons.network.PacketReader; import com.l2jmobius.commons.network.PacketReader;
import com.l2jmobius.commons.util.Rnd;
import com.l2jmobius.gameserver.data.xml.impl.EnchantItemData; import com.l2jmobius.gameserver.data.xml.impl.EnchantItemData;
import com.l2jmobius.gameserver.enums.ItemSkillType; import com.l2jmobius.gameserver.enums.ItemSkillType;
import com.l2jmobius.gameserver.enums.UserInfoType; import com.l2jmobius.gameserver.enums.UserInfoType;
@@ -184,7 +185,14 @@ public final class RequestEnchantItem implements IClientIncomingPacket
// Increase enchant level only if scroll's base template has chance, some armors can success over +20 but they shouldn't have increased. // Increase enchant level only if scroll's base template has chance, some armors can success over +20 but they shouldn't have increased.
if (scrollTemplate.getChance(activeChar, item) > 0) if (scrollTemplate.getChance(activeChar, item) > 0)
{ {
item.setEnchantLevel(item.getEnchantLevel() + 1); if (scrollTemplate.isGiant())
{
item.setEnchantLevel(Math.min(item.getEnchantLevel() + 1 + Rnd.get(3), scrollTemplate.getMaxEnchantLevel()));
}
else
{
item.setEnchantLevel(item.getEnchantLevel() + 1);
}
item.updateDatabase(); item.updateDatabase();
} }
client.sendPacket(new EnchantResult(EnchantResult.SUCCESS, item)); client.sendPacket(new EnchantResult(EnchantResult.SUCCESS, item));

View File

@@ -42,6 +42,8 @@ public abstract class AbstractEnchantItem
EtcItemType.BLESS_ENCHT_WP, EtcItemType.BLESS_ENCHT_WP,
EtcItemType.ENCHT_AM, EtcItemType.ENCHT_AM,
EtcItemType.ENCHT_WP, EtcItemType.ENCHT_WP,
EtcItemType.GIANT_ENCHT_AM,
EtcItemType.GIANT_ENCHT_WP,
EtcItemType.ENCHT_ATTR_INC_PROP_ENCHT_AM, EtcItemType.ENCHT_ATTR_INC_PROP_ENCHT_AM,
EtcItemType.ENCHT_ATTR_INC_PROP_ENCHT_WP, EtcItemType.ENCHT_ATTR_INC_PROP_ENCHT_WP,
}; };

View File

@@ -37,6 +37,7 @@ public final class EnchantScroll extends AbstractEnchantItem
private final boolean _isWeapon; private final boolean _isWeapon;
private final boolean _isBlessed; private final boolean _isBlessed;
private final boolean _isSafe; private final boolean _isSafe;
private final boolean _isGiant;
private final int _scrollGroupId; private final int _scrollGroupId;
private Set<Integer> _items; private Set<Integer> _items;
@@ -46,9 +47,10 @@ public final class EnchantScroll extends AbstractEnchantItem
_scrollGroupId = set.getInt("scrollGroupId", 0); _scrollGroupId = set.getInt("scrollGroupId", 0);
final ItemType type = getItem().getItemType(); final ItemType type = getItem().getItemType();
_isWeapon = (type == EtcItemType.ENCHT_ATTR_ANCIENT_CRYSTAL_ENCHANT_WP) || (type == EtcItemType.BLESS_ENCHT_WP) || (type == EtcItemType.ENCHT_WP); _isWeapon = (type == EtcItemType.ENCHT_ATTR_ANCIENT_CRYSTAL_ENCHANT_WP) || (type == EtcItemType.BLESS_ENCHT_WP) || (type == EtcItemType.ENCHT_WP) || (type == EtcItemType.GIANT_ENCHT_WP);
_isBlessed = (type == EtcItemType.BLESS_ENCHT_AM) || (type == EtcItemType.BLESS_ENCHT_WP); _isBlessed = (type == EtcItemType.BLESS_ENCHT_AM) || (type == EtcItemType.BLESS_ENCHT_WP);
_isSafe = (type == EtcItemType.ENCHT_ATTR_CRYSTAL_ENCHANT_AM) || (type == EtcItemType.ENCHT_ATTR_CRYSTAL_ENCHANT_WP); _isSafe = (type == EtcItemType.ENCHT_ATTR_CRYSTAL_ENCHANT_AM) || (type == EtcItemType.ENCHT_ATTR_CRYSTAL_ENCHANT_WP);
_isGiant = (type == EtcItemType.GIANT_ENCHT_AM) || (type == EtcItemType.GIANT_ENCHT_WP);
} }
@Override @Override
@@ -73,6 +75,11 @@ public final class EnchantScroll extends AbstractEnchantItem
return _isSafe; return _isSafe;
} }
public boolean isGiant()
{
return _isGiant;
}
/** /**
* @return id of scroll group that should be used * @return id of scroll group that should be used
*/ */

View File

@@ -42,6 +42,8 @@ public enum EtcItemType implements ItemType
MATURECROP, MATURECROP,
ENCHT_WP, ENCHT_WP,
ENCHT_AM, ENCHT_AM,
GIANT_ENCHT_WP,
GIANT_ENCHT_AM,
BLESS_ENCHT_WP, BLESS_ENCHT_WP,
BLESS_ENCHT_AM, BLESS_ENCHT_AM,
COUPON, COUPON,

View File

@@ -20,6 +20,7 @@ import java.util.logging.Logger;
import com.l2jmobius.Config; import com.l2jmobius.Config;
import com.l2jmobius.commons.network.PacketReader; import com.l2jmobius.commons.network.PacketReader;
import com.l2jmobius.commons.util.Rnd;
import com.l2jmobius.gameserver.data.xml.impl.EnchantItemData; import com.l2jmobius.gameserver.data.xml.impl.EnchantItemData;
import com.l2jmobius.gameserver.enums.ItemSkillType; import com.l2jmobius.gameserver.enums.ItemSkillType;
import com.l2jmobius.gameserver.enums.UserInfoType; import com.l2jmobius.gameserver.enums.UserInfoType;
@@ -184,7 +185,14 @@ public final class RequestEnchantItem implements IClientIncomingPacket
// Increase enchant level only if scroll's base template has chance, some armors can success over +20 but they shouldn't have increased. // Increase enchant level only if scroll's base template has chance, some armors can success over +20 but they shouldn't have increased.
if (scrollTemplate.getChance(activeChar, item) > 0) if (scrollTemplate.getChance(activeChar, item) > 0)
{ {
item.setEnchantLevel(item.getEnchantLevel() + 1); if (scrollTemplate.isGiant())
{
item.setEnchantLevel(Math.min(item.getEnchantLevel() + 1 + Rnd.get(3), scrollTemplate.getMaxEnchantLevel()));
}
else
{
item.setEnchantLevel(item.getEnchantLevel() + 1);
}
item.updateDatabase(); item.updateDatabase();
} }
client.sendPacket(new EnchantResult(EnchantResult.SUCCESS, item)); client.sendPacket(new EnchantResult(EnchantResult.SUCCESS, item));