gistfile1.diff
Download ZIP Code Revisions 1 Stars 2. Rin4a's scheme buffer (L2J-Server H5-Beta) Raw. Fix it and restart the server'); +} +}. L2J Server; L2J; L2J_Server; Downloads. Server emulation made easy! Download the latest release today and start your own server in a. Users Zoey76 git L2J_Server L2J_Server build.xml.
Index: dist/game/data/scripts.cfg |
--- dist/game/data/scripts.cfg (revision 10413) |
+++ dist/game/data/scripts.cfg (working copy) |
@@ -310,6 +310,7 @@ |
custom/ShadowWeapons/ShadowWeapons.java |
custom/NewbieCoupons/NewbieCoupons.java |
custom/RaidbossInfo/RaidbossInfo.java |
+custom/NpcBuffer/NpcBuffer.java |
custom/NpcLocationInfo/NpcLocationInfo.java |
custom/Validators/SubClassSkills.java |
Index: dist/game/data/scripts/custom/NpcBuffer/NpcBuffer.java |
--- dist/game/data/scripts/custom/NpcBuffer/NpcBuffer.java (revision 0) |
+++ dist/game/data/scripts/custom/NpcBuffer/NpcBuffer.java (working copy) |
@@ -0,0 +1,1970 @@ |
+/* |
+ * Copyright (C) 2004-2014 L2J DataPack |
+ * |
+ * This file is part of L2J DataPack. |
+ * |
+ * L2J DataPack 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. |
+ * |
+ * L2J DataPack 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 custom.NpcBuffer; |
+ |
+import static com.l2jserver.gameserver.util.Util.formatAdena; |
+ |
+import java.sql.Connection; |
+import java.sql.PreparedStatement; |
+import java.sql.ResultSet; |
+import java.sql.SQLException; |
+import java.util.ArrayList; |
+import java.util.Collections; |
+import java.util.List; |
+ |
+import com.l2jserver.Config; |
+import com.l2jserver.L2DatabaseFactory; |
+import com.l2jserver.gameserver.datatables.SkillData; |
+import com.l2jserver.gameserver.instancemanager.QuestManager; |
+import com.l2jserver.gameserver.model.actor.L2Npc; |
+import com.l2jserver.gameserver.model.actor.L2Summon; |
+import com.l2jserver.gameserver.model.actor.instance.L2CubicInstance; |
+import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; |
+import com.l2jserver.gameserver.model.actor.instance.L2PetInstance; |
+import com.l2jserver.gameserver.model.actor.instance.L2ServitorInstance; |
+import com.l2jserver.gameserver.model.actor.stat.PcStat; |
+import com.l2jserver.gameserver.model.actor.stat.SummonStat; |
+import com.l2jserver.gameserver.model.actor.status.PcStatus; |
+import com.l2jserver.gameserver.model.actor.status.SummonStatus; |
+import com.l2jserver.gameserver.model.effects.L2EffectType; |
+import com.l2jserver.gameserver.model.entity.TvTEvent; |
+import com.l2jserver.gameserver.model.olympiad.OlympiadManager; |
+import com.l2jserver.gameserver.model.quest.Quest; |
+import com.l2jserver.gameserver.model.quest.QuestState; |
+import com.l2jserver.gameserver.model.skills.Skill; |
+import com.l2jserver.gameserver.network.SystemMessageId; |
+import com.l2jserver.gameserver.network.serverpackets.ActionFailed; |
+import com.l2jserver.gameserver.network.serverpackets.MagicSkillUse; |
+import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage; |
+import com.l2jserver.gameserver.network.serverpackets.SetSummonRemainTime; |
+import com.l2jserver.gameserver.network.serverpackets.SetupGauge; |
+ |
+public class NpcBuffer extends Quest |
+{ |
+ private static final boolean DEBUG = false; |
+ |
+ private static void print(Exception e) |
+ { |
+ _log.warning('>>>' + e.toString() + '<<<'); |
+ if (DEBUG) |
+ { |
+ e.printStackTrace(); |
+ } |
+ } |
+ |
+ private static final String QUEST_LOADING_INFO = 'Rin4a'; |
+ private static final int NPC_ID = 12; |
+ |
+ private static final String TITLE_NAME = 'Scheme Buffer'; |
+ private static final boolean SCRIPT_RELOAD = false; |
+ private static final boolean SMART_WINDOW = true; |
+ private static final boolean ENABLE_BUFF_SECTION = true; |
+ private static final boolean ENABLE_SCHEME_SYSTEM = true; |
+ private static final boolean ENABLE_HEAL = true; |
+ private static final boolean ENABLE_HEAL_IN_COMBAT = false; |
+ private static final boolean ENABLE_BUFFS = true; |
+ private static final boolean ENABLE_RESIST = true; |
+ private static final boolean ENABLE_SONGS = true; |
+ private static final boolean ENABLE_DANCES = true; |
+ private static final boolean ENABLE_CHANTS = false; |
+ private static final boolean ENABLE_OTHERS = false; |
+ private static final boolean ENABLE_SPECIAL = false; |
+ private static final boolean ENABLE_CUBIC = false; |
+ private static final boolean ENABLE_BUFF_REMOVE = true; |
+ private static final boolean ENABLE_BUFF_SET = true; |
+ private static final boolean BUFF_WITH_KARMA = true; |
+ private static final boolean FREE_BUFFS = false; |
+ private static final boolean TIME_OUT = true; |
+ private static final int TIME_OUT_TIME = 3; |
+ private static final int MIN_LEVEL = 1; |
+ private static final int BUFF_REMOVE_PRICE = 10000; |
+ private static final int HEAL_PRICE = 10000; |
+ private static final int BUFF_PRICE = 1000; |
+ private static final int RESIST_PRICE = 1000; |
+ private static final int SONG_PRICE = 1000; |
+ private static final int DANCE_PRICE = 1000; |
+ private static final int CHANT_PRICE = 1000; |
+ private static final int OTHERS_PRICE = 1000; |
+ private static final int SPECIAL_PRICE = 1000; |
+ private static final int CUBIC_PRICE = 1000; |
+ private static final int BUFF_SET_PRICE = 15000; |
+ private static final int SCHEME_BUFF_PRICE = 20000; |
+ private static final int SCHEMES_PER_PLAYER = 4; |
+ private static final int CONSUMABLE_ID = 57; |
+ private static final int MAX_SCHEME_BUFFS = Config.BUFFS_MAX_AMOUNT; |
+ private static final int MAX_SCHEME_DANCES = Config.DANCES_MAX_AMOUNT; |
+ |
+ private static final String SET_FIGHTER = 'Fighter'; |
+ private static final String SET_MAGE = 'Mage'; |
+ private static final String SET_ALL = 'All'; |
+ private static final String SET_NONE = 'None'; |
+ |
+ private String rebuildMainHtml(QuestState st) |
+ { |
+ String MAIN_HTML_MESSAGE = '<html><head><title>' + TITLE_NAME + '</title></head><body><center><img src='L2UI_CH3.herotower_deco' width=256 height=32>'; |
+ String MESSAGE = '; |
+ int td = 0; |
+ String[] TRS = |
+ { |
+ '<tr><td height=25>', |
+ '</td>', |
+ '<td height=25>', |
+ '</td></tr>' |
+ }; |
+ |
+ final String bottonA, bottonB, bottonC; |
+ if (st.getInt('Pet-On-Off') 1) |
+ { |
+ bottonA = 'Auto Buff Pet'; |
+ bottonB = 'Heal My Pet'; |
+ bottonC = 'Remove Pet Buffs'; |
+ MAIN_HTML_MESSAGE += '<button value='Player Options' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' buffpet 0 0 0' width=130 height=25 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'>'; |
+ } |
+ else |
+ { |
+ bottonA = 'Auto Buff'; |
+ bottonB = 'Heal'; |
+ bottonC = 'Remove Buffs'; |
+ MAIN_HTML_MESSAGE += '<button value='Pet Options' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' buffpet 1 0 0' width=130 height=25 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'>'; |
+ } |
+ |
+ if (ENABLE_BUFF_SECTION) |
+ { |
+ if (ENABLE_BUFFS) |
+ { |
+ if (td > 2) |
+ { |
+ td = 0; |
+ } |
+ MESSAGE += TRS[td] + '<button value='Buffs' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' redirect view_buffs 0 0' width=130 height=25 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'>' + TRS[td + 1]; |
+ td += 2; |
+ } |
+ if (ENABLE_RESIST) |
+ { |
+ if (td > 2) |
+ { |
+ td = 0; |
+ } |
+ MESSAGE += TRS[td] + '<button value='Resist' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' redirect view_resists 0 0' width=130 height=25 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'>' + TRS[td + 1]; |
+ td += 2; |
+ } |
+ if (ENABLE_SONGS) |
+ { |
+ if (td > 2) |
+ { |
+ td = 0; |
+ } |
+ MESSAGE += TRS[td] + '<button value='Songs' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' redirect view_songs 0 0' width=130 height=25 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'>' + TRS[td + 1]; |
+ td += 2; |
+ } |
+ if (ENABLE_DANCES) |
+ { |
+ if (td > 2) |
+ { |
+ td = 0; |
+ } |
+ MESSAGE += TRS[td] + '<button value='Dances' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' redirect view_dances 0 0' width=130 height=25 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'>' + TRS[td + 1]; |
+ td += 2; |
+ } |
+ if (ENABLE_CHANTS) |
+ { |
+ if (td > 2) |
+ { |
+ td = 0; |
+ } |
+ MESSAGE += TRS[td] + '<button value='Chants' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' redirect view_chants 0 0' width=130 height=25 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'>' + TRS[td + 1]; |
+ td += 2; |
+ } |
+ if (ENABLE_SPECIAL) |
+ { |
+ if (td > 2) |
+ { |
+ td = 0; |
+ } |
+ MESSAGE += TRS[td] + '<button value='Special' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' redirect view_special 0 0' width=130 height=25 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'>' + TRS[td + 1]; |
+ td += 2; |
+ } |
+ if (ENABLE_OTHERS) |
+ { |
+ if (td > 2) |
+ { |
+ td = 0; |
+ } |
+ MESSAGE += TRS[td] + '<button value='Others' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' redirect view_others 0 0' width=130 height=25 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'>' + TRS[td + 1]; |
+ td += 2; |
+ } |
+ } |
+ |
+ if (ENABLE_CUBIC) |
+ { |
+ if (td > 2) |
+ { |
+ td = 0; |
+ } |
+ MESSAGE += TRS[td] + '<button value='Cubics' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' redirect view_cubic 0 0' width=130 height=25 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'>' + TRS[td + 1]; |
+ td += 2; |
+ } |
+ |
+ if (MESSAGE.length() > 0) |
+ { |
+ MAIN_HTML_MESSAGE += '<BR1><table width=100% border=0 cellspacing=0 cellpadding=1 bgcolor=444444><tr>' + '<td><font color=00FFFF>Buffs:</font></td><td align=right>...</td></tr></table>' + '<BR1><table cellspacing=0 cellpadding=0>' + MESSAGE + '</table>'; |
+ MESSAGE = '; |
+ td = 0; |
+ } |
+ |
+ if (ENABLE_BUFF_SET) |
+ { |
+ if (td > 2) |
+ { |
+ td = 0; |
+ } |
+ MESSAGE += TRS[td] + '<button value=' + bottonA + ' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' castBuffSet 0 0 0' width=130 height=25 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'>' + TRS[td + 1]; |
+ td += 2; |
+ } |
+ |
+ if (ENABLE_HEAL) |
+ { |
+ if (td > 2) |
+ { |
+ td = 0; |
+ } |
+ MESSAGE += TRS[td] + '<button value=' + bottonB + ' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' heal 0 0 0' width=130 height=25 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'>' + TRS[td + 1]; |
+ td += 2; |
+ } |
+ |
+ if (ENABLE_BUFF_REMOVE) |
+ { |
+ if (td > 2) |
+ { |
+ td = 0; |
+ } |
+ MESSAGE += TRS[td] + '<button value=' + bottonC + ' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' removeBuffs 0 0 0' width=130 height=25 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'>' + TRS[td + 1]; |
+ td += 2; |
+ } |
+ |
+ if (MESSAGE.length() > 0) |
+ { |
+ MAIN_HTML_MESSAGE += '<BR1><table width=100% border=0 cellspacing=0 cellpadding=1 bgcolor=444444><tr>' + '<td><font color=00FFFF>Preset:</font></td><td align=right><font color=LEVEL>' + formatAdena(BUFF_SET_PRICE) + '</font> adena</td></tr></table>' + '<BR1><table cellspacing=0 cellpadding=0>' + MESSAGE + '</table>'; |
+ MESSAGE = '; |
+ td = 0; |
+ } |
+ |
+ if (ENABLE_SCHEME_SYSTEM) |
+ { |
+ MAIN_HTML_MESSAGE += generateScheme(st); |
+ } |
+ |
+ if (st.getPlayer().isGM()) |
+ { |
+ MAIN_HTML_MESSAGE += '<br><button value='GM Manage Buffs' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' redirect manage_buffs 0 0' width=130 height=25 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'>'; |
+ } |
+ MAIN_HTML_MESSAGE += '<br><font color=303030>' + TITLE_NAME + '</font>' + '</center></body></html>'; |
+ return MAIN_HTML_MESSAGE; |
+ } |
+ |
+ private String generateScheme(QuestState st) |
+ { |
+ List<String> schemeName = new ArrayList<>(); |
+ List<String> schemeId = new ArrayList<>(); |
+ String HTML = '; |
+ try (Connection con = L2DatabaseFactory.getInstance().getConnection()) |
+ { |
+ PreparedStatement rss = con.prepareStatement('SELECT * FROM npcbuffer_scheme_list WHERE player_id=?'); |
+ rss.setInt(1, st.getPlayer().getObjectId()); |
+ ResultSet action = rss.executeQuery(); |
+ while (action.next()) |
+ { |
+ schemeName.add(action.getString('scheme_name')); |
+ schemeId.add(action.getString('id')); |
+ } |
+ } |
+ catch (SQLException e) |
+ { |
+ print(e); |
+ } |
+ HTML += '<BR1><table width=100% border=0 cellspacing=0 cellpadding=1 bgcolor=444444><tr>' + '<td><font color=00FFFF>Scheme:</font></td><td align=right><font color=LEVEL>' + formatAdena(SCHEME_BUFF_PRICE) + '</font> adena</TD></TR></table>' + '<BR1><table cellspacing=0 cellpadding=0>'; |
+ if (schemeName.size() > 0) |
+ { |
+ String MESSAGE = '; |
+ int td = 0; |
+ String[] TRS = |
+ { |
+ '<tr><td>', |
+ '</td>', |
+ '<td>', |
+ '</td></tr>' |
+ }; |
+ for (int i = 0; i < schemeName.size(); ++i) |
+ { |
+ if (td > 2) |
+ { |
+ td = 0; |
+ } |
+ MESSAGE += TRS[td] + '<button value=' + schemeName.get(i) + ' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' cast ' + schemeId.get(i) + ' x x' width=130 height=25 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'>' + TRS[td + 1]; |
+ td += 2; |
+ } |
+ |
+ if (MESSAGE.length() > 0) |
+ { |
+ HTML += '<table>' + MESSAGE + '</table>'; |
+ } |
+ } |
+ |
+ if (schemeName.size() < SCHEMES_PER_PLAYER) |
+ { |
+ HTML += '<BR1><table><tr><td><button value='Create' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' create_1 x x x' width=85 height=25 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'></td>'; |
+ } |
+ else |
+ { |
+ HTML += '<BR1><table width=100><tr>'; |
+ } |
+ |
+ if (schemeName.size() > 0) |
+ { |
+ HTML += '<td><button value='Edit' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' edit_1 x x x' width=85 height=25 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'></td>' + '<td><button value='Delete' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' delete_1 x x x' width=85 height=25 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'></td></tr></table>'; |
+ } |
+ else |
+ { |
+ HTML += '</tr></table>'; |
+ } |
+ return HTML; |
+ } |
+ |
+ private String reloadPanel(QuestState st) |
+ { |
+ return '<html><head><title>' + TITLE_NAME + '</title></head><body><center><img src='L2UI_CH3.herotower_deco' width=256 height=32><br>' + '<font color=303030>' + TITLE_NAME + '</font><br>' + '<img src='L2UI.SquareGray' width=250 height=1><br>' + '<table width=260 border=0 bgcolor=444444>' + '<tr><td><br></td></tr>' + '<tr><td align=center><font color=FFFFFF>This option can be seen by GMs only and it<br1>allow to update any changes made in the<br1>script. You can disable this option in<br1>the settings section within the Script.<br><font color=LEVEL>Do you want to update the SCRIPT?</font></font></td></tr>' + '<tr><td></td></tr></table><br>' + '<img src='L2UI.SquareGray' width=250 height=1><br><br>' + '<button value='Yes' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' reloadscript 1 0 0' width=50 height=25 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'>' + '<button value='No' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' reloadscript 0 0 0' width=50 height=25 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'>' + '</center></body></html>'; |
+ } |
+ |
+ private String getItemNameHtml(QuestState st, int itemval) |
+ { |
+ return '&#' + itemval + ';'; |
+ } |
+ |
+ private int getBuffCount(String scheme) |
+ { |
+ int count = 0; |
+ try (Connection con = L2DatabaseFactory.getInstance().getConnection()) |
+ { |
+ PreparedStatement rss = con.prepareStatement('SELECT buff_class FROM npcbuffer_scheme_contents WHERE scheme_id=?'); |
+ rss.setString(1, scheme); |
+ ResultSet action = rss.executeQuery(); |
+ while (action.next()) |
+ { |
+ ++count; |
+ } |
+ } |
+ catch (SQLException e) |
+ { |
+ print(e); |
+ } |
+ return count; |
+ } |
+ |
+ private String getBuffType(int id) |
+ { |
+ String val = 'none'; |
+ try (Connection con = L2DatabaseFactory.getInstance().getConnection()) |
+ { |
+ PreparedStatement act = con.prepareStatement('SELECT buffType FROM npcbuffer_buff_list WHERE buffId=? LIMIT 1'); |
+ act.setInt(1, id); |
+ ResultSet rs = act.executeQuery(); |
+ if (rs.next()) |
+ { |
+ val = rs.getString('buffType'); |
+ } |
+ } |
+ catch (SQLException e) |
+ { |
+ print(e); |
+ } |
+ return val; |
+ } |
+ |
+ private boolean isEnabled(int id, int level) |
+ { |
+ boolean val = false; |
+ try (Connection con = L2DatabaseFactory.getInstance().getConnection()) |
+ { |
+ PreparedStatement act = con.prepareStatement('SELECT canUse FROM npcbuffer_buff_list WHERE buffId=? AND buffLevel=? LIMIT 1'); |
+ act.setInt(1, id); |
+ act.setInt(2, level); |
+ ResultSet rs = act.executeQuery(); |
+ if (rs.next()) |
+ { |
+ if ('1'.equals(rs.getString('canUse'))) |
+ { |
+ val = true; |
+ } |
+ } |
+ } |
+ catch (SQLException e) |
+ { |
+ print(e); |
+ } |
+ return val; |
+ } |
+ |
+ private boolean isUsed(String scheme, int id, int level) |
+ { |
+ boolean used = false; |
+ try (Connection con = L2DatabaseFactory.getInstance().getConnection()) |
+ { |
+ PreparedStatement rss = con.prepareStatement('SELECT id FROM npcbuffer_scheme_contents WHERE scheme_id=? AND skill_id=? AND skill_level=? LIMIT 1'); |
+ rss.setString(1, scheme); |
+ rss.setInt(2, id); |
+ rss.setInt(3, level); |
+ ResultSet action = rss.executeQuery(); |
+ if (action.next()) |
+ { |
+ used = true; |
+ } |
+ } |
+ catch (SQLException e) |
+ { |
+ print(e); |
+ } |
+ return used; |
+ } |
+ |
+ private int getClassBuff(String id) |
+ { |
+ int val = 0; |
+ try (Connection con = L2DatabaseFactory.getInstance().getConnection()) |
+ { |
+ PreparedStatement getTipo = con.prepareStatement('SELECT buff_class FROM npcbuffer_buff_list WHERE buffId=?'); |
+ getTipo.setString(1, id); |
+ ResultSet gt = getTipo.executeQuery(); |
+ if (gt.next()) |
+ { |
+ val = gt.getInt('buff_class'); |
+ } |
+ } |
+ catch (SQLException e) |
+ { |
+ print(e); |
+ } |
+ return val; |
+ } |
+ |
+ private String showText(QuestState st, String type, String text, boolean buttonEnabled, String buttonName, String location) |
+ { |
+ String MESSAGE = '<html><head><title>' + TITLE_NAME + '</title></head><body><center><img src='L2UI_CH3.herotower_deco' width=256 height=32><br>'; |
+ MESSAGE += '<font color=LEVEL>' + type + '</font><br>' + text + '<br>'; |
+ if (buttonEnabled) |
+ { |
+ MESSAGE += '<button value=' + buttonName + ' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' redirect ' + location + ' 0 0' width=100 height=22 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'>'; |
+ } |
+ MESSAGE += '<font color=303030>' + TITLE_NAME + '</font></center></body></html>'; |
+ st.playSound('ItemSound3.sys_shortage'); |
+ return MESSAGE; |
+ } |
+ |
+ private String reloadConfig(QuestState st) |
+ { |
+ try |
+ { |
+ if (QuestManager.getInstance().reload(QUEST_LOADING_INFO)) |
+ { |
+ st.getPlayer().sendMessage('The script and settings have been reloaded successfully.'); |
+ } |
+ else |
+ { |
+ st.getPlayer().sendMessage('Script Reloaded Failed. you edited something wrong! :P, fix it and restart the server'); |
+ } |
+ } |
+ catch (Exception e) |
+ { |
+ st.getPlayer().sendMessage('Script Reloaded Failed. you edited something wrong! :P, fix it and restart the server'); |
+ print(e); |
+ } |
+ return rebuildMainHtml(st); |
+ } |
+ |
+ private NpcBuffer() |
+ { |
+ super(-1, NpcBuffer.class.getSimpleName(), 'custom'); |
+ addStartNpc(NPC_ID); |
+ addFirstTalkId(NPC_ID); |
+ addTalkId(NPC_ID); |
+ } |
+ |
+ private boolean isPetBuff(QuestState st) |
+ { |
+ return st.getInt('Pet-On-Off') != 0; |
+ } |
+ |
+ private String createScheme() |
+ { |
+ return '<html><head><title>' + TITLE_NAME + '</title></head><body><center><img src='L2UI_CH3.herotower_deco' width=256 height=32><br><br>You MUST seprerate new words with a dot (.)<br><br>Scheme name: <edit var='name' width=100><br><br>' + '<button value='Create Scheme' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' create $name no_name x x' width=200 height=20 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'>' + '<br><button value='Back' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' redirect main 0 0' width=100 height=20 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'>' + '<br><font color=303030>' + TITLE_NAME + '</font></center></body></html>'; |
+ } |
+ |
+ private String deleteScheme(L2PcInstance player) |
+ { |
+ String HTML = '<html><head><title>' + TITLE_NAME + '</title></head><body><center><img src='L2UI_CH3.herotower_deco' width=256 height=32><br>Available schemes:<br><br>'; |
+ try (Connection con = L2DatabaseFactory.getInstance().getConnection()) |
+ { |
+ PreparedStatement rss = con.prepareStatement('SELECT * FROM npcbuffer_scheme_list WHERE player_id=?'); |
+ rss.setInt(1, player.getObjectId()); |
+ ResultSet action = rss.executeQuery(); |
+ while (action.next()) |
+ { |
+ HTML += '<button value=' + action.getString('scheme_name') + ' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' delete_c ' + action.getString('id') + ' ' + action.getString('scheme_name') + ' x' width=200 height=25 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'>'; |
+ } |
+ } |
+ catch (SQLException e) |
+ { |
+ print(e); |
+ } |
+ HTML += '<br><button value='Back' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' redirect main 0 0' width=100 height=20 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'>' + '<br><font color=303030>' + TITLE_NAME + '</font></center></body></html>'; |
+ return HTML; |
+ } |
+ |
+ private String editScheme(L2PcInstance player) |
+ { |
+ String HTML = '<html><head><title>' + TITLE_NAME + '</title></head><body><center><img src='L2UI_CH3.herotower_deco' width=256 height=32><br>Select a scheme that you would like to manage:<br><br>'; |
+ try (Connection con = L2DatabaseFactory.getInstance().getConnection()) |
+ { |
+ PreparedStatement rss = con.prepareStatement('SELECT * FROM npcbuffer_scheme_list WHERE player_id=?'); |
+ rss.setInt(1, player.getObjectId()); |
+ ResultSet action = rss.executeQuery(); |
+ while (action.next()) |
+ { |
+ String name = action.getString('scheme_name'); |
+ String id = action.getString('id'); |
+ HTML += '<button value=' + name + ' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' manage_scheme_select ' + id + ' x x' width=200 height=20 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'>'; |
+ } |
+ } |
+ catch (SQLException e) |
+ { |
+ print(e); |
+ } |
+ HTML += '<br><button value='Back' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' redirect main 0 0' width=100 height=20 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'>' + '<br><font color=303030>' + TITLE_NAME + '</font></center></body></html>'; |
+ return HTML; |
+ } |
+ |
+ private String getOptionList(String scheme) |
+ { |
+ int bcount = getBuffCount(scheme); |
+ String HTML = '<html><head><title>' + TITLE_NAME + '</title></head><body><center><img src='L2UI_CH3.herotower_deco' width=256 height=32><br>There are <font color=LEVEL>' + bcount + '</font> buffs in current scheme!<br><br>'; |
+ if (bcount < (MAX_SCHEME_BUFFS + MAX_SCHEME_DANCES)) |
+ { |
+ HTML += '<button value='Add buffs' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' manage_scheme_1 ' + scheme + ' 1 x' width=200 height=20 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'>'; |
+ } |
+ if (bcount > 0) |
+ { |
+ HTML += '<button value='Remove buffs' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' manage_scheme_2 ' + scheme + ' 1 x' width=200 height=25 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'>'; |
+ } |
+ HTML += '<br><button value='Back' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' edit_1 0 0 0' width=100 height=20 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'>' + '<button value='Home' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' redirect main 0 0' width=100 height=20 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'>' + '<br><font color=303030>' + TITLE_NAME + '</font></center></body></html>'; |
+ return HTML; |
+ } |
+ |
+ private String buildHtml(String buffType) |
+ { |
+ String HTML_MESSAGE = '<html><head><title>' + TITLE_NAME + '</title></head><body><center><br>'; |
+ |
+ List<String> availableBuffs = new ArrayList<>(); |
+ try (Connection con = L2DatabaseFactory.getInstance().getConnection()) |
+ { |
+ PreparedStatement getList = con.prepareStatement('SELECT buffId,buffLevel FROM npcbuffer_buff_list WHERE buffType=' + buffType + ' AND canUse=1 ORDER BY Buff_Class ASC, id'); |
+ ResultSet rs = getList.executeQuery(); |
+ while (rs.next()) |
+ { |
+ int bId = rs.getInt('buffId'); |
+ int bLevel = rs.getInt('buffLevel'); |
+ String bName = SkillData.getInstance().getSkill(bId, bLevel).getName(); |
+ bName = bName.replace(' ', '+'); |
+ availableBuffs.add(bName + '_' + bId + '_' + bLevel); |
+ } |
+ } |
+ catch (SQLException e) |
+ { |
+ print(e); |
+ } |
+ |
+ if (availableBuffs.size() 0) |
+ { |
+ HTML_MESSAGE += 'No buffs are available at this moment!'; |
+ } |
+ else |
+ { |
+ if (FREE_BUFFS) |
+ { |
+ HTML_MESSAGE += 'All buffs are for <font color=LEVEL>free</font>!'; |
+ } |
+ else |
+ { |
+ int price = 0; |
+ switch (buffType) |
+ { |
+ case 'buff': |
+ price = BUFF_PRICE; |
+ break; |
+ case 'resist': |
+ price = RESIST_PRICE; |
+ break; |
+ case 'song': |
+ price = SONG_PRICE; |
+ break; |
+ case 'dance': |
+ price = DANCE_PRICE; |
+ break; |
+ case 'chant': |
+ price = CHANT_PRICE; |
+ break; |
+ case 'others': |
+ price = OTHERS_PRICE; |
+ break; |
+ case 'special': |
+ price = SPECIAL_PRICE; |
+ break; |
+ case 'cubic': |
+ price = CUBIC_PRICE; |
+ break; |
+ default: |
+ if (DEBUG) |
+ { |
+ throw new RuntimeException(); |
+ } |
+ } |
+ HTML_MESSAGE += 'All special buffs cost <font color=LEVEL>' + formatAdena(price) + '</font> adena!'; |
+ } |
+ HTML_MESSAGE += '<BR1><table>'; |
+ for (String buff : availableBuffs) |
+ { |
+ buff = buff.replace('_', ' '); |
+ String[] buffSplit = buff.split(' '); |
+ String name = buffSplit[0]; |
+ int id = Integer.parseInt(buffSplit[1]); |
+ int level = Integer.parseInt(buffSplit[2]); |
+ name = name.replace('+', ' '); |
+ HTML_MESSAGE += '<tr><td>' + getSkillIconHtml(id, level) + '</td><td><button value=' + name + ' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' giveBuffs ' + id + ' ' + level + ' ' + buffType + ' width=190 height=32 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'></td></tr>'; |
+ } |
+ HTML_MESSAGE += '</table>'; |
+ } |
+ |
+ HTML_MESSAGE += '<br><button value='Back' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' redirect main 0 0' width=100 height=20 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'>' + '<br><font color=303030>' + TITLE_NAME + '</font></center></body></html>'; |
+ return HTML_MESSAGE; |
+ } |
+ |
+ private String generateQuery(int case1, int case2) |
+ { |
+ StringBuilder qry = new StringBuilder(); |
+ if (ENABLE_BUFFS) |
+ { |
+ if (case1 < MAX_SCHEME_BUFFS) |
+ { |
+ qry.append(','buff'); |
+ } |
+ } |
+ if (ENABLE_RESIST) |
+ { |
+ if (case1 < MAX_SCHEME_BUFFS) |
+ { |
+ qry.append(','resist'); |
+ } |
+ } |
+ if (ENABLE_SONGS) |
+ { |
+ if (case2 < MAX_SCHEME_DANCES) |
+ { |
+ qry.append(','song'); |
+ } |
+ } |
+ if (ENABLE_DANCES) |
+ { |
+ if (case2 < MAX_SCHEME_DANCES) |
+ { |
+ qry.append(','dance'); |
+ } |
+ } |
+ if (ENABLE_CHANTS) |
+ { |
+ if (case1 < MAX_SCHEME_BUFFS) |
+ { |
+ qry.append(','chant'); |
+ } |
+ } |
+ if (ENABLE_OTHERS) |
+ { |
+ if (case1 < MAX_SCHEME_BUFFS) |
+ { |
+ qry.append(','others'); |
+ } |
+ } |
+ if (ENABLE_SPECIAL) |
+ { |
+ if (case1 < MAX_SCHEME_BUFFS) |
+ { |
+ qry.append(','special'); |
+ } |
+ } |
+ if (qry.length() > 0) |
+ { |
+ qry.deleteCharAt(0); |
+ } |
+ return qry.toString(); |
+ } |
+ |
+ private String viewAllSchemeBuffs$getBuffCount(String scheme) |
+ { |
+ int count = 0; |
+ int D_S_Count = 0; |
+ int B_Count = 0; |
+ try (Connection con = L2DatabaseFactory.getInstance().getConnection()) |
+ { |
+ PreparedStatement rss = con.prepareStatement('SELECT buff_class FROM npcbuffer_scheme_contents WHERE scheme_id=?'); |
+ rss.setString(1, scheme); |
+ ResultSet action = rss.executeQuery(); |
+ while (action.next()) |
+ { |
+ ++count; |
+ int val = action.getInt('buff_class'); |
+ if ((val 1) || (val 2)) |
+ { |
+ ++D_S_Count; |
+ } |
+ else |
+ { |
+ ++B_Count; |
+ } |
+ } |
+ } |
+ catch (SQLException e) |
+ { |
+ print(e); |
+ } |
+ String res = count + ' ' + B_Count + ' ' + D_S_Count; |
+ return res; |
+ } |
+ |
+ private String viewAllSchemeBuffs(String scheme, String page, String action) |
+ { |
+ List<String> buffList = new ArrayList<>(); |
+ String HTML_MESSAGE = '<html><head><title>' + TITLE_NAME + '</title></head><body><center><br>'; |
+ String[] eventSplit = viewAllSchemeBuffs$getBuffCount(scheme).split(' '); |
+ int TOTAL_BUFF = Integer.parseInt(eventSplit[0]); |
+ int BUFF_COUNT = Integer.parseInt(eventSplit[1]); |
+ int DANCE_SONG = Integer.parseInt(eventSplit[2]); |
+ try (Connection con = L2DatabaseFactory.getInstance().getConnection()) |
+ { |
+ if (action.equals('add')) |
+ { |
+ HTML_MESSAGE += 'You can add <font color=LEVEL>' + (MAX_SCHEME_BUFFS - BUFF_COUNT) + '</font> Buffs and <font color=LEVEL>' + (MAX_SCHEME_DANCES - DANCE_SONG) + '</font> Dances more!'; |
+ String QUERY = 'SELECT * FROM npcbuffer_buff_list WHERE buffType IN (' + generateQuery(BUFF_COUNT, DANCE_SONG) + ') AND canUse=1 ORDER BY Buff_Class ASC, id'; |
+ PreparedStatement getBuffCount = con.prepareStatement(QUERY); |
+ ResultSet rss = getBuffCount.executeQuery(); |
+ while (rss.next()) |
+ { |
+ String name = SkillData.getInstance().getSkill(rss.getInt('buffId'), rss.getInt('buffLevel')).getName(); |
+ name = name.replace(' ', '+'); |
+ buffList.add(name + '_' + rss.getInt('buffId') + '_' + rss.getInt('buffLevel')); |
+ } |
+ } |
+ else if (action.equals('remove')) |
+ { |
+ HTML_MESSAGE += 'You have <font color=LEVEL>' + BUFF_COUNT + '</font> Buffs and <font color=LEVEL>' + DANCE_SONG + '</font> Dances'; |
+ String QUERY = 'SELECT * FROM npcbuffer_scheme_contents WHERE scheme_id=? ORDER BY Buff_Class ASC, id'; |
+ PreparedStatement getBuffCount = con.prepareStatement(QUERY); |
+ getBuffCount.setString(1, scheme); |
+ ResultSet rss = getBuffCount.executeQuery(); |
+ while (rss.next()) |
+ { |
+ String name = SkillData.getInstance().getSkill(rss.getInt('skill_id'), rss.getInt('skill_level')).getName(); |
+ name = name.replace(' ', '+'); |
+ buffList.add(name + '_' + rss.getInt('skill_id') + '_' + rss.getInt('skill_level')); |
+ } |
+ } |
+ else if (DEBUG) |
+ { |
+ throw new RuntimeException(); |
+ } |
+ } |
+ catch (SQLException e) |
+ { |
+ print(e); |
+ } |
+ |
+ HTML_MESSAGE += '<BR1><table border=0><tr>'; |
+ final int buffsPerPage = 20; |
+ final String width, pageName; |
+ int pc = ((buffList.size() - 1) / buffsPerPage) + 1; |
+ if (pc > 5) |
+ { |
+ width = '25'; |
+ pageName = 'P'; |
+ } |
+ else |
+ { |
+ width = '50'; |
+ pageName = 'Page '; |
+ } |
+ for (int ii = 1; ii <= pc; ++ii) |
+ { |
+ if (ii Integer.parseInt(page)) |
+ { |
+ HTML_MESSAGE += '<td width=' + width + ' align=center><font color=LEVEL>' + pageName + ii + '</font></td>'; |
+ } |
+ else if (action.equals('add')) |
+ { |
+ HTML_MESSAGE += '<td width=' + width + '>' + '<button value=' + pageName + ii + ' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' manage_scheme_1 ' + scheme + ' ' + ii + ' x' width=' + width + ' height=20 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'></td>'; |
+ } |
+ else if (action.equals('remove')) |
+ { |
+ HTML_MESSAGE += '<td width=' + width + '>' + '<button value=' + pageName + ii + ' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' manage_scheme_2 ' + scheme + ' ' + ii + ' x' width=' + width + ' height=20 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'></td>'; |
+ } |
+ else if (DEBUG) |
+ { |
+ throw new RuntimeException(); |
+ } |
+ } |
+ HTML_MESSAGE += '</tr></table>'; |
+ |
+ int limit = buffsPerPage * Integer.parseInt(page); |
+ int start = limit - buffsPerPage; |
+ int end = Math.min(limit, buffList.size()); |
+ int k = 0; |
+ for (int i = start; i < end; ++i) |
+ { |
+ String value = buffList.get(i); |
+ value = value.replace('_', ' '); |
+ String[] extr = value.split(' '); |
+ String name = extr[0]; |
+ name = name.replace('+', ' '); |
+ int id = Integer.parseInt(extr[1]); |
+ int level = Integer.parseInt(extr[2]); |
+ if (action.equals('add')) |
+ { |
+ if (!isUsed(scheme, id, level)) |
+ { |
+ if ((k % 2) != 0) |
+ { |
+ HTML_MESSAGE += '<BR1><table border=0 bgcolor=333333>'; |
+ } |
+ else |
+ { |
+ HTML_MESSAGE += '<BR1><table border=0 bgcolor=292929>'; |
+ } |
+ HTML_MESSAGE += '<tr><td width=35>' + getSkillIconHtml(id, level) + '</td><td fixwidth=170>' + name + '</td><td><button value='Add' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' add_buff ' + scheme + '_' + id + '_' + level + ' ' + page + ' ' + TOTAL_BUFF + ' width=65 height=25 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'></td>' + '</tr></table>'; |
+ k += 1; |
+ } |
+ } |
+ else if (action.equals('remove')) |
+ { |
+ if ((k % 2) != 0) |
+ { |
+ HTML_MESSAGE += '<BR1><table border=0 bgcolor=333333>'; |
+ } |
+ else |
+ { |
+ HTML_MESSAGE += '<BR1><table border=0 bgcolor=292929>'; |
+ } |
+ HTML_MESSAGE += '<tr><td width=35>' + getSkillIconHtml(id, level) + '</td><td fixwidth=170>' + name + '</td><td><button value='Remove' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' remove_buff ' + scheme + '_' + id + '_' + level + ' ' + page + ' ' + TOTAL_BUFF + ' width=65 height=25 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'></td>' + '</table>'; |
+ k += 1; |
+ } |
+ } |
+ HTML_MESSAGE += '<br><br><button value='Back' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' manage_scheme_select ' + scheme + ' x x' width=100 height=20 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'>' + '<button value='Home' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' redirect main 0 0' width=100 height=20 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'>' + '<br><font color=303030>' + TITLE_NAME + '</font></center></body></html>'; |
+ return HTML_MESSAGE; |
+ } |
+ |
+ private String viewAllBuffTypes() |
+ { |
+ String HTML_MESSAGE = '<html><head><title>' + TITLE_NAME + '</title></head><body><center><img src='L2UI_CH3.herotower_deco' width=256 height=32><br>'; |
+ HTML_MESSAGE += '<font color=LEVEL>[Buff management]</font><br>'; |
+ if (ENABLE_BUFFS) |
+ { |
+ HTML_MESSAGE += '<button value='Buffs' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' edit_buff_list buff Buffs 1' width=200 height=22 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'>'; |
+ } |
+ if (ENABLE_RESIST) |
+ { |
+ HTML_MESSAGE += '<button value='Resist Buffs' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' edit_buff_list resist Resists 1' width=200 height=22 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'>'; |
+ } |
+ if (ENABLE_SONGS) |
+ { |
+ HTML_MESSAGE += '<button value='Songs' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' edit_buff_list song Songs 1' width=200 height=22 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'>'; |
+ } |
+ if (ENABLE_DANCES) |
+ { |
+ HTML_MESSAGE += '<button value='Dances' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' edit_buff_list dance Dances 1' width=200 height=22 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'>'; |
+ } |
+ if (ENABLE_CHANTS) |
+ { |
+ HTML_MESSAGE += '<button value='Chants' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' edit_buff_list chant Chants 1' width=200 height=22 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'>'; |
+ } |
+ if (ENABLE_SPECIAL) |
+ { |
+ HTML_MESSAGE += '<button value='Special Buffs' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' edit_buff_list special Special_Buffs 1' width=200 height=22 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'>'; |
+ } |
+ if (ENABLE_OTHERS) |
+ { |
+ HTML_MESSAGE += '<button value='Others Buffs' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' edit_buff_list others Others_Buffs 1' width=200 height=22 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'>'; |
+ } |
+ if (ENABLE_CUBIC) |
+ { |
+ HTML_MESSAGE += '<button value='Cubics' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' edit_buff_list cubic cubic_Buffs 1' width=200 height=22 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'>'; |
+ } |
+ if (ENABLE_BUFF_SET) |
+ { |
+ HTML_MESSAGE += '<button value='Buff Sets' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' edit_buff_list set Buff_Sets 1' width=200 height=22 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'><br>'; |
+ } |
+ HTML_MESSAGE += '<button value='Back' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' redirect main 0 0' width=100 height=20 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'>' + '<br><font color=303030>' + TITLE_NAME + '</font></center></body></html>'; |
+ return HTML_MESSAGE; |
+ } |
+ |
+ private String viewAllBuffs(String type, String typeName, String page) |
+ { |
+ List<String> buffList = new ArrayList<>(); |
+ String HTML_MESSAGE = '<html><head><title>' + TITLE_NAME + '</title></head><body><center><img src='L2UI_CH3.herotower_deco' width=256 height=32><br>'; |
+ typeName = typeName.replace('_', ' '); |
+ try (Connection con = L2DatabaseFactory.getInstance().getConnection()) |
+ { |
+ final PreparedStatement getBuffCount; |
+ if (type.equals('set')) |
+ { |
+ getBuffCount = con.prepareStatement('SELECT * FROM npcbuffer_buff_list WHERE buffType IN (' + generateQuery(0, 0) + ') AND canUse=1'); |
+ } |
+ else |
+ { |
+ getBuffCount = con.prepareStatement('SELECT * FROM npcbuffer_buff_list WHERE buffType=?'); |
+ getBuffCount.setString(1, type); |
+ } |
+ ResultSet rss = getBuffCount.executeQuery(); |
+ while (rss.next()) |
+ { |
+ String name = SkillData.getInstance().getSkill(rss.getInt('buffId'), rss.getInt('buffLevel')).getName(); |
+ name = name.replace(' ', '+'); |
+ String usable = rss.getString('canUse'); |
+ String forClass = rss.getString('forClass'); |
+ String skill_id = rss.getString('buffId'); |
+ String skill_level = rss.getString('buffLevel'); |
+ buffList.add(name + '_' + forClass + '_' + page + '_' + usable + '_' + skill_id + '_' + skill_level); |
+ } |
+ } |
+ catch (SQLException e) |
+ { |
+ print(e); |
+ } |
+ Collections.sort(buffList); |
+ |
+ HTML_MESSAGE += '<font color=LEVEL>[Buff management - ' + typeName + ' - Page ' + page + ']</font><br><table border=0><tr>'; |
+ final int buffsPerPage; |
+ if (type.equals('set')) |
+ { |
+ buffsPerPage = 12; |
+ } |
+ else |
+ { |
+ buffsPerPage = 20; |
+ } |
+ final String width, pageName; |
+ int pc = ((buffList.size() - 1) / buffsPerPage) + 1; |
+ if (pc > 5) |
+ { |
+ width = '25'; |
+ pageName = 'P'; |
+ } |
+ else |
+ { |
+ width = '50'; |
+ pageName = 'Page '; |
+ } |
+ typeName = typeName.replace(' ', '_'); |
+ for (int ii = 1; ii <= pc; ++ii) |
+ { |
+ if (ii Integer.parseInt(page)) |
+ { |
+ HTML_MESSAGE += '<td width=' + width + ' align=center><font color=LEVEL>' + pageName + ii + '</font></td>'; |
+ } |
+ else |
+ { |
+ HTML_MESSAGE += '<td width=' + width + '><button value=' + pageName + ' + ii + ' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' edit_buff_list ' + type + ' ' + typeName + ' ' + ii + ' width=' + width + ' height=20 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'></td>'; |
+ } |
+ } |
+ HTML_MESSAGE += '</tr></table><br>'; |
+ |
+ int limit = buffsPerPage * Integer.parseInt(page); |
+ int start = limit - buffsPerPage; |
+ int end = Math.min(limit, buffList.size()); |
+ for (int i = start; i < end; ++i) |
+ { |
+ String value = buffList.get(i); |
+ value = value.replace('_', ' '); |
+ String[] extr = value.split(' '); |
+ String name = extr[0]; |
+ name = name.replace('+', ' '); |
+ int forClass = Integer.parseInt(extr[1]); |
+ int usable = Integer.parseInt(extr[3]); |
+ String skillPos = extr[4] + '_' + extr[5]; |
+ if ((i % 2) != 0) |
+ { |
+ HTML_MESSAGE += '<BR1><table border=0 bgcolor=333333>'; |
+ } |
+ else |
+ { |
+ HTML_MESSAGE += '<BR1><table border=0 bgcolor=292929>'; |
+ } |
+ if (type.equals('set')) |
+ { |
+ String listOrder = null; |
+ if (forClass 0) |
+ { |
+ listOrder = 'List=' + SET_FIGHTER + ';' + SET_MAGE + ';' + SET_ALL + ';' + SET_NONE + ';'; |
+ } |
+ else if (forClass 1) |
+ { |
+ listOrder = 'List=' + SET_MAGE + ';' + SET_FIGHTER + ';' + SET_ALL + ';' + SET_NONE + ';'; |
+ } |
+ else if (forClass 2) |
+ { |
+ listOrder = 'List=' + SET_ALL + ';' + SET_FIGHTER + ';' + SET_MAGE + ';' + SET_NONE + ';'; |
+ } |
+ else if (forClass 3) |
+ { |
+ listOrder = 'List=' + SET_NONE + ';' + SET_FIGHTER + ';' + SET_MAGE + ';' + SET_ALL + ';'; |
+ } |
+ HTML_MESSAGE += '<tr><td fixwidth=145>' + name + '</td><td width=70><combobox var='newSet' + i + ' width=70 ' + listOrder + '></td>' + '<td width=50><button value='Update' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' changeBuffSet ' + skillPos + ' $newSet' + i + ' ' + page + ' width=50 height=20 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'></td></tr>'; |
+ } |
+ else |
+ { |
+ HTML_MESSAGE += '<tr><td fixwidth=170>' + name + '</td><td width=80>'; |
+ if (usable 1) |
+ { |
+ HTML_MESSAGE += '<button value='Disable' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' editSelectedBuff ' + skillPos + ' 0-' + page + ' ' + type + ' width=80 height=22 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'></td></tr>'; |
+ } |
+ else if (usable 0) |
+ { |
+ HTML_MESSAGE += '<button value='Enable' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' editSelectedBuff ' + skillPos + ' 1-' + page + ' ' + type + ' width=80 height=22 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'></td></tr>'; |
+ } |
+ } |
+ HTML_MESSAGE += '</table>'; |
+ } |
+ HTML_MESSAGE += '<br><br><button value='Back' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' redirect manage_buffs 0 0' width=100 height=20 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'>' + '<button value='Home' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' redirect main 0 0' width=100 height=20 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'>' + '<br><font color=303030>' + TITLE_NAME + '</font></center></body></html>'; |
+ return HTML_MESSAGE; |
+ } |
+ |
+ private void manageSelectedBuff(String buffPosId, String canUseBuff) |
+ { |
+ String[] bpid = buffPosId.split('_'); |
+ String bId = bpid[0]; |
+ String bLvl = bpid[1]; |
+ try (Connection con = L2DatabaseFactory.getInstance().getConnection()) |
+ { |
+ PreparedStatement upd = con.prepareStatement('UPDATE npcbuffer_buff_list SET canUse=? WHERE buffId=? AND buffLevel=? LIMIT 1'); |
+ upd.setString(1, canUseBuff); |
+ upd.setString(2, bId); |
+ upd.setString(3, bLvl); |
+ upd.executeUpdate(); |
+ upd.close(); |
+ } |
+ catch (SQLException e) |
+ { |
+ print(e); |
+ } |
+ } |
+ |
+ private String manageSelectedSet(String id, String newVal, String opt3) |
+ { |
+ String[] bpid = id.split('_'); |
+ String bId = bpid[0]; |
+ String bLvl = bpid[1]; |
+ try (Connection con = L2DatabaseFactory.getInstance().getConnection()) |
+ { |
+ PreparedStatement upd = con.prepareStatement('UPDATE npcbuffer_buff_list SET forClass=? WHERE buffId=? AND bufflevel=?'); |
+ upd.setString(1, newVal); |
+ upd.setString(2, bId); |
+ upd.setString(3, bLvl); |
+ upd.executeUpdate(); |
+ upd.close(); |
+ } |
+ catch (SQLException e) |
+ { |
+ print(e); |
+ } |
+ return viewAllBuffs('set', 'Buff Sets', opt3); |
+ } |
+ |
+ private void addTimeout(QuestState st, int gaugeColor, int amount, int offset) |
+ { |
+ int endtime = (int) ((System.currentTimeMillis() + (amount * 1000)) / 1000); |
+ st.set('blockUntilTime', String.valueOf(endtime)); |
+ st.getPlayer().sendPacket(new SetupGauge(gaugeColor, (amount * 1000) + offset)); |
+ } |
+ |
+ private void heal(L2PcInstance player, boolean isPet) |
+ { |
+ L2Summon target = player.getSummon(); |
+ if (!isPet) |
+ { |
+ PcStatus pcStatus = player.getStatus(); |
+ PcStat pcStat = player.getStat(); |
+ pcStatus.setCurrentHp(pcStat.getMaxHp()); |
+ pcStatus.setCurrentMp(pcStat.getMaxMp()); |
+ pcStatus.setCurrentCp(pcStat.getMaxCp()); |
+ } |
+ else if (target != null) |
+ { |
+ SummonStatus petStatus = target.getStatus(); |
+ SummonStat petStat = target.getStat(); |
+ petStatus.setCurrentHp(petStat.getMaxHp()); |
+ petStatus.setCurrentMp(petStat.getMaxMp()); |
+ if (target instanceof L2PetInstance) |
+ { |
+ L2PetInstance pet = (L2PetInstance) target; |
+ pet.setCurrentFed(pet.getMaxFed()); |
+ player.sendPacket(new SetSummonRemainTime(pet.getMaxFed(), pet.getCurrentFed())); |
+ } |
+ else if (target instanceof L2ServitorInstance) |
+ { |
+ L2ServitorInstance summon = (L2ServitorInstance) target; |
+ // FIXME: summon.setLifeTimeRemaining(summon.getLifeTimeRemaining() - summon.getLifeTime()); |
+ summon.setLifeTimeRemaining(summon.getLifeTimeRemaining() + summon.getLifeTime()); |
+ player.sendPacket(new SetSummonRemainTime(summon.getLifeTime(), summon.getLifeTimeRemaining())); |
+ } |
+ else if (DEBUG) |
+ { |
+ throw new RuntimeException(); |
+ } |
+ } |
+ } |
+ |
+ @Override |
+ public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) |
+ { |
+ if (DEBUG) |
+ { |
+ System.out.println(getScriptName() + '#onAdvEvent(' + event + ',' + (npc null ? 'NULL' : npc.getId() + npc.getName()) + ',' + (player null ? 'NULL' : player.getName()) + ')'); |
+ } |
+ QuestState st = player.getQuestState(QUEST_LOADING_INFO); |
+ String[] eventSplit = event.split(' ', 4); |
+ if (eventSplit.length != 4) |
+ { |
+ player.sendPacket(SystemMessageId.INCORRECT_NAME_TRY_AGAIN); |
+ return null; |
+ } |
+ String eventParam0 = eventSplit[0]; |
+ String eventParam1 = eventSplit[1]; |
+ String eventParam2 = eventSplit[2]; |
+ String eventParam3 = eventSplit[3]; |
+ |
+ switch (eventParam0) |
+ { |
+ case 'reloadscript': |
+ if (eventParam1.equals('1')) |
+ { |
+ return reloadConfig(st); |
+ } |
+ if (eventParam1.equals('0')) |
+ { |
+ return rebuildMainHtml(st); |
+ } |
+ if (DEBUG) |
+ { |
+ throw new RuntimeException(); |
+ } |
+ |
+ case 'redirect': |
+ switch (eventParam1) |
+ { |
+ case 'main': |
+ return rebuildMainHtml(st); |
+ case 'manage_buffs': |
+ return viewAllBuffTypes(); |
+ case 'view_buffs': |
+ return buildHtml('buff'); |
+ case 'view_resists': |
+ return buildHtml('resist'); |
+ case 'view_songs': |
+ return buildHtml('song'); |
+ case 'view_dances': |
+ return buildHtml('dance'); |
+ case 'view_chants': |
+ return buildHtml('chant'); |
+ case 'view_others': |
+ return buildHtml('others'); |
+ case 'view_special': |
+ return buildHtml('special'); |
+ case 'view_cubic': |
+ return buildHtml('cubic'); |
+ default: |
+ if (DEBUG) |
+ { |
+ throw new RuntimeException(); |
+ } |
+ } |
+ |
+ case 'buffpet': |
+ if ((int) (System.currentTimeMillis() / 1000) > st.getInt('blockUntilTime')) |
+ { |
+ st.set('Pet-On-Off', eventParam1); |
+ if (TIME_OUT) |
+ { |
+ addTimeout(st, 3, TIME_OUT_TIME / 2, 600); |
+ } |
+ } |
+ return rebuildMainHtml(st); |
+ |
+ case 'create': |
+ { |
+ String param = eventParam1.replaceAll('[ !' + '' + '#$%&'()*+,/:;<=>?@' + '[' + ' + ']' + '^' + '`{|}~]', '); |
+ if ((param.length() 0) || param.equals('no_name')) |
+ { |
+ player.sendPacket(SystemMessageId.INCORRECT_NAME_TRY_AGAIN); |
+ return showText(st, 'Info', 'Please, enter the scheme name!', true, 'Return', 'main'); |
+ } |
+ try (Connection con = L2DatabaseFactory.getInstance().getConnection()) |
+ { |
+ PreparedStatement ins = con.prepareStatement('INSERT INTO npcbuffer_scheme_list (player_id,scheme_name) VALUES (?,?)'); |
+ ins.setInt(1, player.getObjectId()); |
+ ins.setString(2, param); |
+ ins.executeUpdate(); |
+ ins.close(); |
+ } |
+ catch (SQLException e) |
+ { |
+ print(e); |
+ } |
+ return rebuildMainHtml(st); |
+ } |
+ |
+ case 'delete': |
+ try (Connection con = L2DatabaseFactory.getInstance().getConnection()) |
+ { |
+ PreparedStatement rem; |
+ rem = con.prepareStatement('DELETE FROM npcbuffer_scheme_list WHERE id=? LIMIT 1'); |
+ rem.setString(1, eventParam1); |
+ rem.executeUpdate(); |
+ rem.close(); |
+ rem = con.prepareStatement('DELETE FROM npcbuffer_scheme_contents WHERE scheme_id=?'); |
+ rem.setString(1, eventParam1); |
+ rem.executeUpdate(); |
+ rem.close(); |
+ } |
+ catch (SQLException e) |
+ { |
+ print(e); |
+ } |
+ return rebuildMainHtml(st); |
+ |
+ case 'delete_c': |
+ return '<html><head><title>' + TITLE_NAME + '</title></head><body><center><img src='L2UI_CH3.herotower_deco' width=256 height=32><br>Do you really want to delete ' + eventParam2 + ' scheme?<br><br>' + '<button value='Yes' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' delete ' + eventParam1 + ' x x' width=50 height=25 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'>' + '<button value='No' action='bypass -h Quest ' + QUEST_LOADING_INFO + ' delete_1 x x x' width=50 height=25 back='L2UI_ct1.button_df' fore='L2UI_ct1.button_df'>' + '<br><font color=303030>' + TITLE_NAME + '</font></center></body></html>'; |
+ |
+ case 'create_1': |
+ return createScheme(); |
+ case 'edit_1': |
+ return editScheme(player); |
+ case 'delete_1': |
+ return deleteScheme(player); |
+ case 'manage_scheme_1': |
+ return viewAllSchemeBuffs(eventParam1, eventParam2, 'add'); |
+ case 'manage_scheme_2': |
+ return viewAllSchemeBuffs(eventParam1, eventParam2, 'remove'); |
+ case 'manage_scheme_select': |
+ return getOptionList(eventParam1); |
+ |
+ case 'remove_buff': |
+ { |
+ String[] split = eventParam1.split('_'); |
+ String scheme = split[0]; |
+ String skill = split[1]; |
+ String level = split[2]; |
+ try (Connection con = L2DatabaseFactory.getInstance().getConnection()) |
+ { |
+ PreparedStatement rem = con.prepareStatement('DELETE FROM npcbuffer_scheme_contents WHERE scheme_id=? AND skill_id=? AND skill_level=? LIMIT 1'); |
+ rem.setString(1, scheme); |
+ rem.setString(2, skill); |
+ rem.setString(3, level); |
+ rem.executeUpdate(); |
+ } |
+ catch (SQLException e) |
+ { |
+ print(e); |
+ } |
+ int temp = Integer.parseInt(eventParam3) - 1; |
+ final String HTML; |
+ if (temp <= 0) |
+ { |
+ HTML = getOptionList(scheme); |
+ } |
+ else |
+ { |
+ HTML = viewAllSchemeBuffs(scheme, eventParam2, 'remove'); |
+ } |
+ return HTML; |
+ } |
+ |
+ case 'add_buff': |
+ { |
+ String[] split = eventParam1.split('_'); |
+ String scheme = split[0]; |
+ String skill = split[1]; |
+ String level = split[2]; |
+ int idbuffclass = getClassBuff(skill); |
+ try (Connection con = L2DatabaseFactory.getInstance().getConnection()) |
+ { |
+ PreparedStatement ins = con.prepareStatement('INSERT INTO npcbuffer_scheme_contents (scheme_id,skill_id,skill_level,buff_class) VALUES (?,?,?,?)'); |
+ ins.setString(1, scheme); |
+ ins.setString(2, skill); |
+ ins.setString(3, level); |
+ ins.setInt(4, idbuffclass); |
+ ins.executeUpdate(); |
+ ins.close(); |
+ } |
+ catch (SQLException e) |
+ { |
+ print(e); |
+ } |
+ int temp = Integer.parseInt(eventParam3) + 1; |
+ final String HTML; |
+ if (temp >= (MAX_SCHEME_BUFFS + MAX_SCHEME_DANCES)) |
+ { |
+ HTML = getOptionList(scheme); |
+ } |
+ else |
+ { |
+ HTML = viewAllSchemeBuffs(scheme, eventParam2, 'add'); |
+ } |
+ return HTML; |
+ } |
+ |
+ case 'edit_buff_list': |
+ return viewAllBuffs(eventParam1, eventParam2, eventParam3); |
+ |
+ case 'changeBuffSet': |
+ if (eventParam2.equals(SET_FIGHTER)) |
+ { |
+ eventParam2 = '0'; |
+ } |
+ else if (eventParam2.equals(SET_MAGE)) |
+ { |
+ eventParam2 = '1'; |
+ } |
+ else if (eventParam2.equals(SET_ALL)) |
+ { |
+ eventParam2 = '2'; |
+ } |
+ else if (eventParam2.equals(SET_NONE)) |
+ { |
+ eventParam2 = '3'; |
+ } |
+ else if (DEBUG) |
+ { |
+ throw new RuntimeException(); |
+ } |
+ return manageSelectedSet(eventParam1, eventParam2, eventParam3); |
+ |
+ case 'editSelectedBuff': |
+ { |
+ eventParam2 = eventParam2.replace('-', ' '); |
+ String[] split = eventParam2.split(' '); |
+ String action = split[0]; |
+ String page = split[1]; |
+ manageSelectedBuff(eventParam1, action); |
+ final String typeName; |
+ switch (eventParam3) |
+ { |
+ case 'buff': |
+ typeName = 'Buffs'; |
+ break; |
+ case 'resist': |
+ typeName = 'Resists'; |
+ break; |
+ case 'song': |
+ typeName = 'Songs'; |
+ break; |
+ case 'dance': |
+ typeName = 'Dances'; |
+ break; |
+ case 'chant': |
+ typeName = 'Chants'; |
+ break; |
+ case 'others': |
+ typeName = 'Others_Buffs'; |
+ break; |
+ case 'special': |
+ typeName = 'Special_Buffs'; |
+ break; |
+ case 'cubic': |
+ typeName = 'Cubics'; |
+ break; |
+ default: |
+ throw new RuntimeException(); |
+ } |
+ return viewAllBuffs(eventParam3, typeName, page); |
+ } |
+ |
+ case 'viewSelectedConfig': |
+ throw new RuntimeException(); |
+ |
+ case 'changeConfig': |
+ throw new RuntimeException(); |
+ |
+ case 'heal': |
+ if ((int) (System.currentTimeMillis() / 1000) > st.getInt('blockUntilTime')) |
+ { |
+ if (player.isInCombat() && !ENABLE_HEAL_IN_COMBAT) |
+ { |
+ return showText(st, 'Info', 'You can't use the heal function while in combat.', false, 'Return', 'main'); |
+ } |
+ |
+ if (st.getQuestItemsCount(CONSUMABLE_ID) < HEAL_PRICE) |
+ { |
+ return showText(st, 'Sorry', 'You don't have the enough items:<br>You need: <font color=LEVEL>' + HEAL_PRICE + ' ' + getItemNameHtml(st, CONSUMABLE_ID) + '!', false, '0', '0'); |
+ } |
+ final boolean getSummonbuff = isPetBuff(st); |
+ if (getSummonbuff) |
+ { |
+ if (player.getSummon() != null) |
+ { |
+ heal(player, getSummonbuff); |
+ } |
+ else |
+ { |
+ return showText(st, 'Info', 'You can't use the Pet's options.<br>Summon your pet first!', false, 'Return', 'main'); |
+ } |
+ } |
+ else |
+ { |
+ heal(player, getSummonbuff); |
+ } |
+ st.takeItems(CONSUMABLE_ID, HEAL_PRICE); |
+ if (TIME_OUT) |
+ { |
+ addTimeout(st, 1, TIME_OUT_TIME / 2, 600); |
+ } |
+ } |
+ return SMART_WINDOW ? null : rebuildMainHtml(st); |
+ |
+ case 'removeBuffs': |
+ if ((int) (System.currentTimeMillis() / 1000) > st.getInt('blockUntilTime')) |
+ { |
+ if (st.getQuestItemsCount(CONSUMABLE_ID) < BUFF_REMOVE_PRICE) |
+ { |
+ return showText(st, 'Sorry', 'You don't have the enough items:<br>You need: <font color=LEVEL>' + BUFF_REMOVE_PRICE + ' ' + getItemNameHtml(st, CONSUMABLE_ID) + '!', false, '0', '0'); |
+ } |
+ final boolean getSummonbuff = isPetBuff(st); |
+ if (getSummonbuff) |
+ { |
+ if (player.getSummon() != null) |
+ { |
+ player.getSummon().stopAllEffects(); |
+ } |
+ else |
+ { |
+ return showText(st, 'Info', 'You can't use the Pet's options.<br>Summon your pet first!', false, 'Return', 'main'); |
+ } |
+ } |
+ else |
+ { |
+ player.stopAllEffects(); |
+ if (player.getCubics() != null) |
+ { |
+ for (L2CubicInstance cubic : player.getCubics().values()) |
+ { |
+ cubic.stopAction(); |
+ player.getCubics().remove(cubic); |
+ } |
+ } |
+ } |
+ st.takeItems(CONSUMABLE_ID, BUFF_REMOVE_PRICE); |
+ if (TIME_OUT) |
+ { |
+ addTimeout(st, 2, TIME_OUT_TIME / 2, 600); |
+ } |
+ } |
+ return SMART_WINDOW ? null : rebuildMainHtml(st); |
+ |
+ case 'cast': |
+ if ((int) (System.currentTimeMillis() / 1000) > st.getInt('blockUntilTime')) |
+ { |
+ List<Integer> buffs = new ArrayList<>(); |
+ List<Integer> levels = new ArrayList<>(); |
+ try (Connection con = L2DatabaseFactory.getInstance().getConnection()) |
+ { |
+ PreparedStatement rss = con.prepareStatement('SELECT * FROM npcbuffer_scheme_contents WHERE scheme_id=? ORDER BY id'); |
+ rss.setString(1, eventParam1); |
+ ResultSet action = rss.executeQuery(); |
+ while (action.next()) |
+ { |
+ int id = Integer.parseInt(action.getString('skill_id')); |
+ int level = Integer.parseInt(action.getString('skill_level')); |
+ switch (getBuffType(id)) |
+ { |
+ case 'buff': |
+ if (ENABLE_BUFFS) |
+ { |
+ if (isEnabled(id, level)) |
+ { |
+ buffs.add(id); |
+ levels.add(level); |
+ } |
+ } |
+ break; |
+ case 'resist': |
+ if (ENABLE_RESIST) |
+ { |
+ if (isEnabled(id, level)) |
+ { |
+ buffs.add(id); |
+ levels.add(level); |
+ } |
+ } |
+ break; |
+ case 'song': |
+ if (ENABLE_SONGS) |
+ { |
+ if (isEnabled(id, level)) |
+ { |
+ buffs.add(id); |
+ levels.add(level); |
+ } |
+ } |
+ break; |
+ case 'dance': |
+ if (ENABLE_DANCES) |
+ { |
+ if (isEnabled(id, level)) |
+ { |
+ buffs.add(id); |
+ levels.add(level); |
+ } |
+ } |
+ break; |
+ case 'chant': |
+ if (ENABLE_CHANTS) |
+ { |
+ if (isEnabled(id, level)) |
+ { |
+ buffs.add(id); |
+ levels.add(level); |
+ } |
+ } |
+ break; |
+ case 'others': |
+ if (ENABLE_OTHERS) |
+ { |
+ if (isEnabled(id, level)) |
+ { |
+ buffs.add(id); |
+ levels.add(level); |
+ } |
+ } |
+ break; |
+ case 'special': |
+ if (ENABLE_SPECIAL) |
+ { |
+ if (isEnabled(id, level)) |
+ { |
+ buffs.add(id); |
+ levels.add(level); |
+ } |
+ } |
+ break; |
+ default: |
+ if (DEBUG) |
+ { |
+ throw new RuntimeException(); |
+ } |
+ } |
+ } |
+ } |
+ catch (SQLException e) |
+ { |
+ print(e); |
+ } |
+ |
+ if (buffs.size() 0) |
+ { |
+ return viewAllSchemeBuffs(eventParam1, '1', 'add'); |
+ } |
+ if (!FREE_BUFFS) |
+ { |
+ if (st.getQuestItemsCount(CONSUMABLE_ID) < SCHEME_BUFF_PRICE) |
+ { |
+ return showText(st, 'Sorry', 'You don't have the enough items:<br>You need: <font color=LEVEL>' + SCHEME_BUFF_PRICE + ' ' + getItemNameHtml(st, CONSUMABLE_ID) + '!', false, '0', '0'); |
+ } |
+ } |
+ |
+ final boolean getSummonbuff = isPetBuff(st); |
+ for (int i = 0; i < buffs.size(); ++i) |
+ { |
+ if (!getSummonbuff) |
+ { |
+ npc.broadcastPacket(new MagicSkillUse(npc, player, buffs.get(i), 1, 1, 1)); |
+ SkillData.getInstance().getSkill(buffs.get(i), levels.get(i)).applyEffects(player, player); |
+ } |
+ else |
+ { |
+ if (player.getSummon() != null) |
+ { |
+ npc.broadcastPacket(new MagicSkillUse(npc, player.getSummon(), buffs.get(i), 1, 1, 1)); |
+ SkillData.getInstance().getSkill(buffs.get(i), levels.get(i)).applyEffects(player.getSummon(), player.getSummon()); |
+ } |
+ else |
+ { |
+ return showText(st, 'Info', 'You can't use the Pet's options.<br>Summon your pet first!', false, 'Return', 'main'); |
+ } |
+ } |
+ } |
+ st.takeItems(CONSUMABLE_ID, SCHEME_BUFF_PRICE); |
+ if (TIME_OUT) |
+ { |
+ addTimeout(st, 3, TIME_OUT_TIME, 600); |
+ } |
+ } |
+ return SMART_WINDOW ? null : rebuildMainHtml(st); |
+ |
+ case 'giveBuffs': |
+ { |
+ final int cost; |
+ switch (eventParam3) |
+ { |
+ case 'buff': |
+ cost = BUFF_PRICE; |
+ break; |
+ case 'resist': |
+ cost = RESIST_PRICE; |
+ break; |
+ case 'song': |
+ cost = SONG_PRICE; |
+ break; |
+ case 'dance': |
+ cost = DANCE_PRICE; |
+ break; |
+ case 'chant': |
+ cost = CHANT_PRICE; |
+ break; |
+ case 'others': |
+ cost = OTHERS_PRICE; |
+ break; |
+ case 'special': |
+ cost = SPECIAL_PRICE; |
+ break; |
+ case 'cubic': |
+ cost = CUBIC_PRICE; |
+ break; |
+ default: |
+ throw new RuntimeException(); |
+ } |
+ |
+ if ((int) (System.currentTimeMillis() / 1000) > st.getInt('blockUntilTime')) |
+ { |
+ if (!FREE_BUFFS) |
+ { |
+ if (st.getQuestItemsCount(CONSUMABLE_ID) < cost) |
+ { |
+ return showText(st, 'Sorry', 'You don't have the enough items:<br>You need: <font color=LEVEL>' + cost + ' ' + getItemNameHtml(st, CONSUMABLE_ID) + '!', false, '0', '0'); |
+ } |
+ } |
+ Skill skill = SkillData.getInstance().getSkill(Integer.parseInt(eventParam1), Integer.parseInt(eventParam2)); |
+ if (skill.hasEffectType(L2EffectType.SUMMON)) |
+ { |
+ if (st.getQuestItemsCount(skill.getItemConsumeId()) < skill.getItemConsume()) |
+ { |
+ return showText(st, 'Sorry', 'You don't have the enough items:<br>You need: <font color=LEVEL>' + skill.getItemConsume() + ' ' + getItemNameHtml(st, skill.getItemConsumeId()) + '!', false, '0', '0'); |
+ } |
+ } |
+ final boolean getSummonbuff = isPetBuff(st); |
+ if (!getSummonbuff) |
+ { |
+ if (eventParam3.equals('cubic')) |
+ { |
+ if (player.getCubics() != null) |
+ { |
+ for (L2CubicInstance cubic : player.getCubics().values()) |
+ { |
+ cubic.stopAction(); |
+ player.getCubics().remove(cubic); |
+ } |
+ } |
+ npc.broadcastPacket(new MagicSkillUse(npc, player, Integer.parseInt(eventParam1), 1, 1, 1)); |
+ player.useMagic(SkillData.getInstance().getSkill(Integer.parseInt(eventParam1), Integer.parseInt(eventParam2)), false, false); |
+ } |
+ else |
+ { |
+ npc.broadcastPacket(new MagicSkillUse(npc, player, Integer.parseInt(eventParam1), 1, 1, 1)); |
+ SkillData.getInstance().getSkill(Integer.parseInt(eventParam1), Integer.parseInt(eventParam2)).applyEffects(player, player); |
+ } |
+ } |
+ else |
+ { |
+ if (eventParam3.equals('cubic')) |
+ { |
+ if (player.getCubics() != null) |
+ { |
+ for (L2CubicInstance cubic : player.getCubics().values()) |
+ { |
+ cubic.stopAction(); |
+ player.getCubics().remove(cubic); |
+ } |
+ } |
+ npc.broadcastPacket(new MagicSkillUse(npc, player, Integer.parseInt(eventParam1), 1, 1, 1)); |
+ player.useMagic(SkillData.getInstance().getSkill(Integer.parseInt(eventParam1), Integer.parseInt(eventParam2)), false, false); |
+ } |
+ else |
+ { |
+ if (player.getSummon() != null) |
+ { |
+ npc.broadcastPacket(new MagicSkillUse(npc, player.getSummon(), Integer.parseInt(eventParam1), 1, 1, 1)); |
+ SkillData.getInstance().getSkill(Integer.parseInt(eventParam1), Integer.parseInt(eventParam2)).applyEffects(player.getSummon(), player.getSummon()); |
+ } |
+ else |
+ { |
+ return showText(st, 'Info', 'You can't use the Pet's options.<br>Summon your pet first!', false, 'Return', 'main'); |
+ } |
+ } |
+ } |
+ st.takeItems(CONSUMABLE_ID, cost); |
+ if (TIME_OUT) |
+ { |
+ addTimeout(st, 3, TIME_OUT_TIME / 10, 600); |
+ } |
+ } |
+ return SMART_WINDOW ? null : buildHtml(eventParam3); |
+ } |
+ |
+ case 'castBuffSet': |
+ if ((int) (System.currentTimeMillis() / 1000) > st.getInt('blockUntilTime')) |
+ { |
+ if (!FREE_BUFFS) |
+ { |
+ if (st.getQuestItemsCount(CONSUMABLE_ID) < BUFF_SET_PRICE) |
+ { |
+ return showText(st, 'Sorry', 'You don't have the enough items:<br>You need: <font color=LEVEL>' + BUFF_SET_PRICE + ' ' + getItemNameHtml(st, CONSUMABLE_ID) + '!', false, '0', '0'); |
+ } |
+ } |
+ List<int[]> buff_sets = new ArrayList<>(); |
+ final int player_class; |
+ if (player.isMageClass()) |
+ { |
+ player_class = 1; |
+ } |
+ else |
+ { |
+ player_class = 0; |
+ } |
+ final boolean getSummonbuff = isPetBuff(st); |
+ if (!getSummonbuff) |
+ { |
+ try (Connection con = L2DatabaseFactory.getInstance().getConnection()) |
+ { |
+ PreparedStatement getSimilarNameCount = con.prepareStatement('SELECT buffId,buffLevel FROM npcbuffer_buff_list WHERE forClass IN (?,?) ORDER BY id ASC'); |
+ getSimilarNameCount.setInt(1, player_class); |
+ getSimilarNameCount.setString(2, '2'); |
+ ResultSet rss = getSimilarNameCount.executeQuery(); |
+ while (rss.next()) |
+ { |
+ int id = rss.getInt('buffId'); |
+ int lvl = rss.getInt('buffLevel'); |
+ buff_sets.add(new int[] |
+ { |
+ id, |
+ lvl |
+ }); |
+ } |
+ } |
+ catch (SQLException e) |
+ { |
+ print(e); |
+ } |
+ for (int[] i : buff_sets) |
+ { |
+ npc.broadcastPacket(new MagicSkillUse(npc, player, i[0], 1, 1, 1)); |
+ SkillData.getInstance().getSkill(i[0], i[1]).applyEffects(player, player); |
+ } |
+ } |
+ else |
+ { |
+ if (player.getSummon() != null) |
+ { |
+ try (Connection con = L2DatabaseFactory.getInstance().getConnection()) |
+ { |
+ PreparedStatement getSimilarNameCount = con.prepareStatement('SELECT buffId,buffLevel FROM npcbuffer_buff_list WHERE forClass IN (?,?) ORDER BY id ASC'); |
+ getSimilarNameCount.setString(1, '0'); |
+ getSimilarNameCount.setString(2, '2'); |
+ ResultSet rss = getSimilarNameCount.executeQuery(); |
+ while (rss.next()) |
+ { |
+ int id = rss.getInt('buffId'); |
+ int lvl = rss.getInt('buffLevel'); |
+ buff_sets.add(new int[] |
+ { |
+ id, |
+ lvl |
+ }); |
+ } |
+ } |
+ catch (SQLException e) |
+ { |
+ print(e); |
+ } |
+ for (int[] i : buff_sets) |
+ { |
+ npc.broadcastPacket(new MagicSkillUse(npc, player.getSummon(), i[0], 1, 1, 1)); |
+ SkillData.getInstance().getSkill(i[0], i[1]).applyEffects(player.getSummon(), player.getSummon()); |
+ } |
+ } |
+ else |
+ { |
+ return showText(st, 'Info', 'You can't use the Pet's options.<br>Summon your pet first!', false, 'Return', 'main'); |
+ } |
+ } |
+ st.takeItems(CONSUMABLE_ID, BUFF_SET_PRICE); |
+ if (TIME_OUT) |
+ { |
+ addTimeout(st, 3, TIME_OUT_TIME, 600); |
+ } |
+ } |
+ return SMART_WINDOW ? null : rebuildMainHtml(st); |
+ |
+ } |
+ return rebuildMainHtml(st); |
+ } |
+ |
+ @SuppressWarnings('unused') |
+ @Override |
+ public String onFirstTalk(L2Npc npc, L2PcInstance player) |
+ { |
+ QuestState st = player.getQuestState(QUEST_LOADING_INFO); |
+ if (st null) |
+ { |
+ st = newQuestState(player); |
+ } |
+ if (player.isGM()) |
+ { |
+ if (SCRIPT_RELOAD) |
+ { |
+ return reloadPanel(st); |
+ } |
+ return rebuildMainHtml(st); |
+ } |
+ else if ((int) (System.currentTimeMillis() / 1000) > st.getInt('blockUntilTime')) |
+ { |
+ return showText(st, 'Sorry', 'You have to wait a while!<br>if you wish to use my services!', false, 'Return', 'main'); |
+ } |
+ if (!BUFF_WITH_KARMA && (player.getKarma() > 0)) |
+ { |
+ return showText(st, 'Info', 'You have too much <font color=FF0000>karma!</font><br>Come back,<br>when you don't have any karma!', false, 'Return', 'main'); |
+ } |
+ else if (OlympiadManager.getInstance().isRegistered(player)) |
+ { |
+ return showText(st, 'Info', 'You can not buff while you are in <font color=FF0000>Olympiad!</font><br>Come back,<br>when you are out of the Olympiad.', false, 'Return', 'main'); |
+ } |
+ else if (TvTEvent.isPlayerParticipant(player.getObjectId())) |
+ { |
+ return showText(st, 'Info', 'You can not buff while you are in <font color='FF0000'>TvT!</font><br>Come back,<br>when you are out of TvT!', false, 'Return', 'main'); |
+ } |
+ else if (player.getLevel() < MIN_LEVEL) |
+ { |
+ return showText(st, 'Info', 'Your level is too low!<br>You have to be at least level <font color=LEVEL>' + MIN_LEVEL + '</font>,<br>to use my services!', false, 'Return', 'main'); |
+ } |
+ else if (player.getPvpFlag() > 0) |
+ { |
+ return showText(st, 'Info', 'You can't buff while you are <font color=800080>flagged!</font><br>Wait some time and try again!', false, 'Return', 'main'); |
+ } |
+ else if (player.isInCombat()) |
+ { |
+ return showText(st, 'Info', 'You can't buff while you are attacking!<br>Stop your fight and try again!', false, 'Return', 'main'); |
+ } |
+ else |
+ { |
+ return rebuildMainHtml(st); |
+ } |
+ } |
+ |
+ @Override |
+ public boolean showResult(L2PcInstance player, String res) |
+ { |
+ if (SMART_WINDOW) |
+ { |
+ if ((player != null) && (res != null) && res.startsWith('<html>')) |
+ { |
+ final NpcHtmlMessage npcReply = new NpcHtmlMessage(); |
+ npcReply.setHtml(res); |
+ player.sendPacket(npcReply); |
+ player.sendPacket(ActionFailed.STATIC_PACKET); |
+ return false; |
+ } |
+ } |
+ return super.showResult(player, res); |
+ } |
+ |
+ private String getSkillIconHtml(int id, int level) |
+ { |
+ String iconNumber = getSkillIconNumber(id, level); |
+ return '<button action='bypass -h Quest ' + QUEST_LOADING_INFO + ' description ' + id + ' ' + level + ' x' width=32 height=32 back='Icon.skill' + iconNumber + ' fore='Icon.skill' + iconNumber + '>'; |
+ } |
+ |
+ private String getSkillIconNumber(int id, int level) |
+ { |
+ String formato; |
+ if (id 4) |
+ { |
+ formato = '0004'; |
+ } |
+ else if ((id > 9) && (id < 100)) |
+ { |
+ formato = '00' + id; |
+ } |
+ else if ((id > 99) && (id < 1000)) |
+ { |
+ formato = '0' + id; |
+ } |
+ else if (id 1517) |
+ { |
+ formato = '1536'; |
+ } |
+ else if (id 1518) |
+ { |
+ formato = '1537'; |
+ } |
+ else if (id 1547) |
+ { |
+ formato = '0065'; |
+ } |
+ else if (id 2076) |
+ { |
+ formato = '0195'; |
+ } |
+ else if ((id > 4550) && (id < 4555)) |
+ { |
+ formato = '5739'; |
+ } |
+ else if ((id > 4698) && (id < 4701)) |
+ { |
+ formato = '1331'; |
+ } |
+ else if ((id > 4701) && (id < 4704)) |
+ { |
+ formato = '1332'; |
+ } |
+ else if (id 6049) |
+ { |
+ formato = '0094'; |
+ } |
+ else |
+ { |
+ formato = String.valueOf(id); |
+ } |
+ return formato; |
+ } |
+ |
+ static public void main(String[] args) |
+ { |
+ new NpcBuffer(); |
+ } |
+} |
No newline at end of file |
Index: dist/game/data/stats/npcs/custom/custom.xml |
--- dist/game/data/stats/npcs/custom/custom.xml (revision 10413) |
+++ dist/game/data/stats/npcs/custom/custom.xml (working copy) |
@@ -58,4 +58,10 @@ |
<height normal='22.25' /> |
</collision> |
</npc> |
+ <npc displayId='32226' name='Rin4a' usingServerSideName='true' usingServerSideTitle='true' type='L2NpcBuffer'> |
+ <collision> |
+ <radius normal='11' /> |
+ <height normal='22.25' /> |
+ </collision> |
+ </npc> |
</list> |
No newline at end of file |
Index: dist/sql/game/scheme_npcbuffer.sql |
--- dist/sql/game/scheme_npcbuffer.sql (revision 0) |
+++ dist/sql/game/scheme_npcbuffer.sql (working copy) |
@@ -0,0 +1,182 @@ |
+DROP TABLE IF EXISTS `npcbuffer_buff_list`; |
+DROP TABLE IF EXISTS `npcbuffer_scheme_contents`; |
+DROP TABLE IF EXISTS `npcbuffer_scheme_list`; |
+ |
+CREATE TABLE `npcbuffer_buff_list` ( |
+ `id` int(11) NOT NULL AUTO_INCREMENT, |
+ `buff_class` int(2) DEFAULT NULL, |
+ `buffType` varchar(10) DEFAULT NULL, |
+ `buffId` int(5) DEFAULT '0', |
+ `buffLevel` int(5) DEFAULT NULL, |
+ `forClass` tinyint(1) DEFAULT NULL, |
+ `canUse` tinyint(1) DEFAULT NULL, |
+ PRIMARY KEY (`id`) |
+) AUTO_INCREMENT=136; |
+CREATE TABLE `npcbuffer_scheme_contents` ( |
+ `id` int(11) NOT NULL AUTO_INCREMENT, |
+ `scheme_id` int(11) DEFAULT NULL, |
+ `skill_id` int(8) DEFAULT NULL, |
+ `skill_level` int(4) DEFAULT NULL, |
+ `buff_class` int(2) DEFAULT NULL, |
+ PRIMARY KEY (`id`) |
+) AUTO_INCREMENT=30; |
+CREATE TABLE `npcbuffer_scheme_list` ( |
+ `id` int(11) NOT NULL AUTO_INCREMENT, |
+ `player_id` varchar(40) DEFAULT NULL, |
+ `scheme_name` varchar(36) DEFAULT NULL, |
+ `mod_accepted` tinyint(1) DEFAULT NULL, |
+ PRIMARY KEY (`id`) |
+) AUTO_INCREMENT=7; |
+ |
+INSERT INTO `npcbuffer_buff_list` VALUES ('1', '0', 'buff', '1036', '2', '2', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('2', '0', 'buff', '1040', '3', '2', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('3', '0', 'buff', '1043', '1', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('4', '0', 'buff', '1044', '3', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('5', '0', 'buff', '1045', '6', '2', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('6', '0', 'buff', '1047', '4', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('7', '0', 'buff', '1048', '6', '2', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('8', '0', 'buff', '1059', '3', '1', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('9', '0', 'buff', '1068', '3', '0', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('10', '0', 'buff', '1077', '3', '0', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('11', '0', 'buff', '1085', '3', '1', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('12', '0', 'buff', '1086', '2', '0', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('13', '0', 'buff', '1087', '3', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('14', '0', 'buff', '1204', '2', '2', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('15', '0', 'buff', '1240', '3', '0', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('16', '0', 'buff', '1242', '3', '0', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('17', '0', 'buff', '1243', '6', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('18', '0', 'buff', '1257', '3', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('19', '0', 'buff', '1268', '4', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('20', '0', 'buff', '1303', '2', '1', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('21', '0', 'buff', '1304', '3', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('22', '0', 'buff', '1307', '3', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('23', '0', 'buff', '1311', '6', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('24', '0', 'buff', '1397', '3', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('25', '0', 'buff', '1460', '1', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('26', '0', 'buff', '1232', '3', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('27', '0', 'buff', '1238', '3', '3', '0'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('28', '0', 'special', '1323', '1', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('29', '0', 'special', '1388', '3', '0', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('30', '0', 'special', '1389', '3', '1', '1'); |
+ |
+INSERT INTO `npcbuffer_buff_list` VALUES ('31', '1', 'song', '264', '1', '2', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('32', '1', 'song', '265', '1', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('33', '1', 'song', '266', '1', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('34', '1', 'song', '267', '1', '2', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('35', '1', 'song', '268', '1', '2', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('36', '1', 'song', '269', '1', '0', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('37', '1', 'song', '270', '1', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('38', '1', 'song', '304', '1', '2', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('39', '1', 'song', '305', '1', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('40', '1', 'song', '306', '1', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('41', '1', 'song', '308', '1', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('42', '1', 'song', '349', '1', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('43', '1', 'song', '363', '1', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('44', '1', 'song', '364', '1', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('45', '1', 'song', '529', '1', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('46', '1', 'song', '764', '1', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('47', '1', 'song', '914', '1', '3', '1'); |
+ |
+INSERT INTO `npcbuffer_buff_list` VALUES ('48', '2', 'dance', '271', '1', '0', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('49', '2', 'dance', '272', '1', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('50', '2', 'dance', '273', '1', '1', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('51', '2', 'dance', '274', '1', '0', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('52', '2', 'dance', '275', '1', '0', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('53', '2', 'dance', '276', '1', '1', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('54', '2', 'dance', '277', '1', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('55', '2', 'dance', '307', '1', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('56', '2', 'dance', '309', '1', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('57', '2', 'dance', '310', '1', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('58', '2', 'dance', '311', '1', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('59', '2', 'dance', '365', '1', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('60', '2', 'dance', '366', '1', '3', '0'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('61', '2', 'dance', '530', '1', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('62', '2', 'dance', '765', '1', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('63', '2', 'dance', '915', '1', '3', '1'); |
+ |
+INSERT INTO `npcbuffer_buff_list` VALUES ('64', '3', 'resist', '1461', '1', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('65', '3', 'chant', '1002', '3', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('66', '3', 'chant', '1006', '3', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('67', '3', 'chant', '1007', '3', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('68', '3', 'chant', '1009', '3', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('69', '3', 'chant', '1251', '2', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('70', '3', 'chant', '1252', '3', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('71', '3', 'chant', '1253', '3', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('72', '3', 'chant', '1284', '3', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('73', '3', 'chant', '1308', '3', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('74', '3', 'chant', '1309', '3', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('75', '3', 'chant', '1310', '4', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('76', '3', 'chant', '1362', '1', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('77', '3', 'special', '1499', '1', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('78', '3', 'special', '1500', '1', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('79', '3', 'special', '1501', '1', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('80', '3', 'special', '1502', '1', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('81', '3', 'special', '1503', '1', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('82', '3', 'special', '1504', '1', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('83', '3', 'special', '1519', '1', '3', '1'); |
+ |
+INSERT INTO `npcbuffer_buff_list` VALUES ('84', '4', 'others', '825', '1', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('85', '4', 'others', '826', '1', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('86', '4', 'others', '827', '1', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('87', '4', 'others', '828', '1', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('88', '4', 'others', '829', '1', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('89', '4', 'others', '830', '1', '3', '1'); |
+ |
+INSERT INTO `npcbuffer_buff_list` VALUES ('90', '5', 'others', '834', '1', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('91', '5', 'others', '1442', '1', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('92', '5', 'others', '1443', '1', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('93', '5', 'others', '1444', '1', '3', '1'); |
+ |
+INSERT INTO `npcbuffer_buff_list` VALUES ('94', '6', 'cubic', '67', '7', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('95', '6', 'cubic', '10', '8', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('96', '6', 'cubic', '22', '7', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('97', '6', 'cubic', '33', '8', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('98', '6', 'cubic', '278', '6', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('99', '6', 'cubic', '449', '4', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('100', '6', 'cubic', '1279', '9', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('101', '6', 'cubic', '1280', '9', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('102', '6', 'cubic', '1281', '9', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('103', '6', 'cubic', '1328', '8', '3', '0'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('104', '6', 'cubic', '1329', '9', '3', '0'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('105', '6', 'cubic', '1330', '8', '3', '0'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('106', '6', 'cubic', '779', '1', '3', '1'); |
+ |
+INSERT INTO `npcbuffer_buff_list` VALUES ('107', '7', 'special', '1062', '2', '2', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('108', '7', 'special', '1355', '1', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('109', '7', 'special', '1356', '1', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('110', '7', 'special', '1357', '1', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('111', '7', 'special', '1363', '1', '0', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('112', '7', 'special', '1413', '1', '1', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('114', '7', 'special', '1457', '1', '3', '0'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('115', '7', 'special', '4699', '13', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('116', '7', 'special', '4700', '13', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('117', '7', 'special', '4702', '13', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('118', '7', 'special', '4703', '13', '3', '1'); |
+ |
+INSERT INTO `npcbuffer_buff_list` VALUES ('119', '8', 'resist', '1032', '3', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('120', '8', 'resist', '1033', '3', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('121', '8', 'resist', '1035', '4', '2', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('122', '8', 'resist', '1078', '6', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('123', '8', 'resist', '1182', '3', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('124', '8', 'resist', '1189', '3', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('125', '8', 'resist', '1191', '3', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('126', '8', 'resist', '1259', '4', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('127', '8', 'resist', '1352', '1', '2', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('128', '8', 'resist', '1353', '1', '2', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('129', '8', 'resist', '1354', '1', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('130', '8', 'resist', '1392', '3', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('131', '8', 'resist', '1393', '3', '3', '1'); |
+ |
+INSERT INTO `npcbuffer_buff_list` VALUES ('132', '8', 'overlord', '1003', '3', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('133', '8', 'overlord', '1004', '3', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('134', '8', 'overlord', '1005', '3', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('135', '8', 'overlord', '1008', '3', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('136', '8', 'overlord', '1249', '3', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('137', '8', 'overlord', '1250', '3', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('138', '8', 'overlord', '1260', '3', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('139', '8', 'overlord', '1261', '2', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('140', '8', 'overlord', '1282', '2', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('141', '8', 'overlord', '1364', '1', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('142', '8', 'overlord', '1365', '1', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('143', '8', 'overlord', '1415', '1', '3', '1'); |
+INSERT INTO `npcbuffer_buff_list` VALUES ('144', '8', 'overlord', '1416', '1', '3', '1'); |
No newline at end of file |
Lineage 2 Server H5
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment