Reworked attribute system, stone type and chances.
Contributed by facab.
This commit is contained in:
@@ -843,44 +843,110 @@
|
|||||||
<item id="36972" name="Fire Crystal - Super" type="EtcItem">
|
<item id="36972" name="Fire Crystal - Super" type="EtcItem">
|
||||||
<!-- Fire attribute from level 3 to level 6 can be bestowed at the same time. The crystal's power is destroyed when additional attributes are bestowed. Also, armor can be enchanted up to 3 attributes. Opposite attributes cannot be bestowed. -->
|
<!-- Fire attribute from level 3 to level 6 can be bestowed at the same time. The crystal's power is destroyed when additional attributes are bestowed. Also, armor can be enchanted up to 3 attributes. Opposite attributes cannot be bestowed. -->
|
||||||
<set name="icon" val="icon.etc_fire_crystal_i00" />
|
<set name="icon" val="icon.etc_fire_crystal_i00" />
|
||||||
<set name="weight" val="1" />
|
<set name="default_action" val="SKILL_REDUCE" />
|
||||||
<set name="etcitem_type" val="ENCHT_ATTR" />
|
<set name="etcitem_type" val="ENCHT_ATTR" />
|
||||||
|
<set name="immediate_effect" val="true" />
|
||||||
|
<set name="material" val="PAPER" />
|
||||||
|
<set name="weight" val="1" />
|
||||||
<set name="is_stackable" val="true" />
|
<set name="is_stackable" val="true" />
|
||||||
|
<set name="handler" val="EnchantAttribute" />
|
||||||
|
<set name="commissionItemType" val="ATTRIBUTE_STONE" />
|
||||||
|
<set name="is_clan_depositable" val="false" />
|
||||||
|
<set name="is_mailable" val="false" />
|
||||||
|
<set name="is_commissionable" val="false" />
|
||||||
|
<skills>
|
||||||
|
<skill id="12875" level="2" /> <!-- Fire Crystal -->
|
||||||
|
</skills>
|
||||||
</item>
|
</item>
|
||||||
<item id="36973" name="Water Crystal - Super" type="EtcItem">
|
<item id="36973" name="Water Crystal - Super" type="EtcItem">
|
||||||
<!-- Water attribute from level 3 to level 6 can be bestowed at the same time. The crystal's power is destroyed when additional attributes are bestowed. Also, armor can be enchanted up to 3 attributes. Opposite attributes cannot be bestowed. -->
|
<!-- Water attribute from level 3 to level 6 can be bestowed at the same time. The crystal's power is destroyed when additional attributes are bestowed. Also, armor can be enchanted up to 3 attributes. Opposite attributes cannot be bestowed. -->
|
||||||
<set name="icon" val="icon.etc_water_crystal_i00" />
|
<set name="icon" val="icon.etc_water_crystal_i00" />
|
||||||
<set name="weight" val="1" />
|
<set name="default_action" val="SKILL_REDUCE" />
|
||||||
<set name="etcitem_type" val="ENCHT_ATTR" />
|
<set name="etcitem_type" val="ENCHT_ATTR" />
|
||||||
|
<set name="immediate_effect" val="true" />
|
||||||
|
<set name="material" val="PAPER" />
|
||||||
|
<set name="weight" val="1" />
|
||||||
<set name="is_stackable" val="true" />
|
<set name="is_stackable" val="true" />
|
||||||
|
<set name="handler" val="EnchantAttribute" />
|
||||||
|
<set name="commissionItemType" val="ATTRIBUTE_STONE" />
|
||||||
|
<set name="is_clan_depositable" val="false" />
|
||||||
|
<set name="is_mailable" val="false" />
|
||||||
|
<set name="is_commissionable" val="false" />
|
||||||
|
<skills>
|
||||||
|
<skill id="12876" level="2" /> <!-- Water Crystal -->
|
||||||
|
</skills>
|
||||||
</item>
|
</item>
|
||||||
<item id="36974" name="Earth Crystal - Super" type="EtcItem">
|
<item id="36974" name="Earth Crystal - Super" type="EtcItem">
|
||||||
<!-- Earth attribute from level 3 to level 6 can be bestowed at the same time. The crystal's power is destroyed when additional attributes are bestowed. Also, armor can be enchanted up to 3 attributes. Opposite attributes cannot be bestowed. -->
|
<!-- Earth attribute from level 3 to level 6 can be bestowed at the same time. The crystal's power is destroyed when additional attributes are bestowed. Also, armor can be enchanted up to 3 attributes. Opposite attributes cannot be bestowed. -->
|
||||||
<set name="icon" val="icon.etc_earth_crystal_i00" />
|
<set name="icon" val="icon.etc_earth_crystal_i00" />
|
||||||
<set name="weight" val="1" />
|
<set name="default_action" val="SKILL_REDUCE" />
|
||||||
<set name="etcitem_type" val="ENCHT_ATTR" />
|
<set name="etcitem_type" val="ENCHT_ATTR" />
|
||||||
|
<set name="immediate_effect" val="true" />
|
||||||
|
<set name="material" val="PAPER" />
|
||||||
|
<set name="weight" val="1" />
|
||||||
<set name="is_stackable" val="true" />
|
<set name="is_stackable" val="true" />
|
||||||
|
<set name="handler" val="EnchantAttribute" />
|
||||||
|
<set name="commissionItemType" val="ATTRIBUTE_STONE" />
|
||||||
|
<set name="is_clan_depositable" val="false" />
|
||||||
|
<set name="is_mailable" val="false" />
|
||||||
|
<set name="is_commissionable" val="false" />
|
||||||
|
<skills>
|
||||||
|
<skill id="12878" level="2" /> <!-- Earth Crystal -->
|
||||||
|
</skills>
|
||||||
</item>
|
</item>
|
||||||
<item id="36975" name="Wind Crystal - Super" type="EtcItem">
|
<item id="36975" name="Wind Crystal - Super" type="EtcItem">
|
||||||
<!-- Wind attribute from level 3 to level 6 can be bestowed at the same time. The crystal's power is destroyed when additional attributes are bestowed. Also, armor can be enchanted up to 3 attributes. Opposite attributes cannot be bestowed. -->
|
<!-- Wind attribute from level 3 to level 6 can be bestowed at the same time. The crystal's power is destroyed when additional attributes are bestowed. Also, armor can be enchanted up to 3 attributes. Opposite attributes cannot be bestowed. -->
|
||||||
<set name="icon" val="icon.etc_wind_crystal_i00" />
|
<set name="icon" val="icon.etc_wind_crystal_i00" />
|
||||||
<set name="weight" val="1" />
|
<set name="default_action" val="SKILL_REDUCE" />
|
||||||
<set name="etcitem_type" val="ENCHT_ATTR" />
|
<set name="etcitem_type" val="ENCHT_ATTR" />
|
||||||
|
<set name="immediate_effect" val="true" />
|
||||||
|
<set name="material" val="PAPER" />
|
||||||
|
<set name="weight" val="1" />
|
||||||
<set name="is_stackable" val="true" />
|
<set name="is_stackable" val="true" />
|
||||||
|
<set name="handler" val="EnchantAttribute" />
|
||||||
|
<set name="commissionItemType" val="ATTRIBUTE_STONE" />
|
||||||
|
<set name="is_clan_depositable" val="false" />
|
||||||
|
<set name="is_mailable" val="false" />
|
||||||
|
<set name="is_commissionable" val="false" />
|
||||||
|
<skills>
|
||||||
|
<skill id="12877" level="2" /> <!-- Wind Crystal -->
|
||||||
|
</skills>
|
||||||
</item>
|
</item>
|
||||||
<item id="36976" name="Dark Crystal - Super" type="EtcItem">
|
<item id="36976" name="Dark Crystal - Super" type="EtcItem">
|
||||||
<!-- Dark attribute from level 3 to level 6 can be bestowed at the same time. The crystal's power is destroyed when additional attributes are bestowed. Also, armor can be enchanted up to 3 attributes. Opposite attributes cannot be bestowed. -->
|
<!-- Dark attribute from level 3 to level 6 can be bestowed at the same time. The crystal's power is destroyed when additional attributes are bestowed. Also, armor can be enchanted up to 3 attributes. Opposite attributes cannot be bestowed. -->
|
||||||
<set name="icon" val="icon.etc_unholy_crystal_i00" />
|
<set name="icon" val="icon.etc_unholy_crystal_i00" />
|
||||||
<set name="weight" val="1" />
|
<set name="default_action" val="SKILL_REDUCE" />
|
||||||
<set name="etcitem_type" val="ENCHT_ATTR" />
|
<set name="etcitem_type" val="ENCHT_ATTR" />
|
||||||
|
<set name="immediate_effect" val="true" />
|
||||||
|
<set name="material" val="PAPER" />
|
||||||
|
<set name="weight" val="1" />
|
||||||
<set name="is_stackable" val="true" />
|
<set name="is_stackable" val="true" />
|
||||||
|
<set name="handler" val="EnchantAttribute" />
|
||||||
|
<set name="commissionItemType" val="ATTRIBUTE_STONE" />
|
||||||
|
<set name="is_clan_depositable" val="false" />
|
||||||
|
<set name="is_mailable" val="false" />
|
||||||
|
<set name="is_commissionable" val="false" />
|
||||||
|
<skills>
|
||||||
|
<skill id="12880" level="2" /> <!-- Dark Crystal -->
|
||||||
|
</skills>
|
||||||
</item>
|
</item>
|
||||||
<item id="36977" name="Holy Crystal - Super" type="EtcItem">
|
<item id="36977" name="Holy Crystal - Super" type="EtcItem">
|
||||||
<!-- Holy attribute from level 3 to level 6 can be bestowed at the same time. The crystal's power is destroyed when additional attributes are bestowed. Also, armor can be enchanted up to 3 attributes. Opposite attributes cannot be bestowed. -->
|
<!-- Holy attribute from level 3 to level 6 can be bestowed at the same time. The crystal's power is destroyed when additional attributes are bestowed. Also, armor can be enchanted up to 3 attributes. Opposite attributes cannot be bestowed. -->
|
||||||
<set name="icon" val="icon.etc_holy_crystal_i00" />
|
<set name="icon" val="icon.etc_holy_crystal_i00" />
|
||||||
<set name="weight" val="1" />
|
<set name="default_action" val="SKILL_REDUCE" />
|
||||||
<set name="etcitem_type" val="ENCHT_ATTR" />
|
<set name="etcitem_type" val="ENCHT_ATTR" />
|
||||||
|
<set name="immediate_effect" val="true" />
|
||||||
|
<set name="material" val="PAPER" />
|
||||||
|
<set name="weight" val="1" />
|
||||||
<set name="is_stackable" val="true" />
|
<set name="is_stackable" val="true" />
|
||||||
|
<set name="handler" val="EnchantAttribute" />
|
||||||
|
<set name="commissionItemType" val="ATTRIBUTE_STONE" />
|
||||||
|
<set name="is_clan_depositable" val="false" />
|
||||||
|
<set name="is_mailable" val="false" />
|
||||||
|
<set name="is_commissionable" val="false" />
|
||||||
|
<skills>
|
||||||
|
<skill id="12879" level="2" /> <!-- Holy Crystal -->
|
||||||
|
</skills>
|
||||||
</item>
|
</item>
|
||||||
<item id="36978" name="Scroll: Enchant Hair Accessory" type="EtcItem">
|
<item id="36978" name="Scroll: Enchant Hair Accessory" type="EtcItem">
|
||||||
<!-- Increases M. Def. of hair accessories by 2. It is greatly increased starting at +4. Can be safely enchanted to +3. -->
|
<!-- Increases M. Def. of hair accessories by 2. It is greatly increased starting at +4. Can be safely enchanted to +3. -->
|
||||||
|
@@ -19,6 +19,10 @@ package org.l2jmobius.gameserver.model;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
|
||||||
|
import org.l2jmobius.gameserver.model.items.type.CrystalType;
|
||||||
|
|
||||||
public final class Elementals
|
public final class Elementals
|
||||||
{
|
{
|
||||||
private static final Map<Integer, ElementalItems> TABLE = new HashMap<>();
|
private static final Map<Integer, ElementalItems> TABLE = new HashMap<>();
|
||||||
@@ -84,11 +88,11 @@ public final class Elementals
|
|||||||
public enum ElementalItemType
|
public enum ElementalItemType
|
||||||
{
|
{
|
||||||
Stone(3),
|
Stone(3),
|
||||||
Roughore(3),
|
StoneSuper(3),
|
||||||
Crystal(6),
|
Crystal(6),
|
||||||
|
CrystalSuper(6),
|
||||||
Jewel(9),
|
Jewel(9),
|
||||||
Energy(12),
|
Energy(12);
|
||||||
GoD_Event(9);
|
|
||||||
|
|
||||||
public int _maxLevel;
|
public int _maxLevel;
|
||||||
|
|
||||||
@@ -109,12 +113,12 @@ public final class Elementals
|
|||||||
divineStone(HOLY, 9551, ElementalItemType.Stone, 0),
|
divineStone(HOLY, 9551, ElementalItemType.Stone, 0),
|
||||||
darkStone(DARK, 9550, ElementalItemType.Stone, 0),
|
darkStone(DARK, 9550, ElementalItemType.Stone, 0),
|
||||||
|
|
||||||
fireRoughtore(FIRE, 10521, ElementalItemType.Roughore, 0),
|
fireRoughtore(FIRE, 10521, ElementalItemType.Stone, 0),
|
||||||
waterRoughtore(WATER, 10522, ElementalItemType.Roughore, 0),
|
waterRoughtore(WATER, 10522, ElementalItemType.Stone, 0),
|
||||||
windRoughtore(WIND, 10524, ElementalItemType.Roughore, 0),
|
windRoughtore(WIND, 10524, ElementalItemType.Stone, 0),
|
||||||
earthRoughtore(EARTH, 10523, ElementalItemType.Roughore, 0),
|
earthRoughtore(EARTH, 10523, ElementalItemType.Stone, 0),
|
||||||
divineRoughtore(HOLY, 10526, ElementalItemType.Roughore, 0),
|
divineRoughtore(HOLY, 10526, ElementalItemType.Stone, 0),
|
||||||
darkRoughtore(DARK, 10525, ElementalItemType.Roughore, 0),
|
darkRoughtore(DARK, 10525, ElementalItemType.Stone, 0),
|
||||||
|
|
||||||
fireCrystal(FIRE, 9552, ElementalItemType.Crystal, 0),
|
fireCrystal(FIRE, 9552, ElementalItemType.Crystal, 0),
|
||||||
waterCrystal(WATER, 9553, ElementalItemType.Crystal, 0),
|
waterCrystal(WATER, 9553, ElementalItemType.Crystal, 0),
|
||||||
@@ -123,6 +127,7 @@ public final class Elementals
|
|||||||
divineCrystal(HOLY, 9557, ElementalItemType.Crystal, 0),
|
divineCrystal(HOLY, 9557, ElementalItemType.Crystal, 0),
|
||||||
darkCrystal(DARK, 9556, ElementalItemType.Crystal, 0),
|
darkCrystal(DARK, 9556, ElementalItemType.Crystal, 0),
|
||||||
|
|
||||||
|
// jewels are only for R110 grade
|
||||||
fireJewel(FIRE, 9558, ElementalItemType.Jewel, 0),
|
fireJewel(FIRE, 9558, ElementalItemType.Jewel, 0),
|
||||||
waterJewel(WATER, 9559, ElementalItemType.Jewel, 0),
|
waterJewel(WATER, 9559, ElementalItemType.Jewel, 0),
|
||||||
windJewel(WIND, 9561, ElementalItemType.Jewel, 0),
|
windJewel(WIND, 9561, ElementalItemType.Jewel, 0),
|
||||||
@@ -139,121 +144,121 @@ public final class Elementals
|
|||||||
darkEnergy(DARK, 9568, ElementalItemType.Energy, 0),
|
darkEnergy(DARK, 9568, ElementalItemType.Energy, 0),
|
||||||
|
|
||||||
// GoD+ Stones
|
// GoD+ Stones
|
||||||
GoD_22635(FIRE, 22635, ElementalItemType.GoD_Event, 0),
|
GoD_22635(FIRE, 22635, ElementalItemType.Stone, 0),
|
||||||
GoD_22636(WATER, 22636, ElementalItemType.GoD_Event, 0),
|
GoD_22636(WATER, 22636, ElementalItemType.Stone, 0),
|
||||||
GoD_22637(EARTH, 22637, ElementalItemType.GoD_Event, 0),
|
GoD_22637(EARTH, 22637, ElementalItemType.Stone, 0),
|
||||||
GoD_22638(WIND, 22638, ElementalItemType.GoD_Event, 0),
|
GoD_22638(WIND, 22638, ElementalItemType.Stone, 0),
|
||||||
GoD_22639(DARK, 22639, ElementalItemType.GoD_Event, 0),
|
GoD_22639(DARK, 22639, ElementalItemType.Stone, 0),
|
||||||
GoD_22640(HOLY, 22640, ElementalItemType.GoD_Event, 0),
|
GoD_22640(HOLY, 22640, ElementalItemType.Stone, 0),
|
||||||
GoD_22919(FIRE, 22919, ElementalItemType.GoD_Event, 0),
|
GoD_22919(FIRE, 22919, ElementalItemType.Stone, 0),
|
||||||
GoD_22920(WATER, 22920, ElementalItemType.GoD_Event, 0),
|
GoD_22920(WATER, 22920, ElementalItemType.Stone, 0),
|
||||||
GoD_22921(EARTH, 22921, ElementalItemType.GoD_Event, 0),
|
GoD_22921(EARTH, 22921, ElementalItemType.Stone, 0),
|
||||||
GoD_22922(WIND, 22922, ElementalItemType.GoD_Event, 0),
|
GoD_22922(WIND, 22922, ElementalItemType.Stone, 0),
|
||||||
GoD_22923(DARK, 22923, ElementalItemType.GoD_Event, 0),
|
GoD_22923(DARK, 22923, ElementalItemType.Stone, 0),
|
||||||
GoD_22924(HOLY, 22924, ElementalItemType.GoD_Event, 0),
|
GoD_22924(HOLY, 22924, ElementalItemType.Stone, 0),
|
||||||
GoD_33481(FIRE, 33481, ElementalItemType.GoD_Event, 0),
|
GoD_33481(FIRE, 33481, ElementalItemType.StoneSuper, 0),
|
||||||
GoD_33482(WATER, 33482, ElementalItemType.GoD_Event, 0),
|
GoD_33482(WATER, 33482, ElementalItemType.StoneSuper, 0),
|
||||||
GoD_33483(EARTH, 33483, ElementalItemType.GoD_Event, 0),
|
GoD_33483(EARTH, 33483, ElementalItemType.StoneSuper, 0),
|
||||||
GoD_33484(WIND, 33484, ElementalItemType.GoD_Event, 0),
|
GoD_33484(WIND, 33484, ElementalItemType.StoneSuper, 0),
|
||||||
GoD_33485(DARK, 33485, ElementalItemType.GoD_Event, 0),
|
GoD_33485(DARK, 33485, ElementalItemType.StoneSuper, 0),
|
||||||
GoD_33486(HOLY, 33486, ElementalItemType.GoD_Event, 0),
|
GoD_33486(HOLY, 33486, ElementalItemType.StoneSuper, 0),
|
||||||
GoD_33863(FIRE, 33863, ElementalItemType.GoD_Event, 60),
|
GoD_33863(FIRE, 33863, ElementalItemType.StoneSuper, 60),
|
||||||
GoD_33864(WATER, 33864, ElementalItemType.GoD_Event, 60),
|
GoD_33864(WATER, 33864, ElementalItemType.StoneSuper, 60),
|
||||||
GoD_33865(EARTH, 33865, ElementalItemType.GoD_Event, 60),
|
GoD_33865(EARTH, 33865, ElementalItemType.StoneSuper, 60),
|
||||||
GoD_33866(WIND, 33866, ElementalItemType.GoD_Event, 60),
|
GoD_33866(WIND, 33866, ElementalItemType.StoneSuper, 60),
|
||||||
GoD_33867(DARK, 33867, ElementalItemType.GoD_Event, 60),
|
GoD_33867(DARK, 33867, ElementalItemType.StoneSuper, 60),
|
||||||
GoD_33868(HOLY, 33868, ElementalItemType.GoD_Event, 60),
|
GoD_33868(HOLY, 33868, ElementalItemType.StoneSuper, 60),
|
||||||
GoD_33869(FIRE, 33869, ElementalItemType.GoD_Event, 150),
|
GoD_33869(FIRE, 33869, ElementalItemType.StoneSuper, 150),
|
||||||
GoD_33870(WATER, 33870, ElementalItemType.GoD_Event, 150),
|
GoD_33870(WATER, 33870, ElementalItemType.StoneSuper, 150),
|
||||||
GoD_33871(EARTH, 33871, ElementalItemType.GoD_Event, 150),
|
GoD_33871(EARTH, 33871, ElementalItemType.StoneSuper, 150),
|
||||||
GoD_33872(WIND, 33872, ElementalItemType.GoD_Event, 150),
|
GoD_33872(WIND, 33872, ElementalItemType.StoneSuper, 150),
|
||||||
GoD_33873(DARK, 33873, ElementalItemType.GoD_Event, 150),
|
GoD_33873(DARK, 33873, ElementalItemType.StoneSuper, 150),
|
||||||
GoD_33874(HOLY, 33874, ElementalItemType.GoD_Event, 150),
|
GoD_33874(HOLY, 33874, ElementalItemType.StoneSuper, 150),
|
||||||
GoD_34661(FIRE, 34661, ElementalItemType.GoD_Event, 60),
|
GoD_34661(FIRE, 34661, ElementalItemType.StoneSuper, 60),
|
||||||
GoD_34662(WATER, 34662, ElementalItemType.GoD_Event, 60),
|
GoD_34662(WATER, 34662, ElementalItemType.StoneSuper, 60),
|
||||||
GoD_34663(EARTH, 34663, ElementalItemType.GoD_Event, 60),
|
GoD_34663(EARTH, 34663, ElementalItemType.StoneSuper, 60),
|
||||||
GoD_34664(WIND, 34664, ElementalItemType.GoD_Event, 60),
|
GoD_34664(WIND, 34664, ElementalItemType.StoneSuper, 60),
|
||||||
GoD_34665(DARK, 34665, ElementalItemType.GoD_Event, 60),
|
GoD_34665(DARK, 34665, ElementalItemType.StoneSuper, 60),
|
||||||
GoD_34666(HOLY, 34666, ElementalItemType.GoD_Event, 60),
|
GoD_34666(HOLY, 34666, ElementalItemType.StoneSuper, 60),
|
||||||
GoD_34667(FIRE, 34667, ElementalItemType.GoD_Event, 150),
|
GoD_34667(FIRE, 34667, ElementalItemType.StoneSuper, 150),
|
||||||
GoD_34668(WATER, 34668, ElementalItemType.GoD_Event, 150),
|
GoD_34668(WATER, 34668, ElementalItemType.StoneSuper, 150),
|
||||||
GoD_34669(EARTH, 34669, ElementalItemType.GoD_Event, 150),
|
GoD_34669(EARTH, 34669, ElementalItemType.StoneSuper, 150),
|
||||||
GoD_34670(WIND, 34670, ElementalItemType.GoD_Event, 150),
|
GoD_34670(WIND, 34670, ElementalItemType.StoneSuper, 150),
|
||||||
GoD_34671(DARK, 34671, ElementalItemType.GoD_Event, 150),
|
GoD_34671(DARK, 34671, ElementalItemType.StoneSuper, 150),
|
||||||
GoD_34672(HOLY, 34672, ElementalItemType.GoD_Event, 150),
|
GoD_34672(HOLY, 34672, ElementalItemType.StoneSuper, 150),
|
||||||
GoD_34790(FIRE, 34790, ElementalItemType.GoD_Event, 0),
|
GoD_34790(FIRE, 34790, ElementalItemType.Stone, 0),
|
||||||
GoD_34791(WATER, 34791, ElementalItemType.GoD_Event, 0),
|
GoD_34791(WATER, 34791, ElementalItemType.Stone, 0),
|
||||||
GoD_34792(EARTH, 34792, ElementalItemType.GoD_Event, 0),
|
GoD_34792(EARTH, 34792, ElementalItemType.Stone, 0),
|
||||||
GoD_34793(WIND, 34793, ElementalItemType.GoD_Event, 0),
|
GoD_34793(WIND, 34793, ElementalItemType.Stone, 0),
|
||||||
GoD_34794(DARK, 34794, ElementalItemType.GoD_Event, 0),
|
GoD_34794(DARK, 34794, ElementalItemType.Stone, 0),
|
||||||
GoD_34795(HOLY, 34795, ElementalItemType.GoD_Event, 0),
|
GoD_34795(HOLY, 34795, ElementalItemType.Stone, 0),
|
||||||
GoD_35729(FIRE, 35729, ElementalItemType.GoD_Event, 60),
|
GoD_35729(FIRE, 35729, ElementalItemType.StoneSuper, 60),
|
||||||
GoD_35730(WATER, 35730, ElementalItemType.GoD_Event, 60),
|
GoD_35730(WATER, 35730, ElementalItemType.StoneSuper, 60),
|
||||||
GoD_35731(EARTH, 35731, ElementalItemType.GoD_Event, 60),
|
GoD_35731(EARTH, 35731, ElementalItemType.StoneSuper, 60),
|
||||||
GoD_35732(WIND, 35732, ElementalItemType.GoD_Event, 60),
|
GoD_35732(WIND, 35732, ElementalItemType.StoneSuper, 60),
|
||||||
GoD_35733(DARK, 35733, ElementalItemType.GoD_Event, 60),
|
GoD_35733(DARK, 35733, ElementalItemType.StoneSuper, 60),
|
||||||
GoD_35734(HOLY, 35734, ElementalItemType.GoD_Event, 60),
|
GoD_35734(HOLY, 35734, ElementalItemType.StoneSuper, 60),
|
||||||
GoD_35735(FIRE, 35735, ElementalItemType.GoD_Event, 150),
|
GoD_35735(FIRE, 35735, ElementalItemType.StoneSuper, 150),
|
||||||
GoD_35736(WATER, 35736, ElementalItemType.GoD_Event, 150),
|
GoD_35736(WATER, 35736, ElementalItemType.StoneSuper, 150),
|
||||||
GoD_35737(EARTH, 35737, ElementalItemType.GoD_Event, 150),
|
GoD_35737(EARTH, 35737, ElementalItemType.StoneSuper, 150),
|
||||||
GoD_35738(WIND, 35738, ElementalItemType.GoD_Event, 150),
|
GoD_35738(WIND, 35738, ElementalItemType.StoneSuper, 150),
|
||||||
GoD_35739(DARK, 35739, ElementalItemType.GoD_Event, 150),
|
GoD_35739(DARK, 35739, ElementalItemType.StoneSuper, 150),
|
||||||
GoD_35740(HOLY, 35740, ElementalItemType.GoD_Event, 150),
|
GoD_35740(HOLY, 35740, ElementalItemType.StoneSuper, 150),
|
||||||
GoD_36960(FIRE, 36960, ElementalItemType.GoD_Event, 60),
|
GoD_36960(FIRE, 36960, ElementalItemType.StoneSuper, 60),
|
||||||
GoD_36961(WATER, 36961, ElementalItemType.GoD_Event, 60),
|
GoD_36961(WATER, 36961, ElementalItemType.StoneSuper, 60),
|
||||||
GoD_36962(EARTH, 36962, ElementalItemType.GoD_Event, 60),
|
GoD_36962(EARTH, 36962, ElementalItemType.StoneSuper, 60),
|
||||||
GoD_36963(WIND, 36963, ElementalItemType.GoD_Event, 60),
|
GoD_36963(WIND, 36963, ElementalItemType.StoneSuper, 60),
|
||||||
GoD_36964(DARK, 36964, ElementalItemType.GoD_Event, 60),
|
GoD_36964(DARK, 36964, ElementalItemType.StoneSuper, 60),
|
||||||
GoD_36965(HOLY, 36965, ElementalItemType.GoD_Event, 60),
|
GoD_36965(HOLY, 36965, ElementalItemType.StoneSuper, 60),
|
||||||
GoD_36966(FIRE, 36966, ElementalItemType.GoD_Event, 150),
|
GoD_36966(FIRE, 36966, ElementalItemType.StoneSuper, 150),
|
||||||
GoD_36967(WATER, 36967, ElementalItemType.GoD_Event, 150),
|
GoD_36967(WATER, 36967, ElementalItemType.StoneSuper, 150),
|
||||||
GoD_36968(EARTH, 36968, ElementalItemType.GoD_Event, 150),
|
GoD_36968(EARTH, 36968, ElementalItemType.StoneSuper, 150),
|
||||||
GoD_36969(WIND, 36969, ElementalItemType.GoD_Event, 150),
|
GoD_36969(WIND, 36969, ElementalItemType.StoneSuper, 150),
|
||||||
GoD_36970(DARK, 36970, ElementalItemType.GoD_Event, 150),
|
GoD_36970(DARK, 36970, ElementalItemType.StoneSuper, 150),
|
||||||
GoD_36971(HOLY, 36971, ElementalItemType.GoD_Event, 150),
|
GoD_36971(HOLY, 36971, ElementalItemType.StoneSuper, 150),
|
||||||
GoD_37499(FIRE, 37499, ElementalItemType.GoD_Event, 0),
|
GoD_37499(FIRE, 37499, ElementalItemType.Stone, 0),
|
||||||
GoD_37500(WATER, 37500, ElementalItemType.GoD_Event, 0),
|
GoD_37500(WATER, 37500, ElementalItemType.Stone, 0),
|
||||||
GoD_37501(EARTH, 37501, ElementalItemType.GoD_Event, 0),
|
GoD_37501(EARTH, 37501, ElementalItemType.Stone, 0),
|
||||||
GoD_37502(WIND, 37502, ElementalItemType.GoD_Event, 0),
|
GoD_37502(WIND, 37502, ElementalItemType.Stone, 0),
|
||||||
GoD_37503(DARK, 37503, ElementalItemType.GoD_Event, 0),
|
GoD_37503(DARK, 37503, ElementalItemType.Stone, 0),
|
||||||
GoD_37504(HOLY, 37504, ElementalItemType.GoD_Event, 0),
|
GoD_37504(HOLY, 37504, ElementalItemType.Stone, 0),
|
||||||
|
|
||||||
// GoD+ Crystals
|
// GoD+ Crystals
|
||||||
GoD_22641(FIRE, 22641, ElementalItemType.GoD_Event, 0),
|
GoD_22641(FIRE, 22641, ElementalItemType.Crystal, 0),
|
||||||
GoD_22642(WATER, 22642, ElementalItemType.GoD_Event, 0),
|
GoD_22642(WATER, 22642, ElementalItemType.Crystal, 0),
|
||||||
GoD_22643(EARTH, 22643, ElementalItemType.GoD_Event, 0),
|
GoD_22643(EARTH, 22643, ElementalItemType.Crystal, 0),
|
||||||
GoD_22644(WIND, 22644, ElementalItemType.GoD_Event, 0),
|
GoD_22644(WIND, 22644, ElementalItemType.Crystal, 0),
|
||||||
GoD_22645(DARK, 22645, ElementalItemType.GoD_Event, 0),
|
GoD_22645(DARK, 22645, ElementalItemType.Crystal, 0),
|
||||||
GoD_22646(HOLY, 22646, ElementalItemType.GoD_Event, 0),
|
GoD_22646(HOLY, 22646, ElementalItemType.Crystal, 0),
|
||||||
GoD_22925(FIRE, 22925, ElementalItemType.GoD_Event, 0),
|
GoD_22925(FIRE, 22925, ElementalItemType.Crystal, 0),
|
||||||
GoD_22926(WATER, 22926, ElementalItemType.GoD_Event, 0),
|
GoD_22926(WATER, 22926, ElementalItemType.Crystal, 0),
|
||||||
GoD_22927(EARTH, 22927, ElementalItemType.GoD_Event, 0),
|
GoD_22927(EARTH, 22927, ElementalItemType.Crystal, 0),
|
||||||
GoD_22928(WIND, 22928, ElementalItemType.GoD_Event, 0),
|
GoD_22928(WIND, 22928, ElementalItemType.Crystal, 0),
|
||||||
GoD_22929(DARK, 22929, ElementalItemType.GoD_Event, 0),
|
GoD_22929(DARK, 22929, ElementalItemType.Crystal, 0),
|
||||||
GoD_22930(HOLY, 22930, ElementalItemType.GoD_Event, 0),
|
GoD_22930(HOLY, 22930, ElementalItemType.Crystal, 0),
|
||||||
GoD_33487(FIRE, 33487, ElementalItemType.GoD_Event, 0),
|
GoD_33487(FIRE, 33487, ElementalItemType.CrystalSuper, 0),
|
||||||
GoD_33488(WATER, 33488, ElementalItemType.GoD_Event, 0),
|
GoD_33488(WATER, 33488, ElementalItemType.CrystalSuper, 0),
|
||||||
GoD_33489(EARTH, 33489, ElementalItemType.GoD_Event, 0),
|
GoD_33489(EARTH, 33489, ElementalItemType.CrystalSuper, 0),
|
||||||
GoD_33490(WIND, 33490, ElementalItemType.GoD_Event, 0),
|
GoD_33490(WIND, 33490, ElementalItemType.CrystalSuper, 0),
|
||||||
GoD_33491(DARK, 33491, ElementalItemType.GoD_Event, 0),
|
GoD_33491(DARK, 33491, ElementalItemType.CrystalSuper, 0),
|
||||||
GoD_33492(HOLY, 33492, ElementalItemType.GoD_Event, 0),
|
GoD_33492(HOLY, 33492, ElementalItemType.CrystalSuper, 0),
|
||||||
GoD_34796(FIRE, 34796, ElementalItemType.GoD_Event, 0),
|
GoD_34796(FIRE, 34796, ElementalItemType.Crystal, 0),
|
||||||
GoD_34797(WATER, 34797, ElementalItemType.GoD_Event, 0),
|
GoD_34797(WATER, 34797, ElementalItemType.Crystal, 0),
|
||||||
GoD_34798(EARTH, 34798, ElementalItemType.GoD_Event, 0),
|
GoD_34798(EARTH, 34798, ElementalItemType.Crystal, 0),
|
||||||
GoD_34799(WIND, 34799, ElementalItemType.GoD_Event, 0),
|
GoD_34799(WIND, 34799, ElementalItemType.Crystal, 0),
|
||||||
GoD_34800(DARK, 34800, ElementalItemType.GoD_Event, 0),
|
GoD_34800(DARK, 34800, ElementalItemType.Crystal, 0),
|
||||||
GoD_34801(HOLY, 34801, ElementalItemType.GoD_Event, 0),
|
GoD_34801(HOLY, 34801, ElementalItemType.Crystal, 0),
|
||||||
GoD_36972(FIRE, 36972, ElementalItemType.GoD_Event, 0),
|
GoD_36972(FIRE, 36972, ElementalItemType.CrystalSuper, 0),
|
||||||
GoD_36973(WATER, 36973, ElementalItemType.GoD_Event, 0),
|
GoD_36973(WATER, 36973, ElementalItemType.CrystalSuper, 0),
|
||||||
GoD_36974(EARTH, 36974, ElementalItemType.GoD_Event, 0),
|
GoD_36974(EARTH, 36974, ElementalItemType.CrystalSuper, 0),
|
||||||
GoD_36975(WIND, 36975, ElementalItemType.GoD_Event, 0),
|
GoD_36975(WIND, 36975, ElementalItemType.CrystalSuper, 0),
|
||||||
GoD_36976(DARK, 36976, ElementalItemType.GoD_Event, 0),
|
GoD_36976(DARK, 36976, ElementalItemType.CrystalSuper, 0),
|
||||||
GoD_36977(HOLY, 36977, ElementalItemType.GoD_Event, 0);
|
GoD_36977(HOLY, 36977, ElementalItemType.CrystalSuper, 0);
|
||||||
|
|
||||||
public byte _element;
|
public final byte _element;
|
||||||
public int _itemId;
|
public final int _itemId;
|
||||||
public ElementalItemType _type;
|
public final ElementalItemType _type;
|
||||||
public int _fixedPower;
|
public final int _fixedPower;
|
||||||
|
|
||||||
ElementalItems(byte element, int itemId, ElementalItemType type, int fixedPower)
|
ElementalItems(byte element, int itemId, ElementalItemType type, int fixedPower)
|
||||||
{
|
{
|
||||||
@@ -288,4 +293,147 @@ public final class Elementals
|
|||||||
}
|
}
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean isElementableWithStone(ItemInstance targetItem, int stoneId)
|
||||||
|
{
|
||||||
|
if (!targetItem.isElementable())
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (TABLE.get(stoneId)._type == ElementalItemType.Jewel)
|
||||||
|
{
|
||||||
|
if (targetItem.getItem().getCrystalType() != CrystalType.R110)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* @formatter:off */
|
||||||
|
// +-------+----------------+----------------+----------------+----------------+
|
||||||
|
// | Grade | Stone | Crystal | Stone-Super | Crystal-Super |
|
||||||
|
// +-------+----------------+----------------+----------------+----------------+
|
||||||
|
// | | Weapon | Armor | Weapon | Armor | Weapon | Armor | Weapon | Armor |
|
||||||
|
// +-------+--------+-------+--------+-------+--------+-------+--------+-------+
|
||||||
|
// | S | 50% | 60% | 30% | 50% | 100% | 100% | 80% | 100% |
|
||||||
|
// +-------+--------+-------+--------+-------+--------+-------+--------+-------+
|
||||||
|
// | S80 | 50% | 80% | 40% | 70% | 100% | 100% | 90% | 100% |
|
||||||
|
// +-------+--------+-------+--------+-------+--------+-------+--------+-------+
|
||||||
|
// | S84 | 50% | 80% | 50% | 80% | 100% | 100% | 100% | 100% |
|
||||||
|
// +-------+--------+-------+--------+-------+--------+-------+--------+-------+
|
||||||
|
// | R | 50% | 100% | 60% | 80% | 100% | 100% | 100% | 100% |
|
||||||
|
// +-------+--------+-------+--------+-------+--------+-------+--------+-------+
|
||||||
|
// | R95 | 50% | 100% | 60% | 100% | 100% | 100% | 100% | 100% |
|
||||||
|
// +-------+--------+-------+--------+-------+--------+-------+--------+-------+
|
||||||
|
// | R99 | 50% | 100% | 60% | 100% | 100% | 100% | 100% | 100% |
|
||||||
|
// +-------+--------+-------+--------+-------+--------+-------+--------+-------+
|
||||||
|
// | R110 | 50% | 100% | 60% | 100% | 100% | 100% | 100% | 100% |
|
||||||
|
// +-------+--------+-------+--------+-------+--------+-------+--------+-------+
|
||||||
|
|
||||||
|
// R110 same chance R99 not confirmed
|
||||||
|
|
||||||
|
/* @formatter:on */
|
||||||
|
|
||||||
|
public static boolean isSuccess(ItemInstance item, int stoneId)
|
||||||
|
{
|
||||||
|
switch (Elementals.getItemElemental(stoneId)._type)
|
||||||
|
{
|
||||||
|
case Stone:
|
||||||
|
{
|
||||||
|
if (item.isWeapon())
|
||||||
|
{
|
||||||
|
return Rnd.get(100) < 50;
|
||||||
|
}
|
||||||
|
switch (item.getItem().getCrystalType())
|
||||||
|
{
|
||||||
|
case S:
|
||||||
|
{
|
||||||
|
return Rnd.get(100) < 60;
|
||||||
|
}
|
||||||
|
case S80:
|
||||||
|
case S84:
|
||||||
|
{
|
||||||
|
return Rnd.get(100) < 80;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case Crystal:
|
||||||
|
{
|
||||||
|
if (item.isWeapon())
|
||||||
|
{
|
||||||
|
switch (item.getItem().getCrystalType())
|
||||||
|
{
|
||||||
|
case S:
|
||||||
|
{
|
||||||
|
return Rnd.get(100) < 30;
|
||||||
|
}
|
||||||
|
case S80:
|
||||||
|
{
|
||||||
|
return Rnd.get(100) < 40;
|
||||||
|
}
|
||||||
|
case S84:
|
||||||
|
{
|
||||||
|
return Rnd.get(100) < 50;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
return Rnd.get(100) < 60;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
switch (item.getItem().getCrystalType())
|
||||||
|
{
|
||||||
|
case S:
|
||||||
|
{
|
||||||
|
return Rnd.get(100) < 50;
|
||||||
|
}
|
||||||
|
case S80:
|
||||||
|
{
|
||||||
|
return Rnd.get(100) < 70;
|
||||||
|
}
|
||||||
|
case S84:
|
||||||
|
case R:
|
||||||
|
{
|
||||||
|
return Rnd.get(100) < 80;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case CrystalSuper:
|
||||||
|
{
|
||||||
|
if (item.isWeapon())
|
||||||
|
{
|
||||||
|
switch (item.getItem().getCrystalType())
|
||||||
|
{
|
||||||
|
case S:
|
||||||
|
{
|
||||||
|
return Rnd.get(100) < 80;
|
||||||
|
}
|
||||||
|
case S80:
|
||||||
|
{
|
||||||
|
return Rnd.get(100) < 90;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Super stones have 100% so will end here.
|
||||||
|
// Patch notes do not have info about jewels chance so 100% for now, till l2wiki update, energy are not used.
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -18,7 +18,6 @@ package org.l2jmobius.gameserver.network.clientpackets;
|
|||||||
|
|
||||||
import org.l2jmobius.Config;
|
import org.l2jmobius.Config;
|
||||||
import org.l2jmobius.commons.network.PacketReader;
|
import org.l2jmobius.commons.network.PacketReader;
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
|
||||||
import org.l2jmobius.gameserver.enums.AttributeType;
|
import org.l2jmobius.gameserver.enums.AttributeType;
|
||||||
import org.l2jmobius.gameserver.enums.PrivateStoreType;
|
import org.l2jmobius.gameserver.enums.PrivateStoreType;
|
||||||
import org.l2jmobius.gameserver.model.Elementals;
|
import org.l2jmobius.gameserver.model.Elementals;
|
||||||
@@ -112,7 +111,7 @@ public class RequestExEnchantItemAttribute implements IClientIncomingPacket
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!item.isElementable())
|
if (!Elementals.isElementableWithStone(item, stone.getItem().getId()))
|
||||||
{
|
{
|
||||||
client.sendPacket(SystemMessageId.ELEMENTAL_POWER_ENHANCER_USAGE_REQUIREMENT_IS_NOT_SUFFICIENT);
|
client.sendPacket(SystemMessageId.ELEMENTAL_POWER_ENHANCER_USAGE_REQUIREMENT_IS_NOT_SUFFICIENT);
|
||||||
player.removeRequest(request.getClass());
|
player.removeRequest(request.getClass());
|
||||||
@@ -308,55 +307,7 @@ public class RequestExEnchantItemAttribute implements IClientIncomingPacket
|
|||||||
player.removeRequest(EnchantItemAttributeRequest.class);
|
player.removeRequest(EnchantItemAttributeRequest.class);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
boolean success = Elementals.isSuccess(item, stone.getId());
|
||||||
boolean success = false;
|
|
||||||
switch (stone.getItem().getCrystalType())
|
|
||||||
{
|
|
||||||
case R:
|
|
||||||
{
|
|
||||||
success = Rnd.get(100) < 80;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case R95:
|
|
||||||
case R99:
|
|
||||||
case R110:
|
|
||||||
{
|
|
||||||
success = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
{
|
|
||||||
switch (Elementals.getItemElemental(stone.getId())._type)
|
|
||||||
{
|
|
||||||
case Stone:
|
|
||||||
case Roughore:
|
|
||||||
{
|
|
||||||
success = Rnd.get(100) < Config.ENCHANT_CHANCE_ELEMENT_STONE;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case Crystal:
|
|
||||||
{
|
|
||||||
success = Rnd.get(100) < Config.ENCHANT_CHANCE_ELEMENT_CRYSTAL;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case Jewel:
|
|
||||||
{
|
|
||||||
success = Rnd.get(100) < Config.ENCHANT_CHANCE_ELEMENT_JEWEL;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case Energy:
|
|
||||||
{
|
|
||||||
success = Rnd.get(100) < Config.ENCHANT_CHANCE_ELEMENT_ENERGY;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case GoD_Event:
|
|
||||||
{
|
|
||||||
success = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (success)
|
if (success)
|
||||||
{
|
{
|
||||||
|
@@ -51,7 +51,7 @@ public class ExChooseInventoryAttributeItem implements IClientOutgoingPacket
|
|||||||
// Register only items that can be put an attribute stone/crystal
|
// Register only items that can be put an attribute stone/crystal
|
||||||
for (ItemInstance item : player.getInventory().getItems())
|
for (ItemInstance item : player.getInventory().getItems())
|
||||||
{
|
{
|
||||||
if (item.isElementable())
|
if (Elementals.isElementableWithStone(item, stone.getId()))
|
||||||
{
|
{
|
||||||
_items.add(item.getObjectId());
|
_items.add(item.getObjectId());
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user