Свернуть ↑
package Essence.gameserver.skills.funcs;
import Essence.gameserver.Config;
import Essence.gameserver.model.Player;
import Essence.gameserver.model.items.L2ItemInstance;
import Essence.gameserver.skills.Env;
import Essence.gameserver.skills.Stats;
import Essence.gameserver.templates.item.L2Item;
import Essence.gameserver.templates.item.L2Item.Grade;
import Essence.gameserver.templates.item.L2ItemType;
import Essence.gameserver.templates.item.L2WeaponType;
public class FuncEnchant extends Func
{
public FuncEnchant(Stats stat, int order, Object owner, double value)
{
super(stat, order, owner);
}
@Override
public void calc(Env env)
{
if (_cond != null && !_cond.test(env))
{
return;
}
L2ItemInstance item = (L2ItemInstance) _funcOwner;
if (item.getItem().getCrystalType() == Grade.NONE)
{
return;
}
int enchant = item.getEnchantLevel();
if (enchant <= 0)
{
return;
}
int overenchant = Math.max(0, enchant - 3);
/*if (env.character != null && env.character.isPlayer() && Config.ALT_OLY_ENCHANT > 0)
{
Player player = (Player) env.character;
if (player.isInOlympiadMode() && (enchant + overenchant) > Config.ALT_OLY_ENCHANT)
{
if (Config.ALT_OLY_ENCHANT > 3)
{
overenchant = Config.ALT_OLY_ENCHANT - 3;
}
else
{
overenchant = 0;
enchant = Config.ALT_OLY_ENCHANT;
}
}
}*/
//System.out.println(_stat);
if (_stat == Stats.MAGIC_DEFENCE || _stat == Stats.POWER_DEFENCE)
{
//System.out.println(env.value);
env.value += enchant + overenchant * 3;
return;
}
switch (_stat)
{
case SHIELD_DEFENCE:
case MAGIC_DEFENCE:
case POWER_DEFENCE:
{
//System.out.println(env.value);
env.value += enchant + overenchant * 2;
return;
}
case MAGIC_ATTACK:
{
switch (item.getItem().getCrystalType().cry)
{
case L2Item.CRYSTAL_S:
env.value += 4 * (enchant + overenchant);
break;
case L2Item.CRYSTAL_A:
env.value += 3 * (enchant + overenchant);
break;
case L2Item.CRYSTAL_B:
env.value += 3 * (enchant + overenchant);
break;
case L2Item.CRYSTAL_C:
env.value += 3 * (enchant + overenchant);
break;
case L2Item.CRYSTAL_D:
case L2Item.CRYSTAL_NONE:
env.value += 2 * (enchant + overenchant);
break;
}
//System.out.println(env.value);
return;
}
case POWER_ATTACK:
{
L2ItemType itemType = item.getItemType();
boolean isBow = itemType == L2WeaponType.BOW;
boolean isSword = (itemType == L2WeaponType.DUALFIST || itemType == L2WeaponType.DUAL || itemType == L2WeaponType.BIGSWORD || itemType == L2WeaponType.SWORD) && item.getItem().getBodyPart() == L2Item.SLOT_LR_HAND;
switch (item.getItem().getCrystalType().cry)
{
case L2Item.CRYSTAL_S:
if (isBow)
{
env.value += 10 * (enchant + overenchant);
}
else if (isSword)
{
env.value += 6 * (enchant + overenchant);
}
else
{
env.value += 5 * (enchant + overenchant);
}
break;
case L2Item.CRYSTAL_A:
if (isBow)
{
env.value += 8 * (enchant + overenchant);
}
else if (isSword)
{
env.value += 5 * (enchant + overenchant);
}
else
{
env.value += 4 * (enchant + overenchant);
}
break;
case L2Item.CRYSTAL_B:
case L2Item.CRYSTAL_C:
if (isBow)
{
env.value += 6 * (enchant + overenchant);
}
else if (isSword)
{
env.value += 4 * (enchant + overenchant);
}
else
{
env.value += 3 * (enchant + overenchant);
}
break;
case L2Item.CRYSTAL_D:
case L2Item.CRYSTAL_NONE:
if (isBow)
{
env.value += 4 * (enchant + overenchant);
}
else
{
env.value += 2 * (enchant + overenchant);
}
break;
}
//System.out.println(env.value);
}
default:
break;
}
}
}