diff --git a/datapack_development/data/scripts/handlers/MasterHandler.java b/datapack_development/data/scripts/handlers/MasterHandler.java index f01206a03ba89afa577d7ddc4bb65c3237083006..7fe2acc5a532fe4e2ba0e60b458a42504ada6423 100644 --- a/datapack_development/data/scripts/handlers/MasterHandler.java +++ b/datapack_development/data/scripts/handlers/MasterHandler.java @@ -121,14 +121,12 @@ public class MasterHandler private static void loadItemHandlers() { - ItemHandler.getInstance().registerItemHandler(new ScrollOfEscape()); ItemHandler.getInstance().registerItemHandler(new ScrollOfResurrection()); ItemHandler.getInstance().registerItemHandler(new SoulShots()); ItemHandler.getInstance().registerItemHandler(new SpiritShot()); ItemHandler.getInstance().registerItemHandler(new BlessedSpiritShot()); ItemHandler.getInstance().registerItemHandler(new BeastSoulShot()); ItemHandler.getInstance().registerItemHandler(new BeastSpiritShot()); - ItemHandler.getInstance().registerItemHandler(new Key()); ItemHandler.getInstance().registerItemHandler(new PaganKeys()); ItemHandler.getInstance().registerItemHandler(new Maps()); ItemHandler.getInstance().registerItemHandler(new Potions()); diff --git a/datapack_development/data/scripts/handlers/itemhandlers/BeastSpiritShot.java b/datapack_development/data/scripts/handlers/itemhandlers/BeastSpiritShot.java index ad95bb166ff54d965c954ebf319d60a4611fe1f9..61dcdf15d4a8955b7ccea3865bd988c1b2b72cc6 100644 --- a/datapack_development/data/scripts/handlers/itemhandlers/BeastSpiritShot.java +++ b/datapack_development/data/scripts/handlers/itemhandlers/BeastSpiritShot.java @@ -58,13 +58,6 @@ public class BeastSpiritShot implements IItemHandler return; } - // Blessed Beast Spirit Shot cannot be used in olympiad. - if ((item.getItemId() == 6647 || item.getItemId() == 20334) && activeOwner.isInOlympiadMode()) - { - activeOwner.sendPacket(new SystemMessage(SystemMessageId.THIS_ITEM_IS_NOT_AVAILABLE_FOR_THE_OLYMPIAD_EVENT)); - return; - } - L2Summon activePet = activeOwner.getPet(); if (activePet == null) diff --git a/datapack_development/data/scripts/handlers/itemhandlers/CharChangePotions.java b/datapack_development/data/scripts/handlers/itemhandlers/CharChangePotions.java index eb8026f18596a5dbb290eb07eedd078679e6917e..b3ee6b1ab3a747061235d43b9a983075ab8002f1 100644 --- a/datapack_development/data/scripts/handlers/itemhandlers/CharChangePotions.java +++ b/datapack_development/data/scripts/handlers/itemhandlers/CharChangePotions.java @@ -106,8 +106,7 @@ public class CharChangePotions implements IItemHandler } // Create a summon effect! - MagicSkillUse MSU = new MagicSkillUse(playable, activeChar, 2003, 1, 1, 0); - activeChar.broadcastPacket(MSU); + activeChar.broadcastPacket(new MagicSkillUse(playable, activeChar, 2003, 1, 1, 0)); // Update the changed stat for the character in the DB. activeChar.store(); @@ -116,8 +115,7 @@ public class CharChangePotions implements IItemHandler activeChar.destroyItem("Consume", item.getObjectId(), 1, null, false); // Broadcast the changes to the char and all those nearby. - UserInfo ui = new UserInfo(activeChar); - activeChar.broadcastPacket(ui); + activeChar.broadcastPacket(new UserInfo(activeChar)); activeChar.broadcastPacket(new ExBrExtraUserInfo(activeChar)); } diff --git a/datapack_development/data/scripts/handlers/itemhandlers/ItemSkills.java b/datapack_development/data/scripts/handlers/itemhandlers/ItemSkills.java index a4f9dcd2d7cb0eb80ad5a561067dd3d978d61f9e..669c5fe04c082e5ef362c195a3dc185065bd6df5 100644 --- a/datapack_development/data/scripts/handlers/itemhandlers/ItemSkills.java +++ b/datapack_development/data/scripts/handlers/itemhandlers/ItemSkills.java @@ -36,14 +36,14 @@ public class ItemSkills implements IItemHandler // TODO: unhardcode item ids private static final int[] ITEM_IDS = { - 65,725,726,733,734,735,1374,1375,1539,1540,3926,3927,3928,3929, - 3930,3931,3932,3933,3934,3935,4218,4411,4412, + 65,725,726,733,734,735,736,1374,1375,1538,1539,1540,1829,1830, + 3926,3927,3928,3929,3930,3931,3932,3933,3934,3935,3958,4218,4411,4412, 4413,4414,4415,4417,5010,5134,5135,5136,5137,5138,5139,5140, 5141,5142,5143,5144,5145,5146,5147,5148,5149,5150,5151,5234, 5250,5251,5252,5253,5254,5255,5256,5257,5258,5259,5260,5261, 5262,5263,5264,5265,5266,5267,5562,5563,5564,5565,5566,5583, 5584,5585,5586,5587,5589,5591,5592,5593,5594,5595,5703,5803, - 5804,5805,5806,5807,5916,5944,5955,5966,5967,5968,5969,6007, + 5804,5805,5806,5807,5858,5859,5916,5944,5955,5966,5967,5968,5969,6007, 6008,6009,6010,6035,6036,6037,6403,6406,6407,6411,6412,6413, 6414,6415,6416,6417,6418,6419,6420,6421,6422,6423,6424,6425, 6426,6427,6428,6429,6430,6431,6432,6433,6434,6435,6436,6437, @@ -54,14 +54,17 @@ public class ItemSkills implements IItemHandler 6486,6487,6488,6489,6490,6491,6492,6493,6494,6495,6496,6497, 6498,6499,6500,6501,6502,6503,6504,6505,6506,6507,6508,6509, 6510,6511,6512,6513,6514,6515,6516,6517,6518,6652,6654,6655, - 6903,7061,7062,7629,7630,7631,7632,7633,7634,7635,7636,7637, + 6665,6666,6667,6668,6669,6670,6671,6672,6903,7061,7062,7117, + 7118,7119,7120,7121,7122,7123,7124,7125,7126,7127,7128,7129, + 7130,7131,7132,7133,7134,7135,7554,7555,7556,7557,7558,7559, + 7618,7619,7629,7630,7631,7632,7633,7634,7635,7636,7637, 7725,7726,7727,7728,7729,7730,7731,7732,7733,7734,7735,7736, 7737,7738,7739,7740,7741,7742,7743,7744,7745,7746,7747,7748, 7749,7750,7751,7752,7753,7754,7755,7756,7757,7758,7759,7760, 7761,7762,7763,7764,7765,7766,7767,7768,7769,7770,7771,7772, 7773,7774,7775,7776,7777,7778,7779,7780,7781,7782,7783,7784, 7785,7786,7787,7788,7789,7790,7791,7792,7793,7794,7795,7796, - 7797,7798,7799,7800,7801,7802,7803,7804,7805,7806,8154,8155, + 7797,7798,7799,7800,7801,7802,7803,7804,7805,7806,8060,8154,8155, 8156,8157,8202,8403,8404,8405,8406,8407,8408,8409,8410,8411, 8412,8413,8414,8415,8416,8417,8418,8419,8420,8421,8422,8423, 8424,8425,8426,8427,8428,8429,8430,8431,8432,8433,8434,8435, @@ -72,25 +75,31 @@ public class ItemSkills implements IItemHandler 8534,8535,8536,8537,8538,8539,8540,8555,8594,8595,8596,8597, 8598,8599,8600,8601,8602,8603,8604,8605,8606,8607,8608,8609, 8610,8611,8612,8613,8614,8952,8953,8954,8955,8956,9146,9147, - 9148,9149,9150,9151,9152,9153,9154,9155,9688,9689,9897,9997, - 9998,9999,10000,10001,10002,10131,10132,10133,10134,10135, - 10136,10137,10138,10151,10155,10157,10260,10261,10262,10263, + 9148,9149,9150,9151,9152,9153,9154,9155,9156,9647,9688,9689, + 9716,9897,9997,9998,9999,10000,10001,10002,10129,10130,10131, + 10132,10133,10134,10135,10136,10137,10138,10149,10151,10155, + 10157,10260,10261,10262,10263, 10264,10265,10266,10267,10268,10269,10270,10274,10409,10432, 10433,10515,10516,10517,10549,10550,10551,10552,10553, 10554,10555,10556,10557,10558,10559,10560,10561,10562,10563, 10564,10565,10566,10567,10568,10569,10570,10571,10572,10573, 10574,10575,10576,10577,10578,10579,10580,10581,10582,10583, 10584,10585,10586,10587,10588,10589,10591,10592,10593,10594, - 10595,10608,10609,10610,10655,10632,10656,10657, - 12768,12769,12770,12771,13032,13261,13262,13263,13264,13265, - 13266,13267,13268,13269,13386,13387,13388,13552,13553,13554, - 13728,13844,14170,14171,14172,14173,14174,14175,14176,14177, + 10595,10608,10609,10610,10632,10650,10655,10656,10657,12768, + 12769,12770,12771,13032,13129,13258,13261,13262,13263,13264, + 13265,13266,13267,13268,13269,13386,13387,13388,13395,13396, + 13397,13398,13399,13400,13401,13402,13403,13404,13405,13406, + 13407,13408,13409,13410,13411,13412,13413,13414,13552,13553, + 13554,13728,13731,13732,13733,13734,13735,13736,13737,13738, + 13739,13844,14170,14171,14172,14173,14174,14175,14176,14177, 14178,14179,14180,14181,14182,14183,14184,14185,14186,14187, 14188,14189,14190,14191,14192,14193,14194,14195,14196,14197, 14198,14199,14200,14201,14202,14203,14204,14205,14206,14207, 14208,14209,14210,14211,14212,14213,14214,14215,14216,14217, 14218,14219,14220,14221,14222,14223,14224,14225,14226,14227, - 20353,20364,20365,20366,20367,20368,20369,20370,20371,22022, + 20353,20364,20365,20366,20367,20368,20369,20370,20371,20372, + 20373,20374,20375,20376,20377,20378,20379,20380,20381,20382, + 20383,20384,20385,20386,20387,20388,20389,20390,22022, 22023,22024,22025,22026,22037,22039,22040,22041,22042,22043, 22044,22045,22046,22047,22048,22049,22050,22051,22052,22053, 22087,22088, diff --git a/datapack_development/data/scripts/handlers/itemhandlers/Key.java b/datapack_development/data/scripts/handlers/itemhandlers/Key.java deleted file mode 100644 index e0998577d4290edaabdd26d9e89bef0207ad13fe..0000000000000000000000000000000000000000 --- a/datapack_development/data/scripts/handlers/itemhandlers/Key.java +++ /dev/null @@ -1,100 +0,0 @@ -/* - * 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.itemhandlers; - -import net.sf.l2j.gameserver.datatables.SkillTable; -import net.sf.l2j.gameserver.handler.IItemHandler; -import net.sf.l2j.gameserver.model.L2ItemInstance; -import net.sf.l2j.gameserver.model.L2Object; -import net.sf.l2j.gameserver.model.L2Skill; -import net.sf.l2j.gameserver.model.actor.L2Playable; -import net.sf.l2j.gameserver.model.actor.instance.L2ChestInstance; -import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; -import net.sf.l2j.gameserver.network.SystemMessageId; -import net.sf.l2j.gameserver.network.serverpackets.ActionFailed; -import net.sf.l2j.gameserver.network.serverpackets.SystemMessage; - -public class Key implements IItemHandler -{ - public static final int INTERACTION_DISTANCE = 100; - - private static final int[] ITEM_IDS = - { - 6665, 6666, 6667, 6668, 6669, - 6670, 6671, 6672, 8060 - }; - - /** - * - * @see net.sf.l2j.gameserver.handler.IItemHandler#useItem(net.sf.l2j.gameserver.model.actor.L2Playable, net.sf.l2j.gameserver.model.L2ItemInstance) - */ - public void useItem(L2Playable playable, L2ItemInstance item) - { - if (!(playable instanceof L2PcInstance)) - return; - L2PcInstance activeChar = (L2PcInstance) playable; - - int itemId = item.getItemId(); - - switch (itemId) - { - case 6665: - case 6666: - case 6667: - case 6668: - case 6669: - case 6670: - case 6671: - case 6672: - { - L2Skill skill = SkillTable.getInstance().getInfo(2229, itemId - 6664); // box key skill - L2Object target = activeChar.getTarget(); - - if (!(target instanceof L2ChestInstance)) - { - activeChar.sendPacket(new SystemMessage(SystemMessageId.INCORRECT_TARGET)); - activeChar.sendPacket(ActionFailed.STATIC_PACKET); - } - else - { - L2ChestInstance chest = (L2ChestInstance) target; - if (chest.isDead() || chest.isInteracted()) - { - activeChar.sendMessage("The chest Is empty."); - activeChar.sendPacket(ActionFailed.STATIC_PACKET); - return; - } - activeChar.useMagic(skill, false, false); - } - break; - } - case 8060: - { - L2Skill skill = SkillTable.getInstance().getInfo(2260, 1); - activeChar.doSimultaneousCast(skill); - break; - } - } - } - - /** - * - * @see net.sf.l2j.gameserver.handler.IItemHandler#getItemIds() - */ - public int[] getItemIds() - { - return ITEM_IDS; - } -} diff --git a/datapack_development/data/scripts/handlers/itemhandlers/Maps.java b/datapack_development/data/scripts/handlers/itemhandlers/Maps.java index e8e5800d1292bc7627322d53671761b4f6c678f5..2932de49c615c659be2349b623a7511ba337982a 100644 --- a/datapack_development/data/scripts/handlers/itemhandlers/Maps.java +++ b/datapack_development/data/scripts/handlers/itemhandlers/Maps.java @@ -43,8 +43,8 @@ public class Maps implements IItemHandler { if (!(playable instanceof L2PcInstance)) return; - L2PcInstance activeChar = (L2PcInstance) playable; - activeChar.sendPacket(new ShowMiniMap(item.getItemId())); + + playable.sendPacket(new ShowMiniMap(item.getItemId())); } /** diff --git a/datapack_development/data/scripts/handlers/itemhandlers/MercTicket.java b/datapack_development/data/scripts/handlers/itemhandlers/MercTicket.java index d9a13a26633dc16ae55e8a968165831001cc03ae..cf800fa061a26bb6245a6aeef8f367a9677be6f0 100644 --- a/datapack_development/data/scripts/handlers/itemhandlers/MercTicket.java +++ b/datapack_development/data/scripts/handlers/itemhandlers/MercTicket.java @@ -27,13 +27,6 @@ import net.sf.l2j.gameserver.network.serverpackets.SystemMessage; public class MercTicket implements IItemHandler { - private static final String[] MESSAGES = - { - "To arms!.", - "I am ready to serve you my lord when the time comes.", - "You summon me." - }; - /** * handler for using mercenary tickets. Things to do: * 1) Check constraints: @@ -58,43 +51,8 @@ public class MercTicket implements IItemHandler //add check that certain tickets can only be placed in certain castles if (MercTicketManager.getInstance().getTicketCastleId(itemId) != castleId) { - if (castleId == -1) - { - // player is not in a castle - activeChar.sendMessage("Mercenary Tickets can only be used in a castle."); - return; - } - - switch (MercTicketManager.getInstance().getTicketCastleId(itemId)) - { - case 1: - activeChar.sendMessage("This Mercenary Ticket can only be used in Gludio."); - return; - case 2: - activeChar.sendMessage("This Mercenary Ticket can only be used in Dion."); - return; - case 3: - activeChar.sendMessage("This Mercenary Ticket can only be used in Giran."); - return; - case 4: - activeChar.sendMessage("This Mercenary Ticket can only be used in Oren."); - return; - case 5: - activeChar.sendMessage("This Mercenary Ticket can only be used in Aden."); - return; - case 6: - activeChar.sendMessage("This Mercenary Ticket can only be used in Heine."); - return; - case 7: - activeChar.sendMessage("This Mercenary Ticket can only be used in Goddard."); - return; - case 8: - activeChar.sendMessage("This Mercenary Ticket can only be used in Rune."); - return; - case 9: - activeChar.sendMessage("This Mercenary Ticket can only be used in Schuttgart."); - return; - } + activeChar.sendPacket(new SystemMessage(SystemMessageId.MERCENARIES_CANNOT_BE_POSITIONED_HERE)); + return; } if (!activeChar.isCastleLord(castleId)) @@ -105,7 +63,7 @@ public class MercTicket implements IItemHandler if (castle.getSiege().getIsInProgress()) { - activeChar.sendMessage("You cannot hire mercenary while siege is in progress!"); + activeChar.sendPacket(new SystemMessage(SystemMessageId.THIS_MERCENARY_CANNOT_BE_POSITIONED_ANYMORE)); return; } @@ -113,7 +71,7 @@ public class MercTicket implements IItemHandler if (SevenSigns.getInstance().getCurrentPeriod() != SevenSigns.PERIOD_SEAL_VALIDATION) { //_log.warning("Someone has tried to spawn a guardian during Quest Event Period of The Seven Signs."); - activeChar.sendMessage("You cannot position any Mercenaries during Quest Period."); + activeChar.sendPacket(new SystemMessage(SystemMessageId.THIS_MERCENARY_CANNOT_BE_POSITIONED_ANYMORE)); return; } //Checking the Seal of Strife status @@ -123,7 +81,7 @@ public class MercTicket implements IItemHandler if (SevenSigns.getInstance().CheckIsDawnPostingTicket(itemId)) { //_log.warning("Someone has tried to spawn a Dawn Mercenary though the Seal of Strife is not controlled by anyone."); - activeChar.sendMessage("You cannot position any Dawn Mercenaries at this time."); + activeChar.sendPacket(new SystemMessage(SystemMessageId.THIS_MERCENARY_CANNOT_BE_POSITIONED_ANYMORE)); return; } break; @@ -131,7 +89,7 @@ public class MercTicket implements IItemHandler if (!SevenSigns.getInstance().CheckIsRookiePostingTicket(itemId)) { //_log.warning("Someone has tried to spawn a non-Rookie Mercenary though the Seal of Strife is controlled by Revolutionaries of Dusk."); - activeChar.sendMessage("You can position only Rookie Mercenaries at this time."); + activeChar.sendPacket(new SystemMessage(SystemMessageId.THIS_MERCENARY_CANNOT_BE_POSITIONED_ANYMORE)); return; } break; @@ -141,13 +99,13 @@ public class MercTicket implements IItemHandler if(MercTicketManager.getInstance().isAtCasleLimit(item.getItemId())) { - activeChar.sendMessage("You cannot hire any more mercenaries"); + activeChar.sendPacket(new SystemMessage(SystemMessageId.THIS_MERCENARY_CANNOT_BE_POSITIONED_ANYMORE)); return; } if (MercTicketManager.getInstance().isAtTypeLimit(item.getItemId())) { - activeChar.sendMessage("You cannot hire any more mercenaries of this type. You may still hire other types of mercenaries"); + activeChar.sendPacket(new SystemMessage(SystemMessageId.THIS_MERCENARY_CANNOT_BE_POSITIONED_ANYMORE)); return; } if (MercTicketManager.getInstance().isTooCloseToAnotherTicket(activeChar.getX(), activeChar.getY(), activeChar.getZ())) @@ -156,9 +114,8 @@ public class MercTicket implements IItemHandler return; } - int npcId = MercTicketManager.getInstance().addTicket(item.getItemId(), activeChar, MESSAGES); activeChar.destroyItem("Consume", item.getObjectId(), 1, null, false); // Remove item from char's inventory - activeChar.sendMessage("Hired mercenary (" + itemId + "," + npcId + ") at coords:" + activeChar.getX() + "," + activeChar.getY() + "," + activeChar.getZ() + " heading:" + activeChar.getHeading()); + activeChar.sendPacket(new SystemMessage(SystemMessageId.PLACE_CURRENT_LOCATION_DIRECTION).addItemName(item)); } /** diff --git a/datapack_development/data/scripts/handlers/itemhandlers/PetFood.java b/datapack_development/data/scripts/handlers/itemhandlers/PetFood.java index cf1290a68f00380dbe2bce187036938c28d9c058..16d9f431457747d6a08eec4e18f6924bf6ca0c4b 100644 --- a/datapack_development/data/scripts/handlers/itemhandlers/PetFood.java +++ b/datapack_development/data/scripts/handlers/itemhandlers/PetFood.java @@ -86,10 +86,7 @@ public class PetFood implements IItemHandler ((L2PetInstance)activeChar).setCurrentFed(((L2PetInstance)activeChar).getCurrentFed() + skill.getFeed()); ((L2PetInstance)activeChar).broadcastStatusUpdate(); if (((L2PetInstance)activeChar).getCurrentFed() < (0.55 * ((L2PetInstance)activeChar).getPetData().getPetMaxFeed())) - { - SystemMessage sm = new SystemMessage(SystemMessageId.YOUR_PET_ATE_A_LITTLE_BUT_IS_STILL_HUNGRY); - ((L2PetInstance)activeChar).getOwner().sendPacket(sm); - } + ((L2PetInstance)activeChar).getOwner().sendPacket(new SystemMessage(SystemMessageId.YOUR_PET_ATE_A_LITTLE_BUT_IS_STILL_HUNGRY)); return true; } } diff --git a/datapack_development/data/scripts/handlers/itemhandlers/Recipes.java b/datapack_development/data/scripts/handlers/itemhandlers/Recipes.java index 11f27fc6b8b19774814f272ce5d4d57b8c85394a..aac86a84217c286c5d14362669eb5d87e893d219 100644 --- a/datapack_development/data/scripts/handlers/itemhandlers/Recipes.java +++ b/datapack_development/data/scripts/handlers/itemhandlers/Recipes.java @@ -49,10 +49,7 @@ public class Recipes implements IItemHandler L2PcInstance activeChar = (L2PcInstance) playable; L2RecipeList rp = RecipeController.getInstance().getRecipeByItemId(item.getItemId()); if (activeChar.hasRecipeList(rp.getId())) - { - SystemMessage sm = new SystemMessage(SystemMessageId.RECIPE_ALREADY_REGISTERED); - activeChar.sendPacket(sm); - } + activeChar.sendPacket(new SystemMessage(SystemMessageId.RECIPE_ALREADY_REGISTERED)); else { if (rp.isDwarvenRecipe()) @@ -62,8 +59,7 @@ public class Recipes implements IItemHandler if (rp.getLevel() > activeChar.getDwarvenCraft()) { //can't add recipe, becouse create item level too low - SystemMessage sm = new SystemMessage(SystemMessageId.CREATE_LVL_TOO_LOW_TO_REGISTER); - activeChar.sendPacket(sm); + activeChar.sendPacket(new SystemMessage(SystemMessageId.CREATE_LVL_TOO_LOW_TO_REGISTER)); } else if (activeChar.getDwarvenRecipeBook().length >= activeChar.getDwarfRecipeLimit()) { @@ -76,14 +72,11 @@ public class Recipes implements IItemHandler { activeChar.registerDwarvenRecipeList(rp, true); activeChar.destroyItem("Consume", item.getObjectId(), 1, null, false); - activeChar.sendMessage("Added recipe \"" + rp.getRecipeName() + "\" to Dwarven RecipeBook"); + activeChar.sendPacket(new SystemMessage(SystemMessageId.S1_ADDED).addItemName(item)); } } else - { - SystemMessage sm = new SystemMessage(SystemMessageId.CANT_REGISTER_NO_ABILITY_TO_CRAFT); - activeChar.sendPacket(sm); - } + activeChar.sendPacket(new SystemMessage(SystemMessageId.CANT_REGISTER_NO_ABILITY_TO_CRAFT)); } else { @@ -92,8 +85,7 @@ public class Recipes implements IItemHandler if (rp.getLevel() > activeChar.getCommonCraft()) { //can't add recipe, becouse create item level too low - SystemMessage sm = new SystemMessage(SystemMessageId.CREATE_LVL_TOO_LOW_TO_REGISTER); - activeChar.sendPacket(sm); + activeChar.sendPacket(new SystemMessage(SystemMessageId.CREATE_LVL_TOO_LOW_TO_REGISTER)); } else if (activeChar.getCommonRecipeBook().length >= activeChar.getCommonRecipeLimit()) { @@ -106,14 +98,11 @@ public class Recipes implements IItemHandler { activeChar.registerCommonRecipeList(rp, true); activeChar.destroyItem("Consume", item.getObjectId(), 1, null, false); - activeChar.sendMessage("Added recipe \"" + rp.getRecipeName() + "\" to Common RecipeBook"); + activeChar.sendPacket(new SystemMessage(SystemMessageId.S1_ADDED).addItemName(item)); } } else - { - SystemMessage sm = new SystemMessage(SystemMessageId.CANT_REGISTER_NO_ABILITY_TO_CRAFT); - activeChar.sendPacket(sm); - } + activeChar.sendPacket(new SystemMessage(SystemMessageId.CANT_REGISTER_NO_ABILITY_TO_CRAFT)); } } } diff --git a/datapack_development/data/scripts/handlers/itemhandlers/Remedy.java b/datapack_development/data/scripts/handlers/itemhandlers/Remedy.java index dec8003bfe8a67c359849d914adc16ca989479b4..3af7bd0630f5d90757dd2c737b71926e27613fa1 100644 --- a/datapack_development/data/scripts/handlers/itemhandlers/Remedy.java +++ b/datapack_development/data/scripts/handlers/itemhandlers/Remedy.java @@ -74,7 +74,6 @@ public class Remedy implements IItemHandler } } MagicSkillUse MSU = new MagicSkillUse(playable, playable, 2042, 1, 0, 0); - activeChar.sendPacket(MSU); activeChar.broadcastPacket(MSU); playable.destroyItem("Consume", item.getObjectId(), 1, null, false); break; @@ -91,7 +90,6 @@ public class Remedy implements IItemHandler } } MagicSkillUse MSU = new MagicSkillUse(playable, playable, 2043, 1, 0, 0); - activeChar.sendPacket(MSU); activeChar.broadcastPacket(MSU); playable.destroyItem("Consume", item.getObjectId(), 1, null, false); break; @@ -108,7 +106,6 @@ public class Remedy implements IItemHandler } } MagicSkillUse MSU = new MagicSkillUse(playable, playable, 34, 1, 0, 0); - activeChar.sendPacket(MSU); activeChar.broadcastPacket(MSU); playable.destroyItem("Consume", item.getObjectId(), 1, null, false); break; @@ -125,7 +122,6 @@ public class Remedy implements IItemHandler } } MagicSkillUse MSU = new MagicSkillUse(playable, playable, 2045, 1, 0, 0); - activeChar.sendPacket(MSU); activeChar.broadcastPacket(MSU); playable.destroyItem("Consume", item.getObjectId(), 1, null, false); break; @@ -142,7 +138,6 @@ public class Remedy implements IItemHandler if (activeChar.getFirstEffect(L2EffectType.ROOT) == null) activeChar.stopRooting(null); MagicSkillUse MSU = new MagicSkillUse(playable, playable, 2042, 1, 0, 0); - activeChar.sendPacket(MSU); activeChar.broadcastPacket(MSU); playable.destroyItem("Consume", item.getObjectId(), 1, null, false); break; diff --git a/datapack_development/data/scripts/handlers/itemhandlers/RollingDice.java b/datapack_development/data/scripts/handlers/itemhandlers/RollingDice.java index d913188b862b101c5c3263baeb45977a5f7620e5..c8155530872e026f66550aca87598980049e2ffe 100644 --- a/datapack_development/data/scripts/handlers/itemhandlers/RollingDice.java +++ b/datapack_development/data/scripts/handlers/itemhandlers/RollingDice.java @@ -65,8 +65,7 @@ public class RollingDice implements IItemHandler return; } - Dice d = new Dice(activeChar.getObjectId(), item.getItemId(), number, activeChar.getX() - 30, activeChar.getY() - 30, activeChar.getZ()); - Broadcast.toSelfAndKnownPlayers(activeChar, d); + Broadcast.toSelfAndKnownPlayers(activeChar, new Dice(activeChar.getObjectId(), item.getItemId(), number, activeChar.getX() - 30, activeChar.getY() - 30, activeChar.getZ())); SystemMessage sm = new SystemMessage(SystemMessageId.C1_ROLLED_S2); sm.addString(activeChar.getName()); diff --git a/datapack_development/data/scripts/handlers/itemhandlers/ScrollOfEscape.java b/datapack_development/data/scripts/handlers/itemhandlers/ScrollOfEscape.java deleted file mode 100644 index 4dd7d545f0b3b91cf61e815e797bd4da915fbdb3..0000000000000000000000000000000000000000 --- a/datapack_development/data/scripts/handlers/itemhandlers/ScrollOfEscape.java +++ /dev/null @@ -1,297 +0,0 @@ -/* - * 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.itemhandlers; - -import net.sf.l2j.gameserver.datatables.SkillTable; -import net.sf.l2j.gameserver.handler.IItemHandler; -import net.sf.l2j.gameserver.instancemanager.CastleManager; -import net.sf.l2j.gameserver.instancemanager.ClanHallManager; -import net.sf.l2j.gameserver.instancemanager.FortManager; -import net.sf.l2j.gameserver.instancemanager.GrandBossManager; -import net.sf.l2j.gameserver.model.L2ItemInstance; -import net.sf.l2j.gameserver.model.L2Skill; -import net.sf.l2j.gameserver.model.actor.L2Playable; -import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; -import net.sf.l2j.gameserver.model.entity.TvTEvent; -import net.sf.l2j.gameserver.network.SystemMessageId; -import net.sf.l2j.gameserver.network.serverpackets.ActionFailed; -import net.sf.l2j.gameserver.network.serverpackets.SystemMessage; - -/** - * This class ... - * - * @version $Revision: 1.2.2.3.2.5 $ $Date: 2005/03/27 15:30:07 $ - */ - -public class ScrollOfEscape implements IItemHandler -{ - // all the items IDs that this handler knows - private static final int[] ITEM_IDS = - { - 736, 1538, 1829, 1830, 3958, 5858, - 5859, 7117, 7118, 7119, - 7120, 7121, 7122, 7123, 7124, 7125, - 7126, 7127, 7128, 7129, 7130, 7131, - 7132, 7133, 7134, 7135, 7554, 7555, - 7556, 7557, 7558, 7559, 7618, 7619, - 9156, 9647, 9716, 10129, 10130, 10650, - 10149, 13129, 13258, 13395, 13396, 13397, - 13398, 13399, 13400, 13401, 13402, 13403, - 13404, 13405, 13406, 13407, 13408, 13409, - 13410, 13411, 13412, 13413, 13414, 13731, - 13732, 13733, 13734, 13735, 13736, 13737, - 13738, 13739, 20372, 20373, 20374, 20375, - 20376, 20377, 20378, 20379, 20380, 20381, - 20382, 20383, 20384, 20385, 20386, 20387, - 20388, 20389, 20390 - }; - - /** - * - * @see net.sf.l2j.gameserver.handler.IItemHandler#useItem(net.sf.l2j.gameserver.model.actor.L2Playable, net.sf.l2j.gameserver.model.L2ItemInstance) - */ - public void useItem(L2Playable playable, L2ItemInstance item) - { - if (!(playable instanceof L2PcInstance)) - return; - L2PcInstance activeChar = (L2PcInstance) playable; - - activeChar.sendPacket(ActionFailed.STATIC_PACKET); - - // Thanks nbd - if (!TvTEvent.onEscapeUse(activeChar.getObjectId())) - - return; - - if (GrandBossManager.getInstance().getZone(activeChar) != null && !activeChar.isGM()) - { - activeChar.sendPacket(new SystemMessage(SystemMessageId.YOU_MAY_NOT_SUMMON_FROM_YOUR_CURRENT_LOCATION)); - return; - } - - if (activeChar.isInOlympiadMode()) - { - activeChar.sendPacket(new SystemMessage(SystemMessageId.THIS_ITEM_IS_NOT_AVAILABLE_FOR_THE_OLYMPIAD_EVENT)); - return; - } - - // Check to see if the player is in a festival. - if (activeChar.isFestivalParticipant()) - { - activeChar.sendPacket(new SystemMessage(SystemMessageId.YOU_MAY_NOT_SUMMON_FROM_YOUR_CURRENT_LOCATION)); - return; - } - - // Check to see if player is in jail - if (activeChar.isInJail()) - { - activeChar.sendMessage("You can not escape from jail."); - return; - } - // Check to see if player is in a duel - if (activeChar.isInDuel()) - { - activeChar.sendMessage("You cannot use escape skills during a duel."); - return; - } - - // TODO: unhardcode me - // blessed scrolls don't do anything if hideout target it is null - boolean ret = false; - switch(item.getItemId()) - { - case 5859: - if (activeChar.getClan() != null && CastleManager.getInstance().getCastleByOwner(activeChar.getClan()) == null) - ret = true; - break; - case 10130: - if (activeChar.getClan() != null && FortManager.getInstance().getFortByOwner(activeChar.getClan()) == null) - ret = true; - break; - case 5858: - if (activeChar.getClan() != null && ClanHallManager.getInstance().getClanHallByOwner(activeChar.getClan()) == null) - ret = true; - break; - } - if (ret) - { - SystemMessage sm = new SystemMessage(SystemMessageId.S1_CANNOT_BE_USED); - sm.addItemName(item); - activeChar.sendPacket(sm); - return; - } - - int itemId = item.getItemId(); - switch (itemId) - { - case 736: // Scroll of Escape - useSkill(activeChar,2013,1); - break; - case 1538: // Blessed Scroll of Escape - useSkill(activeChar,2036,1); - break; - case 1829: // Scroll of Escape: Clan Hall - useSkill(activeChar,2040,1); - break; - case 1830: // Scroll of Escape: Castle - useSkill(activeChar,2041,1); - break; - case 3958: // L2Day - Blessed Escape Effect - useSkill(activeChar,2036,2); - break; - case 5858: // Blessed Scroll of Escape: Clan Hall - useSkill(activeChar,2177,1); - break; - case 5859: // Blessed Scroll of Escape: Castle - useSkill(activeChar,2178,1); - break; - case 7117: // Scroll of Escape: Talking Island - case 7118: // Scroll of Escape: Elven Village - case 7119: // Scroll of Escape: Dark Elf Village - case 7120: // Scroll of Escape: Orc Village - case 7121: // Scroll of Escape: Dwarven Village - case 7122: // Scroll of Escape: Gludin Village - case 7123: // Scroll of Escape: Town of Gludio - case 7124: // Scroll of Escape: Town of Dion - case 7125: // Scroll of Escape: Floran - case 7126: // Scroll of Escape: Giran Castle Town - case 7127: // Scroll of Escape: Hardin's Private Academy - case 7128: // Scroll of Escape: Heine - case 7129: // Scroll of Escape: Town of Oren - case 7130: // Scroll of Escape: Ivory Tower - case 7131: // Scroll of Escape: Hunters Village - case 7132: // Scroll of Escape: Aden Castle Town - case 7133: // Scroll of Escape: Town of Goddard - case 7134: // Scroll of Escape: Rune Township - case 7135: // Scroll of Escape: Town of Schuttgart - useSkill(activeChar,2213,itemId-7116); - break; - case 7554: // Scroll of Escape: Talking Island - case 7555: // Scroll of Escape: Elven Village - case 7556: // Scroll of Escape: Dark Elf Village - case 7557: // Scroll of Escape: Orc Village - case 7558: // Scroll of Escape: Dwarven Village - useSkill(activeChar,2214,itemId-7553); - break; - case 7559: // Scroll of Escape: Giran Castle Town - useSkill(activeChar,2214,10); - break; - case 7618: // Scroll of Escape: Ketra Orc Village - useSkill(activeChar,2213,20); - break; - case 7619: // Scroll of Escape: Varka Silenos Village - useSkill(activeChar,2213,21); - break; - case 9156: // Blessed Scroll of Escape (Event) - useSkill(activeChar,2320,1); - break; - case 9647: // Scroll of Escape: Kamael Village - useSkill(activeChar,2213,22); - break; - case 9716: // Scroll of Escape: Kamael Village - useSkill(activeChar,2214,6); - break; - case 10129: // Scroll of Escape: Fortress - useSkill(activeChar,2365,1); - break; - case 10130: // Blessed Scroll of Escape: Fortress - useSkill(activeChar,2364,1); - break; - case 10149: // Battleground Blessed Scroll of Escape - useSkill(activeChar,2392,1); - break; - case 10650: // Adventurer's Scroll of Escape - useSkill(activeChar,2531,1); - break; - case 13129: // Pailaka Scroll of Escape - useSkill(activeChar,2594,1); - break; - case 13258: // Gran Kain's Blessed Scroll of Escape - useSkill(activeChar,2595,1); - break; - case 13395: // Escape - Talking Island Village - case 13396: // Escape - Elven Village - case 13397: // Escape - Dark Elven Village - case 13398: // Escape - Orc Village - case 13399: // Escape - Dwarven Village - case 13400: // Escape - Gludin Village - case 13401: // Escape - Town of Gludio - case 13402: // Escape - Town of Dion - case 13403: // Escape - Floran Village - case 13404: // Escape - Giran Castle Town - case 13405: // Escape - Hardin's Academy - case 13406: // Escape - Heine - case 13407: // Escape - Town of Oren - case 13408: // Escape - Ivory Tower - case 13409: // Escape - Hunters Village - case 13410: // Escape - Town of Aden - case 13411: // Escape - Town of Goddard - case 13412: // Escape - Rune Township - case 13413: // Escape - Town of Schuttgart - case 13414: // Escape - Kamael Village - useSkill(activeChar,2609,itemId-13394); - break; - case 13731: // Gludio Blessed Scroll of Escape - case 13732: // Dion Blessed Scroll of Escape - case 13733: // Giran Blessed Scroll of Escape - case 13734: // Oren Blessed Scroll of Escape - case 13735: // Aden Blessed Scroll of Escape - case 13736: // Innadril Blessed Scroll of Escape - case 13737: // Goddard Blessed Scroll of Escape - case 13738: // Rune Blessed Scroll of Escape - case 13739: // Schuttgart Blessed Scroll of Escape - useSkill(activeChar,2649,itemId-13730); - break; - case 20372: // Escape - Talking Island Village - case 20373: // Escape - Elven Village - case 20374: // Escape - Dark Elven Village - case 20375: // Escape - Orc Village - case 20376: // Escape - Dwarven Village - case 20377: // Escape - Gludin Village - case 20378: // Escape - Town of Gludio - case 20379: // Escape - Town of Dion - case 20380: // Escape - Floran Village - case 20381: // Escape - Giran Castle Town - case 20382: // Escape - Hardin's Academy - case 20383: // Escape - Heine - case 20384: // Escape - Town of Oren - case 20385: // Escape - Ivory Tower - case 20386: // Escape - Hunters Village - case 20387: // Escape - Town of Aden - case 20388: // Escape - Town of Goddard - case 20389: // Escape - Rune Township - case 20390: // Escape - Town of Schuttgart - useSkill(activeChar,22053,itemId-20371); - break; - } - } - - private void useSkill(L2PcInstance player, int skillId, int skillLvl) - { - L2Skill skill = SkillTable.getInstance().getInfo(skillId, skillLvl); - - if (skill != null) - player.useMagic(skill, false, true); - } - - /** - * - * @see net.sf.l2j.gameserver.handler.IItemHandler#getItemIds() - */ - public int[] getItemIds() - { - return ITEM_IDS; - } -} diff --git a/datapack_development/data/scripts/handlers/itemhandlers/SevenSignsRecord.java b/datapack_development/data/scripts/handlers/itemhandlers/SevenSignsRecord.java index abcac4973fad413c0f8b1493ecddcfa7e1006486..90523c0a76006646f2f582d29c40436f7a139a9c 100644 --- a/datapack_development/data/scripts/handlers/itemhandlers/SevenSignsRecord.java +++ b/datapack_development/data/scripts/handlers/itemhandlers/SevenSignsRecord.java @@ -18,7 +18,6 @@ import net.sf.l2j.gameserver.handler.IItemHandler; import net.sf.l2j.gameserver.model.L2ItemInstance; import net.sf.l2j.gameserver.model.actor.L2Playable; import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; -import net.sf.l2j.gameserver.model.actor.instance.L2PetInstance; import net.sf.l2j.gameserver.network.serverpackets.SSQStatus; /** @@ -39,17 +38,10 @@ public class SevenSignsRecord implements IItemHandler */ public void useItem(L2Playable playable, L2ItemInstance item) { - L2PcInstance activeChar; - - if (playable instanceof L2PcInstance) - activeChar = (L2PcInstance) playable; - else if (playable instanceof L2PetInstance) - activeChar = ((L2PetInstance) playable).getOwner(); - else + if (!(playable instanceof L2PcInstance)) return; - SSQStatus ssqs = new SSQStatus(activeChar, 1); - activeChar.sendPacket(ssqs); + playable.sendPacket(new SSQStatus((L2PcInstance) playable, 1)); } /** diff --git a/datapack_development/data/scripts/handlers/itemhandlers/SoulCrystals.java b/datapack_development/data/scripts/handlers/itemhandlers/SoulCrystals.java index 3ec771ce4551e54c54f4eca706d3b0597284da96..b5c48294aaf46283b5ce1d4ccab83ca6c32399c3 100644 --- a/datapack_development/data/scripts/handlers/itemhandlers/SoulCrystals.java +++ b/datapack_development/data/scripts/handlers/itemhandlers/SoulCrystals.java @@ -96,6 +96,7 @@ public class SoulCrystals implements IItemHandler } + // TODO: this should be inside skill handler static class CrystalFinalizer implements Runnable { private L2PcInstance _activeChar; diff --git a/datapack_development/data/scripts/handlers/itemhandlers/SpecialXMas.java b/datapack_development/data/scripts/handlers/itemhandlers/SpecialXMas.java index 65f59aa81c4f389037d6419b29b10ba24208bc01..b85a492cb8ce9b8db5160a48a920cbf5d6f5ab60 100644 --- a/datapack_development/data/scripts/handlers/itemhandlers/SpecialXMas.java +++ b/datapack_development/data/scripts/handlers/itemhandlers/SpecialXMas.java @@ -39,14 +39,8 @@ public class SpecialXMas implements IItemHandler { if (!(playable instanceof L2PcInstance)) return; - L2PcInstance activeChar = (L2PcInstance) playable; - int itemId = item.getItemId(); - if (itemId == 5555) // Token of Love - { - ShowXMasSeal SXS = new ShowXMasSeal(5555); - activeChar.broadcastPacket(SXS); - } + playable.broadcastPacket(new ShowXMasSeal(item.getItemId())); } /** diff --git a/datapack_development/data/scripts/handlers/itemhandlers/SummonItems.java b/datapack_development/data/scripts/handlers/itemhandlers/SummonItems.java index a3a82bed1938d18bccaac777535f6f3ad9676860..6ce8a28d462510ef7e98bc37f0acb9856e20c225 100644 --- a/datapack_development/data/scripts/handlers/itemhandlers/SummonItems.java +++ b/datapack_development/data/scripts/handlers/itemhandlers/SummonItems.java @@ -187,6 +187,7 @@ public class SummonItems implements IItemHandler } } + // TODO: this should be inside skill handler static class PetSummonFinalizer implements Runnable { private L2PcInstance _activeChar; diff --git a/datapack_development/data/scripts/handlers/itemhandlers/TeleportBookmark.java b/datapack_development/data/scripts/handlers/itemhandlers/TeleportBookmark.java index b096ed4aa9fcd14d671d0790d27fd7b0c1c945f4..57eb0801cba4ce724393f04d53e165bc5d2aedca 100644 --- a/datapack_development/data/scripts/handlers/itemhandlers/TeleportBookmark.java +++ b/datapack_development/data/scripts/handlers/itemhandlers/TeleportBookmark.java @@ -39,27 +39,24 @@ public class TeleportBookmark implements IItemHandler { if (playable == null || item == null || !(playable instanceof L2PcInstance)) return; - + L2PcInstance player = (L2PcInstance) playable; if(player.getBookMarkSlot() >= 9) { - player.sendPacket(new SystemMessage(2390)); - return; + player.sendPacket(new SystemMessage(SystemMessageId.YOUR_NUMBER_OF_MY_TELEPORTS_SLOTS_HAS_REACHED_ITS_MAXIMUM_LIMIT)); + return; } player.destroyItem("Consume", item.getObjectId(), 1, null, false); - player.setBookMarkSlot(player.getBookMarkSlot()+3); - - player.sendPacket(new SystemMessage(2409)); - - SystemMessage sm = new SystemMessage(SystemMessageId.S1_DISAPPEARED); - sm.addItemName(13015); - player.sendPacket(sm); - + player.setBookMarkSlot(player.getBookMarkSlot()+3); + player.sendPacket(new SystemMessage(SystemMessageId.THE_NUMBER_OF_MY_TELEPORTS_SLOTS_HAS_BEEN_INCREASED)); + + SystemMessage sm = new SystemMessage(SystemMessageId.S1_DISAPPEARED); + sm.addItemName(item.getItemId()); + player.sendPacket(sm); } - public int[] getItemIds() { diff --git a/datapack_development/data/scripts/handlers/skillhandlers/Recall.java b/datapack_development/data/scripts/handlers/skillhandlers/Recall.java index 40bc8b9200c51fa51e855fffd9290376d2210e83..e32c159f1f4c8dd1b9487edc09fd3dc6867e5d15 100644 --- a/datapack_development/data/scripts/handlers/skillhandlers/Recall.java +++ b/datapack_development/data/scripts/handlers/skillhandlers/Recall.java @@ -18,6 +18,7 @@ import java.util.logging.Level; import net.sf.l2j.gameserver.datatables.MapRegionTable; import net.sf.l2j.gameserver.handler.ISkillHandler; +import net.sf.l2j.gameserver.instancemanager.GrandBossManager; import net.sf.l2j.gameserver.model.L2Object; import net.sf.l2j.gameserver.model.L2Skill; import net.sf.l2j.gameserver.model.actor.L2Character; @@ -56,6 +57,12 @@ public class Recall implements ISkillHandler ((L2PcInstance) activeChar).sendPacket(new SystemMessage(SystemMessageId.THIS_ITEM_IS_NOT_AVAILABLE_FOR_THE_OLYMPIAD_EVENT)); return; } + + if (GrandBossManager.getInstance().getZone(activeChar) != null && !activeChar.isGM()) + { + activeChar.sendPacket(new SystemMessage(SystemMessageId.YOU_MAY_NOT_SUMMON_FROM_YOUR_CURRENT_LOCATION)); + return; + } } try diff --git a/datapack_development/data/scripts/handlers/skillhandlers/Resurrect.java b/datapack_development/data/scripts/handlers/skillhandlers/Resurrect.java index 2b0f1dc9ae218285c3bfaeff650e7515a0fa3e25..ae97174c1215a429feac408260daf44b1741470a 100644 --- a/datapack_development/data/scripts/handlers/skillhandlers/Resurrect.java +++ b/datapack_development/data/scripts/handlers/skillhandlers/Resurrect.java @@ -74,7 +74,7 @@ public class Resurrect implements ISkillHandler if (targetToRes.isEmpty()) { activeChar.abortCast(); - activeChar.sendMessage("No valid target to resurrect"); + return; } for (L2Character cha : targetToRes) diff --git a/datapack_development/data/stats/skills/2100-2199.xml b/datapack_development/data/stats/skills/2100-2199.xml index eecf4e153b59b37a9de342f544770a50503ab9ef..40940bbf4fea494fbf77fcbe5f82d45ffcdc7901 100644 --- a/datapack_development/data/stats/skills/2100-2199.xml +++ b/datapack_development/data/stats/skills/2100-2199.xml @@ -795,6 +795,9 @@ <set name="skillType" val="RECALL"/> <set name="recallType" val="ClanHall"/> <set name="operateType" val="OP_ACTIVE"/> + <cond msgId="113" addName="1"> + <player clanHall="-1"/> + </cond> </skill> <skill id="2178" levels="1" name="Blessed Scroll of Escape: Castle"> <set name="itemConsumeId" val="5859"/> @@ -805,6 +808,9 @@ <set name="skillType" val="RECALL"/> <set name="recallType" val="Castle"/> <set name="operateType" val="OP_ACTIVE"/> + <cond msgId="113" addName="1"> + <player castle="-1"/> + </cond> </skill> <skill id="2179" levels="1" name="Blessed Scroll of Resurrection: Pet"> <set name="power" val="100"/> diff --git a/datapack_development/data/stats/skills/2200-2299.xml b/datapack_development/data/stats/skills/2200-2299.xml index da5b5beb9d5c680446bd727787a445d2a93c900b..295a5093ef97ce71be290e400b2f71295f2dc440 100644 --- a/datapack_development/data/stats/skills/2200-2299.xml +++ b/datapack_development/data/stats/skills/2200-2299.xml @@ -386,6 +386,9 @@ <set name="itemConsumeCount" val="1"/> <set name="castRange" val="40"/> <set name="effectRange" val="400"/> + <cond msgId="109" > + <target npcType="L2Chest"/> + </cond> </skill> <skill id="2230" levels="1" name="Item - Theme Sound Crystal"> <set name="itemConsumeId" val="7062"/> diff --git a/datapack_development/data/stats/skills/2300-2399.xml b/datapack_development/data/stats/skills/2300-2399.xml index 0d5baf6847fc123dd37b5835873a7a606be8b2b8..0a6a9f5c741e0aa6071f284af5dd9f875b29bf52 100644 --- a/datapack_development/data/stats/skills/2300-2399.xml +++ b/datapack_development/data/stats/skills/2300-2399.xml @@ -650,6 +650,9 @@ <set name="skillType" val="RECALL"/> <set name="recallType" val="Fortress"/> <set name="operateType" val="OP_ACTIVE"/> + <cond msgId="113" addName="1"> + <player fort="-1"/> + </cond> </skill> <skill id="2365" levels="1" name="Scroll of Fortress Return"> <set name="itemConsumeId" val="10129"/> diff --git a/datapack_development/sql/etcitem.sql b/datapack_development/sql/etcitem.sql index 6e077f82700d1b9bae22b6c0f58f36ed85c4ed77..13324c39e34e591be1335e2619008de0b9496077 100644 --- a/datapack_development/sql/etcitem.sql +++ b/datapack_development/sql/etcitem.sql @@ -4980,14 +4980,14 @@ INSERT INTO `etcitem` VALUES (6655,'Scroll: Slay Valakas','false','scroll',10,'stackable','paper','none',-1,-1,0,0,'true','true','true','true','2232-1;','false'), (6663,'Scroll of Escape: Orc Village','false','scroll',120,'stackable','paper','none',-1,-1,400,0,'true','true','true','true','0-0;','false'), (6664,'Scroll of Escape: Silenos Village','false','scroll',120,'stackable','paper','none',-1,-1,400,0,'true','true','true','true','0-0;','false'), -(6665,'Deluxe Chest Key - Grade 1','false','none',10,'stackable','steel','none',-1,-1,0,0,'true','true','true','true','0-0;','false'), -(6666,'Deluxe Chest Key - Grade 2','false','none',10,'stackable','steel','none',-1,-1,200,0,'true','true','true','true','0-0;','false'), -(6667,'Deluxe Chest Key - Grade 3','false','none',10,'stackable','steel','none',-1,-1,320,0,'true','true','true','true','0-0;','false'), -(6668,'Deluxe Chest Key - Grade 4','false','none',10,'stackable','steel','none',-1,-1,560,0,'true','true','true','true','0-0;','false'), -(6669,'Deluxe Chest Key - Grade 5','false','none',10,'stackable','steel','none',-1,-1,860,0,'true','true','true','true','0-0;','false'), -(6670,'Deluxe Chest Key - Grade 6','false','none',10,'stackable','steel','none',-1,-1,1200,0,'true','true','true','true','0-0;','false'), -(6671,'Deluxe Chest Key - Grade 7','false','none',10,'stackable','steel','none',-1,-1,1800,0,'true','true','true','true','0-0;','false'), -(6672,'Deluxe Chest Key - Grade 8','false','none',10,'stackable','steel','none',-1,-1,2400,0,'true','true','true','true','0-0;','false'), +(6665,'Deluxe Chest Key - Grade 1','false','none',10,'stackable','steel','none',-1,-1,0,0,'true','true','true','true','2229-1;','false'), +(6666,'Deluxe Chest Key - Grade 2','false','none',10,'stackable','steel','none',-1,-1,200,0,'true','true','true','true','2229-2;','false'), +(6667,'Deluxe Chest Key - Grade 3','false','none',10,'stackable','steel','none',-1,-1,320,0,'true','true','true','true','2229-3;','false'), +(6668,'Deluxe Chest Key - Grade 4','false','none',10,'stackable','steel','none',-1,-1,560,0,'true','true','true','true','2229-4;','false'), +(6669,'Deluxe Chest Key - Grade 5','false','none',10,'stackable','steel','none',-1,-1,860,0,'true','true','true','true','2229-5;','false'), +(6670,'Deluxe Chest Key - Grade 6','false','none',10,'stackable','steel','none',-1,-1,1200,0,'true','true','true','true','2229-6;','false'), +(6671,'Deluxe Chest Key - Grade 7','false','none',10,'stackable','steel','none',-1,-1,1800,0,'true','true','true','true','2229-7;','false'), +(6672,'Deluxe Chest Key - Grade 8','false','none',10,'stackable','steel','none',-1,-1,2400,0,'true','true','true','true','2229-8;','false'), (6673,'Festival Adena','false','none',0,'stackable','steel','none',-1,-1,0,0,'false','false','true','false','0-0;','false'), (6688,'Forgotten Blade Edge','false','material',60,'stackable','liquid','none',-1,-1,92529,0,'true','true','true','true','0-0;','false'), (6689,'Basalt Battlehammer Head','false','material',60,'stackable','liquid','none',-1,-1,94306,0,'true','true','true','true','0-0;','false'), @@ -6203,7 +6203,7 @@ INSERT INTO `etcitem` VALUES (8057,'Silver Hemocyte','false','none',0,'stackable','steel','none',-1,-1,0,0,'true','true','true','true','0-0;','false'), (8058,'Lockup Research Report','false','quest',0,'stackable','paper','none',-1,-1,0,0,'true','true','true','true','0-0;','false'), (8059,'Research Report','false','none',0,'stackable','paper','none',-1,-1,0,0,'true','true','true','true','0-0;','true'), -(8060,'Key of Enigma','false','none',0,'stackable','paper','none',-1,-1,0,0,'true','true','true','true','0-0;','false'), +(8060,'Key of Enigma','false','none',0,'stackable','paper','none',-1,-1,0,0,'true','true','true','true','2260-1;','false'), (8061,'Scribbled Memo','false','quest',0,'stackable','paper','none',-1,-1,0,0,'true','true','true','true','0-0;','false'), (8062,'Blood of Maille Lizardman','false','quest',0,'stackable','paper','none',-1,-1,0,0,'true','true','true','true','0-0;','false'), (8063,'Leg of King Araneid','false','quest',0,'stackable','paper','none',-1,-1,0,0,'true','true','true','true','0-0;','false'),