Код:
/**
* Enchant
*/
/**
* При фейле эти свитки не ломают вещь, но сбрасывают заточку
*/
public static boolean isBlessedEnchantScroll(int itemId)
{
switch(itemId)
{
case 6575: // Wpn D
case 6576: // Arm D
case 6573: // Wpn C
case 6574: // Arm C
case 6571: // Wpn B
case 6572: // Arm B
case 6569: // Wpn A
case 6570: // Arm A
case 6577: // Wpn S
case 6578: // Arm S
case 21582: // Blessed Enchant Scroll T'Shirt
return true;
}
return false;
}
/**
* При фейле эти свитки не имеют побочных эффектов
*/
public static boolean isAncientEnchantScroll(int itemId)
{
switch(itemId)
{
case 22014: // Wpn B
case 22016: // Arm B
case 22015: // Wpn A
case 22017: // Arm A
case 20519: // Wpn S
case 20520: // Arm S
return true;
}
return false;
}
/**
* HF5: При неудачной модификации предмет не исчезает и сохраняет уровень модификации за счет силы Богини Разрушения. Не действует на предметы выше +15.
*/
public static boolean isDestructionWpnEnchantScroll(int itemId)
{
switch(itemId)
{
case 22221:
case 22223:
case 22225:
case 22227:
case 22229:
return true;
}
return false;
}
/**
* HF5: При неудачной модификации предмет не исчезает и сохраняет уровень модификации за счет силы Богини Разрушения. Не действует на предметы выше +6.
*/
public static boolean isDestructionArmEnchantScroll(int itemId)
{
switch(itemId)
{
case 22222:
case 22224:
case 22226:
case 22228:
case 22230:
return true;
}
return false;
}
/**
* Эти свитки имеют 10% бонус шанса заточки
*/
public static boolean isItemMallEnchantScroll(int itemId)
{
switch(itemId)
{
case 22006: // Wpn D
case 22010: // Arm D
case 22007: // Wpn C
case 22011: // Arm C
case 22008: // Wpn B
case 22012: // Arm B
case 22009: // Wpn A
case 22013: // Arm A
case 20517: // Wpn S
case 20518: // Arm S
return true;
default:
return isAncientEnchantScroll(itemId);
}
}
/**
* Эти свитки имеют 100% шанс
*/
public static boolean isDivineEnchantScroll(int itemId)
{
switch(itemId)
{
case 22018: // Wpn B
case 22020: // Arm B
case 22019: // Wpn A
case 22021: // Arm A
case 20521: // Wpn S
case 20522: // Arm S
return true;
}
return false;
}
/**
* Они не используются официальным серером, но могут быть задействованы альтами
*/
public static boolean isCrystallEnchantScroll(int itemId)
{
switch(itemId)
{
case 957: // Wpn D
case 958: // Arm D
case 953: // Wpn C
case 954: // Arm C
case 949: // Wpn B
case 950: // Arm B
case 731: // Wpn A
case 732: // Arm A
case 961: // Wpn S
case 962: // Arm S
return true;
}
return false;
}
/**
* Возвращает список свитков, которые подходят для вещи.
*/
public static int[] getEnchantScrollId(ItemInstance item)
{
if(item.getTemplate().getType2() == ItemTemplate.TYPE2_WEAPON)
{
switch(item.getCrystalType().cry)
{
case ItemTemplate.CRYSTAL_NONE:
return new int[] { 13540 };
case ItemTemplate.CRYSTAL_D:
return new int[] { 955, 6575, 957, 22006, 22229 };
case ItemTemplate.CRYSTAL_C:
return new int[] { 951, 6573, 953, 22007, 22227 };
case ItemTemplate.CRYSTAL_B:
return new int[] { 947, 6571, 949, 22008, 22014, 22018, 22225 };
case ItemTemplate.CRYSTAL_A:
return new int[] { 729, 6569, 731, 22009, 22015, 22019, 22223 };
case ItemTemplate.CRYSTAL_S:
return new int[] { 959, 6577, 961, 20517, 20519, 20521, 22221 };
}
}
else if(item.getTemplate().getType2() == ItemTemplate.TYPE2_SHIELD_ARMOR || item.getTemplate().getType2() == ItemTemplate.TYPE2_ACCESSORY)
{
switch(item.getCrystalType().cry)
{
case ItemTemplate.CRYSTAL_NONE:
return new int[] { 21581, 21582 };
case ItemTemplate.CRYSTAL_D:
return new int[] { 956, 6576, 958, 22010, 22230 };
case ItemTemplate.CRYSTAL_C:
return new int[] { 952, 6574, 954, 22011, 22228 };
case ItemTemplate.CRYSTAL_B:
return new int[] { 948, 6572, 950, 22012, 22016, 22020, 22226 };
case ItemTemplate.CRYSTAL_A:
return new int[] { 730, 6570, 732, 22013, 22017, 22021, 22224 };
case ItemTemplate.CRYSTAL_S:
return new int[] { 960, 6578, 962, 20518, 20520, 20522, 22222 };
}
}
return new int[0];
}
public static final int[][] catalyst = {
// enchant catalyst list
{ 12362, 14078, 14702 }, // 0 - W D
{ 12363, 14079, 14703 }, // 1 - W C
{ 12364, 14080, 14704 }, // 2 - W B
{ 12365, 14081, 14705 }, // 3 - W A
{ 12366, 14082, 14706 }, // 4 - W S
{ 12367, 14083, 14707 }, // 5 - A D
{ 12368, 14084, 14708 }, // 6 - A C
{ 12369, 14085, 14709 }, // 7 - A B
{ 12370, 14086, 14710 }, // 8 - A A
{ 12371, 14087, 14711 }, // 9 - A S
};
/**
* Augmentation
*/
public static boolean isLifeStone(int itemId)
{
return itemId >= 8723 && itemId <= 8762 || itemId >= 9573 && itemId <= 9576 || itemId >= 10483 && itemId <= 10486 ||
itemId >= 14166 && itemId <= 14169 || itemId >= 16160 && itemId <= 16167;
}
public static boolean isAccessoryLifeStone(int itemId)
{
return itemId >= 12754 && itemId <= 12763 || itemId >= 12840 && itemId <= 12851 || itemId == 12821 || itemId == 12822 || itemId == 14008 ||
itemId == 16177 || itemId == 16178;
}
public static int getLifeStoneGrade(int itemId)
{
switch(itemId)
{
case 8723:
case 8724:
case 8725:
case 8726:
case 8727:
case 8728:
case 8729:
case 8730:
case 8731:
case 8732:
case 9573:
case 10483:
case 14166:
case 16160:
case 16164:
return 0;
case 8733:
case 8734:
case 8735:
case 8736:
case 8737:
case 8738:
case 8739:
case 8740:
case 8741:
case 8742:
case 9574:
case 10484:
case 14167:
case 16161:
case 16165:
return 1;
case 8743:
case 8744:
case 8745:
case 8746:
case 8747:
case 8748:
case 8749:
case 8750:
case 8751:
case 8752:
case 9575:
case 10485:
case 14168:
case 16162:
case 16166:
return 2;
case 8753:
case 8754:
case 8755:
case 8756:
case 8757:
case 8758:
case 8759:
case 8760:
case 8761:
case 8762:
case 9576:
case 10486:
case 14169:
case 16163:
case 16167:
return 3;
default:
return 0;
}
}
public static int getLifeStoneLevel(int itemId)
{
switch(itemId)
{
case 8723:
case 8733:
case 8743:
case 8753:
case 12754:
case 12840:
return 1;
case 8724:
case 8734:
case 8744:
case 8754:
case 12755:
case 12841:
return 2;
case 8725:
case 8735:
case 8745:
case 8755:
case 12756:
case 12842:
return 3;
case 8726:
case 8736:
case 8746:
case 8756:
case 12757:
case 12843:
return 4;
case 8727:
case 8737:
case 8747:
case 8757:
case 12758:
case 12844:
return 5;
case 8728:
case 8738:
case 8748:
case 8758:
case 12759:
case 12845:
return 6;
case 8729:
case 8739:
case 8749:
case 8759:
case 12760:
case 12846:
return 7;
case 8730:
case 8740:
case 8750:
case 8760:
case 12761:
case 12847:
return 8;
case 8731:
case 8741:
case 8751:
case 8761:
case 12762:
case 12848:
return 9;
case 8732:
case 8742:
case 8752:
case 8762:
case 12763:
case 12849:
return 10;
case 9573:
case 9574:
case 9575:
case 9576:
case 12821:
case 12850:
return 11;
case 10483:
case 10484:
case 10485:
case 10486:
case 12822:
case 12851:
return 12;
case 14008:
case 14166:
case 14167:
case 14168:
case 14169:
return 13;
case 16160:
case 16161:
case 16162:
case 16163:
case 16177:
return 14;
case 16164:
case 16165:
case 16166:
case 16167:
case 16178:
return 15;
default:
return 1;
}
}
/**
* Возвращает тип элемента для камня атрибуции
*
* @return значение элемента
*/
public static Element getEnchantAttributeStoneElement(int itemId, boolean isArmor)
{
Element element = Element.NONE;
switch(itemId)
{
case 9546:
case 9552:
case 10521:
element = Element.FIRE;
break;
case 9547:
case 9553:
case 10522:
element = Element.WATER;
break;
case 9548:
case 9554:
case 10523:
element = Element.EARTH;
break;
case 9549:
case 9555:
case 10524:
element = Element.WIND;
break;
case 9550:
case 9556:
case 10525:
element = Element.UNHOLY;
break;
case 9551:
case 9557:
case 10526:
element = Element.HOLY;
break;
}
if(isArmor)
{
return Element.getReverseElement(element);
}
return element;
}