Recipes rework.
Adapted from: L2jUnity free files.
This commit is contained in:
48107
L2J_Mobius_4.0_GrandCrusade/dist/game/data/Recipes.xml
vendored
48107
L2J_Mobius_4.0_GrandCrusade/dist/game/data/Recipes.xml
vendored
File diff suppressed because it is too large
Load Diff
@@ -90,12 +90,16 @@ public final class EffectMasterHandler
|
||||
EffectHandler.getInstance().registerHandler("CpHealOverTime", CpHealOverTime::new);
|
||||
EffectHandler.getInstance().registerHandler("CpHealPercent", CpHealPercent::new);
|
||||
EffectHandler.getInstance().registerHandler("CpRegen", CpRegen::new);
|
||||
EffectHandler.getInstance().registerHandler("CraftingCritical", CraftingCritical::new);
|
||||
EffectHandler.getInstance().registerHandler("CreateCommonItem", CreateCommonItem::new);
|
||||
EffectHandler.getInstance().registerHandler("CreateItem", CreateItem::new);
|
||||
EffectHandler.getInstance().registerHandler("CreateItemRandom", CreateItemRandom::new);
|
||||
EffectHandler.getInstance().registerHandler("CriticalDamage", CriticalDamage::new);
|
||||
EffectHandler.getInstance().registerHandler("CriticalDamagePosition", CriticalDamagePosition::new);
|
||||
EffectHandler.getInstance().registerHandler("CriticalRate", CriticalRate::new);
|
||||
EffectHandler.getInstance().registerHandler("CriticalRatePositionBonus", CriticalRatePositionBonus::new);
|
||||
EffectHandler.getInstance().registerHandler("CrystalGradeModify", CrystalGradeModify::new);
|
||||
EffectHandler.getInstance().registerHandler("Crystallize", Crystallize::new);
|
||||
EffectHandler.getInstance().registerHandler("CubicMastery", CubicMastery::new);
|
||||
EffectHandler.getInstance().registerHandler("DamageBlock", DamageBlock::new);
|
||||
EffectHandler.getInstance().registerHandler("DamageShield", DamageShield::new);
|
||||
@@ -265,6 +269,7 @@ public final class EffectMasterHandler
|
||||
EffectHandler.getInstance().registerHandler("ReflectSkill", ReflectSkill::new);
|
||||
EffectHandler.getInstance().registerHandler("RefuelAirship", RefuelAirship::new);
|
||||
EffectHandler.getInstance().registerHandler("Relax", Relax::new);
|
||||
EffectHandler.getInstance().registerHandler("RemoveEquipPenalty", RemoveEquipPenalty::new);
|
||||
EffectHandler.getInstance().registerHandler("ResetInstanceEntry", ResetInstanceEntry::new);
|
||||
EffectHandler.getInstance().registerHandler("ResistAbnormalByCategory", ResistAbnormalByCategory::new);
|
||||
EffectHandler.getInstance().registerHandler("ResistDDMagic", ResistDDMagic::new);
|
||||
|
31
L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/CraftingCritical.java
vendored
Normal file
31
L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/CraftingCritical.java
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package handlers.effecthandlers;
|
||||
|
||||
import com.l2jmobius.gameserver.model.StatsSet;
|
||||
import com.l2jmobius.gameserver.model.stats.Stats;
|
||||
|
||||
/**
|
||||
* @author Nik
|
||||
*/
|
||||
public class CraftingCritical extends AbstractStatAddEffect
|
||||
{
|
||||
public CraftingCritical(StatsSet params)
|
||||
{
|
||||
super(params, Stats.CRAFTING_CRITICAL);
|
||||
}
|
||||
}
|
64
L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/CreateCommonItem.java
vendored
Normal file
64
L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/CreateCommonItem.java
vendored
Normal file
@@ -0,0 +1,64 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package handlers.effecthandlers;
|
||||
|
||||
import com.l2jmobius.gameserver.model.StatsSet;
|
||||
import com.l2jmobius.gameserver.model.actor.L2Character;
|
||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jmobius.gameserver.model.effects.AbstractEffect;
|
||||
import com.l2jmobius.gameserver.model.skills.BuffInfo;
|
||||
import com.l2jmobius.gameserver.model.skills.Skill;
|
||||
|
||||
/**
|
||||
* An effect that allows the player to create common recipe items up to a certain level.
|
||||
* @author Nik
|
||||
*/
|
||||
public final class CreateCommonItem extends AbstractEffect
|
||||
{
|
||||
private final int _recipeLevel;
|
||||
|
||||
public CreateCommonItem(StatsSet params)
|
||||
{
|
||||
_recipeLevel = params.getInt("value");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canStart(BuffInfo info)
|
||||
{
|
||||
return info.getEffected().isPlayer();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart(L2Character effector, L2Character effected, Skill skill)
|
||||
{
|
||||
final L2PcInstance player = effected.getActingPlayer();
|
||||
if (player != null)
|
||||
{
|
||||
player.setCreateCommonItemLevel(_recipeLevel);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onExit(BuffInfo info)
|
||||
{
|
||||
final L2PcInstance player = info.getEffected().getActingPlayer();
|
||||
if (player != null)
|
||||
{
|
||||
player.setCreateCommonItemLevel(0);
|
||||
}
|
||||
}
|
||||
}
|
64
L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/CreateItem.java
vendored
Normal file
64
L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/CreateItem.java
vendored
Normal file
@@ -0,0 +1,64 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package handlers.effecthandlers;
|
||||
|
||||
import com.l2jmobius.gameserver.model.StatsSet;
|
||||
import com.l2jmobius.gameserver.model.actor.L2Character;
|
||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jmobius.gameserver.model.effects.AbstractEffect;
|
||||
import com.l2jmobius.gameserver.model.skills.BuffInfo;
|
||||
import com.l2jmobius.gameserver.model.skills.Skill;
|
||||
|
||||
/**
|
||||
* An effect that allows the player to create dwarven recipe items up to a certain level.
|
||||
* @author Nik
|
||||
*/
|
||||
public final class CreateItem extends AbstractEffect
|
||||
{
|
||||
private final int _recipeLevel;
|
||||
|
||||
public CreateItem(StatsSet params)
|
||||
{
|
||||
_recipeLevel = params.getInt("value");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canStart(BuffInfo info)
|
||||
{
|
||||
return info.getEffected().isPlayer();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart(L2Character effector, L2Character effected, Skill skill)
|
||||
{
|
||||
final L2PcInstance player = effected.getActingPlayer();
|
||||
if (player != null)
|
||||
{
|
||||
player.setCreateItemLevel(_recipeLevel);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onExit(BuffInfo info)
|
||||
{
|
||||
final L2PcInstance player = info.getEffected().getActingPlayer();
|
||||
if (player != null)
|
||||
{
|
||||
player.setCreateItemLevel(0);
|
||||
}
|
||||
}
|
||||
}
|
@@ -29,11 +29,11 @@ import com.l2jmobius.gameserver.model.skills.Skill;
|
||||
*/
|
||||
public final class CrystalGradeModify extends AbstractEffect
|
||||
{
|
||||
private final int _grade;
|
||||
private final int _amount;
|
||||
|
||||
public CrystalGradeModify(StatsSet params)
|
||||
{
|
||||
_grade = params.getInt("grade", 0);
|
||||
_amount = params.getInt("_amount", 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -45,7 +45,7 @@ public final class CrystalGradeModify extends AbstractEffect
|
||||
@Override
|
||||
public void onStart(L2Character effector, L2Character effected, Skill skill)
|
||||
{
|
||||
effected.getActingPlayer().setExpertisePenaltyBonus(_grade);
|
||||
effected.getActingPlayer().setExpertisePenaltyBonus(_amount);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
65
L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/Crystallize.java
vendored
Normal file
65
L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/Crystallize.java
vendored
Normal file
@@ -0,0 +1,65 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package handlers.effecthandlers;
|
||||
|
||||
import com.l2jmobius.gameserver.enums.ItemGrade;
|
||||
import com.l2jmobius.gameserver.model.StatsSet;
|
||||
import com.l2jmobius.gameserver.model.actor.L2Character;
|
||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jmobius.gameserver.model.effects.AbstractEffect;
|
||||
import com.l2jmobius.gameserver.model.skills.BuffInfo;
|
||||
import com.l2jmobius.gameserver.model.skills.Skill;
|
||||
|
||||
/**
|
||||
* An effect that allows the player to crystallize items up to a certain grade.
|
||||
* @author Nik
|
||||
*/
|
||||
public final class Crystallize extends AbstractEffect
|
||||
{
|
||||
private final ItemGrade _grade;
|
||||
|
||||
public Crystallize(StatsSet params)
|
||||
{
|
||||
_grade = params.getEnum("grade", ItemGrade.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canStart(BuffInfo info)
|
||||
{
|
||||
return info.getEffected().isPlayer();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart(L2Character effector, L2Character effected, Skill skill)
|
||||
{
|
||||
final L2PcInstance player = effected.getActingPlayer();
|
||||
if (player != null)
|
||||
{
|
||||
player.setCrystallizeGrade(_grade);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onExit(BuffInfo info)
|
||||
{
|
||||
final L2PcInstance player = info.getEffected().getActingPlayer();
|
||||
if (player != null)
|
||||
{
|
||||
player.setCrystallizeGrade(null);
|
||||
}
|
||||
}
|
||||
}
|
@@ -16,7 +16,6 @@
|
||||
*/
|
||||
package handlers.effecthandlers;
|
||||
|
||||
import com.l2jmobius.gameserver.RecipeController;
|
||||
import com.l2jmobius.gameserver.enums.PrivateStoreType;
|
||||
import com.l2jmobius.gameserver.model.StatsSet;
|
||||
import com.l2jmobius.gameserver.model.actor.L2Character;
|
||||
@@ -25,6 +24,7 @@ import com.l2jmobius.gameserver.model.effects.AbstractEffect;
|
||||
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
|
||||
import com.l2jmobius.gameserver.model.skills.Skill;
|
||||
import com.l2jmobius.gameserver.network.SystemMessageId;
|
||||
import com.l2jmobius.gameserver.network.serverpackets.RecipeBookItemList;
|
||||
|
||||
/**
|
||||
* Open Common Recipe Book effect implementation.
|
||||
@@ -45,18 +45,24 @@ public final class OpenCommonRecipeBook extends AbstractEffect
|
||||
@Override
|
||||
public void instant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
|
||||
{
|
||||
if (!effector.isPlayer())
|
||||
final L2PcInstance casterPlayer = effector.getActingPlayer();
|
||||
if (casterPlayer == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
final L2PcInstance player = effector.getActingPlayer();
|
||||
if (player.getPrivateStoreType() != PrivateStoreType.NONE)
|
||||
if (casterPlayer.getPrivateStoreType() == PrivateStoreType.MANUFACTURE)
|
||||
{
|
||||
player.sendPacket(SystemMessageId.ITEM_CREATION_IS_NOT_POSSIBLE_WHILE_ENGAGED_IN_A_TRADE);
|
||||
casterPlayer.sendPacket(SystemMessageId.YOU_MAY_NOT_ALTER_YOUR_RECIPE_BOOK_WHILE_ENGAGED_IN_MANUFACTURING);
|
||||
return;
|
||||
}
|
||||
|
||||
RecipeController.getInstance().requestBookOpen(player, false);
|
||||
if (casterPlayer.isProcessingTransaction())
|
||||
{
|
||||
casterPlayer.sendPacket(SystemMessageId.ITEM_CREATION_IS_NOT_POSSIBLE_WHILE_ENGAGED_IN_A_TRADE);
|
||||
return;
|
||||
}
|
||||
|
||||
casterPlayer.sendPacket(new RecipeBookItemList(casterPlayer, false));
|
||||
}
|
||||
}
|
||||
|
@@ -16,7 +16,6 @@
|
||||
*/
|
||||
package handlers.effecthandlers;
|
||||
|
||||
import com.l2jmobius.gameserver.RecipeController;
|
||||
import com.l2jmobius.gameserver.enums.PrivateStoreType;
|
||||
import com.l2jmobius.gameserver.model.StatsSet;
|
||||
import com.l2jmobius.gameserver.model.actor.L2Character;
|
||||
@@ -25,6 +24,7 @@ import com.l2jmobius.gameserver.model.effects.AbstractEffect;
|
||||
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
|
||||
import com.l2jmobius.gameserver.model.skills.Skill;
|
||||
import com.l2jmobius.gameserver.network.SystemMessageId;
|
||||
import com.l2jmobius.gameserver.network.serverpackets.RecipeBookItemList;
|
||||
|
||||
/**
|
||||
* Open Dwarf Recipe Book effect implementation.
|
||||
@@ -45,18 +45,24 @@ public final class OpenDwarfRecipeBook extends AbstractEffect
|
||||
@Override
|
||||
public void instant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
|
||||
{
|
||||
if (!effector.isPlayer())
|
||||
final L2PcInstance casterPlayer = effector.getActingPlayer();
|
||||
if (casterPlayer == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
final L2PcInstance player = effector.getActingPlayer();
|
||||
if (player.getPrivateStoreType() != PrivateStoreType.NONE)
|
||||
if (casterPlayer.getPrivateStoreType() == PrivateStoreType.MANUFACTURE)
|
||||
{
|
||||
player.sendPacket(SystemMessageId.ITEM_CREATION_IS_NOT_POSSIBLE_WHILE_ENGAGED_IN_A_TRADE);
|
||||
casterPlayer.sendPacket(SystemMessageId.YOU_MAY_NOT_ALTER_YOUR_RECIPE_BOOK_WHILE_ENGAGED_IN_MANUFACTURING);
|
||||
return;
|
||||
}
|
||||
|
||||
RecipeController.getInstance().requestBookOpen(player, true);
|
||||
if (casterPlayer.isProcessingTransaction())
|
||||
{
|
||||
casterPlayer.sendPacket(SystemMessageId.ITEM_CREATION_IS_NOT_POSSIBLE_WHILE_ENGAGED_IN_A_TRADE);
|
||||
return;
|
||||
}
|
||||
|
||||
casterPlayer.sendPacket(new RecipeBookItemList(casterPlayer, true));
|
||||
}
|
||||
}
|
||||
|
@@ -0,0 +1,65 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package handlers.effecthandlers;
|
||||
|
||||
import com.l2jmobius.gameserver.model.StatsSet;
|
||||
import com.l2jmobius.gameserver.model.actor.L2Character;
|
||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jmobius.gameserver.model.effects.AbstractEffect;
|
||||
import com.l2jmobius.gameserver.model.items.type.CrystalType;
|
||||
import com.l2jmobius.gameserver.model.skills.BuffInfo;
|
||||
import com.l2jmobius.gameserver.model.skills.Skill;
|
||||
|
||||
/**
|
||||
* An effect that removes equipment grade penalty. Its the base effect for the grade penalty mechanics.
|
||||
* @author Nik
|
||||
*/
|
||||
public final class RemoveEquipPenalty extends AbstractEffect
|
||||
{
|
||||
private final CrystalType _grade;
|
||||
|
||||
public RemoveEquipPenalty(StatsSet params)
|
||||
{
|
||||
_grade = params.getEnum("grade", CrystalType.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canStart(BuffInfo info)
|
||||
{
|
||||
return info.getEffected().isPlayer();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart(L2Character effector, L2Character effected, Skill skill)
|
||||
{
|
||||
final L2PcInstance player = effected.getActingPlayer();
|
||||
if (player != null)
|
||||
{
|
||||
player.setExpertiseLevel(_grade);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onExit(BuffInfo info)
|
||||
{
|
||||
final L2PcInstance player = info.getEffected().getActingPlayer();
|
||||
if (player != null)
|
||||
{
|
||||
player.setExpertiseLevel(null);
|
||||
}
|
||||
}
|
||||
}
|
@@ -42,7 +42,7 @@ public class CharmOfCourage implements IItemHandler
|
||||
final L2PcInstance activeChar = playable.getActingPlayer();
|
||||
|
||||
int level = activeChar.getLevel();
|
||||
final int itemLevel = item.getItem().getCrystalType().getId();
|
||||
final int itemLevel = item.getItem().getCrystalType().getLevel();
|
||||
|
||||
if (level < 20)
|
||||
{
|
||||
|
@@ -18,9 +18,9 @@ package handlers.itemhandlers;
|
||||
|
||||
import com.l2jmobius.gameserver.data.xml.impl.RecipeData;
|
||||
import com.l2jmobius.gameserver.handler.IItemHandler;
|
||||
import com.l2jmobius.gameserver.model.L2RecipeList;
|
||||
import com.l2jmobius.gameserver.model.actor.L2Playable;
|
||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jmobius.gameserver.model.holders.RecipeHolder;
|
||||
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
|
||||
import com.l2jmobius.gameserver.network.SystemMessageId;
|
||||
import com.l2jmobius.gameserver.network.serverpackets.SystemMessage;
|
||||
@@ -40,15 +40,16 @@ public class Recipes implements IItemHandler
|
||||
}
|
||||
|
||||
final L2PcInstance activeChar = playable.getActingPlayer();
|
||||
if (activeChar.isInCraftMode())
|
||||
if (activeChar.isCrafting())
|
||||
{
|
||||
activeChar.sendPacket(SystemMessageId.YOU_MAY_NOT_ALTER_YOUR_RECIPE_BOOK_WHILE_ENGAGED_IN_MANUFACTURING);
|
||||
return false;
|
||||
}
|
||||
|
||||
final L2RecipeList rp = RecipeData.getInstance().getRecipeByItemId(item.getId());
|
||||
final RecipeHolder rp = RecipeData.getInstance().getRecipeByRecipeItemId(item.getId());
|
||||
if (rp == null)
|
||||
{
|
||||
activeChar.sendPacket(SystemMessageId.THE_RECIPE_IS_INCORRECT);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -63,15 +64,15 @@ public class Recipes implements IItemHandler
|
||||
boolean recipeLimit = false;
|
||||
if (rp.isDwarvenRecipe())
|
||||
{
|
||||
canCraft = activeChar.hasDwarvenCraft();
|
||||
recipeLevel = (rp.getLevel() > activeChar.getDwarvenCraft());
|
||||
recipeLimit = (activeChar.getDwarvenRecipeBook().length >= activeChar.getDwarfRecipeLimit());
|
||||
canCraft = activeChar.getCreateItemLevel() > 0;
|
||||
recipeLevel = (rp.getLevel() > activeChar.getCreateItemLevel());
|
||||
recipeLimit = (activeChar.getDwarvenRecipeBook().size() >= activeChar.getDwarfRecipeLimit());
|
||||
}
|
||||
else
|
||||
{
|
||||
canCraft = activeChar.hasCommonCraft();
|
||||
recipeLevel = (rp.getLevel() > activeChar.getCommonCraft());
|
||||
recipeLimit = (activeChar.getCommonRecipeBook().length >= activeChar.getCommonRecipeLimit());
|
||||
canCraft = activeChar.getCreateCommonItemLevel() > 0;
|
||||
recipeLevel = (rp.getLevel() > activeChar.getCreateCommonItemLevel());
|
||||
recipeLimit = (activeChar.getCommonRecipeBook().size() >= activeChar.getCommonRecipeLimit());
|
||||
}
|
||||
|
||||
if (!canCraft)
|
||||
|
@@ -119,7 +119,7 @@ public final class SocialAction implements IPlayerActionHandler
|
||||
}
|
||||
|
||||
SystemMessage sm;
|
||||
if (player.isInStoreMode() || player.isInCraftMode())
|
||||
if (player.isInStoreMode() || player.isCrafting())
|
||||
{
|
||||
sm = SystemMessage.getSystemMessage(SystemMessageId.C1_IS_IN_PRIVATE_STORE_MODE_OR_IN_A_BATTLE_AND_CANNOT_BE_REQUESTED_FOR_A_COUPLE_ACTION);
|
||||
sm.addPcName(player);
|
||||
@@ -198,7 +198,7 @@ public final class SocialAction implements IPlayerActionHandler
|
||||
|
||||
// Checks for partner.
|
||||
final L2PcInstance partner = target.getActingPlayer();
|
||||
if (partner.isInStoreMode() || partner.isInCraftMode())
|
||||
if (partner.isInStoreMode() || partner.isCrafting())
|
||||
{
|
||||
sm = SystemMessage.getSystemMessage(SystemMessageId.C1_IS_IN_PRIVATE_STORE_MODE_OR_IN_A_BATTLE_AND_CANNOT_BE_REQUESTED_FOR_A_COUPLE_ACTION);
|
||||
sm.addPcName(partner);
|
||||
|
@@ -2727,6 +2727,27 @@
|
||||
</magicLvl>
|
||||
<operateType>P</operateType>
|
||||
<magicCriticalRate>5</magicCriticalRate>
|
||||
<effects>
|
||||
<effect name="CreateItem">
|
||||
<value>
|
||||
<value level="1">1</value>
|
||||
<value level="2">2</value>
|
||||
<value level="3">3</value>
|
||||
<value level="4">4</value>
|
||||
<value level="5">5</value>
|
||||
<value level="6">6</value>
|
||||
<value level="7">7</value>
|
||||
<value level="8">8</value>
|
||||
<value level="9">9</value>
|
||||
<value level="10">10</value>
|
||||
<value level="11">11</value>
|
||||
<value level="12">12</value>
|
||||
<value level="13">13</value>
|
||||
<value level="14">14</value>
|
||||
<value level="15">15</value>
|
||||
</value>
|
||||
</effect>
|
||||
</effects>
|
||||
</skill>
|
||||
<skill id="173" toLevel="2" name="Acrobatics">
|
||||
<!-- Confirmed CT2.5 -->
|
||||
|
@@ -2434,6 +2434,22 @@
|
||||
</magicLvl>
|
||||
<operateType>P</operateType>
|
||||
<magicCriticalRate>5</magicCriticalRate>
|
||||
<effects>
|
||||
<effect name="RemoveEquipPenalty">
|
||||
<grade>
|
||||
<value level="1">D</value>
|
||||
<value level="2">C</value>
|
||||
<value level="3">B</value>
|
||||
<value level="4">A</value>
|
||||
<value level="5">S</value>
|
||||
<value level="6">S80</value>
|
||||
<value level="7">S80</value>
|
||||
<value level="8">R</value>
|
||||
<value level="9">R95</value>
|
||||
<value level="10">R99</value>
|
||||
</grade>
|
||||
</effect>
|
||||
</effects>
|
||||
</skill>
|
||||
<skill id="244" toLevel="3" name="Armor Mastery">
|
||||
<!-- Confirmed CT2.5 -->
|
||||
@@ -2615,6 +2631,18 @@
|
||||
</magicLvl>
|
||||
<operateType>P</operateType>
|
||||
<magicCriticalRate>5</magicCriticalRate>
|
||||
<effects>
|
||||
<effect name="Crystallize">
|
||||
<grade>
|
||||
<value level="1">D</value>
|
||||
<value level="2">C</value>
|
||||
<value level="3">B</value>
|
||||
<value level="4">A</value>
|
||||
<value level="5">S</value>
|
||||
<value level="6">R</value>
|
||||
</grade>
|
||||
</effect>
|
||||
</effects>
|
||||
</skill>
|
||||
<skill id="249" toLevel="42" name="Weapon Mastery">
|
||||
<!-- Confirmed CT2.5 -->
|
||||
|
@@ -666,6 +666,22 @@
|
||||
</magicLvl>
|
||||
<operateType>P</operateType>
|
||||
<magicCriticalRate>5</magicCriticalRate>
|
||||
<effects>
|
||||
<effect name="CreateCommonItem">
|
||||
<value>
|
||||
<value level="1">1</value>
|
||||
<value level="2">2</value>
|
||||
<value level="3">3</value>
|
||||
<value level="4">4</value>
|
||||
<value level="5">5</value>
|
||||
<value level="6">6</value>
|
||||
<value level="7">7</value>
|
||||
<value level="8">8</value>
|
||||
<value level="9">9</value>
|
||||
<value level="10">10</value>
|
||||
</value>
|
||||
</effect>
|
||||
</effects>
|
||||
</skill>
|
||||
<skill id="1321" toLevel="1" name="Dwarven Craft">
|
||||
<!-- Confirmed CT2.5 -->
|
||||
|
@@ -509,10 +509,25 @@
|
||||
</effects>
|
||||
</skill>
|
||||
<skill id="10312" toLevel="4" name="Crafting Mastery">
|
||||
<!-- AUTO GENERATED SKILL -->
|
||||
<!-- There is a small chance that the item quantity will double upon crafting. Critical level 1. -->
|
||||
<icon>icon.skill10312</icon>
|
||||
<magicLvl>
|
||||
<value level="1">85</value>
|
||||
<value level="2">90</value>
|
||||
<value level="3">95</value>
|
||||
<value level="4">99</value>
|
||||
</magicLvl>
|
||||
<operateType>P</operateType>
|
||||
<effects>
|
||||
<effect name="CraftingCritical">
|
||||
<amount>
|
||||
<value level="1">2.4</value>
|
||||
<value level="2">3.8</value>
|
||||
<value level="3">4.2</value>
|
||||
<value level="4">5.4</value>
|
||||
</amount>
|
||||
</effect>
|
||||
</effects>
|
||||
</skill>
|
||||
<skill id="10313" toLevel="4" name="Infinite Rush">
|
||||
<!-- Rush toward the frontal enemies to inflict Shock for 9 sec. Requires a sword, blunt, spear, fist weapon, dual blunt, or dual sword. -->
|
||||
|
@@ -1268,10 +1268,10 @@
|
||||
</passiveConditions>
|
||||
<effects>
|
||||
<effect name="CrystalGradeModify">
|
||||
<grade>
|
||||
<amount>
|
||||
<value level="1">3</value>
|
||||
<value level="2">5</value>
|
||||
</grade>
|
||||
</amount>
|
||||
</effect>
|
||||
</effects>
|
||||
</skill>
|
||||
|
@@ -1320,13 +1320,13 @@
|
||||
</passiveConditions>
|
||||
<effects>
|
||||
<effect name="CrystalGradeModify">
|
||||
<grade>
|
||||
<amount>
|
||||
<value level="1">1</value>
|
||||
<value level="2">2</value>
|
||||
<value level="3">3</value>
|
||||
<value level="4">4</value>
|
||||
<value level="5">5</value>
|
||||
</grade>
|
||||
</amount>
|
||||
</effect>
|
||||
</effects>
|
||||
</skill>
|
||||
|
@@ -59,12 +59,16 @@ CpHealOverTime: Increases current CP by a given amount over time.
|
||||
CpHealPercent: Increases current CP by a given percentage amount.
|
||||
Cp: Increases current CP by a static amount.
|
||||
CpRegen: CP Regeneration stat.
|
||||
CraftingCritical: Crafting critical stat.
|
||||
CreateCommonItem: Allows the player to create common recipe items up to a certain level.
|
||||
CreateItem: Allows the player to create dwarven recipe items up to a certain level.
|
||||
CreateItemRandom: Creates an item randomly from a given list. All extractable items with chances to get different items are using this effect.
|
||||
CriticalDamage: Critical Damage stat.
|
||||
CriticalDamagePosition: Critical Damage depending on position stat.
|
||||
CriticalRate: Critical Rate stat.
|
||||
CriticalRatePositionBonus: Critical Rate depending on position stat. Ignores the critical rate cap of 500.
|
||||
CrystalGradeModify: Sets your Expertise Grade level. With this effect you can make lv. 40 player (C Grade) to wear S grade.
|
||||
Crystallize: Allows the player to crystallize items up to a certain grade.
|
||||
CubicMastery: Max cubics stat.
|
||||
DamageBlock: Blocks Hp or Mp damage/heal.
|
||||
DamageShield: Reflect damage percentage stat.
|
||||
@@ -233,6 +237,7 @@ ReflectMagic: Deflects magical damage back to the attacker.
|
||||
ReflectSkill: Deflects physical/magical debuffs back to the attacker.
|
||||
RefuelAirship: Increases Airship's fuel.
|
||||
Relax: Sits down and increases HP regeneration until full.
|
||||
RemoveEquipPenalty: Removes equipment grade penalty. Its the base effect for the grade penalty mechanics.
|
||||
ResetInstanceEntry: Resets instance re-entry time. (l2jmobius)
|
||||
ResistAbnormalByCategory: Buff/debuff resist stat.
|
||||
ResistDDMagic: Magic resist stat (magic attack 50% effective or 1 damage)
|
||||
|
@@ -2,88 +2,68 @@
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
<xs:element name="list">
|
||||
<xs:complexType>
|
||||
<xs:sequence minOccurs="1" maxOccurs="1">
|
||||
<xs:element name="item" minOccurs="1" maxOccurs="unbounded">
|
||||
<xs:sequence>
|
||||
<xs:element name="recipe" maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:sequence minOccurs="1" maxOccurs="1">
|
||||
<xs:element name="altStatChange" minOccurs="0" maxOccurs="1">
|
||||
<xs:sequence>
|
||||
<xs:element name="materials">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="name" use="required">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:token">
|
||||
<xs:enumeration value="GIM" />
|
||||
<xs:enumeration value="SP" />
|
||||
<xs:enumeration value="XP" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="value" type="xs:positiveInteger" use="required" />
|
||||
<xs:sequence>
|
||||
<xs:element name="item" maxOccurs="unbounded" minOccurs="0">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="id" type="xs:int" />
|
||||
<xs:attribute name="count" type="xs:long" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="ingredient" minOccurs="1" maxOccurs="unbounded">
|
||||
<xs:element name="product">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="count" type="xs:positiveInteger" use="required" />
|
||||
<xs:attribute name="id" type="xs:positiveInteger" use="required" />
|
||||
<xs:sequence>
|
||||
<xs:element name="item" maxOccurs="unbounded" minOccurs="1">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="id" type="xs:int" />
|
||||
<xs:attribute name="count" type="xs:long" />
|
||||
<xs:attribute name="chance" type="xs:double" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="production" minOccurs="1" maxOccurs="1">
|
||||
<xs:element name="npcFee" maxOccurs="unbounded" minOccurs="0">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="count" type="xs:positiveInteger" use="required" />
|
||||
<xs:attribute name="id" type="xs:positiveInteger" use="required" />
|
||||
<xs:sequence>
|
||||
<xs:element name="item" maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="id" type="xs:int" />
|
||||
<xs:attribute name="count" type="xs:long" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="productionRare" minOccurs="0" maxOccurs="1">
|
||||
<xs:element name="statUse">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="count" type="xs:positiveInteger" use="required" />
|
||||
<xs:attribute name="id" type="xs:positiveInteger" use="required" />
|
||||
<xs:attribute name="rarity" type="xs:positiveInteger" use="required" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="statUse" minOccurs="1" maxOccurs="1">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="name" use="required">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:token">
|
||||
<xs:enumeration value="HP" />
|
||||
<xs:enumeration value="MP" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="value" type="xs:positiveInteger" use="required" />
|
||||
<xs:sequence>
|
||||
<xs:element name="stat">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="name" type="xs:string"></xs:attribute>
|
||||
<xs:attribute name="val" type="xs:double" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="craftLevel" use="required">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:integer">
|
||||
<xs:minInclusive value="1" />
|
||||
<xs:maxInclusive value="14" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="id" type="xs:positiveInteger" use="required" />
|
||||
<xs:attribute name="name" type="xs:normalizedString" use="required" />
|
||||
<xs:attribute name="recipeId" type="xs:positiveInteger" use="required" />
|
||||
<xs:attribute name="successRate" use="required">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:integer">
|
||||
<xs:enumeration value="10" />
|
||||
<xs:enumeration value="25" />
|
||||
<xs:enumeration value="60" />
|
||||
<xs:enumeration value="70" />
|
||||
<xs:enumeration value="95" />
|
||||
<xs:enumeration value="100" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="type" use="required">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:token">
|
||||
<xs:enumeration value="common" />
|
||||
<xs:enumeration value="dwarven" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="id" type="xs:int" use="required" />
|
||||
<xs:attribute name="name" type="xs:string" use="required" />
|
||||
<xs:attribute name="level" type="xs:int" use="required" />
|
||||
<xs:attribute name="itemId" type="xs:int" use="required" />
|
||||
<xs:attribute name="successRate" type="xs:double" use="required" />
|
||||
<xs:attribute name="isCommonRecipe" type="xs:string" use="required" />
|
||||
<xs:attribute name="maxOffering" type="xs:long" use="optional" />
|
||||
<xs:attribute name="maxOfferingBonus" type="xs:double" use="optional" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
|
@@ -1197,6 +1197,21 @@
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="grade">
|
||||
<xs:complexType mixed="true">
|
||||
<xs:sequence minOccurs="0">
|
||||
<xs:element maxOccurs="unbounded" name="value">
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute name="level" type="xs:unsignedByte" use="required" />
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="side" type="xs:string" />
|
||||
<xs:element name="PARALYZE">
|
||||
<xs:complexType mixed="true">
|
||||
@@ -2037,21 +2052,6 @@
|
||||
<xs:element name="hp" type="xs:unsignedByte" />
|
||||
<xs:element name="mp" type="xs:unsignedByte" />
|
||||
<xs:element name="cp" type="xs:unsignedByte" />
|
||||
<xs:element name="grade">
|
||||
<xs:complexType mixed="true">
|
||||
<xs:sequence minOccurs="0">
|
||||
<xs:element maxOccurs="unbounded" name="value">
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:unsignedByte">
|
||||
<xs:attribute name="level" type="xs:unsignedByte" use="required" />
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="xp" type="xs:unsignedInt" />
|
||||
<xs:element name="ACCURACY_COMBAT">
|
||||
<xs:complexType mixed="true">
|
||||
|
Reference in New Issue
Block a user